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 1o1OMZ-0001q0-0w for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Jun 2022 08:26:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1o1OMX-00017a-NY for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Jun 2022 08:26:53 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o1OMW-00017R-Qw for pgsql-hackers@lists.postgresql.org; Wed, 15 Jun 2022 08:26:53 +0000 Received: from esa8.fujitsucc.c3s2.iphmx.com ([68.232.159.88]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o1OMS-0001FH-RX for pgsql-hackers@lists.postgresql.org; Wed, 15 Jun 2022 08:26:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1655281608; x=1686817608; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=OefIIVMmY1XuGCp1eTJ/j3njrDTAPTErZih8GQCDZe0=; b=knQ+q2aKXYaNaSEZ1vJHRQgfj+VmMQzwIA3IJMC88NRlvr7e+kqenJ8o JCUdNWLKzg0ldji+1My6mBRMuZFed0y7mG13v5THhlOT1LS6FTNTAhLoJ epqAKULS9S7d8QJarEfK6tuQq5rxnidZDHbhG+RvqGbpZW+OJmY/Lbxua lGZYPiUOP+BOz0yw+3NOdR5uWjqjsfHTRiQDk3iK+iCevGA5bht7C2k6u zWQS6KhQAru4PbUPTiyhf6gC9XBmQV/5gPFEFgiRs1MufnPJFz8vswp77 I+gicIaYUDoiynnr8PXIZmjPbF8ESw1T0Z6YTl14zuDjh9EAGcBBk4kH0 Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10378"; a="58155910" X-IronPort-AV: E=Sophos;i="5.91,300,1647270000"; d="scan'208,223";a="58155910" Received: from mail-os0jpn01lp2105.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.105]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jun 2022 17:26:44 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NY7j9ZUfX7xxV8vEoRR3JDVT6Fs3JoV2TOrOtfI0EBXlDMTDlg5lWe77i89Saag2FpmoFnPdGRB/kbpgEMNUrn9WnAbsLx9MAUrD15QeK1DxGr72Y/L8GVQRF/KziODBG1Nk91fLRXazNLt9prWVjPpPd1YfKa5qTfwvzqIu9+SqR/5onXiX3W/nhqXmYt4CDnGMf55UmEgmL2zqvowGkXHtCrsM1UE2kuyF5MPWW2LF5swf5de7CEmE00/FjrlzgU7fVDqW3D4U/H+OrqDm72vQQN61D80wEqEEh+4+e43v/3IYxazjhK+sEacLCLOwVf9IM4hvdqtpmztOylQqRg== 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=5K+X8EgBc5cdynFwW2HY7ce85MpfJMYVJn36hO8alm0=; b=Y0UoCHpLsQfPlBT6Y8lf37/9bC8ApHX6sMDHCPe2/zxVojxaYDdfmvzjcg1T+ghKE06ZkJ/e50/1YpnkZMYjTURiCx7I6SUDisSNOq8oolWMuiy7wsnhbaIfQ3S+kGhIlmOQLGOWSVJNVJxIGoWnsmeuMMPjgaoqa5Wu14u3z6MTYU4alCq0cPV2hOZpnPpqz4rqy79EDyR+ihRK70w/VZG7vb3hYDatcTkCH96BXSMyJL3i7SVdOAx0+9MLTmmHbxHJMpSeK0aoLiOhLAjIXi/Zv/IAvvHxt3BUNB4+xxcEqhine626Big6rXyU/v+PkjgOSyaSfUtrs+nln9LICA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5K+X8EgBc5cdynFwW2HY7ce85MpfJMYVJn36hO8alm0=; b=j0Ru+2kSOngxt1x4aN5CktwIK1AH/KEjBdpV50YqpxIjbZRYzVWc5iwdFKnlvVdYYL4pcGPbJvL9I3X95VBZSUIIZVhvFjRhhrZhPCInNSl4DS9MYLeBVkdvbMzM93AFQKjtJSRyYDuemNrwiR9UFzyRy6C9clbS4+O8tidXk0Q= Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by OSYPR01MB5304.jpnprd01.prod.outlook.com (2603:1096:604:80::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.13; Wed, 15 Jun 2022 08:26:41 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::5d40:5c2d:b875:f813]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::5d40:5c2d:b875:f813%9]) with mapi id 15.20.5332.022; Wed, 15 Jun 2022 08:26:41 +0000 From: "wangw.fnst@fujitsu.com" To: Amit Kapila , Masahiko Sawada CC: Peter Smith , "shiy.fnst@fujitsu.com" , "houzj.fnst@fujitsu.com" , PostgreSQL Hackers 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: AQHYSXX4/KZEbPJKjUy7J1pJS8eGYazlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS9tXQgAAv04CAAWQLgIABHxKAgAA3o4CAAd7v0IAJQDLggAkyO+CAAeLiwA== Date: Wed, 15 Jun 2022 08:26:40 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b5adfafe-e75d-48b7-938d-08da4ea8c5fe x-ms-traffictypediagnostic: OSYPR01MB5304:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: umf14juf0F7sbhbD99UyQFLaxB8Nb49KnBwtk5Aqj8WFir40fdtskjSNZzW6tPn0sY4rz88KjLLVDWstu8PK1/NkdoRZvSxYfbSCC6jSGM1fVPaT/yC7DShRUwaiGbvmF/nrsmE/kbtG5MIFVqgbtgbVLoHIKbr71hGejaZPM0urAuFjZGgoYz5vyWYikRiAYvEIkVaT4G/2OPXVezejw5AlfeB9tiPtW06LRCKpst5+UzMP0Ix2BP+Fu+IUtjxmiyVF4qTAVghKgh0Tf/t3PrtnpfWQjjN639JSV40V/fZT0DHsWL9X4xp4qHDPlkog0BmG3QWfRj6VWVoRaoAjpudDFccbDZE3+ybu/Is663K5QjSQ6KPHX2pRFPCWKOM4CdnikWt4A6ZNgB0WcnfYvF5vv4xc6b2eobVdpSbh6hXb9EE8ZaxsFXpP7QLrfHXW7ma9BzZFdTXONVbFRM11Sjg2fXVl1o/OPD3CVpazLryeZzw2LlnC4WLTJTb/q5zFn18CULdO3Aj8mLEunRkp1s/cx8m0lrCqPTy2EZpBdSHLc3c5QB8aX8jws7Lm1dpMiuZE3q7wS2Gp30qh0NpZ4MmVWopvotw9EfKKX18opwrqhZ8aKNKH1ikZxuEr6uq6auk6OSYu9v9E5qijEl1bA2hB+z/WzXbU8qQr3crcMN6mKS8RO382kWOaxp+fx6qxLgy5MzyM6WOBDb430OEkHN+kHx2jWMiwTGVOGScS48nPka+VOoZtJDaLFFtaKYXRn6gies9SAGZoMidtgGEBCoRCAv1aazeClyzAIQuZjH8= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB6275.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(45080400002)(966005)(316002)(2906002)(9686003)(71200400001)(66556008)(110136005)(54906003)(66946007)(5660300002)(33656002)(4326008)(76116006)(508600001)(26005)(52536014)(86362001)(85182001)(8676002)(66446008)(64756008)(8936002)(122000001)(186003)(66476007)(6506007)(99936003)(83380400001)(82960400001)(55016003)(7696005)(38100700002)(38070700005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cjY5RG9Ebm1CNVVtWjR6ZlNhNk9UbnRMZGVtSENsdTBDeEdRYVRzRk5ESnlp?= =?utf-8?B?b1FhYUVEZHQ0dzNsWjJhbVZVKytUeUg0MDFCZHZiUWp3QXExa3E0VnQ0K3p1?= =?utf-8?B?ZVMydTYzWThBY283U3Nva1FQSENrclVLbnFIZ0FTOHFlZDFPSEM0TGFJem14?= =?utf-8?B?UjdtNmhiaHNqL0pidkRpYXFyYmYya2dUcWpENG1naUNFYjM3UERJYnRQTlF6?= =?utf-8?B?NnRrdVpqWVNsZUwxcWhGNGFrQjhvTkNjNmZjelRVNmRrNlhIK2hhOU1qZUdP?= =?utf-8?B?dkYxK25TakVkbHAybFdtL3g2NUlqZFZHd00zbDM2bnNrSk1UY09wU05sZlJv?= =?utf-8?B?bjA0YkFGTGVZVXZPWDZiMU85cnNzd2t0eUY2a3FLcGIxUi9KSXBRTTFPREtu?= =?utf-8?B?ZXYvSVVuMXRNbHQ3YVE1UmUvYzhhRzdBd3UwZ250ZTRObDQ5bklZZUlYR2F2?= =?utf-8?B?eTIyVk9NVXRWVGxENVZwWUgya253Qm5zSVQwZVJ1ODg2d2t3bXIyN0oxVUtR?= =?utf-8?B?bmFuSHpCaklhWmM5UUtrWEJGcG1TWFZEZ3AvY0VReHN4YVFMY1FRWjcvbGJI?= =?utf-8?B?ZGRkaDNaYzdJNnBzVlNORW9WOUgxK1BhZW51dnNzYTVuUU9uY1dVRHl2ZVhp?= =?utf-8?B?OFVLVlkwN0pZNG5QVlRaMjVGbFNKTUlwY25rVGdDdFpONDZqM3B5VVJ4SHRs?= =?utf-8?B?MXJhdjM2QkxLTTVIeEg5LzRqYk5rNDlQQ2pxWjdSdDdPMFoxOFNmSWJhekhH?= =?utf-8?B?T2VuREthN1FaZDhqbjZsRUR6a1FuR1BpdlNnUjRxRTZLSFlnMGJUeXY1THQ0?= =?utf-8?B?V1FVeG9FQ0VNWlBTMVl3Q1JaMU5tbVN1ZG9iWERRUVFRTzJycS9WczQwV0JJ?= =?utf-8?B?V2hYdXkrWXZBOG5WVTJFZDh4V0VsS09hc2NTM05YOGczc0RBRk55S1dWbHRS?= =?utf-8?B?TFJUS0hQZnJSZ2x0UEhGT1d5aFB5L0xiMmN6emVTWE8yVHNCZStocGZvNy9P?= =?utf-8?B?QmlhdVJTNTRONWdlNWtueUNBcmJ1ekorVXVEQ0lqZ0RkS2ZIQnhTWU5BUlVa?= =?utf-8?B?ZEYzN1RPU1VHRUJZWHJrN0VQN0N2YTlHZXNqdC9EdENXMlFnMWxDdzBnVUtU?= =?utf-8?B?THRqaCtXRXFIc1lTVURBQ0puYnRoRmZsRWRLYWtZa3BTekZYYWxucXFaK2Nn?= =?utf-8?B?cDlySTdMUFNlWG1IVE5ESmVLdXM0R3FhNGZ1emdlcDZ3N1Rqd2pqZmxaenAw?= =?utf-8?B?Q0l0OExhWEY5ZHo1Q2Z3MVNHZzllWjZHSndNaU5FMkZpU0tiWDV3L0dHa3lK?= =?utf-8?B?TG10N3NRVWRHdEhHYkxQNlRIYU1QckhENXltKytsKy8vbmhwMmNKbjVpUlBq?= =?utf-8?B?dkVFNWhrRDVEa3IwN1FjTnJueUFVMjcvdEJWMjFqS3RzUHZIRFMwY0FsZVBr?= =?utf-8?B?SndXcHMzZHh3Zk8yRUI5ZGxTd2VkQy93Y3l1aDRtdVRSenpBWUNzR2V5ams1?= =?utf-8?B?bGZVL2l5TE5xaEVTTml5MmNaVkdRb3lWNnVqd0N2TWxZaUN3RHBiTlJsSTFO?= =?utf-8?B?TVMrSld4RzdaRlhHTk9GSnFiSmhySHVocUlJeFNuUk0xVUdKZFdGYWhzaXZ2?= =?utf-8?B?TVh6YlpSd2xOSTRWS1ZMd1BReGhlQjZpVEdBenFUNjNIUm1EYjRYODF3KzNQ?= =?utf-8?B?Y3V1dTFSVmtrbG9PYmZZcm9zajlFZWsxOWdOT3haNG5QbmFYTmo1OEkrT0pP?= =?utf-8?B?QW1IazhjTm1wN1JraDVFOWsvcGIrQTBmVHhQUkJoWUhFdm9HSStneWY0VERk?= =?utf-8?B?V1hHbG04NStMdGFGVjNHaUZNWHRwVEt0MkJsdHhJU0VZUm9ucTR5MDdESDNR?= =?utf-8?B?VDRHZFJabmw4RnJxa3BLSUJEWm4zc0JxbHY0QTUzeGdNSndmTGNEaHZ0ZzBR?= =?utf-8?B?bzlIL0wya2YvTlFyY3dHOHI3NDArZTBqSmlMUGNVTVRETEVwaCtiVFNpcnFl?= =?utf-8?B?eWxoU0hUb2lpZXRvUmNFcHQzSnZtOTdoMlV2bDh6R0ZKazRWOW91MWx4SnlS?= =?utf-8?B?NGRlbkpjNUl2d0ZobWtkVWxac2EzOWc2ZGxEOFdiN1d6VEdvMThWL1A4Zzdz?= =?utf-8?B?M2l5UUJLdFhwaC82a2RMNGtPRUdXbmlyTkQvZ1lkS0ZNM01ZTkY0NG5rL0xB?= =?utf-8?B?OElzU1FNZmVWbGF6SjdzOXlRWFlrMWRCeFNBSGJlOXhONFRaZGkydThMZHhu?= =?utf-8?B?TEtVTkQ4Sm9rMm5mQWV2TzJLLzJncVI2ZGVvVEtOOWpqZ1R3c1hyVWR0QTlI?= =?utf-8?B?RG1GWlNzbW1LK0RoTUMvbzdWYjN6QStaRk9vV1RsSlY5QUZrVXEvdz09?= Content-Type: multipart/mixed; boundary="_006_OS3PR01MB6275C4679CFE3414340A259B9EAD9OS3PR01MB6275jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS3PR01MB6275.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b5adfafe-e75d-48b7-938d-08da4ea8c5fe X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2022 08:26:40.9458 (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: lkV3lcLpmbdDcmCPvYVEVS8V3PQAzm+OFEs7lR4VHiifZR3f2M9R+2TaoRghtcL1rslvxoUH++qTwtEjUOnrtQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSYPR01MB5304 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS3PR01MB6275C4679CFE3414340A259B9EAD9OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVHVlcywgSnVuIDE0LCAyMDIyIDExOjE3IEFNIEkgd3JvdGU6DQo+IEF0dGFjaCB0aGUgbmV3 IHBhdGNoZXMuDQo+IC4uLi4uLg0KPiAzLiBBZGRpbmcgYSBjaGVjayBmb3IgdGhlIHBhcnRpdGlv biB0YWJsZSB3aGVuIHRyeWluZyB0byBhcHBseSBjaGFuZ2VzIGluIHRoZQ0KPiBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlci4gKHNlZSBwYXRjaCAwMDA0KQ0KPiBJbiBhZGRpdGlvbmFsLCB0aGUgcGFy dGl0aW9uIGNhY2hlIG1hcCBvbiBzdWJzY3JpYmVyIGhhdmUgc2V2ZXJhbCBidWdzIChzZWUNCj4g dGhyZWFkIFsyXSkuIEJlY2F1c2UgcGF0Y2ggMDAwNCBpcyBkZXZlbG9wZWQgYmFzZWQgb24gdGhl IHBhdGNoZXMgaW4gWzJdLCBzbyBJDQo+IG1lcmdlZCB0aGUgcGF0Y2hlcyh2NC0wMDAxfnY0LTAw MDMpIGluIFsyXSBpbnRvIGEgdGVtcG9yYXJ5IHBhdGNoIDAwMDMgaGVyZS4NCj4gQWZ0ZXIgdGhl IHBhdGNoZXMgaW4gWzJdIGlzIGNvbW1pdHRlZCwgSSB3aWxsIGRlbGV0ZSBwYXRjaCAwMDAzIGFu ZCByZWJhc2UNCj4gcGF0Y2ggMDAwNC4NCkkgYWRkZWQgc29tZSB0ZXN0IGNhc2VzIGZvciB0aGlz IChzZWUgcGF0Y2ggMDAwNCkuIEluIHBhdGNoIDAwMDUsIEkgbWFkZQ0KY29ycmVzcG9uZGluZyBh ZGp1c3RtZW50cyBhY2NvcmRpbmcgdG8gdGhlc2UgdGVzdCBjYXNlcy4NCkkgYWxzbyBzbGlnaHRs eSBtb2RpZmllZCB0aGUgY29tbWVudHMgYWJvdXQgdGhlIGNoZWNrIGZvciB1bmlxdWUgaW5kZXgu IChzZWUNCnBhdGNoIDAwMDQpDQoNCkFsc28gcmViYXNlZCB0aGUgdGVtcG9yYXJ5IHBhdGNoIDAw MDMgYmVjYXVzZSB0aGUgZmlyc3QgcGF0Y2ggaW4gdGhyZWFkIFsxXSBpcw0KY29tbWl0dGVkIChz ZWUgY29tbWl0IDVhOTdiMTMyIGluIEhFQUQpIC4NCg0KQXR0YWNoIHRoZSBuZXcgcGF0Y2hlcy4N Ck9ubHkgY2hhbmdlZCBwYXRjaGVzIDAwMDQsIDAwMDUuDQoNClsxXSAtIGh0dHBzOi8vd3d3LnBv c3RncmVzcWwub3JnL21lc3NhZ2UtaWQvT1NaUFIwMU1CNjMxMEY0NkNENDI1QTk2N0U0QUVGNzM2 RkRBNDklNDBPU1pQUjAxTUI2MzEwLmpwbnByZDAxLnByb2Qub3V0bG9vay5jb20NCg0KUmVnYXJk cywNCldhbmcgd2VpDQo= --_006_OS3PR01MB6275C4679CFE3414340A259B9EAD9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v11-0001-Perform-streaming-logical-transactions-by-backgr.patch" Content-Description: v11-0001-Perform-streaming-logical-transactions-by-backgr.patch Content-Disposition: attachment; filename="v11-0001-Perform-streaming-logical-transactions-by-backgr.patch"; size=100553; creation-date="Wed, 15 Jun 2022 08:24:00 GMT"; modification-date="Wed, 15 Jun 2022 08:26:37 GMT" Content-Transfer-Encoding: base64 RnJvbSA4NTBmNzQxYWViMzFjNTA5YWU1YzliY2Q0OTIzMzc5NWZiODNmNzA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYxMSAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IGJhY2tn cm91bmQKIHdvcmtlcnMKCkN1cnJlbnRseSwgZm9yIGxhcmdlIHRyYW5zYWN0aW9ucywgdGhlIHB1 Ymxpc2hlciBzZW5kcyB0aGUgZGF0YSBpbiBtdWx0aXBsZQpzdHJlYW1zIChjaGFuZ2VzIGRpdmlk ZWQgaW50byBjaHVua3MgZGVwZW5kaW5nIHVwb24gbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSks CmFuZCB0aGVuIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUsIHRoZSBhcHBseSB3b3JrZXIgd3JpdGVz IHRoZSBjaGFuZ2VzIGludG8KdGVtcG9yYXJ5IGZpbGVzIGFuZCBvbmNlIGl0IHJlY2VpdmVzIHRo ZSBjb21taXQsIGl0IHJlYWRzIGZyb20gdGhlIGZpbGUgYW5kCmFwcGxpZXMgdGhlIGVudGlyZSB0 cmFuc2FjdGlvbi4gVG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2Ygc3VjaAp0cmFuc2FjdGlv bnMsIHdlIGNhbiBpbnN0ZWFkIGFsbG93IHRoZW0gdG8gYmUgYXBwbGllZCB2aWEgYmFja2dyb3Vu ZCB3b3JrZXJzLgoKSW4gdGhpcyBhcHByb2FjaCwgd2UgYXNzaWduIGEgbmV3IGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBz dHJlYW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3aWxsIHNlbmQKY2hh bmdlcyB0byB0aGlzIG5ldyB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnkuIFRoZSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlciB3aWxsCmRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3 cml0aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2Uga2VlcAp0aGlzIHdvcmtlciBhc3NpZ25l ZCB0aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBm b3IKdGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQg b3JkZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZSBpbiBt b3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlCmlzIG5vIHdvcmtlciBh dmFpbGFibGUuIFdlIGFsc28gbmVlZCB0byBhbGxvdyBzdHJlYW1fc3RvcCB0byBjb21wbGV0ZSBi eSB0aGUKYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgdG8gYXZvaWQgZGVhZGxvY2tzIGJlY2F1c2Ug VC0xJ3MgY3VycmVudCBzdHJlYW0gb2YKY2hhbmdlcyBjYW4gdXBkYXRlIHJvd3MgaW4gY29uZmxp Y3Rpbmcgb3JkZXIgd2l0aCBULTIncyBuZXh0IHN0cmVhbSBvZiBjaGFuZ2VzLgoKVGhpcyBwYXRj aCBhbHNvIGV4dGVuZHMgdGhlIFNVQlNDUklQVElPTiAnc3RyZWFtaW5nJyBvcHRpb24gc28gdGhh dCB0aGUgdXNlcgpjYW4gY29udHJvbCB3aGV0aGVyIHRvIGFwcGx5IHRoZSBzdHJlYW1pbmcgdHJh bnNhY3Rpb24gaW4gYW4gYXBwbHkgYmFja2dyb3VuZAp3b3JrZXIgb3Igc3BpbGwgdGhlIGNoYW5n ZSB0byBkaXNrLiBVc2VyIGNhbiBzZXQgdGhlIHN0cmVhbWluZyBvcHRpb24gdG8KJ29uL29mZics ICdhcHBseScuIEZvciBub3csICdhcHBseScgbWVhbnMgdGhlIHN0cmVhbWluZyB3aWxsIGJlIGFw cGxpZWQgdmlhIGEKYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYXZhaWxhYmxlLiAnb24nIG1l YW5zIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gd2lsbApiZSBzcGlsbGVkIHRvIGRpc2suCi0t LQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgIDEwICst CiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMjUgKwog ZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgIHwgICA3ICsKIGRv Yy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAxOSArCiBkb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgfCAgMjQgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAgICAgICAgICAgICB8ICAxMyArCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgNjYgKy0KIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgfCAgIDMgKy0KIC4uLi9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYyAgICAgICB8IDc2NSArKysrKysrKysrKysrKysr KysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgICAgICB8ICAxMCAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jICAgIHwgMTEyICsr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyAgICAgIHwgIDI2ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgfCAgMzUgKy0K IC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8ICAxMCArLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgIHwgIDEwICstCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCA2NDUgKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAg fCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8 ICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAg MTIgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAx ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAgNiAr LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgIHwgIDE3ICst CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCAgICAgfCAgIDEgKwog c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgIHwgIDE5ICstCiBz cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggICAgICAgICAgICAgIHwgICAyICstCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgfCAgIDcgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8IDEwNCArKy0KIHNyYy9p bmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgICAgfCAgIDIgKy0KIHNyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgNSArCiAzMiBmaWxlcyBj aGFuZ2VkLCAxNzUxIGluc2VydGlvbnMoKyksIDIxNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYwoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggYzAwYzkzZGQ3Yi4uNWNiMzliMThiZCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTc4NzMsMTEgKzc4NzMsMTUgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0 ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAgICA8 cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFt PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxw YXJhPgotICAgICAgIElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBzdHJlYW1p bmcgb2YgaW4tcHJvZ3Jlc3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250cm9scyBo b3cgdG8gaGFuZGxlIHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zOgor ICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9mIGluLXBy b2dyZXNzIHRyYW5zYWN0aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNwaWxs IHRoZSBjaGFuZ2VzIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGRpc2sg YW5kIGFwcGx5IGF0IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB0 aGUKKyAgICAgICBwdWJsaXNoZXIsCisgICAgICAgPGxpdGVyYWw+YTwvbGl0ZXJhbD4gPSBhcHBs eSBjaGFuZ2VzIGRpcmVjdGx5IHVzaW5nIGEgYmFja2dyb3VuZCB3b3JrZXIKICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZp Zy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDViN2NlNjUzMWQuLmNlN2Y2 ODI3ZjIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ5NzAsNiArNDk3MCwzMSBAQCBBTlkgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUg Y2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAg PHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1hcHBseS1iZ3dvcmtlcnMtcGVyLXN1YnNjcmlwdGlv biIgeHJlZmxhYmVsPSJtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24iPgorICAg ICAgPHRlcm0+PHZhcm5hbWU+bWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92 YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAg IDxwcmltYXJ5Pjx2YXJuYW1lPm1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjwv dmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4 dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgTWF4aW11bSBudW1iZXIgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIHBlciBzdWJz Y3JpcHRpb24uIFRoaXMKKyAgICAgICAgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBhbW91bnQgb2Yg cGFyYWxsZWxpc20gb2YgdGhlIHN0cmVhbWluZyBvZgorICAgICAgICBpbi1wcm9ncmVzcyB0cmFu c2FjdGlvbnMgaWYgd2Ugc2V0IHN1YnNjcmlwdGlvbiBvcHRpb24KKyAgICAgICAgPGxpdGVyYWw+ c3RyZWFtaW5nPC9saXRlcmFsPiB0byA8bGl0ZXJhbD5hcHBseTwvbGl0ZXJhbD4uCisgICAgICAg PC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKKyAgICAgICAgPHZhcm5hbWU+ bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4uCisgICAgICAgPC9wYXJh PgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAzLiBUaGlzIHBh cmFtZXRlciBjYW4gb25seSBiZSBzZXQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5wb3N0Z3Jl c3FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yIG9uIHRoZSBzZXJ2ZXIgY29tbWFuZAorICAgICAg ICBsaW5lLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlz dGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwv bG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDE0NWVhNzFkNjEuLmNjYTZjOTdkNzkgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtOTQ4LDYgKzk0OCwxMyBAQCBD T05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJw Z18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgbWlnaHQgbm90IHZpb2xhdGUgYW55IGNvbnN0cmFp bnQuICBUaGlzIGNhbiBlYXNpbHkgbWFrZSB0aGUgc3Vic2NyaWJlcgogICAgaW5jb25zaXN0ZW50 LgogICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBTZXR0aW5nIHN0cmVhbWluZyBtb2RlIHRvIDxs aXRlcmFsPmFwcGx5PC9saXRlcmFsPiBjb3VsZCBleHBvcnQgaW52YWxpZCBMU04KKyAgIGFzIGZp bmlzaCBMU04gb2YgZmFpbGVkIHRyYW5zYWN0aW9uLiBDaGFuZ2luZyB0aGUgc3RyZWFtaW5nIG1v ZGUgYW5kIG1ha2luZworICAgdGhlIHNhbWUgY29uZmxpY3Qgd3JpdGVzIHRoZSBmaW5pc2ggTFNO IG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gaW4gdGhlCisgICBzZXJ2ZXIgbG9nIGlmIHJlcXVp cmVkLgorICA8L3BhcmE+CiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNh dGlvbi1yZXN0cmljdGlvbnMiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAppbmRleCBiYjMwMzQwODkyLi4zNGJlMWIy Njk4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtNjgwOSw2ICs2ODA5LDI1IEBAIHBzcWwgImRibmFtZT1w b3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAg ICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJvcnQuCisg ICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+ CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRpbWVzdGFtcFR6 KTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgQWJv cnQgdGltZXN0YW1wIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGluIG51bWJlcgor ICAgICAgICAgb2YgbWljcm9zZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2ggKDIwMDAtMDEt MDEpLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlz dGVudHJ5PgorCiAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgIDx0ZXJtPkludDMyIChUcmFu c2FjdGlvbklkKTwvdGVybT4KICAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDM1YjM5YzI4ZGEuLmQ0Y2FhZTAyMjIgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yMTcsMTMgKzIxNywy OSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z dWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCiAg ICAgICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9s aXRlcmFsPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pPC90ZXJtPgorICAgICAgICA8dGVybT48bGl0 ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5lbnVtPC90eXBlPik8L3Rlcm0+CiAgICAg ICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFNwZWNpZmllcyB3aGV0 aGVyIHRvIGVuYWJsZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zCi0gICAg ICAgICAgZm9yIHRoaXMgc3Vic2NyaXB0aW9uLiAgQnkgZGVmYXVsdCwgYWxsIHRyYW5zYWN0aW9u cwotICAgICAgICAgIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIG9ubHkg dGhlbiBzZW50IHRvIHRoZQotICAgICAgICAgIHN1YnNjcmliZXIgYXMgYSB3aG9sZS4KKyAgICAg ICAgICBmb3IgdGhpcyBzdWJzY3JpcHRpb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJh bD5vZmY8L2xpdGVyYWw+LAorICAgICAgICAgIGFsbCB0cmFuc2FjdGlvbnMgYXJlIGZ1bGx5IGRl Y29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuCisgICAgICAgICAgc2VudCB0byB0 aGUgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8 cGFyYT4KKyAgICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+LCB0aGUgY2hh bmdlcyBvZiB0cmFuc2FjdGlvbiBhcmUKKyAgICAgICAgICB3cml0dGVuIHRvIHRlbXBvcmFyeSBm aWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0IG9uY2UgYWZ0ZXIgdGhlCisgICAgICAgICAgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHRoZSBwdWJsaXNoZXIuCisgICAgICAgICA8L3BhcmE+CisK KyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIHNldCB0byA8bGl0ZXJhbD5hcHBseTwvbGl0 ZXJhbD4gaW5jb21pbmcKKyAgICAgICAgICBjaGFuZ2VzIGFyZSBkaXJlY3RseSBhcHBsaWVkIHZp YSBvbmUgb2YgdGhlIGJhY2tncm91bmQgd29ya2VycywgaWYKKyAgICAgICAgICBhdmFpbGFibGUu IElmIG5vIGJhY2tncm91bmQgd29ya2VyIGlzIGZyZWUgdG8gaGFuZGxlIHN0cmVhbWluZworICAg ICAgICAgIHRyYW5zYWN0aW9uIHRoZW4gdGhlIGNoYW5nZXMgYXJlIHdyaXR0ZW4gdG8gYSBmaWxl IGFuZCBhcHBsaWVkIGFmdGVyCisgICAgICAgICAgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRl ZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgd2hlbgorICAgICAgICAgIGFwcGx5aW5n IGNoYW5nZXMgaW4gYSBiYWNrZ3JvdW5kIHdvcmtlciwgaXQgbWlnaHQgbm90IHJlcG9ydCB0aGUK KyAgICAgICAgICBmaW5pc2ggTFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24gaW4gdGhlIHNl cnZlciBsb2cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAg PC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggNDdkODBiMGQy NS4uNjc4NTQwYmEyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFj dC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAtMTcxMSw2ICsx NzExLDcgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAlpbnQJCQlu Y2hpbGRyZW47CiAJVHJhbnNhY3Rpb25JZCAqY2hpbGRyZW47CiAJVGltZXN0YW1wVHogeGFjdF90 aW1lOworCWJvb2wJCXJlcGxvcmlnaW47CiAKIAkvKgogCSAqIElmIHdlIGhhdmVuJ3QgYmVlbiBh c3NpZ25lZCBhbiBYSUQsIG5vYm9keSB3aWxsIGNhcmUgd2hldGhlciB3ZSBhYm9ydGVkCkBAIC0x NzQxLDYgKzE3NDIsMTMgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkK IAkJZWxvZyhQQU5JQywgImNhbm5vdCBhYm9ydCB0cmFuc2FjdGlvbiAldSwgaXQgd2FzIGFscmVh ZHkgY29tbWl0dGVkIiwKIAkJCSB4aWQpOwogCisJLyoKKwkgKiBBcmUgd2UgdXNpbmcgdGhlIHJl cGxpY2F0aW9uIG9yaWdpbnMgZmVhdHVyZT8gIE9yLCBpbiBvdGhlciB3b3JkcywKKwkgKiBhcmUg d2UgcmVwbGF5aW5nIHJlbW90ZSBhY3Rpb25zPworCSAqLworCXJlcGxvcmlnaW4gPSAocmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKKwkJCQkgIHJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gRG9Ob3RSZXBsaWNhdGVJZCk7CisKIAkvKiBGZXRjaCB0 aGUgZGF0YSB3ZSBuZWVkIGZvciB0aGUgYWJvcnQgcmVjb3JkICovCiAJbnJlbHMgPSBzbWdyR2V0 UGVuZGluZ0RlbGV0ZXMoZmFsc2UsICZyZWxzKTsKIAluY2hpbGRyZW4gPSB4YWN0R2V0Q29tbWl0 dGVkQ2hpbGRyZW4oJmNoaWxkcmVuKTsKQEAgLTE3NjUsNiArMTc3MywxMSBAQCBSZWNvcmRUcmFu c2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQkJCQkgICBNeVhhY3RGbGFncywgSW52YWxp ZFRyYW5zYWN0aW9uSWQsCiAJCQkJCSAgIE5VTEwpOwogCisJaWYgKHJlcGxvcmlnaW4pCisJCS8q IE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlzIHJlcGxpY2F0aW9uIG9yaWdpbiAqLworCQlyZXBs b3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiwKKwkJ CQkJCQkJICAgWGFjdExhc3RSZWNFbmQpOworCiAJLyoKIAkgKiBSZXBvcnQgdGhlIGxhdGVzdCBh c3luYyBhYm9ydCBMU04sIHNvIHRoYXQgdGhlIFdBTCB3cml0ZXIga25vd3MgdG8KIAkgKiBmbHVz aCB0aGlzIGFib3J0LiBUaGVyZSdzIG5vdGhpbmcgdG8gYmUgZ2FpbmVkIGJ5IGRlbGF5aW5nIHRo aXMsIHNpbmNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25j bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggODNl NmVhZTg1NS4uNDA4MGJiYTk4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNt ZHMuYwpAQCAtODMsNyArODMsNyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9vbAkJY29w eV9kYXRhOwogCWJvb2wJCXJlZnJlc2g7CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWlu ZzsKKwljaGFyCQlzdHJlYW1pbmc7CiAJYm9vbAkJdHdvcGhhc2U7CiAJYm9vbAkJZGlzYWJsZW9u ZXJyOwogCVhMb2dSZWNQdHIJbHNuOwpAQCAtOTUsNiArOTUsNjIgQEAgc3RhdGljIExpc3QgKm1l cmdlX3B1YmxpY2F0aW9ucyhMaXN0ICpvbGRwdWJsaXN0LCBMaXN0ICpuZXdwdWJsaXN0LCBib29s IGFkZHB1YiwKIHN0YXRpYyB2b2lkIFJlcG9ydFNsb3RDb25uZWN0aW9uRXJyb3IoTGlzdCAqcnN0 YXRlcywgT2lkIHN1YmlkLCBjaGFyICpzbG90bmFtZSwgY2hhciAqZXJyKTsKIAogCisvKgorICog RXh0cmFjdCB0aGUgc3RyZWFtaW5nIG1vZGUgdmFsdWUgZnJvbSBhIERlZkVsZW0uICBUaGlzIGlz IGxpa2UKKyAqIGRlZkdldEJvb2xlYW4oKSBidXQgYWxzbyBhY2NlcHRzIHRoZSBzcGVjaWFsIHZh bHVlIG9mICJhcHBseSIuCisgKi8KK3N0YXRpYyBjaGFyCitkZWZHZXRTdHJlYW1pbmdNb2RlKERl ZkVsZW0gKmRlZikKK3sKKwkvKgorCSAqIElmIG5vIHBhcmFtZXRlciBnaXZlbiwgYXNzdW1lICJ0 cnVlIiBpcyBtZWFudC4KKwkgKi8KKwlpZiAoZGVmLT5hcmcgPT0gTlVMTCkKKwkJcmV0dXJuIFNV QlNUUkVBTV9PTjsKKworCS8qCisJICogQWxsb3cgMCwgMSwgInRydWUiLCAiZmFsc2UiLCAib24i LCAib2ZmIiBvciAiYXBwbHkiLgorCSAqLworCXN3aXRjaCAobm9kZVRhZyhkZWYtPmFyZykpCisJ eworCQljYXNlIFRfSW50ZWdlcjoKKwkJCXN3aXRjaCAoaW50VmFsKGRlZi0+YXJnKSkKKwkJCXsK KwkJCQljYXNlIDA6CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOworCQkJCWNhc2UgMToKKwkJ CQkJcmV0dXJuIFNVQlNUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiBvdGhlcndpc2Us IGVycm9yIG91dCBiZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZh dWx0OgorCQkJeworCQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJpbmcoZGVmKTsKKworCQkJ CS8qCisJCQkJICogVGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUgc2hvdWxkIG1hdGNo IHVwIHdpdGggdGhlCisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFuX29yX3N0cmluZyBwcm9k dWN0aW9uLgorCQkJCSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJmYWxzZSIpID09 IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0gMCkKKwkJCQkJcmV0dXJu IFNVQlNUUkVBTV9PRkY7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInRydWUiKSA9PSAw IHx8CisJCQkJCXBnX3N0cmNhc2VjbXAoc3ZhbCwgIm9uIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNV QlNUUkVBTV9PTjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAiYXBwbHkiKSA9PSAwKQor CQkJCQlyZXR1cm4gU1VCU1RSRUFNX0FQUExZOworCQkJfQorCQkJYnJlYWs7CisJfQorCWVyZXBv cnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkgZXJybXNn KCIlcyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgXCJhcHBseVwiIiwKKwkJCQkJZGVmLT5k ZWZuYW1lKSkpOworCXJldHVybiBTVUJTVFJFQU1fT0ZGOwkJLyoga2VlcCBjb21waWxlciBxdWll dCAqLworfQorCiAvKgogICogQ29tbW9uIG9wdGlvbiBwYXJzaW5nIGZ1bmN0aW9uIGZvciBDUkVB VEUgYW5kIEFMVEVSIFNVQlNDUklQVElPTiBjb21tYW5kcy4KICAqCkBAIC0xMzIsNyArMTg4LDcg QEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpz dG10X29wdGlvbnMsCiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfQklOQVJZKSkK IAkJb3B0cy0+YmluYXJ5ID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJP UFRfU1RSRUFNSU5HKSkKLQkJb3B0cy0+c3RyZWFtaW5nID0gZmFsc2U7CisJCW9wdHMtPnN0cmVh bWluZyA9IFNVQlNUUkVBTV9PRkY7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRf VFdPUEhBU0VfQ09NTUlUKSkKIAkJb3B0cy0+dHdvcGhhc2UgPSBmYWxzZTsKIAlpZiAoSXNTZXQo c3VwcG9ydGVkX29wdHMsIFNVQk9QVF9ESVNBQkxFX09OX0VSUikpCkBAIC0yMzMsNyArMjg5LDcg QEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpz dG10X29wdGlvbnMsCiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7 CiAKIAkJCW9wdHMtPnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9TVFJFQU1JTkc7Ci0JCQlvcHRz LT5zdHJlYW1pbmcgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJCW9wdHMtPnN0cmVhbWluZyA9 IGRlZkdldFN0cmVhbWluZ01vZGUoZGVmZWwpOwogCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZl bC0+ZGVmbmFtZSwgInR3b19waGFzZSIpID09IDApCiAJCXsKQEAgLTYwMSw3ICs2NTcsNyBAQCBD cmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25T dG10ICpzdG10LAogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJvd25lciAtIDFdID0g T2JqZWN0SWRHZXREYXR1bShvd25lcik7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 YmVuYWJsZWQgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmVuYWJsZWQpOwogCXZhbHVlc1tBbnVt X3BnX3N1YnNjcmlwdGlvbl9zdWJiaW5hcnkgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmJpbmFy eSk7Ci0JdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQm9vbEdl dERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi c3RyZWFtIC0gMV0gPSBDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCXZhbHVlc1tBbnVt X3BnX3N1YnNjcmlwdGlvbl9zdWJ0d29waGFzZXN0YXRlIC0gMV0gPQogCQlDaGFyR2V0RGF0dW0o b3B0cy50d29waGFzZSA/CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcg OgpAQCAtMTA2MCw3ICsxMTE2LDcgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJaWYgKElzU2V0KG9wdHMuc3Bl Y2lmaWVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQogCQkJCXsKIAkJCQkJdmFsdWVzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0KLQkJCQkJCUJvb2xHZXREYXR1bShvcHRz LnN0cmVhbWluZyk7CisJCQkJCQlDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCQkJCQly ZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IHRydWU7CiAJCQkJ fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggNDA2MDFhZWZkOS4uNDBjY2I4OTkz YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTI4LDYgKzEyOCw5IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QKIAl9LAogCXsKIAkJIkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5V29ya2Vy TWFpbgorCX0sCisJeworCQkiQXBwbHlCZ3dvcmtlck1haW4iLCBBcHBseUJnd29ya2VyTWFpbgog CX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFr ZWZpbGUgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCmluZGV4IGM0 ZTJmZGViNzEuLmEyNGE0MTk2OWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9N YWtlZmlsZQpAQCAtMjYsNiArMjYsNyBAQCBPQkpTID0gXAogCXJlb3JkZXJidWZmZXIubyBcCiAJ c25hcGJ1aWxkLm8gXAogCXRhYmxlc3luYy5vIFwKLQl3b3JrZXIubworCXdvcmtlci5vIFwKKwlh cHBseWJnd3Jva2VyLm8KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1v bi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJn d3Jva2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xZjUyYjE1NWQ3Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jv a2VyLmMKQEAgLTAsMCArMSw3NjUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogYXBwbHliZ3dy b2tlci5jCisgKiAgICAgU3VwcG9ydCByb3V0aW5lcyBmb3IgYXBwbHlpbmcgeGFjdCBieSBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlcgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyLCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisg KgkgIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jCisgKgor ICogVGhpcyBmaWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBv cnQgc2V0dGluZyB1cCwgdXNpbmcsCisgKiBhbmQgdGVhcmluZyBkb3duIGEgQXBwbHlCZ3dvcmtl clN0YXRlLgorICogUmVmZXIgdG8gdGhlIGNvbW1lbnRzIGluIGZpbGUgaGVhZGVyIG9mIGxvZ2lj YWwvd29ya2VyLmMgdG8gc2VlIG1vcmUKKyAqIGluZm9ybWF0aW9ucyBhYm91dCBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlci4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAi cG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCisjaW5jbHVkZSAibWIv cGdfd2NoYXIuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2lu dGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgorI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlv bi9vcmlnaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgorI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBj LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJ0Y29wL3Rjb3Bw cm90LmgiCisjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKKworI2RlZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQyAweDc5ZmIyNDQ3IC8v IFRPRE8gQ29uc2lkZXIgY2hhbmdlCisKKy8qCisgKiBEU00ga2V5cyBmb3IgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIuICBVbmxpa2Ugb3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBz aW5jZSB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdp dGggcGxhbl9ub2RlX2lkIHdlCisgKiBjYW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVm aW5lIEFQUExZX0JHV09SS0VSX0tFWV9TSEFSRUQJMQorI2RlZmluZSBBUFBMWV9CR1dPUktFUl9L RVlfTVEJCTIKKworLyoKKyAqIGVudHJ5IGZvciBhIGhhc2ggdGFibGUgd2UgdXNlIHRvIG1hcCBm cm9tIHhpZCB0byBvdXIgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIKKyAqIHN0YXRlLgorICovCit0 eXBlZGVmIHN0cnVjdCBBcHBseUJnd29ya2VyRW50cnkKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsK KwlBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZTsKK30gQXBwbHlCZ3dvcmtlckVudHJ5OworCisv KiBBcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgaGFzaCB0YWJsZSAoaW5pdGlhbGl6ZWQgb24gZmly c3QgdXNlKSAqLworc3RhdGljIEhUQUIgKkFwcGx5V29ya2Vyc0hhc2ggPSBOVUxMOworc3RhdGlj IExpc3QgKkFwcGx5V29ya2Vyc0ZyZWVMaXN0ID0gTklMOworc3RhdGljIExpc3QgKkFwcGx5V29y a2Vyc0xpc3QgPSBOSUw7CisKKy8qCisgKiBGaWVsZHMgdG8gcmVjb3JkIHRoZSBzaGFyZSBpbmZv cm1hdGlvbnMgYmV0d2VlbiBtYWluIGFwcGx5IHdvcmtlciBhbmQgYXBwbHkKKyAqIGJhY2tncm91 bmQgd29ya2VyLgorICovCit2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hhcmVkICpNeVBhcmFsbGVs U3RhdGUgPSBOVUxMOworCitMaXN0CSAgICpzdWJ4YWN0bGlzdCA9IE5JTDsKKworLyogYXBwbHkg YmFja2dyb3VuZCB3b3JrZXIgc2V0dXAgKi8KK3N0YXRpYyBBcHBseUJnd29ya2VyU3RhdGUgKmFw cGx5X2Jnd29ya2VyX3NldHVwKHZvaWQpOworc3RhdGljIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2V0 dXBfZHNtKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlKTsKKworLyoKKyAqIExvb2sgdXAgd29y a2VyIGluc2lkZSBBcHBseVdvcmtlcnNIYXNoIGZvciByZXF1ZXN0ZWQgeGlkLgorICoKKyAqIElm IHN0YXJ0IGZsYWcgaXMgdHJ1ZSwgdHJ5IHRvIHN0YXJ0IGEgbmV3IHdvcmtlciBpZiBub3QgZm91 bmQgaW4gaGFzaCB0YWJsZS4KKyAqLworQXBwbHlCZ3dvcmtlclN0YXRlICoKK2FwcGx5X2Jnd29y a2VyX2ZpbmRfb3Jfc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgc3RhcnQpCit7CisJYm9v bAkJZm91bmQ7CisJQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGU7CisJQXBwbHlCZ3dvcmtlckVu dHJ5ICplbnRyeSA9IE5VTEw7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJ CXJldHVybiBOVUxMOworCisJLyoKKwkgKiBXZSBkb24ndCBzdGFydCBuZXcgYmFja2dyb3VuZCB3 b3JrZXIgaWYgd2UgYXJlIG5vdCBpbiBzdHJlYW1pbmcgYXBwbHkKKwkgKiBtb2RlLgorCSAqLwor CWlmIChNeVN1YnNjcmlwdGlvbi0+c3RyZWFtICE9IFNVQlNUUkVBTV9BUFBMWSkKKwkJcmV0dXJu IE5VTEw7CisKKwkvKgorCSAqIFdlIGRvbid0IHN0YXJ0IG5ldyBiYWNrZ3JvdW5kIHdvcmtlciBp ZiB1c2VyIGhhcyBzZXQgc2tpcGxzbiBhcyBpdCdzCisJICogcG9zc2libGUgdGhhdCB1c2VyIHdh bnQgdG8gc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBGb3IKKwkgKiBzdHJlYW1pbmcg dHJhbnNhY3Rpb24sIHdlIG5lZWQgdG8gc3BpbGwgdGhlIHRyYW5zYWN0aW9uIHRvIGRpc2sgc28g dGhhdAorCSAqIHdlIGNhbiBnZXQgdGhlIGxhc3QgTFNOIG9mIHRoZSB0cmFuc2FjdGlvbiB0byBq dWRnZSB3aGV0aGVyIHRvIHNraXAKKwkgKiBiZWZvcmUgc3RhcnRpbmcgdG8gYXBwbHkgdGhlIGNo YW5nZS4KKwkgKi8KKwlpZiAoc3RhcnQgJiYgIVhMb2dSZWNQdHJJc0ludmFsaWQoTXlTdWJzY3Jp cHRpb24tPnNraXBsc24pKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogRm9yIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCBpbiBhcHBseSBiYWNrZ3JvdW5k CisJICogd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5n ZSBmb3IgYSByZWxhdGlvbgorCSAqIHRoYXQgaXMgbm90IGluIHRoZSBSRUFEWSBzdGF0ZSAoc2Vl IHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwpIGFzIHdlCisJICogd29uJ3Qga25vdyByZW1v dGVfZmluYWxfbHNuIGJ5IHRoYXQgdGltZS4gU28sIHdlIGRvbid0IHN0YXJ0IG5ldyBhcHBseQor CSAqIGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKwkgKi8KKwlpZiAoc3RhcnQgJiYg IUFsbFRhYmxlc3luY3NSZWFkeSgpKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIEZpcnN0IHRpbWUg dGhyb3VnaCwgaW5pdGlhbGl6ZSBhcHBseSB3b3JrZXJzIGhhc2h0YWJsZSAqLworCWlmIChBcHBs eVdvcmtlcnNIYXNoID09IE5VTEwpCisJeworCQlIQVNIQ1RMCQljdGw7CisKKwkJTWVtU2V0KCZj dGwsIDAsIHNpemVvZihjdGwpKTsKKwkJY3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25J ZCk7CisJCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoQXBwbHlCZ3dvcmtlckVudHJ5KTsKKwkJY3Rs LmhjeHQgPSBBcHBseUNvbnRleHQ7CisKKwkJQXBwbHlXb3JrZXJzSGFzaCA9IGhhc2hfY3JlYXRl KCJsb2dpY2FsIGFwcGx5IHdvcmtlcnMgaGFzaCIsIDgsICZjdGwsCisJCQkJCQkJCQkgICBIQVNI X0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl9CisKKwkvKgorCSAqIEZpbmQg ZW50cnkgZm9yIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4KKwkgKi8KKwllbnRyeSA9IGhhc2hfc2Vh cmNoKEFwcGx5V29ya2Vyc0hhc2gsICZ4aWQsIHN0YXJ0ID8gSEFTSF9FTlRFUiA6IEhBU0hfRklO RCwKKwkJCQkJCSZmb3VuZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJZW50cnktPndzdGF0ZS0+cHN0 YXRlLT5zdGF0dXMgPSBBUFBMWV9CR1dPUktFUl9CVVNZOworCQlyZXR1cm4gZW50cnktPndzdGF0 ZTsKKwl9CisJZWxzZSBpZiAoIXN0YXJ0KQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogTm93 LCB3ZSB0cnkgdG8gZ2V0IGEgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuIElmIHRoZXJlIGlzIGF0 IGxlYXN0IG9uZQorCSAqIHdvcmtlciBpbiB0aGUgaWRsZSBsaXN0LCB0aGVuIHRha2Ugb25lLiBP dGhlcndpc2UsIHdlIHRyeSB0byBzdGFydCBhCisJICogbmV3IGFwcGx5IGJhY2tncm91bmQgd29y a2VyLgorCSAqLworCWlmIChsaXN0X2xlbmd0aChBcHBseVdvcmtlcnNGcmVlTGlzdCkgPiAwKQor CXsKKwkJd3N0YXRlID0gKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqKSBsbGFzdChBcHBseVdvcmtlcnNG cmVlTGlzdCk7CisJCUFwcGx5V29ya2Vyc0ZyZWVMaXN0ID0gbGlzdF9kZWxldGVfbGFzdChBcHBs eVdvcmtlcnNGcmVlTGlzdCk7CisJfQorCWVsc2UKKwl7CisJCXdzdGF0ZSA9IGFwcGx5X2Jnd29y a2VyX3NldHVwKCk7CisKKwkJaWYgKHdzdGF0ZSA9PSBOVUxMKQorCQl7CisJCQkvKgorCQkJICog SWYgdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGNhbm5vdCBiZSBsYXVuY2hlZCwgcmVtb3Zl IGVudHJ5CisJCQkgKiBpbiBoYXNoIHRhYmxlLgorCQkJICovCisJCQloYXNoX3NlYXJjaChBcHBs eVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX1JFTU9WRSwgJmZvdW5kKTsKKwkJCXJldHVybiBOVUxM OworCQl9CisJfQorCisJLyogRmlsbCB1cCB0aGUgaGFzaCBlbnRyeSAqLworCXdzdGF0ZS0+cHN0 YXRlLT5zdGF0dXMgPSBBUFBMWV9CR1dPUktFUl9CVVNZOworCXdzdGF0ZS0+cHN0YXRlLT5zZXJ2 ZXJfdmVyc2lvbiA9IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25u KTsKKwl3c3RhdGUtPnBzdGF0ZS0+c3RyZWFtX3hpZCA9IHhpZDsKKwllbnRyeS0+d3N0YXRlID0g d3N0YXRlOworCWVudHJ5LT54aWQgPSB4aWQ7CisKKwlyZXR1cm4gd3N0YXRlOworfQorCisvKgor ICogQWRkIHRoZSB3b3JrZXIgdG8gdGhlIGZyZWUgbGlzdCBhbmQgcmVtb3ZlIHRoZSBlbnRyeSBm cm9tIGhhc2ggdGFibGUuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX2ZyZWUoQXBwbHlCZ3dv cmtlclN0YXRlICp3c3RhdGUpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJVHJhbnNhY3Rp b25JZCB4aWQgPSB3c3RhdGUtPnBzdGF0ZS0+c3RyZWFtX3hpZDsKKworCUFzc2VydCh3c3RhdGUt PnBzdGF0ZS0+c3RhdHVzID09IEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKworCW9sZGN0eCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJaGFzaF9zZWFyY2goQXBw bHlXb3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9SRU1PVkUsIE5VTEwpOworCisJZWxvZyhERUJVRzEs ICJhZGRpbmcgZmluaXNoZWQgYXBwbHkgd29ya2VyICMldSBmb3IgeGlkICV1IHRvIHRoZSBpZGxl IGxpc3QiLAorCQkgd3N0YXRlLT5wc3RhdGUtPm4sIHdzdGF0ZS0+cHN0YXRlLT5zdHJlYW1feGlk KTsKKworCUFwcGx5V29ya2Vyc0ZyZWVMaXN0ID0gbGFwcGVuZChBcHBseVdvcmtlcnNGcmVlTGlz dCwgd3N0YXRlKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworfQorCisvKiBB cHBseSBCYWNrZ3JvdW5kIFdvcmtlciBtYWluIGxvb3AgKi8KK3N0YXRpYyB2b2lkCitMb2dpY2Fs QXBwbHlCZ3dMb29wKHNobV9tcV9oYW5kbGUgKm1xaCwgdm9sYXRpbGUgQXBwbHlCZ3dvcmtlclNo YXJlZCAqcHN0KQoreworCXNobV9tcV9yZXN1bHQgc2htcV9yZXM7CisJUEdQUk9DCSAgICpyZWdp c3RyYW50OworCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNrOworCVhMb2dSZWNQdHIJ bGFzdF9yZWNlaXZlZCA9IEludmFsaWRYTG9nUmVjUHRyOworCisJcmVnaXN0cmFudCA9IEJhY2tl bmRQaWRHZXRQcm9jKE15Qmd3b3JrZXJFbnRyeS0+Ymd3X25vdGlmeV9waWQpOworCVNldExhdGNo KCZyZWdpc3RyYW50LT5wcm9jTGF0Y2gpOworCisJLyoKKwkgKiBQdXNoIGFwcGx5IGVycm9yIGNv bnRleHQgY2FsbGJhY2suIEZpZWxkcyB3aWxsIGJlIGZpbGxlZCBkdXJpbmcKKwkgKiBhcHBseWlu ZyBhIGNoYW5nZS4KKwkgKi8KKwllcnJjYWxsYmFjay5jYWxsYmFjayA9IGFwcGx5X2Vycm9yX2Nh bGxiYWNrOworCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwll cnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOworCisJZm9yICg7OykKKwl7CisJCXZv aWQJICAgKmRhdGE7CisJCVNpemUJCWxlbjsKKwkJaW50CQkJYzsKKwkJU3RyaW5nSW5mb0RhdGEg czsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCVhMb2dSZWNQdHIJc3RhcnRfbHNuOworCQlY TG9nUmVjUHRyCWVuZF9sc247CisJCVRpbWVzdGFtcFR6IHNlbmRfdGltZTsKKworCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCisJCS8qIEVuc3VyZSB3ZSBhcmUgcmVhZGluZyB0aGUgZGF0YSBp bnRvIG91ciBtZW1vcnkgY29udGV4dC4gKi8KKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJCXNobXFfcmVzID0gc2htX21xX3JlY2VpdmUo bXFoLCAmbGVuLCAmZGF0YSwgZmFsc2UpOworCisJCWlmIChzaG1xX3JlcyAhPSBTSE1fTVFfU1VD Q0VTUykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24g dG8gdGhlIG1haW4gYXBwbHkgd29ya2VyIikpKTsKKworCQlpZiAobGVuID09IDApCisJCQlicmVh azsKKworCQlzLmN1cnNvciA9IDA7CisJCXMubWF4bGVuID0gLTE7CisJCXMuZGF0YSA9IChjaGFy ICopIGRhdGE7CisJCXMubGVuID0gbGVuOworCisJCS8qCisJCSAqIFdlIHVzZSBmaXJzdCBieXRl IG9mIG1lc3NhZ2UgZm9yIGFkZGl0aW9uYWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuCisJCSAqIG1h aW4gTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgYW5kIGFwcGx5IGJnd29ya2Vycywgc28gaWYg aXQKKwkJICogZGlmZmVycyBmcm9tICd3JywgdGhlbiBwcm9jZXNzIGl0IGZpcnN0LgorCQkgKi8K KwkJYyA9IHBxX2dldG1zZ2J5dGUoJnMpOworCQlzd2l0Y2ggKGMpCisJCXsKKwkJCQkvKiBFbmQg bWVzc2FnZSBvZiBzdHJlYW1pbmcgY2h1bmsgKi8KKwkJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1NU UkVBTV9TVE9QOgorCQkJCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIGVuZGVkIHByb2Nl c3Npbmcgc3RyZWFtaW5nIGNodW5rLCIKKwkJCQkJICJ3YWl0aW5nIG9uIHNobV9tcV9yZWNlaXZl IiwgcHN0LT5uKTsKKworCQkJCWFwcGx5X2Jnd29ya2VyX3NldF9zdGF0dXMoQVBQTFlfQkdXT1JL RVJfUkVBRFkpOworCisJCQkJU2V0TGF0Y2goJnJlZ2lzdHJhbnQtPnByb2NMYXRjaCk7CisKKwkJ CQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCQkJCXBnc3RhdF9yZXBvcnRfYWN0 aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CisJCQkJY29udGludWU7CisJCQljYXNlICd3JzoKKwkJ CQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgIltBcHBseSBCR1cgIyV1XSB1 bmV4cGVjdGVkIG1lc3NhZ2UgXCIlY1wiIiwKKwkJCQkJIHBzdC0+biwgYyk7CisJCQkJYnJlYWs7 CisJCX0KKworCQlzdGFydF9sc24gPSBwcV9nZXRtc2dpbnQ2NCgmcyk7CisJCWVuZF9sc24gPSBw cV9nZXRtc2dpbnQ2NCgmcyk7CisJCXNlbmRfdGltZSA9IHBxX2dldG1zZ2ludDY0KCZzKTsKKwor CQlpZiAobGFzdF9yZWNlaXZlZCA8IHN0YXJ0X2xzbikKKwkJCWxhc3RfcmVjZWl2ZWQgPSBzdGFy dF9sc247CisKKwkJaWYgKGxhc3RfcmVjZWl2ZWQgPCBlbmRfbHNuKQorCQkJbGFzdF9yZWNlaXZl ZCA9IGVuZF9sc247CisKKwkJLyoKKwkJICogVE8gSU1QUk9WRTogRG8gd2UgbmVlZCB0byBkaXNw bGF5IHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcidzCisJCSAqIGluZm9ybWF0aW9uIGluIHBn X3N0YXRfcmVwbGljYXRpb24gPworCQkgKi8KKwkJVXBkYXRlV29ya2VyU3RhdHMobGFzdF9yZWNl aXZlZCwgc2VuZF90aW1lLCBmYWxzZSk7CisKKwkJYXBwbHlfZGlzcGF0Y2goJnMpOworCisJCWlm IChDb25maWdSZWxvYWRQZW5kaW5nKQorCQl7CisJCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFs c2U7CisJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKKwkJfQorCisJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQlNZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlNZXNzYWdl Q29udGV4dCk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcE1lbW9yeUNvbnRleHQp OworCU1lbW9yeUNvbnRleHRSZXNldChBcHBseUNvbnRleHQpOworCisJLyogUG9wIHRoZSBlcnJv ciBjb250ZXh0IHN0YWNrICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnBy ZXZpb3VzOworCisJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0gZXhpdGluZyIsIHBzdC0+ bik7CisKKwkvKiBTaWduYWwgbWFpbiBwcm9jZXNzIHRoYXQgd2UgYXJlIGRvbmUuICovCisJU2V0 TGF0Y2goJnJlZ2lzdHJhbnQtPnByb2NMYXRjaCk7Cit9CisKKy8qCisgKiBTZXQgdGhlIGV4aXQg c3RhdHVzIHNvIHRoYXQgdGhlIG1haW4gYXBwbHkgd29ya2VyIGNhbiByZWFsaXplIHdlIGhhdmUK KyAqIHNodXRkb3duLgorICovCitzdGF0aWMgdm9pZAorQXBwbHlCZ3dTaHV0ZG93bihpbnQgY29k ZSwgRGF0dW0gYXJnKQoreworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFN0YXRlLT5tdXRl eCk7CisJTXlQYXJhbGxlbFN0YXRlLT5zdGF0dXMgPSBBUFBMWV9CR1dPUktFUl9FWElUOworCVNw aW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFN0YXRlLT5tdXRleCk7CisKKwlkc21fZGV0YWNoKChk c21fc2VnbWVudCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKSk7Cit9CisKKy8qCisgKiBBcHBseSBC YWNrZ3JvdW5kIFdvcmtlciBlbnRyeSBwb2ludAorICovCit2b2lkCitBcHBseUJnd29ya2VyTWFp bihEYXR1bSBtYWluX2FyZykKK3sKKwl2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hhcmVkICpwc3Q7 CisKKwlkc21faGFuZGxlCWhhbmRsZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNobV90b2MgICAg KnRvYzsKKwlzaG1fbXEJICAgKm1xOworCXNobV9tcV9oYW5kbGUgKm1xaDsKKwlNZW1vcnlDb250 ZXh0IG9sZGNvbnRleHQ7CisJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7CisJaW50CQkJd29ya2VyX3Ns b3QgPSBEYXR1bUdldEludDMyKG1haW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRB TEVOXTsKKworCS8qIEF0dGFjaCB0byBzbG90ICovCisJbG9naWNhbHJlcF93b3JrZXJfYXR0YWNo KHdvcmtlcl9zbG90KTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BNZW1vcnlDb250ZXh0 KTsKKworCS8qIExvYWQgdGhlIHN1YnNjcmlwdGlvbiBpbnRvIHBlcnNpc3RlbnQgbWVtb3J5IGNv bnRleHQuICovCisJQXBwbHlDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9y eUNvbnRleHQsCisJCQkJCQkJCQkJICJBcHBseUNvbnRleHQiLAorCQkJCQkJCQkJCSBBTExPQ1NF VF9ERUZBVUxUX1NJWkVTKTsKKworCS8qCisJICogSW5pdCB0aGUgQXBwbHlNZXNzYWdlQ29udGV4 dCB3aGljaCB3ZSBjbGVhbiB1cCBhZnRlciBlYWNoIHJlcGxpY2F0aW9uCisJICogcHJvdG9jb2wg bWVzc2FnZS4KKwkgKi8KKwlBcHBseU1lc3NhZ2VDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3Jl YXRlKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCSJBcHBseU1lc3NhZ2VDb250ZXh0IiwKKwkJ CQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyogU2V0dXAgc2lnbmFsIGhh bmRsaW5nICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2Fk KTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUpOworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2ln bmFscygpOworCisJLyoKKwkgKiBDb25uZWN0IHRvIHRoZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkg c2VnbWVudC4KKwkgKgorCSAqIFRoZSBiYWNrZW5kIHRoYXQgcmVnaXN0ZXJlZCB0aGlzIHdvcmtl ciBwYXNzZWQgdXMgdGhlIElEIG9mIGEgc2hhcmVkCisJICogbWVtb3J5IHNlZ21lbnQgdG8gd2hp Y2ggd2UgbXVzdCBhdHRhY2ggZm9yIGZ1cnRoZXIgaW5zdHJ1Y3Rpb25zLiAgSW4KKwkgKiBvcmRl ciB0byBhdHRhY2ggdG8gZHluYW1pYyBzaGFyZWQgbWVtb3J5LCB3ZSBuZWVkIGEgcmVzb3VyY2Ug b3duZXIuCisJICogT25jZSB3ZSd2ZSBtYXBwZWQgdGhlIHNlZ21lbnQgaW4gb3VyIGFkZHJlc3Mg c3BhY2UsIGF0dGFjaCB0byB0aGUgdGFibGUKKwkgKiBvZiBjb250ZW50cyBzbyB3ZSBjYW4gbG9j YXRlIHRoZSB2YXJpb3VzIGRhdGEgc3RydWN0dXJlcyB3ZSdsbCBuZWVkIHRvCisJICogZmluZCB3 aXRoaW4gdGhlIHNlZ21lbnQuCisJICovCisJQ3VycmVudFJlc291cmNlT3duZXIgPSBSZXNvdXJj ZU93bmVyQ3JlYXRlKE5VTEwsICJMb2dpY2FsIGFwcGx5IHdvcmtlciIpOworCW1lbWNweSgmaGFu ZGxlLCBNeUJnd29ya2VyRW50cnktPmJnd19leHRyYSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwlz ZWcgPSBkc21fYXR0YWNoKGhhbmRsZSk7CisJaWYgKHNlZyA9PSBOVUxMKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RB VEUpLAorCQkJCSBlcnJtc2coInVuYWJsZSB0byBtYXAgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNl Z21lbnQiKSkpOworCXRvYyA9IHNobV90b2NfYXR0YWNoKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01B R0lDLCBkc21fc2VnbWVudF9hZGRyZXNzKHNlZykpOworCWlmICh0b2MgPT0gTlVMTCkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJiYWQgbWFnaWMgbnVtYmVyIGluIGR5bmFtaWMgc2hh cmVkIG1lbW9yeSBzZWdtZW50IikpKTsKKworCWJlZm9yZV9zaG1lbV9leGl0KEFwcGx5Qmd3U2h1 dGRvd24sIFBvaW50ZXJHZXREYXR1bShzZWcpKTsKKworCS8qIExvb2sgdXAgdGhlIHBhcmFsbGVs IHN0YXRlLiAqLworCXBzdCA9IHNobV90b2NfbG9va3VwKHRvYywgQVBQTFlfQkdXT1JLRVJfS0VZ X1NIQVJFRCwgZmFsc2UpOworCU15UGFyYWxsZWxTdGF0ZSA9IHBzdDsKKworCS8qCisJICogQXR0 YWNoIHRvIHRoZSBtZXNzYWdlIHF1ZXVlLgorCSAqLworCW1xID0gc2htX3RvY19sb29rdXAodG9j LCBBUFBMWV9CR1dPUktFUl9LRVlfTVEsIGZhbHNlKTsKKwlzaG1fbXFfc2V0X3JlY2VpdmVyKG1x LCBNeVByb2MpOworCW1xaCA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBS dW4gYXMgcmVwbGljYSBzZXNzaW9uIHJlcGxpY2F0aW9uIHJvbGUuICovCisJU2V0Q29uZmlnT3B0 aW9uKCJzZXNzaW9uX3JlcGxpY2F0aW9uX3JvbGUiLCAicmVwbGljYSIsCisJCQkJCVBHQ19TVVNF VCwgUEdDX1NfT1ZFUlJJREUpOworCisJLyogQ29ubmVjdCB0byBvdXIgZGF0YWJhc2UuICovCisJ QmFja2dyb3VuZFdvcmtlckluaXRpYWxpemVDb25uZWN0aW9uQnlPaWQoTXlMb2dpY2FsUmVwV29y a2VyLT5kYmlkLAorCQkJCQkJCQkJCQkgIE15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAorCQkJ CQkJCQkJCQkgIDApOworCisJLyoKKwkgKiBTZXQgYWx3YXlzLXNlY3VyZSBzZWFyY2ggcGF0aCwg c28gbWFsaWNpb3VzIHVzZXJzIGNhbid0IHJlZGlyZWN0IHVzZXIKKwkgKiBjb2RlIChlLmcuIHBn X2luZGV4LmluZGV4cHJzKS4KKwkgKi8KKwlTZXRDb25maWdPcHRpb24oInNlYXJjaF9wYXRoIiwg IiIsIFBHQ19TVVNFVCwgUEdDX1NfT1ZFUlJJREUpOworCisJLyoKKwkgKiBTZXQgdGhlIGNsaWVu dCBlbmNvZGluZyB0byB0aGUgZGF0YWJhc2UgZW5jb2RpbmcsIHNpbmNlIHRoYXQgaXMgd2hhdAor CSAqIHRoZSBsZWFkZXIgd2lsbCBleHBlY3QuCisJICovCisJU2V0Q2xpZW50RW5jb2RpbmcoR2V0 RGF0YWJhc2VFbmNvZGluZygpKTsKKworCXN0cmVhbV94aWQgPSBwc3QtPnN0cmVhbV94aWQ7CisK KwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCU15U3Vic2NyaXB0aW9uID0gR2V0U3Vic2NyaXB0 aW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUpOworCWlmICghTXlTdWJzY3JpcHRp b24pCisJeworCQllcmVwb3J0KExPRywKKwkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9u IGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1IHdpbGwgbm90ICIKKwkJCQkJCSJzdGFy dCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQgZHVyaW5nIHN0YXJ0dXAiLAor CQkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsKKwkJcHJvY19leGl0KDApOworCX0K KworCU15U3Vic2NyaXB0aW9uVmFsaWQgPSB0cnVlOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjb250ZXh0KTsKKworCS8qIFNldHVwIHN5bmNocm9ub3VzIGNvbW1pdCBhY2NvcmRpbmcgdG8g dGhlIHVzZXIncyB3aXNoZXMgKi8KKwlTZXRDb25maWdPcHRpb24oInN5bmNocm9ub3VzX2NvbW1p dCIsIE15U3Vic2NyaXB0aW9uLT5zeW5jY29tbWl0LAorCQkJCQlQR0NfQkFDS0VORCwgUEdDX1Nf T1ZFUlJJREUpOworCisJLyogS2VlcCB1cyBpbmZvcm1lZCBhYm91dCBzdWJzY3JpcHRpb24gY2hh bmdlcy4gKi8KKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhTVUJTQ1JJUFRJT05PSUQs CisJCQkJCQkJCSAgc3Vic2NyaXB0aW9uX2NoYW5nZV9jYiwKKwkJCQkJCQkJICAoRGF0dW0pIDAp OworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBTZXR1cCByZXBsaWNhdGlv biBvcmlnaW4gdHJhY2tpbmcuICovCisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlzbnBy aW50ZihvcmlnaW5uYW1lLCBzaXplb2Yob3JpZ2lubmFtZSksICJwZ18ldSIsIE15U3Vic2NyaXB0 aW9uLT5vaWQpOworCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIHRy dWUpOworCWlmICghT2lkSXNWYWxpZChvcmlnaW5pZCkpCisJCW9yaWdpbmlkID0gcmVwbG9yaWdp bl9jcmVhdGUob3JpZ2lubmFtZSk7CisKKwkvKgorCSAqIFRoZSBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlciBkb2Vzbid0IG5lZWQgdG8gbW9ub3BvbGl6ZSB0aGlzIHJlcGxpY2F0aW9uCisJICogb3Jp Z2luIHdoaWNoIHdhcyBhbHJlYWR5IGFjcXVpcmVkIGJ5IGl0cyBsZWFkZXIgcHJvY2Vzcy4KKwkg Ki8KKwlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIGZhbHNlKTsKKwlyZXBsb3Jp Z2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisKKwkvKgorCSAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNv bnRleHQgZm9yIGVycm9yIGNvbnRleHQKKwkgKiBtZXNzYWdlLgorCSAqLworCWFwcGx5X2Vycm9y X2NhbGxiYWNrX2FyZy5vcmlnaW5fbmFtZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoQXBwbHlDb250 ZXh0LAorCQkJCQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7CisKKwkvKgorCSAqIEluZGljYXRl IHRoYXQgd2UncmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIHJlYWR5IHRvIGJlZ2luIHRoZSBtYWlu IHBhcnQKKwkgKiBvZiB0aGUgYXBwbHkgb3BlcmF0aW9uLgorCSAqLworCWFwcGx5X2Jnd29ya2Vy X3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfQVRUQUNIRUQpOworCisJZWxvZyhERUJVRzEsICJb QXBwbHkgQkdXICMldV0gc3RhcnRlZCIsIHBzdC0+bik7CisKKwlMb2dpY2FsQXBwbHlCZ3dMb29w KG1xaCwgcHN0KTsKKworCS8qCisJICogV2UncmUgZG9uZS4gIEV4cGxpY2l0bHkgZGV0YWNoIHRo ZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgc28gdGhhdCB3ZQorCSAqIGRvbid0IGdldCBhIHJlc291 cmNlIGxlYWsgd2FybmluZyBhdCBjb21taXQgdGltZS4gIFRoaXMgd2lsbCBmaXJlIGFueQorCSAq IG9uX2RzbV9kZXRhY2ggY2FsbGJhY2tzIHdlJ3ZlIHJlZ2lzdGVyZWQsIGFzIHdlbGwuICBPbmNl IHRoYXQncyBkb25lLAorCSAqIHdlIGNhbiBnbyBhaGVhZCBhbmQgZXhpdC4KKwkgKi8KKwlkc21f ZGV0YWNoKHNlZyk7CisJcHJvY19leGl0KDApOworfQorCisvKgorICogU2V0IHVwIGEgZHluYW1p YyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCisgKgorICogV2Ugc2V0IHVwIGEgY29udHJvbCByZWdp b24gdGhhdCBjb250YWlucyBhIEFwcGx5Qmd3b3JrZXJTaGFyZWQsCisgKiBwbHVzIG9uZSByZWdp b24gcGVyIG1lc3NhZ2UgcXVldWUuIFRoZXJlIGFyZSBhcyBtYW55IG1lc3NhZ2UgcXVldWVzIGFz CisgKiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9iZ3dv cmtlcl9zZXR1cF9kc20oQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpCit7CisJc2htX3RvY19l c3RpbWF0b3IgZTsKKwlTaXplCQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3Rv YyAgICAqdG9jOworCUFwcGx5Qmd3b3JrZXJTaGFyZWQgKnBzdDsKKwlzaG1fbXEJICAgKm1xOwor CWludDY0CQlxdWV1ZV9zaXplID0gMTYwMDAwMDAwOyAvKiAxNiBNQiBmb3Igbm93ICovCisKKwkv KgorCSAqIEVzdGltYXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgorCSAq IEJlY2F1c2UgdGhlIFRPQyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGluZyBv ZiBvZGRseS1zaXplZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1bmsg c2VwYXJhdGVseS4KKwkgKgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUgbG9j YXRpb24gb2YgdGhlIGhlYWRlciwgYW5kIHdlIG5lZWQKKwkgKiBhbm90aGVyIGtleSB0byB0cmFj ayB0aGUgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJc2htX3RvY19pbml0 aWFsaXplX2VzdGltYXRvcigmZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgc2l6ZW9m KEFwcGx5Qmd3b3JrZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCAoU2l6 ZSkgcXVldWVfc2l6ZSk7CisKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJmUsIDEgKyAxKTsKKwlz ZWdzaXplID0gc2htX3RvY19lc3RpbWF0ZSgmZSk7CisKKwkvKiBDcmVhdGUgdGhlIHNoYXJlZCBt ZW1vcnkgc2VnbWVudCBhbmQgZXN0YWJsaXNoIGEgdGFibGUgb2YgY29udGVudHMuICovCisJc2Vn ID0gZHNtX2NyZWF0ZShzaG1fdG9jX2VzdGltYXRlKCZlKSwgMCk7CisJdG9jID0gc2htX3RvY19j cmVhdGUoUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2Vn KSwKKwkJCQkJCSBzZWdzaXplKTsKKworCS8qIFNldCB1cCB0aGUgaGVhZGVyIHJlZ2lvbi4gKi8K Kwlwc3QgPSBzaG1fdG9jX2FsbG9jYXRlKHRvYywgc2l6ZW9mKEFwcGx5Qmd3b3JrZXJTaGFyZWQp KTsKKwlTcGluTG9ja0luaXQoJnBzdC0+bXV0ZXgpOworCXBzdC0+c3RhdHVzID0gQVBQTFlfQkdX T1JLRVJfQlVTWTsKKwlwc3QtPnNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9u KExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOworCXBzdC0+c3RyZWFtX3hpZCA9IHN0cmVhbV94aWQ7 CisJcHN0LT5uID0gbGlzdF9sZW5ndGgoQXBwbHlXb3JrZXJzTGlzdCkgKyAxOworCisJc2htX3Rv Y19pbnNlcnQodG9jLCBBUFBMWV9CR1dPUktFUl9LRVlfU0hBUkVELCBwc3QpOworCisJLyogU2V0 IHVwIG9uZSBtZXNzYWdlIHF1ZXVlIHBlciB3b3JrZXIsIHBsdXMgb25lLiAqLworCW1xID0gc2ht X21xX2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywgKFNpemUpIHF1ZXVlX3NpemUpLAorCQkJ CQkgICAoU2l6ZSkgcXVldWVfc2l6ZSk7CisJc2htX3RvY19pbnNlcnQodG9jLCBBUFBMWV9CR1dP UktFUl9LRVlfTVEsIG1xKTsKKwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKworCS8q IEF0dGFjaCB0aGUgcXVldWVzLiAqLworCXdzdGF0ZS0+bXFfaGFuZGxlID0gc2htX21xX2F0dGFj aChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFJldHVybiByZXN1bHRzIHRvIGNhbGxlci4gKi8KKwl3 c3RhdGUtPmRzbV9zZWcgPSBzZWc7CisJd3N0YXRlLT5wc3RhdGUgPSBwc3Q7Cit9CisKKy8qCisg KiBTdGFydCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBwcm9jZXNzIGFuZCBhbGxvY2F0ZSBzaGFy ZWQgbWVtb3J5IGZvciBpdC4KKyAqLworc3RhdGljIEFwcGx5Qmd3b3JrZXJTdGF0ZSAqCithcHBs eV9iZ3dvcmtlcl9zZXR1cCh2b2lkKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwli b29sCQlsYXVuY2hlZDsKKwlBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZTsKKwlpbnQJCQluYXBw bHl3b3JrZXJzOworCisJZWxvZyhERUJVRzEsICJzZXR0aW5nIHVwIGFwcGx5IHdvcmtlciAjJXUi LCBsaXN0X2xlbmd0aChBcHBseVdvcmtlcnNMaXN0KSArIDEpOworCisJLyogQ2hlY2sgSWYgdGhl cmUgYXJlIGZyZWUgd29ya2VyIHNsb3QocykgKi8KKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBX b3JrZXJMb2NrLCBMV19TSEFSRUQpOworCW5hcHBseXdvcmtlcnMgPSBsb2dpY2FscmVwX2FwcGx5 X2JhY2tncm91bmRfd29ya2VyX2NvdW50KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpOworCUxX TG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworCWlmIChuYXBwbHl3b3JrZXJzID49 IG1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbikKKwkJcmV0dXJuIE5VTEw7CisK KwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwl3 c3RhdGUgPSAoQXBwbHlCZ3dvcmtlclN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKEFwcGx5Qmd3b3Jr ZXJTdGF0ZSkpOworCisJLyogU2V0dXAgc2hhcmVkIG1lbW9yeSAqLworCWFwcGx5X2Jnd29ya2Vy X3NldHVwX2RzbSh3c3RhdGUpOworCisJbGF1bmNoZWQgPSBsb2dpY2FscmVwX3dvcmtlcl9sYXVu Y2goTXlMb2dpY2FsUmVwV29ya2VyLT5kYmlkLAorCQkJCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5v aWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJCQkJCQkJCQkJTXlMb2dpY2Fs UmVwV29ya2VyLT51c2VyaWQsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlkc21f c2VnbWVudF9oYW5kbGUod3N0YXRlLT5kc21fc2VnKSk7CisKKwlpZiAobGF1bmNoZWQpCisJewor CQkvKiBXYWl0IGZvciB3b3JrZXIgdG8gYXR0YWNoLiAqLworCQlhcHBseV9iZ3dvcmtlcl93YWl0 X2Zvcih3c3RhdGUsIEFQUExZX0JHV09SS0VSX0FUVEFDSEVEKTsKKworCQlBcHBseVdvcmtlcnNM aXN0ID0gbGFwcGVuZChBcHBseVdvcmtlcnNMaXN0LCB3c3RhdGUpOworCX0KKwllbHNlCisJewor CQlwZnJlZSh3c3RhdGUpOworCQl3c3RhdGUgPSBOVUxMOworCX0KKworCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiB3c3RhdGU7Cit9CisKKy8qCisgKiBTZW5k IHRoZSBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgdmlhIHNo YXJlZC1tZW1vcnkgcXVldWUuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShB cHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSwgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEp Cit7CisJc2htX21xX3Jlc3VsdCByZXN1bHQ7CisKKwlyZXN1bHQgPSBzaG1fbXFfc2VuZCh3c3Rh dGUtPm1xX2hhbmRsZSwgbmJ5dGVzLCBkYXRhLCBmYWxzZSwgdHJ1ZSk7CisKKwlpZiAocmVzdWx0 ICE9IFNITV9NUV9TVUNDRVNTKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImNvdWxk IG5vdCBzZW5kIHR1cGxlcyB0byBzaGFyZWQtbWVtb3J5IHF1ZXVlIikpKTsKK30KKworLyoKKyAq IFdhaXQgdW50aWwgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciByZWFjaGVz IHRoZQorICogJ3dhaXRfZm9yX3N0YXR1cycKKyAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJfd2Fp dF9mb3IoQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUsCisJCQkJCQlBcHBseUJnd29ya2VyU3Rh dHVzIHdhaXRfZm9yX3N0YXR1cykKK3sKKwlmb3IgKDs7KQorCXsKKwkJY2hhcgkJc3RhdHVzOwor CisJCVNwaW5Mb2NrQWNxdWlyZSgmd3N0YXRlLT5wc3RhdGUtPm11dGV4KTsKKwkJc3RhdHVzID0g d3N0YXRlLT5wc3RhdGUtPnN0YXR1czsKKwkJU3BpbkxvY2tSZWxlYXNlKCZ3c3RhdGUtPnBzdGF0 ZS0+bXV0ZXgpOworCisJCS8qIERvbmUgaWYgYWxyZWFkeSBpbiBjb3JyZWN0IHN0YXR1cy4gKi8K KwkJaWYgKHN0YXR1cyA9PSB3YWl0X2Zvcl9zdGF0dXMpCisJCQlicmVhazsKKworCQkvKiBJZiBh bnkgd29ya2VycyAob3IgdGhlIHBvc3RtYXN0ZXIpIGhhdmUgZGllZCwgd2UgaGF2ZSBmYWlsZWQu ICovCisJCWlmIChzdGF0dXMgPT0gQVBQTFlfQkdXT1JLRVJfRVhJVCkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RB VEUpLAorCQkJCQkgZXJybXNnKCJiYWNrZ3JvdW5kIHdvcmtlciAldSBmYWlsZWQgdG8gYXBwbHkg dHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJCXdzdGF0ZS0+cHN0YXRlLT5uLCB3c3RhdGUtPnBzdGF0 ZS0+c3RyZWFtX3hpZCkpKTsKKworCQkvKiBXYWl0IHRvIGJlIHNpZ25hbGxlZC4gKi8KKwkJV2Fp dExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJ CQkJICBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfV09SS0VSX1NUQVRFX0NIQU5HRSk7CisKKwkJ LyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCisJCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisKKwkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdl cmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwl9Cit9CisKKy8qCisg KiBDaGVjayB0aGUgc3RhdHVzIG9mIHdvcmtlcnMgYW5kIHJlcG9ydCBhbiBlcnJvciBpZiBhbnkg YXBwbHkgYmFja2dyb3VuZAorICogd29ya2VyIGhhcyBleGl0ZWQgdW5leHBlY3RlZGx5LgorICoK KyAqIEV4aXQgaWYgYW55IHJlbGF0aW9uIGlzIG5vdCBpbiB0aGUgUkVBRFkgc3RhdGUgYW5kIGlm IGFueSB3b3JrZXIgaXMgaGFuZGxpbmcKKyAqIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gYXQg dGhlIHNhbWUgdGltZS4gQmVjYXVzZSBmb3Igc3RyZWFtaW5nCisgKiB0cmFuc2FjdGlvbnMgdGhh dCBpcyBiZWluZyBhcHBsaWVkIGluIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB3ZSBjYW5ub3QK KyAqIGRlY2lkZSB3aGV0aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEgcmVsYXRpb24gdGhh dCBpcyBub3QgaW4gdGhlIFJFQURZCisgKiBzdGF0ZSAoc2VlIHNob3VsZF9hcHBseV9jaGFuZ2Vz X2Zvcl9yZWwpIGFzIHdlIHdvbid0IGtub3cgcmVtb3RlX2ZpbmFsX2xzbgorICogYnkgdGhhdCB0 aW1lLgorICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXModm9pZCkKK3sKKwlM aXN0Q2VsbCAgICpsYzsKKworCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpIHx8IE15U3Vic2NyaXB0 aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX0FQUExZKQorCQlyZXR1cm47CisKKwlmb3JlYWNoKGxj LCBBcHBseVdvcmtlcnNMaXN0KQorCXsKKwkJQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUgPSAo QXBwbHlCZ3dvcmtlclN0YXRlICopIGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogV2UgZG9uJ3Qg bG9jayBoZXJlIGFzIGluIHRoZSB3b3JzdCBjYXNlIHdlIHdpbGwganVzdCBkZXRlY3QgdGhlCisJ CSAqIGZhaWx1cmUgb2Ygd29ya2VyIGEgYml0IGxhdGVyLgorCQkgKi8KKwkJaWYgKHdzdGF0ZS0+ cHN0YXRlLT5zdGF0dXMgPT0gQVBQTFlfQkdXT1JLRVJfRVhJVCkKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAorCQkJCQkgZXJybXNnKCJiYWNrZ3JvdW5kIHdvcmtlciAldSBleGl0ZWQgdW5leHBlY3RlZGx5 IiwKKwkJCQkJCQl3c3RhdGUtPnBzdGF0ZS0+bikpKTsKKwl9CisKKwlpZiAobGlzdF9sZW5ndGgo QXBwbHlXb3JrZXJzRnJlZUxpc3QpICE9IGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0xpc3QpICYm CisJCSFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJt c2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VycyBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiB3aWxsIHJlc3RhcnQiLAorCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpLAorCQkJCSBl cnJkZXRhaWwoIkNhbm5vdCBoYW5kbGUgc3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNhY3Rpb24g YnkgYXBwbHkgIgorCQkJCQkJICAgImJnd29ya2VycyB1bnRpbCBhbGwgdGFibGVzIGFyZSBzeW5j aHJvbml6ZWQiKSkpOworCisJCXByb2NfZXhpdCgwKTsKKwl9Cit9CisKKy8qIFNldCB0aGUgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIgc3RhdHVzICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9zZXRf c3RhdHVzKEFwcGx5Qmd3b3JrZXJTdGF0dXMgc3RhdHVzKQoreworCWlmICghYW1fYXBwbHlfYmd3 b3JrZXIoKSkKKwkJcmV0dXJuOworCisJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0gc2V0 IHN0YXR1cyB0byAlZCIsIE15UGFyYWxsZWxTdGF0ZS0+biwgc3RhdHVzKTsKKworCVNwaW5Mb2Nr QWNxdWlyZSgmTXlQYXJhbGxlbFN0YXRlLT5tdXRleCk7CisJTXlQYXJhbGxlbFN0YXRlLT5zdGF0 dXMgPSBzdGF0dXM7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFsbGVsU3RhdGUtPm11dGV4KTsK K30KKworLyoKKyAqIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0IGluIGFwcGx5IGJh Y2tncm91bmQgd29ya2VyIGlmIG5lZWRlZC4KKyAqCisgKiBJbnNpZGUgYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIgd2UgY2FuIGZpZ3VyZSBvdXQgdGhhdCBuZXcgc3VidHJhbnNhY3Rpb24gd2FzCisg KiBzdGFydGVkIGlmIG5ldyBjaGFuZ2UgYXJyaXZlZCB3aXRoIGRpZmZlcmVudCB4aWQuIEluIHRo YXQgY2FzZSB3ZSBjYW4gZGVmaW5lCisgKiBuYW1lZCBzYXZlcG9pbnQsIHNvIHRoYXQgd2Ugd2Vy ZSBhYmxlIHRvIGNvbW1pdC9yb2xsYmFjayBpdCBzZXBhcmF0ZWx5CisgKiBsYXRlci4KKyAqIFNw ZWNpYWwgY2FzZSBpcyBpZiB0aGUgZmlyc3QgY2hhbmdlIGNvbWVzIGZyb20gc3VidHJhbnNhY3Rp b24sIHRoZW4KKyAqIHdlIGNoZWNrIHRoYXQgY3VycmVudF94aWQgZGlmZmVycyBmcm9tIHN0cmVh bV94aWQuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoVHJhbnNh Y3Rpb25JZCBjdXJyZW50X3hpZCkKK3sKKwlpZiAoY3VycmVudF94aWQgIT0gc3RyZWFtX3hpZCAm JgorCQkhbGlzdF9tZW1iZXJfaW50KHN1YnhhY3RsaXN0LCAoaW50KSBjdXJyZW50X3hpZCkpCisJ eworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2hhcgkJc3BuYW1lW01BWFBHUEFUSF07CisK KwkJc25wcmludGYoc3BuYW1lLCBNQVhQR1BBVEgsICJzYXZlcG9pbnRfZm9yX3hpZF8ldSIsIGN1 cnJlbnRfeGlkKTsKKworCQllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBkZWZpbmluZyBz YXZlcG9pbnQgJXMiLAorCQkJIE15UGFyYWxsZWxTdGF0ZS0+biwgc3BuYW1lKTsKKworCQlEZWZp bmVTYXZlcG9pbnQoc3BuYW1lKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJ b2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisJCXN1YnhhY3Rs aXN0ID0gbGFwcGVuZF9pbnQoc3VieGFjdGxpc3QsIChpbnQpIGN1cnJlbnRfeGlkKTsKKwkJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggYWEyNDI3YmE3My4uMDBmZGRlMDgzMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC02NTEsOSArNjUxLDEwIEBAIERl Y29kZUNvbW1pdChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIg KmJ1ZiwKIAl7CiAJCWZvciAoaSA9IDA7IGkgPCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsrKQogCQl7 Ci0JCQlSZW9yZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tp XSwgYnVmLT5vcmlncHRyKTsKKwkJCVJlb3JkZXJCdWZmZXJGb3JnZXQoY3R4LT5yZW9yZGVyLCBw YXJzZWQtPnN1YnhhY3RzW2ldLCBidWYtPm9yaWdwdHIsCisJCQkJCQkJCWNvbW1pdF90aW1lKTsK IAkJfQotCQlSZW9yZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPm9yaWdw dHIpOworCQlSZW9yZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPm9yaWdw dHIsIGNvbW1pdF90aW1lKTsKIAogCQlyZXR1cm47CiAJfQpAQCAtODIxLDEwICs4MjIsMTEgQEAg RGVjb2RlQWJvcnQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVy ICpidWYsCiAJCWZvciAoaSA9IDA7IGkgPCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsrKQogCQl7CiAJ CQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLAot CQkJCQkJCSAgIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIpOworCQkJCQkJCSAgIGJ1Zi0+cmVjb3Jk LT5FbmRSZWNQdHIsIGFib3J0X3RpbWUpOwogCQl9CiAKLQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0 eC0+cmVvcmRlciwgeGlkLCBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJUmVvcmRlckJ1ZmZl ckFib3J0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPnJlY29yZC0+RW5kUmVjUHRyLAorCQkJCQkJ ICAgYWJvcnRfdGltZSk7CiAJfQogCiAJLyogdXBkYXRlIHRoZSBkZWNvZGluZyBzdGF0cyAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IDJiZGFiNTNl MTkuLmRkNjg2NTEzMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5j aGVyLmMKQEAgLTU0LDYgKzU0LDcgQEAKIAogaW50CQkJbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25f d29ya2VycyA9IDQ7CiBpbnQJCQltYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAy OworaW50CQkJbWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMzsKIAogTG9n aWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2VyID0gTlVMTDsKIApAQCAtNzMsNiArNzQs NyBAQCBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX2xhdW5jaGVyX29uZXhpdChpbnQgY29kZSwgRGF0 dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX29uZXhpdChpbnQgY29kZSwg RGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKTsK IHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtlciAq d29ya2VyKTsKK3N0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9n aWNhbFJlcFdvcmtlciAqd29ya2VyKTsKIAogc3RhdGljIGJvb2wgb25fY29tbWl0X2xhdW5jaGVy X3dha2V1cCA9IGZhbHNlOwogCkBAIC0yMjMsNiArMjI1LDEwIEBAIGxvZ2ljYWxyZXBfd29ya2Vy X2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsKIAkJTG9n aWNhbFJlcFdvcmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJCS8qIFdl IG9ubHkgbmVlZCBtYWluIGFwcGx5IHdvcmtlciBvciB0YWJsZSBzeW5jIHdvcmtlciBoZXJlICov CisJCWlmICh3LT5zdWJ3b3JrZXIpCisJCQljb250aW51ZTsKKwogCQlpZiAody0+aW5fdXNlICYm IHctPnN1YmlkID09IHN1YmlkICYmIHctPnJlbGlkID09IHJlbGlkICYmCiAJCQkoIW9ubHlfcnVu bmluZyB8fCB3LT5wcm9jKSkKIAkJewpAQCAtMjU5LDExICsyNjUsMTEgQEAgbG9naWNhbHJlcF93 b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZykKIH0KIAogLyoKLSAqIFN0 YXJ0IG5ldyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2libGUuCisgKiBTdGFydCBu ZXcgYmFja2dyb3VuZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgogICovCi12b2lkCitib29sCiBsb2dp Y2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3Vi bmFtZSwgT2lkIHVzZXJpZCwKLQkJCQkJCSBPaWQgcmVsaWQpCisJCQkJCQkgT2lkIHJlbGlkLCBk c21faGFuZGxlIHN1Yndvcmtlcl9kc20pCiB7CiAJQmFja2dyb3VuZFdvcmtlciBiZ3c7CiAJQmFj a2dyb3VuZFdvcmtlckhhbmRsZSAqYmd3X2hhbmRsZTsKQEAgLTI3Myw2ICsyNzksMTAgQEAgbG9n aWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1 Ym5hbWUsIE9pZCB1c2VyaWQsCiAJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyID0gTlVMTDsKIAlp bnQJCQluc3luY3dvcmtlcnM7CiAJVGltZXN0YW1wVHogbm93OworCWJvb2wJCWlzX3N1Yndvcmtl ciA9IChzdWJ3b3JrZXJfZHNtICE9IERTTV9IQU5ETEVfSU5WQUxJRCk7CisKKwkvKiBXZSBkb24n dCBzdXBwb3J0IHRhYmxlIHN5bmMgaW4gc3Vid29ya2VyICovCisJQXNzZXJ0KCEoaXNfc3Vid29y a2VyICYmIE9pZElzVmFsaWQocmVsaWQpKSk7CiAKIAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJt c2dfaW50ZXJuYWwoInN0YXJ0aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJz Y3JpcHRpb24gXCIlc1wiIiwKQEAgLTM1MCw3ICszNjAsNyBAQCByZXRyeToKIAlpZiAoT2lkSXNW YWxpZChyZWxpZCkgJiYgbnN5bmN3b3JrZXJzID49IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNj cmlwdGlvbikKIAl7CiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQly ZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY0LDcgKzM3NCw3IEBAIHJl dHJ5OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCks CiAJCQkJIGVycm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNsb3RzIiks CiAJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dpY2FsX3Jl cGxpY2F0aW9uX3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQog CiAJLyogUHJlcGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBAIC0zNzksNiArMzg5LDcgQEAgcmV0 cnk6CiAJd29ya2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdvcmtlci0+ cmVsc3RhdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmlsZXNl dCA9IE5VTEw7CisJd29ya2VyLT5zdWJ3b3JrZXIgPSBpc19zdWJ3b3JrZXI7CiAJd29ya2VyLT5s YXN0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+ bGFzdF9zZW5kX3RpbWUpOwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9yZWN2X3Rp bWUpOwpAQCAtMzk2LDE5ICs0MDcsMzAgQEAgcmV0cnk6CiAJCUJHV09SS0VSX0JBQ0tFTkRfREFU QUJBU0VfQ09OTkVDVElPTjsKIAliZ3cuYmd3X3N0YXJ0X3RpbWUgPSBCZ1dvcmtlclN0YXJ0X1Jl Y292ZXJ5RmluaXNoZWQ7CiAJc25wcmludGYoYmd3LmJnd19saWJyYXJ5X25hbWUsIEJHV19NQVhM RU4sICJwb3N0Z3JlcyIpOwotCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01B WExFTiwgIkFwcGx5V29ya2VyTWFpbiIpOworCisJaWYgKCFpc19zdWJ3b3JrZXIpCisJCXNucHJp bnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29ya2VyTWFpbiIp OworCWVsc2UKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAi QXBwbHlCZ3dvcmtlck1haW4iKTsKKwogCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSkKIAkJc25wcmlu dGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3 b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSBzeW5jICV1Iiwgc3ViaWQsIHJlbGlkKTsKLQllbHNl CisJZWxzZSBpZiAoIWlzX3N1YndvcmtlcikKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1df TUFYTEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlv biAldSIsIHN1YmlkKTsKKwllbHNlCisJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExF TiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gYmFja2dyb3VuZCBhcHBseSB3b3JrZXIgZm9y IHN1YnNjcmlwdGlvbiAldSAiLCBzdWJpZCk7CiAJc25wcmludGYoYmd3LmJnd190eXBlLCBCR1df TUFYTEVOLCAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIiKTsKIAogCWJndy5iZ3dfcmVzdGFy dF90aW1lID0gQkdXX05FVkVSX1JFU1RBUlQ7CiAJYmd3LmJnd19ub3RpZnlfcGlkID0gTXlQcm9j UGlkOwogCWJndy5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVtKHNsb3QpOwogCisJaWYgKGlz X3N1YndvcmtlcikKKwkJbWVtY3B5KGJndy5iZ3dfZXh0cmEsICZzdWJ3b3JrZXJfZHNtLCBzaXpl b2YoZHNtX2hhbmRsZSkpOworCiAJaWYgKCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2Vy KCZiZ3csICZiZ3dfaGFuZGxlKSkKIAl7CiAJCS8qIEZhaWxlZCB0byBzdGFydCB3b3JrZXIsIHNv IGNsZWFuIHVwIHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTQyMSwxMSArNDQzLDEzIEBAIHJldHJ5 OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJ CQkJIGVycm1zZygib3V0IG9mIGJhY2tncm91bmQgd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhp bnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF93b3JrZXJfcHJvY2Vzc2VzLiIpKSk7 Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIE5vdyB3YWl0IHVudGlsIGl0 IGF0dGFjaGVzLiAqLwogCVdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdl bmVyYXRpb24sIGJnd19oYW5kbGUpOworCisJcmV0dXJuIHRydWU7CiB9CiAKIC8qCkBAIC00MzYs NyArNDYwLDYgQEAgdm9pZAogbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCBy ZWxpZCkKIHsKIAlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7Ci0JdWludDE2CQlnZW5lcmF0aW9u OwogCiAJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIApA QCAtNDQ5LDYgKzQ3MiwyMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lk IHJlbGlkKQogCQlyZXR1cm47CiAJfQogCisJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5h bCh3b3JrZXIpOworCisJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Cit9CisK Ky8qCisgKiBXb3JraG9yc2UgZm9yIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoKSBhbmQgbG9naWNh bHJlcF93b3JrZXJfZGV0YWNoKCkuIFN0b3AKKyAqIHRoZSB3b3JrZXIgYW5kIHdhaXQgZm9yIGl0 IHRvIGRpZS4KKyAqLworc3RhdGljIHZvaWQKK2xvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJu YWwoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKQoreworCXVpbnQxNgkJZ2VuZXJhdGlvbjsKKwor CUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOworCiAJLyoKIAkg KiBSZW1lbWJlciB3aGljaCBnZW5lcmF0aW9uIHdhcyBvdXIgd29ya2VyIHNvIHdlIGNhbiBjaGVj ayBpZiB3aGF0IHdlIHNlZQogCSAqIGlzIHN0aWxsIHRoZSBzYW1lIG9uZS4KQEAgLTQ4NSwxMCAr NTI0LDcgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAkJ ICogZGlmZmVyZW50LCBtZWFuaW5nIHRoYXQgYSBkaWZmZXJlbnQgd29ya2VyIGhhcyB0YWtlbiB0 aGUgc2xvdC4KIAkJICovCiAJCWlmICghd29ya2VyLT5pbl91c2UgfHwgd29ya2VyLT5nZW5lcmF0 aW9uICE9IGdlbmVyYXRpb24pCi0JCXsKLQkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtl ckxvY2spOwogCQkJcmV0dXJuOwotCQl9CiAKIAkJLyogV29ya2VyIGhhcyBhc3NpZ25lZCBwcm9j LCBzbyBpdCBoYXMgc3RhcnRlZC4gKi8KIAkJaWYgKHdvcmtlci0+cHJvYykKQEAgLTUyMiw4ICs1 NTgsNiBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCiAJ CUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAJfQotCi0J TFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiB9CiAKIC8qCkBAIC01OTksNiAr NjMzLDI5IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCkKIHN0YXRpYyB2b2lk CiBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCkKIHsKKwkvKgorCSAqIElmIHdlIGFyZSB0 aGUgbWFpbiBhcHBseSB3b3JrZXIsIHN0b3AgYWxsIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl cnMKKwkgKiB3ZSBzdGFydGVkIGJlZm9yZS4KKwkgKi8KKwlpZiAoIU15TG9naWNhbFJlcFdvcmtl ci0+c3Vid29ya2VyKQorCXsKKwkJTGlzdAkgICAqd29ya2VyczsKKwkJTGlzdENlbGwgICAqbGM7 CisKKwkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKwor CQl3b3JrZXJzID0gbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwgdHJ1ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBX b3JrZXIgKncgPSAoTG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAody0+ c3Vid29ya2VyKQorCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodyk7CisJCX0K KworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwl9CisKIAkvKiBCbG9j ayBjb25jdXJyZW50IGFjY2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJM b2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC02MjEsNiArNjc4LDcgQEAgbG9naWNhbHJlcF93b3Jr ZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29ya2VyLT51c2VyaWQgPSBJ bnZhbGlkT2lkOwogCXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+cmVsaWQg PSBJbnZhbGlkT2lkOworCXdvcmtlci0+c3Vid29ya2VyID0gZmFsc2U7CiB9CiAKIC8qCkBAIC02 NzksNiArNzM3LDMwIEBAIGxvZ2ljYWxyZXBfc3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKQog CXJldHVybiByZXM7CiB9CiAKKy8qCisgKiBDb3VudCB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVyZWQg KG5vdCBuZWNlc3NhcmlseSBydW5uaW5nKSBhcHBseSBiYWNrZ3JvdW5kCisgKiB3b3JrZXIgZm9y IGEgc3Vic2NyaXB0aW9uLgorICovCitpbnQKK2xvZ2ljYWxyZXBfYXBwbHlfYmFja2dyb3VuZF93 b3JrZXJfY291bnQoT2lkIHN1YmlkKQoreworCWludAkJCWk7CisJaW50CQkJcmVzID0gMDsKKwor CUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOworCisJLyogU2Vh cmNoIGZvciBhdHRhY2hlZCB3b3JrZXIgZm9yIGEgZ2l2ZW4gc3Vic2NyaXB0aW9uIGlkLiAqLwor CWZvciAoaSA9IDA7IGkgPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOyBpKyspCisJ eworCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbaV07CisK KwkJaWYgKHctPnN1YmlkID09IHN1YmlkICYmIHctPnN1YndvcmtlcikKKwkJCXJlcysrOworCX0K KworCXJldHVybiByZXM7Cit9CisKIC8qCiAgKiBBcHBseUxhdW5jaGVyU2htZW1TaXplCiAgKgkJ Q29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9yIHJlcGxpY2F0aW9uIGxhdW5jaGVyIHNoYXJlZCBtZW1v cnkKQEAgLTg2OCw3ICs5NTAsNyBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykK IAkJCQkJd2FpdF90aW1lID0gd2FsX3JldHJpZXZlX3JldHJ5X2ludGVydmFsOwogCiAJCQkJCWxv Z2ljYWxyZXBfd29ya2VyX2xhdW5jaChzdWItPmRiaWQsIHN1Yi0+b2lkLCBzdWItPm5hbWUsCi0J CQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJIHN1Yi0+b3du ZXIsIEludmFsaWRPaWQsIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJfQogCQkJfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwppbmRleCAyMTkzN2FiMmQzLi45Mjcz MDExYjBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdp bi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKQEAgLTEw NjMsMTIgKzEwNjMsMjEgQEAgUmVwbGljYXRpb25PcmlnaW5FeGl0Q2xlYW51cChpbnQgY29kZSwg RGF0dW0gYXJnKQogICogYXJyYXkgZG9lc24ndCBoYXZlIHRvIGJlIHNlYXJjaGVkIHdoZW4gY2Fs bGluZwogICogcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UoKS4KICAqCi0gKiBPYnZpb3VzbHkg b25seSBvbmUgc3VjaCBjYWNoZWQgb3JpZ2luIGNhbiBleGlzdCBwZXIgcHJvY2VzcyBhbmQgdGhl IGN1cnJlbnQKKyAqIE5vcm1hbGx5IG9ubHkgb25lIHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhp c3QgcGVyIHByb2Nlc3MgYW5kIHRoZSBjdXJyZW50CiAgKiBjYWNoZWQgdmFsdWUgY2FuIG9ubHkg YmUgc2V0IGFnYWluIGFmdGVyIHRoZSBwcmV2aW91cyB2YWx1ZSBpcyB0b3JuIGRvd24KICAqIHdp dGggcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KCkuCisgKgorICogSG93ZXZlciwgSWYgbXVzdF9h Y3F1aXJlIGlzIGZhbHNlLCB3ZSBhbGxvdyBwcm9jZXNzIHRvIGdldCB0aGUgc2xvdCB3aGljaCBp cworICogYWxyZWFkeSBhY3F1aXJlZCBieSBvdGhlciBwcm9jZXNzLiBJdCdzIHNhZmUgYmVjYXVz ZSAxKSBUaGUgb25seSBjYWxsZXIKKyAqIChhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMpIHdpbGwg bWFpbnRhaW4gdGhlIGNvbW1pdCBvcmRlciBieSBhbGxvd2luZyBvbmx5CisgKiBvbmUgcHJvY2Vz cyB0byBjb21taXQgYXQgYSB0aW1lLCBzbyBubyB0d28gd29ya2VycyB3aWxsIGJlIG9wZXJhdGlu ZyBvbiB0aGUKKyAqIHNhbWUgb3JpZ2luIGF0IHRoZSBzYW1lIHRpbWUgKHNlZSBjb21tZW50cyBp biBsb2dpY2FsL3dvcmtlci5jKS4gMikgRXZlbgorICogdGhvdWdoIHdlIHRyeSB0byBhZHZhbmNl IHRoZSBzZXNzaW9uJ3Mgb3JpZ2luIGNvbmN1cnJlbnRseSwgaXQncyBzYWZlIHRvIGRvCisgKiBz byBhcyB3ZSBjaGFuZ2UvYWR2YW5jZSB0aGUgc2Vzc2lvbl9vcmlnaW4gTFNOcyB1bmRlciByZXBs aWNhdGVfc3RhdGUKKyAqIExXTG9jay4KICAqLwogdm9pZAotcmVwbG9yaWdpbl9zZXNzaW9uX3Nl dHVwKFJlcE9yaWdpbklkIG5vZGUpCityZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2lu SWQgbm9kZSwgYm9vbCBtdXN0X2FjcXVpcmUpCiB7CiAJc3RhdGljIGJvb2wgcmVnaXN0ZXJlZF9j bGVhbnVwOwogCWludAkJCWk7CkBAIC0xMTEwLDcgKzExMTksNyBAQCByZXBsb3JpZ2luX3Nlc3Np b25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKIAkJaWYgKGN1cnN0YXRlLT5yb2lkZW50ICE9IG5v ZGUpCiAJCQljb250aW51ZTsKIAotCQllbHNlIGlmIChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0g MCkKKwkJZWxzZSBpZiAoY3Vyc3RhdGUtPmFjcXVpcmVkX2J5ICE9IDAgJiYgbXVzdF9hY3F1aXJl KQogCQl7CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9J Tl9VU0UpLApAQCAtMTE0MSw3ICsxMTUwLDE0IEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChS ZXBPcmlnaW5JZCBub2RlKQogCiAJQXNzZXJ0KHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPnJv aWRlbnQgIT0gSW52YWxpZFJlcE9yaWdpbklkKTsKIAotCXNlc3Npb25fcmVwbGljYXRpb25fc3Rh dGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9jUGlkOworCWlmIChtdXN0X2FjcXVpcmUpCisJCXNlc3Np b25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9jUGlkOworCWVsc2UgaWYg KHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID09IDApCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVE KSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgZmluZCBjb3JyZWN0IHJlcGxpY2F0aW9uIHN0YXRl IHNsb3QgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiB3aXRoIE9JRCAldSBmb3IgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIiLAorCQkJCQkJbm9kZSksCisJCQkJIGVycmhpbnQoIlRoZXJlIGlzIG5vIHJl cGxpY2F0aW9uIHN0YXRlIHNsb3Qgc2V0IGJ5IGl0cyBtYWluIGFwcGx5IHdvcmtlci4iKSkpOwog CiAJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvbk9yaWdpbkxvY2spOwogCkBAIC0xMzIxLDcgKzEz MzcsNyBAQCBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9zZXR1cChQR19GVU5DVElPTl9B UkdTKQogCiAJbmFtZSA9IHRleHRfdG9fY3N0cmluZygodGV4dCAqKSBEYXR1bUdldFBvaW50ZXIo UEdfR0VUQVJHX0RBVFVNKDApKSk7CiAJb3JpZ2luID0gcmVwbG9yaWdpbl9ieV9uYW1lKG5hbWUs IGZhbHNlKTsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luKTsKKwlyZXBsb3JpZ2lu X3Nlc3Npb25fc2V0dXAob3JpZ2luLCB0cnVlKTsKIAogCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW4gPSBvcmlnaW47CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRl eCBmZjg1MTNlMmQyLi5hODg4MDM4ZWI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9wcm90by5jCkBAIC0xMTY2LDI4ICsxMTY2LDQ3IEBAIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1f Y29tbWl0KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSkK ICAqLwogdm9pZAogbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQs IFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCisJCQkJ CQkJICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgYWJvcnRfbHNuKQogewogCXBx X3NlbmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCk7CiAKLQlBc3NlcnQo VHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSAmJiBUcmFuc2FjdGlvbklkSXNWYWxpZChzdWJ4aWQp KTsKKwlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSAmJiBUcmFuc2FjdGlvbklkSXNW YWxpZCh0eG4tPnhpZCkpOwogCiAJLyogdHJhbnNhY3Rpb24gSUQgKi8KIAlwcV9zZW5kaW50MzIo b3V0LCB4aWQpOwotCXBxX3NlbmRpbnQzMihvdXQsIHN1YnhpZCk7CisJcHFfc2VuZGludDMyKG91 dCwgdHhuLT54aWQpOworCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X2xzbik7CisJcHFfc2VuZGlu dDY0KG91dCwgdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSk7CiB9CiAKIC8qCiAgKiBSZWFkIFNU UkVBTSBBQk9SVCBmcm9tIHRoZSBvdXRwdXQgc3RyZWFtLgogICovCiB2b2lkCi1sb2dpY2FscmVw X3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJ CQkJCQkgVHJhbnNhY3Rpb25JZCAqc3VieGlkKQorbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9y dChTdHJpbmdJbmZvIGluLAorCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9y dF9kYXRhLAorCQkJCQkJCSBib29sIGluY2x1ZGVfYWJvcnRfbHNuKQogewotCUFzc2VydCh4aWQg JiYgc3VieGlkKTsKKwlBc3NlcnQoYWJvcnRfZGF0YSk7CisKKwlhYm9ydF9kYXRhLT54aWQgPSBw cV9nZXRtc2dpbnQoaW4sIDQpOworCWFib3J0X2RhdGEtPnN1YnhpZCA9IHBxX2dldG1zZ2ludChp biwgNCk7CiAKLQkqeGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKLQkqc3VieGlkID0gcHFfZ2V0 bXNnaW50KGluLCA0KTsKKwkvKgorCSAqIElmIHRoZSB2ZXJzaW9uIG9mIHRoZSBwdWJsaXNoZXIg aXMgbG93ZXIgdGhhbiB0aGUgdmVyc2lvbiBvZiB0aGUKKwkgKiBzdWJzY3JpYmVyLCBpdCBtYXkg bm90IHN1cHBvcnQgc2VuZGluZyB0aGVzZSB0d28gZmllbGRzLCBzbyBvbmx5IHRha2UKKwkgKiB0 aGVzZSBmaWVsZHMgd2hlbiBpbmNsdWRlX2Fib3J0X2xzbiBpcyB0cnVlLgorCSAqLworCWlmIChp bmNsdWRlX2Fib3J0X2xzbikKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IHBxX2dldG1z Z2ludDY0KGluKTsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9IHBxX2dldG1zZ2ludDY0KGlu KTsKKwl9CisJZWxzZQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gSW52YWxpZFhMb2dS ZWNQdHI7CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSAwOworCX0KIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggOGRh NWY5MDg5Yy4uM2QyYmJkYjM4ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTI4MjYsNyArMjgyNiw4IEBAIFJlb3JkZXJCdWZmZXJG aW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAgKiBk aXNrLgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRy YW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jlb3JkZXJCdWZmZXJBYm9ydChSZW9y ZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCSAg IFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBA IC0yODM3LDYgKzI4MzgsOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIs IFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlpZiAodHhuID09IE5VTEwpCiAJ CXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUgPSBhYm9ydF90aW1lOworCiAJ LyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkgdGhlIHJlbW90ZSBub2RlIGFib3V0 IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFtZWQodHhuKSkKIAl7CkBAIC0yOTEx LDcgKzI5MTQsOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRy YW5zYWN0aW9uSWQgb2xkZXN0UnVubmluZ1hpZCkKICAqIHRvIHRoaXMgeGlkIG1pZ2h0IHJlLWNy ZWF0ZSB0aGUgdHJhbnNhY3Rpb24gaW5jb21wbGV0ZWx5LgogICovCiB2b2lkCi1SZW9yZGVyQnVm ZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0 ciBsc24pCitSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlv bklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7 CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yOTIyLDYgKzI5MjYsOCBAQCBSZW9yZGVy QnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1Jl Y1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQogCQlyZXR1cm47CiAKKwl0eG4tPnhhY3RfdGlt ZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwogCS8qIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlv bnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91dCB0aGUgYWJvcnQuICovCiAJaWYgKHJidHhu X2lzX3N0cmVhbWVkKHR4bikpCiAJCXJiLT5zdHJlYW1fYWJvcnQocmIsIHR4biwgbHNuKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDY3MGM2ZmNh ZGEuLjhmZmJhN2UyZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJs ZXN5bmMuYwpAQCAtNTY4LDcgKzU2OCw4IEBAIHByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2Fw cGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJCQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24t Pm9pZCwKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSwKIAkJCQkJCQkJCQkJCSBN eUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKLQkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkKTsK KwkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkLAorCQkJCQkJCQkJCQkJIERTTV9IQU5ETEVfSU5W QUxJRCk7CiAJCQkJCQloZW50cnktPmxhc3Rfc3RhcnRfdGltZSA9IG5vdzsKIAkJCQkJfQogCQkJ CX0KQEAgLTU4OSw2ICs1OTAsOSBAQCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShY TG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogdm9pZAogcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9n UmVjUHRyIGN1cnJlbnRfbHNuKQogeworCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1Yndvcmtl cikKKwkJcmV0dXJuOworCiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJcHJvY2Vzc19z eW5jaW5nX3RhYmxlc19mb3Jfc3luYyhjdXJyZW50X2xzbik7CiAJZWxzZQpAQCAtMTI3Myw3ICsx Mjc3LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFy dHBvcykKIAkJICogdGltZSB0aGlzIHRhYmxlc3luYyB3YXMgbGF1bmNoZWQuCiAJCSAqLwogCQlv cmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7Ci0JCXJlcGxv cmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1 cChvcmlnaW5pZCwgdHJ1ZSk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5p ZDsKIAkJKm9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3Mo ZmFsc2UpOwogCkBAIC0xMzg0LDcgKzEzODgsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQo WExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkJCQkJICAgdHJ1ZSAvKiBnbyBiYWNrd2Fy ZCAqLyAsIHRydWUgLyogV0FMIGxvZyAqLyApOwogCQlVbmxvY2tSZWxhdGlvbk9pZChSZXBsaWNh dGlvbk9yaWdpblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCi0JCXJlcGxvcmlnaW5f c2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmln aW5pZCwgdHJ1ZSk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAl9 CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggZmMy MTBhOWU3Yi4uM2Y4ZGVhMGZjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCkBAIC0yMiw4ICsyMiwyNSBAQAogICogU1RSRUFNRUQgVFJBTlNBQ1RJT05TCiAgKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFN0cmVhbWVkIHRyYW5zYWN0aW9ucyAobGFyZ2UgdHJh bnNhY3Rpb25zIGV4Y2VlZGluZyBhIG1lbW9yeSBsaW1pdCBvbiB0aGUKLSAqIHVwc3RyZWFtKSBh cmUgbm90IGFwcGxpZWQgaW1tZWRpYXRlbHksIGJ1dCBpbnN0ZWFkLCB0aGUgZGF0YSBpcyB3cml0 dGVuCi0gKiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBhdCBvbmNlIHdoZW4g dGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICogdXBzdHJlYW0pIGFyZSBhcHBsaWVkIHZpYSBv bmUgb2YgdHdvIGFwcHJvYWNoZXMuCisgKgorICogMSkgU2VwYXJhdGUgYmFja2dyb3VuZCB3b3Jr ZXJzCisgKgorICogQXNzaWduIGEgbmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2VyIChpZiBhdmFp bGFibGUpIGFzIHNvb24gYXMgdGhlIHhhY3QncworICogZmlyc3Qgc3RyZWFtIGlzIHJlY2VpdmVk IGFuZCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgd2lsbCBzZW5kIGNoYW5nZXMgdG8gdGhpcworICog bmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gV2Uga2VlcCB0aGlzIHdvcmtlciBhc3NpZ25l ZCB0aWxsIHRoZQorICogdHJhbnNhY3Rpb24gY29tbWl0IGlzIHJlY2VpdmVkIGFuZCBhbHNvIHdh aXQgZm9yIHRoZSB3b3JrZXIgdG8gZmluaXNoIGF0CisgKiBjb21taXQuIFRoaXMgcHJlc2VydmVz IGNvbW1pdCBvcmRlcmluZyBhbmQgYXZvaWRzIHdyaXRpbmcgdG8gYW5kIHJlYWRpbmcKKyAqIGZy b20gZmlsZSBpbiBtb3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlIGlz IG5vIHdvcmtlcgorICogYXZhaWxhYmxlLiBXZSBhbHNvIG5lZWQgdG8gYWxsb3cgc3RyZWFtX3N0 b3AgdG8gY29tcGxldGUgYnkgdGhlIGJhY2tncm91bmQKKyAqIHdvcmtlciB0byBhdm9pZCBkZWFk bG9ja3MgYmVjYXVzZSBULTEncyBjdXJyZW50IHN0cmVhbSBvZiBjaGFuZ2VzIGNhbiB1cGRhdGUK KyAqIHJvd3MgaW4gY29uZmxpY3Rpbmcgb3JkZXIgd2l0aCBULTIncyBuZXh0IHN0cmVhbSBvZiBj aGFuZ2VzLgorICoKKyAqIDIpIFdyaXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hl biB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMKKyAqCisgKiBJZiBubyB3b3JrZXIgaXMgYXZhaWxh YmxlIHRvIGhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiwgdGhlIGRhdGEgaXMKKyAqIHdyaXR0 ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgYXQgb25jZSB3aGVuIHRoZSBm aW5hbCBjb21taXQKKyAqIGFycml2ZXMuCiAgKgogICogVW5saWtlIHRoZSByZWd1bGFyIChub24t c3RyZWFtZWQpIGNhc2UsIGhhbmRsaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBoYXMKICAqIHRv IGhhbmRsZSBhYm9ydHMgb2YgYm90aCB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24gYW5kIHN1YnRy YW5zYWN0aW9ucy4gVGhpcwpAQCAtMjE5LDIwICsyMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBBcHBs eUV4ZWN1dGlvbkRhdGEKIAlQYXJ0aXRpb25UdXBsZVJvdXRpbmcgKnByb3V0ZTsJLyogcGFydGl0 aW9uIHJvdXRpbmcgaW5mbyAqLwogfSBBcHBseUV4ZWN1dGlvbkRhdGE7CiAKLS8qIFN0cnVjdCBm b3Igc2F2aW5nIGFuZCByZXN0b3JpbmcgYXBwbHkgZXJyY29udGV4dCBpbmZvcm1hdGlvbiAqLwot dHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNhbGxiYWNrQXJnCi17Ci0JTG9naWNhbFJlcE1zZ1R5 cGUgY29tbWFuZDsJLyogMCBpZiBpbnZhbGlkICovCi0JTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpy ZWw7Ci0KLQkvKiBSZW1vdGUgbm9kZSBpbmZvcm1hdGlvbiAqLwotCWludAkJCXJlbW90ZV9hdHRu dW07CS8qIC0xIGlmIGludmFsaWQgKi8KLQlUcmFuc2FjdGlvbklkIHJlbW90ZV94aWQ7Ci0JWExv Z1JlY1B0cglmaW5pc2hfbHNuOwotCWNoYXIJICAgKm9yaWdpbl9uYW1lOwotfSBBcHBseUVycm9y Q2FsbGJhY2tBcmc7Ci0KLXN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3Jf Y2FsbGJhY2tfYXJnID0KK0FwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFj a19hcmcgPQogewogCS5jb21tYW5kID0gMCwKIAkucmVsID0gTlVMTCwKQEAgLTI0Miw3ICsyNDYs NyBAQCBzdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2Fy ZyA9CiAJLm9yaWdpbl9uYW1lID0gTlVMTCwKIH07CiAKLXN0YXRpYyBNZW1vcnlDb250ZXh0IEFw cGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOworTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250 ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0ID0gTlVMTDsKIAogLyogcGVy IHN0cmVhbSBjb250ZXh0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zICovCkBAIC0yNTEsMjcg KzI1NSwzOCBAQCBzdGF0aWMgTWVtb3J5Q29udGV4dCBMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCA9 IE5VTEw7CiBXYWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPSBOVUxMOwog CiBTdWJzY3JpcHRpb24gKk15U3Vic2NyaXB0aW9uID0gTlVMTDsKLXN0YXRpYyBib29sIE15U3Vi c2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKK2Jvb2wJCU15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxz ZTsKIAogYm9vbAkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiBzdGF0aWMgWExvZ1Jl Y1B0ciByZW1vdGVfZmluYWxfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAKIC8qIGZpZWxkcyB2 YWxpZCBvbmx5IHdoZW4gcHJvY2Vzc2luZyBzdHJlYW1lZCB0cmFuc2FjdGlvbiAqLwotc3RhdGlj IGJvb2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKK2Jvb2wJCWluX3N0cmVhbWVk X3RyYW5zYWN0aW9uID0gZmFsc2U7CisKK1RyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZCA9IEludmFs aWRUcmFuc2FjdGlvbklkOworc3RhdGljIEFwcGx5Qmd3b3JrZXJTdGF0ZSAqc3RyZWFtX2FwcGx5 X3dvcmtlciA9IE5VTEw7CisKKy8qIGNoZWNrIGlmIHdlIGFyZSBhcHBseWluZyB0aGUgdHJhbnNh Y3Rpb24gaW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKi8KKyNkZWZpbmUgYXBwbHlfYmd3b3Jr ZXJfYWN0aXZlKCkgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uICYmIHN0cmVhbV9hcHBseV93b3Jr ZXIgIT0gTlVMTCkKIAotc3RhdGljIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZCA9IEludmFsaWRU cmFuc2FjdGlvbklkOworLyoKKyAqIFRoZSBudW1iZXIgb2YgY2hhbmdlcyBkdXJpbmcgb25lIHN0 cmVhbWluZyBibG9jayAob25seSBmb3IgYXBwbHkgYmFja2dyb3VuZAorICogd29ya2VycykKKyAq Lworc3RhdGljIHVpbnQzMiBuY2hhbmdlcyA9IDA7CiAKIC8qCiAgKiBXZSBlbmFibGUgc2tpcHBp bmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VSVCwgVVBEQVRFLCBldGMuKSBm b3IKICAqIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbidzIGZpbmlz aCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ugd2Ugc3RhcnQgc2tpcHBpbmcg Y2hhbmdlcywgd2UgZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lwIGFsbCBjaGFuZ2VzIG9mCiAg KiB0aGUgdHJhbnNhY3Rpb24gZXZlbiBpZiBwZ19zdWJzY3JpcHRpb24gaXMgdXBkYXRlZCBhbmQg TXlTdWJzY3JpcHRpb24tPnNraXBsc24KLSAqIGdldHMgY2hhbmdlZCBvciByZXNldCBkdXJpbmcg dGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzLCB3ZQotICogZG9uJ3Qg c2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3 aGV0aGVyIG9yIG5vdAorICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0LiBBbHNv LCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMgKHN0cmVhbWluZyA9IG9uKSwKKyAqIHdl IGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3ZSBk ZWNpZGUgd2hldGhlciBvciBub3QKICAqIHRvIHNraXAgYXBwbHlpbmcgdGhlIGNoYW5nZXMgd2hl biBzdGFydGluZyB0byBhcHBseSBjaGFuZ2VzLiBUaGUgc3Vic2tpcGxzbiBpcwogICogY2xlYXJl ZCBhZnRlciBzdWNjZXNzZnVsbHkgc2tpcHBpbmcgdGhlIHRyYW5zYWN0aW9uIG9yIGFwcGx5aW5n IG5vbi1lbXB0eQogICogdHJhbnNhY3Rpb24uIFRoZSBsYXR0ZXIgcHJldmVudHMgdGhlIG1pc3Rh a2VubHkgc3BlY2lmaWVkIHN1YnNraXBsc24gZnJvbQotICogYmVpbmcgbGVmdC4KKyAqIGJlaW5n IGxlZnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IGluIGFwcGx5IG1vZGUsCisgKiBiZWNhdXNlIHdlIGNhbm5vdCBnZXQgdGhlIGZpbmlzaCBMU04g YmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLgogICovCiBzdGF0aWMgWExvZ1JlY1B0ciBza2lw X3hhY3RfZmluaXNoX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogI2RlZmluZSBpc19za2lwcGlu Z19jaGFuZ2VzKCkgKHVubGlrZWx5KCFYTG9nUmVjUHRySXNJbnZhbGlkKHNraXBfeGFjdF9maW5p c2hfbHNuKSkpCkBAIC0zMjQsOSArMzM5LDYgQEAgc3RhdGljIHZvaWQgbWF5YmVfcmVyZWFkX3N1 YnNjcmlwdGlvbih2b2lkKTsKIAogc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4 aXQodm9pZCk7CiAKLS8qIHByb3RvdHlwZSBuZWVkZWQgYmVjYXVzZSBvZiBzdHJlYW1fY29tbWl0 ICovCi1zdGF0aWMgdm9pZCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOwotCiBzdGF0aWMg dm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpj b21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFw cGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCQkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGlu Zm8sCkBAIC0zNTksNyArMzcxLDYgQEAgc3RhdGljIHZvaWQgc3RvcF9za2lwcGluZ19jaGFuZ2Vz KHZvaWQpOwogc3RhdGljIHZvaWQgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQ dHIgZmluaXNoX2xzbik7CiAKIC8qIEZ1bmN0aW9ucyBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sg Ki8KLXN0YXRpYyB2b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0aWMg aW5saW5lIHZvaWQgc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChUcmFuc2FjdGlvbklkIHhp ZCwgWExvZ1JlY1B0ciBsc24pOwogc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfaW5mbyh2b2lkKTsKIApAQCAtNDI2LDQxICs0MzcsNzYgQEAgZW5kX3JlcGxpY2F0 aW9uX3N0ZXAodm9pZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMu CisgKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIG1haW4gYXBwbHkgd29y a2VyIGFuZCBhcHBseSBiYWNrZ3JvdW5kCisgKiB3b3JrZXIuCiAgKgotICogSWYgaW4gc3RyZWFt aW5nIG1vZGUgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgd2UK LSAqIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwg dHJhbnNhY3Rpb24uCisgKiBJbiBzdHJlYW1pbmcgY2FzZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Yg c3RyZWFtZWQgdHJhbnNhY3Rpb24pLCBmb3IKKyAqIFNVQlNUUkVBTV9PTiBtb2RlLCB3ZSBzaW1w bHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJvcGVyIHRvcGxldmVsCisgKiB0cmFu c2FjdGlvbiwgYW5kIGZvciBTVUJTVFJFQU1fQVBQTFkgbW9kZSwgd2Ugc2VuZCB0aGUgY2hhbmdl cyB0byBiYWNrZ3JvdW5kCisgKiBhcHBseSB3b3JrZXIgKExPR0lDQUxfUkVQX01TR19SRUxBVElP TiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQRSBjaGFuZ2VzIHdpbGwKKyAqIGFsc28gYmUgYXBwbGll ZCBpbiBtYWluIGFwcGx5IHdvcmtlcikuCiAgKgotICogUmV0dXJucyB0cnVlIGZvciBzdHJlYW1l ZCB0cmFuc2FjdGlvbnMsIGZhbHNlIG90aGVyd2lzZSAocmVndWxhciBtb2RlKS4KKyAqIEZvciBu b24tc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCByZXR1cm5zIGZhbHNlOworICogRm9yIHN0cmVhbWVk IHRyYW5zYWN0aW9ucywgcmV0dXJucyB0cnVlIGlmIGluIG1haW4gYXBwbHkgd29ya2VyIChleGNl cHQgd2UKKyAqIGFwcGx5IHN0cmVhbWVkIHRyYW5zYWN0aW9uIGluICJhcHBseSIgbW9kZSBhbmQg YWRkcmVzcworICogTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9yIExPR0lDQUxfUkVQX01TR19U WVBFIGNoYW5nZXMpLCBmYWxzZSBvdGhlcndpc2UuCiAgKi8KIHN0YXRpYyBib29sCiBoYW5kbGVf c3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZv IHMpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyogbm90IGluIHN0cmVhbWluZyBtb2RlICovCi0J aWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwlpZiAoIShpbl9zdHJlYW1lZF90cmFuc2Fj dGlvbiB8fCBhbV9hcHBseV9iZ3dvcmtlcigpKSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0 KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFt X3hpZCkpOwogCiAJLyoKIAkgKiBXZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBYSUQgb2YgdGhlIHN1 YnhhY3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCiAJICogbWVzc2FnZSwgc28gZXh0cmFjdCBp dC4KIAkgKi8KLQl4aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CisJY3VycmVudF94aWQgPSBwcV9n ZXRtc2dpbnQocywgNCk7CiAKLQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJaWYg KCFUcmFuc2FjdGlvbklkSXNWYWxpZChjdXJyZW50X3hpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50 ZXJuYWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGljYXRpb24gdHJh bnNhY3Rpb24iKSkpOwogCi0JLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVu bGVzcyBhbHJlYWR5IHRoZXJlKS4gKi8KLQlzdWJ4YWN0X2luZm9fYWRkKHhpZCk7CisJaWYgKGFt X2FwcGx5X2Jnd29ya2VyKCkpCisJeworCQkvKiBkZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3Vi eGFjdCBpZiBuZWVkZWQuICovCisJCWFwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoY3Vy cmVudF94aWQpOwogCi0JLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxlICov Ci0Jc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCQlyZXR1cm4gZmFsc2U7CisJfQor CWVsc2UgaWYgKGFwcGx5X2Jnd29ya2VyX2FjdGl2ZSgpKQorCXsKKwkJLyoKKwkJICogSWYgd2Ug ZGVjaWRlZCB0byBhcHBseSB0aGUgY2hhbmdlcyBvZiB0aGlzIHRyYW5zYWN0aW9uIGluIGFuIGFw cGx5CisJCSAqIGJhY2tncm91bmQgd29ya2VyLCBwYXNzIHRoZSBkYXRhIHRvIHRoZSB3b3JrZXIu CisJCSAqLworCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwg cy0+bGVuLCBzLT5kYXRhKTsKKwkJbmNoYW5nZXMgKz0gMTsKKworCQkvKgorCQkgKiBYWFggVGhl IHB1Ymxpc2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUK KwkJICogbWVzc2FnZXMgYWZ0ZXIgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgc28gYWxzbyB1 cGRhdGUgdGhlCisJCSAqIHJlbGF0aW9uL3R5cGUgaW4gbWFpbiBhcHBseSB3b3JrZXIgaGVyZS4g U2VlIGZ1bmN0aW9uCisJCSAqIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUuCisJCSAqLworCQlpZiAo YWN0aW9uID09IExPR0lDQUxfUkVQX01TR19SRUxBVElPTiB8fAorCQkJYWN0aW9uID09IExPR0lD QUxfUkVQX01TR19UWVBFKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKwllbHNlCisJeworCQkvKiBB ZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBhcnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUpLiAq LworCQlzdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlkKTsKKworCQkvKiB3cml0ZSB0aGUgY2hh bmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KKwkJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24s IHMpOworCX0KIAogCXJldHVybiB0cnVlOwogfQpAQCAtODQ0LDYgKzg5MCw5IEBAIGFwcGx5X2hh bmRsZV9jb21taXQoU3RyaW5nSW5mbyBzKQogCiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5h bCgmY29tbWl0X2RhdGEpOwogCisJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3Jv dW5kIHdvcmtlciBpZiBhbnkuICovCisJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CisK IAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBh cmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7 CiAKQEAgLTg5OCw3ICs5NDcsOSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbChMb2dp Y2FsUmVwUHJlcGFyZWRUeG5EYXRhICpwcmVwYXJlX2RhdGEpCiAJICogQmVnaW5UcmFuc2FjdGlv bkJsb2NrIGlzIG5lY2Vzc2FyeSB0byBiYWxhbmNlIHRoZSBFbmRUcmFuc2FjdGlvbkJsb2NrCiAJ ICogY2FsbGVkIHdpdGhpbiB0aGUgUHJlcGFyZVRyYW5zYWN0aW9uQmxvY2sgYmVsb3cuCiAJICov Ci0JQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJaWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkK KwkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsgLyogQ29tcGxldGVzIHRoZSBwcmVjZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8KIAogCS8qCkBA IC05NTAsNiArMTAwMSw5IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAog CWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogQ2hlY2sgdGhlIHN0YXR1cyBv ZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICovCisJYXBwbHlfYmd3b3JrZXJfY2hl Y2tfc3RhdHVzKCk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3lu Y2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFy ZV9kYXRhLmVuZF9sc24pOwogCkBAIC0xMDY0LDEwICsxMTE4LDYgQEAgYXBwbHlfaGFuZGxlX3Jv bGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBTVFJFQU0gUFJF UEFSRS4KLSAqCi0gKiBMb2dpYyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBSZXBsYXkgYWxsIHRo ZSBzcG9vbGVkIG9wZXJhdGlvbnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBh cmVkCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5n SW5mbyBzKQpAQCAtMTA4OCwyNCArMTEzOCw3MCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBh cmUoU3RyaW5nSW5mbyBzKQogCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fcHJlcGFyZShzLCAmcHJl cGFyZV9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHByZXBhcmVfZGF0YS54 aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVk IHByZXBhcmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgcHJlcGFyZV9kYXRhLnhpZCk7 CisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJeworCQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlv biBhcyBwcmVwYXJlZC4gKi8KKwkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBh cmVfZGF0YSk7CiAKLQkvKiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlvbnMuICovCi0J YXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJl cGFyZV9sc24pOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIE1hcmsgdGhl IHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwotCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVy bmFsKCZwcmVwYXJlX2RhdGEpOworCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0JQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1 YnhhY3RsaXN0ID0gTklMOwogCi0JcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJYXBwbHlf Ymd3b3JrZXJfc2V0X3N0YXR1cyhBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisJfQorCWVsc2UK Kwl7CisJCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJfZmluZF9v cl9zdGFydChwcmVwYXJlX2RhdGEueGlkLCBmYWxzZSk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlv bihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgcHJlcGFy ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLAorCQkJIHByZXBhcmVfZGF0YS54aWQpOwor CisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkgd29ya2VyLiBDaGVjayBpZiB3ZSBh cmUgcHJvY2Vzc2luZyB0aGlzCisJCSAqIHRyYW5zYWN0aW9uIGluIGEgYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIuCisJCSAqLworCQlpZiAod3N0YXRlKQorCQl7CisJCQlhcHBseV9iZ3dvcmtlcl9z ZW5kX2RhdGEod3N0YXRlLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQlhcHBseV9iZ3dvcmtlcl93 YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwkJCWFwcGx5X2Jnd29y a2VyX2ZyZWUod3N0YXRlKTsKKworCQkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJCXN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCS8qCisJCQkgKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRy YW5zYWN0aW9uIGhhcyBiZWVuCisJCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUsIHJlcGxheSBhbGwg dGhlIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdl cyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOworCisJCQkvKiBN YXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFwcGx5X2hhbmRsZV9wcmVw YXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKKworCQkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKworCQkJc3RvcmVfZmx1c2hf cG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rp b24gPSBmYWxzZTsKKworCQkJLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hh bmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLworCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJCX0KKwl9CiAKIAlpbl9y ZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwlzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsK IAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1Ynhh Y3QgaW5mby4gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJh Y2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMo KTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQg aW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5k X2xzbik7CkBAIC0xMTU1LDE1ICsxMjUxLDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChT dHJpbmdJbmZvIHMpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAog CQkJCSBlcnJtc2dfaW50ZXJuYWwoImR1cGxpY2F0ZSBTVFJFQU0gU1RBUlQgbWVzc2FnZSIpKSk7 CiAKLQkvKgotCSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0YXJ0LCB0aGlzIHRy YW5zYWN0aW9uIHdpbGwgYmUgY29tbWl0dGVkCi0JICogb24gdGhlIHN0cmVhbSBzdG9wIHVubGVz cyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4gd2hpY2ggY2FzZSBpdAotCSAqIHdpbGwgYmUg Y29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4gV2UgbmVlZCB0aGUK LQkgKiB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsIHVzZWQgZm9yIHNlcmlh bGl6aW5nIHRoZQotCSAqIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4YWN0IGluZm8uCi0JICovCi0J YmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwotCiAJLyogbm90aWZ5IGhhbmRsZSBtZXRob2RzIHdl J3JlIHByb2Nlc3NpbmcgYSByZW1vdGUgdHJhbnNhY3Rpb24gKi8KIAlpbl9zdHJlYW1lZF90cmFu c2FjdGlvbiA9IHRydWU7CiAKQEAgLTExNzcsMzYgKzEyNjQsOTIgQEAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0 KHN0cmVhbV94aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIAorCWlmIChhbV9hcHBseV9iZ3dvcmtl cigpKQorCXsKKwkJLyoKKwkJICogTWFrZSBzdXJlIHRoZSBoYW5kbGUgYXBwbHlfZGlzcGF0Y2gg bWV0aG9kcyBhcmUgYXdhcmUgd2UncmUgaW4gYQorCQkgKiByZW1vdGUgdHJhbnNhY3Rpb24uCisJ CSAqLworCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSB0cnVlOworCisJCS8qIElmIHdlIGFyZSBp biBhIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCBiZWdpbiB0aGUgdHJhbnNhY3Rpb24gKi8KKwkJ QWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwkJbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlv bigpOworCisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCUJlZ2luVHJhbnNhY3Rpb25C bG9jaygpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlyZXR1cm47CisJfQor CiAJLyoKLQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBo YXZlbid0IHlldC4gVGhpcyB3aWxsIGJlCi0JICogdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlv biBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAotCSAqIGNvbnRleHQu IFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20g YW55Ci0JICogdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBz dHJlYW1pbmcgdHJhbnNhY3Rpb25zLgotCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNl dCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAotCSAqIHRoZW4gd2Ugd29u J3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgorCSAqIFRoaXMgaXMgdGhlIG1h aW4gYXBwbHkgd29ya2VyLiBDaGVjayBpZiB0aGVyZSBpcyBhbnkgZnJlZSBhcHBseQorCSAqIGJh Y2tncm91bmQgd29ya2VyIHdlIGNhbiB1c2UgdG8gcHJvY2VzcyB0aGlzIHRyYW5zYWN0aW9uLgog CSAqLwotCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID09IE5VTEwpCisJ c3RyZWFtX2FwcGx5X3dvcmtlciA9IGFwcGx5X2Jnd29ya2VyX2ZpbmRfb3Jfc3RhcnQoc3RyZWFt X3hpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwlpZiAoc3RyZWFtX2FwcGx5X3dvcmtlcikKIAl7Ci0J CU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQkvKgorCQkgKiBJZiB3ZSBoYXZlIGZvdW5kIGEgZnJl ZSB3b3JrZXIgb3IgaWYgd2UgYXJlIGFscmVhZHkgYXBwbHlpbmcgdGhpcworCQkgKiB0cmFuc2Fj dGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgdGhlbiB3ZSBwYXNzIHRoZSBkYXRh IHRvCisJCSAqIHRoYXQgd29ya2VyLgorCQkgKi8KKwkJaWYgKGZpcnN0X3NlZ21lbnQpCisJCQlh cHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwgcy0+bGVuLCBzLT5k YXRhKTsKIAotCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsK KwkJbmNoYW5nZXMgPSAwOworCQllbG9nKERFQlVHMSwgInN0YXJ0aW5nIHN0cmVhbWluZyBvZiB4 aWQgJXUiLCBzdHJlYW1feGlkKTsKKwl9CiAKLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1f ZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwotCQlGaWxlU2V0SW5pdChNeUxvZ2lj YWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwkvKgorCSAqIElmIG5vIHdvcmtlciBpcyBh dmFpbGFibGUgZm9yIHRoZSBmaXJzdCBzdHJlYW0gc3RhcnQsIHdlIHN0YXJ0IHRvCisJICogc2Vy aWFsaXplIGFsbCB0aGUgY2hhbmdlcyBvZiB0aGUgdHJhbnNhY3Rpb24uCisJICovCisJZWxzZQor CXsKKwkJLyoKKwkJICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMg dHJhbnNhY3Rpb24gd2lsbCBiZQorCQkgKiBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVu bGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4KKwkJICogd2hpY2ggY2FzZSBpdCB3aWxs IGJlIGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbWVzc2FnZXMuCisJCSAqIFdl IG5lZWQgdGhlIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3IK KwkJICogc2VyaWFsaXppbmcgdGhlIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4YWN0IGluZm8uCisJ CSAqLworCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN0eCk7Ci0JfQorCQkvKgorCQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJl YW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsCisJCSAqIGJlIHVzZWQgZm9y IHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYQorCQkg KiBwZXJtYW5lbnQgY29udGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3Ry ZWFtaW5nCisJCSAqIG1lc3NhZ2UgZnJvbSBhbnkgdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0 IGZvciB0aGlzIGFuZCBvdGhlcgorCQkgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiBOb3csIHdl IGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQgYXQgdGhlIHN0YXJ0CisJCSAqIG9mIHRoZSB3b3JrZXIg YXMgd2VsbCBidXQgdGhlbiB3ZSB3b24ndCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyCisJCSAq IGJlIHVzZWQuCisJCSAqLworCQlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNl dCA9PSBOVUxMKQorCQl7CisJCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKIAotCS8qIG9wZW4gdGhl IHNwb29sIGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gKi8KLQlzdHJlYW1fb3Blbl9maWxlKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCQkJ b2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKLQkvKiBpZiB0 aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUg Ki8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJl YW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQkJRmlsZVNldEluaXQoTXlM b2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CiAKLQlwZ3N0YXRfcmVwb3J0X2FjdGl2 aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0 eCk7CisJCX0KIAotCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCS8qIG9wZW4gdGhlIHNwb29s IGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gKi8KKwkJc3RyZWFtX29wZW5fZmlsZShNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKworCQkvKiBp ZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZp bGUgKi8KKwkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisKKwkJZW5kX3JlcGxpY2F0aW9uX3N0 ZXAoKTsKKwl9CisKKwlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwp OwogfQogCiAvKgpAQCAtMTIyMCw0NCArMTM2Myw0NyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0 b3AoU3RyaW5nSW5mbyBzKQogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9O KSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQgU1RS RUFNIFNUQVJUIikpKTsKIAotCS8qCi0JICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVk IGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKLQkgKiBzdWJ4YWN0cyBm b3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgotCSAqLwotCXN1YnhhY3RfaW5mb193cml0ZShN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKLQlzdHJlYW1fY2xvc2VfZmls ZSgpOworCWlmIChhcHBseV9iZ3dvcmtlcl9hY3RpdmUoKSkKKwl7CisJCWNoYXIJCWFjdGlvbiA9 IExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RPUDsKIAotCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxp ZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwotCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJ CWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShzdHJlYW1fYXBwbHlfd29ya2VyLCAxLCAmYWN0aW9u KTsKKwkJYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3Ioc3RyZWFtX2FwcGx5X3dvcmtlciwgQVBQTFlf QkdXT1JLRVJfUkVBRFkpOwogCi0JLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9u ICovCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCWVsb2coREVCVUcxLCAic3RvcHBl ZCBzdHJlYW1pbmcgb2YgeGlkICV1LCAldSBjaGFuZ2VzIHN0cmVhbWVkIiwgc3RyZWFtX3hpZCwg bmNoYW5nZXMpOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRo IHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZSBpbmZvcm1hdGlvbgorCQkgKiBhYm91 dCBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorCQkgKi8KKwkJc3VieGFj dF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQlz dHJlYW1fY2xvc2VfZmlsZSgpOwogCi0JaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsK KwkJLyogV2UgbXVzdCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0YXRlICovCisJCUFzc2Vy dChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisKKwkJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRy YW5zYWN0aW9uICovCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCS8qIFJlc2V0 IHBlci1zdHJlYW0gY29udGV4dCAqLworCQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVh bWluZ0NvbnRleHQpOworCX0KIAotCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLwotCU1l bW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCk7CisJaW5fc3RyZWFtZWRf dHJhbnNhY3Rpb24gPSBmYWxzZTsKKwlzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKIAogCXBn c3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJcmVzZXRfYXBwbHlfZXJy b3JfY29udGV4dF9pbmZvKCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFNIGFib3J0IG1lc3Nh Z2UuCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24g d2FzIHNwaWxsZWQgdG8gZGlzay4KICAqLwogc3RhdGljIHZvaWQKLWFwcGx5X2hhbmRsZV9zdHJl YW1fYWJvcnQoU3RyaW5nSW5mbyBzKQorc2VyaWFsaXplX3N0cmVhbV9hYm9ydChUcmFuc2FjdGlv bklkIHhpZCwgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7Ci0J VHJhbnNhY3Rpb25JZCBzdWJ4aWQ7Ci0KLQlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCi0J CWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04p LAotCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RS RUFNIFNUT1AiKSkpOwotCi0JbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmeGlkLCAm c3VieGlkKTsKLQogCS8qCiAJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBp biBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsIHNvCiAJICoganVzdCBkZWxldGUgdGhlIGZp bGVzIHdpdGggc2VyaWFsaXplZCBpbmZvLgpAQCAtMTMzOSw4ICsxNDg1LDEzNyBAQCBhcHBseV9o YW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAo KTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJfQorfQogCi0JcmVzZXRfYXBwbHlf ZXJyb3JfY29udGV4dF9pbmZvKCk7CisvKgorICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdl LgorICovCitzdGF0aWMgdm9pZAorYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZv IHMpCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJTG9n aWNhbFJlcFN0cmVhbUFib3J0RGF0YSBhYm9ydF9kYXRhOworCWJvb2wgaW5jbHVkZV9hYm9ydF9s c24gPSBmYWxzZTsKKworCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCisJCQkJIGVy cm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIp KSk7CisKKwkvKiBDaGVjayB3aGV0aGVyIHRoZSBwdWJsaXNoZXIgc2VuZHMgYWJvcnRfbHNuIGFu ZCBhYm9ydF90aW1lLiAqLworCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCQlpbmNsdWRlX2Fi b3J0X2xzbiA9IE15UGFyYWxsZWxTdGF0ZS0+c2VydmVyX3ZlcnNpb24gPj0gMTUwMDAwOworCisJ bG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmYWJvcnRfZGF0YSwgaW5jbHVkZV9hYm9y dF9sc24pOworCisJeGlkID0gYWJvcnRfZGF0YS54aWQ7CisJc3VieGlkID0gYWJvcnRfZGF0YS5z dWJ4aWQ7CisKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJCWVsb2coREVCVUcxLCAi W0FwcGx5IEJHVyAjJXVdIGFib3J0aW5nIGN1cnJlbnQgdHJhbnNhY3Rpb24geGlkPSV1LCBzdWJ4 aWQ9JXUiLAorCQkJIE15UGFyYWxsZWxTdGF0ZS0+biwgR2V0Q3VycmVudFRyYW5zYWN0aW9uSWRJ ZkFueSgpLAorCQkJIEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklkKCkpOworCisJCS8qCisJCSAq IFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29y cmVjdAorCQkgKiBwb3NpdGlvbiBpbiBjYXNlIG9mIGNyYXNoLgorCQkgKi8KKwkJaWYgKGluY2x1 ZGVfYWJvcnRfbHNuKQorCQl7CisJCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IGFi b3J0X2RhdGEuYWJvcnRfbHNuOworCQkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3Rh bXAgPSBhYm9ydF9kYXRhLmFib3J0X3RpbWU7CisJCX0KKworCQkvKgorCQkgKiBJZiB0aGUgdHdv IFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwK KwkJICogc28ganVzdCBmcmVlIHRoZSBzdWJ4YWN0bGlzdC4KKwkJICovCisJCWlmIChzdWJ4aWQg PT0geGlkKQorCQl7CisJCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1YnhpZCwgSW52 YWxpZFhMb2dSZWNQdHIpOworCisJCQlBYm9ydEN1cnJlbnRUcmFuc2FjdGlvbigpOworCisJCQlF bmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQkJbGlzdF9mcmVlKHN1 YnhhY3RsaXN0KTsKKwkJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCQlhcHBseV9iZ3dvcmtlcl9z ZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwkJfQorCQllbHNlCisJCXsKKwkJ CS8qCisJCQkgKiBPSywgc28gaXQncyBhIHN1YnhhY3QuIFJvbGxiYWNrIHRvIHRoZSBzYXZlcG9p bnQuCisJCQkgKgorCQkJICogV2UgYWxzbyBuZWVkIHRvIHJlYWQgdGhlIHN1YnhhY3RsaXN0LCBk ZXRlcm1pbmUgdGhlIG9mZnNldAorCQkJICogdHJhY2tlZCBmb3IgdGhlIHN1YnhhY3QsIGFuZCB0 cnVuY2F0ZSB0aGUgbGlzdC4KKwkJCSAqLworCQkJaW50CQkJaTsKKwkJCWJvb2wJCWZvdW5kID0g ZmFsc2U7CisJCQljaGFyCQlzcG5hbWVbTUFYUEdQQVRIXTsKKworCQkJc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfeGFjdChzdWJ4aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKKwkJCXNucHJpbnRmKHNw bmFtZSwgTUFYUEdQQVRILCAic2F2ZXBvaW50X2Zvcl94aWRfJXUiLCBzdWJ4aWQpOworCisJCQll bG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSByb2xsaW5nIGJhY2sgdG8gc2F2ZXBvaW50ICVz IiwKKwkJCQkgTXlQYXJhbGxlbFN0YXRlLT5uLCBzcG5hbWUpOworCisJCQlmb3IgKGkgPSBsaXN0 X2xlbmd0aChzdWJ4YWN0bGlzdCkgLSAxOyBpID49IDA7IGktLSkKKwkJCXsKKwkJCQl4aWQgPSAo VHJhbnNhY3Rpb25JZCkgbGlzdF9udGhfaW50KHN1YnhhY3RsaXN0LCBpKTsKKwkJCQlpZiAoeGlk ID09IHN1YnhpZCkKKwkJCQl7CisJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJ fQorCQkJfQorCisJCQlpZiAoZm91bmQpCisJCQl7CisJCQkJUm9sbGJhY2tUb1NhdmVwb2ludChz cG5hbWUpOworCQkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCXN1YnhhY3RsaXN0 ID0gbGlzdF90cnVuY2F0ZShzdWJ4YWN0bGlzdCwgaSArIDEpOworCQkJfQorCisJCQlhcHBseV9i Z3dvcmtlcl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX1JFQURZKTsKKwkJfQorCisJCXJlc2V0 X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOworCX0KKwllbHNlCisJeworCQlBcHBseUJnd29y a2VyU3RhdGUgKndzdGF0ZSA9IGFwcGx5X2Jnd29ya2VyX2ZpbmRfb3Jfc3RhcnQoeGlkLCBmYWxz ZSk7CisKKwkJLyoKKwkJICogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIuIENoZWNrIGlm IHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMKKwkJICogdHJhbnNhY3Rpb24gaW4gYSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlci4KKwkJICovCisJCWlmICh3c3RhdGUpCisJCXsKKwkJCWFwcGx5X2Jnd29y a2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCWlmIChzdWJ4aWQg PT0geGlkKQorCQkJeworCQkJCWFwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKHdzdGF0ZSwgQVBQTFlf QkdXT1JLRVJfRklOSVNIRUQpOworCQkJCWFwcGx5X2Jnd29ya2VyX2ZyZWUod3N0YXRlKTsKKwkJ CX0KKwkJCWVsc2UKKwkJCQlhcHBseV9iZ3dvcmtlcl93YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JH V09SS0VSX1JFQURZKTsKKwkJfQorCisJCS8qCisJCSAqIFdlIGFyZSBpbiBtYWluIGFwcGx5IHdv cmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQKKwkJICogdG8gZmls ZS4KKwkJICovCisJCWVsc2UKKwkJCXNlcmlhbGl6ZV9zdHJlYW1fYWJvcnQoeGlkLCBzdWJ4aWQp OworCX0KIH0KIAogLyoKQEAgLTE0NjIsNDAgKzE3MzcsNiBAQCBhcHBseV9zcG9vbGVkX21lc3Nh Z2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlyZXR1cm47CiB9CiAKLS8q Ci0gKiBIYW5kbGUgU1RSRUFNIENPTU1JVCBtZXNzYWdlLgotICovCi1zdGF0aWMgdm9pZAotYXBw bHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQotewotCVRyYW5zYWN0aW9uSWQg eGlkOwotCUxvZ2ljYWxSZXBDb21taXREYXRhIGNvbW1pdF9kYXRhOwotCi0JaWYgKGluX3N0cmVh bWVkX3RyYW5zYWN0aW9uKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVf UFJPVE9DT0xfVklPTEFUSU9OKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQ09NTUlU IG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7Ci0KLQl4aWQgPSBsb2dpY2FscmVwX3Jl YWRfc3RyZWFtX2NvbW1pdChzLCAmY29tbWl0X2RhdGEpOwotCXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X3hhY3QoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKLQotCWVsb2coREVCVUcxLCAi cmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7Ci0KLQlh cHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7Ci0KLQlh cHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7Ci0KLQkvKiB1bmxpbmsg dGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8gKi8KLQlz dHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwotCi0J LyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJh bGxlbC4gKi8KLQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwot Ci0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKLQotCXJlc2V0X2Fw cGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwotfQotCiAvKgogICogSGVscGVyIGZ1bmN0aW9uIGZv ciBhcHBseV9oYW5kbGVfY29tbWl0IGFuZCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdC4KICAq LwpAQCAtMjQ0NSwxMSArMjY4NiwxMDUgQEAgYXBwbHlfaGFuZGxlX3RydW5jYXRlKFN0cmluZ0lu Zm8gcykKIAllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogfQogCisvKgorICogSGFuZGxlIFNUUkVB TSBDT01NSVQgbWVzc2FnZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2hhbmRsZV9zdHJlYW1f Y29tbWl0KFN0cmluZ0luZm8gcykKK3sKKwlMb2dpY2FsUmVwQ29tbWl0RGF0YSBjb21taXRfZGF0 YTsKKwlUcmFuc2FjdGlvbklkIHhpZDsKKworCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElP TiksCisJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIENPTU1JVCBtZXNzYWdlIHdpdGhvdXQg U1RSRUFNIFNUT1AiKSkpOworCisJeGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQo cywgJmNvbW1pdF9kYXRhKTsKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgY29t bWl0X2RhdGEuY29tbWl0X2xzbik7CisKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJ CS8qCisJCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5n IGZyb20gY29ycmVjdAorCQkgKiBwb3NpdGlvbiBpbiBjYXNlIG9mIGNyYXNoLgorCQkgKi8KKwkJ cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBjb21taXRfZGF0YS5lbmRfbHNuOworCQly ZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGNvbW1pdF9kYXRhLmNvbW1pdHRp bWU7CisKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCUVuZFRyYW5zYWN0aW9uQmxv Y2soZmFsc2UpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlpbl9yZW1vdGVf dHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCisJ CWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCWFwcGx5 X2Jnd29ya2VyX3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCX0KKwllbHNl CisJeworCQkvKgorCQkgKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlci4gQ2hlY2sgaWYg d2UgYXJlIHByb2Nlc3NpbmcgdGhpcworCQkgKiB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlci4KKwkJICovCisJCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlID0gYXBw bHlfYmd3b3JrZXJfZmluZF9vcl9zdGFydCh4aWQsIGZhbHNlKTsKKworCQllbG9nKERFQlVHMSwg InJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCB4aWQpOworCisJ CWlmICh3c3RhdGUpCisJCXsKKwkJCS8qIFNlbmQgY29tbWl0IG1lc3NhZ2UgKi8KKwkJCWFwcGx5 X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8qIFdh aXQgZm9yIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHRvIGZpbmlzaCAqLworCQkJYXBwbHlfYmd3 b3JrZXJfd2FpdF9mb3Iod3N0YXRlLCBBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisKKwkJCXBn c3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRf ZGF0YS5lbmRfbHNuKTsKKwkJCXN0b3Bfc2tpcHBpbmdfY2hhbmdlcygpOworCisJCQlhcHBseV9i Z3dvcmtlcl9mcmVlKHdzdGF0ZSk7CisKKwkJCS8qCisJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaXMg ZWl0aGVyIG5vbi1lbXB0eSBvciBza2lwcGVkLCBzbyB3ZSBjbGVhciB0aGUKKwkJCSAqIHN1YnNr aXBsc24uCisJCQkgKi8KKwkJCWNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihjb21taXRfZGF0 YS5jb21taXRfbHNuKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBUaGlzIGlzIHRo ZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuCisJCQkgKiBz ZXJpYWxpemVkIHRvIGZpbGUsIHJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJ CSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9s c24pOworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisK KwkJCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1Ynhh Y3QgaW5mbyAqLworCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwgeGlkKTsKKwkJfQorCX0KKworCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLworCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygp OworCisJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBp biBwYXJhbGxlbC4gKi8KKwlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9s c24pOworCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKworCXJl c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOworfQogCiAvKgogICogTG9naWNhbCByZXBs aWNhdGlvbiBwcm90b2NvbCBtZXNzYWdlIGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2 b2lkCiBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUg YWN0aW9uID0gcHFfZ2V0bXNnYnl0ZShzKTsKQEAgLTI2MTgsNiArMjk1MywxMCBAQCBzdG9yZV9m bHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiB7CiAJRmx1c2hQb3NpdGlvbiAq Zmx1c2hwb3M7CiAKKwkvKiBXZSBvbmx5IG5lZWQgdG8gY29sbGVjdCB0aGUgTFNOIGluIG1haW4g YXBwbHkgd29ya2VyICovCisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCXJldHVybjsKKwog CS8qIE5lZWQgdG8gZG8gdGhpcyBpbiBwZXJtYW5lbnQgY29udGV4dCAqLwogCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCkBAIC0yNjMyLDcgKzI5NzEsNyBAQCBzdG9yZV9m bHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiAKIAogLyogVXBkYXRlIHN0YXRp c3RpY3Mgb2YgdGhlIHdvcmtlci4gKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBVcGRhdGVXb3JrZXJT dGF0cyhYTG9nUmVjUHRyIGxhc3RfbHNuLCBUaW1lc3RhbXBUeiBzZW5kX3RpbWUsIGJvb2wgcmVw bHkpCiB7CiAJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X2xzbiA9IGxhc3RfbHNuOwpAQCAtMjc5 NCw2ICszMTMzLDkgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2 ZWQpCiAJCQlBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOwogCQkJbWF5YmVfcmVyZWFkX3N1 YnNjcmlwdGlvbigpOwogCisJCQkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tncm91 bmQgd29ya2VyIGlmIGFueS4gKi8KKwkJCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOwor CiAJCQkvKiBQcm9jZXNzIGFueSB0YWJsZSBzeW5jaHJvbml6YXRpb24gY2hhbmdlcy4gKi8KIAkJ CXByb2Nlc3Nfc3luY2luZ190YWJsZXMobGFzdF9yZWNlaXZlZCk7CiAJCX0KQEAgLTMwOTUsNyAr MzQzNyw3IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIC8qCiAgKiBDYWxsYmFj ayBmcm9tIHN1YnNjcmlwdGlvbiBzeXNjYWNoZSBpbnZhbGlkYXRpb24uCiAgKi8KLXN0YXRpYyB2 b2lkCit2b2lkCiBzdWJzY3JpcHRpb25fY2hhbmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQs IHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOwpAQCAt MzY5MSw3ICs0MDMzLDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlvcmln aW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0cnVlKTsKIAkJaWYgKCFPaWRJ c1ZhbGlkKG9yaWdpbmlkKSkKIAkJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lu bmFtZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmln aW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgdHJ1ZSk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9v cmlnaW4gPSBvcmlnaW5pZDsKIAkJb3JpZ2luX3N0YXJ0cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9u X2dldF9wcm9ncmVzcyhmYWxzZSk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAt MzczOCw3ICs0MDgwLDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJb3B0 aW9ucy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3JpcHRpb24tPnB1 YmxpY2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRp b24tPmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gTXlTdWJzY3Jp cHRpb24tPnN0cmVhbTsKKwlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gKE15U3Vi c2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX09GRik7CiAJb3B0aW9ucy5wcm90by5sb2dp Y2FsLnR3b3BoYXNlID0gZmFsc2U7CiAKIAlpZiAoIWFtX3RhYmxlc3luY193b3JrZXIoKSkKQEAg LTM4OTYsNyArNDIzOCw4IEBAIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRy IGZpbmlzaF9sc24pCiAJWExvZ1JlY1B0cglteXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tp cGxzbjsKIAlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQ dHJJc0ludmFsaWQobXlza2lwbHNuKSkpCisJaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlk KG15c2tpcGxzbikpIHx8CisJCWFtX2FwcGx5X2Jnd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlm ICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCkBAIC0zOTY4LDcgKzQzMTEsNyBAQCBjbGVhcl9zdWJz Y3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBj YWxsYmFjayB0byBnaXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcg YXBwbGllZCAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQg KmFyZykKIHsKIAlBcHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9j YWxsYmFja19hcmc7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YwppbmRleCA4ZGVhZTU3MTQzLi42ZWJmYTI0YmFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE4MzMsNyArMTgzMyw3IEBAIHBnb3V0cHV0X3N0 cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCUFzc2VydChy YnR4bl9pc19zdHJlYW1lZCh0b3B0eG4pKTsKIAogCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShj dHgsIHRydWUpOwotCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0 eG4tPnhpZCwgdHhuLT54aWQpOworCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+ b3V0LCB0b3B0eG4tPnhpZCwgdHhuLCBhYm9ydF9sc24pOwogCU91dHB1dFBsdWdpbldyaXRlKGN0 eCwgdHJ1ZSk7CiAKIAljbGVhbnVwX3JlbF9zeW5jX2NhY2hlKHRvcHR4bi0+eGlkLCBmYWxzZSk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgYi9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXggODdjMTViOWM2Zi4u YmE3ODFlNmYwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9l dmVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAt Mzg4LDYgKzM4OCw5IEBAIHBnc3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50SVBDIHcpCiAJCWNh c2UgV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VSVDoKIAkJCWV2ZW50X25hbWUg PSAiSGFzaEdyb3dCdWNrZXRzUmVpbnNlcnQiOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVO VF9MT0dJQ0FMX0FQUExZX1dPUktFUl9TVEFURV9DSEFOR0U6CisJCQlldmVudF9uYW1lID0gIkxv Z2ljYWxBcHBseVdvcmtlclN0YXRlQ2hhbmdlIjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZF TlRfTE9HSUNBTF9TWU5DX0RBVEE6CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxTeW5jRGF0YSI7 CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IGE3Y2M0OTg5OGIuLjUxOWVmZmYxZDIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMzIyMCw2ICszMjIwLDE4IEBAIHN0YXRpYyBzdHJ1Y3Qg Y29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0s CiAKKwl7CisJCXsibWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIiwKKwkJCVBH Q19TSUdIVVAsCisJCQlSRVBMSUNBVElPTl9TVUJTQ1JJQkVSUywKKwkJCWdldHRleHRfbm9vcCgi TWF4aW11bSBudW1iZXIgb2YgYXBwbHkgYmFja2dyYW5kIHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlv bi4iKSwKKwkJCU5VTEwsCisJCX0sCisJCSZtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3Jp cHRpb24sCisJCTMsIDAsIE1BWF9CQUNLRU5EUywKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisK IAl7CiAJCXsibG9nX3JvdGF0aW9uX2FnZSIsIFBHQ19TSUdIVVAsIExPR0dJTkdfV0hFUkUsCiAJ CQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgYmVmb3JlIGZv cmNpbmcgIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxl CmluZGV4IDQ4YWQ4MGNmMmUuLmI3MTM0MDU0OWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM2MCw2ICszNjAsNyBAQAogI21heF9sb2dp Y2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0CSMgdGFrZW4gZnJvbSBtYXhfd29ya2VyX3Byb2Nl c3NlcwogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtYXhfc3luY193b3JrZXJz X3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlv bl93b3JrZXJzCisjbWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMwkjIHRh a2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycwogCiAKICMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDdjYzljNzJlNDkuLjZmOGIzMGFiYjAgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYwpAQCAtNDQ1MCw3ICs0NDUwLDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpm b3V0KQogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE0MDAwMCkKIAkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIgcy5zdWJzdHJlYW0sXG4iKTsKIAllbHNlCi0JCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiIGZhbHNlIEFTIHN1YnN0cmVhbSxcbiIpOworCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiAnZicgQVMgc3Vic3RyZWFtLFxuIik7CiAKIAlpZiAoZm91dC0+ cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LApA QCAtNDU4MCw4ICs0NTgwLDEwIEBAIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwgY29u c3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1YmJp bmFyeSwgInQiKSA9PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgYmluYXJ5 ID0gdHJ1ZSIpOwogCi0JaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJmIikgIT0gMCkK KwlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInQiKSA9PSAwKQogCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gb24iKTsKKwllbHNlIGlmIChzdHJjbXAo c3ViaW5mby0+c3Vic3RyZWFtLCAiYSIpID09IDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LCAiLCBzdHJlYW1pbmcgPSBhcHBseSIpOwogCiAJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJ0 d29waGFzZXN0YXRlLCB0d29fcGhhc2VfZGlzYWJsZWQpICE9IDApCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiLCB0d29fcGhhc2UgPSBvbiIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmgKaW5kZXggZDEyNjBmNTkwYy4uOWIzOTRhNDVmZSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC02OCw3ICs2OCw4IEBAIENBVEFMT0cocGdfc3Vic2Ny aXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBC S0lfUk9XCiAJYm9vbAkJc3ViYmluYXJ5OwkJLyogVHJ1ZSBpZiB0aGUgc3Vic2NyaXB0aW9uIHdh bnRzIHRoZQogCQkJCQkJCQkgKiBwdWJsaXNoZXIgdG8gc2VuZCBkYXRhIGluIGJpbmFyeSAqLwog Ci0JYm9vbAkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4g Ki8KKwljaGFyCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25z LgorCQkJCQkJCQkgKiBTZWUgU1VCU1RSRUFNX3h4eCBjb25zdGFudHMuICovCiAKIAljaGFyCQlz dWJ0d29waGFzZXN0YXRlOwkvKiBTdHJlYW0gdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAqLwogCkBA IC0xMDksNyArMTEwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZW5h YmxlZDsJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIGlzIGVuYWJsZWQgKi8KIAli b29sCQliaW5hcnk7CQkJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMgZGF0 YSBpbgogCQkJCQkJCQkgKiBiaW5hcnkgZm9ybWF0ICovCi0JYm9vbAkJc3RyZWFtOwkJCS8qIEFs bG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJY2hhcgkJc3RyZWFt OwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCiAJY2hh cgkJdHdvcGhhc2VzdGF0ZTsJLyogQWxsb3cgc3RyZWFtaW5nIHR3by1waGFzZSB0cmFuc2FjdGlv bnMgKi8KIAlib29sCQlkaXNhYmxlb25lcnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0 aW9uIHNob3VsZCBiZQogCQkJCQkJCQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29y a2VyIGVycm9yCkBAIC0xMjAsNiArMTIxLDE4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlv bgogCUxpc3QJICAgKnB1YmxpY2F0aW9uczsJLyogTGlzdCBvZiBwdWJsaWNhdGlvbiBuYW1lcyB0 byBzdWJzY3JpYmUgdG8gKi8KIH0gU3Vic2NyaXB0aW9uOwogCisvKiBEaXNhbGxvdyBzdHJlYW1p bmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zICovCisjZGVmaW5lIFNVQlNUUkVBTV9PRkYJJ2Yn CisKKy8qCisgKiBTdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGFyZSB3cml0dGVuIHRvIGEgdGVtcG9y YXJ5IGZpbGUgYW5kIGFwcGxpZWQgb25seQorICogYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBTVUJTVFJFQU1fT04JJ3QnCisKKy8q IFN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYXJlIGFwcGxpZWQgaW1tZWRpYXRlbHkgdmlhIGEgYmFj a2dyb3VuZCB3b3JrZXIgKi8KKyNkZWZpbmUgU1VCU1RSRUFNX0FQUExZCSdhJworCiBleHRlcm4g U3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2sp OwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRpb24gKnN1Yik7CiBleHRl cm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4IGYxZTI4MjFlMjUuLmFjOGVmOTQzODEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCkBAIC0xNCw2ICsxNCw3 IEBACiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29y a2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2Ny aXB0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9z dWJzY3JpcHRpb247CiAKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2b2lkKTsK IGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggYTc3MWFiOGZmMy4uN2JiYTc3YzllNyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTE3NSw2ICsxNzUsMTcg QEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCiAJY2hh cgkJZ2lkW0dJRFNJWkVdOwogfSBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGE7CiAK Ky8qCisgKiBUcmFuc2FjdGlvbiBwcm90b2NvbCBpbmZvcm1hdGlvbiBmb3Igc3RyZWFtIGFib3J0 LgorICovCit0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCit7CisJVHJh bnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJWExvZ1JlY1B0cglhYm9y dF9sc247CisJVGltZXN0YW1wVHogYWJvcnRfdGltZTsKK30gTG9naWNhbFJlcFN0cmVhbUFib3J0 RGF0YTsKKwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9iZWdpbihTdHJpbmdJbmZvIG91 dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9i ZWdpbihTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkgIExvZ2ljYWxSZXBCZWdpbkRhdGEgKmJlZ2lu X2RhdGEpOwpAQCAtMjQ2LDkgKzI1NywxMSBAQCBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRl X3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bgogZXh0 ZXJuIFRyYW5zYWN0aW9uSWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQoU3RyaW5nSW5m byBvdXQsCiAJCQkJCQkJCQkJCQkgICBMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEp OwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBv dXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQp OwotZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGlu LCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnN1YnhpZCk7 CisJCQkJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJICBYTG9nUmVj UHRyIGFib3J0X2xzbik7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0 KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFi b3J0X2RhdGEsCisJCQkJCQkJCQkJIGJvb2wgaW5jbHVkZV9hYm9ydF9sc24pOwogZXh0ZXJuIGNo YXIgKmxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbik7CiAK ICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FMX1BST1RPX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaAppbmRleCBjZDFiNmU4YWZjLi42YTFhZjdmMTNjIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCkBAIC0xMyw2ICsxMyw3IEBACiAjZGVmaW5l IExPR0lDQUxXT1JLRVJfSAogCiBleHRlcm4gdm9pZCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFp bl9hcmcpOworZXh0ZXJuIHZvaWQgQXBwbHlCZ3dvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOwog CiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3JrZXIodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3Jp Z2luLmgKaW5kZXggMmQxYjVlNWMyOC4uYzczODliNDBhNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3Jp Z2luLmgKQEAgLTUzLDcgKzUzLDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9nZXRf cHJvZ3Jlc3MoUmVwT3JpZ2luSWQgbm9kZSwgYm9vbCBmbHVzaCk7CiAKIGV4dGVybiB2b2lkIHJl cGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKFhMb2dSZWNQdHIgcmVtb3RlX2NvbW1pdCwKIAkJCQkJ CQkJCSAgIFhMb2dSZWNQdHIgbG9jYWxfY29tbWl0KTsKLWV4dGVybiB2b2lkIHJlcGxvcmlnaW5f c2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKTsKK2V4dGVybiB2b2lkIHJlcGxvcmlnaW5f c2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlLCBib29sIG11c3RfYWNxdWlyZSk7CiBleHRl cm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQodm9pZCk7CiBleHRlcm4gWExvZ1JlY1B0 ciByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGJvb2wgZmx1c2gpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggNGEwMWY4NzdlNS4uYWJhMTY0MGY0 ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCisr KyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAtMzAxLDYgKzMw MSw3IEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE4KIAl7CiAJCVRpbWVzdGFtcFR6 IGNvbW1pdF90aW1lOwogCQlUaW1lc3RhbXBUeiBwcmVwYXJlX3RpbWU7CisJCVRpbWVzdGFtcFR6 IGFib3J0X3RpbWU7CiAJfQkJCXhhY3RfdGltZTsKIAogCS8qCkBAIC02NDcsOSArNjQ4LDExIEBA IGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpy YiwgVHJhbnNhY3Rpb25JZCB4aWQsCiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQXNzaWduQ2hp bGQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVj UHRyIGNvbW1pdF9sc24pOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdENoaWxkKFJl b3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgVHJhbnNhY3Rpb25JZCwKIAkJCQkJCQkJCSBY TG9nUmVjUHRyIGNvbW1pdF9sc24sIFhMb2dSZWNQdHIgZW5kX2xzbik7Ci1leHRlcm4gdm9pZCBS ZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVj UHRyIGxzbik7CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAq LCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkgICBUaW1lc3RhbXBUeiBh Ym9ydF90aW1lKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVm ZmVyICosIFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGb3Jn ZXQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbik7CitleHRl cm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25J ZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWUpOwogZXh0 ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckludmFsaWRhdGUoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2Fj dGlvbklkLCBYTG9nUmVjUHRyIGxzbik7CiAKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJTZXRC YXNlU25hcHNob3QoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxz biwgc3RydWN0IFNuYXBzaG90RGF0YSAqc25hcCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dv cmtlcl9pbnRlcm5hbC5oCmluZGV4IDkwMTg0NWFiYzIuLjA4ZTYzZGUwMTMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0xNyw4ICsxNywxMSBAQAogI2lu Y2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uLmgiCiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAicmVwbGlj YXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9maWxlc2V0LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1fbXEuaCIKKyNp bmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKIAog CkBAIC02MCw2ICs2Myw5IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAkgKi8K IAlGaWxlU2V0ICAgICpzdHJlYW1fZmlsZXNldDsKIAorCS8qIEluZGljYXRlcyBpZiB0aGlzIHNs b3QgaXMgdXNlZCBmb3IgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJYm9vbAkJc3Vi d29ya2VyOworCiAJLyogU3RhdHMuICovCiAJWExvZ1JlY1B0cglsYXN0X2xzbjsKIAlUaW1lc3Rh bXBUeiBsYXN0X3NlbmRfdGltZTsKQEAgLTY4LDkgKzc0LDcwIEBAIHR5cGVkZWYgc3RydWN0IExv Z2ljYWxSZXBXb3JrZXIKIAlUaW1lc3RhbXBUeiByZXBseV90aW1lOwogfSBMb2dpY2FsUmVwV29y a2VyOwogCisvKiBTdHJ1Y3QgZm9yIHNhdmluZyBhbmQgcmVzdG9yaW5nIGFwcGx5IGVycmNvbnRl eHQgaW5mb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JDYWxsYmFja0FyZwor eworCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7CS8qIDAgaWYgaW52YWxpZCAqLworCUxvZ2lj YWxSZXBSZWxNYXBFbnRyeSAqcmVsOworCisJLyogUmVtb3RlIG5vZGUgaW5mb3JtYXRpb24gKi8K KwlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBpZiBpbnZhbGlkICovCisJVHJhbnNhY3Rpb25J ZCByZW1vdGVfeGlkOworCVhMb2dSZWNQdHIJZmluaXNoX2xzbjsKKwljaGFyCSAgICpvcmlnaW5f bmFtZTsKK30gQXBwbHlFcnJvckNhbGxiYWNrQXJnOworCisvKgorICogU3RhdHVzIGZvciBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqLwordHlwZWRlZiBlbnVtIEFwcGx5Qmd3b3JrZXJTdGF0 dXMKK3sKKwlBUFBMWV9CR1dPUktFUl9BVFRBQ0hFRCA9IDAsCisJQVBQTFlfQkdXT1JLRVJfUkVB RFksCisJQVBQTFlfQkdXT1JLRVJfQlVTWSwKKwlBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCwKKwlB UFBMWV9CR1dPUktFUl9FWElUCit9IEFwcGx5Qmd3b3JrZXJTdGF0dXM7CisKKy8qCisgKiBTaGFy ZWQgaW5mb3JtYXRpb24gYW1vbmcgYXBwbHkgd29ya2Vycy4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg QXBwbHlCZ3dvcmtlclNoYXJlZAoreworCXNsb2NrX3QJbXV0ZXg7CisKKwkvKiBTdGF0dXMgZm9y IGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAqLworCUFwcGx5Qmd3b3JrZXJTdGF0dXMJc3RhdHVz OworCisJLyogc2VydmVyIHZlcnNpb24gb2YgcHVibGlzaGVyLiAqLworCWludCBzZXJ2ZXJfdmVy c2lvbjsKKworCVRyYW5zYWN0aW9uSWQJc3RyZWFtX3hpZDsKKwl1aW50MzIJbjsJLyogaWQgb2Yg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKi8KK30gQXBwbHlCZ3dvcmtlclNoYXJlZDsKKworLyoK KyAqIFN0cnVjdCBmb3IgbWFpbnRhaW5pbmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisg Ki8KK3R5cGVkZWYgc3RydWN0IEFwcGx5Qmd3b3JrZXJTdGF0ZQoreworCXNobV9tcV9oYW5kbGUJ CQkqbXFfaGFuZGxlOworCWRzbV9zZWdtZW50CQkJCSpkc21fc2VnOworCUFwcGx5Qmd3b3JrZXJT aGFyZWQgdm9sYXRpbGUJKnBzdGF0ZTsKK30gQXBwbHlCZ3dvcmtlclN0YXRlOworCiAvKiBNYWlu IG1lbW9yeSBjb250ZXh0IGZvciBhcHBseSB3b3JrZXIuIFBlcm1hbmVudCBkdXJpbmcgd29ya2Vy IGxpZmV0aW1lLiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlDb250 ZXh0OwogCitleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250 ZXh0OworCitleHRlcm4gUEdETExJTVBPUlQgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vy cm9yX2NhbGxiYWNrX2FyZzsKKworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgTXlTdWJzY3JpcHRp b25WYWxpZDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIEFwcGx5Qmd3b3JrZXJTaGFy ZWQgKk15UGFyYWxsZWxTdGF0ZTsKK2V4dGVybiBQR0RMTElNUE9SVCBMaXN0ICpzdWJ4YWN0bGlz dDsKKwogLyogbGlicHFyZWNlaXZlciBjb25uZWN0aW9uICovCiBleHRlcm4gUEdETExJTVBPUlQg c3RydWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubjsKIApAQCAtNzks MTggKzE0NiwyMiBAQCBleHRlcm4gUEdETExJTVBPUlQgU3Vic2NyaXB0aW9uICpNeVN1YnNjcmlw dGlvbjsKIGV4dGVybiBQR0RMTElNUE9SVCBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBX b3JrZXI7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3JlbW90ZV90cmFuc2FjdGlvbjsK K2V4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uOworZXh0ZXJu IFBHRExMSU1QT1JUIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZDsKIAogZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KTsKIGV4dGVybiBMb2dpY2FsUmVwV29ya2Vy ICpsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJ CQkJYm9vbCBvbmx5X3J1bm5pbmcpOwogZXh0ZXJuIExpc3QgKmxvZ2ljYWxyZXBfd29ya2Vyc19m aW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpOwotZXh0ZXJuIHZvaWQgbG9naWNhbHJl cF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUs Ci0JCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkKTsKK2V4dGVybiBib29sIGxvZ2ljYWxy ZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1l LAorCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxpZCwKKwkJCQkJCQkJCSBkc21faGFuZGxl IHN1Yndvcmtlcl9kc20pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQg c3ViaWQsIE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAo T2lkIHN1YmlkLCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2Fr ZXVwX3B0cihMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBleHRlcm4gaW50CWxvZ2ljYWxy ZXBfc3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKK2V4dGVybiBpbnQJbG9naWNhbHJlcF9h cHBseV9iYWNrZ3JvdW5kX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpOwogCiBleHRlcm4gdm9pZCBS ZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JUYWJsZXN5bmMoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAog CQkJCQkJCQkJCQkgIGNoYXIgKm9yaWdpbm5hbWUsIGludCBzem9yZ25hbWUpOwpAQCAtMTAzLDEw ICsxNzQsMzkgQEAgZXh0ZXJuIHZvaWQgcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRy IGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2b2lkIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0 ZXMoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwKIAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7 CiAKK2V4dGVybiB2b2lkIFVwZGF0ZVdvcmtlclN0YXRzKFhMb2dSZWNQdHIgbGFzdF9sc24sIFRp bWVzdGFtcFR6IHNlbmRfdGltZSwKKwkJCQkJCQkgIGJvb2wgcmVwbHkpOworCisvKiBwcm90b3R5 cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLworZXh0ZXJuIHZvaWQgYXBwbHlf ZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKKworLyogRnVuY3Rpb24gZm9yIGFwcGx5IGVycm9yIGNh bGxiYWNrICovCitleHRlcm4gdm9pZCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwor CitleHRlcm4gdm9pZCBzdWJzY3JpcHRpb25fY2hhbmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hl aWQsIHVpbnQzMiBoYXNodmFsdWUpOworCisvKiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBzZXR1 cCBhbmQgaW50ZXJhY3Rpb25zICovCitleHRlcm4gQXBwbHlCZ3dvcmtlclN0YXRlICphcHBseV9i Z3dvcmtlcl9maW5kX29yX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJCQkJCQli b29sIHN0YXJ0KTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKEFwcGx5Qmd3 b3JrZXJTdGF0ZSAqd3N0YXRlLAorCQkJCQkJCQkJQXBwbHlCZ3dvcmtlclN0YXR1cyB3YWl0X2Zv cl9zdGF0dXMpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKEFwcGx5Qmd3 b3JrZXJTdGF0ZSAqd3N0YXRlLCBTaXplIG5ieXRlcywKKwkJCQkJCQkJCSBjb25zdCB2b2lkICpk YXRhKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX2ZyZWUoQXBwbHlCZ3dvcmtlclN0YXRl ICp3c3RhdGUpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKHZvaWQp OworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1cyhBcHBseUJnd29ya2VyU3Rh dHVzIHN0YXR1cyk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRk KFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQpOworCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFtX3Rh Ymxlc3luY193b3JrZXIodm9pZCkKIHsKIAlyZXR1cm4gT2lkSXNWYWxpZChNeUxvZ2ljYWxSZXBX b3JrZXItPnJlbGlkKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sCithbV9hcHBseV9iZ3dvcmtl cih2b2lkKQoreworCXJldHVybiBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YndvcmtlcjsKK30KKwog I2VuZGlmCQkJCQkJCS8qIFdPUktFUl9JTlRFUk5BTF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgK aW5kZXggYjU3OGUyZWM3NS4uYzJkMmExMTRkNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRp bHMvd2FpdF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApAQCAt MTA1LDYgKzEwNSw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tF VFNfQUxMT0NBVEUsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19FTEVDVCwKIAlXQUlU X0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX1JFSU5TRVJULAorCVdBSVRfRVZFTlRfTE9HSUNBTF9B UFBMWV9XT1JLRVJfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEs CiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTVFf SU5URVJOQUwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlw dGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5k ZXggN2ZjZmFkMTU5MS4uZjc2OTgzNWFmMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3Vic2NyaXB0aW9uLm91dApAQCAtMTk3LDcgKzE5Nyw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIERST1AgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YjsKIC0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCiBD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZh bHNlLCBzdHJlYW1pbmcgPSBmb28pOwotRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29s ZWFuIHZhbHVlCitFUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3Ig ImFwcGx5IgogLS0gbm93IGl0IHdvcmtzCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9O IHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdBUk5J Tkc6ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2NyaWJlZCwgeW91IHdpbGwgaGF2ZSB0byBydW4gQUxU RVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIHRvIHN1YnNjcmliZSB0aGUg dGFibGVzCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDRmYjc0NjkzMGEuLjY2NGQ0Yjhi MWEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMTYsNiArMTE2LDEwIEBAIEFwcGVu ZAogQXBwZW5kUGF0aAogQXBwZW5kUmVsSW5mbwogQXBwZW5kU3RhdGUKK0FwcGx5Qmd3b3JrZXJF bnRyeQorQXBwbHlCZ3dvcmtlclNoYXJlZAorQXBwbHlCZ3dvcmtlclN0YXRlCitBcHBseUJnd29y a2VyU3RhdHVzCiBBcHBseUVycm9yQ2FsbGJhY2tBcmcKIEFwcGx5RXhlY3V0aW9uRGF0YQogQXBw bHlTdWJYYWN0RGF0YQpAQCAtMTQ4Myw2ICsxNDg3LDcgQEAgTG9naWNhbFJlcFJlbElkCiBMb2dp Y2FsUmVwUmVsTWFwRW50cnkKIExvZ2ljYWxSZXBSZWxhdGlvbgogTG9naWNhbFJlcFJvbGxiYWNr UHJlcGFyZWRUeG5EYXRhCitMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCiBMb2dpY2FsUmVwVHVw bGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBMb2dpY2FsUmVwV29ya2VyCi0tIAoyLjIzLjAud2luZG93 cy4xCgo= --_006_OS3PR01MB6275C4679CFE3414340A259B9EAD9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v11-0002-Test-streaming-apply-option-in-tap-test.patch" Content-Description: v11-0002-Test-streaming-apply-option-in-tap-test.patch Content-Disposition: attachment; filename="v11-0002-Test-streaming-apply-option-in-tap-test.patch"; size=70533; creation-date="Wed, 15 Jun 2022 08:24:00 GMT"; modification-date="Wed, 15 Jun 2022 08:26:37 GMT" Content-Transfer-Encoding: base64 RnJvbSBmMzBmNjE5ZjhkZDJiM2Q0NDNkNjMwZDViOTg4ODA4ZTVhYzUxMTkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MTEg Mi81XSBUZXN0IHN0cmVhbWluZyBhcHBseSBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBhbGwg VEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgb3B0aW9uLCBzbyB0 aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ2FwcGx5JyB2YWx1ZXMuCi0tLQogc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgMTk5ICsrKystLS0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCB8IDExOSArKystLQogc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgIHwgMTg4ICsrKystLS0K IC4uLi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCAgICAgICAgICAgICB8IDE5NSArKysr LS0tCiAuLi4vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsICAgICAgICAgfCAxMTAg KysrLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsICAgIHwgMzYz ICsrKysrKystLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBs ICAgICB8IDQ5OCArKysrKysrKysrLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgMTAzNSBpbnNl cnRpb25zKCspLCA2MzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJl YW0ucGwKaW5kZXggNjU2MWIxODlkZS4uYjNkODRiMWM3YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTE2IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAK KyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRl ZCB0byAic3RyZWFtaW5nIiBvcHRpb24KKyMgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJv dGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1hcHBseQorIyBjYXNlcy4KK3N1 YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAkaXNfYXBwbHkpID0gQF87CisKKwkjIEludGVybGVhdmUgYSBwYWlyIG9m IHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCisJbXkgJGluICA9 ICcnOworCW15ICRvdXQgPSAnJzsKKworCW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworCW15ICRoID0gJG5v ZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0 aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91 bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMKKwkjIHNwZWNpZmllZCBh cyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcwor CSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4K KwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9k ZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJJGluIC49IHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygzLCA1MDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBt b2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwor CX07CisJJGgtPnB1bXBfbmI7CisKKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJ CSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxv Z19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsK Kwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgYSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOwor CVxxCisJfTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFp bCwgc28gaWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQp LAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisKKwkj IFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCSRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChi aW5hcnkgPSBvbikiKTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93 cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsK KwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJJHJlc3Vs dCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlp cygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNv bnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2Yg dGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIsCisJIyB1cGRhdGUgcHVibGlzaGVy LCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1 ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVo YXZlCisJIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQg YyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkp OworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBv Y2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCisJ KTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKKworCSMgQ2xlYW51cCB0aGUgdGVz dCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkg JG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNo ZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2Fs Jyk7CkBAIC0zNyw2ICsxNDcsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7 CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJf Y29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJ VEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC01NCw4MiArMTY4LDI1IEBAIG15ICRyZXN1bHQg PQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3Rf dGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNv cGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rp b25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KLW15ICRpbiAgPSAnJzsKLW15ICRv dXQgPSAnJzsKLQotbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOwotCi1teSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+ YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCi0Jb25fZXJy b3Jfc3RvcCA9PiAwKTsKLQotJGluIC49IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhp KTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1E RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci19OwotJGgtPnB1bXBfbmI7 Ci0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEg PiA1MDAwOwotQ09NTUlUOwotfSk7Ci0KLSRpbiAuPSBxewotQ09NTUlUOwotXHEKLX07Ci0kaC0+ ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRo ZW0gaGVyZQotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwot Ci0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwotCi0jIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5h cnkgbW9kZQotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24pIik7Ci0KLSMgSW5zZXJ0LCB1 cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMDEsIDEwMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0g MDsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMCk7CiAKLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLCAnY2hl Y2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdhcHBs eScKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgorKTsKIAotIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBv ZiB0aGUgZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJlciwKLSMgdXBkYXRlIHB1Ymxpc2hl ciwgYW5kIGNoZWNrIHRoYXQgc3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAotIyB2YWx1 ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVo YXZlCi0jIHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgogJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9 ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKLSk7Ci0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VU KHN0cmVhbWluZyA9IGFwcGx5LCBiaW5hcnkgPSBvZmYpIik7CiAKLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlf dW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9y ZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUg PSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGlu ZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi0k cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKLSk7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8 NjY2NyksCi0JJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0 YScpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAk YXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXIt PnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1 YnhhY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwK aW5kZXggZjI3ZjE2OTRmMi4uYjViNmRjMzc5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbApAQCAtOCw2ICs4LDcyIEBAIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6 Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBh cmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIiBvcHRpb24KKyMgc28gdGhlIHNhbWUgY29kZSBjYW4g YmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1hcHBseQorIyBj YXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2Rl X3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfYXBwbHkpID0gQF87CisKKwkjIENoZWNrIHRoYXQg YSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgb3B0aW9uIGlzCisJIyBz cGVjaWZpZWQgYXMgImFwcGx5Ii4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cg bWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19hcHBseSkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEi KTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgSW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKCAg ICAzLCAgNTAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBt b2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwor CVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwgIDEwMDApIHMoaSk7CisJVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwg IDE1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FW RVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMjUw MCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7 CisJfSk7CisKKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNj cmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2Fn ZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9 CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygk cmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8g c3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJs aXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTAz LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQ VUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9 ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1 c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJT Q1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRp b25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBv bikiCiApOwpAQCAtNTQsNDEgKzEyNCwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3Vs dCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOwogCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVk IDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAwMCkgcyhp KTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1E RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczI7Ci1J TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEwMDEsICAxNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7Ci1VUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAx LCAyNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1J VDsKLX0pOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMCk7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAotCSdjaGVjayBkYXRh IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnYXBwbHknCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0 aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJl YW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gYXBwbHkpIik7CisK KyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qg cGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9u X25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBk aWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVy IGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5z dG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx N19zdHJlYW1fZGRsLnBsCmluZGV4IDBiY2U2M2I3MTYuLjdlNWRjMThjZDIgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCkBAIC04LDYgKzgsMTExIEBAIHVzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwog dXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVw cyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIiBvcHRpb24KKyMgc28gdGhlIHNhbWUg Y29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1h cHBseQorIyBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNo ZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfYXBwbHkpID0gQF87CisKKwkjIGEg c21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKKwlBTFRFUiBUQUJMRSB0 ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOworCUNPTU1JVDsKKwl9KTsKKwor CSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBv cHRpb24gaXMKKwkjIHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0 aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVt cCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNz YWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBs YXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg1LCAxMDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7 CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKKwlD T01NSVQ7CisJfSk7CisKKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2Rl X3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5f bWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisK KwkjIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMSwgbWQ1KDIwMDE6OnRleHQpLCAtMjAw MSwgMioyMDAxKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOworCVNB VkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDIsIG1kNSgyMDAy Ojp0ZXh0KSwgLTIwMDIsIDIqMjAwMiwgLTMqMjAwMik7CisJQ09NTUlUOworCX0pOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQg PQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSkgRlJPTSB0ZXN0X3RhYiIpOwor CWlzKCRyZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAorCQknY2hlY2sgZGF0YSB3YXMgY29w aWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNh Y3Rpb24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCisJIyBh ZnRlciBETUwgdG8gZW5zdXJlIHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgc2NoZW1hIHNlbnQgZm9y IHRlc3RfdGFiIHNvIHRoYXQKKwkjIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRo ZSBzY2hlbWEgYWdhaW4uCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7 CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBmIElOVDsKKwlDT01NSVQ7CisJfSk7 CisKKwkjIEEgc21hbGwgdHJhbnNhY3Rpb24gdGhhdCB3b24ndCBnZXQgc3RyZWFtZWQuIFRoaXMg aXMganVzdCB0byBlbnN1cmUgdGhhdCB3ZQorCSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJl ZmxlY3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgorCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQq aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7CisJQ09NTUlUOworCX0pOwor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJPTSB0ZXN0 X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCisJCSdj aGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90aCBzdHJlYW1pbmcgYW5k IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3Qg ZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVzdF90YWIg RFJPUCBDT0xVTU4gYywgRFJPUCBDT0xVTU4gZCwgRFJPUCBDT0xVTU4gZSwgRFJPUCBDT0xVTU4g ZjsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor fQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+ aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxNDIsMTAgQEAg JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FU SU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9z dWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0 cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElP TiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1l PSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7 CkBAIC01NCw3NiArMTYzLDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgy fDB8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAK LSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDMsIG1kNSgzOjp0ZXh0KSk7Ci1BTFRFUiBUQUJMRSB0 ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICg0LCBtZDUoNDo6dGV4dCksIC00KTsKLUNPTU1JVDsKLX0pOwotCi0jIGxh cmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNSwg MTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZF UE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAt aSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDIwMDApIHMoaSk7Ci1DT01NSVQ7Ci19 KTsKLQotIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBE TUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMSwgbWQ1KDIwMDE6OnRleHQpLCAtMjAw MSwgMioyMDAxKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7Ci1TQVZF UE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDIsIG1kNSgyMDAyOjp0 ZXh0KSwgLTIwMDIsIDIqMjAwMiwgLTMqMjAwMik7Ci1DT01NSVQ7Ci19KTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRv IHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ2FwcGx5JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwog Ci0jIEEgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUg b2YgdGhlIERETCBpcyBwZXJmb3JtZWQKLSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGlu dmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0Ci0jIHRoZSBuZXh0 IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRoZSBzY2hlbWEgYWdhaW4uCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVf c2VyaWVzKDIwMDMsNTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4g ZiBJTlQ7Ci1DT01NSVQ7Ci19KTsKLQotIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3Qg Z2V0IHN0cmVhbWVkLiBUaGlzIGlzIGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKLSMgc2VuZCB0aGUg c2NoZW1hIGFnYWluIHRvIHJlZmxlY3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2 aW91cyB0ZXN0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsK LUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWks IDIqaSwgLTMqaSwgNCppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKLUNP TU1JVDsKLX0pOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFM VEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBhcHBseSkiKTsKIAotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKyRub2RlX3B1Ymxpc2hl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91 dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlND UklQVElPTiI7CiAKLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUp LCBjb3VudChmKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg1MDA1fDUwMDJ8NDAw NXwzMDA0fDUpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90 aCBzdHJlYW1pbmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJwotKTsKK3Rlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwog CiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBs IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmlu ZGV4IDcxNTU0NDJlNzYuLjcxZjhjMWRkMDUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKQEAgLTgsNiArOCwxMTMgQEAgdXNl IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7 CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0 ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2Ft ZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5n PWFwcGx5CisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxp c2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19hcHBseSkgPSBAXzsKKworCSMg Q2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRp b24gaXMKKwkjIHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUg REVCVUcxIGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1 cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdl cyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBsYXJn ZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMyw1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMo aSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCVNBVkVQT0lO VCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDIwMDEsMjUwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAw MCkgcyhpKTsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7CisJU0FW RVBPSU5UIHM1OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKwor CWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIv XFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5p bmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjAwMHwwKSwKKwkJJ2No ZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5k IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBsYXJnZSAo c3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9y ZGVyCisJIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDQwMDEsNDUwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDApIHMoaSk7CisJU0FWRVBPSU5U IHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDcwMDEsNzUwMCkgcyhpKTsKKwlSRUxFQVNFIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODAwMSw4NTAwKSBzKGkp OworCVJPTExCQUNLIFRPIHMxOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKKwkJJ2NoZWNrIHJv bGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMg bGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIHJv bGxiYWNrCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ QkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoOTAwMSw5NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDAp IHMoaSk7CisJUk9MTEJBQ0s7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVm bGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlz aGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2Rl X3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNiw2 ICsxNDMsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JF QVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBu YW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBU ZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRF IFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBs aWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWlu ZyA9IG9uKSIKICk7CkBAIC01Myw4MSArMTY0LDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCks ICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFy Z2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMyw1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwot U0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczM7Ci1J TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMyOwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1 MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUwMSwzMDAwKSBzKGkpOwotU0FW RVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczU7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDM1MDEsNDAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSRyZXN1bHQgPQotICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAwfDApLAotCSdjaGVjayBy b2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdhcHBseScKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVw bGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgogKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGgg c3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCi0jIHN1YnRyYW5zYWN0aW9uIFJPTExC QUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lO OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEs NTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOwotU0FW RVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg4MDAxLDg1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsKLX0pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNF VChzdHJlYW1pbmcgPSBhcHBseSkiKTsKIAotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00g dGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRv IHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoODUwMSw5MDAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAxLDk1MDApIHMo aSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDApIHMoaSk7Ci1ST0xMQkFDSzsK LX0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisg IG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQg YWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVm bGVjdGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9w OwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKaW5kZXggZGJkMGZjYTRkMS4u ZDBjZDg2OTQzMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVh bV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlf c3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCkBAIC05LDYgKzksNjkgQEAgdXNlIFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVz dDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNo IGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBjb2RlIGNh biBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFwcGx5Cisj IGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19hcHBseSkgPSBAXzsKKworCSMgQ2hlY2sgdGhh dCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMKKwkj IHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxv ZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9n IHZlcmJvc2l0eS4KKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVn MSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBsYXJnZSAoc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1 MDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKKwlTQVZF UE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwg LWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgQUREIENPTFVNTiBkIElOVDsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxMDAxLDE1MDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElO VDsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMo aSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYzsKKwlST0xMQkFDSyBUTyBz MTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCWlmICgk aXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBs eSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsK KwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMTAwMHw1MDApLAorCQknY2hlY2sg cm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhl IHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBx eworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgRFJPUCBDT0xVTU4gYzsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVf cHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsK ICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBA IC0zNyw2ICsxMDAsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK IAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15 ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAki Q1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0 ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0 cmVhbWluZyA9IG9uKSIKICk7CkBAIC01NCwzNSArMTIxLDI2IEBAIG15ICRyZXN1bHQgPQogCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFx KDJ8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAK LSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFD S3MKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMyw1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMg SU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1BTFRFUiBU QUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRl X3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1O IGUgSU5UOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDAp IHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwotUk9MTEJBQ0sgVE8g czE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Cit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAot JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9 Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAw KSwKLQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2Ny aWJlciBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAn YXBwbHknCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9 ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFt aW5nID0gYXBwbHkpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9u IFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1p bmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBs eSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCiAk bm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDdhNzk3 ZjM3YmEuLmI1MmFmNzRlMzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy Ml90d29waGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90 d29waGFzZV9jYXNjYWRlLnBsCkBAIC0xMSw2ICsxMSwyMDggQEAgdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9y ZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSBy ZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBy dW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFwcGx5CisjIGNhc2Vz Lgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0Ms ICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlt eSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VM RUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFt ZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKwlteSAkb2xkcGlk X0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKworCSMgU2V0dXAgbG9naWNhbCBy ZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJJG5vZGVfQi0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IKKwkJU0VUIChzdHJlYW1p bmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRub2RlX0MtPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCisJCVNFVCAoc3RyZWFtaW5n ID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5p c2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0 Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0 aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBw bHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVz JywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24K KwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0 byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3Qg MlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFz IGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCisJIwor CSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0 aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sg dGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMK KwkjIHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcx IGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUg bG9nIHZlcmJvc2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdhcHBseScpCisJeworCQkk bm9kZV9CLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMg PSBkZWJ1ZzEiKTsKKwkJJG5vZGVfQi0+cmVsb2FkOworCisJCSRub2RlX0MtPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9k ZV9DLT5yZWxvYWQ7CisJfQorCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCBy b3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9k ZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJ UFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJaWYgKCRzdHJl YW1pbmdfbW9kZSBlcSAnYXBwbHknKQorCXsKKwkJJG5vZGVfQi0+d2FpdF9mb3JfbG9nKHFyL1xb QXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVf Qi0+cmVsb2FkOworCisJCSRub2RlX0MtPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJHVyAjXGQr XF0gc3RhcnRlZC8sIDApOworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9 CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBz dGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9k ZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vi c2NyaWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVf QS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBj b2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQp LAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBD LCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNr IHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3Vs dCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZF UE9JTlQuCisJIyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiBy b3dzLgorCSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJvdy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lO VC4KKwkjIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sg dG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBD T01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBp cyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVw IDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0 ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkK Kwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIGEgPiAyOyIpOworCisJIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRP IFNBVkVQT0lOVAorCSRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJ TjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNB VkVQT0lOVCBzcF9pbm5lcjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9p bm5lcjsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAnb3V0ZXInOworCQkiKTsKKworCSRub2RlX0Et PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVk IG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJ aXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy IEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMg MlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBB UkVEICdvdXRlcic7Iik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0Ip OworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRo ZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJ ICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24g aXMgZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vi c2NyaWJlciBDJyk7CisKKwkjIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJl cihzKS4KKwkjIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkg c2hvdWxkIGJlIHJvbGxlZCBiYWNrLgorCSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29t bWl0dGVkLgorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygk cmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIg QicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3Mg Y29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29t bWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh YjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9u IHN1YnNjcmliZXIgQycpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIp OworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwogIyBTZXR1cCBhIGNhc2NhZGUgb2YgcHViL3N1YiBub2Rlcy4KICMgbm9kZV9BIC0+ IG5vZGVfQiAtPiBub2RlX0MKQEAgLTI2MCwxNjAgKzQ2MiwxNSBAQCBpcygkcmVzdWx0LCBxcSgy MSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKICMgMlBD ICsgU1RSRUFNSU5HIFRFU1RTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1teSAkb2xkcGlk X0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKLW15ICRvbGRwaWRfQyA9ICRub2RlX0It PnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVw bGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0 ZSA9ICdzdHJlYW1pbmcnOyIpOwotCi0jIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24gKHN0cmVh bWluZyA9IG9uKQotCi0kbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViX0IKLQlTRVQgKHN0cmVhbWluZyA9IG9uKTsiKTsKLSRub2Rl X0MtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9z dWJfQwotCVNFVCAoc3RyZWFtaW5nID0gb24pIik7Ci0KLSMgV2FpdCBmb3Igc3Vic2NyaWJlcnMg dG8gZmluaXNoIGluaXRpYWxpemF0aW9uCi0KLSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCi0J J3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9CIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBh cHBseSB0byByZXN0YXJ0IjsKLSRub2RlX0ItPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVz JywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgot CVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byBy ZXN0YXJ0IjsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQ UkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBD IHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0 IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0 LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotIyBUaGVuIDJQ QyBQUkVQQVJFCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsK LQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0k bm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZV9DKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBu YW1lX0IsICRhcHBuYW1lX0MsICdvbicpOwogCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0 ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vi c2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMg MlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFS RUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMg Y2hlY2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIocykKLSRy ZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwg cXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMn Ci0pOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUg Y29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBk ZWZhdWx0cycKLSk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9u IHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0k cmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFD SyBUTyBTQVZFUE9JTlQuCi0jIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcg b25seSAyIHJvd3MuCi0jIDEuIEluc2VydCBvbmUgbW9yZSByb3cuCi0jIDIuIFJlY29yZCBhIFNB VkVQT0lOVC4KLSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDQuIERvIHJvbGxi YWNrIHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUgc3RyZWFtZWQgaW5zZXJ0cy4KLSMgNS4gVGhl biBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQg aXMgYWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dzICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3Rl cCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRl IHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQot JG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBhID4gMjsiKTsKLQotIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNB VkVQT0lOVAotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlCRUdJTjsKLQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKLQlTQVZFUE9JTlQg c3BfaW5uZXI7Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQg YiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgbW9kKGEsMykgPSAwOwotCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKLQlQUkVQ QVJFIFRSQU5TQUNUSU9OICdvdXRlcic7Ci0JIik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwot Ci0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMp Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsKLQotJG5vZGVfQS0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1 YnNjcmliZXIKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEo MCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQot ICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBl bmRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0 IHN1YnNjcmliZXIocykuCi0jIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNB VkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgotIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3Vs ZCBiZSBjb21taXR0ZWQuCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsK LWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2Ny aWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBj b21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVf Qy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi IHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0 ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlz KCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJl ciBDJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdhcHBseScKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9C LCAkYXBwbmFtZV9DLCAnYXBwbHknKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IGQ4NDc1ZDI1YTQuLmY1NWM1Yzk1ZTcgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysr IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtOCw2 ICs4LDI2NiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUg Y29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgb3B0aW9u CisjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9u IGFuZCBzdHJlYW1pbmc9YXBwbHkKKyMgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlt eSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX2FwcGx5 KSA9IEBfOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMg UFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAy UEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBF eHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhl IGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIENoZWNrIHRo YXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgb3B0aW9uIGlzCisJ IyBzcGVjaWZpZWQgYXMgImFwcGx5Ii4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBs b2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxv ZyB2ZXJib3NpdHkuCisJaWYgKCRpc19hcHBseSkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgY2hlY2sgdGhhdCAy UEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ CVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCWlmICgkaXNf YXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBC R1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4g cHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0 ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9 IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwK KwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFu ZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQu CisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNh dGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkj IDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sg bGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dz ICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBUaGVu IGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtC IGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxewor CQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vi c2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwor CisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3Rh Yic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcgorCSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlp cygkcmVzdWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVk IGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzJworCSk7CisKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3Ry YW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAyUEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRl Y29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KKwkjIDEuIGluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSMgMi4gVGhl biBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQu CisJIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQgdGhlIHBlbmRpbmcgdHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9u IHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgorCSMgTm90ZTogYm90aCBwdWJsaXNo ZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVz JywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3By ZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsK Kwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCisJJG5vZGVfcHVibGlzaGVy LT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworCSMgY29tbWl0IHBvc3QgdGhl IHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09N TUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJs ZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5 IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250 YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQ UkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJl IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcg MlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRo ZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgorCSMKKwkjIEV4 cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyByb3dzIG9uIHRoZSBz dWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KKwkjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0 IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7 CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNl ZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVz dF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBz dGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0 c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlv biBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBh IHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIp OworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVk X3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwK KwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBzdGlsbCB3YXMgcmVw bGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJCSdjaGVjayB0aGUgb3V0c2lkZSBp bnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlz IGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBS RVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUg cmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAy UEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhl IFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgorCSMKKwkjIEV4cGVj dCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhl IDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxs IGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBUaGVuIGluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0 LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJ TjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9 KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkj IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBJ bnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0 cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93 IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5 IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBDIHRyYW5z YWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhh dCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgzMzM1fDMzMzV8MzMzNSksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBv dXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNv bHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBT ZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNDgsNiArMzA4LDEwIEBA ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBf c3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBz dHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsICIKIAlDUkVBVEUgU1VCU0NS SVBUSU9OIHRhcF9zdWIKQEAgLTcwLDIzNiArMzM0LDMwIEBAIG15ICR0d29waGFzZV9xdWVyeSA9 CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICR0d29waGFz ZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJl ciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIKLSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sg aW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQu Ci0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4g ZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBv biBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKLQotIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlcgotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0 aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK LQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNj cmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyAy UEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwot Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwg cXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRz JwotKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExC QUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNo IGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNp bmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGRhdGEgcm9s bHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cy4KLSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3Ig MiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhl biBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRr QiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0J QkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg bW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9 KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIK LSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgx KSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyAyUEMgdHJh bnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDJ8Mnwy KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkg dGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1 YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDaGVjayB0 aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0 YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQ QyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJlc3Rh cnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jCi0jIEV4cGVjdCBh bGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0 LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0 LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhp KTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwot CURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5T QUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3N1YnNjcmliZXItPnN0b3Ao J2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKLQotJG5v ZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwotCi0jIGNvbW1p dCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBjaGVjayBpbnNl cnRzIGFyZSB2aXNpYmxlCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBp bnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNv bHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ2FwcGx5JworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNh dGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiCiApOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElO U0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAx LiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9u IHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNp bmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQu IFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSBy b2xscyBiYWNrIGxlYXZpbmcgb25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBv cmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Ci0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSBy ZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQ UkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBp cyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29y ZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRo ZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlz IGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5 OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rl c3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vi c2NyaWJlciwKLSMgYnV0IHRoZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxs IHdhcyByZXBsaWNhdGVkCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRl IGluc2VydCB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg YWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBB UkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBs aWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgot IyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBB UkUuCi0jIDQuIFRoZW4gZG8gYSBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMgZGF0 YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgMzMzNCArIGlu c2VydGVkIDEgPSAzMzM1KS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBG aXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0 ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVs ZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAw KSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUg VFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlz IGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBh cmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cg d2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0 cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0 IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9v YmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVw YXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBhcHBseSkiKTsKIAotIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFx KDMzMzV8MzMzNXwzMzM1KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0 c2lkZSBpbnNlcnQpIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1 ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0 YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdh aXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsK IAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFx KDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwog CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51 cAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_006_OS3PR01MB6275C4679CFE3414340A259B9EAD9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v11-0003-A-temporary-patch-that-includes-patches-in-anoth.patch" Content-Description: v11-0003-A-temporary-patch-that-includes-patches-in-anoth.patch Content-Disposition: attachment; filename="v11-0003-A-temporary-patch-that-includes-patches-in-anoth.patch"; size=11748; creation-date="Wed, 15 Jun 2022 08:24:00 GMT"; modification-date="Wed, 15 Jun 2022 08:26:38 GMT" Content-Transfer-Encoding: base64 RnJvbSBiOWQ1NWJiOTMyMWYyYjg4Njc2MmRhMDUxMzAxNjA2MjhhOGM4MzI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog V2VkLCAxNSBKdW4gMjAyMiAxNjoxNTo1MCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjExIDMvNV0g QSB0ZW1wb3JhcnkgcGF0Y2ggdGhhdCBpbmNsdWRlcyBwYXRjaGVzIGluIGFub3RoZXIKIGJ1Z2Zp eCB0aHJlYWQuCgpUaGUgcGFydGl0aW9uIGNhY2hlIG1hcCBvbiBzdWJzY3JpYmVyIGhhdmUgc2V2 ZXJhbCBidWdzIChzZWUgdGhyZWFkIFsxXSkuCkJlY2F1c2UgcGF0Y2ggMDAwNCBpcyBkZXZlbG9w ZWQgYmFzZWQgb24gdGhlIHBhdGNoZXMgaW4gWzFdLCBzbyBJIG1lcmdlZCB0aGUKbGF0ZXN0IDAw MDItcGF0Y2ggKHNlZSBbMl0pIGFuZCB0aGUgbGF0ZXN0IDAwMDMtcGF0Y2ggKHNlZSBbM10pIGlu dG8gYQp0ZW1wb3JhcnkgcGF0Y2ggMDAwMyBoZXJlLiBBZnRlciB0aGUgcGF0Y2hlcyBpbiBbMV0g YXJlIGNvbW1pdHRlZCwgSSB3aWxsIGRlbGV0ZQp0aGlzIHRlbXBvcmFyeSBwYXRjaC4KClsxXSAt Cmh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvT1NaUFIwMU1CNjMxMEY0NkNE NDI1QTk2N0U0QUVGNzM2RkRBNDklNDBPU1pQUjAxTUI2MzEwLmpwbnByZDAxLnByb2Qub3V0bG9v ay5jb20KWzJdIC0KaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9PU1pQUjAx TUI2MzEwNzU3MTc5RDQzMUQ1NDgwQUY2Q0NGREFEOSU0ME9TWlBSMDFNQjYzMTAuanBucHJkMDEu cHJvZC5vdXRsb29rLmNvbQpbM10gLQpodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdl LWlkL09TWlBSMDFNQjYzMTA3MjU1QUU0NTNBQjE4MjUyNDUyM0ZEQUE5JTQwT1NaUFIwMU1CNjMx MC5qcG5wcmQwMS5wcm9kLm91dGxvb2suY29tCi0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9yZWxhdGlvbi5jIHwgMTU1ICsrKysrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgIHwgIDIzICsrLQogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggIHwgICAxICsKIHNyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxM19wYXJ0aXRpb24ucGwgICB8ICAyOSArKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE1 MSBpbnNlcnRpb25zKCspLCA1NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3JlbGF0aW9uLmMKaW5kZXggOWM5ZWMxNDRkOC4uMThlNjU3Y2RmZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwpAQCAtMjQ5LDYgKzI0OSw3 MiBAQCBsb2dpY2FscmVwX3JlcG9ydF9taXNzaW5nX2F0dHJzKExvZ2ljYWxSZXBSZWxhdGlvbiAq cmVtb3RlcmVsLAogCX0KIH0KIAorLyoKKyAqIENoZWNrIGlmIHJlcGxpY2EgaWRlbnRpdHkgbWF0 Y2hlcyBhbmQgbWFyayB0aGUgdXBkYXRhYmxlIGZsYWcuCisgKgorICogV2UgYWxsb3cgZm9yIHN0 cmljdGVyIHJlcGxpY2EgaWRlbnRpdHkgKGZld2VyIGNvbHVtbnMpIG9uIHN1YnNjcmliZXIgYXMK KyAqIHRoYXQgd2lsbCBub3Qgc3RvcCB1cyBmcm9tIGZpbmRpbmcgdW5pcXVlIHR1cGxlLiBJRSwg aWYgcHVibGlzaGVyIGhhcworICogaWRlbnRpdHkgKGlkLHRpbWVzdGFtcCkgYW5kIHN1YnNjcmli ZXIganVzdCAoaWQpIHRoaXMgd2lsbCBub3QgYmUgYQorICogcHJvYmxlbSwgYnV0IGluIHRoZSBv cHBvc2l0ZSBzY2VuYXJpbyBpdCB3aWxsLgorICoKKyAqIERvbid0IHRocm93IGFueSBlcnJvciBo ZXJlIGp1c3QgbWFyayB0aGUgcmVsYXRpb24gZW50cnkgYXMgbm90IHVwZGF0YWJsZSwKKyAqIGFz IHJlcGxpY2EgaWRlbnRpdHkgaXMgb25seSBmb3IgdXBkYXRlcyBhbmQgZGVsZXRlcyBidXQgaW5z ZXJ0cyBjYW4gYmUKKyAqIHJlcGxpY2F0ZWQgZXZlbiB3aXRob3V0IGl0LgorICovCitzdGF0aWMg dm9pZAorbG9naWNhbHJlcF9yZWxfbWFya191cGRhdGFibGUoTG9naWNhbFJlcFJlbE1hcEVudHJ5 ICplbnRyeSkKK3sKKwlCaXRtYXBzZXQgICppZGtleTsKKwlMb2dpY2FsUmVwUmVsYXRpb24gKnJl bW90ZXJlbCA9ICZlbnRyeS0+cmVtb3RlcmVsOworCWludAkJCWk7CisKKwllbnRyeS0+dXBkYXRh YmxlID0gdHJ1ZTsKKworCS8qCisJICogSWYgaXQgaXMgYSBwYXJ0aXRpb25lZCB0YWJsZSwgd2Ug ZG9uJ3QgY2hlY2sgaXQsIHdlIHdpbGwgY2hlY2sgaXRzCisJICogcGFydGl0aW9uIGxhdGVyLgor CSAqLworCWlmIChlbnRyeS0+bG9jYWxyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFKQorCQlyZXR1cm47CisKKwlpZGtleSA9IFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwKGVudHJ5LT5sb2NhbHJlbCwKKwkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQ X0lERU5USVRZX0tFWSk7CisJLyogZmFsbGJhY2sgdG8gUEsgaWYgbm8gcmVwbGljYSBpZGVudGl0 eSAqLworCWlmIChpZGtleSA9PSBOVUxMKQorCXsKKwkJaWRrZXkgPSBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcChlbnRyeS0+bG9jYWxyZWwsCisJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRN QVBfUFJJTUFSWV9LRVkpOworCQkvKgorCQkgKiBJZiBubyByZXBsaWNhIGlkZW50aXR5IGluZGV4 IGFuZCBubyBQSywgdGhlIHB1Ymxpc2hlZCB0YWJsZQorCQkgKiBtdXN0IGhhdmUgcmVwbGljYSBp ZGVudGl0eSBGVUxMLgorCQkgKi8KKwkJaWYgKGlka2V5ID09IE5VTEwgJiYgcmVtb3RlcmVsLT5y ZXBsaWRlbnQgIT0gUkVQTElDQV9JREVOVElUWV9GVUxMKQorCQkJZW50cnktPnVwZGF0YWJsZSA9 IGZhbHNlOworCX0KKworCWkgPSAtMTsKKwl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIoaWRr ZXksIGkpKSA+PSAwKQorCXsKKwkJaW50CQkJYXR0bnVtID0gaSArIEZpcnN0TG93SW52YWxpZEhl YXBBdHRyaWJ1dGVOdW1iZXI7CisKKwkJaWYgKCFBdHRyTnVtYmVySXNGb3JVc2VyRGVmaW5lZEF0 dHIoYXR0bnVtKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb2dpY2FsIHJl cGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgdXNlcyAiCisJCQkJCQkJInN5c3Rl bSBjb2x1bW5zIGluIFJFUExJQ0EgSURFTlRJVFkgaW5kZXgiLAorCQkJCQkJCXJlbW90ZXJlbC0+ bnNwbmFtZSwgcmVtb3RlcmVsLT5yZWxuYW1lKSkpOworCisJCWF0dG51bSA9IEF0dHJOdW1iZXJH ZXRBdHRyT2Zmc2V0KGF0dG51bSk7CisKKwkJaWYgKGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0 dG51bV0gPCAwIHx8CisJCQkhYm1zX2lzX21lbWJlcihlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1th dHRudW1dLCByZW1vdGVyZWwtPmF0dGtleXMpKQorCQl7CisJCQllbnRyeS0+dXBkYXRhYmxlID0g ZmFsc2U7CisJCQlicmVhazsKKwkJfQorCX0KK30KKwogLyoKICAqIE9wZW4gdGhlIGxvY2FsIHJl bGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVtb3RlIG9uZS4KICAqCkBAIC0zMDcsNyArMzcz LDYgQEAgbG9naWNhbHJlcF9yZWxfb3BlbihMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQsIExPQ0tN T0RFIGxvY2ttb2RlKQogCWlmICghZW50cnktPmxvY2FscmVsdmFsaWQpCiAJewogCQlPaWQJCQly ZWxpZDsKLQkJQml0bWFwc2V0ICAqaWRrZXk7CiAJCVR1cGxlRGVzYwlkZXNjOwogCQlNZW1vcnlD b250ZXh0IG9sZGN0eDsKIAkJaW50CQkJaTsKQEAgLTM2NSw1NSArNDMwLDggQEAgbG9naWNhbHJl cF9yZWxfb3BlbihMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQog CQkvKiBiZSB0aWR5ICovCiAJCWJtc19mcmVlKG1pc3NpbmdhdHRzKTsKIAotCQkvKgotCQkgKiBD aGVjayB0aGF0IHJlcGxpY2EgaWRlbnRpdHkgbWF0Y2hlcy4gV2UgYWxsb3cgZm9yIHN0cmljdGVy IHJlcGxpY2EKLQkJICogaWRlbnRpdHkgKGZld2VyIGNvbHVtbnMpIG9uIHN1YnNjcmliZXIgYXMg dGhhdCB3aWxsIG5vdCBzdG9wIHVzCi0JCSAqIGZyb20gZmluZGluZyB1bmlxdWUgdHVwbGUuIElF LCBpZiBwdWJsaXNoZXIgaGFzIGlkZW50aXR5Ci0JCSAqIChpZCx0aW1lc3RhbXApIGFuZCBzdWJz Y3JpYmVyIGp1c3QgKGlkKSB0aGlzIHdpbGwgbm90IGJlIGEgcHJvYmxlbSwKLQkJICogYnV0IGlu IHRoZSBvcHBvc2l0ZSBzY2VuYXJpbyBpdCB3aWxsLgotCQkgKgotCQkgKiBEb24ndCB0aHJvdyBh bnkgZXJyb3IgaGVyZSBqdXN0IG1hcmsgdGhlIHJlbGF0aW9uIGVudHJ5IGFzIG5vdAotCQkgKiB1 cGRhdGFibGUsIGFzIHJlcGxpY2EgaWRlbnRpdHkgaXMgb25seSBmb3IgdXBkYXRlcyBhbmQgZGVs ZXRlcyBidXQKLQkJICogaW5zZXJ0cyBjYW4gYmUgcmVwbGljYXRlZCBldmVuIHdpdGhvdXQgaXQu Ci0JCSAqLwotCQllbnRyeS0+dXBkYXRhYmxlID0gdHJ1ZTsKLQkJaWRrZXkgPSBSZWxhdGlvbkdl dEluZGV4QXR0ckJpdG1hcChlbnRyeS0+bG9jYWxyZWwsCi0JCQkJCQkJCQkJICAgSU5ERVhfQVRU Ul9CSVRNQVBfSURFTlRJVFlfS0VZKTsKLQkJLyogZmFsbGJhY2sgdG8gUEsgaWYgbm8gcmVwbGlj YSBpZGVudGl0eSAqLwotCQlpZiAoaWRrZXkgPT0gTlVMTCkKLQkJewotCQkJaWRrZXkgPSBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcChlbnRyeS0+bG9jYWxyZWwsCi0JCQkJCQkJCQkJCSAgIElO REVYX0FUVFJfQklUTUFQX1BSSU1BUllfS0VZKTsKLQotCQkJLyoKLQkJCSAqIElmIG5vIHJlcGxp Y2EgaWRlbnRpdHkgaW5kZXggYW5kIG5vIFBLLCB0aGUgcHVibGlzaGVkIHRhYmxlCi0JCQkgKiBt dXN0IGhhdmUgcmVwbGljYSBpZGVudGl0eSBGVUxMLgotCQkJICovCi0JCQlpZiAoaWRrZXkgPT0g TlVMTCAmJiByZW1vdGVyZWwtPnJlcGxpZGVudCAhPSBSRVBMSUNBX0lERU5USVRZX0ZVTEwpCi0J CQkJZW50cnktPnVwZGF0YWJsZSA9IGZhbHNlOwotCQl9Ci0KLQkJaSA9IC0xOwotCQl3aGlsZSAo KGkgPSBibXNfbmV4dF9tZW1iZXIoaWRrZXksIGkpKSA+PSAwKQotCQl7Ci0JCQlpbnQJCQlhdHRu dW0gPSBpICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKLQotCQkJaWYgKCFB dHRyTnVtYmVySXNGb3JVc2VyRGVmaW5lZEF0dHIoYXR0bnVtKSkKLQkJCQllcmVwb3J0KEVSUk9S LAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCi0JCQkJCQkgZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBc IiVzLiVzXCIgdXNlcyAiCi0JCQkJCQkJCSJzeXN0ZW0gY29sdW1ucyBpbiBSRVBMSUNBIElERU5U SVRZIGluZGV4IiwKLQkJCQkJCQkJcmVtb3RlcmVsLT5uc3BuYW1lLCByZW1vdGVyZWwtPnJlbG5h bWUpKSk7Ci0KLQkJCWF0dG51bSA9IEF0dHJOdW1iZXJHZXRBdHRyT2Zmc2V0KGF0dG51bSk7Ci0K LQkJCWlmIChlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dIDwgMCB8fAotCQkJCSFibXNf aXNfbWVtYmVyKGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG51bV0sIHJlbW90ZXJlbC0+YXR0 a2V5cykpCi0JCQl7Ci0JCQkJZW50cnktPnVwZGF0YWJsZSA9IGZhbHNlOwotCQkJCWJyZWFrOwot CQkJfQotCQl9CisJCS8qIENoZWNrIHRoYXQgcmVwbGljYSBpZGVudGl0eSBtYXRjaGVzLiAqLwor CQlsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJsZShlbnRyeSk7CiAKIAkJZW50cnktPmxvY2Fs cmVsdmFsaWQgPSB0cnVlOwogCX0KQEAgLTQ4Niw2ICs1MDQsNDAgQEAgbG9naWNhbHJlcF9wYXJ0 bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogCX0KIH0KIAorLyoKKyAq IFJlc2V0IHRoZSBlbnRyaWVzIGluIHRoZSBwYXJ0aXRpb24gbWFwIHRoYXQgcmVmZXIgdG8gcmVt b3RlcmVsLgorICoKKyAqIENhbGxlZCB3aGVuIG5ldyByZWxhdGlvbiBtYXBwaW5nIGlzIHNlbnQg YnkgdGhlIHB1Ymxpc2hlciB0byB1cGRhdGUgb3VyCisgKiBleHBlY3RlZCB2aWV3IG9mIGluY29t aW5nIGRhdGEgZnJvbSBzYWlkIHB1Ymxpc2hlci4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3Qg dXBkYXRlIHRoZSByZW1vdGVyZWwgaW5mb3JtYXRpb24gaW4gdGhlIGVudHJ5IGhlcmUsCisgKiB3 ZSB3aWxsIHVwZGF0ZSB0aGUgaW5mb3JtYXRpb24gaW4gbG9naWNhbHJlcF9wYXJ0aXRpb25fb3Bl biB0byBhdm9pZAorICogdW5uZWNlc3Nhcnkgd29yay4KKyAqLwordm9pZAorbG9naWNhbHJlcF9w YXJ0bWFwX3Jlc2V0X3JlbG1hcChMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90ZXJlbCkKK3sKKwlI QVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCUxvZ2ljYWxSZXBQYXJ0TWFwRW50cnkgKnBhcnRfZW50 cnk7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeTsKKworCWlmIChMb2dpY2FsUmVwUGFy dE1hcCA9PSBOVUxMKQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvZ2lj YWxSZXBQYXJ0TWFwKTsKKwl3aGlsZSAoKHBhcnRfZW50cnkgPSAoTG9naWNhbFJlcFBhcnRNYXBF bnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJeworCQllbnRyeSA9 ICZwYXJ0X2VudHJ5LT5yZWxtYXBlbnRyeTsKKworCQlpZiAoZW50cnktPnJlbW90ZXJlbC5yZW1v dGVpZCAhPSByZW1vdGVyZWwtPnJlbW90ZWlkKQorCQkJY29udGludWU7CisKKwkJbG9naWNhbHJl cF9yZWxtYXBfZnJlZV9lbnRyeShlbnRyeSk7CisKKwkJbWVtc2V0KGVudHJ5LCAwLCBzaXplb2Yo TG9naWNhbFJlcFJlbE1hcEVudHJ5KSk7CisJfQorfQorCiAvKgogICogSW5pdGlhbGl6ZSB0aGUg cGFydGl0aW9uIG1hcCBjYWNoZS4KICAqLwpAQCAtNjE3LDcgKzY2OSw4IEBAIGxvZ2ljYWxyZXBf cGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyb290LAogCQkJICAgYXR0cm1h cC0+bWFwbGVuICogc2l6ZW9mKEF0dHJOdW1iZXIpKTsKIAl9CiAKLQllbnRyeS0+dXBkYXRhYmxl ID0gcm9vdC0+dXBkYXRhYmxlOworCS8qIENoZWNrIHRoYXQgcmVwbGljYSBpZGVudGl0eSBtYXRj aGVzLiAqLworCWxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKGVudHJ5KTsKIAogCWVudHJ5 LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMKaW5kZXggM2Y4ZGVhMGZjMS4uZGFjODVhNDEwMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0xODAzLDYgKzE4MDMsOSBAQCBhcHBseV9oYW5k bGVfcmVsYXRpb24oU3RyaW5nSW5mbyBzKQogCiAJcmVsID0gbG9naWNhbHJlcF9yZWFkX3JlbChz KTsKIAlsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUocmVsKTsKKworCS8qIEFsc28gcmVzZXQgYWxs IGVudHJpZXMgaW4gdGhlIHBhcnRpdGlvbiBtYXAgdGhhdCByZWZlciB0byByZW1vdGVyZWwuICov CisJbG9naWNhbHJlcF9wYXJ0bWFwX3Jlc2V0X3JlbG1hcChyZWwpOwogfQogCiAvKgpAQCAtMjM1 OSw2ICsyMzYyLDggQEAgYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcoQXBwbHlFeGVjdXRpb25E YXRhICplZGF0YSwKIAlUdXBsZVRhYmxlU2xvdCAqcmVtb3Rlc2xvdF9wYXJ0OwogCVR1cGxlQ29u dmVyc2lvbk1hcCAqbWFwOwogCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCUxvZ2ljYWxSZXBSZWxN YXBFbnRyeSAqcGFydF9lbnRyeSA9IE5VTEw7CisJQXR0ck1hcAkgICAqYXR0cm1hcCA9IE5VTEw7 CiAKIAkvKiBNb2RpZnlUYWJsZVN0YXRlIGlzIG5lZWRlZCBmb3IgRXhlY0ZpbmRQYXJ0aXRpb24o KS4gKi8KIAllZGF0YS0+bXRzdGF0ZSA9IG10c3RhdGUgPSBtYWtlTm9kZShNb2RpZnlUYWJsZVN0 YXRlKTsKQEAgLTIzOTAsOCArMjM5NSwxMSBAQCBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGluZyhB cHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQlyZW1vdGVzbG90X3BhcnQgPSB0YWJsZV9zbG90 X2NyZWF0ZShwYXJ0cmVsLCAmZXN0YXRlLT5lc190dXBsZVRhYmxlKTsKIAltYXAgPSBwYXJ0cmVs aW5mby0+cmlfUm9vdFRvUGFydGl0aW9uTWFwOwogCWlmIChtYXAgIT0gTlVMTCkKLQkJcmVtb3Rl c2xvdF9wYXJ0ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KG1hcC0+YXR0ck1hcCwgcmVtb3Rlc2xv dCwKKwl7CisJCWF0dHJtYXAgPSBtYXAtPmF0dHJNYXA7CisJCXJlbW90ZXNsb3RfcGFydCA9IGV4 ZWN1dGVfYXR0cl9tYXBfc2xvdChhdHRybWFwLCByZW1vdGVzbG90LAogCQkJCQkJCQkJCQkJcmVt b3Rlc2xvdF9wYXJ0KTsKKwl9CiAJZWxzZQogCXsKIAkJcmVtb3Rlc2xvdF9wYXJ0ID0gRXhlY0Nv cHlTbG90KHJlbW90ZXNsb3RfcGFydCwgcmVtb3Rlc2xvdCk7CkBAIC0yMzk5LDYgKzI0MDcsMTQg QEAgYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwK IAl9CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiAKKwkvKiBDaGVjayBpZiB3ZSBj YW4gZG8gdGhlIHVwZGF0ZSBvciBkZWxldGUgb24gdGhlIGxlYWYgcGFydGl0aW9uLiAqLworCWlm KG9wZXJhdGlvbiA9PSBDTURfVVBEQVRFIHx8IG9wZXJhdGlvbiA9PSBDTURfREVMRVRFKQorCXsK KwkJcGFydF9lbnRyeSA9IGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4ocmVsbWFwZW50cnksIHBh cnRyZWwsCisJCQkJCQkJCQkJCSAgIGF0dHJtYXApOworCQljaGVja19yZWxhdGlvbl91cGRhdGFi bGUocGFydF9lbnRyeSk7CisJfQorCiAJc3dpdGNoIChvcGVyYXRpb24pCiAJewogCQljYXNlIENN RF9JTlNFUlQ6CkBAIC0yNDIwLDE1ICsyNDM2LDEwIEBAIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0 aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCQkgKiBzdWl0YWJsZSBwYXJ0aXRpb24u CiAJCQkgKi8KIAkJCXsKLQkJCQlBdHRyTWFwICAgICphdHRybWFwID0gbWFwID8gbWFwLT5hdHRy TWFwIDogTlVMTDsKLQkJCQlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnBhcnRfZW50cnk7CiAJCQkJ VHVwbGVUYWJsZVNsb3QgKmxvY2Fsc2xvdDsKIAkJCQlSZXN1bHRSZWxJbmZvICpwYXJ0cmVsaW5m b19uZXc7CiAJCQkJYm9vbAkJZm91bmQ7CiAKLQkJCQlwYXJ0X2VudHJ5ID0gbG9naWNhbHJlcF9w YXJ0aXRpb25fb3BlbihyZWxtYXBlbnRyeSwgcGFydHJlbCwKLQkJCQkJCQkJCQkJCQkgICBhdHRy bWFwKTsKLQogCQkJCS8qIEdldCB0aGUgbWF0Y2hpbmcgbG9jYWwgdHVwbGUgZnJvbSB0aGUgcGFy dGl0aW9uLiAqLwogCQkJCWZvdW5kID0gRmluZFJlcGxUdXBsZUluTG9jYWxSZWwoZXN0YXRlLCBw YXJ0cmVsLAogCQkJCQkJCQkJCQkJJnBhcnRfZW50cnktPnJlbW90ZXJlbCwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKaW5kZXggN2JmOGNkMjJiZC4uNzhjZDdlNzdm NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKQEAgLTM4LDYg KzM4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVudHJ5CiB9IExvZ2ljYWxS ZXBSZWxNYXBFbnRyeTsKIAogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWxtYXBfdXBkYXRlKExv Z2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcGFy dG1hcF9yZXNldF9yZWxtYXAoTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwpOwogCiBleHRl cm4gTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpsb2dpY2FscmVwX3JlbF9vcGVuKExvZ2ljYWxSZXBS ZWxJZCByZW1vdGVpZCwKIAkJCQkJCQkJCQkJCSAgTE9DS01PREUgbG9ja21vZGUpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEzX3BhcnRpdGlvbi5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxM19wYXJ0aXRpb24ucGwKaW5kZXggMDZmOTIxNTAxOC4uZTA3YTky MTdkNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEzX3BhcnRpdGlvbi5w bAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTNfcGFydGl0aW9uLnBsCkBAIC04NTMs NCArODUzLDMzIEBAICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyMi0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIlNFTEVDVCBhLCBiLCBjIEZST00gdGFiNSBPUkRFUiBCWSAxIik7CiBpcygkcmVz dWx0LCBxcSgzfDF8KSwgJ3VwZGF0ZXMgb2YgdGFiNSByZXBsaWNhdGVkIGNvcnJlY3RseSBhZnRl ciBhbHRlcmluZyB0YWJsZSBvbiBzdWJzY3JpYmVyJyk7CiAKKyMgVGVzdCB0aGF0IHJlcGxpY2F0 aW9uIGludG8gdGhlIHBhcnRpdGlvbmVkIHRhcmdldCB0YWJsZSBjb250aW51ZXMgdG8KKyMgd29y ayBjb3JyZWN0bHkgd2hlbiB0aGUgcHVibGlzaGVkIHRhYmxlIGlzIGFsdGVyZWQuCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxeworCUFMVEVSIFRBQkxFIHRhYjUg RFJPUCBDT0xVTU4gYiwgQUREIENPTFVNTiBjIElOVDsKKwlBTFRFUiBUQUJMRSB0YWI1IEFERCBD T0xVTU4gYiBJTlQ7fSk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJVUERBVEUgdGFiNSBTRVQgYyA9IDEgV0hFUkUgYSA9IDMiKTsKKworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCdzdWIyJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy Mi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBhLCBiLCBjIEZST00gdGFiNSBPUkRF UiBCWSAxIik7CitpcygkcmVzdWx0LCBxcSgzfHwxKSwgJ3VwZGF0ZXMgb2YgdGFiNSByZXBsaWNh dGVkIGNvcnJlY3RseSBhZnRlciBhbHRlcmluZyB0YWJsZSBvbiBwdWJsaXNoZXInKTsKKworIyBB bHRlciBSRVBMSUNBIElERU5USVRZIG9uIHN1YnNjcmliZXIuCisjIE5vIFJFUExJQ0EgSURFTlRJ VFkgaW4gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIG9uIHN1YnNjcmliZXIsIGJ1dCB3aGF0IHdlIGNo ZWNrCisjIGlzIHRoZSBwYXJ0aXRpb24sIHNvIGl0IHdvcmtzIGZpbmUuCiskbm9kZV9zdWJzY3Jp YmVyMi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRhYjUgUkVQTElDQSBJ REVOVElUWSBOT1RISU5HIik7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJVUERBVEUgdGFiNSBTRVQgYSA9IDQgV0hFUkUgYSA9IDMiKTsKKworJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWIyJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyMi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBhLCBiLCBjIEZST00gdGFiNV8x IE9SREVSIEJZIDEiKTsKK2lzKCRyZXN1bHQsIHFxKDR8fDEpLCAndXBkYXRlcyBvZiB0YWI1IHJl cGxpY2F0ZWQgY29ycmVjdGx5Jyk7CisKIGRvbmVfdGVzdGluZygpOwotLSAKMi4yMy4wLndpbmRv d3MuMQoK --_006_OS3PR01MB6275C4679CFE3414340A259B9EAD9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v11-0004-Add-some-checks-before-using-apply-background-wo.patch" Content-Description: v11-0004-Add-some-checks-before-using-apply-background-wo.patch Content-Disposition: attachment; filename="v11-0004-Add-some-checks-before-using-apply-background-wo.patch"; size=35791; creation-date="Wed, 15 Jun 2022 08:24:00 GMT"; modification-date="Wed, 15 Jun 2022 08:26:39 GMT" Content-Transfer-Encoding: base64 RnJvbSA5M2YwZTBlNTgwNDQwNDg2MDU2MGQyOTQ0YzA0ZDgwY2ZhNjg5ZjAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog VHVlLCAxNCBKdW4gMjAyMiAxMToyMzo1MiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjExIDQvNV0g QWRkIHNvbWUgY2hlY2tzIGJlZm9yZSB1c2luZyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcgogdG8g YXBwbHkgY2hhbmdlcy4KCklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoZWNrcyBhcmUgdmlvbGF0 ZWQsIGFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQuCjEuIFRoZSB1bmlxdWUgY29sdW1ucyBiZXR3 ZWVuIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBhcmUgZGlmZmVyZW5jZS4KMi4gVGhlcmUgaXMg YW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb24gcHJlc2VudCBpbiBleHByZXNzaW9uIGluCnN1YnNj cmliZXIncyByZWxhdGlvbi4gQ2hlY2sgZnJvbSB0aGUgZm9sbG93aW5nIDMgaXRlbXM6CiAgIGEu IFRoZSBmdW5jdGlvbiBpbiB0cmlnZ2VyczsKICAgYi4gQ29sdW1uIGRlZmF1bHQgdmFsdWUgZXhw cmVzc2lvbnMgYW5kIGRvbWFpbiBjb25zdHJhaW50czsKICAgYy4gQ29uc3RyYWludCBleHByZXNz aW9ucy4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAg fCAgIDQgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jICAgICAgIHwg IDQ1ICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgfCAg NjIgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgICAgfCAx OTggKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5j ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAg IHwgIDE1ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAgICAg fCAgMTcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oICAgICB8ICAx NiArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaCAgICAgICAgICAgICAgICAgIHwgICAyICsK IC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCAgICB8ICAgNyArCiAu Li4vc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbCAgICAgfCAzOTEgKysrKysr KysrKysrKysrKysrCiAxMyBmaWxlcyBjaGFuZ2VkLCA3NTIgaW5zZXJ0aW9ucygrKSwgOCBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJf c3RyZWFtaW5nX2FwcGx5LnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24u c2dtbAppbmRleCBkNGNhYWUwMjIyLi44ZGUxYTIzY2U0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjQwLDYgKzI0MCwxMCBAQCBDUkVBVEUgU1VCU0NS SVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwv cmVwbGFjZWFibAogICAgICAgICAgIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUg dGhhdCBpZiBhbiBlcnJvciBoYXBwZW5zIHdoZW4KICAgICAgICAgICBhcHBseWluZyBjaGFuZ2Vz IGluIGEgYmFja2dyb3VuZCB3b3JrZXIsIGl0IG1pZ2h0IG5vdCByZXBvcnQgdGhlCiAgICAgICAg ICAgZmluaXNoIExTTiBvZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uIGluIHRoZSBzZXJ2ZXIgbG9n LgorICAgICAgICAgIFRvIHJ1biBpbiB0aGlzIG1vZGUsIHRoZXJlIGFyZSBmb2xsb3dpbmcgdHdv IHJlcXVpcmVtZW50cy4gVGhlIGZpcnN0CisgICAgICAgICAgaXMgdGhhdCB0aGUgdW5pcXVlIGNv bHVtbiBzaG91bGQgYmUgdGhlIHNhbWUgYmV0d2VlbiBwdWJsaXNoZXIgYW5kCisgICAgICAgICAg c3Vic2NyaWJlcjsgdGhlIHNlY29uZCBpcyB0aGF0IHRoZXJlIHNob3VsZCBub3QgYmUgYW55IG5v bi1pbW11dGFibGUKKyAgICAgICAgICBmdW5jdGlvbiBpbiBzdWJzY3JpYmVyLXNpZGUgcmVwbGlj YXRlZCB0YWJsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHliZ3dyb2tlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9h cHBseWJnd3Jva2VyLmMKaW5kZXggMWY1MmIxNTVkNy4uN2QzYzYxYzJlOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMKQEAgLTc2MywzICs3 NjMsNDggQEAgYXBwbHlfYmd3b3JrZXJfc3VieGFjdF9pbmZvX2FkZChUcmFuc2FjdGlvbklkIGN1 cnJlbnRfeGlkKQogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIAl9CiB9CisKKy8q CisgKiBDaGVjayBpZiBjaGFuZ2VzIG9uIHRoaXMgbG9naWNhbCByZXBsaWNhdGlvbiByZWxhdGlv biBjYW4gYmUgYXBwbGllZCBieQorICogYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisgKgorICog QWx0aG91Z2ggd2UgbWFpbnRhaW5zIHRoZSBjb21taXQgb3JkZXIgYnkgYWxsb3dpbmcgb25seSBv bmUgcHJvY2VzcyB0bworICogY29tbWl0IGF0IGEgdGltZSwgb3VyIGFjY2VzcyBvcmRlciB0byB0 aGUgcmVsYXRpb24gaGFzIGNoYW5nZWQuCisgKiBUaGlzIGNvdWxkIGNhdXNlIHVuZXhwZWN0ZWQg cHJvYmxlbXMgaWYgdGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhlIHJlcGxpY2F0ZWQKKyAqIHRhYmxl IGlzIGluY29uc2lzdGVudCB3aXRoIHRoZSBwdWJsaXNoZXItc2lkZSBvciBjb250YWlucyBub24t aW1tdXRhYmxlCisgKiBmdW5jdGlvbnMgd2hlbiBhcHBseWluZyB0cmFuc2FjdGlvbnMgaW4gdGhl IGFwcGx5IGJhY2tncm91bmQgd29ya2VyLgorICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9yZWxh dGlvbl9jaGVjayhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKK3sKKwkvKiBDaGVjayBvbmx5 IHdlIGFyZSBpbiBhcHBseSBiZ3dvcmtlci4gKi8KKwlpZiAoIWFtX2FwcGx5X2Jnd29ya2VyKCkp CisJCXJldHVybjsKKworCS8qCisJICogSWYgaXQgaXMgYSBwYXJ0aXRpb25lZCB0YWJsZSwgd2Ug ZG8gbm90IGNoZWNrIGl0LCB3ZSB3aWxsIGNoZWNrIGl0cworCSAqIHBhcnRpdGlvbiBsYXRlci4K KwkgKi8KKwlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFS VElUSU9ORURfVEFCTEUpCisJCXJldHVybjsKKworCS8qCisJICogSWYgYW55IHVuaXF1ZSBpbmRl eCBleGlzdCwgY2hlY2sgdGhhdCB0aGV5IGFyZSBzYW1lIGFzIHJlbW90ZXJlbC4KKwkgKi8KKwlp ZiAoIXJlbC0+c2FtZXVuaXF1ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY2Fubm90IHJlcGxpY2F0 ZSByZWxhdGlvbiB3aXRoIGRpZmZlcmVudCB1bmlxdWUgaW5kZXgiKSwKKwkJCQkgZXJyaGludCgi UGxlYXNlIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG9wdGlvbiB0byAnb24nIGluc3RlYWQgb2YgJ2Fw cGx5Jy4iKSkpOworCisJLyoKKwkgKiBDaGVjayBpZiB0aGVyZSBpcyBhbnkgbm9uLWltbXV0YWJs ZSBmdW5jdGlvbiBwcmVzZW50IGluIGV4cHJlc3Npb24gaW4KKwkgKiB0aGlzIHJlbGF0aW9uLgor CSAqLworCWlmIChyZWwtPnZvbGF0aWxpdHkgPT0gRlVOQ1RJT05fTk9OSU1NVVRBQkxFKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBs ZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiIpLAorCQkJCSBlcnJoaW50KCJQbGVhc2Ug Y2hhbmdlIHRoZSBzdHJlYW1pbmcgb3B0aW9uIHRvICdvbicgaW5zdGVhZCBvZiAnYXBwbHknLiIp KSk7CisKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJv dG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBhODg4 MDM4ZWI0Li42YWYzMzAyMjcwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90 by5jCkBAIC0yMyw3ICsyMyw4IEBACiAvKgogICogUHJvdG9jb2wgbWVzc2FnZSBmbGFncy4KICAq LwotI2RlZmluZSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFkgMQorI2RlZmluZSBMT0dJ Q0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFkJCTB4MDAwMQorI2RlZmluZSBMT0dJQ0FMUkVQX0lT X1VOSVFVRQkJCQkweDAwMDIKIAogI2RlZmluZSBNRVNTQUdFX1RSQU5TQUNUSU9OQUwgKDE8PDAp CiAjZGVmaW5lIFRSVU5DQVRFX0NBU0NBREUJCSgxPDwwKQpAQCAtOTMzLDExICs5MzQsNTUgQEAg bG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRt YXBzZXQgKmNvbHVtbnMpCiAJVHVwbGVEZXNjCWRlc2M7CiAJaW50CQkJaTsKIAl1aW50MTYJCW5s aXZlYXR0cyA9IDA7Ci0JQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEw7CisJQml0bWFwc2V0ICAq aWRhdHRycyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAlib29sCQlyZXBsaWRl bnRmdWxsOwogCiAJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIAorCWlmIChyZWwtPnJk X3JlbC0+cmVsaGFzaW5kZXgpCisJeworCQlMaXN0CSAgICppbmRleG9pZGxpc3QgPSBSZWxhdGlv bkdldEluZGV4TGlzdChyZWwpOworCQlMaXN0Q2VsbCAgICppbmRleG9pZHNjYW47CisKKwkJZm9y ZWFjaChpbmRleG9pZHNjYW4sIGluZGV4b2lkbGlzdCkKKwkJeworCQkJT2lkCQkJaW5kZXhvaWQg PSBsZmlyc3Rfb2lkKGluZGV4b2lkc2Nhbik7CisJCQlSZWxhdGlvbglpbmRleFJlbDsKKworCQkJ LyogTG9vayB1cCB0aGUgZGVzY3JpcHRpb24gZm9yIGluZGV4ICovCisJCQlpbmRleFJlbCA9IFJl bGF0aW9uSWRHZXRSZWxhdGlvbihpbmRleG9pZCk7CisKKwkJCWlmICghUmVsYXRpb25Jc1ZhbGlk KGluZGV4UmVsKSkKKwkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IG9wZW4gcmVsYXRpb24gd2l0 aCBPSUQgJXUiLCBpbmRleG9pZCk7CisKKwkJCWlmIChpbmRleFJlbC0+cmRfaW5kZXgtPmluZGlz dW5pcXVlKQorCQkJeworCQkJCWludAkJCWk7CisKKwkJCQkvKiBBZGQgcmVmZXJlbmNlZCBhdHRy aWJ1dGVzIHRvIGlkaW5kZXhhdHRycyAqLworCQkJCWZvciAoaSA9IDA7IGkgPCBpbmRleFJlbC0+ cmRfaW5kZXgtPmluZG5hdHRzOyBpKyspCisJCQkJeworCQkJCQlpbnQJCQlhdHRybnVtID0gaW5k ZXhSZWwtPnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOworCisJCQkJCS8qCisJCQkJCSAqIFdl IGRvbid0IGluY2x1ZGUgbm9uLWtleSBjb2x1bW5zIGludG8gaWRpbmRleGF0dHJzCisJCQkJCSAq IGJpdG1hcHMuIFNlZSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcC4KKwkJCQkJICovCisJCQkJ CWlmIChhdHRybnVtICE9IDApCisJCQkJCXsKKwkJCQkJCWlmIChpIDwgaW5kZXhSZWwtPnJkX2lu ZGV4LT5pbmRua2V5YXR0cyAmJgorCQkJCQkJCSFibXNfaXNfbWVtYmVyKGF0dHJudW0gLSBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLCBhdHR1bmlxdWUpKQorCQkJCQkJCWF0dHVu aXF1ZSA9IGJtc19hZGRfbWVtYmVyKGF0dHVuaXF1ZSwKKwkJCQkJCQkJCQkJCQkgICBhdHRybnVt IC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCQkJCX0KKwkJCQl9CisJ CQl9CisJCQlSZWxhdGlvbkNsb3NlKGluZGV4UmVsKTsKKwkJfQorCQlsaXN0X2ZyZWUoaW5kZXhv aWRsaXN0KTsKKwl9CisKIAkvKiBzZW5kIG51bWJlciBvZiBsaXZlIGF0dHJpYnV0ZXMgKi8KIAlm b3IgKGkgPSAwOyBpIDwgZGVzYy0+bmF0dHM7IGkrKykKIAl7CkBAIC05NzYsNiArMTAyMSwxMCBA QCBsb2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJp dG1hcHNldCAqY29sdW1ucykKIAkJCQkJCSAgaWRhdHRycykpCiAJCQlmbGFncyB8PSBMT0dJQ0FM UkVQX0lTX1JFUExJQ0FfSURFTlRJVFk7CiAKKwkJaWYgKGJtc19pc19tZW1iZXIoYXR0LT5hdHRu dW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAorCQkJCQkJICBhdHR1bmlx dWUpKQorCQkJZmxhZ3MgfD0gTE9HSUNBTFJFUF9JU19VTklRVUU7CisKIAkJcHFfc2VuZGJ5dGUo b3V0LCBmbGFncyk7CiAKIAkJLyogYXR0cmlidXRlIG5hbWUgKi8KQEAgLTEwMDEsNyArMTA1MCw4 IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRp b24gKnJlbCkKIAlpbnQJCQluYXR0czsKIAljaGFyCSAgKiphdHRuYW1lczsKIAlPaWQJCSAgICph dHR0eXBzOwotCUJpdG1hcHNldCAgKmF0dGtleXMgPSBOVUxMOworCUJpdG1hcHNldCAgKmF0dGtl eXMgPSBOVUxMLAorCQkJICAgKmF0dHVuaXF1ZSA9IE5VTEw7CiAKIAluYXR0cyA9IHBxX2dldG1z Z2ludChpbiwgMik7CiAJYXR0bmFtZXMgPSBwYWxsb2MobmF0dHMgKiBzaXplb2YoY2hhciAqKSk7 CkBAIC0xMDEyLDExICsxMDYyLDE0IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZv IGluLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkKIAl7CiAJCXVpbnQ4CQlmbGFnczsKIAotCQkv KiBDaGVjayBmb3IgcmVwbGljYSBpZGVudGl0eSBjb2x1bW4gKi8KKwkJLyogQ2hlY2sgZm9yIHJl cGxpY2EgaWRlbnRpdHkgYW5kIHVuaXF1ZSBjb2x1bW4gKi8KIAkJZmxhZ3MgPSBwcV9nZXRtc2di eXRlKGluKTsKIAkJaWYgKGZsYWdzICYgTE9HSUNBTFJFUF9JU19SRVBMSUNBX0lERU5USVRZKQog CQkJYXR0a2V5cyA9IGJtc19hZGRfbWVtYmVyKGF0dGtleXMsIGkpOwogCisJCWlmIChmbGFncyAm IExPR0lDQUxSRVBfSVNfVU5JUVVFKQorCQkJYXR0dW5pcXVlID0gYm1zX2FkZF9tZW1iZXIoYXR0 dW5pcXVlLCBpKTsKKwogCQkvKiBhdHRyaWJ1dGUgbmFtZSAqLwogCQlhdHRuYW1lc1tpXSA9IHBz dHJkdXAocHFfZ2V0bXNnc3RyaW5nKGluKSk7CiAKQEAgLTEwMzAsNiArMTA4Myw3IEBAIGxvZ2lj YWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkK IAlyZWwtPmF0dG5hbWVzID0gYXR0bmFtZXM7CiAJcmVsLT5hdHR0eXBzID0gYXR0dHlwczsKIAly ZWwtPmF0dGtleXMgPSBhdHRrZXlzOworCXJlbC0+YXR0dW5pcXVlID0gYXR0dW5pcXVlOwogCXJl bC0+bmF0dHMgPSBuYXR0czsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9y ZWxhdGlvbi5jCmluZGV4IDE4ZTY1N2NkZmUuLjhlMTdmOTUxMzcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTE5LDEyICsxOSwxOSBAQAogCiAjaW5j bHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlw dGlvbl9yZWwuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNpbmNsdWRl ICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJl bGF0aW9uLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5j bHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUu aCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCiAKIHN0YXRpYyBNZW1vcnlDb250ZXh0 IExvZ2ljYWxSZXBSZWxNYXBDb250ZXh0ID0gTlVMTDsKQEAgLTkxLDYgKzk4LDIzIEBAIGxvZ2lj YWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogCX0KIH0K IAorLyoKKyAqIFJlc2V0IHRoZSBmbGFnIHZvbGF0aWxpdHkgb2YgYWxsIGV4aXN0aW5nIGVudHJ5 IGluIHRoZSByZWxhdGlvbiBtYXAgY2FjaGUuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dpY2FscmVw X3JlbG1hcF9yZXNldF92b2xhdGlsaXR5X2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQz MiBoYXNodmFsdWUpCit7CisJSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOworCUxvZ2ljYWxSZXBS ZWxNYXBFbnRyeSAqZW50cnk7CisKKwlpZiAoTG9naWNhbFJlcFJlbE1hcCA9PSBOVUxMKQorCQly ZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgTG9naWNhbFJlcFJlbE1hcCk7CisJ d2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCQll bnRyeS0+dm9sYXRpbGl0eSA9IEZVTkNUSU9OX1VOS05PV047Cit9CisKIC8qCiAgKiBJbml0aWFs aXplIHRoZSByZWxhdGlvbiBtYXAgY2FjaGUuCiAgKi8KQEAgLTExNiw2ICsxNDAsOSBAQCBsb2dp Y2FscmVwX3JlbG1hcF9pbml0KHZvaWQpCiAJLyogV2F0Y2ggZm9yIGludmFsaWRhdGlvbiBldmVu dHMuICovCiAJQ2FjaGVSZWdpc3RlclJlbGNhY2hlQ2FsbGJhY2sobG9naWNhbHJlcF9yZWxtYXBf aW52YWxpZGF0ZV9jYiwKIAkJCQkJCQkJICAoRGF0dW0pIDApOworCUNhY2hlUmVnaXN0ZXJTeXNj YWNoZUNhbGxiYWNrKFBST0NPSUQsCisJCQkJCQkJCSAgbG9naWNhbHJlcF9yZWxtYXBfcmVzZXRf dm9sYXRpbGl0eV9jYiwKKwkJCQkJCQkJICAoRGF0dW0pIDApOwogfQogCiAvKgpAQCAtMTQyLDYg KzE2OSw3IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ZyZWVfZW50cnkoTG9naWNhbFJlcFJlbE1hcEVu dHJ5ICplbnRyeSkKIAkJcGZyZWUocmVtb3RlcmVsLT5hdHR0eXBzKTsKIAl9CiAJYm1zX2ZyZWUo cmVtb3RlcmVsLT5hdHRrZXlzKTsKKwlibXNfZnJlZShyZW1vdGVyZWwtPmF0dHVuaXF1ZSk7CiAK IAlpZiAoZW50cnktPmF0dHJtYXApCiAJCXBmcmVlKGVudHJ5LT5hdHRybWFwKTsKQEAgLTE5MCw2 ICsyMTgsNyBAQCBsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoTG9naWNhbFJlcFJlbGF0aW9uICpy ZW1vdGVyZWwpCiAJfQogCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50ID0gcmVtb3RlcmVsLT5y ZXBsaWRlbnQ7CiAJZW50cnktPnJlbW90ZXJlbC5hdHRrZXlzID0gYm1zX2NvcHkocmVtb3RlcmVs LT5hdHRrZXlzKTsKKwllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19jb3B5KHJlbW90 ZXJlbC0+YXR0dW5pcXVlKTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIH0KIApA QCAtMzE1LDYgKzM0NCwxNjIgQEAgbG9naWNhbHJlcF9yZWxfbWFya191cGRhdGFibGUoTG9naWNh bFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAl9CiB9CiAKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24g dG8gbWFyayBmbGFncyBmb3IgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgd2hlbiBvcGVuaW5nIHRo ZQorICogbG9jYWwgdGFibGUuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dpY2FscmVwX3JlbF9tYXJr X2FwcGx5X2Jnd29ya2VyKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCit7CisJQml0bWFw c2V0ICAgKnVrZXk7CisJaW50CQkJaTsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlpbnQJCQlhdHRu dW07CisJTGlzdAkgICAqZmtleXMgPSBOSUw7CisKKwkvKgorCSAqIENoZWNrIHRoYXQgdGhlIHVu aXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUgaXMKKwkg KiBhbHNvIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXItc2lkZS4KKwkgKi8KKwll bnRyeS0+c2FtZXVuaXF1ZSA9IHRydWU7CisJdWtleSA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0 bWFwKGVudHJ5LT5sb2NhbHJlbCwKKwkJCQkJCQkJCSAgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsK KworCWlmICh1a2V5KQorCXsKKwkJaSA9IC0xOworCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1i ZXIodWtleSwgaSkpID49IDApCisJCXsKKwkJCWludAkJCWF0dG51bSA9IGkgKyBGaXJzdExvd0lu dmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCisJCQlhdHRudW0gPSBBdHRyTnVtYmVyR2V0QXR0 ck9mZnNldChhdHRudW0pOworCisJCQlpZiAoZW50cnktPmF0dHJtYXAtPmF0dG51bXNbYXR0bnVt XSA8IDAgfHwKKwkJCQkhYm1zX2lzX21lbWJlcihlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRu dW1dLCBlbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSkpCisJCQl7CisJCQkJZW50cnktPnNhbWV1 bmlxdWUgPSBmYWxzZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCS8qCisJICogQ2hl Y2sgd2hldGhlciB0aGVyZSBpcyBhbnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBpbiB0aGUgbG9j YWwgdGFibGUuCisJICoKKwkgKiBhLiBUaGUgZnVuY3Rpb24gaW4gdHJpZ2dlcnM7CisJICogYi4g Q29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbnMgYW5kIGRvbWFpbiBjb25zdHJhaW50czsK KwkgKiBjLiBDb25zdHJhaW50IGV4cHJlc3Npb25zOworCSAqIGQuIEZvcmVpZ24ga2V5cy4KKwkg Ki8KKwlpZiAoZW50cnktPnZvbGF0aWxpdHkgIT0gRlVOQ1RJT05fVU5LTk9XTikKKwkJcmV0dXJu OworCisJLyogSW5pdGlhbGl6ZSB0aGUgZmxhZy4gKi8KKwllbnRyeS0+dm9sYXRpbGl0eSA9IEZV TkNUSU9OX0lNTVVUQUJMRTsKKworCS8qIENoZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9ucy4gKi8K KwlpZiAoZW50cnktPmxvY2FscmVsLT50cmlnZGVzYyAhPSBOVUxMKQorCXsKKwkJZm9yIChpID0g MDsgaSA8IGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCisJCXsK KwkJCVRyaWdnZXIgICAgKnRyaWcgPSBlbnRyeS0+bG9jYWxyZWwtPnRyaWdkZXNjLT50cmlnZ2Vy cyArIGk7CisKKwkJCWlmICh0cmlnLT50Z2VuYWJsZWQgIT0gVFJJR0dFUl9GSVJFU19BTFdBWVMg JiYKKwkJCQl0cmlnLT50Z2VuYWJsZWQgIT0gVFJJR0dFUl9GSVJFU19PTl9SRVBMSUNBKQorCQkJ CWNvbnRpbnVlOworCisJCQlpZiAoZnVuY192b2xhdGlsZSh0cmlnLT50Z2ZvaWQpICE9IFBST1ZP TEFUSUxFX0lNTVVUQUJMRSkKKwkJCXsKKwkJCQllbnRyeS0+dm9sYXRpbGl0eSA9IEZVTkNUSU9O X05PTklNTVVUQUJMRTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKwl9CisKKwkvKiBDaGVjayB0 aGUgY29sdW1ucy4gKi8KKwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihlbnRyeS0+bG9jYWxy ZWwpOworCWZvciAoYXR0bnVtID0gMDsgYXR0bnVtIDwgdHVwZGVzYy0+bmF0dHM7IGF0dG51bSsr KQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBh dHRudW0pOworCisJCS8qIFdlIGRvbid0IG5lZWQgaW5mbyBmb3IgZHJvcHBlZCBvciBnZW5lcmF0 ZWQgYXR0cmlidXRlcyAqLworCQlpZiAoYXR0LT5hdHRpc2Ryb3BwZWQgfHwgYXR0LT5hdHRnZW5l cmF0ZWQpCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBXZSBkb24ndCBuZWVkIHRvIGNoZWNr IGNvbHVtbnMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoZQorCQkgKiBzdWJzY3JpYmVyCisJCSAqLwor CQlpZiAoZW50cnktPmF0dHJtYXAtPmF0dG51bXNbYXR0bnVtXSA8IDApCisJCQljb250aW51ZTsK KworCQlpZiAoYXR0LT5hdHRoYXNkZWYpCisJCXsKKwkJCU5vZGUJICAgKmRlZmF1bHRleHByOwor CisJCQlkZWZhdWx0ZXhwciA9IGJ1aWxkX2NvbHVtbl9kZWZhdWx0KGVudHJ5LT5sb2NhbHJlbCwg YXR0bnVtICsgMSk7CisJCQlpZiAoY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucyhkZWZhdWx0ZXhw cikpCisJCQl7CisJCQkJZW50cnktPnZvbGF0aWxpdHkgPSBGVU5DVElPTl9OT05JTU1VVEFCTEU7 CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIGNvbHVtbiBpcyBv ZiBhIERPTUFJTiB0eXBlLCBkZXRlcm1pbmUgd2hldGhlcgorCQkgKiB0aGF0IGRvbWFpbiBoYXMg YW55IENIRUNLIGV4cHJlc3Npb25zIHRoYXQgYXJlIG5vdAorCQkgKiBpbW11dGFibGUuCisJCSAq LworCQlpZiAoZ2V0X3R5cHR5cGUoYXR0LT5hdHR0eXBpZCkgPT0gVFlQVFlQRV9ET01BSU4pCisJ CXsKKwkJCUxpc3QJICAgKmRvbWFpbl9jb25zdHJhaW50czsKKwkJCUxpc3RDZWxsICAgKmxjOwor CisJCQlkb21haW5fY29uc3RyYWludHMgPSBHZXREb21haW5Db25zdHJhaW50cyhhdHQtPmF0dHR5 cGlkKTsKKworCQkJZm9yZWFjaChsYywgZG9tYWluX2NvbnN0cmFpbnRzKQorCQkJeworCQkJCURv bWFpbkNvbnN0cmFpbnRTdGF0ZSAqY29uID0gKERvbWFpbkNvbnN0cmFpbnRTdGF0ZSAqKSBsZmly c3QobGMpOworCisJCQkJaWYgKGNvbi0+Y2hlY2tfZXhwciAmJiBjb250YWluX211dGFibGVfZnVu Y3Rpb25zKChOb2RlICopIGNvbi0+Y2hlY2tfZXhwcikpCisJCQkJeworCQkJCQllbnRyeS0+dm9s YXRpbGl0eSA9IEZVTkNUSU9OX05PTklNTVVUQUJMRTsKKwkJCQkJcmV0dXJuOworCQkJCX0KKwkJ CX0KKwkJfQorCX0KKworCisJLyogQ2hlY2sgdGhlIGNvbnN0cmFpbnRzLiAqLworCXR1cGRlc2Mg PSBSZWxhdGlvbkdldERlc2NyKGVudHJ5LT5sb2NhbHJlbCk7CisKKwlpZiAodHVwZGVzYy0+Y29u c3RyKQorCXsKKwkJQ29uc3RyQ2hlY2sgKmNoZWNrID0gdHVwZGVzYy0+Y29uc3RyLT5jaGVjazsK KworCQkvKgorCQkgKiBEZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBDSEVDSyBjb25zdHJhaW50 cyB3aGljaAorCQkgKiBjb250YWlucyBub24taW1tdXRhYmxlIGZ1bmN0aW9uLgorCQkgKi8KKwkJ Zm9yIChpID0gMDsgaSA8IHR1cGRlc2MtPmNvbnN0ci0+bnVtX2NoZWNrOyBpKyspCisJCXsKKwkJ CUV4cHIJICAgKmNoZWNrX2V4cHIgPSBzdHJpbmdUb05vZGUoY2hlY2tbaV0uY2NiaW4pOworCisJ CQlpZiAoY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucygoTm9kZSAqKSBjaGVja19leHByKSkKKwkJ CXsKKwkJCQllbnRyeS0+dm9sYXRpbGl0eSA9IEZVTkNUSU9OX05PTklNTVVUQUJMRTsKKwkJCQly ZXR1cm47CisJCQl9CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUgZm9yZWlnbiBrZXlzLiAqLwor CWZrZXlzID0gUmVsYXRpb25HZXRGS2V5TGlzdChlbnRyeS0+bG9jYWxyZWwpOworCWlmIChma2V5 cykKKwkJZW50cnktPnZvbGF0aWxpdHkgPSBGVU5DVElPTl9OT05JTU1VVEFCTEU7Cit9CisKIC8q CiAgKiBPcGVuIHRoZSBsb2NhbCByZWxhdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbW90ZSBv bmUuCiAgKgpAQCAtNDMzLDYgKzYxOCwxMiBAQCBsb2dpY2FscmVwX3JlbF9vcGVuKExvZ2ljYWxS ZXBSZWxJZCByZW1vdGVpZCwgTE9DS01PREUgbG9ja21vZGUpCiAJCS8qIENoZWNrIHRoYXQgcmVw bGljYSBpZGVudGl0eSBtYXRjaGVzLiAqLwogCQlsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJs ZShlbnRyeSk7CiAKKwkJLyoKKwkJICogU2V0IGZsYWdzIHRvIGNoZWNrIGxhdGVyIHdoZXRoZXIg Y2hhbmdlcyBjb3VsZCBiZSBhcHBsaWVkIGluIHRoZQorCQkgKiBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlci4KKwkJICovCisJCWxvZ2ljYWxyZXBfcmVsX21hcmtfYXBwbHlfYmd3b3JrZXIoZW50cnkp OworCiAJCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAl9CiAKQEAgLTYyOSw2ICs4MjAs NyBAQCBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcm9v dCwKIAkJfQogCQllbnRyeS0+cmVtb3RlcmVsLnJlcGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlk ZW50OwogCQllbnRyeS0+cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29weShyZW1vdGVyZWwtPmF0 dGtleXMpOworCQllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19jb3B5KHJlbW90ZXJl bC0+YXR0dW5pcXVlKTsKIAl9CiAKIAllbnRyeS0+bG9jYWxyZWwgPSBwYXJ0cmVsOwpAQCAtNjcy LDYgKzg2NCwxMiBAQCBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBF bnRyeSAqcm9vdCwKIAkvKiBDaGVjayB0aGF0IHJlcGxpY2EgaWRlbnRpdHkgbWF0Y2hlcy4gKi8K IAlsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJsZShlbnRyeSk7CiAKKwkvKgorCSAqIFNldCBm bGFncyB0byBjaGVjayBsYXRlciB3aGV0aGVyIGNoYW5nZXMgY291bGQgYmUgYXBwbGllZCBpbiB0 aGUgYXBwbHkKKwkgKiBiYWNrZ3JvdW5kIHdvcmtlci4KKwkgKi8KKwlsb2dpY2FscmVwX3JlbF9t YXJrX2FwcGx5X2Jnd29ya2VyKGVudHJ5KTsKKwogCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1 ZTsKIAogCS8qIHN0YXRlIGFuZCBzdGF0ZWxzbiBhcmUgbGVmdCBzZXQgdG8gMC4gKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDhmZmJhN2UyZTUu LjNjZGJmOGI0NTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv dGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5 bmMuYwpAQCAtODg0LDYgKzg4NCw3IEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5z cG5hbWUsIGNoYXIgKnJlbG5hbWUsCiAJbHJlbC0+YXR0bmFtZXMgPSBwYWxsb2MwKE1heFR1cGxl QXR0cmlidXRlTnVtYmVyICogc2l6ZW9mKGNoYXIgKikpOwogCWxyZWwtPmF0dHR5cHMgPSBwYWxs b2MwKE1heFR1cGxlQXR0cmlidXRlTnVtYmVyICogc2l6ZW9mKE9pZCkpOwogCWxyZWwtPmF0dGtl eXMgPSBOVUxMOworCWxyZWwtPmF0dHVuaXF1ZSA9IE5VTEw7CiAKIAkvKgogCSAqIFN0b3JlIHRo ZSBjb2x1bW5zIGFzIGEgbGlzdCBvZiBuYW1lcy4gIElnbm9yZSB0aG9zZSB0aGF0IGFyZSBub3QK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGRhYzg1YTQxMDEu LjY3NzA5NzNlMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpA QCAtMTkxOCw2ICsxOTE4LDggQEAgYXBwbHlfaGFuZGxlX2luc2VydChTdHJpbmdJbmZvIHMpCiAJ LyogU2V0IHJlbGF0aW9uIGZvciBlcnJvciBjYWxsYmFjayAqLwogCWFwcGx5X2Vycm9yX2NhbGxi YWNrX2FyZy5yZWwgPSByZWw7CiAKKwlhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhyZWwp OworCiAJLyogSW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJZWRhdGEgPSBjcmVh dGVfZWRhdGFfZm9yX3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRhdGEtPmVzdGF0ZTsKQEAg LTIwNTQsNiArMjA1Niw4IEBAIGFwcGx5X2hhbmRsZV91cGRhdGUoU3RyaW5nSW5mbyBzKQogCS8q IENoZWNrIGlmIHdlIGNhbiBkbyB0aGUgdXBkYXRlLiAqLwogCWNoZWNrX3JlbGF0aW9uX3VwZGF0 YWJsZShyZWwpOwogCisJYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8q IEluaXRpYWxpemUgdGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRh X2Zvcl9yZWxhdGlvbihyZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yMjIyLDYg KzIyMjYsOCBAQCBhcHBseV9oYW5kbGVfZGVsZXRlKFN0cmluZ0luZm8gcykKIAkvKiBDaGVjayBp ZiB3ZSBjYW4gZG8gdGhlIGRlbGV0ZS4gKi8KIAljaGVja19yZWxhdGlvbl91cGRhdGFibGUocmVs KTsKIAorCWFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkvKiBJbml0aWFs aXplIHRoZSBleGVjdXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0YV9mb3JfcmVs YXRpb24ocmVsKTsKIAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjQwNywxMyArMjQxMywx NCBAQCBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGluZyhBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRh LAogCX0KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIAorCXBhcnRfZW50cnkgPSBs b2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKHJlbG1hcGVudHJ5LCBwYXJ0cmVsLAorCQkJCQkJCQkJ CSAgIGF0dHJtYXApOworCisJYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2socGFydF9lbnRy eSk7CisKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8gdGhlIHVwZGF0ZSBvciBkZWxldGUgb24gdGhl IGxlYWYgcGFydGl0aW9uLiAqLwogCWlmKG9wZXJhdGlvbiA9PSBDTURfVVBEQVRFIHx8IG9wZXJh dGlvbiA9PSBDTURfREVMRVRFKQotCXsKLQkJcGFydF9lbnRyeSA9IGxvZ2ljYWxyZXBfcGFydGl0 aW9uX29wZW4ocmVsbWFwZW50cnksIHBhcnRyZWwsCi0JCQkJCQkJCQkJCSAgIGF0dHJtYXApOwog CQljaGVja19yZWxhdGlvbl91cGRhdGFibGUocGFydF9lbnRyeSk7Ci0JfQogCiAJc3dpdGNoIChv cGVyYXRpb24pCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2Fj aGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggODA4ZjllYmQw ZC4uYjI0ODg5OWQ4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2Fj aGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0yNTQwLDYg KzI1NDAsMjMgQEAgY29tcGFyZV92YWx1ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hl LCBPaWQgYXJnMSwgT2lkIGFyZzIpCiAJCXJldHVybiAwOwogfQogCisvKgorICogR2V0RG9tYWlu Q29uc3RyYWludHMgLS0tIGdldCBEb21haW5Db25zdHJhaW50U3RhdGUgbGlzdCBvZiBzcGVjaWZp ZWQgZG9tYWluIHR5cGUKKyAqLworTGlzdCAqCitHZXREb21haW5Db25zdHJhaW50cyhPaWQgdHlw ZV9pZCkKK3sKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CisJTGlzdAkJICAgKmNvbnN0cmFp bnRzID0gTklMOworCisJdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZSh0eXBlX2lkLCBUWVBF Q0FDSEVfRE9NQUlOX0NPTlNUUl9JTkZPKTsKKworCWlmKHR5cGVudHJ5LT5kb21haW5EYXRhICE9 IE5VTEwpCisJCWNvbnN0cmFpbnRzID0gdHlwZW50cnktPmRvbWFpbkRhdGEtPmNvbnN0cmFpbnRz OworCisJcmV0dXJuIGNvbnN0cmFpbnRzOworfQorCiAvKgogICogTG9hZCAob3IgcmUtbG9hZCkg dGhlIGVudW1EYXRhIG1lbWJlciBvZiB0aGUgdHlwY2FjaGUgZW50cnkuCiAgKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggN2JiYTc3YzllNy4uYTUwM2ViNjJjMiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTEwOCw2ICsxMDgsNyBA QCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVsYXRpb24KIAljaGFyCQlyZXBsaWRlbnQ7CQkv KiByZXBsaWNhIGlkZW50aXR5ICovCiAJY2hhcgkJcmVsa2luZDsJCS8qIHJlbW90ZSByZWxhdGlv biBraW5kICovCiAJQml0bWFwc2V0ICAqYXR0a2V5czsJCS8qIEJpdG1hcCBvZiBrZXkgY29sdW1u cyAqLworCUJpdG1hcHNldCAgKmF0dHVuaXF1ZTsJCS8qIEJpdG1hcCBvZiB1bmlxdWUgY29sdW1u cyAqLwogfSBMb2dpY2FsUmVwUmVsYXRpb247CiAKIC8qIFR5cGUgbWFwcGluZyBpbmZvICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCmluZGV4IDc4Y2Q3ZTc3ZjUu LjQ0NzZjZjdjZWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxy ZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5o CkBAIC0xNSw2ICsxNSwxNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9hdHRtYXAuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCIKIAorLyoKKyAqCVN0YXRlcyB0byBkZXRlcm1p bmUgdm9sYXRpbGl0eSBvZiB0aGUgZnVuY3Rpb24gaW4gZXhwcmVzc2lvbnMgaW4gb25lCisgKgly ZWxhdGlvbi4KKyAqLwordHlwZWRlZiBlbnVtIFJlbEZ1bmNWb2xhdGlsaXR5Cit7CisJRlVOQ1RJ T05fVU5LTk9XTiA9IDAsCS8qIGluaXRpYWxpemluZyAgKi8KKwlGVU5DVElPTl9JTU1VVEFCTEUs CQkvKiBhbGwgZnVuY3Rpb25zIGFyZSBpbW11dGFibGUgZnVuY3Rpb24gKi8KKwlGVU5DVElPTl9O T05JTU1VVEFCTEUJLyogYXQgbGVhc3Qgb25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gKi8KK30g UmVsRnVuY1ZvbGF0aWxpdHk7CisKIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRy eQogewogCUxvZ2ljYWxSZXBSZWxhdGlvbiByZW1vdGVyZWw7CS8qIGtleSBpcyByZW1vdGVyZWwu cmVtb3RlaWQgKi8KQEAgLTMxLDYgKzQyLDExIEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBS ZWxNYXBFbnRyeQogCVJlbGF0aW9uCWxvY2FscmVsOwkJLyogcmVsY2FjaGUgZW50cnkgKE5VTEwg d2hlbiBjbG9zZWQpICovCiAJQXR0ck1hcCAgICAqYXR0cm1hcDsJCS8qIG1hcCBvZiBsb2NhbCBh dHRyaWJ1dGVzIHRvIHJlbW90ZSBvbmVzICovCiAJYm9vbAkJdXBkYXRhYmxlOwkJLyogQ2FuIGFw cGx5IHVwZGF0ZXMvZGVsZXRlcz8gKi8KKwlib29sCQlzYW1ldW5pcXVlOwkJLyogQXJlIGFsbCB1 bmlxdWUgY29sdW1ucyBvZiB0aGUgbG9jYWwKKwkJCQkJCQkJICAgcmVsYXRpb24gY29udGFpbmVk IGJ5IHRoZSB1bmlxdWUgY29sdW1ucyBpbgorCQkJCQkJCQkgICByZW1vdGU/ICovCisJUmVsRnVu Y1ZvbGF0aWxpdHkJdm9sYXRpbGl0eTsJCS8qIGFsbCBmdW5jdGlvbnMgaW4gbG9jYWxyZWwgYXJl CisJCQkJCQkJCSAgIGltbXV0YWJsZSBmdW5jdGlvbj8gKi8KIAogCS8qIFN5bmMgc3RhdGUuICov CiAJY2hhcgkJc3RhdGU7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o CmluZGV4IDA4ZTYzZGUwMTMuLmRkNDlkOGUyZWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0xOTYsNiArMTk2LDcgQEAgZXh0ZXJuIHZvaWQgYXBwbHlf Ymd3b3JrZXJfZnJlZShBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSk7CiBleHRlcm4gdm9pZCBh cHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXModm9pZCk7CiBleHRlcm4gdm9pZCBhcHBseV9iZ3dv cmtlcl9zZXRfc3RhdHVzKEFwcGx5Qmd3b3JrZXJTdGF0dXMgc3RhdHVzKTsKIGV4dGVybiB2b2lk IGFwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hp ZCk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhMb2dpY2FsUmVw UmVsTWFwRW50cnkgKnJlbCk7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbAogYW1fdGFibGVzeW5jX3dv cmtlcih2b2lkKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKaW5kZXggNDMxYWQ3ZjFiMy4uZWQ3YzJlN2Y0OCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy90eXBjYWNoZS5oCkBAIC0xOTksNiArMTk5LDggQEAgZXh0ZXJuIHVpbnQ2NCBhc3Np Z25fcmVjb3JkX3R5cGVfaWRlbnRpZmllcihPaWQgdHlwZV9pZCwgaW50MzIgdHlwbW9kKTsKIAog ZXh0ZXJuIGludAljb21wYXJlX3ZhbHVlc19vZl9lbnVtKFR5cGVDYWNoZUVudHJ5ICp0Y2FjaGUs IE9pZCBhcmcxLCBPaWQgYXJnMik7CiAKK2V4dGVybiBMaXN0ICpHZXREb21haW5Db25zdHJhaW50 cyhPaWQgdHlwZV9pZCk7CisKIGV4dGVybiBzaXplX3QgU2hhcmVkUmVjb3JkVHlwbW9kUmVnaXN0 cnlFc3RpbWF0ZSh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgU2hhcmVkUmVjb3JkVHlwbW9kUmVnaXN0 cnlJbml0KFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5ICosCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IGI1MmFmNzRlMzUuLjgxNzkx YzhkM2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9j YXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNj YWRlLnBsCkBAIC0zOSw2ICszOSwxMyBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWJfQwogCQlTRVQgKHN0cmVhbWluZyA9ICRzdHJlYW1pbmdfbW9kZSki KTsKIAorCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ2FwcGx5JykKKwl7CisJCSRub2RlX0MtPnNh ZmVfcHNxbCgKKwkJCSdwb3N0Z3JlcycsICIKKwkJQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIg YyBEUk9QIERFRkFVTFQiKTsKKwl9CisKIAkjIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlz aCBpbml0aWFsaXphdGlvbgogCiAJJG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjg0YTY5MDBiMzMKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCkBAIC0wLDAgKzEs MzkxIEBACisjIENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKworIyBUZXN0IHRoZSByZXN0cmljdGlvbnMgb2Ygc3RyZWFtaW5nIG1vZGUgImFw cGx5IiBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7 Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitteSAkb2Zmc2V0ID0gMDsKKworIyBDcmVhdGUgcHVi bGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVh bWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywKKwknbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9IDY0a0InKTsKKyRub2Rl X3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVf c3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicp OworJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisj IFNldHVwIHN0cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYiAoYSBpbnQgcHJpbWFyeSBrZXks IGIgdmFyY2hhcikiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCAoYSBpbnQgcHJpbWFyeSBrZXksIGIg dmFyY2hhcikiKTsKKworIyBTZXR1cCBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlcgorIyBXZSBuZWVk IHRvIHRlc3Qgbm9ybWFsIHRhYmxlIGFuZCBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiIChhIGlu dCBwcmltYXJ5IGtleSwgYiB2YXJjaGFyKSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCAoYSBpbnQg cHJpbWFyeSBrZXksIGIgdmFyY2hhcikgUEFSVElUSU9OIEJZIFJBTkdFKGEpIik7Ciskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFi X3BhcnRpdGlvbiAoTElLRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCkiKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRp b25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlc3RfdGFiX3BhcnRpdGlvbiBERUZBVUxUIgorKTsKKwor IyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9k ZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBG T1IgVEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnRpdGlvbmVkIEZPUiBUQUJMRSB0 ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworCitteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCAiCisJQ1JFQVRFIFNVQlNDUklQ VElPTiB0YXBfc3ViCisJQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9u X25hbWU9JGFwcG5hbWUnCisJUFVCTElDQVRJT04gdGFwX3B1YiwgdGFwX3B1Yl9wYXJ0aXRpb25l ZAorCVdJVEggKHN0cmVhbWluZyA9IGFwcGx5LCBjb3B5X2RhdGEgPSBmYWxzZSkiKTsKKworJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBJdCBpcyBub3Qg YWxsb3dlZCB0aGF0IHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHB1Ymxpc2hlciBhbmQgdGhlIHN1 YnNjcmliZXIKKyMgaXMgZGlmZmVyZW50LiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFj a2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBGaXJzdCB3ZSBjaGVjayB0aGUgdW5pcXVl IGluZGV4IG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVYIHRlc3RfdGFiX2JfaWR4IE9OIHRlc3RfdGFi IChiKSIpOworCisjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0 cmVhbWluZyIgb3B0aW9uIGlzCisjIHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBs b29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcworIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3Jh cmlseSBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgorJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Cisk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIKKyk7CisKKyRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJHVyAjXGQrXF0gc3RhcnRlZC8sIDApOworJG5v ZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJImxvZ19taW5f bWVzc2FnZXMgPSB3YXJuaW5nIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisKKyRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogIGNhbm5vdCByZXBsaWNhdGUg cmVsYXRpb24gd2l0aCBkaWZmZXJlbnQgdW5pcXVlIGluZGV4LywKKwkkb2Zmc2V0KTsKKworIyBE cm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3Rh Yl9iX2lkeCIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCitteSAkcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoNTAw MCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcp OworCisjIFRoZW4gd2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBwYXJ0aXRpb24gdGFibGUu Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFV RSBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlvbl9pZHggT04gdGVzdF90YWJfcGFydGl0aW9uIChi KSIpOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQg PSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCisp OworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3Qg cmVwbGljYXRlIHJlbGF0aW9uIHdpdGggZGlmZmVyZW50IHVuaXF1ZSBpbmRleC8sCisJJG9mZnNl dCk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQg d29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5E RVggdGVzdF90YWJfYl9wYXJ0aXRpb25faWR4Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRp dGlvbmVkIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CisKKyMgVHJpZ2dlcnMgd2hpY2ggZXhlY3V0 ZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIGFyZSBub3QgYWxsb3dlZCBvbiB0aGUKKyMgc3Vic2Ny aWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIg aW4gdGhpcyBjYXNlLgorIyBGaXJzdCB3ZSBjaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbiBvbiBu b3JtYWwgdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXF7CitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jKCkgUkVUVVJOUyBUUklHR0VSIEFTIFwk XCQKKyAgQkVHSU4KKyAgICBSRVRVUk4gTlVMTDsKKyAgRU5ECitcJFwkIGxhbmd1YWdlIHBscGdz cWw7CitDUkVBVEUgVFJJR0dFUiBpbnNlcnRfdHJpZworQkVGT1JFIElOU0VSVCBPTiB0ZXN0X3Rh YgorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygpOworQUxURVIg VEFCTEUgdGVzdF90YWIgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiBpbnNlcnRfdHJpZzsKK30pOwor CisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAk bm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbi4gVGhl cmUgaXMgYXQgbGVhc3Qgb25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24vLAorCSRvZmZzZXQpOwor CisjIERyb3AgdGhlIHRyaWdnZXIgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5z ZXJ0X3RyaWcgT04gdGVzdF90YWIiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1 bHQsIHFxKDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcg dHJpZ2dlcicpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBwYXJ0aXRp b24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7 CitDUkVBVEUgVFJJR0dFUiBpbnNlcnRfdHJpZworQkVGT1JFIElOU0VSVCBPTiB0ZXN0X3RhYl9w YXJ0aXRpb24KK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmMoKTsK K0FMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBFTkFCTEUgUkVQTElDQSBUUklHR0VSIGlu c2VydF90cmlnOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRp b25lZCIpOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICBj YW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0 YWJsZSBmdW5jdGlvbi8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUg c3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkRST1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYl9wYXJ0aXRp b24iKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKwor JHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFx KDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJpZ2dl cicpOworCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhw cmVzc2lvbiBjb250YWlucyBhCisjIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gb24gdGhlIHN1YnNj cmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5CisjIGJhY2tncm91bmQgd29y a2VyIGluIHRoaXMgY2FzZS4KKyMgRmlyc3Qgd2UgY2hlY2sgdGhlIGNvbHVtbiBkZWZhdWx0IHZh bHVlIGV4cHJlc3Npb24gb24gbm9ybWFsIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBiIFNF VCBERUZBVUxUIHJhbmRvbSgpIik7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhp KSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogIGNh bm5vdCByZXBsaWNhdGUgcmVsYXRpb24uIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBub24taW1tdXRh YmxlIGZ1bmN0aW9uLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24gdGhl IHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYiBEUk9QIERF RkFVTFQiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAor CSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkZWZhdWx0IHZh bHVlIGV4cHJlc3Npb24nKTsKKworIyBUaGVuIHdlIGNoZWNrIHRoZSBjb2x1bW4gZGVmYXVsdCB2 YWx1ZSBleHByZXNzaW9uIG9uIHBhcnRpdGlvbiB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUxU RVIgQ09MVU1OIGIgU0VUIERFRkFVTFQgcmFuZG9tKCkiKTsKKworIyBDaGVjayB0aGUgc3Vic2Ny aWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9n ZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJU IElOVE8gdGVzdF90YWJfcGFydGl0aW9uZWQgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpIgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAorCXFyL0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbi4gVGhlcmUg aXMgYXQgbGVhc3Qgb25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24vLAorCSRvZmZzZXQpOworCisj IERyb3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3Rf dGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBEUk9QIERFRkFVTFQiKTsKKworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00g dGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4cHJl c3Npb24nKTsKKworIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGRvbWFpbiBjb25zdHJhaW50IGV4 cHJlc3Npb24gY29udGFpbnMgYSBub24taW1tdXRhYmxlCisjIGZ1bmN0aW9uIG9uIHRoZSBzdWJz Y3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kCisjIHdv cmtlciBpbiB0aGlzIGNhc2UuCisjIEJlY2F1c2UgdGhlIGNvbHVtbiB0eXBlIG9mIHRoZSBwYXJ0 aXRpb24gdGFibGUgbXVzdCBiZSB0aGUgc2FtZSBhcyBpdHMgcGFyZW50CisjIHRhYmxlLCBvbmx5 IHRlc3Qgbm9ybWFsIHRhYmxlIGhlcmUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRE9NQUlOIHRlc3RfZG9tYWluIEFTIGludCBDSEVDSyhW QUxVRSA+IHJhbmRvbSgpKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBhIFRZ UEUgdGVzdF9kb21haW47Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIik7 CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogIGNhbm5vdCBy ZXBsaWNhdGUgcmVsYXRpb24uIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBub24taW1tdXRhYmxlIGZ1 bmN0aW9uLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Np b24gb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4g YSBUWVBFIGludCIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoMCks CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGRvbWFpbiBj b25zdHJhaW50IGV4cHJlc3Npb24nCispOworCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29u c3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZSBmdW5jdGlvbgorIyBv biB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dy b3VuZCB3b3JrZXIgaW4gdGhpcworIyBjYXNlLgorIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29uc3Ry YWludCBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT05TVFJB SU5UIHRlc3RfdGFiX2NvbiBjaGVjayAoYSA+IHJhbmRvbSgpKTsKK30pOworCisjIENoZWNrIHRo ZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBh dCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi8sCisJJG9mZnNldCk7CisKKyMgRHJv cCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIgRFJP UCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMo JHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVy IGRyb3BwaW5nIGNvbnN0cmFpbnQgZXhwcmVzc2lvbicpOworCisjIFRoZW4gd2UgY2hlY2sgdGhl IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYl9w YXJ0aXRpb24gQUREIENPTlNUUkFJTlQgdGVzdF90YWJfY29uIGNoZWNrIChhID4gcmFuZG9tKCkp OworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwor Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVw bGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5j dGlvbi8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVy LCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3Rh Yl9jb24iKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQs IHFxKDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBj b25zdHJhaW50IGV4cHJlc3Npb24nKTsKKworIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGZvcmVp Z24ga2V5IG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvcgorIyByZXBvcnRl ZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIEZpcnN0IHdlIGNoZWNrIHRo ZSBmb3JlaWduIGtleSBvbiBub3JtYWwgdGFibGUuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgVEFCTEUgdGVzdF90YWJfZiAoYSBpbnQgcHJpbWFy eSBrZXkpOworQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTlNUUkFJTlQgdGVzdF90YWJmayBG T1JFSUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRlc3RfdGFiX2YoYSk7Cit9KTsKKworIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2Ny aWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1MDAwKSBzKGkpIgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKAorCXFyL0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbi4gVGhlcmUgaXMg YXQgbGVhc3Qgb25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24vLAorCSRvZmZzZXQpOworCisjIERy b3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3 b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBU QUJMRSB0ZXN0X3RhYiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJmayIpOworCiskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBz dWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRoZSBmb3JlaWduIGtleScpOworCisjIFRoZW4gd2Ug Y2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIHBhcnRpdGlvbiB0YWJsZS4KKyRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uX2Yg KGEgaW50IHByaW1hcnkga2V5KTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBREQg Q09OU1RSQUlOVCB0ZXN0X3RhYl9wYXRpdGlvbl9mayBGT1JFSUdOIEtFWShhKSBSRUZFUkVOQ0VT IHRlc3RfdGFiX3BhcnRpdGlvbl9mKGEpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7 CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRP IHRlc3RfdGFiX3BhcnRpdGlvbmVkIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZygKKwlxci9FUlJPUjogIGNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24uIFRoZXJlIGlzIGF0 IGxlYXN0IG9uZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uLywKKwkkb2Zmc2V0KTsKKworIyBEcm9w IHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29y a3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFC TEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9wYXRpdGlvbl9m ayIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisk cmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEo NTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRo ZSBmb3JlaWduIGtleScpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlz aGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_006_OS3PR01MB6275C4679CFE3414340A259B9EAD9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v11-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v11-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v11-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=25852; creation-date="Wed, 15 Jun 2022 08:24:00 GMT"; modification-date="Wed, 15 Jun 2022 08:26:40 GMT" Content-Transfer-Encoding: base64 RnJvbSA2ZjU0MzdkZDU4ZGY4ODM3YTZhMjEwNGQ2Mjk1Y2RlZTdkM2UxMmZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog V2VkLCAxNSBKdW4gMjAyMiAxMTowMjowOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjExIDUvNV0g UmV0cnkgdG8gYXBwbHkgc3RyZWFtaW5nIHhhY3Qgb25seSBpbiBhcHBseSB3b3JrZXIuCgotLS0K IGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAxMSArKwog ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICA0ICsKIHNy Yy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgIDQgKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAgMSArCiAuLi4vcmVw bGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMgICAgICAgfCAgMTMgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8ICA4OSArKysrKysrKysrKwog c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAgICAgICAgfCAgIDQgKwogLi4u L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgICAgIHwgMTM5ICsrKysrKysr KystLS0tLS0tLQogMTAgZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDY4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggNWNiMzliMThiZC4uOTI4YWQwMmFjZSAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwKQEAgLTc5MDcsNiArNzkwNywxNyBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJs ZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAog ICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJyZXRyeTwvc3RydWN0ZmllbGQ+IDx0eXBl PmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBJZiB0cnVl LCB0aGUgc3Vic2NyaXB0aW9uIHdpbGwgbm90IHRyeSB0byBhcHBseSBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24KKyAgICAgICBpbiA8bGl0ZXJhbD5hcHBseTwvbGl0ZXJhbD4gbW9kZS4gU2VlCisgICAg ICAgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbiIvPiBmb3IgbW9yZSBpbmZv cm1hdGlvbi4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93 PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+c3ViY29ubmluZm88L3N0cnVj dGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3Jp cHRpb24uc2dtbAppbmRleCA4ZGUxYTIzY2U0Li43MGZiZjgxNjY4IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjQ0LDYgKzI0NCwxMCBAQCBDUkVBVEUg U1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25f bmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgIGlzIHRoYXQgdGhlIHVuaXF1ZSBjb2x1bW4gc2hv dWxkIGJlIHRoZSBzYW1lIGJldHdlZW4gcHVibGlzaGVyIGFuZAogICAgICAgICAgIHN1YnNjcmli ZXI7IHRoZSBzZWNvbmQgaXMgdGhhdCB0aGVyZSBzaG91bGQgbm90IGJlIGFueSBub24taW1tdXRh YmxlCiAgICAgICAgICAgZnVuY3Rpb24gaW4gc3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQgdGFi bGUuCisgICAgICAgICAgV2hlbiBhcHBseWluZyBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgaWYg ZWl0aGVyIHJlcXVpcmVtZW50IGlzIG5vdAorICAgICAgICAgIG1ldCwgdGhlIGJhY2tncm91bmQg d29ya2VyIHdpbGwgZXhpdCB3aXRoIGFuIGVycm9yLiBBbmQgd2hlbiByZXRyeWluZworICAgICAg ICAgIGxhdGVyLCB3ZSB3aWxsIHRyeSB0byBhcHBseSB0aGlzIHRyYW5zYWN0aW9uIGluIDxsaXRl cmFsPm9uPC9saXRlcmFsPgorICAgICAgICAgIG1vZGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uYwppbmRleCBhZGQ1MWNhYWRmLi4xODI0MzkwZDdkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKQEAgLTcxLDYgKzcxLDcgQEAgR2V0U3Vic2NyaXB0 aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKQogCXN1Yi0+c3RyZWFtID0gc3ViZm9ybS0+ c3Vic3RyZWFtOwogCXN1Yi0+dHdvcGhhc2VzdGF0ZSA9IHN1YmZvcm0tPnN1YnR3b3BoYXNlc3Rh dGU7CiAJc3ViLT5kaXNhYmxlb25lcnIgPSBzdWJmb3JtLT5zdWJkaXNhYmxlb25lcnI7CisJc3Vi LT5yZXRyeSA9IHN1YmZvcm0tPnN1YnJldHJ5OwogCiAJLyogR2V0IGNvbm5pbmZvICovCiAJZGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBUSU9OT0lELApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsCmluZGV4IGZlZGFlZDUzM2IuLjEwZjRkZDY3ODUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEyOTgsOCArMTI5OCw4IEBAIFJFVk9LRSBBTEwgT04g cGdfcmVwbGljYXRpb25fb3JpZ2luX3N0YXR1cyBGUk9NIHB1YmxpYzsKIC0tIEFsbCBjb2x1bW5z IG9mIHBnX3N1YnNjcmlwdGlvbiBleGNlcHQgc3ViY29ubmluZm8gYXJlIHB1YmxpY2x5IHJlYWRh YmxlLgogUkVWT0tFIEFMTCBPTiBwZ19zdWJzY3JpcHRpb24gRlJPTSBwdWJsaWM7CiBHUkFOVCBT RUxFQ1QgKG9pZCwgc3ViZGJpZCwgc3Vic2tpcGxzbiwgc3VibmFtZSwgc3Vib3duZXIsIHN1YmVu YWJsZWQsCi0gICAgICAgICAgICAgIHN1YmJpbmFyeSwgc3Vic3RyZWFtLCBzdWJ0d29waGFzZXN0 YXRlLCBzdWJkaXNhYmxlb25lcnIsIHN1YnNsb3RuYW1lLAotICAgICAgICAgICAgICBzdWJzeW5j Y29tbWl0LCBzdWJwdWJsaWNhdGlvbnMpCisgICAgICAgICAgICAgIHN1YmJpbmFyeSwgc3Vic3Ry ZWFtLCBzdWJ0d29waGFzZXN0YXRlLCBzdWJkaXNhYmxlb25lcnIsCisgICAgICAgICAgICAgIHN1 YnJldHJ5LCBzdWJzbG90bmFtZSwgc3Vic3luY2NvbW1pdCwgc3VicHVibGljYXRpb25zKQogICAg IE9OIHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vi c2NyaXB0aW9uX3N0YXRzIEFTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMK aW5kZXggNDA4MGJiYTk4Ny4uMzg2OTcxODRkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNj cmlwdGlvbmNtZHMuYwpAQCAtNjYzLDYgKzY2Myw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCSBMT0dJ Q0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgOgogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFT RV9TVEFURV9ESVNBQkxFRCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmRpc2Fi bGVvbmVyciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZGlzYWJsZW9uZXJyKTsKKwl2YWx1ZXNb QW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkgLSAxXSA9IEJvb2xHZXREYXR1bShmYWxzZSk7 CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0gMV0gPQogCQlDU3Ry aW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKIAlpZiAob3B0cy5zbG90X25hbWUpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jCmluZGV4IDdkM2M2 MWMyZTkuLjAyYjFlZjVlNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHliZ3dyb2tlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHliZ3dyb2tlci5jCkBAIC0xMDMsNiArMTAzLDEzIEBAIGFwcGx5X2Jnd29ya2VyX2Zp bmRfb3Jfc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgc3RhcnQpCiAJaWYgKHN0YXJ0ICYm ICFYTG9nUmVjUHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkKIAkJcmV0dXJu IE5VTEw7CiAKKwlpZiAoc3RhcnQgJiYgTXlTdWJzY3JpcHRpb24tPnJldHJ5KQorCXsKKwkJZWxv ZyhERUJVRzEsICJyZXRyeSB0byBhcHBseSBhbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaW4gYXBw bHkgIgorCQkJICJiYWNrZ3JvdW5kIHdvcmtlciIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKIAkv KgogCSAqIEZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQg aW4gYXBwbHkgYmFja2dyb3VuZAogCSAqIHdvcmtlciwgd2UgY2Fubm90IGRlY2lkZSB3aGV0aGVy IHRvIGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEgcmVsYXRpb24KQEAgLTc5NCw4ICs4MDEsNyBAQCBh cHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkK IAlpZiAoIXJlbC0+c2FtZXVuaXF1ZSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygiY2Fubm90IHJlcGxp Y2F0ZSByZWxhdGlvbiB3aXRoIGRpZmZlcmVudCB1bmlxdWUgaW5kZXgiKSwKLQkJCQkgZXJyaGlu dCgiUGxlYXNlIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG9wdGlvbiB0byAnb24nIGluc3RlYWQgb2Yg J2FwcGx5Jy4iKSkpOworCQkJCSBlcnJtc2coImNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24gd2l0 aCBkaWZmZXJlbnQgdW5pcXVlIGluZGV4IikpKTsKIAogCS8qCiAJICogQ2hlY2sgaWYgdGhlcmUg aXMgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb24gcHJlc2VudCBpbiBleHByZXNzaW9uIGluCkBA IC04MDQsNyArODEwLDYgQEAgYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2soTG9naWNhbFJl cFJlbE1hcEVudHJ5ICpyZWwpCiAJaWYgKHJlbC0+dm9sYXRpbGl0eSA9PSBGVU5DVElPTl9OT05J TU1VVEFCTEUpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coImNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24u IFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIiksCi0JCQkJIGVy cmhpbnQoIlBsZWFzZSBjaGFuZ2UgdGhlIHN0cmVhbWluZyBvcHRpb24gdG8gJ29uJyBpbnN0ZWFk IG9mICdhcHBseScuIikpKTsKKwkJCQkgZXJybXNnKCJjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9u LiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiIpKSk7CiAKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDY3NzA5NzNlMzku LjA2NGI5N2E4NGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpA QCAtMzc0LDYgKzM3NCw4IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xz bihYTG9nUmVjUHRyIGZpbmlzaF9sc24pOwogc3RhdGljIGlubGluZSB2b2lkIHNldF9hcHBseV9l cnJvcl9jb250ZXh0X3hhY3QoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKIHN0 YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCk7CiAK K3N0YXRpYyB2b2lkIHNldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9vbCByZXRyeSk7CisKIC8qCiAg KiBTaG91bGQgdGhpcyB3b3JrZXIgYXBwbHkgY2hhbmdlcyBmb3IgZ2l2ZW4gcmVsYXRpb24uCiAg KgpAQCAtODkwLDYgKzg5Miw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXQoU3RyaW5nSW5mbyBzKQog CiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOwogCisJLyogU2V0 IHRoZSBmbGFnIHRoYXQgd2Ugd2lsbCBub3QgcmV0cnkgbGF0ZXIuICovCisJc2V0X3N1YnNjcmlw dGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIGlmIGFueS4gKi8KIAlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMoKTsK IApAQCAtMTAwMSw2ICsxMDA2LDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBz KQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBTZXQgdGhlIGZsYWcg dGhhdCB3ZSB3aWxsIG5vdCByZXRyeSBsYXRlci4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5 KGZhbHNlKTsKKwogCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIgaWYgYW55LiAqLwogCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOwogCkBAIC0xMDU0 LDYgKzEwNjIsOSBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykK IAlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAJaW5fcmVtb3Rl X3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBTZXQgdGhlIGZsYWcgdGhhdCB3ZSB3aWxsIG5v dCByZXRyeSBsYXRlci4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8q IFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxs ZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAK QEAgLTExMDksNiArMTEyMCw5IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJp bmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19l bmRfbHNuKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFNldCB0aGUg ZmxhZyB0aGF0IHdlIHdpbGwgbm90IHJldHJ5IGxhdGVyLiAqLworCXNldF9zdWJzY3JpcHRpb25f cmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5 bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJvbGxi YWNrX2RhdGEucm9sbGJhY2tfZW5kX2xzbik7CiAKQEAgLTExOTUsNiArMTIwOSw5IEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQkvKiB1bmxpbmsgdGhlIGZp bGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCiAJCQlzdHJl YW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEu eGlkKTsKIAkJfQorCisJCS8qIFNldCB0aGUgZmxhZyB0aGF0IHdlIHdpbGwgbm90IHJldHJ5IGxh dGVyLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKIAl9CiAKIAlpbl9yZW1v dGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKQEAgLTE2MTUsNiArMTYzMiw5IEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkgKi8KIAkJZWxzZQogCQkJc2VyaWFsaXpl X3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7CisKKwkJLyogU2V0IHRoZSBmbGFnIHRoYXQgd2Ug d2lsbCBub3QgcmV0cnkgbGF0ZXIuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2Up OwogCX0KIH0KIApAQCAtMjc4Niw2ICsyODA2LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21t aXQoU3RyaW5nSW5mbyBzKQogCQkJLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQg Y2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvICovCiAJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwogCQl9CisKKwkJLyogU2V0IHRoZSBmbGFnIHRo YXQgd2Ugd2lsbCBub3QgcmV0cnkgbGF0ZXIuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnko ZmFsc2UpOwogCX0KIAogCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIgaWYgYW55LiAqLwpAQCAtMzg1NCw2ICszODc3LDkgQEAgc3RhcnRfdGFibGVfc3luYyhY TG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MsIGNoYXIgKipteXNsb3RuYW1lKQogCX0KIAlQR19D QVRDSCgpOwogCXsKKwkJLyogU2V0IHRoZSBmbGFnIHRoYXQgd2Ugd2lsbCByZXRyeSBsYXRlci4g Ki8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRp b24tPmRpc2FibGVvbmVycikKIAkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7CiAJCWVs c2UKQEAgLTM4OTIsNiArMzkxOCw5IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0 YXJ0cG9zKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyogU2V0IHRoZSBmbGFnIHRoYXQgd2Ug d2lsbCByZXRyeSBsYXRlci4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKKwog CQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKIAkJCURpc2FibGVTdWJzY3JpcHRp b25BbmRFeGl0KCk7CiAJCWVsc2UKQEAgLTQzOTMsMyArNDQyMiw2MyBAQCByZXNldF9hcHBseV9l cnJvcl9jb250ZXh0X2luZm8odm9pZCkKIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcucmVtb3Rl X2F0dG51bSA9IC0xOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoSW52YWxpZFRyYW5z YWN0aW9uSWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIH0KKworLyoKKyAqIFNldCBzdWJyZXRyeSBv ZiBwZ19zdWJzY3JpcHRpb24gY2F0YWxvZy4KKyAqCisgKiBJZiByZXRyeSBpcyB0cnVlLCBzdWJz Y3JpYmVyIGlzIGFib3V0IHRvIGV4aXQgd2l0aCBhbiBlcnJvci4gT3RoZXJ3aXNlLCBpdAorICog bWVhbnMgdGhhdCB0aGUgY2hhbmdlcyB3YXMgYXBwbGllZCBzdWNjZXNzZnVsbHkuCisgKi8KK3N0 YXRpYyB2b2lkCitzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpCit7CisJUmVsYXRp b24JcmVsOworCUhlYXBUdXBsZQl0dXA7CisJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOworCWJv b2wJCW51bGxzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNf cGdfc3Vic2NyaXB0aW9uXTsKKwlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07 CisKKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5ID09IHJldHJ5IHx8CisJCWFtX2FwcGx5X2Jn d29ya2VyKCkpCisJCXJldHVybjsKKworCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJewor CQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlzdGFydGVkX3R4ID0gdHJ1ZTsKKwl9CisK KwkvKiBMb29rIHVwIHRoZSBzdWJzY3JpcHRpb24gaW4gdGhlIGNhdGFsb2cgKi8KKwlyZWwgPSB0 YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCXR1 cCA9IFNlYXJjaFN5c0NhY2hlQ29weTEoU1VCU0NSSVBUSU9OT0lELAorCQkJCQkJCSAgT2JqZWN0 SWRHZXREYXR1bShNeVN1YnNjcmlwdGlvbi0+b2lkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFs aWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgInN1YnNjcmlwdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhp c3QiLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSk7CisKKwlMb2NrU2hhcmVkT2JqZWN0KFN1YnNjcmlw dGlvblJlbGF0aW9uSWQsIE15U3Vic2NyaXB0aW9uLT5vaWQsIDAsCisJCQkJCSBBY2Nlc3NTaGFy ZUxvY2spOworCisJLyogRm9ybSBhIG5ldyB0dXBsZS4gKi8KKwltZW1zZXQodmFsdWVzLCAwLCBz aXplb2YodmFsdWVzKSk7CisJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisJ bWVtc2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9mKHJlcGxhY2VzKSk7CisKKwkvKiByZXNldCBz dWJyZXRyeSAqLworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0g Qm9vbEdldERhdHVtKHJldHJ5KTsKKwlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJy ZXRyeSAtIDFdID0gdHJ1ZTsKKworCXR1cCA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1cCwgUmVsYXRp b25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzLAorCQkJCQkJCXJlcGxhY2VzKTsKKworCS8q IFVwZGF0ZSB0aGUgY2F0YWxvZy4gKi8KKwlDYXRhbG9nVHVwbGVVcGRhdGUocmVsLCAmdHVwLT50 X3NlbGYsIHR1cCk7CisKKwkvKiBDbGVhbnVwLiAqLworCWhlYXBfZnJlZXR1cGxlKHR1cCk7CisJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJaWYgKHN0YXJ0ZWRfdHgpCisJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNmY4YjMwYWJiMC4uOWIzZmZl MDg4OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NDcyLDggKzQ0NzIsOSBAQCBnZXRTdWJzY3JpcHRpb25z KEFyY2hpdmUgKmZvdXQpCiAJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKIAogCS8qCi0JICogR2V0 IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxzbiBpbiB0aGUg ZHVtcCBhcwotCSAqIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBs b25nZXIgYmUgcmVsZXZhbnQuCisJICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0 IGluY2x1ZGUgc3Vic2tpcGxzbiBhbmQgc3VicmV0cnkgaW4KKwkgKiB0aGUgZHVtcCBhcyBhZnRl ciByZXN0b3JpbmcgdGhlIGR1bXAgdGhpcyB2YWx1ZSBtYXkgbm8gbG9uZ2VyIGJlCisJICogcmVs ZXZhbnQuCiAJICovCiAJaV90YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJ0YWJsZW9pZCIpOwog CWlfb2lkID0gUFFmbnVtYmVyKHJlcywgIm9pZCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmgKaW5kZXggOWIzOTRhNDVmZS4uZGM3NTk3YmY4MCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oCkBAIC03Niw2ICs3Niw4IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0 aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lf Uk9XCiAJYm9vbAkJc3ViZGlzYWJsZW9uZXJyOwkvKiBUcnVlIGlmIGEgd29ya2VyIGVycm9yIHNo b3VsZCBjYXVzZSB0aGUKIAkJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiB0byBiZSBkaXNhYmxlZCAq LwogCisJYm9vbAkJc3VicmV0cnk7CQkvKiBUcnVlIGlmIHRoZSBwcmV2aW91cyBhcHBseSBjaGFu Z2UgZmFpbGVkLiAqLworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5n dGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVi bGlzaGVyICovCiAJdGV4dAkJc3ViY29ubmluZm8gQktJX0ZPUkNFX05PVF9OVUxMOwpAQCAtMTE1 LDYgKzExNyw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJCWRpc2FibGVv bmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJlCiAJCQkJCQkJ CSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKIAkJCQkJCQkJICog b2NjdXJzICovCisJYm9vbAkJcmV0cnk7CQkJLyogSW5kaWNhdGVzIGlmIHRoZSBwcmV2aW91cyBh cHBseSBjaGFuZ2UKKwkJCQkJCQkJICogZmFpbGVkLiAqLwogCWNoYXIJICAgKmNvbm5pbmZvOwkJ LyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCWNoYXIJICAgKnNsb3Ru YW1lOwkJLyogTmFtZSBvZiB0aGUgcmVwbGljYXRpb24gc2xvdCAqLwogCWNoYXIJICAgKnN5bmNj b21taXQ7CQkvKiBTeW5jaHJvbm91cyBjb21taXQgc2V0dGluZyBmb3Igd29ya2VyICovCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbAppbmRleCA4NGE2 OTAwYjMzLi44ZjJlMjU0YjM5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzJfc3RyZWFtaW5nX2FwcGx5LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9z dHJlYW1pbmdfYXBwbHkucGwKQEAgLTU4LDcgKzU4LDkgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKAogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAog IyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHB1Ymxpc2hl ciBhbmQgdGhlIHN1YnNjcmliZXIKLSMgaXMgZGlmZmVyZW50LiBDaGVjayB0aGUgZXJyb3IgcmVw b3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBpcyBkaWZmZXJlbnQu IENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNh c2UuIEFuZAorIyBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRo ZSBkYXRhIGlzIHJlcGxpY2F0ZWQKKyMgc3VjY2Vzc2Z1bGx5LgogIyBGaXJzdCB3ZSBjaGVjayB0 aGUgdW5pcXVlIGluZGV4IG9uIG5vcm1hbCB0YWJsZS4KICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgVU5JUVVFIElOREVYIHRlc3RfdGFiX2JfaWR4IE9O IHRlc3RfdGFiIChiKSIpOwpAQCAtODIsMTQgKzg0LDE1IEBAICRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZygKIAlxci9FUlJPUjogIGNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24gd2l0aCBk aWZmZXJlbnQgdW5pcXVlIGluZGV4LywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSB1bmlxdWUg aW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX2lkeCIpOwotCisj IFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhl IGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CiAKIG15ICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg1 MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4 Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVy cyBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIHVuaXF1ZSBpbmRleCcpOworCisjIERyb3AgdGhl IHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX2lkeCIpOwogCiAjIFRoZW4g d2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBwYXJ0aXRpb24gdGFibGUuCiAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKQEAgLTEwNiwxNyArMTA5LDIwIEBAICRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogIGNhbm5vdCByZXBsaWNhdGUg cmVsYXRpb24gd2l0aCBkaWZmZXJlbnQgdW5pcXVlIGluZGV4LywKIAkkb2Zmc2V0KTsKIAotIyBE cm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3Rh Yl9iX3BhcnRpdGlvbl9pZHgiKTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh Yl9wYXJ0aXRpb25lZCIpOwotaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworaXMoJHJlc3VsdCwgcXEoNTAw MCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcnMgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVz ZSBvZiB1bmlxdWUgaW5kZXgnKTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1 YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1Ag SU5ERVggdGVzdF90YWJfYl9wYXJ0aXRpb25faWR4Iik7CiAKICMgVHJpZ2dlcnMgd2hpY2ggZXhl Y3V0ZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIGFyZSBub3QgYWxsb3dlZCBvbiB0aGUKICMgc3Vi c2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3Jr ZXIgaW4gdGhpcyBjYXNlLgorIyBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkgd29ya2VyLCB3 ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkCisjIHN1Y2Nlc3NmdWxseS4KICMgRmly c3Qgd2UgY2hlY2sgdGhlIHRyaWdnZXIgZnVuY3Rpb24gb24gbm9ybWFsIHRhYmxlLgogJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewpAQCAtMTQwLDE1ICsxNDYs MTYgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAgY2Fubm90 IHJlcGxpY2F0ZSByZWxhdGlvbi4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5vbi1pbW11dGFibGUg ZnVuY3Rpb24vLAogCSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIHRyaWdnZXIgb24gdGhlIHN1YnNj cmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJEUk9QIFRSSUdHRVIgaW5zZXJ0X3RyaWcgT04gdGVzdF90YWIiKTsKLQorIyBXYWl0 IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBs eSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwog CiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMCksICdkYXRh IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0cmlnZ2VyJyk7Citpcygk cmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRy eWluZyBiZWNhdXNlIG9mIHRyaWdnZXInKTsKKworIyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRoZSBz dWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkRS T1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYiIpOwogCiAjIFRoZW4gd2UgY2hlY2sg dGhlIHVuaXF1ZSBpbmRleCBvbiBwYXJ0aXRpb24gdGFibGUuCiAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoCkBAIC0xNjgsMTkgKzE3NSwyMSBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCiAJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBh dCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi8sCiAJJG9mZnNldCk7CiAKLSMgRHJv cCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkRST1AgVFJJR0dFUiBpbnNlcnRfdHJp ZyBPTiB0ZXN0X3RhYl9wYXJ0aXRpb24iKTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwotaXMoJHJlc3VsdCwgcXEoMCksICdkYXRhIHJlcGxpY2F0 ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0cmlnZ2VyJyk7CitpcygkcmVzdWx0LCBx cSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBiZWNh dXNlIG9mIHRyaWdnZXInKTsKKworIyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVy LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkRST1AgVFJJR0dF UiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYl9wYXJ0aXRpb24iKTsKIAogIyBJdCBpcyBub3QgYWxs b3dlZCB0aGF0IGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gY29udGFpbnMgYQogIyBu b24taW1tdXRhYmxlIGZ1bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBl cnJvciByZXBvcnRlZCBieQotIyBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIGJh Y2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5 IHdvcmtlciwgd2UgY2hlY2sKKyMgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVs bHkuCiAjIEZpcnN0IHdlIGNoZWNrIHRoZSBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9u IG9uIG5vcm1hbCB0YWJsZS4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCByYW5k b20oKSIpOwpAQCAtMTk2LDE2ICsyMDUsMTcgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jf bG9nKAogCXFyL0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbi4gVGhlcmUgaXMgYXQg bGVhc3Qgb25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24vLAogCSRvZmZzZXQpOwogCi0jIERyb3Ag ZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiIEFM VEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5n IHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9N IHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRv IHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uJyk7CisJ J2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9m IGNvbHVtbiBkZWZhdWx0IHZhbHVlJyk7CisKKyMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBz dWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFM VEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOwogCiAjIFRo ZW4gd2UgY2hlY2sgdGhlIGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb24gcGFydGl0 aW9uIHRhYmxlLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC0y MjIsMjAgKzIzMiwyMiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJS T1I6ICBjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9u LWltbXV0YWJsZSBmdW5jdGlvbi8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBkZWZhdWx0IHZhbHVl IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFMVEVS IENPTFVNTiBiIERST1AgREVGQVVMVCIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRy YW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRl c3RfdGFiX3BhcnRpdGlvbmVkIik7CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwKLQknZGF0YSByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgZGVmYXVsdCB2YWx1ZSBleHByZXNz aW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBi ZWNhdXNlIG9mIGNvbHVtbiBkZWZhdWx0IHZhbHVlJyk7CisKKyMgRHJvcCBkZWZhdWx0IHZhbHVl IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBEUk9Q IERFRkFVTFQiKTsKIAogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGRvbWFpbiBjb25zdHJhaW50 IGV4cHJlc3Npb24gY29udGFpbnMgYSBub24taW1tdXRhYmxlCiAjIGZ1bmN0aW9uIG9uIHRoZSBz dWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kCi0j IHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciBy ZXRyeWluZyBpbiBhcHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZSBkYXRhCisjIGlzIHJlcGxp Y2F0ZWQgc3VjY2Vzc2Z1bGx5LgogIyBCZWNhdXNlIHRoZSBjb2x1bW4gdHlwZSBvZiB0aGUgcGFy dGl0aW9uIHRhYmxlIG11c3QgYmUgdGhlIHNhbWUgYXMgaXRzIHBhcmVudAogIyB0YWJsZSwgb25s eSB0ZXN0IG5vcm1hbCB0YWJsZSBoZXJlLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKApA QCAtMjUzLDIxICsyNjUsMjMgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFy L0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbi4gVGhlcmUgaXMgYXQgbGVhc3Qgb25l IG5vbi1pbW11dGFibGUgZnVuY3Rpb24vLAogCSRvZmZzZXQpOwogCi0jIERyb3AgZG9tYWluIGNv bnN0cmFpbnQgZXhwcmVzc2lvbiBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRlc3Rf dGFiIEFMVEVSIENPTFVNTiBhIFRZUEUgaW50Iik7Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1p bmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9uJwor CSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcnMgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBv ZiBkb21haW4nCiApOwogCi0jIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29uc3RyYWludCBleHBy ZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZSBmdW5jdGlvbgotIyBvbiB0aGUgc3Vic2Ny aWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIg aW4gdGhpcwotIyBjYXNlLgorIyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24gb24g dGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGEgVFlQRSBpbnQiKTsKKworIyBJ dCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5v bi1pbW11dGFibGUKKyMgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhl IGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQKKyMgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5k IGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEKKyMg aXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCiAjIEZpcnN0IHdlIGNoZWNrIHRoZSBjb25zdHJh aW50IGV4cHJlc3Npb24gb24gbm9ybWFsIHRhYmxlLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKAogCSdwb3N0Z3JlcycsIHFxewpAQCAtMjg1LDE2ICsyOTksMTcgQEAgJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlv bi4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24vLAogCSRvZmZz ZXQpOwogCi0jIERyb3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtz LgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxF IHRlc3RfdGFiIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKLQorIyBXYWl0IGZvciB0 aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3Jr ZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVz dWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMCksCi0JJ2RhdGEg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0cmFpbnQgZXhwcmVz c2lvbicpOworCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcnMgYWZ0ZXIgcmV0cnlpbmcg YmVjYXVzZSBvZiBjb25zdHJhaW50Jyk7CisKKyMgRHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJz Y3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFRBQkxFIHRlc3RfdGFiIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKIAogIyBUaGVu IHdlIGNoZWNrIHRoZSBjb25zdHJhaW50IGV4cHJlc3Npb24gb24gcGFydGl0aW9uIHRhYmxlLgog JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKApAQCAtMzExLDE5ICszMjYsMjEgQEAgJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSBy ZWxhdGlvbi4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24vLAog CSRvZmZzZXQpOwogCi0jIERyb3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0 IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVS IFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfY29uIik7 Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBp biB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKIGlz KCRyZXN1bHQsIHFxKDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBk cm9wcGluZyBjb25zdHJhaW50IGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29uc3RyYWludCcpOworCisjIERy b3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBD T05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOwogCiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZm9y ZWlnbiBrZXkgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yCi0jIHJlcG9y dGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgcmVwb3J0ZWQgYnkgYmFj a2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkK KyMgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkIHN1Y2Nlc3NmdWxs eS4KICMgRmlyc3Qgd2UgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIG5vcm1hbCB0YWJsZS4KICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3Rh YiIpOwogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKQEAgLTM0 NCwxNiArMzYxLDE3IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJP UjogIGNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24uIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBub24t aW1tdXRhYmxlIGZ1bmN0aW9uLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSBmb3JlaWduIGtl eSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWIgRFJP UCBDT05TVFJBSU5UIHRlc3RfdGFiZmsiKTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMCksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBz dWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRoZSBmb3JlaWduIGtleScpOworCSdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlcnMgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBmb3JlaWduIGtl eScpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmli ZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFC TEUgdGVzdF90YWIgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiZmsiKTsKIAogIyBUaGVuIHdlIGNo ZWNrIHRoZSBmb3JlaWduIGtleSBvbiBwYXJ0aXRpb24gdGFibGUuCiAkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwpAQCAtMzc0LDE2ICszOTIsMTcgQEAgJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAgY2Fubm90IHJlcGxpY2F0ZSBy ZWxhdGlvbi4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24vLAog CSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1 YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5U IHRlc3RfdGFiX3BhdGl0aW9uX2ZrIik7Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJh bnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWJfcGFydGl0aW9uZWQiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDApLAotCSdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKwkn ZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2Yg Zm9yZWlnbiBrZXknKTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRo ZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJf cGF0aXRpb25fZmsiKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hl ci0+c3RvcDsKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_006_OS3PR01MB6275C4679CFE3414340A259B9EAD9OS3PR01MB6275jpnp_--