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 57381A0542; Wed, 26 Oct 2022 09:36:04 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 342F540E28; Wed, 26 Oct 2022 09:36:04 +0200 (CEST) Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02on2071.outbound.protection.outlook.com [40.107.249.71]) by mails.dpdk.org (Postfix) with ESMTP id D05C140A7F for ; Wed, 26 Oct 2022 09:36:02 +0200 (CEST) ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=fTu54bnCXWATkrgN92/H7ZWLxull5bVmapGJ5X9p93d99O3e43dczyJc/qtgL6LIM6BBGWLlw4dxNqsq1mu9yqcxB8TOLwl3ztcLTXBKrgvsCBgQlUUeeA9kQPHA8J1hqtTU+iV4ui0i3uhNhNg/UZxmbIB94A5KhP0cJhNxyGbAhVAYlRHYSfQF8XIIREyfxXJPklcpaw8ws+EKo9QKW/srulG/igtRmWwhMs1JY5MDNDvMESbxwaA10yxJWSQi2F8S6xC1EwKMnli5ER9EJNyKMnAMCFePcVy3LcSqm0vUjFyX24whCXfAPgc/Co155ZYfG9OhT+vyvT8ODiRgug== 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=dc4fzztltgoR9tq6dFwslrCO2nOlTaxWhUQlL0iT6tk=; b=g28GP8q0LmW69DqCWpEJJBBYWcJa9wEuA3aiIWLWID2/+8dPvxNs4nyGVCtU3hEdDtCBaUq6F72kVbr2X0ePvxj7DHes/NQnUofs8dZCn1iW7DSEQcauNvDgL/JhrSVV8d34njtm1Omnoq5gJxIllsQWYlX4cgz1PiEp+AKQ4zXGJMNC/kDEJqFhbYnW4qtvwt2XSQCNFbXu3THq6nCbMnoc9WNEpZa9qrg9RoShxMit/o7cPPmvKmws+EeQUZFx6jguBzJKaV3Ppgkrmc10SOdikYmG5nLkyBDGLhGa9iI2QsHq+lU3Js5b39H2rv+XfkG/NDeAZ3wVJvPmFL1a4w== 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=dc4fzztltgoR9tq6dFwslrCO2nOlTaxWhUQlL0iT6tk=; b=qgO+ahlhNghn5eh24xDRe8QVjfwjVUeB6I6Vq3P96Qy1QsZ62KsbsmBwXwVVzqhcpQBVGYqMjoWEugmxh711mr/YbbUjBb90C3uh946hLceoTe9B8XitT1giqLQ5i08YKrXX7Trltvd83GdP/fZa0VM7LoCx8DT4dXaeIq4yBhc= Received: from AS9PR04CA0120.eurprd04.prod.outlook.com (2603:10a6:20b:531::7) by AS8PR08MB6200.eurprd08.prod.outlook.com (2603:10a6:20b:292::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.21; Wed, 26 Oct 2022 07:35:52 +0000 Received: from AM7EUR03FT015.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:531:cafe::62) by AS9PR04CA0120.outlook.office365.com (2603:10a6:20b:531::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.22 via Frontend Transport; Wed, 26 Oct 2022 07:35:52 +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 AM7EUR03FT015.mail.protection.outlook.com (100.127.140.173) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.32 via Frontend Transport; Wed, 26 Oct 2022 07:35:51 +0000 Received: ("Tessian outbound 73ab5f36653e:v130"); Wed, 26 Oct 2022 07:35:50 +0000 X-CR-MTA-TID: 64aa7808 Received: from 49691fc34cce.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F52A7CB3-B89B-4822-964A-1E97BE125583.1; Wed, 26 Oct 2022 07:35:40 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 49691fc34cce.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 26 Oct 2022 07:35:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RS6OtlaqHNR/87zbLhMbmUncrxYT/3uZHI0SrL6hrmszZRqQW8ibKL1j3ssuCKNKjMPKW9OtyykFZ5IYxCflSOEw2FHOYnhpCWH0TzLPZDFH4G7YkvjWPm/O1JkDsl7CsRKQ9umIsFPRGX9hlBQNjbnClFOS//HeF9LSrEizyNoHPdVZEpHBl6ZW1lObz5q/shZfJecNKWqlJFVcBUwNfQDGVML11ORjtqI8DOqDCpJ3ODtEehTUSOyKy5fornDlkokh52BJIiMqOUo+JnVHGaCTH1Knpp/+dBVZuU8ScMfzTF+aPOlf1uUgGt/GHBYxRbrEbPwIiTYN2TsvYYIYyw== 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=dc4fzztltgoR9tq6dFwslrCO2nOlTaxWhUQlL0iT6tk=; b=ADC8tNBHyfoapxi8lFKQd30+t9KjlMCykzXbK8tjdbQ3R1Qnxwvh4S/+H2s0xdVOv0kDO8Qb1XsnTIzWReLTXaxhrdAUPUY1miojbhXXuQdTmssB86P1o1FBgCeA5qEWxoL5/VPBDcyMR8vnODLfsrydMkUrQ1wGzNDV/N46loFnZgeB6lnyQKwaReyh7sSjMO7u6W0TEg5ZTaYJmvqK0CqAdS4Qhjus1UNw105IZ7MByYEUCviVpb0FxJ3nM6sRt+JBC5zZdNkws3bB9lMOWZ91O+k8JcamwFBGvmp1y14m7TDt49IgAcYMOtenDDEVbFzo+wZgeF7nAu5rlL+RWQ== 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=dc4fzztltgoR9tq6dFwslrCO2nOlTaxWhUQlL0iT6tk=; b=qgO+ahlhNghn5eh24xDRe8QVjfwjVUeB6I6Vq3P96Qy1QsZ62KsbsmBwXwVVzqhcpQBVGYqMjoWEugmxh711mr/YbbUjBb90C3uh946hLceoTe9B8XitT1giqLQ5i08YKrXX7Trltvd83GdP/fZa0VM7LoCx8DT4dXaeIq4yBhc= Received: from AS8PR08MB7718.eurprd08.prod.outlook.com (2603:10a6:20b:50a::22) by DBBPR08MB6204.eurprd08.prod.outlook.com (2603:10a6:10:1f5::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.28; Wed, 26 Oct 2022 07:35:32 +0000 Received: from AS8PR08MB7718.eurprd08.prod.outlook.com ([fe80::19c2:cb43:875b:8ae0]) by AS8PR08MB7718.eurprd08.prod.outlook.com ([fe80::19c2:cb43:875b:8ae0%6]) with mapi id 15.20.5746.021; Wed, 26 Oct 2022 07:35:31 +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?5Zue5aSNOiDlm57lpI06IOWbnuWkjTogW1BBVENIIHYyIDEvM10gZXRoZGV2?= =?utf-8?Q?:_add_API_for_direct_rearm_mode?= Thread-Topic: =?utf-8?B?5Zue5aSNOiDlm57lpI06IFtQQVRDSCB2MiAxLzNdIGV0aGRldjogYWRkIEFQ?= =?utf-8?Q?I_for_direct_rearm_mode?= Thread-Index: AQHY0hubrZ1gYS40jUunqUVQppYvUK38aE4AgAxcYgCAARargIAA+/HQgAFWdICACumswA== Date: Wed, 26 Oct 2022 07:35:31 +0000 Message-ID: References: <20220927024756.947272-1-feifei.wang2@arm.com> <20220927024756.947272-2-feifei.wang2@arm.com> <771c16c9-cb84-2d35-5e64-3686b7b5822e@yandex.ru> <2d17cd4e-2eca-3e34-ea81-0a72903d46f1@yandex.ru> In-Reply-To: <2d17cd4e-2eca-3e34-ea81-0a72903d46f1@yandex.ru> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 210678F03E67A8468AE08CC40A04A4D0.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_|DBBPR08MB6204:EE_|AM7EUR03FT015:EE_|AS8PR08MB6200:EE_ X-MS-Office365-Filtering-Correlation-Id: 04d211d5-8b05-4db6-864a-08dab724b534 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: cjg/f0DwT6Q3yxv9kLJn9rS6hPlQFgOeYEm3CIQy1bskAqX3M1XQDazEZU7VZzDIFU3pM3qVp/q1zWjD150MSopFZa1lpbgLHvHDIJKecv1xA6Yymdr7/pkstVz2d51xTnvpwmB2l8bj7YtJVqdnjKUs7TVZfDmFGvC987mIWwb0ZIiS+UnUkCwqyouMbYRwxU0BKkUoT7aZ7b9HYmPaWnM06X3kG4CCuBW0AxB04DBAyfpC3jCFirdn1TBosiNHulAMyaO48h/LK79BY/flqCt5QMs7M5STUymRGvvIE6hRIqw4Km+0ZzJeV5WnTcGwv5sOBP0kAMtPuRmu2U4rE68E0gVmreD1qpc/xms4eWTOgGJMac1hp4pypIX8pYF1XXBtDXlb+i54p+JQJFEDIEf+FAT2JyppW5Q0RAc4nIRmIf9BCf6jcz4PV+VG7AeJho52t42FD11UXlGIhL/hb19Dyhi9wf9uRS3PSK8aVktxxGU4J2m2T0tFSngE56XFhbKQjqHCX+3q7suVosTfAWiiP4DRlsy95cqgmzoRU6VpG5CS/6aqvGPG6xsFc08tjkMd9fLO5Piwpc6y/v6jthXnmItgi8L7gy/DoCPgS7Mc3jS5bbVNEMWNS2DvGg9j2vzd9r3ndELj9LTHyyQJNFi+bnrv7UulwSLOdEaHc/IVht7+vSxpgvW40x4XIN7/JTqKdQDT86jEY4F5wm3MnnlX8KhXicdMeNBFeCsduUaDFq19lyO0O3I05XjtsIAuS85bYJ+b4Bbq07iEaxzABw== 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)(346002)(396003)(376002)(366004)(39860400002)(451199015)(26005)(6506007)(7696005)(9686003)(83380400001)(478600001)(186003)(2906002)(64756008)(316002)(66476007)(66446008)(55016003)(41300700001)(110136005)(54906003)(66946007)(52536014)(8936002)(5660300002)(71200400001)(4326008)(30864003)(66556008)(76116006)(33656002)(86362001)(224303003)(122000001)(38070700005)(38100700002); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6204 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: AM7EUR03FT015.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 8d19bcba-0f87-4649-1518-08dab724a947 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NcwXv/rEom9s3uiAbLTvKnVm1RSL6dryV81NpDWcdwZJK89aK0T8PpK2axc5ka0pPKx/Ymxx3H5eZK9K5ydnLJUlXePdGvRKP8EAxcVyqVmDKEQlvU+4YfWWyDBk6pDbwNolpScBmOMFtWp1COodFrNAAPbVbwu5Ehe0QQDep/dyernXvwxOaDzCRGZ9rsOcLQ+UdxzSVhWw92y21nL5jOtm2W9KsLcnGp7sXWxi5skz2IJEMcs+5eXiQla8WUC2JXa04GgepBRbQCoZ3TF1cqDcHxbOKFY4EPwjhsS9xzk/6lyqtxatWCB3byObHBvpDGVYpmM6fU4uj/qkh0uPN3ckh/CRfvTKaeJ3RYDKHwCQT/MqTD17+6k2fDix/fTE27niad5bubFxBg9kppYAveg/CICkneC9I1LKC7Dqt/+rM9ANZI+vYJlHqBGsKaYoRquRy+0+vweyAPakg2qRWEYV3qcyvBLUdKSHYQZ6EA9O+q3SCHBhp1BMP5Ly2ePd2C1qYhN5xYvui0pjXpYF01pHFTtQijku87KXfJ+R8NXR1eSdp7oer7/6kQkCa7b7+sMqXZjKHL23hqLNGuH2wPECFqT2yIkRhXmTpfytCDOIMWB3Vy6lnWqhDpr9y97ZS3RdVXL0vQ3SF8b+7nvJ5aT6o9G560FSrCWlCpqmD1LynfPm0aDo4TzakUBnVPeMoEWiv1KhJRmQHCzOigo5p8q1ftksZVGVHc8W30HbKEAIGs+QNEQwEWPCDXA2vbapsaL+7uRrnTlAjAO0Rkae1zkyrPb8RX5RaDD4pmz5CthYHHwsbtgl44y+kwpxflvY8yRu4fD73cSCc/51Bqz6NA== 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:ErrorRetry; CAT:NONE; SFS:(13230022)(4636009)(136003)(39860400002)(346002)(396003)(376002)(451199015)(46966006)(36840700001)(40470700004)(36860700001)(83380400001)(478600001)(336012)(82740400003)(8936002)(86362001)(52536014)(81166007)(356005)(2906002)(224303003)(47076005)(54906003)(82310400005)(316002)(186003)(110136005)(26005)(6506007)(55016003)(33656002)(9686003)(4326008)(40460700003)(5660300002)(7696005)(70206006)(70586007)(30864003)(40480700001)(41300700001)(23180200003)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2022 07:35:51.2389 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 04d211d5-8b05-4db6-864a-08dab724b534 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: AM7EUR03FT015.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6200 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 DQoNCj4gLS0tLS3pgq7ku7bljp/ku7YtLS0tLQ0KPiDlj5Hku7bkuro6IEtvbnN0YW50aW4gQW5h bnlldiA8a29uc3RhbnRpbi52LmFuYW55ZXZAeWFuZGV4LnJ1Pg0KPiDlj5HpgIHml7bpl7Q6IFRo dXJzZGF5LCBPY3RvYmVyIDEzLCAyMDIyIDU6NDkgUE0NCj4g5pS25Lu25Lq6OiBGZWlmZWkgV2Fu ZyA8RmVpZmVpLldhbmcyQGFybS5jb20+OyB0aG9tYXNAbW9uamFsb24ubmV0Ow0KPiBGZXJydWgg WWlnaXQgPGZlcnJ1aC55aWdpdEB4aWxpbnguY29tPjsgQW5kcmV3IFJ5YmNoZW5rbw0KPiA8YW5k cmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+OyBSYXkgS2luc2VsbGEgPG1kckBhc2hyb2UuZXU+ DQo+IOaKhOmAgTogZGV2QGRwZGsub3JnOyBuZCA8bmRAYXJtLmNvbT47IEhvbm5hcHBhIE5hZ2Fy YWhhbGxpDQo+IDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tPjsgUnVpZmVuZyBXYW5nDQo+ IDxSdWlmZW5nLldhbmdAYXJtLmNvbT4NCj4g5Li76aKYOiBSZTog5Zue5aSNOiDlm57lpI06IFtQ QVRDSCB2MiAxLzNdIGV0aGRldjogYWRkIEFQSSBmb3IgZGlyZWN0IHJlYXJtIG1vZGUNCj4gDQo+ IDEyLzEwLzIwMjIgMTQ6MzgsIEZlaWZlaSBXYW5nINC/0LjRiNC10YI6DQo+ID4NCj4gPg0KPiA+ PiAtLS0tLemCruS7tuWOn+S7ti0tLS0tDQo+ID4+IOWPkeS7tuS6ujogS29uc3RhbnRpbiBBbmFu eWV2IDxrb25zdGFudGluLnYuYW5hbnlldkB5YW5kZXgucnU+DQo+ID4+IOWPkemAgeaXtumXtDog V2VkbmVzZGF5LCBPY3RvYmVyIDEyLCAyMDIyIDY6MjEgQU0NCj4gPj4g5pS25Lu25Lq6OiBGZWlm ZWkgV2FuZyA8RmVpZmVpLldhbmcyQGFybS5jb20+OyB0aG9tYXNAbW9uamFsb24ubmV0Ow0KPiBG ZXJydWgNCj4gPj4gWWlnaXQgPGZlcnJ1aC55aWdpdEB4aWxpbnguY29tPjsgQW5kcmV3IFJ5YmNo ZW5rbw0KPiA+PiA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+OyBSYXkgS2luc2VsbGEg PG1kckBhc2hyb2UuZXU+DQo+ID4+IOaKhOmAgTogZGV2QGRwZGsub3JnOyBuZCA8bmRAYXJtLmNv bT47IEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQo+ID4+IDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0u Y29tPjsgUnVpZmVuZyBXYW5nDQo+IDxSdWlmZW5nLldhbmdAYXJtLmNvbT4NCj4gPj4g5Li76aKY OiBSZTog5Zue5aSNOiBbUEFUQ0ggdjIgMS8zXSBldGhkZXY6IGFkZCBBUEkgZm9yIGRpcmVjdCBy ZWFybSBtb2RlDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+Pj4+IEFkZCBBUEkgZm9yIGVuYWJsaW5n IGRpcmVjdCByZWFybSBtb2RlIGFuZCBmb3IgbWFwcGluZyBSWCBhbmQgVFgNCj4gPj4+Pj4gcXVl dWVzLiBDdXJyZW50bHksIHRoZSBBUEkgc3VwcG9ydHMgMToxKHR4cSA6IHJ4cSkgbWFwcGluZy4N Cj4gPj4+Pj4NCj4gPj4+Pj4gRnVydGhlcm1vcmUsIHRvIGF2b2lkIFJ4IGxvYWQgVHggZGF0YSBk aXJlY3RseSwgYWRkIEFQSSBjYWxsZWQNCj4gPj4+Pj4gJ3J0ZV9ldGhfdHhxX2RhdGFfZ2V0JyB0 byBnZXQgVHggc3dfcmluZyBhbmQgaXRzIGluZm9ybWF0aW9uLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBT dWdnZXN0ZWQtYnk6IEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQo+IDxob25uYXBwYS5uYWdhcmFoYWxs aUBhcm0uY29tPg0KPiA+Pj4+PiBTdWdnZXN0ZWQtYnk6IFJ1aWZlbmcgV2FuZyA8cnVpZmVuZy53 YW5nQGFybS5jb20+DQo+ID4+Pj4+IFNpZ25lZC1vZmYtYnk6IEZlaWZlaSBXYW5nIDxmZWlmZWku d2FuZzJAYXJtLmNvbT4NCj4gPj4+Pj4gUmV2aWV3ZWQtYnk6IFJ1aWZlbmcgV2FuZyA8cnVpZmVu Zy53YW5nQGFybS5jb20+DQo+ID4+Pj4+IFJldmlld2VkLWJ5OiBIb25uYXBwYSBOYWdhcmFoYWxs aQ0KPiA8aG9ubmFwcGEubmFnYXJhaGFsbGlAYXJtLmNvbT4NCj4gPj4+Pj4gLS0tDQo+ID4+Pj4+ ICAgICBsaWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuaCAgIHwgIDkgKysrKw0KPiA+Pj4+PiAgICAg bGliL2V0aGRldi9ldGhkZXZfcHJpdmF0ZS5jICB8ICAxICsNCj4gPj4+Pj4gICAgIGxpYi9ldGhk ZXYvcnRlX2V0aGRldi5jICAgICAgfCAzNyArKysrKysrKysrKysrKw0KPiA+Pj4+PiAgICAgbGli L2V0aGRldi9ydGVfZXRoZGV2LmggICAgICB8IDk1DQo+ID4+Pj4gKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrDQo+ID4+Pj4+ICAgICBsaWIvZXRoZGV2L3J0ZV9ldGhkZXZfY29y ZS5oIHwgIDUgKysNCj4gPj4+Pj4gICAgIGxpYi9ldGhkZXYvdmVyc2lvbi5tYXAgICAgICAgfCAg NCArKw0KPiA+Pj4+PiAgICAgNiBmaWxlcyBjaGFuZ2VkLCAxNTEgaW5zZXJ0aW9ucygrKQ0KPiA+ Pj4+Pg0KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmgNCj4g Pj4+Pj4gYi9saWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuaCBpbmRleCA0N2E1NWE0MTllLi4xNGY1 MjkwN2MxIDEwMDY0NA0KPiA+Pj4+PiAtLS0gYS9saWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuaA0K PiA+Pj4+PiArKysgYi9saWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuaA0KPiA+Pj4+PiBAQCAtNTgs NiArNTgsOCBAQCBzdHJ1Y3QgcnRlX2V0aF9kZXYgew0KPiA+Pj4+PiAgICAgCWV0aF9yeF9kZXNj cmlwdG9yX3N0YXR1c190IHJ4X2Rlc2NyaXB0b3Jfc3RhdHVzOw0KPiA+Pj4+PiAgICAgCS8qKiBD aGVjayB0aGUgc3RhdHVzIG9mIGEgVHggZGVzY3JpcHRvciAqLw0KPiA+Pj4+PiAgICAgCWV0aF90 eF9kZXNjcmlwdG9yX3N0YXR1c190IHR4X2Rlc2NyaXB0b3Jfc3RhdHVzOw0KPiA+Pj4+PiArCS8q KiAgVXNlIFR4IG1idWZzIGZvciBSeCB0byByZWFybSAqLw0KPiA+Pj4+PiArCWV0aF9yeF9kaXJl Y3RfcmVhcm1fdCByeF9kaXJlY3RfcmVhcm07DQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICAJLyoqDQo+ ID4+Pj4+ICAgICAJICogRGV2aWNlIGRhdGEgdGhhdCBpcyBzaGFyZWQgYmV0d2VlbiBwcmltYXJ5 IGFuZCBzZWNvbmRhcnkNCj4gPj4+Pj4gcHJvY2Vzc2VzIEBAIC00ODYsNiArNDg4LDExIEBAIHR5 cGVkZWYgaW50DQo+ID4+Pj4gKCpldGhfcnhfZW5hYmxlX2ludHJfdCkoc3RydWN0IHJ0ZV9ldGhf ZGV2ICpkZXYsDQo+ID4+Pj4+ICAgICB0eXBlZGVmIGludCAoKmV0aF9yeF9kaXNhYmxlX2ludHJf dCkoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4+Pj4+ICAgICAJCQkJICAgIHVpbnQxNl90 IHJ4X3F1ZXVlX2lkKTsNCj4gPj4+Pj4NCj4gPj4+Pj4gKy8qKjwgQGludGVybmFsIEdldCBUeCBp bmZvcm1hdGlvbiBvZiBhIHRyYW5zbWl0IHF1ZXVlIG9mIGFuDQo+ID4+Pj4+ICtFdGhlcm5ldCBk ZXZpY2UuICovIHR5cGVkZWYgdm9pZCAoKmV0aF90eHFfZGF0YV9nZXRfdCkoc3RydWN0DQo+ID4+ IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4+Pj4+ICsJCQkJICAgICAgdWludDE2X3QgdHhfcXVldWVf aWQsDQo+ID4+Pj4+ICsJCQkJICAgICAgc3RydWN0IHJ0ZV9ldGhfdHhxX2RhdGENCj4gKnR4cV9k YXRhKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiAgICAgLyoqIEBpbnRlcm5hbCBSZWxlYXNlIG1lbW9y eSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGdpdmVuDQo+ID4+Pj4+IFJ4L1R4DQo+ID4+IHF1ZXVl Lg0KPiA+Pj4+ICovDQo+ID4+Pj4+ICAgICB0eXBlZGVmIHZvaWQgKCpldGhfcXVldWVfcmVsZWFz ZV90KShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPj4+Pj4gICAgIAkJCQkgICAgdWludDE2 X3QgcXVldWVfaWQpOw0KPiA+Pj4+PiBAQCAtMTEzOCw2ICsxMTQ1LDggQEAgc3RydWN0IGV0aF9k ZXZfb3BzIHsNCj4gPj4+Pj4gICAgIAlldGhfcnhxX2luZm9fZ2V0X3QgICAgICAgICByeHFfaW5m b19nZXQ7DQo+ID4+Pj4+ICAgICAJLyoqIFJldHJpZXZlIFR4IHF1ZXVlIGluZm9ybWF0aW9uICov DQo+ID4+Pj4+ICAgICAJZXRoX3R4cV9pbmZvX2dldF90ICAgICAgICAgdHhxX2luZm9fZ2V0Ow0K PiA+Pj4+PiArCS8qKiBHZXQgdGhlIGFkZHJlc3Mgd2hlcmUgVHggZGF0YSBpcyBzdG9yZWQgKi8N Cj4gPj4+Pj4gKwlldGhfdHhxX2RhdGFfZ2V0X3QgICAgICAgICB0eHFfZGF0YV9nZXQ7DQo+ID4+ Pj4+ICAgICAJZXRoX2J1cnN0X21vZGVfZ2V0X3QgICAgICAgcnhfYnVyc3RfbW9kZV9nZXQ7IC8q KjwgR2V0IFJ4DQo+IGJ1cnN0DQo+ID4+Pj4gbW9kZSAqLw0KPiA+Pj4+PiAgICAgCWV0aF9idXJz dF9tb2RlX2dldF90ICAgICAgIHR4X2J1cnN0X21vZGVfZ2V0OyAvKio8IEdldCBUeA0KPiBidXJz dA0KPiA+Pj4+IG1vZGUgKi8NCj4gPj4+Pj4gICAgIAlldGhfZndfdmVyc2lvbl9nZXRfdCAgICAg ICBmd192ZXJzaW9uX2dldDsgLyoqPCBHZXQNCj4gZmlybXdhcmUNCj4gPj4+PiB2ZXJzaW9uICov DQo+ID4+Pj4+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L2V0aGRldl9wcml2YXRlLmMNCj4gPj4+ Pj4gYi9saWIvZXRoZGV2L2V0aGRldl9wcml2YXRlLmMgaW5kZXggNDgwOTBjODc5YS4uYmZlMTZj N2Q3NyAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvbGliL2V0aGRldi9ldGhkZXZfcHJpdmF0ZS5jDQo+ ID4+Pj4+ICsrKyBiL2xpYi9ldGhkZXYvZXRoZGV2X3ByaXZhdGUuYw0KPiA+Pj4+PiBAQCAtMjc2 LDYgKzI3Niw3IEBAIGV0aF9kZXZfZnBfb3BzX3NldHVwKHN0cnVjdA0KPiBydGVfZXRoX2ZwX29w cw0KPiA+Pj4+ICpmcG8sDQo+ID4+Pj4+ICAgICAJZnBvLT5yeF9xdWV1ZV9jb3VudCA9IGRldi0+ cnhfcXVldWVfY291bnQ7DQo+ID4+Pj4+ICAgICAJZnBvLT5yeF9kZXNjcmlwdG9yX3N0YXR1cyA9 IGRldi0+cnhfZGVzY3JpcHRvcl9zdGF0dXM7DQo+ID4+Pj4+ICAgICAJZnBvLT50eF9kZXNjcmlw dG9yX3N0YXR1cyA9IGRldi0+dHhfZGVzY3JpcHRvcl9zdGF0dXM7DQo+ID4+Pj4+ICsJZnBvLT5y eF9kaXJlY3RfcmVhcm0gPSBkZXYtPnJ4X2RpcmVjdF9yZWFybTsNCj4gPj4+Pj4NCj4gPj4+Pj4g ICAgIAlmcG8tPnJ4cS5kYXRhID0gZGV2LT5kYXRhLT5yeF9xdWV1ZXM7DQo+ID4+Pj4+ICAgICAJ ZnBvLT5yeHEuY2xiayA9ICh2b2lkICoqKSh1aW50cHRyX3QpZGV2LT5wb3N0X3J4X2J1cnN0X2Ni czsNCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5jIGIvbGliL2V0 aGRldi9ydGVfZXRoZGV2LmMNCj4gPj4+Pj4gaW5kZXggMGMyYzEwODhjMC4uMGRjY2VjMmU0YiAx MDA2NDQNCj4gPj4+Pj4gLS0tIGEvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPj4+Pj4gKysr IGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPj4+Pj4gQEAgLTE2NDgsNiArMTY0OCw0MyBA QCBydGVfZXRoX2Rldl9pc19yZW1vdmVkKHVpbnQxNl90IHBvcnRfaWQpDQo+ID4+Pj4+ICAgICAJ cmV0dXJuIHJldDsNCj4gPj4+Pj4gICAgIH0NCj4gPj4+Pj4NCj4gPj4+Pj4gK2ludA0KPiA+Pj4+ PiArcnRlX2V0aF90eF9xdWV1ZV9kYXRhX2dldCh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBx dWV1ZV9pZCwNCj4gPj4+Pj4gKwkJCXN0cnVjdCBydGVfZXRoX3R4cV9kYXRhICp0eHFfZGF0YSkg ew0KPiA+Pj4+PiArCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2Ow0KPiA+Pj4+PiArDQo+ID4+Pj4+ ICsJUlRFX0VUSF9WQUxJRF9QT1JUSURfT1JfRVJSX1JFVChwb3J0X2lkLCAtRU5PREVWKTsNCj4g Pj4+Pj4gKwlkZXYgPSAmcnRlX2V0aF9kZXZpY2VzW3BvcnRfaWRdOw0KPiA+Pj4+PiArDQo+ID4+ Pj4+ICsJaWYgKHF1ZXVlX2lkID49IGRldi0+ZGF0YS0+bmJfdHhfcXVldWVzKSB7DQo+ID4+Pj4+ ICsJCVJURV9FVEhERVZfTE9HKEVSUiwgIkludmFsaWQgVHggcXVldWVfaWQ9JXVcbiIsDQo+ID4+ Pj4gcXVldWVfaWQpOw0KPiA+Pj4+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+Pj4gKwl9DQo+ ID4+Pj4+ICsNCj4gPj4+Pj4gKwlpZiAodHhxX2RhdGEgPT0gTlVMTCkgew0KPiA+Pj4+PiArCQlS VEVfRVRIREVWX0xPRyhFUlIsICJDYW5ub3QgZ2V0IGV0aGRldiBwb3J0ICV1DQo+IFR4DQo+ID4+ Pj4gcXVldWUgJXUgZGF0YSB0byBOVUxMXG4iLA0KPiA+Pj4+PiArCQkJcG9ydF9pZCwgcXVldWVf aWQpOw0KPiA+Pj4+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+Pj4gKwl9DQo+ID4+Pj4+ICsN Cj4gPj4+Pj4gKwlpZiAoZGV2LT5kYXRhLT50eF9xdWV1ZXMgPT0gTlVMTCB8fA0KPiA+Pj4+PiAr CQkJZGV2LT5kYXRhLT50eF9xdWV1ZXNbcXVldWVfaWRdID09IE5VTEwpIHsNCj4gPj4+Pj4gKwkJ UlRFX0VUSERFVl9MT0coRVJSLA0KPiA+Pj4+PiArCQkJICAgIlR4IHF1ZXVlICUiUFJJdTE2IiBv ZiBkZXZpY2Ugd2l0aA0KPiBwb3J0X2lkPSUiDQo+ID4+Pj4+ICsJCQkgICBQUkl1MTYiIGhhcyBu b3QgYmVlbiBzZXR1cFxuIiwNCj4gPj4+Pj4gKwkJCSAgIHF1ZXVlX2lkLCBwb3J0X2lkKTsNCj4g Pj4+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+Pj4+ICsJfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ ICsJaWYgKCpkZXYtPmRldl9vcHMtPnR4cV9kYXRhX2dldCA9PSBOVUxMKQ0KPiA+Pj4+PiArCQly ZXR1cm4gLUVOT1RTVVA7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKwlkZXYtPmRldl9vcHMtPnR4cV9k YXRhX2dldChkZXYsIHF1ZXVlX2lkLCB0eHFfZGF0YSk7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKwly ZXR1cm4gMDsNCj4gPj4+Pj4gK30NCj4gPj4+Pj4gKw0KPiA+Pj4+PiAgICAgc3RhdGljIGludA0K PiA+Pj4+PiAgICAgcnRlX2V0aF9yeF9xdWV1ZV9jaGVja19zcGxpdChjb25zdCBzdHJ1Y3QgcnRl X2V0aF9yeHNlZ19zcGxpdA0KPiA+PiAqcnhfc2VnLA0KPiA+Pj4+PiAgICAgCQkJICAgICB1aW50 MTZfdCBuX3NlZywgdWludDMyX3QgKm1icF9idWZfc2l6ZSwNCj4gZGlmZiAtLWdpdA0KPiA+Pj4+ PiBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmggaW5k ZXgNCj4gPj4+Pj4gMmU3ODM1MzZjMS4uZGFmN2YwNWQ2MiAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEv bGliL2V0aGRldi9ydGVfZXRoZGV2LmgNCj4gPj4+Pj4gKysrIGIvbGliL2V0aGRldi9ydGVfZXRo ZGV2LmgNCj4gPj4+Pj4gQEAgLTE5NDksNiArMTk0OSwyMyBAQCBzdHJ1Y3QgcnRlX2V0aF90eHFf aW5mbyB7DQo+ID4+Pj4+ICAgICAJdWludDhfdCBxdWV1ZV9zdGF0ZTsgICAgICAgIC8qKjwgb25l IG9mDQo+IFJURV9FVEhfUVVFVUVfU1RBVEVfKi4gKi8NCj4gPj4+Pj4gICAgIH0gX19ydGVfY2Fj aGVfbWluX2FsaWduZWQ7DQo+ID4+Pj4+DQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAqIEBpbnRl cm5hbA0KPiA+Pj4+PiArICogU3RydWN0dXJlIHVzZWQgdG8gaG9sZCBwb2ludGVycyB0byBpbnRl cm5hbCBldGhkZXYgVHggZGF0YS4NCj4gPj4+Pj4gKyAqIFRoZSBtYWluIHB1cnBvc2UgaXMgdG8g bG9hZCBhbmQgc3RvcmUgVHggcXVldWUgZGF0YSBpbiBkaXJlY3QNCj4gPj4+Pj4gK3JlYXJtDQo+ ID4+Pj4gbW9kZS4NCj4gPj4+Pj4gKyAqLw0KPiA+Pj4+PiArc3RydWN0IHJ0ZV9ldGhfdHhxX2Rh dGEgew0KPiA+Pj4+PiArCXVpbnQ2NF90ICpvZmZsb2FkczsNCj4gPj4+Pj4gKwl2b2lkICp0eF9z d19yaW5nOw0KPiA+Pj4+PiArCXZvbGF0aWxlIHZvaWQgKnR4X3Jpbmc7DQo+ID4+Pj4+ICsJdWlu dDE2X3QgKnR4X25leHRfZGQ7DQo+ID4+Pj4+ICsJdWludDE2X3QgKm5iX3R4X2ZyZWU7DQo+ID4+ Pj4+ICsJdWludDE2X3QgbmJfdHhfZGVzYzsNCj4gPj4+Pj4gKwl1aW50MTZfdCB0eF9yc190aHJl c2g7DQo+ID4+Pj4+ICsJdWludDE2X3QgdHhfZnJlZV90aHJlc2g7DQo+ID4+Pj4+ICt9IF9fcnRl X2NhY2hlX21pbl9hbGlnbmVkOw0KPiA+Pj4+PiArDQo+ID4+Pj4NCj4gPj4+PiBmaXJzdCBvZiBh bGwgaXQgaXMgbm90IGNsZWFyIHdoeSB0aGlzIHN0cnVjdCBoYXMgdG8gYmUgaW4gcHVibGljDQo+ ID4+Pj4gaGVhZGVyLCB3aHkgaXQgY2FuJ3QgYmUgaW4gb24gb2YgZXRoZGV2ICdwcml2YXRlJyBo ZWFkZXJzLg0KPiA+Pj4+IFNlY29uZCBpdCBsb29rcyBsaWtlIGEgc25pcHBldCBmcm9tIHByaXZh dGUgdHhxIGZpZWxkcyBmb3Igc29tZQ0KPiA+Pj4+IEludGVsIChhbmQgYWxpa2UpIFBNRHMgKGk0 MGUsIGljZSwgZXRjLikuDQo+ID4+Pj4gSG93IGl0IHN1cHBvc2VkIHRvIHRvIGJlIHVuaXZlcnNh bCBhbmQgYmUgYXBwbGljYWJsZSBmb3IgYW55IFBNRA0KPiA+Pj4+IHRoYXQgZGVjaWRlcyB0byBp bXBsZW1lbnQgdGhpcyBuZXcgQVBJPw0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pj4gICAgIC8qIEdl bmVyaWMgQnVyc3QgbW9kZSBmbGFnIGRlZmluaXRpb24sIHZhbHVlcyBjYW4gYmUgT1JlZC4gKi8N Cj4gPj4+Pj4NCj4gPj4+Pj4gICAgIC8qKg0KPiA+Pj4+PiBAQCAtNDcxOCw2ICs0NzM1LDI3IEBA IGludCBydGVfZXRoX3JlbW92ZV9yeF9jYWxsYmFjayh1aW50MTZfdA0KPiA+Pj4+IHBvcnRfaWQs IHVpbnQxNl90IHF1ZXVlX2lkLA0KPiA+Pj4+PiAgICAgaW50IHJ0ZV9ldGhfcmVtb3ZlX3R4X2Nh bGxiYWNrKHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90DQo+IHF1ZXVlX2lkLA0KPiA+Pj4+PiAg ICAgCQljb25zdCBzdHJ1Y3QgcnRlX2V0aF9yeHR4X2NhbGxiYWNrICp1c2VyX2NiKTsNCj4gPj4+ Pj4NCj4gPj4+Pj4gKy8qKg0KPiA+Pj4+PiArICogR2V0IHRoZSBhZGRyZXNzIHdoaWNoIFR4IGRh dGEgaXMgc3RvcmVkLg0KPiA+Pj4+PiArICoNCj4gPj4+Pj4gKyAqIEBwYXJhbSBwb3J0X2lkDQo+ ID4+Pj4+ICsgKiAgIFRoZSBwb3J0IGlkZW50aWZpZXIgb2YgdGhlIEV0aGVybmV0IGRldmljZS4N Cj4gPj4+Pj4gKyAqIEBwYXJhbSBxdWV1ZV9pZA0KPiA+Pj4+PiArICogICBUaGUgVHggcXVldWUg b24gdGhlIEV0aGVybmV0IGRldmljZSBmb3Igd2hpY2ggaW5mb3JtYXRpb24NCj4gPj4+Pj4gKyAq ICAgd2lsbCBiZSByZXRyaWV2ZWQuDQo+ID4+Pj4+ICsgKiBAcGFyYW0gdHhxX2RhdGENCj4gPj4+ Pj4gKyAqICAgQSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIG9mIHR5cGUgKnJ0ZV9ldGhfdHhxX2Rh dGEqIHRvIGJlIGZpbGxlZC4NCj4gPj4+Pj4gKyAqDQo+ID4+Pj4+ICsgKiBAcmV0dXJuDQo+ID4+ Pj4+ICsgKiAgIC0gMDogU3VjY2Vzcw0KPiA+Pj4+PiArICogICAtIC1FTk9ERVY6ICBJZiAqcG9y dF9pZCogaXMgaW52YWxpZC4NCj4gPj4+Pj4gKyAqICAgLSAtRU5PVFNVUDogcm91dGluZSBpcyBu b3Qgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2UgUE1ELg0KPiA+Pj4+PiArICogICAtIC1FSU5WQUw6 ICBUaGUgcXVldWVfaWQgaXMgb3V0IG9mIHJhbmdlLg0KPiA+Pj4+PiArICovDQo+ID4+Pj4+ICtf X3J0ZV9leHBlcmltZW50YWwNCj4gPj4+Pj4gK2ludCBydGVfZXRoX3R4X3F1ZXVlX2RhdGFfZ2V0 KHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90DQo+IHF1ZXVlX2lkLA0KPiA+Pj4+PiArCQlzdHJ1 Y3QgcnRlX2V0aF90eHFfZGF0YSAqdHhxX2RhdGEpOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICAgICAv KioNCj4gPj4+Pj4gICAgICAqIFJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IGdpdmVuIHBvcnQn cyBSeCBxdWV1ZS4NCj4gPj4+Pj4gICAgICAqDQo+ID4+Pj4+IEBAIC02MjA5LDYgKzYyNDcsNjMg QEAgcnRlX2V0aF90eF9idWZmZXIodWludDE2X3QgcG9ydF9pZCwNCj4gPj4+Pj4gdWludDE2X3QN Cj4gPj4+PiBxdWV1ZV9pZCwNCj4gPj4+Pj4gICAgIAlyZXR1cm4gcnRlX2V0aF90eF9idWZmZXJf Zmx1c2gocG9ydF9pZCwgcXVldWVfaWQsIGJ1ZmZlcik7DQo+ID4+Pj4+ICAgICB9DQo+ID4+Pj4+ DQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAqIEB3YXJuaW5nDQo+ID4+Pj4+ICsgKiBAYiBFWFBF UklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQNCj4g Pj4+Pj4gK3ByaW9yIG5vdGljZQ0KPiA+Pj4+PiArICoNCj4gPj4+Pj4gKyAqIFB1dCBUeCBidWZm ZXJzIGludG8gUnggc3ctcmluZyBhbmQgcmVhcm0gZGVzY3MuDQo+ID4+Pj4+ICsgKg0KPiA+Pj4+ PiArICogQHBhcmFtIHBvcnRfaWQNCj4gPj4+Pj4gKyAqICAgUG9ydCBpZGVudGlmeWluZyB0aGUg cmVjZWl2ZSBzaWRlLg0KPiA+Pj4+PiArICogQHBhcmFtIHF1ZXVlX2lkDQo+ID4+Pj4+ICsgKiAg IFRoZSBpbmRleCBvZiB0aGUgdHJhbnNtaXQgcXVldWUgaWRlbnRpZnlpbmcgdGhlIHJlY2VpdmUg c2lkZS4NCj4gPj4+Pj4gKyAqICAgVGhlIHZhbHVlIG11c3QgYmUgaW4gdGhlIHJhbmdlIFswLCBu Yl9yeF9xdWV1ZSAtIDFdIHByZXZpb3VzbHkNCj4gPj4+PiBzdXBwbGllZA0KPiA+Pj4+PiArICog ICB0byBydGVfZXRoX2Rldl9jb25maWd1cmUoKS4NCj4gPj4+Pj4gKyAqIEBwYXJhbSB0eHFfZGF0 YQ0KPiA+Pj4+PiArICogICBBIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUgb2YgdHlwZSAqcnRlX2V0 aF90eHFfZGF0YSogdG8gYmUgZmlsbGVkLg0KPiA+Pj4+PiArICogQHJldHVybg0KPiA+Pj4+PiAr ICogICBUaGUgbnVtYmVyIG9mIGRpcmVjdC1yZWFybWVkIGJ1ZmZlcnMuDQo+ID4+Pj4+ICsgKi8N Cj4gPj4+Pj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+Pj4+PiArc3RhdGljIF9fcnRlX2Fsd2F5 c19pbmxpbmUgdWludDE2X3QNCj4gPj4+Pj4gK3J0ZV9ldGhfcnhfZGlyZWN0X3JlYXJtKHVpbnQx Nl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkLA0KPiA+Pj4+PiArCQlzdHJ1Y3QgcnRlX2V0 aF90eHFfZGF0YSAqdHhxX2RhdGEpIHsNCj4gPj4+Pj4gKwl1aW50MTZfdCBuYl9yZWFybTsNCj4g Pj4+Pj4gKwlzdHJ1Y3QgcnRlX2V0aF9mcF9vcHMgKnA7DQo+ID4+Pj4+ICsJdm9pZCAqcWQ7DQo+ ID4+Pj4+ICsNCj4gPj4+Pj4gKyNpZmRlZiBSVEVfRVRIREVWX0RFQlVHX1JYDQo+ID4+Pj4+ICsJ aWYgKHBvcnRfaWQgPj0gUlRFX01BWF9FVEhQT1JUUyB8fA0KPiA+Pj4+PiArCQkJcXVldWVfaWQg Pj0gUlRFX01BWF9RVUVVRVNfUEVSX1BPUlQpDQo+IHsNCj4gPj4+Pj4gKwkJUlRFX0VUSERFVl9M T0coRVJSLA0KPiA+Pj4+PiArCQkJIkludmFsaWQgcG9ydF9pZD0ldSBvciBxdWV1ZV9pZD0ldVxu IiwNCj4gPj4+Pj4gKwkJCXBvcnRfaWQsIHF1ZXVlX2lkKTsNCj4gPj4+Pj4gKwkJcmV0dXJuIDA7 DQo+ID4+Pj4+ICsJfQ0KPiA+Pj4+PiArI2VuZGlmDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKwlwID0g JnJ0ZV9ldGhfZnBfb3BzW3BvcnRfaWRdOw0KPiA+Pj4+PiArCXFkID0gcC0+cnhxLmRhdGFbcXVl dWVfaWRdOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsjaWZkZWYgUlRFX0VUSERFVl9ERUJVR19SWA0K PiA+Pj4+PiArCVJURV9FVEhfVkFMSURfUE9SVElEX09SX0VSUl9SRVQocG9ydF9pZCwgMCk7DQo+ ID4+Pj4+ICsNCj4gPj4+Pj4gKwlpZiAocWQgPT0gTlVMTCkgew0KPiA+Pj4+PiArCQlSVEVfRVRI REVWX0xPRyhFUlIsICJJbnZhbGlkIFJ4IHF1ZXVlX2lkPSV1IGZvcg0KPiA+Pj4+IHBvcnRfaWQ9 JXVcbiIsDQo+ID4+Pj4+ICsJCQlxdWV1ZV9pZCwgcG9ydF9pZCk7DQo+ID4+Pj4+ICsJCXJldHVy biAwOw0KPiA+Pj4+PiArCX0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArCWlmICghcC0+cnhfZGlyZWN0 X3JlYXJtKQ0KPiA+Pj4+DQo+ID4+Pj4gVGhpcyBjaGVjayBzaG91bGQgYmUgZG9uZSBhbHdheXMg KHVuY29uZGl0aW9uYWxseSkuDQo+ID4+Pj4gaXQgaXMgbm90IGEgbWFuZGF0b3J5IGZ1bmN0aW9u IGZvciB0aGUgZHJpdmVyIChpdCBjYW4gc2FmZWx5IHNraXANCj4gPj4+PiB0bw0KPiA+PiBpbXBs ZW1lbnQgaXQpLg0KPiA+Pj4+DQo+ID4+Pj4+ICsJCXJldHVybiAtRU5PVFNVUDsNCj4gPj4+Pg0K PiA+Pj4+IFRoaXMgZnVuY3Rpb24gcmV0dXJucyB1aW50MTZfdCwgd2h5IHNpZ25lZCBpbnRlZ2Vy cyBoZXJlPw0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pj4gKyNlbmRpZg0KPiA+Pj4+PiArDQo+ID4+ Pj4+ICsJbmJfcmVhcm0gPSBwLT5yeF9kaXJlY3RfcmVhcm0ocWQsIHR4cV9kYXRhKTsNCj4gPj4+ Pg0KPiA+Pj4+IFNvIHJ4X2RpcmVjdF9yZWFybSgpIGZ1bmN0aW9uIGtub3dzIGhvdyB0byBleHRy YWN0IGRhdGEgZnJvbSBUWA0KPiBxdWV1ZT8NCj4gPj4+PiBBcyBJIHVuZGVyc3RhbmQgdGhhdCBp cyBwb3NzaWJsZSBvbmx5IGluIG9uZSBjYXNlOg0KPiA+Pj4+IHJ4X2RpcmVjdF9yZWFybSgpIGhh cyBmdWxsIGtub3dsZWRnZSBhbmQgYWNlc3Mgb2YgdHhxIGludGVybmFscywgZXRjLg0KPiA+Pj4+ IFRoYXQgbWVhbnMgdGhhdCByeHEgYW5kIHR4cSBoYXZlIHRvIGJlbG9uZyB0byB0aGUgc2FtZSBk cml2ZXIgYW5kDQo+ID4+Pj4gZGV2aWNlIHR5cGUuDQo+ID4+Pj4NCj4gPj4+IFRoYW5rcyBmb3Ig dGhlIGNvbW1lbnRzLCBhbmQgSSBoYXZlIHNvbWUgcXVlc3Rpb25zIGZvciB0aGlzLg0KPiA+Pj4N Cj4gPj4+PiBGaXJzdCBvZiBhbGwsIEkgc3RpbGwgdGhpbmsgaXQgaXMgbm90IHRoZSBiZXN0IGRl c2lnbiBjaG9pY2UuDQo+ID4+Pj4gSWYgd2UgZ29pbmcgYWhlYWQgd2l0aCBpbnRyb2R1Y2luZyB0 aGlzIGZlYXR1cmUsIGl0IGJldHRlciBiZSBhcw0KPiA+Pj4+IGdlbmVyaWMgYXMgcG9zc2libGUu DQo+ID4+Pj4gUGx1cyBpdCBtaXhlcyBUWCBhbmQgUlggY29kZS1wYXRocyB0b2dldGhlciwgd2hp bGUgaXQgd291bGQgYmUgbXVjaA0KPiA+Pj4+IGJldHRlciB0byB0byBrZWVwIHRoZW0gaW5kZXBl bmRlbnQgYXMgdGhleSBhcmUgcmlnaHQgbm93Lg0KPiA+Pj4+DQo+ID4+Pj4gQW5vdGhlciB0aGlu ZyB3aXRoIHN1Y2ggYXBwcm9hY2ggLSBldmVuIGZvciB0aGUgc2FtZSBQTUQsIGJvdGggVFhRDQo+ ID4+Pj4gYW5kIFJYUSBjYW4gaGF2ZSBkaWZmZXJlbnQgaW50ZXJuYWwgZGF0YSBmb3JtYXQgYW5k IGJlaGF2aW9yIGxvZ2ljDQo+ID4+Pj4gKGRlcGVuZGluZyBvbiBwb3J0L3F1ZXVlIGNvbmZpZ3Vy YXRpb24pLg0KPiA+Pj4gMS4gSGVyZSBUWFEgYW5kIFJYUSBoYXZlIGRpZmZlcmVudCBpbnRlcm5h bCBmb3JtYXQgbWVhbnMgdGhlIHF1ZXVlDQo+ID4+PiB0eXBlIGFuZCAgZGVzY3MgY2FuIGJlIGRp ZmZlcmVudCwgcmlnaHQ/IElmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHksDQo+ID4+PiBiYXNlZCBv biB5b3VyIGZpcnN0IHN0cmF0ZWd5LCBpcyBpdCBtZWFucyB3ZSB3aWxsIG5lZWQgZGlmZmVyZW50 DQo+ID4+PiAncmVhcm1fZnVuYycgZm9yIGRpZmZlcmVudCBxdWV1ZSB0eXBlIGluIHRoZSBzYW1l IFBNRD8NCj4gPj4NCj4gPj4gWWVzLCBJIHRoaW5rIHNvLg0KPiA+PiBJZiBsZXQgc2F5IHdlIGhh dmUgc29tZSBQTUQgd2hlcmUgZGVwZW5kaW5nIG9uIHRoZSBjb25maWcsIHRoZXJlDQo+ID4+IGNw dWxkIGJlDQo+ID4+IDIgZGlmZmVyZW50IFJYUSBmb3JtYXRzOiByeHFfYSBhbmQgcnhxX2IsIGFu ZCAyIGRpZmZlcmVudCB0eHENCj4gPj4gZm9ybWF0czogdHhxX2MsIHR4cV9kLg0KPiA+PiBUaGVu IGFzc3VtaW5nIFBNRCB3b3VsZCBsaWtlIHRvIHN1cHBvcnQgZGlyZWN0LXJlYXJtIG1vZGUgZm9y IGFsbA0KPiA+PiBmb3VyIGNvbWJpbmF0aW9ucywgaXQgbmVlZHMgNCBkaWZmZXJlbnQgcmVhcm0g ZnVuY3Rpb25zOg0KPiA+Pg0KPiA+PiByZWFybV90eHFfY190b19yeHFfYSgpDQo+ID4+IHJlYXJt X3R4cV9jX3RvX3J4cV9iKCkNCj4gPj4gcmVhcm1fdHhxX2RfdG9fcnhxX2EoKQ0KPiA+PiByZWFy bV90eHFfZF90b19yeHFfYigpDQo+ID4+DQo+ID4gVGhhbmsgeW91IGZvciB5b3VyIGRldGFpbGVk IGV4cGxhbmF0aW9uLCBJIGNhbiB1bmRlcnN0YW5kIHRoaXMuDQoNCj4gPj4NCj4gPj4+DQo+ID4+ Pj4gU28gcnhfZGlyZWN0X3JlYXJtKCkgZnVuY3Rpb24gc2VsZWN0aW9uIGhhdmUgdG8gYmUgZG9u ZSBiYXNlZCBvbg0KPiA+Pj4+IGJvdGggUlhRIGFuZCBUWFEgY29uZmlnLg0KPiA+Pj4+IFNvIGlu c3RlYWQgb2YgcnRlX2V0aF90eF9xdWV1ZV9kYXRhX2dldCgpLCB5b3UnbGwgcHJvYmFibHkgbmVl ZDoNCj4gPj4+PiBldGhfcnhfZGlyZWN0X3JlYXJtX3QgcnRlX2V0aF9nZXRfcnhfZGlyZWN0X3Jl YXJtX2Z1bmMocnhfcG9ydCwNCj4gPj4+PiByeF9xdWV1ZSwgdHhfcG9ydCwgdHhfcXVldWUpOw0K PiA+Pj4+IFRoZW4sIGl0IHdpbGwgYmUgdXNlciByZXNwb25zaWJpbGl0eSB0byBzdG9yZSBpdCBz b21ld2hlcmUgYW5kIGNhbGwNCj4gPj4gcGVyaW9kaWNhbGx5Og0KPiA+Pj4+DQo+ID4+Pj4gY29u dHJvbF9wYXRoOg0KPiA+Pj4+IAkuLi4NCj4gPj4+PiAJcmVhcm1fZnVuYyA9IHJ0ZV9ldGhfZ2V0 X3J4X2RpcmVjdF9yZWFybV9mdW5jKHJ4cG9ydCwgcnhxdWV1ZSwNCj4gPj4+PiAJCSB0eHBvcnQs IHR4cXVldWUpOw0KPiA+Pj4+IGRhdGEtcGF0aDoNCj4gPj4+PiAJd2hpbGUoLi4uKSB7DQo+ID4+ Pj4gCQlyZWFybV9mdW5jKHJ4cG9ydCwgdHhwb3J0LCByeHF1ZXVlLCB0eHF1ZXVlKTsNCj4gPj4+ PiAJCXJ0ZV9ldGhfcnhfYnVyc3Qocnhwb3J0LCByeHF1ZXVlLCAuLi4uKTsNCj4gPj4+PiAJCXJ0 ZV9ldGhfdHhfYnVyc3QodHhwb3J0LCB0eHF1ZXVlLCAuLi4uKTsNCj4gPj4+PiAJfQ0KPiA+Pj4+ DQo+ID4+Pj4NCj4gPj4+PiBJbiB0aGF0IGNhc2UgdGhlcmUgc2VlbXMgYWJzb2x1dGVseSBubyBw b2ludCB0byBpbnRyb2R1Y2Ugc3RydWN0DQo+ID4+Pj4gcnRlX2V0aF90eHFfZGF0YS4gcnhfZGly ZWN0X3JlYXJtKCkgYWNjZXNzZXMgVFhRIHByaXZhdGUgZGF0YQ0KPiA+Pj4+IGRpcmVjdGx5IGFu eXdheS4NCj4gPj4+IDIuIFRoaXMgaXMgYSB2ZXJ5IGdvb2QgcHJvcG9zYWwgYW5kIGl0IHdpbGwg YmUgb3VyIGZpcnN0IGNob2ljZS4NCj4gPj4+IEJlZm9yZSB3b3JraW5nIG9uIGl0LCBJIGhhdmUg YSBmZXcgcXVlc3Rpb25zIGFib3V0IGhvdyB0byBpbXBsZW1lbnQNCj4gPj4gJ3JlYXJtX2Z1bmMn Lg0KPiA+Pj4gTGlrZSB5b3Ugc2F5IGFib3ZlLCBtaXhlZCBSeCBhbmQgVHggcGF0aCBjb2RlIGlu ICdyZWFybV9mdW5jJyBtZWFucw0KPiA+Pj4gdGhlIGhhcmQtY29kZSBpcyBtaXhlZCBsaWtlOg0K PiA+Pj4gcmVhcm1fZnVuYyguLi4pIHsNCj4gPj4+ICAgICAgICAuLi4NCj4gPj4+ICAgICAgIHR4 ZXAgPSAmdHhxLT5zd19yaW5nW3R4cS0+dHhfbmV4dF9kZCAtICh0eHEtPnR4X3JzX3RocmVzaCAt IDEpXTsNCj4gPj4+ICAgICAgIGZvciAoLi4uKSB7DQo+ID4+PiAgICAgICAgICByeGVwW2ldLm1i dWYgPSB0eGVwW2ldLm1idWY7DQo+ID4+PiAgICAgICAgICBtYjAgPSB0eGVwW2ldLm1idWY7DQo+ ID4+PiAgICAgICAgICBwYWRkciA9IG1iMC0+YnVmX2lvdmEgKyBSVEVfUEtUTUJVRl9IRUFEUk9P TTsNCj4gPj4+ICAgICAgICAgZG1hX2FkZHIwID0gdmR1cHFfbl91NjQocGFkZHIpOw0KPiA+Pj4g ICAgICAgICB2c3QxcV91NjQoKHVpbnQ2NF90ICopJnJ4ZHArKy0+cmVhZCwgZG1hX2FkZHIwKTsN Cj4gPj4+ICAgICAgIH0NCj4gPj4+IH0NCj4gPj4+IElzIG15IHVuZGVyc3RhbmRpbmcgaXMgcmln aHQ/DQo+ID4+DQo+ID4+DQo+ID4+IFNvcnJ5LCBJIGRvbid0IHVuZGVyc3RhbmQgdGhlIHF1ZXN0 aW9uLg0KPiA+PiBDYW4geW91IHByb2JhYmx5IGVsYWJvcmF0ZSBhIGJpdD8NCj4gPg0KPiA+IFNv cnJ5IGZvciBteSB1bmNsZWFyIGV4cHJlc3Npb24uDQo+ID4NCj4gPiBJIG1lYW4gaWYgd2UgbmVl ZCB0d28gZnVuYyB3aGljaCBjb250YWlucyB0eCBhbmQgcnggcGF0aHMgY29kZQ0KPiByZXNwZWN0 aXZlbHkgaW4gcmVhcm1fZnVuYywgbGlrZToNCj4gPiByZWFybV9mdW5jKC4uLikgew0KPiA+ICAg ICAgICAgICBydGVfdHhfZmlsbF9zd19yaW5nOw0KPiA+ICAgICAgICAgICBydGVfcnhfcmVhcm1f ZGVzY3M7DQo+ID4gfQ0KPiA+DQo+ID4gT3IganVzdCBtaXhlZCB0eCBhbmQgcnggcGF0aCBjb2Rl IGxpa2UgSSBzYWlkIGJlZm9yZS4gSSBwcmVmZXIgJ3J4IGFuZA0KPiA+IHR4IGhhcmQgY29kZSBt aXhlZCcsIGJlY2F1c2UgZnJvbSB0aGUgcGVyZm9ybWFuY2UgcGVyc3BlY3RpdmUsIHRoaXMgY2Fu DQo+IHJlZHVjZSB0aGUgY29zdCBvZiBmdW5jdGlvbiBjYWxscy4NCj4gDQo+IEkgc3VwcG9zZSBp dCBkZXBlbmRzIG9uIHdoYXQgd2UgY2hvb3NlOg0KPiBJZiB3ZSByZXN0cmljdCBpdCBpbiBhIHdh eSB0aGF0IHJ4cSBhbmQgdHhxIGhhdmUgdG8gYmVsb25nIHRvIHRoZSBzYW1lIFBNRCwNCj4gdGhl biBJIHN1cHBvc2UgdGhpcyBkZWNpc2lvbiBjb3VsZCBiZSBsZWZ0IHRvIGVhY2ggcGFydGljdWxh ciBQTUQuDQo+IElmIHdlJ2QgbGlrZSB0byBhbGxvdyByZWFybSB0byB3b3JrIGFjY3Jvc3MgZGlm ZmVyZW50IFBNRHMgKGkuZS4gaXQgd291bGQgYWxsb3cNCj4gdG8gcmVhcm0gbWx4IHdpdGggaWNl IGFuZCB2aXNhLXZlcnNhKSwgdGhlbiB5ZXMgd2UgbmVlZCBQTURzIHNvbWVob3cgdG8NCj4gZXhw b3NlIHJ4X3N3X3JpbmcgYWJzdHJhY3Rpb24gdG8gZWFjaCBvdGhlci4NCj4gTXkgcHJlZmVyZW5j ZSB3b3VsZCBiZSB0aGUgc2Vjb25kIG9uZSAtIGFzIGl0IHdpbGwgbWFrZSB0aGlzIGZlYXR1cmUg bW9yZQ0KPiBmbGV4aWJsZSBhbmQgd291bGQgaGVscCB0byBhZG9wdCBpdCBtb3JlIHdpZGVseS4N Cj4gVGhvdWdoIHRoZSBmaXJzdCBvbmUgaXMgcHJvYmFibHkgZWFzaWVyIHRvIGltcGxlbWVudCwg YW5kIGFzIEkgdWRuZXJzdGFuZA0KPiB5b3UgYXJlIGxlYW5pbmcgdG93YXJkcyB0aGUgZmlyc3Qg b25lLg0KPiANCj4gS29uc3RhbnRpbg0KDQpIaSwgS29uc3RhbnRpbg0KDQoxLiBBZnRlciBmdXJ0 aGVyIGNvbnNpZGVyYXRpb24sIEkgdGhpbmsgd2Ugc2hvdWxkIGdpdmUgdXAgICdydGVfZXRoX2dl dF9yeF9kaXJlY3RfcmVhcm0nICBmdW5jdGlvbnMuDQogQW5kIGp1c3Qga2VlcCBvbmUgQVBJICdy dGVfZXRoX2RpcmVjdF9yZWFybScgd2hpY2ggY29udGFpbnMgZGlmZmVyZW50IHF1ZXVlIHR5cGVz IHBhdGggaW4gdGhlIHBtZCBkcml2ZXIuDQoNClRoaXMgaXMgZHVlIHRvIHRoYXQgYXBwbGljYXRp b24gY2FuIGR5bmFtaWNhbGx5IGNvbmZpZ3VyZSBxdWV1ZS1tYXBwaW5nIGluIHRoZSBkYXRhIHBh dGgsDQphbmQgdGh1cyBleHBhbmQgZGlyZWN0LXJlYXJtIHVzYWdlIHNjZW5hcmlvcyBiYXNlZCBv biB0aGlzIHdheS4gRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgZmxvdw0Kd2hpY2ggcmVjZWl2ZWQg Ynkgb25lIHJ4X3F1ZXVlKHJ4cV8xKSBhbmQgc2VudCBieSB0d28gZGlmZmVyZW50IHR5cGVzIHR4 X3F1ZXVlcyggdHlwZV9hIHR4cV8xIGFuZCB0eXBlX2IgdHhxXzIpLCANClVzZXJzIGNhbiBkeW5h bWljYWxseSBtYXAgZGlyZWN0X3JlYXJtIGFjY29yZGluZyB0byB0eCBwYXRoLg0KLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCnJ0ZV9ldGhfcnhfYnVyc3QocnhxXzEpOw0KDQolcm91dGlu ZyB0YWJsZSBsb29rdXAgdG8gZGVjaWRlIHR4IHF1ZXVlJQ0KdHhxX24gPSB0eHFfMSBvciB0eHFf Mj8NCg0KcnRlX2V0aF90eF9idXJzdCh0eHFfbik7DQpydGVfZXRoX2RpcmVjdF9yZWFybSh0eHFf bik7DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KVGh1cywgdGhpcyBjYW4gYXZvaWQg cmVwZWF0ZWRseSBjYWxsaW5nICdydGVfZXRoX2dldF9yeF9kaXJlY3RfcmVhcm0nIGluIHRoZSBk YXRhIHBhdGggdG8gcmVkdWNlIHBlcmZvcm1hbmNlLg0KDQpGdXJ0aGVybW9yZSwgcnRlX2V0aF9k aXJlY3RfcmVhcm0gY2FuIGJlIGltcGxlbWVudGVkIGFzOg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCnJ0ZV9ldGhfZGlyZWN0X3JlYXJtID0gaTQwZV9ldGhfZGlyZWN0X3JlYXJtOw0K aTQwZV9ldGhfZGlyZWN0X3JlYXJtIHsNCglyZWFybV9xdWV1ZV9jb25maWdfYSBwYXRoOw0KCXJl YXJtX3F1ZXVlX2NvbmZpZ19iIHBhdGg7DQoJcmVhcm1fcXVldWVfY29uZmlnX2MgcGF0aDsNCgly ZWFybV9xdWV1ZV9jb25maWdfZCBwYXRoOw0KfQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NClRoaXMgaW1wbGVtZW50YXRpb24gcmVmZXJzIHRvICdydGVfZXRoX3J4X2J1cnN0JyBhbmQg J3J0ZV9ldGhfdHhfYnVyc3QnLiBJZiB0aGVyZSB3aWxsIGJlIGRpZmZlcmVudA0KcXVldWUgdHlw ZXMsIHRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIGluIHBtZCBsYXllci4NCg0KMi4gSSdtIG5v dCBzdXJlIHdoZXRoZXIgY3Jvc3MgcG1kIHVzYWdlIGlzIHJlYWxpc3RpYy4gDQpDb25zaWRlciB0 aGUgdHJhZGVvZmYgYmV0d2VlbiBwZXJmb3JtYW5jZSBhbmQgZGlmZmVyZW50IHBtZCBtYXAsIG1h eWJlIHdlIGNhbiBwcm92aWRlIHR3bw0KZGlmZmVyZW50IGRpcmVjdCByZWFybSBtb2RlIGZvciB1 c2Vycy4gT25lIGlzIG1peGVkIFJ4IGFuZCBUeCBwYXRoIGFuZCBpcyB1c2VkIGZvciB0aGUgc2Ft ZSBwbWQuDQpUaGUgb3RoZXIgaXMgc2VwYXJhdGUgUnggYW5kIFR4IHBhdGgsIGFuZCBpcyB1c2Vk IGZvciBkaWZmZXJlbnQgcG1kLiANCg0KQmVzdCBSZWdhcmRzDQpGZWlmZWkNCj4gDQo+IA0KPiA+ Pg0KPiA+Pj4NCj4gPj4+Pg0KPiA+Pj4+IEFub3RoZXIgd2F5IC0gbWFrZSBydGVfZXRoX3R4cV9k YXRhIHRvdGFsbHkgb3BhcXVlIGFuZCBhbGxvdyBQTUQNCj4gdG8NCj4gPj4+PiBzdG9yZSB0aGVy ZSBzb21lIGRhdGEgdGhhdCB3aWxsIGhlbHAgaXQgdG8gZGlzdGluZ3Vpc2ggZXhwZWN0ZWQgVFhR DQo+IGZvcm1hdC4NCj4gPj4+PiBUaGF0IHdpbGwgYWxsb3cgUE1EIHRvIGtlZXAgcnhfZGlyZWN0 X3JlYXJtKCkgdGhlIHNhbWUgZm9yIGFsbA0KPiA+Pj4+IHN1cHBvcnRlZCBUWFEgZm9ybWF0cyAo aXQgd2lsbCBtYWtlIGRlY2lzaW9uIGludGVybmFsbHkgYmFzZWQgb24NCj4gPj4+PiBkYXRhIHN0 b3JlZCBpbiB0eHFfZGF0YSkuDQo+ID4+Pj4gVGhvdWdoIGluIHRoYXQgY2FzZSB5b3UnbGwgcHJv YmFibHkgbmVlZCBvbmUgbW9yZSBkZXYtb3AgdG8gZnJlZQ0KPiA+PiB0eHFfZGF0YS4NCj4gPj4+ DQo+ID4NCg0K