From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id F09E2A04B1; Thu, 27 Aug 2020 10:48:00 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 52E4C1C0CA; Thu, 27 Aug 2020 10:48:00 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2055.outbound.protection.outlook.com [40.107.21.55]) by dpdk.org (Postfix) with ESMTP id 5F1971C0C1 for ; Thu, 27 Aug 2020 10:47:59 +0200 (CEST) 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=DGvK//eo5b/YolkF24h5eVGg8zPXNpzwaAT4FVXKCos=; b=eH53r+9QyY9V3SwHXz33IMlYvfqYK1COe0FiLmguVN2+GsiAmvHd2rLIfZ5Qv7IdAVjqy/O3qTEsstkdsxwx70zFDT6J47L5X2AH4hxkMaWF73AuCWWQCmETYXQ9IoZ+voREz+SM4+I6l+rHY1xBTXFm2cT72dBGWGRRR2NgXcI= Received: from DB6PR0501CA0014.eurprd05.prod.outlook.com (2603:10a6:4:8f::24) by DB7PR08MB3067.eurprd08.prod.outlook.com (2603:10a6:5:1d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3305.24; Thu, 27 Aug 2020 08:47:57 +0000 Received: from DB5EUR03FT046.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:8f:cafe::5d) by DB6PR0501CA0014.outlook.office365.com (2603:10a6:4:8f::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Thu, 27 Aug 2020 08:47:57 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dpdk.org; dmarc=bestguesspass 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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT046.mail.protection.outlook.com (10.152.21.230) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Thu, 27 Aug 2020 08:47:57 +0000 Received: ("Tessian outbound e8cdb8c6f386:v64"); Thu, 27 Aug 2020 08:47:57 +0000 X-CR-MTA-TID: 64aa7808 Received: from dde5ec5e08aa.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 199F279A-35F2-4407-BAA3-9D97BFD17DE4.1; Thu, 27 Aug 2020 08:47:52 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id dde5ec5e08aa.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 27 Aug 2020 08:47:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q9aJErZ3mDnZe9qAWZQtmqMTO+FH/+PFEbAfaJRlioQfvLVv2a8TpypYd9fAHH7Gk9FOsCQAqYiOSDEwDr2UurPn4oSTv9ZlXal6gQGDrh+3WXlS4q1j1PbXu76U6Cj6ZqYyHyL+ciqLjTpvq+zB7WtzpqruhxepYCxJR6dU9bxxo7heY3+vEubLgb+hSqRz7WRXxghgziIBiSQA+LA5pQKNgj4xGS410Jiw5Uh0jFdhsB9YCTzJb7Ku7beeUQZLe/Os9bVfKp9NB04dGTqX50+2WJqYJ6BFJ1uCQ6dGBdme1DrndMTUVAbrUKbkYvRC1iZ3vCbm/1WnuSMqWWPLLw== 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-SenderADCheck; bh=DGvK//eo5b/YolkF24h5eVGg8zPXNpzwaAT4FVXKCos=; b=gdhyg6LY12ol2vXrO5pRT2fKWnnyS2ROwUgr3r/VvBDfRZsNcW+Aj0zOTiBzAV7Xx1D6ykUlQvyFE4MfVi+U3zmuwj8ZJ/oIhj63sD6H/zxxhY5SQAJdP4BLSs2N1p2q1MQDB9XwYVv8exu8ZijxhieP0n5TKBqcroNokREar+0FZDfF4+R3yUzkk7up42naoLGWNv3U8pCEVXbdjx1vd8J9F1PTV53cNpIuC/hZKIZft5RkHDneOSKjUkbQlWMZX/0+ydmyH2f9YaOvvcW6n5vXFzVFKHPu93jqyAlOHfF4Q0rOToz6ZvWYFFltCvBdbWFPY2iZYbaHV/YjOaiTOw== 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=DGvK//eo5b/YolkF24h5eVGg8zPXNpzwaAT4FVXKCos=; b=eH53r+9QyY9V3SwHXz33IMlYvfqYK1COe0FiLmguVN2+GsiAmvHd2rLIfZ5Qv7IdAVjqy/O3qTEsstkdsxwx70zFDT6J47L5X2AH4hxkMaWF73AuCWWQCmETYXQ9IoZ+voREz+SM4+I6l+rHY1xBTXFm2cT72dBGWGRRR2NgXcI= Received: from VE1PR08MB5677.eurprd08.prod.outlook.com (2603:10a6:800:1ab::17) by VI1PR08MB3853.eurprd08.prod.outlook.com (2603:10a6:803:c1::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19; Thu, 27 Aug 2020 08:47:50 +0000 Received: from VE1PR08MB5677.eurprd08.prod.outlook.com ([fe80::c9e4:247f:4472:36ef]) by VE1PR08MB5677.eurprd08.prod.outlook.com ([fe80::c9e4:247f:4472:36ef%6]) with mapi id 15.20.3305.032; Thu, 27 Aug 2020 08:47:50 +0000 From: Feifei Wang To: Honnappa Nagarahalli , Konstantin Ananyev CC: "dev@dpdk.org" , nd , nd , nd Thread-Topic: [PATCH v2 4/4] test/ring: add check to validate the dequeued objects Thread-Index: AQHWau/Qb1vg5WkZHEm0QrjnBKN9eqlK/1MAgADFx2A= Date: Thu, 27 Aug 2020 08:47:50 +0000 Message-ID: References: <20200729063105.11299-1-feifei.wang2@arm.com> <20200805061421.13037-1-feifei.wang2@arm.com> <20200805061421.13037-5-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: 82262E3B50CAE54890653B786D17BE88.0 x-checkrecipientchecked: true Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [203.126.0.113] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 6afb1cc4-9ae7-46b7-084b-08d84a65e56c x-ms-traffictypediagnostic: VI1PR08MB3853:|DB7PR08MB3067: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:255;OLM:255; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: ONAHq3J4ukOoZqNYwzvnbR7zLsbuy7H3HzBwVPPxdUWRqMIRQRd1Is+xn/YhNKJS2SKctbhloDGtfZRoXcY56EQ8yRWSKA8tLOKoi4xHqQFAWDFr2uJsWgrU0pBn8r32EfqdeZKKtzyxQ28C4gBEVnQ55iHtklC3fkGEd5XEUlUmdlc+9MYYLvLXDXA+J/5rnuTV4l6+e5I9aCMgab/b0ROtll1bl2EuqXyeQOVUmwDH6ZK0+W6zGKawddclkeeOF4T9SL3KdwaQxTYcTQoXaCYjbkQ/vpnnUmft0tcqtLAED9UMG/yo6P+A7xBspuLDUXQCLoz9MAHtFj1wYrtENg== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR08MB5677.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(39860400002)(366004)(376002)(136003)(396003)(33656002)(2906002)(186003)(54906003)(110136005)(224303003)(4326008)(66946007)(64756008)(26005)(66556008)(76116006)(66476007)(66446008)(6506007)(316002)(52536014)(53546011)(83380400001)(7696005)(86362001)(8936002)(30864003)(478600001)(71200400001)(5660300002)(55016002)(9686003)(15650500001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: xIZyT/BNbSeIVy5+S/O1FmAwQGQGA1G9J4rj5MNWfb3Ee+/+Wllfn2Ss014Bu6ALNYVhHtIOPrdPB4iYlnvfiKQoYFQe11yZKCspgjZbwmhMHnAYidtTH7iK/hxY+tno42w2ArlAEfZPsRgFQ2sFNOGONSJwsaZtGVrODx5FdaTbvIt5ssfrz80KjjtRdGnsMiQ6yQfCx2N/BF6CEse8Vi0rUtv0AuG0yeVFm2/5+BRE+eIHAd+TF/33fFZsUo+q5lBnlruSq9/Rmtl5ZGeVSxPg7wpVrP50DySDesDM7EEEJZaWEJUJT3osX5sVbdg71v4U3M9f3CM3IohuJ1gKl2cdySgPHrK8MQHAm8mXae7MtIrZ0oeQ92g0tuq1bmdEiF4l4uDGp6xf1f01FoxLn8mmU6i3i9/sM6h4mAHG4b5B00JdVZojXpOOn6695FMcY4RlmZhKGtElSy1/xaUhcfAZShBpfQeqaG3FSGmlDbumtL4aBmnLno6rR1f2P7aDDfoh+0mJIWb9SMnSArQ81bpH7SjD1HGwuZIOMgdjUxEv7f7vG/ryqO/Skhm6KZBu365eoKkP3Td2l6xG/WYxt4C56/Nwr0KmpGUuwP0VJq7Jvm3BgdbCSFwT4tJyoAk6Jpmiod6h0Tgf0G54dN5kIQ== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3853 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT046.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: a7158714-a85d-403f-18ff-08d84a65e170 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RSUAPDoKFsf8pytQGgUZ9xRySuXYAXa/6BiMRBPFNx8j44Gk7gOpBQzPsYhaZC0H3ZGRP1PVFq06QDoJdc5outiLB+L/S6H1yP0y5klDND3rDD51KN6noSuUK9ycxAeCosv5SXj+jpxP71+39V5pNUtznRAyUWMDYMrO/ReaAGuquGEmLvU4+D7X2f/mWZB71RRJ0N5B7DF0tA0HK47gf5iDuJPp3XfK+AxLh2GAGZTPwGJ49s8Ub3PZYUr3n2oVH3PdIwo3MaJXidC2d/uRI3Nxpj9MSWtRE2lW/MAr6w5H4QawkqzusO6sIvPiUzmj0Mh06epdLBFC9FU4Y/Wn4GJJr032qPFHnvy1ejaRqZfpE0u9iKEYZJZr1l8BVB31uWtACNhuy6CXsmGGF7/AlQ== 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:(4636009)(136003)(39860400002)(376002)(396003)(346002)(46966005)(86362001)(4326008)(54906003)(110136005)(316002)(9686003)(47076004)(52536014)(83380400001)(30864003)(15650500001)(356005)(8936002)(2906002)(82740400003)(55016002)(82310400002)(224303003)(53546011)(336012)(81166007)(33656002)(6506007)(186003)(478600001)(7696005)(5660300002)(70586007)(70206006)(26005); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Aug 2020 08:47:57.4050 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6afb1cc4-9ae7-46b7-084b-08d84a65e56c 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: DB5EUR03FT046.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3067 Subject: [dpdk-dev] =?utf-8?b?5Zue5aSNOiBbUEFUQ0ggdjIgNC80XSB0ZXN0L3Jpbmc6?= =?utf-8?q?_add_check_to_validate_the_dequeued_objects?= X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGksIEhvbm5hcHBhDQoNCj4gLS0tLS3pgq7ku7bljp/ku7YtLS0tLQ0KPiDlj5Hku7bkuro6IEhv bm5hcHBhIE5hZ2FyYWhhbGxpIDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tPg0KPiDlj5Hp gIHml7bpl7Q6IDIwMjDlubQ45pyIMjfml6UgNDo1MQ0KPiDmlLbku7bkuro6IEZlaWZlaSBXYW5n IDxGZWlmZWkuV2FuZzJAYXJtLmNvbT47IEtvbnN0YW50aW4gQW5hbnlldg0KPiA8a29uc3RhbnRp bi5hbmFueWV2QGludGVsLmNvbT4NCj4g5oqE6YCBOiBkZXZAZHBkay5vcmc7IG5kIDxuZEBhcm0u Y29tPjsgRmVpZmVpIFdhbmcNCj4gPEZlaWZlaS5XYW5nMkBhcm0uY29tPjsgSG9ubmFwcGEgTmFn YXJhaGFsbGkNCj4gPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+OyBuZCA8bmRAYXJtLmNv bT4NCj4g5Li76aKYOiBSRTogW1BBVENIIHYyIDQvNF0gdGVzdC9yaW5nOiBhZGQgY2hlY2sgdG8g dmFsaWRhdGUgdGhlIGRlcXVldWVkIG9iamVjdHMNCj4gDQo+IEhpIEZlaWZlaSwNCj4gCUNhbiB5 b3UgYWRkIHRoaXMgYXQgdGhlIGhlYWQgb2YgdGhlIHNlcmllcz8gSXQgd2lsbCBoZWxwIHdpdGgg cHJvdmluZyB0aGF0DQo+IHRoZSB0ZXN0IGNhc2UgZmFpbHMgYW5kIGhlbmNlIHdlIG5lZWQgc3Vi c2VxdWVudCBmaXhlcy4NCk9rLCBJIHdpbGwgYWRqdXN0IGl0IHRvIHRoZSBmaXJzdCBvbmUgb2Yg dGhlIHNlcmllcy4NCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9t OiBGZWlmZWkgV2FuZyA8ZmVpZmVpLndhbmcyQGFybS5jb20+DQo+ID4gU2VudDogV2VkbmVzZGF5 LCBBdWd1c3QgNSwgMjAyMCAxOjE0IEFNDQo+ID4gVG86IEhvbm5hcHBhIE5hZ2FyYWhhbGxpIDxI b25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tPjsgS29uc3RhbnRpbg0KPiA+IEFuYW55ZXYgPGtv bnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+DQo+ID4gQ2M6IGRldkBkcGRrLm9yZzsgbmQgPG5k QGFybS5jb20+OyBGZWlmZWkgV2FuZw0KPiA8RmVpZmVpLldhbmcyQGFybS5jb20+DQo+ID4gU3Vi amVjdDogW1BBVENIIHYyIDQvNF0gdGVzdC9yaW5nOiBhZGQgY2hlY2sgdG8gdmFsaWRhdGUgdGhl IGRlcXVldWVkDQo+ID4gb2JqZWN0cw0KPiA+DQo+ID4gRm9yIHRoZSBzaW5nbGUgZWxlbWVudCBl bnF1ZXVlIGFuZCBkZXF1ZXVlIGluIHRlc3RfcmluZ19iYXNpY19leCBhbmQNCj4gPiB0ZXN0X3Jp bmdfd2l0aF9leGFjdF9zaXplLCBhZGQgY2hlY2sgdG8gdmFsaWRhdGUgdGhlIGRlcXVldWVkIG9i amVjdHMuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBGZWlmZWkgV2FuZyA8ZmVpZmVpLndhbmcy QGFybS5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6IFJ1aWZlbmcgV2FuZyA8cnVpZmVuZy53YW5nQGFy bS5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6IEhvbm5hcHBhIE5hZ2FyYWhhbGxpIDxob25uYXBwYS5u YWdhcmFoYWxsaUBhcm0uY29tPg0KPiA+IC0tLQ0KPiA+ICBhcHAvdGVzdC90ZXN0X3JpbmcuYyB8 IDE0NQ0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0NCj4g PiAgMSBmaWxlIGNoYW5nZWQsIDEwOSBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkNCj4g Pg0KPiA+IGRpZmYgLS1naXQgYS9hcHAvdGVzdC90ZXN0X3JpbmcuYyBiL2FwcC90ZXN0L3Rlc3Rf cmluZy5jIGluZGV4DQo+ID4gNTFiYWUwZDQ4Li5hMWZmNzNhMDUgMTAwNjQ0DQo+ID4gLS0tIGEv YXBwL3Rlc3QvdGVzdF9yaW5nLmMNCj4gPiArKysgYi9hcHAvdGVzdC90ZXN0X3JpbmcuYw0KPiA+ IEBAIC03OTEsMTUgKzc5MSw5IEBAIHRlc3RfcmluZ19iYXNpY19leCh2b2lkKQ0KPiA+ICAJaW50 IHJldCA9IC0xOw0KPiA+ICAJdW5zaWduZWQgaW50IGksIGo7DQo+ID4gIAlzdHJ1Y3QgcnRlX3Jp bmcgKnJwID0gTlVMTDsNCj4gPiAtCXZvaWQgKm9iaiA9IE5VTEw7DQo+ID4gKwl2b2lkICoqc3Jj ID0gTlVMTCwgKipjdXJfc3JjID0gTlVMTCwgKipkc3QgPSBOVUxMLCAqKmN1cl9kc3QgPSBOVUxM Ow0KPiA+DQo+ID4gIAlmb3IgKGkgPSAwOyBpIDwgUlRFX0RJTShlc2l6ZSk7IGkrKykgew0KPiA+ IC0JCW9iaiA9IHRlc3RfcmluZ19jYWxsb2MoUklOR19TSVpFLCBlc2l6ZVtpXSk7DQo+ID4gLQkJ aWYgKG9iaiA9PSBOVUxMKSB7DQo+ID4gLQkJCXByaW50ZigiJXM6IGZhaWxlZCB0byBhbGxvYyBt ZW1vcnlcbiIsIF9fZnVuY19fKTsNCj4gPiAtCQkJZ290byBmYWlsX3Rlc3Q7DQo+ID4gLQkJfQ0K PiA+IC0NCj4gPiAgCQlycCA9IHRlc3RfcmluZ19jcmVhdGUoInRlc3RfcmluZ19iYXNpY19leCIs IGVzaXplW2ldLCBSSU5HX1NJWkUsDQo+ID4gIAkJCQkJU09DS0VUX0lEX0FOWSwNCj4gPiAgCQkJ CQlSSU5HX0ZfU1BfRU5RIHwgUklOR19GX1NDX0RFUSk7DQo+ID4gQEAgLTgwOCw2ICs4MDIsMjMg QEAgdGVzdF9yaW5nX2Jhc2ljX2V4KHZvaWQpDQo+ID4gIAkJCWdvdG8gZmFpbF90ZXN0Ow0KPiA+ ICAJCX0NCj4gPg0KPiA+ICsJCS8qIGFsbG9jIGR1bW15IG9iamVjdCBwb2ludGVycyAqLw0KPiA+ ICsJCXNyYyA9IHRlc3RfcmluZ19jYWxsb2MoUklOR19TSVpFLCBlc2l6ZVtpXSk7DQo+ID4gKwkJ aWYgKHNyYyA9PSBOVUxMKSB7DQo+ID4gKwkJCXByaW50ZigiJXM6IGZhaWxlZCB0byBhbGxvYyBz cmMgbWVtb3J5XG4iLCBfX2Z1bmNfXyk7DQo+ID4gKwkJCWdvdG8gZmFpbF90ZXN0Ow0KPiA+ICsJ CX0NCj4gPiArCQl0ZXN0X3JpbmdfbWVtX2luaXQoc3JjLCBSSU5HX1NJWkUsIGVzaXplW2ldKTsN Cj4gPiArCQljdXJfc3JjID0gc3JjOw0KPiA+ICsNCj4gPiArCQkvKiBhbGxvYyBzb21lIHJvb20g Zm9yIGNvcGllZCBvYmplY3RzICovDQo+ID4gKwkJZHN0ID0gdGVzdF9yaW5nX2NhbGxvYyhSSU5H X1NJWkUsIGVzaXplW2ldKTsNCj4gPiArCQlpZiAoZHN0ID09IE5VTEwpIHsNCj4gPiArCQkJcHJp bnRmKCIlczogZmFpbGVkIHRvIGFsbG9jIGRzdCBtZW1vcnlcbiIsIF9fZnVuY19fKTsNCj4gPiAr CQkJZ290byBmYWlsX3Rlc3Q7DQo+ID4gKwkJfQ0KPiA+ICsJCWN1cl9kc3QgPSBkc3Q7DQo+ID4g Kw0KPiA+ICAJCWlmIChydGVfcmluZ19sb29rdXAoInRlc3RfcmluZ19iYXNpY19leCIpICE9IHJw KSB7DQo+ID4gIAkJCXByaW50ZigiJXM6IGZhaWxlZCB0byBmaW5kIHJpbmdcbiIsIF9fZnVuY19f KTsNCj4gPiAgCQkJZ290byBmYWlsX3Rlc3Q7DQo+ID4gQEAgLTgyMyw4ICs4MzQsOSBAQCB0ZXN0 X3JpbmdfYmFzaWNfZXgodm9pZCkNCj4gPiAgCQkJcnRlX3JpbmdfZnJlZV9jb3VudChycCkpOw0K PiA+DQo+ID4gIAkJZm9yIChqID0gMDsgaiA8IFJJTkdfU0laRSAtIDE7IGorKykgew0KPiA+IC0J CQl0ZXN0X3JpbmdfZW5xdWV1ZShycCwgb2JqLCBlc2l6ZVtpXSwgMSwNCj4gPiArCQkJdGVzdF9y aW5nX2VucXVldWUocnAsIGN1cl9zcmMsIGVzaXplW2ldLCAxLA0KPiA+ICAJCQkJVEVTVF9SSU5H X1RIUkVBRF9ERUYgfA0KPiA+IFRFU1RfUklOR19FTEVNX1NJTkdMRSk7DQo+ID4gKwkJCWN1cl9z cmMgPSB0ZXN0X3JpbmdfaW5jX3B0cihjdXJfc3JjLCBlc2l6ZVtpXSwgMSk7DQo+ID4gIAkJfQ0K PiA+DQo+ID4gIAkJaWYgKHJ0ZV9yaW5nX2Z1bGwocnApICE9IDEpIHsNCj4gPiBAQCAtODM0LDgg Kzg0Niw5IEBAIHRlc3RfcmluZ19iYXNpY19leCh2b2lkKQ0KPiA+ICAJCX0NCj4gPg0KPiA+ICAJ CWZvciAoaiA9IDA7IGogPCBSSU5HX1NJWkUgLSAxOyBqKyspIHsNCj4gPiAtCQkJdGVzdF9yaW5n X2RlcXVldWUocnAsIG9iaiwgZXNpemVbaV0sIDEsDQo+ID4gKwkJCXRlc3RfcmluZ19kZXF1ZXVl KHJwLCBjdXJfZHN0LCBlc2l6ZVtpXSwgMSwNCj4gPiAgCQkJCVRFU1RfUklOR19USFJFQURfREVG IHwNCj4gPiBURVNUX1JJTkdfRUxFTV9TSU5HTEUpOw0KPiA+ICsJCQljdXJfZHN0ID0gdGVzdF9y aW5nX2luY19wdHIoY3VyX2RzdCwgZXNpemVbaV0sIDEpOw0KPiA+ICAJCX0NCj4gPg0KPiA+ICAJ CWlmIChydGVfcmluZ19lbXB0eShycCkgIT0gMSkgew0KPiA+IEBAIC04NDQsNTIgKzg1Nyw4OCBA QCB0ZXN0X3JpbmdfYmFzaWNfZXgodm9pZCkNCj4gPiAgCQkJZ290byBmYWlsX3Rlc3Q7DQo+ID4g IAkJfQ0KPiA+DQo+ID4gKwkJLyogY2hlY2sgZGF0YSAqLw0KPiA+ICsJCWlmIChtZW1jbXAoc3Jj LCBkc3QsIFJURV9QVFJfRElGRihjdXJfc3JjLCBzcmMpKSkgew0KPiA+ICsJCQlydGVfaGV4ZHVt cChzdGRvdXQsICJzcmMiLCBzcmMsDQo+ID4gKwkJCQkJUlRFX1BUUl9ESUZGKGN1cl9zcmMsIHNy YykpOw0KPiA+ICsJCQlydGVfaGV4ZHVtcChzdGRvdXQsICJkc3QiLCBkc3QsDQo+ID4gKwkJCQkJ UlRFX1BUUl9ESUZGKGN1cl9kc3QsIGRzdCkpOw0KPiA+ICsJCQlwcmludGYoImRhdGEgYWZ0ZXIg ZGVxdWV1ZSBpcyBub3QgdGhlIHNhbWVcbiIpOw0KPiA+ICsJCQlnb3RvIGZhaWxfdGVzdDsNCj4g PiArCQl9DQo+ID4gKw0KPiA+ICsNCj4gPiAgCQkvKiBGb2xsb3dpbmcgdGVzdHMgdXNlIHRoZSBj b25maWd1cmVkIGZsYWdzIHRvIGRlY2lkZQ0KPiA+ICAJCSAqIFNQL1NDIG9yIE1QL01DLg0KPiA+ ICAJCSAqLw0KPiA+ICsJCS8qIHJlc2V0IGRzdCAqLw0KPiA+ICsJCWlmIChlc2l6ZVtpXSA9PSAt MSkNCj4gPiArCQkJbWVtc2V0KGRzdCwgMCwgUklOR19TSVpFICogc2l6ZW9mKHZvaWQgKikpOw0K PiA+ICsJCWVsc2UNCj4gPiArCQkJbWVtc2V0KGRzdCwgMCwgUklOR19TSVpFICogZXNpemVbaV0p Ow0KPiBDYW4geW91IGNvbnZlcnQgdGhlIGFib3ZlIGludG8gYSBmdW5jdGlvbiBsaWtlICd0ZXN0 X3JpbmdfbWVtX3Jlc2V0Jz8NCg0KT2ssIHRoZSBuZXcgZnVuY3Rpb24gb2YgInRlc3RfcmluZ19t ZW1fcmVzZXQiKG1lbXNldCkgYW5kICJ0ZXN0X3JpbmdfbWVtX2NtcCIobWVtY21wKSB3aWxsIGJl IGFkZGVkIGluIHRoZSBuZXh0IHZlcnNpb24uDQo+IA0KPiA+ICsNCj4gPiArCQkvKiByZXNldCBj dXJfc3JjIGFuZCBjdXJfZHN0ICovDQo+ID4gKwkJY3VyX3NyYyA9IHNyYzsNCj4gPiArCQljdXJf ZHN0ID0gZHN0Ow0KPiA+ICsNCj4gPiAgCQkvKiBDb3ZlcmluZyB0aGUgcmluZyBidXJzdCBvcGVy YXRpb24gKi8NCj4gPiAtCQlyZXQgPSB0ZXN0X3JpbmdfZW5xdWV1ZShycCwgb2JqLCBlc2l6ZVtp XSwgMiwNCj4gPiArCQlyZXQgPSB0ZXN0X3JpbmdfZW5xdWV1ZShycCwgY3VyX3NyYywgZXNpemVb aV0sIDIsDQo+ID4gIAkJCQlURVNUX1JJTkdfVEhSRUFEX0RFRiB8DQo+ID4gVEVTVF9SSU5HX0VM RU1fQlVSU1QpOw0KPiA+ICAJCWlmIChyZXQgIT0gMikgew0KPiA+ICAJCQlwcmludGYoIiVzOiBy dGVfcmluZ19lbnF1ZXVlX2J1cnN0IGZhaWxzXG4iLCBfX2Z1bmNfXyk7DQo+ID4gIAkJCWdvdG8g ZmFpbF90ZXN0Ow0KPiA+ICAJCX0NCj4gPiArCQljdXJfc3JjID0gdGVzdF9yaW5nX2luY19wdHIo Y3VyX3NyYywgZXNpemVbaV0sIDIpOw0KPiA+DQo+ID4gLQkJcmV0ID0gdGVzdF9yaW5nX2RlcXVl dWUocnAsIG9iaiwgZXNpemVbaV0sIDIsDQo+ID4gKwkJcmV0ID0gdGVzdF9yaW5nX2RlcXVldWUo cnAsIGN1cl9kc3QsIGVzaXplW2ldLCAyLA0KPiA+ICAJCQkJVEVTVF9SSU5HX1RIUkVBRF9ERUYg fA0KPiA+IFRFU1RfUklOR19FTEVNX0JVUlNUKTsNCj4gPiAgCQlpZiAocmV0ICE9IDIpIHsNCj4g PiAgCQkJcHJpbnRmKCIlczogcnRlX3JpbmdfZGVxdWV1ZV9idXJzdCBmYWlsc1xuIiwgX19mdW5j X18pOw0KPiA+ICAJCQlnb3RvIGZhaWxfdGVzdDsNCj4gPiAgCQl9DQo+ID4gKwkJY3VyX2RzdCA9 IHRlc3RfcmluZ19pbmNfcHRyKGN1cl9kc3QsIGVzaXplW2ldLCAyKTsNCj4gPg0KPiA+ICAJCS8q IENvdmVyaW5nIHRoZSByaW5nIGJ1bGsgb3BlcmF0aW9uICovDQo+ID4gLQkJcmV0ID0gdGVzdF9y aW5nX2VucXVldWUocnAsIG9iaiwgZXNpemVbaV0sIDIsDQo+ID4gKwkJcmV0ID0gdGVzdF9yaW5n X2VucXVldWUocnAsIGN1cl9zcmMsIGVzaXplW2ldLCAyLA0KPiA+ICAJCQkJVEVTVF9SSU5HX1RI UkVBRF9ERUYgfA0KPiA+IFRFU1RfUklOR19FTEVNX0JVTEspOw0KPiA+ICAJCWlmIChyZXQgIT0g Mikgew0KPiA+ICAJCQlwcmludGYoIiVzOiBydGVfcmluZ19lbnF1ZXVlX2J1bGsgZmFpbHNcbiIs IF9fZnVuY19fKTsNCj4gPiAgCQkJZ290byBmYWlsX3Rlc3Q7DQo+ID4gIAkJfQ0KPiA+ICsJCWN1 cl9zcmMgPSB0ZXN0X3JpbmdfaW5jX3B0cihjdXJfc3JjLCBlc2l6ZVtpXSwgMik7DQo+ID4NCj4g PiAtCQlyZXQgPSB0ZXN0X3JpbmdfZGVxdWV1ZShycCwgb2JqLCBlc2l6ZVtpXSwgMiwNCj4gPiAr CQlyZXQgPSB0ZXN0X3JpbmdfZGVxdWV1ZShycCwgY3VyX2RzdCwgZXNpemVbaV0sIDIsDQo+ID4g IAkJCQlURVNUX1JJTkdfVEhSRUFEX0RFRiB8DQo+ID4gVEVTVF9SSU5HX0VMRU1fQlVMSyk7DQo+ ID4gIAkJaWYgKHJldCAhPSAyKSB7DQo+ID4gIAkJCXByaW50ZigiJXM6IHJ0ZV9yaW5nX2RlcXVl dWVfYnVsayBmYWlsc1xuIiwgX19mdW5jX18pOw0KPiA+ICAJCQlnb3RvIGZhaWxfdGVzdDsNCj4g PiAgCQl9DQo+ID4gKwkJY3VyX2RzdCA9IHRlc3RfcmluZ19pbmNfcHRyKGN1cl9kc3QsIGVzaXpl W2ldLCAyKTsNCj4gPiArDQo+ID4gKwkJLyogY2hlY2sgZGF0YSAqLw0KPiA+ICsJCWlmIChtZW1j bXAoc3JjLCBkc3QsIFJURV9QVFJfRElGRihjdXJfZHN0LCBkc3QpKSkgew0KPiA+ICsJCQlydGVf aGV4ZHVtcChzdGRvdXQsICJzcmMiLCBzcmMsDQo+ID4gKwkJCQkJUlRFX1BUUl9ESUZGKGN1cl9z cmMsIHNyYykpOw0KPiA+ICsJCQlydGVfaGV4ZHVtcChzdGRvdXQsICJkc3QiLCBkc3QsDQo+ID4g KwkJCQkJUlRFX1BUUl9ESUZGKGN1cl9kc3QsIGRzdCkpOw0KPiA+ICsJCQlwcmludGYoImRhdGEg YWZ0ZXIgZGVxdWV1ZSBpcyBub3QgdGhlIHNhbWVcbiIpOw0KPiA+ICsJCQlnb3RvIGZhaWxfdGVz dDsNCj4gPiArCQl9DQo+ID4NCj4gPiAgCQlydGVfcmluZ19mcmVlKHJwKTsNCj4gPiAtCQlydGVf ZnJlZShvYmopOw0KPiA+ICsJCXJ0ZV9mcmVlKHNyYyk7DQo+ID4gKwkJcnRlX2ZyZWUoZHN0KTsN Cj4gPiAgCQlycCA9IE5VTEw7DQo+ID4gLQkJb2JqID0gTlVMTDsNCj4gPiArCQlzcmMgPSBOVUxM Ow0KPiA+ICsJCWRzdCA9IE5VTEw7DQo+ID4gIAl9DQo+ID4NCj4gPiAgCXJldHVybiAwOw0KPiA+ DQo+ID4gIGZhaWxfdGVzdDoNCj4gPiAgCXJ0ZV9yaW5nX2ZyZWUocnApOw0KPiA+IC0JaWYgKG9i aiAhPSBOVUxMKQ0KPiA+IC0JCXJ0ZV9mcmVlKG9iaik7DQo+ID4gLQ0KPiA+ICsJcnRlX2ZyZWUo c3JjKTsNCj4gPiArCXJ0ZV9mcmVlKGRzdCk7DQo+ID4gIAlyZXR1cm4gLTE7DQo+ID4gIH0NCj4g Pg0KPiA+IEBAIC05MDAsOCArOTQ5LDggQEAgc3RhdGljIGludA0KPiA+ICB0ZXN0X3Jpbmdfd2l0 aF9leGFjdF9zaXplKHZvaWQpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBydGVfcmluZyAqc3RkX3Ig PSBOVUxMLCAqZXhhY3Rfc3pfciA9IE5VTEw7DQo+ID4gLQl2b2lkICpvYmpfb3JpZzsNCj4gPiAt CXZvaWQgKm9iajsNCj4gPiArCXZvaWQgKipzcmNfb3JpZyA9IE5VTEwsICoqZHN0X29yaWcgPSBO VUxMOw0KPiA+ICsJdm9pZCAqKnNyYyA9IE5VTEwsICoqY3VyX3NyYyA9IE5VTEwsICoqZHN0ID0g TlVMTCwgKipjdXJfZHN0ID0gTlVMTDsNCj4gPiAgCWNvbnN0IHVuc2lnbmVkIGludCByaW5nX3N6 ID0gMTY7DQo+ID4gIAl1bnNpZ25lZCBpbnQgaSwgajsNCj4gPiAgCWludCByZXQgPSAtMTsNCj4g PiBAQCAtOTExLDE0ICs5NjAsNiBAQCB0ZXN0X3Jpbmdfd2l0aF9leGFjdF9zaXplKHZvaWQpDQo+ ID4gIAkJCQlURVNUX1JJTkdfSUdOT1JFX0FQSV9UWVBFLA0KPiA+ICAJCQkJZXNpemVbaV0pOw0K PiA+DQo+ID4gLQkJLyogYWxsb2Mgb2JqZWN0IHBvaW50ZXJzLiBBbGxvY2F0ZSBvbmUgZXh0cmEg b2JqZWN0DQo+ID4gLQkJICogYW5kIGNyZWF0ZSBhbiB1bmFsaWduZWQgYWRkcmVzcy4NCj4gPiAt CQkgKi8NCj4gPiAtCQlvYmpfb3JpZyA9IHRlc3RfcmluZ19jYWxsb2MoMTcsIGVzaXplW2ldKTsN Cj4gPiAtCQlpZiAob2JqX29yaWcgPT0gTlVMTCkNCj4gPiAtCQkJZ290byB0ZXN0X2ZhaWw7DQo+ ID4gLQkJb2JqID0gKChjaGFyICopb2JqX29yaWcpICsgMTsNCj4gPiAtDQo+ID4gIAkJc3RkX3Ig PSB0ZXN0X3JpbmdfY3JlYXRlKCJzdGQiLCBlc2l6ZVtpXSwgcmluZ19zeiwNCj4gPiAgCQkJCQly dGVfc29ja2V0X2lkKCksDQo+ID4gIAkJCQkJUklOR19GX1NQX0VOUSB8IFJJTkdfRl9TQ19ERVEp Ow0KPiA+IEBAIC05MzYsNiArOTc3LDIyIEBAIHRlc3RfcmluZ193aXRoX2V4YWN0X3NpemUodm9p ZCkNCj4gPiAgCQkJZ290byB0ZXN0X2ZhaWw7DQo+ID4gIAkJfQ0KPiA+DQo+ID4gKwkJLyogYWxs b2Mgb2JqZWN0IHBvaW50ZXJzLiBBbGxvY2F0ZSBvbmUgZXh0cmEgb2JqZWN0DQo+ID4gKwkJICog YW5kIGNyZWF0ZSBhbiB1bmFsaWduZWQgYWRkcmVzcy4NCj4gPiArCQkgKi8NCj4gPiArCQlzcmNf b3JpZyA9IHRlc3RfcmluZ19jYWxsb2MoMTcsIGVzaXplW2ldKTsNCj4gPiArCQlpZiAoc3JjX29y aWcgPT0gTlVMTCkNCj4gPiArCQkJZ290byB0ZXN0X2ZhaWw7DQo+ID4gKwkJdGVzdF9yaW5nX21l bV9pbml0KHNyY19vcmlnLCAxNywgZXNpemVbaV0pOw0KPiA+ICsJCXNyYyA9ICgodm9pZCAqKilz cmNfb3JpZykgKyAxOw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF5eXl5eXiBUaGlzIGRvZXMgbm90IGNyZWF0ZSBhbiB1bmFsaWduZWQgYWRkcmVzcy4NCj4gWW91 IGhhdmUgdG8gdXNlIHRoZSB0eXBlY2FzdGluZyB0byAnY2hhciAqJyBsaWtlIGluIHRoZSBvcmln aW5hbCBjb2RlLg0KU28sIGlmIEkgdW5kZXJzdGFuZCBpdCBjb3JyZWN0bHksICB0aGUgb3JpZ2lu YWwgY29kZSBpcyB0byB0cmFuc2xhdGUgb25lIGJ5dGUuIEFuZCBmb3IgdGhlIG5ldyB2ZXJzaW9u LCB3ZSBhbHNvIHNob3VsZCB0cmFuc2xhdGUgb25lIGJ5dGUgcmF0aGVyIHRoYW4gdGhlIHNpemUg b2YgYSBwb2ludGVyLg0KPiANCj4gPiArCQljdXJfc3JjID0gc3JjOw0KPiA+ICsNCj4gPiArCQlk c3Rfb3JpZyA9IHRlc3RfcmluZ19jYWxsb2MoMTcsIGVzaXplW2ldKTsNCj4gPiArCQlpZiAoZHN0 X29yaWcgPT0gTlVMTCkNCj4gPiArCQkJZ290byB0ZXN0X2ZhaWw7DQo+ID4gKwkJZHN0ID0gKCh2 b2lkICoqKWRzdF9vcmlnKSArIDE7DQo+IFNhbWUgaGVyZS4NCj4gDQo+ID4gKwkJY3VyX2RzdCA9 IGRzdDsNCj4gPiArDQo+ID4gIAkJLyoNCj4gPiAgCQkgKiBDaGVjayB0aGF0IHRoZSBleGFjdCBz aXplIHJpbmcgaXMgYmlnZ2VyIHRoYW4gdGhlDQo+ID4gIAkJICogc3RhbmRhcmQgcmluZw0KPiA+ IEBAIC05NTIsMzMgKzEwMDksMzYgQEAgdGVzdF9yaW5nX3dpdGhfZXhhY3Rfc2l6ZSh2b2lkKQ0K PiA+ICAJCSAqIHRoYW4gdGhlIHN0YW5kYXJkIHJpbmcuICgxNiB2cyAxNSBlbGVtZW50cykNCj4g PiAgCQkgKi8NCj4gPiAgCQlmb3IgKGogPSAwOyBqIDwgcmluZ19zeiAtIDE7IGorKykgew0KPiA+ IC0JCQl0ZXN0X3JpbmdfZW5xdWV1ZShzdGRfciwgb2JqLCBlc2l6ZVtpXSwgMSwNCj4gPiArCQkJ dGVzdF9yaW5nX2VucXVldWUoc3RkX3IsIGN1cl9zcmMsIGVzaXplW2ldLCAxLA0KPiA+ICAJCQkJ VEVTVF9SSU5HX1RIUkVBRF9ERUYgfA0KPiA+IFRFU1RfUklOR19FTEVNX1NJTkdMRSk7DQo+ID4g LQkJCXRlc3RfcmluZ19lbnF1ZXVlKGV4YWN0X3N6X3IsIG9iaiwgZXNpemVbaV0sIDEsDQo+ID4g KwkJCXRlc3RfcmluZ19lbnF1ZXVlKGV4YWN0X3N6X3IsIGN1cl9zcmMsIGVzaXplW2ldLCAxLA0K PiA+ICAJCQkJVEVTVF9SSU5HX1RIUkVBRF9ERUYgfA0KPiA+IFRFU1RfUklOR19FTEVNX1NJTkdM RSk7DQo+ID4gKwkJCWN1cl9zcmMgPSB0ZXN0X3JpbmdfaW5jX3B0cihjdXJfc3JjLCBlc2l6ZVtp XSwgMSk7DQo+ID4gIAkJfQ0KPiA+IC0JCXJldCA9IHRlc3RfcmluZ19lbnF1ZXVlKHN0ZF9yLCBv YmosIGVzaXplW2ldLCAxLA0KPiA+ICsJCXJldCA9IHRlc3RfcmluZ19lbnF1ZXVlKHN0ZF9yLCBj dXJfc3JjLCBlc2l6ZVtpXSwgMSwNCj4gPiAgCQkJCVRFU1RfUklOR19USFJFQURfREVGIHwNCj4g PiBURVNUX1JJTkdfRUxFTV9TSU5HTEUpOw0KPiA+ICAJCWlmIChyZXQgIT0gLUVOT0JVRlMpIHsN Cj4gPiAgCQkJcHJpbnRmKCIlczogZXJyb3IsIHVuZXhwZWN0ZWQgc3VjY2Vzc2Z1bCBlbnF1ZXVl XG4iLA0KPiA+ICAJCQkJX19mdW5jX18pOw0KPiA+ICAJCQlnb3RvIHRlc3RfZmFpbDsNCj4gPiAg CQl9DQo+ID4gLQkJcmV0ID0gdGVzdF9yaW5nX2VucXVldWUoZXhhY3Rfc3pfciwgb2JqLCBlc2l6 ZVtpXSwgMSwNCj4gPiArCQlyZXQgPSB0ZXN0X3JpbmdfZW5xdWV1ZShleGFjdF9zel9yLCBjdXJf c3JjLCBlc2l6ZVtpXSwgMSwNCj4gPiAgCQkJCVRFU1RfUklOR19USFJFQURfREVGIHwNCj4gPiBU RVNUX1JJTkdfRUxFTV9TSU5HTEUpOw0KPiA+ICAJCWlmIChyZXQgPT0gLUVOT0JVRlMpIHsNCj4g PiAgCQkJcHJpbnRmKCIlczogZXJyb3IsIGVucXVldWUgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7DQo+ ID4gIAkJCWdvdG8gdGVzdF9mYWlsOw0KPiA+ICAJCX0NCj4gPiArCQljdXJfc3JjID0gdGVzdF9y aW5nX2luY19wdHIoY3VyX3NyYywgZXNpemVbaV0sIDEpOw0KPiA+DQo+ID4gIAkJLyogY2hlY2sg dGhhdCBkZXF1ZXVlIHJldHVybnMgdGhlIGV4cGVjdGVkIG51bWJlciBvZg0KPiBlbGVtZW50cyAq Lw0KPiA+IC0JCXJldCA9IHRlc3RfcmluZ19kZXF1ZXVlKGV4YWN0X3N6X3IsIG9iaiwgZXNpemVb aV0sIHJpbmdfc3osDQo+ID4gKwkJcmV0ID0gdGVzdF9yaW5nX2RlcXVldWUoZXhhY3Rfc3pfciwg Y3VyX2RzdCwgZXNpemVbaV0sIHJpbmdfc3osDQo+ID4gIAkJCQlURVNUX1JJTkdfVEhSRUFEX0RF RiB8DQo+ID4gVEVTVF9SSU5HX0VMRU1fQlVSU1QpOw0KPiA+ICAJCWlmIChyZXQgIT0gKGludCly aW5nX3N6KSB7DQo+ID4gIAkJCXByaW50ZigiJXM6IGVycm9yLCBmYWlsZWQgdG8gZGVxdWV1ZSBl eHBlY3RlZCBuYiBvZg0KPiBlbGVtZW50c1xuIiwNCj4gPiAgCQkJCV9fZnVuY19fKTsNCj4gPiAg CQkJZ290byB0ZXN0X2ZhaWw7DQo+ID4gIAkJfQ0KPiA+ICsJCWN1cl9kc3QgPSB0ZXN0X3Jpbmdf aW5jX3B0cihjdXJfZHN0LCBlc2l6ZVtpXSwgcmluZ19zeik7DQo+ID4NCj4gPiAgCQkvKiBjaGVj ayB0aGF0IHRoZSBjYXBhY2l0eSBmdW5jdGlvbiByZXR1cm5zIGV4cGVjdGVkIHZhbHVlICovDQo+ ID4gIAkJaWYgKHJ0ZV9yaW5nX2dldF9jYXBhY2l0eShleGFjdF9zel9yKSAhPSByaW5nX3N6KSB7 IEBAIC05ODcsMTANCj4gPiArMTA0NywyMiBAQCB0ZXN0X3Jpbmdfd2l0aF9leGFjdF9zaXplKHZv aWQpDQo+ID4gIAkJCWdvdG8gdGVzdF9mYWlsOw0KPiA+ICAJCX0NCj4gPg0KPiA+IC0JCXJ0ZV9m cmVlKG9ial9vcmlnKTsNCj4gPiArCQkvKiBjaGVjayBkYXRhICovDQo+ID4gKwkJaWYgKG1lbWNt cChzcmMsIGRzdCwgUlRFX1BUUl9ESUZGKGN1cl9kc3QsIGRzdCkpKSB7DQo+ID4gKwkJCXJ0ZV9o ZXhkdW1wKHN0ZG91dCwgInNyYyIsIHNyYywNCj4gPiArCQkJCQlSVEVfUFRSX0RJRkYoY3VyX3Ny Yywgc3JjKSk7DQo+ID4gKwkJCXJ0ZV9oZXhkdW1wKHN0ZG91dCwgImRzdCIsIGRzdCwNCj4gPiAr CQkJCQlSVEVfUFRSX0RJRkYoY3VyX2RzdCwgZHN0KSk7DQo+ID4gKwkJCXByaW50ZigiZGF0YSBh ZnRlciBkZXF1ZXVlIGlzIG5vdCB0aGUgc2FtZVxuIik7DQo+ID4gKwkJCWdvdG8gdGVzdF9mYWls Ow0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJcnRlX2ZyZWUoc3JjX29yaWcpOw0KPiA+ICsJCXJ0 ZV9mcmVlKGRzdF9vcmlnKTsNCj4gPiAgCQlydGVfcmluZ19mcmVlKHN0ZF9yKTsNCj4gPiAgCQly dGVfcmluZ19mcmVlKGV4YWN0X3N6X3IpOw0KPiA+IC0JCW9ial9vcmlnID0gTlVMTDsNCj4gPiAr CQlzcmNfb3JpZyA9IE5VTEw7DQo+ID4gKwkJZHN0X29yaWcgPSBOVUxMOw0KPiA+ICAJCXN0ZF9y ID0gTlVMTDsNCj4gPiAgCQlleGFjdF9zel9yID0gTlVMTDsNCj4gPiAgCX0NCj4gPiBAQCAtOTk4 LDcgKzEwNzAsOCBAQCB0ZXN0X3Jpbmdfd2l0aF9leGFjdF9zaXplKHZvaWQpDQo+ID4gIAlyZXR1 cm4gMDsNCj4gPg0KPiA+ICB0ZXN0X2ZhaWw6DQo+ID4gLQlydGVfZnJlZShvYmpfb3JpZyk7DQo+ ID4gKwlydGVfZnJlZShzcmNfb3JpZyk7DQo+ID4gKwlydGVfZnJlZShkc3Rfb3JpZyk7DQo+ID4g IAlydGVfcmluZ19mcmVlKHN0ZF9yKTsNCj4gPiAgCXJ0ZV9yaW5nX2ZyZWUoZXhhY3Rfc3pfcik7 DQo+ID4gIAlyZXR1cm4gLTE7DQo+ID4gLS0NCj4gPiAyLjE3LjENCg0K