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 1oceVZ-0003QT-LO for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Sep 2022 03:10:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oceVW-0004EO-F2 for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Sep 2022 03:10:10 +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 1oceVV-0004Cy-MT for pgsql-hackers@lists.postgresql.org; Mon, 26 Sep 2022 03:10:09 +0000 Received: from esa20.fujitsucc.c3s2.iphmx.com ([216.71.158.65]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oceVR-00027E-In for pgsql-hackers@lists.postgresql.org; Mon, 26 Sep 2022 03:10:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1664161804; x=1695697804; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=XcHmgeVI76sotQeUeXNZ6oWFJHJmBTKCcXykQK/h2PM=; b=Kd/X3slPkCHpJhzMRg6Wl/NfYUOkDlOxNkINYXsCMnTRLZxO4rIoH+2B +auxlLXSqXYfuDKf2znlz8kXhHOwCZ6ADgZU3ChI9aCjtBVDRlzBvU/po o+ZsNuW93SnKArvUdQqrKQ1fKTojy/krZw5IOlGjvEuVlYDnv71zd1nr0 ml77Kl7im2/ukJK3X5uHZFkZGZmc1q6hO0QknFdc55FMO4djaYwlq9CEt PTcNWWyXyfbgua48QzQRrnsxrFXSzBYK5RMVZ9n2w8y5xcnZGAzVopOMw 2SDtLsmH1D2uJOdKSZVhGeWevMkq5VL1ogCitD64vy1IRzrLn4r0jkiNp w==; X-IronPort-AV: E=McAfee;i="6500,9779,10481"; a="65888916" X-IronPort-AV: E=Sophos;i="5.93,345,1654527600"; d="scan'208,223";a="65888916" Received: from mail-tycjpn01lp2169.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.169]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Sep 2022 12:10:00 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FAbPaQcmKtQoyxCH7WGYGjOGtHC9UljVSCyZGLlt6LHBAxLNsxGNQeGVg2mjM0Uk8F1MOiioanesssDpcaR4kshPEPMBEFVKYvpcSaMna5yf+lmxLX4iLhmV/hPEg4YHsU1OVhVuBRTRvAGxpwxX7aXRBMqdtTuzQ9/7fuPEZcqT4SSMlXOa/hiGDBTZQuIoljvKfeqJCqBh1xMUo/Xoxjsdiu+SfGXM/Pbr341sVd3SUQm5RktTIljqEd6vyqZrG27MVn/cP7y8u565vyD7Gii6v9Qdpoo753ZnAwZba4pUVflgA4EI74C8JUDuZ/bNa5hgZ5GzwdTffs7iQowAfg== 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=7OnJjqUEiefO0WrqH6HKx6OlYvNWUeqfDSc9oaZQyNk=; b=mQ7/u9Ppu+ooy5zvyf38VcO9+69aAm6sKwyY9c4T52ASrb9bCoFus84C9nZ1HbGaUQMx0PWFDHpWZ3xA4uTY+iSkzMXnH0Rx9Jm9MnStsQXU6B4U3XuBCcDclgrRCYxLNZefBUH7sjFFKkKdB4rO3HaYAUy53VeHJiVTGZrJFXjI+mG2XeV46MBGcZsSy+R83pNaoLFKyIiQk83qooPVj5WMvI4tbszkUZmrWFhOYjC9cGl1xds48D5GPqVTQLuXrnD5vPHgKxeW0vWMDolv/q66uREcmQKQXfD8tO9XVbBrck5sNd+IlP7HTK7wuD9vTQkwM97zlB485mjHdGCQYA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by OS3PR01MB9819.jpnprd01.prod.outlook.com (2603:1096:604:1ed::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.25; Mon, 26 Sep 2022 03:09:56 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::d059:c042:fb67:b727]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::d059:c042:fb67:b727%4]) with mapi id 15.20.5654.025; Mon, 26 Sep 2022 03:09:56 +0000 From: "wangw.fnst@fujitsu.com" To: "kuroda.hayato@fujitsu.com" CC: Amit Kapila , "houzj.fnst@fujitsu.com" , Dilip Kumar , Masahiko Sawada , "shiy.fnst@fujitsu.com" , Peter Smith , 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/sKYGv3sJE+7a/aZxbuwx6zlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS9tXQgAAv04CAAWQLgIABHxKAgAA3o4CAAd7v0IAJQDLggAkyO+CAAiLMAIAC0M5ggARwU4CABP8UAIAAGBkAgAd/49CABPEVgIAJO7xggABuopCACQ1GAIAJSjQggAS+3MCABq/QgIABSJUAgAAOtoCAACmRgIAB78qAgAqLjwCADJX8gIAGVWBQgAGA7xCAAesqgIABYRWAgAgvEYCAAWyzgIAGSRYAgAFBqICAAFYagIABchmAgAGqzwCAATq/gIAFJCcAgAAGs4CABE7agIAK5GAQgABsZYCABb7ocIADiYIAgAEuoICAAE4RgIAF9eoQ Date: Mon, 26 Sep 2022 03:09:55 +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: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9Y2ExZWY4OGUtZThhOC00ZWU5LWEzMWItY2QzMmQ4Njg1?= =?utf-8?B?ZGFhO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0wOS0yMlQwMzoyODoyNFo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS3PR01MB6275:EE_|OS3PR01MB9819:EE_ x-ms-office365-filtering-correlation-id: 54cbd2bf-0289-488b-67c9-08da9f6c96b4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: k0s6HNmQaGZfHxTXGW66+ODyKDt0a9q/hYIdz1WFlEQx9wLLff0pNi7ibnXKQZGf54IVGTcN65Nzzi3ALgTgRrGA1NQA68NOmtyhwSdxQRtpOuCIKmxTy73kA4/3IiB4PTQ+Va0ccoA1sTqL+Viv7vdQmEKrsgW6m0kh0dY6v+T1+E4xhShiWWRdONXk/OM8GFs6acyJ7s4NYyfuPjnUSxXnxxdofwTHRUWgPDi2aeu3kbyUXWJDvV+bvbJQ5FU+q58O5jAEfq9qGiUB0Z3yZyO0/ivIj4B4DYk7oX9rYgNvZGScWPREkwC040rJ8z/OcnOFqJaXLeXd1PncjDjHywJ9FKmyQDMJhcoy91/3lxbGDEqQ9iIKyPHruojycSNB4F8E1Z1+5RPMIkCgNIlLqwQskY6K3rrlNvZf4JWZu0AGRKv489l7PXbHcjIjNSvFA7YXwhCdX2HPBKvawV7lpwX4p5AHa33+I3ho7Br+VywyVOgB51AqHMuJtoHXX+RlcKpj07AaWJq2AVknWzuUXe9mI/aIRj6z3lMp4oTM5CGB4DEriyuAiTgSFt2kiFPFbDAMQwBsYBHe2XTgsLDr7Lei4A1d+riXrn576EIVni97hfHl9qgTcDFi4XFAVilLg6tf3TUwgHs/sOJ59YVjA41WWSWGMa4EWl693wp/10hA2FOuQcTuXiZMiAgmR/pDm+CQYdk1XJT2p4S0dVjHj+D1t6HhOk5Et8ziX5FgjzFsh6pk6+Phg5fAsCXf+bv3GPYXqOcSdq58AiU7zhHz7t1R5NM5Jex9gNiWqvERTXo= 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:(13230022)(4636009)(346002)(376002)(136003)(39860400002)(366004)(396003)(451199015)(1590799012)(71200400001)(1580799009)(6636002)(54906003)(316002)(478600001)(83380400001)(66946007)(66556008)(66476007)(66446008)(64756008)(76116006)(4326008)(8676002)(41300700001)(7696005)(52536014)(6506007)(8936002)(6862004)(85182001)(5660300002)(26005)(9686003)(38070700005)(2906002)(33656002)(186003)(99936003)(82960400001)(38100700002)(122000001)(55016003)(86362001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Q1Y5TUtUYTZJRFRzTlo2d3BSNnZsZWlRdjAwaklmTTVaeXVKdG1VcVVyZ1dB?= =?utf-8?B?aDkwZFFBZ0Erb0hTNDVlb1VPaFJtdmhmWTAwb01yK0RhS1VndkhJQUxUdDB3?= =?utf-8?B?R2ZnRDZLbDJIb1B3Y3E2VEFuMm84VGVYWHgybHhmc2ZqaFQ2V2tOdm5TdDBN?= =?utf-8?B?ZU5xc3ZyT0ZremtncTVpRDNOcTI5bkFyQmVDeTJhdExlblVlR2grSzR0bHVR?= =?utf-8?B?WHFMYTkvUlFSMkN1QmlpV05QOUJrdTltSjVHV3plTlY0emwxTjQ4OXhxeitk?= =?utf-8?B?ZGhSeTFwV2lwUWxmRTdIRlBqUzhCc2J3TkpGU3JoWURoT2RnQjhwUTY4ckcv?= =?utf-8?B?b3ZnYVNwOTFtckYyMUl6dXRPWS96MlNocmtNMlpvQ2RRbWMyUTFRK2dBMlFD?= =?utf-8?B?ZldieXh6NklzOFFnWHVXNU50aVd4ZWpGWVhuNEc4TVI2UUFXZUk0UXVhWHA5?= =?utf-8?B?U2dWbWk4NURUM3FuZW40dzdKQm9jdTUzRjhVS2lCbVJpRXRNY25uL3JzbEVD?= =?utf-8?B?MFpzL1o3QmZkZWNvN3RXbTg4VUVPZnMzTVhXR3ZCd21zb1h4Qm0xbGlySzVQ?= =?utf-8?B?eFIxMGN3QmlHb0VqQTV1NU45OWtmY2FnYXBINW1wSGV1Z3hMOGwxMmtZbTZl?= =?utf-8?B?d3diZGF4WHVpM0RGZUhaTXRLbW5VMWlKQ3ZxVFRHaFMvRTEyNTNmYlZsOGcr?= =?utf-8?B?SWNpdnBLMHI1Q2Uyck9URmZuaktEWmZtNmVUdndyVEZDa3A4N0lTV2pnTWJp?= =?utf-8?B?V2JyVm9uQWU4MmlPRFpORndwTEgzRXhUT1I1b3cwNlprNlBFejBCTnBxemJJ?= =?utf-8?B?bHhmV3RVdkp1MGs2dTNNSTY4K3ZtNGdzNnc0amlSSmppUGRjU2VTRWJ5YklX?= =?utf-8?B?QSs4eU9wbnhuVDF2eFhNb0ZyMldkcGNMUXNTUzhaamtxaXk5MFpIUk1vSGlp?= =?utf-8?B?SGdrOTFyT3ZHeXlCR1dmN2o3bERVZitKOFVGT2VtZ0tnUk52WmRHV2lOZlk3?= =?utf-8?B?Rm9iVDJKb250blJyOVk1U3l2WCtpV0lhdDVQSUpKOWVNYUJVdHZZZFVEbEh6?= =?utf-8?B?cWNlbDRVR2hSdDdudFJxaHNZTVgzOGFmTXdjcmNrSzJPT2xXZ3phaTNnSktv?= =?utf-8?B?YlZVT01Kc3VITmVwYUVOclpxZlBxUVNmUDUrdGlvaVdpT1Exa2JwSlkxcFpo?= =?utf-8?B?T29rQlJ6YUtjOTU4L1d3a0dGNTFMcW5OZ0RQRElKOGtDV2lFQ3ljbDNRVjdm?= =?utf-8?B?NjhqLzV5aml3MWtrR25xc1pvcnlDMXFHUmpTdU5uMVhObm1PT2VJemFwSnF2?= =?utf-8?B?MmtIZnhkN3c4ZVoySE9OdG00SndqUUFVbXdXY0NRT0pncDNiSldsS3crWHR4?= =?utf-8?B?c1U2R2hXYkJJeW1DNmY1c2Y4NjJHSTh6MXk3UTVMU0JJcUJMNEQ2Tm5Edm9p?= =?utf-8?B?WUxuT1FnQWQ3a1lzUTZCTW9LUDEzVUxYOUkvRmwvTlV2anRKUmdvUWZ6U1JZ?= =?utf-8?B?VlF0NG11eFBEdHJ4UkpEck1mS0lPQjA2S2VHU2pPTk9BeGtodWZqZ3RtZXhi?= =?utf-8?B?TXNwaXFrUzNxcHdwTWwxbjVlQ3lpWU9SWVcvM2g2WUdyZ0svSWRMVTNqUDhi?= =?utf-8?B?M3o3RkhOa29vZUNRclJsT2pNZnlGK0JzemxlSHNxZVFlVFhPOFJiY0lPRkMv?= =?utf-8?B?bDQzWCtTbGNLYzJ3RTZiRThwNFIxOURtb2FlSzA4SjdiT2JFNjU3b3ZhTkJS?= =?utf-8?B?WTloM3hUcENhazREektIRzh4UkVKalcxRXNWQ3ZJVmErZElxWnFUbzRjcmdr?= =?utf-8?B?MHlXWmVSR2U0RTl0U09rczUyeHZWWW5CU0k2cnNwVHo4RXpnbzZTbDUyQ3ZH?= =?utf-8?B?SUNVQ3JTREtiVjlKWGhGc09yVG41cXd5UjNDVWpXZkcvb1U2dkVXWUVpMFp1?= =?utf-8?B?YVdDTTJOSVI3eVpqUS9sZ0pjNFdua0JhTmp2eXo5RzUzVVB0MDFiVjVYWUdy?= =?utf-8?B?NkN5RXp6U1YxWEszV2dvUFlNWVMxVGFJRGVHV0pTdFBFQWJ3ZjBYSHNRYzZq?= =?utf-8?B?TkZHMjlvSnpOejdSNlRkUXIydFB6UTJPek1PVStjRVQ5aFEwWE1XMm5nWVAy?= =?utf-8?Q?TiwVYfwgv6Wnr8QJy4ybPvoka?= Content-Type: multipart/mixed; boundary="_006_OS3PR01MB6275F4A7CA186412E2FF2ED29E529OS3PR01MB6275jpnp_" 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: 54cbd2bf-0289-488b-67c9-08da9f6c96b4 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Sep 2022 03:09:55.9567 (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: 9XmCsXt/7S741wch/XqqBOusxYVoT1XaShHTzp3g3uIyn7HtL0NS+IKMxLI1eu2iUJeH6lOO72j44rhQHuC31g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB9819 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS3PR01MB6275F4A7CA186412E2FF2ED29E529OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVGh1ciwgU2VwIDIyLCAyMDIyIGF0IDE2OjA4IFBNIEt1cm9kYSwgSGF5YXRvL+m7kueUsCDp mrzkurogPGt1cm9kYS5oYXlhdG9AZnVqaXRzdS5jb20+IHdyb3RlOg0KPiBEZWFyIFdhbmcsDQo+ IA0KPiBUaGFua3MgZm9yIHVwZGF0aW5nIHRoZSBwYXRjaCEgRm9sbG93aW5ncyBhcmUgY29tbWVu dHMgZm9yIHYzMy0wMDAxLg0KDQpUaGFua3MgZm9yIHlvdXIgY29tbWVudHMuDQoNCj4gPT09DQo+ IGxpYnBxd2FscmVjZWl2ZXIuYw0KPiANCj4gMDEuIGluY2x1c2lvbg0KPiANCj4gYGBgDQo+ICsj aW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCINCj4gYGBgDQo+IA0KPiBXZSBkb24n dCBoYXZlIHRvIGluY2x1ZGUgaXQgYmVjYXVzZSB0aGUgYW5hbHlzaXMgb2YgcGFyYW1ldGVycyBp cyBkb25lIGF0IGNhbGxlci4NCj4gDQo+ID09PQ0KPiBsYXVuY2hlci5jDQoNCkltcHJvdmVkLg0K DQo+IDAyLiBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goKQ0KPiANCj4gYGBgDQo+ICsgICAgICAg LyoNCj4gKyAgICAgICAgKiBSZXR1cm4gc2lsZW50bHkgaWYgdGhlIG51bWJlciBvZiBwYXJhbGxl bCBhcHBseSB3b3JrZXJzIHJlYWNoZWQgdGhlDQo+ICsgICAgICAgICogbGltaXQgcGVyIHN1YnNj cmlwdGlvbi4NCj4gKyAgICAgICAgKi8NCj4gKyAgICAgICBpZiAoaXNfc3Vid29ya2VyICYmIG5w YXJhbGxlbGFwcGx5d29ya2VycyA+PQ0KPiBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uKQ0KPiBgYGANCj4gDQo+IGEuDQo+IEkgZmVsdCB0aGF0IGl0IG1pZ2h0IGJl IGtpbmQgaWYgd2Ugb3V0cHV0IHNvbWUgZGVidWcgbWVzc2FnZXMuDQo+IA0KPiBiLg0KPiBUaGUg aWYgc3RhdGVtZW50IHNlZW1zIHRvIGJlIG1vcmUgdGhhbiA4MCBjaGFyYWN0ZXJzLiBZb3UgY2Fu IG1vdmUgdG8gbmV3DQo+IGxpbmUgYXJvdW5kICJucGFyYWxsZWxhcHBseXdvcmtlcnMgPj0gLi4u Ii4NCg0KSW1wcm92ZWQuDQoNCj4gPT09DQo+IGFwcGx5cGFyYWxsZWx3b3JrZXIuYw0KPiANCj4g MDMuIGRlY2xhcmF0aW9uDQo+IA0KPiBgYGANCj4gKy8qDQo+ICsgKiBJcyB0aGVyZSBhIG1lc3Nh Z2UgcGVuZGluZyBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2hpY2ggd2UgbmVlZCB0bw0KPiAr ICogcmVjZWl2ZT8NCj4gKyAqLw0KPiArdm9sYXRpbGUgYm9vbCBQYXJhbGxlbEFwcGx5TWVzc2Fn ZVBlbmRpbmcgPSBmYWxzZTsNCj4gYGBgDQo+IA0KPiBJIGNoZWNrZWQgb3RoZXIgZmxhZ3MgdGhh dCBhcmUgc2V0IGJ5IHNpZ25hbCBoYW5kbGVycywgdGhlaXIgZGF0YXR5cGUgc2VlbWVkIHRvDQo+ IGJlIHNpZ19hdG9taWNfdC4NCj4gSXMgdGhlcmUgYW55IHJlYXNvbnMgdGhhdCB5b3UgdXNlIG5v cm1hbCBib29sPyBJdCBzaG91bGQgYmUgY2hhbmdlZCBpZiBub3QuDQoNCkltcHJvdmVkLg0KDQo+ IDA0LiBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKQ0KPiANCj4gYGBgDQo+ICsgICAgICAg ICAgICAgICBpZiAod2luZm8tPmVycm9yX21xX2hhbmRsZSA9PSBOVUxMKQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICBjb250aW51ZTsNCj4gYGBgDQo+IA0KPiBhLg0KPiBJIHdhcyBub3Qgc3Vy ZSB3aGVuIHRoZSBjZWxsIHNob3VsZCBiZSBjbGVhbmVkLiBDdXJyZW50bHkgd2UgY2xlYW4gdXAN Cj4gUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0KCkgb25seSBpbiB0aGUgcGFyYWxsZWxfYXBwbHlf c3RhcnRfd29ya2VyKCksDQo+IGJ1dCB3ZSBoYXZlIGNoYW5jZXMgdG8gcmVtb3ZlIHN1Y2ggYSBj ZWxsIGxpa2UgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCkNCj4gb3IgSGFuZGxlUGFyYWxs ZWxBcHBseU1lc3NhZ2UoKS4gSG93IGRvIHlvdSB0aGluaz8NCj4gDQo+IGIuDQo+IENvbW1lbnRz IHNob3VsZCBiZSBhZGRlZCBldmVuIGlmIHdlIGtlZXAgdGhpcywgbGlrZSAiZXhpdGVkIHdvcmtl ciwgc2tpcHBlZCIuDQo+IA0KPiBgYGANCj4gKyAgICAgICAgICAgICAgIGVsc2UNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgZXJlcG9ydChFUlJPUiwNCj4gKw0KPiAoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbGVh ZGVyIGFwcGx5IHdvcmtlciIpKSk7DQo+IGBgYA0KPiANCj4gYy4NCj4gVGhpcyBmdW5jdGlvbiBp cyBjYWxsZWQgb24gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIHNvIHRoZSBoaW50IHNob3VsZCBi ZSAibG9zdA0KPiBjb25uZWN0aW9uIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIiLg0KDQo9 PmIuDQpBZGRlZCB0aGUgZm9sbG93aW5nIGNvbW1lbnQgYWNjb3JkaW5nIHRvIHlvdXIgc3VnZ2Vz dGlvbi4NCmBTa2lwIGlmIHdvcmtlciBoYXMgZXhpdGVkYA0KDQo9PmMuDQpGaXhlZC4NCg0KPiA9 PT0NCj4gd29ya2VyLmMNCj4gDQo+IDA3LiBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oKQ0K PiANCj4gYGBgDQo+ICsgKiBGb3Igbm9uLXN0cmVhbWVkIHRyYW5zYWN0aW9ucywgcmV0dXJucyBm YWxzZTsNCj4gYGBgDQo+IA0KPiAicmV0dXJucyBmYWxzZTsiIC0+ICJyZXR1cm5zIGZhbHNlIg0K DQpJbXByb3ZlZC4gSSBjaGFuZ2VkIHRoZSBzZW1pY29sb24gdG8gYSBwZXJpb2QNCg0KPiBhcHBs eV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKCksIGFwcGx5X2hhbmRsZV9hYm9ydF9wcmVwYXJlZCgp DQo+IA0KPiBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBleHBlY3RlZCB0aGF0IHBhcmFsbGVsIHdv cmtlciBjYWxscw0KPiBzbyBJIHRoaW5rIEFzc2VydCgpIHNob3VsZCBiZSBhZGRlZC4NCg0KSSBh bSBub3Qgc3VyZSBpZiB0aGlzIG1vZGlmaWNhdGlvbiBpcyBuZWNlc3Nhcnkgc2luY2Ugd2UgZG8g bm90IG1vZGlmeSB0aGUNCm5vbi1zdHJlYW1lZCB0cmFuc2FjdGlvbiByZWxhdGVkIG1lc3NhZ2Ug bGlrZSAiQ09NTUlUIFBSRVBBUkVEIiBvciAiUk9MTEJBQ0sNClBSRVBBUkVEIi4NCg0KPiAwOC4g VXBkYXRlV29ya2VyU3RhdHMoKQ0KPiANCj4gYGBgDQo+IC1zdGF0aWMgdm9pZA0KPiArdm9pZA0K PiAgVXBkYXRlV29ya2VyU3RhdHMoWExvZ1JlY1B0ciBsYXN0X2xzbiwgVGltZXN0YW1wVHogc2Vu ZF90aW1lLCBib29sIHJlcGx5KQ0KPiBgYGANCj4gDQo+IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk IG9ubHkgaW4gd29ya2VyLmMsIHNob3VsZCBiZSBzdGF0aWMuDQo+IA0KPiAwOS4gc3Vic2NyaXB0 aW9uX2NoYW5nZV9jYigpDQo+IA0KPiBgYGANCj4gLXN0YXRpYyB2b2lkDQo+ICt2b2lkDQo+ICBz dWJzY3JpcHRpb25fY2hhbmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNo dmFsdWUpDQo+IGBgYA0KPiANCj4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25seSBpbiB3b3Jr ZXIuYywgc2hvdWxkIGJlIHN0YXRpYy4NCg0KSW1wcm92ZWQuDQoNCj4gMTAuIEluaXRpYWxpemVB cHBseVdvcmtlcigpDQo+IA0KPiBgYGANCj4gKy8qDQo+ICsgKiBJbml0aWFsaXplIHRoZSBkYXRh YmFzZSBjb25uZWN0aW9uLCBpbi1tZW1vcnkgc3Vic2NyaXB0aW9uIGFuZCBuZWNlc3NhcnkNCj4g KyAqIGNvbmZpZyBvcHRpb25zLg0KPiArICovDQo+ICB2b2lkDQo+IC1BcHBseVdvcmtlck1haW4o RGF0dW0gbWFpbl9hcmcpDQo+ICtJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCkNCj4gYGBgDQo+ IA0KPiBTb21lIGNvbW1lbnRzIHNob3VsZCBiZSBhZGRlZCBhYm91dCB0aGlzIGlzIGEgY29tbW9u IHBhcnQgb2YgbGVhZGVyIGFuZA0KPiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuDQoNCkFkZGVkIHRo ZSBmb2xsb3dpbmcgY29tbWVudDoNCmBUaGUgY29tbW9uIGluaXRpYWxpemF0aW9uIGZvciBsZWFk ZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIuYA0KDQo+ID09PQ0KPiBs b2dpY2FscmVwd29ya2VyLmgNCj4gDQo+IDExLiBkZWNsYXJhdGlvbg0KPiANCj4gYGBgDQo+IGV4 dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBib29sIFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGlu ZzsNCj4gYGBgDQo+IA0KPiBQbGVhc2UgcmVmZXIgYWJvdmUgY29tbWVudC4NCj4gDQo+ID09PQ0K PiBndWNfdGFibGVzLmMNCg0KSW1wcm92ZWQuDQoNCkFsc28gcmViYXNlZCB0aGUgcGF0Y2ggc2V0 IGJhc2VkIG9uIHRoZSBjaGFuZ2VzIGluIEhFQUQgKDI2Zjc4MDIpLg0KDQpBdHRhY2ggdGhlIG5l dyBwYXRjaCBzZXQuDQoNClJlZ2FyZHMsDQpXYW5nIHdlaQ0K --_006_OS3PR01MB6275F4A7CA186412E2FF2ED29E529OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v34-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v34-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v34-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=140109; creation-date="Mon, 26 Sep 2022 03:09:00 GMT"; modification-date="Mon, 26 Sep 2022 03:09:51 GMT" Content-Transfer-Encoding: base64 RnJvbSA2ZjQ0YTYyNzUyOTNmYjZjYTBhMDJhNzFhY2JmZDUyY2E0MzkwNDQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYzNCAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRoZSBmaWxlIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUgdHJh bnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rpb25z LCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVsIHdv cmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBwbHkg d29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJlYW0g aXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwKc2VuZCBjaGFuZ2Vz IHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcgp3aWxsIGRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0aW5n IGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2UKa2VlcCB0aGlzIHdvcmtlciBhc3NpZ25lZCB0aWxs IHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdApmb3IgdGhl IHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3JkZXJp bmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZSBpbiBtb3N0IGNh c2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlCmlzIG5vIHdvcmtlciBhdmFpbGFi bGUuCgpUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcn IHBhcmFtZXRlciBzbyB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhIHBhcmFsbGVsIGFwcGx5CndvcmtlciBvciBz cGlsbCB0aGUgY2hhbmdlIHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0cmVhbWluZyBw YXJhbWV0ZXIgdG8KJ29uL29mZicsICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIgdmFsdWUgJ3Bh cmFsbGVsJyBtZWFucyB0aGUgc3RyZWFtaW5nIHdpbGwKYmUgYXBwbGllZCB2aWEgYSBwYXJhbGxl bCBhcHBseSB3b3JrZXIsIGlmIGF2YWlsYWJsZS4gVGhlIHBhcmFtZXRlciB2YWx1ZQonb24nIG1l YW5zIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVkIHRvIGRpc2suIFRo ZSBkZWZhdWx0IHZhbHVlCmlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVoYXZpb3VyKS4KCklu IGFkZGl0aW9uLCB0aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBTVFJF QU1fQUJPUlQgbWVzc2FnZSBzbwp0aGF0IGFib3J0X3RpbWUgYW5kIGFib3J0X2xzbiBjYW4gYWxz byBiZSBzZW50IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUKcmVwbGljYXRpb24gb3Jp Z2luIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aGVuIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gaXMKYWJvcnRlZC4gQmVjYXVzZSB0aGlzIG1lc3NhZ2UgZXh0ZW5zaW9uIGlzIG5lZWRlZCB0 byBzdXBwb3J0IHBhcmFsbGVsCnN0cmVhbWluZywgcGFyYWxsZWwgc3RyZWFtaW5nIGlzIG5vdCBz dXBwb3J0ZWQgZm9yIHB1YmxpY2F0aW9ucyBvbiBzZXJ2ZXJzIDwKUEcxNi4KLS0tCiBkb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgIDExICstCiBkb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgIDI4ICstCiBkb2Mvc3Jj L3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAgIDIxICstCiBkb2Mvc3Jj L3NnbWwvcHJvdG9jb2wuc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgIDI5ICstCiBkb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgfCAgIDI0ICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgICAgICAgICAgICAgfCAgIDEzICsKIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2RlZmluZS5jICAgICAgICAgICAgICAgICB8ICAgNTggKwogc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgICAxMCArLQogc3JjL2JhY2tl bmQvbGlicHEvcHFtcS5jICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArLQogc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAgICAgIHwgICAgMyArCiAuLi4vbGlicHF3 YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgICAgICAgfCAgICA2ICstCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgfCAgICAxICsKIC4uLi9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8IDEwOTYgKysrKysrKysrKysrKysr KysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgICAgICB8ICAgMTAg Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8ICAxNzkg KystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgfCAgICAx ICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAgICB8ICAgMzcg Ky0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8ICAgMTAg Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAgIDYg Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8ICA4NzEg KysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YyAgIHwgICAyMCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAgICAg ICAgIHwgICAgNCArCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAg ICAgfCAgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAg ICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAg IHwgICAxMiArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUg fCAgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8 ICAgIDYgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICB8 ICAgMjEgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oICAgICAgICAgICAgICAgICB8 ICAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmggICAgIHwg ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAg IDI4ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggICAgICAgfCAg ICA2ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICB8ICAg IDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICB8ICAg IDcgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggICAgICAgICB8ICAg IDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAx MzggKystCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAgICAgICAgICAgfCAg ICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAgICAgICB8ICAg IDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0ICAgIHwgICAx MiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCAgICAgICAgIHwgICAg NiArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAg NSArCiA0MSBmaWxlcyBjaGFuZ2VkLCAyNDU0IGluc2VydGlvbnMoKyksIDI1OCBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Fw cGx5cGFyYWxsZWx3b3JrZXIuYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggMDBmODMzZDIxMC4uYzU3Njlk YTI2YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc4OTIsMTEgKzc4OTIsMTYgQEAgU0NSQU0tU0hBLTI1 NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVw bGFjZWFibGU+JmwKIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0 ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8 c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAg ICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIElmIHRydWUsIHRoZSBzdWJzY3JpcHRp b24gd2lsbCBhbGxvdyBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MKLSAgICAgICB0cmFuc2FjdGlv bnMKKyAgICAgICBDb250cm9scyBob3cgdG8gaGFuZGxlIHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJv Z3Jlc3MgdHJhbnNhY3Rpb25zOgorICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxs b3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucywKKyAgICAgICA8bGl0ZXJh bD50PC9saXRlcmFsPiA9IHNwaWxsIHRoZSBjaGFuZ2VzIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0 aW9ucyB0bworICAgICAgIGRpc2sgYW5kIGFwcGx5IGF0IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0 aW9uIGlzIGNvbW1pdHRlZCBvbiB0aGUKKyAgICAgICBwdWJsaXNoZXIsCisgICAgICAgPGxpdGVy YWw+cDwvbGl0ZXJhbD4gPSBhcHBseSBjaGFuZ2VzIGRpcmVjdGx5IHVzaW5nIGEgcGFyYWxsZWwg YXBwbHkKKyAgICAgICB3b3JrZXIgaWYgYXZhaWxhYmxlIChzYW1lIGFzICd0JyBpZiBubyB3b3Jr ZXIgaXMgYXZhaWxhYmxlKQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwKaW5kZXggZDg4NDhiYzc3NC4uNTIyY2I0NWJlNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNDk0Nyw3 ICs0OTQ3LDggQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwv cmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDxsaXN0aXRlbT4KICAg ICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lmaWVzIG1heGltdW0gbnVtYmVyIG9mIGxvZ2ljYWwg cmVwbGljYXRpb24gd29ya2Vycy4gVGhpcyBpbmNsdWRlcwotICAgICAgICBib3RoIGFwcGx5IHdv cmtlcnMgYW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXJzLgorICAgICAgICBsZWFkZXIg YXBwbHkgd29ya2VycywgcGFyYWxsZWwgYXBwbHkgd29ya2VycywgYW5kIHRhYmxlIHN5bmNocm9u aXphdGlvbgorICAgICAgICB3b3JrZXJzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4K ICAgICAgICAgTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBw b29sIGRlZmluZWQgYnkKQEAgLTQ5ODcsNiArNDk4OCwzMSBAQCBBTlkgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xh c3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZh cmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1wYXJhbGxlbC1hcHBseS13b3JrZXJzLXBlci1zdWJzY3Jp cHRpb24iIHhyZWZsYWJlbD0ibWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlw dGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5tYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8 aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1heF9wYXJhbGxlbF9hcHBseV93 b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVy PC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlz dGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIE1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4gVGhpcworICAgICAgICBwYXJhbWV0ZXIg Y29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Igc3RyZWFtaW5nIG9mCisgICAg ICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIK KyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgICAg IDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBieQorICAgICAgICA8dmFybmFtZT5t YXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPC92YXJuYW1lPi4KKyAgICAgICA8L3BhcmE+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDIuIFRoaXMgcGFy YW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVz cWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24gdGhlIHNlcnZlciBjb21tYW5kCisgICAgICAg IGxpbmUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0 ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9zZWN0Mj4KIApkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9s b2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggNzdiZTRjMzdlNy4uZjdiZDFjZTU1MSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xMzQwLDYgKzEzNDAsMTYgQEAg Q09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAi cGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIG1pZ2h0IG5vdCB2aW9sYXRlIGFueSBjb25zdHJh aW50LiAgVGhpcyBjYW4gZWFzaWx5IG1ha2UgdGhlIHN1YnNjcmliZXIKICAgIGluY29uc2lzdGVu dC4KICAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgV2hlbiB0aGUgc3RyZWFtaW5nIG1vZGUgaXMg PGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCB0aGUgZmluaXNoIExTTiBvZgorICAgZmFpbGVk IHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNlLCBpdCBtYXkgYmUg bmVjZXNzYXJ5IHRvCisgICBjaGFuZ2UgdGhlIHN0cmVhbWluZyBtb2RlIHRvIDxsaXRlcmFsPm9u PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+IGFuZAorICAgY2F1c2UgdGhlIHNh bWUgY29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNh Y3Rpb24gd2lsbAorICAgYmUgd3JpdHRlbiB0byB0aGUgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2Fn ZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8gPGxpbmsKKyAgIGxpbmtlbmQ9InNxbC1h bHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLgorICAgU0tJ UDwvY29tbWFuZD48L2xpbms+LgorICA8L3BhcmE+CiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0i bG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmljdGlvbnMiPgpAQCAtMTUyMSw3ICsxNTMxLDggQEAg Q09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAi cGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIHN1YnNjcmlwdGlvbi4gIEEgZGlzYWJsZWQgc3Vi c2NyaXB0aW9uIG9yIGEgY3Jhc2hlZCBzdWJzY3JpcHRpb24gd2lsbCBoYXZlCiAgICB6ZXJvIHJv d3MgaW4gdGhpcyB2aWV3LiAgSWYgdGhlIGluaXRpYWwgZGF0YSBzeW5jaHJvbml6YXRpb24gb2Yg YW55CiAgICB0YWJsZSBpcyBpbiBwcm9ncmVzcywgdGhlcmUgd2lsbCBiZSBhZGRpdGlvbmFsIHdv cmtlcnMgZm9yIHRoZSB0YWJsZXMKLSAgIGJlaW5nIHN5bmNocm9uaXplZC4KKyAgIGJlaW5nIHN5 bmNocm9uaXplZC4gTW9yZW92ZXIsIGlmIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaXMgYXBw bGllZCBpbgorICAgcGFyYWxsZWwsIHRoZXJlIHdpbGwgYmUgYWRkaXRpb25hbCB3b3JrZXJzLgog ICA8L3BhcmE+CiAgPC9zZWN0MT4KIApAQCAtMTYxNiw4ICsxNjI3LDEyIEBAIENPTlRFWFQ6ICBw cm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBk dXJpbmcgIklOU0VSCiAgICB0byB0aGUgc3Vic2NyaWJlciwgcGx1cyBzb21lIHJlc2VydmUgZm9y IHRhYmxlIHN5bmNocm9uaXphdGlvbi4KICAgIDx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0 aW9uX3dvcmtlcnM8L3Zhcm5hbWU+IG11c3QgYmUgc2V0IHRvIGF0IGxlYXN0CiAgICB0aGUgbnVt YmVyIG9mIHN1YnNjcmlwdGlvbnMsIGFnYWluIHBsdXMgc29tZSByZXNlcnZlIGZvciB0aGUgdGFi bGUKLSAgIHN5bmNocm9uaXphdGlvbi4gIEFkZGl0aW9uYWxseSB0aGUgPHZhcm5hbWU+bWF4X3dv cmtlcl9wcm9jZXNzZXM8L3Zhcm5hbWU+Ci0gICBtYXkgbmVlZCB0byBiZSBhZGp1c3RlZCB0byBh Y2NvbW1vZGF0ZSBmb3IgcmVwbGljYXRpb24gd29ya2VycywgYXQgbGVhc3QKKyAgIHN5bmNocm9u aXphdGlvbi4gSWYgdGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgPGxpdGVyYWw+c3RyZWFtaW5n PC9saXRlcmFsPgorICAgaXMgc2V0IHRvIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwKKyAg IDxsaXRlcmFsPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L2xpdGVyYWw+IHNob3Vs ZCBiZSBpbmNyZWFzZWQKKyAgIGFjY29yZGluZyB0byB0aGUgZGVzaXJlZCBudW1iZXIgb2YgcGFy YWxsZWwgYXBwbHkgd29ya2Vycy4gIEFkZGl0aW9uYWxseSB0aGUKKyAgIDx2YXJuYW1lPm1heF93 b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPiBtYXkgbmVlZCB0byBiZSBhZGp1c3RlZCB0bworICAg YWNjb21tb2RhdGUgZm9yIHJlcGxpY2F0aW9uIHdvcmtlcnMsIGF0IGxlYXN0CiAgICAoPHZhcm5h bWU+bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4KICAgICsgPGxpdGVy YWw+MTwvbGl0ZXJhbD4pLiAgTm90ZSB0aGF0IHNvbWUgZXh0ZW5zaW9ucyBhbmQgcGFyYWxsZWwg cXVlcmllcwogICAgYWxzbyB0YWtlIHdvcmtlciBzbG90cyBmcm9tIDx2YXJuYW1lPm1heF93b3Jr ZXJfcHJvY2Vzc2VzPC92YXJuYW1lPi4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2Nv bC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5kZXggNzVjYWE3ZmRiNi4uYzM3 ZTAyNjAzYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTMxMDIsNyArMzEwMiw3IEBAIHBzcWwgImRibmFt ZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAg ICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgogICAgICAgIFByb3RvY29sIHZlcnNpb24uIEN1 cnJlbnRseSB2ZXJzaW9ucyA8bGl0ZXJhbD4xPC9saXRlcmFsPiwgPGxpdGVyYWw+MjwvbGl0ZXJh bD4sCi0gICAgICAgYW5kIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGFyZSBzdXBwb3J0ZWQuCisgICAg ICAgPGxpdGVyYWw+MzwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD40PC9saXRlcmFsPiBhcmUgc3Vw cG9ydGVkLgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgVmVyc2lvbiA8bGl0 ZXJhbD4yPC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBmb3Igc2VydmVyIHZlcnNpb24gMTQK QEAgLTMxMTIsNiArMzExMiwxMSBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249 ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgIFZlcnNpb24gPGxpdGVyYWw+ MzwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE1CiAgICAg ICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dzIHN0cmVhbWluZyBvZiB0d28tcGhhc2UgY29tbWl0 cy4KICAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFZlcnNpb24gPGxpdGVyYWw+ NDwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE2CisgICAg ICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dzIGFwcGx5aW5nIHN0cmVhbXMgb2YgbGFyZ2UgaW4t cHJvZ3Jlc3MKKyAgICAgICB0cmFuc2FjdGlvbnMgaW4gcGFyYWxsZWwuCisgICAgICA8L3BhcmE+ CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTY4ODIsNiArNjg4 NywyOCBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJ REVOVElGWV9TWVNURU07IgogICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9saXN0aXRlbT4KICAg ICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJt PkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxw YXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJvcnQuIFRoaXMgZmllbGQgaXMgYXZhaWxh YmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24KKyAgICAgICAgIDQuCisgICAgICAgIDwvcGFyYT4K KyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJs aXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRpbWVzdGFtcFR6KTwvdGVybT4KKyAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgQWJvcnQgdGltZXN0YW1wIG9m IHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGluIG51bWJlcgorICAgICAgICAgb2YgbWlj cm9zZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2ggKDIwMDAtMDEtMDEpLiBUaGlzIGZpZWxk IGlzCisgICAgICAgICBhdmFpbGFibGUgc2luY2UgcHJvdG9jb2wgdmVyc2lvbiA0LgorICAgICAg ICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCiAg ICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4K ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggYmQxMmU3MWUz My4uODU5MmI5NWM3YSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2Ny aXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNn bWwKQEAgLTIyMiwxMyArMjIyLDI5IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAg PC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8dmFybGlzdGVudHJ5PgotICAgICAgICA8dGVybT48 bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5ib29sZWFuPC90eXBlPik8L3Rlcm0+ CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4gKDx0eXBlPmVudW08 L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAg ICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHN0cmVhbWluZyBvZiBpbi1wcm9ncmVz cyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBmb3IgdGhpcyBzdWJzY3JpcHRpb24uICBCeSBkZWZh dWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgYXJlIGZ1bGx5IGRlY29kZWQgb24gdGhl IHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNlbnQgdG8gdGhlCi0gICAgICAgICAgc3Vic2NyaWJl ciBhcyBhIHdob2xlLgorICAgICAgICAgIGZvciB0aGlzIHN1YnNjcmlwdGlvbi4gIFRoZSBkZWZh dWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4sCisgICAgICAgICAgbWVhbmluZyBh bGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIG9u bHkKKyAgICAgICAgICB0aGVuIHNlbnQgdG8gdGhlIHN1YnNjcmliZXIgYXMgYSB3aG9sZS4KKyAg ICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxs aXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGluY29taW5nIGNoYW5nZXMgYXJlIHdyaXR0ZW4gdG8K KyAgICAgICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBvbmx5IGFmdGVyIHRo ZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAgIGNvbW1pdHRlZCBvbiB0aGUgcHVibGlzaGVyIGFu ZCByZWNlaXZlZCBieSB0aGUgc3Vic2NyaWJlci4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAg ICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFs PiwgaW5jb21pbmcgY2hhbmdlcyBhcmUgZGlyZWN0bHkKKyAgICAgICAgICBhcHBsaWVkIHZpYSBv bmUgb2YgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGlmIGF2YWlsYWJsZS4gSWYgbm8KKyAg ICAgICAgICBwYXJhbGxlbCB3b3JrZXIgaXMgZnJlZSB0byBoYW5kbGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9ucyB0aGVuIHRoZQorICAgICAgICAgIGNoYW5nZXMgYXJlIHdyaXR0ZW4gdG8gdGVtcG9y YXJ5IGZpbGVzIGFuZCBhcHBsaWVkIGFmdGVyIHRoZQorICAgICAgICAgIHRyYW5zYWN0aW9uIGlz IGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgd2hlbgorICAgICAgICAg IGFwcGx5aW5nIGNoYW5nZXMgaW4gYSBwYXJhbGxlbCB3b3JrZXIsIHRoZSBmaW5pc2ggTFNOIG9m IHRoZQorICAgICAgICAgIHJlbW90ZSB0cmFuc2FjdGlvbiBtaWdodCBub3QgYmUgcmVwb3J0ZWQg aW4gdGhlIHNlcnZlciBsb2cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+ CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXgg MmJiOTc1OTQzYy4uZDE5NWYzOWNmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAt MTcxMSw2ICsxNzExLDcgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkK IAlpbnQJCQluY2hpbGRyZW47CiAJVHJhbnNhY3Rpb25JZCAqY2hpbGRyZW47CiAJVGltZXN0YW1w VHogeGFjdF90aW1lOworCWJvb2wJCXJlcGxvcmlnaW47CiAKIAkvKgogCSAqIElmIHdlIGhhdmVu J3QgYmVlbiBhc3NpZ25lZCBhbiBYSUQsIG5vYm9keSB3aWxsIGNhcmUgd2hldGhlciB3ZSBhYm9y dGVkCkBAIC0xNzQxLDYgKzE3NDIsMTMgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlz U3ViWGFjdCkKIAkJZWxvZyhQQU5JQywgImNhbm5vdCBhYm9ydCB0cmFuc2FjdGlvbiAldSwgaXQg d2FzIGFscmVhZHkgY29tbWl0dGVkIiwKIAkJCSB4aWQpOwogCisJLyoKKwkgKiBBcmUgd2UgdXNp bmcgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbnMgZmVhdHVyZT8gIE9yLCBpbiBvdGhlciB3b3Jkcywg YXJlCisJICogd2UgcmVwbGF5aW5nIHJlbW90ZSBhY3Rpb25zPworCSAqLworCXJlcGxvcmlnaW4g PSAocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKKwkJ CQkgIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gRG9Ob3RSZXBsaWNhdGVJZCk7CisKIAkv KiBGZXRjaCB0aGUgZGF0YSB3ZSBuZWVkIGZvciB0aGUgYWJvcnQgcmVjb3JkICovCiAJbnJlbHMg PSBzbWdyR2V0UGVuZGluZ0RlbGV0ZXMoZmFsc2UsICZyZWxzKTsKIAluY2hpbGRyZW4gPSB4YWN0 R2V0Q29tbWl0dGVkQ2hpbGRyZW4oJmNoaWxkcmVuKTsKQEAgLTE3NjUsNiArMTc3MywxMSBAQCBS ZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQkJCQkgICBNeVhhY3RGbGFn cywgSW52YWxpZFRyYW5zYWN0aW9uSWQsCiAJCQkJCSAgIE5VTEwpOwogCisJaWYgKHJlcGxvcmln aW4pCisJCS8qIE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlzIHJlcGxpY2F0aW9uIG9yaWdpbiAq LworCQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2lu X2xzbiwKKwkJCQkJCQkJICAgWGFjdExhc3RSZWNFbmQpOworCiAJLyoKIAkgKiBSZXBvcnQgdGhl IGxhdGVzdCBhc3luYyBhYm9ydCBMU04sIHNvIHRoYXQgdGhlIFdBTCB3cml0ZXIga25vd3MgdG8K IAkgKiBmbHVzaCB0aGlzIGFib3J0LiBUaGVyZSdzIG5vdGhpbmcgdG8gYmUgZ2FpbmVkIGJ5IGRl bGF5aW5nIHRoaXMsIHNpbmNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZWZp bmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RlZmluZS5jCmluZGV4IDg2Yjg5MDcxZWUuLjEx MzEyZDE5MjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RlZmluZS5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RlZmluZS5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk ZSA8bWF0aC5oPgogCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgog I2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBl LmgiCkBAIC0zNDUsNiArMzQ2LDYzIEBAIGRlZkdldFN0cmluZ0xpc3QoRGVmRWxlbSAqZGVmKQog CXJldHVybiAoTGlzdCAqKSBkZWYtPmFyZzsKIH0KIAorLyoKKyAqIEV4dHJhY3QgdGhlIHN0cmVh bWluZyBtb2RlIHZhbHVlIGZyb20gYSBEZWZFbGVtLiAgVGhpcyBpcyBsaWtlCisgKiBkZWZHZXRC b29sZWFuKCkgYnV0IGFsc28gYWNjZXB0cyB0aGUgc3BlY2lhbCB2YWx1ZSBvZiAicGFyYWxsZWwi LgorICovCitjaGFyCitkZWZHZXRTdHJlYW1pbmdNb2RlKERlZkVsZW0gKmRlZikKK3sKKwkvKgor CSAqIElmIG5vIHBhcmFtZXRlciB2YWx1ZSBnaXZlbiwgYXNzdW1lICJ0cnVlIiBpcyBtZWFudC4K KwkgKi8KKwlpZiAoZGVmLT5hcmcgPT0gTlVMTCkKKwkJcmV0dXJuIFNVQlNUUkVBTV9PTjsKKwor CS8qCisJICogQWxsb3cgMCwgMSwgImZhbHNlIiwgInRydWUiLCAib2ZmIiwgIm9uIiBvciAicGFy YWxsZWwiLgorCSAqLworCXN3aXRjaCAobm9kZVRhZyhkZWYtPmFyZykpCisJeworCQljYXNlIFRf SW50ZWdlcjoKKwkJCXN3aXRjaCAoaW50VmFsKGRlZi0+YXJnKSkKKwkJCXsKKwkJCQljYXNlIDA6 CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOworCQkJCWNhc2UgMToKKwkJCQkJcmV0dXJuIFNV QlNUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiBvdGhlcndpc2UsIGVycm9yIG91dCBi ZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJewor CQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJpbmcoZGVmKTsKKworCQkJCS8qCisJCQkJICog VGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUgc2hvdWxkIG1hdGNoIHVwIHdpdGggdGhl CisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFuX29yX3N0cmluZyBwcm9kdWN0aW9uLgorCQkJ CSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJmYWxzZSIpID09IDAgfHwKKwkJCQkJ cGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9P RkY7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInRydWUiKSA9PSAwIHx8CisJCQkJCXBn X3N0cmNhc2VjbXAoc3ZhbCwgIm9uIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PTjsK KwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAicGFyYWxsZWwiKSA9PSAwKQorCQkJCQlyZXR1 cm4gU1VCU1RSRUFNX1BBUkFMTEVMOworCQkJfQorCQkJYnJlYWs7CisJfQorCisJZXJlcG9ydChF UlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCSBlcnJtc2coIiVz IHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciBcInBhcmFsbGVsXCIiLAorCQkJCQlkZWYtPmRl Zm5hbWUpKSk7CisJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0 ICovCit9CisKIC8qCiAgKiBSYWlzZSBhbiBlcnJvciBhYm91dCBhIGNvbmZsaWN0aW5nIERlZkVs ZW0uCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNt ZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCBmM2Jm Y2NhNDM0Li4xZjgyMjA2NjEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5jCkBAIC04NCw3ICs4NCw3IEBAIHR5cGVkZWYgc3RydWN0IFN1Yk9wdHMKIAlib29sCQljb3B5 X2RhdGE7CiAJYm9vbAkJcmVmcmVzaDsKIAlib29sCQliaW5hcnk7Ci0JYm9vbAkJc3RyZWFtaW5n OworCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQl0d29waGFzZTsKIAlib29sCQlkaXNhYmxlb25l cnI7CiAJY2hhcgkgICAqb3JpZ2luOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHBhcnNlX3N1YnNjcmlw dGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCWlm IChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0JJTkFSWSkpCiAJCW9wdHMtPmJpbmFyeSA9 IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCi0J CW9wdHMtPnN0cmVhbWluZyA9IGZhbHNlOworCQlvcHRzLT5zdHJlYW1pbmcgPSBTVUJTVFJFQU1f T0ZGOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX1RXT1BIQVNFX0NPTU1JVCkp CiAJCW9wdHMtPnR3b3BoYXNlID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBT VUJPUFRfRElTQUJMRV9PTl9FUlIpKQpAQCAtMjQxLDcgKzI0MSw3IEBAIHBhcnNlX3N1YnNjcmlw dGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJ CWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUpOwogCiAJCQlvcHRzLT5zcGVj aWZpZWRfb3B0cyB8PSBTVUJPUFRfU1RSRUFNSU5HOwotCQkJb3B0cy0+c3RyZWFtaW5nID0gZGVm R2V0Qm9vbGVhbihkZWZlbCk7CisJCQlvcHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdN b2RlKGRlZmVsKTsKIAkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0d29f cGhhc2UiKSA9PSAwKQogCQl7CkBAIC02MjksNyArNjI5LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl2YWx1 ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3duZXIgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0o b3duZXIpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJlbmFibGVkIC0gMV0gPSBC b29sR2V0RGF0dW0ob3B0cy5lbmFibGVkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3ViYmluYXJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5iaW5hcnkpOwotCXZhbHVlc1tBbnVt X3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLnN0cmVh bWluZyk7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQ2hh ckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3VidHdvcGhhc2VzdGF0ZSAtIDFdID0KIAkJQ2hhckdldERhdHVtKG9wdHMudHdvcGhhc2UgPwog CQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKQEAgLTEwOTksNyArMTA5 OSw3IEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3Jp cHRpb25TdG10ICpzdG10LAogCQkJCWlmIChJc1NldChvcHRzLnNwZWNpZmllZF9vcHRzLCBTVUJP UFRfU1RSRUFNSU5HKSkKIAkJCQl7CiAJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9z dWJzdHJlYW0gLSAxXSA9Ci0JCQkJCQlCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCQkJ CQkJQ2hhckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAkJCQkJcmVwbGFjZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSB0cnVlOwogCQkJCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCmluZGV4 IDRkMDQxNWUzNzkuLjZkNTM5NGUzYjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL3Bx bXEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKQEAgLTEzLDExICsxMywxMyBAQAog CiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgog I2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNp bmNsdWRlICJsaWJwcS9wcW1xLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1 ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogCkBAIC0x NjIsOSArMTY0LDE5IEBAIG1xX3B1dG1lc3NhZ2UoY2hhciBtc2d0eXBlLCBjb25zdCBjaGFyICpz LCBzaXplX3QgbGVuKQogCQlyZXN1bHQgPSBzaG1fbXFfc2VuZHYocHFfbXFfaGFuZGxlLCBpb3Ys IDIsIHRydWUsIHRydWUpOwogCiAJCWlmIChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkICE9IDAp Ci0JCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkLAotCQkJCQkJICAg UFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAotCQkJCQkJICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVy X2JhY2tlbmRfaWQpOworCQl7CisJCQlpZiAoSXNQYXJhbGxlbFdvcmtlcigpKQorCQkJCVNlbmRQ cm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQsCisJCQkJCQkJICAgUFJPQ1NJR19Q QVJBTExFTF9NRVNTQUdFLAorCQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5k X2lkKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlBc3NlcnQoSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdv cmtlcigpKTsKKwkJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkLAor CQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwKKwkJCQkJCQkgICBwcV9t cV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCQl9CisJCX0KIAogCQlpZiAocmVzdWx0 ICE9IFNITV9NUV9XT1VMRF9CTE9DSykKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtl ci5jCmluZGV4IDhkZDdkNjQ2MzAuLjlmNjE5OWNiY2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29y a2VyLmMKQEAgLTEyOCw2ICsxMjgsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CiAJfSwKIAl7CiAJ CSJBcHBseVdvcmtlck1haW4iLCBBcHBseVdvcmtlck1haW4KKwl9LAorCXsKKwkJIlBhcmFsbGVs QXBwbHlXb3JrZXJNYWluIiwgUGFyYWxsZWxBcHBseVdvcmtlck1haW4KIAl9CiB9OwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2Fs cmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGli cHF3YWxyZWNlaXZlci5jCmluZGV4IDdmNjk3YjBmMjkuLjlmNzcxMTVmZGYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3 YWxyZWNlaXZlci5jCkBAIC00NDMsOSArNDQzLDkgQEAgbGlicHFyY3Zfc3RhcnRzdHJlYW1pbmco V2FsUmVjZWl2ZXJDb25uICpjb25uLAogCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJwcm90b192 ZXJzaW9uICcldSciLAogCQkJCQkJIG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwucHJvdG9fdmVyc2lv bik7CiAKLQkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nICYmCi0JCQlQUXNl cnZlclZlcnNpb24oY29ubi0+c3RyZWFtQ29ubikgPj0gMTQwMDAwKQotCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmY21kLCAiLCBzdHJlYW1pbmcgJ29uJyIpOworCQlpZiAob3B0aW9ucy0+cHJv dG8ubG9naWNhbC5zdHJlYW1pbmcpCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICIsIHN0cmVh bWluZyAnJXMnIiwKKwkJCQkJCQkgb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJlYW1pbmcpOwog CiAJCWlmIChvcHRpb25zLT5wcm90by5sb2dpY2FsLnR3b3BoYXNlICYmCiAJCQlQUXNlcnZlclZl cnNpb24oY29ubi0+c3RyZWFtQ29ubikgPj0gMTUwMDAwKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvTWFrZWZpbGUKaW5kZXggYzRlMmZkZWI3MS4uMmRjMjVlMzdiYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQorKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCkBAIC0xNSw2ICsxNSw3IEBAIGluY2x1 ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIG92ZXJyaWRlIENQUEZMQUdT IDo9IC1JJChzcmNkaXIpICQoQ1BQRkxBR1MpCiAKIE9CSlMgPSBcCisJYXBwbHlwYXJhbGxlbHdv cmtlci5vIFwKIAlkZWNvZGUubyBcCiAJbGF1bmNoZXIubyBcCiAJbG9naWNhbC5vIFwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtl ci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOTE4NzVjMmNjZgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJh bGxlbHdvcmtlci5jCkBAIC0wLDAgKzEsMTA5NiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBh cHBseXBhcmFsbGVsd29ya2VyLmMKKyAqICAgICBTdXBwb3J0IHJvdXRpbmVzIGZvciBhcHBseWlu ZyB4YWN0IGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIENvcHlyaWdodCAoYykgMjAx Ni0yMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5U SUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJh bGxlbHdvcmtlci5jCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJl IGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGluZyB1cCwgdXNpbmcsCisgKiBhbmQgdGVhcmluZyBk b3duIGEgUGFyYWxsZWxBcHBseVdvcmtlckluZm8uCisgKgorICogUmVmZXIgdG8gdGhlIGNvbW1l bnRzIGluIGZpbGUgaGVhZGVyIG9mIGxvZ2ljYWwvd29ya2VyLmMgdG8gc2VlIG1vcmUKKyAqIGlu Zm9ybWF0aW9uIGFib3V0IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3Bx Zm9ybWF0LmgiCisjaW5jbHVkZSAibGlicHEvcHFtcS5oIgorI2luY2x1ZGUgIm1iL3BnX3djaGFy LmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQu aCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKKyNpbmNsdWRlICJy ZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2lu LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJyZXBs aWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgor I2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNp bmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisK KyNkZWZpbmUgUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMgMHg3ODdjYTA2NworCisvKgorICog RFNNIGtleXMgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gIFVubGlrZSBvdGhlciBwYXJhbGxl bCBleGVjdXRpb24gY29kZSwKKyAqIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQg RFNNIGtleXMgY29uZmxpY3Rpbmcgd2l0aCBwbGFuX25vZGVfaWQgd2UKKyAqIGNhbiB1c2Ugc21h bGwgaW50ZWdlcnMuCisgKi8KKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRAkJMQor I2RlZmluZSBQQVJBTExFTF9BUFBMWV9LRVlfTVEJCQkyCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZ X0tFWV9FUlJPUl9RVUVVRQkzCisKKy8qIFF1ZXVlIHNpemUgb2YgRFNNLCAxNiBNQiBmb3Igbm93 LiAqLworI2RlZmluZSBEU01fUVVFVUVfU0laRQkoMTYgKiAxMDI0ICogMTAyNCkKKworLyoKKyAq IEVycm9yIHF1ZXVlIHNpemUgb2YgRFNNLiBJdCBpcyBkZXNpcmFibGUgdG8gbWFrZSBpdCBsYXJn ZSBlbm91Z2ggdGhhdCBhCisgKiB0eXBpY2FsIEVycm9yUmVzcG9uc2UgY2FuIGJlIHNlbnQgd2l0 aG91dCBibG9ja2luZy4gIFRoYXQgd2F5LCBhIHdvcmtlciB0aGF0CisgKiBlcnJvcnMgb3V0IGNh biB3cml0ZSB0aGUgd2hvbGUgbWVzc2FnZSBpbnRvIHRoZSBxdWV1ZSBhbmQgdGVybWluYXRlIHdp dGhvdXQKKyAqIHdhaXRpbmcgZm9yIHRoZSB1c2VyIGJhY2tlbmQuCisgKi8KKyNkZWZpbmUgRFNN X0VSUk9SX1FVRVVFX1NJWkUJCQkoMTYgKiAxMDI0KQorCisvKgorICogVGhlcmUgYXJlIHRocmVl IGZpZWxkcyBpbiBlYWNoIG1lc3NhZ2UgcmVjZWl2ZWQgYnkgdGhlIHBhcmFsbGVsIGFwcGx5Cisg KiB3b3JrZXI6IHN0YXJ0X2xzbiwgZW5kX2xzbiBhbmQgc2VuZF90aW1lLiBCZWNhdXNlIHdlIGhh dmUgdXBkYXRlZCB0aGVzZQorICogc3RhdGlzdGljcyBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ciwgd2UgY2FuIGlnbm9yZSB0aGVzZSBmaWVsZHMgaW4gdGhlCisgKiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgKHNlZSBmdW5jdGlvbiBMb2dpY2FsUmVwQXBwbHlMb29wKS4KKyAqLworI2RlZmluZSBT SVpFX1NUQVRTX01FU1NBR0UgKDIgKiBzaXplb2YoWExvZ1JlY1B0cikgKyBzaXplb2YoVGltZXN0 YW1wVHopKQorCisvKgorICogSGFzaCB0YWJsZSBlbnRyeSB0byBtYXAgeGlkIHRvIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgc3RhdGUuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBw bHlXb3JrZXJFbnRyeQoreworCVRyYW5zYWN0aW9uSWQgeGlkOwkJCS8qIEhhc2gga2V5IC0tIG11 c3QgYmUgZmlyc3QgKi8KKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87Cit9IFBhcmFs bGVsQXBwbHlXb3JrZXJFbnRyeTsKKworLyogUGFyYWxsZWwgYXBwbHkgd29ya2VycyBoYXNoIHRh YmxlIChpbml0aWFsaXplZCBvbiBmaXJzdCB1c2UpLiAqLworc3RhdGljIEhUQUIgKlBhcmFsbGVs QXBwbHlXb3JrZXJzSGFzaCA9IE5VTEw7CisKKy8qCisgKiBBIGxpc3QgdG8gbWFpbnRhaW4gdGhl IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBUaGUgaW5mb3JtYXRpb24gZm9yCisgKiB0 aGUgbmV3IHdvcmtlciBpcyBhZGRlZCB0byB0aGUgbGlzdCBhZnRlciBzdWNjZXNzZnVsbHkgbGF1 bmNoaW5nIGl0LiBUaGUKKyAqIGxpc3QgZW50cnkgaXMgcmVtb3ZlZCBhdCB0aGUgZW5kIG9mIHRo ZSB0cmFuc2FjdGlvbiBpZiB0aGVyZSBhcmUgYWxyZWFkeQorICogZW5vdWdoIHdvcmtlcnMgaW4g dGhlIHdvcmtlciBwb29sLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgd29ya2VyCisg KiBwb29sLCBzZWUgY29tbWVudHMgYXRvcCB3b3JrZXIuYy4gV2UgYWxzbyByZW1vdmUgdGhlIGVu dHJ5IGZyb20gdGhlIGxpc3QgaWYKKyAqIHRoZSB3b3JrZXIgaXMgZXhpdGVkIGR1ZSB0byBzb21l IGVycm9yLgorICovCitzdGF0aWMgTGlzdCAqUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0ID0gTklM OworCisvKgorICogSW5mb3JtYXRpb24gc2hhcmVkIGJldHdlZW4gbGVhZGVyIGFwcGx5IHdvcmtl ciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCitQYXJhbGxlbEFwcGx5V29ya2VyU2hh cmVkICpNeVBhcmFsbGVsU2hhcmVkID0gTlVMTDsKKworLyoKKyAqIElzIHRoZXJlIGEgbWVzc2Fn ZSBwZW5kaW5nIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aGljaCB3ZSBuZWVkIHRvCisgKiBy ZWNlaXZlPworICovCit2b2xhdGlsZSBzaWdfYXRvbWljX3QgUGFyYWxsZWxBcHBseU1lc3NhZ2VQ ZW5kaW5nID0gZmFsc2U7CisKKy8qCisgKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciBhcHBseWluZyB0aGUKKyAqIGN1cnJlbnQgc3RyZWFt aW5nIHRyYW5zYWN0aW9uLiBJdCBpcyB1c2VkIHRvIHNhdmUgdGhlIGNvc3Qgb2Ygc2VhcmNoaW5n IHRoZQorICogaGFzaCB0YWJsZSB3aGVuIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGJldHdlZW4gU1RS RUFNX1NUQVJUIGFuZCBTVFJFQU1fU1RPUC4KKyAqLworUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOworCisvKiBBIGxpc3QgdG8gbWFpbnRhaW4gc3Vi dHJhbnNhY3Rpb25zLCBpZiBhbnkuICovCitMaXN0CSAgICpzdWJ4YWN0bGlzdCA9IE5JTDsKKwor c3RhdGljIGJvb2wgcGFyYWxsZWxfYXBwbHlfY2FuX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkKTsK K3N0YXRpYyBib29sIHBhcmFsbGVsX2FwcGx5X3NldHVwX2RzbShQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8pOworc3RhdGljIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpwYXJhbGxlbF9h cHBseV9zZXR1cF93b3JrZXIodm9pZCk7CitzdGF0aWMgYm9vbCBwYXJhbGxlbF9hcHBseV9nZXRf aW5feGFjdChQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkKTsKK3N0YXRpYyB2b2lk IHBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvKTsKKworLyoKKyAqIFJldHVybnMgdHJ1ZSwgaWYgaXQgaXMgYWxsb3dlZCB0byBzdGFy dCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgZmFsc2UsCisgKiBvdGhlcndpc2UuCisgKi8KK3N0 YXRpYyBib29sCitwYXJhbGxlbF9hcHBseV9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCit7 CisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkv KgorCSAqIERvbid0IHN0YXJ0IGEgbmV3IHBhcmFsbGVsIHdvcmtlciBpZiBub3QgaW4gcGFyYWxs ZWwgc3RyZWFtaW5nIG1vZGUgb3IKKwkgKiB0aGUgcHVibGlzaGVyIGRvZXMgbm90IHN1cHBvcnQg cGFyYWxsZWwgYXBwbHkuCisJICovCisJaWYgKCFNeUxvZ2ljYWxSZXBXb3JrZXItPmluX3BhcmFs bGVsX2FwcGx5KQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBPbmx5IGxlYWRlciBhcHBseSB3b3Jr ZXJzIGNhbiBzdGFydCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAqLworCWlmIChhbV9wYXJhbGxl bF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBEb24ndCBzdGFy dCBhIG5ldyBwYXJhbGxlbCB3b3JrZXIgaWYgdXNlciBoYXMgc2V0IHNraXBsc24gYXMgaXQncwor CSAqIHBvc3NpYmxlIHRoYXQgdXNlciB3YW50IHRvIHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2Fj dGlvbi4gRm9yCisJICogc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCB3ZSBuZWVkIHRvIHNwaWxsIHRo ZSB0cmFuc2FjdGlvbiB0byBkaXNrIHNvIHRoYXQKKwkgKiB3ZSBjYW4gZ2V0IHRoZSBsYXN0IExT TiBvZiB0aGUgdHJhbnNhY3Rpb24gdG8ganVkZ2Ugd2hldGhlciB0byBza2lwCisJICogYmVmb3Jl IHN0YXJ0aW5nIHRvIGFwcGx5IHRoZSBjaGFuZ2UuCisJICovCisJaWYgKCFYTG9nUmVjUHRySXNJ bnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoK KwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIHVz aW5nIGEgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhl ciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhCisJICogcmVsYXRpb24gdGhhdCBpcyBub3QgaW4g dGhlIFJFQURZIHN0YXRlIChzZWUKKwkgKiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKSBh cyB3ZSB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdAorCSAqIHRpbWUuIFNvLCB3 ZSBkb24ndCBzdGFydCB0aGUgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbiB0aGlzIGNhc2Uu CisJICovCisJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJ cmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBTdGFydCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0 aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCB4aWQuCisgKgorICogSWYgYSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgaXMgZm91bmQgYnV0IG5vdCBpbiB1c2UgdGhlbiByZS11c2UgaXQs IG90aGVyd2lzZQorICogc3RhcnQgYSBmcmVzaCBvbmUuIENhY2hlIHRoZSB3b3JrZXIgaW5mb3Jt YXRpb24gaW4gUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoCisgKiBrZXllZCBieSB0aGUgc3BlY2lm aWVkIHhpZC4KKyAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfc3RhcnRfd29ya2VyKFRyYW5zYWN0 aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOworCUxpc3RDZWxsICAgKmxjOworCVBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7CisJUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5 ICplbnRyeSA9IE5VTEw7CisKKwlpZiAoIXBhcmFsbGVsX2FwcGx5X2Nhbl9zdGFydCh4aWQpKQor CQlyZXR1cm47CisKKwkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUgYXBwbHkgd29y a2VycyBoYXNodGFibGUuICovCisJaWYgKFBhcmFsbGVsQXBwbHlXb3JrZXJzSGFzaCA9PSBOVUxM KQorCXsKKwkJSEFTSENUTAkJY3RsOworCisJCU1lbVNldCgmY3RsLCAwLCBzaXplb2YoY3RsKSk7 CisJCWN0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOworCQljdGwuZW50cnlzaXpl ID0gc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSk7CisJCWN0bC5oY3h0ID0gQXBwbHlD b250ZXh0OworCisJCVBhcmFsbGVsQXBwbHlXb3JrZXJzSGFzaCA9IGhhc2hfY3JlYXRlKCJsb2dp Y2FsIGFwcGx5IHdvcmtlcnMgaGFzaCIsCisJCQkJCQkJCQkJCSAgIDE2LCAmY3RsLAorCQkJCQkJ CQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl9CisKKwkv KiBUcnkgdG8gZ2V0IGEgZnJlZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICovCisJZm9yZWFjaChs YywgUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0KQorCXsKKwkJUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKnRtcF93aW5mbzsKKworCQl0bXBfd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KikgbGZpcnN0KGxjKTsKKworCQlpZiAodG1wX3dpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPT0gTlVM TCkKKwkJeworCQkJLyoKKwkJCSAqIFJlbGVhc2UgdGhlIHdvcmtlciBpbmZvcm1hdGlvbiBhbmQg dHJ5IG5leHQgb25lIGlmIHRoZSBwYXJhbGxlbAorCQkJICogYXBwbHkgd29ya2VyIGV4aXRlZCBj bGVhbmx5LgorCQkJICovCisJCQlQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QgPSBmb3JlYWNoX2Rl bGV0ZV9jdXJyZW50KFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCwgbGMpOworCQkJc2htX21xX2Rl dGFjaCh0bXBfd2luZm8tPm1xX2hhbmRsZSk7CisJCQlkc21fZGV0YWNoKHRtcF93aW5mby0+ZHNt X3NlZyk7CisJCQlwZnJlZSh0bXBfd2luZm8pOworCQl9CisJCWVsc2UgaWYgKCF0bXBfd2luZm8t PmluX3VzZSkKKwkJeworCQkJLyogRm91bmQgYSB3b3JrZXIgdGhhdCBoYXMgbm90IGJlZW4gYXNz aWduZWQgYSB0cmFuc2FjdGlvbi4gKi8KKwkJCXdpbmZvID0gdG1wX3dpbmZvOworCQkJYnJlYWs7 CisJCX0KKwl9CisKKwkvKiBUcnkgdG8gc3RhcnQgYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LiAqLworCWlmICh3aW5mbyA9PSBOVUxMKQorCQl3aW5mbyA9IHBhcmFsbGVsX2FwcGx5X3NldHVw X3dvcmtlcigpOworCisJLyogRmFpbGVkIHRvIHN0YXJ0IGEgbmV3IHBhcmFsbGVsIGFwcGx5IHdv cmtlci4gKi8KKwlpZiAod2luZm8gPT0gTlVMTCkKKwkJcmV0dXJuOworCisJLyogQ3JlYXRlIGVu dHJ5IGZvciByZXF1ZXN0ZWQgdHJhbnNhY3Rpb24uICovCisJZW50cnkgPSBoYXNoX3NlYXJjaChQ YXJhbGxlbEFwcGx5V29ya2Vyc0hhc2gsICZ4aWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CisJaWYg KGZvdW5kKQorCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKworCS8qCisJ ICogU2V0IHRoZSBpbl9wYXJhbGxlbF9hcHBseV94YWN0IGZsYWcgaW4gdGhlIGxlYWRlciBpbnN0 ZWFkIG9mIHRoZQorCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBhdm9pZCB0aGUgcmFjZSBj b25kaXRpb24gd2hlcmUgdGhlIGxlYWRlciBoYXMKKwkgKiBhbHJlYWR5IHN0YXJ0ZWQgd2FpdGlu ZyBmb3IgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBmaW5pc2gKKwkgKiBwcm9jZXNzaW5n IHRoZSB0cmFuc2FjdGlvbiB3aGlsZSB0aGUgY2hpbGQgcHJvY2VzcyBoYXMgbm90IHlldAorCSAq IHByb2Nlc3NlZCB0aGUgZmlyc3QgU1RSRUFNX1NUQVJUIGFuZCBoYXMgbm90IHNldCB0aGUKKwkg KiBpbl9wYXJhbGxlbF9hcHBseV94YWN0IHRvIHRydWUuCisJICovCisJcGFyYWxsZWxfYXBwbHlf c2V0X2luX3hhY3Qod2luZm8tPnNoYXJlZCwgdHJ1ZSk7CisKKwl3aW5mby0+aW5fdXNlID0gdHJ1 ZTsKKwllbnRyeS0+d2luZm8gPSB3aW5mbzsKKwllbnRyeS0+eGlkID0geGlkOworfQorCisvKgor ICogRmluZCB0aGUgYXNzaWduZWQgd29ya2VyIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24sIGlm IGFueS4KKyAqLworUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKgorcGFyYWxsZWxfYXBwbHlfZmlu ZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJYm9vbAkJZm91bmQ7CisJUGFyYWxsZWxB cHBseVdvcmtlckVudHJ5ICplbnRyeSA9IE5VTEw7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKHhpZCkpCisJCXJldHVybiBOVUxMOworCisJaWYgKFBhcmFsbGVsQXBwbHlXb3JrZXJzSGFz aCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFJldHVybiB0aGUgY2FjaGVkIHBhcmFs bGVsIGFwcGx5IHdvcmtlciBpZiB2YWxpZC4gKi8KKwlpZiAoc3RyZWFtX2FwcGx5X3dvcmtlciAh PSBOVUxMKQorCQlyZXR1cm4gc3RyZWFtX2FwcGx5X3dvcmtlcjsKKworCS8qCisJICogRmluZCBl bnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLgorCSAqLworCWVudHJ5ID0gaGFzaF9zZWFy Y2goUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJ aWYgKGZvdW5kKQorCXsKKwkJLyoKKwkJICogV2UgY2FuJ3QgcHJvY2VlZCBpZiB0aGUgcGFyYWxs ZWwgc3RyZWFtaW5nIHdvcmtlciBoYXMgYWxyZWFkeQorCQkgKiBleGl0ZWQuCisJCSAqLworCQlp ZiAoZW50cnktPndpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RB VEUpLAorCQkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gcGFyYWxsZWwgYXBwbHkgd29y a2VyIikpKTsKKworCQlBc3NlcnQocGFyYWxsZWxfYXBwbHlfZ2V0X2luX3hhY3QoZW50cnktPndp bmZvLT5zaGFyZWQpKTsKKwkJQXNzZXJ0KGVudHJ5LT53aW5mby0+aW5fdXNlKTsKKworCQlyZXR1 cm4gZW50cnktPndpbmZvOworCX0KKworCXJldHVybiBOVUxMOworfQorCisvKgorICogUmVtb3Zl IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZW50cnkgZnJvbSB0aGUgaGFzaCB0YWJsZS4gQW5k IHN0b3AgdGhlCisgKiB3b3JrZXIgaWYgdGhlcmUgYXJlIGVub3VnaCB3b3JrZXJzIGluIHRoZSBw b29sLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dAorICogdGhlIHdvcmtlciBwb29sLCBzZWUg Y29tbWVudHMgYXRvcCB3b3JrZXIuYy4KKyAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfZnJlZV93 b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBUcmFuc2FjdGlvbklkIHhpZCkK K3sKKwlpbnQJCQluYXBwbHl3b3JrZXJzOworCisJQXNzZXJ0KCFhbV9wYXJhbGxlbF9hcHBseV93 b3JrZXIoKSk7CisJQXNzZXJ0KCFwYXJhbGxlbF9hcHBseV9nZXRfaW5feGFjdCh3aW5mby0+c2hh cmVkKSk7CisKKwlpZiAoIWhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlXb3JrZXJzSGFzaCwgJnhp ZCwgSEFTSF9SRU1PVkUsIE5VTEwpKQorCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0 ZWQiKTsKKworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7 CisJbmFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfcGFyYWxsZWxfYXBwbHlfd29ya2VyX2NvdW50 KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpOworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdv cmtlckxvY2spOworCisJd2luZm8tPmluX3VzZSA9IGZhbHNlOworCisJLyogQXJlIHRoZXJlIGVu b3VnaCB3b3JrZXJzIGluIHRoZSBwb29sPyAqLworCWlmIChuYXBwbHl3b3JrZXJzID4gKG1heF9w YXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAyKSkKKwl7CisJCWxvZ2lj YWxyZXBfd29ya2VyX3N0b3BfYnlfc2xvdCh3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtl cl9zbG90X25vLAorCQkJCQkJCQkJICAgd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJf Z2VuZXJhdGlvbik7CisKKwkJUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0ID0gbGlzdF9kZWxldGVf cHRyKFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCwgd2luZm8pOworCisJCXBhcmFsbGVsX2FwcGx5 X2ZyZWVfd29ya2VyX2luZm8od2luZm8pOworCX0KK30KKworLyogRnJlZSB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyIGluZm9ybWF0aW9uLiAqLworc3RhdGljIHZvaWQKK3BhcmFsbGVsX2FwcGx5 X2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCUFz c2VydCh3aW5mbyk7CisKKwlpZiAod2luZm8tPm1xX2hhbmRsZSAhPSBOVUxMKQorCQlzaG1fbXFf ZGV0YWNoKHdpbmZvLT5tcV9oYW5kbGUpOworCisJaWYgKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUg IT0gTlVMTCkKKwkJc2htX21xX2RldGFjaCh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKTsKKworCWlm ICh3aW5mby0+ZHNtX3NlZyAhPSBOVUxMKQorCQlkc21fZGV0YWNoKHdpbmZvLT5kc21fc2VnKTsK KworCXBmcmVlKHdpbmZvKTsKK30KKworLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1haW4gbG9v cC4gKi8KK3N0YXRpYyB2b2lkCitMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRs ZSAqbXFoLCB2b2xhdGlsZSBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQpCit7CisJ c2htX21xX3Jlc3VsdCBzaG1xX3JlczsKKwlQR1BST0MJICAgKnJlZ2lzdHJhbnQ7CisJRXJyb3JD b250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisKKwlyZWdpc3RyYW50ID0gQmFja2VuZFBpZEdl dFByb2MoTXlCZ3dvcmtlckVudHJ5LT5iZ3dfbm90aWZ5X3BpZCk7CisJU2V0TGF0Y2goJnJlZ2lz dHJhbnQtPnByb2NMYXRjaCk7CisKKwkvKgorCSAqIEluaXQgdGhlIEFwcGx5TWVzc2FnZUNvbnRl eHQgd2hpY2ggd2UgY2xlYW4gdXAgYWZ0ZXIgZWFjaCByZXBsaWNhdGlvbgorCSAqIHByb3RvY29s IG1lc3NhZ2UuCisJICovCisJQXBwbHlNZXNzYWdlQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENy ZWF0ZShBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQkiQXBwbHlNZXNzYWdlQ29udGV4dCIsCisJ CQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKworCS8qCisJICogUHVzaCBhcHBs eSBlcnJvciBjb250ZXh0IGNhbGxiYWNrLiBGaWVsZHMgd2lsbCBiZSBmaWxsZWQgd2hpbGUgYXBw bHlpbmcKKwkgKiBhIGNoYW5nZS4KKwkgKi8KKwllcnJjYWxsYmFjay5jYWxsYmFjayA9IGFwcGx5 X2Vycm9yX2NhbGxiYWNrOworCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9z dGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOworCisJZm9yICg7OykK Kwl7CisJCXZvaWQJICAgKmRhdGE7CisJCVNpemUJCWxlbjsKKwkJaW50CQkJYzsKKwkJU3RyaW5n SW5mb0RhdGEgczsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisKKwkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKKworCQkvKiBFbnN1cmUgd2UgYXJlIHJlYWRpbmcgdGhlIGRhdGEgaW50byBvdXIg bWVtb3J5IGNvbnRleHQuICovCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBs eU1lc3NhZ2VDb250ZXh0KTsKKworCQlzaG1xX3JlcyA9IHNobV9tcV9yZWNlaXZlKG1xaCwgJmxl biwgJmRhdGEsIGZhbHNlKTsKKworCQlpZiAoc2htcV9yZXMgIT0gU0hNX01RX1NVQ0NFU1MpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJF UkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBs ZWFkZXIgYXBwbHkgd29ya2VyIikpKTsKKworCQlpZiAobGVuID09IDApCisJCQlicmVhazsKKwor CQlzLmN1cnNvciA9IDA7CisJCXMubWF4bGVuID0gLTE7CisJCXMuZGF0YSA9IChjaGFyICopIGRh dGE7CisJCXMubGVuID0gbGVuOworCisJCS8qCisJCSAqIFRoZSBmaXJzdCBieXRlIG9mIG1lc3Nh Z2UgZm9yIGFkZGl0aW9uYWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuCisJCSAqIGxlYWRlciBhcHBs eSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgY2FuIG9ubHkgYmUgJ3cnLgorCQkg Ki8KKwkJYyA9IHBxX2dldG1zZ2J5dGUoJnMpOworCQlpZiAoYyAhPSAndycpCisJCQllbG9nKEVS Uk9SLCAidW5leHBlY3RlZCBtZXNzYWdlIFwiJWNcIiIsIGMpOworCisJCS8qCisJCSAqIElnbm9y ZSBzdGF0aXN0aWNzIGZpZWxkcyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVkIGJ5IHRoZSBsZWFkZXIg YXBwbHkKKwkJICogd29ya2VyLgorCQkgKi8KKwkJcy5jdXJzb3IgKz0gU0laRV9TVEFUU19NRVNT QUdFOworCisJCWFwcGx5X2Rpc3BhdGNoKCZzKTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3R4KTsKKwkJTWVtb3J5Q29udGV4dFJlc2V0KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJ CWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCQl7CisJCQlDb25maWdSZWxvYWRQZW5kaW5nID0g ZmFsc2U7CisJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKKwkJfQorCX0KKworCS8q IFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjay4gKi8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0g ZXJyY2FsbGJhY2sucHJldmlvdXM7CisKKwkvKiBTaWduYWwgbWFpbiBwcm9jZXNzIHRoYXQgd2Ug YXJlIGRvbmUuICovCisJU2V0TGF0Y2goJnJlZ2lzdHJhbnQtPnByb2NMYXRjaCk7Cit9CisKKy8q CisgKiBNYWtlIHN1cmUgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdHJpZXMgdG8gcmVhZCBmcm9t IG91ciBlcnJvciBxdWV1ZSBvbmUgbW9yZQorICogdGltZS4gVGhpcyBndWFyZHMgYWdhaW5zdCB0 aGUgY2FzZSB3aGVyZSB3ZSBleGl0IHVuY2xlYW5seSB3aXRob3V0IHNlbmRpbmcKKyAqIGFuIEVy cm9yUmVzcG9uc2UsIGZvciBleGFtcGxlIGJlY2F1c2Ugc29tZSBjb2RlIGNhbGxzIHByb2NfZXhp dCBkaXJlY3RseS4KKyAqLworc3RhdGljIHZvaWQKK3BhcmFsbGVsX2FwcGx5X3NodXRkb3duKGlu dCBjb2RlLCBEYXR1bSBhcmcpCit7CisJU2VuZFByb2NTaWduYWwoTXlMb2dpY2FsUmVwV29ya2Vy LT5hcHBseV9sZWFkZXJfcGlkLAorCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FH RSwKKwkJCQkgICBJbnZhbGlkQmFja2VuZElkKTsKKworCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50 ICopIERhdHVtR2V0UG9pbnRlcihhcmcpKTsKK30KKworLyoKKyAqIFBhcmFsbGVsIGFwcGx5IHdv cmtlciBlbnRyeSBwb2ludC4KKyAqLwordm9pZAorUGFyYWxsZWxBcHBseVdvcmtlck1haW4oRGF0 dW0gbWFpbl9hcmcpCit7CisJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqc2hhcmVkOworCWRz bV9oYW5kbGUJaGFuZGxlOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOwor CXNobV9tcQkgICAqbXE7CisJc2htX21xX2hhbmRsZSAqbXFoOworCXNobV9tcV9oYW5kbGUgKmVy cm9yX21xaDsKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOwor CWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCisJLyogU2V0dXAgc2lnbmFsIGhhbmRs aW5nLiAqLworCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7 CisJcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25h bHMoKTsKKworCS8qCisJICogQXR0YWNoIHRvIHRoZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2Vn bWVudCBmb3IgdGhlIHBhcmFsbGVsIGFwcGx5LCBhbmQKKwkgKiBmaW5kIGl0cyB0YWJsZSBvZiBj b250ZW50cy4KKwkgKgorCSAqIExpa2UgcGFyYWxsZWwgcXVlcnksIHdlIGRvbid0IG5lZWQgcmVz b3VyY2Ugb3duZXIgYnkgdGhpcyB0aW1lLiBTZWUKKwkgKiBQYXJhbGxlbFdvcmtlck1haW4uCisJ ICovCisJbWVtY3B5KCZoYW5kbGUsIE15Qmd3b3JrZXJFbnRyeS0+Ymd3X2V4dHJhLCBzaXplb2Yo ZHNtX2hhbmRsZSkpOworCXNlZyA9IGRzbV9hdHRhY2goaGFuZGxlKTsKKwlpZiAoc2VnID09IE5V TEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lO X1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygidW5hYmxlIHRvIG1hcCBkeW5hbWlj IHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwl0b2MgPSBzaG1fdG9jX2F0dGFjaChQR19M T0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcpKTsKKwlpZiAo dG9jID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiYmFkIG1hZ2ljIG51 bWJlciBpbiBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwliZWZvcmVfc2ht ZW1fZXhpdChwYXJhbGxlbF9hcHBseV9zaHV0ZG93biwgUG9pbnRlckdldERhdHVtKHNlZykpOwor CisJLyogTG9vayB1cCB0aGUgc2hhcmVkIGluZm9ybWF0aW9uLiAqLworCXNoYXJlZCA9IHNobV90 b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgZmFsc2UpOworCU15UGFy YWxsZWxTaGFyZWQgPSBzaGFyZWQ7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgbWVzc2FnZSBx dWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZ X01RLCBmYWxzZSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsKKwltcWggPSBz aG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyoKKwkgKiBQcmltYXJ5IGluaXRpYWxp emF0aW9uIGlzIGNvbXBsZXRlLiBOb3csIHdlIGNhbiBhdHRhY2ggdG8gb3VyIHNsb3QuCisJICog VGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBkb2VzIG5vdCB3 cml0ZSBkYXRhIHRvCisJICogdGhlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHF1ZXVlLgorCSAqLwor CWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwlNeUxvZ2ljYWxSZXBX b3JrZXItPmluX3BhcmFsbGVsX2FwcGx5ID0gdHJ1ZTsKKworCU15UGFyYWxsZWxTaGFyZWQtPmxv Z2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb24gPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmdlbmVyYXRp b247CisJTXlQYXJhbGxlbFNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubyA9IHdvcmtl cl9zbG90OworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhlIGVycm9yIHF1ZXVlLgorCSAqLworCW1x ID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUsIGZh bHNlKTsKKwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKwllcnJvcl9tcWggPSBzaG1f bXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJcHFfcmVkaXJlY3RfdG9fc2htX21xKHNlZywg ZXJyb3JfbXFoKTsKKwlwcV9zZXRfcGFyYWxsZWxfbGVhZGVyKE15TG9naWNhbFJlcFdvcmtlci0+ YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkJCSAgIEludmFsaWRCYWNrZW5kSWQpOworCisJTXlMb2dp Y2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9y ZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSAwOworCisJSW5p dGlhbGl6ZUFwcGx5V29ya2VyKCk7CisKKwkvKgorCSAqIFNldHVwIGNhbGxiYWNrIGZvciBzeXNj YWNoZSBzbyB0aGF0IHdlIGtub3cgd2hlbiBzb21ldGhpbmcgY2hhbmdlcyBpbgorCSAqIHRoZSBz dWJzY3JpcHRpb24gcmVsYXRpb24gc3RhdGUuCisJICovCisJQ2FjaGVSZWdpc3RlclN5c2NhY2hl Q2FsbGJhY2soU1VCU0NSSVBUSU9OUkVMTUFQLAorCQkJCQkJCQkgIGludmFsaWRhdGVfc3luY2lu Z190YWJsZV9zdGF0ZXMsCisJCQkJCQkJCSAgKERhdHVtKSAwKTsKKworCS8qCisJICogQWxsb2Nh dGUgdGhlIG9yaWdpbiBuYW1lIGluIGxvbmctbGl2ZWQgY29udGV4dCBmb3IgZXJyb3IgY29udGV4 dAorCSAqIG1lc3NhZ2UuCisJICovCisJc25wcmludGYob3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdp bm5hbWUpLCAicGdfJXUiLCBNeVN1YnNjcmlwdGlvbi0+b2lkKTsKKwlhcHBseV9lcnJvcl9jYWxs YmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwK KwkJCQkJCQkJCQkJCQkJCSAgIG9yaWdpbm5hbWUpOworCisJTG9naWNhbFBhcmFsbGVsQXBwbHlM b29wKG1xaCwgc2hhcmVkKTsKKworCXByb2NfZXhpdCgwKTsKK30KKworLyoKKyAqIEhhbmRsZSBy ZWNlaXB0IG9mIGFuIGludGVycnVwdCBpbmRpY2F0aW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IG1lc3NhZ2UuCisgKgorICogTm90ZTogdGhpcyBpcyBjYWxsZWQgd2l0aGluIGEgc2lnbmFsIGhh bmRsZXIhICBBbGwgd2UgY2FuIGRvIGlzIHNldCBhIGZsYWcKKyAqIHRoYXQgd2lsbCBjYXVzZSB0 aGUgbmV4dCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIGludm9rZQorICogSGFuZGxlUGFyYWxs ZWxBcHBseU1lc3NhZ2VzKCkuCisgKi8KK3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdl SW50ZXJydXB0KHZvaWQpCit7CisJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJUGFyYWxsZWxB cHBseU1lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsKKwlTZXRMYXRjaChNeUxhdGNoKTsKK30KKworLyoK KyAqIEhhbmRsZSBhIHNpbmdsZSBwcm90b2NvbCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gYSBzaW5n bGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlci4KKyAqLworc3RhdGljIHZvaWQKK0hhbmRsZVBh cmFsbGVsQXBwbHlNZXNzYWdlKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU3RyaW5n SW5mbyBtc2cpCit7CisJY2hhcgkJbXNndHlwZTsKKworCW1zZ3R5cGUgPSBwcV9nZXRtc2dieXRl KG1zZyk7CisKKwlzd2l0Y2ggKG1zZ3R5cGUpCisJeworCQljYXNlICdFJzoJCQkJLyogRXJyb3JS ZXNwb25zZSAqLworCQkJeworCQkJCUVycm9yRGF0YQllZGF0YTsKKwkJCQlFcnJvckNvbnRleHRD YWxsYmFjayAqc2F2ZV9lcnJvcl9jb250ZXh0X3N0YWNrOworCisJCQkJLyogUGFyc2UgRXJyb3JS ZXNwb25zZS4gKi8KKwkJCQlwcV9wYXJzZV9lcnJvcm5vdGljZShtc2csICZlZGF0YSk7CisKKwkJ CQkvKiBEZWF0aCBvZiBhIHdvcmtlciBpc24ndCBlbm91Z2gganVzdGlmaWNhdGlvbiBmb3Igc3Vp Y2lkZS4gKi8KKwkJCQllZGF0YS5lbGV2ZWwgPSBNaW4oZWRhdGEuZWxldmVsLCBFUlJPUik7CisK KwkJCQkvKgorCQkJCSAqIElmIGRlc2lyZWQsIGFkZCBhIGNvbnRleHQgbGluZSB0byBzaG93IHRo YXQgdGhpcyBpcyBhCisJCQkJICogbWVzc2FnZSBwcm9wYWdhdGVkIGZyb20gYSBwYXJhbGxlbCBh cHBseSB3b3JrZXIuIE90aGVyd2lzZSwKKwkJCQkgKiBpdCBjYW4gc29tZXRpbWVzIGJlIGNvbmZ1 c2luZyB0byB1bmRlcnN0YW5kIHdoYXQgYWN0dWFsbHkKKwkJCQkgKiBoYXBwZW5lZC4KKwkJCQkg Ki8KKwkJCQlpZiAoZWRhdGEuY29udGV4dCkKKwkJCQkJZWRhdGEuY29udGV4dCA9IHBzcHJpbnRm KCIlc1xuJXMiLCBlZGF0YS5jb250ZXh0LAorCQkJCQkJCQkJCQkgXygicGFyYWxsZWwgYXBwbHkg d29ya2VyIikpOworCQkJCWVsc2UKKwkJCQkJZWRhdGEuY29udGV4dCA9IHBzdHJkdXAoXygicGFy YWxsZWwgYXBwbHkgd29ya2VyIikpOworCisJCQkJLyoKKwkJCQkgKiBDb250ZXh0IGJleW9uZCB0 aGF0IHNob3VsZCB1c2UgdGhlIGVycm9yIGNvbnRleHQgY2FsbGJhY2tzCisJCQkJICogdGhhdCB3 ZXJlIGluIGVmZmVjdCBpbiBMb2dpY2FsUmVwQXBwbHlMb29wKCkuCisJCQkJICovCisJCQkJc2F2 ZV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwkJCQllcnJvcl9j b250ZXh0X3N0YWNrID0gYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjazsKKworCQkJCVRocm93RXJy b3JEYXRhKCZlZGF0YSk7CisKKwkJCQkvKiBTaG91bGQgbm90IHJlYWNoIGhlcmUgYWZ0ZXIgcmV0 aHJvd2luZyBhbiBlcnJvci4gKi8KKwkJCQllcnJvcl9jb250ZXh0X3N0YWNrID0gc2F2ZV9lcnJv cl9jb250ZXh0X3N0YWNrOworCisJCQkJYnJlYWs7CisJCQl9CisKKwkJY2FzZSAnWCc6CQkJCS8q IFRlcm1pbmF0ZSwgaW5kaWNhdGluZyBjbGVhbiBleGl0ICovCisJCQl7CisJCQkJc2htX21xX2Rl dGFjaCh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKTsKKwkJCQl3aW5mby0+ZXJyb3JfbXFfaGFuZGxl ID0gTlVMTDsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJLyoKKwkJCSAqIERvbid0IG5lZWQgdG8g ZG8gYW55dGhpbmcgYWJvdXQgTm90aWNlUmVzcG9uc2UgYW5kCisJCQkgKiBOb3RpZnlSZXNwb25z ZSBhcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZG9lc24ndCBuZWVkCisJCQkgKiB0 byBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBjbGllbnQuCisJCQkgKi8KKwkJY2FzZSAnTic6CisJCWNh c2UgJ0EnOgorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl7CisJCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBtZXNzYWdlIHR5cGUgcmVjZWl2ZWQgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXI6ICVjIChtZXNzYWdlIGxlbmd0aCAlZCBieXRlcykiLAorCQkJCQkgbXNndHlwZSwgbXNnLT5s ZW4pOworCQkJfQorCX0KK30KKworLyoKKyAqIEhhbmRsZSBhbnkgcXVldWVkIHByb3RvY29sIG1l c3NhZ2VzIHJlY2VpdmVkIGZyb20gcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAqLwordm9pZAor SGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisJ TWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJc3RhdGljIE1lbW9yeUNvbnRleHQgaHBtX2Nv bnRleHQgPSBOVUxMOworCisJLyoKKwkgKiBUaGlzIGlzIGludm9rZWQgZnJvbSBQcm9jZXNzSW50 ZXJydXB0cygpLCBhbmQgc2luY2Ugc29tZSBvZiB0aGUKKwkgKiBmdW5jdGlvbnMgaXQgY2FsbHMg Y29udGFpbiBDSEVDS19GT1JfSU5URVJSVVBUUygpLCB0aGVyZSBpcyBhIHBvdGVudGlhbAorCSAq IGZvciByZWN1cnNpdmUgY2FsbHMgaWYgbW9yZSBzaWduYWxzIGFyZSByZWNlaXZlZCB3aGlsZSB0 aGlzIHJ1bnMuICBJdCdzCisJICogdW5jbGVhciB0aGF0IHJlY3Vyc2l2ZSBlbnRyeSB3b3VsZCBi ZSBzYWZlLCBhbmQgaXQgZG9lc24ndCBzZWVtIHVzZWZ1bAorCSAqIGV2ZW4gaWYgaXQgaXMgc2Fm ZSwgc28gbGV0J3MgYmxvY2sgaW50ZXJydXB0cyB1bnRpbCBkb25lLgorCSAqLworCUhPTERfSU5U RVJSVVBUUygpOworCisJLyoKKwkgKiBNb3Jlb3ZlciwgQ3VycmVudE1lbW9yeUNvbnRleHQgbWln aHQgYmUgcG9pbnRpbmcgYWxtb3N0IGFueXdoZXJlLiAgV2UKKwkgKiBkb24ndCB3YW50IHRvIHJp c2sgbGVha2luZyBkYXRhIGludG8gbG9uZy1saXZlZCBjb250ZXh0cywgc28gbGV0J3MgZG8KKwkg KiBvdXIgd29yayBoZXJlIGluIGEgcHJpdmF0ZSBjb250ZXh0IHRoYXQgd2UgY2FuIHJlc2V0IG9u IGVhY2ggdXNlLgorCSAqLworCWlmIChocG1fY29udGV4dCA9PSBOVUxMKQkvKiBmaXJzdCB0aW1l IHRocm91Z2g/ICovCisJCWhwbV9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1l bW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCSJIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMiLAor CQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKwllbHNlCisJCU1lbW9yeUNvbnRl eHRSZXNldChocG1fY29udGV4dCk7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKGhwbV9jb250ZXh0KTsKKworCVBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZhbHNl OworCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0KQorCXsKKwkJc2htX21x X3Jlc3VsdCByZXM7CisJCVNpemUJCW5ieXRlczsKKwkJdm9pZAkgICAqZGF0YTsKKwkJUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxm aXJzdChsYyk7CisKKwkJLyogU2tpcCBpZiB3b3JrZXIgaGFzIGV4aXRlZCAqLworCQlpZiAod2lu Zm8tPmVycm9yX21xX2hhbmRsZSA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJcmVzID0gc2ht X21xX3JlY2VpdmUod2luZm8tPmVycm9yX21xX2hhbmRsZSwgJm5ieXRlcywKKwkJCQkJCQkgJmRh dGEsIHRydWUpOworCisJCWlmIChyZXMgPT0gU0hNX01RX1dPVUxEX0JMT0NLKQorCQkJYnJlYWs7 CisJCWVsc2UgaWYgKHJlcyA9PSBTSE1fTVFfU1VDQ0VTUykKKwkJeworCQkJU3RyaW5nSW5mb0Rh dGEgbXNnOworCisJCQlpbml0U3RyaW5nSW5mbygmbXNnKTsKKwkJCWFwcGVuZEJpbmFyeVN0cmlu Z0luZm8oJm1zZywgZGF0YSwgbmJ5dGVzKTsKKwkJCUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdl KHdpbmZvLCAmbXNnKTsKKwkJCXBmcmVlKG1zZy5kYXRhKTsKKwkJfQorCQllbHNlCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIiKSkpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250 ZXh0KTsKKworCS8qIE1pZ2h0IGFzIHdlbGwgY2xlYXIgdGhlIGNvbnRleHQgb24gb3VyIHdheSBv dXQgKi8KKwlNZW1vcnlDb250ZXh0UmVzZXQoaHBtX2NvbnRleHQpOworCisJUkVTVU1FX0lOVEVS UlVQVFMoKTsKK30KKworLyoKKyAqIFNldCB1cCBhIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdt ZW50LgorICoKKyAqIFdlIHNldCB1cCBhIGNvbnRyb2wgcmVnaW9uIHRoYXQgY29udGFpbnMgYSBQ YXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkLCBwbHVzCisgKiBvbmUgcmVnaW9uIHRvIGVhY2ggb2Yg bWVzc2FnZSBxdWV1ZSBhbmQgZXJyb3IgcXVldWUuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1 Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuCisgKi8KK3N0YXRpYyBib29sCitwYXJhbGxlbF9hcHBs eV9zZXR1cF9kc20oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCXNobV90b2Nf ZXN0aW1hdG9yIGU7CisJU2l6ZQkJc2Vnc2l6ZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNobV90 b2MgICAgKnRvYzsKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CisJc2htX21x CSAgICptcTsKKwlTaXplCQlxdWV1ZV9zaXplID0gRFNNX1FVRVVFX1NJWkU7CisJU2l6ZQkJZXJy b3JfcXVldWVfc2l6ZSA9IERTTV9FUlJPUl9RVUVVRV9TSVpFOworCisJLyoKKwkgKiBFc3RpbWF0 ZSBob3cgbXVjaCBzaGFyZWQgbWVtb3J5IHdlIG5lZWQuCisJICoKKwkgKiBCZWNhdXNlIHRoZSBU T0MgbWFjaGluZXJ5IG1heSBjaG9vc2UgdG8gaW5zZXJ0IHBhZGRpbmcgb2Ygb2RkbHktc2l6ZWQK KwkgKiByZXF1ZXN0cywgd2UgbXVzdCBlc3RpbWF0ZSBlYWNoIGNodW5rIHNlcGFyYXRlbHkuCisJ ICoKKwkgKiBXZSBuZWVkIG9uZSBrZXkgdG8gcmVnaXN0ZXIgdGhlIGxvY2F0aW9uIG9mIHRoZSBo ZWFkZXIsIGFuZCB3ZSBuZWVkIHR3bworCSAqIG90aGVyIGtleXMgdG8gdHJhY2sgdGhlIGxvY2F0 aW9ucyBvZiB0aGUgbWVzc2FnZSBxdWV1ZSBhbmQgdGhlIGVycm9yCisJICogbWVzc2FnZSBxdWV1 ZS4KKwkgKi8KKwlzaG1fdG9jX2luaXRpYWxpemVfZXN0aW1hdG9yKCZlKTsKKwlzaG1fdG9jX2Vz dGltYXRlX2NodW5rKCZlLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkpOworCXNo bV90b2NfZXN0aW1hdGVfY2h1bmsoJmUsIHF1ZXVlX3NpemUpOworCXNobV90b2NfZXN0aW1hdGVf Y2h1bmsoJmUsIGVycm9yX3F1ZXVlX3NpemUpOworCisJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZl LCAzKTsKKwlzZWdzaXplID0gc2htX3RvY19lc3RpbWF0ZSgmZSk7CisKKwkvKiBDcmVhdGUgdGhl IHNoYXJlZCBtZW1vcnkgc2VnbWVudCBhbmQgZXN0YWJsaXNoIGEgdGFibGUgb2YgY29udGVudHMu ICovCisJc2VnID0gZHNtX2NyZWF0ZShzaG1fdG9jX2VzdGltYXRlKCZlKSwgMCk7CisJaWYgKHNl ZyA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwl0b2MgPSBzaG1fdG9jX2NyZWF0ZShQR19M T0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcpLAorCQkJCQkJ IHNlZ3NpemUpOworCisJLyogU2V0IHVwIHRoZSBoZWFkZXIgcmVnaW9uLiAqLworCXNoYXJlZCA9 IHNobV90b2NfYWxsb2NhdGUodG9jLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkp OworCVNwaW5Mb2NrSW5pdCgmc2hhcmVkLT5tdXRleCk7CisKKwlzaGFyZWQtPmluX3BhcmFsbGVs X2FwcGx5X3hhY3QgPSBmYWxzZTsKKworCXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQ TFlfS0VZX1NIQVJFRCwgc2hhcmVkKTsKKworCS8qIFNldCB1cCBtZXNzYWdlIHF1ZXVlIGZvciB0 aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywg cXVldWVfc2l6ZSksIHF1ZXVlX3NpemUpOworCXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxf QVBQTFlfS0VZX01RLCBtcSk7CisJc2htX21xX3NldF9zZW5kZXIobXEsIE15UHJvYyk7CisKKwkv KiBBdHRhY2ggdGhlIHF1ZXVlLiAqLworCXdpbmZvLT5tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNo KG1xLCBzZWcsIE5VTEwpOworCisJLyogU2V0IHVwIGVycm9yIHF1ZXVlIGZvciB0aGUgd29ya2Vy LiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywgZXJyb3JfcXVl dWVfc2l6ZSksCisJCQkJCSAgIGVycm9yX3F1ZXVlX3NpemUpOworCXNobV90b2NfaW5zZXJ0KHRv YywgUEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFLCBtcSk7CisJc2htX21xX3NldF9yZWNl aXZlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVldWUuICovCisJd2luZm8tPmVy cm9yX21xX2hhbmRsZSA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBSZXR1 cm4gcmVzdWx0cyB0byBjYWxsZXIuICovCisJd2luZm8tPmRzbV9zZWcgPSBzZWc7CisJd2luZm8t PnNoYXJlZCA9IHNoYXJlZDsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogU3RhcnQgcGFy YWxsZWwgYXBwbHkgd29ya2VyIHByb2Nlc3MgYW5kIGFsbG9jYXRlIHNoYXJlZCBtZW1vcnkgZm9y IGl0LgorICovCitzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKgorcGFyYWxsZWxfYXBw bHlfc2V0dXBfd29ya2VyKHZvaWQpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCWJv b2wJCWxhdW5jaGVkOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKworCW9sZGNv bnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCXdpbmZvID0g KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIHBhbGxvYzAoc2l6ZW9mKFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvKSk7CisKKwkvKiBTZXR1cCBzaGFyZWQgbWVtb3J5LiAqLworCWlmICghcGFyYWxs ZWxfYXBwbHlfc2V0dXBfZHNtKHdpbmZvKSkKKwl7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjb250ZXh0KTsKKwkJcGZyZWUod2luZm8pOworCisJCXJldHVybiBOVUxMOworCX0KKworCWxh dW5jaGVkID0gbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE15TG9naWNhbFJlcFdvcmtlci0+ZGJp ZCwKKwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCU15U3Vic2NyaXB0 aW9uLT5uYW1lLAorCQkJCQkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAorCQkJCQkJ CQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJZHNtX3NlZ21lbnRfaGFuZGxlKHdpbmZvLT5kc21f c2VnKSk7CisKKwlpZiAobGF1bmNoZWQpCisJeworCQlQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3Qg PSBsYXBwZW5kKFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCwgd2luZm8pOworCX0KKwllbHNlCisJ eworCQlwYXJhbGxlbF9hcHBseV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKKworCQl3aW5mbyA9 IE5VTEw7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJcmV0 dXJuIHdpbmZvOworfQorCisvKgorICogU2VuZCB0aGUgZGF0YSB0byB0aGUgc3BlY2lmaWVkIHBh cmFsbGVsIGFwcGx5IHdvcmtlciB2aWEgc2hhcmVkLW1lbW9yeSBxdWV1ZS4KKyAqLwordm9pZAor cGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywg U2l6ZSBuYnl0ZXMsCisJCQkJCQkgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKwlzaG1fbXFfcmVzdWx0 IHJlc3VsdDsKKworCXJlc3VsdCA9IHNobV9tcV9zZW5kKHdpbmZvLT5tcV9oYW5kbGUsIG5ieXRl cywgZGF0YSwgZmFsc2UsIHRydWUpOworCisJaWYgKHJlc3VsdCAhPSBTSE1fTVFfU1VDQ0VTUykK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJF UkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBkYXRhIHRvIHNo YXJlZC1tZW1vcnkgcXVldWUiKSkpOworfQorCisvKgorICogV2FpdCB1bnRpbCB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIHByb2Nlc3NlZCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQu CisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3dhaXRfZm9yX3hhY3RfZmluaXNoKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlmb3IgKDs7KQorCXsKKwkJaWYgKCFwYXJhbGxl bF9hcHBseV9nZXRfaW5feGFjdCh3aW5mby0+c2hhcmVkKSkKKwkJCWJyZWFrOworCisJCS8qIElm IGFueSB3b3JrZXJzIGhhdmUgZGllZCwgd2UgaGF2ZSBmYWlsZWQuICovCisJCWlmICh3aW5mby0+ ZXJyb3JfbXFfaGFuZGxlID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1z ZygibG9zdCBjb25uZWN0aW9uIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKSk7CisKKwkJLyog V2FpdCB0byBiZSBzaWduYWxsZWQuICovCisJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJ CQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJ CQkJCSAxMDAwTCwKKwkJCQkJCSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RB VEVfQ0hBTkdFKTsKKworCQkvKiBSZXNldCB0aGUgbGF0Y2ggc28gd2UgZG9uJ3Qgc3Bpbi4gKi8K KwkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKworCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2Nj dXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OworCX0KK30KKworLyoKKyAqIFNldCB0aGUgaW5fcGFyYWxsZWxfYXBwbHlfeGFjdCBmbGFnIGZv ciB0aGUgZ2l2ZW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit2b2lkCitwYXJhbGxlbF9h cHBseV9zZXRfaW5feGFjdChQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJ CQkJICAgYm9vbCBpbl94YWN0KQoreworCVNwaW5Mb2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0ZXgp OworCXdzaGFyZWQtPmluX3BhcmFsbGVsX2FwcGx5X3hhY3QgPSBpbl94YWN0OworCVNwaW5Mb2Nr UmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworfQorCisvKgorICogR2V0IHRoZSBpbl9wYXJhbGxl bF9hcHBseV94YWN0IGZsYWcgZm9yIHRoZSBnaXZlbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisg Ki8KK3N0YXRpYyBib29sCitwYXJhbGxlbF9hcHBseV9nZXRfaW5feGFjdChQYXJhbGxlbEFwcGx5 V29ya2VyU2hhcmVkICp3c2hhcmVkKQoreworCWJvb2wJCWluX3hhY3Q7CisKKwlTcGluTG9ja0Fj cXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwlpbl94YWN0ID0gd3NoYXJlZC0+aW5fcGFyYWxsZWxf YXBwbHlfeGFjdDsKKwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKKworCXJldHVy biBpbl94YWN0OworfQorCisvKgorICogRGVmaW5lIGEgc2F2ZXBvaW50IGZvciBhIHN1YnhhY3Qg aW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIG5lZWRlZC4KKyAqCisgKiBUaGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyIGNhbiBmaWd1cmUgb3V0IGlmIGEgbmV3IHN1YnRyYW5zYWN0aW9uIHdhcwor ICogc3RhcnRlZCBieSBjaGVja2luZyBpZiB0aGUgbmV3IGNoYW5nZSBhcnJpdmVkIHdpdGggZGlm ZmVyZW50IHhpZC4gSW4gdGhhdAorICogY2FzZSBkZWZpbmUgYSBuYW1lZCBzYXZlcG9pbnQsIHNv IHRoYXQgd2UgYXJlIGFibGUgdG8gcm9sbGJhY2sgdG8gaXQKKyAqIHNlcGFyYXRlbHkgbGF0ZXIu CisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3N1YnhhY3RfaW5mb19hZGQoVHJhbnNhY3Rpb25J ZCBjdXJyZW50X3hpZCwgVHJhbnNhY3Rpb25JZCB0b3BfeGlkKQoreworCWlmIChjdXJyZW50X3hp ZCAhPSB0b3BfeGlkICYmCisJCSFsaXN0X21lbWJlcl94aWQoc3VieGFjdGxpc3QsIGN1cnJlbnRf eGlkKSkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQljaGFyCQlzcG5hbWVbTUFYUEdQ QVRIXTsKKworCQlwYXJhbGxlbF9hcHBseV9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+ b2lkLCBjdXJyZW50X3hpZCwKKwkJCQkJCQkJCSAgc3BuYW1lLCBzaXplb2Yoc3BuYW1lKSk7CisK KwkJZWxvZyhERUJVRzEsICJkZWZpbmluZyBzYXZlcG9pbnQgJXMgaW4gcGFyYWxsZWwgYXBwbHkg d29ya2VyIiwgc3BuYW1lKTsKKworCQkvKiBXZSBtdXN0IGJlIGluIHRyYW5zYWN0aW9uIGJsb2Nr IHRvIGRlZmluZSB0aGUgU0FWRVBPSU5ULiAqLworCQlpZiAoIUlzVHJhbnNhY3Rpb25CbG9jaygp KQorCQl7CisJCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOworCQl9CisKKwkJRGVmaW5lU2F2ZXBvaW50KHNwbmFtZSk7CisKKwkJLyoKKwkJ ICogQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kIGlzIG5lZWRlZCB0byBzdGFydCBhIHN1YnRyYW5z YWN0aW9uIGFmdGVyCisJCSAqIGlzc3VpbmcgYSBTQVZFUE9JTlQgaW5zaWRlIGEgdHJhbnNhY3Rp b24gYmxvY2sgKHNlZQorCQkgKiBTdGFydFN1YlRyYW5zYWN0aW9uKCkpLgorCQkgKi8KKwkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKEFwcGx5Q29udGV4dCk7CisJCXN1YnhhY3RsaXN0ID0gbGFwcGVuZF94aWQoc3VieGFjdGxp c3QsIGN1cnJlbnRfeGlkKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQor fQorCisvKgorICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zYWN0 aW9uIHdhcyBhcHBsaWVkIGluIGEgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlci4KKyAqLwordm9p ZAorcGFyYWxsZWxfYXBwbHlfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEg KmFib3J0X2RhdGEpCit7CisJVHJhbnNhY3Rpb25JZCB4aWQgPSBhYm9ydF9kYXRhLT54aWQ7CisJ VHJhbnNhY3Rpb25JZCBzdWJ4aWQgPSBhYm9ydF9kYXRhLT5zdWJ4aWQ7CisKKwkvKgorCSAqIFVw ZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVj dCBwb3NpdGlvbgorCSAqIGluIGNhc2Ugb2YgY3Jhc2guCisJICovCisJcmVwbG9yaWdpbl9zZXNz aW9uX29yaWdpbl9sc24gPSBhYm9ydF9kYXRhLT5hYm9ydF9sc247CisJcmVwbG9yaWdpbl9zZXNz aW9uX29yaWdpbl90aW1lc3RhbXAgPSBhYm9ydF9kYXRhLT5hYm9ydF90aW1lOworCisJLyoKKwkg KiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9w bGV2ZWwgeGFjdCwgc28KKwkgKiBqdXN0IGZyZWUgdGhlIHN1YnhhY3RsaXN0LgorCSAqLworCWlm IChzdWJ4aWQgPT0geGlkKQorCXsKKwkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgp OworCisJCUFib3J0Q3VycmVudFRyYW5zYWN0aW9uKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rpb25C bG9jaygpKQorCQl7CisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCQl9CisKKwkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9y ZXNldCgpOworCisJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCQlwZ3N0YXRfcmVw b3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCisJCWxpc3RfZnJlZShzdWJ4YWN0bGlz dCk7CisJCXN1YnhhY3RsaXN0ID0gTklMOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBPSywg c28gaXQncyBhIHN1YnhhY3QuIFJvbGxiYWNrIHRvIHRoZSBzYXZlcG9pbnQuCisJCSAqCisJCSAq IFdlIGFsc28gbmVlZCB0byByZWFkIHRoZSBzdWJ4YWN0bGlzdCwgZGV0ZXJtaW5lIHRoZSBvZmZz ZXQgdHJhY2tlZAorCQkgKiBmb3IgdGhlIHN1YnhhY3QsIGFuZCB0cnVuY2F0ZSB0aGUgbGlzdC4K KwkJICovCisJCWludAkJCWk7CisJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisJCWNoYXIJCXNwbmFt ZVtNQVhQR1BBVEhdOworCisJCXBhcmFsbGVsX2FwcGx5X3NhdmVwb2ludF9uYW1lKE15U3Vic2Ny aXB0aW9uLT5vaWQsIHN1YnhpZCwgc3BuYW1lLAorCQkJCQkJCQkJICBzaXplb2Yoc3BuYW1lKSk7 CisKKwkJZWxvZyhERUJVRzEsICJyb2xsaW5nIGJhY2sgdG8gc2F2ZXBvaW50ICVzIGluIHBhcmFs bGVsIGFwcGx5IHdvcmtlciIsIHNwbmFtZSk7CisKKwkJZm9yIChpID0gbGlzdF9sZW5ndGgoc3Vi eGFjdGxpc3QpIC0gMTsgaSA+PSAwOyBpLS0pCisJCXsKKwkJCVRyYW5zYWN0aW9uSWQgeGlkX3Rt cCA9IGxmaXJzdF94aWQobGlzdF9udGhfY2VsbChzdWJ4YWN0bGlzdCwgaSkpOworCisJCQlpZiAo eGlkX3RtcCA9PSBzdWJ4aWQpCisJCQl7CisJCQkJZm91bmQgPSB0cnVlOworCQkJCWJyZWFrOwor CQkJfQorCQl9CisKKwkJaWYgKGZvdW5kKQorCQl7CisJCQlSb2xsYmFja1RvU2F2ZXBvaW50KHNw bmFtZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCXN1YnhhY3RsaXN0ID0g bGlzdF90cnVuY2F0ZShzdWJ4YWN0bGlzdCwgaSArIDEpOworCQl9CisKKwkJcGdzdGF0X3JlcG9y dF9hY3Rpdml0eShTVEFURV9JRExFSU5UUkFOU0FDVElPTiwgTlVMTCk7CisJfQorCisJcGFyYWxs ZWxfYXBwbHlfc2V0X2luX3hhY3QoTXlQYXJhbGxlbFNoYXJlZCwgZmFsc2UpOworfQorCisvKgor ICogRm9ybSB0aGUgc2F2ZXBvaW50IG5hbWUgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24u CisgKgorICogUmV0dXJuIHRoZSBuYW1lIGluIHRoZSBzdXBwbGllZCBidWZmZXIuCisgKi8KK3Zv aWQKK3BhcmFsbGVsX2FwcGx5X3NhdmVwb2ludF9uYW1lKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9u SWQgeGlkLAorCQkJCQkJCSAgY2hhciAqc3BuYW1lLCBTaXplIHN6c3ApCit7CisJc25wcmludGYo c3BuYW1lLCBzenNwLCAicGdfc3BfJXVfJXUiLCBzdWJvaWQsIHhpZCk7Cit9CisKKy8qIFNldHVw IHJlcGxpY2F0aW9uIG9yaWdpbiB0cmFja2luZy4gKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3Jl cGxvcmlnaW5fc2V0dXAodm9pZCkKK3sKKwlSZXBPcmlnaW5JZCBvcmlnaW5pZDsKKwljaGFyCQlv cmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKKwlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CisKKwkv KiBUaGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIGNhbGxlZCBpbnNpZGUgb3Igb3V0c2lkZSBvZiB0cmFu c2FjdGlvbi4gKi8KKwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90eCA9IHRydWU7CisJfQorCisJc25wcmludGYo b3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdpbm5hbWUpLCAicGdfJXUiLCBNeVN1YnNjcmlwdGlvbi0+ b2lkKTsKKwlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7 CisJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwlyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luID0gb3JpZ2luaWQ7CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7Cit9CisKKy8qIFJlc2V0IHJlcGxpY2F0aW9uIG9yaWdpbiB0cmFja2lu Zy4gKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQodm9pZCkKK3sKKwli b29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CisKKwkvKiBUaGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIGNh bGxlZCBpbnNpZGUgb3Igb3V0c2lkZSBvZiB0cmFuc2FjdGlvbi4gKi8KKwlpZiAoIUlzVHJhbnNh Y3Rpb25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRl ZF90eCA9IHRydWU7CisJfQorCisJcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KCk7CisKKwlyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gSW52YWxpZFJlcE9yaWdpbklkOworCXJlcGxvcmlnaW5f c2Vzc2lvbl9vcmlnaW5fbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisJcmVwbG9yaWdpbl9zZXNz aW9uX29yaWdpbl90aW1lc3RhbXAgPSAwOworCisJaWYgKHN0YXJ0ZWRfdHgpCisJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVj b2RlLmMKaW5kZXggNGQwYmYxOTMwZC4uMjcwNTdlYzM3NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC02NTIsOSArNjUyLDEwIEBAIERlY29kZUNvbW1pdChM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZiwKIAl7CiAJ CWZvciAoaSA9IDA7IGkgPCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsrKQogCQl7Ci0JCQlSZW9yZGVy QnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwgYnVmLT5vcmln cHRyKTsKKwkJCVJlb3JkZXJCdWZmZXJGb3JnZXQoY3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1Ynhh Y3RzW2ldLCBidWYtPm9yaWdwdHIsCisJCQkJCQkJCWNvbW1pdF90aW1lKTsKIAkJfQotCQlSZW9y ZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPm9yaWdwdHIpOworCQlSZW9y ZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPm9yaWdwdHIsIGNvbW1pdF90 aW1lKTsKIAogCQlyZXR1cm47CiAJfQpAQCAtODIyLDEwICs4MjMsMTEgQEAgRGVjb2RlQWJvcnQo TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiAJCWZv ciAoaSA9IDA7IGkgPCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsrKQogCQl7CiAJCQlSZW9yZGVyQnVm ZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLAotCQkJCQkJCSAgIGJ1 Zi0+cmVjb3JkLT5FbmRSZWNQdHIpOworCQkJCQkJCSAgIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIs IGFib3J0X3RpbWUpOwogCQl9CiAKLQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwg eGlkLCBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+ cmVvcmRlciwgeGlkLCBidWYtPnJlY29yZC0+RW5kUmVjUHRyLAorCQkJCQkJICAgYWJvcnRfdGlt ZSk7CiAJfQogCiAJLyogdXBkYXRlIHRoZSBkZWNvZGluZyBzdGF0cyAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IDNiYmQ1MjI3MjQuLjFhYTg1ZDI1 MzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTU0 LDYgKzU0LDcgQEAKIAogaW50CQkJbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQ7 CiBpbnQJCQltYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyOworaW50CQkJbWF4 X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CiAKIExvZ2ljYWxS ZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlciA9IE5VTEw7CiAKQEAgLTczLDYgKzc0LDcgQEAg c3RhdGljIHZvaWQgbG9naWNhbHJlcF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFy Zyk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVt IGFyZyk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCk7CiBzdGF0 aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtl cik7CitzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxS ZXBXb3JrZXIgKndvcmtlcik7CiAKIHN0YXRpYyBib29sIG9uX2NvbW1pdF9sYXVuY2hlcl93YWtl dXAgPSBmYWxzZTsKIApAQCAtMTUxLDggKzE1MywxMCBAQCBnZXRfc3Vic2NyaXB0aW9uX2xpc3Qo dm9pZCkKICAqCiAgKiBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciBjbGVhbmluZyB1cCB0aGUgc2hh cmVkIG1lbW9yeSBpbiBjYXNlIHRoZSB3b3JrZXIKICAqIGZhaWxzIHRvIGF0dGFjaC4KKyAqCisg KiBSZXR1cm4gd2hldGhlciB0aGUgYXR0YWNoIHdhcyBzdWNjZXNzZnVsLgogICovCi1zdGF0aWMg dm9pZAorc3RhdGljIGJvb2wKIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2Fs UmVwV29ya2VyICp3b3JrZXIsCiAJCQkJCQkJICAgdWludDE2IGdlbmVyYXRpb24sCiAJCQkJCQkJ ICAgQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlKQpAQCAtMTY4LDExICsxNzIsMTEgQEAg V2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwK IAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCi0J CS8qIFdvcmtlciBlaXRoZXIgZGllZCBvciBoYXMgc3RhcnRlZDsgbm8gbmVlZCB0byBkbyBhbnl0 aGluZy4gKi8KKwkJLyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVkLiBSZXR1cm4g ZmFsc2UgaWYgZGllZC4gKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPnByb2Mp CiAJCXsKIAkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQkJcmV0dXJu OworCQkJcmV0dXJuIHdvcmtlci0+aW5fdXNlOwogCQl9CiAKIAkJTFdMb2NrUmVsZWFzZShMb2dp Y2FsUmVwV29ya2VyTG9jayk7CkBAIC0xODcsNyArMTkxLDcgQEAgV2FpdEZvclJlcGxpY2F0aW9u V29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCWlmIChnZW5lcmF0aW9u ID09IHdvcmtlci0+Z2VuZXJhdGlvbikKIAkJCQlsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKHdv cmtlcik7CiAJCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJCXJldHVy bjsKKwkJCXJldHVybiBmYWxzZTsKIAkJfQogCiAJCS8qCkBAIC0yMDksNiArMjEzLDggQEAgV2Fp dEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIC8q CiAgKiBXYWxrcyB0aGUgd29ya2VycyBhcnJheSBhbmQgc2VhcmNoZXMgZm9yIG9uZSB0aGF0IG1h dGNoZXMgZ2l2ZW4KICAqIHN1YnNjcmlwdGlvbiBpZCBhbmQgcmVsaWQuCisgKgorICogV2UgYXJl IG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBvciB0YWJsZSBzeW5j IHdvcmtlci4KICAqLwogTG9naWNhbFJlcFdvcmtlciAqCiBsb2dpY2FscmVwX3dvcmtlcl9maW5k KE9pZCBzdWJpZCwgT2lkIHJlbGlkLCBib29sIG9ubHlfcnVubmluZykKQEAgLTIyMyw2ICsyMjks MTAgQEAgbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwgYm9vbCBv bmx5X3J1bm5pbmcpCiAJewogCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgt PndvcmtlcnNbaV07CiAKKwkJLyogU2tpcCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAqLworCQlp ZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJY29udGludWU7CisKIAkJaWYgKHctPmlu X3VzZSAmJiB3LT5zdWJpZCA9PSBzdWJpZCAmJiB3LT5yZWxpZCA9PSByZWxpZCAmJgogCQkJKCFv bmx5X3J1bm5pbmcgfHwgdy0+cHJvYykpCiAJCXsKQEAgLTI1OSwxMSArMjY5LDEzIEBAIGxvZ2lj YWxyZXBfd29ya2Vyc19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpCiB9CiAKIC8q Ci0gKiBTdGFydCBuZXcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgorICog U3RhcnQgbmV3IGJhY2tncm91bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KKyAqCisgKiBSZXR1cm5z IHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KICAqLwotdm9pZAorYm9vbAogbG9n aWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1 Ym5hbWUsIE9pZCB1c2VyaWQsCi0JCQkJCQkgT2lkIHJlbGlkKQorCQkJCQkJIE9pZCByZWxpZCwg ZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKQogewogCUJhY2tncm91bmRXb3JrZXIgYmd3OwogCUJh Y2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd19oYW5kbGU7CkBAIC0yNzIsNyArMjg0LDEyIEBAIGxv Z2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpz dWJuYW1lLCBPaWQgdXNlcmlkLAogCWludAkJCXNsb3QgPSAwOwogCUxvZ2ljYWxSZXBXb3JrZXIg KndvcmtlciA9IE5VTEw7CiAJaW50CQkJbnN5bmN3b3JrZXJzOworCWludAkJCW5wYXJhbGxlbGFw cGx5d29ya2VyczsKIAlUaW1lc3RhbXBUeiBub3c7CisJYm9vbAkJaXNfc3Vid29ya2VyID0gKHN1 Yndvcmtlcl9kc20gIT0gRFNNX0hBTkRMRV9JTlZBTElEKTsKKworCS8qIFNhbml0eSBjaGVjazog d2UgZG9uJ3Qgc3VwcG9ydCB0YWJsZSBzeW5jIGluIHN1Yndvcmtlci4gKi8KKwlBc3NlcnQoIShp c19zdWJ3b3JrZXIgJiYgT2lkSXNWYWxpZChyZWxpZCkpKTsKIAogCWVyZXBvcnQoREVCVUcxLAog CQkJKGVycm1zZ19pbnRlcm5hbCgic3RhcnRpbmcgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIg Zm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIiLApAQCAtMzUwLDcgKzM2NywyNiBAQCByZXRyeToKIAlp ZiAoT2lkSXNWYWxpZChyZWxpZCkgJiYgbnN5bmN3b3JrZXJzID49IG1heF9zeW5jX3dvcmtlcnNf cGVyX3N1YnNjcmlwdGlvbikKIAl7CiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxv Y2spOwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlucGFyYWxsZWxhcHBseXdv cmtlcnMgPSBsb2dpY2FscmVwX3BhcmFsbGVsX2FwcGx5X3dvcmtlcl9jb3VudChzdWJpZCk7CisK KwkvKgorCSAqIFJldHVybiBmYWxzZSBpZiB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgcmVhY2hlZCB0aGUgbGltaXQKKwkgKiBwZXIgc3Vic2NyaXB0aW9uLgorCSAqLworCWlm IChpc19zdWJ3b3JrZXIgJiYKKwkJbnBhcmFsbGVsYXBwbHl3b3JrZXJzID49IG1heF9wYXJhbGxl bF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pCisJeworCQlMV0xvY2tSZWxlYXNlKExv Z2ljYWxSZXBXb3JrZXJMb2NrKTsKKworCQllcmVwb3J0KERFQlVHMSwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAorCQkJCSBlcnJtc2coIm91dCBv ZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIiksCisJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVk IHRvIGluY3JlYXNlIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24u IikpKTsKKworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyoKQEAgLTM2NCw3ICs0MDAsNyBAQCBy ZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQp LAogCQkJCSBlcnJtc2coIm91dCBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBzbG90cyIp LAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfbG9naWNhbF9y ZXBsaWNhdGlvbl93b3JrZXJzLiIpKSk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0K IAogCS8qIFByZXBhcmUgdGhlIHdvcmtlciBzbG90LiAqLwpAQCAtMzc5LDYgKzQxNSw3IEBAIHJl dHJ5OgogCXdvcmtlci0+cmVsc3RhdGUgPSBTVUJSRUxfU1RBVEVfVU5LTk9XTjsKIAl3b3JrZXIt PnJlbHN0YXRlX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCXdvcmtlci0+c3RyZWFtX2ZpbGVz ZXQgPSBOVUxMOworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IGlzX3N1YndvcmtlciA/IE15 UHJvY1BpZCA6IEludmFsaWRQaWQ7CiAJd29ya2VyLT5sYXN0X2xzbiA9IEludmFsaWRYTG9nUmVj UHRyOwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9zZW5kX3RpbWUpOwogCVRJTUVT VEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9yZWN2X3RpbWUpOwpAQCAtMzk2LDEwICs0MzMsMTgg QEAgcmV0cnk6CiAJCUJHV09SS0VSX0JBQ0tFTkRfREFUQUJBU0VfQ09OTkVDVElPTjsKIAliZ3cu Ymd3X3N0YXJ0X3RpbWUgPSBCZ1dvcmtlclN0YXJ0X1JlY292ZXJ5RmluaXNoZWQ7CiAJc25wcmlu dGYoYmd3LmJnd19saWJyYXJ5X25hbWUsIEJHV19NQVhMRU4sICJwb3N0Z3JlcyIpOwotCXNucHJp bnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29ya2VyTWFpbiIp OworCisJaWYgKGlzX3N1YndvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1l LCBCR1dfTUFYTEVOLCAiUGFyYWxsZWxBcHBseVdvcmtlck1haW4iKTsKKwllbHNlCisJCXNucHJp bnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29ya2VyTWFpbiIp OworCiAJaWYgKE9pZElzVmFsaWQocmVsaWQpKQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJH V19NQVhMRU4sCiAJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0 aW9uICV1IHN5bmMgJXUiLCBzdWJpZCwgcmVsaWQpOworCWVsc2UgaWYgKGlzX3N1YndvcmtlcikK KwkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAorCQkJCSAibG9naWNhbCByZXBs aWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1Ymlk KTsKIAllbHNlCiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJCQkgImxv Z2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CkBA IC00MDksNiArNDU0LDkgQEAgcmV0cnk6CiAJYmd3LmJnd19ub3RpZnlfcGlkID0gTXlQcm9jUGlk OwogCWJndy5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVtKHNsb3QpOwogCisJaWYgKGlzX3N1 YndvcmtlcikKKwkJbWVtY3B5KGJndy5iZ3dfZXh0cmEsICZzdWJ3b3JrZXJfZHNtLCBzaXplb2Yo ZHNtX2hhbmRsZSkpOworCiAJaWYgKCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2VyKCZi Z3csICZiZ3dfaGFuZGxlKSkKIAl7CiAJCS8qIEZhaWxlZCB0byBzdGFydCB3b3JrZXIsIHNvIGNs ZWFuIHVwIHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTQyMSwxMSArNDY5LDExIEBAIHJldHJ5Ogog CQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJ IGVycm1zZygib3V0IG9mIGJhY2tncm91bmQgd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQo IllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF93b3JrZXJfcHJvY2Vzc2VzLiIpKSk7Ci0J CXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIE5vdyB3YWl0IHVudGlsIGl0IGF0 dGFjaGVzLiAqLwotCVdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdlbmVy YXRpb24sIGJnd19oYW5kbGUpOworCXJldHVybiBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRh Y2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKIH0KIAogLyoKQEAgLTQzNiwxOSAr NDg0LDUzIEBAIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVs aWQpCiB7CiAJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOwotCXVpbnQxNgkJZ2VuZXJhdGlvbjsK IAogCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAKIAl3 b3JrZXIgPSBsb2dpY2FscmVwX3dvcmtlcl9maW5kKHN1YmlkLCByZWxpZCwgZmFsc2UpOwogCi0J LyogTm8gd29ya2VyLCBub3RoaW5nIHRvIGRvLiAqLwotCWlmICghd29ya2VyKQorCWlmICh3b3Jr ZXIpCiAJewotCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJu OworCQlBc3NlcnQoIWlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpKTsKKwkJbG9naWNhbHJl cF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIpOwogCX0KIAorCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOworfQorCisvKgorICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNh dGlvbiB3b3JrZXIgY29ycmVzcG9uZGluZyB0byB0aGUgaW5wdXQgc2xvdCBudW1iZXIsCisgKiBh bmQgd2FpdCB1bnRpbCBpdCBkZXRhY2hlcyBmcm9tIHRoZSBzbG90LgorICovCit2b2lkCitsb2dp Y2FscmVwX3dvcmtlcl9zdG9wX2J5X3Nsb3QoaW50IHNsb3Rfbm8sIHVpbnQxNiBnZW5lcmF0aW9u KQoreworCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcjsKKworCUxXTG9ja0FjcXVpcmUoTG9naWNh bFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisKKwl3b3JrZXIgPSAmTG9naWNhbFJlcEN0eC0+ d29ya2Vyc1tzbG90X25vXTsKKworCS8qCisJICogT25seSBzdG9wIHRoZSB3b3JrZXIgaWYgdGhl IGdlbmVyYXRpb24gbWF0Y2hlcyBhbmQgdGhlIHdvcmtlciBpcyBhbGl2ZS4KKwkgKi8KKwlpZiAo d29ya2VyLT5nZW5lcmF0aW9uID09IGdlbmVyYXRpb24gJiYgd29ya2VyLT5wcm9jKQorCQlsb2dp Y2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlcik7CisKKwlMV0xvY2tSZWxlYXNlKExv Z2ljYWxSZXBXb3JrZXJMb2NrKTsKK30KKworLyoKKyAqIFdvcmtob3JzZSBmb3IgbG9naWNhbHJl cF93b3JrZXJfc3RvcCgpLCBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2goKSBhbmQKKyAqIGxvZ2lj YWxyZXBfd29ya2VyX3N0b3BfYnlfc2xvdCgpLiBTdG9wIHRoZSB3b3JrZXIgYW5kIHdhaXQgZm9y IGl0IHRvIGRpZS4KKyAqLworc3RhdGljIHZvaWQKK2xvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50 ZXJuYWwoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKQoreworCXVpbnQxNgkJZ2VuZXJhdGlvbjsK KworCUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOworCiAJLyoK IAkgKiBSZW1lbWJlciB3aGljaCBnZW5lcmF0aW9uIHdhcyBvdXIgd29ya2VyIHNvIHdlIGNhbiBj aGVjayBpZiB3aGF0IHdlIHNlZQogCSAqIGlzIHN0aWxsIHRoZSBzYW1lIG9uZS4KQEAgLTQ4NSwx MCArNTY3LDcgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkK IAkJICogZGlmZmVyZW50LCBtZWFuaW5nIHRoYXQgYSBkaWZmZXJlbnQgd29ya2VyIGhhcyB0YWtl biB0aGUgc2xvdC4KIAkJICovCiAJCWlmICghd29ya2VyLT5pbl91c2UgfHwgd29ya2VyLT5nZW5l cmF0aW9uICE9IGdlbmVyYXRpb24pCi0JCXsKLQkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdv cmtlckxvY2spOwogCQkJcmV0dXJuOwotCQl9CiAKIAkJLyogV29ya2VyIGhhcyBhc3NpZ25lZCBw cm9jLCBzbyBpdCBoYXMgc3RhcnRlZC4gKi8KIAkJaWYgKHdvcmtlci0+cHJvYykKQEAgLTUyMiw4 ICs2MDEsNiBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQog CiAJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAJfQot Ci0JTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiB9CiAKIC8qCkBAIC01OTQs MTEgKzY3MSwzMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpCiB9CiAKIC8q Ci0gKiBEZXRhY2ggdGhlIHdvcmtlciAoY2xlYW5zIHVwIHRoZSB3b3JrZXIgaW5mbykuCisgKiBT dG9wIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGlmIGFueSwgYW5kIGRldGFjaCB0aGUgbGVh ZGVyIGFwcGx5IHdvcmtlcgorICogKGNsZWFucyB1cCB0aGUgd29ya2VyIGluZm8pLgogICovCiBz dGF0aWMgdm9pZAogbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKHZvaWQpCiB7CisJLyogU3RvcCB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KKwlpZiAoYW1fbGVhZGVyX2FwcGx5X3dvcmtl cigpKQorCXsKKwkJTGlzdAkgICAqd29ya2VyczsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJTFdM b2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCQl3b3JrZXJz ID0gbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1 ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBXb3JrZXIgKncg PSAoTG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAoaXNQYXJhbGxlbEFw cGx5V29ya2VyKHcpKQorCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodyk7CisJ CX0KKworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwl9CisKIAkvKiBC bG9jayBjb25jdXJyZW50IGFjY2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC02MjEsNiArNzE5LDggQEAgbG9naWNhbHJlcF93 b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29ya2VyLT51c2VyaWQg PSBJbnZhbGlkT2lkOwogCXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+cmVs aWQgPSBJbnZhbGlkT2lkOworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IEludmFsaWRQaWQ7 CisJd29ya2VyLT5pbl9wYXJhbGxlbF9hcHBseSA9IGZhbHNlOwogfQogCiAvKgpAQCAtNjc5LDYg Kzc3OSwzMyBAQCBsb2dpY2FscmVwX3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKIAlyZXR1 cm4gcmVzOwogfQogCisvKgorICogQ291bnQgdGhlIG51bWJlciBvZiByZWdpc3RlcmVkIChidXQg bm90IG5lY2Vzc2FyaWx5IHJ1bm5pbmcpIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXJzIGZvciBh IHN1YnNjcmlwdGlvbi4KKyAqLworaW50Citsb2dpY2FscmVwX3BhcmFsbGVsX2FwcGx5X3dvcmtl cl9jb3VudChPaWQgc3ViaWQpCit7CisJaW50CQkJaTsKKwlpbnQJCQlyZXMgPSAwOworCisJQXNz ZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CisKKwkvKgorCSAqIFNj YW4gYWxsIGF0dGFjaGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIG9ubHkgY291bnRpbmcgdGhv c2Ugd2hpY2gKKwkgKiBoYXZlIHRoZSBnaXZlbiBzdWJzY3JpcHRpb24gaWQuCisJICovCisJZm9y IChpID0gMDsgaSA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7IGkrKykKKwl7CisJ CUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKKworCQlp ZiAody0+c3ViaWQgPT0gc3ViaWQgJiYgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJcmVz Kys7CisJfQorCisJcmV0dXJuIHJlczsKK30KKwogLyoKICAqIEFwcGx5TGF1bmNoZXJTaG1lbVNp emUKICAqCQlDb21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVwbGljYXRpb24gbGF1bmNoZXIgc2hh cmVkIG1lbW9yeQpAQCAtODY4LDcgKzk5NSw3IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1h aW5fYXJnKQogCQkJCQl3YWl0X3RpbWUgPSB3YWxfcmV0cmlldmVfcmV0cnlfaW50ZXJ2YWw7CiAK IAkJCQkJbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKHN1Yi0+ZGJpZCwgc3ViLT5vaWQsIHN1Yi0+ bmFtZSwKLQkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFsaWRPaWQpOworCQkJCQkJCQkJCQkg c3ViLT5vd25lciwgSW52YWxpZE9pZCwgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQl9CiAJCQl9 CiAKQEAgLTk1MSw2ICsxMDc4LDEwIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5D VElPTl9BUkdTKQogCQlpZiAoT2lkSXNWYWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9IHN1 YmlkKQogCQkJY29udGludWU7CiAKKwkJLyogU2tpcCBpZiB0aGlzIGlzIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciAqLworCQlpZiAod29ya2VyLmFwcGx5X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkK KwkJCWNvbnRpbnVlOworCiAJCXdvcmtlcl9waWQgPSB3b3JrZXIucHJvYy0+cGlkOwogCiAJCXZh bHVlc1swXSA9IE9iamVjdElkR2V0RGF0dW0od29ya2VyLnN1YmlkKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCmluZGV4IDc3MzU4M2ExMmIuLjI2YmZjMGU4 MzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVp bGQKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZApAQCAt MSw0ICsxLDUgQEAKIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKKyAgJ2FwcGx5cGFyYWxsZWx3 b3JrZXIuYycsCiAgICdkZWNvZGUuYycsCiAgICdsYXVuY2hlci5jJywKICAgJ2xvZ2ljYWwuYycs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggZmY4NTEzZTJkMi4u YTZlZmRiYWM2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9w cm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAt MTE2MywxMCArMTE2MywxNCBAQCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChTdHJpbmdJ bmZvIGluLCBMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAvKgogICogV3JpdGUg U1RSRUFNIEFCT1JUIHRvIHRoZSBvdXRwdXQgc3RyZWFtLiBOb3RlIHRoYXQgeGlkIGFuZCBzdWJ4 aWQgd2lsbCBiZQogICogc2FtZSBmb3IgdGhlIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiBhYm9ydC4K KyAqCisgKiBJZiB3cml0ZV9hYm9ydF9pbmZvIGlzIHRydWUsIHNlbmQgdGhlIGFib3J0X2xzbiBh bmQgYWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndpc2UgZG9uJ3QuCiAgKi8KIHZvaWQKIGxv Z2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklk IHhpZCwKLQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKQorCQkJCQkJCSAgVHJhbnNhY3Rp b25JZCBzdWJ4aWQsIFhMb2dSZWNQdHIgYWJvcnRfbHNuLAorCQkJCQkJCSAgVGltZXN0YW1wVHog YWJvcnRfdGltZSwgYm9vbCB3cml0ZV9hYm9ydF9pbmZvKQogewogCXBxX3NlbmRieXRlKG91dCwg TE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCk7CiAKQEAgLTExNzUsMTkgKzExNzksNDAgQEAg bG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9u SWQgeGlkLAogCS8qIHRyYW5zYWN0aW9uIElEICovCiAJcHFfc2VuZGludDMyKG91dCwgeGlkKTsK IAlwcV9zZW5kaW50MzIob3V0LCBzdWJ4aWQpOworCisJaWYgKHdyaXRlX2Fib3J0X2luZm8pCisJ eworCQlwcV9zZW5kaW50NjQob3V0LCBhYm9ydF9sc24pOworCQlwcV9zZW5kaW50NjQob3V0LCBh Ym9ydF90aW1lKTsKKwl9CiB9CiAKIC8qCiAgKiBSZWFkIFNUUkVBTSBBQk9SVCBmcm9tIHRoZSBv dXRwdXQgc3RyZWFtLgorICoKKyAqIElmIHJlYWRfYWJvcnRfaW5mbyBpcyB0cnVlLCB0cnkgdG8g cmVhZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZpZWxkcywKKyAqIG90aGVyd2lzZSBk b24ndC4KICAqLwogdm9pZAotbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZv IGluLCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnN1YnhpZCkK K2xvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwKKwkJCQkJCQkgTG9n aWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJCQkJCQkgYm9vbCByZWFkX2Fi b3J0X2luZm8pCiB7Ci0JQXNzZXJ0KHhpZCAmJiBzdWJ4aWQpOworCUFzc2VydChhYm9ydF9kYXRh KTsKKworCWFib3J0X2RhdGEtPnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisJYWJvcnRfZGF0 YS0+c3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKIAotCSp4aWQgPSBwcV9nZXRtc2dpbnQo aW4sIDQpOwotCSpzdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWlmIChyZWFkX2Fib3J0 X2luZm8pCisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBwcV9nZXRtc2dpbnQ2NChpbik7 CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJfQorCWVs c2UKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCQlh Ym9ydF9kYXRhLT5hYm9ydF90aW1lID0gMDsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCmluZGV4IDAzZDljOWM4NmEuLjk0 YmZjNjc2MmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVv cmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRl cmJ1ZmZlci5jCkBAIC0yODM5LDcgKzI4MzksOCBAQCBSZW9yZGVyQnVmZmVyRmluaXNoUHJlcGFy ZWQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogICogZGlzay4KICAqLwog dm9pZAotUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklk IHhpZCwgWExvZ1JlY1B0ciBsc24pCitSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAq cmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkgICBUaW1lc3RhbXBU eiBhYm9ydF90aW1lKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnR4bjsKIApAQCAtMjg1MCw2ICsy ODUxLDggQEAgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlv bklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQogCQlyZXR1cm47CiAK Kwl0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwogCS8qIEZvciBzdHJl YW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91dCB0aGUgYWJvcnQu ICovCiAJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJewpAQCAtMjkyNCw3ICsyOTI3LDgg QEAgUmVvcmRlckJ1ZmZlckFib3J0T2xkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklk IG9sZGVzdFJ1bm5pbmdYaWQpCiAgKiB0byB0aGlzIHhpZCBtaWdodCByZS1jcmVhdGUgdGhlIHRy YW5zYWN0aW9uIGluY29tcGxldGVseS4KICAqLwogdm9pZAotUmVvcmRlckJ1ZmZlckZvcmdldChS ZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQorUmVv cmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuLAorCQkJCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1lKQogewogCVJlb3JkZXJC dWZmZXJUWE4gKnR4bjsKIApAQCAtMjkzNSw2ICsyOTM5LDggQEAgUmVvcmRlckJ1ZmZlckZvcmdl dChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQog CWlmICh0eG4gPT0gTlVMTCkKIAkJcmV0dXJuOwogCisJdHhuLT54YWN0X3RpbWUuYWJvcnRfdGlt ZSA9IGFib3J0X3RpbWU7CisKIAkvKiBGb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zIG5vdGlmeSB0 aGUgcmVtb3RlIG5vZGUgYWJvdXQgdGhlIGFib3J0LiAqLwogCWlmIChyYnR4bl9pc19zdHJlYW1l ZCh0eG4pKQogCQlyYi0+c3RyZWFtX2Fib3J0KHJiLCB0eG4sIGxzbik7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA5ZTUyZmM0MDFjLi44MmU1MDEx ZmM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3lu Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAg LTYwOSw3ICs2MDksOCBAQCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVj UHRyIGN1cnJlbnRfbHNuKQogCQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5vaWQsCiAJCQkJ CQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm5hbWUsCiAJCQkJCQkJCQkJCQkgTXlMb2dpY2FsUmVw V29ya2VyLT51c2VyaWQsCi0JCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxpZCk7CisJCQkJCQkJCQkJ CQkgcnN0YXRlLT5yZWxpZCwKKwkJCQkJCQkJCQkJCSBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJ CQkJaGVudHJ5LT5sYXN0X3N0YXJ0X3RpbWUgPSBub3c7CiAJCQkJCX0KIAkJCQl9CkBAIC02MzAs NiArNjMxLDkgQEAgcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBj dXJyZW50X2xzbikKIHZvaWQKIHByb2Nlc3Nfc3luY2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJy ZW50X2xzbikKIHsKKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsK KwogCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCXByb2Nlc3Nfc3luY2luZ190YWJsZXNf Zm9yX3N5bmMoY3VycmVudF9sc24pOwogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCmluZGV4IDIwN2E1ODA1YmEuLjE2MjNjOWUyZmEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjIsOCArMjIsNTQgQEAKICAqIFNUUkVB TUVEIFRSQU5TQUNUSU9OUwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBTdHJlYW1lZCB0 cmFuc2FjdGlvbnMgKGxhcmdlIHRyYW5zYWN0aW9ucyBleGNlZWRpbmcgYSBtZW1vcnkgbGltaXQg b24gdGhlCi0gKiB1cHN0cmVhbSkgYXJlIG5vdCBhcHBsaWVkIGltbWVkaWF0ZWx5LCBidXQgaW5z dGVhZCwgdGhlIGRhdGEgaXMgd3JpdHRlbgotICogdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVu IGFwcGxpZWQgYXQgb25jZSB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcy4KKyAqIHVwc3Ry ZWFtKSBhcmUgYXBwbGllZCB1c2luZyBvbmUgb2YgdHdvIGFwcHJvYWNoZXM6CisgKgorICogMSkg UGFyYWxsZWwgYXBwbHkgd29ya2VycworICoKKyAqIElmIHN0cmVhbWluZyA9IHBhcmFsbGVsLCB3 ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyIChpZgorICogYXZhaWxhYmxlKSBh cyBzb29uIGFzIHRoZSB4YWN0J3MgZmlyc3Qgc3RyZWFtIGlzIHJlY2VpdmVkLiBUaGUgbGVhZGVy IGFwcGx5CisgKiB3b3JrZXIgd2lsbCBzZW5kIGNoYW5nZXMgdG8gdGhpcyBuZXcgd29ya2VyIHZp YSBzaGFyZWQgbWVtb3J5LiBXZSBrZWVwIHRoaXMKKyAqIHdvcmtlciBhc3NpZ25lZCB0aWxsIHRo ZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBmb3IKKyAqIHRo ZSB3b3JrZXIgdG8gZmluaXNoIGF0IGNvbW1pdC4gVGhpcyBwcmVzZXJ2ZXMgY29tbWl0IG9yZGVy aW5nIGFuZCBhdm9pZHMKKyAqIGZpbGUgSS9PIGluIG1vc3QgY2FzZXMuIFdlIHN0aWxsIG5lZWQg dG8gc3BpbGwgdG8gYSBmaWxlIGlmIHRoZXJlIGlzIG5vCisgKiB3b3JrZXIgYXZhaWxhYmxlLiBJ dCBpcyBpbXBvcnRhbnQgdG8gbWFpbnRhaW4gY29tbWl0IG9yZGVyIHRvIGF2b2lkIGZhaWx1cmVz CisgKiBkdWUgdG8gKGEpIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcywgc2F5IGlmIHdlIGluc2Vy dCBhIHJvdyBpbiB0aGUgZmlyc3QKKyAqIHRyYW5zYWN0aW9uIGFuZCB1cGRhdGUgaXQgaW4gdGhl IHNlY29uZCB0cmFuc2FjdGlvbiB0aGVuIGFsbG93aW5nIHRvIGFwcGx5CisgKiBib3RoIGluIHBh cmFsbGVsIGNhbiBsZWFkIHRvIGZhaWx1cmUgaW4gdGhlIHVwZGF0ZS4gKGIpIGRlYWRsb2Nrcywg YWxsb3dpbmcKKyAqIHRyYW5zYWN0aW9ucyB0aGF0IHVwZGF0ZSB0aGUgc2FtZSBzZXQgb2Ygcm93 cy90YWJsZXMgaW4gb3Bwb3NpdGUgb3JkZXIgdG8gYmUKKyAqIGFwcGxpZWQgaW4gcGFyYWxsZWwg Y2FuIGxlYWQgdG8gZGVhZGxvY2tzLgorICoKKyAqIFdlIG1haW50YWluIGEgd29ya2VyIHBvb2wg dG8gYXZvaWQgcmVzdGFydGluZyB3b3JrZXJzIGZvciBlYWNoIHN0cmVhbWluZworICogdHJhbnNh Y3Rpb24uIFdlIG1haW50YWluIGVhY2ggd29ya2VyJ3MgaW5mb3JtYXRpb24gaW4gdGhlCisgKiBQ YXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QuIEFmdGVyIHN1Y2Nlc3NmdWxseSBsYXVuY2hpbmcgYSBu ZXcgd29ya2VyLCBpdHMKKyAqIGluZm9ybWF0aW9uIGlzIGFkZGVkIHRvIHRoZSBQYXJhbGxlbEFw cGx5V29ya2Vyc0xpc3QuIE9uY2UgdGhlIHdvcmtlcgorICogZmluaXNoZXMgYXBwbHlpbmcgdGhl IHRyYW5zYWN0aW9uLCB3ZSBtYXJrIGl0IGF2YWlsYWJsZSBmb3IgcmUtdXNlLiBOb3csCisgKiBi ZWZvcmUgc3RhcnRpbmcgYSBuZXcgd29ya2VyIHRvIGFwcGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24sIHdlIGNoZWNrCisgKiB0aGUgbGlzdCBmb3IgYW55IGF2YWlsYWJsZSB3b3JrZXIuIE5v dGUgdGhhdCB3ZSBtYWludGFpbiBhIG1heGltdW0gb2YgaGFsZgorICogdGhlIG1heF9wYXJhbGxl bF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gd29ya2VycyBpbiB0aGUgcG9vbCBhbmQK KyAqIGFmdGVyIHRoYXQsIHdlIHNpbXBseSBleGl0IHRoZSB3b3JrZXIgYWZ0ZXIgYXBwbHlpbmcg dGhlIHRyYW5zYWN0aW9uLiBUaGlzCisgKiB3b3JrZXIgcG9vbCB0aHJlc2hvbGQgaXMgYSBiaXQg YXJiaXRyYXJ5IGFuZCB3ZSBjYW4gcHJvdmlkZSBhIGd1YyBmb3IgdGhpcworICogaW4gdGhlIGZ1 dHVyZSBpZiByZXF1aXJlZC4KKyAqCisgKiBUaGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3aWxsIGNy ZWF0ZSBzZXBhcmF0ZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudAorICogd2hlbiBlYWNo IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzdGFydHMuIFRoZSByZWFzb24gZm9yIHRoaXMgZGVzaWdu IGlzIHRoYXQKKyAqIHdlIGNhbm5vdCBjb3VudCBob3cgbWFueSB3b3JrZXJzIHdpbGwgYmUgc3Rh cnRlZC4gSXQgbWF5IGJlIHBvc3NpYmxlIHRvCisgKiBhbGxvY2F0ZSBlbm91Z2ggc2hhcmVkIG1l bW9yeSBpbiBvbmUgc2VnbWVudCBiYXNlZCBvbiB0aGUgbWF4aW11bSBudW1iZXIgb2YKKyAqIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMgKG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJz Y3JpcHRpb24pLCBidXQgdGhpcworICogbWF5IHdhc3RlIHNvbWUgbWVtb3J5IGlmIG5vIHByb2Nl c3MgaXMgYWN0dWFsbHkgc3RhcnRlZC4KKyAqCisgKiBUaGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5 IHNlZ21lbnQgd2lsbCBjb250YWluIChhKSBhIHNobV9tcSB0aGF0IGNhbiBiZQorICogdXNlZCB0 byBzZW5kIGNoYW5nZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGZyb20gbGVhZGVyIGFwcGx5IHdvcmtl ciB0byBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyIChiKSBhbm90aGVyIHNobV9tcSB0aGF0IGNh biBiZSB1c2VkIHRvIHNlbmQgZXJyb3JzIChhbmQgb3RoZXIKKyAqIG1lc3NhZ2VzIHJlcG9ydGVk IHZpYSBlbG9nL2VyZXBvcnQpIGZyb20gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBsZWFk ZXIKKyAqIGFwcGx5IHdvcmtlciAoYykgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGJlIHNoYXJl ZCBhbW9uZyBwYXJhbGxlbCBhcHBseQorICogd29ya2VycyBhbmQgbGVhZGVyIGFwcGx5IHdvcmtl ciAoaS5lLiBpbl9wYXJhbGxlbF9hcHBseV94YWN0IGZsYWcgYW5kIHRoZQorICogY29ycmVzcG9u ZGluZyBMb2dpY2FsUmVwV29ya2VyIHNsb3QgaW5mb3JtYXRpb24pLgorICoKKyAqIEluIGNhc2Us IG5vIHdvcmtlciBpcyBhdmFpbGFibGUgdG8gaGFuZGxlIHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biwgd2UKKyAqIGZvbGxvdyBhcHByb2FjaCAyLgorICoKKyAqIDIpIFdyaXRlIHRvIHRlbXBvcmFy eSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMKICAqCiAgKiBV bmxpa2UgdGhlIHJlZ3VsYXIgKG5vbi1zdHJlYW1lZCkgY2FzZSwgaGFuZGxpbmcgc3RyZWFtZWQg dHJhbnNhY3Rpb25zIGhhcwogICogdG8gaGFuZGxlIGFib3J0cyBvZiBib3RoIHRoZSB0b3BsZXZl bCB0cmFuc2FjdGlvbiBhbmQgc3VidHJhbnNhY3Rpb25zLiBUaGlzCkBAIC0yMTksMjAgKzI2NSwz NSBAQCB0eXBlZGVmIHN0cnVjdCBBcHBseUV4ZWN1dGlvbkRhdGEKIAlQYXJ0aXRpb25UdXBsZVJv dXRpbmcgKnByb3V0ZTsJLyogcGFydGl0aW9uIHJvdXRpbmcgaW5mbyAqLwogfSBBcHBseUV4ZWN1 dGlvbkRhdGE7CiAKLS8qIFN0cnVjdCBmb3Igc2F2aW5nIGFuZCByZXN0b3JpbmcgYXBwbHkgZXJy Y29udGV4dCBpbmZvcm1hdGlvbiAqLwotdHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNhbGxiYWNr QXJnCisvKgorICogV2hhdCBhY3Rpb24gdG8gdGFrZSBmb3IgdGhlIHRyYW5zYWN0aW9uLgorICoK KyAqIFRSQU5TX0xFQURFUl9BUFBMWSBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlciBhbmQgY2hhbmdlcworICogb2YgdGhlIHRyYW5zYWN0aW9uIGFyZSBhcHBsaWVk IGRpcmVjdGx5IGluIHRoZSB3b3JrZXIuCisgKgorICogVFJBTlNfTEVBREVSX1NFUklBTElaRSBt ZWFucyB0aGF0IHdlIGFyZSBpbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBjaGFuZ2VzCisgKiBh cmUgd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCB3aGVuIHRoZSBm aW5hbCBjb21taXQKKyAqIGFycml2ZXMuCisgKgorICogVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFS QUxMRUwgbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIKKyAqIGFu ZCBuZWVkIHRvIHNlbmQgdGhlIGNoYW5nZXMgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4K KyAqCisgKiBUUkFOU19QQVJBTExFTF9BUFBMWSBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyIGFuZAorICogY2hhbmdlcyBvZiB0aGUgdHJhbnNhY3Rpb24gYXJl IGFwcGxpZWQgZGlyZWN0bHkgaW4gdGhlIHdvcmtlci4KKyAqLwordHlwZWRlZiBlbnVtCiB7Ci0J TG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZDsJLyogMCBpZiBpbnZhbGlkICovCi0JTG9naWNhbFJl cFJlbE1hcEVudHJ5ICpyZWw7CisJLyogVGhlIGFjdGlvbiBmb3Igbm9uLXN0cmVhbWluZyB0cmFu c2FjdGlvbnMuICovCisJVFJBTlNfTEVBREVSX0FQUExZLAogCi0JLyogUmVtb3RlIG5vZGUgaW5m b3JtYXRpb24gKi8KLQlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBpZiBpbnZhbGlkICovCi0J VHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOwotCVhMb2dSZWNQdHIJZmluaXNoX2xzbjsKLQljaGFy CSAgICpvcmlnaW5fbmFtZTsKLX0gQXBwbHlFcnJvckNhbGxiYWNrQXJnOworCS8qIEFjdGlvbnMg Zm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuICovCisJVFJBTlNfTEVBREVSX1NFUklBTElaRSwK KwlUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCwKKwlUUkFOU19QQVJBTExFTF9BUFBMWQor fSBUcmFuc0FwcGx5QWN0aW9uOwogCi1zdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5 X2Vycm9yX2NhbGxiYWNrX2FyZyA9CisvKiBlcnJjb250ZXh0IHRyYWNrZXIgKi8KK0FwcGx5RXJy b3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogewogCS5jb21tYW5kID0g MCwKIAkucmVsID0gTlVMTCwKQEAgLTI0Miw3ICszMDMsOSBAQCBzdGF0aWMgQXBwbHlFcnJvckNh bGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9yaWdpbl9uYW1lID0gTlVM TCwKIH07CiAKLXN0YXRpYyBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxM OworRXJyb3JDb250ZXh0Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sgPSBOVUxM OworCitNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOwogTWVtb3J5Q29u dGV4dCBBcHBseUNvbnRleHQgPSBOVUxMOwogCiAvKiBwZXIgc3RyZWFtIGNvbnRleHQgZm9yIHN0 cmVhbWluZyB0cmFuc2FjdGlvbnMgKi8KQEAgLTI1MSw3ICszMTQsNyBAQCBzdGF0aWMgTWVtb3J5 Q29udGV4dCBMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCA9IE5VTEw7CiBXYWxSZWNlaXZlckNvbm4g KkxvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPSBOVUxMOwogCiBTdWJzY3JpcHRpb24gKk15U3Vic2Ny aXB0aW9uID0gTlVMTDsKLXN0YXRpYyBib29sIE15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsK K2Jvb2wJCU15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKIAogYm9vbAkJaW5fcmVtb3RlX3Ry YW5zYWN0aW9uID0gZmFsc2U7CiBzdGF0aWMgWExvZ1JlY1B0ciByZW1vdGVfZmluYWxfbHNuID0g SW52YWxpZFhMb2dSZWNQdHI7CkBAIC0yNjEsMTcgKzMyNCwyNSBAQCBzdGF0aWMgYm9vbCBpbl9z dHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOwogCiBzdGF0aWMgVHJhbnNhY3Rpb25JZCBzdHJl YW1feGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKKy8qCisgKiBUaGUgbnVtYmVyIG9mIGNo YW5nZXMgc2VudCB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGR1cmluZyBvbmUgc3RyZWFtaW5n CisgKiBibG9jay4KKyAqLworc3RhdGljIHVpbnQzMiBuY2hhbmdlcyA9IDA7CisKIC8qCiAgKiBX ZSBlbmFibGUgc2tpcHBpbmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VSVCwg VVBEQVRFLCBldGMuKSBmb3IKICAqIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0cmFu c2FjdGlvbidzIGZpbmlzaCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ugd2Ug c3RhcnQgc2tpcHBpbmcgY2hhbmdlcywgd2UgZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lwIGFs bCBjaGFuZ2VzIG9mCiAgKiB0aGUgdHJhbnNhY3Rpb24gZXZlbiBpZiBwZ19zdWJzY3JpcHRpb24g aXMgdXBkYXRlZCBhbmQgTXlTdWJzY3JpcHRpb24tPnNraXBsc24KLSAqIGdldHMgY2hhbmdlZCBv ciByZXNldCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2Vz LCB3ZQotICogZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNp bmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5vdAorICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1 cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMgKHN0cmVhbWlu ZyA9IG9uKSwKKyAqIHdlIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hh bmdlcyBzaW5jZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKICAqIHRvIHNraXAgYXBwbHlpbmcg dGhlIGNoYW5nZXMgd2hlbiBzdGFydGluZyB0byBhcHBseSBjaGFuZ2VzLiBUaGUgc3Vic2tpcGxz biBpcwogICogY2xlYXJlZCBhZnRlciBzdWNjZXNzZnVsbHkgc2tpcHBpbmcgdGhlIHRyYW5zYWN0 aW9uIG9yIGFwcGx5aW5nIG5vbi1lbXB0eQogICogdHJhbnNhY3Rpb24uIFRoZSBsYXR0ZXIgcHJl dmVudHMgdGhlIG1pc3Rha2VubHkgc3BlY2lmaWVkIHN1YnNraXBsc24gZnJvbQotICogYmVpbmcg bGVmdC4KKyAqIGJlaW5nIGxlZnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2tpcCB0aGUgc3RyZWFt aW5nIHRyYW5zYWN0aW9ucyB3aGVuIHVzaW5nCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGJl Y2F1c2Ugd2UgY2Fubm90IGdldCB0aGUgZmluaXNoIExTTiBiZWZvcmUKKyAqIGFwcGx5aW5nIHRo ZSBjaGFuZ2VzLgogICovCiBzdGF0aWMgWExvZ1JlY1B0ciBza2lwX3hhY3RfZmluaXNoX2xzbiA9 IEludmFsaWRYTG9nUmVjUHRyOwogI2RlZmluZSBpc19za2lwcGluZ19jaGFuZ2VzKCkgKHVubGlr ZWx5KCFYTG9nUmVjUHRySXNJbnZhbGlkKHNraXBfeGFjdF9maW5pc2hfbHNuKSkpCkBAIC0zMjUs OSArMzk2LDYgQEAgc3RhdGljIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsK IAogc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCk7CiAKLS8qIHBy b3RvdHlwZSBuZWVkZWQgYmVjYXVzZSBvZiBzdHJlYW1fY29tbWl0ICovCi1zdGF0aWMgdm9pZCBh cHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOwotCiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVf Y29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7CiBzdGF0 aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAq ZWRhdGEsCiAJCQkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCkBAIC0zNjAsMTAgKzQy OCwxMiBAQCBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7CiBzdGF0aWMg dm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKTsK IAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLwotc3RhdGljIHZvaWQg YXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRf YXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxz bik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZv aWQpOwogCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0 aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJCQkJCSBQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqKndpbmZvKTsKKwogLyoKICAqIFNob3VsZCB0aGlzIHdvcmtlciBhcHBseSBjaGFuZ2Vz IGZvciBnaXZlbiByZWxhdGlvbi4KICAqCkBAIC0zNzYsMTIgKzQ0NiwzNCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogICogcmVjb3Jk ICsgMSAoaWUgc3RhcnQgb2YgbmV4dCByZWNvcmQpIGFuZCBuZXh0IHJlY29yZCBjYW4gYmUgQ09N TUlUIG9mCiAgKiB0cmFuc2FjdGlvbiB3ZSBhcmUgbm93IHByb2Nlc3NpbmcgKHdoaWNoIGlzIHdo YXQgd2Ugc2V0IHJlbW90ZV9maW5hbF9sc24KICAqIHRvIGluIGFwcGx5X2hhbmRsZV9iZWdpbiku CisgKgorICogTm90ZSB0aGF0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGJl aW5nIGFwcGxpZWQgaW4gdGhlIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIsIHdlIGRpc2FsbG93 IGFwcGx5aW5nIGNoYW5nZXMgb24gYSB0YWJsZSB0aGF0IGlzIG5vdCBpbgorICogdGhlIFJFQURZ IHN0YXRlLCBiZWNhdXNlIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hh bmdlIGFzIHdlCisgKiB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLgor ICoKKyAqIFdlIGFscmVhZHkgY2hlY2tlZCB0aGlzIGluIHBhcmFsbGVsX2FwcGx5X2Nhbl9zdGFy dCgpIGJlZm9yZSBhc3NpZ25pbmcgdGhlCisgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gdGhl IHBhcmFsbGVsIHdvcmtlciwgYnV0IGl0IGFsc28gbmVlZHMgdG8gYmUKKyAqIGNoZWNrZWQgaGVy ZSBiZWNhdXNlIGlmIHRoZSB1c2VyIGV4ZWN1dGVzIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVG UkVTSAorICogUFVCTElDQVRJT04gaW4gcGFyYWxsZWwsIHRoZSBuZXcgdGFibGUgY2FuIGJlIGFk ZGVkIHRvIHBnX3N1YnNjcmlwdGlvbl9yZWwKKyAqIHdoaWxlIGFwcGx5aW5nIHRoaXMgdHJhbnNh Y3Rpb24uCiAgKi8KIHN0YXRpYyBib29sCiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKExv Z2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQogewogCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkp CiAJCXJldHVybiBNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkID09IHJlbC0+bG9jYWxyZWxvaWQ7 CisJZWxzZSBpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJeworCQlpZiAocmVsLT5z dGF0ZSAhPSBTVUJSRUxfU1RBVEVfUkVBRFkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy bXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlcnMgZm9yIHN1YnNjcmlwdGlvbiBc IiVzXCIgd2lsbCByZXN0YXJ0IiwKKwkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSksCisJCQkJ CSBlcnJkZXRhaWwoIkNhbm5vdCBoYW5kbGUgc3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNhY3Rp b24gdXNpbmcgcGFyYWxsZWwgIgorCQkJCQkJCSAgICJhcHBseSB3b3JrZXJzIHVudGlsIGFsbCB0 YWJsZXMgYXJlIHN5bmNocm9uaXplZC4iKSkpOworCisJCXJldHVybiB0cnVlOworCX0KIAllbHNl CiAJCXJldHVybiAocmVsLT5zdGF0ZSA9PSBTVUJSRUxfU1RBVEVfUkVBRFkgfHwKIAkJCQkocmVs LT5zdGF0ZSA9PSBTVUJSRUxfU1RBVEVfU1lOQ0RPTkUgJiYKQEAgLTQyNyw0MyArNTE5LDg3IEBA IGVuZF9yZXBsaWNhdGlvbl9zdGVwKHZvaWQpCiB9CiAKIC8qCi0gKiBIYW5kbGUgc3RyZWFtZWQg dHJhbnNhY3Rpb25zLgorICogSGFuZGxlIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBmb3IgYm90aCB0 aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXJz LgorICoKKyAqIEluIHN0cmVhbWluZyBjYXNlIChyZWNlaXZpbmcgYSBibG9jayBvZiBzdHJlYW1l ZCB0cmFuc2FjdGlvbiksIGZvcgorICogU1VCU1RSRUFNX09OIG1vZGUsIHNpbXBseSByZWRpcmVj dCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwKKyAqIHRyYW5zYWN0aW9uLCBh bmQgZm9yIFNVQlNUUkVBTV9QQVJBTExFTCBtb2RlLCBzZW5kIHRoZSBjaGFuZ2VzIHRvIHBhcmFs bGVsCisgKiBhcHBseSB3b3JrZXJzIChMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gb3IgTE9HSUNB TF9SRVBfTVNHX1RZUEUgY2hhbmdlcworICogd2lsbCBiZSBhcHBsaWVkIGJ5IGJvdGggbGVhZGVy IGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2VycykuCiAgKgotICogSWYgaW4g c3RyZWFtaW5nIG1vZGUgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9u KSwgd2UKLSAqIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9w bGV2ZWwgdHJhbnNhY3Rpb24uCisgKiBGb3Igbm9uLXN0cmVhbWVkIHRyYW5zYWN0aW9ucywgcmV0 dXJucyBmYWxzZS4KKyAqIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMsIHJldHVybnMgdHJ1ZSBp ZiBpbiBsZWFkZXIgYXBwbHkgd29ya2VyLCBmYWxzZQorICogb3RoZXJ3aXNlLgogICoKLSAqIFJl dHVybnMgdHJ1ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCBmYWxzZSBvdGhlcndpc2UgKHJl Z3VsYXIgbW9kZSkuCisgKiBFeGNlcHRpb246IElmIHRoZSBtZXNzYWdlIGJlaW5nIHByb2Nlc3Nl ZCBpcyBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04KKyAqIG9yIExPR0lDQUxfUkVQX01TR19UWVBF LCByZXR1cm4gZmFsc2UgZXZlbiBpZiB0aGUgbWVzc2FnZSBuZWVkcyB0byBiZSBzZW50CisgKiB0 byBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KICAqLwogc3RhdGljIGJvb2wKIGhhbmRsZV9zdHJl YW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykK IHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkID0gSW52 YWxpZFRyYW5zYWN0aW9uSWQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gTlVM TDsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKworCWFwcGx5X2FjdGlvbiA9IGdl dF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKIAogCS8qIG5v dCBpbiBzdHJlYW1pbmcgbW9kZSAqLwotCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJ aWYgKGFwcGx5X2FjdGlvbiA9PSBUUkFOU19MRUFERVJfQVBQTFkpCiAJCXJldHVybiBmYWxzZTsK IAotCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1Zh bGlkKHN0cmVhbV94aWQpKTsKIAogCS8qCiAJICogV2Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgWElE IG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZQogCSAqIG1lc3NhZ2UsIHNv IGV4dHJhY3QgaXQuCiAJICovCi0JeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOworCWN1cnJlbnRf eGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOwogCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4 aWQpKQorCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoY3VycmVudF94aWQpKQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkg ZXJybXNnX2ludGVybmFsKCJpbnZhbGlkIHRyYW5zYWN0aW9uIElEIGluIHN0cmVhbWVkIHJlcGxp Y2F0aW9uIHRyYW5zYWN0aW9uIikpKTsKIAotCS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhl IGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCi0Jc3VieGFjdF9pbmZvX2FkZCh4aWQp OworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFM SVpFOgorCQkJQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKKworCQkJLyogQWRkIHRoZSBuZXcg c3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5IHRoZXJlKS4gKi8KKwkJCXN1Ynhh Y3RfaW5mb19hZGQoY3VycmVudF94aWQpOwogCi0JLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0aGUg Y3VycmVudCBmaWxlICovCi0Jc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCQkJLyog V3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxlICovCisJCQlzdHJlYW1fd3JpdGVf Y2hhbmdlKGFjdGlvbiwgcyk7CisJCQlyZXR1cm4gdHJ1ZTsKIAotCXJldHVybiB0cnVlOworCQlj YXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKwor CQkJcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCQkJ bmNoYW5nZXMgKz0gMTsKKworCQkJLyoKKwkJCSAqIFhYWCBUaGUgcHVibGlzaGVyIHNpZGUgZG9l c24ndCBhbHdheXMgc2VuZCByZWxhdGlvbi90eXBlIHVwZGF0ZQorCQkJICogbWVzc2FnZXMgYWZ0 ZXIgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgc28gYWxzbyB1cGRhdGUgdGhlCisJCQkgKiBy ZWxhdGlvbi90eXBlIGluIGxlYWRlciBhcHBseSB3b3JrZXIgaGVyZS4gU2VlIGZ1bmN0aW9uCisJ CQkgKiBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlLgorCQkJICovCisJCQlpZiAoYWN0aW9uID09IExP R0lDQUxfUkVQX01TR19SRUxBVElPTiB8fAorCQkJCWFjdGlvbiA9PSBMT0dJQ0FMX1JFUF9NU0df VFlQRSkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQlyZXR1cm4gdHJ1ZTsKKworCQljYXNlIFRSQU5T X1BBUkFMTEVMX0FQUExZOgorCQkJLyogRGVmaW5lIGEgc2F2ZXBvaW50IGZvciBhIHN1YnhhY3Qg aWYgbmVlZGVkLiAqLworCQkJcGFyYWxsZWxfYXBwbHlfc3VieGFjdF9pbmZvX2FkZChjdXJyZW50 X3hpZCwgc3RyZWFtX3hpZCk7CisJCQlyZXR1cm4gZmFsc2U7CisKKwkJZGVmYXVsdDoKKwkJCUFz c2VydChmYWxzZSk7CisJCQlyZXR1cm4gZmFsc2U7CQkvKiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5p bmcgKi8KKwl9CiB9CiAKIC8qCkBAIC04OTksOCArMTAzNSwxMSBAQCBhcHBseV9oYW5kbGVfcHJl cGFyZV9pbnRlcm5hbChMb2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhICpwcmVwYXJlX2RhdGEpCiAJ ICogQmVnaW5UcmFuc2FjdGlvbkJsb2NrIGlzIG5lY2Vzc2FyeSB0byBiYWxhbmNlIHRoZSBFbmRU cmFuc2FjdGlvbkJsb2NrCiAJICogY2FsbGVkIHdpdGhpbiB0aGUgUHJlcGFyZVRyYW5zYWN0aW9u QmxvY2sgYmVsb3cuCiAJICovCi0JQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7Ci0JQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7IC8qIENvbXBsZXRlcyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1h bmQuICovCisJaWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwl7CisJCUJlZ2luVHJhbnNhY3Rp b25CbG9jaygpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsgLyogQ29tcGxldGVzIHRo ZSBwcmVjZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8KKwl9CiAKIAkvKgogCSAqIFVwZGF0ZSBvcmln aW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlv bgpAQCAtOTY5LDYgKzExMDgsMTIgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBz KQogCiAvKgogICogSGFuZGxlIGEgQ09NTUlUIFBSRVBBUkVEIG9mIGEgcHJldmlvdXNseSBQUkVQ QVJFRCB0cmFuc2FjdGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB3YWl0 IGhlcmUgaWYgdGhlIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBhCisgKiBwYXJhbGxlbCBh cHBseSB3b3JrZXIuIEJlY2F1c2Ugd2UgaGF2ZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhlIHByZXBh cmUgdG8KKyAqIGZpbmlzaCBpbiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoKSB3aGljaCB3 aWxsIGVuc3VyZSBhbGwgdGhlIG9wZXJhdGlvbnMKKyAqIGluIHRoYXQgdHJhbnNhY3Rpb24gaGF2 ZSBoYXBwZW5lZCBpbiB0aGUgc3Vic2NyaWJlciBhbmQgbm8gY29uY3VycmVudAorICogdHJhbnNh Y3Rpb24gY2FuIGNyZWF0ZSBkZWFkbG9jayBvciB0cmFuc2FjdGlvbiBkZXBlbmRlbmN5IGlzc3Vl cy4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5n SW5mbyBzKQpAQCAtMTAxMiw2ICsxMTU3LDEyIEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFy ZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIGEgUk9MTEJBQ0sgUFJFUEFSRUQgb2Yg YSBwcmV2aW91c2x5IFBSRVBBUkVEIFRSQU5TQUNUSU9OLgorICoKKyAqIE5vdGUgdGhhdCB3ZSBk b24ndCBuZWVkIHRvIHdhaXQgaGVyZSBpZiB0aGUgdHJhbnNhY3Rpb24gd2FzIHByZXBhcmVkIGlu IGEKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gQmVjYXVzZSB3ZSBoYXZlIGFscmVhZHkgd2Fp dGVkIGZvciB0aGUgcHJlcGFyZSB0bworICogZmluaXNoIGluIGFwcGx5X2hhbmRsZV9zdHJlYW1f cHJlcGFyZSgpIHdoaWNoIHdpbGwgZW5zdXJlIGFsbCB0aGUgb3BlcmF0aW9ucworICogaW4gdGhh dCB0cmFuc2FjdGlvbiBoYXZlIGhhcHBlbmVkIGluIHRoZSBzdWJzY3JpYmVyIGFuZCBubyBjb25j dXJyZW50CisgKiB0cmFuc2FjdGlvbiBjYW4gY3JlYXRlIGRlYWRsb2NrIG9yIHRyYW5zYWN0aW9u IGRlcGVuZGVuY3kgaXNzdWVzLgogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3JvbGxi YWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKQEAgLTEwNjUsMTcgKzEyMTYsMTUgQEAgYXBwbHlf aGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBT VFJFQU0gUFJFUEFSRS4KLSAqCi0gKiBMb2dpYyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBSZXBs YXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlvbnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0aW9u IGFzIHByZXBhcmVkCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBh cmUoU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgcHJlcGFyZV9k YXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7CisJVHJhbnNBcHBs eUFjdGlvbiBhcHBseV9hY3Rpb247CiAKLQlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJ aWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uIHx8IHN0cmVhbV9hcHBseV93b3JrZXIpCiAJCWVy ZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAog CQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBQUkVQQVJFIG1lc3NhZ2Ugd2l0aG91dCBTVFJF QU0gU1RPUCIpKSk7CkBAIC0xMDg5LDI0ICsxMjM4LDc2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1f cHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9wcmVwYXJlKHMs ICZwcmVwYXJlX2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QocHJlcGFyZV9k YXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVj ZWl2ZWQgcHJlcGFyZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCBwcmVwYXJlX2RhdGEu eGlkKTsKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHByZXBh cmVfZGF0YS54aWQsICZ3aW5mbyk7CiAKLQkvKiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJh dGlvbnMuICovCi0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVw YXJlX2RhdGEucHJlcGFyZV9sc24pOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2Fz ZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMg cHJlcGFyZWQuICovCi0JYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0 YSk7CisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8g ZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAq LworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2Rh dGEucHJlcGFyZV9sc24pOwogCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQkvKiBN YXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFwcGx5X2hhbmRsZV9wcmVw YXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOwogCi0JcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNl KTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRp b24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFy ZV9kYXRhLmVuZF9sc24pOwogCi0JaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQkv KiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGlu Zm8uICovCisJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1Ymlk LCBwcmVwYXJlX2RhdGEueGlkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NF TkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlwYXJhbGxlbF9hcHBseV9y ZXBsb3JpZ2luX3Jlc2V0KCk7CisKKwkJCS8qIFNlbmQgU1RSRUFNIFBSRVBBUkUgbWVzc2FnZSB0 byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLworCQkJcGFyYWxsZWxfYXBwbHlfc2VuZF9k YXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKgorCQkJICogQWZ0ZXIgc2VuZGlu ZyB0aGUgZGF0YSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB3YWl0IGZvcgorCQkJICog dGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21t aXQKKwkJCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24g ZGVwZW5kZW5jaWVzIGFuZAorCQkJICogZGVhZGxvY2tzLgorCQkJICovCisJCQlwYXJhbGxlbF9h cHBseV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CisJCQlwYXJhbGxlbF9hcHBseV9yZXBs b3JpZ2luX3NldHVwKCk7CisJCQlwYXJhbGxlbF9hcHBseV9mcmVlX3dvcmtlcih3aW5mbywgcHJl cGFyZV9kYXRhLnhpZCk7CisKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5l bmRfbHNuKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQlw YXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKCk7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVz IHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCi0Jc3RyZWFtX2Ns ZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7 CisJCQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFwcGx5X2hh bmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCisJCQlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKworCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCgpOwor CisJCQlsaXN0X2ZyZWUoc3VieGFjdGxpc3QpOworCQkJc3VieGFjdGxpc3QgPSBOSUw7CisKKwkJ CXBhcmFsbGVsX2FwcGx5X3NldF9pbl94YWN0KE15UGFyYWxsZWxTaGFyZWQsIGZhbHNlKTsKKwor CQkJZWxvZyhERUJVRzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5p c2ggY29tbWFuZCIpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7 CisJCQlicmVhazsKKwl9CisKKwlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCisJaW5fcmVt b3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBh cmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190 YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMTEzNSw3ICsxMzM2LDcgQEAgYXBwbHlf aGFuZGxlX29yaWdpbihTdHJpbmdJbmZvIHMpCiAJICogT1JJR0lOIG1lc3NhZ2UgY2FuIG9ubHkg Y29tZSBpbnNpZGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIG9yIGluc2lkZQogCSAqIHJlbW90ZSB0 cmFuc2FjdGlvbiBhbmQgYmVmb3JlIGFueSBhY3R1YWwgd3JpdGVzLgogCSAqLwotCWlmICghaW5f c3RyZWFtZWRfdHJhbnNhY3Rpb24gJiYKKwlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uICYm IHN0cmVhbV9hcHBseV93b3JrZXIgPT0gTlVMTCAmJgogCQkoIWluX3JlbW90ZV90cmFuc2FjdGlv biB8fAogCQkgKElzVHJhbnNhY3Rpb25TdGF0ZSgpICYmICFhbV90YWJsZXN5bmNfd29ya2VyKCkp KSkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTExNTAsMjQgKzEzNTEsMTQgQEAgc3RhdGljIHZvaWQK IGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogewogCWJvb2wJCWZpcnN0 X3NlZ21lbnQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gTlVMTDsKKwlUcmFu c0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlv bikKKwlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gfHwgc3RyZWFtX2FwcGx5X3dvcmtlcikK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElP TiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiZHVwbGljYXRlIFNUUkVBTSBTVEFSVCBtZXNzYWdl IikpKTsKIAotCS8qCi0JICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRo aXMgdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQKLQkgKiBvbiB0aGUgc3RyZWFtIHN0b3Ag dW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbiB3aGljaCBjYXNlIGl0Ci0JICogd2ls bCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2VzLiBXZSBuZWVk IHRoZQotCSAqIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3Ig c2VyaWFsaXppbmcgdGhlCi0JICogc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KLQkg Ki8KLQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0KLQkvKiBub3RpZnkgaGFuZGxlIG1ldGhv ZHMgd2UncmUgcHJvY2Vzc2luZyBhIHJlbW90ZSB0cmFuc2FjdGlvbiAqLwotCWluX3N0cmVhbWVk X3RyYW5zYWN0aW9uID0gdHJ1ZTsKLQogCS8qIGV4dHJhY3QgWElEIG9mIHRoZSB0b3AtbGV2ZWwg dHJhbnNhY3Rpb24gKi8KIAlzdHJlYW1feGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9zdGFy dChzLCAmZmlyc3Rfc2VnbWVudCk7CiAKQEAgLTExNzksMzUgKzEzNzAsOTAgQEAgYXBwbHlfaGFu ZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRf eGFjdChzdHJlYW1feGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7CiAKIAkvKgotCSAqIEluaXRpYWxp emUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlmIHdlIGhhdmVuJ3QgeWV0LiBUaGlzIHdp bGwgYmUKLQkgKiB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28g Y3JlYXRlIGl0IGluIGEgcGVybWFuZW50Ci0JICogY29udGV4dC4gV2UgY3JlYXRlIHRoaXMgb24g dGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nIG1lc3NhZ2UgZnJvbSBhbnkKLQkgKiB0cmFuc2FjdGlv biBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5kIG90aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlv bnMuCi0JICogTm93LCB3ZSBjb3VsZCBjcmVhdGUgYSBmaWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0 aGUgd29ya2VyIGFzIHdlbGwgYnV0Ci0JICogdGhlbiB3ZSB3b24ndCBiZSBzdXJlIHRoYXQgaXQg d2lsbCBldmVyIGJlIHVzZWQuCisJICogRm9yIHRoZSBmaXJzdCBzdHJlYW0gc3RhcnQsIGNoZWNr IGlmIHRoZXJlIGlzIGFueSBmcmVlIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyIHdlIGNhbiB1 c2UgdG8gcHJvY2VzcyB0aGlzIHRyYW5zYWN0aW9uLgogCSAqLwotCWlmIChNeUxvZ2ljYWxSZXBX b3JrZXItPnN0cmVhbV9maWxlc2V0ID09IE5VTEwpCisJaWYgKGZpcnN0X3NlZ21lbnQpCisJCXBh cmFsbGVsX2FwcGx5X3N0YXJ0X3dvcmtlcihzdHJlYW1feGlkKTsKKworCWFwcGx5X2FjdGlvbiA9 IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKKworCXN3 aXRjaCAoYXBwbHlfYWN0aW9uKQogCXsKLQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCWNhc2Ug VFJBTlNfTEVBREVSX1NFUklBTElaRToKIAotCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oQXBwbHlDb250ZXh0KTsKKwkJCS8qCisJCQkgKiBOb3RpZnkgaGFuZGxlIG1ldGhvZHMgd2Un cmUgcHJvY2Vzc2luZyBhIHJlbW90ZSBpbi1wcm9ncmVzcworCQkJICogdHJhbnNhY3Rpb24uCisJ CQkgKi8KKwkJCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsKIAotCQlNeUxvZ2ljYWxS ZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9jKHNpemVvZihGaWxlU2V0KSk7Ci0JCUZp bGVTZXRJbml0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCQkJLyoKKwkJ CSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0YXJ0LCB0aGlzIHRyYW5zYWN0aW9u IHdpbGwgYmUKKwkJCSAqIGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlz IGEgdGFibGVzeW5jIHdvcmtlciBpbgorCQkJICogd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGNvbW1p dHRlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUKKwkJCSAqIG1lc3NhZ2VzLiBXZSBuZWVkIHRo ZSB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsCisJCQkgKiB1c2VkIGZvciBz ZXJpYWxpemluZyB0aGUgc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KKwkJCSAqLwor CQkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwogCi0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjdHgpOwotCX0KKwkJCS8qCisJCQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1f ZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcworCQkJICogd2lsbCBiZSB1c2VkIGZvciB0 aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0CisJCQkgKiBpbiBh IHBlcm1hbmVudCBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdAorCQkJ ICogc3RyZWFtaW5nIG1lc3NhZ2UgZnJvbSBhbnkgdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0 IGZvciB0aGlzCisJCQkgKiBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gTm93LCB3 ZSBjb3VsZCBjcmVhdGUgYQorCQkJICogZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtl ciBhcyB3ZWxsIGJ1dCB0aGVuIHdlIHdvbid0IGJlCisJCQkgKiBzdXJlIHRoYXQgaXQgd2lsbCBl dmVyIGJlIHVzZWQuCisJCQkgKi8KKwkJCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9m aWxlc2V0ID09IE5VTEwpCisJCQl7CisJCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAKLQkvKiBv cGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uICovCi0Jc3RyZWFtX29wZW5f ZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50 KTsKKwkJCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKIAot CS8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1Ynhh Y3QgZmlsZSAqLwotCWlmICghZmlyc3Rfc2VnbWVudCkKLQkJc3VieGFjdF9pbmZvX3JlYWQoTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCQkJTXlMb2dpY2FsUmVwV29y a2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQkJCUZpbGVT ZXRJbml0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwogCi0JcGdzdGF0X3Jl cG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxMKTsKKwkJCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3R4KTsKKwkJCX0KIAotCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCQkvKiBP cGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCQkJc3RyZWFtX29w ZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdt ZW50KTsKKworCQkJLyogSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhp c3Rpbmcgc3VieGFjdCBmaWxlLiAqLworCQkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCXN1Ynhh Y3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCisJ CQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFE RVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCXBhcmFsbGVsX2Fw cGx5X3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJbmNoYW5nZXMgPSAw OworCisJCQkvKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciB0aGlzIHRyYW5z YWN0aW9uLiAqLworCQkJc3RyZWFtX2FwcGx5X3dvcmtlciA9IHdpbmZvOworCQkJYnJlYWs7CisK KwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKworCQkJLyoKKwkJCSAqIE1ha2Ugc3VyZSB0 aGUgaGFuZGxlIGFwcGx5X2Rpc3BhdGNoIG1ldGhvZHMgYXJlIGF3YXJlIHdlJ3JlIGluCisJCQkg KiBhIHJlbW90ZSB0cmFuc2FjdGlvbi4KKwkJCSAqLworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9u ID0gdHJ1ZTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJ YnJlYWs7CisJfQorCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxM KTsKIH0KIAogLyoKQEAgLTEyMTYsNTggKzE0NjIsNzggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9z dGFydChTdHJpbmdJbmZvIHMpCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9w KFN0cmluZ0luZm8gcykKIHsKLQlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCVBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7CisJVHJhbnNBcHBseUFjdGlvbiBhcHBs eV9hY3Rpb247CisKKwlpZiAoIWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpICYmCisJCSghaW5f c3RyZWFtZWRfdHJhbnNhY3Rpb24gJiYgIXN0cmVhbV9hcHBseV93b3JrZXIpKQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkg ZXJybXNnX2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUQVJU IikpKTsKIAotCS8qCi0JICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMs IGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKLQkgKiBzdWJ4YWN0cyBmb3IgdGhlIHRv cGxldmVsIHRyYW5zYWN0aW9uLgotCSAqLwotCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKLQlzdHJlYW1fY2xvc2VfZmlsZSgpOworCWFw cGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndp bmZvKTsKIAotCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwot CUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJ eworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQkvKiBDb21taXQgdGhlIHBlci1z dHJlYW0gdHJhbnNhY3Rpb24gKi8KLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCS8q CisJCQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlh bGl6ZQorCQkJICogaW5mb3JtYXRpb24gYWJvdXQgc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0 cmFuc2FjdGlvbi4KKwkJCSAqLworCQkJc3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKIAotCWlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQkvKiBXZSBtdXN0IGJlIGluIGEgdmFs aWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KKwkJCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7 CiAKLQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KLQlNZW1vcnlDb250ZXh0UmVzZXQo TG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCQkJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRy YW5zYWN0aW9uICovCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJLyogUmVz ZXQgcGVyLXN0cmVhbSBjb250ZXh0ICovCisJCQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0 cmVhbWluZ0NvbnRleHQpOworCisJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUs IE5VTEwpOworCisJCQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCQkJYnJlYWs7 CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5m byk7CisKKwkJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRh KTsKKworCQkJZWxvZyhERUJVRzEsICJhcHBsaWVkICV1IGNoYW5nZXMgaW4gdGhlIHN0cmVhbWlu ZyBjaHVuayIsIG5jaGFuZ2VzKTsKKworCQkJc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CisK KwkJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CisJCQlicmVhazsK KworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0 eShTVEFURV9JRExFSU5UUkFOU0FDVElPTiwgTlVMTCk7CisJCQlicmVhazsKKworCQlkZWZhdWx0 OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KIAotCXBnc3RhdF9yZXBvcnRfYWN0 aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZv KCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFNIGFib3J0IG1lc3NhZ2UuCisgKiBIYW5kbGUg U1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24gd2FzIHNwaWxsZWQgdG8g ZGlzay4KICAqLwogc3RhdGljIHZvaWQKLWFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5n SW5mbyBzKQorc2VyaWFsaXplX3N0cmVhbV9hYm9ydChUcmFuc2FjdGlvbklkIHhpZCwgVHJhbnNh Y3Rpb25JZCBzdWJ4aWQpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7Ci0JVHJhbnNhY3Rpb25JZCBz dWJ4aWQ7Ci0KLQlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCi0JCWVyZXBvcnQoRVJST1Is Ci0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAotCQkJCSBlcnJtc2df aW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOwot Ci0JbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmeGlkLCAmc3VieGlkKTsKLQogCS8q CiAJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0IG9m IHRvcGxldmVsIHhhY3QsIHNvCiAJICoganVzdCBkZWxldGUgdGhlIGZpbGVzIHdpdGggc2VyaWFs aXplZCBpbmZvLgogCSAqLwogCWlmICh4aWQgPT0gc3VieGlkKQotCXsKLQkJc2V0X2FwcGx5X2Vy cm9yX2NvbnRleHRfeGFjdCh4aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIAkJc3RyZWFtX2NsZWFu dXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKLQl9CiAJZWxzZQogCXsK IAkJLyoKQEAgLTEyOTEsOCArMTU1Nyw2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3Ry aW5nSW5mbyBzKQogCQlib29sCQlmb3VuZCA9IGZhbHNlOwogCQljaGFyCQlwYXRoW01BWFBHUEFU SF07CiAKLQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdWJ4aWQsIEludmFsaWRYTG9n UmVjUHRyKTsKLQogCQlzdWJpZHggPSAtMTsKIAkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwog CQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwpAQCAt MTMxNyw3ICsxNTgxLDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMp CiAJCQljbGVhbnVwX3N1YnhhY3RfaW5mbygpOwogCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsK IAkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCQkJcmVzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF9pbmZvKCk7CiAJCQlyZXR1cm47CiAJCX0KIApAQCAtMTM0MCw2ICsxNjAzLDk4IEBAIGFw cGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQllbmRfcmVwbGljYXRpb25f c3RlcCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAl9Cit9CisKKy8qCisgKiBI YW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5k bGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlU cmFuc2FjdGlvbklkIHN1YnhpZDsKKwlMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhIGFib3J0X2Rh dGE7CisJYm9vbAkJcmVhZF9hYm9ydF9pbmZvID0gZmFsc2U7CisJUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvID0gTlVMTDsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwor CWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiB8fCBzdHJlYW1fYXBwbHlfd29ya2VyKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwK KwkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVB TSBTVE9QIikpKTsKKworCS8qCisJICogQ2hlY2sgd2hldGhlciB0aGUgcHVibGlzaGVyIHNlbmRz IGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZS4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIGlzIG9ubHkgc3RhcnRlZCB3aGVuIHRoZSBwdWJsaXNoZXIKKwkgKiBz ZW5kcyBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUuCisJICovCisJaWYgKE15TG9naWNhbFJlcFdv cmtlci0+aW5fcGFyYWxsZWxfYXBwbHkpCisJCXJlYWRfYWJvcnRfaW5mbyA9IHRydWU7CisKKwls b2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZhYm9ydF9kYXRhLCByZWFkX2Fib3J0X2lu Zm8pOworCisJeGlkID0gYWJvcnRfZGF0YS54aWQ7CisJc3VieGlkID0gYWJvcnRfZGF0YS5zdWJ4 aWQ7CisKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1YnhpZCwgYWJvcnRfZGF0YS5h Ym9ydF9sc24pOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlv bih4aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJB TlNfTEVBREVSX1NFUklBTElaRToKKworCQkJLyoKKwkJCSAqIFdlIGFyZSBpbiBsZWFkZXIgYXBw bHkgd29ya2VyIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4KKwkJCSAqIHNlcmlhbGl6ZWQg dG8gZmlsZS4KKwkJCSAqLworCQkJc2VyaWFsaXplX3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7 CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJ QXNzZXJ0KHdpbmZvKTsKKworCQkJaWYgKHN1YnhpZCA9PSB4aWQpCisJCQkJcGFyYWxsZWxfYXBw bHlfcmVwbG9yaWdpbl9yZXNldCgpOworCisJCQkvKiBTZW5kIFNUUkVBTSBBQk9SVCBtZXNzYWdl IHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICovCisJCQlwYXJhbGxlbF9hcHBseV9zZW5k X2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8qCisJCQkgKiBBZnRlciBzZW5k aW5nIHRoZSBkYXRhIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHdhaXQgZm9yCisJCQkg KiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNv bW1pdAorCQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlv biBkZXBlbmRlbmNpZXMgYW5kCisJCQkgKiBkZWFkbG9ja3MuCisJCQkgKi8KKwkJCXBhcmFsbGVs X2FwcGx5X3dhaXRfZm9yX3hhY3RfZmluaXNoKHdpbmZvKTsKKworCQkJaWYgKHN1YnhpZCA9PSB4 aWQpCisJCQl7CisJCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgpOworCQkJCXBh cmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyKHdpbmZvLCB4aWQpOworCQkJfQorCQkJZWxzZQorCQkJ eworCQkJCS8qCisJCQkJICogU2V0IGluX3BhcmFsbGVsX2FwcGx5X3hhY3QgdG8gdHJ1ZSBhZ2Fp biBhcyB3ZSBvbmx5IGFib3J0ZWQKKwkJCQkgKiB0aGUgc3VidHJhbnNhY3Rpb24gYW5kIHRoZSB0 b3AgdHJhbnNhY3Rpb24gaXMgc3RpbGwgaW4KKwkJCQkgKiBwcm9ncmVzcy4KKwkJCQkgKi8KKwkJ CQlwYXJhbGxlbF9hcHBseV9zZXRfaW5feGFjdCh3aW5mby0+c2hhcmVkLCB0cnVlKTsKKwkJCX0K KwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQlwYXJhbGxlbF9h cHBseV9zdHJlYW1fYWJvcnQoJmFib3J0X2RhdGEpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlz aGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kIik7CisJCQlicmVh azsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KIAogCXJl c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQpAQCAtMTQ3MSw4ICsxODI2LDEwIEBA IGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIHsKIAlUcmFuc2FjdGlv bklkIHhpZDsKIAlMb2dpY2FsUmVwQ29tbWl0RGF0YSBjb21taXRfZGF0YTsKKwlQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm8gPSBOVUxMOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0 aW9uOwogCi0JaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmIChpbl9zdHJlYW1lZF90 cmFuc2FjdGlvbiB8fCBzdHJlYW1fYXBwbHlfd29ya2VyKQogCQllcmVwb3J0KEVSUk9SLAogCQkJ CShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVy bmFsKCJTVFJFQU0gQ09NTUlUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7CkBAIC0x NDgwLDE0ICsxODM3LDczIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8g cykKIAl4aWQgPSBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChzLCAmY29tbWl0X2RhdGEp OwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCBjb21taXRfZGF0YS5jb21taXRf bHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFu c2FjdGlvbiAldSIsIHhpZCk7CisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5 X2FjdGlvbih4aWQsICZ3aW5mbyk7CiAKLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29t bWl0X2RhdGEuY29tbWl0X2xzbik7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNl IFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFs KCZjb21taXRfZGF0YSk7CisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNl cmlhbGl6ZWQgdG8gZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0 aW9ucy4KKwkJCSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRh LmNvbW1pdF9sc24pOworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRf ZGF0YSk7CisKKwkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMg YW5kIHN1YnhhY3QgaW5mby4gKi8KKwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCQlicmVhazsKIAotCS8qIHVubGluayB0aGUgZmlsZXMg d2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mbyAqLwotCXN0cmVhbV9jbGVh bnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCWNhc2UgVFJBTlNf TEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlwYXJhbGxl bF9hcHBseV9yZXBsb3JpZ2luX3Jlc2V0KCk7CisKKwkJCS8qIFNlbmQgU1RSRUFNIENPTU1JVCBt ZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICovCisJCQlwYXJhbGxlbF9hcHBs eV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8qCisJCQkgKiBBZnRl ciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHdhaXQgZm9y CisJCQkgKiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50 YWluIGNvbW1pdAorCQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFu c2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJCQkgKiBkZWFkbG9ja3MuCisJCQkgKi8KKwkJCXBh cmFsbGVsX2FwcGx5X3dhaXRfZm9yX3hhY3RfZmluaXNoKHdpbmZvKTsKKwkJCXBhcmFsbGVsX2Fw cGx5X3JlcGxvcmlnaW5fc2V0dXAoKTsKKworCQkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsK KwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9kYXRhLmVuZF9sc24pOworCQkJc3RvcF9z a2lwcGluZ19jaGFuZ2VzKCk7CisKKwkJCXBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyKHdpbmZv LCB4aWQpOworCisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGlzIGVpdGhlciBub24tZW1w dHkgb3Igc2tpcHBlZCwgc28gd2UgY2xlYXIgdGhlCisJCQkgKiBzdWJza2lwbHNuLgorCQkJICov CisJCQljbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oY29tbWl0X2RhdGEuY29tbWl0X2xzbik7 CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJcGFyYWxsZWxf YXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgpOworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVy bmFsKCZjb21taXRfZGF0YSk7CisKKwkJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQo KTsKKworCQkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKKwkJCXN1YnhhY3RsaXN0ID0gTklMOwor CisJCQlwYXJhbGxlbF9hcHBseV9zZXRfaW5feGFjdChNeVBhcmFsbGVsU2hhcmVkLCBmYWxzZSk7 CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24g ZmluaXNoIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFs c2UpOworCQkJYnJlYWs7CisJfQogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJl aW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVz KGNvbW1pdF9kYXRhLmVuZF9sc24pOwpAQCAtMTUzMSw2ICsxOTQ3LDEzIEBAIGFwcGx5X2hhbmRs ZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKQogCQly ZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGNvbW1pdF9kYXRhLT5jb21taXR0 aW1lOwogCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCWlmIChJc1RyYW5zYWN0 aW9uQmxvY2soKSkKKwkJeworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCiAJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxz ZSk7CiAKIAkJc3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEtPmVuZF9sc24pOwpAQCAt MjQ2OCw3ICsyODkxLDcgQEAgYXBwbHlfaGFuZGxlX3RydW5jYXRlKFN0cmluZ0luZm8gcykKIC8q CiAgKiBMb2dpY2FsIHJlcGxpY2F0aW9uIHByb3RvY29sIG1lc3NhZ2UgZGlzcGF0Y2hlci4KICAq Lwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcykKIHsKIAlM b2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24gPSBwcV9nZXRtc2dieXRlKHMpOwpAQCAtMjYzNyw2ICsz MDYwLDEwIEBAIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIHsK IAlGbHVzaFBvc2l0aW9uICpmbHVzaHBvczsKIAorCS8qIFNraXAgaWYgbm90IHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyICovCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1 cm47CisKIAkvKiBOZWVkIHRvIGRvIHRoaXMgaW4gcGVybWFuZW50IGNvbnRleHQgKi8KIAlNZW1v cnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKIApAQCAtMjcwMSw2ICszMTI4LDcgQEAg TG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJZXJyY2FsbGJh Y2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsKIAllcnJjYWxsYmFjay5wcmV2aW91 cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxs YmFjazsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsK IAogCS8qIFRoaXMgb3V0ZXIgbG9vcCBpdGVyYXRlcyBvbmNlIHBlciB3YWl0LiAqLwogCWZvciAo OzspCkBAIC0yODAzLDcgKzMyMzEsOCBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIg bGFzdF9yZWNlaXZlZCkKIAkJLyogY29uZmlybSBhbGwgd3JpdGVzIHNvIGZhciAqLwogCQlzZW5k X2ZlZWRiYWNrKGxhc3RfcmVjZWl2ZWQsIGZhbHNlLCBmYWxzZSk7CiAKLQkJaWYgKCFpbl9yZW1v dGVfdHJhbnNhY3Rpb24gJiYgIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCQlpZiAoIWluX3Jl bW90ZV90cmFuc2FjdGlvbiAmJiAhaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gJiYKKwkJCSFzdHJl YW1fYXBwbHlfd29ya2VyKQogCQl7CiAJCQkvKgogCQkJICogSWYgd2UgZGlkbid0IGdldCBhbnkg dHJhbnNhY3Rpb25zIGZvciBhIHdoaWxlIHRoZXJlIG1pZ2h0IGJlCkBAIC0yOTE1LDYgKzMzNDQs NyBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAogCS8q IFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBl cnJjYWxsYmFjay5wcmV2aW91czsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3Jf Y29udGV4dF9zdGFjazsKIAogCS8qIEFsbCBkb25lICovCiAJd2FscmN2X2VuZHN0cmVhbWluZyhM b2dSZXBXb3JrZXJXYWxSY3ZDb25uLCAmdGxpKTsKQEAgLTM1NzAsMzcgKzQwMDAsMTYgQEAgc3Rh cnRfYXBwbHkoWExvZ1JlY1B0ciBvcmlnaW5fc3RhcnRwb3MpCiAJUEdfRU5EX1RSWSgpOwogfQog Ci0vKiBMb2dpY2FsIFJlcGxpY2F0aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLworLyoK KyAqIFRoZSBjb21tb24gaW5pdGlhbGl6YXRpb24gZm9yIGxlYWRlciBhcHBseSB3b3JrZXIgYW5k IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqCisgKiBJbml0aWFsaXplIHRoZSBkYXRhYmFzZSBj b25uZWN0aW9uLCBpbi1tZW1vcnkgc3Vic2NyaXB0aW9uIGFuZCBuZWNlc3NhcnkKKyAqIGNvbmZp ZyBvcHRpb25zLgorICovCiB2b2lkCi1BcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCitJ bml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCkKIHsKLQlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVt R2V0SW50MzIobWFpbl9hcmcpOwogCU1lbW9yeUNvbnRleHQgb2xkY3R4OwotCWNoYXIJCW9yaWdp bm5hbWVbTkFNRURBVEFMRU5dOwotCVhMb2dSZWNQdHIJb3JpZ2luX3N0YXJ0cG9zID0gSW52YWxp ZFhMb2dSZWNQdHI7Ci0JY2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7Ci0JV2FsUmN2U3RyZWFt T3B0aW9ucyBvcHRpb25zOwotCWludAkJCXNlcnZlcl92ZXJzaW9uOwotCi0JLyogQXR0YWNoIHRv IHNsb3QgKi8KLQlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOwotCi0JLyog U2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVy Rm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOwotCUJhY2tncm91bmRX b3JrZXJVbmJsb2NrU2lnbmFscygpOwotCi0JLyoKLQkgKiBXZSBkb24ndCBjdXJyZW50bHkgbmVl ZCBhbnkgUmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nlc3MsIGJ1dAotCSAqIGlm IHdlIGRpZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVzb3VyY2VPd25lciBoZXJl LgotCSAqLwotCi0JLyogSW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlzaCB2YWx1ZSAqLwotCU15 TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxh c3RfcmVjdl90aW1lID0KLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gR2V0Q3Vy cmVudFRpbWVzdGFtcCgpOwotCi0JLyogTG9hZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVuY3Rpb25z ICovCi0JbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwogCiAJLyogUnVuIGFz IHJlcGxpY2Egc2Vzc2lvbiByZXBsaWNhdGlvbiByb2xlLiAqLwogCVNldENvbmZpZ09wdGlvbigi c2Vzc2lvbl9yZXBsaWNhdGlvbl9yb2xlIiwgInJlcGxpY2EiLApAQCAtMzY2MCwxMiArNDA2OSw1 MCBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCWVyZXBvcnQoTE9HLAogCQkJ CShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtl ciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiwgdGFibGUgXCIlc1wiIGhhcyBzdGFydGVkIiwKIAkJ CQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLCBnZXRfcmVsX25hbWUoTXlMb2dpY2FsUmVwV29ya2Vy LT5yZWxpZCkpKSk7CisJZWxzZSBpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCWVy ZXBvcnQoTE9HLAorCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBw bHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKKwkJCQkJCU15 U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCWVsc2UKIAkJZXJlcG9ydChMT0csCiAJCQkJKGVycm1z ZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVz XCIgaGFzIHN0YXJ0ZWQiLAogCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKIAlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKK30KKworLyogTG9naWNhbCBSZXBsaWNhdGlvbiBBcHBs eSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KK3ZvaWQKK0FwcGx5V29ya2VyTWFpbihEYXR1bSBtYWlu X2FyZykKK3sKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOwor CWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCVhMb2dSZWNQdHIJb3JpZ2luX3N0YXJ0 cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7CisJY2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7CisJ V2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRpb25zOworCWludAkJCXNlcnZlcl92ZXJzaW9uOworCisJ LyogQXR0YWNoIHRvIHNsb3QgKi8KKwlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Ns b3QpOworCisJLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCisJcHFzaWduYWwoU0lHSFVQLCBT aWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUpOwor CUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCisJLyoKKwkgKiBXZSBkb24ndCBj dXJyZW50bHkgbmVlZCBhbnkgUmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nlc3Ms IGJ1dAorCSAqIGlmIHdlIGRpZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVzb3Vy Y2VPd25lciBoZXJlLgorCSAqLworCisJLyogSW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlzaCB2 YWx1ZSAqLworCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxS ZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90 aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJLyogTG9hZCB0aGUgbGlicHEtc3BlY2lm aWMgZnVuY3Rpb25zICovCisJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwor CisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CiAKIAkvKiBDb25uZWN0IHRvIHRoZSBvcmlnaW4g YW5kIHN0YXJ0IHRoZSByZXBsaWNhdGlvbi4gKi8KIAllbG9nKERFQlVHMSwgImNvbm5lY3Rpbmcg dG8gcHVibGlzaGVyIHVzaW5nIGNvbm5lY3Rpb24gc3RyaW5nIFwiJXNcIiIsCkBAIC0zNzUyLDEz ICs0MTk5LDI2IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCXNlcnZlcl92 ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwog CW9wdGlvbnMucHJvdG8ubG9naWNhbC5wcm90b192ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24g Pj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0g OgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNF X1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9Q Uk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgogCQlMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVN OwogCiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3Jp cHRpb24tPnB1YmxpY2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlT dWJzY3JpcHRpb24tPmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0g TXlTdWJzY3JpcHRpb24tPnN0cmVhbTsKKworCWlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAg JiYKKwkJTXlTdWJzY3JpcHRpb24tPnN0cmVhbSA9PSBTVUJTVFJFQU1fUEFSQUxMRUwpCisJewor CQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gcHN0cmR1cCgicGFyYWxsZWwiKTsK KwkJTXlMb2dpY2FsUmVwV29ya2VyLT5pbl9wYXJhbGxlbF9hcHBseSA9IHRydWU7CisJfQorCWVs c2UgaWYgKHNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCAmJgorCQkJIE15U3Vic2NyaXB0aW9uLT5z dHJlYW0gIT0gU1VCU1RSRUFNX09GRikKKwkJb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWlu ZyA9IHBzdHJkdXAoIm9uIik7CisJZWxzZQorCQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFt aW5nID0gTlVMTDsKKwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC50d29waGFzZSA9IGZhbHNlOwog CW9wdGlvbnMucHJvdG8ubG9naWNhbC5vcmlnaW4gPSBwc3RyZHVwKE15U3Vic2NyaXB0aW9uLT5v cmlnaW4pOwogCkBAIC0zODU1LDYgKzQzMTUsMTUgQEAgSXNMb2dpY2FsV29ya2VyKHZvaWQpCiAJ cmV0dXJuIE15TG9naWNhbFJlcFdvcmtlciAhPSBOVUxMOwogfQogCisvKgorICogSXMgY3VycmVu dCBwcm9jZXNzIGEgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXI/Cisg Ki8KK2Jvb2wKK0lzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIodm9pZCkKK3sKKwlyZXR1cm4g YW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCk7Cit9CisKIC8qCiAgKiBTdGFydCBza2lwcGluZyBj aGFuZ2VzIG9mIHRoZSB0cmFuc2FjdGlvbiBpZiB0aGUgZ2l2ZW4gTFNOIG1hdGNoZXMgdGhlCiAg KiBMU04gc3BlY2lmaWVkIGJ5IHN1YnNjcmlwdGlvbidzIHNraXBsc24uCkBAIC0zOTE3LDcgKzQz ODYsOCBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNu KQogCVhMb2dSZWNQdHIJbXlza2lwbHNuID0gTXlTdWJzY3JpcHRpb24tPnNraXBsc247CiAJYm9v bAkJc3RhcnRlZF90eCA9IGZhbHNlOwogCi0JaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlk KG15c2tpcGxzbikpKQorCWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZChteXNraXBsc24p KSB8fAorCQlhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKIAkJcmV0dXJuOwogCiAJaWYgKCFJ c1RyYW5zYWN0aW9uU3RhdGUoKSkKQEAgLTM5ODksNyArNDQ1OSw3IEBAIGNsZWFyX3N1YnNjcmlw dGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pCiB9CiAKIC8qIEVycm9yIGNhbGxi YWNrIHRvIGdpdmUgbW9yZSBjb250ZXh0IGluZm8gYWJvdXQgdGhlIGNoYW5nZSBiZWluZyBhcHBs aWVkICovCi1zdGF0aWMgdm9pZAordm9pZAogYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJn KQogewogCUFwcGx5RXJyb3JDYWxsYmFja0FyZyAqZXJyYXJnID0gJmFwcGx5X2Vycm9yX2NhbGxi YWNrX2FyZzsKQEAgLTQwMTcsMjMgKzQ0ODcsNDcgQEAgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9p ZCAqYXJnKQogCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCiAJCQkJCSAgIExTTl9GT1JNQVRf QVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKIAl9Ci0JZWxzZSBpZiAoZXJyYXJnLT5yZW1vdGVf YXR0bnVtIDwgMCkKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVw bGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVw bGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmlu aXNoZWQgYXQgJVgvJVgiLAotCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCi0JCQkJICAgbG9n aWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKLQkJCQkgICBlcnJhcmctPnJl bC0+cmVtb3RlcmVsLm5zcG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxu YW1lLAotCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1Mo ZXJyYXJnLT5maW5pc2hfbHNuKSk7CiAJZWxzZQotCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJl bW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5 cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVt biBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJCQkgICBl cnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFy Zy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAotCQkJ CSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+ cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCi0JCQkJICAgZXJyYXJn LT5yZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24p KTsKKwl7CisJCWlmIChlcnJhcmctPnJlbW90ZV9hdHRudW0gPCAwKQorCQl7CisJCQlpZiAoWExv Z1JlY1B0cklzSW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVycmNvbnRleHQoInBy b2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5n IG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVz LiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwK KwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJ CQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJl bC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQpOworCQkJ ZWxzZQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0 aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0 aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVk IGF0ICVYLyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dp Y2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5y ZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5y ZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1B VF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKFhM b2dSZWNQdHJJc0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJw cm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmlu ZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIl cy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJICAgZXJyYXJn LT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+ Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJ CQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJl bC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCisJCQkJCQkgICBl cnJhcmctPnJlbW90ZV94aWQpOworCQkJZWxzZQorCQkJCWVycmNvbnRleHQoInByb2Nlc3Npbmcg cmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2Ug dHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29s dW1uIFwiJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmluaXNoZWQgYXQgJVgvJVgiLAorCQkJCQkJ ICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBl KGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5h bWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBl cnJhcmctPnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCisJ CQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJy YXJnLT5maW5pc2hfbHNuKSk7CisJCX0KKwl9CiB9CiAKIC8qIFNldCB0cmFuc2FjdGlvbiBpbmZv cm1hdGlvbiBvZiBhcHBseSBlcnJvciBjYWxsYmFjayAqLwpAQCAtNDA1MywzICs0NTQ3LDI4IEBA IHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKQogCWFwcGx5X2Vycm9yX2NhbGxi YWNrX2FyZy5yZW1vdGVfYXR0bnVtID0gLTE7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFj dChJbnZhbGlkVHJhbnNhY3Rpb25JZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogfQorCisvKgorICog UmV0dXJuIHRoZSBhY3Rpb24gdG8gdGFrZSBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uLiAqd2lu Zm8gaXMgYXNzaWduZWQgdG8KKyAqIHRoZSBkZXN0aW5hdGlvbiBwYXJhbGxlbCB3b3JrZXIgaW5m byAoaWYgdGhlIGFjdGlvbiBpcworICogVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwpLCBv dGhlcndpc2UgKndpbmZvIGlzIGFzc2lnbmVkIE5VTEwuCisgKi8KK3N0YXRpYyBUcmFuc0FwcGx5 QWN0aW9uCitnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZvKQoreworCSp3aW5mbyA9IE5VTEw7CisKKwlp ZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybiBUUkFOU19QQVJBTExFTF9B UFBMWTsKKwllbHNlIGlmIChpbl9yZW1vdGVfdHJhbnNhY3Rpb24pCisJCXJldHVybiBUUkFOU19M RUFERVJfQVBQTFk7CisKKwkvKgorCSAqIENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMg dHJhbnNhY3Rpb24gdXNpbmcgYSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciBhbmQgaWYgc28s IHNlbmQgdGhlIGNoYW5nZXMgdG8gdGhhdCB3b3JrZXIuCisJICovCisJZWxzZSBpZiAoKCp3aW5m byA9IHBhcmFsbGVsX2FwcGx5X2ZpbmRfd29ya2VyKHhpZCkpKQorCQlyZXR1cm4gVFJBTlNfTEVB REVSX1NFTkRfVE9fUEFSQUxMRUw7CisJZWxzZQorCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFUklB TElaRTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmlu ZGV4IDJlY2FhNWI5MDcuLjc2OTg0YjRmNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v cGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMzY5LDcgKzM2OSw3IEBAIHBhcnNlX291dHB1dF9wYXJh bWV0ZXJzKExpc3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAkJCQkJCSBlcnJtc2co ImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKIAkJCXN0cmVhbWluZ19naXZl biA9IHRydWU7CiAKLQkJCWRhdGEtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOwor CQkJZGF0YS0+c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJ ZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpA QCAtNDYxLDEzICs0NjEsMjAgQEAgcGdvdXRwdXRfc3RhcnR1cChMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAkJICogd2Ugb25seSBhbGxvdyBp dCB3aXRoIHN1ZmZpY2llbnQgdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wsIGFuZCB3aGVuCiAJCSAq IHRoZSBvdXRwdXQgcGx1Z2luIHN1cHBvcnRzIGl0LgogCQkgKi8KLQkJaWYgKCFkYXRhLT5zdHJl YW1pbmcpCisJCWlmIChkYXRhLT5zdHJlYW1pbmcgPT0gU1VCU1RSRUFNX09GRikKIAkJCWN0eC0+ c3RyZWFtaW5nID0gZmFsc2U7Ci0JCWVsc2UgaWYgKGRhdGEtPnByb3RvY29sX3ZlcnNpb24gPCBM T0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSkKKwkJZWxzZSBpZiAoZGF0YS0+c3Ry ZWFtaW5nID09IFNVQlNUUkVBTV9PTiAmJgorCQkJCSBkYXRhLT5wcm90b2NvbF92ZXJzaW9uIDwg TE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0pCiAJCQllcmVwb3J0KEVSUk9SLAog CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVy cm1zZygicmVxdWVzdGVkIHByb3RvX3ZlcnNpb249JWQgZG9lcyBub3Qgc3VwcG9ydCBzdHJlYW1p bmcsIG5lZWQgJWQgb3IgaGlnaGVyIiwKIAkJCQkJCQlkYXRhLT5wcm90b2NvbF92ZXJzaW9uLCBM T0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSkpKTsKKwkJZWxzZSBpZiAoZGF0YS0+ c3RyZWFtaW5nID09IFNVQlNUUkVBTV9QQVJBTExFTCAmJgorCQkJCSBkYXRhLT5wcm90b2NvbF92 ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVS X1ZBTFVFKSwKKwkJCQkJIGVycm1zZygicmVxdWVzdGVkIHByb3RvX3ZlcnNpb249JWQgZG9lcyBu b3Qgc3VwcG9ydCBwYXJhbGxlbCBzdHJlYW1pbmcgbW9kZSwgbmVlZCAlZCBvciBoaWdoZXIiLAor CQkJCQkJCWRhdGEtPnByb3RvY29sX3ZlcnNpb24sIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BB UkFMTEVMX1ZFUlNJT05fTlVNKSkpOwogCQllbHNlIGlmICghY3R4LT5zdHJlYW1pbmcpCiAJCQll cmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZB TFVFKSwKQEAgLTUxMyw3ICs1MjAsNyBAQCBwZ291dHB1dF9zdGFydHVwKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogCQkgKiBEaXNhYmxlIHRo ZSBzdHJlYW1pbmcgYW5kIHByZXBhcmVkIHRyYW5zYWN0aW9ucyBkdXJpbmcgdGhlIHNsb3QKIAkJ ICogaW5pdGlhbGl6YXRpb24gbW9kZS4KIAkJICovCi0JCWN0eC0+c3RyZWFtaW5nID0gZmFsc2U7 CisJCWN0eC0+c3RyZWFtaW5nID0gU1VCU1RSRUFNX09GRjsKIAkJY3R4LT50d29waGFzZSA9IGZh bHNlOwogCX0KIH0KQEAgLTE4MzksNiArMTg0Niw4IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChz dHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkgIFhMb2dSZWNQdHIgYWJv cnRfbHNuKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnRvcHR4bjsKKwlQR091dHB1dERhdGEgKmRh dGEgPSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCWJvb2wJ CXdyaXRlX2Fib3J0X2luZm8gPSAoZGF0YS0+c3RyZWFtaW5nID09IFNVQlNUUkVBTV9QQVJBTExF TCk7CiAKIAkvKgogCSAqIFRoZSBhYm9ydCBzaG91bGQgaGFwcGVuIG91dHNpZGUgc3RyZWFtaW5n IGJsb2NrLCBldmVuIGZvciBzdHJlYW1lZApAQCAtMTg1Miw3ICsxODYxLDggQEAgcGdvdXRwdXRf c3RyZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJQXNzZXJ0 KHJidHhuX2lzX3N0cmVhbWVkKHRvcHR4bikpOwogCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRl KGN0eCwgdHJ1ZSk7Ci0JbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRv cHR4bi0+eGlkLCB0eG4tPnhpZCk7CisJbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4 LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCwgYWJvcnRfbHNuLCB0eG4tPnhhY3RfdGltZS5h Ym9ydF90aW1lLCB3cml0ZV9hYm9ydF9pbmZvKTsKKwogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwg dHJ1ZSk7CiAKIAljbGVhbnVwX3JlbF9zeW5jX2NhY2hlKHRvcHR4bi0+eGlkLCBmYWxzZSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggMjFhOWZjMGZkZC4uOWNkNTQyODdi NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtMjIsNiArMjIsNyBAQAog I2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29u ZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKQEAgLTY1Nyw2ICs2 NTgsOSBAQCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUykKIAlpZiAoQ2hl Y2tQcm9jU2lnbmFsKFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhUKSkKIAkJSGFuZGxlTG9nTWVt b3J5Q29udGV4dEludGVycnVwdCgpOwogCisJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1BB UkFMTEVMX0FQUExZX01FU1NBR0UpKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVy cnVwdCgpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0RBVEFCQVNFKSkKIAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX0RBVEFCQVNFKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDM1ZWZmMjhiZDMuLjBl ZTUwMDIwZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMzNzcsNiArMzM3Nyw5IEBAIFByb2Nlc3NJ bnRlcnJ1cHRzKHZvaWQpCiAKIAlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCiAJCVByb2Nl c3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisKKwlpZiAoUGFyYWxsZWxBcHBseU1lc3Nh Z2VQZW5kaW5nKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCA5MmYyNGE2YzliLi5jOTY2 NDdjNGVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50 LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC0zODgs NiArMzg4LDkgQEAgcGdzdGF0X2dldF93YWl0X2lwYyhXYWl0RXZlbnRJUEMgdykKIAkJY2FzZSBX QUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX1JFSU5TRVJUOgogCQkJZXZlbnRfbmFtZSA9ICJI YXNoR3Jvd0J1Y2tldHNSZWluc2VydCI7CiAJCQlicmVhazsKKwkJY2FzZSBXQUlUX0VWRU5UX0xP R0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFOgorCQkJZXZlbnRfbmFtZSA9ICJMb2dp Y2FsUGFyYWxsZWxBcHBseVN0YXRlQ2hhbmdlIjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZF TlRfTE9HSUNBTF9TWU5DX0RBVEE6CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxTeW5jRGF0YSI7 CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxl cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggYWIzMTQwZmYz YS4uMDI5YjU1Y2VhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTI5NzMs NiArMjk3MywxOCBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJ TlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsibWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbiIsCisJCQlQR0NfU0lHSFVQLAorCQkJUkVQTElDQVRJT05fU1VC U0NSSUJFUlMsCisJCQlnZXR0ZXh0X25vb3AoIk1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGFw cGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4iKSwKKwkJCU5VTEwsCisJCX0sCisJCSZtYXhf cGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLAorCQkyLCAwLCBNQVhfQkFD S0VORFMsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7ImxvZ19yb3RhdGlvbl9h Z2UiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dIRVJFLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRo ZSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBmb3JjaW5nICIKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCAyYWU3NmU1Y2ZiLi42NjAz ZjBlOTc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlCkBAIC0zNjAsNiArMzYwLDcgQEAKICNtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJz ID0gNAkjIHRha2VuIGZyb20gbWF4X3dvcmtlcl9wcm9jZXNzZXMKIAkJCQkJIyAoY2hhbmdlIHJl cXVpcmVzIHJlc3RhcnQpCiAjbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMgkj IHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycworI21heF9wYXJhbGxl bF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9n aWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCiAKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKaW5kZXggZjhjNGNiOGQxOC4uYjU3ZjZjOWZhNiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NDgw LDcgKzQ0ODAsNyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaWYgKGZvdXQt PnJlbW90ZVZlcnNpb24gPj0gMTQwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwg IiBzLnN1YnN0cmVhbSxcbiIpOwogCWVsc2UKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnks ICIgZmFsc2UgQVMgc3Vic3RyZWFtLFxuIik7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LCAiICdmJyBBUyBzdWJzdHJlYW0sXG4iKTsKIAogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDE1MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCkBAIC00NjE3LDggKzQ2MTcs MTAgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJzY3JpcHRpb25J bmZvICpzdWJpbmZvKQogCWlmIChzdHJjbXAoc3ViaW5mby0+c3ViYmluYXJ5LCAidCIpID09IDAp CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBiaW5hcnkgPSB0cnVlIik7CiAKLQlp ZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgImYiKSAhPSAwKQorCWlmIChzdHJjbXAoc3Vi aW5mby0+c3Vic3RyZWFtLCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LCAiLCBzdHJlYW1pbmcgPSBvbiIpOworCWVsc2UgaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJl YW0sICJwIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWlu ZyA9IHBhcmFsbGVsIik7CiAKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnR3b3BoYXNlc3RhdGUs IHR3b19waGFzZV9kaXNhYmxlZCkgIT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnks ICIsIHR3b19waGFzZSA9IG9uIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaApp bmRleCA3Yjk4NzE0ZjMwLi4wMTZhZmJjMjA0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmgKQEAgLTgwLDcgKzgwLDggQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxT dWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29s CQlzdWJiaW5hcnk7CQkvKiBUcnVlIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMgdGhlCiAJCQkJ CQkJCSAqIHB1Ymxpc2hlciB0byBzZW5kIGRhdGEgaW4gYmluYXJ5ICovCiAKLQlib29sCQlzdWJz dHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN1 YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuIFNlZQorCQkJCQkJ CQkgKiBTVUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAogCWNoYXIJCXN1YnR3b3BoYXNlc3Rh dGU7CS8qIFN0cmVhbSB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAKQEAgLTEyNCw3ICsxMjUs OCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQllbmFibGVkOwkJLyogSW5k aWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gaXMgZW5hYmxlZCAqLwogCWJvb2wJCWJpbmFyeTsJ CQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyBkYXRhIGluCiAJCQkJCQkJ CSAqIGJpbmFyeSBmb3JtYXQgKi8KLQlib29sCQlzdHJlYW07CQkJLyogQWxsb3cgc3RyZWFtaW5n IGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdHJlYW07CQkJLyogQWxsb3cg c3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJCQkJCQkJICogU2VlIFNVQlNU UkVBTV94eHggY29uc3RhbnRzLiAqLwogCWNoYXIJCXR3b3BoYXNlc3RhdGU7CS8qIEFsbG93IHN0 cmVhbWluZyB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkv KiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0 b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgpAQCAtMTM3LDYgKzEzOSwyMSBA QCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAkJCQkJCQkJICogc3BlY2lmaWVkIG9yaWdp biAqLwogfSBTdWJzY3JpcHRpb247CiAKKy8qIERpc2FsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVz cyB0cmFuc2FjdGlvbnMuICovCisjZGVmaW5lIFNVQlNUUkVBTV9PRkYgJ2YnCisKKy8qCisgKiBT dHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSB3cml0dGVuIHRvIGEgdGVtcG9y YXJ5IGZpbGUgYW5kCisgKiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBTVUJTVFJFQU1fT04gJ3QnCisKKy8q CisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVkIGltbWVk aWF0ZWx5IHZpYSBhIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisgKi8KKyNkZWZpbmUgU1VC U1RSRUFNX1BBUkFMTEVMICdwJworCiBleHRlcm4gU3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRp b24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNjcmlw dGlvbihTdWJzY3JpcHRpb24gKnN1Yik7CiBleHRlcm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9u KE9pZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCBi L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCmluZGV4IDU2ZDJiYjY2MTYuLmY2YmE1ZmZj MDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCisrKyBiL3NyYy9p bmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC0xNTQsNiArMTU0LDcgQEAgZXh0ZXJuIExpc3Qg KmRlZkdldFF1YWxpZmllZE5hbWUoRGVmRWxlbSAqZGVmKTsKIGV4dGVybiBUeXBlTmFtZSAqZGVm R2V0VHlwZU5hbWUoRGVmRWxlbSAqZGVmKTsKIGV4dGVybiBpbnQJZGVmR2V0VHlwZUxlbmd0aChE ZWZFbGVtICpkZWYpOwogZXh0ZXJuIExpc3QgKmRlZkdldFN0cmluZ0xpc3QoRGVmRWxlbSAqZGVm KTsKK2V4dGVybiBjaGFyIGRlZkdldFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVmKTsKIGV4dGVy biB2b2lkIGVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKERlZkVsZW0gKmRlZmVsLCBQYXJzZVN0YXRl ICpwc3RhdGUpIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOwogCiAjZW5kaWYJCQkJCQkJLyogREVG UkVNX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVu Y2hlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgKaW5kZXgg ZjFlMjgyMWUyNS4uZDUxM2VmNTMzYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbGxhdW5jaGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bGxhdW5jaGVyLmgKQEAgLTE0LDYgKzE0LDcgQEAKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBt YXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBt YXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247CitleHRlcm4gUEdETExJTVBPUlQgaW50 IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247CiAKIGV4dGVybiB2 b2lkIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNo ZXJNYWluKERhdHVtIG1haW5fYXJnKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3Rv LmgKaW5kZXggN2VhYTRjOTdlZC4uMWRhN2IwMWNhNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHByb3RvLmgKQEAgLTMyLDEyICszMiwxNyBAQAogICoKICAqIExPR0lDQUxSRVBfUFJP VE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbiB3 aXRoCiAgKiBzdXBwb3J0IGZvciB0d28tcGhhc2UgY29tbWl0IGRlY29kaW5nIChhdCBwcmVwYXJl IHRpbWUpLiBJbnRyb2R1Y2VkIGluIFBHMTUuCisgKgorICogTE9HSUNBTFJFUF9QUk9UT19TVFJF QU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbgor ICogd2hlcmUgd2Ugc3VwcG9ydCBhcHBseWluZyBsYXJnZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25z IGluIHBhcmFsbGVsLgorICogSW50cm9kdWNlZCBpbiBQRzE2LgogICovCiAjZGVmaW5lIExPR0lD QUxSRVBfUFJPVE9fTUlOX1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19W RVJTSU9OX05VTSAxCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVN IDIKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSAzCi0jZGVm aW5lIExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJPVE9fVFdP UEhBU0VfVkVSU0lPTl9OVU0KKyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxM RUxfVkVSU0lPTl9OVU0gNAorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJTSU9OX05V TSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTQogCiAvKgogICog TG9naWNhbCBtZXNzYWdlIHR5cGVzCkBAIC0xNzUsNiArMTgwLDE3IEBAIHR5cGVkZWYgc3RydWN0 IExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YQogCWNoYXIJCWdpZFtHSURTSVpFXTsK IH0gTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhOwogCisvKgorICogVHJhbnNhY3Rp b24gcHJvdG9jb2wgaW5mb3JtYXRpb24gZm9yIHN0cmVhbSBhYm9ydC4KKyAqLwordHlwZWRlZiBz dHJ1Y3QgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YQoreworCVRyYW5zYWN0aW9uSWQgeGlkOwor CVRyYW5zYWN0aW9uSWQgc3VieGlkOworCVhMb2dSZWNQdHIJYWJvcnRfbHNuOworCVRpbWVzdGFt cFR6IGFib3J0X3RpbWU7Cit9IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGE7CisKIGV4dGVybiB2 b2lkIGxvZ2ljYWxyZXBfd3JpdGVfYmVnaW4oU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZmZXJU WE4gKnR4bik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfYmVnaW4oU3RyaW5nSW5mbyBp biwKIAkJCQkJCQkJICBMb2dpY2FsUmVwQmVnaW5EYXRhICpiZWdpbl9kYXRhKTsKQEAgLTI0Niw5 ICsyNjIsMTMgQEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fY29tbWl0KFN0 cmluZ0luZm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4KIGV4dGVybiBUcmFuc2FjdGlvbklk IGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCQkJ CQkgICBMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQg eGlkLAotCQkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpOwotZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLCBUcmFuc2FjdGlvbklkICp4 aWQsCi0JCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnN1YnhpZCk7CisJCQkJCQkJCQkJICBUcmFu c2FjdGlvbklkIHN1YnhpZCwKKwkJCQkJCQkJCQkgIFhMb2dSZWNQdHIgYWJvcnRfbHNuLAorCQkJ CQkJCQkJCSAgVGltZXN0YW1wVHogYWJvcnRfdGltZSwKKwkJCQkJCQkJCQkgIGJvb2wgd3JpdGVf YWJvcnRfaW5mbyk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0 cmluZ0luZm8gaW4sCisJCQkJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0 X2RhdGEsCisJCQkJCQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9pbmZvKTsKIGV4dGVybiBjaGFyICps b2dpY2FscmVwX21lc3NhZ2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24pOwogCiAjZW5k aWYJCQkJCQkJLyogTE9HSUNBTF9QUk9UT19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmgKaW5kZXggY2QxYjZlOGFmYy4uNzc1YTcxODU5YiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMTIsOCArMTIsMTQgQEAKICNpZm5kZWYgTE9H SUNBTFdPUktFUl9ICiAjZGVmaW5lIExPR0lDQUxXT1JLRVJfSAogCitleHRlcm4gUEdETExJTVBP UlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZzsKKwog ZXh0ZXJuIHZvaWQgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKK2V4dGVybiB2b2lk IFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIAogZXh0ZXJuIGJvb2wg SXNMb2dpY2FsV29ya2VyKHZvaWQpOworZXh0ZXJuIGJvb2wgSXNMb2dpY2FsUGFyYWxsZWxBcHBs eVdvcmtlcih2b2lkKTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50 ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZv aWQpOwogCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTFdPUktFUl9IICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vcGdvdXRwdXQuaAppbmRleCAwMjAyNzU1MGUyLi4zYzMwZGE4MjA1IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0LmgKQEAgLTI2LDcgKzI2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdPdXRw dXREYXRhCiAJTGlzdAkgICAqcHVibGljYXRpb25fbmFtZXM7CiAJTGlzdAkgICAqcHVibGljYXRp b25zOwogCWJvb2wJCWJpbmFyeTsKLQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3RyZWFtaW5n OwogCWJvb2wJCW1lc3NhZ2VzOwogCWJvb2wJCXR3b19waGFzZTsKIAljaGFyCSAgICpvcmlnaW47 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggMDJiNTlhMTkzMS4u MTU0OTExNjMzOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1 ZmZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAt MzAxLDYgKzMwMSw3IEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE4KIAl7CiAJCVRp bWVzdGFtcFR6IGNvbW1pdF90aW1lOwogCQlUaW1lc3RhbXBUeiBwcmVwYXJlX3RpbWU7CisJCVRp bWVzdGFtcFR6IGFib3J0X3RpbWU7CiAJfQkJCXhhY3RfdGltZTsKIAogCS8qCkBAIC02NjQsOSAr NjY1LDExIEBAIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBc3NpZ25DaGlsZChSZW9yZGVyQnVm ZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQ29t bWl0Q2hpbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJ IFRyYW5zYWN0aW9uSWQgc3VieGlkLCBYTG9nUmVjUHRyIGNvbW1pdF9sc24sCiAJCQkJCQkJCQkg WExvZ1JlY1B0ciBlbmRfbHNuKTsKLWV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9y ZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKK2V4dGVy biB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25J ZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCQkJCSAgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUp OwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0T2xkKFJlb3JkZXJCdWZmZXIgKnJiLCBU cmFuc2FjdGlvbklkIG9sZGVzdFJ1bm5pbmdYaWQpOwotZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZl ckZvcmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIg bHNuKTsKK2V4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIs IFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkJVGltZXN0YW1wVHog YWJvcnRfdGltZSk7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVySW52YWxpZGF0ZShSZW9yZGVy QnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKIAogZXh0ZXJu IHZvaWQgUmVvcmRlckJ1ZmZlclNldEJhc2VTbmFwc2hvdChSZW9yZGVyQnVmZmVyICpyYiwgVHJh bnNhY3Rpb25JZCB4aWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxy ZWNlaXZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAppbmRleCA5 MzM5ZjI5MzAzLi43ZTkzMGQ1Nzc3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93YWxyZWNlaXZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmgKQEAgLTE4Miw3ICsxODIsNyBAQCB0eXBlZGVmIHN0cnVjdAogCQkJdWludDMyCQlwcm90b192 ZXJzaW9uOwkvKiBMb2dpY2FsIHByb3RvY29sIHZlcnNpb24gKi8KIAkJCUxpc3QJICAgKnB1Ymxp Y2F0aW9uX25hbWVzOwkvKiBTdHJpbmcgbGlzdCBvZiBwdWJsaWNhdGlvbnMgKi8KIAkJCWJvb2wJ CWJpbmFyeTsgLyogQXNrIHB1Ymxpc2hlciB0byB1c2UgYmluYXJ5ICovCi0JCQlib29sCQlzdHJl YW1pbmc7CS8qIFN0cmVhbWluZyBvZiBsYXJnZSB0cmFuc2FjdGlvbnMgKi8KKwkJCWNoYXIJICAg KnN0cmVhbWluZzsJLyogU3RyZWFtaW5nIG9mIGxhcmdlIHRyYW5zYWN0aW9ucyAqLwogCQkJYm9v bAkJdHdvcGhhc2U7CS8qIFN0cmVhbWluZyBvZiB0d28tcGhhc2UgdHJhbnNhY3Rpb25zIGF0CiAJ CQkJCQkJCQkgKiBwcmVwYXJlIHRpbWUgKi8KIAkJCWNoYXIJICAgKm9yaWdpbjsgLyogT25seSBw dWJsaXNoIGRhdGEgb3JpZ2luYXRpbmcgZnJvbSB0aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgKaW5kZXggZjgyYmM1MThjMy4uNGNiZmI0MzQ5MiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTE3LDggKzE3LDEyIEBACiAj aW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb24uaCIKICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJtaXNj YWRtaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKICNpbmNs dWRlICJzdG9yYWdlL2ZpbGVzZXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xvY2suaCIKKyNpbmNs dWRlICJzdG9yYWdlL3NobV9tcS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX3RvYy5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogCiAKQEAgLTYwLDYgKzY0LDE5IEBAIHR5cGVkZWYgc3Ry dWN0IExvZ2ljYWxSZXBXb3JrZXIKIAkgKi8KIAlGaWxlU2V0ICAgICpzdHJlYW1fZmlsZXNldDsK IAorCS8qCisJICogUElEIG9mIGxlYWRlciBhcHBseSB3b3JrZXIgaWYgdGhpcyBzbG90IGlzIHVz ZWQgZm9yIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIsIEludmFsaWRQaWQgb3RoZXJ3aXNl LgorCSAqLworCXBpZF90CQlhcHBseV9sZWFkZXJfcGlkOworCisJLyoKKwkgKiBJbmRpY2F0ZXMg d2hldGhlciB0byB1c2UgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKwkgKgorCSAqIERldGVybWlu ZWQgYmFzZWQgb24gc3RyZWFtaW5nIHBhcmFtZXRlciBhbmQgcHVibGlzaGVyIHZlcnNpb24uCisJ ICovCisJYm9vbAkJaW5fcGFyYWxsZWxfYXBwbHk7CisKIAkvKiBTdGF0cy4gKi8KIAlYTG9nUmVj UHRyCWxhc3RfbHNuOwogCVRpbWVzdGFtcFR6IGxhc3Rfc2VuZF90aW1lOwpAQCAtNjgsOSArODUs ODIgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCVRpbWVzdGFtcFR6IHJlcGx5 X3RpbWU7CiB9IExvZ2ljYWxSZXBXb3JrZXI7CiAKKy8qIFN0cnVjdCBmb3Igc2F2aW5nIGFuZCBy ZXN0b3JpbmcgYXBwbHkgZXJyY29udGV4dCBpbmZvcm1hdGlvbiAqLwordHlwZWRlZiBzdHJ1Y3Qg QXBwbHlFcnJvckNhbGxiYWNrQXJnCit7CisJTG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZDsJLyog MCBpZiBpbnZhbGlkICovCisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWw7CisKKwkvKiBSZW1v dGUgbm9kZSBpbmZvcm1hdGlvbiAqLworCWludAkJCXJlbW90ZV9hdHRudW07CS8qIC0xIGlmIGlu dmFsaWQgKi8KKwlUcmFuc2FjdGlvbklkIHJlbW90ZV94aWQ7CisJWExvZ1JlY1B0cglmaW5pc2hf bHNuOworCWNoYXIJICAgKm9yaWdpbl9uYW1lOworfSBBcHBseUVycm9yQ2FsbGJhY2tBcmc7CisK Ky8qCisgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0d2VlbiBsZWFkZXIgYXBw bHkgd29ya2VyIGFuZCBwYXJhbGxlbAorICogYXBwbHkgd29ya2Vycy4KKyAqLwordHlwZWRlZiBz dHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZAoreworCXNsb2NrX3QJCW11dGV4OworCisJ LyoKKwkgKiBGbGFnIHVzZWQgdG8gZW5zdXJlIGNvbW1pdCBvcmRlcmluZy4KKwkgKgorCSAqIFRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBzZXQgaXQgdG8gZmFsc2UgYWZ0ZXIgaGFuZGxp bmcgdGhlCisJICogdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIHdoaWxlIHRoZSBhcHBseSBs ZWFkZXIgd2lsbCB3YWl0IGZvciBpdCB0bworCSAqIGJlY29tZSBmYWxzZSBiZWZvcmUgcHJvY2Vl ZGluZyBpbiB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZHMgKGUuZy4KKwkgKiBTVFJFQU1fQ09N TUlUL1NUUkVBTV9BQk9SVC9TVFJFQU1fUFJFUEFSRSkuCisJICovCisJYm9vbAkJaW5fcGFyYWxs ZWxfYXBwbHlfeGFjdDsKKworCS8qIEluZm9ybWF0aW9uIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcg TG9naWNhbFJlcFdvcmtlciBzbG90LiAqLworCXVpbnQxNgkJbG9naWNhbHJlcF93b3JrZXJfZ2Vu ZXJhdGlvbjsKKworCWludAkJCWxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87Cit9IFBhcmFsbGVs QXBwbHlXb3JrZXJTaGFyZWQ7CisKKy8qCisgKiBJbmZvcm1hdGlvbiB3aGljaCBpcyB1c2VkIHRv IG1hbmFnZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit0eXBlZGVmIHN0cnVjdCBQ YXJhbGxlbEFwcGx5V29ya2VySW5mbworeworCXNobV9tcV9oYW5kbGUgKm1xX2hhbmRsZTsKKwor CS8qCisJICogVGhlIHF1ZXVlIHVzZWQgdG8gdHJhbnNmZXIgbWVzc2FnZXMgZnJvbSB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyIHRvCisJICogdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuIE5VTEwg aWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBleGl0ZWQKKwkgKiBjbGVhbmx5LgorCSAqLwor CXNobV9tcV9oYW5kbGUgKmVycm9yX21xX2hhbmRsZTsKKworCWRzbV9zZWdtZW50ICpkc21fc2Vn OworCisJLyoKKwkgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgd29ya2VyIGlzIGF2YWlsYWJsZSB0 byBiZSB1c2VkIGZvciBwYXJhbGxlbCBhcHBseQorCSAqIHRyYW5zYWN0aW9uPworCSAqLworCWJv b2wJCWluX3VzZTsKKworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsKK30gUGFy YWxsZWxBcHBseVdvcmtlckluZm87CisKIC8qIE1haW4gbWVtb3J5IGNvbnRleHQgZm9yIGFwcGx5 IHdvcmtlci4gUGVybWFuZW50IGR1cmluZyB3b3JrZXIgbGlmZXRpbWUuICovCiBleHRlcm4gUEdE TExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseUNvbnRleHQ7CiAKK2V4dGVybiBQR0RMTElNUE9S VCBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQ7CisKK2V4dGVybiBQR0RMTElNUE9S VCBFcnJvckNvbnRleHRDYWxsYmFjayAqYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjazsKK2V4dGVy biBQR0RMTElNUE9SVCBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tf YXJnOworCitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBNeVN1YnNjcmlwdGlvblZhbGlkOworCitl eHRlcm4gUEdETExJTVBPUlQgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFNo YXJlZDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIExpc3QgKnN1YnhhY3RsaXN0OworCiAvKiBsaWJw cXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBzdHJ1Y3QgV2FsUmVj ZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJXYWxSY3ZDb25uOwogCkBAIC03OSwxOCArMTY5LDIyIEBA IGV4dGVybiBQR0RMTElNUE9SVCBTdWJzY3JpcHRpb24gKk15U3Vic2NyaXB0aW9uOwogZXh0ZXJu IFBHRExMSU1QT1JUIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlcjsKIAogZXh0 ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5fcmVtb3RlX3RyYW5zYWN0aW9uOworZXh0ZXJuIFBHRExM SU1QT1JUIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpzdHJlYW1fYXBwbHlfd29ya2VyOwogCiBl eHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpOwogZXh0ZXJuIExv Z2ljYWxSZXBXb3JrZXIgKmxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVs aWQsCiAJCQkJCQkJCQkJCQlib29sIG9ubHlfcnVubmluZyk7CiBleHRlcm4gTGlzdCAqbG9naWNh bHJlcF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZyk7Ci1leHRlcm4g dm9pZCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3Qg Y2hhciAqc3VibmFtZSwKLQkJCQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVsaWQpOworZXh0ZXJu IGJvb2wgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0 IGNoYXIgKnN1Ym5hbWUsCisJCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkLAorCQkJCQkJ CQkJIGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dv cmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBf d29ya2VyX3N0b3BfYnlfc2xvdChpbnQgc2xvdF9ubywgdWludDE2IGdlbmVyYXRpb24pOwogZXh0 ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsK IGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cF9wdHIoTG9naWNhbFJlcFdvcmtl ciAqd29ya2VyKTsKIAogZXh0ZXJuIGludAlsb2dpY2FscmVwX3N5bmNfd29ya2VyX2NvdW50KE9p ZCBzdWJpZCk7CitleHRlcm4gaW50CWxvZ2ljYWxyZXBfcGFyYWxsZWxfYXBwbHlfd29ya2VyX2Nv dW50KE9pZCBzdWJpZCk7CiAKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvclRh Ymxlc3luYyhPaWQgc3Vib2lkLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJCSAgY2hhciAqb3JpZ2lu bmFtZSwgU2l6ZSBzem9yZ25hbWUpOwpAQCAtMTAzLDEwICsxOTcsNTAgQEAgZXh0ZXJuIHZvaWQg cHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2 b2lkIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMoRGF0dW0gYXJnLCBpbnQgY2FjaGVp ZCwKIAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7CiAKK2V4dGVybiB2b2lkIGFwcGx5X2Rp c3BhdGNoKFN0cmluZ0luZm8gcyk7CisKK2V4dGVybiB2b2lkIEluaXRpYWxpemVBcHBseVdvcmtl cih2b2lkKTsKKworLyogRnVuY3Rpb24gZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCitleHRl cm4gdm9pZCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOworCisvKiBQYXJhbGxlbCBh cHBseSB3b3JrZXIgc2V0dXAgYW5kIGludGVyYWN0aW9ucyAqLworZXh0ZXJuIHZvaWQgcGFyYWxs ZWxfYXBwbHlfc3RhcnRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqcGFyYWxsZWxfYXBwbHlfZmluZF93b3JrZXIoVHJhbnNhY3Rpb25J ZCB4aWQpOworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfc2V0X2luX3hhY3QoUGFyYWxsZWxB cHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKKwkJCQkJCQkJCSAgIGJvb2wgaW5feGFjdCk7Citl eHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9mcmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8sCisJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gdm9p ZCBwYXJhbGxlbF9hcHBseV93YWl0X2Zvcl94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8pOworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsCisJCQkJCQkJCQkgY29uc3Qg dm9pZCAqZGF0YSk7CisKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3N1YnhhY3RfaW5mb19h ZGQoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCwgVHJhbnNhY3Rpb25JZCB0b3BfeGlkKTsKK2V4 dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJv cnREYXRhICphYm9ydF9kYXRhKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3NhdmVwb2lu dF9uYW1lKE9pZCBzdWJvaWQsIE9pZCByZWxpZCwKKwkJCQkJCQkJCQkgIGNoYXIgKnNwbmFtZSwg U2l6ZSBzenNwKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fc2V0dXAo dm9pZCk7CitleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3Jlc2V0KHZvaWQp OworCisjZGVmaW5lIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpICh3b3JrZXItPmFwcGx5 X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkKKwogc3RhdGljIGlubGluZSBib29sCiBhbV90YWJs ZXN5bmNfd29ya2VyKHZvaWQpCiB7CiAJcmV0dXJuIE9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29y a2VyLT5yZWxpZCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fbGVhZGVyX2FwcGx5X3dv cmtlcih2b2lkKQoreworCXJldHVybiAoIU9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29ya2VyLT5y ZWxpZCkgJiYKKwkJCSFpc1BhcmFsbGVsQXBwbHlXb3JrZXIoTXlMb2dpY2FsUmVwV29ya2VyKSk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKHZvaWQp Cit7CisJcmV0dXJuIGlzUGFyYWxsZWxBcHBseVdvcmtlcihNeUxvZ2ljYWxSZXBXb3JrZXIpOwor fQorCiAjZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j c2lnbmFsLmgKaW5kZXggZWU2MzY5MDBmMy4uOTNhNTFmNDI1NCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j c2lnbmFsLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJR19XQUxTTkRf SU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRvd24g ICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8K IAlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBt ZW1vcnkgY29udGV4dHMgKi8KKwlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsIC8qIE1l c3NhZ2UgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCiAKIAkvKiBSZWNvdmVyeSBjb25m bGljdCByZWFzb25zICovCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSwKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL3dhaXRfZXZlbnQuaAppbmRleCA2ZjJkNTYxMmUwLi5iMmNkZDU1NGUxIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv d2FpdF9ldmVudC5oCkBAIC0xMDUsNiArMTA1LDcgQEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVO VF9IQVNIX0dST1dfQlVDS0VUU19BTExPQ0FURSwKIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNL RVRTX0VMRUNULAogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQsCisJV0FJ VF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5U X0xPR0lDQUxfU1lOQ19EQVRBLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5H RSwKIAlXQUlUX0VWRU5UX01RX0lOVEVSTkFMLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dWJzY3JpcHRpb24ub3V0CmluZGV4IGVmMGViZjk2YjkuLjk5YjllODY3ZTQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAgLTIxNyw5ICsyMTcsOSBAQCBB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7 CiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKLS0tIGZhaWwg LSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCistLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUg Ym9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRl c3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSBmb28pOwotRVJST1I6ICBz dHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlCitFUlJPUjogIHN0cmVhbWluZyByZXF1 aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgInBhcmFsbGVsIgogLS0gbm93IGl0IHdvcmtzCiBDUkVB VEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNl LCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdBUk5JTkc6ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2NyaWJl ZCwgeW91IHdpbGwgaGF2ZSB0byBydW4gQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBV QkxJQ0FUSU9OIHRvIHN1YnNjcmliZSB0aGUgdGFibGVzCkBAIC0yMzAsNiArMjMwLDE0IEBAIFdB Uk5JTkc6ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2NyaWJlZCwgeW91IHdpbGwgaGF2ZSB0byBydW4g QUxURVIgU1VCU0NSSVBUSU9OIC4uCiAgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHQgICAgICAgICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAK K0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBwYXJh bGxlbCk7CitcZFJzKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcCAgICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKygxIHJvdykKKwogQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IGZhbHNlKTsKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsK IFxkUnMrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbAppbmRleCA0NDI1ZmFmYzQ2 Li5lZDE0OGU0YmQ0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRp b24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKQEAgLTE1 Niw3ICsxNTYsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xv dF9uYW1lID0gTk9ORSk7CiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKIAot LS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4KKy0tIGZhaWwgLSBzdHJlYW1pbmcg bXVzdCBiZSBib29sZWFuIG9yICdwYXJhbGxlbCcKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElD QVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IGZvbyk7CiAK IC0tIG5vdyBpdCB3b3JrcwpAQCAtMTY0LDYgKzE2NCwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qn IFBVQgogCiBcZFJzKwogCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo c3RyZWFtaW5nID0gcGFyYWxsZWwpOworCitcZFJzKworCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogCmRpZmYgLS1naXQgYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CmluZGV4IDViM2IzMDU5NjMuLmQyMDVhZWQwODIgMTAwNjQ0Ci0tLSBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CkBAIC0xNDcxLDYgKzE0NzEsNyBAQCBMb2dpY2FsUmVwUmVsSWQKIExvZ2ljYWxS ZXBSZWxNYXBFbnRyeQogTG9naWNhbFJlcFJlbGF0aW9uCiBMb2dpY2FsUmVwUm9sbGJhY2tQcmVw YXJlZFR4bkRhdGEKK0xvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKIExvZ2ljYWxSZXBUdXBsZURh dGEKIExvZ2ljYWxSZXBUeXAKIExvZ2ljYWxSZXBXb3JrZXIKQEAgLTE2NjIsNiArMTY2Myw5IEBA IE92ZXJyaWRlU3RhY2tFbnRyeQogT3ZlcnJpZGluZ0tpbmQKIFBBQ0VfSEVBREVSCiBQQUNMCitQ YXJhbGxlbEFwcGx5V29ya2VyRW50cnkKK1BhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCitQYXJhbGxl bEFwcGx5V29ya2VyU2hhcmVkCiBQQVRICiBQQk9PTAogUEN0eHRIYW5kbGUKQEAgLTI3ODMsNiAr Mjc4Nyw3IEBAIFRyYW5zYWN0aW9uU3RtdEtpbmQKIFRyYW5zZm9ybUluZm8KIFRyYW5zZm9ybUpz b25TdHJpbmdWYWx1ZXNTdGF0ZQogVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZQorVHJhbnNBcHBseUFj dGlvbgogVHJnbUFyYwogVHJnbUFyY0luZm8KIFRyZ21Cb3VuZAotLSAKMi4yMy4wLndpbmRvd3Mu MQoK --_006_OS3PR01MB6275F4A7CA186412E2FF2ED29E529OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v34-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v34-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v34-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=76275; creation-date="Mon, 26 Sep 2022 03:09:00 GMT"; modification-date="Mon, 26 Sep 2022 03:09:52 GMT" Content-Transfer-Encoding: base64 RnJvbSA3MmUxOTY3MGE5YjFkYzc0OTcwYWEwMjBjMzY4OTJlYTg0MjA0MzJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MzQg Mi81XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgMjMyICsrKysr LS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgfCAxNDMg KysrLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsICAgICB8IDIy MSArKysrLS0tCiAuLi4vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgICAgICAgICAgICAg fCAyMzMgKysrKystLS0KIC4uLi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgICAg ICAgICB8IDEzNCArKysrLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRl LnBsICAgIHwgMzk0ICsrKysrKysrLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhh c2Vfc3RyZWFtLnBsICAgICB8IDU0MCArKysrKysrKysrKy0tLS0tLS0KIDcgZmlsZXMgY2hhbmdl ZCwgMTI1MiBpbnNlcnRpb25zKCspLCA2NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxNV9zdHJlYW0ucGwKaW5kZXggY2JhYTMyN2U0NC4uNjVmNDNmMDg4MSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTQ5IEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9 CisJICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQn OworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1 bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJl YW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3Ig dGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRl c3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2Yg dHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KKwlteSAkaW4gID0g Jyc7CisJbXkgJG91dCA9ICcnOworCisJbXkgJG9mZnNldCA9IDA7CisKKwlteSAkdGltZXIgPSBJ UEM6OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVs dCk7CisKKwlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCisJCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKwkjIElm ICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVl ZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2lu ZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERF QlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJi b3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEi KTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCisJJGluIC49IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwor CVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7 CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJ TjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOworCVxx CisJfTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwg c28gaWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zm c2V0LCAkaXNfcGFyYWxsZWwpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8 MzMzNCksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsK KworCSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBT RVQgKGJpbmFyeSA9IG9uKSIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJF R0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJz Y3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg2 NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnKTsKKworCSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVt bnMgb24gdGhlIHN1YnNjcmliZXIsCisJIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhh dCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMgdG8g ZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCisJIyBwcm9wZXJs eSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRp bWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkpOworCisJIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisKKwkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxf bG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2 NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEn KTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNl dCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNz YWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KK30KKwog IyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQo YWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTgwLDEwIEBAICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0 YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1p bmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFw X3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBw bmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAt NDksODIgKzE5NiwyNSBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIp LCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIElu dGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0Ig bGltaXQuCi1teSAkaW4gID0gJyc7Ci1teSAkb3V0ID0gJyc7Ci0KLW15ICR0aW1lciA9IElQQzo6 UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsK LQotbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBc JGluLCBcJG91dCwgJHRpbWVyLAotCW9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0KLSRpbiAuPSBxewot QkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOwotfTsKLSRoLT5wdW1wX25iOwotCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7Ci1E RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gNTAwMDsKLUNPTU1JVDsKLX0pOwotCi0kaW4g Lj0gcXsKLUNPTU1JVDsKLVxxCi19OwotJGgtPmZpbmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0aGUg bmV4dCB0ZXN0IGZhaWwsIHNvIGlnbm9yZSB0aGVtIGhlcmUKLQotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8 MzMzNCksICdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKK3Rl c3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs IDApOwogCi0jIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQotJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3Vi IFNFVCAoYmluYXJ5ID0gb24pIik7Ci0KLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91 Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkp OwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0pOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1 bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2Nh bCBkZWZhdWx0cycpOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcn OyIKKyk7CiAKLSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMg b24gdGhlIHN1YnNjcmliZXIsCi0jIHVwZGF0ZSBwdWJsaXNoZXIsIGFuZCBjaGVjayB0aGF0IHN1 YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQKLSMgdmFsdWVzLiBUaGlzIGlzIHRvIGVuc3Vy ZSB0aGF0IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaGF2ZQotIyBwcm9wZXJseSBhZnRl ciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBvY2gnOjp0aW1lc3RhbXB0 eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyciCi0pOwotJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQp Iik7CisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxl bCwgYmluYXJ5ID0gb2ZmKSIpOwogCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igor ICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJl c3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiCi0pOwotaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLAotCSdjaGVjayBl eHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAk bm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCmluZGV4IGJjMGE5Y2QwNTMu LjAyMGFkOTZkMWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJl YW1fc3VieGFjdC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1 YnhhY3QucGwKQEAgLTgsNiArOCw5NCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNr IHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNj ZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNr X3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFy YWxsZWwpID0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2ZpbmlzaGVkIHByb2Nl c3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgkaXNfcGFyYWxs ZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21l c3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24g dGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIg c28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5k CisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15 ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxs ZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1l dGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0 IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkg d29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBh Ym91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3Bh cmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3Jp YmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIEluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0IgbGltaXQuCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygzLCA1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAxMDAwKSBzKGkpOworCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEw MDEsIDE1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ U0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgMjAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLCAy NTAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1J VDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3Bh cmFsbGVsKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAorCQkn Y2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5k IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVhbnVw IHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9z aXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIp OworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNo ZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5n ID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMjUsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxF IHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElP TiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSw0MSArMTQxLDI2IEBA IG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFs IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgSW5zZXJ0LCB1cGRhdGUgYW5k IGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoICAgIDMsICA1 MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5U IHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg1MDEsICAxMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgIDE1MDApIHMoaSk7Ci1V UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHMzOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxNTAxLCAgMjAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsIDI1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3 fDE2NjcpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1p bmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7 CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcg c3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBU SU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNo ZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJT Q1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1 Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3 X3N0cmVhbV9kZGwucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5w bAppbmRleCA4NjZmMTUxMmU0Li5kMmNjNDZkMTgyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTdfc3RyZWFtX2RkbC5wbApAQCAtOCw2ICs4LDEzOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNv bXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2Vy Lgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zm c2V0LCAkaXNfcGFyYWxsZWwpID0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2Zp bmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlm ICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIv JHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxs IHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgor IyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJl YW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVh bWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgYSBzbWFsbCAo bm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8g dGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFi IEFERCBDT0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7CisJQ09NTUlUOworCX0pOworCisJIyBJZiAi c3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQg dG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcg YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJV RzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9z aXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7 CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3Jp YmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9n ZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1M CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNSwgMTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQg Q09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDIw MDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRy YW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDIwMDEsIG1kNSgyMDAxOjp0ZXh0KSwgLTIwMDEsIDIqMjAwMSk7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgQUREIENPTFVNTiBlIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICgyMDAyLCBtZDUoMjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIw MDIpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkKSwgY291bnQoZSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIwMDJ8 MTk5OXwxMDAyfDEpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4g c3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycK KwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIEEgbGFyZ2UgKHN0cmVhbWVk KSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3Jt ZWQKKwkjIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEg c2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAorCSMgdGhlIG5leHQgdHJhbnNhY3Rpb24gaGFzIHRv IHNlbmQgdGhlIHNjaGVtYSBhZ2Fpbi4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJ J3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAw MCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOworCUNPTU1J VDsKKwl9KTsKKworCSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1l ZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCisJIyBzZW5kIHRoZSBzY2hlbWEgYWdh aW4gdG8gcmVmbGVjdCB0aGUgbGFzdCBjb2x1bW4gYWRkZWQgaW4gdGhlIHByZXZpb3VzIHRlc3Qu CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwg LTMqaSwgNCppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKKwlDT01NSVQ7 CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJh bGxlbCk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNv dW50KGYpIEZST00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg1MDA1fDUwMDJ8NDAw NXwzMDA0fDUpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgZm9yIGJv dGggc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucycKKwkpOworCisJIyBD bGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bv c3RncmVzJywgcXsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVS IFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGMsIERST1AgQ09MVU1OIGQsIERST1AgQ09MVU1O IGUsIERST1AgQ09MVU1OIGY7CisJfSk7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19w YXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNj cmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9k ZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicp OwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsK QEAgLTM3LDYgKzE2OSwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAog bXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25u c3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAo c3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDc3ICsxODUsMjYgQEAgbXkgJHJlc3VsdCA9CiAJ IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKIGlzKCRyZXN1bHQsIHFxKDJ8MHwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXInKTsKIAotIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9u IHdpdGggRERMIGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRl eHQpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZFUE9JTlQg czE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOwot Q09NTUlUOwotfSk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBh bmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVH SU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg1LCAxMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQURE IENPTFVNTiBkIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAw MCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNh Y3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBt ZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQURE IENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVF UyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKLUNPTU1J VDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwot Ci0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3Rf dGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwxKSwKLQknY2hlY2sgZGF0YSB3 YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBBIGxhcmdlIChzdHJl YW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVy Zm9ybWVkCi0jIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hl bWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAotIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMg dG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDAp IHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOwotQ09NTUlUOwot fSk7Ci0KLSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhp cyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCi0jIHNlbmQgdGhlIHNjaGVtYSBhZ2FpbiB0byBy ZWZsZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJldmlvdXMgdGVzdC4KLSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0g ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIi KTsKLWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCi0JJ2NoZWNrIGRhdGEg d2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0cmVhbWluZyBhbmQgbm9uLXN0cmVh bWluZyB0cmFuc2FjdGlvbnMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsK KworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9y IGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0 ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXIt PnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAppbmRleCA1NTFmMTZkZjZkLi43 NTJlNzlhMDI5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFt X3N1YnhhY3RfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVh bV9zdWJ4YWN0X2Fib3J0LnBsCkBAIC04LDYgKzgsMTQ1IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7 CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29t cGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZz ZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9CisJICAnZmlu aXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJaWYg KCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8k cGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisj IHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFt aW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3RyZWFt aW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hl Y2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9n IG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5Lgor CWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK KworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xM QkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUw MSwxMDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsK KwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJUk9MTEJBQ0sgVE8g czI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygyMDAxLDI1MDApIHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygyNTAxLDMwMDApIHMoaSk7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAwKSBz KGkpOworCVNBVkVQT0lOVCBzNTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDM1MDEsNDAwMCkgcyhpKTsKKwlDT01NSVQ7 CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJh bGxlbCk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7 CisJaXMoJHJlc3VsdCwgcXEoMjAwMHwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2lu dCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxh cmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQg b2Ygb3JkZXIKKwkjIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNDAwMSw0NTAw KSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKKwlTQVZF UE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg2MDAxLDY1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMzOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoNzAwMSw3NTAwKSBzKGkpOworCVJFTEVBU0UgczI7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDAp IHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJJHJlc3VsdCA9CisJ ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCks CisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3Jp YmVyJyk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zm c2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVk KSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIHJvbGxiYWNrCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg4NTAxLDkwMDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTAwMSw5NTAwKSBz KGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDApIHMoaSk7CisJUk9MTEJB Q0s7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7 CisJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZsZWN0ZWQg b24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJ eworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJ CSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxv YWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVy ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1 Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNiw2ICsx NzUsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRF IFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1l ID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNV QlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNh dGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9 IG9uKSIKICk7CkBAIC00OCw4MSArMTkxLDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCksICdj aGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFyZ2Ug KHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo Myw1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwotU0FW RVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczM7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDE1MDEsMjAwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMyOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDAp IHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUwMSwzMDAwKSBzKGkpOwotU0FWRVBP SU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczU7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDM1MDEsNDAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0 ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjAwMHwwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8g c2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29sdW1ucyBj b250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdf c3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIKLSMgc3VidHJhbnNhY3Rp b24gUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDQwMDEsNDUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNTAwMSw1NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg2MDAxLDY1MDApIHMo aSk7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDcwMDEsNzUwMCkgcyhpKTsKLVJFTEVBU0UgczI7 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDgwMDEsODUwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMxOwotQ09NTUlUOwotfSk7 Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1 bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyNTAw fDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJz Y3JpYmVyJyk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmli ZXIgcmVjZWl2aW5nIHJvbGxiYWNrCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDg1MDEsOTAwMCkgcyhpKTsKLVNBVkVQT0lOVCBz MTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoOTAwMSw5NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5NTAx LDEwMDAwKSBzKGkpOwotUk9MTEJBQ0s7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVm bGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFy YWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJF IGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIK KyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byBy ZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRu b2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9kZV9z dWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKaW5k ZXggNGQ3ZGE4MmI3YS4uOWQ2NzhiMzk5OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCkBAIC05LDYgKzksOTEg QEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVh bWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5 IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAo JG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9IEBfOworCW15ICRwYXJh bGxlbF9tZXNzYWdlID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBm aW5pc2ggY29tbWFuZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7CisJfQor fQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJl bGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJl IHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwg Y2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkgJG9mZnNl dCA9IDA7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBh cmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3 YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8g bG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0 aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1 YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVz c2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9u IHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7CisJQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVN TiBkIElOVDsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMo aSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKKwlTQVZFUE9JTlQg czM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIq aSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJQUxURVIgVEFC TEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYzsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDUwMSwxMDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgxMDAwfDUwMCksCisJ CSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVy IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2xl YW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsIHF7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBU QUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCX0pOworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5Lgor CWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9k ZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdw dWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICds b2dpY2FsJyk7CkBAIC0zNyw2ICsxMjIsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3Rf dGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJs aXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBf cHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSwzNSArMTM4LDI2IEBAIG15ICRy ZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlz KCRyZXN1bHQsIHFxKDJ8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJz Y3JpYmVyJyk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1M IGFuZCBST0xMQkFDS3MKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBB REQgQ09MVU1OIGMgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMo aSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOwotU0FWRVBPSU5UIHMy OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3Rh YiBBREQgQ09MVU1OIGUgSU5UOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxNTAxLDIwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwot Uk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwotQ09NTUlUOwotfSk7 Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1 bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgxMDAw fDUwMCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1 YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDAp OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQ VElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlz aGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQg b3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VC U0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9w dWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy Ml90d29waGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3Bo YXNlX2Nhc2NhZGUucGwKaW5kZXggN2E3OTdmMzdiYS4uNDI2NWQzYjNmNSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKQEAgLTExLDYgKzEx LDIzOSBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUg c3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0 ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworewor CW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkc3RyZWFtaW5nX21vZGUpID0gQF87CisJ bXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5z YWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFs bGVsJykKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxf bWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1v biB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFtZXRlcgor IyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBh bmQgc3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJ bXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICRz dHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlteSAkb2Zmc2V0X0IgPSAwOworCW15ICRvZmZz ZXRfQyA9IDA7CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi KTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIK KwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKworCSMg U2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJJG5vZGVfQi0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IK KwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRub2RlX0MtPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCisJ CVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBXYWl0IGZvciBzdWJz Y3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0EtPnBvbGxfcXVlcnlf dW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBw Z19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVf QicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUg d2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRp bCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBB TkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0 aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBEYXRh IGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBjb21taXQg cHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2Ny aWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxs ZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBw cmVwYXJlZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9v ayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUK KwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQor CXsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21l c3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9kZV9DLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsK KwkJJG5vZGVfQy0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZy b20gbm93IG9uLgorCSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxvZ2ZpbGU7CisJJG9mZnNldF9D ID0gLXMgJG5vZGVfQy0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBl bm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJIyBUaGVuIDJQQyBQUkVQQVJF CisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRu b2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9CLCAkb2Zm c2V0X0IsICRzdHJlYW1pbmdfbW9kZSk7CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0MsICRv ZmZzZXRfQywgJHN0cmVhbWluZ19tb2RlKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0 YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKKwlteSAkcmVzdWx0ID0KKwkgICRub2Rl X0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9B LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5z ZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNv bHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKKwkpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks CisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMs IGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgY2hlY2sg dGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0 ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQ T0lOVC4KKwkjIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJv d3MuCisJIyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgorCSMgMi4gUmVjb3JkIGEgU0FWRVBPSU5U LgorCSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyA0LiBEbyByb2xsYmFjayB0 byBTQVZFUE9JTlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCisJIyA1LiBUaGVuIENP TU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlz IGFib3J0ZWQgbGVhdmluZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAg MSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRl IHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQor CSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K Kwkkb2Zmc2V0X0IgPSAtcyAkbm9kZV9CLT5sb2dmaWxlOworCSRvZmZzZXRfQyA9IC1zICRub2Rl X0MtPmxvZ2ZpbGU7CisKKwkjIDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8g U0FWRVBPSU5UCisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUJFR0lO OworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKKwkJU0FW RVBPSU5UIHNwX2lubmVyOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwX2lu bmVyOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7CisJCSIpOworCisJJG5vZGVfQS0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0MpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0IsICRvZmZzZXRfQiwg JHN0cmVhbWluZ19tb2RlKTsKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfQywgJG9mZnNldF9D LCAkc3RyZWFtaW5nX21vZGUpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgcHJl cGFyZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNj cmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOwor CisJIyAyUEMgQ09NTUlUCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQg UFJFUEFSRUQgJ291dGVyJzsiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hl Y2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0 ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0Mt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBv biBzdWJzY3JpYmVyIEMnKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJz Y3JpYmVyKHMpLgorCSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChwcmlvciB0byB0aGUgU0FWRVBP SU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCisJIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBi ZSBjb21taXR0ZWQuCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOwor CWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2Ny aWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAn Um93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9 ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g dGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93 cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisJJHJlc3VsdCA9CisJ ICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRl c3RfdGFiOyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNl bnQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2Rl X0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+ IDI7Iik7CisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9C LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJv c2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9C LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJu aW5nIik7CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0Mt PnJlbG9hZDsKKwl9Cit9CisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2V0 dXAgYSBjYXNjYWRlIG9mIHB1Yi9zdWIgbm9kZXMuCiAjIG5vZGVfQSAtPiBub2RlX0IgLT4gbm9k ZV9DCkBAIC0yNjAsMTYwICs0OTMsMTUgQEAgaXMoJHJlc3VsdCwgcXEoMjEpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CiAjIDJQQyArIFNUUkVBTUlORyBU RVNUUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotbXkgJG9sZHBpZF9CID0gJG5vZGVfQS0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7Iik7Ci1teSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiKTsKLQotIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uIChzdHJlYW1pbmcgPSBvbikKLQot JG5vZGVfQi0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1Yl9CCi0JU0VUIChzdHJlYW1pbmcgPSBvbik7Iik7Ci0kbm9kZV9DLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MKLQlTRVQgKHN0 cmVhbWluZyA9IG9uKSIpOwotCi0jIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlzaCBpbml0 aWFsaXphdGlvbgotCi0kbm9kZV9BLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0Z3JlcycsICIK LQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcn OyIKLSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFy dCI7Ci0kbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1Qg cGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKLSkgb3Ig ZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7Ci0KLSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1J VCBQUkVQQVJFRC4KLSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4K LSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyBy ZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIocykgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3Vn aCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgVGhlbiAyUEMgUFJFUEFSRQotJG5v ZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1 MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBB UkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfQS0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0 cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCit0ZXN0 X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFt ZV9DLCAnb24nKTsKIAotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgcHJlcGFyZWQg b24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOwot JHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5z YWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIDJQQyBDT01NSVQKLSRu b2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBh cmVkX3RhYic7Iik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0k bm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gd2FzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0gJG5vZGVf Qi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwz MzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJl ciBCLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJwotKTsKLSRyZXN1bHQg PSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMz NHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyIEMsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCi0pOwot Ci0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMp Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRu b2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotIyBUZXN0IDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5U LgotIyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgot IyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgotIyAyLiBSZWNvcmQgYSBTQVZFUE9JTlQuCi0jIDMu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyA0LiBEbyByb2xsYmFjayB0byBTQVZFUE9J TlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCi0jIDUuIFRoZW4gQ09NTUlUIFBSRVBB UkVELgotIwotIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlzIGFib3J0ZWQgbGVh dmluZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAgMSkuCi0jIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNl cHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX0EtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0K LSMgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQKLSRub2Rl X0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7Ci0JU0FWRVBPSU5UIHNwX2lubmVyOwotCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0g MDsKLQlST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BfaW5uZXI7Ci0JUFJFUEFSRSBUUkFOU0FDVElP TiAnb3V0ZXInOwotCSIpOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0Ip OwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGUg dHJhbnNhY3Rpb24gc3RhdGUgcHJlcGFyZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0g ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdf cHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHBy ZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXIgQycpOwotCi0jIDJQQyBDT01NSVQKLSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi Q09NTUlUIFBSRVBBUkVEICdvdXRlcic7Iik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0j IGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCi0kcmVz dWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2Ny aWJlciBDJyk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJzY3JpYmVyKHMp LgotIyBBbGwgdGhlIHN0cmVhbWVkIGRhdGEgKHByaW9yIHRvIHRoZSBTQVZFUE9JTlQpIHNob3Vs ZCBiZSByb2xsZWQgYmFjay4KLSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVk LgotJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7Ci1pcygkcmVzdWx0LCBx cSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOwotJHJl c3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWI7Iik7Ci1pcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBw cmVzZW50IG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zv b2Jhcic7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50 IG9uIHN1YnNjcmliZXIgQycpOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7Ci1pcygkcmVzdWx0LCBxcSgz KSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcg bW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFwcG5hbWVfQiwgJGFw cG5hbWVfQywgJ3BhcmFsbGVsJyk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ICMgY2hlY2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIz X3R3b3BoYXNlX3N0cmVhbS5wbAppbmRleCA5YjQ1NDEwNmJkLi44MmI1ZTZjMTJlIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKQEAgLTgsNiAr OCwzMDggQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhl IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9y dGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sK KwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9IEBfOworCW15 ICRwYXJhbGxlbF9tZXNzYWdlID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFuc2Fj dGlvbiBmaW5pc2ggY29tbWFuZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7 CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2gg YXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUg Y2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFy YWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkg JG9mZnNldCA9IDA7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0 IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBh cyBhIDJQQyB0cmFuc2FjdGlvbi4KKwkjIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgorCSMK KwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRl ciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgSWYg InN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVk IHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCB1c2lu ZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERF QlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJi b3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEi KTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCisJIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl cgorCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhl IDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs IHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVw YXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVk IHN0YXRlIG9uIHN1YnNjcmliZXIKKwlteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94 YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9u IHN1YnNjcmliZXInKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAn dGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQg b24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dz IGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEg Y29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4g VGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBz dWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBEbyBy b2xsYmFjayBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcg b25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBi ZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1 YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJv d3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwor CQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNB Q1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2Ny aWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlv biBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBp cyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFi b3J0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiUk9MTEJB Q0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24g aXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKKwkJJ1Jv d3MgaW5zZXJ0ZWQgYnkgMlBDIGFyZSByb2xsZWQgYmFjaywgbGVhdmluZyBvbmx5IHRoZSBvcmln aW5hbCAyIHJvd3MnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJz Y3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBDaGVjayB0 aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0 YXJ0LgorCSMgMS4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNl ZWQgdGhlIDY0a0IgbGltaXQuCisJIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUg MlBDIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkjIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJl c3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIworCSMgRXhw ZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBj b21taXQuCisJIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9y ZXN0YXJ0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9w cmVwYXJlZF90YWInO30pOworCisJJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRpYXRlJyk7 CisJJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKworCSRub2RlX3B1Ymxpc2hl ci0+c3RhcnQ7CisJJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKwljaGVja19wYXJhbGxlbF9s b2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY29tbWl0 IHBvc3QgdGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBh cmUgdmlzaWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBS T0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mg d2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFt ZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlz IGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgor CSMKKwkjIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyByb3dz IG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KKwkj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRh dGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg YSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkk b2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBpbnNlcnQs IHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4K Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47 CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7 CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hl Y2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7 CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vi c2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwor CisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhl IDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9s ZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBw cmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBD IHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hl Y2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIsCisJIyBidXQgdGhl IGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3RpbGwgd2FzIHJlcGxpY2F0ZWQKKwkk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJ aXMoJHJlc3VsdCwgcXEoM3wzfDMpLAorCQknY2hlY2sgdGhlIG91dHNpZGUgaW5zZXJ0IHdhcyBj b3BpZWQgdG8gc3Vic2NyaWJlcicpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9u IHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIERv IElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIENPTU1JVCBQUkVQQVJFRC4KKwkj IDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQg b24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4g QSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgor CSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgMlBDIGRhdGEg KyB0aGUgZXh0cmEgcm93IGFyZSBvbiB0aGUgc3Vic2NyaWJlcgorCSMgKHRoZSAzMzM0ICsgaW5z ZXJ0ZWQgMSA9IDMzMzUpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMg Rmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNh dGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxl OworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhj ZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rl c3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBw cmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3 ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0 cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0 IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdm b29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0 X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1KSwKKwkJJ1Jvd3MgaW5z ZXJ0ZWQgYnkgMlBDIChhcyB3ZWxsIGFzIG91dHNpZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwor CSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVz dWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisK KwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUg bG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJl ci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9 IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwpAQCAtNDgsNiArMzUwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0 X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAog CSdwb3N0Z3JlcycsICIKIAlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKQEAgLTY0LDIzNiAr MzcwLDMwIEBAIG15ICR0d29waGFzZV9xdWVyeSA9CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1 ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICR0d29waGFzZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMg Y29waWVkIHRvIHN1YnNjcmliZXIKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15 ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwog aXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8g c3Vic2NyaWJlcicpOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3Qg MlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMg YSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBF eHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhl IGNvbW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5n KCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIGNo ZWNrIHRoYXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCi0jIEluc2VydCwgdXBk YXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rp b24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRz IGNvbW1pdHRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09N TUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks Ci0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFu ZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJh bGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlk ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK LSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBk ZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIu Ci0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVw YXJlZC4KLSMKLSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdp bmFsIDIgcm93cy4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwg ZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0J REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNB Q1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHBy ZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9u IHN1YnNjcmliZXInKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVz dF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJz Y3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJl IHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0 cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVj b2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQg ZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhlbiBz ZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0j IDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNj cmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQg c3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJF R0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7 Ci0KLSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVy LT5zdG9wKCdpbW1lZGlhdGUnKTsKLQotJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1 YnNjcmliZXItPnN0YXJ0OwotCi0jIGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJl cGFyZWRfdGFiJzsiKTsKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQotJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMz MzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNj cmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOwotCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJF UEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVk IGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlz IGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBST0xMQkFD SyBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcg b25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0 ZWQgMSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0 ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2gg cm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9O ICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJl ZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyJyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRz aWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24g c3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBz ZXBhcmF0ZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ci0K LSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsi KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwKLSMgYnV0IHRo ZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVkCi0k cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlz KCRyZXN1bHQsIHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29waWVk IHRvIHN1YnNjcmliZXInKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3Jp YmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5TRVJUIGFm dGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgotIyAxLiBUYWJsZSBp cyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmli ZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cg SU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8g YSBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cg YXJlIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4K LSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBk YXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+ IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRv IGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdw b3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3Rf cHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRl IG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1p cygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIn KTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2Yg dGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBo b2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJl IHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMg dHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3Vi IFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1 KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9j YWwgZGVmYXVsdHMnCi0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5 IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cAotLSAKMi4yMy4wLndp bmRvd3MuMQoK --_006_OS3PR01MB6275F4A7CA186412E2FF2ED29E529OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v34-0003-Add-some-checks-before-using-parallel-apply-work.patch" Content-Description: v34-0003-Add-some-checks-before-using-parallel-apply-work.patch Content-Disposition: attachment; filename="v34-0003-Add-some-checks-before-using-parallel-apply-work.patch"; size=51441; creation-date="Mon, 26 Sep 2022 03:09:00 GMT"; modification-date="Mon, 26 Sep 2022 03:09:53 GMT" Content-Transfer-Encoding: base64 RnJvbSA4MDdjNjNiMDcwNTRiNGJkNDhiMzNjYzRiNzE2NWQ3YTkwZDNlZDI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMTAgQXVnIDIwMjIgMjA6Mzc6MjIgKzA4MDAKU3ViamVjdDogW1BBVENI IHYzNCAzLzVdIEFkZCBzb21lIGNoZWNrcyBiZWZvcmUgdXNpbmcgcGFyYWxsZWwgYXBwbHkgd29y a2VyIHRvCiBhcHBseSBjaGFuZ2VzCgpzdHJlYW1pbmc9cGFyYWxsZWwgbW9kZSBoYXMgdHdvIHJl cXVpcmVtZW50czoKMSkgVGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZSBz dWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28gYmUgdGhlCnVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1 Ymxpc2hlci1zaWRlOwoyKSBUaGVyZSBjYW5ub3QgYmUgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rp b25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZQpyZXBsaWNhdGVkIHRhYmxlLiBMb29rIGZv ciBmdW5jdGlvbnMgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CiogYS4gVHJpZ2dlciBmdW5jdGlv bnMKKiBiLiBDb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucyBhbmQgZG9tYWluIGNvbnN0 cmFpbnRzCiogYy4gQ29uc3RyYWludCBleHByZXNzaW9ucwpJdCBpcyBiZXR0ZXIgdG8gb25seSBj aGVjayB0aGUgZm9yZWlnbiBrZXkgd2hlbiBpdCBpcyBkZXRlY3RlZCB0aGF0IHRoZQpwdWJsaXNo ZXIgZG9lcyBub3QgaGF2ZSB0aGUgZm9yZWlnbiBrZXkgYW5kIHRoZSBzdWJzY3JpYmVyIGRvZXMu IEJ1dCB0aGlzCnJlcXVpcmVzIHRoZSBwdWJsaXNoZXIgdG8gc2VuZCBtb3JlIGluZm9ybWF0aW9u LiBJbiBhZGRpdGlvbiwgc2luY2UgZm9yZWlnbiBrZXkKZG9lcyBub3QgdGFrZSBlZmZlY3QgaW4g dGhlIHN1YnNjcmliZXIncyBhcHBseSB3b3JrZXIgYnkgZGVmYXVsdCwgaXQgc2VlbXMgdGhhdApm b3JlaWduIGtleSBkb2VzIG5vdCBoaXQgdGhpcyBFUlJPUiBmcmVxdWVudGx5LiBTbywgb25seSBw ZXJmb3JtIGEgc2ltcGxlIGNoZWNrCmJhc2VkIG9uIHRoZSBzdWJzY3JpYmVyIHNjaGVtYSB3aGVu IGNoZWNraW5nIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gdWVzZCBieQp0cmlnZ2VyLgoKV2l0aG91 dCB0aGVzZSBzYWZldHkgY2hlY2tzLCB0aGUgZm9sbG93aW5nIHNjZW5hcmlvIG1heSBvY2N1cjoK VGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBsb2NrcyBhIHJvdyB3aGVuIHByb2Nlc3NpbmcgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sCmFmdGVyIHRoYXQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg dHJpZXMgdG8gbG9jayB0aGUgc2FtZSByb3cgd2hlbiBwcm9jZXNzaW5nCmFub3RoZXIgbm9uLXN0 cmVhbWVkIHRyYW5zYWN0aW9uLiBBdCB0aGlzIHRpbWUsIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IHdhaXRzCmZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlIGFuZCB0aGUg bG9jayB0byBiZSByZWxlYXNlZCwgaXQgd29uJ3QKc2VuZCBzdWJzZXF1ZW50IGRhdGEgb2YgdGhl IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyOwp0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIHdhaXRzIHRvIHJlY2VpdmUgdGhlIHJlc3Qgb2Ygc3RyZWFt aW5nIHRyYW5zYWN0aW9uCmFuZCBjYW4ndCBmaW5pc2ggdGhpcyB0cmFuc2FjdGlvbi4gTm93IGEg ZGVhZGxvY2sgaGFzIG9jY3VycmVkLCBzbyBib3RoIHdvcmtlcnMKd2lsbCB3YWl0IGluZGVmaW5p dGVseS4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAg fCAgIDUgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwg IDQyICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgfCAg ODYgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgICAgfCAx OTQgKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwg IDI0ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAgICAgfCAg MTcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oICAgICB8ICAxNSAr CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgIDIgKwog c3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaCAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMSArCiBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsICAgICAgICAgfCAgIDkgKy0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCB8ICAgOSArLQogLi4uL3N1 YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsICAgIHwgICA4ICsKIC4uLi9zdWJz Y3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsICAgICB8ICAgOSArLQogLi4uL3QvMDMy X3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwgICAgICAgIHwgNjE2ICsrKysrKysrKysrKysr KysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAx ICsKIDE4IGZpbGVzIGNoYW5nZWQsIDEwMjcgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWlu Z19wYXJhbGxlbF9zYWZldHkucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlv bi5zZ21sCmluZGV4IDg1OTJiOTVjN2EuLjdmMjhhZThhMGMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNDUsNiArMjQ1LDExIEBAIENSRUFURSBTVUJT Q1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1l PC9yZXBsYWNlYWJsCiAgICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLiBOb3RlIHRo YXQgaWYgYW4gZXJyb3IgaGFwcGVucyB3aGVuCiAgICAgICAgICAgYXBwbHlpbmcgY2hhbmdlcyBp biBhIHBhcmFsbGVsIHdvcmtlciwgdGhlIGZpbmlzaCBMU04gb2YgdGhlCiAgICAgICAgICAgcmVt b3RlIHRyYW5zYWN0aW9uIG1pZ2h0IG5vdCBiZSByZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4K KyAgICAgICAgICBUaGVyZSBhcmUgdHdvIHByZXJlcXVpc2l0ZXMgZm9yIHVzaW5nIDxsaXRlcmFs PnBhcmFsbGVsPC9saXRlcmFsPgorICAgICAgICAgIG1vZGU6IDEpIHRoZSB1bmlxdWUgY29sdW1u IGluIHRoZSB0YWJsZSBvbiB0aGUgc3Vic2NyaWJlci1zaWRlIG11c3QKKyAgICAgICAgICBhbHNv IGJlIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXItc2lkZTsgMikgdGhlcmUgY2Fu bm90IGJlCisgICAgICAgICAgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zIHVzZWQgYnkgdGhl IHN1YnNjcmliZXItc2lkZSByZXBsaWNhdGVkCisgICAgICAgICAgdGFibGUuCiAgICAgICAgICA8 L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3Jr ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtl ci5jCmluZGV4IDkxODc1YzJjY2YuLmJiZDQwYjQwYzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0xMDk0LDMg KzEwOTQsNDUgQEAgcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCh2b2lkKQogCWlmIChz dGFydGVkX3R4KQogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIH0KKworLyoKKyAqIENo ZWNrIGlmIGNoYW5nZXMgb24gdGhpcyByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCB1c2luZyBhIHBh cmFsbGVsIGFwcGx5CisgKiB3b3JrZXIuCisgKgorICogQWx0aG91Z2ggdGhlIGNvbW1pdCBvcmRl ciBpcyBtYWludGFpbmVkIGJ5IG9ubHkgYWxsb3dpbmcgb25lIHByb2Nlc3MgdG8KKyAqIGNvbW1p dCBhdCBhIHRpbWUsIHRoZSBhY2Nlc3Mgb3JkZXIgdG8gdGhlIHJlbGF0aW9uIGhhcyBjaGFuZ2Vk LiBUaGlzIGNvdWxkCisgKiBjYXVzZSB1bmV4cGVjdGVkIHByb2JsZW1zIHdoZW4gYXBwbHlpbmcg dHJhbnNhY3Rpb25zIHVzaW5nIGEgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlciBpZiB0aGUgdW5p cXVlIGNvbHVtbiBvbiB0aGUgcmVwbGljYXRlZCB0YWJsZSBpcworICogaW5jb25zaXN0ZW50IHdp dGggdGhlIHB1Ymxpc2hlci1zaWRlLCBvciBpZiB0aGUgcmVsYXRpb24gY29udGFpbnMKKyAqIG5v bi1pbW11dGFibGUgZnVuY3Rpb25zLgorICovCit2b2lkCitwYXJhbGxlbF9hcHBseV9yZWxhdGlv bl9jaGVjayhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKK3sKKwkvKiBTa2lwIGlmIG5vdCB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCisJaWYgKCFhbV9wYXJhbGxlbF9hcHBseV93b3Jr ZXIoKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBQYXJ0aXRpb24gdGFibGUgY2hlY2tzIGFyZSBk b25lIGxhdGVyIGluIGZ1bmN0aW9uCisJICogYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcuCisJ ICovCisJaWYgKHJlbC0+bG9jYWxyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJ VElPTkVEX1RBQkxFKQorCQlyZXR1cm47CisKKwlpZiAocmVsLT5wYXJhbGxlbF9hcHBseV9zYWZl dHkgPT0gUEFSQUxMRUxfQVBQTFlfU0FGRVRZX1VOS05PV04pCisJCWxvZ2ljYWxyZXBfcmVsX21h cmtfcGFyYWxsZWxfYXBwbHkocmVsKTsKKworCWlmIChyZWwtPnBhcmFsbGVsX2FwcGx5X3NhZmV0 eSA9PSBQQVJBTExFTF9BUFBMWV9VTlNBRkUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1z ZygiY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIHVzaW5nICIKKwkJ CQkJCSJzdWJzY3JpcHRpb24gcGFyYW1ldGVyICVzIiwKKwkJCQkJCXJlbC0+cmVtb3RlcmVsLm5z cG5hbWUsIHJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkic3RyZWFtaW5nID0gcGFyYWxs ZWwiKSwKKwkJCQkgZXJyZGV0YWlsKCJUaGUgdW5pcXVlIGNvbHVtbiBvbiBzdWJzY3JpYmVyIGlz IG5vdCB0aGUgdW5pcXVlICIKKwkJCQkJCSAgICJjb2x1bW4gb24gcHVibGlzaGVyIG9yIHRoZXJl IGlzIGF0IGxlYXN0IG9uZSAiCisJCQkJCQkgICAibm9uLWltbXV0YWJsZSBmdW5jdGlvbi4iKSwK KwkJCQkgZXJyaGludCgiUGxlYXNlIGNoYW5nZSB0byB1c2Ugc3Vic2NyaXB0aW9uIHBhcmFtZXRl ciAlcy4iLAorCQkJCQkJICJzdHJlYW1pbmcgPSBvbiIpKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggYTZlZmRiYWM2Yy4uMGVjNDJkNzU0MiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtMjMsNyArMjMsOCBAQAogLyoK ICAqIFByb3RvY29sIG1lc3NhZ2UgZmxhZ3MuCiAgKi8KLSNkZWZpbmUgTE9HSUNBTFJFUF9JU19S RVBMSUNBX0lERU5USVRZIDEKKyNkZWZpbmUgQVRUUl9JU19SRVBMSUNBX0lERU5USVRZCSgxIDw8 IDApCisjZGVmaW5lIEFUVFJfSVNfVU5JUVVFCQkJCSgxIDw8IDEpCiAKICNkZWZpbmUgTUVTU0FH RV9UUkFOU0FDVElPTkFMICgxPDwwKQogI2RlZmluZSBUUlVOQ0FURV9DQVNDQURFCQkoMTw8MCkK QEAgLTQwLDYgKzQxLDY2IEBAIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfcmVhZF90dXBsZShTdHJp bmdJbmZvIGluLCBMb2dpY2FsUmVwVHVwbGVEYXRhICp0dXBsZSk7CiBzdGF0aWMgdm9pZCBsb2dp Y2FscmVwX3dyaXRlX25hbWVzcGFjZShTdHJpbmdJbmZvIG91dCwgT2lkIG5zcGlkKTsKIHN0YXRp YyBjb25zdCBjaGFyICpsb2dpY2FscmVwX3JlYWRfbmFtZXNwYWNlKFN0cmluZ0luZm8gaW4pOwog CisvKgorICogUmVsYXRpb25HZXRVbmlxdWVLZXlCaXRtYXAgLS0gZ2V0IGEgYml0bWFwIG9mIHVu aXF1ZSBhdHRyaWJ1dGUgbnVtYmVycworICoKKyAqIFRoaXMgaXMgc2ltaWxhciB0byBSZWxhdGlv bkdldElkZW50aXR5S2V5Qml0bWFwKCksIGJ1dCByZXR1cm5zIGEgYml0bWFwIG9mCisgKiBpbmRl eCBhdHRyaWJ1dGUgbnVtYmVycyBmb3IgYWxsIHVuaXF1ZSBpbmRleGVzLgorICovCitzdGF0aWMg Qml0bWFwc2V0ICoKK1JlbGF0aW9uR2V0VW5pcXVlS2V5Qml0bWFwKFJlbGF0aW9uIHJlbCkKK3sK KwlMaXN0CSAgICppbmRleG9pZGxpc3QgPSBOSUw7CisJTGlzdENlbGwgICAqaW5kZXhvaWRzY2Fu OworCUJpdG1hcHNldCAgKmF0dHVuaXF1ZSA9IE5VTEw7CisKKwlpZiAoIXJlbC0+cmRfcmVsLT5y ZWxoYXNpbmRleCkKKwkJcmV0dXJuIE5VTEw7CisKKwlpbmRleG9pZGxpc3QgPSBSZWxhdGlvbkdl dEluZGV4TGlzdChyZWwpOworCisJZm9yZWFjaChpbmRleG9pZHNjYW4sIGluZGV4b2lkbGlzdCkK Kwl7CisJCU9pZAkJCWluZGV4b2lkID0gbGZpcnN0X29pZChpbmRleG9pZHNjYW4pOworCQlSZWxh dGlvbglpbmRleFJlbDsKKwkJaW50CQkJaTsKKworCQkvKiBMb29rIHVwIHRoZSBkZXNjcmlwdGlv biBmb3IgaW5kZXggKi8KKwkJaW5kZXhSZWwgPSBSZWxhdGlvbklkR2V0UmVsYXRpb24oaW5kZXhv aWQpOworCisJCWlmICghUmVsYXRpb25Jc1ZhbGlkKGluZGV4UmVsKSkKKwkJCWVsb2coRVJST1Is ICJjb3VsZCBub3Qgb3BlbiByZWxhdGlvbiB3aXRoIE9JRCAldSIsIGluZGV4b2lkKTsKKworCQlp ZiAoIWluZGV4UmVsLT5yZF9pbmRleC0+aW5kaXN1bmlxdWUpCisJCXsKKwkJCVJlbGF0aW9uQ2xv c2UoaW5kZXhSZWwpOworCQkJY29udGludWU7CisJCX0KKworCQkvKiBBZGQgcmVmZXJlbmNlZCBh dHRyaWJ1dGVzIHRvIGF0dHVuaXF1ZSAqLworCQlmb3IgKGkgPSAwOyBpIDwgaW5kZXhSZWwtPnJk X2luZGV4LT5pbmRuYXR0czsgaSsrKQorCQl7CisJCQlpbnQJCQlhdHRybnVtID0gaW5kZXhSZWwt PnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOworCisJCQkvKgorCQkJICogV2UgZG9uJ3QgaW5j bHVkZSBub24ta2V5IGNvbHVtbnMgaW50byBhdHR1bmlxdWUgYml0bWFwcy4gU2VlCisJCQkgKiBS ZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcC4KKwkJCSAqLworCQkJaWYgKGF0dHJudW0gIT0gMCkK KwkJCXsKKwkJCQlpZiAoaSA8IGluZGV4UmVsLT5yZF9pbmRleC0+aW5kbmtleWF0dHMgJiYKKwkJ CQkJIWJtc19pc19tZW1iZXIoYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVO dW1iZXIsIGF0dHVuaXF1ZSkpCisJCQkJCWF0dHVuaXF1ZSA9IGJtc19hZGRfbWVtYmVyKGF0dHVu aXF1ZSwKKwkJCQkJCQkJCQkJICAgYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1 dGVOdW1iZXIpOworCQkJfQorCQl9CisJCVJlbGF0aW9uQ2xvc2UoaW5kZXhSZWwpOworCX0KKwls aXN0X2ZyZWUoaW5kZXhvaWRsaXN0KTsKKworCXJldHVybiBhdHR1bmlxdWU7Cit9CisKIC8qCiAg KiBDaGVjayBpZiBhIGNvbHVtbiBpcyBjb3ZlcmVkIGJ5IGEgY29sdW1uIGxpc3QuCiAgKgpAQCAt OTMzLDcgKzk5NCw4IEBAIGxvZ2ljYWxyZXBfd3JpdGVfYXR0cnMoU3RyaW5nSW5mbyBvdXQsIFJl bGF0aW9uIHJlbCwgQml0bWFwc2V0ICpjb2x1bW5zKQogCVR1cGxlRGVzYwlkZXNjOwogCWludAkJ CWk7CiAJdWludDE2CQlubGl2ZWF0dHMgPSAwOwotCUJpdG1hcHNldCAgKmlkYXR0cnMgPSBOVUxM OworCUJpdG1hcHNldCAgKmlkYXR0cnMgPSBOVUxMLAorCQkJICAgKmF0dHVuaXF1ZSA9IE5VTEw7 CiAJYm9vbAkJcmVwbGlkZW50ZnVsbDsKIAogCWRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7 CkBAIC05NTgsNiArMTAyMCw5IEBAIGxvZ2ljYWxyZXBfd3JpdGVfYXR0cnMoU3RyaW5nSW5mbyBv dXQsIFJlbGF0aW9uIHJlbCwgQml0bWFwc2V0ICpjb2x1bW5zKQogCWlmICghcmVwbGlkZW50ZnVs bCkKIAkJaWRhdHRycyA9IFJlbGF0aW9uR2V0SWRlbnRpdHlLZXlCaXRtYXAocmVsKTsKIAorCS8q IGZldGNoIGJpdG1hcCBvZiBVTklRVUUgYXR0cmlidXRlcyAqLworCWF0dHVuaXF1ZSA9IFJlbGF0 aW9uR2V0VW5pcXVlS2V5Qml0bWFwKHJlbCk7CisKIAkvKiBzZW5kIHRoZSBhdHRyaWJ1dGVzICov CiAJZm9yIChpID0gMDsgaSA8IGRlc2MtPm5hdHRzOyBpKyspCiAJewpAQCAtOTc0LDcgKzEwMzks MTEgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVs LCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJCWlmIChyZXBsaWRlbnRmdWxsIHx8CiAJCQlibXNfaXNf bWVtYmVyKGF0dC0+YXR0bnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwK IAkJCQkJCSAgaWRhdHRycykpCi0JCQlmbGFncyB8PSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURF TlRJVFk7CisJCQlmbGFncyB8PSBBVFRSX0lTX1JFUExJQ0FfSURFTlRJVFk7CisKKwkJaWYgKGJt c19pc19tZW1iZXIoYXR0LT5hdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVt YmVyLAorCQkJCQkJICBhdHR1bmlxdWUpKQorCQkJZmxhZ3MgfD0gQVRUUl9JU19VTklRVUU7CiAK IAkJcHFfc2VuZGJ5dGUob3V0LCBmbGFncyk7CiAKQEAgLTk4OSw2ICsxMDU4LDcgQEAgbG9naWNh bHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRtYXBzZXQg KmNvbHVtbnMpCiAJfQogCiAJYm1zX2ZyZWUoaWRhdHRycyk7CisJYm1zX2ZyZWUoYXR0dW5pcXVl KTsKIH0KIAogLyoKQEAgLTEwMDEsNyArMTA3MSw4IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhT dHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkKIAlpbnQJCQluYXR0czsKIAlj aGFyCSAgKiphdHRuYW1lczsKIAlPaWQJCSAgICphdHR0eXBzOwotCUJpdG1hcHNldCAgKmF0dGtl eXMgPSBOVUxMOworCUJpdG1hcHNldCAgKmF0dGtleXMgPSBOVUxMLAorCQkJICAgKmF0dHVuaXF1 ZSA9IE5VTEw7CiAKIAluYXR0cyA9IHBxX2dldG1zZ2ludChpbiwgMik7CiAJYXR0bmFtZXMgPSBw YWxsb2MobmF0dHMgKiBzaXplb2YoY2hhciAqKSk7CkBAIC0xMDE0LDkgKzEwODUsMTMgQEAgbG9n aWNhbHJlcF9yZWFkX2F0dHJzKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVs KQogCiAJCS8qIENoZWNrIGZvciByZXBsaWNhIGlkZW50aXR5IGNvbHVtbiAqLwogCQlmbGFncyA9 IHBxX2dldG1zZ2J5dGUoaW4pOwotCQlpZiAoZmxhZ3MgJiBMT0dJQ0FMUkVQX0lTX1JFUExJQ0Ff SURFTlRJVFkpCisJCWlmIChmbGFncyAmIEFUVFJfSVNfUkVQTElDQV9JREVOVElUWSkKIAkJCWF0 dGtleXMgPSBibXNfYWRkX21lbWJlcihhdHRrZXlzLCBpKTsKIAorCQkvKiBDaGVjayBmb3IgdW5p cXVlIGNvbHVtbiAqLworCQlpZiAoZmxhZ3MgJiBBVFRSX0lTX1VOSVFVRSkKKwkJCWF0dHVuaXF1 ZSA9IGJtc19hZGRfbWVtYmVyKGF0dHVuaXF1ZSwgaSk7CisKIAkJLyogYXR0cmlidXRlIG5hbWUg Ki8KIAkJYXR0bmFtZXNbaV0gPSBwc3RyZHVwKHBxX2dldG1zZ3N0cmluZyhpbikpOwogCkBAIC0x MDMwLDYgKzExMDUsNyBAQCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBpbiwgTG9n aWNhbFJlcFJlbGF0aW9uICpyZWwpCiAJcmVsLT5hdHRuYW1lcyA9IGF0dG5hbWVzOwogCXJlbC0+ YXR0dHlwcyA9IGF0dHR5cHM7CiAJcmVsLT5hdHRrZXlzID0gYXR0a2V5czsKKwlyZWwtPmF0dHVu aXF1ZSA9IGF0dHVuaXF1ZTsKIAlyZWwtPm5hdHRzID0gbmF0dHM7CiB9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwppbmRleCBlOTg5MDQ3NjgxLi41MTUxMzRj YmQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9u LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCkBAIC0x OSwxMiArMTksMTkgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdHJp Z2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibm9kZXMv bWFrZWZ1bmNzLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dv cmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNp bmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKIAog CiBzdGF0aWMgTWVtb3J5Q29udGV4dCBMb2dpY2FsUmVwUmVsTWFwQ29udGV4dCA9IE5VTEw7CkBA IC05MSw2ICs5OCwyMyBAQCBsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiKERhdHVtIGFy ZywgT2lkIHJlbG9pZCkKIAl9CiB9CiAKKy8qCisgKiBTeXNjYWNoZSBpbnZhbGlkYXRpb24gY2Fs bGJhY2sgdG8gcmVzZXQgcGFyYWxsZWxfYXBwbHlfc2FmZXR5IGZsYWcuCisgKi8KK3N0YXRpYyB2 b2lkCitsb2dpY2FscmVwX3JlbG1hcF9yZXNldF9wYXJhbGxlbF9jYihEYXR1bSBhcmcsIGludCBj YWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQoreworCUhBU0hfU0VRX1NUQVRVUyBoYXNoX3NlcTsK KwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5OworCisJaWYgKExvZ2ljYWxSZXBSZWxNYXAg PT0gTlVMTCkKKwkJcmV0dXJuOworCisJaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIExvZ2ljYWxS ZXBSZWxNYXApOworCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkg IT0gTlVMTCkKKwkJZW50cnktPnBhcmFsbGVsX2FwcGx5X3NhZmV0eSA9IFBBUkFMTEVMX0FQUExZ X1NBRkVUWV9VTktOT1dOOworfQorCiAvKgogICogSW5pdGlhbGl6ZSB0aGUgcmVsYXRpb24gbWFw IGNhY2hlLgogICovCkBAIC0xMTYsNiArMTQwLDEyIEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2luaXQo dm9pZCkKIAkvKiBXYXRjaCBmb3IgaW52YWxpZGF0aW9uIGV2ZW50cy4gKi8KIAlDYWNoZVJlZ2lz dGVyUmVsY2FjaGVDYWxsYmFjayhsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiLAogCQkJ CQkJCQkgIChEYXR1bSkgMCk7CisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soUFJPQ09J RCwKKwkJCQkJCQkJICBsb2dpY2FscmVwX3JlbG1hcF9yZXNldF9wYXJhbGxlbF9jYiwKKwkJCQkJ CQkJICAoRGF0dW0pIDApOworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFRZUEVPSUQs CisJCQkJCQkJCSAgbG9naWNhbHJlcF9yZWxtYXBfcmVzZXRfcGFyYWxsZWxfY2IsCisJCQkJCQkJ CSAgKERhdHVtKSAwKTsKIH0KIAogLyoKQEAgLTE0Miw2ICsxNzIsNyBAQCBsb2dpY2FscmVwX3Jl bG1hcF9mcmVlX2VudHJ5KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiAJCXBmcmVlKHJl bW90ZXJlbC0+YXR0dHlwcyk7CiAJfQogCWJtc19mcmVlKHJlbW90ZXJlbC0+YXR0a2V5cyk7CisJ Ym1zX2ZyZWUocmVtb3RlcmVsLT5hdHR1bmlxdWUpOwogCiAJaWYgKGVudHJ5LT5hdHRybWFwKQog CQlmcmVlX2F0dHJtYXAoZW50cnktPmF0dHJtYXApOwpAQCAtMTkwLDYgKzIyMSw3IEBAIGxvZ2lj YWxyZXBfcmVsbWFwX3VwZGF0ZShMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90ZXJlbCkKIAl9CiAJ ZW50cnktPnJlbW90ZXJlbC5yZXBsaWRlbnQgPSByZW1vdGVyZWwtPnJlcGxpZGVudDsKIAllbnRy eS0+cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dGtleXMpOworCWVu dHJ5LT5yZW1vdGVyZWwuYXR0dW5pcXVlID0gYm1zX2NvcHkocmVtb3RlcmVsLT5hdHR1bmlxdWUp OwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogfQogCkBAIC0zMTAsNiArMzQyLDE2 MSBAQCBsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJsZShMb2dpY2FsUmVwUmVsTWFwRW50cnkg KmVudHJ5KQogCX0KIH0KIAorLyoKKyAqIENoZWNrIGlmIGNoYW5nZXMgb24gb25lIHJlbGF0aW9u IGNhbiBiZSBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciBhbmQgYXNz aWduIHRoZSAncGFyYWxsZWxfYXBwbHlfc2FmZXR5JyBmbGFnLgorICoKKyAqIFRoZXJlIGFyZSB0 d28gcmVxdWlyZW1lbnRzIGZvciBhcHBseWluZyBjaGFuZ2VzIHVzaW5nIGEgcGFyYWxsZWwgYXBw bHkKKyAqIHdvcmtlcjogMSkgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHRhYmxlIG9uIHRoZSBz dWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28KKyAqIGJlIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRo ZSBwdWJsaXNoZXItc2lkZTsgMikgdGhlcmUgY2Fubm90IGJlIGFueQorICogbm9uLWltbXV0YWJs ZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQgdGFibGUu CisgKgorICogV2l0aG91dCB0aGVzZSBzYWZldHkgY2hlY2tzLCB0aGUgZm9sbG93aW5nIHNjZW5h cmlvIG1heSBvY2N1cjogVGhlIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIgbG9ja3MgYSByb3cg d2hlbiBwcm9jZXNzaW5nIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBhZnRlcgorICogdGhhdCB0 aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0cmllcyB0byBsb2NrIHRoZSBzYW1lIHJvdyB3aGVuIHBy b2Nlc3NpbmcKKyAqIGFub3RoZXIgbm9uLXN0cmVhbWVkIHRyYW5zYWN0aW9uLiBBdCB0aGlzIHRp bWUsIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgKiB3YWl0cyBmb3IgdGhlIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiB0byBjb21wbGV0ZSBhbmQgdGhlIGxvY2sgdG8gYmUgcmVsZWFzZWQsCisgKiBp dCB3b24ndCBzZW5kIHN1YnNlcXVlbnQgZGF0YSBvZiB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHRvIHRoZSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyOyB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyIHdhaXRzIHRvIHJlY2VpdmUgdGhlIHJlc3Qgb2YKKyAqIHN0cmVhbWluZyB0cmFuc2FjdGlv biBhbmQgY2FuJ3QgZmluaXNoIHRoaXMgdHJhbnNhY3Rpb24uIE5vdyBhIGRlYWRsb2NrIGhhcwor ICogb2NjdXJyZWQsIHNvIGJvdGggd29ya2VycyB3aWxsIHdhaXQgaW5kZWZpbml0ZWx5LgorICoK KyAqIFdlIGp1c3QgbWFyayB0aGUgcmVsYXRpb24gZW50cnkgYXMgJ1BBUkFMTEVMX0FQUExZX1VO U0FGRScgaGVyZSBpZiBjaGFuZ2VzCisgKiBvbiBvbmUgcmVsYXRpb24gY2FuIG5vdCBiZSBhcHBs aWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFuZCBsZWF2ZQorICogaXQgdG8gcGFy YWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2soKSB0byB0aHJvdyB0aGUgYWN0dWFsIGVycm9yIGlm IG5lZWRlZC4KKyAqLwordm9pZAorbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBseShM b2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQoreworCUJpdG1hcHNldCAgKnVrZXk7CisJaW50 CQkJaTsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlpbnQJCQlhdHRudW07CisKKwkvKiBTa2lwIGlm IG5vdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCisJaWYgKCFhbV9wYXJhbGxlbF9hcHBs eV93b3JrZXIoKSkKKwkJcmV0dXJuOworCisJLyogSW5pdGlhbGl6ZSB0aGUgZmxhZy4gKi8KKwll bnRyeS0+cGFyYWxsZWxfYXBwbHlfc2FmZXR5ID0gUEFSQUxMRUxfQVBQTFlfU0FGRVRZX1VOS05P V047CisKKwkvKgorCSAqIEZpcnN0LCBjaGVjayBpZiB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUg cmVsYXRpb24gb24gdGhlCisJICogc3Vic2NyaWJlci1zaWRlIGlzIGFsc28gdGhlIHVuaXF1ZSBj b2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlLgorCSAqLworCXVrZXkgPSBSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcChlbnRyeS0+bG9jYWxyZWwsCisJCQkJCQkJCQkgIElOREVYX0FUVFJfQklU TUFQX0tFWSk7CisKKwlpZiAodWtleSkKKwl7CisJCWkgPSAtMTsKKwkJd2hpbGUgKChpID0gYm1z X25leHRfbWVtYmVyKHVrZXksIGkpKSA+PSAwKQorCQl7CisJCQlhdHRudW0gPSBBdHRyTnVtYmVy R2V0QXR0ck9mZnNldChpICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisK KwkJCWlmIChlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dIDwgMCB8fAorCQkJCSFibXNf aXNfbWVtYmVyKGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG51bV0sIGVudHJ5LT5yZW1vdGVy ZWwuYXR0dW5pcXVlKSkKKwkJCXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHlfc2FmZXR5ID0g UEFSQUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCWJtc19mcmVlKHVrZXkpOworCQkJCXJldHVybjsK KwkJCX0KKwkJfQorCisJCWJtc19mcmVlKHVrZXkpOworCX0KKworCS8qCisJICogVGhlbiwgY2hl Y2sgaWYgdGhlcmUgaXMgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb24gdXNlZCBieSB0aGUKKwkg KiBzdWJzY3JpYmVyLXNpZGUgcmVsYXRpb24uIExvb2sgZm9yIGZ1bmN0aW9ucyBpbiB0aGUgZm9s bG93aW5nIHBsYWNlczoKKwkgKiBhLiB0cmlnZ2VyIGZ1bmN0aW9uczsgYi4gQ29sdW1uIGRlZmF1 bHQgdmFsdWUgZXhwcmVzc2lvbnMgYW5kIGRvbWFpbgorCSAqIGNvbnN0cmFpbnRzOyBjLiBDb25z dHJhaW50IGV4cHJlc3Npb25zOworCSAqLworCS8qIENoZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9u cy4gKi8KKwlpZiAoZW50cnktPmxvY2FscmVsLT50cmlnZGVzYyAhPSBOVUxMKQorCXsKKwkJZm9y IChpID0gMDsgaSA8IGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKysp CisJCXsKKwkJCVRyaWdnZXIgICAgKnRyaWcgPSBlbnRyeS0+bG9jYWxyZWwtPnRyaWdkZXNjLT50 cmlnZ2VycyArIGk7CisKKwkJCWlmICh0cmlnLT50Z2VuYWJsZWQgIT0gVFJJR0dFUl9GSVJFU19B TFdBWVMgJiYKKwkJCQl0cmlnLT50Z2VuYWJsZWQgIT0gVFJJR0dFUl9GSVJFU19PTl9SRVBMSUNB KQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAoZnVuY192b2xhdGlsZSh0cmlnLT50Z2ZvaWQpICE9 IFBST1ZPTEFUSUxFX0lNTVVUQUJMRSkKKwkJCXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHlf c2FmZXR5ID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQor CX0KKworCS8qIENoZWNrIHRoZSBjb2x1bW5zLiAqLworCXR1cGRlc2MgPSBSZWxhdGlvbkdldERl c2NyKGVudHJ5LT5sb2NhbHJlbCk7CisJZm9yIChhdHRudW0gPSAwOyBhdHRudW0gPCB0dXBkZXNj LT5uYXR0czsgYXR0bnVtKyspCisJeworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURl c2NBdHRyKHR1cGRlc2MsIGF0dG51bSk7CisJCU5vZGUJICAgKmRlZmF1bHRleHByID0gTlVMTDsK KworCQkvKiBXZSBkb24ndCBjaGVjayBkcm9wcGVkIG9yIGdlbmVyYXRlZCBhdHRyaWJ1dGVzICov CisJCWlmIChhdHQtPmF0dGlzZHJvcHBlZCB8fCBhdHQtPmF0dGdlbmVyYXRlZCkKKwkJCWNvbnRp bnVlOworCisJCWRlZmF1bHRleHByID0gYnVpbGRfY29sdW1uX2RlZmF1bHQoZW50cnktPmxvY2Fs cmVsLCBhdHRudW0gKyAxKTsKKwkJaWYgKGRlZmF1bHRleHByICYmIGNvbnRhaW5fbXV0YWJsZV9m dW5jdGlvbnMoZGVmYXVsdGV4cHIpKQorCQl7CisJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHlfc2Fm ZXR5ID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZFOworCQkJcmV0dXJuOworCQl9CisKKwkJLyoKKwkJ ICogSWYgdGhlIGNvbHVtbiBpcyBvZiBhIERPTUFJTiB0eXBlLCBkZXRlcm1pbmUgd2hldGhlciB0 aGF0IGRvbWFpbgorCQkgKiBoYXMgYW55IENIRUNLIGV4cHJlc3Npb25zIHRoYXQgYXJlIG5vdCBp bW11dGFibGUuCisJCSAqLworCQlpZiAoZ2V0X3R5cHR5cGUoYXR0LT5hdHR0eXBpZCkgPT0gVFlQ VFlQRV9ET01BSU4pCisJCXsKKwkJCUxpc3QJICAgKmRvbWFpbl9jb25zdHJhaW50czsKKwkJCUxp c3RDZWxsICAgKmxjOworCisJCQlkb21haW5fY29uc3RyYWludHMgPSBHZXREb21haW5Db25zdHJh aW50cyhhdHQtPmF0dHR5cGlkKTsKKworCQkJZm9yZWFjaChsYywgZG9tYWluX2NvbnN0cmFpbnRz KQorCQkJeworCQkJCURvbWFpbkNvbnN0cmFpbnRTdGF0ZSAqY29uID0gKERvbWFpbkNvbnN0cmFp bnRTdGF0ZSAqKSBsZmlyc3QobGMpOworCisJCQkJaWYgKGNvbi0+Y2hlY2tfZXhwciAmJiBjb250 YWluX211dGFibGVfZnVuY3Rpb25zKChOb2RlICopIGNvbi0+Y2hlY2tfZXhwcikpCisJCQkJewor CQkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHlfc2FmZXR5ID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZF OworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJLyogQ2hlY2sgdGhlIGNv bnN0cmFpbnRzLiAqLworCWlmICh0dXBkZXNjLT5jb25zdHIpCisJeworCQlDb25zdHJDaGVjayAq Y2hlY2sgPSB0dXBkZXNjLT5jb25zdHItPmNoZWNrOworCisJCS8qCisJCSAqIERldGVybWluZSBp ZiB0aGVyZSBhcmUgYW55IENIRUNLIGNvbnN0cmFpbnRzIHdoaWNoIGNvbnRhaW5zCisJCSAqIG5v bi1pbW11dGFibGUgZnVuY3Rpb24uCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgdHVwZGVzYy0+ Y29uc3RyLT5udW1fY2hlY2s7IGkrKykKKwkJeworCQkJRXhwcgkgICAqY2hlY2tfZXhwciA9IHN0 cmluZ1RvTm9kZShjaGVja1tpXS5jY2Jpbik7CisKKwkJCWlmIChjb250YWluX211dGFibGVfZnVu Y3Rpb25zKChOb2RlICopIGNoZWNrX2V4cHIpKQorCQkJeworCQkJCWVudHJ5LT5wYXJhbGxlbF9h cHBseV9zYWZldHkgPSBQQVJBTExFTF9BUFBMWV9VTlNBRkU7CisJCQkJcmV0dXJuOworCQkJfQor CQl9CisJfQorCisJZW50cnktPnBhcmFsbGVsX2FwcGx5X3NhZmV0eSA9IFBBUkFMTEVMX0FQUExZ X1NBRkU7Cit9CisKIC8qCiAgKiBPcGVuIHRoZSBsb2NhbCByZWxhdGlvbiBhc3NvY2lhdGVkIHdp dGggdGhlIHJlbW90ZSBvbmUuCiAgKgpAQCAtNDM4LDYgKzYyNSw5IEBAIGxvZ2ljYWxyZXBfcmVs X29wZW4oTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAkJICov CiAJCWxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKGVudHJ5KTsKIAorCQkvKiBTZXQgaWYg Y2hhbmdlcyBjb3VsZCBiZSBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICov CisJCWxvZ2ljYWxyZXBfcmVsX21hcmtfcGFyYWxsZWxfYXBwbHkoZW50cnkpOworCiAJCWVudHJ5 LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAl9CiAKQEAgLTY1Myw2ICs4NDMsNyBAQCBsb2dpY2Fs cmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcm9vdCwKIAkJfQogCQll bnRyeS0+cmVtb3RlcmVsLnJlcGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50OwogCQllbnRy eS0+cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dGtleXMpOworCQll bnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVl KTsKIAl9CiAKIAllbnRyeS0+bG9jYWxyZWwgPSBwYXJ0cmVsOwpAQCAtNjk2LDYgKzg4Nyw5IEBA IGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyb290LAog CS8qIFNldCBpZiB0aGUgdGFibGUncyByZXBsaWNhIGlkZW50aXR5IGlzIGVub3VnaCB0byBhcHBs eSB1cGRhdGUvZGVsZXRlLiAqLwogCWxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKGVudHJ5 KTsKIAorCS8qIFNldCBpZiBjaGFuZ2VzIGNvdWxkIGJlIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgKi8KKwlsb2dpY2FscmVwX3JlbF9tYXJrX3BhcmFsbGVsX2FwcGx5KGVu dHJ5KTsKKwogCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAogCS8qIHN0YXRlIGFuZCBz dGF0ZWxzbiBhcmUgbGVmdCBzZXQgdG8gMC4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDgyZTUwMTFmYzQuLjZjMGFhNjQwYzQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtOTIxLDYgKzkyMSw3 IEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUs CiAJbHJlbC0+YXR0bmFtZXMgPSBwYWxsb2MwKE1heFR1cGxlQXR0cmlidXRlTnVtYmVyICogc2l6 ZW9mKGNoYXIgKikpOwogCWxyZWwtPmF0dHR5cHMgPSBwYWxsb2MwKE1heFR1cGxlQXR0cmlidXRl TnVtYmVyICogc2l6ZW9mKE9pZCkpOwogCWxyZWwtPmF0dGtleXMgPSBOVUxMOworCWxyZWwtPmF0 dHVuaXF1ZSA9IE5VTEw7CiAKIAkvKgogCSAqIFN0b3JlIHRoZSBjb2x1bW5zIGFzIGEgbGlzdCBv ZiBuYW1lcy4gIElnbm9yZSB0aG9zZSB0aGF0IGFyZSBub3QKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDE2MjNjOWUyZmEuLjg4YTMxNDQ4NjIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMTUwMSw2ICsxNTAxLDE1IEBA IGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiAJCWNhc2UgVFJBTlNfTEVB REVSX1NFTkRfVE9fUEFSQUxMRUw6CiAJCQlBc3NlcnQod2luZm8pOwogCisJCQkvKgorCQkJICog VW5saWtlIHN0cmVhbV9jb21taXQsIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBoZXJlIGZvcgorCQkJ ICogc3RyZWFtX3N0b3AgdG8gZmluaXNoLiBBbGxvd2luZyB0aGUgb3RoZXIgdHJhbnNhY3Rpb24g dG8gYmUKKwkJCSAqIGFwcGxpZWQgYmVmb3JlIHN0cmVhbV9zdG9wIGlzIGZpbmlzaGVkIGNhbiBs ZWFkIHRvIGZhaWx1cmVzIGlmCisJCQkgKiB0aGUgdW5pcXVlIGluZGV4L2NvbnN0cmFpbnQgaXMg ZGlmZmVyZW50IGJldHdlZW4gcHVibGlzaGVyIGFuZAorCQkJICogc3Vic2NyaWJlci4gQnV0IGZv ciBzdWNoIGNhc2VzLCB3ZSBkb24ndCBhbGxvdyBzdHJlYW1lZAorCQkJICogdHJhbnNhY3Rpb25z IHRvIGJlIGFwcGxpZWQgaW4gcGFyYWxsZWwuIFNlZQorCQkJICogcGFyYWxsZWxfYXBwbHlfcmVs YXRpb25fY2hlY2suCisJCQkgKi8KIAkJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5mbywg cy0+bGVuLCBzLT5kYXRhKTsKIAogCQkJZWxvZyhERUJVRzEsICJhcHBsaWVkICV1IGNoYW5nZXMg aW4gdGhlIHN0cmVhbWluZyBjaHVuayIsIG5jaGFuZ2VzKTsKQEAgLTIxMDEsNiArMjExMCw4IEBA IGFwcGx5X2hhbmRsZV9pbnNlcnQoU3RyaW5nSW5mbyBzKQogCS8qIFNldCByZWxhdGlvbiBmb3Ig ZXJyb3IgY2FsbGJhY2sgKi8KIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcucmVsID0gcmVsOwog CisJcGFyYWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxpemUg dGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlv bihyZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yMjQ0LDYgKzIyNTUsOCBAQCBh cHBseV9oYW5kbGVfdXBkYXRlKFN0cmluZ0luZm8gcykKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8g dGhlIHVwZGF0ZS4gKi8KIAljaGVja19yZWxhdGlvbl91cGRhdGFibGUocmVsKTsKIAorCXBhcmFs bGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkvKiBJbml0aWFsaXplIHRoZSBleGVj dXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24ocmVsKTsK IAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjQxMiw2ICsyNDI1LDggQEAgYXBwbHlfaGFu ZGxlX2RlbGV0ZShTdHJpbmdJbmZvIHMpCiAJLyogQ2hlY2sgaWYgd2UgY2FuIGRvIHRoZSBkZWxl dGUuICovCiAJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHJlbCk7CiAKKwlwYXJhbGxlbF9hcHBs eV9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJLyogSW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3Rh dGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRl ID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTI1OTcsMTMgKzI2MTIsMTQgQEAgYXBwbHlfaGFuZGxlX3R1 cGxlX3JvdXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAl9CiAJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN0eCk7CiAKKwlwYXJ0X2VudHJ5ID0gbG9naWNhbHJlcF9wYXJ0aXRpb25f b3BlbihyZWxtYXBlbnRyeSwgcGFydHJlbCwKKwkJCQkJCQkJCQkgICBhdHRybWFwKTsKKwogCS8q IENoZWNrIGlmIHdlIGNhbiBkbyB0aGUgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0aGUgbGVhZiBwYXJ0 aXRpb24uICovCiAJaWYgKG9wZXJhdGlvbiA9PSBDTURfVVBEQVRFIHx8IG9wZXJhdGlvbiA9PSBD TURfREVMRVRFKQotCXsKLQkJcGFydF9lbnRyeSA9IGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4o cmVsbWFwZW50cnksIHBhcnRyZWwsCi0JCQkJCQkJCQkJCSAgIGF0dHJtYXApOwogCQljaGVja19y ZWxhdGlvbl91cGRhdGFibGUocGFydF9lbnRyeSk7Ci0JfQorCisJcGFyYWxsZWxfYXBwbHlfcmVs YXRpb25fY2hlY2socGFydF9lbnRyeSk7CiAKIAlzd2l0Y2ggKG9wZXJhdGlvbikKIAl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvdHlwY2FjaGUuYwppbmRleCA4MDhmOWViZDBkLi41MTFiMjNkMjYzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKQEAgLTI1NDAsNiArMjU0MCwyMyBAQCBjb21wYXJl X3ZhbHVlc19vZl9lbnVtKFR5cGVDYWNoZUVudHJ5ICp0Y2FjaGUsIE9pZCBhcmcxLCBPaWQgYXJn MikKIAkJcmV0dXJuIDA7CiB9CiAKKy8qCisgKiBHZXREb21haW5Db25zdHJhaW50cyAtLS0gZ2V0 IERvbWFpbkNvbnN0cmFpbnRTdGF0ZSBsaXN0IG9mIHNwZWNpZmllZCBkb21haW4gdHlwZQorICov CitMaXN0ICoKK0dldERvbWFpbkNvbnN0cmFpbnRzKE9pZCB0eXBlX2lkKQoreworCVR5cGVDYWNo ZUVudHJ5ICp0eXBlbnRyeTsKKwlMaXN0CSAgICpjb25zdHJhaW50cyA9IE5JTDsKKworCXR5cGVu dHJ5ID0gbG9va3VwX3R5cGVfY2FjaGUodHlwZV9pZCwgVFlQRUNBQ0hFX0RPTUFJTl9DT05TVFJf SU5GTyk7CisKKwlpZiAodHlwZW50cnktPmRvbWFpbkRhdGEgIT0gTlVMTCkKKwkJY29uc3RyYWlu dHMgPSB0eXBlbnRyeS0+ZG9tYWluRGF0YS0+Y29uc3RyYWludHM7CisKKwlyZXR1cm4gY29uc3Ry YWludHM7Cit9CisKIC8qCiAgKiBMb2FkIChvciByZS1sb2FkKSB0aGUgZW51bURhdGEgbWVtYmVy IG9mIHRoZSB0eXBjYWNoZSBlbnRyeS4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cHJvdG8uaAppbmRleCAxZGE3YjAxY2E2Li5kNGJjOTJjNWUyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2FscHJvdG8uaApAQCAtMTEzLDYgKzExMyw3IEBAIHR5cGVkZWYgc3RydWN0IExv Z2ljYWxSZXBSZWxhdGlvbgogCWNoYXIJCXJlcGxpZGVudDsJCS8qIHJlcGxpY2EgaWRlbnRpdHkg Ki8KIAljaGFyCQlyZWxraW5kOwkJLyogcmVtb3RlIHJlbGF0aW9uIGtpbmQgKi8KIAlCaXRtYXBz ZXQgICphdHRrZXlzOwkJLyogQml0bWFwIG9mIGtleSBjb2x1bW5zICovCisJQml0bWFwc2V0ICAq YXR0dW5pcXVlOwkJLyogQml0bWFwIG9mIHVuaXF1ZSBjb2x1bW5zICovCiB9IExvZ2ljYWxSZXBS ZWxhdGlvbjsKIAogLyogVHlwZSBtYXBwaW5nIGluZm8gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbHJlbGF0aW9uLmgKaW5kZXggNzhjZDdlNzdmNS4uNDUyOTc3ZTJjMCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKQEAgLTE1LDYgKzE1LDE3IEBA CiAjaW5jbHVkZSAiYWNjZXNzL2F0dG1hcC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2lj YWxwcm90by5oIgogCisvKgorICoJU3RhdGVzIHRvIGRldGVybWluZSBpZiBjaGFuZ2VzIG9uIG9u ZSByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCB1c2luZyBhCisgKglwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCisgKi8KK3R5cGVkZWYgZW51bSBQYXJhbGxlbEFwcGx5U2FmZXR5Cit7CisJUEFSQUxMRUxf QVBQTFlfU0FGRVRZX1VOS05PV04sCisJUEFSQUxMRUxfQVBQTFlfU0FGRSwKKwlQQVJBTExFTF9B UFBMWV9VTlNBRkUKK30gUGFyYWxsZWxBcHBseVNhZmV0eTsKKwogdHlwZWRlZiBzdHJ1Y3QgTG9n aWNhbFJlcFJlbE1hcEVudHJ5CiB7CiAJTG9naWNhbFJlcFJlbGF0aW9uIHJlbW90ZXJlbDsJLyog a2V5IGlzIHJlbW90ZXJlbC5yZW1vdGVpZCAqLwpAQCAtMzEsNiArNDIsOCBAQCB0eXBlZGVmIHN0 cnVjdCBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIAlSZWxhdGlvbglsb2NhbHJlbDsJCS8qIHJlbGNh Y2hlIGVudHJ5IChOVUxMIHdoZW4gY2xvc2VkKSAqLwogCUF0dHJNYXAgICAgKmF0dHJtYXA7CQkv KiBtYXAgb2YgbG9jYWwgYXR0cmlidXRlcyB0byByZW1vdGUgb25lcyAqLwogCWJvb2wJCXVwZGF0 YWJsZTsJCS8qIENhbiBhcHBseSB1cGRhdGVzL2RlbGV0ZXM/ICovCisJUGFyYWxsZWxBcHBseVNh ZmV0eSBwYXJhbGxlbF9hcHBseV9zYWZldHk7CS8qIENhbiBhcHBseSBjaGFuZ2VzIGluIGEKKwkJ CQkJCQkJCQkJCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcj8gKi8KIAogCS8qIFN5bmMgc3RhdGUu ICovCiAJY2hhcgkJc3RhdGU7CkBAIC00Nyw0ICs2MCw2IEBAIGV4dGVybiBMb2dpY2FsUmVwUmVs TWFwRW50cnkgKmxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5 ICpyCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlbF9jbG9zZShMb2dpY2FsUmVwUmVsTWFwRW50 cnkgKnJlbCwKIAkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAorZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBseShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVu dHJ5KTsKKwogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxSRUxBVElPTl9IICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDRjYmZiNDM0OTIuLjdlY2VhZWI4 MTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yMjQs NiArMjI0LDggQEAgZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCh2 b2lkKTsKIAogI2RlZmluZSBpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSAod29ya2VyLT5h cHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQpCiAKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2Fw cGx5X3JlbGF0aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKTsKKwogc3RhdGlj IGlubGluZSBib29sCiBhbV90YWJsZXN5bmNfd29ya2VyKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUu aAppbmRleCA0MzFhZDdmMWIzLi5lZDdjMmU3ZjQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy90eXBjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKQEAgLTE5 OSw2ICsxOTksOCBAQCBleHRlcm4gdWludDY0IGFzc2lnbl9yZWNvcmRfdHlwZV9pZGVudGlmaWVy KE9pZCB0eXBlX2lkLCBpbnQzMiB0eXBtb2QpOwogCiBleHRlcm4gaW50CWNvbXBhcmVfdmFsdWVz X29mX2VudW0oVHlwZUNhY2hlRW50cnkgKnRjYWNoZSwgT2lkIGFyZzEsIE9pZCBhcmcyKTsKIAor ZXh0ZXJuIExpc3QgKkdldERvbWFpbkNvbnN0cmFpbnRzKE9pZCB0eXBlX2lkKTsKKwogZXh0ZXJu IHNpemVfdCBTaGFyZWRSZWNvcmRUeXBtb2RSZWdpc3RyeUVzdGltYXRlKHZvaWQpOwogCiBleHRl cm4gdm9pZCBTaGFyZWRSZWNvcmRUeXBtb2RSZWdpc3RyeUluaXQoU2hhcmVkUmVjb3JkVHlwbW9k UmVnaXN0cnkgKiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWls ZCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCA4NWQxZGQ5Mjk1Li5i YWFiZmI0YTZhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC0zNiw2ICszNiw3IEBA IHRlc3RzICs9IHsKICAgICAgICd0LzAyOV9vbl9lcnJvci5wbCcsCiAgICAgICAndC8wMzBfb3Jp Z2luLnBsJywKICAgICAgICd0LzAzMV9jb2x1bW5fbGlzdC5wbCcsCisgICAgICAndC8wMzJfc3Ry ZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAg XSwKICAgfSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0u cGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IDY1ZjQzZjA4 ODEuLjZkMWZmOGQ1ZTkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9z dHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAt MjA1LDggKzIwNSwxMyBAQCBteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igog KTsKIAotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmluYXJ5ID0gb2Zm KSIpOworIyAic3RyZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0 YWJsZSBmdW5jdGlvbnMsIHNvIGNoYW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQg ZXhwcmVzc2lvbiBvZiBjb2x1bW4gImMiLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAor CSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VU IERFRkFVTFQgdG9fdGltZXN0YW1wKDApOworQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VU KHN0cmVhbWluZyA9IHBhcmFsbGVsLCBiaW5hcnkgPSBvZmYpOworfSk7CiAKICRub2RlX3B1Ymxp c2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlkICE9ICRvbGRw aWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFw cG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAppbmRleCAwMjBhZDk2ZDFmLi4wZWZhNDFkOTMwIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCkBAIC0x NTAsOCArMTUwLDEzIEBAIG15ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBh cHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiAp OwogCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworIyAic3RyZWFt aW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMs IHNvIGNoYW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBvZiBj b2x1bW4gImMiLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx eworQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGlt ZXN0YW1wKDApOworQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBh cmFsbGVsKTsKK30pOwogCiAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3Rn cmVzJywKIAkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBX SEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2Fz Y2FkZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBs CmluZGV4IDQyNjVkM2IzZjUuLjg5M2ZhYWEwZjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCkBAIC01MDEsNiArNTAxLDE0IEBAIHRlc3Rf c3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1l X0MsICdvbicpOwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVz dCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisjICJzdHJlYW1pbmcgPSBwYXJhbGxlbCIgZG9lcyBub3Qgc3Vw cG9ydCBub24taW1tdXRhYmxlIGZ1bmN0aW9ucywgc28gY2hhbmdlCisjIHRoZSBmdW5jdGlvbiBp biB0aGUgZGVmYXVsdCBleHByZXNzaW9uIG9mIGNvbHVtbiAiYyIuCiskbm9kZV9CLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VU IERFRkFVTFQgdG9fdGltZXN0YW1wKDApOyIpOworJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRv X3RpbWVzdGFtcCgwKTsiKTsKKwogdGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5v ZGVfQywgJGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJ3BhcmFsbGVsJyk7CiAKICMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAyM190d29waGFzZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdv cGhhc2Vfc3RyZWFtLnBsCmluZGV4IDgyYjVlNmMxMmUuLjJjZDQ1M2MwM2YgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtMzg0LDggKzM4 NCwxMyBAQCBteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKIAkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElP TiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKyMgInN0cmVhbWluZyA9IHBh cmFsbGVsIiBkb2VzIG5vdCBzdXBwb3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLCBzbyBjaGFu Z2UKKyMgdGhlIGZ1bmN0aW9uIGluIHRoZSBkZWZhdWx0IGV4cHJlc3Npb24gb2YgY29sdW1uICJj Ii4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVS IFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgw KTsKK0FMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7 Cit9KTsKIAogJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAJ IlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBw bGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9z YWZldHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVs X3NhZmV0eS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zYWFhNjk5 YzA3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVh bWluZ19wYXJhbGxlbF9zYWZldHkucGwKQEAgLTAsMCArMSw2MTYgQEAKKyMgQ29weXJpZ2h0IChj KSAyMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgdGhl IHNhZmV0eSBjaGVja3Mgb2Ygc3RyZWFtaW5nIG1vZGUgInBhcmFsbGVsIiBpbiBsb2dpY2FsIHJl cGxpY2F0aW9uLgorIyBXaXRob3V0IHRoZXNlIHNhZmV0eSBjaGVja3MsIHRoZSBzdWJzY3JpYmVy J3MgYXBwbHkgd29ya2VyIG1heSBmYWxsIGludG8gYW4KKyMgaW5maW5pdGUgd2FpdCB3aXRob3V0 IHRoZSB1c2VyIGtub3dpbmcuCisjCisjIEZvciBub3JtYWwgdGFibGVzLCB3ZSB1c2UgZGVhZGxv Y2stcHJvZHVjaW5nIHRlc3QgY2FzZXMgdG8gZW5zdXJlIHRoYXQgZnV0dXJlCisjIG1vZGlmaWNh dGlvbnMgZG8gbm90IGludmFsaWRhdGUgY29uc3RyYWludCBjaGVja3MuCisjCisjIEZvciBwYXJ0 aXRpb25lZCB0YWJsZXMsIHdlIGp1c3QgdXNlIHRlc3QgY2FzZXMgdG8gY29uZmlybSB0aGF0IHRo ZSBjb25zdHJhaW50CisjIGNoZWNrcyBhcmUgYXMgZXhwZWN0ZWQuCisKK3VzZSBzdHJpY3Q7Cit1 c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitteSAkb2Zmc2V0ID0gMDsKKwor IyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQo YWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywKKwknbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9IDY0 a0InKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9k ZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygn c3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRub2RlX3N1YnNjcmliZXIt PnN0YXJ0OworCisjIFNldHVwIHN0cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWIxIChhIGludCki KTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUg dGVzdF90YWIyIChhIGludCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCAoYSBpbnQgcHJpbWFyeSBr ZXksIGIgdmFyY2hhcikiKTsKKworIyBTZXR1cCBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlcgorIyBX ZSBuZWVkIHRvIHRlc3Qgbm9ybWFsIHRhYmxlIGFuZCBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYjEg KGEgaW50KSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVB VEUgVEFCTEUgdGVzdF90YWIyIChhIGludCkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uZWQgKGEgaW50 IHByaW1hcnkga2V5LCBiIHZhcmNoYXIpIFBBUlRJVElPTiBCWSBSQU5HRShhKSIKKyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3Rf dGFiX3BhcnRpdGlvbiAoTElLRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCkiKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0 aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlc3RfdGFiX3BhcnRpdGlvbiBERUZBVUxUIgorKTsK KworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAk bm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1 Yl9ub3JtYWwgRk9SIFRBQkxFIHRlc3RfdGFiMSwgdGVzdF90YWIyIik7Ciskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9w YXJ0aXRpb25lZCBGT1IgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKKworbXkgJGFwcG5h bWUgPSAndGFwX3N1Yic7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgIgorCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YgorCUNPTk5FQ1RJT04gJyRwdWJsaXNo ZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJworCVBVQkxJQ0FUSU9OIHRhcF9w dWJfbm9ybWFsLCB0YXBfcHViX3BhcnRpdGlvbmVkCisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxs ZWwsIGNvcHlfZGF0YSA9IGZhbHNlKSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisjIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywg ZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCitteSAkaW4gID0gJyc7CitteSAkb3V0ID0g Jyc7CisKK215ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tn cm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAorCW9uX2Vycm9yX3N0 b3AgPT4gMCk7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0 aGF0IHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSByZWxhdGlvbiBvbiB0aGUKKyMgc3Vic2NyaWJl ci1zaWRlIGlzIG5vdCB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGUuIENo ZWNrIHRoZQorIyBlcnJvciByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNl LgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgRmlyc3Qgd2UgY2hlY2sgdGhlIHVuaXF1ZSBp bmRleCBvbiBub3JtYWwgdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiMSBvbiB0ZXN0X3RhYjEoYSkiKTsK KworJGluIC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMSBTRUxFQ1QgaSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5wdW1wX25iOworCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIx IHZhbHVlcygxKSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsK KworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTld KzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIg dXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJJG9m ZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cg aXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1Ag SU5ERVggaWR4X3RhYjEiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlv biB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCitteSAkcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh YjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0 aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi VFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBw YXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlvbl9pZHggT04gdGVzdF90 YWJfcGFydGl0aW9uIChiKSIpOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5v dyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9w YXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIv RVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJw dWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIg c3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHVuaXF1ZSBp bmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkRST1AgSU5ERVggdGVzdF90YWJfYl9wYXJ0aXRpb25f aWR4Iik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBw bGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25l ZCIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl ciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVHJp Z2dlcnMgd2hpY2ggZXhlY3V0ZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIGFyZSBub3QgYWxsb3dl ZCBvbiB0aGUKKyMgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkg cGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisj IEZpcnN0IHdlIGNoZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5E RVggaWR4X3RhYjIgb24gdGVzdF90YWIyKGEpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiMiBvbiB0ZXN0X3Rh YjIoYSkiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx eworQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190YWIxX3Vuc2FmZSgpIFJFVFVSTlMgVFJJ R0dFUiBBUyBcJFwkCisgIEJFR0lOCisgICAgSU5TRVJUIElOVE8gcHVibGljLnRlc3RfdGFiMiBW QUxVRVMgKE5FVy4qKTsKKyAgICBSRVRVUk4gTkVXOworICBFTkQKK1wkXCQgbGFuZ3VhZ2UgcGxw Z3NxbDsKK0NSRUFURSBUUklHR0VSIHRyaV90YWIxX3Vuc2FmZQorQkVGT1JFIElOU0VSVCBPTiBw dWJsaWMudGVzdF90YWIxCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9m dW5jX3RhYjFfdW5zYWZlKCk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0Eg VFJJR0dFUiB0cmlfdGFiMV91bnNhZmU7CisKK0NSRUFURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmNf dGFiMV9zYWZlKCkgUkVUVVJOUyBUUklHR0VSIEFTIFwkXCQKKyAgQkVHSU4KKyAgICBSQUlTRSBO T1RJQ0UgJ3Rlc3QgZm9yIHNhZmUgdHJpZ2dlciBmdW5jdGlvbic7CisJUkVUVVJOIE5FVzsKKyAg RU5ECitcJFwkIGxhbmd1YWdlIHBscGdzcWw7CitBTFRFUiBGVU5DVElPTiB0cmlnZ2VyX2Z1bmNf dGFiMV9zYWZlIElNTVVUQUJMRTsKK0NSRUFURSBUUklHR0VSIHRyaV90YWIxX3NhZmUKK0JFRk9S RSBJTlNFUlQgT04gcHVibGljLnRlc3RfdGFiMQorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VE VVJFIHRyaWdnZXJfZnVuY190YWIxX3NhZmUoKTsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3Jp YmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWIxIFZBTFVFUyg1 MDAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIxIFZBTFVFUyg1MDAxKSIp OworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vi c2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3Qg cmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2Ny aXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMg VXNpbmcgdHJpZ2dlciB3aXRoIGltbXV0YWJsZSBmdW5jdGlvbiwgbm93IGl0IHdvcmtzLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUg dGVzdF90YWIxIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgdHJpX3RhYjFfc2FmZTsKK0RST1AgVFJJ R0dFUiB0cmlfdGFiMV91bnNhZmUgT04gcHVibGljLnRlc3RfdGFiMTsKK30pOworCisjIFdhaXQg Zm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5 IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMiksCisJJ2Rh dGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNz aW9uJyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworRFJPUCBJTkRFWCBp ZHhfdGFiMjsKK0RST1AgVFJJR0dFUiB0cmlfdGFiMV9zYWZlIE9OIHB1YmxpYy50ZXN0X3RhYjE7 CitEUk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVuY190YWIxX3Vuc2FmZTsKK0RST1AgZnVuY3Rpb24g dHJpZ2dlcl9mdW5jX3RhYjFfc2FmZTsKK30pOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgcXF7CitEUk9QIElOREVYIGlkeF90YWIyOworVFJVTkNBVEUgVEFCTEUg dGVzdF90YWIxOworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIyOworfSk7Ciskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIHRy aWdnZXIgZnVuY3Rpb24gb24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygp IFJFVFVSTlMgVFJJR0dFUiBBUyBcJFwkCisgIEJFR0lOCisgICAgUkVUVVJOIE5VTEw7CisgIEVO RAorXCRcJCBsYW5ndWFnZSBwbHBnc3FsOworQ1JFQVRFIFRSSUdHRVIgaW5zZXJ0X3RyaWcKK0JF Rk9SRSBJTlNFUlQgT04gdGVzdF90YWJfcGFydGl0aW9uCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQ Uk9DRURVUkUgdHJpZ2dlcl9mdW5jKCk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24g RU5BQkxFIFJFUExJQ0EgVFJJR0dFUiBpbnNlcnRfdHJpZzsKK30pOworCisjIENoZWNrIHRoZSBz dWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVM RVRFIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRh cmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3Jp cHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBE cm9wIHRoZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBUUklHR0VSIGluc2VydF90 cmlnIE9OIHRlc3RfdGFiX3BhcnRpdGlvbiIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5n IHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAnZGF0YSByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJpZ2dlcicpOworCisjID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb2x1bW4gZGVmYXVsdCB2 YWx1ZSBleHByZXNzaW9uIGNvbnRhaW5zIGEKKyMgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBvbiB0 aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkKKyMgcGFyYWxs ZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIEZpcnN0 IHdlIGNoZWNrIHRoZSBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9uIG5vcm1hbCB0 YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5U TyB0ZXN0X3RhYjIgVkFMVUVTKDEpIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBGVU5DVElPTiBmdW5jX2NvdW50X3RhYjIoKSBSRVRV Uk5TIElOVCBBUyBcJFwkCisgIEJFR0lOCisgICAgUkVUVVJOIChTRUxFQ1QgY291bnQoKikgRlJP TSBwdWJsaWMudGVzdF90YWIyKTsKKyAgRU5ECitcJFwkIGxhbmd1YWdlIHBscGdzcWw7CitBTFRF UiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTFVNTiBiIGludCBERUZBVUxUIGZ1bmNfY291bnRfdGFi MigpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxeworQkVHSU47 CitUUlVOQ0FURSB0ZXN0X3RhYjI7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgU0VMRUNUIGkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFi MShhKSBWQUxVRVMoMSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5p c2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1a MC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3Rh YjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAor CSRvZmZzZXQpOworCisjIEFsdGVyIGRlZmF1bHQgdmFsdWVzIHRvIGltbXV0YWJsZSBleHByZXNz aW9uLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBiIFNFVCBERUZBVUxUIDEi KTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVk IGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQs IHFxKDUwMDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciB1c2luZyBp bW11dGFibGUgZXhwcmVzc2lvbicpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBl bnZpcm9ubWVudC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJB TFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT0xVTU4gYiIpOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CitU UlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjI7Cit9KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUgY29sdW1uIGRlZmF1bHQg dmFsdWUgZXhwcmVzc2lvbiBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFM VEVSIENPTFVNTiBiIFNFVCBERUZBVUxUIHJhbmRvbSgpIik7CisKKyMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxv Z2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VS VCBJTlRPIHRlc3RfdGFiX3BhcnRpdGlvbmVkIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0 YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2Ny aXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMg RHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90 YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOworCisjIFdhaXQgZm9y IHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdv cmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRy ZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFx KDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBk ZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0 IGlzIG5vdCBhbGxvd2VkIHRoYXQgZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlu cyBhIG5vbi1pbW11dGFibGUKKyMgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hl Y2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsCisjIHdvcmtlciBpbiB0aGlzIGNhc2Uu CisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBCZWNhdXNlIHRoZSBjb2x1bW4gdHlwZSBvZiB0 aGUgcGFydGl0aW9uIHRhYmxlIG11c3QgYmUgdGhlIHNhbWUgYXMgaXRzIHBhcmVudAorIyB0YWJs ZSwgb25seSB0ZXN0IG5vcm1hbCB0YWJsZSBoZXJlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKKworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRE9NQUlO IHRtcF9kb21haW4gQVMgaW50IENIRUNLIChWQUxVRSA+IC0xKTsKK0FMVEVSIFRBQkxFIHRlc3Rf dGFiMSBBTFRFUiBDT0xVTU4gYSBUWVBFIHRtcF9kb21haW47Cit9KTsKKworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIERPTUFJTiB0bXBfZG9t YWluIEFTIElOVCBDT05TVFJBSU5UIGRvbWFpbl9jaGVjayBDSEVDSyAoVkFMVUUgPj0gZnVuY19j b3VudF90YWIyKCkpOworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBhIFRZUEUg dG1wX2RvbWFpbjsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBv bi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsK K0JFR0lOOworVFJVTkNBVEUgdGVzdF90YWIyOworSU5TRVJUIElOVE8gdGVzdF90YWIxIFNFTEVD VCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7 CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0 ZXN0X3RhYjEoYSkgVkFMVUVTKDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307Cisk aC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6 ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMu dGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFs bGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24s IG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJBTFRFUiBET01BSU4gdG1wX2RvbWFpbiBEUk9QIENPTlNUUkFJTlQgZG9tYWluX2NoZWNrIik7 CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBp biB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBx cSg1MDAxKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNpbmcgaW1t dXRhYmxlIGV4cHJlc3Npb24nKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52 aXJvbm1lbnQuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBhIFRZUEUgaW50Iik7Ciskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK1RSVU5DQVRFIFRBQkxFIHRlc3Rf dGFiMTsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMjsKK30pOworJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0 IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29uc3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9u LWltbXV0YWJsZSBmdW5jdGlvbgorIyBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUg ZXJyb3IgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMKKyMgY2FzZS4KKyMgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorCisjIEZpcnN0IHdlIGNoZWNrIHRoZSBjb25zdHJhaW50IGV4cHJl c3Npb24gb24gbm9ybWFsIHRhYmxlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKKworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIx IEFERCBDT05TVFJBSU5UIGNvbnN0X3RhYjFfdW5zYWZlIENIRUNLKGEgPj0gZnVuY19jb3VudF90 YWIyKCkpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor JG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxeworQkVH SU47CitUUlVOQ0FURSB0ZXN0X3RhYjI7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgU0VMRUNUIGkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3Rf dGFiMShhKSBWQUxVRVMoMSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5m aW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBb QS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0 X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwv LAorCSRvZmZzZXQpOworCisjIEFsdGVyIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiB0byBpbW11dGFi bGUgZXhwcmVzc2lvbiwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlO VCBjb25zdF90YWIxX3Vuc2FmZTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlO VCBjb25zdF90YWIxX3NhZmUgQ0hFQ0soYSA+PSAwKTsKK30pOworCisjIFdhaXQgZm9yIHRoaXMg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4K KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQg PQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlc3RfdGFiMSIpOworaXMoJHJlc3VsdCwgcXEoNTAwMSksCisJJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7 CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBE Uk9QIENPTlNUUkFJTlQgY29uc3RfdGFiMV9zYWZlIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5D QVRFIFRBQkxFIHRlc3RfdGFiMjsKK30pOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworIyBUaGVuIHdlIGNoZWNrIHRoZSBjb25zdHJhaW50IGV4cHJlc3Np b24gb24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFERCBDT05TVFJB SU5UIHRlc3RfdGFiX2NvbiBjaGVjayAoYSA+IHJhbmRvbSgpKTsKK30pOworCisjIENoZWNrIHRo ZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi REVMRVRFIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRl IHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJz Y3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKwor IyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3Rh Yl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOworCisjIFdhaXQgZm9y IHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdv cmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRy ZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFx KDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBjb25z dHJhaW50IGV4cHJlc3Npb24nKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5v dCBhbGxvd2VkIHRoYXQgZm9yZWlnbiBrZXkgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sg dGhlIGVycm9yCisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuCisj ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKworIyBGaXJzdCB3ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkg b24gbm9ybWFsIHRhYmxlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXF7CitDUkVBVEUgVEFCTEUgdGFiX25vcHVibGljKGEgaW50KTsKK0FMVEVSIFRBQkxFIHRl c3RfdGFiMiBBREQgUFJJTUFSWSBLRVkgKGEpOworQUxURVIgVEFCTEUgdGVzdF90YWIyIFJFUExJ Q0EgSURFTlRJVFkgRlVMTDsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSk7Cit9KTsK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0 ZXN0X3RhYjIgQUREIFBSSU1BUlkgS0VZIChhKTsiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFERCBDT05T VFJBSU5UIHRlc3RfdGFiMWZrIEZPUkVJR04gS0VZKGEpIFJFRkVSRU5DRVMgdGVzdF90YWIyKGEp OworU0VMRUNUICdBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiAi JyB8fCB0Z25hbWUgfHwgJyInIEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z3JlbGlkID0gJ3Rlc3Rf dGFiMSc6OnJlZ2NsYXNzOjpvaWQgXFxnZXhlYworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2Zp bGU7CisKKyRpbiAuPSBxeworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVT KDEpOworSU5TRVJUIElOVE8gdGFiX25vcHVibGljIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYjIiKTsKKworJGluIC49 IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0 YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0 X3RhYjEgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiMWZrIik7CisKKyMgV2FpdCBmb3IgdGhpcyBz dHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9 CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBxcSgxKSwKKwknZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisKKyMg Q2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7 CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjI7Cit9KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkg b24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxeworQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbl9mIChhIGludCBwcmlt YXJ5IGtleSk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUREIENPTlNUUkFJTlQg dGVzdF90YWJfcGF0aXRpb25fZmsgRk9SRUlHTiBLRVkoYSkgUkVGRVJFTkNFUyB0ZXN0X3RhYl9w YXJ0aXRpb25fZihhKTsKK1NFTEVDVCAnQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEVO QUJMRSBSRVBMSUNBIFRSSUdHRVIgIicgfHwgdGduYW1lIHx8ICciJyBGUk9NIHBnX3RyaWdnZXIg V0hFUkUgdGdyZWxpZCA9ICd0ZXN0X3RhYl9wYXJ0aXRpb24nOjpyZWdjbGFzczo6b2lkIFxcZ2V4 ZWMKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZz ZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSki CispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0Et WjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90 YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0g cGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJP UCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0aW9uX2ZrIik7CisKKyMgV2FpdCBmb3IgdGhpcyBz dHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9 CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCks CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRoZSBmb3Jl aWduIGtleScpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5z dG9wOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZDIw NWFlZDA4Mi4uOGIyNTMyZTdkNiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE4Nzgs NiArMTg3OCw3IEBAIFBhZ2VYTG9nUmVjUHRyCiBQYWdldGFibGVFbnRyeQogUGFpcnMKIFBhcmFs bGVsQXBwZW5kU3RhdGUKK1BhcmFsbGVsQXBwbHlTYWZldHkKIFBhcmFsbGVsQml0bWFwSGVhcFN0 YXRlCiBQYXJhbGxlbEJsb2NrVGFibGVTY2FuRGVzYwogUGFyYWxsZWxCbG9ja1RhYmxlU2Nhbldv cmtlcgotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_006_OS3PR01MB6275F4A7CA186412E2FF2ED29E529OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v34-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v34-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v34-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=61645; creation-date="Mon, 26 Sep 2022 03:09:00 GMT"; modification-date="Mon, 26 Sep 2022 03:09:54 GMT" Content-Transfer-Encoding: base64 RnJvbSBhNTM2NWRhNmFhYzNhOTVmNWE2YWYyOTRmOWIzNjM2MThlMWFjZGU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjQgQXVnIDIwMjIgMjE6MDc6NDQgKzA4MDAKU3ViamVjdDogW1BBVENI IHYzNCA0LzVdIFJldHJ5IHRvIGFwcGx5IHN0cmVhbWluZyB4YWN0IG9ubHkgaW4gYXBwbHkgd29y a2VyCgpXaGVuIHRoZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGlzIHNldCBzdHJlYW1pbmc9cGFy YWxsZWwsIHRoZSBsb2dpYyB0cmllcyB0bwphcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBJZiB0aGlzCmZhaWxzIHRoZSBwYXJhbGxl bCB3b3JrZXIgZXhpdHMgd2l0aCBhbiBlcnJvci4KCkluIHRoaXMgY2FzZSwgcmV0cnkgYXBwbHlp bmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgbm9ybWFsCnN0cmVhbWluZz1v biBtb2RlLiBUaGlzIGlzIGRvbmUgdG8gYXZvaWQgZ2V0dGluZyBjYXVnaHQgaW4gYSBsb29wIG9m IHRoZSBzYW1lCnJldHJ5IGVycm9ycy4KCkEgbmV3IGZsYWcgZmllbGQgInN1YnJldHJ5IiBoYXMg YmVlbiBpbnRyb2R1Y2VkIHRvIGNhdGFsb2cgInBnX3N1YnNjcmlwdGlvbiIuCklmIHRoZSBzdWJz Y3JpYmVyIGV4aXRzIHdpdGggYW4gZXJyb3IsIHRoaXMgZmxhZyB3aWxsIGJlIHNldCB0cnVlLCBh bmQKd2hlbmV2ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5LCB0aGlz IGZsYWcgaXMgcmVzZXQgZmFsc2UuCk5vdywgd2hlbiBkZWNpZGluZyBob3cgdG8gYXBwbHkgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sIHRoZSBsb2dpYyBjYW4ga25vdyBpZgp0aGlzIHRyYW5zYWN0 aW9uIGhhcyBwcmV2aW91c2x5IGZhaWxlZCBvciBub3QgKGJ5IGNoZWNraW5nIHRoZSAic3VicmV0 cnkiCmZpZWxkKS4KCkluIGFkZGl0aW9uLCB3aGVuIGludHJvZHVjZWQgcGFyYWxsZWwgYXBwbHkg d29ya2VyLCB3ZSBhZGRlZCBzb21lIGxvZyBjaGVja3MgdG8KZW5zdXJlIHRoYXQgc3RyZWFtZWQg dHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVkIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KQnV0IHNp bmNlIHdlIGludHJvZHVjZWQgInJldHJ5IiBub3csIHdlIHdpbGwgbm90IGJlIGFibGUgdG8gY29u ZmlybSB3aGV0aGVyCnN0cmVhbWVkIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFwcGxpZWQgaW4gcGFy YWxsZWwgYXBwbHkgd29ya2VyLiBTbyByZW1vdmVkCnRoZXNlIGxvZyBjaGVja3MuCi0tLQogZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICA5ICsKIGRvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8ICAgNSArCiBzcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgIDEgKwogLi4uL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgIDE2ICstCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAxODcgKysrKysrKysrKysrKy0tLS0t CiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0K IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICB8ICAgNSArCiBz cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsICAgICAgICAgfCAgNTYgKy0tLS0t CiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgfCAgNDUgKy0t LS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsICAgICB8ICA1MSAr LS0tLQogLi4uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsICAgICAgICAgICAgIHwgIDU2 ICstLS0tLQogLi4uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCAgICAgICAgIHwg IDQ2ICstLS0tCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAg fCAgNTQgLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsICAg ICB8ICA2NiArLS0tLS0tCiAuLi4vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbCAg ICAgICAgfCAxNTAgKysrKysrKy0tLS0tLS0KIDE3IGZpbGVzIGNoYW5nZWQsIDI2OSBpbnNlcnRp b25zKCspLCA0ODYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBjNTc2OWRhMjZiLi43 OTI3NDljNTYwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzkyNyw2ICs3OTI3LDE1IEBAIFNDUkFNLVNI QS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46 PHJlcGxhY2VhYmxlPiZsCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnN1YnJldHJ5PC9z dHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIFRydWUgaWYgdGhlIHByZXZpb3VzIGFwcGx5IGNoYW5nZSBmYWlsZWQsIG5lY2Vz c2l0YXRpbmcgYSByZXRyeQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAg ICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJjb25uaW5m bzwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDdmMjhhZThhMGMuLjRhODM1ZmZkZDYgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNTAsNiArMjUwLDExIEBA IENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNj cmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgYWxzbyBiZSB0aGUgdW5pcXVlIGNv bHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNhbm5vdCBiZQogICAgICAgICAg IGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBzdWJzY3JpYmVyLXNpZGUg cmVwbGljYXRlZAogICAgICAgICAgIHRhYmxlLgorICAgICAgICAgIFdoZW4gYXBwbHlpbmcgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sIGlmIGVpdGhlciByZXF1aXJlbWVudCBpcyBub3QKKyAgICAg ICAgICBtZXQsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBleGl0IHdpdGggYW4gZXJy b3IuCisgICAgICAgICAgVGhlIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiBtb2RlIGlzIGRp c3JlZ2FyZGVkIHdoZW4gcmV0cnlpbmc7CisgICAgICAgICAgaW5zdGVhZCB0aGUgdHJhbnNhY3Rp b24gd2lsbCBiZSBhcHBsaWVkIHVzaW5nIDxsaXRlcmFsPm9uPC9saXRlcmFsPgorICAgICAgICAg IG1vZGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92 YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCBhNTA2 ZmMzZWM4Li43MjNiMTQxYzc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMK QEAgLTcxLDYgKzcxLDcgQEAgR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5n X29rKQogCXN1Yi0+c3RyZWFtID0gc3ViZm9ybS0+c3Vic3RyZWFtOwogCXN1Yi0+dHdvcGhhc2Vz dGF0ZSA9IHN1YmZvcm0tPnN1YnR3b3BoYXNlc3RhdGU7CiAJc3ViLT5kaXNhYmxlb25lcnIgPSBz dWJmb3JtLT5zdWJkaXNhYmxlb25lcnI7CisJc3ViLT5yZXRyeSA9IHN1YmZvcm0tPnN1YnJldHJ5 OwogCiAJLyogR2V0IGNvbm5pbmZvICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NS SVBUSU9OT0lELApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDU1ZjdlYzc5 ZTAuLmY0YTAwNDk2ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3Zp ZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEy OTgsNyArMTI5OCw3IEBAIFJFVk9LRSBBTEwgT04gcGdfcmVwbGljYXRpb25fb3JpZ2luX3N0YXR1 cyBGUk9NIHB1YmxpYzsKIFJFVk9LRSBBTEwgT04gcGdfc3Vic2NyaXB0aW9uIEZST00gcHVibGlj OwogR1JBTlQgU0VMRUNUIChvaWQsIHN1YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUsIHN1Ym93 bmVyLCBzdWJlbmFibGVkLAogICAgICAgICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVhbSwgc3Vi dHdvcGhhc2VzdGF0ZSwgc3ViZGlzYWJsZW9uZXJyLAotICAgICAgICAgICAgICBzdWJzbG90bmFt ZSwgc3Vic3luY2NvbW1pdCwgc3VicHVibGljYXRpb25zLCBzdWJvcmlnaW4pCisgICAgICAgICAg ICAgIHN1YnJldHJ5LCBzdWJzbG90bmFtZSwgc3Vic3luY2NvbW1pdCwgc3VicHVibGljYXRpb25z LCBzdWJvcmlnaW4pCiAgICAgT04gcGdfc3Vic2NyaXB0aW9uIFRPIHB1YmxpYzsKIAogQ1JFQVRF IFZJRVcgcGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHMgQVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuYwppbmRleCAxZjgyMjA2NjEyLi5jN2ZkNzMwM2Y5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC02MzUsNiArNjM1LDcgQEAgQ3JlYXRl U3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAq c3RtdCwKIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfUEVORElORyA6CiAJCQkJCSBM T0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX0RJU0FCTEVEKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJz Y3JpcHRpb25fc3ViZGlzYWJsZW9uZXJyIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5kaXNhYmxl b25lcnIpOworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gQm9v bEdldERhdHVtKGZhbHNlKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmlu Zm8gLSAxXSA9CiAJCUNTdHJpbmdHZXRUZXh0RGF0dW0oY29ubmluZm8pOwogCWlmIChvcHRzLnNs b3RfbmFtZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eXBhcmFsbGVsd29ya2VyLmMKaW5kZXggYmJkNDBiNDBjOC4uYTUwNjY1ZTM0YyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMKQEAgLTE0Niw2ICsxNDYsMTggQEAgcGFyYWxsZWxfYXBwbHlfY2FuX3N0YXJ0KFRyYW5zYWN0 aW9uSWQgeGlkKQogCWlmICghWExvZ1JlY1B0cklzSW52YWxpZChNeVN1YnNjcmlwdGlvbi0+c2tp cGxzbikpCiAJCXJldHVybiBmYWxzZTsKIAorCS8qCisJICogRG9uJ3QgdXNlIHBhcmFsbGVsIGFw cGx5IHdvcmtlcnMgZm9yIHJldHJpZXMsIGJlY2F1c2UgaXQgaXMgcG9zc2libGUKKwkgKiB0aGF0 IHRoZSBsYXN0IHRpbWUgd2UgdHJpZWQgdG8gYXBwbHkgYSB0cmFuc2FjdGlvbiB1c2luZyBhIHBh cmFsbGVsCisJICogYXBwbHkgd29ya2VyIHRoZSBjaGVja3MgZmFpbGVkIChzZWUgZnVuY3Rpb24K KwkgKiBwYXJhbGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjaykuCisJICovCisJaWYgKE15U3Vic2Ny aXB0aW9uLT5yZXRyeSkKKwl7CisJCWVsb2coREVCVUcxLCAicGFyYWxsZWwgYXBwbHkgd29ya2Vy cyBhcmUgbm90IHVzZWQgZm9yIHJldHJpZXMiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCS8q CiAJICogRm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCB1 c2luZyBhIHBhcmFsbGVsCiAJICogYXBwbHkgd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRo ZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYQpAQCAtMTEzMiw3ICsxMTQ0LDUgQEAgcGFyYWxs ZWxfYXBwbHlfcmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCiAJCQkJ CQkic3RyZWFtaW5nID0gcGFyYWxsZWwiKSwKIAkJCQkgZXJyZGV0YWlsKCJUaGUgdW5pcXVlIGNv bHVtbiBvbiBzdWJzY3JpYmVyIGlzIG5vdCB0aGUgdW5pcXVlICIKIAkJCQkJCSAgICJjb2x1bW4g b24gcHVibGlzaGVyIG9yIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSAiCi0JCQkJCQkgICAibm9uLWlt bXV0YWJsZSBmdW5jdGlvbi4iKSwKLQkJCQkgZXJyaGludCgiUGxlYXNlIGNoYW5nZSB0byB1c2Ug c3Vic2NyaXB0aW9uIHBhcmFtZXRlciAlcy4iLAotCQkJCQkJICJzdHJlYW1pbmcgPSBvbiIpKSk7 CisJCQkJCQkgICAibm9uLWltbXV0YWJsZSBmdW5jdGlvbi4iKSkpOwogfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggODhhMzE0NDg2Mi4uOWM1YTc1M2JjNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zOTQsNyArMzk0 LDcgQEAgc3RhdGljIHZvaWQgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVf bHNuKTsKIAogc3RhdGljIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsKIAot c3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCk7CitzdGF0aWMgdm9p ZCBEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcih2b2lkKTsKIAogc3RhdGljIHZvaWQgYXBwbHlf aGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEp Owogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4ZWN1dGlv bkRhdGEgKmVkYXRhLApAQCAtNDM0LDYgKzQzNCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNl dF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCk7CiBzdGF0aWMgVHJhbnNBcHBseUFjdGlv biBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJ CQkJCQkJCSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZvKTsKIAorc3RhdGljIHZvaWQg c2V0X3N1YnNjcmlwdGlvbl9yZXRyeShib29sIHJldHJ5KTsKKwogLyoKICAqIFNob3VsZCB0aGlz IHdvcmtlciBhcHBseSBjaGFuZ2VzIGZvciBnaXZlbiByZWxhdGlvbi4KICAqCkBAIC05ODEsNiAr OTgzLDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAKIAlhcHBseV9oYW5k bGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkg ZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3Mg YW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJ cHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTA5MCw2 ICsxMDk1LDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAJaW5fcmVt b3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8K KwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxl cyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19z eW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTExNDYsNiArMTE1NCw5 IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0b3JlX2Zs dXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rp b24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3Jp cHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJl aW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVz KHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTIwNyw2ICsxMjE4LDkgQEAgYXBwbHlfaGFu ZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVzaF9wb3NpdGlv bihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24pOwogCWluX3JlbW90ZV90cmFuc2FjdGlv biA9IGZhbHNlOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlw dGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVp bmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMo cm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNuKTsKIApAQCAtMTI1OSw2ICsxMjczLDkgQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAogCQkJLyogVW5saW5r IHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLwog CQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFy ZV9kYXRhLnhpZCk7CisKKwkJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQkJc2V0X3N1 YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURF Ul9TRU5EX1RPX1BBUkFMTEVMOgpAQCAtMTI4MCw2ICsxMjk3LDkgQEAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCXBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2Vy KHdpbmZvLCBwcmVwYXJlX2RhdGEueGlkKTsKIAogCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJl cGFyZV9kYXRhLmVuZF9sc24pOworCisJCQkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJ CXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBUUkFO U19QQVJBTExFTF9BUFBMWToKQEAgLTE2NTksNiArMTY3OSwxMCBAQCBhcHBseV9oYW5kbGVfc3Ry ZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCSAqIHNlcmlhbGl6ZWQgdG8gZmlsZS4KIAkJCSAq LwogCQkJc2VyaWFsaXplX3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7CisKKwkJCS8qIFJlc2V0 IHRoZSByZXRyeSBmbGFnLiAqLworCQkJaWYgKHN1YnhpZCA9PSB4aWQpCisJCQkJc2V0X3N1YnNj cmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURFUl9T RU5EX1RPX1BBUkFMTEVMOgpAQCAtMTY4Miw2ICsxNzA2LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQl7CiAJCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdp bl9zZXR1cCgpOwogCQkJCXBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyKHdpbmZvLCB4aWQpOwor CisJCQkJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCQkJc2V0X3N1YnNjcmlwdGlvbl9y ZXRyeShmYWxzZSk7CiAJCQl9CiAJCQllbHNlCiAJCQl7CkBAIC0xODYyLDYgKzE4ODksOSBAQCBh cHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAKIAkJCS8qIFVubGluayB0 aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KIAkJ CXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisK KwkJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQkJc2V0X3N1YnNjcmlwdGlvbl9yZXRy eShmYWxzZSk7CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFM TEVMOgpAQCAtMTg5Miw2ICsxOTIyLDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3Ry aW5nSW5mbyBzKQogCQkJICogc3Vic2tpcGxzbi4KIAkJCSAqLwogCQkJY2xlYXJfc3Vic2NyaXB0 aW9uX3NraXBfbHNuKGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJCQkvKiBSZXNldCB0aGUg cmV0cnkgZmxhZy4gKi8KKwkJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwogCQkJYnJl YWs7CiAKIAkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKQEAgLTM5NjAsMjAgKzM5OTMsMjgg QEAgc3RhcnRfdGFibGVfc3luYyhYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MsIGNoYXIgKipt eXNsb3RuYW1lKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJy b3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQor CQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVw b3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUo KTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZh aWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uICovCisJCXBnc3RhdF9yZXBvcnRfc3Vi c2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwogCQlpZiAoTXlT dWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0 KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBk dXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uLiBBYm9ydAotCQkJICogdGhlIGN1cnJlbnQgdHJh bnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBp ZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBn c3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNl KTsKKwkJCURpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKCk7CiAKLQkJCVBHX1JFX1RIUk9XKCk7 Ci0JCX0KKwkJLyogU2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3Jl dHJ5KHRydWUpOworCisJCXByb2NfZXhpdCgwKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogCkBAIC0z OTk4LDIwICs0MDM5LDI3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9z KQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJyb3IgbWVzc2Fn ZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0 ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7CisJ CUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlS RVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGls ZSBhcHBseWluZyBjaGFuZ2VzICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9y KE15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkp OworCiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlzYWJsZVN1YnNj cmlwdGlvbkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVwb3J0IHRoZSB3 b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMuIEFib3J0IHRoZQotCQkJICogY3Vy cmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNlbnQgaW4gYW4K LQkJCSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigp OwotCQkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9p ZCwgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJv cigpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4g Ki8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwog fQpAQCAtNDI4NywzOSArNDMzNSwyMCBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcp CiB9CiAKIC8qCi0gKiBBZnRlciBlcnJvciByZWNvdmVyeSwgZGlzYWJsZSB0aGUgc3Vic2NyaXB0 aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uCi0gKiBhbmQgZXhpdCBjbGVhbmx5LgorICogRGlzYWJs ZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uLgogICovCiBzdGF0aWMgdm9p ZAotRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCkKK0Rpc2FibGVTdWJzY3JpcHRpb25P bkVycm9yKHZvaWQpCiB7Ci0JLyoKLQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdlLCBhbmQgcmVj b3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCi0JICogc3RhdGUKLQkgKi8KLQlI T0xEX0lOVEVSUlVQVFMoKTsKLQotCUVtaXRFcnJvclJlcG9ydCgpOwotCUFib3J0T3V0T2ZBbnlU cmFuc2FjdGlvbigpOwotCUZsdXNoRXJyb3JTdGF0ZSgpOwotCi0JUkVTVU1FX0lOVEVSUlVQVFMo KTsKLQotCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgZWl0aGVyIHRhYmxlIHN5 bmNocm9uaXphdGlvbiBvciBhcHBseSAqLwotCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vy cm9yKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCi0JCQkJCQkJCQkgIWFtX3RhYmxlc3luY193 b3JrZXIoKSk7Ci0KIAkvKiBEaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24gKi8KIAlTdGFydFRyYW5z YWN0aW9uQ29tbWFuZCgpOwogCURpc2FibGVTdWJzY3JpcHRpb24oTXlTdWJzY3JpcHRpb24tPm9p ZCk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBOb3RpZnkgdGhlIHN1YnNj cmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBhbmQgZXhpdCAqLworCS8qIE5vdGlmeSB0aGUgc3Vi c2NyaXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkICovCiAJZXJlcG9ydChMT0csCiAJCQllcnJtc2co InN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJlZW4gZGlzYWJsZWQgYmVjYXVzZSBvZiBhbiBlcnJv ciIsCiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKLQotCXByb2NfZXhpdCgwKTsKIH0K IAogLyoKQEAgLTQ1ODgsMyArNDYxNyw2NyBAQCBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9u KFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZvKQogCWVs c2UKIAkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU7CiB9CisKKy8qCisgKiBTZXQgc3Vi cmV0cnkgb2YgcGdfc3Vic2NyaXB0aW9uIGNhdGFsb2cuCisgKgorICogSWYgcmV0cnkgaXMgdHJ1 ZSwgc3Vic2NyaWJlciBpcyBhYm91dCB0byBleGl0IHdpdGggYW4gZXJyb3IuIE90aGVyd2lzZSwg aXQKKyAqIG1lYW5zIHRoYXQgdGhlIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHN1Y2Nlc3NmdWxs eS4KKyAqLworc3RhdGljIHZvaWQKK3NldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9vbCByZXRyeSkK K3sKKwlSZWxhdGlvbglyZWw7CisJSGVhcFR1cGxlCXR1cDsKKwlib29sCQlzdGFydGVkX3R4ID0g ZmFsc2U7CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlib29sCQlyZXBs YWNlc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfc3Vi c2NyaXB0aW9uXTsKKworCS8qIEZhc3QgcGF0aCAtIGlmIG5vIHN0YXRlIGNoYW5nZSB0aGVuIG5v dGhpbmcgdG8gZG8gKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5ID09IHJldHJ5KQorCQly ZXR1cm47CisKKwkvKiBGYXN0IHBhdGggLSBza2lwIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJz ICovCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKKwlpZiAo IUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KwkJc3RhcnRlZF90eCA9IHRydWU7CisJfQorCisJLyogTG9vayB1cCB0aGUgc3Vic2NyaXB0aW9u IGluIHRoZSBjYXRhbG9nICovCisJcmVsID0gdGFibGVfb3BlbihTdWJzY3JpcHRpb25SZWxhdGlv bklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFNVQlND UklQVElPTk9JRCwKKwkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oTXlTdWJzY3JpcHRpb24tPm9p ZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2coRVJST1IsICJzdWJz Y3JpcHRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwgTXlTdWJzY3JpcHRpb24tPm5hbWUpOwor CisJTG9ja1NoYXJlZE9iamVjdChTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBNeVN1YnNjcmlwdGlv bi0+b2lkLCAwLAorCQkJCQkgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qIEZvcm0gYSBuZXcgdHVw bGUuICovCisJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCW1lbXNldChudWxs cywgZmFsc2UsIHNpemVvZihudWxscykpOworCW1lbXNldChyZXBsYWNlcywgZmFsc2UsIHNpemVv ZihyZXBsYWNlcykpOworCisJLyogU2V0IHN1YnJldHJ5ICovCisJdmFsdWVzW0FudW1fcGdfc3Vi c2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ocmV0cnkpOworCXJlcGxhY2Vz W0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVh cF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMs CisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBkYXRlIHRoZSBjYXRhbG9nLiAqLworCUNhdGFs b2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2VsZiwgdHVwKTsKKworCS8qIENsZWFudXAuICov CisJaGVhcF9mcmVldHVwbGUodHVwKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisKKwlp ZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwppbmRleCBiNTdmNmM5ZmE2Li44MjUyZjBkYmRkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ1MDcsOCAr NDUwNyw5IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAludHVwcyA9IFBRbnR1 cGxlcyhyZXMpOwogCiAJLyoKLQkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3Qg aW5jbHVkZSBzdWJza2lwbHNuIGluIHRoZSBkdW1wIGFzCi0JICogYWZ0ZXIgcmVzdG9yaW5nIHRo ZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxvbmdlciBiZSByZWxldmFudC4KKwkgKiBHZXQgc3Vi c2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGFuZCBzdWJyZXRy eSBpbgorCSAqIHRoZSBkdW1wIGFzIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVl IG1heSBubyBsb25nZXIgYmUKKwkgKiByZWxldmFudC4KIAkgKi8KIAlpX3RhYmxlb2lkID0gUFFm bnVtYmVyKHJlcywgInRhYmxlb2lkIik7CiAJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAib2lkIik7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCAwMTZhZmJjMjA0Li4zNmMx ODAxMTUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5o CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTg4LDYgKzg4 LDkgQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklk KSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJkaXNhYmxlb25lcnI7CS8q IFRydWUgaWYgYSB3b3JrZXIgZXJyb3Igc2hvdWxkIGNhdXNlIHRoZQogCQkJCQkJCQkJICogc3Vi c2NyaXB0aW9uIHRvIGJlIGRpc2FibGVkICovCiAKKwlib29sCQlzdWJyZXRyeSBCS0lfREVGQVVM VChmKTsJLyogVHJ1ZSBpZiB0aGUgcHJldmlvdXMgYXBwbHkKKwkJCQkJCQkJCQkJICogY2hhbmdl IGZhaWxlZC4gKi8KKwogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3Ro IGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxp c2hlciAqLwogCXRleHQJCXN1YmNvbm5pbmZvIEJLSV9GT1JDRV9OT1RfTlVMTDsKQEAgLTEzMSw2 ICsxMzQsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQlkaXNhYmxlb25l cnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJCQkJCQkg KiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCiAJCQkJCQkJCSAqIG9j Y3VycyAqLworCWJvb2wJCXJldHJ5OwkJCS8qIEluZGljYXRlcyBpZiB0aGUgcHJldmlvdXMgYXBw bHkgY2hhbmdlCisJCQkJCQkJCSAqIGZhaWxlZC4gKi8KIAljaGFyCSAgICpjb25uaW5mbzsJCS8q IENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAljaGFyCSAgICpzbG90bmFt ZTsJCS8qIE5hbWUgb2YgdGhlIHJlcGxpY2F0aW9uIHNsb3QgKi8KIAljaGFyCSAgICpzeW5jY29t bWl0OwkJLyogU3luY2hyb25vdXMgY29tbWl0IHNldHRpbmcgZm9yIHdvcmtlciAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5kZXggNmQxZmY4ZDVlOS4uNzQyYmNlMDkxZCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDUyICs4LDIyIEBAIHVz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz OwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0 cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKLQlteSAkcGFyYWxsZWxf bWVzc2FnZSA9Ci0JICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNo IGNvbW1hbmQnOwotCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOwotCX0KLX0KLQog IyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVk IHRvICJzdHJlYW1pbmciCiAjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4g Ym90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKICMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2Vz Lgogc3ViIHRlc3Rfc3RyZWFtaW5nCiB7Ci0JbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKwlteSAoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMgSW50ZXJsZWF2ZSBh IHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KIAlt eSAkaW4gID0gJyc7CiAJbXkgJG91dCA9ICcnOwogCi0JbXkgJG9mZnNldCA9IDA7Ci0KIAlteSAk dGltZXIgPSBJUEM6OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVv dXRfZGVmYXVsdCk7CiAKIAlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCiAJCW9uX2Vycm9yX3N0b3AgPT4gMCk7 CiAKLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVs Iiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBw bGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkjIFdlIGhhdmUgdG8gbG9vayBm b3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKLQkj IGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmli ZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMg PSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQotCSMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOwotCiAJJGluIC49IHF7CiAJQkVHSU47CiAJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAw KSBzKGkpOwpAQCAtNzgsOCArNDgsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAogCSRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19wYXJhbGxlbF9s b2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCW15ICRyZXN1 bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CkBA IC05MCw5ICs1OCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChi aW5hcnkgPSBvbikiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBJbnNlcnQs IHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4K IAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkJJ3Bvc3RncmVzJywgcXsKQEAgLTEwNSw4 ICs3MCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3Jp YmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJJHJlc3VsdCA9CiAJICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKQEAgLTEyMSwxNiArODQsMTEgQEAg c3ViIHRlc3Rfc3RyZWFtaW5nCiAJCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBvY2gnOjp0 aW1lc3RhbXB0eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyciCiAJKTsKIAotCSMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOwotCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKIAkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOwogCiAJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVs X2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIgogCSk7CkBAIC0xNDEsMTQgKzk5LDYgQEAgc3ViIHRlc3Rf c3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkRF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKIAkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0JIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4K LQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJ JG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KIH0KIAogIyBDcmVhdGUgcHVibGlzaGVyIG5v ZGUKQEAgLTE5Niw3ICsxNDYsNyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEo MnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwog Ci10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lLCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog IyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTIxOSw3ICsxNjksNyBA QCAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAgb3IgZGll CiAgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBj aGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIs ICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVy LT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCmluZGV4IDBlZmE0MWQ5MzAuLjJiZWI2ODA2NjEgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKQEAgLTgs NDIgKzgsMTIgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAotIyBDaGVjayB0aGUgbG9nIHRoYXQg dGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Ci0jIHJl cG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLXN1YiBjaGVja19wYXJhbGxlbF9sb2cK LXsKLQlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9IEBfOwot CW15ICRwYXJhbGxlbF9tZXNzYWdlID0KLQkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFu c2FjdGlvbiBmaW5pc2ggY29tbWFuZCc7Ci0KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNl dCk7Ci0JfQotfQotCiAjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hp Y2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKICMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNv ZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAogIyBzdHJlYW1pbmc9 cGFyYWxsZWwgY2FzZXMuCiBzdWIgdGVzdF9zdHJlYW1pbmcKIHsKLQlteSAoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOwotCi0J bXkgJG9mZnNldCA9IDA7Ci0KLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZp ZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1lZCB0cmFu c2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkjIFdl IGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28g YnVtcCB1cCB0aGUKLQkjIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0J CSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxv Z19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwot CX0KLQotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQg PSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRu b2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKSA9IEBfOwogCiAJIyBJbnNlcnQsIHVwZGF0ZSBhbmQg ZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCA2NGtCIGxpbWl0LgogCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKApAQCAtNzMsOCArNDMsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAogCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19wYXJh bGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCW15 ICRyZXN1bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ CSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFi Iik7CkBAIC04NywxMyArNTUsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJIkRFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOwogCi0JIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlz X3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfc3Vi c2NyaWJlci0+cmVsb2FkOwotCX0KIH0KIAogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKQEAgLTE0 MSw3ICsxMDIsNyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAn Y2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi10ZXN0X3N0 cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsK K3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5h bWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IHVz aW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTE2NCw3ICsxMjUsNyBAQCAkbm9kZV9w dWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAgb3IgZGllCiAgICJUaW1l ZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBT VUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1 YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwog JG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE3X3N0cmVhbV9kZGwucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFt X2RkbC5wbAppbmRleCBkMmNjNDZkMTgyLi40M2Y5Y2EzM2IzIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbApAQCAtOCwyOCArOCwxMiBAQCB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0 OjpNb3JlOwogCi0jIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24g d2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKLSMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkg d29ya2VyLgotc3ViIGNoZWNrX3BhcmFsbGVsX2xvZwotewotCW15ICgkbm9kZV9zdWJzY3JpYmVy LCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpID0gQF87Ci0JbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQot CSAgJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsK LQotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2cocXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKLQl9Ci19Ci0KICMgRW5jYXBzdWxh dGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFt aW5nIgogIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRo ZSBzdHJlYW1pbmc9b24gYW5kCiAjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0 X3N0cmVhbWluZwogewotCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87Ci0KLQlteSAkb2Zmc2V0ID0gMDsKKwlteSAoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMgYSBz bWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCiAJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCkBAIC00MiwyMCArMjYsNiBAQCBzdWIgdGVzdF9zdHJlYW1p bmcKIAlDT01NSVQ7CiAJfSk7CiAKLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVj aWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1lZCB0 cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkj IFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwg c28gYnVtcCB1cCB0aGUKLQkjIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7 Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJ ImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2Fk OwotCX0KLQotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZz ZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBsYXJnZSAoc3RyZWFtZWQp IHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKIAkJJ3Bvc3RncmVzJywgcXsKQEAgLTgwLDggKzUwLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5n CiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hl Y2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7 Ci0KIAlteSAkcmVzdWx0ID0KIAkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAogCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZS T00gdGVzdF90YWIiKTsKQEAgLTg5LDkgKzU3LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCSdj aGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQg ZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwogCSk7CiAKLQkjIENoZWNrIHRo ZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2Ny aWJlci0+bG9nZmlsZTsKLQogCSMgQSBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGgg RERMIGFuZCBETUwuIE9uZSBvZiB0aGUgRERMIGlzIHBlcmZvcm1lZAogCSMgYWZ0ZXIgRE1MIHRv IGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0X3RhYiBz byB0aGF0CiAJIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFn YWluLgpAQCAtMTE0LDggKzc5LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9n KCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIi CiAJKTsKQEAgLTEzMCwxNCArOTMsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAlBTFRFUiBUQUJM RSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjLCBEUk9QIENPTFVNTiBkLCBEUk9QIENPTFVNTiBlLCBE Uk9QIENPTFVNTiBmOwogCX0pOwogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgkaXNfcGFyYWxs ZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkkbm9kZV9zdWJzY3JpYmVy LT5yZWxvYWQ7Ci0JfQogfQogCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQpAQCAtMTg1LDcgKzE0 MCw3IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDB8MCksICdjaGVjayBp bml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rfc3RyZWFtaW5n KCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAK ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMjAzLDcgKzE1OCw3IEBAICRub2RlX3B1Ymxpc2hl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQ VElPTiI7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsIDEpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9z dWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9w dWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThf c3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3Ry ZWFtX3N1YnhhY3RfYWJvcnQucGwKaW5kZXggNzUyZTc5YTAyOS4uNjdjNzc4ZGNmYSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBs CisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5w bApAQCAtOCw0MiArOCwxMiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCi0jIENoZWNrIHRoZSBs b2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVs bHkKLSMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotc3ViIGNoZWNrX3BhcmFs bGVsX2xvZwotewotCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwp ID0gQF87Ci0JbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQotCSAgJ2ZpbmlzaGVkIHByb2Nlc3Npbmcg dGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKLQotCWlmICgkaXNfcGFyYWxsZWwpCi0J ewotCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3NhZ2Uv LCAkb2Zmc2V0KTsKLQl9Ci19Ci0KICMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBz dGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgogIyBwYXJhbWV0ZXIgc28gdGhl IHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCiAjIHN0 cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0X3N0cmVhbWluZwogewotCW15ICgkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0g QF87Ci0KLQlteSAkb2Zmc2V0ID0gMDsKLQotCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlz IHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCi0JIyB0aGF0IHN0cmVh bWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LgotCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0 aGF0LCBzbyBidW1wIHVwIHRoZQotCSMgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVs KQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics Ci0JCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5y ZWxvYWQ7Ci0JfQotCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0J JG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisJbXkgKCRub2RlX3B1Ymxp c2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpID0gQF87CiAKIAkjIGxhcmdlIChzdHJl YW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCiAJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCkBAIC02OSw4ICszOSw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwog CiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNr X3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwot CiAJbXkgJHJlc3VsdCA9CiAJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKIAkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwpAQCAtNzgs OSArNDYsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVw b2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFp biBsb2NhbCBkZWZhdWx0cycKIAkpOwogCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkj IGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBv dXQgb2Ygb3JkZXIKIAkjIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcwogCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKApAQCAtMTAxLDE3ICs2NiwxMiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAog CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQog CSRyZXN1bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ CSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIAlpcygkcmVzdWx0 LCBxcSgyNTAwfDApLAogCQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0 ZWQgb24gc3Vic2NyaWJlcicpOwogCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkjIGxh cmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xs YmFjawogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewpAQCAt MTI2LDggKzg2LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1 YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkkcmVzdWx0ID0KIAkgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSBGUk9NIHRlc3RfdGFiIik7CkBAIC0xMzcsMTQgKzk1LDYgQEAgc3ViIHRlc3Rfc3Ry ZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0JIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlp ZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5v ZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KIH0KIAogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUK QEAgLTE5MSw3ICsxNDEsNyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlh bCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi10ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IHVzaW5nIHN0cmVhbWlu ZyBtb2RlICdwYXJhbGxlbCcKQEAgLTIwOSw3ICsxNTksNyBAQCAkbm9kZV9wdWJsaXNoZXItPnBv bGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAgb3IgZGllCiAgICJUaW1lZCBvdXQgd2hpbGUg d2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04i OwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2Ny aWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlz aGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVh bV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJl YW1fc3VieGFjdF9kZGxfYWJvcnQucGwKaW5kZXggOWQ2NzhiMzk5OC4uNDFlYzFlODkxNiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9h Ym9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3Rf ZGRsX2Fib3J0LnBsCkBAIC05LDQyICs5LDEyIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMg Q2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVk IHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi1zdWIg Y2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRp c19wYXJhbGxlbCkgPSBAXzsKLQlteSAkcGFyYWxsZWxfbWVzc2FnZSA9Ci0JICAnZmluaXNoZWQg cHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOwotCi0JaWYgKCRpc19w YXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxs ZWxfbWVzc2FnZS8sICRvZmZzZXQpOwotCX0KLX0KLQogIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNv bW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCiAjIHBhcmFt ZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1v biBhbmQKICMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgogc3ViIHRlc3Rfc3RyZWFtaW5nCiB7 Ci0JbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19w YXJhbGxlbCkgPSBAXzsKLQotCW15ICRvZmZzZXQgPSAwOwotCi0JIyBJZiAic3RyZWFtaW5nIiBw YXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKLQkj IHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBh cHBseSB3b3JrZXIuCi0JIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3Nh Z2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCi0JIyBsb2cgdmVyYm9zaXR5LgotCWlmICgk aXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ci0JCSRub2RlX3N1 YnNjcmliZXItPnJlbG9hZDsKLQl9Ci0KLQkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9t IG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKwlteSAo JG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMg bGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MK IAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKQEAgLTY4LDggKzM4LDYgQEAgc3ViIHRlc3Rf c3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCk7Ci0KIAlteSAkcmVzdWx0ID0KIAkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFi Iik7CkBAIC04NCwxNCArNTIsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAlBTFRFUiBUQUJMRSB0 ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwogCX0pOwogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgk aXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkkbm9kZV9z dWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQogfQogCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQpAQCAt MTM4LDcgKzk4LDcgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykg RlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0 YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVi bGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7Cit0ZXN0X3N0cmVhbWluZygk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAogIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9k ZSAncGFyYWxsZWwnCkBAIC0xNTYsNyArMTE2LDcgQEAgJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1 ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAgIG9yIGRpZQogICAiVGltZWQgb3V0IHdoaWxlIHdhaXRp bmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAot dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgMSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+ c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9j YXNjYWRlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUu cGwKaW5kZXggODkzZmFhYTBmNS4uNmVhN2ZjMTRjNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKQEAgLTExLDIwICsxMSw2IEBAIHVzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwog dXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFu c2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBwYXJhbGxl bCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRub2RlX3N1 YnNjcmliZXIsICRvZmZzZXQsICRzdHJlYW1pbmdfbW9kZSkgPSBAXzsKLQlteSAkcGFyYWxsZWxf bWVzc2FnZSA9Ci0JICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNo IGNvbW1hbmQnOwotCi0JaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQotCXsKLQkJ JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9m ZnNldCk7Ci0JfQotfQotCiAjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMg d2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgcGFyYW1ldGVyCiAjIHNvIHRoZSBzYW1l IGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9 cGFyYWxsZWwKICMgY2FzZXMuCkBAIC0zMyw5ICsxOSw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwog CW15ICgkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAk c3RyZWFtaW5nX21vZGUpID0KIAkgIEBfOwogCi0JbXkgJG9mZnNldF9CID0gMDsKLQlteSAkb2Zm c2V0X0MgPSAwOwotCiAJbXkgJG9sZHBpZF9CID0gJG5vZGVfQS0+c2FmZV9wc3FsKAogCQkncG9z dGdyZXMnLCAiCiAJCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCkBAIC03Nywy MyArNjAsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBs aWNhdGVkIG9uIHN1YnNjcmliZXIocykgYWZ0ZXIgdGhlIGNvbW1pdC4KIAkjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiAKLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVj aWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1lZCB0 cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi0J IyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQs IHNvIGJ1bXAgdXAgdGhlCi0JIyBsb2cgdmVyYm9zaXR5LgotCWlmICgkc3RyZWFtaW5nX21vZGUg ZXEgJ3BhcmFsbGVsJykKLQl7Ci0JCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9CLT5yZWxvYWQ7Ci0K LQkJJG5vZGVfQy0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3Nh Z2VzID0gZGVidWcxIik7Ci0JCSRub2RlX0MtPnJlbG9hZDsKLQl9Ci0KLQkjIENoZWNrIHRoZSBz dWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0X0IgPSAtcyAkbm9kZV9CLT5sb2dm aWxlOwotCSRvZmZzZXRfQyA9IC1zICRub2RlX0MtPmxvZ2ZpbGU7Ci0KIAkjIEluc2VydCwgdXBk YXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgogCSMg VGhlbiAyUEMgUFJFUEFSRQogCSRub2RlX0EtPnNhZmVfcHNxbCgKQEAgLTEwNyw5ICs3Myw2IEBA IHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVf Qik7CiAJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKIAotCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9CLCAkb2Zmc2V0X0IsICRzdHJlYW1pbmdfbW9kZSk7Ci0JY2hlY2tf cGFyYWxsZWxfbG9nKCRub2RlX0MsICRvZmZzZXRfQywgJHN0cmVhbWluZ19tb2RlKTsKLQogCSMg Y2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykK IAlteSAkcmVzdWx0ID0KIAkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLApAQCAtMTYz LDEwICsxMjYsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkjIEZpcnN0LCBkZWxldGUgdGhlIGRh dGEgZXhjZXB0IGZvciAyIHJvd3MgKGRlbGV0ZSB3aWxsIGJlIHJlcGxpY2F0ZWQpCiAJJG5vZGVf QS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4g MjsiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZz ZXRfQiA9IC1zICRub2RlX0ItPmxvZ2ZpbGU7Ci0JJG9mZnNldF9DID0gLXMgJG5vZGVfQy0+bG9n ZmlsZTsKLQogCSMgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9J TlQKIAkkbm9kZV9BLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsICIKQEAgLTE4Myw5ICsxNDIs NiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lX0IpOwogCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CiAKLQljaGVj a19wYXJhbGxlbF9sb2coJG5vZGVfQiwgJG9mZnNldF9CLCAkc3RyZWFtaW5nX21vZGUpOwotCWNo ZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9DLCAkb2Zmc2V0X0MsICRzdHJlYW1pbmdfbW9kZSk7Ci0K IAkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMp CiAJJHJlc3VsdCA9CiAJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKQEAgLTIzMiwx NiArMTg4LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKIAkkbm9kZV9BLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwogCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWVfQyk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgkc3RyZWFt aW5nX21vZGUgZXEgJ3BhcmFsbGVsJykKLQl7Ci0JCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfQi0+ cmVsb2FkOwotCi0JCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9n X21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfQy0+cmVsb2FkOwotCX0KIH0KIAog IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKaW5kZXggMmNkNDUzYzAzZi4uYzQ5Y2IxMDYxMSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5w bAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCkBA IC04LDI4ICs4LDEyIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0 aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQot IyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxf bG9nCi17Ci0JbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCkgPSBA XzsKLQlteSAkcGFyYWxsZWxfbWVzc2FnZSA9Ci0JICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUg dHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOwotCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0J CSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRv ZmZzZXQpOwotCX0KLX0KLQogIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBz IHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCiAjIHBhcmFtZXRlciBzbyB0aGUgc2Ft ZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKICMgc3RyZWFt aW5nPXBhcmFsbGVsIGNhc2VzLgogc3ViIHRlc3Rfc3RyZWFtaW5nCiB7Ci0JbXkgKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsK LQotCW15ICRvZmZzZXQgPSAwOworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lKSA9IEBfOwogCiAJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog CSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KQEAgLTM5LDIwICsyMyw2IEBA IHN1YiB0ZXN0X3N0cmVhbWluZwogCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCiAJIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogCi0JIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFz ICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKLQkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rp b24gd2FzIHByZXBhcmVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotCSMgV2UgaGF2 ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1w IHVwIHRoZQotCSMgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5v ZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21p bl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQot Ci0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1z ICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkjIGNoZWNrIHRoYXQgMlBDIGdldHMgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyCiAJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3Vn aCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKQEAgLTY1LDggKzM1LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9n KCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkjIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgogCW15ICRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwpAQCAtMTAxLDkgKzY5LDYgQEAg c3ViIHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKIAkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwogCi0JIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7Ci0KIAkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91 Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CkBAIC0xMTUsOCArODAsNiBAQCBzdWIgdGVzdF9zdHJl YW1pbmcKIAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAK LQljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFs bGVsKTsKLQogCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBv biBzdWJzY3JpYmVyCiAJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CkBA IC0xNDksOSArMTEyLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJIyBOb3RlOiBib3RoIHB1Ymxp c2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgogCSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CiAJCUJFR0lOOwpAQCAtMTY2LDgg KzEyNiw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CiAJ JG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCSMgY29tbWl0IHBvc3QgdGhlIHJl c3RhcnQKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiQ09NTUlU IFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CkBAIC0xOTUsOSArMTUzLDYgQEAgc3Vi IHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK IAkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwogCi0JIyBDaGVjayB0aGUg c3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmli ZXItPmxvZ2ZpbGU7Ci0KIAkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2gg cm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCiAJCSdwb3N0Z3JlcycsIHF7CkBAIC0yMDksOCArMTY0LDYgQEAgc3ViIHRlc3Rfc3RyZWFt aW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0J Y2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCk7Ci0KIAkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24g c3Vic2NyaWJlcgogCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwpAQCAt MjUzLDkgKzIwNiw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsi KTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQg PSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBUaGVuIGluc2VydCwgdXBkYXRl IGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgogCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewpAQCAtMjY3LDggKzIxNyw2 IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAk b2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGlu IHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKIAkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKQEAgLTMwMCwxNCArMjQ4LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkRFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIGEgPiAyOyIpOwogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgkaXNfcGFy YWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkkbm9kZV9zdWJzY3Jp YmVyLT5yZWxvYWQ7Ci0JfQogfQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBA IC0zNzUsNyArMzE1LDcgQEAgbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFs IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwordGVzdF9zdHJlYW1p bmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNpbmcgc3RyZWFtaW5n IG1vZGUgJ3BhcmFsbGVsJwpAQCAtMzk4LDcgKzMzOCw3IEBAICRub2RlX3B1Ymxpc2hlci0+cG9s bF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRpbWVkIG91dCB3aGlsZSB3 YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7 CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUsIDEpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3Jp YmVyLCAkYXBwbmFtZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hl Y2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsCmluZGV4IDNhYWE2OTljMDcuLmI4N2Rj NTMyYTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdf cGFyYWxsZWxfc2FmZXR5LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJl YW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsCkBAIC03OCw3ICs3OCw4IEBAIG15ICRoID0gJG5vZGVf cHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1l ciwKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IHRoZSB1 bmlxdWUgY29sdW1uIGluIHRoZSByZWxhdGlvbiBvbiB0aGUKICMgc3Vic2NyaWJlci1zaWRlIGlz IG5vdCB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGUuIENoZWNrIHRoZQot IyBlcnJvciByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBlcnJv ciByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0 cnlpbmcgaW4KKyMgYXBwbHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyByZXBsaWNh dGVkIHN1Y2Nlc3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEZpcnN0IHdlIGNo ZWNrIHRoZSB1bmlxdWUgaW5kZXggb24gbm9ybWFsIHRhYmxlLgpAQCAtMTAzLDYgKzEwNCwxMCBA QCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0r Oik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1 c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zm c2V0KTsKIAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtB LVowLTldKzopPyBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50 ICJpZHhfdGFiMSIvLAorCSRvZmZzZXQpOworCiAjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0 aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90YWIxIik7CiAKQEAgLTExMSw3ICsxMTYsOSBA QCAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiBteSAkcmVz dWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSBy ZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKK2lzKCRyZXN1 bHQsIHFxKDUwMDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9w cGluZyB1bmlxdWUgaW5kZXggdG8gcmV0cnkgYXBwbHknCispOwogCiAjIENsZWFuIHVwIHRlc3Qg ZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjEiKTsKQEAgLTEzMiwyMSArMTM5LDI0 IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05 XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9w YXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJh bGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJz Y3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlvbl9pZHgiKTsKLQogIyBXYWl0 IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBs eSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwog CiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7Ci1pcygkcmVzdWx0 LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5n IGluZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiB1bmlxdWUgaW5kZXgnKTsKKworIyBE cm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlv bl9pZHgiKTsKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIFRyaWdnZXJzIHdoaWNoIGV4ZWN1 dGUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBhcmUgbm90IGFsbG93ZWQgb24gdGhlCiAjIHN1YnNj cmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdvcmtlciBp biB0aGlzIGNhc2UuCisjIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3JrZXIsIHdlIGNo ZWNrIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQKKyMgc3VjY2Vzc2Z1bGx5LgogIyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIHRyaWdnZXIgZnVuY3Rpb24gb24g bm9ybWFsIHRhYmxlLgpAQCAtMTY3LDE3ICsxNzcsNiBAQCBDUkVBVEUgVFJJR0dFUiB0cmlfdGFi MV91bnNhZmUKIEJFRk9SRSBJTlNFUlQgT04gcHVibGljLnRlc3RfdGFiMQogRk9SIEVBQ0ggUk9X IEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY190YWIxX3Vuc2FmZSgpOwogQUxURVIgVEFC TEUgdGVzdF90YWIxIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZlOwotCi1D UkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSgpIFJFVFVSTlMgVFJJR0dFUiBB UyBcJFwkCi0gIEJFR0lOCi0gICAgUkFJU0UgTk9USUNFICd0ZXN0IGZvciBzYWZlIHRyaWdnZXIg ZnVuY3Rpb24nOwotCVJFVFVSTiBORVc7Ci0gIEVORAotXCRcJCBsYW5ndWFnZSBwbHBnc3FsOwot QUxURVIgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSBJTU1VVEFCTEU7Ci1DUkVBVEUg VFJJR0dFUiB0cmlfdGFiMV9zYWZlCi1CRUZPUkUgSU5TRVJUIE9OIHB1YmxpYy50ZXN0X3RhYjEK LUZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmNfdGFiMV9zYWZlKCk7 CiB9KTsKIAogIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCkBAIC0yMDIs MTIgKzIwMSwxMiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6 ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMu dGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFs bGVsLywKIAkkb2Zmc2V0KTsKIAotIyBVc2luZyB0cmlnZ2VyIHdpdGggaW1tdXRhYmxlIGZ1bmN0 aW9uLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgcXF7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiB0 cmlfdGFiMV9zYWZlOwotRFJPUCBUUklHR0VSIHRyaV90YWIxX3Vuc2FmZSBPTiBwdWJsaWMudGVz dF90YWIxOwotfSk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6 ICggW0EtWjAtOV0rOik/IGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0 cmFpbnQgImlkeF90YWIyIi8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4 IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYjIiKTsKIAogIyBXYWl0IGZvciB0 aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3Jr ZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwpAQCAtMjE1 LDE1ICsyMTQsMTMgQEAgJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOwogaXMoJHJlc3VsdCwgcXEoMiksCi0J J2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHBy ZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5n IGJlY2F1c2Ugb2YgdHJpZ2dlcicpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBl bnZpcm9ubWVudC4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBx cXsKLURST1AgSU5ERVggaWR4X3RhYjI7Ci1EUk9QIFRSSUdHRVIgdHJpX3RhYjFfc2FmZSBPTiBw dWJsaWMudGVzdF90YWIxOworRFJPUCBUUklHR0VSIHRyaV90YWIxX3Vuc2FmZSBPTiBwdWJsaWMu dGVzdF90YWIxOwogRFJPUCBmdW5jdGlvbiB0cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmU7Ci1EUk9Q IGZ1bmN0aW9uIHRyaWdnZXJfZnVuY190YWIxX3NhZmU7CiB9KTsKICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewpAQCAtMjU2LDIyICsyNTMsMjQgQEAgJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5u b3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVk IiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkk b2Zmc2V0KTsKIAotIyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQg d29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiRFJPUCBU UklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiX3BhcnRpdGlvbiIpOwotCiAjIFdhaXQgZm9y IHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdv cmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRy ZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VM RUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKLWlzKCRyZXN1bHQsIHFx KDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJpZ2dl cicpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVy IGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdHJpZ2dlcicpOworCisjIERyb3AgdGhlIHRyaWdn ZXIgb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiX3BhcnRpdGlvbiIp OwogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb2x1 bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIGNvbnRhaW5zIGEKICMgbm9uLWltbXV0YWJsZSBm dW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQg YnkKLSMgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgcGFyYWxsZWwgd29ya2VyIGlu IHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sK KyMgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCiAjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhw cmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCkBAIC0zMDksMTcgKzMwOCwxNCBAQCAkbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCBy ZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3Jp cHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBB bHRlciBkZWZhdWx0IHZhbHVlcyB0byBpbW11dGFibGUgZXhwcmVzc2lvbiwgbm93IGl0IHdvcmtz LgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxF IHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCAxIik7Ci0KICMgV2FpdCBmb3Ig dGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29y a2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJl c3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CiBpcygkcmVzdWx0LCBxcSg1MDAxKSwKLQknZGF0 YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNpbmcgaW1tdXRhYmxlIGV4cHJlc3Np b24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVj YXVzZSBvZiBjb2x1bW4gZGVmYXVsdCB2YWx1ZScKKyk7CiAKICMgQ2xlYW4gdXAgdGVzdCBkYXRh IGZyb20gdGhlIGVudmlyb25tZW50LgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCkBAIC0zNDYsMTAgKzM0Miw2IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xv ZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVs YXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBh cmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBkZWZh dWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0 aW9uIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOwotCiAjIFdhaXQgZm9yIHRoaXMgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKQEAgLTM1NywxMiAr MzQ5LDE4IEBAICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKIGlz KCRyZXN1bHQsIHFxKDUwMDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRl ciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb2x1bW4gZGVmYXVsdCB2 YWx1ZScKKyk7CisKKyMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3Rf dGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBEUk9QIERFRkFVTFQiKTsKIAogIyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZG9tYWluIGNvbnN0cmFpbnQg ZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKICMgZnVuY3Rpb24gb24gdGhlIHN1 YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsCi0jIHdv cmtlciBpbiB0aGlzIGNhc2UuCisjIHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciByZXRy eWluZyBpbiBhcHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZQorIyBkYXRhIGlzIHJlcGxpY2F0 ZWQgc3VjY2Vzc2Z1bGx5LgogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKICMgQmVjYXVzZSB0aGUg Y29sdW1uIHR5cGUgb2YgdGhlIHBhcnRpdGlvbiB0YWJsZSBtdXN0IGJlIHRoZSBzYW1lIGFzIGl0 cyBwYXJlbnQKQEAgLTQwMywxNyArNDAxLDEzIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQg cmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIg c3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgZG9tYWluIGNvbnN0 cmFpbnQgZXhwcmVzc2lvbiwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIERPTUFJTiB0bXBfZG9tYWluIERST1AgQ09OU1RSQUlO VCBkb21haW5fY2hlY2siKTsKLQogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlv biB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEi KTsKIGlzKCRyZXN1bHQsIHFxKDUwMDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl ciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCSdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGRvbWFpbicpOwogCiAjIENs ZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLApAQCAtNDI2LDkgKzQyMCwxMCBAQCBUUlVOQ0FURSBUQUJM RSB0ZXN0X3RhYjI7CiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb25z dHJhaW50IGV4cHJlc3Npb24gY29udGFpbnMgYSBub24taW1tdXRhYmxlIGZ1bmN0aW9uCi0jIG9u IHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBwYXJhbGxl bCB3b3JrZXIgaW4gdGhpcwotIyBjYXNlLgorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0 cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKKyMgZnVuY3Rpb24gb24g dGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVs CisjIHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3Jr ZXIsIHdlIGNoZWNrIGlmIHRoZQorIyBkYXRhIGlzIHJlcGxpY2F0ZWQgc3VjY2Vzc2Z1bGx5Lgog IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIGNvbnN0cmFpbnQg ZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCkBAIC00NjEsMjQgKzQ1NiwxNyBAQCAkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5v dCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJz Y3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAot IyBBbHRlciBjb25zdHJhaW50IGV4cHJlc3Npb24gdG8gaW1tdXRhYmxlIGV4cHJlc3Npb24sIG5v dyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx cXsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3RfdGFiMV91bnNh ZmU7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTlNUUkFJTlQgY29uc3RfdGFiMV9zYWZl IENIRUNLKGEgPj0gMCk7Ci19KTsKLQogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh YjEiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCSdkYXRhIHJlcGxpY2F0 ZWQgdG8gc3Vic2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGNvbnN0cmFpbnQnKTsK IAogIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWIxIERS T1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3NhZmUiKTsKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIx IERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3Vuc2FmZSIpOwogJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXF7CiBUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CkBA IC01MDEsMTAgKzQ4OSw2IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9F UlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1 YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBz dHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBjb25zdHJhaW50IG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09O U1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKLQogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFu c2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCkBAIC01MTIsMTEgKzQ5NiwxNiBAQCAk cmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CiBpcygkcmVzdWx0LCBx cSgwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgY29u c3RyYWludCBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFm dGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29uc3RyYWludCcpOworCisjIERyb3AgY29uc3RyYWlu dCBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRl c3RfdGFiX2NvbiIpOwogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93 ZWQgdGhhdCBmb3JlaWduIGtleSBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJy b3IKLSMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgcmVwb3J0 ZWQgYnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGlu IGFwcGx5CisjIHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNj ZXNzZnVsbHkuCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUg Zm9yZWlnbiBrZXkgb24gbm9ybWFsIHRhYmxlLgpAQCAtNTU4LDkgKzU0NywxMyBAQCAkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5v dCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJz Y3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAot IyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cg aXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxU RVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYjFmayIpOworIyBXYWl0 IGZvciBlcnJvciBsb2cgdG8gbWFrZSBzdXJlIHRoZSBkZXBlbmRlbnQgZGF0YSBoYXMgYmVlbiBk ZWxldGVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtB LVowLTldKzopPyBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZXN0X3RhYjEiIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlc3RfdGFiMWZrIi8sCisJJG9mZnNldCk7CisKKyMg SW5zZXJ0IGRlcGVuZGVudCBkYXRhIG9uIHRoZSBwdWJsaXNoZXIsIG5vdyBpdCB3b3Jrcy4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90 YWIyIFZBTFVFUygxKSIpOwogCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CkBAIC01NjgsOSArNTYxLDExIEBAICRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKwknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBmb3JlaWduIGtleScpOwog CiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJP UCBDT05TVFJBSU5UIHRlc3RfdGFiMWZrIik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK IAkncG9zdGdyZXMnLCBxcXsKIFRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKQEAgLTU4Miw2ICs1 NzcsNyBAQCAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewogQ1JFQVRFIFRBQkxF IHRlc3RfdGFiX3BhcnRpdGlvbl9mIChhIGludCBwcmltYXJ5IGtleSk7CitJTlNFUlQgSU5UTyB0 ZXN0X3RhYl9wYXJ0aXRpb25fZiBTRUxFQ1QgaSAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAw MCkgcyhpKTsKIEFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBREQgQ09OU1RSQUlOVCB0 ZXN0X3RhYl9wYXRpdGlvbl9mayBGT1JFSUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRlc3RfdGFiX3Bh cnRpdGlvbl9mKGEpOwogU0VMRUNUICdBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRU5B QkxFIFJFUExJQ0EgVFJJR0dFUiAiJyB8fCB0Z25hbWUgfHwgJyInIEZST00gcGdfdHJpZ2dlciBX SEVSRSB0Z3JlbGlkID0gJ3Rlc3RfdGFiX3BhcnRpdGlvbic6OnJlZ2NsYXNzOjpvaWQgXFxnZXhl YwogfSk7CkBAIC01OTcsMTAgKzU5Myw2IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xv ZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVs YXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBh cmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUg Zm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgot JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRl c3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfcGF0aXRpb25fZmsiKTsK LQogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGlu IHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOwogCkBAIC02MDgsNyArNjAwLDExIEBAICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWJfcGFydGl0aW9uZWQiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDApLAotCSdkYXRhIHJlcGxpY2F0 ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKwknZGF0 YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgZm9y ZWlnbiBrZXknKTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBz dWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFM VEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfcGF0 aXRpb25fZmsiKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+ c3RvcDsKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_006_OS3PR01MB6275F4A7CA186412E2FF2ED29E529OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v34-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v34-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v34-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=8958; creation-date="Mon, 26 Sep 2022 03:09:00 GMT"; modification-date="Mon, 26 Sep 2022 03:09:55 GMT" Content-Transfer-Encoding: base64 RnJvbSAyZDVmMzk0Mjc1NzliYjEzZmI2NGEzYTE2NDQ2MTRiMGViMmM0YmZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgMTEgQXVnIDIwMjIgMTE6NDk6MDggKzA4MDAKU3ViamVjdDogW1BBVENI IHYzNCA1LzVdIEFkZCBhIG1haW5fd29ya2VyX3BpZCB0byBwZ19zdGF0X3N1YnNjcmlwdGlvbgoK bWFpbl93b3JrZXJfcGlkIGlzIFByb2Nlc3MgSUQgb2YgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIs IGlmIHRoaXMgcHJvY2VzcyBpcyBhCmFwcGx5IHBhcmFsbGVsIHdvcmtlci4gTlVMTCBpZiB0aGlz IHByb2Nlc3MgaXMgYSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIGEKc3luY2hyb25pemF0aW9uIHdv cmtlci4KClRoZSBuZXcgY29sdW1uIGNhbiBtYWtlIGl0IGVhc2llciB0byBkaXN0aW5ndWlzaCBs ZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBhcHBseQpwYXJhbGxlbCB3b3JrZXIgd2hpY2ggaXMgYWxz byBzaW1pbGFyIHRvIHRoZSAnbGVhZGVyX3BpZCcgY29sdW1uIGluCnBnX3N0YXRfYWN0aXZpdHku Ci0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgIHwgMjYgKysr KysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAg ICAgfCAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgfCAz MiArKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 ICAgICAgICAgICAgfCAgNiArKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dCAgICAgICAgfCAgMyArLQogNSBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAyNSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIv ZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCAxZDk1MDlhMmY2Li5kOWY4MWRmYTU0 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTMxNzgsMTMgKzMxNzgsMjQgQEAgU0VMRUNUIHBpZCwg d2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3 YWl0X2V2ZW50IGkKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+YXBwbHlfbGVhZGVyX3Bp ZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludGVnZXI8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBQcm9jZXNzIElEIG9mIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLCBp ZiB0aGlzIHByb2Nlc3MgaXMgYSBhcHBseQorICAgICAgIHBhcmFsbGVsIHdvcmtlci4gTlVMTCBp ZiB0aGlzIHByb2Nlc3MgaXMgYSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIGEKKyAgICAgICBzeW5j aHJvbml6YXRpb24gd29ya2VyLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxpZDwv c3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJh PgogICAgICAgIE9JRCBvZiB0aGUgcmVsYXRpb24gdGhhdCB0aGUgd29ya2VyIGlzIHN5bmNocm9u aXppbmc7IG51bGwgZm9yIHRoZQotICAgICAgIG1haW4gYXBwbHkgd29ya2VyCisgICAgICAgbWFp biBhcHBseSB3b3JrZXIgYW5kIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzE5NCw3ICszMjA1LDcgQEAgU0VMRUNUIHBp ZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVS RSB3YWl0X2V2ZW50IGkKICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgIExhc3Qg d3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIHJlY2VpdmVkLCB0aGUgaW5pdGlhbCB2YWx1ZSBvZgot ICAgICAgIHRoaXMgZmllbGQgYmVpbmcgMAorICAgICAgIHRoaXMgZmllbGQgYmVpbmcgMDsgbnVs bCBmb3IgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAg ICAgIDwvcm93PgogCkBAIC0zMjAzLDcgKzMyMTQsOCBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50 X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQg aQogICAgICAgIDxzdHJ1Y3RmaWVsZD5sYXN0X21zZ19zZW5kX3RpbWU8L3N0cnVjdGZpZWxkPiA8 dHlwZT50aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmU8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAg ICA8cGFyYT4KLSAgICAgICBTZW5kIHRpbWUgb2YgbGFzdCBtZXNzYWdlIHJlY2VpdmVkIGZyb20g b3JpZ2luIFdBTCBzZW5kZXIKKyAgICAgICBTZW5kIHRpbWUgb2YgbGFzdCBtZXNzYWdlIHJlY2Vp dmVkIGZyb20gb3JpZ2luIFdBTCBzZW5kZXI7IG51bGwgZm9yIHRoZQorICAgICAgIHBhcmFsbGVs IGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0z MjEyLDcgKzMyMjQsOCBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQg RlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgIDxzdHJ1Y3Rm aWVsZD5sYXN0X21zZ19yZWNlaXB0X3RpbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50aW1lc3RhbXAg d2l0aCB0aW1lIHpvbmU8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAg ICBSZWNlaXB0IHRpbWUgb2YgbGFzdCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gb3JpZ2luIFdBTCBz ZW5kZXIKKyAgICAgICBSZWNlaXB0IHRpbWUgb2YgbGFzdCBtZXNzYWdlIHJlY2VpdmVkIGZyb20g b3JpZ2luIFdBTCBzZW5kZXI7IG51bGwgZm9yCisgICAgICAgdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0zMjIxLDcgKzMy MzQsOCBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19z dGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgIDxzdHJ1Y3RmaWVsZD5sYXRl c3RfZW5kX2xzbjwvc3RydWN0ZmllbGQ+IDx0eXBlPnBnX2xzbjwvdHlwZT4KICAgICAgIDwvcGFy YT4KICAgICAgIDxwYXJhPgotICAgICAgIExhc3Qgd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIHJl cG9ydGVkIHRvIG9yaWdpbiBXQUwgc2VuZGVyCisgICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cg bG9jYXRpb24gcmVwb3J0ZWQgdG8gb3JpZ2luIFdBTCBzZW5kZXI7IG51bGwgZm9yCisgICAgICAg dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwv cm93PgogCkBAIC0zMjMxLDcgKzMyNDUsNyBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUs IHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAg ICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgVGltZSBvZiBsYXN0IHdyaXRlLWFoZWFk IGxvZyBsb2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FMCi0gICAgICAgc2VuZGVyCisgICAg ICAgc2VuZGVyOyBudWxsIGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3Bh cmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbAppbmRleCBmNGEwMDQ5NmVlLi4zZjE1Y2YyNGU5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC05NDYsNiArOTQ2LDcgQEAgQ1JFQVRFIFZJRVcgcGdf c3RhdF9zdWJzY3JpcHRpb24gQVMKICAgICAgICAgICAgIHN1Lm9pZCBBUyBzdWJpZCwKICAgICAg ICAgICAgIHN1LnN1Ym5hbWUsCiAgICAgICAgICAgICBzdC5waWQsCisgICAgICAgICAgICBzdC5h cHBseV9sZWFkZXJfcGlkLAogICAgICAgICAgICAgc3QucmVsaWQsCiAgICAgICAgICAgICBzdC5y ZWNlaXZlZF9sc24sCiAgICAgICAgICAgICBzdC5sYXN0X21zZ19zZW5kX3RpbWUsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggMWFhODVkMjUzMy4uNzdi NzM4NDgwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVu Y2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpA QCAtMTA1Miw3ICsxMDUyLDcgQEAgSXNMb2dpY2FsTGF1bmNoZXIodm9pZCkKIERhdHVtCiBwZ19z dGF0X2dldF9zdWJzY3JpcHRpb24oUEdfRlVOQ1RJT05fQVJHUykKIHsKLSNkZWZpbmUgUEdfU1RB VF9HRVRfU1VCU0NSSVBUSU9OX0NPTFMJOAorI2RlZmluZSBQR19TVEFUX0dFVF9TVUJTQ1JJUFRJ T05fQ09MUwk5CiAJT2lkCQkJc3ViaWQgPSBQR19BUkdJU05VTEwoMCkgPyBJbnZhbGlkT2lkIDog UEdfR0VUQVJHX09JRCgwKTsKIAlpbnQJCQlpOwogCVJldHVyblNldEluZm8gKnJzaW5mbyA9IChS ZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKQEAgLTEwNzgsMTAgKzEwNzgsNiBA QCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oUEdfRlVOQ1RJT05fQVJHUykKIAkJaWYgKE9pZElz VmFsaWQoc3ViaWQpICYmIHdvcmtlci5zdWJpZCAhPSBzdWJpZCkKIAkJCWNvbnRpbnVlOwogCi0J CS8qIFNraXAgaWYgdGhpcyBpcyBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKi8KLQkJaWYgKHdvcmtl ci5hcHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQpCi0JCQljb250aW51ZTsKLQogCQl3b3Jr ZXJfcGlkID0gd29ya2VyLnByb2MtPnBpZDsKIAogCQl2YWx1ZXNbMF0gPSBPYmplY3RJZEdldERh dHVtKHdvcmtlci5zdWJpZCk7CkBAIC0xMDkwLDI2ICsxMDg2LDMyIEBAIHBnX3N0YXRfZ2V0X3N1 YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQllbHNlCiAJCQludWxsc1sxXSA9IHRydWU7 CiAJCXZhbHVlc1syXSA9IEludDMyR2V0RGF0dW0od29ya2VyX3BpZCk7Ci0JCWlmIChYTG9nUmVj UHRySXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCisKKwkJaWYgKHdvcmtlci5hcHBseV9sZWFk ZXJfcGlkID09IEludmFsaWRQaWQpCiAJCQludWxsc1szXSA9IHRydWU7CiAJCWVsc2UKLQkJCXZh bHVlc1szXSA9IExTTkdldERhdHVtKHdvcmtlci5sYXN0X2xzbik7Ci0JCWlmICh3b3JrZXIubGFz dF9zZW5kX3RpbWUgPT0gMCkKKwkJCXZhbHVlc1szXSA9IEludDMyR2V0RGF0dW0od29ya2VyLmFw cGx5X2xlYWRlcl9waWQpOworCisJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5sYXN0 X2xzbikpCiAJCQludWxsc1s0XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s0XSA9IFRpbWVz dGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3Rfc2VuZF90aW1lKTsKLQkJaWYgKHdvcmtlci5sYXN0 X3JlY3ZfdGltZSA9PSAwKQorCQkJdmFsdWVzWzRdID0gTFNOR2V0RGF0dW0od29ya2VyLmxhc3Rf bHNuKTsKKwkJaWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQogCQkJbnVsbHNbNV0gPSB0 cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbNV0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5s YXN0X3JlY3ZfdGltZSk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5yZXBseV9s c24pKQorCQkJdmFsdWVzWzVdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9zZW5k X3RpbWUpOworCQlpZiAod29ya2VyLmxhc3RfcmVjdl90aW1lID09IDApCiAJCQludWxsc1s2XSA9 IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s2XSA9IExTTkdldERhdHVtKHdvcmtlci5yZXBseV9s c24pOwotCQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkKKwkJCXZhbHVlc1s2XSA9IFRpbWVz dGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1lKTsKKwkJaWYgKFhMb2dSZWNQdHJJ c0ludmFsaWQod29ya2VyLnJlcGx5X2xzbikpCiAJCQludWxsc1s3XSA9IHRydWU7CiAJCWVsc2UK LQkJCXZhbHVlc1s3XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLnJlcGx5X3RpbWUpOwor CQkJdmFsdWVzWzddID0gTFNOR2V0RGF0dW0od29ya2VyLnJlcGx5X2xzbik7CisJCWlmICh3b3Jr ZXIucmVwbHlfdGltZSA9PSAwKQorCQkJbnVsbHNbOF0gPSB0cnVlOworCQllbHNlCisJCQl2YWx1 ZXNbOF0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5yZXBseV90aW1lKTsKIAogCQl0dXBs ZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLAogCQkJ CQkJCSB2YWx1ZXMsIG51bGxzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGEwN2U3Mzdh MzMuLjZiMThmNzc1YTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTM5Myw5ICs1Mzkz LDkgQEAKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uJywgcHJvcm93cyA9 PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0 aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAogICBwcm9yZXR0eXBlID0+ICdyZWNvcmQn LCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9p ZCxpbnQ0LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixwZ19sc24sdGltZXN0YW1wdHp9 JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1l cyA9PiAne3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90 aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9 JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LGludDQscGdfbHNuLHRp bWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1lc3RhbXB0en0nLAorICBwcm9hcmdtb2Rl cyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzdWJpZCxz dWJpZCxyZWxpZCxwaWQsYXBwbHlfbGVhZGVyX3BpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2Vu ZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3Rp bWV9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24nIH0sCiB7IG9pZCA9 PiAnMjAyNicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBjdXJyZW50IGJhY2tlbmQgUElEJywKICAg cHJvbmFtZSA9PiAncGdfYmFja2VuZF9waWQnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFs bGVsID0+ICdyJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggOWRkMTM3NDE1 ZS4uYzY5ZjZlNDcxYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTIwODYs NiArMjA4Niw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qgcy5waWQsCiBwZ19zdGF0X3N1YnNjcmlw dGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdS5zdWJuYW1lLAogICAgIHN0LnBp ZCwKKyAgICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAgIHN0LnJlbGlkLAogICAgIHN0LnJlY2Vp dmVkX2xzbiwKICAgICBzdC5sYXN0X21zZ19zZW5kX3RpbWUsCkBAIC0yMDkzLDcgKzIwOTQsNyBA QCBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdC5s YXRlc3RfZW5kX2xzbiwKICAgICBzdC5sYXRlc3RfZW5kX3RpbWUKICAgIEZST00gKHBnX3N1YnNj cmlwdGlvbiBzdQotICAgICBMRUZUIEpPSU4gcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKE5VTEw6 Om9pZCkgc3Qoc3ViaWQsIHJlbGlkLCBwaWQsIHJlY2VpdmVkX2xzbiwgbGFzdF9tc2dfc2VuZF90 aW1lLCBsYXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9lbmRfbHNuLCBsYXRlc3RfZW5kX3Rp bWUpIE9OICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CisgICAgIExFRlQgSk9JTiBwZ19zdGF0X2dl dF9zdWJzY3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgYXBwbHlfbGVh ZGVyX3BpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5kX3RpbWUsIGxhc3RfbXNnX3JlY2Vp cHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRfdGltZSkgT04gKChzdC5zdWJpZCA9 IHN1Lm9pZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzfCBTRUxFQ1Qgc3Muc3ViaWQs CiAgICAgcy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vycm9yX2NvdW50LAotLSAKMi4yMy4wLndp bmRvd3MuMQoK --_006_OS3PR01MB6275F4A7CA186412E2FF2ED29E529OS3PR01MB6275jpnp_--