From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 59A88A0544; Tue, 11 Oct 2022 09:20:05 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3D75A42C6E; Tue, 11 Oct 2022 09:20:05 +0200 (CEST) Received: from EUR03-VI1-obe.outbound.protection.outlook.com (mail-vi1eur03on2042.outbound.protection.outlook.com [40.107.103.42]) by mails.dpdk.org (Postfix) with ESMTP id 47FD940F19 for ; Tue, 11 Oct 2022 09:20:03 +0200 (CEST) ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=X9K3sc45T2jAqe5aAoQ+cTceC8upyV9C9EwliHFdRGZql2+jvBrggMOT3Q3Vl9wKWtsZmFUuEIs4RQIBTWy+++koxRshehMqbQIcn4bvjkb31APR1yHiZ8cR3HrHQD7U+TWBs+l2DBT8XEq+9Ig53BDPh+LCGfBVU8lKR572dcvPgv8fxjBsclmzfsqC0xDZyfQKL36LRDH8p6TQrfqLOe6AyO2cjmVeeF8RaUFgRpOPWj4weYd5kgBCwDFJNNiMxE2rEGGXQpW1WP8lFlB6mQcYLn58eokzD8LXNXokYt3ciW67RxUX+SMwz/NLpSpw38YTgRcD9UbFaDxDd/BrZw== ARC-Message-Signature: i=2; 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=O4R/fzaPMJZWXkPHHhDHxGNpN2TkPbMkVAteINfp7kE=; b=K3JJvPKxIL8gJZfXe2URYiC610xuzieFgZZlsdN0RVVa4m0tBQvKAJ03BGG0i866iDnNQjjhn+Tm3ABJWyC88Gi046DJgDhn0clBrpGutSZ0GFDtYu+ZAX4EBem5jwHSC9snKjcpYMb8m8f5MTh5wDExxs584ASdh2pOzTRXRYo7JulnS29Gmn9otOKk48uhy1HAfCuhYbQHi6Wh5sE9i5JIFOJUQASY11OnY20sUO19g7rujzi/8qL3OYEaGzPVFy2MAbC2vFY73YxVAoYiBJQsKyTA86d07p/XlyewitSMrT4i+gF1brw4i6nRcoBLta0/jWOC9SDruua+D3C4uw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=dpdk.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=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=O4R/fzaPMJZWXkPHHhDHxGNpN2TkPbMkVAteINfp7kE=; b=YoMUN9FpeX33lepsvE2sKktOFRGhHahrabUfK3GVlfsFZgCQXjkpvAFN/1vfuE35iz2AZW/bPuscH6KE7YYgI0eSd7gSsIv+LLLyV0+apfLmTIEbEU2++c+9ONYuTh+mx+l6PGn4dpW8O1YOXYpyW0/K7HThCRTARwwab84Qelo= Received: from AS9PR06CA0709.eurprd06.prod.outlook.com (2603:10a6:20b:49f::32) by AS8PR08MB8945.eurprd08.prod.outlook.com (2603:10a6:20b:5b5::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Tue, 11 Oct 2022 07:20:01 +0000 Received: from AM7EUR03FT010.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:49f:cafe::16) by AS9PR06CA0709.outlook.office365.com (2603:10a6:20b:49f::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Tue, 11 Oct 2022 07:20:01 +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 AM7EUR03FT010.mail.protection.outlook.com (100.127.141.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.10 via Frontend Transport; Tue, 11 Oct 2022 07:20:00 +0000 Received: ("Tessian outbound c2c2da38ad67:v128"); Tue, 11 Oct 2022 07:20:00 +0000 X-CR-MTA-TID: 64aa7808 Received: from 1e42edbedc26.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id A9A7FF95-27A9-480B-9E53-5E1C00902F69.1; Tue, 11 Oct 2022 07:19:50 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 1e42edbedc26.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 11 Oct 2022 07:19:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IB3ctASsfE4dfwce/PfZrBTAzT9xZIc8HjVY7KlDOqqaTY5ATAG8TFnoTR9qh9TXfTTpgJV/CrMyfav1U6dUXzo+MlCdUXuRcLq2obLKHB88IBaRhQ0YPj5pVSxVwt2tRA0Lwy6EVZMmIS95NEPv1e53H8OQDOvOgWTTfLlW2EXtcbXmnIi89QiAnCz+ZY/KQ524ddlnbi/aLig3GmFPGjN0/tSYa0pAE85YCylkDz6qzh3//S9HUQaqpb2AeSjPpwswbfCZFBj63S1Aj/1E0GEzuiwA4otONeFaoAmtBT7TQLaNQaTvBVNtcB5ybw/6aeCGry5rSyFSpb9G/j5P0w== 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=O4R/fzaPMJZWXkPHHhDHxGNpN2TkPbMkVAteINfp7kE=; b=bEc6lrqHD6DHWVRYZaMPUeEWFvQMGMdcYFB5xRaiOOE0Y1JemPxHCS5wwQFBNhdxA7tAeCtfB99xI29mquIb1ho6h2Z4k4XwquPpOqxZsBC1AarUM2BDdY6+BqPUdslLk61SNOzdIqTc1C3zrXg0cxtsCBS2CNMtV9C2j4Fwql/uXThpbCOGpBasmqmdP04C5WMFJv/NEOu+4HR7ADRxAXsbs5ni0tx7ugr+9emHNvw61t17VuI+mQQVOxSBC4WJCaqOzQB2E+iK2Au4HPXdO7usJkdxEEVj8fa3o5T67HHhRhUVw1IJ3rWsaZKj3IV0CywP99ms9sZeaFt+s3fa+Q== 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=O4R/fzaPMJZWXkPHHhDHxGNpN2TkPbMkVAteINfp7kE=; b=YoMUN9FpeX33lepsvE2sKktOFRGhHahrabUfK3GVlfsFZgCQXjkpvAFN/1vfuE35iz2AZW/bPuscH6KE7YYgI0eSd7gSsIv+LLLyV0+apfLmTIEbEU2++c+9ONYuTh+mx+l6PGn4dpW8O1YOXYpyW0/K7HThCRTARwwab84Qelo= Received: from AS8PR08MB7718.eurprd08.prod.outlook.com (2603:10a6:20b:50a::22) by GVXPR08MB7704.eurprd08.prod.outlook.com (2603:10a6:150:6a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.32; Tue, 11 Oct 2022 07:19:48 +0000 Received: from AS8PR08MB7718.eurprd08.prod.outlook.com ([fe80::165f:9706:a442:32d8]) by AS8PR08MB7718.eurprd08.prod.outlook.com ([fe80::165f:9706:a442:32d8%7]) with mapi id 15.20.5676.028; Tue, 11 Oct 2022 07:19:48 +0000 From: Feifei Wang To: Konstantin Ananyev , "thomas@monjalon.net" , Ferruh Yigit , Andrew Rybchenko , Ray Kinsella CC: "dev@dpdk.org" , nd , Honnappa Nagarahalli , Ruifeng Wang , nd Subject: =?utf-8?B?5Zue5aSNOiBbUEFUQ0ggdjIgMS8zXSBldGhkZXY6IGFkZCBBUEkgZm9yIGRp?= =?utf-8?Q?rect_rearm_mode?= Thread-Topic: [PATCH v2 1/3] ethdev: add API for direct rearm mode Thread-Index: AQHY0hubrZ1gYS40jUunqUVQppYvUK38aE4AgAxcYgA= Date: Tue, 11 Oct 2022 07:19:48 +0000 Message-ID: References: <20220927024756.947272-1-feifei.wang2@arm.com> <20220927024756.947272-2-feifei.wang2@arm.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: F7231C8AF9DA6B42894C79B66FC8476F.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: AS8PR08MB7718:EE_|GVXPR08MB7704:EE_|AM7EUR03FT010:EE_|AS8PR08MB8945:EE_ X-MS-Office365-Filtering-Correlation-Id: ff341ef0-8f72-40ed-3db9-08daab5902b0 x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr 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: /ER9S8eEZrLVQBWgV7K5UM2nbeGwc78Y3yPDUYqOmyUdGqHv33+BNVyxvxxpi1f/trnZnsIrZEX6L+JuWfS2tolFfZUs+kgWfUXLwucLp5niI/13f7kzvY+HW8R7o4e019A3wi/ZUvai+KRPZVm3WhPF23rD5DBdggmY4IXpGe02ZofjmZtqdzahTBzQJbtmaPlXjGJImr75FBJOXHS1GExVkIDlUZ8oVFPJdH/s10svCM1WwnBzbq6/n4ibLxF9W43kwGnxqiaLJgP+Gkbx/KMrNSApPpBhyuldTVU/aFkh5Kpo/xStobbwZL1NFng+cA4cQK1+XDCcmGZNMneYO4J0E1Py6V8UkTe/9/NEYMoCW8psAba6an9VvaQWb96BiXEmki36tzViARvPc2VyziLjjSBJEis5Wsqe02NQ8H18QlZT8Rt8iQKOfPEeaVCkRodRj2W57dNbAEAjTxywZwxzFP2ofc6ri9dy6pE2ELsOY5YgUa1ztB5M9jFtkEOGdn5/zuhftXa+ObizGiH2yf0RI8rmYc2ktyege6mpDXYRYQ3JZJtlBSlPUfxnNlGIOO2d132uGvYCe6+zKPSP1iaHPOup3vWVK2FZ9J3qKjAvE5xF8QNEd1r1Lm1CSmYmw6SyjFHeoGaorS8Uj+gEXXztn7KoeZIf7H+unmDReEnNOtnbmNkqt3MNaX6jKnSUFoFjEvtQZl1UT0//as4qlNhnRHRdAeAxaak6uFuwIS3cFD8vGrb6+eUo7Qh4z/a6FlIElq3evy2TUnlFKmRLEg== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7718.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(136003)(366004)(396003)(39860400002)(346002)(376002)(451199015)(54906003)(224303003)(33656002)(110136005)(86362001)(38070700005)(30864003)(83380400001)(122000001)(6506007)(66556008)(66476007)(38100700002)(186003)(64756008)(41300700001)(26005)(66946007)(316002)(8936002)(76116006)(4326008)(71200400001)(66446008)(478600001)(52536014)(9686003)(7696005)(55016003)(2906002)(5660300002); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB7704 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: AM7EUR03FT010.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 5df0839b-2d40-46a8-c322-08daab58faea X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UxD6D5EuQQ2GCemgBrmD/nFwE042kqcJSaaNvoX8qZX/oKmUVAiqM7dnwnYKBnp4ZUDJ0n37qjJZO6qB236tBqlNhLWGPQxvW/oMno5N9js6uVsUyhoVmj/lnS6OtRNWQDalsGHXJYVOG5hQ1o2U2LaEtiadwjgpwVNNj9dfWxyYAvpE9UWvkxOBJR6T0StX/xy0U4BFVgEUoW76UFpo6m4bFaKwfvmrtyl7kPoDbPeL05vgQsHAx/XFmbAJVxKd9bMfYTMIjkEux1t5SfUmMJAWaL5aIGUFfVvYSvlwaLGCYVA03B+oQF3SLw1UZ+ENRW4FZTExp6Zh9SzaBtkj3j38AJLcqaiL/gFp4ryOOrNDuxysXWT12HJm0nyU3PcjuyxqTdZQbE+iOYyWpckGlqbrG9v0/8CBpqPd5TSbWoXfIQwBHicEsgErI0+E0Ya8HGGHbrT+hQtUjZhp5rVH5uMDV9TFIZxhZp6Kucm6rYJN4C16Yc6Xi8BEguQSYKGnkgnFIkCuZSr1N17N9eSgpmUHenYhV3M4pcYZopzwou3bi0Ka0Lxd+fF90dYZMYbOM4nCbwnGgM3bOkO6t/I4vvrWJRJgbDsYTRq7woleocn8Vl+mcNqTBJP1Eh6jwrwuseKRbkdwB9GiH0+yMRqjhOsa46wzIDwmxbd4nMgjNnJkTN83lwDtYBZzuirTpExCPPwrUr/lmj1Jp8weEhtED/UP9H/ryrPCE8AV420zeIQjekiYRRfa9aTelSz8bdiKaDfEp9LBAeCAKzNVQhPdFt12pnYFDCHQ9XkBb5vKff4Jvhqb7rYSkQWoXfj8CT+g 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:(13230022)(4636009)(396003)(376002)(39860400002)(346002)(136003)(451199015)(36840700001)(40470700004)(46966006)(47076005)(40460700003)(83380400001)(336012)(186003)(41300700001)(55016003)(52536014)(8936002)(82740400003)(36860700001)(7696005)(6506007)(9686003)(2906002)(26005)(356005)(316002)(5660300002)(40480700001)(4326008)(54906003)(110136005)(82310400005)(478600001)(224303003)(33656002)(86362001)(81166007)(30864003)(70586007)(70206006)(23180200003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Oct 2022 07:20:00.9859 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ff341ef0-8f72-40ed-3db9-08daab5902b0 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: AM7EUR03FT010.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8945 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQo+IC0tLS0t6YKu5Lu25Y6f5Lu2LS0tLS0NCj4g5Y+R5Lu25Lq6OiBLb25zdGFudGluIEFuYW55 ZXYgPGtvbnN0YW50aW4udi5hbmFueWV2QHlhbmRleC5ydT4NCj4g5Y+R6YCB5pe26Ze0OiBNb25k YXksIE9jdG9iZXIgMywgMjAyMiA0OjU4IFBNDQo+IOaUtuS7tuS6ujogRmVpZmVpIFdhbmcgPEZl aWZlaS5XYW5nMkBhcm0uY29tPjsgdGhvbWFzQG1vbmphbG9uLm5ldDsNCj4gRmVycnVoIFlpZ2l0 IDxmZXJydWgueWlnaXRAeGlsaW54LmNvbT47IEFuZHJldyBSeWJjaGVua28NCj4gPGFuZHJldy5y eWJjaGVua29Ab2t0ZXRsYWJzLnJ1PjsgUmF5IEtpbnNlbGxhIDxtZHJAYXNocm9lLmV1Pg0KPiDm ioTpgIE6IGRldkBkcGRrLm9yZzsgbmQgPG5kQGFybS5jb20+OyBIb25uYXBwYSBOYWdhcmFoYWxs aQ0KPiA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47IFJ1aWZlbmcgV2FuZw0KPiA8UnVp ZmVuZy5XYW5nQGFybS5jb20+DQo+IOS4u+mimDogUmU6IFtQQVRDSCB2MiAxLzNdIGV0aGRldjog YWRkIEFQSSBmb3IgZGlyZWN0IHJlYXJtIG1vZGUNCj4gDQo+IDI3LzA5LzIwMjIgMDM6NDcsIEZl aWZlaSBXYW5nINC/0LjRiNC10YI6DQo+ID4gQWRkIEFQSSBmb3IgZW5hYmxpbmcgZGlyZWN0IHJl YXJtIG1vZGUgYW5kIGZvciBtYXBwaW5nIFJYIGFuZCBUWA0KPiA+IHF1ZXVlcy4gQ3VycmVudGx5 LCB0aGUgQVBJIHN1cHBvcnRzIDE6MSh0eHEgOiByeHEpIG1hcHBpbmcuDQo+ID4NCj4gPiBGdXJ0 aGVybW9yZSwgdG8gYXZvaWQgUnggbG9hZCBUeCBkYXRhIGRpcmVjdGx5LCBhZGQgQVBJIGNhbGxl ZA0KPiA+ICdydGVfZXRoX3R4cV9kYXRhX2dldCcgdG8gZ2V0IFR4IHN3X3JpbmcgYW5kIGl0cyBp bmZvcm1hdGlvbi4NCj4gPg0KPiA+IFN1Z2dlc3RlZC1ieTogSG9ubmFwcGEgTmFnYXJhaGFsbGkg PGhvbm5hcHBhLm5hZ2FyYWhhbGxpQGFybS5jb20+DQo+ID4gU3VnZ2VzdGVkLWJ5OiBSdWlmZW5n IFdhbmcgPHJ1aWZlbmcud2FuZ0Bhcm0uY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEZlaWZlaSBX YW5nIDxmZWlmZWkud2FuZzJAYXJtLmNvbT4NCj4gPiBSZXZpZXdlZC1ieTogUnVpZmVuZyBXYW5n IDxydWlmZW5nLndhbmdAYXJtLmNvbT4NCj4gPiBSZXZpZXdlZC1ieTogSG9ubmFwcGEgTmFnYXJh aGFsbGkgPGhvbm5hcHBhLm5hZ2FyYWhhbGxpQGFybS5jb20+DQo+ID4gLS0tDQo+ID4gICBsaWIv ZXRoZGV2L2V0aGRldl9kcml2ZXIuaCAgIHwgIDkgKysrKw0KPiA+ICAgbGliL2V0aGRldi9ldGhk ZXZfcHJpdmF0ZS5jICB8ICAxICsNCj4gPiAgIGxpYi9ldGhkZXYvcnRlX2V0aGRldi5jICAgICAg fCAzNyArKysrKysrKysrKysrKw0KPiA+ICAgbGliL2V0aGRldi9ydGVfZXRoZGV2LmggICAgICB8 IDk1DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICAgbGliL2V0 aGRldi9ydGVfZXRoZGV2X2NvcmUuaCB8ICA1ICsrDQo+ID4gICBsaWIvZXRoZGV2L3ZlcnNpb24u bWFwICAgICAgIHwgIDQgKysNCj4gPiAgIDYgZmlsZXMgY2hhbmdlZCwgMTUxIGluc2VydGlvbnMo KykNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuaCBiL2xp Yi9ldGhkZXYvZXRoZGV2X2RyaXZlci5oDQo+ID4gaW5kZXggNDdhNTVhNDE5ZS4uMTRmNTI5MDdj MSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuaA0KPiA+ICsrKyBi L2xpYi9ldGhkZXYvZXRoZGV2X2RyaXZlci5oDQo+ID4gQEAgLTU4LDYgKzU4LDggQEAgc3RydWN0 IHJ0ZV9ldGhfZGV2IHsNCj4gPiAgIAlldGhfcnhfZGVzY3JpcHRvcl9zdGF0dXNfdCByeF9kZXNj cmlwdG9yX3N0YXR1czsNCj4gPiAgIAkvKiogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhIFR4IGRlc2Ny aXB0b3IgKi8NCj4gPiAgIAlldGhfdHhfZGVzY3JpcHRvcl9zdGF0dXNfdCB0eF9kZXNjcmlwdG9y X3N0YXR1czsNCj4gPiArCS8qKiAgVXNlIFR4IG1idWZzIGZvciBSeCB0byByZWFybSAqLw0KPiA+ ICsJZXRoX3J4X2RpcmVjdF9yZWFybV90IHJ4X2RpcmVjdF9yZWFybTsNCj4gPg0KPiA+ICAgCS8q Kg0KPiA+ICAgCSAqIERldmljZSBkYXRhIHRoYXQgaXMgc2hhcmVkIGJldHdlZW4gcHJpbWFyeSBh bmQgc2Vjb25kYXJ5DQo+ID4gcHJvY2Vzc2VzIEBAIC00ODYsNiArNDg4LDExIEBAIHR5cGVkZWYg aW50DQo+ICgqZXRoX3J4X2VuYWJsZV9pbnRyX3QpKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0K PiA+ICAgdHlwZWRlZiBpbnQgKCpldGhfcnhfZGlzYWJsZV9pbnRyX3QpKHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LA0KPiA+ICAgCQkJCSAgICB1aW50MTZfdCByeF9xdWV1ZV9pZCk7DQo+ID4NCj4g PiArLyoqPCBAaW50ZXJuYWwgR2V0IFR4IGluZm9ybWF0aW9uIG9mIGEgdHJhbnNtaXQgcXVldWUg b2YgYW4gRXRoZXJuZXQNCj4gPiArZGV2aWNlLiAqLyB0eXBlZGVmIHZvaWQgKCpldGhfdHhxX2Rh dGFfZ2V0X3QpKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICsJCQkJICAgICAgdWludDE2 X3QgdHhfcXVldWVfaWQsDQo+ID4gKwkJCQkgICAgICBzdHJ1Y3QgcnRlX2V0aF90eHFfZGF0YSAq dHhxX2RhdGEpOw0KPiA+ICsNCj4gPiAgIC8qKiBAaW50ZXJuYWwgUmVsZWFzZSBtZW1vcnkgcmVz b3VyY2VzIGFsbG9jYXRlZCBieSBnaXZlbiBSeC9UeCBxdWV1ZS4NCj4gKi8NCj4gPiAgIHR5cGVk ZWYgdm9pZCAoKmV0aF9xdWV1ZV9yZWxlYXNlX3QpKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0K PiA+ICAgCQkJCSAgICB1aW50MTZfdCBxdWV1ZV9pZCk7DQo+ID4gQEAgLTExMzgsNiArMTE0NSw4 IEBAIHN0cnVjdCBldGhfZGV2X29wcyB7DQo+ID4gICAJZXRoX3J4cV9pbmZvX2dldF90ICAgICAg ICAgcnhxX2luZm9fZ2V0Ow0KPiA+ICAgCS8qKiBSZXRyaWV2ZSBUeCBxdWV1ZSBpbmZvcm1hdGlv biAqLw0KPiA+ICAgCWV0aF90eHFfaW5mb19nZXRfdCAgICAgICAgIHR4cV9pbmZvX2dldDsNCj4g PiArCS8qKiBHZXQgdGhlIGFkZHJlc3Mgd2hlcmUgVHggZGF0YSBpcyBzdG9yZWQgKi8NCj4gPiAr CWV0aF90eHFfZGF0YV9nZXRfdCAgICAgICAgIHR4cV9kYXRhX2dldDsNCj4gPiAgIAlldGhfYnVy c3RfbW9kZV9nZXRfdCAgICAgICByeF9idXJzdF9tb2RlX2dldDsgLyoqPCBHZXQgUnggYnVyc3QN Cj4gbW9kZSAqLw0KPiA+ICAgCWV0aF9idXJzdF9tb2RlX2dldF90ICAgICAgIHR4X2J1cnN0X21v ZGVfZ2V0OyAvKio8IEdldCBUeCBidXJzdA0KPiBtb2RlICovDQo+ID4gICAJZXRoX2Z3X3ZlcnNp b25fZ2V0X3QgICAgICAgZndfdmVyc2lvbl9nZXQ7IC8qKjwgR2V0IGZpcm13YXJlDQo+IHZlcnNp b24gKi8NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ldGhkZXZfcHJpdmF0ZS5jIGIvbGli L2V0aGRldi9ldGhkZXZfcHJpdmF0ZS5jDQo+ID4gaW5kZXggNDgwOTBjODc5YS4uYmZlMTZjN2Q3 NyAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZXRoZGV2L2V0aGRldl9wcml2YXRlLmMNCj4gPiArKysg Yi9saWIvZXRoZGV2L2V0aGRldl9wcml2YXRlLmMNCj4gPiBAQCAtMjc2LDYgKzI3Niw3IEBAIGV0 aF9kZXZfZnBfb3BzX3NldHVwKHN0cnVjdCBydGVfZXRoX2ZwX29wcw0KPiAqZnBvLA0KPiA+ICAg CWZwby0+cnhfcXVldWVfY291bnQgPSBkZXYtPnJ4X3F1ZXVlX2NvdW50Ow0KPiA+ICAgCWZwby0+ cnhfZGVzY3JpcHRvcl9zdGF0dXMgPSBkZXYtPnJ4X2Rlc2NyaXB0b3Jfc3RhdHVzOw0KPiA+ICAg CWZwby0+dHhfZGVzY3JpcHRvcl9zdGF0dXMgPSBkZXYtPnR4X2Rlc2NyaXB0b3Jfc3RhdHVzOw0K PiA+ICsJZnBvLT5yeF9kaXJlY3RfcmVhcm0gPSBkZXYtPnJ4X2RpcmVjdF9yZWFybTsNCj4gPg0K PiA+ICAgCWZwby0+cnhxLmRhdGEgPSBkZXYtPmRhdGEtPnJ4X3F1ZXVlczsNCj4gPiAgIAlmcG8t PnJ4cS5jbGJrID0gKHZvaWQgKiopKHVpbnRwdHJfdClkZXYtPnBvc3RfcnhfYnVyc3RfY2JzOw0K PiA+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBiL2xpYi9ldGhkZXYvcnRl X2V0aGRldi5jIGluZGV4DQo+ID4gMGMyYzEwODhjMC4uMGRjY2VjMmU0YiAxMDA2NDQNCj4gPiAt LS0gYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYw0KPiA+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2V0 aGRldi5jDQo+ID4gQEAgLTE2NDgsNiArMTY0OCw0MyBAQCBydGVfZXRoX2Rldl9pc19yZW1vdmVk KHVpbnQxNl90IHBvcnRfaWQpDQo+ID4gICAJcmV0dXJuIHJldDsNCj4gPiAgIH0NCj4gPg0KPiA+ ICtpbnQNCj4gPiArcnRlX2V0aF90eF9xdWV1ZV9kYXRhX2dldCh1aW50MTZfdCBwb3J0X2lkLCB1 aW50MTZfdCBxdWV1ZV9pZCwNCj4gPiArCQkJc3RydWN0IHJ0ZV9ldGhfdHhxX2RhdGEgKnR4cV9k YXRhKSB7DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldjsNCj4gPiArDQo+ID4gKwlSVEVf RVRIX1ZBTElEX1BPUlRJRF9PUl9FUlJfUkVUKHBvcnRfaWQsIC1FTk9ERVYpOw0KPiA+ICsJZGV2 ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiArDQo+ID4gKwlpZiAocXVldWVfaWQg Pj0gZGV2LT5kYXRhLT5uYl90eF9xdWV1ZXMpIHsNCj4gPiArCQlSVEVfRVRIREVWX0xPRyhFUlIs ICJJbnZhbGlkIFR4IHF1ZXVlX2lkPSV1XG4iLA0KPiBxdWV1ZV9pZCk7DQo+ID4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKHR4cV9kYXRhID09IE5VTEwpIHsN Cj4gPiArCQlSVEVfRVRIREVWX0xPRyhFUlIsICJDYW5ub3QgZ2V0IGV0aGRldiBwb3J0ICV1IFR4 DQo+IHF1ZXVlICV1IGRhdGEgdG8gTlVMTFxuIiwNCj4gPiArCQkJcG9ydF9pZCwgcXVldWVfaWQp Ow0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChkZXYt PmRhdGEtPnR4X3F1ZXVlcyA9PSBOVUxMIHx8DQo+ID4gKwkJCWRldi0+ZGF0YS0+dHhfcXVldWVz W3F1ZXVlX2lkXSA9PSBOVUxMKSB7DQo+ID4gKwkJUlRFX0VUSERFVl9MT0coRVJSLA0KPiA+ICsJ CQkgICAiVHggcXVldWUgJSJQUkl1MTYiIG9mIGRldmljZSB3aXRoIHBvcnRfaWQ9JSINCj4gPiAr CQkJICAgUFJJdTE2IiBoYXMgbm90IGJlZW4gc2V0dXBcbiIsDQo+ID4gKwkJCSAgIHF1ZXVlX2lk LCBwb3J0X2lkKTsNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArDQo+ID4g KwlpZiAoKmRldi0+ZGV2X29wcy0+dHhxX2RhdGFfZ2V0ID09IE5VTEwpDQo+ID4gKwkJcmV0dXJu IC1FTk9UU1VQOw0KPiA+ICsNCj4gPiArCWRldi0+ZGV2X29wcy0+dHhxX2RhdGFfZ2V0KGRldiwg cXVldWVfaWQsIHR4cV9kYXRhKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiAgIHN0YXRpYyBpbnQNCj4gPiAgIHJ0ZV9ldGhfcnhfcXVldWVfY2hlY2tfc3BsaXQo Y29uc3Qgc3RydWN0IHJ0ZV9ldGhfcnhzZWdfc3BsaXQgKnJ4X3NlZywNCj4gPiAgIAkJCSAgICAg dWludDE2X3Qgbl9zZWcsIHVpbnQzMl90ICptYnBfYnVmX3NpemUsIGRpZmYgLS1naXQNCj4gPiBh L2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmggaW5kZXgN Cj4gPiAyZTc4MzUzNmMxLi5kYWY3ZjA1ZDYyIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9ldGhkZXYv cnRlX2V0aGRldi5oDQo+ID4gKysrIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmgNCj4gPiBAQCAt MTk0OSw2ICsxOTQ5LDIzIEBAIHN0cnVjdCBydGVfZXRoX3R4cV9pbmZvIHsNCj4gPiAgIAl1aW50 OF90IHF1ZXVlX3N0YXRlOyAgICAgICAgLyoqPCBvbmUgb2YgUlRFX0VUSF9RVUVVRV9TVEFURV8q LiAqLw0KPiA+ICAgfSBfX3J0ZV9jYWNoZV9taW5fYWxpZ25lZDsNCj4gPg0KPiA+ICsvKioNCj4g PiArICogQGludGVybmFsDQo+ID4gKyAqIFN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgcG9pbnRlcnMg dG8gaW50ZXJuYWwgZXRoZGV2IFR4IGRhdGEuDQo+ID4gKyAqIFRoZSBtYWluIHB1cnBvc2UgaXMg dG8gbG9hZCBhbmQgc3RvcmUgVHggcXVldWUgZGF0YSBpbiBkaXJlY3QgcmVhcm0NCj4gbW9kZS4N Cj4gPiArICovDQo+ID4gK3N0cnVjdCBydGVfZXRoX3R4cV9kYXRhIHsNCj4gPiArCXVpbnQ2NF90 ICpvZmZsb2FkczsNCj4gPiArCXZvaWQgKnR4X3N3X3Jpbmc7DQo+ID4gKwl2b2xhdGlsZSB2b2lk ICp0eF9yaW5nOw0KPiA+ICsJdWludDE2X3QgKnR4X25leHRfZGQ7DQo+ID4gKwl1aW50MTZfdCAq bmJfdHhfZnJlZTsNCj4gPiArCXVpbnQxNl90IG5iX3R4X2Rlc2M7DQo+ID4gKwl1aW50MTZfdCB0 eF9yc190aHJlc2g7DQo+ID4gKwl1aW50MTZfdCB0eF9mcmVlX3RocmVzaDsNCj4gPiArfSBfX3J0 ZV9jYWNoZV9taW5fYWxpZ25lZDsNCj4gPiArDQo+IA0KPiBmaXJzdCBvZiBhbGwgaXQgaXMgbm90 IGNsZWFyIHdoeSB0aGlzIHN0cnVjdCBoYXMgdG8gYmUgaW4gcHVibGljIGhlYWRlciwgd2h5IGl0 IGNhbid0DQo+IGJlIGluIG9uIG9mIGV0aGRldiAncHJpdmF0ZScgaGVhZGVycy4NCj4gU2Vjb25k IGl0IGxvb2tzIGxpa2UgYSBzbmlwcGV0IGZyb20gcHJpdmF0ZSB0eHEgZmllbGRzIGZvciBzb21l IEludGVsIChhbmQgYWxpa2UpDQo+IFBNRHMgKGk0MGUsIGljZSwgZXRjLikuDQo+IEhvdyBpdCBz dXBwb3NlZCB0byB0byBiZSB1bml2ZXJzYWwgYW5kIGJlIGFwcGxpY2FibGUgZm9yIGFueSBQTUQg dGhhdA0KPiBkZWNpZGVzIHRvIGltcGxlbWVudCB0aGlzIG5ldyBBUEk/DQo+IA0KPiANCj4gPiAg IC8qIEdlbmVyaWMgQnVyc3QgbW9kZSBmbGFnIGRlZmluaXRpb24sIHZhbHVlcyBjYW4gYmUgT1Jl ZC4gKi8NCj4gPg0KPiA+ICAgLyoqDQo+ID4gQEAgLTQ3MTgsNiArNDczNSwyNyBAQCBpbnQgcnRl X2V0aF9yZW1vdmVfcnhfY2FsbGJhY2sodWludDE2X3QNCj4gcG9ydF9pZCwgdWludDE2X3QgcXVl dWVfaWQsDQo+ID4gICBpbnQgcnRlX2V0aF9yZW1vdmVfdHhfY2FsbGJhY2sodWludDE2X3QgcG9y dF9pZCwgdWludDE2X3QgcXVldWVfaWQsDQo+ID4gICAJCWNvbnN0IHN0cnVjdCBydGVfZXRoX3J4 dHhfY2FsbGJhY2sgKnVzZXJfY2IpOw0KPiA+DQo+ID4gKy8qKg0KPiA+ICsgKiBHZXQgdGhlIGFk ZHJlc3Mgd2hpY2ggVHggZGF0YSBpcyBzdG9yZWQuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBw b3J0X2lkDQo+ID4gKyAqICAgVGhlIHBvcnQgaWRlbnRpZmllciBvZiB0aGUgRXRoZXJuZXQgZGV2 aWNlLg0KPiA+ICsgKiBAcGFyYW0gcXVldWVfaWQNCj4gPiArICogICBUaGUgVHggcXVldWUgb24g dGhlIEV0aGVybmV0IGRldmljZSBmb3Igd2hpY2ggaW5mb3JtYXRpb24NCj4gPiArICogICB3aWxs IGJlIHJldHJpZXZlZC4NCj4gPiArICogQHBhcmFtIHR4cV9kYXRhDQo+ID4gKyAqICAgQSBwb2lu dGVyIHRvIGEgc3RydWN0dXJlIG9mIHR5cGUgKnJ0ZV9ldGhfdHhxX2RhdGEqIHRvIGJlIGZpbGxl ZC4NCj4gPiArICoNCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgIC0gMDogU3VjY2Vzcw0KPiA+ ICsgKiAgIC0gLUVOT0RFVjogIElmICpwb3J0X2lkKiBpcyBpbnZhbGlkLg0KPiA+ICsgKiAgIC0g LUVOT1RTVVA6IHJvdXRpbmUgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlIFBNRC4NCj4g PiArICogICAtIC1FSU5WQUw6ICBUaGUgcXVldWVfaWQgaXMgb3V0IG9mIHJhbmdlLg0KPiA+ICsg Ki8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK2ludCBydGVfZXRoX3R4X3F1ZXVlX2Rh dGFfZ2V0KHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkLA0KPiA+ICsJCXN0cnVj dCBydGVfZXRoX3R4cV9kYXRhICp0eHFfZGF0YSk7DQo+ID4gKw0KPiA+ICAgLyoqDQo+ID4gICAg KiBSZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCBnaXZlbiBwb3J0J3MgUnggcXVldWUuDQo+ID4g ICAgKg0KPiA+IEBAIC02MjA5LDYgKzYyNDcsNjMgQEAgcnRlX2V0aF90eF9idWZmZXIodWludDE2 X3QgcG9ydF9pZCwgdWludDE2X3QNCj4gcXVldWVfaWQsDQo+ID4gICAJcmV0dXJuIHJ0ZV9ldGhf dHhfYnVmZmVyX2ZsdXNoKHBvcnRfaWQsIHF1ZXVlX2lkLCBidWZmZXIpOw0KPiA+ICAgfQ0KPiA+ DQo+ID4gKy8qKg0KPiA+ICsgKiBAd2FybmluZw0KPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRo aXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQgcHJpb3INCj4gPiArbm90 aWNlDQo+ID4gKyAqDQo+ID4gKyAqIFB1dCBUeCBidWZmZXJzIGludG8gUnggc3ctcmluZyBhbmQg cmVhcm0gZGVzY3MuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBwb3J0X2lkDQo+ID4gKyAqICAg UG9ydCBpZGVudGlmeWluZyB0aGUgcmVjZWl2ZSBzaWRlLg0KPiA+ICsgKiBAcGFyYW0gcXVldWVf aWQNCj4gPiArICogICBUaGUgaW5kZXggb2YgdGhlIHRyYW5zbWl0IHF1ZXVlIGlkZW50aWZ5aW5n IHRoZSByZWNlaXZlIHNpZGUuDQo+ID4gKyAqICAgVGhlIHZhbHVlIG11c3QgYmUgaW4gdGhlIHJh bmdlIFswLCBuYl9yeF9xdWV1ZSAtIDFdIHByZXZpb3VzbHkNCj4gc3VwcGxpZWQNCj4gPiArICog ICB0byBydGVfZXRoX2Rldl9jb25maWd1cmUoKS4NCj4gPiArICogQHBhcmFtIHR4cV9kYXRhDQo+ ID4gKyAqICAgQSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIG9mIHR5cGUgKnJ0ZV9ldGhfdHhxX2Rh dGEqIHRvIGJlIGZpbGxlZC4NCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgIFRoZSBudW1iZXIg b2YgZGlyZWN0LXJlYXJtZWQgYnVmZmVycy4NCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1l bnRhbA0KPiA+ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB1aW50MTZfdA0KPiA+ICtydGVf ZXRoX3J4X2RpcmVjdF9yZWFybSh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCwN Cj4gPiArCQlzdHJ1Y3QgcnRlX2V0aF90eHFfZGF0YSAqdHhxX2RhdGEpDQo+ID4gK3sNCj4gPiAr CXVpbnQxNl90IG5iX3JlYXJtOw0KPiA+ICsJc3RydWN0IHJ0ZV9ldGhfZnBfb3BzICpwOw0KPiA+ ICsJdm9pZCAqcWQ7DQo+ID4gKw0KPiA+ICsjaWZkZWYgUlRFX0VUSERFVl9ERUJVR19SWA0KPiA+ ICsJaWYgKHBvcnRfaWQgPj0gUlRFX01BWF9FVEhQT1JUUyB8fA0KPiA+ICsJCQlxdWV1ZV9pZCA+ PSBSVEVfTUFYX1FVRVVFU19QRVJfUE9SVCkgew0KPiA+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwN Cj4gPiArCQkJIkludmFsaWQgcG9ydF9pZD0ldSBvciBxdWV1ZV9pZD0ldVxuIiwNCj4gPiArCQkJ cG9ydF9pZCwgcXVldWVfaWQpOw0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ICsjZW5k aWYNCj4gPiArDQo+ID4gKwlwID0gJnJ0ZV9ldGhfZnBfb3BzW3BvcnRfaWRdOw0KPiA+ICsJcWQg PSBwLT5yeHEuZGF0YVtxdWV1ZV9pZF07DQo+ID4gKw0KPiA+ICsjaWZkZWYgUlRFX0VUSERFVl9E RUJVR19SWA0KPiA+ICsJUlRFX0VUSF9WQUxJRF9QT1JUSURfT1JfRVJSX1JFVChwb3J0X2lkLCAw KTsNCj4gPiArDQo+ID4gKwlpZiAocWQgPT0gTlVMTCkgew0KPiA+ICsJCVJURV9FVEhERVZfTE9H KEVSUiwgIkludmFsaWQgUnggcXVldWVfaWQ9JXUgZm9yDQo+IHBvcnRfaWQ9JXVcbiIsDQo+ID4g KwkJCXF1ZXVlX2lkLCBwb3J0X2lkKTsNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiAr DQo+ID4gKwlpZiAoIXAtPnJ4X2RpcmVjdF9yZWFybSkNCj4gDQo+IFRoaXMgY2hlY2sgc2hvdWxk IGJlIGRvbmUgYWx3YXlzICh1bmNvbmRpdGlvbmFsbHkpLg0KPiBpdCBpcyBub3QgYSBtYW5kYXRv cnkgZnVuY3Rpb24gZm9yIHRoZSBkcml2ZXIgKGl0IGNhbiBzYWZlbHkgc2tpcCB0byBpbXBsZW1l bnQgaXQpLg0KPiANCj4gPiArCQlyZXR1cm4gLUVOT1RTVVA7DQo+IA0KPiBUaGlzIGZ1bmN0aW9u IHJldHVybnMgdWludDE2X3QsIHdoeSBzaWduZWQgaW50ZWdlcnMgaGVyZT8NCj4gDQo+IA0KPiA+ ICsjZW5kaWYNCj4gPiArDQo+ID4gKwluYl9yZWFybSA9IHAtPnJ4X2RpcmVjdF9yZWFybShxZCwg dHhxX2RhdGEpOw0KPiANCj4gU28gcnhfZGlyZWN0X3JlYXJtKCkgZnVuY3Rpb24ga25vd3MgaG93 IHRvIGV4dHJhY3QgZGF0YSBmcm9tIFRYIHF1ZXVlPw0KPiBBcyBJIHVuZGVyc3RhbmQgdGhhdCBp cyBwb3NzaWJsZSBvbmx5IGluIG9uZSBjYXNlOg0KPiByeF9kaXJlY3RfcmVhcm0oKSBoYXMgZnVs bCBrbm93bGVkZ2UgYW5kIGFjZXNzIG9mIHR4cSBpbnRlcm5hbHMsIGV0Yy4NCj4gVGhhdCBtZWFu cyB0aGF0IHJ4cSBhbmQgdHhxIGhhdmUgdG8gYmVsb25nIHRvIHRoZSBzYW1lIGRyaXZlciBhbmQg ZGV2aWNlDQo+IHR5cGUuDQo+IA0KVGhhbmtzIGZvciB0aGUgY29tbWVudHMsIGFuZCBJIGhhdmUg c29tZSBxdWVzdGlvbnMgZm9yIHRoaXMuDQoNCj4gRmlyc3Qgb2YgYWxsLCBJIHN0aWxsIHRoaW5r IGl0IGlzIG5vdCB0aGUgYmVzdCBkZXNpZ24gY2hvaWNlLg0KPiBJZiB3ZSBnb2luZyBhaGVhZCB3 aXRoIGludHJvZHVjaW5nIHRoaXMgZmVhdHVyZSwgaXQgYmV0dGVyIGJlIGFzIGdlbmVyaWMgYXMN Cj4gcG9zc2libGUuDQo+IFBsdXMgaXQgbWl4ZXMgVFggYW5kIFJYIGNvZGUtcGF0aHMgdG9nZXRo ZXIsIHdoaWxlIGl0IHdvdWxkIGJlIG11Y2ggYmV0dGVyDQo+IHRvIHRvIGtlZXAgdGhlbSBpbmRl cGVuZGVudCBhcyB0aGV5IGFyZSByaWdodCBub3cuDQo+IA0KPiBBbm90aGVyIHRoaW5nIHdpdGgg c3VjaCBhcHByb2FjaCAtIGV2ZW4gZm9yIHRoZSBzYW1lIFBNRCwgYm90aCBUWFEgYW5kDQo+IFJY USBjYW4gaGF2ZSBkaWZmZXJlbnQgaW50ZXJuYWwgZGF0YSBmb3JtYXQgYW5kIGJlaGF2aW9yIGxv Z2ljIChkZXBlbmRpbmcNCj4gb24gcG9ydC9xdWV1ZSBjb25maWd1cmF0aW9uKS4NCjEuIEhlcmUg VFhRIGFuZCBSWFEgaGF2ZSBkaWZmZXJlbnQgaW50ZXJuYWwgZm9ybWF0IG1lYW5zIHRoZSBxdWV1 ZSB0eXBlIA0KYW5kICBkZXNjcyBjYW4gYmUgZGlmZmVyZW50LCByaWdodD8gSWYgSSB1bmRlcnN0 YW5kIGNvcnJlY3RseSwgYmFzZWQgb24geW91ciANCmZpcnN0IHN0cmF0ZWd5LCBpcyBpdCBtZWFu cyB3ZSB3aWxsIG5lZWQgZGlmZmVyZW50ICdyZWFybV9mdW5jJyBmb3IgZGlmZmVyZW50DQpxdWV1 ZSB0eXBlIGluIHRoZSBzYW1lIFBNRD8NCg0KPiBTbyByeF9kaXJlY3RfcmVhcm0oKSBmdW5jdGlv biBzZWxlY3Rpb24gaGF2ZSB0byBiZSBkb25lIGJhc2VkIG9uIGJvdGggUlhRDQo+IGFuZCBUWFEg Y29uZmlnLg0KPiBTbyBpbnN0ZWFkIG9mIHJ0ZV9ldGhfdHhfcXVldWVfZGF0YV9nZXQoKSwgeW91 J2xsIHByb2JhYmx5IG5lZWQ6DQo+IGV0aF9yeF9kaXJlY3RfcmVhcm1fdCBydGVfZXRoX2dldF9y eF9kaXJlY3RfcmVhcm1fZnVuYyhyeF9wb3J0LA0KPiByeF9xdWV1ZSwgdHhfcG9ydCwgdHhfcXVl dWUpOw0KPiBUaGVuLCBpdCB3aWxsIGJlIHVzZXIgcmVzcG9uc2liaWxpdHkgdG8gc3RvcmUgaXQg c29tZXdoZXJlIGFuZCBjYWxsIHBlcmlvZGljYWxseToNCj4gDQo+IGNvbnRyb2xfcGF0aDoNCj4g CS4uLg0KPiAJcmVhcm1fZnVuYyA9IHJ0ZV9ldGhfZ2V0X3J4X2RpcmVjdF9yZWFybV9mdW5jKHJ4 cG9ydCwgcnhxdWV1ZSwNCj4gCQkgdHhwb3J0LCB0eHF1ZXVlKTsNCj4gZGF0YS1wYXRoOg0KPiAJ d2hpbGUoLi4uKSB7DQo+IAkJcmVhcm1fZnVuYyhyeHBvcnQsIHR4cG9ydCwgcnhxdWV1ZSwgdHhx dWV1ZSk7DQo+IAkJcnRlX2V0aF9yeF9idXJzdChyeHBvcnQsIHJ4cXVldWUsIC4uLi4pOw0KPiAJ CXJ0ZV9ldGhfdHhfYnVyc3QodHhwb3J0LCB0eHF1ZXVlLCAuLi4uKTsNCj4gCX0NCj4gDQo+IA0K PiBJbiB0aGF0IGNhc2UgdGhlcmUgc2VlbXMgYWJzb2x1dGVseSBubyBwb2ludCB0byBpbnRyb2R1 Y2Ugc3RydWN0DQo+IHJ0ZV9ldGhfdHhxX2RhdGEuIHJ4X2RpcmVjdF9yZWFybSgpIGFjY2Vzc2Vz IFRYUSBwcml2YXRlIGRhdGEgZGlyZWN0bHkNCj4gYW55d2F5Lg0KMi4gVGhpcyBpcyBhIHZlcnkg Z29vZCBwcm9wb3NhbCBhbmQgaXQgd2lsbCBiZSBvdXIgZmlyc3QgY2hvaWNlLiBCZWZvcmUgd29y a2luZyBvbiBpdCwNCkkgaGF2ZSBhIGZldyBxdWVzdGlvbnMgYWJvdXQgaG93IHRvIGltcGxlbWVu dCAncmVhcm1fZnVuYycuIA0KTGlrZSB5b3Ugc2F5IGFib3ZlLCBtaXhlZCBSeCBhbmQgVHggcGF0 aCBjb2RlIGluICdyZWFybV9mdW5jJyBtZWFucyB0aGUgaGFyZC1jb2RlDQppcyBtaXhlZCBsaWtl Og0KcmVhcm1fZnVuYyguLi4pIHsNCiAgICAgLi4uDQogICAgdHhlcCA9ICZ0eHEtPnN3X3Jpbmdb dHhxLT50eF9uZXh0X2RkIC0gKHR4cS0+dHhfcnNfdGhyZXNoIC0gMSldOw0KICAgIGZvciAoLi4u KSB7DQogICAgICAgcnhlcFtpXS5tYnVmID0gdHhlcFtpXS5tYnVmOw0KICAgICAgIG1iMCA9IHR4 ZXBbaV0ubWJ1ZjsNCiAgICAgICBwYWRkciA9IG1iMC0+YnVmX2lvdmEgKyBSVEVfUEtUTUJVRl9I RUFEUk9PTTsNCiAgICAgIGRtYV9hZGRyMCA9IHZkdXBxX25fdTY0KHBhZGRyKTsNCiAgICAgIHZz dDFxX3U2NCgodWludDY0X3QgKikmcnhkcCsrLT5yZWFkLCBkbWFfYWRkcjApOw0KICAgIH0NCn0N CklzIG15IHVuZGVyc3RhbmRpbmcgaXMgcmlnaHQ/DQoNCj4gDQo+IEFub3RoZXIgd2F5IC0gbWFr ZSBydGVfZXRoX3R4cV9kYXRhIHRvdGFsbHkgb3BhcXVlIGFuZCBhbGxvdyBQTUQgdG8NCj4gc3Rv cmUgdGhlcmUgc29tZSBkYXRhIHRoYXQgd2lsbCBoZWxwIGl0IHRvIGRpc3Rpbmd1aXNoIGV4cGVj dGVkIFRYUSBmb3JtYXQuDQo+IFRoYXQgd2lsbCBhbGxvdyBQTUQgdG8ga2VlcCByeF9kaXJlY3Rf cmVhcm0oKSB0aGUgc2FtZSBmb3IgYWxsIHN1cHBvcnRlZA0KPiBUWFEgZm9ybWF0cyAoaXQgd2ls bCBtYWtlIGRlY2lzaW9uIGludGVybmFsbHkgYmFzZWQgb24gZGF0YSBzdG9yZWQgaW4NCj4gdHhx X2RhdGEpLg0KPiBUaG91Z2ggaW4gdGhhdCBjYXNlIHlvdSdsbCBwcm9iYWJseSBuZWVkIG9uZSBt b3JlIGRldi1vcCB0byBmcmVlIHR4cV9kYXRhLg0KDQo=