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 303CAA0A0E; Wed, 3 Feb 2021 17:25:00 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CEA9224064B; Wed, 3 Feb 2021 17:24:59 +0100 (CET) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50085.outbound.protection.outlook.com [40.107.5.85]) by mails.dpdk.org (Postfix) with ESMTP id 6133C240649 for ; Wed, 3 Feb 2021 17:24:58 +0100 (CET) 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=Ma2kO9ROFrkcoYPu0JLOIaAMXuhglF5KcJ4bpnL+dAQ=; b=1ykJCT3c4J8d4zIgoobaqzQ1lnWOcpLX9//If6i++Y5sGnJ6lXJV4XICb/0/R/Gka4XwlXJLAaCt61brtZpmKeunY4ZkEYw6Ep1cfihpWgDrQW3XtJ/REUaXs8+E+xA/uS5kEfrXFLMXDFRExEGJZ3of5md478swVLjEG1mgS2I= Received: from AM6P194CA0105.EURP194.PROD.OUTLOOK.COM (2603:10a6:209:8f::46) by AM8PR08MB6369.eurprd08.prod.outlook.com (2603:10a6:20b:354::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3805.19; Wed, 3 Feb 2021 16:24:56 +0000 Received: from AM5EUR03FT024.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:8f:cafe::c) by AM6P194CA0105.outlook.office365.com (2603:10a6:209:8f::46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3825.17 via Frontend Transport; Wed, 3 Feb 2021 16:24:56 +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=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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT024.mail.protection.outlook.com (10.152.16.175) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.11 via Frontend Transport; Wed, 3 Feb 2021 16:24:56 +0000 Received: ("Tessian outbound 8418c949a3fa:v71"); Wed, 03 Feb 2021 16:24:56 +0000 X-CR-MTA-TID: 64aa7808 Received: from b6924117af74.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id FF2E951D-A93A-430A-887B-D51402C7D76D.1; Wed, 03 Feb 2021 16:24:50 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id b6924117af74.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 03 Feb 2021 16:24:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QLR2YemCrd+DmUYNeKYskHr6oh1LKyeYfZSuLBY3lQbplB8hibfVnDxqiUNcG1FazEDJ3UJ3kNgbf/zGnfzNJDtPqAm4DrzplHbsDzNjo0oGrAmonitb/YMkRuUWMILm+HNHLjjk6Fqzb0pM2pX+RigB/nLKDBX5YmDMes+2ItJZuZjgBVDivECQKd5UDkKaZ3T9TZ39s3gAAWivudhIPLREqH8ds5Sr4ZbskolqBKAyYUg24aO6vpsZRXsvLcFtMjpHljisVLnIBDVhW8mHhm8yUCBu0dPJuaa4BMveu2v56hpaYzxexoC8L9zhfZ9FeGslxCdHZwUX8cv5F094cQ== 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=Ma2kO9ROFrkcoYPu0JLOIaAMXuhglF5KcJ4bpnL+dAQ=; b=Rl7ErBwPxDG5butGCHAN5lrsbFAe1hKGiW+F1mUaJLwbWI92aM2jL7d8g+B9YH7VPvlo2DyWF0eL/3P9OVPPzi9lDmjjAwbnYUR1SsOBxPQMXxeuPBucX+2o6o68Q4on3zoq5MD1g3V9+9bG86CqtgbyaQgmTme0uygsHfWho/BBZfCt5tQFY/ymGv9YvXWa60XBwTyEKJ4py6f+vmgFEr8pSxa6oPL06BFKTLr+J+65M40C4C52eZchGNR/bSjOx7hl5CnGi2e0pGLsZR5tNq6oWWx8iM3hUeXWFbuTTrAnym9WFRjPTpoxz4u+9Mc7HnNiGSOQSO6+OSR5Q+ldMg== 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=Ma2kO9ROFrkcoYPu0JLOIaAMXuhglF5KcJ4bpnL+dAQ=; b=1ykJCT3c4J8d4zIgoobaqzQ1lnWOcpLX9//If6i++Y5sGnJ6lXJV4XICb/0/R/Gka4XwlXJLAaCt61brtZpmKeunY4ZkEYw6Ep1cfihpWgDrQW3XtJ/REUaXs8+E+xA/uS5kEfrXFLMXDFRExEGJZ3of5md478swVLjEG1mgS2I= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by DB6PR08MB2647.eurprd08.prod.outlook.com (2603:10a6:6:22::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3805.17; Wed, 3 Feb 2021 16:24:33 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::cbb:4373:1761:19b1]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::cbb:4373:1761:19b1%6]) with mapi id 15.20.3805.027; Wed, 3 Feb 2021 16:24:33 +0000 From: Honnappa Nagarahalli To: "Ananyev, Konstantin" , Feifei Wang , Stephen Hemminger CC: "dev@dpdk.org" , nd , Ruifeng Wang , Honnappa Nagarahalli , nd Thread-Topic: [dpdk-dev] [PATCH v1 1/2] app/test: remove unnecessary barriers for ring stress test Thread-Index: AQHW2CwVfBkkXDx33kGrB+/tCNr1jaoDD3UAgDk4PFCAAQ/3AIAAjFQAgABihoCAAUrd4IADqTEAgABXm4CAA04t4A== Date: Wed, 3 Feb 2021 16:24:33 +0000 Message-ID: References: <20201222063054.44429-1-feifei.wang2@arm.com> <20201222063054.44429-2-feifei.wang2@arm.com> <20210128205847.509412db@hermes.local> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 66DAE571688AF843AC4DAA7E1A483717.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: [217.140.111.135] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c8795958-1b6c-4c39-02c3-08d8c8603ebd x-ms-traffictypediagnostic: DB6PR08MB2647:|AM8PR08MB6369: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: H0AMwWZoD0gqcqRtNvk2pfsDZgsT1ZWlVrJTLgd+jtEf1uzwOrqRH6jFJTy5WT/yH8aVtGTd+FlVGoDn9B3NS/+XBWckxPbZpBV2/IHvs+B3mNuoSMl4yiMOfYh41HBVgZsjsqX3p2WAUsLrEKnPy/oTs7WKhbAdGiFgpLYF67hMkorhxv7hOvvuKddnTRQ5rJD68OuSIduoQ78zc1Y47kBBRl3owHOz5RxOeIkvka7YInaHrPwC1z91QaFzirfv12tUspoPcsrY674bW09cG3OQYKJnV3FDL6I1WRC/p9dfMK7RWu7+J/4oKmF4PsIEHt4OfK2heykUXwPCk7tQRctnwExt6P3HGxvEChY8mrof0MUcvXTn8F5RXhJGzp7oJOoPwarf6OzqB6wiWZ1Nd0xWPd4f3/y9MtEcp3yc/UW81iFlV31ciEMHQrDR6bKW2du+gyyYq1Gks2GS94RKrGWYPFTyFI1fiI6fLq/1rKH0RSZosv/k9xeCHz8LYjcQrn0x2I6o3oV+BEGPRjR87A== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(396003)(136003)(346002)(376002)(366004)(76116006)(86362001)(66556008)(2906002)(8936002)(110136005)(4326008)(5660300002)(478600001)(64756008)(66476007)(66946007)(6506007)(52536014)(55016002)(54906003)(9686003)(186003)(316002)(7696005)(83380400001)(8676002)(26005)(71200400001)(66446008)(33656002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?RVBQSnFHSU1kc2tnejZLcWlwazlHVlZ5U0w4YXhscWFKdkkyVHZRNFNEcGhK?= =?utf-8?B?RS9qRFpiZGxDNndVZUpoaDdlNitFS3J3a3R5bG4wS3NIZGloNGljaUhvT3VQ?= =?utf-8?B?RzlvS0JSNW1mSmFhOEdaV20zSEpHOHM5dHdXdEFiN0t0U2lraHVYdDROOTNY?= =?utf-8?B?OFVXWkhBTHhIU2NYWVVWbDFlNWUrZHFpMkxIeFNTc3dhVGtBWXF6Vm1BeEpn?= =?utf-8?B?RGU3T1psR2RLbENqZVZZa0dSUzZtWnBzYnVqRVRGNmpZWEZ6UndaVnp5YzlE?= =?utf-8?B?NDVyKytBUE5xNDQ1aUR6NjRRQ3lHd3NvdjNSYlJ2Z2Z2YXZmRmNYNHVvYklk?= =?utf-8?B?MHZlYnRLYVc3ZkdKNFJ3TENVMFZUWVYrT0FTTnR0ajNQOVpDNTF5VldLUTRo?= =?utf-8?B?VnROOWtBQ3BkUkt6c1dIQ3FHTmxoZkFsSVU3ZlV5aUpmL0Nob1o1OWdWZ2ts?= =?utf-8?B?anFoT21zZEZhcTEzQW40TC9wWXlObE5hZE0raDZEK2tBSUllenNMRzI3cndW?= =?utf-8?B?SXp3UWMxazBXanRVa1REV29ka24xdDc5b0p2dzVCZjJhR2FaVHpldXc0am9F?= =?utf-8?B?MEJDaDMwbTgwek05MUxZN1l6a281bHpCd3gyN3JFU0hsS3puelhqK1pZZWo2?= =?utf-8?B?WkRmRmNoVGpOa2hYSmc3WnJFZGdtcG9raG1tOTlWanpSTkVrcXh1bTZ2bktS?= =?utf-8?B?dE1DdDkweDMydy9oVi80ekVnM1JJNkFRdEl4dXY5ajFVcWlxaTg0MUlvMUcr?= =?utf-8?B?REhEc1A1TmhubkxidFRDcTRtOHBTbkF6UGJqOHdIME1uclM1Qkk5N01BdnRQ?= =?utf-8?B?dDk5Rk85NUxFRWlHQ2RST2MreVA0VTdDbWNZZTNSdFpqbE5sU0hKSVlUSkVr?= =?utf-8?B?R3BNL0JPby9mQm5RSnR6SHlaSDFsSjZSeWQ2MFlwS01GYzAra1ZBVGU4ckZW?= =?utf-8?B?SitYd1E4Zk5ZMGMyd1BhcjZZSm92cFZSNENudnpzbTJsRW5IZ21SNVpSSVhv?= =?utf-8?B?TmFodEVMb0NLVGJiNmJUbzhCbFhzcHRxYUExYkoxRDg0Ni9vUXFCVXZVYVFT?= =?utf-8?B?T1BTL2FUeXFVemFJdjdhb1hBOWZHUDhFNDhEMmdQaVM5cVRoTTFxeUJIMGJa?= =?utf-8?B?MWoyblNkT0VwZzlqWFlwVGN4aG1IdEQ4ZXZTaHgvcWk1aVJFczBSdHVjWlJM?= =?utf-8?B?Q2FmcmNWbjRzNVFGTTVYK0Qzak5wYmNzNHVESlk4V1A1bXNPQnlReDRxZ29Q?= =?utf-8?B?YU9tdy9IVEtIS1Q2dFVXNXE3UmYvcEJIajFlL2lRMGdmYnYrSGVtV3YrQU9P?= =?utf-8?B?V2UxUGw0Q1YzZDJQZktUMXBsclduWTY3OEJJRkhzOHlScThsUVpqYkFMV3VH?= =?utf-8?B?VXZsUUs2dDg4YzJNMnFkWDhaT3JKbXBpMmYwM0Z2L0JDUTJWS2UzWWFmTXpm?= =?utf-8?B?SWRQQnVqL3dmNUJsUUxzamI1anVFLzYrV2UwVm1malpRZnhCejJvcWJiOUlL?= =?utf-8?B?MDF3cHNrK3hiSG1NUm9mVVR1dDBsYUpkVW85Y3JYUEdrSythTmJpenpoTjg4?= =?utf-8?B?VmJTVlZzTlFWaHcrQkNvR0piY0dVMDJVNmovZXVWb082TTdrcVpQNlZOWVJ3?= =?utf-8?B?NDMva3Z4cnplZkhJN3Zjb1kzQUhyaUVQU2Eway8wb3gzZGY5Z2dGdlN6QXFI?= =?utf-8?B?RDZoTVEzTzFuMXpNVmlMZVcyUDNldG1UTEJSSnpuVDBwQzJ4T1J2TWdxSThO?= =?utf-8?Q?rHhOFB6j8i/WGXvek9bNsqegJBTw7t8ghqQlWOw?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR08MB2647 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: AM5EUR03FT024.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 18560619-8e8c-46e7-bb62-08d8c86030b7 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: C1C4N+OPr7UKRSVbeeCP+mR9tkpxEJd5OoUZynmM4tXkMit7qt3Uxk0oA0D9zi8IBw3IuCTQhxBWeHJ8Kad9BK4BjMNjhG780T2zS6hOv8WdaA8zLc29dQAfCFBgq/LYjInggcd93vZ3/dRV2IOY7nIi0COZVs1x79TshjxoIiU3VXAAxaXohzx2CPVAa8Wiz/UNQR6sHNSi0fgHq/n7EuJuerqyr9xaY/u56SiZ+7jvo80J8kjm1pWzyzTFT/DuXI69hgHHyappZFmkgyBPb97PsvIPj1urTx+FY2nABWu9ogRvtsOpvjSjYCYAQqB+gGiNi+7cdiJk8dtQPD70mk/L91QsX4H4T7l7UPcdfPU0hIBVf1FCgZxhn+SJiB6jksRdvJDB47tkzkWxg5G7xud28Ok3CRnM8PH0jd8S8aqtPC266VPPCkNXPd0MgpyK//p+hmunBmPn5FbDvesKfjppT84lxcYvHk/Bry98C3jCzaUI0Z1Vs5TWFxIruPum1sqQAsVQlYXBirXzWV8o1IaFtc+R3W9AeGJZEJc+zXCcSFKRAoNulG29ihdHbUJfR/BpUDVvm76vx08FGyxlqb8UMvCVVWgz3r0BhHTchWs8F7tx5DwWzdovmytw0X8ppwbJB2wZjYM1AHLIE5S+uw== 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)(396003)(376002)(39860400002)(346002)(46966006)(36840700001)(52536014)(2906002)(26005)(8676002)(5660300002)(356005)(36860700001)(81166007)(336012)(186003)(4326008)(83380400001)(82740400003)(47076005)(478600001)(110136005)(8936002)(54906003)(316002)(70206006)(70586007)(33656002)(55016002)(9686003)(82310400003)(86362001)(6506007)(7696005); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2021 16:24:56.7175 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c8795958-1b6c-4c39-02c3-08d8c8603ebd 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: AM5EUR03FT024.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6369 Subject: Re: [dpdk-dev] [PATCH v1 1/2] app/test: remove unnecessary barriers for ring stress test 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 Sender: "dev" PHNuaXA+DQoNCj4gDQo+IEhpIEZlaWZlaSwNCj4gDQo+ID4NCj4gPiBIaSwgSG9ubmFwcGEsIEtv bnN0YW50aW4gYW5kIFN0ZXBoZW4NCj4gPg0KPiA+IFRoYW5rcyB2ZXJ5IG11Y2ggZm9yIHlvdXIg YXR0ZW50aW9uIG9mIHRoaXMgcGF0Y2guIEJhc2VkIG9uIHlvdXINCj4gPiBvcGluaW9uLCBSdWlm ZW5nIGFuZCBJIGRpc2N1c3MgYWJvdXQgdGhpcyBhbmQgbWFrZSBhIHN1bW1hcnnvvJoNCj4gPg0K PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fDQo+IF9fX19fX19fX19fXw0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18NCj4gPiBfX18NCj4gPiAJCQkJCQltYWluIHRocmVhZA0KPiAJCQkJd29ya2Vy IHRocmVhZA0KPiA+IHJ0ZV9lYWxfcmVtb3RlX2xhdW5jaDoNCj4gPiAJWyBIb25uYXBwYSBmb2N1 cyBdDQo+ID4NCj4gPiAJVG8gZW5zdXJlIGYgY2FuIGxvYWQgY29ycmVjdCBhcmcsDQo+ID4NCj4g PiAJYXJnIHN0b3JlIHNob3VsZCBiZWZvcmUgZg0KPiA+IAkJCQkJCWxjb3JlX2NvbmZpZ1t3b3Jr ZXJfaWRdLmYgPSBmOw0KPiA+IAkJCQkJCWxjb3JlX2NvbmZpZ1t3b3JrZXJfaWRdLmFyZyA9DQo+ IGFyZzsNCj4gPiAJCQkJCQl3bWIoKT8gb3Igc3RvcmUtcmVsYXNlIG9uIGY/DQo+ID4NCj4gPg0K PiAJZWFsX3RocmVhZF9sb29wOg0KPiA+IAkJCQkJCXBpcGVsaW5lX2NvbW11bmljYXRpb24NCj4g CS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+CXBpcGVsaW5lX2NvbW11bmljYXRpb24NCj4gPg0KPiAJ CQkJaWYgKGxjb3JlX2NvbmZpZ1tsY29yZV9pZF0uZiA9PQ0KPiA+IE5VTEwpDQo+ID4NCj4gCQkJ CXJ0ZV9wYW5pYygiTlVMTCBmdW5jdGlvbg0KPiA+IHBvaW50ZXJcbiIpOw0KPiA+DQo+ID4NCj4g CQkJCWZjdF9hcmcgPQ0KPiA+IGxjb3JlX2NvbmZpZ1tsY29yZV9pZF0uYXJnOw0KPiA+DQo+IAkJ CQlyZXQgPQ0KPiA+IGxjb3JlX2NvbmZpZ1tsY29yZV9pZF0uZihmY3RfYXJnKTsNCj4gPg0KPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f DQo+IF9fX19fX19fX19fXw0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18NCj4gPiBfXw0KPiA+DQo+ID4gdGVzdF9yaW5nX3N0cmVzczoJCQkJd21iKCk/DQo+ ID4gCVsgS29uc3RhbnRpbiBmb2N1cyBdDQo+ID4NCj4gCXRlc3Rfd29ya2VyOg0KPiA+IAlNYWlu IHRocmVhZCBjYW4gdXNlIHdya19jbWQgdG8NCj4gPiAJCQkJCQlXcmtfY21kID1XUktfQ01EX1JV TjsNCj4gCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+CVdya19jbWQgPT0gV1JLX0NNRF9SVU47DQo+ ID4gCWNvbnRyb2wgbXVsdGlwbGUgdGhyZWFkcyB0byBzdGFydCBydW5uaW5nDQo+ID4NCj4gCQkJ CXdtYigpPw0KPiA+IAlhdCB0aGUgc2FtZSB0aW1lIGFzIG11Y2ggYXMgcG9zc2libGUNCj4gPg0K PiAJCQkJcmluZ19kZXF1ZXVlOw0KPiA+DQo+IAkJCQlyaW5nX2VucXVldWU7DQo+ID4gCQkJCQkJ V3JrX2NtZCA9V1JLX0NNRF9TVE9QOw0KPiAJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4JV3JrX2Nt ZCA9PSBXUktfQ01EX1NUT1A7DQo+ID4NCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBfX19fX19fX19fX18NCj4gPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4gX19fDQo+ID4NCj4gPiBy dGVfZWFsX3dhaXRfbGNvcmU6DQo+IAkJCQl3bWIoKQ0KPiA+IAlbIEhvbm5hcHBhIGZvY3VzIF0N Cj4gPiAJCQkJbGNvcmVfY29uZmlnW2xjb3JlX2lkXS5zdGF0ZSA9PSBGSU5JU0hFRA0KPiAJPC0t LS0tLS0tLS0tLS0tLS0tLS0tLQlsY29yZV9jb25maWdbbGNvcmVfaWRdLnN0YXRlID0NCj4gPiBG SU5JU0hFRAlMb2FkLWFjcXVpcmUgYW5kIHN0b3JlLXJlbGVhc2UNCj4gPg0KPiA+IAlhcmUgdXNl ZCBvbiB0aGUgdmFyaWFibGUg4oCcc3RhdGXigJ0NCj4gPiAJCQkJCQlybWIoKTsNCj4gPg0KPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f DQo+IF9fX19fX19fX19fXw0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18NCj4gPiBfX18NCj4gPg0KPiA+IEZyb20gdGhlIHBpY3R1cmUgYWJvdmUsDQo+ID4N Cj4gPiAxLkZpcnN0LCBmb3IgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gcnRlX2VhbF9yZW1vdGVf bGF1bmNoLCBIb25uYXBwYQ0KPiA+IGZvY3VzZXMgb24gdGhhdCwgcGlwZWxpbmVfY29tbXVuaWNh dGlvbiBjYW5ub3QgZW5zdXJlIOKAmGFyZ+KAmSBwYXJhbWV0ZXJzDQo+ID4gaXMgbG9hZGVkIGNv cnJlY3RseSBieSB0aGUgd29ya2VyIHRocmVhZC4NCj4gPiBUaGlzIGlzIGJlY2F1c2UgaW4gd2Vh ayBtZW1vcnkgb3JkZXIgZnJhbWV3b3JrLCBtYXliZSB0aGUgbWFpbiB0aHJlYWQNCj4gPiBhbmQg d29ya2VyIHRocmVhZCBmaXJzdGx5IGZpbmlzaCBwaXBlbGluZSBjb21tdW5pY2F0aW9uLCBhbmQg dGhlbiB0aGUNCj4gPiB3b3JrZXIgdGhyZWFkIHJlY2VpdmUgc2lnbmFsIGFuZCBleGVjdXRlIHRo ZSBmdW5jdGlvbiDigJggZiDigJkuIEhvd2V2ZXIsDQo+ID4gaXQgbWF5YmUgbG9hZCBhIHdyb25n IHZhbHVlIG9mIOKAmGFyZ+KAmSBkdWUgdG8gdGhhdCB0aGUgbWFpbiB0aHJlYWQNCj4gPiBzdG9y ZXMg4oCYYXJn4oCZIGFmdGVyIHBpcGVsaW5lIGNvbW11bmljYXRpb24uIFNvIHdtYiBvciBzdG9y ZV9yZWxlYXNlIGlzDQo+IG5lY2Vzc2FyeSBmb3Ig4oCYYXJn4oCZLg0KPiA+DQo+ID4gMi5TZWNv bmQsIGZvciB0aGUgdXBwZXItbGF5ZXIgdGVzdF9yaW5nX3N0cmVzcywgS29uc3RhbnRpbiBmb3Vj ZXNlIG9uDQo+ID4gdGhhdCwgV2hldGhlciB0aGUgbWFpbiB0aHJlYWQgY2FuIHVzZSDigJh3cmtf Y21k4oCZIHRvIGNvbnRyb2wgbXVsdGlwbGUNCj4gPiB0aHJlYWRzIHRvIHJ1biBhdCB0aGUgc2Ft ZSB0aW1lIGFzIG11Y2ggYXMgcG9zc2libGUuDQo+ID4gQmVjYXVzZSBydGVfZWFsX3JlbW90ZV9s YXVuY2ggb25seSBjYW4gY29tbXVuaWNhdGVzIHdpdGggb25lIHdvcmtlcg0KPiA+IHRocmVhZCBh dCB0aGUgc2FtZSB0aW1lLiBUaGlzIG1lYW5zIHNvbWUgd29ya2VyIHRocmVhZCBtYXliZSBzdGFy dA0KPiA+IHdvcmtpbmcgdmVyeSBlYXJseSBidXQgb3RoZXIgd29ya2VyIHRocmVhZHMgbWF5YmUg bmVlZCB0byB3YWl0IGEgbG9uZw0KPiA+IHRpbWUgdG8gc3RhcnQgd29ya2luZyBpZiAg4oCYd3Jr X2NtZCcgaXMgc3RvcmVkICdSVU4nIGZsYWcgYmVmb3JlDQo+IHJ0ZV9yZW1vdGVfbGF1bmNoLg0K PiA+IEF0IGxhc3QsIGZvciB1bml0IHRlc3QsIHRoaXMgbWF5IGNhdXNlIHRoYXQgdGhlIHRlc3Qg cmVzdWx0cyBhcmUgbm90IHN0YWJsZS4NCj4gPg0KPiA+IDMuVGhpcmQsIGZvciBydGVfZWFsX3dh aXRfbGNvcmUsIEhvbm5hcHBhIGZvY3VzZXMgb24gdGhhdCB0aGUg4oCYc3RhdGXigJkgYXMgYQ0K PiBzeW5jaHJvbm91cyBiYXJpYWJsZSwNCj4gPiB3ZSBzaG91bGQgYWRkIGxvYWQtYWNxdWlyZSBh bmQgc3RvcmUtcmVsZWFzZSBvbiBpdC4gSG93ZXZlciwgdGhlcmUNCj4gPiBoYXZlIGJlZW4gcm1i IGFuZCB3bWIgYWZ0ZXIgYW5kIGJlZm9yZSDigJhzdGF0ZeKAmSwgU28gSeKAmW0gbm90IHN1cmUg d2hldGhlcg0KPiB3ZSBzaG91bGQgcmVwbGFjZSB0aGVtLg0KPiA+DQo+ID4gSW4gc3VtbWFyeSwg SSB0aGluayBIb25uYXBwYSBhbmQgS29uc3RhbnRpbiBoYXZlIGRpZmZlcmVudCBjb25jZXJucy4N Cj4gPiBGb3IgSG9ubmFwcGEsIHdlIGNhbiBhZGQgd21iIG9yIHN0b3JlLXJlbGVhc2UgdG8gZW5z dXJlIHRoZSDigJhhcmfigJkgY2FuDQo+ID4gYmUgbG9hZGVkIGNvcnJlY3RseSBpbiBydGVfZWFs X3JlbW90ZV9sYXVuY2guDQo+ID4gRm9yIEtvbnN0YW50aW4sIHdlIGNhbiBhZGQgd21iIGFuZCBy bWIgdG8gZW5zdXJlIHRoZSBtYWluIHRocmVhZCBjYW4NCj4gPiBjb250cm9sIHRoZSB3b3JrZXIg VGhyZWFkcyB0byBydW4gYXQgdGhlIHNhbWUgdGltZSwgYW5kIHRoZW4gbWFrZSB0aGUNCj4gPiB0 ZXN0IHJlc3VsdHMgbW9yZSBhY2N1cmF0ZSBpbiB0aGUgcmluZ19zdHJlc3NfdGVzdC4NCj4gDQo+ IEFncmVlIHdpdGggYm90aC4NClRoYW5rcyBGZWlmZWksIHVuZGVyc3Rvb2QuIEkgYW0ganVzdCB0 cnlpbmcgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgc2VlIHdoYXQga2luZCBvZiBvcmRlcmluZyBn dWFyYW50ZWVzIHJ0ZV9lYWxfcmVtb3RlX2xhdW5jaCBzaG91bGQgcHJvdmlkZSBzbyB0aGF0IHdl IGRvIG5vdCBoYXZlIHRvIGRlYWwgd2l0aCBhZGRpbmcgYWRkaXRpb25hbCBiYXJyaWVycyBpbiB0 aGUgYXBwbGljYXRpb25zLiBGb3IgZXg6IGlmIHdlIGNhbiBhdm9pZCB0aGUgYmFycmllcnMgYXJv dW5kICd3cmtfY21kJyAoa2luZCBvZiB1c2UgY2FzZXMpIGl0IHdpbGwgYmVuZWZpdCBhbGwgdGhl IGFwcGxpY2F0aW9ucy4NCg0KPiANCj4gPg0KPiA+DQo+ID4gQmVzdCBSZWdhcmRzDQo+ID4gRmVp ZmVpDQo+ID4NCj4gPiA+IC0tLS0t6YKu5Lu25Y6f5Lu2LS0tLS0NCj4gPiA+IOWPkeS7tuS6ujog SG9ubmFwcGEgTmFnYXJhaGFsbGkgPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+DQo+ID4g PiDlj5HpgIHml7bpl7Q6IDIwMjHlubQx5pyIMzDml6UgOToyNA0KPiA+ID4g5pS25Lu25Lq6OiBT dGVwaGVuIEhlbW1pbmdlciA8c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc+DQo+ID4gPiDmioTp gIE6IEFuYW55ZXYsIEtvbnN0YW50aW4gPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+OyBG ZWlmZWkNCj4gV2FuZw0KPiA+ID4gPEZlaWZlaS5XYW5nMkBhcm0uY29tPjsgZGV2QGRwZGsub3Jn OyBuZCA8bmRAYXJtLmNvbT47IFJ1aWZlbmcNCj4gV2FuZw0KPiA+ID4gPFJ1aWZlbmcuV2FuZ0Bh cm0uY29tPjsgSG9ubmFwcGEgTmFnYXJhaGFsbGkNCj4gPiA+IDxIb25uYXBwYS5OYWdhcmFoYWxs aUBhcm0uY29tPjsgbmQgPG5kQGFybS5jb20+DQo+ID4gPiDkuLvpopg6IFJFOiBbZHBkay1kZXZd IFtQQVRDSCB2MSAxLzJdIGFwcC90ZXN0OiByZW1vdmUgdW5uZWNlc3NhcnkNCj4gPiA+IGJhcnJp ZXJzIGZvciByaW5nIHN0cmVzcyB0ZXN0DQo+ID4gPg0KPiA+ID4gPHNuaXA+DQo+ID4gPg0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gSGkg RmVpZmVpLA0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiA+ID4gVGhlIHZhcmlhYmxlICJ3cmtfY21kIiBpcyBhIHNpZ25hbCB0byBjb250cm9sIHRocmVh ZHMNCj4gPiA+ID4gPiA+ID4gPiA+IGZyb20gcnVubmluZyBhbmQgc3RvcHBpbmcuIFdoZW4gd29y a2VyIGxjb3JlcyBsb2FkDQo+ID4gPiA+ID4gPiA+ID4gPiAid3JrX2NtZCA9PQ0KPiA+ID4gPiA+ ID4gV1JLX0NNRF9SVU4iLA0KPiA+ID4gPiA+ID4gPiA+ID4gdGhleQ0KPiA+ID4gPiA+ID4gPiA+ IHN0YXJ0DQo+ID4gPiA+ID4gPiA+ID4gPiBydW5uaW5nIGFuZCB3aGVuIHdvcmtlciBsY29yZXMg bG9hZCAid3JrX2NtZCA9PQ0KPiA+ID4gPiA+ID4gPiA+ID4gV1JLX0NNRF9TVE9QIiwNCj4gPiA+ ID4gPiA+ID4gPiB0aGV5DQo+ID4gPiA+ID4gPiA+ID4gPiBzdG9wLg0KPiA+ID4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gPiA+IEZvciB0aGUgd21iIGluIHRlc3RfbXQxLCBubyBzdG9yaW5n IG9wZXJhdGlvbnMgbXVzdCBrZWVwDQo+ID4gPiA+ID4gPiA+ID4gPiB0aGUgb3JkZXIgYWZ0ZXIg c3RvcmluZyAid3JrX2NtZCIuIFRodXMgdGhlIHdtYiBpcw0KPiB1bm5lY2Vzc2FyeS4NCj4gPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IEkgdGhpbmsgdGhlcmUgaXMgYSBidWcgaW4gbXkg b3JpZ2luYWwgY29kZSwgd2Ugc2hvdWxkIGRvDQo+ID4gPiA+ID4gPiA+ID4gc21wX3dtYigpDQo+ ID4gPiA+ID4gPiA+ID4gKmJlZm9yZSogc2V0dGluZyB3cmtfY21kLCBub3QgYWZ0ZXI6DQo+ID4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgIC8qIGxhdW5jaCBvbiBhbGwgd29y a2VycyAqLw0KPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgUlRFX0xDT1JFX0ZPUkVBQ0hfV09SS0VS KGxjKSB7DQo+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIGFyZ1tsY10ucm5nID0gcjsN Cj4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgYXJnW2xjXS5zdGF0cyA9IGluaXRfc3Rh dDsNCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgcnRlX2VhbF9yZW1vdGVfbGF1bmNo KHRlc3QsICZhcmdbbGNdLCBsYyk7DQo+ID4gPiA+ID4gPiA+ID4gICAgICAgICB9DQo+ID4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgIC8qIHNpZ25hbCB3b3JrZXIgdG8gc3Rh cnQgdGVzdCAqLw0KPiA+ID4gPiA+ID4gPiA+ICsgICAgICBydGVfc21wX3dtYigpOw0KPiA+ID4g PiA+ID4gPiA+ICAgICAgICAgd3JrX2NtZCA9IFdSS19DTURfUlVOOw0KPiA+ID4gPiA+ID4gPiA+ IC0gICAgICAgcnRlX3NtcF93bWIoKTsNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ ICAgICAgICAgdXNsZWVwKHJ1bl90aW1lICogVVNfUEVSX1MpOw0KPiA+ID4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBJIHN0aWxsIHRoaW5rIHdlJ2QgYmV0dGVy IGhhdmUgc29tZSBzeW5jaHJvbmlzYXRpb24gaGVyZS4NCj4gPiA+ID4gPiA+ID4gPiBPdGhlcndp c2Ugd2hhdCB3b3VsZCBwcmV2ZW50IGNvbXBpbGVyIGFuZC9vciBjcHUgdG8gdXBkYXRlDQo+ID4g PiA+ID4gPiA+ID4gd3JrX2NtZCBvdXQgb2Ygb3JkZXIgKGJlZm9yZSBfaW5pdF8gcGhhc2UgaXMg Y29tcGxldGVkKT8NCj4gPiA+ID4gPiA+ID4gPiBXZSBwcm9iYWJseSBjYW4gc2FmZWx5IGFzc3Vt ZSBubyByZW9yZGVyaW5nIGZyb20gdGhlDQo+ID4gPiA+ID4gPiA+ID4gY29tcGlsZXIgaGVyZSwg YXMgd2UgaGF2ZSBmdW5jdGlvbiBjYWxscyBzdHJhaWdodCBiZWZvcmUNCj4gPiA+ID4gPiA+ID4g PiBhbmQgYWZ0ZXIgJ3dya19jbWQgPQ0KPiA+ID4gPiA+ID4gV1JLX0NNRF9SVU47Jw0KPiA+ID4g PiA+ID4gPiA+IEJ1dCBmb3IgY29uc2lzdGVuY3kgYW5kIGVhc2llciBtYWludGVuYW5jZSwgSSBz dGlsbCB0aGluaw0KPiA+ID4gPiA+ID4gPiA+IGl0IGlzIGJldHRlciB0byBoYXZlIHNvbWV0aGlu ZyBoZXJlLCBhZnRlciBhbGwgaXQgaXMgbm90DQo+ID4gPiA+ID4gPiA+ID4gcGVyZm9ybWFuY2Ug Y3JpdGljYWwNCj4gPiA+ID4gcGFzcy4NCj4gPiA+ID4gPiA+ID4gQWdyZWUgdGhhdCB0aGlzIGlz IG5vdCBwZXJmb3JtYW5jZSBjcml0aWNhbC4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g VGhpcyBpcyBtb3JlIGFib3V0IGNvcnJlY3RuZXNzIChhcyB1c3VhbGx5IHBlb3BsZSByZWZlciB0 bw0KPiA+ID4gPiA+ID4gPiBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmNlcHRzKS4gWW91IGNh biByZWZlciB0byB2aWRlbyBbMV0uDQo+ID4gPiA+ID4gPiA+IEVzc2VudGlhbGx5LCB0aGUgcHRo cmVhZF9jcmVhdGUgaGFzICdoYXBwZW5zLWJlZm9yZScgYmVoYXZpb3IuDQo+ID4gPiA+ID4gPiA+ IGkuZS4gYWxsIHRoZSBtZW1vcnkgb3BlcmF0aW9ucyBiZWZvcmUgdGhlIHB0aHJlYWRfY3JlYXRl IGFyZQ0KPiA+ID4gPiA+ID4gPiB2aXNpYmxlIHRvIHRoZSBuZXcNCj4gPiA+ID4gdGhyZWFkLg0K PiA+ID4gPiA+ID4gPiBUaGUNCj4gPiA+ID4gPiA+ID4gcnRlX3NtcF9ybWIoKSBiYXJyaWVyIGlu IHRoZSB0aHJlYWQgZnVuY3Rpb24gaXMgbm90IHJlcXVpcmVkDQo+ID4gPiA+ID4gPiA+IGFzIGl0 IHJlYWRzIHRoZQ0KPiA+ID4gPiA+ID4gZGF0YSB0aGF0IHdhcyBzZXQgYmVmb3JlIHRoZSB0aHJl YWQgd2FzIGxhdW5jaGVkLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IHJ0ZV9lYWxfcmVtb3Rl X2xhdW5jaCgpIGRvZXNuJ3QgY2FsbCBwdGhyZWFkX2NyZWF0ZSgpLg0KPiA+ID4gPiA+ID4gQWxs IGl0IGRvZXMgLSAgdXBkYXRlcyBnbG9iYWwgdmFyaWFibGUgKGxjb3JlX2NvbmZpZykgYW5kDQo+ ID4gPiA+ID4gPiB3cml0ZXMvcmVhZHMgdG8vZnJvbSB0aGUgcGlwZS4NCj4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gVGhhbmtzIGZvciB0aGUgcmVtaW5kZXIg4pi5DQo+ID4gPiA+ID4gSSB0aGluayBy dGVfZWFsX3JlbW90ZV9sYXVuY2ggYW5kIHJ0ZV9lYWxfd2FpdF9sY29yZSBuZWVkIHRvDQo+ID4g PiA+ID4gcHJvdmlkZQ0KPiA+ID4gPiBiZWhhdmlvciBzaW1pbGFyIHRvIHB0aHJlYWRfbGF1bmNo IGFuZCBwdGhyZWFkX2pvaW4gcmVzcGVjdGl2ZWx5Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhl cmUgaXMgdXNlIG9mIHJ0ZV9zbXBfKm1iIGluIHRob3NlIGZ1bmN0aW9ucyBhcyB3ZWxsLiBUaG9z ZQ0KPiA+ID4gPiA+IG5lZWQgdG8gYmUgZml4ZWQNCj4gPiA+ID4gZmlyc3QgYW5kIHRoZW4gbG9v ayBhdCB0aGVzZS4NCj4gPiA+ID4NCj4gPiA+ID4gTG9va3MgbGlrZSB5b3Ugd2FudCBfX2F0b21p Y190aHJlYWRfZmVuY2UoKSBoZXJlLg0KPiA+ID4gPg0KPiA+ID4gSW4gdGhlIHJ0ZV9lYWxfcmVt b3RlX2xhdW5jaCBjYXNlLCBhbGwgdGhlIG1lbW9yeSBvcGVyYXRpb25zIGJlZm9yZQ0KPiA+ID4g dGhlIEFQSSBjYWxsIG5lZWQgdG8gYmUgdmlzaWJsZSB0byB0aGUgd29ya2VyLiBJZiB0aGlzIGlz IHRoZSBvbmx5DQo+ID4gPiByZXF1aXJlbWVudCwgd2UgY2FuIHVzZSB0aGUgZnVuY3Rpb24gcG9p bnRlciBhcyB0aGUgZ3VhcmQgdmFyaWFibGUNCj4gPiA+IGFuZCB1c2Ugc3RvcmUtcmVsZWFzZS4g SW4gdGhlIGVhbF90aHJlYWRfbG9vcCBmdW5jdGlvbiB3ZSBjb3VsZCBkbw0KPiA+ID4gbG9hZC1h Y3F1aXJlIG9uIHRoZSBmdW5jdGlvbiBwb2ludGVyLg0KPiA+ID4NCj4gPiA+IEkgZG8gbm90IHRo aW5rIHRoYXQgdGhlcmUgaXMgYSByZXF1aXJlbWVudCB0byBlbnN1cmUgdGhhdCB0aGUgbWVtb3J5 DQo+ID4gPiBvcGVyYXRpb25zIGFmdGVyIHRoZSBBUEkgY2FsbCBkbyBub3QgaGFwcGVuIGJlZm9y ZSB0aGUgd29ya2VyIHRocmVhZA0KPiA+ID4gc3RhcnRzIHJ1bm5pbmcgdGhlIGZ1bmN0aW9uIChB cyB0aGVyZSBpcyBubyBndWFyYW50ZWUgb24gd2hlbiB0aGUNCj4gPiA+IHdvcmtlciB0aHJlYWQg d2lsbCBydW4uIElmIHRoZSBtYWluIHRocmVhZCBuZWVkcyB0byBrbm93IGlmIHRoZQ0KPiA+ID4g d29ya2VyIHRocmVhZCBpcyBydW5uaW5nIGV4cGxpY2l0IGhhbmQtc2hha2luZyBuZWVkcyB0byBo YXBwZW4pLg0KPiA+ID4NCj4gPiA+IFRoZSBydGVfZWFsX3dhaXRfbGNvcmUgQVBJIG5lZWRzIHRv IGVuc3VyZSB0aGF0IHRoZSBtZW1vcnkNCj4gPiA+IG9wZXJhdGlvbnMgaW4gdGhlIHdvcmtlciBh cmUgdmlzaWJsZSB0byB0aGUgbWFpbi4gcnRlX2VhbF93YWl0X2xjb3JlDQo+ID4gPiBhbmQgZWFs X3RocmVhZF9sb29wIGFyZSBzeW5jaHJvbml6aW5nIHVzaW5nDQo+ID4gPiBsY29yZV9jb25maWdb d29ya2VyX2lkXS5zdGF0ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBlbHNlDQo+ID4gPiAn c3RhdGUnIGlzIHVzZWQgZm9yLiBJZiB0aGVyZSBhcmUgbm8gaXNzdWVzLCB3ZSBjYW4gZG8gYSBz dG9yZS1yZWxlYXNlIG9uDQo+ICdzdGF0ZScgaW4gZWFsX3RocmVhZF9sb29wIGFuZCBhIGxvYWQt YWNxdWlyZSBpbiBydGVfZWFsX3dhaXRfbGNvcmUuDQo+ID4gPg0KPiA+ID4gU28sIHdlIGRvIG5v dCBoYXZlIHRvIHVzZSB0aGUgX19hdG9taWNfdGhyZWFkX2ZlbmNlLg0KPiA+ID4NCg0K