From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2069.outbound.protection.outlook.com [40.107.241.69]) by sourceware.org (Postfix) with ESMTPS id DCED33858C27 for ; Wed, 27 Sep 2023 00:45:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DCED33858C27 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QUnX3KYYwNU7swGHG5n25RVKHEu/dfKbhKdJcWGfanI=; b=7MAxQsNU2SqvZ9RIT/xm4x7vTWdsrs3GW2Fek/i1/7VOjQDqB6Kztcu3jem5x/3iujcyzBynWDSOMVb9fOUntecfkrIy+eSzGwj/X7Sokn5LNH5+rPnfjKO6pBuGJA2i+yC9ts6NcE7JsAQK5pFhAVTYh+xbIgwEBtYCB79gnrE= Received: from DB8PR06CA0045.eurprd06.prod.outlook.com (2603:10a6:10:120::19) by GVXPR08MB8212.eurprd08.prod.outlook.com (2603:10a6:150:16::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Wed, 27 Sep 2023 00:45:05 +0000 Received: from DBAEUR03FT016.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:120:cafe::cb) by DB8PR06CA0045.outlook.office365.com (2603:10a6:10:120::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.32 via Frontend Transport; Wed, 27 Sep 2023 00:45:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT016.mail.protection.outlook.com (100.127.142.204) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.19 via Frontend Transport; Wed, 27 Sep 2023 00:45:05 +0000 Received: ("Tessian outbound 0b7d6027328f:v175"); Wed, 27 Sep 2023 00:45:05 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: e8cfbe38b0367206 X-CR-MTA-TID: 64aa7808 Received: from fb8cfc0f5a01.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 743729BF-D3BC-43C9-BE9F-A16AA8A7F265.1; Wed, 27 Sep 2023 00:44:58 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id fb8cfc0f5a01.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 27 Sep 2023 00:44:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bP1Gvo76WqtEXYWhCehl+t1NrB3hMsjoUDl4lxkZmcVnb4dkuC+qf88m1kj1GRXWuFKMZxa/85em4sswBaE7+KV8PSseNxsIInN3BnSYVCxkztK7J8A+C3QobKfZo5d3SqC5uAK/ja+ZNC4o4PdVHCd2NMGOxfouyZdCmFwsjMuNEOkKbpo40Fq6z/tdlDWi77yKhmMESquYIq4oobIDvaf9NR16gfMSmLjbH/gWRPlMJiYCHBdODxVaQ1xZvez+Qnmzm3d3YUzlOiKb0tEXQQZ9u0/apdyK7/6LhDupCM8rotAB4KNg6gojBHNm/zoa/lJkNOk5Y4Q1kLvhULOAjA== 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=QUnX3KYYwNU7swGHG5n25RVKHEu/dfKbhKdJcWGfanI=; b=hQ4l/TBNvmC79mcwZoXT00XxXnKNircO+dvfhCAx1BtEdIJeGyKz0rb6vI52GXrs3/JLhcILs70kR0ejeLOXBdouP8hsBaZJFxSN9uHttQH3u7nT4xk+Z/hyQz6VqXjIWVNu2Xa5pJkTkPqJMmMRhjU2gacH5oDQ0ME9f6NZaDKswgS2now7fxllyNkb/W7MBlAwcpmURXVHooJNPWn8CLz8AdQzISjUUg5adroO8/LVEmeXmE3iYEbVEJy0Ke+1pFSNuHULFbJJutFGKWeRDqQ+r2NHMPJ+tPHUFPgmFdh/LnBxKiLVP8szb0WjkUylFxf7PSM17s8dVLe2lavXVA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QUnX3KYYwNU7swGHG5n25RVKHEu/dfKbhKdJcWGfanI=; b=7MAxQsNU2SqvZ9RIT/xm4x7vTWdsrs3GW2Fek/i1/7VOjQDqB6Kztcu3jem5x/3iujcyzBynWDSOMVb9fOUntecfkrIy+eSzGwj/X7Sokn5LNH5+rPnfjKO6pBuGJA2i+yC9ts6NcE7JsAQK5pFhAVTYh+xbIgwEBtYCB79gnrE= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by AS8PR08MB9743.eurprd08.prod.outlook.com (2603:10a6:20b:615::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Wed, 27 Sep 2023 00:44:56 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::662f:8e26:1bf8:aaa1]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::662f:8e26:1bf8:aaa1%7]) with mapi id 15.20.6813.027; Wed, 27 Sep 2023 00:44:55 +0000 From: Tamar Christina To: Robin Dapp , gcc-patches , Richard Biener Subject: RE: [PATCH] ifcvt/vect: Emit COND_ADD for conditional scalar reduction. Thread-Topic: [PATCH] ifcvt/vect: Emit COND_ADD for conditional scalar reduction. Thread-Index: AQHZ68mTraLO0OuF1E+ghd6M1r2t27At07uQ Date: Wed, 27 Sep 2023 00:44:54 +0000 Message-ID: References: <0193b63e-98dc-42bc-cd33-485361ea50bf@gmail.com> In-Reply-To: <0193b63e-98dc-42bc-cd33-485361ea50bf@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|AS8PR08MB9743:EE_|DBAEUR03FT016:EE_|GVXPR08MB8212:EE_ X-MS-Office365-Filtering-Correlation-Id: ad485c94-d744-48cd-b1b9-08dbbef2fdbe x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: h8NPrXo/FopXQEK7rP1pjDuBn8NuGdi+geyr/8kjsMFEMonJYKN1RtexJ0lEYZUF0DFuldeHIQmfy/Ev43sEgLo2B77XMfhNlRc/i5md2CErZhS5FW3RLobU/Wu71qANUeyoD47cx4ju15jiiZ3zAXf+sOY7U2Pml36dC37ULR0loxMA8FJFg9XfbUkutvbUIYEV+ehLSkGAbHacrq9qV4w4AMXpQJcYQ058L4cp0dgcAYPC7ka6AxXPvs56ZPtoCa2CcYUn8QYB7JkgWkc/A7IdIIo7UW+hFYCQZxW6KgcthVsGuAiM88DSKSdiFUZb/M2R3nl4GIfxQVT0wdNGmgPN5zby2YAH85NjYuDTqxc5S7F3Fe7Cwx7gFKqHDRNz8OQX4SOziEUpHhcOKH41RrScCmIEtF5UTQjd57DbOtPNaAMJJzqfodrowkVd+33pYnjleDcANhaTk7QtG2zW8gLb2FLgX/2Is0kBaghwwYZ6vDQJUvEjzJQcKsB8GVuuYcY4Og3g74kzyuJ0SRwDZONayQhJlIF0TzqIj2q7ZldmWFUp0SNFq1JDfO8Okh3diLb/1g+O3Oq685+HCmgMELjRcFYNFoNKAdr7tHS/aE6Q0OJt26qHLkhFvfsxCjBp X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(136003)(346002)(396003)(376002)(39860400002)(230922051799003)(1800799009)(186009)(451199024)(71200400001)(26005)(478600001)(122000001)(86362001)(38070700005)(83380400001)(33656002)(6506007)(55016003)(7696005)(5660300002)(38100700002)(9686003)(8676002)(8936002)(2906002)(316002)(41300700001)(66946007)(110136005)(64756008)(66476007)(66556008)(66446008)(76116006)(30864003)(52536014)(579004)(559001);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9743 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT016.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: b738d6fb-b3f8-42f3-481b-08dbbef2f791 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +w59pepOiJSwVE0L14CWOQ29CUnSh7w4uOvDjgGObPN/D+E9Ff7rn5ZqfD3ROjPSFzlcsTHbkuX+y5EgUGUFZcavXd7OnTI/j6Ih844mF0ojzNAGaDrtR9XGBwbt0zWBqdU9WmwmBvSQHag4VmSPUGNe/uYz+zm3QcNGxZ1c7Vw/HlkW1bjzsUc3S7WMKougFcyFQyNG/QcEuH6dA/FvErHuOmNv9hDEimmTKlmRGNwmbLaS/Q00YeWPv9p/yjfZtL7W6EIp1/Jw/SBMvQEWNgI9IZIcXBRuwnEK+M7/MMRk0Bv0EzCHJux3962qlQ1n/oX4d9/oC7HalpyAiEL3i7GdRzhsWxiQ2YFUL6s4lszGjGTmtvqAOP2BOsw29H4BNfm175sfUrQrCpqmxS4KIgfdX0xPIq+TqGYVG49wuzRuXJHUrDsjrhNIzg61Bn9HQOgkCDp4X7/KqcTG/gY039nbrAmylPfxBWjIKiz62USTi6HE3bh5ERXu5hZ76yRXOYc2LvXCZUhQQgBZ0U325seNsKy3dNU92GliaF2haBfb4vIB72/FxcJTlrVwzPlze7n2H77//qALryk0wuGDQ7m73bNACBE90newVSHrDOcpTbjwJ7Jr5lMpWhcMBiISgezeCYweO93D9AJpKHR6egYdfYvCrYAJMILXrFbm2Tuhj+/eP3xBlngyPfIriOt+ObBsSEeYQ69DmKaYWmYDWRCBsTPWcBPOoEjjugks9pt/Bv69W486v7rJkWSIfGuZ X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230031)(4636009)(396003)(346002)(136003)(39860400002)(376002)(230922051799003)(451199024)(1800799009)(82310400011)(186009)(40470700004)(36840700001)(46966006)(33656002)(86362001)(55016003)(40480700001)(52536014)(70586007)(6506007)(26005)(5660300002)(70206006)(110136005)(9686003)(336012)(316002)(8676002)(478600001)(7696005)(41300700001)(8936002)(47076005)(2906002)(356005)(40460700003)(82740400003)(81166007)(83380400001)(36860700001)(30864003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Sep 2023 00:45:05.1396 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ad485c94-d744-48cd-b1b9-08dbbef2fdbe X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT016.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB8212 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: SGksDQoNCkkgY2FuJ3QgYXBwcm92ZSBidXQgaG9wZSB5b3UgZG9uJ3QgbWluZCB0aGUgcmV2aWV3 LA0KDQo+ICsvKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIENPREUgZGVzY3JpYmVzIGEgY29uZGl0aW9u YWwgKG1hc2tlZCkNCj4gK2ludGVybmFsX2ZuLiAgKi8NCj4gKw0KPiArYm9vbA0KPiArY29uZF9m bl9wIChjb2RlX2hlbHBlciBjb2RlKQ0KPiArew0KPiArICBpZiAoIWNvZGUuaXNfZm5fY29kZSAo KSkNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgaWYgKCFpbnRlcm5hbF9mbl9wICgo Y29tYmluZWRfZm4pIGNvZGUpKQ0KPiArICAgIHJldHVybiBmYWxzZTsNCj4gKw0KPiArICBpbnRl cm5hbF9mbiBmbiA9IGFzX2ludGVybmFsX2ZuICgoY29tYmluZWRfZm4pIGNvZGUpOyAgc3dpdGNo IChmbikNCj4gKyAgICB7DQo+ICsgICAgI3VuZGVmIERFRl9JTlRFUk5BTF9DT05EX0ZODQo+ICsg ICAgI2RlZmluZSBERUZfSU5URVJOQUxfQ09ORF9GTihOQU1FLCBGLCBPLCBUKQkJCSAgXA0KPiAr ICAgIGNhc2UgSUZOX0NPTkRfIyNOQU1FOgkJCQkJICBcDQo+ICsgICAgY2FzZSBJRk5fQ09ORF9M RU5fIyNOQU1FOgkJCQkJICBcDQo+ICsgICAgICByZXR1cm4gdHJ1ZTsNCj4gKyAgICAjaW5jbHVk ZSAiaW50ZXJuYWwtZm4uZGVmIg0KPiArICAgICN1bmRlZiBERUZfSU5URVJOQUxfQ09ORF9GTg0K PiArDQo+ICsgICAgI3VuZGVmIERFRl9JTlRFUk5BTF9TSUdORURfQ09ORF9GTg0KPiArICAgICNk ZWZpbmUgREVGX0lOVEVSTkFMX1NJR05FRF9DT05EX0ZOKE5BTUUsIEYsIFMsIFNPLCBVTywgVCkJ ICBcDQo+ICsgICAgY2FzZSBJRk5fQ09ORF8jI05BTUU6CQkJCQkgIFwNCj4gKyAgICBjYXNlIElG Tl9DT05EX0xFTl8jI05BTUU6CQkJCQkgIFwNCj4gKyAgICAgIHJldHVybiB0cnVlOw0KPiArICAg ICNpbmNsdWRlICJpbnRlcm5hbC1mbi5kZWYiDQo+ICsgICAgI3VuZGVmIERFRl9JTlRFUk5BTF9T SUdORURfQ09ORF9GTg0KPiArDQo+ICsgICAgZGVmYXVsdDoNCj4gKyAgICAgIHJldHVybiBmYWxz ZTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgcmV0dXJuIGZhbHNlOw0KPiArfQ0KPiArDQo+ICsNCg0K Q291bGQgeW91IG5vdCB1c2UgY29uZGl0aW9uYWxfaW50ZXJuYWxfZm5fY29kZSBmb3IgdGhpcz8g SnVzdCBjaGVjayByZXN1bHQgaXMgbm90IEVSUk9SX01BUks/DQoNCj4gIC8qIFJldHVybiB0cnVl IGlmIHRoaXMgQ09ERSBkZXNjcmliZXMgYW4gaW50ZXJuYWxfZm4gdGhhdCByZXR1cm5zIGEgdmVj dG9yIHdpdGgNCj4gICAgIGVsZW1lbnRzIHR3aWNlIGFzIHdpZGUgYXMgdGhlIGVsZW1lbnQgc2l6 ZSBvZiB0aGUgaW5wdXQgdmVjdG9ycy4gICovDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2ludGVy bmFsLWZuLmggYi9nY2MvaW50ZXJuYWwtZm4uaCBpbmRleA0KPiA5OWRlMTNhMDE5OS4uZjFjYzlk YjI5YzAgMTAwNjQ0DQo+IC0tLSBhL2djYy9pbnRlcm5hbC1mbi5oDQo+ICsrKyBiL2djYy9pbnRl cm5hbC1mbi5oDQo+IEBAIC0yMTksNiArMjE5LDcgQEAgZXh0ZXJuIGJvb2wgY29tbXV0YXRpdmVf dGVybmFyeV9mbl9wIChpbnRlcm5hbF9mbik7DQo+IGV4dGVybiBpbnQgZmlyc3RfY29tbXV0YXRp dmVfYXJndW1lbnQgKGludGVybmFsX2ZuKTsgIGV4dGVybiBib29sDQo+IGFzc29jaWF0aXZlX2Jp bmFyeV9mbl9wIChpbnRlcm5hbF9mbik7ICBleHRlcm4gYm9vbCB3aWRlbmluZ19mbl9wDQo+IChj b2RlX2hlbHBlcik7DQo+ICtleHRlcm4gYm9vbCBjb25kX2ZuX3AgKGNvZGVfaGVscGVyIGNvZGUp Ow0KPiANCj4gIGV4dGVybiBib29sIHNldF9lZG9tX3N1cHBvcnRlZF9wICh2b2lkKTsNCj4gDQo+ IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtY29uZC1yZWR1Yy1p bi1vcmRlci0yLXNpZ25lZC0NCj4gemVyby5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92 ZWN0LWNvbmQtcmVkdWMtaW4tb3JkZXItMi1zaWduZWQtemVyby5jDQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi41N2M2MDA4MzhlZQ0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1jb25kLXJlZHVjLWluLW9y ZGVyLTItc2lnbmVkLXplcm8uYw0KPiBAQCAtMCwwICsxLDE0MSBAQA0KPiArLyogTWFrZSBzdXJl IGEgLTAgc3RheXMgLTAgd2hlbiB3ZSBwZXJmb3JtIGEgY29uZGl0aW9uYWwgcmVkdWN0aW9uLiAg Ki8NCj4gKy8qIHsgZGctZG8gcnVuIH0gKi8NCj4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUt dGFyZ2V0IHZlY3RfZG91YmxlIH0gKi8NCj4gKy8qIHsgZGctYWRkLW9wdGlvbnMgaWVlZSB9ICov DQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLXN0ZD1jOTkgLWZuby1mYXN0LW1hdGgi IH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgInRyZWUtdmVjdC5oIg0KPiArDQo+ICsjaW5jbHVkZSA8 bWF0aC5oPg0KPiArDQo+ICsjZGVmaW5lIE4gKFZFQ1RPUl9CSVRTICogMTcpDQo+ICsNCj4gK2Rv dWJsZSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUsIG5vY2xvbmUpKSByZWR1Y19wbHVzX2RvdWJs ZSAoZG91YmxlDQo+ICsqcmVzdHJpY3QgYSwgZG91YmxlIGluaXQsIGludCAqY29uZCwgaW50IG4p IHsNCj4gKyAgZG91YmxlIHJlcyA9IGluaXQ7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsg aSsrKQ0KPiArICAgIGlmIChjb25kW2ldKQ0KPiArICAgICAgcmVzICs9IGFbaV07DQo+ICsgIHJl dHVybiByZXM7DQo+ICt9DQo+ICsNCj4gK2RvdWJsZSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUs IG5vY2xvbmUsIG9wdGltaXplICgiMCIpKSkNCj4gK3JlZHVjX3BsdXNfZG91YmxlX3JlZiAoZG91 YmxlICpyZXN0cmljdCBhLCBkb3VibGUgaW5pdCwgaW50ICpjb25kLCBpbnQNCj4gK24pIHsNCj4g KyAgZG91YmxlIHJlcyA9IGluaXQ7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQ0K PiArICAgIGlmIChjb25kW2ldKQ0KPiArICAgICAgcmVzICs9IGFbaV07DQo+ICsgIHJldHVybiBy ZXM7DQo+ICt9DQo+ICsNCj4gK2RvdWJsZSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUsIG5vY2xv bmUpKSByZWR1Y19taW51c19kb3VibGUgKGRvdWJsZQ0KPiArKnJlc3RyaWN0IGEsIGRvdWJsZSBp bml0LCBpbnQgKmNvbmQsIGludCBuKSB7DQo+ICsgIGRvdWJsZSByZXMgPSBpbml0Ow0KPiArICBm b3IgKGludCBpID0gMDsgaSA8IG47IGkrKykNCj4gKyAgICBpZiAoY29uZFtpXSkNCj4gKyAgICAg IHJlcyAtPSBhW2ldOw0KPiArICByZXR1cm4gcmVzOw0KPiArfQ0KPiArDQo+ICtkb3VibGUgX19h dHRyaWJ1dGVfXyAoKG5vaW5saW5lLCBub2Nsb25lLCBvcHRpbWl6ZSAoIjAiKSkpDQo+ICtyZWR1 Y19taW51c19kb3VibGVfcmVmIChkb3VibGUgKnJlc3RyaWN0IGEsIGRvdWJsZSBpbml0LCBpbnQg KmNvbmQsIGludA0KPiArbikgew0KPiArICBkb3VibGUgcmVzID0gaW5pdDsNCj4gKyAgZm9yIChp bnQgaSA9IDA7IGkgPCBuOyBpKyspDQo+ICsgICAgaWYgKGNvbmRbaV0pDQo+ICsgICAgICByZXMg LT0gYVtpXTsNCj4gKyAgcmV0dXJuIHJlczsNCj4gK30NCj4gKw0KPiAraW50IF9fYXR0cmlidXRl X18gKChvcHRpbWl6ZSAoMSkpKQ0KPiArbWFpbiAoKQ0KPiArew0KPiArICBpbnQgbiA9IDE5Ow0K PiArICBkb3VibGUgYVtOXTsNCj4gKyAgaW50IGNvbmQxW05dLCBjb25kMltOXTsNCj4gKw0KPiAr ICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykNCj4gKyAgICB7DQo+ICsgICAgICBhW2ldID0g KGkgKiAwLjEpICogKGkgJiAxID8gMSA6IC0xKTsNCj4gKyAgICAgIGNvbmQxW2ldID0gMDsNCj4g KyAgICAgIGNvbmQyW2ldID0gaSAmIDQgPyAxIDogMDsNCj4gKyAgICAgIGFzbSB2b2xhdGlsZSAo IiIgOjo6ICJtZW1vcnkiKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgZG91YmxlIHJlczEgPSByZWR1 Y19wbHVzX2RvdWJsZSAoYSwgLTAuMCwgY29uZDEsIG4pOyAgZG91YmxlIHJlZjEgPQ0KPiArIHJl ZHVjX3BsdXNfZG91YmxlX3JlZiAoYSwgLTAuMCwgY29uZDEsIG4pOyAgZG91YmxlIHJlczIgPQ0K PiArIHJlZHVjX21pbnVzX2RvdWJsZSAoYSwgLTAuMCwgY29uZDEsIG4pOyAgZG91YmxlIHJlZjIg PQ0KPiArIHJlZHVjX21pbnVzX2RvdWJsZV9yZWYgKGEsIC0wLjAsIGNvbmQxLCBuKTsgIGRvdWJs ZSByZXMzID0NCj4gKyByZWR1Y19wbHVzX2RvdWJsZSAoYSwgLTAuMCwgY29uZDEsIG4pOyAgZG91 YmxlIHJlZjMgPQ0KPiArIHJlZHVjX3BsdXNfZG91YmxlX3JlZiAoYSwgLTAuMCwgY29uZDEsIG4p OyAgZG91YmxlIHJlczQgPQ0KPiArIHJlZHVjX21pbnVzX2RvdWJsZSAoYSwgLTAuMCwgY29uZDEs IG4pOyAgZG91YmxlIHJlZjQgPQ0KPiArIHJlZHVjX21pbnVzX2RvdWJsZV9yZWYgKGEsIC0wLjAs IGNvbmQxLCBuKTsNCj4gKw0KPiArICBpZiAocmVzMSAhPSByZWYxIHx8IHNpZ25iaXQgKHJlczEp ICE9IHNpZ25iaXQgKHJlZjEpKQ0KPiArICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gKyAgaWYg KHJlczIgIT0gcmVmMiB8fCBzaWduYml0IChyZXMyKSAhPSBzaWduYml0IChyZWYyKSkNCj4gKyAg ICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsgIGlmIChyZXMzICE9IHJlZjMgfHwgc2lnbmJpdCAo cmVzMykgIT0gc2lnbmJpdCAocmVmMykpDQo+ICsgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiAr ICBpZiAocmVzNCAhPSByZWY0IHx8IHNpZ25iaXQgKHJlczQpICE9IHNpZ25iaXQgKHJlZjQpKQ0K PiArICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gKw0KPiArICByZXMxID0gcmVkdWNfcGx1c19k b3VibGUgKGEsIDAuMCwgY29uZDEsIG4pOw0KPiArICByZWYxID0gcmVkdWNfcGx1c19kb3VibGVf cmVmIChhLCAwLjAsIGNvbmQxLCBuKTsNCj4gKyAgcmVzMiA9IHJlZHVjX21pbnVzX2RvdWJsZSAo YSwgMC4wLCBjb25kMSwgbik7DQo+ICsgIHJlZjIgPSByZWR1Y19taW51c19kb3VibGVfcmVmIChh LCAwLjAsIGNvbmQxLCBuKTsNCj4gKyAgcmVzMyA9IHJlZHVjX3BsdXNfZG91YmxlIChhLCAwLjAs IGNvbmQxLCBuKTsNCj4gKyAgcmVmMyA9IHJlZHVjX3BsdXNfZG91YmxlX3JlZiAoYSwgMC4wLCBj b25kMSwgbik7DQo+ICsgIHJlczQgPSByZWR1Y19taW51c19kb3VibGUgKGEsIDAuMCwgY29uZDEs IG4pOw0KPiArICByZWY0ID0gcmVkdWNfbWludXNfZG91YmxlX3JlZiAoYSwgMC4wLCBjb25kMSwg bik7DQo+ICsNCj4gKyAgaWYgKHJlczEgIT0gcmVmMSB8fCBzaWduYml0IChyZXMxKSAhPSBzaWdu Yml0IChyZWYxKSkNCj4gKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsgIGlmIChyZXMyICE9 IHJlZjIgfHwgc2lnbmJpdCAocmVzMikgIT0gc2lnbmJpdCAocmVmMikpDQo+ICsgICAgX19idWls dGluX2Fib3J0ICgpOw0KPiArICBpZiAocmVzMyAhPSByZWYzIHx8IHNpZ25iaXQgKHJlczMpICE9 IHNpZ25iaXQgKHJlZjMpKQ0KPiArICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gKyAgaWYgKHJl czQgIT0gcmVmNCB8fCBzaWduYml0IChyZXM0KSAhPSBzaWduYml0IChyZWY0KSkNCj4gKyAgICBf X2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsNCj4gKyAgcmVzMSA9IHJlZHVjX3BsdXNfZG91YmxlIChh LCAtMC4wLCBjb25kMiwgbik7DQo+ICsgIHJlZjEgPSByZWR1Y19wbHVzX2RvdWJsZV9yZWYgKGEs IC0wLjAsIGNvbmQyLCBuKTsNCj4gKyAgcmVzMiA9IHJlZHVjX21pbnVzX2RvdWJsZSAoYSwgLTAu MCwgY29uZDIsIG4pOw0KPiArICByZWYyID0gcmVkdWNfbWludXNfZG91YmxlX3JlZiAoYSwgLTAu MCwgY29uZDIsIG4pOw0KPiArICByZXMzID0gcmVkdWNfcGx1c19kb3VibGUgKGEsIC0wLjAsIGNv bmQyLCBuKTsNCj4gKyAgcmVmMyA9IHJlZHVjX3BsdXNfZG91YmxlX3JlZiAoYSwgLTAuMCwgY29u ZDIsIG4pOw0KPiArICByZXM0ID0gcmVkdWNfbWludXNfZG91YmxlIChhLCAtMC4wLCBjb25kMiwg bik7DQo+ICsgIHJlZjQgPSByZWR1Y19taW51c19kb3VibGVfcmVmIChhLCAtMC4wLCBjb25kMiwg bik7DQo+ICsNCj4gKyAgaWYgKHJlczEgIT0gcmVmMSB8fCBzaWduYml0IChyZXMxKSAhPSBzaWdu Yml0IChyZWYxKSkNCj4gKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsgIGlmIChyZXMyICE9 IHJlZjIgfHwgc2lnbmJpdCAocmVzMikgIT0gc2lnbmJpdCAocmVmMikpDQo+ICsgICAgX19idWls dGluX2Fib3J0ICgpOw0KPiArICBpZiAocmVzMyAhPSByZWYzIHx8IHNpZ25iaXQgKHJlczMpICE9 IHNpZ25iaXQgKHJlZjMpKQ0KPiArICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gKyAgaWYgKHJl czQgIT0gcmVmNCB8fCBzaWduYml0IChyZXM0KSAhPSBzaWduYml0IChyZWY0KSkNCj4gKyAgICBf X2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsNCj4gKyAgcmVzMSA9IHJlZHVjX3BsdXNfZG91YmxlIChh LCAwLjAsIGNvbmQyLCBuKTsNCj4gKyAgcmVmMSA9IHJlZHVjX3BsdXNfZG91YmxlX3JlZiAoYSwg MC4wLCBjb25kMiwgbik7DQo+ICsgIHJlczIgPSByZWR1Y19taW51c19kb3VibGUgKGEsIDAuMCwg Y29uZDIsIG4pOw0KPiArICByZWYyID0gcmVkdWNfbWludXNfZG91YmxlX3JlZiAoYSwgMC4wLCBj b25kMiwgbik7DQo+ICsgIHJlczMgPSByZWR1Y19wbHVzX2RvdWJsZSAoYSwgMC4wLCBjb25kMiwg bik7DQo+ICsgIHJlZjMgPSByZWR1Y19wbHVzX2RvdWJsZV9yZWYgKGEsIDAuMCwgY29uZDIsIG4p Ow0KPiArICByZXM0ID0gcmVkdWNfbWludXNfZG91YmxlIChhLCAwLjAsIGNvbmQyLCBuKTsNCj4g KyAgcmVmNCA9IHJlZHVjX21pbnVzX2RvdWJsZV9yZWYgKGEsIDAuMCwgY29uZDIsIG4pOw0KPiAr DQo+ICsgIGlmIChyZXMxICE9IHJlZjEgfHwgc2lnbmJpdCAocmVzMSkgIT0gc2lnbmJpdCAocmVm MSkpDQo+ICsgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiArICBpZiAocmVzMiAhPSByZWYyIHx8 IHNpZ25iaXQgKHJlczIpICE9IHNpZ25iaXQgKHJlZjIpKQ0KPiArICAgIF9fYnVpbHRpbl9hYm9y dCAoKTsNCj4gKyAgaWYgKHJlczMgIT0gcmVmMyB8fCBzaWduYml0IChyZXMzKSAhPSBzaWduYml0 IChyZWYzKSkNCj4gKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsgIGlmIChyZXM0ICE9IHJl ZjQgfHwgc2lnbmJpdCAocmVzNCkgIT0gc2lnbmJpdCAocmVmNCkpDQo+ICsgICAgX19idWlsdGlu X2Fib3J0ICgpOw0KPiArDQo+ICsgIHJldHVybiAwOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL2NvbmQvcHIxMTE0MDEuYw0K PiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9jb25kL3ByMTEx NDAxLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLjFkNTU5 Y2U1MzkxDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9hdXRvdmVjL2NvbmQvcHIxMTE0MDEuYw0KPiBAQCAtMCwwICsxLDYxIEBADQo+ ICsvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7IHJpc2N2X3ZlY3RvciB9IH0gfSAqLw0KPiArLyog eyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2N2IC1tYWJpPWxwNjRkIC0tcGFy YW0NCj4gK3Jpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSAtZmR1bXAtdHJlZS12ZWN0 LWRldGFpbHMiIH0gKi8NCj4gKw0KPiArZG91YmxlDQo+ICtfX2F0dHJpYnV0ZV9fICgobm9pcGEp KQ0KPiArZm9vMiAoZG91YmxlICpfX3Jlc3RyaWN0IGEsIGRvdWJsZSBpbml0LCBpbnQgKl9fcmVz dHJpY3QgY29uZCwgaW50IG4pIHsNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspDQo+ ICsgICAgaWYgKGNvbmRbaV0pDQo+ICsgICAgICBpbml0ICs9IGFbaV07DQo+ICsgIHJldHVybiBp bml0Ow0KPiArfQ0KPiArDQo+ICtkb3VibGUNCj4gK19fYXR0cmlidXRlX18gKChub2lwYSkpDQo+ ICtmb28zIChkb3VibGUgKl9fcmVzdHJpY3QgYSwgZG91YmxlIGluaXQsIGludCAqX19yZXN0cmlj dCBjb25kLCBpbnQgbikgew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykNCj4gKyAg ICBpZiAoY29uZFtpXSkNCj4gKyAgICAgIGluaXQgLT0gYVtpXTsNCj4gKyAgcmV0dXJuIGluaXQ7 DQo+ICt9DQo+ICsNCj4gKyNkZWZpbmUgU1ogMTI1DQo+ICsNCj4gK19fYXR0cmlidXRlX18gKChv cHRpbWl6ZSAoIjEiKSkpDQo+ICtpbnQNCj4gK21haW4gKCkNCj4gK3sNCj4gKyAgZG91YmxlIHJl czEgPSAwLCByZXMyID0gMDsNCj4gKyAgZG91YmxlIGExW1NaXSwgYTJbU1pdOw0KPiArICBpbnQg YzFbU1pdLCBjMltTWl07DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgU1o7IGkrKykNCj4gKyAg ICB7DQo+ICsgICAgICBhMVtpXSA9IGkgKiAzICsgKGkgJiA0KSAtIChpICYgNyk7DQo+ICsgICAg ICBhMltpXSA9IGkgKiAzICsgKGkgJiA0KSAtIChpICYgNyk7DQo+ICsgICAgICBjMVtpXSA9IGkg JiAxOw0KPiArICAgICAgYzJbaV0gPSBpICYgMTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgZG91Ymxl IGluaXQxID0gMi43LCBpbml0MiA9IDguMjsNCj4gKyAgZG91YmxlIHJlZjEgPSBpbml0MSwgcmVm MiA9IGluaXQyOw0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IFNaOyBpKyspDQo+ICsgICAgew0K PiArICAgICAgaWYgKGMxW2ldKQ0KPiArICAgICAgICByZWYxICs9IGExW2ldOw0KPiArICAgICAg aWYgKGMyW2ldKQ0KPiArICAgICAgICByZWYyIC09IGEyW2ldOw0KPiArICAgIH0NCj4gKw0KPiAr ICByZXMxID0gZm9vMiAoYTEsIGluaXQxLCBjMSwgU1opOw0KPiArICByZXMyID0gZm9vMyAoYTIs IGluaXQyLCBjMiwgU1opOw0KPiArDQo+ICsgIGlmIChyZXMxICE9IHJlZjEpDQo+ICsgICAgX19i dWlsdGluX2Fib3J0ICgpOw0KPiArICBpZiAocmVzMiAhPSByZWYyKQ0KPiArICAgIF9fYnVpbHRp bl9hYm9ydCAoKTsNCj4gK30NCj4gKw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcCIgMiAidmVjdCIgfSB9DQo+ICsqLw0KPiArLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCAiVkNPTkRfTUFTSyIgInZlY3QiIH0gfSAqLw0K PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtaWYtY29udi5jYyBiL2djYy90cmVlLWlmLWNvbnYuY2Mg aW5kZXgNCj4gNzk5ZjA3MTk2NWUuLjQyNTk3NmIwODYxIDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJl ZS1pZi1jb252LmNjDQo+ICsrKyBiL2djYy90cmVlLWlmLWNvbnYuY2MNCj4gQEAgLTE4NTIsMTAg KzE4NTIsMTIgQEAgY29udmVydF9zY2FsYXJfY29uZF9yZWR1Y3Rpb24gKGdpbXBsZSAqcmVkdWMs DQo+IGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksDQo+ICAgIGdpbXBsZSAqbmV3X2Fzc2lnbjsN Cj4gICAgdHJlZSByaHM7DQo+ICAgIHRyZWUgcmhzMSA9IGdpbXBsZV9hc3NpZ25fcmhzMSAocmVk dWMpOw0KPiArICB0cmVlIGxocyA9IGdpbXBsZV9hc3NpZ25fbGhzIChyZWR1Yyk7DQo+ICAgIHRy ZWUgdG1wID0gbWFrZV90ZW1wX3NzYV9uYW1lIChUUkVFX1RZUEUgKHJoczEpLCBOVUxMLCAiX2lm Y18iKTsNCj4gICAgdHJlZSBjOw0KPiAgICBlbnVtIHRyZWVfY29kZSByZWR1Y3Rpb25fb3AgID0g Z2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAocmVkdWMpOw0KPiAtICB0cmVlIG9wX25vY2hhbmdlID0g bmV1dHJhbF9vcF9mb3JfcmVkdWN0aW9uIChUUkVFX1RZUEUgKHJoczEpLA0KPiByZWR1Y3Rpb25f b3AsIE5VTEwpOw0KPiArICB0cmVlIG9wX25vY2hhbmdlID0gbmV1dHJhbF9vcF9mb3JfcmVkdWN0 aW9uIChUUkVFX1RZUEUgKHJoczEpLA0KPiByZWR1Y3Rpb25fb3AsDQo+ICsJCQkJCSAgICAgICBO VUxMLCBmYWxzZSk7DQo+ICAgIGdpbXBsZV9zZXEgc3RtdHMgPSBOVUxMOw0KPiANCj4gICAgaWYg KGR1bXBfZmlsZSAmJiAoZHVtcF9mbGFncyAmIFRERl9ERVRBSUxTKSkgQEAgLTE4NjQsMTkgKzE4 NjYsNTINCj4gQEAgY29udmVydF9zY2FsYXJfY29uZF9yZWR1Y3Rpb24gKGdpbXBsZSAqcmVkdWMs IGdpbXBsZV9zdG10X2l0ZXJhdG9yDQo+ICpnc2ksDQo+ICAgICAgICBwcmludF9naW1wbGVfc3Rt dCAoZHVtcF9maWxlLCByZWR1YywgMCwgVERGX1NMSU0pOw0KPiAgICAgIH0NCj4gDQo+IC0gIC8q IEJ1aWxkIGNvbmQgZXhwcmVzc2lvbiB1c2luZyBDT05EIGFuZCBjb25zdGFudCBvcGVyYW5kDQo+ IC0gICAgIG9mIHJlZHVjdGlvbiByaHMuICAqLw0KPiAtICBjID0gZm9sZF9idWlsZF9jb25kX2V4 cHIgKFRSRUVfVFlQRSAocmhzMSksDQo+IC0JCQkgICAgdW5zaGFyZV9leHByIChjb25kKSwNCj4g LQkJCSAgICBzd2FwID8gb3Bfbm9jaGFuZ2UgOiBvcDEsDQo+IC0JCQkgICAgc3dhcCA/IG9wMSA6 IG9wX25vY2hhbmdlKTsNCj4gKyAgLyogSWYgcG9zc2libGUgdHJ5IHRvIGNyZWF0ZSBhbiBJRk5f Q09ORF9BREQgaW5zdGVhZCBvZiBhIENPTkRfRVhQUiBhbmQNCj4gKyAgICAgYSBQTFVTX0VYUFIu ICBEb24ndCBkbyB0aGlzIGlmIHRoZSByZWR1Y3Rpb24gZGVmIG9wZXJhbmQgaXRzZWxmIGlzDQo+ ICsgICAgIGEgdmVjdG9yaXphYmxlIGNhbGwgYXMgd2UgY2FuIGNyZWF0ZSBhIENPTkQgdmVyc2lv biBvZiBpdA0KPiArIGRpcmVjdGx5LiAgKi8gIGludGVybmFsX2ZuIGlmbjsgIGlmbiA9IGdldF9j b25kaXRpb25hbF9pbnRlcm5hbF9mbg0KPiArIChyZWR1Y3Rpb25fb3ApOw0KPiANCj4gLSAgLyog Q3JlYXRlIGFzc2lnbm1lbnQgc3RtdCBhbmQgaW5zZXJ0IGl0IGF0IEdTSS4gICovDQo+IC0gIG5l d19hc3NpZ24gPSBnaW1wbGVfYnVpbGRfYXNzaWduICh0bXAsIGMpOw0KPiAtICBnc2lfaW5zZXJ0 X2JlZm9yZSAoZ3NpLCBuZXdfYXNzaWduLCBHU0lfU0FNRV9TVE1UKTsNCj4gLSAgLyogQnVpbGQg cmhzIGZvciB1bmNvbmRpdGlvbmFsIGluY3JlbWVudC9kZWNyZW1lbnQvbG9naWNfb3BlcmF0aW9u LiAgKi8NCj4gLSAgcmhzID0gZ2ltcGxlX2J1aWxkICgmc3RtdHMsIHJlZHVjdGlvbl9vcCwNCj4g LQkJICAgICAgVFJFRV9UWVBFIChyaHMxKSwgb3AwLCB0bXApOw0KPiArICBib29sIHRyeV9jb25k X29wID0gdHJ1ZTsNCj4gKyAgZ2ltcGxlICpvcHN0bXQ7DQo+ICsgIGlmIChUUkVFX0NPREUgKG9w MSkgPT0gU1NBX05BTUUNCj4gKyAgICAgICYmIChvcHN0bXQgPSBTU0FfTkFNRV9ERUZfU1RNVCAo b3AxKSkNCj4gKyAgICAgICYmIGlzX2dpbXBsZV9jYWxsIChvcHN0bXQpKQ0KPiArICAgIHsNCj4g KyAgICAgIGNvbWJpbmVkX2ZuIGNmbiA9IGdpbXBsZV9jYWxsX2NvbWJpbmVkX2ZuIChvcHN0bXQp Ow0KPiArICAgICAgaW50ZXJuYWxfZm4gaWZub3A7DQo+ICsgICAgICByZWR1Y3Rpb25fZm5fZm9y X3NjYWxhcl9jb2RlIChjZm4sICZpZm5vcCk7DQo+ICsgICAgICBpZiAodmVjdG9yaXplZF9pbnRl cm5hbF9mbl9zdXBwb3J0ZWRfcCAoaWZub3AsIFRSRUVfVFlQRQ0KPiArCQkJCQkgICAgICAoZ2lt cGxlX2NhbGxfbGhzIChvcHN0bXQpKSkpDQo+ICsJdHJ5X2NvbmRfb3AgPSBmYWxzZTsNCj4gKyAg ICB9DQo+ICsNCj4gKyAgaWYgKGlmbiAhPSBJRk5fTEFTVA0KPiArICAgICAgJiYgdmVjdG9yaXpl ZF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoaWZuLCBUUkVFX1RZUEUgKGxocykpDQo+ICsgICAg ICAmJiB0cnlfY29uZF9vcCAmJiAhc3dhcCkNCj4gKyAgICB7DQo+ICsgICAgICBnY2FsbCAqY29u ZF9jYWxsID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKGlmbiwgNCwNCj4gKwkJCQkJCSAg ICAgdW5zaGFyZV9leHByIChjb25kKSwNCj4gKwkJCQkJCSAgICAgb3AwLCBvcDEsIG9wMCk7DQo+ ICsgICAgICBnc2lfaW5zZXJ0X2JlZm9yZSAoZ3NpLCBjb25kX2NhbGwsIEdTSV9TQU1FX1NUTVQp Ow0KPiArICAgICAgZ2ltcGxlX2NhbGxfc2V0X2xocyAoY29uZF9jYWxsLCB0bXApOw0KPiArICAg ICAgcmhzID0gdG1wOw0KPiArICAgIH0NCj4gKyAgZWxzZQ0KPiArICAgIHsNCj4gKyAgICAgIC8q IEJ1aWxkIGNvbmQgZXhwcmVzc2lvbiB1c2luZyBDT05EIGFuZCBjb25zdGFudCBvcGVyYW5kDQo+ ICsJIG9mIHJlZHVjdGlvbiByaHMuICAqLw0KPiArICAgICAgYyA9IGZvbGRfYnVpbGRfY29uZF9l eHByIChUUkVFX1RZUEUgKHJoczEpLA0KPiArCQkJCXVuc2hhcmVfZXhwciAoY29uZCksDQo+ICsJ CQkJc3dhcCA/IG9wX25vY2hhbmdlIDogb3AxLA0KPiArCQkJCXN3YXAgPyBvcDEgOiBvcF9ub2No YW5nZSk7DQo+ICsgICAgICAvKiBDcmVhdGUgYXNzaWdubWVudCBzdG10IGFuZCBpbnNlcnQgaXQg YXQgR1NJLiAgKi8NCj4gKyAgICAgIG5ld19hc3NpZ24gPSBnaW1wbGVfYnVpbGRfYXNzaWduICh0 bXAsIGMpOw0KPiArICAgICAgZ3NpX2luc2VydF9iZWZvcmUgKGdzaSwgbmV3X2Fzc2lnbiwgR1NJ X1NBTUVfU1RNVCk7DQo+ICsgICAgICAvKiBCdWlsZCByaHMgZm9yIHVuY29uZGl0aW9uYWwgaW5j cmVtZW50L2RlY3JlbWVudC9sb2dpY19vcGVyYXRpb24uICAqLw0KPiArICAgICAgcmhzID0gZ2lt cGxlX2J1aWxkICgmc3RtdHMsIHJlZHVjdGlvbl9vcCwNCj4gKwkJCSAgVFJFRV9UWVBFIChyaHMx KSwgb3AwLCB0bXApOw0KPiArICAgIH0NCj4gDQo+ICAgIGlmIChoYXNfbm9wKQ0KPiAgICAgIHsN Cj4gQEAgLTIyNDEsNyArMjI3Niw3IEBAIHByZWRpY2F0ZV9zY2FsYXJfcGhpIChncGhpICpwaGks DQo+IGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2kpDQo+ICAJew0KPiAgCSAgLyogQ29udmVydCBy ZWR1Y3Rpb24gc3RtdCBpbnRvIHZlY3Rvcml6YWJsZSBmb3JtLiAgKi8NCj4gIAkgIHJocyA9IGNv bnZlcnRfc2NhbGFyX2NvbmRfcmVkdWN0aW9uIChyZWR1YywgZ3NpLCBjb25kLCBvcDAsIG9wMSwN Cj4gLQkJCQkJICAgICAgIHN3YXAsaGFzX25vcCwgbm9wX3JlZHVjKTsNCj4gKwkJCQkJICAgICAg IHN3YXAsIGhhc19ub3AsIG5vcF9yZWR1Yyk7DQo+ICAJICByZWR1bmRhbnRfc3NhX25hbWVzLnNh ZmVfcHVzaCAoc3RkOjptYWtlX3BhaXIgKHJlcywgcmhzKSk7DQo+ICAJfQ0KPiAgICAgICAgbmV3 X3N0bXQgPSBnaW1wbGVfYnVpbGRfYXNzaWduIChyZXMsIHJocyk7IGRpZmYgLS1naXQgYS9nY2Mv dHJlZS12ZWN0LQ0KPiBsb29wLmNjIGIvZ2NjL3RyZWUtdmVjdC1sb29wLmNjIGluZGV4IDIzYzZl ODI1OWU3Li45NGQzY2VhZDFlNiAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1sb29wLmNj DQo+ICsrKyBiL2djYy90cmVlLXZlY3QtbG9vcC5jYw0KPiBAQCAtMzY3Miw3ICszNjcyLDcgQEAg dmVjdF9hbmFseXplX2xvb3AgKGNsYXNzIGxvb3AgKmxvb3AsDQo+IHZlY19pbmZvX3NoYXJlZCAq c2hhcmVkKSAgc3RhdGljIGJvb2wgIGZvbGRfbGVmdF9yZWR1Y3Rpb25fZm4gKGNvZGVfaGVscGVy DQo+IGNvZGUsIGludGVybmFsX2ZuICpyZWR1Y19mbikgIHsNCj4gLSAgaWYgKGNvZGUgPT0gUExV U19FWFBSKQ0KPiArICBpZiAoY29kZSA9PSBQTFVTX0VYUFIgfHwgY29kZSA9PSBNSU5VU19FWFBS KQ0KPiAgICAgIHsNCj4gICAgICAgICpyZWR1Y19mbiA9IElGTl9GT0xEX0xFRlRfUExVUzsNCj4g ICAgICAgIHJldHVybiB0cnVlOw0KPiBAQCAtMzc1MSwyMyArMzc1MSwyOSBAQCByZWR1Y3Rpb25f Zm5fZm9yX3NjYWxhcl9jb2RlIChjb2RlX2hlbHBlcg0KPiBjb2RlLCBpbnRlcm5hbF9mbiAqcmVk dWNfZm4pDQo+ICAgICBieSB0aGUgaW50cm9kdWN0aW9uIG9mIGFkZGl0aW9uYWwgWCBlbGVtZW50 cywgcmV0dXJuIHRoYXQgWCwgb3RoZXJ3aXNlDQo+ICAgICByZXR1cm4gbnVsbC4gIENPREUgaXMg dGhlIGNvZGUgb2YgdGhlIHJlZHVjdGlvbiBhbmQgU0NBTEFSX1RZUEUgaXMgdHlwZQ0KPiAgICAg b2YgdGhlIHNjYWxhciBlbGVtZW50cy4gIElmIHRoZSByZWR1Y3Rpb24gaGFzIGp1c3QgYSBzaW5n bGUgaW5pdGlhbCB2YWx1ZQ0KPiAtICAgdGhlbiBJTklUSUFMX1ZBTFVFIGlzIHRoYXQgdmFsdWUs IG90aGVyd2lzZSBpdCBpcyBudWxsLiAgKi8NCj4gKyAgIHRoZW4gSU5JVElBTF9WQUxVRSBpcyB0 aGF0IHZhbHVlLCBvdGhlcndpc2UgaXQgaXMgbnVsbC4NCj4gKyAgIElmIEFTX0lOSVRJQUwgaXMg VFJVRSB0aGUgdmFsdWUgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBhcyBpbml0aWFsIHZhbHVlLg0K PiArICAgSW4gdGhhdCBjYXNlIG5vIHNpZ25lZCB6ZXJvIGlzIHJldHVybmVkLiAgKi8NCj4gDQo+ ICB0cmVlDQo+ICBuZXV0cmFsX29wX2Zvcl9yZWR1Y3Rpb24gKHRyZWUgc2NhbGFyX3R5cGUsIGNv ZGVfaGVscGVyIGNvZGUsDQo+IC0JCQkgIHRyZWUgaW5pdGlhbF92YWx1ZSkNCj4gKwkJCSAgdHJl ZSBpbml0aWFsX3ZhbHVlLCBib29sIGFzX2luaXRpYWwpDQo+ICB7DQo+ICAgIGlmIChjb2RlLmlz X3RyZWVfY29kZSAoKSkNCj4gICAgICBzd2l0Y2ggKHRyZWVfY29kZSAoY29kZSkpDQo+ICAgICAg ICB7DQo+IC0gICAgICBjYXNlIFdJREVOX1NVTV9FWFBSOg0KPiAgICAgICAgY2FzZSBET1RfUFJP RF9FWFBSOg0KPiAgICAgICAgY2FzZSBTQURfRVhQUjoNCj4gLSAgICAgIGNhc2UgUExVU19FWFBS Og0KPiAgICAgICAgY2FzZSBNSU5VU19FWFBSOg0KPiAgICAgICAgY2FzZSBCSVRfSU9SX0VYUFI6 DQo+ICAgICAgICBjYXNlIEJJVF9YT1JfRVhQUjoNCj4gIAlyZXR1cm4gYnVpbGRfemVyb19jc3Qg KHNjYWxhcl90eXBlKTsNCj4gKyAgICAgIGNhc2UgV0lERU5fU1VNX0VYUFI6DQo+ICsgICAgICBj YXNlIFBMVVNfRVhQUjoNCj4gKwlpZiAoIWFzX2luaXRpYWwgJiYgSE9OT1JfU0lHTkVEX1pFUk9T IChzY2FsYXJfdHlwZSkpDQo+ICsJICByZXR1cm4gYnVpbGRfcmVhbCAoc2NhbGFyX3R5cGUsIGRj b25zdG0wKTsNCj4gKwllbHNlDQo+ICsJICByZXR1cm4gYnVpbGRfemVyb19jc3QgKHNjYWxhcl90 eXBlKTsNCj4gDQo+ICAgICAgICBjYXNlIE1VTFRfRVhQUjoNCj4gIAlyZXR1cm4gYnVpbGRfb25l X2NzdCAoc2NhbGFyX3R5cGUpOw0KPiBAQCAtNDEwNiw4ICs0MTEyLDE0IEBAIHZlY3RfaXNfc2lt cGxlX3JlZHVjdGlvbiAobG9vcF92ZWNfaW5mbw0KPiBsb29wX2luZm8sIHN0bXRfdmVjX2luZm8g cGhpX2luZm8sDQo+ICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ICAgICAgICAgIH0NCj4gDQo+ IC0gICAgICBucGhpX2RlZl9sb29wX3VzZXMrKzsNCj4gLSAgICAgIHBoaV91c2Vfc3RtdCA9IHVz ZV9zdG10Ow0KPiArICAgICAgLyogSW4gY2FzZSBvZiBhIENPTkRfT1AgKG1hc2ssIG9wMSwgb3Ay LCBvcDEpIHJlZHVjdGlvbiB3ZSBtaWdodCBoYXZlDQo+ICsJIG9wMSB0d2ljZSAob25jZSBhcyBk ZWZpbml0aW9uLCBvbmNlIGFzIGVsc2UpIGluIHRoZSBzYW1lIG9wZXJhdGlvbi4NCj4gKwkgT25s eSBjb3VudCBpdCBhcyBvbmUuICovDQo+ICsgICAgICBpZiAodXNlX3N0bXQgIT0gcGhpX3VzZV9z dG10KQ0KPiArCXsNCj4gKwkgIG5waGlfZGVmX2xvb3BfdXNlcysrOw0KPiArCSAgcGhpX3VzZV9z dG10ID0gdXNlX3N0bXQ7DQo+ICsJfQ0KPiAgICAgIH0NCj4gDQo+ICAgIHRyZWUgbGF0Y2hfZGVm ID0gUEhJX0FSR19ERUZfRlJPTV9FREdFIChwaGksIGxvb3BfbGF0Y2hfZWRnZSAobG9vcCkpOw0K PiBAQCAtNjM3OCw3ICs2MzkwLDcgQEAgdmVjdF9jcmVhdGVfZXBpbG9nX2Zvcl9yZWR1Y3Rpb24g KGxvb3BfdmVjX2luZm8NCj4gbG9vcF92aW5mbywNCj4gIAkgIGlmIChSRURVQ19HUk9VUF9GSVJT VF9FTEVNRU5UIChzdG10X2luZm8pKQ0KPiAgCSAgICBpbml0aWFsX3ZhbHVlID0gcmVkdWNfaW5m by0+cmVkdWNfaW5pdGlhbF92YWx1ZXNbMF07DQo+ICAJICBuZXV0cmFsX29wID0gbmV1dHJhbF9v cF9mb3JfcmVkdWN0aW9uIChUUkVFX1RZUEUgKHZlY3R5cGUpLCBjb2RlLA0KPiAtCQkJCQkJIGlu aXRpYWxfdmFsdWUpOw0KPiArCQkJCQkJIGluaXRpYWxfdmFsdWUsIGZhbHNlKTsNCj4gIAl9DQo+ ICAgICAgICBpZiAobmV1dHJhbF9vcCkNCj4gIAl2ZWN0b3JfaWRlbnRpdHkgPSBnaW1wbGVfYnVp bGRfdmVjdG9yX2Zyb21fdmFsICgmc2VxLCB2ZWN0eXBlLCBAQCAtDQo+IDY4NjAsOCArNjg3Miw4 IEBAIHZlY3Rvcml6ZV9mb2xkX2xlZnRfcmVkdWN0aW9uIChsb29wX3ZlY19pbmZvIGxvb3Bfdmlu Zm8sDQo+ICAJCQkgICAgICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKmdzaSwNCj4gIAkJCSAgICAg ICBnaW1wbGUgKip2ZWNfc3RtdCwgc2xwX3RyZWUgc2xwX25vZGUsDQo+ICAJCQkgICAgICAgZ2lt cGxlICpyZWR1Y19kZWZfc3RtdCwNCj4gLQkJCSAgICAgICB0cmVlX2NvZGUgY29kZSwgaW50ZXJu YWxfZm4gcmVkdWNfZm4sDQo+IC0JCQkgICAgICAgdHJlZSBvcHNbM10sIHRyZWUgdmVjdHlwZV9p biwNCj4gKwkJCSAgICAgICBjb2RlX2hlbHBlciBjb2RlLCBpbnRlcm5hbF9mbiByZWR1Y19mbiwN Cj4gKwkJCSAgICAgICB0cmVlICpvcHMsIGludCBudW1fb3BzLCB0cmVlIHZlY3R5cGVfaW4sDQo+ ICAJCQkgICAgICAgaW50IHJlZHVjX2luZGV4LCB2ZWNfbG9vcF9tYXNrcyAqbWFza3MsDQo+ICAJ CQkgICAgICAgdmVjX2xvb3BfbGVucyAqbGVucykNCj4gIHsNCj4gQEAgLTY4NzcsMTcgKzY4ODks NDAgQEAgdmVjdG9yaXplX2ZvbGRfbGVmdF9yZWR1Y3Rpb24gKGxvb3BfdmVjX2luZm8NCj4gbG9v cF92aW5mbywNCj4gDQo+ICAgIGdjY19hc3NlcnQgKCFuZXN0ZWRfaW5fdmVjdF9sb29wX3AgKGxv b3AsIHN0bXRfaW5mbykpOw0KPiAgICBnY2NfYXNzZXJ0IChuY29waWVzID09IDEpOw0KPiAtICBn Y2NfYXNzZXJ0IChUUkVFX0NPREVfTEVOR1RIIChjb2RlKSA9PSBiaW5hcnlfb3ApOw0KPiArDQo+ ICsgIGJvb2wgaXNfY29uZF9vcCA9IGZhbHNlOw0KPiArICBpZiAoY29kZS5pc190cmVlX2NvZGUg KCkpDQo+ICsgICAgY29kZSA9IHRyZWVfY29kZSAoY29kZSk7DQo+ICsgIGVsc2UNCg0KVGhpcyBp ZiBpcyBub3QgbmVlZGVkIGlzIGl0PyBJdCdzIGdvaW5nIHRvIGNvbnZlcnQgdGhlIHRyZWVfY29k ZSBiYWNrIHRvIHRoZSBjb2RlX2hlbHBlci4NCg0KPiArICAgIHsNCj4gKyAgICAgIGdjY19hc3Nl cnQgKGNvbmRfZm5fcCAoY29kZSkpOw0KPiArICAgICAgaXNfY29uZF9vcCA9IHRydWU7DQo+ICsg ICAgICBjb2RlID0gY29uZGl0aW9uYWxfaW50ZXJuYWxfZm5fY29kZSAoaW50ZXJuYWxfZm4gKGNv ZGUpKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgZ2NjX2Fzc2VydCAoVFJFRV9DT0RFX0xFTkdUSCAo dHJlZV9jb2RlIChjb2RlKSkgPT0gYmluYXJ5X29wKTsNCj4gDQo+ICAgIGlmIChzbHBfbm9kZSkN Cj4gICAgICBnY2NfYXNzZXJ0IChrbm93bl9lcSAoVFlQRV9WRUNUT1JfU1VCUEFSVFMgKHZlY3R5 cGVfb3V0KSwNCj4gIAkJCSAgVFlQRV9WRUNUT1JfU1VCUEFSVFMgKHZlY3R5cGVfaW4pKSk7DQo+ IA0KPiAtICB0cmVlIG9wMCA9IG9wc1sxIC0gcmVkdWNfaW5kZXhdOw0KPiArICAvKiBUaGUgb3Bl cmFuZHMgZWl0aGVyIGNvbWUgZnJvbSBhIGJpbmFyeSBvcGVyYXRpb24gb3IgYW4gSUZOX0NPTkQN Cj4gb3BlcmF0aW9uLg0KPiArICAgICBUaGUgZm9ybWVyIGlzIGEgZ2ltcGxlIGFzc2lnbiB3aXRo IGJpbmFyeSByaHMgYW5kIHRoZSBsYXR0ZXIgaXMgYQ0KPiArICAgICBnaW1wbGUgY2FsbCB3aXRo IGZvdXIgYXJndW1lbnRzLiAgKi8gIGdjY19hc3NlcnQgKG51bV9vcHMgPT0gMiB8fA0KPiArIG51 bV9vcHMgPT0gNCk7ICB0cmVlIG9wMCwgb3BtYXNrOyAgaWYgKCFpc19jb25kX29wKQ0KPiArICAg IG9wMCA9IG9wc1sxIC0gcmVkdWNfaW5kZXhdOw0KPiArICBlbHNlDQo+ICsgICAgew0KPiArICAg ICAgb3AwID0gb3BzWzJdOw0KPiArICAgICAgb3BtYXNrID0gb3BzWzBdOw0KPiArICAgICAgZ2Nj X2Fzc2VydCAoIXNscF9ub2RlKTsNCj4gKyAgICB9DQo+IA0KPiAgICBpbnQgZ3JvdXBfc2l6ZSA9 IDE7DQo+ICAgIHN0bXRfdmVjX2luZm8gc2NhbGFyX2Rlc3RfZGVmX2luZm87DQo+IC0gIGF1dG9f dmVjPHRyZWU+IHZlY19vcHJuZHMwOw0KPiArICBhdXRvX3ZlYzx0cmVlPiB2ZWNfb3BybmRzMCwg dmVjX29wbWFzazsNCj4gICAgaWYgKHNscF9ub2RlKQ0KPiAgICAgIHsNCj4gICAgICAgIGF1dG9f dmVjPHZlYzx0cmVlPiA+IHZlY19kZWZzICgyKTsgQEAgLTY5MDMsOSArNjkzOCwxNyBAQA0KPiB2 ZWN0b3JpemVfZm9sZF9sZWZ0X3JlZHVjdGlvbiAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLA0K PiAgICAgICAgdmVjdF9nZXRfdmVjX2RlZnNfZm9yX29wZXJhbmQgKGxvb3BfdmluZm8sIHN0bXRf aW5mbywgMSwNCj4gIAkJCQkgICAgIG9wMCwgJnZlY19vcHJuZHMwKTsNCj4gICAgICAgIHNjYWxh cl9kZXN0X2RlZl9pbmZvID0gc3RtdF9pbmZvOw0KPiArDQo+ICsgICAgICAvKiBGb3IgYW4gSUZO X0NPTkRfT1Agd2UgYWxzbyBuZWVkIHRoZSB2ZWN0b3IgbWFzayBvcGVyYW5kLiAgKi8NCj4gKyAg ICAgIGlmIChpc19jb25kX29wKQ0KPiArCSAgdmVjdF9nZXRfdmVjX2RlZnNfZm9yX29wZXJhbmQg KGxvb3BfdmluZm8sIHN0bXRfaW5mbywgMSwNCj4gKwkJCQkJIG9wbWFzaywgJnZlY19vcG1hc2sp Ow0KPiAgICAgIH0NCj4gDQo+IC0gIHRyZWUgc2NhbGFyX2Rlc3QgPSBnaW1wbGVfYXNzaWduX2xo cyAoc2NhbGFyX2Rlc3RfZGVmX2luZm8tPnN0bXQpOw0KPiArICBnaW1wbGUgKnNkZWYgPSBzY2Fs YXJfZGVzdF9kZWZfaW5mby0+c3RtdDsNCj4gKyAgdHJlZSBzY2FsYXJfZGVzdCA9IGlzX2dpbXBs ZV9jYWxsIChzZGVmKQ0KPiArCQkgICAgICAgPyBnaW1wbGVfY2FsbF9saHMgKHNkZWYpDQo+ICsJ CSAgICAgICA6IGdpbXBsZV9hc3NpZ25fbGhzIChzY2FsYXJfZGVzdF9kZWZfaW5mby0+c3RtdCk7 DQoNClRoaXMgaXMgY2FuIGJlIHRyZWUgc2NhbGFyX2Rlc3QgPSBnaW1wbGVfZ2V0X2xocyAoc2Rl Zik7DQoNCj4gICAgdHJlZSBzY2FsYXJfdHlwZSA9IFRSRUVfVFlQRSAoc2NhbGFyX2Rlc3QpOw0K PiAgICB0cmVlIHJlZHVjX3ZhciA9IGdpbXBsZV9waGlfcmVzdWx0IChyZWR1Y19kZWZfc3RtdCk7 DQo+IA0KPiBAQCAtNjkzOSwxNyArNjk4MiwyMCBAQCB2ZWN0b3JpemVfZm9sZF9sZWZ0X3JlZHVj dGlvbiAobG9vcF92ZWNfaW5mbw0KPiBsb29wX3ZpbmZvLA0KPiAgICAgICAgdHJlZSBiaWFzID0g TlVMTF9UUkVFOw0KPiAgICAgICAgaWYgKExPT1BfVklORk9fRlVMTFlfTUFTS0VEX1AgKGxvb3Bf dmluZm8pKQ0KPiAgCW1hc2sgPSB2ZWN0X2dldF9sb29wX21hc2sgKGxvb3BfdmluZm8sIGdzaSwg bWFza3MsIHZlY19udW0sDQo+IHZlY3R5cGVfaW4sIGkpOw0KPiArICAgICAgZWxzZSBpZiAoaXNf Y29uZF9vcCkNCj4gKwltYXNrID0gdmVjX29wbWFza1swXTsNCg0KSXNuJ3QgdmVjX29wbWFzayBO VUxMIGZvciBTTFA/IFlvdSBwcm9iYWJseSBuZWVkIHRvIHJlYWQgaXQgZnJvbSB2ZWNfZGVmcyBm b3IgdGhlIENPTkRfRVhQUj8NCg0KPiAgICAgICAgaWYgKExPT1BfVklORk9fRlVMTFlfV0lUSF9M RU5HVEhfUCAobG9vcF92aW5mbykpDQo+ICAJew0KPiAgCSAgbGVuID0gdmVjdF9nZXRfbG9vcF9s ZW4gKGxvb3BfdmluZm8sIGdzaSwgbGVucywgdmVjX251bSwgdmVjdHlwZV9pbiwNCj4gIAkJCQkg ICBpLCAxKTsNCj4gIAkgIHNpZ25lZCBjaGFyIGJpYXN2YWwgPSBMT09QX1ZJTkZPX1BBUlRJQUxf TE9BRF9TVE9SRV9CSUFTDQo+IChsb29wX3ZpbmZvKTsNCj4gIAkgIGJpYXMgPSBidWlsZF9pbnRf Y3N0IChpbnRRSV90eXBlX25vZGUsIGJpYXN2YWwpOw0KPiAtCSAgbWFzayA9IGJ1aWxkX21pbnVz X29uZV9jc3QgKHRydXRoX3R5cGVfZm9yICh2ZWN0eXBlX2luKSk7DQo+ICsJICBpZiAoIWlzX2Nv bmRfb3ApDQo+ICsJICAgIG1hc2sgPSBidWlsZF9taW51c19vbmVfY3N0ICh0cnV0aF90eXBlX2Zv ciAodmVjdHlwZV9pbikpOw0KPiAgCX0NCj4gDQo+ICAgICAgICAvKiBIYW5kbGUgTUlOVVMgYnkg YWRkaW5nIHRoZSBuZWdhdGl2ZS4gICovDQo+IC0gICAgICBpZiAocmVkdWNfZm4gIT0gSUZOX0xB U1QgJiYgY29kZSA9PSBNSU5VU19FWFBSKQ0KPiArICAgICAgaWYgKHJlZHVjX2ZuICE9IElGTl9M QVNUICYmIHRyZWVfY29kZSAoY29kZSkgPT0gTUlOVVNfRVhQUikNCg0KQ2hhbmdlIGlzbid0IG5l ZWRlZCwgZXF1YWxpdHkgb24gY29kZV9oZWxwZXIgaXMgb3ZlcmxvYWRlZCBiYXNlZCBvbiB0aGUg dHlwZSwNCnNvIGl0J2xsIGF1dG9tYXRpY2FsbHkgZG8gYSB0cmVlX2NvZGUgY29tcGFyaXNvbiBo ZXJlLg0KDQo+ICAJew0KPiAgCSAgdHJlZSBuZWdhdGVkID0gbWFrZV9zc2FfbmFtZSAodmVjdHlw ZV9vdXQpOw0KPiAgCSAgbmV3X3N0bXQgPSBnaW1wbGVfYnVpbGRfYXNzaWduIChuZWdhdGVkLCBO RUdBVEVfRVhQUiwgZGVmMCk7DQo+IEBAIC02OTU3LDcgKzcwMDMsOCBAQCB2ZWN0b3JpemVfZm9s ZF9sZWZ0X3JlZHVjdGlvbiAobG9vcF92ZWNfaW5mbw0KPiBsb29wX3ZpbmZvLA0KPiAgCSAgZGVm MCA9IG5lZ2F0ZWQ7DQo+ICAJfQ0KPiANCj4gLSAgICAgIGlmIChtYXNrICYmIG1hc2tfcmVkdWNf Zm4gPT0gSUZOX0xBU1QpDQo+ICsgICAgICBpZiAoTE9PUF9WSU5GT19GVUxMWV9NQVNLRURfUCAo bG9vcF92aW5mbykNCj4gKwkgICYmIG1hc2sgJiYgbWFza19yZWR1Y19mbiA9PSBJRk5fTEFTVCkN Cj4gIAlkZWYwID0gbWVyZ2Vfd2l0aF9pZGVudGl0eSAoZ3NpLCBtYXNrLCB2ZWN0eXBlX291dCwg ZGVmMCwNCj4gIAkJCQkgICAgdmVjdG9yX2lkZW50aXR5KTsNCj4gDQo+IEBAIC02OTg4LDggKzcw MzUsOCBAQCB2ZWN0b3JpemVfZm9sZF9sZWZ0X3JlZHVjdGlvbiAobG9vcF92ZWNfaW5mbw0KPiBs b29wX3ZpbmZvLA0KPiAgCX0NCj4gICAgICAgIGVsc2UNCj4gIAl7DQo+IC0JICByZWR1Y192YXIg PSB2ZWN0X2V4cGFuZF9mb2xkX2xlZnQgKGdzaSwgc2NhbGFyX2Rlc3RfdmFyLCBjb2RlLA0KPiAt CQkJCQkgICAgIHJlZHVjX3ZhciwgZGVmMCk7DQo+ICsJICByZWR1Y192YXIgPSB2ZWN0X2V4cGFu ZF9mb2xkX2xlZnQgKGdzaSwgc2NhbGFyX2Rlc3RfdmFyLA0KPiArCQkJCQkgICAgIHRyZWVfY29k ZSAoY29kZSksIHJlZHVjX3ZhciwgZGVmMCk7DQo+ICAJICBuZXdfc3RtdCA9IFNTQV9OQU1FX0RF Rl9TVE1UIChyZWR1Y192YXIpOw0KPiAgCSAgLyogUmVtb3ZlIHRoZSBzdGF0ZW1lbnQsIHNvIHRo YXQgd2UgY2FuIHVzZSB0aGUgc2FtZSBjb2RlIHBhdGhzDQo+ICAJICAgICBhcyBmb3Igc3RhdGVt ZW50cyB0aGF0IHdlJ3ZlIGp1c3QgY3JlYXRlZC4gICovIEBAIC03NDQwLDYNCj4gKzc0ODcsMTEg QEAgdmVjdG9yaXphYmxlX3JlZHVjdGlvbiAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLA0KPiAg ICAgICAgaWYgKGkgPT0gU1RNVF9WSU5GT19SRURVQ19JRFggKHN0bXRfaW5mbykpDQo+ICAJY29u dGludWU7DQo+IA0KPiArICAgICAgLyogRm9yIGFuIElGTl9DT05EX09QIHdlIG1pZ2h0IGhpdCB0 aGUgcmVkdWN0aW9uIGRlZmluaXRpb24gb3BlcmFuZA0KPiArCSB0d2ljZSAob25jZSBhcyBkZWZp bml0aW9uLCBvbmNlIGFzIGVsc2UpLiAgKi8NCj4gKyAgICAgIGlmIChvcC5vcHNbaV0gPT0gb3Au b3BzW1NUTVRfVklORk9fUkVEVUNfSURYIChzdG10X2luZm8pXSkNCj4gKwljb250aW51ZTsNCj4g Kw0KPiAgICAgICAgLyogVGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIGN5Y2xlIGRlZiBpbiB0aGUg c3RtdCwgdGhlIG9uZQ0KPiAgICAgICAgICAgbGVhZGluZyB0byByZWR1Y19kZWYuICAqLw0KPiAg ICAgICAgaWYgKFZFQ1RPUklaQUJMRV9DWUNMRV9ERUYgKGR0KSkNCj4gQEAgLTc2NDAsNiArNzY5 MiwxMyBAQCB2ZWN0b3JpemFibGVfcmVkdWN0aW9uIChsb29wX3ZlY19pbmZvDQo+IGxvb3Bfdmlu Zm8sDQo+ICAgICAgICAgICAgd2hlbiBnZW5lcmF0aW5nIHRoZSBjb2RlIGluc2lkZSB0aGUgbG9v cC4gICovDQo+IA0KPiAgICBjb2RlX2hlbHBlciBvcmlnX2NvZGUgPSBTVE1UX1ZJTkZPX1JFRFVD X0NPREUgKHBoaV9pbmZvKTsNCj4gKw0KPiArICAvKiBJZiBjb252ZXJzaW9uIG1pZ2h0IGhhdmUg Y3JlYXRlZCBhIGNvbmRpdGlvbmFsIG9wZXJhdGlvbiBsaWtlDQo+ICsgICAgIElGTl9DT05EX0FE RCBhbHJlYWR5LiAgVXNlIHRoZSBpbnRlcm5hbCBjb2RlIGZvciB0aGUgZm9sbG93aW5nDQo+ICtj aGVja3MuICAqLw0KPiArICBpZiAoY29uZF9mbl9wIChvcmlnX2NvZGUpKQ0KPiArICAgICAgb3Jp Z19jb2RlID0gY29uZGl0aW9uYWxfaW50ZXJuYWxfZm5fY29kZQ0KPiArCShhc19pbnRlcm5hbF9m bihjb21iaW5lZF9mbiAob3JpZ19jb2RlKSkpOw0KPiArDQoNClNpbmNlIG9yaWdfY29kZSBtdXN0 IGJlIGFuIGlmbiBhdCB0aGlzIHBvaW50IHlvdSBjYW4ganVzdCBjYXN0LCBzbw0KDQogIGlmIChj b25kX2ZuX3AgKG9yaWdfY29kZSkpDQogICAgICBvcmlnX2NvZGUgPSBjb25kaXRpb25hbF9pbnRl cm5hbF9mbl9jb2RlIChpbnRlcm5hbF9mbihvcmlnX2NvZGUpKTsNCg0KPiAgICBTVE1UX1ZJTkZP X1JFRFVDX0NPREUgKHJlZHVjX2luZm8pID0gb3JpZ19jb2RlOw0KPiANCj4gICAgdmVjdF9yZWR1 Y3Rpb25fdHlwZSByZWR1Y3Rpb25fdHlwZSA9IFNUTVRfVklORk9fUkVEVUNfVFlQRQ0KPiAocmVk dWNfaW5mbyk7IEBAIC03Njc4LDcgKzc3MzcsNyBAQCB2ZWN0b3JpemFibGVfcmVkdWN0aW9uDQo+ IChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sDQo+ICAJew0KPiAgCSAgaWYgKGR1bXBfZW5hYmxl ZF9wICgpKQ0KPiAgCSAgICBkdW1wX3ByaW50Zl9sb2MgKE1TR19NSVNTRURfT1BUSU1JWkFUSU9O LCB2ZWN0X2xvY2F0aW9uLA0KPiAtCQkJICAgICJyZWR1Y3Rpb246IG5vdCBjb21tdXRhdGl2ZS9h c3NvY2lhdGl2ZSIpOw0KPiArCQkJICAgICJyZWR1Y3Rpb246IG5vdCBjb21tdXRhdGl2ZS9hc3Nv Y2lhdGl2ZVxuIik7DQo+ICAJICByZXR1cm4gZmFsc2U7DQo+ICAJfQ0KPiAgICAgIH0NCj4gQEAg LTgyMTMsNiArODI3Miw3IEBAIHZlY3RfdHJhbnNmb3JtX3JlZHVjdGlvbiAobG9vcF92ZWNfaW5m bw0KPiBsb29wX3ZpbmZvLA0KPiANCj4gICAgY29kZV9oZWxwZXIgY29kZSA9IGNhbm9uaWNhbGl6 ZV9jb2RlIChvcC5jb2RlLCBvcC50eXBlKTsNCj4gICAgaW50ZXJuYWxfZm4gY29uZF9mbiA9IGdl dF9jb25kaXRpb25hbF9pbnRlcm5hbF9mbiAoY29kZSwgb3AudHlwZSk7DQo+ICsNCj4gICAgdmVj X2xvb3BfbWFza3MgKm1hc2tzID0gJkxPT1BfVklORk9fTUFTS1MgKGxvb3BfdmluZm8pOw0KPiAg ICB2ZWNfbG9vcF9sZW5zICpsZW5zID0gJkxPT1BfVklORk9fTEVOUyAobG9vcF92aW5mbyk7DQo+ ICAgIGJvb2wgbWFza19ieV9jb25kX2V4cHIgPSB1c2VfbWFza19ieV9jb25kX2V4cHJfcCAoY29k ZSwgY29uZF9mbiwNCj4gdmVjdHlwZV9pbik7IEBAIC04MjMxLDE3ICs4MjkxLDIxIEBAIHZlY3Rf dHJhbnNmb3JtX3JlZHVjdGlvbg0KPiAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLA0KPiAgICBp ZiAoY29kZSA9PSBDT05EX0VYUFIpDQo+ICAgICAgZ2NjX2Fzc2VydCAobmNvcGllcyA9PSAxKTsN Cj4gDQo+ICsgIC8qIEEgQ09ORF9PUCByZWR1Y3Rpb24gbXVzdCBoYXZlIHRoZSBzYW1lIGRlZmlu aXRpb24gYW5kIGVsc2UgdmFsdWUuDQo+ICsgKi8gIGlmIChjb25kX2ZuX3AgKGNvZGUpKQ0KPiAr ICAgIGdjY19hc3NlcnQgKG9wLm51bV9vcHMgPT0gNCAmJiAob3Aub3BzWzFdID09IG9wLm9wc1sz XSkpOw0KPiArDQoNClRoaXMgYXNzZXJ0IGlzIG9ubHkgdmFsaWQgZm9yIGJpbmFyeSBjb25kIGV4 cHJlc3Npb25zLiAgUGVyaGFwcyBpbnN0ZWFkIG9mIGEgZ2VuZXJpYyBjb25kX2ZuX3ANCnlvdSBz aG91bGQgZXhwbGljaXRseSBsaXN0IHRoZSBDT05EIHZhbHVlcyB0aGF0IGFyZSBleHBlY3RlZCB0 byBiZSB1c2VkIGluIGEgcmVkdWN0aW9uLg0KDQpJIGJlbGlldmUgUmljaGkgdXN1YWxseSBsaWtl cyB0aGlzIGJlY2F1c2UgaXQgY2F0Y2hlcyB1bmV4cGVjdGVkIHZhbHVlcy4NCg0KVGhhbmtzLA0K VGFtYXINCg0KPiAgICBib29sIG1hc2tlZF9sb29wX3AgPSBMT09QX1ZJTkZPX0ZVTExZX01BU0tF RF9QIChsb29wX3ZpbmZvKTsNCj4gDQo+ICAgIHZlY3RfcmVkdWN0aW9uX3R5cGUgcmVkdWN0aW9u X3R5cGUgPSBTVE1UX1ZJTkZPX1JFRFVDX1RZUEUNCj4gKHJlZHVjX2luZm8pOw0KPiAgICBpZiAo cmVkdWN0aW9uX3R5cGUgPT0gRk9MRF9MRUZUX1JFRFVDVElPTikNCj4gICAgICB7DQo+ICAgICAg ICBpbnRlcm5hbF9mbiByZWR1Y19mbiA9IFNUTVRfVklORk9fUkVEVUNfRk4gKHJlZHVjX2luZm8p Ow0KPiAtICAgICAgZ2NjX2Fzc2VydCAoY29kZS5pc190cmVlX2NvZGUgKCkpOw0KPiArICAgICAg Z2NjX2Fzc2VydCAoY29kZS5pc190cmVlX2NvZGUgKCkgfHwgY29uZF9mbl9wIChjb2RlKSk7DQo+ ICAgICAgICByZXR1cm4gdmVjdG9yaXplX2ZvbGRfbGVmdF9yZWR1Y3Rpb24NCj4gIAkgIChsb29w X3ZpbmZvLCBzdG10X2luZm8sIGdzaSwgdmVjX3N0bXQsIHNscF9ub2RlLCByZWR1Y19kZWZfcGhp LA0KPiAtCSAgIHRyZWVfY29kZSAoY29kZSksIHJlZHVjX2ZuLCBvcC5vcHMsIHZlY3R5cGVfaW4s IHJlZHVjX2luZGV4LCBtYXNrcywNCj4gLQkgICBsZW5zKTsNCj4gKwkgICBjb2RlLCByZWR1Y19m biwgb3Aub3BzLCBvcC5udW1fb3BzLCB2ZWN0eXBlX2luLA0KPiArCSAgIHJlZHVjX2luZGV4LCBt YXNrcywgbGVucyk7DQo+ICAgICAgfQ0KPiANCj4gICAgYm9vbCBzaW5nbGVfZGVmdXNlX2N5Y2xl ID0gU1RNVF9WSU5GT19GT1JDRV9TSU5HTEVfQ1lDTEUNCj4gKHJlZHVjX2luZm8pOyBAQCAtODI1 NCwxNCArODMxOCwyMCBAQCB2ZWN0X3RyYW5zZm9ybV9yZWR1Y3Rpb24NCj4gKGxvb3BfdmVjX2lu Zm8gbG9vcF92aW5mbywNCj4gICAgdHJlZSBzY2FsYXJfZGVzdCA9IGdpbXBsZV9nZXRfbGhzIChz dG10X2luZm8tPnN0bXQpOw0KPiAgICB0cmVlIHZlY19kZXN0ID0gdmVjdF9jcmVhdGVfZGVzdGlu YXRpb25fdmFyIChzY2FsYXJfZGVzdCwgdmVjdHlwZV9vdXQpOw0KPiANCj4gKyAgLyogR2V0IE5D T1BJRVMgdmVjdG9yIGRlZmluaXRpb25zIGZvciBhbGwgb3BlcmFuZHMgZXhjZXB0IHRoZSByZWR1 Y3Rpb24NCj4gKyAgICAgZGVmaW5pdGlvbi4gICovDQo+ICAgIHZlY3RfZ2V0X3ZlY19kZWZzIChs b29wX3ZpbmZvLCBzdG10X2luZm8sIHNscF9ub2RlLCBuY29waWVzLA0KPiAgCQkgICAgIHNpbmds ZV9kZWZ1c2VfY3ljbGUgJiYgcmVkdWNfaW5kZXggPT0gMA0KPiAgCQkgICAgID8gTlVMTF9UUkVF IDogb3Aub3BzWzBdLCAmdmVjX29wcm5kczAsDQo+ICAJCSAgICAgc2luZ2xlX2RlZnVzZV9jeWNs ZSAmJiByZWR1Y19pbmRleCA9PSAxDQo+ICAJCSAgICAgPyBOVUxMX1RSRUUgOiBvcC5vcHNbMV0s ICZ2ZWNfb3BybmRzMSwNCj4gLQkJICAgICBvcC5udW1fb3BzID09IDMNCj4gLQkJICAgICAmJiAh KHNpbmdsZV9kZWZ1c2VfY3ljbGUgJiYgcmVkdWNfaW5kZXggPT0gMikNCj4gKwkJICAgICBvcC5u dW1fb3BzID09IDQNCj4gKwkJICAgICB8fCAob3AubnVtX29wcyA9PSAzDQo+ICsJCQkgJiYgIShz aW5nbGVfZGVmdXNlX2N5Y2xlICYmIHJlZHVjX2luZGV4ID09IDIpKQ0KPiAgCQkgICAgID8gb3Au b3BzWzJdIDogTlVMTF9UUkVFLCAmdmVjX29wcm5kczIpOw0KPiArDQo+ICsgIC8qIEZvciBzaW5n bGUgZGVmLXVzZSBjeWNsZXMgZ2V0IG9uZSBjb3B5IG9mIHRoZSB2ZWN0b3JpemVkIHJlZHVjdGlv bg0KPiArICAgICBkZWZpbml0aW9uLiAgKi8NCj4gICAgaWYgKHNpbmdsZV9kZWZ1c2VfY3ljbGUp DQo+ICAgICAgew0KPiAgICAgICAgZ2NjX2Fzc2VydCAoIXNscF9ub2RlKTsNCj4gQEAgLTgzMDEs NyArODM3MSw3IEBAIHZlY3RfdHJhbnNmb3JtX3JlZHVjdGlvbiAobG9vcF92ZWNfaW5mbw0KPiBs b29wX3ZpbmZvLA0KPiAgCX0NCj4gICAgICAgIGVsc2UNCj4gIAl7DQo+IC0JICBpZiAob3AubnVt X29wcyA9PSAzKQ0KPiArCSAgaWYgKG9wLm51bV9vcHMgPj0gMykNCj4gIAkgICAgdm9wWzJdID0g dmVjX29wcm5kczJbaV07DQo+IA0KPiAgCSAgaWYgKG1hc2tlZF9sb29wX3AgJiYgbWFza19ieV9j b25kX2V4cHIpIEBAIC04MzE0LDEwDQo+ICs4Mzg0LDE2IEBAIHZlY3RfdHJhbnNmb3JtX3JlZHVj dGlvbiAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLA0KPiAgCSAgaWYgKGVtdWxhdGVkX21peGVk X2RvdF9wcm9kKQ0KPiAgCSAgICBuZXdfc3RtdCA9IHZlY3RfZW11bGF0ZV9taXhlZF9kb3RfcHJv ZCAobG9vcF92aW5mbywgc3RtdF9pbmZvLA0KPiBnc2ksDQo+ICAJCQkJCQkgICAgdmVjX2Rlc3Qs IHZvcCk7DQo+IC0JICBlbHNlIGlmIChjb2RlLmlzX2ludGVybmFsX2ZuICgpKQ0KPiArDQo+ICsJ ICBlbHNlIGlmIChjb2RlLmlzX2ludGVybmFsX2ZuICgpICYmICFjb25kX2ZuX3AgKGNvZGUpKQ0K PiAgCSAgICBuZXdfc3RtdCA9IGdpbXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChpbnRlcm5hbF9m biAoY29kZSksDQo+ICAJCQkJCQkgICBvcC5udW1fb3BzLA0KPiAgCQkJCQkJICAgdm9wWzBdLCB2 b3BbMV0sIHZvcFsyXSk7DQo+ICsJICBlbHNlIGlmIChjb25kX2ZuX3AgKGNvZGUpKQ0KPiArCSAg ICBuZXdfc3RtdCA9IGdpbXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChpbnRlcm5hbF9mbiAoY29k ZSksDQo+ICsJCQkJCQkgICBvcC5udW1fb3BzLA0KPiArCQkJCQkJICAgdm9wWzBdLCB2b3BbMV0s IHZvcFsyXSwNCj4gKwkJCQkJCSAgIHZvcFsxXSk7DQo+ICAJICBlbHNlDQo+ICAJICAgIG5ld19z dG10ID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAodmVjX2Rlc3QsIHRyZWVfY29kZSAob3AuY29kZSks DQo+ICAJCQkJCSAgICB2b3BbMF0sIHZvcFsxXSwgdm9wWzJdKTsNCj4gZGlmZiAtLWdpdCBhL2dj Yy90cmVlLXZlY3Rvcml6ZXIuaCBiL2djYy90cmVlLXZlY3Rvcml6ZXIuaCBpbmRleA0KPiBmMWQw Y2Q3OTk2MS4uZTIyMDY3NDAwYWYgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLXZlY3Rvcml6ZXIu aA0KPiArKysgYi9nY2MvdHJlZS12ZWN0b3JpemVyLmgNCj4gQEAgLTIzMTksNyArMjMxOSw3IEBA IGV4dGVybiB0cmVlIHZlY3RfY3JlYXRlX2FkZHJfYmFzZV9mb3JfdmVjdG9yX3JlZg0KPiAodmVj X2luZm8gKiwNCj4gIAkJCQkJCSAgdHJlZSk7DQo+IA0KPiAgLyogSW4gdHJlZS12ZWN0LWxvb3Au Y2MuICAqLw0KPiAtZXh0ZXJuIHRyZWUgbmV1dHJhbF9vcF9mb3JfcmVkdWN0aW9uICh0cmVlLCBj b2RlX2hlbHBlciwgdHJlZSk7DQo+ICtleHRlcm4gdHJlZSBuZXV0cmFsX29wX2Zvcl9yZWR1Y3Rp b24gKHRyZWUsIGNvZGVfaGVscGVyLCB0cmVlLCBib29sID0NCj4gK3RydWUpOw0KPiAgZXh0ZXJu IHdpZGVzdF9pbnQgdmVjdF9pdl9saW1pdF9mb3JfcGFydGlhbF92ZWN0b3JzIChsb29wX3ZlY19p bmZvDQo+IGxvb3BfdmluZm8pOyAgYm9vbCB2ZWN0X3Jncm91cF9pdl9taWdodF93cmFwX3AgKGxv b3BfdmVjX2luZm8sDQo+IHJncm91cF9jb250cm9scyAqKTsNCj4gIC8qIFVzZWQgaW4gdHJlZS12 ZWN0LWxvb3AtbWFuaXAuY2MgKi8NCj4gLS0NCj4gMi40MS4wDQo=