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 883D8A0559; Fri, 10 Jun 2022 04:22:05 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3EEDE40689; Fri, 10 Jun 2022 04:22:05 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2061.outbound.protection.outlook.com [40.107.220.61]) by mails.dpdk.org (Postfix) with ESMTP id 980FD40221 for ; Fri, 10 Jun 2022 04:22:03 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cb5t6YwA4cRi5Wn4/x7H0DoI1wttvYogv14MzeV421db7JAogXmzFSwN3PFQVHpRbeJCT4SpI9rZLv6wrledjJ7cbc7b6Cq5Z2Y9DXc5100Tr+9NcbNqIkInWvW7Aj/7lz91245XRSOoOGb/KQQ2PRKsnl0rc+e+hC4cGAi9D+vr72iu8ur9sQbF/NpBZ+AuKEbpgk499urY6WFNREn+VHXPmUlioftwakS5AP3zy/FzCQpo7MPiJ4g5qt/AEg4pvwwnz3cm1wFdkLOK+xXaeFOdHyIpjBrzGevI7MF763KlHJeGtbREq48p06bPW2/z5jXLXE8x++dJjoZQfMP3Iw== 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=pYdukQut+CJloyYqzsrLIp03HXqcpJQe65ruyi19LTQ=; b=nIjeSZuXFgyUPPkCbvHcpjC3PDbVYH7T6+XON/z14Mu+kEC5o6MbE30h3OQwH9nkFZ2bF4Uwwjv/g+Q8t+vKhESZCs3IWt8vP19pbfY8Qdfn/ZmdW+mQ5Q67WkdcX3udiLcvVyBslrJ+a2J+w2F6x9xZ2JJlbr3NPM5K6M5Ks/B0KevdGjODLPtjiCE05Se1w1NaeoJ8dYrplWe0n5kVq0IKZKXV+dfcMh+BxdMose9RziVEUqT4VyErBPGY5AIeUgXsIQG/bnnLsx6bfyuL1Icii/mz/qUnHTOIkmGnsN4DMvlIne5DLlgYamLy+fR2I7TylM+PxwThMQUTi+PUnw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pYdukQut+CJloyYqzsrLIp03HXqcpJQe65ruyi19LTQ=; b=JufwElZywJHWyT2ErhzSUC8osBIImi6PXvFXRUwzHUEzOxP2wPyp2H5Hje52gOghpNpWbPJ2lshNwTNqARso7AUuJvDeBnUkTi1CaO2UllFA+VSYKyxW7gZyf7OXjEZaGWyRkZDXdM/LJ5Sk0s9L38pPEKOZNZXTeO2tpGxoUz1AlPiTu+OFAfRTfuVFMeZDoAwuUUb1noaBByjMjkBe8LM//3fpHiAYAzC97U0pY1aZcWbjGvP+TWQEMQrHGSERSZRuHS+nlHw5GKHqYZQhg9W3x1c4afG2v3vwcKYyYOiK0niJHHtq9GE2qdpHYF32vcDIt+RemTw1dnLITvS6OQ== Received: from MN2PR12MB3647.namprd12.prod.outlook.com (2603:10b6:208:c4::17) by BY5PR12MB3972.namprd12.prod.outlook.com (2603:10b6:a03:1a8::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.13; Fri, 10 Jun 2022 02:22:01 +0000 Received: from MN2PR12MB3647.namprd12.prod.outlook.com ([fe80::d4b6:b1d7:8090:98b9]) by MN2PR12MB3647.namprd12.prod.outlook.com ([fe80::d4b6:b1d7:8090:98b9%6]) with mapi id 15.20.5314.019; Fri, 10 Jun 2022 02:22:01 +0000 From: Spike Du To: Andrew Rybchenko , Matan Azrad , Slava Ovsiienko , Ori Kam , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , Xiaoyun Li , Aman Singh , Yuying Zhang CC: "stephen@networkplumber.org" , "mb@smartsharesystems.com" , "dev@dpdk.org" , Raslan Darawsheh Subject: RE: [PATCH v5 7/7] app/testpmd: add Host Shaper command Thread-Topic: [PATCH v5 7/7] app/testpmd: add Host Shaper command Thread-Index: AQHYe9ZDG50M4KralE2K1NZfi3B6sa1H6X3g Date: Fri, 10 Jun 2022 02:22:01 +0000 Message-ID: References: <20220603124821.1148119-1-spiked@nvidia.com> <20220607125942.241379-1-spiked@nvidia.com> <20220607125942.241379-8-spiked@nvidia.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 59ee6163-6fb2-4cff-3c7b-08da4a880099 x-ms-traffictypediagnostic: BY5PR12MB3972:EE_ x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: EKcqejdFkP4HGM/hs/AvKHdVCJZz8OzdaUR/sq0S+smezNBUIEYwMGjjwxTScuDj4rEbvGC5oNfm8EaqBE+w4bNwH1v5v1NYXq/aJwrUOQMT4TM0nbTSJlc1xanZYuTyugMaguPRjrhE4MnCSeB8Ib8ll/+QtTxrRBIAF7srlTLqkKyDbpjDmnSgoOr32Yf9h7d18gCGxhMErLsdjJwrv01jbvI9n8cDkQ2GWjz8azsie1pAPJUaA61qpZrWjX1gcQa5uFkRZDLcpNW81tyWBeobz17wAOBs+D/iQF+sUSV/LTb4agZxqp+WMs5UxUKc/zqNYLFP0tAUH97+SEcbxyGkskB602xwJ183xjr8TiDBTjw8NQh8zY8BIQnu4grezIMYNDvKuJh8s1Y/eva/HVKjwZXNW5FlZoeV7e3Yr8zI3z6/FOcn3J/JYCpZ7j1piz0mGd5/pMU2PfCXAFY3JNUglOM5EMLIu3dmJD+fDEFIGmWs9K2e6kR60lptnZiHPNA1bhM7h9B9SNVVv3f7PWoQnrWfWGo+bMKBzBF5+illNoHZntgVUeySgym0tjxj7XYWG3PUoZHQC+OnzbmCRM5hft3TVFkOxO7Cs9O8Q0vI/FKgUDwubgjwth/Ki9kD/4d8EtWNjHYmaTo8Ix2vobAdhqiI41evllHYkAuXEyMNd13CvO1h7SlVtBJTj4Jcz4LaLePxk1g+MWHz+LmZng== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR12MB3647.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(38070700005)(122000001)(66476007)(66446008)(508600001)(9686003)(55016003)(8936002)(52536014)(66556008)(38100700002)(5660300002)(83380400001)(76116006)(66946007)(8676002)(4326008)(33656002)(64756008)(186003)(110136005)(26005)(86362001)(54906003)(2906002)(6506007)(7696005)(53546011)(71200400001)(107886003)(316002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?U2hZeFpkR3FmeXNEaW5MNS9OZ0NXUHNxbUtub0pJclpxNXhZaEpud0VPb25t?= =?utf-8?B?TFBabUFmLzB5UERmbXlHQ2h2VnNYMFphRzJTNEJPR09NTEkrZVVNUkFla0sx?= =?utf-8?B?UEZuNXQ1SGVtdXcrVzExaVRNQmZSMC9xaGlwTHpGL0lFTk1YeStNQzFzcGps?= =?utf-8?B?WDFWeFJpYitwcXdxVkVSWTdsVUpiV0UwMThzZXZhbFlyMTBiL0V6aEFCTVJZ?= =?utf-8?B?MVR2TW9DRGhaWWtJWXRidS9JY0daVGZVUjBhclF1UFJVTzlxVE9Uek5LTWRh?= =?utf-8?B?NXZZSnZRVHBoMW1OVUdCNkduV3MyMDNNUjVBVDQ1UGZoQVZSMXJOU1Zlajl0?= =?utf-8?B?U3h2STZqdzdydzRjaDRIdmpxWWxRRERWYlBMM1ZnNlJ0NGhFa2JOVWUyZGhv?= =?utf-8?B?TmhjZWpWWDZJU1daOXVSR0N3dVowV1hrd3J0N1JuUDJVVlV0ZGg1MUZBcVhw?= =?utf-8?B?bEt4eWwraE5nLzNqV3QvQ0prelY4YmUwNzJOTC9lWWwzT3RXamY1VVRvcnFV?= =?utf-8?B?M1ZNcStCdTNEQU9WUXZCY3QvNVk0d3l1NEdFTG16d0hGd2hFQlBxd0hVWnhR?= =?utf-8?B?YUxQRitvTlcyMXJuc1U2WldDMUtJQkdBdWU4OXk0QjQ1cTRCa2lWZ3EzUkxx?= =?utf-8?B?cFF2dHpXclh6K0VzdWtuWVBKWUc1ZlpBcENGSXlkd2NKYytBek0xRG1HaHNS?= =?utf-8?B?Y2xiYmtsMndkdG0rY0o4aG16b1VBd3psVmZFNmFWQngwNVkyeTZIY084V0Yz?= =?utf-8?B?enVia1U4ZDRzOW9hbXZXVTJCdE1JQkR4MjNLMGx2MUJQaEVjVGxYdTN3azFl?= =?utf-8?B?UmR2a3pjc3JBb3JFN1dTYjN3S0xaNW5qNGJ3YTZDY0RMQWliUGVQTVJlSmh2?= =?utf-8?B?NjFEZGZ1ZEU1WU93YUNJMVppZmxDWmNqT3BqZHZnOUdPUmowVGFWcE1wdkZw?= =?utf-8?B?SXpHdVRQUmhvN0NuR1RDbEJtQnFtWXIxV1pSRVhmaERXNWtacnkvdDArZVp4?= =?utf-8?B?ZFkrb01KbTN2K1YwWnpUSnB0Z1drTmZTVDJ2eWpZN2dGb2QvWHVDY3JNckph?= =?utf-8?B?UlF6RmdSUVJvdzVWblMxWDV6Yk5DVk82b3NnR0hkTnlCUnh3UytiSHdySTVo?= =?utf-8?B?MWRjdWVsdFk5WEtuOUZtcmt3bm8yZFM4SVNNcEg0emtNRTVDM3M5N0Q0cUlF?= =?utf-8?B?cnhnQUt3TWhDOHlVQTB3ZzhJQndiKzRBc2pxWjdDWWUrU01kQUJIeGVKWEtW?= =?utf-8?B?UDFpb3h2NkdBNVpNU0dKNDM3YnRDOTZXanVmQW9VUFRmT0Qrcm9UWVBBeDRj?= =?utf-8?B?bWU5bmdSSCtxQ3duc0JRV1FpVUcwdjlzMVdMcWQ5VDE5Z043VVFzMkFnMnZM?= =?utf-8?B?RDc1bWFrQkgxNU5QT0pIUnlaVncxREpBTGxnSkhYUDkxQy9SY3Y2YlFyQ29z?= =?utf-8?B?clN5NCsrZTNhZHZ5Uk5raU1xS0xRckU1ZHRSTVY2eFo2cVZ4M0Q4Sk03d0k0?= =?utf-8?B?SjJtSG9XZ2JTbGhhSzlXeEFEaHZpWkFncEs2LzRXaE5TbW5uNGJyRnZNY1Jk?= =?utf-8?B?OTdPM21pMURCcHNiOG14QUlhZG0xMGNzaXJyV2kwNXc1TUYxdVBPd2VJNjFD?= =?utf-8?B?bWlMd3ZvUk1kS01xdGVSYWhHZkE3cmJKL2d4RzUrbXkyY08zemROKzd1L21I?= =?utf-8?B?Q2IrTjA1SEEzYUxJWEU5K1N5UTJYc1o3Zm5pVW16WThuYi9naDZwOHYxRzlK?= =?utf-8?B?SEl5MVBkMkFsekIzTklweFp5dEE1aE9oQnpVbG9KZ0JOajNhZlRwcDkyQUpT?= =?utf-8?B?c3dUNThwS1VKR0YzY1ZsNFhudlZVNVZlTGFZL2NLZ0NHTlZZb0lVdjd3Q3Jw?= =?utf-8?B?OUNzWVpGbFhhM1lQZDZPQnZ2T1A5Q3JsaHp3VGg0YXlMeDdadUd3U3FEWnlm?= =?utf-8?B?dHV5bE5JNTFtOXg3Zi8zYjIrbjcvMlRBSHZacEZJRnRuSUwxZmFNRnBHenUz?= =?utf-8?B?YllvS1VOSGJXZ1NFYWpxNHgxUXhnSElHVFJUd0JpRitBemlVWkpOWlM0QUFp?= =?utf-8?B?dTN4dTVRMmZ0UCtTZlJpejIzM0MvdDczY25FeTB2QVNFQUdTWEtyY2h2L2J4?= =?utf-8?B?V0ErczJ5dGRMYTNyc1E0eFpOOUVEVlZVREtqeEhpYzNqR0NVZGNYL09kdWhV?= =?utf-8?B?Z2piU1poa20vdGtDWHo3ZkxMeDNYSmNwc0U4RTJ1V0VyUlFpcHBxbTU3d1Q0?= =?utf-8?B?OUdrdEVHYU1aMWVIUElRdVF2TGNqbDc4eTJpTGsxbDZHQnhIUGFXNGJpbVQ4?= =?utf-8?Q?ndZOkcPGaSlrp1FiJm?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3647.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 59ee6163-6fb2-4cff-3c7b-08da4a880099 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2022 02:22:01.1771 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 6h70LTu5cC4g2xpOvgF2LDSO16+rLRJWAh/qyCEwQnVRDpT9Pdw902vdgsgJcRKOgxJKaTSOfUuE5/dvC3Vyfw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB3972 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 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5kcmV3IFJ5YmNoZW5r byA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+DQo+IFNlbnQ6IFRodXJzZGF5LCBKdW5l IDksIDIwMjIgMzo1NSBQTQ0KPiBUbzogU3Bpa2UgRHUgPHNwaWtlZEBudmlkaWEuY29tPjsgTWF0 YW4gQXpyYWQgPG1hdGFuQG52aWRpYS5jb20+Ow0KPiBTbGF2YSBPdnNpaWVua28gPHZpYWNoZXNs YXZvQG52aWRpYS5jb20+OyBPcmkgS2FtIDxvcmlrYUBudmlkaWEuY29tPjsNCj4gTkJVLUNvbnRh Y3QtVGhvbWFzIE1vbmphbG9uIChFWFRFUk5BTCkgPHRob21hc0Btb25qYWxvbi5uZXQ+Ow0KPiBY aWFveXVuIExpIDx4aWFveXVuLmxpQGludGVsLmNvbT47IEFtYW4gU2luZ2gNCj4gPGFtYW4uZGVl cC5zaW5naEBpbnRlbC5jb20+OyBZdXlpbmcgWmhhbmcgPHl1eWluZy56aGFuZ0BpbnRlbC5jb20+ DQo+IENjOiBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsgbWJAc21hcnRzaGFyZXN5c3RlbXMu Y29tOw0KPiBkZXZAZHBkay5vcmc7IFJhc2xhbiBEYXJhd3NoZWggPHJhc2xhbmRAbnZpZGlhLmNv bT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NSA3LzddIGFwcC90ZXN0cG1kOiBhZGQgSG9zdCBT aGFwZXIgY29tbWFuZA0KPiANCj4gRXh0ZXJuYWwgZW1haWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcg bGlua3Mgb3IgYXR0YWNobWVudHMNCj4gDQo+IA0KPiBTaW5jZSBldGhkZXYgcGF0Y2ggaXMgZmFj dG9yZWQgb3V0IGZyb20gdGhlIHBhdGNoIHNlcmllcyB0aGUgcmVzdCBjb3VsZCBnbyB0bw0KPiBt bHg1IG1haW50YWluZXJzLg0KPiANCj4gT24gNi83LzIyIDE1OjU5LCBTcGlrZSBEdSB3cm90ZToN Cj4gPiBBZGQgY29tbWFuZCBsaW5lIG9wdGlvbnMgdG8gc3VwcG9ydCBob3N0IHNoYXBlciBjb25m aWd1cmUuDQo+ID4gLSBDb21tYW5kIHN5bnRheDoNCj4gPiAgICBtbHg1IHNldCBwb3J0IDxwb3J0 X2lkPiBob3N0X3NoYXBlciBhdmFpbF90aHJlc2hfdHJpZ2dlcmVkIDwwfDE+DQo+ID4gcmF0ZSA8 cmF0ZV9udW0+DQo+ID4NCj4gPiAtIEV4YW1wbGUgY29tbWFuZHM6DQo+ID4gVG8gZW5hYmxlIGF2 YWlsX3RocmVzaF90cmlnZ2VyZWQgb24gcG9ydCAxIGFuZCBkaXNhYmxlIGN1cnJlbnQgaG9zdA0K PiA+IHNoYXBlcjoNCj4gPiB0ZXN0cG1kPiBtbHg1IHNldCBwb3J0IDEgaG9zdF9zaGFwZXIgYXZh aWxfdGhyZXNoX3RyaWdnZXJlZCAxIHJhdGUgMA0KPiA+DQo+ID4gVG8gZGlzYWJsZSBhdmFpbF90 aHJlc2hfdHJpZ2dlcmVkIGFuZCBjdXJyZW50IGhvc3Qgc2hhcGVyIG9uIHBvcnQgMToNCj4gPiB0 ZXN0cG1kPiBtbHg1IHNldCBwb3J0IDEgaG9zdF9zaGFwZXIgYXZhaWxfdGhyZXNoX3RyaWdnZXJl ZCAwIHJhdGUgMA0KPiA+DQo+ID4gVGhlIHJhdGUgdW5pdCBpcyAxMDBNYnBzLg0KPiA+IFRvIGRp c2FibGUgYXZhaWxfdGhyZXNoX3RyaWdnZXJlZCBhbmQgY29uZmlndXJlIGEgc2hhcGVyIG9mIDVH YnBzIG9uDQo+ID4gcG9ydCAxOg0KPiA+IHRlc3RwbWQ+IG1seDUgc2V0IHBvcnQgMSBob3N0X3No YXBlciBhdmFpbF90aHJlc2hfdHJpZ2dlcmVkIDAgcmF0ZSA1MA0KPiA+DQo+ID4gQWRkIHNhbXBs ZSBjb2RlIHRvIGhhbmRsZSByeHEgYXZhaWxhYmxlIGRlc2NyaXB0b3IgdGhyZXNob2xkIGV2ZW50 LCBpdA0KPiA+IGRlbGF5cyBhIHdoaWxlIHNvIHRoYXQgcnhxIGVtcHRpZXMsIHRoZW4gZGlzYWJs ZXMgaG9zdCBzaGFwZXIgYW5kDQo+ID4gcmVhcm1zIGF2YWlsYWJsZSBkZXNjcmlwdG9yIHRocmVz aG9sZCBldmVudC4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFNwaWtlIER1IDxzcGlrZWRAbnZp ZGlhLmNvbT4NCj4gDQo+IFtzbmlwXQ0KPiANCj4gPiArDQo+ID4gK3N0YXRpYyB1aW50OF90IGhv c3Rfc2hhcGVyX2F2YWlsX3RocmVzaF90cmlnZ2VyZWRbUlRFX01BWF9FVEhQT1JUU107DQo+ID4g KyNkZWZpbmUgU0hBUEVSX0RJU0FCTEVfREVMQVlfVVMgMTAwMDAwIC8qIDEwMG1zICovDQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICogRGlzYWJsZSB0aGUgaG9zdCBzaGFwZXIgYW5kIHJlLWFybSBh dmFpbGFibGUgZGVzY3JpcHRvciB0aHJlc2hvbGQgZXZlbnQuDQo+ID4gKyAqDQo+ID4gKyAqIEBw YXJhbVtpbl0gYXJncw0KPiA+ICsgKiAgIHVpbnQzMl90IGludGVnZXIgY29tYmluaW5nIHBvcnRf aWQgYW5kIHJ4cV9pZC4NCj4gPiArICovDQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK21seDVfdGVz dF9ob3N0X3NoYXBlcl9kaXNhYmxlKHZvaWQgKmFyZ3MpIHsNCj4gPiArICAgICB1aW50MzJfdCBw b3J0X3J4cV9pZCA9ICh1aW50MzJfdCkodWludHB0cl90KWFyZ3M7DQo+ID4gKyAgICAgdWludDE2 X3QgcG9ydF9pZCA9IHBvcnRfcnhxX2lkICYgMHhmZmZmOw0KPiA+ICsgICAgIHVpbnQxNl90IHFp ZCA9IChwb3J0X3J4cV9pZCA+PiAxNikgJiAweGZmZmY7DQo+ID4gKyAgICAgc3RydWN0IHJ0ZV9l dGhfcnhxX2luZm8gcWluZm87DQo+ID4gKw0KPiA+ICsgICAgIHByaW50ZigiJXMgZGlzYWJsZSBz aGFwZXJcbiIsIF9fZnVuY19fKTsNCj4gPiArICAgICBpZiAocnRlX2V0aF9yeF9xdWV1ZV9pbmZv X2dldChwb3J0X2lkLCBxaWQsICZxaW5mbykpIHsNCj4gPiArICAgICAgICAgICAgIHByaW50Zigi cnhfcXVldWVfaW5mb19nZXQgcmV0dXJucyBlcnJvclxuIik7DQo+ID4gKyAgICAgICAgICAgICBy ZXR1cm47DQo+ID4gKyAgICAgfQ0KPiA+ICsgICAgIC8qIFJlYXJtIHRoZSBhdmFpbGFibGUgZGVz Y3JpcHRvciB0aHJlc2hvbGQgZXZlbnQuICovDQo+ID4gKyAgICAgaWYgKHJ0ZV9ldGhfcnhfYXZh aWxfdGhyZXNoX3NldChwb3J0X2lkLCBxaWQsIHFpbmZvLmF2YWlsX3RocmVzaCkpIHsNCj4gPiAr ICAgICAgICAgICAgIHByaW50ZigiY29uZmlnIGF2YWlsX3RocmVzaCByZXR1cm5zIGVycm9yXG4i KTsNCj4gPiArICAgICAgICAgICAgIHJldHVybjsNCj4gPiArICAgICB9DQo+ID4gKyAgICAgLyog T25seSBkaXNhYmxlIHRoZSBzaGFwZXIgd2hlbiBhdmFpbF90aHJlc2hfdHJpZ2dlcmVkIGlzIHNl dC4gKi8NCj4gPiArICAgICBpZiAoaG9zdF9zaGFwZXJfYXZhaWxfdGhyZXNoX3RyaWdnZXJlZFtw b3J0X2lkXSAmJg0KPiA+ICsgICAgICAgICBydGVfcG1kX21seDVfaG9zdF9zaGFwZXJfY29uZmln KHBvcnRfaWQsIDAsIDApKQ0KPiA+ICsgICAgICAgICAgICAgcHJpbnRmKCIlcyBkaXNhYmxlIHNo YXBlciByZXR1cm5zIGVycm9yXG4iLCBfX2Z1bmNfXyk7IH0NCj4gPiArDQo+ID4gK3ZvaWQNCj4g PiArbWx4NV90ZXN0X2F2YWlsX3RocmVzaF9ldmVudF9oYW5kbGVyKHVpbnQxNl90IHBvcnRfaWQs IHVpbnQxNl90DQo+ID4gK3J4cV9pZCkgew0KPiA+ICsgICAgIHVpbnQzMl90IHBvcnRfcnhxX2lk ID0gcG9ydF9pZCB8IChyeHFfaWQgPDwgMTYpOw0KPiANCj4gTm9ib2R5IGd1YXJhbnRlZXMgaGVy ZSB0aGF0IHBvcnRfaWQgcmVmZXJzIHRvIGFuIG1seDUgcG9ydC4NCj4gSXQgY291bGQgYmUgYW55 IHBvcnQgd2l0aCBhdmFpbF90aHJlcyBzdXBwb3J0Lg0KSSB0aGluayBhdCB0aGUgYmVnaW5uaW5n IG9mIHRoaXMgZnVuY3Rpb24sIHdlIGNhbiBhZGQgYmVsb3cgY2hlY2s6DQoNCiAgaWYgKHJ0ZV9l dGhfZGV2X2luZm9fZ2V0KHBvcnRfaWQsICZkZXZfaW5mbykgIT0gMCB8fA0KICAgICAgKHN0cm5j bXAoZGV2X2luZm8uZHJpdmVyX25hbWUsICJtbHg1IiwgNCkgIT0gMCkpDQoJcmV0dXJuOw0KDQpp cyBpdCBvaz8NCj4gDQo+ID4gKw0KPiA+ICsgICAgIHJ0ZV9lYWxfYWxhcm1fc2V0KFNIQVBFUl9E SVNBQkxFX0RFTEFZX1VTLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG1seDVfdGVzdF9o b3N0X3NoYXBlcl9kaXNhYmxlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICop KHVpbnRwdHJfdClwb3J0X3J4cV9pZCk7DQo+ID4gKyAgICAgcHJpbnRmKCIlcyBwb3J0X2lkOiV1 IHJ4cV9pZDoldVxuIiwgX19mdW5jX18sIHBvcnRfaWQsIHJ4cV9pZCk7DQo+ID4gK30NCj4gDQo+ IFtzbmlwXQ0KPiANCj4gPiArY21kbGluZV9wYXJzZV90b2tlbl9zdHJpbmdfdCBjbWRfcG9ydF9o b3N0X3NoYXBlcl9tbHg1ID0NCj4gPiArICAgICBUT0tFTl9TVFJJTkdfSU5JVElBTElaRVIoc3Ry dWN0IGNtZF9wb3J0X2hvc3Rfc2hhcGVyX3Jlc3VsdCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtbHg1LCAibWx4NSIpOw0KPiANCj4gSSB0aGluayBpdCBsdWNrcyAnc3RhdGlj JyBrZXl3b3JkIChtYW55IGNhc2VzIGJlbG93KS4NCg0KU3VyZSwgd2lsbCBhZGQgJ3N0YXRpYycu DQo+IA0KPiBbc25pcF0NCg==