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 833F9A0526; Wed, 8 Jul 2020 16:01:12 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5AF2A1D643; Wed, 8 Jul 2020 16:01:12 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60056.outbound.protection.outlook.com [40.107.6.56]) by dpdk.org (Postfix) with ESMTP id 040F11D5BB for ; Wed, 8 Jul 2020 16:01:11 +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=6a1JCEcufzWyRBNSeNKi82ytdHMGvi0EnDCPOKam0GY=; b=D/HmA3sVWOEh/2sHJuc292uGBrsnlGF4LAeT7TaLKqSMyojPR1wviaXF4qxXuwy8k8jqZOmEt6e94olenAOpqmLh58TNTR0/VMjbAsYxjBscd/zmQRF+Y9N8PN8N1POQOAuaxGTi6mdJ90uS4VPniFb0+B/QKBsAqzDiWywSF6k= Received: from AM6P193CA0056.EURP193.PROD.OUTLOOK.COM (2603:10a6:209:8e::33) by AM0PR08MB4116.eurprd08.prod.outlook.com (2603:10a6:208:131::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Wed, 8 Jul 2020 14:01:06 +0000 Received: from AM5EUR03FT015.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:8e:cafe::99) by AM6P193CA0056.outlook.office365.com (2603:10a6:209:8e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.21 via Frontend Transport; Wed, 8 Jul 2020 14:01:06 +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 AM5EUR03FT015.mail.protection.outlook.com (10.152.16.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.21 via Frontend Transport; Wed, 8 Jul 2020 14:01:06 +0000 Received: ("Tessian outbound b8ad5ab47c8c:v62"); Wed, 08 Jul 2020 14:01:06 +0000 X-CR-MTA-TID: 64aa7808 Received: from 190d82e3e429.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 76B7384C-BB8B-4A61-AF74-BBE1FE60FF2A.1; Wed, 08 Jul 2020 14:01:01 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 190d82e3e429.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 08 Jul 2020 14:01:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jdxYdJGyPREZQo2e7Uov2+YyNcVIQKZZrAQeAQQHgKvwgLtiEn5ddbkw93UH9KP5mIqM0iUQe8Qsbi70xtiarOkR81sG4Cp44ZwvuG6zFc4rDkW5AAHjFtxrJeNW+vr8vrSMYmMfMR88dfgj9IbNHSjWNBPx3jFx82kw57sjgEN/bVjnZ+HmNoVSkJxVWUCJJInhTQhtx0qInhBUaAkWjQBvDFWMuID2RxE5NRhR2DPv2Zcpb6HbB5O6bxXpgN2VUshc9bSoqHvjlhKv46g8qFdZPYIlibv0mvfywCG+0Ps8lpsuzp0ylwQ+t1w9hibu+DC2lmeIHWr/QhDYAkhwSA== 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=6a1JCEcufzWyRBNSeNKi82ytdHMGvi0EnDCPOKam0GY=; b=DVv7gsV+dElY260bzR74ovaQDK0y5Wv+3TU+fZ8fstTTrVmFyyeR1mjWCZuvjHgD/RVmynpPwABRwq8o9a1vSSHEL+Rrjnnx0vMm3n3aVUq+wcXu+GEmFhMWykVkit04OB0pqzbnOC900mXdVc+19udmY61tPlBQDHNKKyja493B/U0S/NXZCW27NhYT4GeW7u12vtxkoJuppbGYDV5dlmcekv9GyVyzMsDRlUMHjJUxr3PG5txgLtZZtD67UhXkt2IDIdWXRC7c7r+GKVEc2TxVN7B8YI69bwzmuCG50Ikfrj3+m16sY5xtaPN3HKu338493dDG5bbRmEtBspKelg== 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=6a1JCEcufzWyRBNSeNKi82ytdHMGvi0EnDCPOKam0GY=; b=D/HmA3sVWOEh/2sHJuc292uGBrsnlGF4LAeT7TaLKqSMyojPR1wviaXF4qxXuwy8k8jqZOmEt6e94olenAOpqmLh58TNTR0/VMjbAsYxjBscd/zmQRF+Y9N8PN8N1POQOAuaxGTi6mdJ90uS4VPniFb0+B/QKBsAqzDiWywSF6k= Received: from HE1PR0801MB2025.eurprd08.prod.outlook.com (2603:10a6:3:50::14) by HE1PR08MB2795.eurprd08.prod.outlook.com (2603:10a6:7:33::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.27; Wed, 8 Jul 2020 14:00:57 +0000 Received: from HE1PR0801MB2025.eurprd08.prod.outlook.com ([fe80::e863:15c9:b803:6533]) by HE1PR0801MB2025.eurprd08.prod.outlook.com ([fe80::e863:15c9:b803:6533%7]) with mapi id 15.20.3174.021; Wed, 8 Jul 2020 14:00:57 +0000 From: Ruifeng Wang To: "Medvedkin, Vladimir" , Bruce Richardson CC: "dev@dpdk.org" , "mdr@ashroe.eu" , "konstantin.ananyev@intel.com" , Honnappa Nagarahalli , nd , nd Thread-Topic: [PATCH v7 2/3] test/lpm: add LPM RCU integration functional tests Thread-Index: AQHWVHGaZQQDWRy9/UanDoRNDP1kkqj9oCIAgAAWZJA= Date: Wed, 8 Jul 2020 14:00:57 +0000 Message-ID: References: <20190906094534.36060-1-ruifeng.wang@arm.com> <20200707151554.64431-1-ruifeng.wang@arm.com> <20200707151554.64431-3-ruifeng.wang@arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 961f54a5-eaa1-4c85-9ea4-0bce7e56f05f.0 x-checkrecipientchecked: true Authentication-Results-Original: intel.com; dkim=none (message not signed) header.d=none;intel.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: 1b226ed3-b888-463b-ea12-08d823475bfd x-ms-traffictypediagnostic: HE1PR08MB2795:|AM0PR08MB4116: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:2657;OLM:2657; x-forefront-prvs: 04583CED1A X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 9OJvlJ0vIo7q7ZUwBilFbBlUUr9OxsGlxRnm9cQKwYrP54A6swd2mlB7Su+EyeoXVXU6xRPxCaAcm/xLPBqmhsaIIIxfjpClB9nHwZqtf/2XztC4afN4nkW4NlFUfl2w7lJM+hFtdT4Du7g77Du6bHo2+nUoojJtM8WBPtAW0rYEhO3DjGX+QRf0Lc6ocfMjlNjCjonIG98UP0lYQ73C3UiRUHWeGXrxfXxYsiPDKIZBIrmwYYiaRf3/yzzJKMJXr5Vi5xmXeW7DfQYTHafGsB5NXaGuEhJvNhAx+zjC/9t4rReg8znpEq9AGUG5Wtpn X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:HE1PR0801MB2025.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(346002)(136003)(376002)(396003)(39860400002)(26005)(66476007)(66446008)(6506007)(64756008)(66946007)(53546011)(186003)(66556008)(2906002)(4326008)(7696005)(8936002)(5660300002)(83380400001)(55016002)(86362001)(76116006)(9686003)(52536014)(8676002)(316002)(478600001)(54906003)(33656002)(110136005)(71200400001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: NW9vZatV3ItpbdJMq8PxOgfnBDKrXU0epg6XT48+uPthoZpeH0xR2592cHQuT0jMaZHhnUEFlxeLbiAtngU/PiNi15aJuLtdpa4/fGl0NtEhHf3djt5owF9jXtKOsbnj3j3obfOsGTNNEQDA7TPEv5YFewzrNHilWIaycgHVmcJkokG+6x0FBCSK3X2w3v6TLmYJJ2OgUJb55ehh+t6HSqQpEXj8UoS4ypi2wGzdbtMDSJuIDjgNNz0Z1ivFfQfAfRcu/FLbIUuAPS0m3v2A8FqUqpKKNB2J8BNN1WbXuy4f5HWhC5pXeo9XCKACRn2zfeZ4G5QPzwaR6kBNrjakLtXpFiXTXrK1rMiGPtxix8YCM09ql1GwN7WCBNgQZnO4wegHYCYKMWjKsXVWD6FTFkXUaxxmMQP/P2TKVKfcFoiUL6Aok9LAZ//vXcLTSVOzcZ5zVuP6GNOyCZOd8rNlkB5STe9HhfKt73CjibfJWtc= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR08MB2795 Original-Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT015.eop-EUR03.prod.protection.outlook.com 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; SFTY:; SFS:(4636009)(396003)(346002)(39860400002)(136003)(376002)(46966005)(33964004)(26005)(36906005)(70586007)(30864003)(53546011)(4326008)(478600001)(6506007)(47076004)(186003)(82310400002)(70206006)(83380400001)(336012)(2906002)(54906003)(9686003)(110136005)(55016002)(316002)(8936002)(52536014)(356005)(86362001)(5660300002)(81166007)(8676002)(82740400003)(33656002)(7696005)(579004); DIR:OUT; SFP:1101; X-MS-Office365-Filtering-Correlation-Id-Prvs: 592f0aa5-9ba1-4490-625c-08d8234756b8 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VIvz4bRad/gXFpdnzP10biRUgsoxiXBXqRcn0xB3brHl3pHk3aYj0/7yyCfBf2+4Q5fEq0S73lA5QvmUVZ6yRezpqBYKbqSGDhH39mx7H5OEuZLwnhd3G6EvE6M6frgXZJkn2mnYeHHRCvDHPqNOGaeb0l1P95d33kGV6AWAvI94A++1YQiXINBWA/nIB48ONnJhN1alcZH1s6TVaxZ6PGSmE11r4f2XaBYBGwPKknrzPlGet4bL/BxYay2mz0zRblaFSJ6JYmUYbSPtp6j3RzMSqJMKldeU0uT7/jefcHKqTJdLZbUV39VtregZ6Ld7WwTUYuoGVquynRr89wD/Dk3w0lO/u27y0MEtcz9pO9CnU0wF4GJABL42jnCy6LWEOyikUHj36OdVN88tdS7H/w== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2020 14:01:06.5082 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1b226ed3-b888-463b-ea12-08d823475bfd 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: AM5EUR03FT015.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4116 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v7 2/3] test/lpm: add LPM RCU integration functional tests 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" DQpGcm9tOiBNZWR2ZWRraW4sIFZsYWRpbWlyIDx2bGFkaW1pci5tZWR2ZWRraW5AaW50ZWwuY29t Pg0KU2VudDogV2VkbmVzZGF5LCBKdWx5IDgsIDIwMjAgODozNyBQTQ0KVG86IFJ1aWZlbmcgV2Fu ZyA8UnVpZmVuZy5XYW5nQGFybS5jb20+OyBCcnVjZSBSaWNoYXJkc29uIDxicnVjZS5yaWNoYXJk c29uQGludGVsLmNvbT4NCkNjOiBkZXZAZHBkay5vcmc7IG1kckBhc2hyb2UuZXU7IGtvbnN0YW50 aW4uYW5hbnlldkBpbnRlbC5jb207IEhvbm5hcHBhIE5hZ2FyYWhhbGxpIDxIb25uYXBwYS5OYWdh cmFoYWxsaUBhcm0uY29tPjsgbmQgPG5kQGFybS5jb20+DQpTdWJqZWN0OiBSZTogW1BBVENIIHY3 IDIvM10gdGVzdC9scG06IGFkZCBMUE0gUkNVIGludGVncmF0aW9uIGZ1bmN0aW9uYWwgdGVzdHMN Cg0KDQpIaSBSdWlmZW5nLA0KDQpKdXN0IGEgZmV3IG5pdHMNCg0KW1J1aWZlbmddIFRoYW5rIHlv dSBmb3IgcmV2aWV3aW5nIHRoaXMgcGF0Y2guDQpPbiAwNy8wNy8yMDIwIDE2OjE1LCBSdWlmZW5n IFdhbmcgd3JvdGU6DQoNCkFkZCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgdGVzdHMgZm9yIEFQSSBy dGVfbHBtX3JjdV9xc2JyX2FkZC4NCg0KQWxzbyB0ZXN0IExQTSBsaWJyYXJ5IGJlaGF2aW9yIHdo ZW4gUkNVIFFTQlIgaXMgZW5hYmxlZC4NCg0KDQoNClNpZ25lZC1vZmYtYnk6IFJ1aWZlbmcgV2Fu ZyA8cnVpZmVuZy53YW5nQGFybS5jb20+PG1haWx0bzpydWlmZW5nLndhbmdAYXJtLmNvbT4NCg0K UmV2aWV3ZWQtYnk6IEdhdmluIEh1IDxnYXZpbi5odUBhcm0uY29tPjxtYWlsdG86Z2F2aW4uaHVA YXJtLmNvbT4NCg0KUmV2aWV3ZWQtYnk6IEhvbm5hcHBhIE5hZ2FyYWhhbGxpIDxob25uYXBwYS5u YWdhcmFoYWxsaUBhcm0uY29tPjxtYWlsdG86aG9ubmFwcGEubmFnYXJhaGFsbGlAYXJtLmNvbT4N Cg0KLS0tDQoNCiBhcHAvdGVzdC90ZXN0X2xwbS5jIHwgMjkxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystDQoNCiAxIGZpbGUgY2hhbmdlZCwgMjkwIGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkNCg0KDQoNCmRpZmYgLS1naXQgYS9hcHAvdGVzdC90ZXN0X2xw bS5jIGIvYXBwL3Rlc3QvdGVzdF9scG0uYw0KDQppbmRleCAzYTNmZDA5N2YuLjkzNzQyZTNjNyAx MDA2NDQNCg0KLS0tIGEvYXBwL3Rlc3QvdGVzdF9scG0uYw0KDQorKysgYi9hcHAvdGVzdC90ZXN0 X2xwbS5jDQoNCkBAIC04LDYgKzgsNyBAQA0KDQoNCg0KICNpbmNsdWRlIDxydGVfaXAuaD4NCg0K ICNpbmNsdWRlIDxydGVfbHBtLmg+DQoNCisjaW5jbHVkZSA8cnRlX21hbGxvYy5oPg0KDQoNCg0K ICNpbmNsdWRlICJ0ZXN0LmgiDQoNCiAjaW5jbHVkZSAidGVzdF94bW10X29wcy5oIg0KDQpAQCAt NDAsNiArNDEsOSBAQCBzdGF0aWMgaW50MzJfdCB0ZXN0MTUodm9pZCk7DQoNCiBzdGF0aWMgaW50 MzJfdCB0ZXN0MTYodm9pZCk7DQoNCiBzdGF0aWMgaW50MzJfdCB0ZXN0MTcodm9pZCk7DQoNCiBz dGF0aWMgaW50MzJfdCB0ZXN0MTgodm9pZCk7DQoNCitzdGF0aWMgaW50MzJfdCB0ZXN0MTkodm9p ZCk7DQoNCitzdGF0aWMgaW50MzJfdCB0ZXN0MjAodm9pZCk7DQoNCitzdGF0aWMgaW50MzJfdCB0 ZXN0MjEodm9pZCk7DQoNCg0KDQogcnRlX2xwbV90ZXN0IHRlc3RzW10gPSB7DQoNCiAvKiBUZXN0 IENhc2VzICovDQoNCkBAIC02MSw3ICs2NSwxMCBAQCBydGVfbHBtX3Rlc3QgdGVzdHNbXSA9IHsN Cg0KICAgICAgICB0ZXN0MTUsDQoNCiAgICAgICAgdGVzdDE2LA0KDQogICAgICAgIHRlc3QxNywN Cg0KLSAgICAgICB0ZXN0MTgNCg0KKyAgICAgICB0ZXN0MTgsDQoNCisgICAgICAgdGVzdDE5LA0K DQorICAgICAgIHRlc3QyMCwNCg0KKyAgICAgICB0ZXN0MjENCg0KIH07DQoNCg0KDQogI2RlZmlu ZSBNQVhfREVQVEggMzINCg0KQEAgLTEyNjUsNiArMTI3MiwyODggQEAgdGVzdDE4KHZvaWQpDQoN CiAgICAgICAgcmV0dXJuIFBBU1M7DQoNCiB9DQoNCg0KDQorLyoNCg0KKyAqIHJ0ZV9scG1fcmN1 X3FzYnJfYWRkIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB0ZXN0cy4NCg0KKyAqICAtIEFkZCBSQ1Ug UVNCUiB2YXJpYWJsZSB0byBMUE0NCg0KKyAqICAtIEFkZCBhbm90aGVyIFJDVSBRU0JSIHZhcmlh YmxlIHRvIExQTQ0KDQorICogIC0gQ2hlY2sgcmV0dXJucw0KDQorICovDQoNCitpbnQzMl90DQoN Cit0ZXN0MTkodm9pZCkNCg0KK3sNCg0KKyAgICAgICBzdHJ1Y3QgcnRlX2xwbSAqbHBtID0gTlVM TDsNCg0KKyAgICAgICBzdHJ1Y3QgcnRlX2xwbV9jb25maWcgY29uZmlnOw0KDQorICAgICAgIHNp emVfdCBzejsNCg0KKyAgICAgICBzdHJ1Y3QgcnRlX3JjdV9xc2JyICpxc3Y7DQoNCisgICAgICAg c3RydWN0IHJ0ZV9yY3VfcXNiciAqcXN2MjsNCg0KKyAgICAgICBpbnQzMl90IHN0YXR1czsNCg0K KyAgICAgICBzdHJ1Y3QgcnRlX2xwbV9yY3VfY29uZmlnIHJjdV9jZmcgPSB7MH07DQoNCisNCg0K KyAgICAgICBjb25maWcubWF4X3J1bGVzID0gTUFYX1JVTEVTOw0KDQorICAgICAgIGNvbmZpZy5u dW1iZXJfdGJsOHMgPSBOVU1CRVJfVEJMOFM7DQoNCisgICAgICAgY29uZmlnLmZsYWdzID0gMDsN Cg0KKw0KDQorICAgICAgIGxwbSA9IHJ0ZV9scG1fY3JlYXRlKF9fZnVuY19fLCBTT0NLRVRfSURf QU5ZLCAmY29uZmlnKTsNCg0KKyAgICAgICBURVNUX0xQTV9BU1NFUlQobHBtICE9IE5VTEwpOw0K DQorDQoNCisgICAgICAgLyogQ3JlYXRlIFJDVSBRU0JSIHZhcmlhYmxlICovDQoNCisgICAgICAg c3ogPSBydGVfcmN1X3FzYnJfZ2V0X21lbXNpemUoUlRFX01BWF9MQ09SRSk7DQoNCisgICAgICAg cXN2ID0gKHN0cnVjdCBydGVfcmN1X3FzYnIgKilydGVfem1hbGxvY19zb2NrZXQoTlVMTCwgc3os DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJURV9DQUNIRV9MSU5F X1NJWkUsIFNPQ0tFVF9JRF9BTlkpOw0KDQorICAgICAgIFRFU1RfTFBNX0FTU0VSVChxc3YgIT0g TlVMTCk7DQoNCisNCg0KKyAgICAgICBzdGF0dXMgPSBydGVfcmN1X3FzYnJfaW5pdChxc3YsIFJU RV9NQVhfTENPUkUpOw0KDQorICAgICAgIFRFU1RfTFBNX0FTU0VSVChzdGF0dXMgPT0gMCk7DQoN CisNCg0KKyAgICAgICByY3VfY2ZnLnYgPSBxc3Y7DQoNCisgICAgICAgLyogSW52YWxpZCBRU0JS IG1vZGUgKi8NCg0KKyAgICAgICByY3VfY2ZnLm1vZGUgPSAyOw0KDQorICAgICAgIHN0YXR1cyA9 IHJ0ZV9scG1fcmN1X3FzYnJfYWRkKGxwbSwgJnJjdV9jZmcsIE5VTEwpOw0KDQorICAgICAgIFRF U1RfTFBNX0FTU0VSVChzdGF0dXMgIT0gMCk7DQoNCisNCg0KKyAgICAgICByY3VfY2ZnLm1vZGUg PSBSVEVfTFBNX1FTQlJfTU9ERV9EUTsNCg0KKyAgICAgICAvKiBBdHRhY2ggUkNVIFFTQlIgdG8g TFBNIHRhYmxlICovDQoNCisgICAgICAgc3RhdHVzID0gcnRlX2xwbV9yY3VfcXNicl9hZGQobHBt LCAmcmN1X2NmZywgTlVMTCk7DQoNCisgICAgICAgVEVTVF9MUE1fQVNTRVJUKHN0YXR1cyA9PSAw KTsNCg0KKw0KDQorICAgICAgIC8qIENyZWF0ZSBhbmQgYXR0YWNoIGFub3RoZXIgUkNVIFFTQlIg dG8gTFBNIHRhYmxlICovDQoNCisgICAgICAgcXN2MiA9IChzdHJ1Y3QgcnRlX3JjdV9xc2JyICop cnRlX3ptYWxsb2Nfc29ja2V0KE5VTEwsIHN6LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSVEVfQ0FDSEVfTElORV9TSVpFLCBTT0NLRVRfSURfQU5ZKTsNCg0KKyAg ICAgICBURVNUX0xQTV9BU1NFUlQocXN2MiAhPSBOVUxMKTsNCg0KKw0KDQorICAgICAgIHJjdV9j ZmcudiA9IHFzdjI7DQoNCisgICAgICAgcmN1X2NmZy5tb2RlID0gUlRFX0xQTV9RU0JSX01PREVf U1lOQzsNCg0KKyAgICAgICBzdGF0dXMgPSBydGVfbHBtX3JjdV9xc2JyX2FkZChscG0sICZyY3Vf Y2ZnLCBOVUxMKTsNCg0KKyAgICAgICBURVNUX0xQTV9BU1NFUlQoc3RhdHVzICE9IDApOw0KDQor DQoNCisgICAgICAgcnRlX2xwbV9mcmVlKGxwbSk7DQoNCisgICAgICAgcnRlX2ZyZWUocXN2KTsN Cg0KKyAgICAgICBydGVfZnJlZShxc3YyKTsNCg0KKw0KDQorICAgICAgIHJldHVybiBQQVNTOw0K DQorfQ0KDQorDQoNCisvKg0KDQorICogcnRlX2xwbV9yY3VfcXNicl9hZGQgRFEgbW9kZSBmdW5j dGlvbmFsIHRlc3QuDQoNCisgKiBSZWFkZXIgYW5kIHdyaXRlciBhcmUgaW4gdGhlIHNhbWUgdGhy ZWFkIGluIHRoaXMgdGVzdC4NCg0KKyAqICAtIENyZWF0ZSBMUE0gd2hpY2ggc3VwcG9ydHMgMSB0 Ymw4IGdyb3VwIGF0IG1heA0KDQorICogIC0gQWRkIFJDVSBRU0JSIHZhcmlhYmxlIHRvIExQTQ0K DQorICogIC0gQWRkIGEgcnVsZSB3aXRoIGRlcHRoPTI4ICg+IDI0KQ0KDQorICogIC0gUmVnaXN0 ZXIgYSByZWFkZXIgdGhyZWFkIChub3QgYSByZWFsIHRocmVhZCkNCg0KKyAqICAtIFJlYWRlciBs b29rdXAgZXhpc3RpbmcgcnVsZQ0KDQorICogIC0gV3JpdGVyIGRlbGV0ZSB0aGUgcnVsZQ0KDQor ICogIC0gUmVhZGVyIGxvb2t1cCB0aGUgcnVsZQ0KDQorICogIC0gV3JpdGVyIHJlLWFkZCB0aGUg cnVsZSAobm8gYXZhaWxhYmxlIHRibDggZ3JvdXApDQoNCisgKiAgLSBSZWFkZXIgcmVwb3J0IHF1 aWVzY2VudCBzdGF0ZSBhbmQgdW5yZWdpc3Rlcg0KDQorICogIC0gV3JpdGVyIHJlLWFkZCB0aGUg cnVsZQ0KDQorICogIC0gUmVhZGVyIGxvb2t1cCB0aGUgcnVsZQ0KDQorICovDQoNCitpbnQzMl90 DQoNCit0ZXN0MjAodm9pZCkNCg0KK3sNCg0KKyAgICAgICBzdHJ1Y3QgcnRlX2xwbSAqbHBtID0g TlVMTDsNCg0KKyAgICAgICBzdHJ1Y3QgcnRlX2xwbV9jb25maWcgY29uZmlnOw0KDQorICAgICAg IHNpemVfdCBzejsNCg0KKyAgICAgICBzdHJ1Y3QgcnRlX3JjdV9xc2JyICpxc3Y7DQoNCisgICAg ICAgaW50MzJfdCBzdGF0dXM7DQoNCisgICAgICAgdWludDMyX3QgaXAsIG5leHRfaG9wLCBuZXh0 X2hvcF9yZXR1cm47DQoNCisgICAgICAgdWludDhfdCBkZXB0aDsNCg0KKyAgICAgICBzdHJ1Y3Qg cnRlX2xwbV9yY3VfY29uZmlnIHJjdV9jZmcgPSB7MH07DQoNCisNCg0KKyAgICAgICBjb25maWcu bWF4X3J1bGVzID0gTUFYX1JVTEVTOw0KDQorICAgICAgIGNvbmZpZy5udW1iZXJfdGJsOHMgPSAx Ow0KDQorICAgICAgIGNvbmZpZy5mbGFncyA9IDA7DQoNCisNCg0KKyAgICAgICBscG0gPSBydGVf bHBtX2NyZWF0ZShfX2Z1bmNfXywgU09DS0VUX0lEX0FOWSwgJmNvbmZpZyk7DQoNCisgICAgICAg VEVTVF9MUE1fQVNTRVJUKGxwbSAhPSBOVUxMKTsNCg0KKw0KDQorICAgICAgIC8qIENyZWF0ZSBS Q1UgUVNCUiB2YXJpYWJsZSAqLw0KDQorICAgICAgIHN6ID0gcnRlX3JjdV9xc2JyX2dldF9tZW1z aXplKDEpOw0KDQorICAgICAgIHFzdiA9IChzdHJ1Y3QgcnRlX3JjdV9xc2JyICopcnRlX3ptYWxs b2Nfc29ja2V0KE5VTEwsIHN6LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRF X0NBQ0hFX0xJTkVfU0laRSwgU09DS0VUX0lEX0FOWSk7DQoNCisgICAgICAgVEVTVF9MUE1fQVNT RVJUKHFzdiAhPSBOVUxMKTsNCg0KKw0KDQorICAgICAgIHN0YXR1cyA9IHJ0ZV9yY3VfcXNicl9p bml0KHFzdiwgMSk7DQoNCisgICAgICAgVEVTVF9MUE1fQVNTRVJUKHN0YXR1cyA9PSAwKTsNCg0K Kw0KDQorICAgICAgIHJjdV9jZmcudiA9IHFzdjsNCg0KKyAgICAgICByY3VfY2ZnLm1vZGUgPSBS VEVfTFBNX1FTQlJfTU9ERV9EUTsNCg0KKyAgICAgICAvKiBBdHRhY2ggUkNVIFFTQlIgdG8gTFBN IHRhYmxlICovDQoNCisgICAgICAgc3RhdHVzID0gcnRlX2xwbV9yY3VfcXNicl9hZGQobHBtLCAm cmN1X2NmZywgTlVMTCk7DQoNCisgICAgICAgVEVTVF9MUE1fQVNTRVJUKHN0YXR1cyA9PSAwKTsN Cg0KKw0KDQorICAgICAgIGlwID0gUlRFX0lQVjQoMTkyLCAxOCwgMTAwLCAxMDApOw0KDQoNCg0K VGhpcyBpcyBhIGdsb2JhbGx5IHJvdXRlZCBpcCwgaXQgbG9va3MgbGlrZSB5b3UgbWlzc2VkICI2 IiBpbiB0aGUgc2Vjb25kIG9jdGV0LiBIZXJlIGl0IGlzIGJldHRlciB0byB1c2UgdGhlIHJmYzU3 MzcgYWRkcmVzcywgcmF0aGVyIHRoYW4gcmZjMTkxOC4NCg0KW1J1aWZlbmddIEFncmVlZC4gVXNl IHJlc2VydmVkIGFkZHJlc3MgaXMgYmV0dGVyLiBXaWxsIGNoYW5nZSB0byByZmM1NzM3IGFkZHJl c3MgaW4gbmV4dCB2ZXJzaW9uLg0KDQoNCg0KKyAgICAgICBkZXB0aCA9IDI4Ow0KDQorICAgICAg IG5leHRfaG9wID0gMTsNCg0KKyAgICAgICBzdGF0dXMgPSBydGVfbHBtX2FkZChscG0sIGlwLCBk ZXB0aCwgbmV4dF9ob3ApOw0KDQorICAgICAgIFRFU1RfTFBNX0FTU0VSVChzdGF0dXMgPT0gMCk7 DQoNCisgICAgICAgVEVTVF9MUE1fQVNTRVJUKGxwbS0+dGJsMjRbaXA+PjhdLnZhbGlkX2dyb3Vw KTsNCg0KKw0KDQorICAgICAgIC8qIFJlZ2lzdGVyIHBzZXVkbyByZWFkZXIgKi8NCg0KKyAgICAg ICBzdGF0dXMgPSBydGVfcmN1X3FzYnJfdGhyZWFkX3JlZ2lzdGVyKHFzdiwgMCk7DQoNCisgICAg ICAgVEVTVF9MUE1fQVNTRVJUKHN0YXR1cyA9PSAwKTsNCg0KKyAgICAgICBydGVfcmN1X3FzYnJf dGhyZWFkX29ubGluZShxc3YsIDApOw0KDQorDQoNCisgICAgICAgc3RhdHVzID0gcnRlX2xwbV9s b29rdXAobHBtLCBpcCwgJm5leHRfaG9wX3JldHVybik7DQoNCisgICAgICAgVEVTVF9MUE1fQVNT RVJUKHN0YXR1cyA9PSAwKTsNCg0KKyAgICAgICBURVNUX0xQTV9BU1NFUlQobmV4dF9ob3BfcmV0 dXJuID09IG5leHRfaG9wKTsNCg0KKw0KDQorICAgICAgIC8qIFdyaXRlciB1cGRhdGUgKi8NCg0K KyAgICAgICBzdGF0dXMgPSBydGVfbHBtX2RlbGV0ZShscG0sIGlwLCBkZXB0aCk7DQoNCisgICAg ICAgVEVTVF9MUE1fQVNTRVJUKHN0YXR1cyA9PSAwKTsNCg0KKyAgICAgICBURVNUX0xQTV9BU1NF UlQoIWxwbS0+dGJsMjRbaXA+PjhdLnZhbGlkKTsNCg0KKw0KDQorICAgICAgIHN0YXR1cyA9IHJ0 ZV9scG1fbG9va3VwKGxwbSwgaXAsICZuZXh0X2hvcF9yZXR1cm4pOw0KDQorICAgICAgIFRFU1Rf TFBNX0FTU0VSVChzdGF0dXMgIT0gMCk7DQoNCisNCg0KKyAgICAgICBzdGF0dXMgPSBydGVfbHBt X2FkZChscG0sIGlwLCBkZXB0aCwgbmV4dF9ob3ApOw0KDQorICAgICAgIFRFU1RfTFBNX0FTU0VS VChzdGF0dXMgIT0gMCk7DQoNCisNCg0KKyAgICAgICAvKiBSZWFkZXIgcXVpZXNjZW50ICovDQoN CisgICAgICAgcnRlX3JjdV9xc2JyX3F1aWVzY2VudChxc3YsIDApOw0KDQorDQoNCisgICAgICAg c3RhdHVzID0gcnRlX2xwbV9hZGQobHBtLCBpcCwgZGVwdGgsIG5leHRfaG9wKTsNCg0KKyAgICAg ICBURVNUX0xQTV9BU1NFUlQoc3RhdHVzID09IDApOw0KDQorDQoNCisgICAgICAgcnRlX3JjdV9x c2JyX3RocmVhZF9vZmZsaW5lKHFzdiwgMCk7DQoNCisgICAgICAgc3RhdHVzID0gcnRlX3JjdV9x c2JyX3RocmVhZF91bnJlZ2lzdGVyKHFzdiwgMCk7DQoNCisgICAgICAgVEVTVF9MUE1fQVNTRVJU KHN0YXR1cyA9PSAwKTsNCg0KKw0KDQorICAgICAgIHN0YXR1cyA9IHJ0ZV9scG1fbG9va3VwKGxw bSwgaXAsICZuZXh0X2hvcF9yZXR1cm4pOw0KDQorICAgICAgIFRFU1RfTFBNX0FTU0VSVChzdGF0 dXMgPT0gMCk7DQoNCisgICAgICAgVEVTVF9MUE1fQVNTRVJUKG5leHRfaG9wX3JldHVybiA9PSBu ZXh0X2hvcCk7DQoNCisNCg0KKyAgICAgICBydGVfbHBtX2ZyZWUobHBtKTsNCg0KKyAgICAgICBy dGVfZnJlZShxc3YpOw0KDQorDQoNCisgICAgICAgcmV0dXJuIFBBU1M7DQoNCit9DQoNCisNCg0K K3N0YXRpYyBzdHJ1Y3QgcnRlX2xwbSAqZ19scG07DQoNCitzdGF0aWMgc3RydWN0IHJ0ZV9yY3Vf cXNiciAqZ192Ow0KDQorc3RhdGljIHVpbnQzMl90IGdfaXAgPSBSVEVfSVBWNCgxOTIsIDE4LCAx MDAsIDEwMCk7DQoNCg0KDQpTYW1lIGhlcmUgYXMgYWJvdmUNCg0KW1J1aWZlbmddIFdpbGwgY2hh bmdlLiBUaGFuayB5b3UuDQoNCg0KDQorc3RhdGljIHZvbGF0aWxlIHVpbnQ4X3Qgd3JpdGVyX2Rv bmU7DQoNCisvKiBSZXBvcnQgcXVpZXNjZW50IHN0YXRlIGludGVydmFsIGV2ZXJ5IDEwMjQgbG9v a3Vwcy4gTGFyZ2VyIGNyaXRpY2FsDQoNCisgKiBzZWN0aW9ucyBpbiByZWFkZXIgd2lsbCByZXN1 bHQgaW4gd3JpdGVyIHBvbGxpbmcgbXVsdGlwbGUgdGltZXMuDQoNCisgKi8NCg0KKyNkZWZpbmUg UVNCUl9SRVBPUlRJTkdfSU5URVJWQUwgMTAyNA0KDQorI2RlZmluZSBXUklURVJfSVRFUkFUSU9O UyAgICAgNTEyDQoNCisNCg0KKy8qDQoNCisgKiBSZWFkZXIgdGhyZWFkIHVzaW5nIHJ0ZV9scG0g ZGF0YSBzdHJ1Y3R1cmUgd2l0aCBSQ1UuDQoNCisgKi8NCg0KK3N0YXRpYyBpbnQNCg0KK3Rlc3Rf bHBtX3JjdV9xc2JyX3JlYWRlcih2b2lkICphcmcpDQoNCit7DQoNCisgICAgICAgaW50IGk7DQoN CisgICAgICAgdWludDMyX3QgbmV4dF9ob3BfcmV0dXJuID0gMDsNCg0KKw0KDQorICAgICAgIFJU RV9TRVRfVVNFRChhcmcpOw0KDQorICAgICAgIC8qIFJlZ2lzdGVyIHRoaXMgdGhyZWFkIHRvIHJl cG9ydCBxdWllc2NlbnQgc3RhdGUgKi8NCg0KKyAgICAgICBydGVfcmN1X3FzYnJfdGhyZWFkX3Jl Z2lzdGVyKGdfdiwgMCk7DQoNCisgICAgICAgcnRlX3JjdV9xc2JyX3RocmVhZF9vbmxpbmUoZ192 LCAwKTsNCg0KKw0KDQorICAgICAgIGRvIHsNCg0KKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBRU0JSX1JFUE9SVElOR19JTlRFUlZBTDsgaSsrKQ0KDQorICAgICAgICAgICAgICAgICAg ICAgICBydGVfbHBtX2xvb2t1cChnX2xwbSwgZ19pcCwgJm5leHRfaG9wX3JldHVybik7DQoNCisN Cg0KKyAgICAgICAgICAgICAgIC8qIFVwZGF0ZSBxdWllc2NlbnQgc3RhdGUgKi8NCg0KKyAgICAg ICAgICAgICAgIHJ0ZV9yY3VfcXNicl9xdWllc2NlbnQoZ192LCAwKTsNCg0KKyAgICAgICB9IHdo aWxlICghd3JpdGVyX2RvbmUpOw0KDQorDQoNCisgICAgICAgcnRlX3JjdV9xc2JyX3RocmVhZF9v ZmZsaW5lKGdfdiwgMCk7DQoNCisgICAgICAgcnRlX3JjdV9xc2JyX3RocmVhZF91bnJlZ2lzdGVy KGdfdiwgMCk7DQoNCisNCg0KKyAgICAgICByZXR1cm4gMDsNCg0KK30NCg0KKw0KDQorLyoNCg0K KyAqIHJ0ZV9scG1fcmN1X3FzYnJfYWRkIHN5bmMgbW9kZSBmdW5jdGlvbmFsIHRlc3QuDQoNCisg KiAxIFJlYWRlciBhbmQgMSB3cml0ZXIuIFRoZXkgY2Fubm90IGJlIGluIHRoZSBzYW1lIHRocmVh ZCBpbiB0aGlzIHRlc3QuDQoNCisgKiAgLSBDcmVhdGUgTFBNIHdoaWNoIHN1cHBvcnRzIDEgdGJs OCBncm91cCBhdCBtYXgNCg0KKyAqICAtIEFkZCBSQ1UgUVNCUiB2YXJpYWJsZSB3aXRoIHN5bmMg bW9kZSB0byBMUE0NCg0KKyAqICAtIFJlZ2lzdGVyIGEgcmVhZGVyIHRocmVhZC4gUmVhZGVyIGtl ZXBzIGxvb2tpbmcgdXAgYSBzcGVjaWZpYyBydWxlLg0KDQorICogIC0gV3JpdGVyIGtlZXBzIGFk ZGluZyBhbmQgZGVsZXRpbmcgYSBzcGVjaWZpYyBydWxlIHdpdGggZGVwdGg9MjggKD4gMjQpDQoN CisgKi8NCg0KK2ludDMyX3QNCg0KK3Rlc3QyMSh2b2lkKQ0KDQorew0KDQorICAgICAgIHN0cnVj dCBydGVfbHBtX2NvbmZpZyBjb25maWc7DQoNCisgICAgICAgc2l6ZV90IHN6Ow0KDQorICAgICAg IGludDMyX3Qgc3RhdHVzOw0KDQorICAgICAgIHVpbnQzMl90IGksIG5leHRfaG9wOw0KDQorICAg ICAgIHVpbnQ4X3QgZGVwdGg7DQoNCisgICAgICAgc3RydWN0IHJ0ZV9scG1fcmN1X2NvbmZpZyBy Y3VfY2ZnID0gezB9Ow0KDQorDQoNCisgICAgICAgaWYgKHJ0ZV9sY29yZV9jb3VudCgpIDwgMikg ew0KDQorICAgICAgICAgICAgICAgcHJpbnRmKCJOb3QgZW5vdWdoIGNvcmVzIGZvciAlcywgZXhw ZWN0aW5nIGF0IGxlYXN0IDJcbiIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19f KTsNCg0KKyAgICAgICAgICAgICAgIHJldHVybiBURVNUX1NLSVBQRUQ7DQoNCisgICAgICAgfQ0K DQorDQoNCisgICAgICAgY29uZmlnLm1heF9ydWxlcyA9IE1BWF9SVUxFUzsNCg0KKyAgICAgICBj b25maWcubnVtYmVyX3RibDhzID0gMTsNCg0KKyAgICAgICBjb25maWcuZmxhZ3MgPSAwOw0KDQor DQoNCisgICAgICAgZ19scG0gPSBydGVfbHBtX2NyZWF0ZShfX2Z1bmNfXywgU09DS0VUX0lEX0FO WSwgJmNvbmZpZyk7DQoNCisgICAgICAgVEVTVF9MUE1fQVNTRVJUKGdfbHBtICE9IE5VTEwpOw0K DQorDQoNCisgICAgICAgLyogQ3JlYXRlIFJDVSBRU0JSIHZhcmlhYmxlICovDQoNCisgICAgICAg c3ogPSBydGVfcmN1X3FzYnJfZ2V0X21lbXNpemUoMSk7DQoNCisgICAgICAgZ192ID0gKHN0cnVj dCBydGVfcmN1X3FzYnIgKilydGVfem1hbGxvY19zb2NrZXQoTlVMTCwgc3osDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSVEVfQ0FDSEVfTElORV9TSVpFLCBTT0NLRVRfSURfQU5Z KTsNCg0KKyAgICAgICBURVNUX0xQTV9BU1NFUlQoZ192ICE9IE5VTEwpOw0KDQorDQoNCisgICAg ICAgc3RhdHVzID0gcnRlX3JjdV9xc2JyX2luaXQoZ192LCAxKTsNCg0KKyAgICAgICBURVNUX0xQ TV9BU1NFUlQoc3RhdHVzID09IDApOw0KDQorDQoNCisgICAgICAgcmN1X2NmZy52ID0gZ192Ow0K DQorICAgICAgIHJjdV9jZmcubW9kZSA9IFJURV9MUE1fUVNCUl9NT0RFX1NZTkM7DQoNCisgICAg ICAgLyogQXR0YWNoIFJDVSBRU0JSIHRvIExQTSB0YWJsZSAqLw0KDQorICAgICAgIHN0YXR1cyA9 IHJ0ZV9scG1fcmN1X3FzYnJfYWRkKGdfbHBtLCAmcmN1X2NmZywgTlVMTCk7DQoNCisgICAgICAg VEVTVF9MUE1fQVNTRVJUKHN0YXR1cyA9PSAwKTsNCg0KKw0KDQorICAgICAgIHdyaXRlcl9kb25l ID0gMDsNCg0KKyAgICAgICAvKiBMYXVuY2ggcmVhZGVyIHRocmVhZCAqLw0KDQorICAgICAgIHJ0 ZV9lYWxfcmVtb3RlX2xhdW5jaCh0ZXN0X2xwbV9yY3VfcXNicl9yZWFkZXIsIE5VTEwsDQoNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGVfZ2V0X25leHRfbGNvcmUoLTEsIDEsIDAp KTsNCg0KKw0KDQorICAgICAgIGRlcHRoID0gMjg7DQoNCisgICAgICAgbmV4dF9ob3AgPSAxOw0K DQorICAgICAgIHN0YXR1cyA9IHJ0ZV9scG1fYWRkKGdfbHBtLCBnX2lwLCBkZXB0aCwgbmV4dF9o b3ApOw0KDQorICAgICAgIGlmIChzdGF0dXMgIT0gMCkgew0KDQorICAgICAgICAgICAgICAgcHJp bnRmKCIlczogRmFpbGVkIHRvIGFkZCBydWxlXG4iLCBfX2Z1bmNfXyk7DQoNCisgICAgICAgICAg ICAgICBnb3RvIGVycm9yOw0KDQorICAgICAgIH0NCg0KKw0KDQorICAgICAgIC8qIFdyaXRlciB1 cGRhdGUgKi8NCg0KKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgV1JJVEVSX0lURVJBVElPTlM7IGkr Kykgew0KDQorICAgICAgICAgICAgICAgc3RhdHVzID0gcnRlX2xwbV9kZWxldGUoZ19scG0sIGdf aXAsIGRlcHRoKTsNCg0KKyAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkgew0KDQorICAg ICAgICAgICAgICAgICAgICAgICBwcmludGYoIiVzOiBGYWlsZWQgdG8gZGVsZXRlIHJ1bGUgYXQg aXRlcmF0aW9uICVkXG4iLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5j X18sIGkpOw0KDQorICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOw0KDQorICAgICAg ICAgICAgICAgfQ0KDQorDQoNCisgICAgICAgICAgICAgICBzdGF0dXMgPSBydGVfbHBtX2FkZChn X2xwbSwgZ19pcCwgZGVwdGgsIG5leHRfaG9wKTsNCg0KKyAgICAgICAgICAgICAgIGlmIChzdGF0 dXMgIT0gMCkgew0KDQorICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiVzOiBGYWlsZWQg dG8gYWRkIHJ1bGUgYXQgaXRlcmF0aW9uICVkXG4iLA0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgX19mdW5jX18sIGkpOw0KDQorICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVy cm9yOw0KDQorICAgICAgICAgICAgICAgfQ0KDQorICAgICAgIH0NCg0KKw0KDQorZXJyb3I6DQoN CisgICAgICAgd3JpdGVyX2RvbmUgPSAxOw0KDQorICAgICAgIC8qIFdhaXQgdW50aWwgcmVhZGVy IGV4aXRlZC4gKi8NCg0KKyAgICAgICBydGVfZWFsX21wX3dhaXRfbGNvcmUoKTsNCg0KKw0KDQor ICAgICAgIHJ0ZV9scG1fZnJlZShnX2xwbSk7DQoNCisgICAgICAgcnRlX2ZyZWUoZ192KTsNCg0K Kw0KDQorICAgICAgIHJldHVybiAoc3RhdHVzID09IDApID8gUEFTUyA6IC0xOw0KDQorfQ0KDQor DQoNCiAvKg0KDQogICogRG8gYWxsIHVuaXQgdGVzdHMuDQoNCiAgKi8NCg0KDQoNCkFja2VkLWJ5 OiBWbGFkaW1pciBNZWR2ZWRraW4gPHZsYWRpbWlyLm1lZHZlZGtpbkBpbnRlbC5jb20+PG1haWx0 bzp2bGFkaW1pci5tZWR2ZWRraW5AaW50ZWwuY29tPg0KDQoNCg0KDQoNCg0KDQotLQ0KDQpSZWdh cmRzLA0KDQpWbGFkaW1pcg0K