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 43E24A507C for ; Mon, 21 Oct 2019 17:20:04 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CAC3B1BEF0; Mon, 21 Oct 2019 17:20:02 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id C717B1BEEE for ; Mon, 21 Oct 2019 17:20:00 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x9LFJxnx004107; Mon, 21 Oct 2019 08:19:59 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=LtHsn4rA9QwOvjwLBVuentNV9RyzLDksk+Gf22iZm0A=; b=ltAXtWH8e5aNqAS7uUZLsFdmbY7m2eimGRhPQxsKP0VRa9s0jTOJHaju9u2kQRWbmJGE 3qQ9MtACjXfHmq4rHozhQlG4DaUjjaHNPLftTZkYNaf+aOkqWqEXEDG8JvRjA3kchCKp GMoWqtqEd6f6v0OrGiBwfGjwPM9BYUn8CxYAC+rrhsO2WkLogSDwU/34V6LJlJtFdUBw pJbJKIP9eL8+gqQOtR3ArMXFT4uK4jLKbZAmiQVVBcKqKnILID/eCVMdU4av0yGZCuT4 7DIfB1Z1c5a0h49UMQ3yyfCjTSuTjj72Zm+jzfOHmsv9IKWZXj3YmlTAHUGvhJZQoGwU tw== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0b-0016f401.pphosted.com with ESMTP id 2vr20mpkdd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 21 Oct 2019 08:19:58 -0700 Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 21 Oct 2019 08:19:57 -0700 Received: from NAM04-BN3-obe.outbound.protection.outlook.com (104.47.46.55) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Mon, 21 Oct 2019 08:19:56 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FocRdHTE22hnGDXFXPkH7kJIn9tVnlY8DsjxfPboP2dm5t7g/n2QkelRJHH8O4bEhc8XGSYSBFpxtMW22plRYVFHuxN7JJs2s/HALRrRj2QTZTDf8ZUNozEopPgIzbbNRjV+ovweZ4ixHcOsvbCrtQ9aNYBfbuuolPPcgtY3J5hlsQnAnZsulvNpFN7lrHmqQyRWa5Sdt8g5DyIBELp/jerLFQ1Y63pjo0vYm0myVKRV1Sen6kVaTm4NcJ3ePCOjR+Svsy0Pbr2TczyhgOktsRKc+PQyRbEKrGDv1ofuiw4qaDtscWAS4fNjuq57uq1vxsojROZaUhm/tqnhd3CdkA== 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=LtHsn4rA9QwOvjwLBVuentNV9RyzLDksk+Gf22iZm0A=; b=XAy1A9qprss3UWcFZWbmEjDKJ3ua1klk9db4oBldhWm3Lw+Y0SMNxl33trtTE+j5keKZ94n0MH99Z0x5MWmgQybYWXT749YBbEaTu12YOoDteVomjFvFz7V+Sdp8EGWmFlIy2YDRGqYYmWUMb32k8Ae0S2Xs0Bg+mZ5yy1FqYhrA2I8n0ahkeLR72C/gLG6nv7zTl8cKkiejhD5ZKMCQCtTcATQpsyokxxjdFQc9rBrczD2woT4YvGv3Yuwh8UXUvqdaVk/3OKmgzLSsZnT5A4cnii+lOmkdGAmZYVnCFDcS3qaxTirDZ8g2cUbcOc1rmkIMTOfeTDDFyN9zcKqJag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector2-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LtHsn4rA9QwOvjwLBVuentNV9RyzLDksk+Gf22iZm0A=; b=LcoEK+G5/LAJnO2nF9bQ5aMVnjI7qxwY9WLmHGAI2CikdpjCWM5Yvjbz4ULCoXwhFYF8IMxRTttBL+QKXZ6WcYelbmSAeLtC/xjU7TZ3VVSladcmkCvriEwiqeGmEuangoww2ysdj1kQ1Xd6m9OUG6gflo4aGo2aykFlk+1SpyU= Received: from CY4PR1801MB1863.namprd18.prod.outlook.com (10.171.255.160) by CY4PR1801MB1957.namprd18.prod.outlook.com (10.165.88.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2347.16; Mon, 21 Oct 2019 15:19:53 +0000 Received: from CY4PR1801MB1863.namprd18.prod.outlook.com ([fe80::15d1:f4cf:f510:8fa]) by CY4PR1801MB1863.namprd18.prod.outlook.com ([fe80::15d1:f4cf:f510:8fa%4]) with mapi id 15.20.2347.029; Mon, 21 Oct 2019 15:19:53 +0000 From: Pavan Nikhilesh Bhagavatula To: Ferruh Yigit , Andrew Rybchenko , Jerin Jacob Kollanukkaran CC: "dev@dpdk.org" , Adrien Mazarguil , Thomas Monjalon , "Xiaolong Ye" , Bruce Richardson Thread-Topic: Re: [dpdk-dev] [PATCH v12 0/7] ethdev: add new Rx offload flags Thread-Index: AdWIIflpSyfRW90DR5O7ownvyR2s3Q== Date: Mon, 21 Oct 2019 15:19:53 +0000 Message-ID: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [122.172.83.127] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9ff8905c-0cb8-4b6e-9a2b-08d7563a1fb3 x-ms-traffictypediagnostic: CY4PR1801MB1957: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 0197AFBD92 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(136003)(376002)(366004)(396003)(346002)(39860400002)(43544003)(189003)(199004)(13464003)(52536014)(2906002)(6116002)(305945005)(7736002)(81156014)(25786009)(30864003)(8676002)(54906003)(76116006)(316002)(66946007)(26005)(81166006)(3846002)(110136005)(74316002)(5660300002)(71200400001)(71190400001)(53546011)(6636002)(6506007)(9686003)(14454004)(66066001)(7696005)(486006)(55016002)(99286004)(102836004)(4326008)(64756008)(66446008)(66556008)(476003)(186003)(6436002)(229853002)(256004)(14444005)(33656002)(86362001)(478600001)(66476007)(8936002)(6246003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR1801MB1957; H:CY4PR1801MB1863.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /OjsHMZIAmkj12D6/4Em4R7ZgJuMEAkRfhZDGgifsy7vjQJnxAfE04UrkRWofOohlaH4Fv5hPULr8mIfcOU7GanUhLRQrywok804Cxq3LFyY6VvdacVOYE2LvOfDuL0J8Lq68gNTDgXb7LOKeGyZXUCGAB5KtNYD/CQzfgz4Lh4e7FxOSSzhIEE6cK5uOILvM1v1mMAGqkwFo4Vs2a2oqn1YhOAopISVpBPJ/C0MoaIG1NKKd9qr8PP3IG43V4qrJVENBXPoulxQ9nybw5/wzGPysdL2Q9e9iHwRW4grs7KfVqzWMjGTngXEJ4PShKuRG9NRsBjF9vAYSJkN6x5RUhz/Y7RrIkUWPlBL3IR1hKVMy+Il275v4d72EP02MYX+U3rMuRaCreOHsJJ2sZHq0zkCzZ7wfbZkK9DIKpEXir0= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 9ff8905c-0cb8-4b6e-9a2b-08d7563a1fb3 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Oct 2019 15:19:53.3532 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: FGjaC5x+V55KSF/hjUut+3zKGHieHwrl+qpzJX5RfE0nXxCehhynfOLqsrNKpZs0Llv3gd2XkGGpYN99mBUJNsqv82S46QaClxuFcg33GoQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1801MB1957 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,1.0.8 definitions=2019-10-21_04:2019-10-21,2019-10-21 signatures=0 Subject: Re: [dpdk-dev] [PATCH v12 0/7] ethdev: add new Rx offload flags 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" SGkgRmVycnVoLA0KDQo+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj5Gcm9tOiBGZXJydWgg WWlnaXQgPGZlcnJ1aC55aWdpdEBpbnRlbC5jb20+DQo+U2VudDogTW9uZGF5LCBPY3RvYmVyIDIx LCAyMDE5IDg6MzcgUE0NCj5UbzogQW5kcmV3IFJ5YmNoZW5rbyA8YXJ5YmNoZW5rb0Bzb2xhcmZs YXJlLmNvbT47IFBhdmFuIE5pa2hpbGVzaA0KPkJoYWdhdmF0dWxhIDxwYmhhZ2F2YXR1bGFAbWFy dmVsbC5jb20+OyBKZXJpbiBKYWNvYiBLb2xsYW51a2thcmFuDQo+PGplcmluakBtYXJ2ZWxsLmNv bT4NCj5DYzogZGV2QGRwZGsub3JnOyBBZHJpZW4gTWF6YXJndWlsIDxhZHJpZW4ubWF6YXJndWls QDZ3aW5kLmNvbT47DQo+VGhvbWFzIE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0PjsgWGlh b2xvbmcgWWUNCj48eGlhb2xvbmcueWVAaW50ZWwuY29tPjsgQnJ1Y2UgUmljaGFyZHNvbg0KPjxi cnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT4NCj5TdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFU Q0ggdjEyIDAvN10gZXRoZGV2OiBhZGQgbmV3IFJ4DQo+b2ZmbG9hZCBmbGFncw0KPk9uIDEwLzE4 LzIwMTkgMTE6MzEgQU0sIEFuZHJldyBSeWJjaGVua28gd3JvdGU6DQo+PiBPbiAxMC8xOC8xOSAx Mjo0MiBQTSwgRmVycnVoIFlpZ2l0IHdyb3RlOg0KPj4+IE9uIDEwLzE4LzIwMTkgODozMiBBTSwg QW5kcmV3IFJ5YmNoZW5rbyB3cm90ZToNCj4+Pj4gSGkgRmVycnVoLA0KPj4+Pg0KPj4+PiBzaW5j ZSBJJ3ZlIHJldmlld2VkIEknbGwgcmVwbHkgYXMgSSB1bmRlcnN0YW5kIGl0Lg0KPj4+Pg0KPj4+ PiBPbiAxMC8xNy8xOSA4OjQzIFBNLCBGZXJydWggWWlnaXQgd3JvdGU6DQo+Pj4+PiBPbiAxMC8x Ny8yMDE5IDE6MDIgUE0sIHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbSB3cm90ZToNCj4+Pj4+PiBG cm9tOiBQYXZhbiBOaWtoaWxlc2ggPHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbT4NCj4+Pj4+Pg0K Pj4+Pj4+ICAgIEFkZCBuZXcgUnggb2ZmbG9hZCBmbGFncyBgREVWX1JYX09GRkxPQURfUlNTX0hB U0hgIGFuZA0KPj4+Pj4+ICAgIGBERVZfUlhfT0ZGTE9BRF9GTE9XX01BUktgLiBUaGVzZSBmbGFn cyBjYW4gYmUgdXNlZCB0bw0KPj4+Pj4+ICAgIGVuYWJsZS9kaXNhYmxlIFBNRCB3cml0ZXMgdG8g cnRlX21idWYgZmllbGRzIGBoYXNoLnJzc2AgYW5kDQo+YGhhc2guZmRpci5oaWANCj4+Pj4+PiAg ICBhbmQgYWxzbyBgb2xfZmxhZ3M6UEtUX1JYX1JTU2AgYW5kIGBvbF9mbGFnczpQS1RfUlhfRkRJ UmAuDQo+Pj4+PiBIaSBQYXZhbiwNCj4+Pj4+DQo+Pj4+PiBJbml0aWFsbHkgc29ycnkgZm9yIGlu dm9sdmluZyBsYXRlLA0KPj4+Pj4NCj4+Pj4+IFdoZW4gd2UgZXhwb3NlIGFuIGludGVyZmFjZSB0 byB0aGUgYXBwbGljYXRpb25zLCB0aGV5IHdpbGwgZXhwZWN0DQo+dGhvc2Ugd2lsbCBiZQ0KPj4+ Pj4gcmVzcGVjdGVkIGJ5IHVuZGVybHlpbmcgUE1Ecy4NCj4+Pj4+IEFzIGZhciBhcyBJIGNhbiBz ZWUgZHJpdmVycyBhcmUgdXBkYXRlZCB0byByZXBvcnQgbmV3IGFkZGVkIFJ4DQo+b2ZmbG9hZCBm bGFncyBhcw0KPj4+Pj4gc3VwcG9ydGVkIGNhcGFiaWxpdGllcyBidXQgZHJpdmVycyBhcmUgbm90 IHVzaW5nIHRob3NlIGZsYWdzIGF0IGFsbCwNCj5zbw0KPj4+Pj4gYXBwbGljYXRpb24gcHJvdmlk aW5nIHRoYXQgZmxhZyB3b24ndCByZWFsbHkgZW5hYmxlL2Rpc2FibGUNCj5hbnl0aGluZywgSSB0 aGluaw0KPj4+Pj4gdGhpcyBpcyBhIHByb2JsZW0gYW5kIGl0IGlzIHdyb25nIHRvIGxpZSBldmVu IGZvciB0aGUgUE1EcyBKDQo+Pj4+IEl0IGlzIHJlcXVpcmVkIHRvIGxldCBhcHBsaWNhdGlvbnMg a25vdyB0aGF0IHRoZSBvZmZsb2FkIGlzIHN1cHBvcnRlZC4NCj4+Pj4gVGhlcmUgYXJlIGEgbnVt YmVyIG9mIGNhc2VzIHdoZW4gYW4gb2ZmbG9hZCBjYW5ub3QgYmUgZGlzYWJsZWQsDQo+Pj4+IGJ1 dCBpdCBkb2VzIG5vdCBtZWFuIHRoYXQgdGhlIG9mZmxvYWQgbXVzdCBub3QgYmUgYWR2ZXJ0aXNl ZC4NCj4+PiBDYW4ndCBkaXNhYmxlIGlzIHNvbWV0aGluZyBlbHNlLCBhbHRob3VnaCBJIGJlbGll dmUgdGhhdCBpcyByYXJlIGNhc2UsIGluDQo+dGhpcw0KPj4+IGNhc2UgZHJpdmVyIGNhbiBlbmFi bGUvZGlzYWJsZSB0aGUgUlNTIGFuZCByZXByZXNlbnRpbmcgdGhpcyBhcyBhbg0KPm9mZmxvYWQN Cj4+PiBjYXBhYmlsaXR5Lg0KPj4NCj4+IEl0IGlzIG5vdCBlbmFibGluZy9kaXNhYmxpbmcgdGhl IFJTUy4gSXQgaXMgZW5hYmxpbmcvZGlzYWJsaW5nIFJTUyBoYXNoDQo+PiBkZWxpdmVyeQ0KPj4g dG9nZXRoZXIgd2l0aCBhbiBtYnVmLg0KPg0KPg0KPkdvdCBpdCwgaXQgaXMgcmVsYXRlZCB0byB0 aGUgUlNTIGhhc2ggZGVsaXZlcnkuDQo+DQo+Pg0KPj4+IEJ1dCB3aGVuIHVzZXIgd2FudCB0byBj b25maWd1cmUgdGhpcyBvZmZsb2FkIGJ5IHNldHRpbmcgb3IgdW5zZXR0aW5nDQo+aW4gb2ZmbG9h ZA0KPj4+IGNvbmZpZywgZHJpdmVyIGp1c3QgaWdub3JlcyBpdC4NCj4+DQo+PiBXaGVuIGFwcGxp Y2F0aW9uIGVuYWJsZXMgb2ZmbG9hZCwgaXQgc2F5cyB0aGF0IGl0IG5lZWRzIGl0IGFuZCBnb2lu ZyB0bw0KPnVzZQ0KPj4gKHJlcXVpcmVkKS4gV2hlbiB0aGUgb2ZmbG9hZCBpcyBub3QgZW5hYmxl ZCwgYXBwbGljYXRpb24gc2ltcGx5IGRvbid0DQo+Y2FyZS4NCj4+IFNvLCBpZiB0aGUgaW5mb3Jt YXRpb24gaXMgc3RpbGwgcHJvdmlkZWQgaXQgZG9lcyBub3QgaGFybS4NCj4NCj4NCj5Ob3Qgc3Vy ZSBpZiB0aGVyZSBpcyBubyBoYXJtLCBhIGNvbmZpZyBvcHRpb24gbm90IHJlc3BlY3RlZCBieQ0K PnVuZGVybHlpbmcgUE1Ecw0KPnNpbGVudGx5IGlzIGEgcHJvYmxlbSBJIHRoaW5rLg0KPg0KPj4N Cj4+Pj4gSWYgZHJpdmVyIHNlZSBiZW5lZml0cyBmcm9tIGRpc2FibGluZyB0aGUgb2ZmbG9hZCAo ZS5nLiBhdm9pZCBkZWxpdmVyeQ0KPj4+PiBvZiBSU1MgaGFzaCBmcm9tIE5JQyB0byBob3N0KSwg aXQgY2FuIGRvIGl0IGFmdGVyIHRoZSBwYXRjaHNldC4NCj4+PiBZZXMgYnV0IEkgdGhpbmsgdGhp cyBwYXRjaHNldCBzaG91bGRuJ3QgaWdub3JlIHRoYXQgZGlzYWJsaW5nIHRoZQ0KPmZlYXR1cmUg aXMgbm90DQo+Pj4gaW1wbGVtZW50ZWQgeWV0LiBJZiB0aG9zZSBQTURzIHRoYXQgaGFzIGJlZW4g dXBkYXRlZCB0byByZXBvcnQNCj50aGUgSEFTSA0KPj4+IGNhcGFiaWxpdHkgaGFzIFJTUyBlbmFi bGVkIGJ5IGRlZmF1bHQsIEkgc3VnZ2VzdCBhZGRpbmcgYSBjaGVjayBmb3INCj50aGlzIG9mZmxv YWQNCj4+PiBpbiBQTUQsDQo+Pj4gaWYgaXQgaXMgcmVxdWVzdGVkIHRvIGRpc2FibGUgKHdoaWNo IG1lYW5zIG5vdCByZXF1ZXN0ZWQgZm9yIGVuYWJsZSksDQo+cHJpbnQgYQ0KPj4+IGxvZyBzYXlp bmcgZGlzYWJsaW5nIEhBU0ggaXMgbm90IHN1cHBvcnRlZCBhbmQgc2V0IHRoaXMgZmxhZyBpbiB0 aGUNCj5vZmZsb2FkDQo+Pj4gY29uZmlndXJhdGlvbiB0byBzYXkgUE1EIGlzIGNvbmZpZ3VyZWQg dG8gY2FsY3VsYXRlIHRoZSBIQVNILg0KPj4+IExhdGVyIFBNRCBtYWludGFpbmVycyBtYXkgcHJl ZmVyIHRvIHJlcGxhY2UgdGhhdCBlcnJvciBsb2cgd2l0aA0KPmFjdHVhbCBkaXNhYmxlIGNvZGUu DQo+Pg0KPj4gSXQgaXMgcG9zc2libGUgdG8gZG8uIE9mIGNvdXJzZSwgaXQgaXMgYmV0dGVyIHRv IHByb3ZpZGUgcmVhbCBvZmZsb2FkDQo+PiB2YWx1ZXMgb24gZ2V0LCBidXQNCj4+IGV0aF9jb25m IGlzIGNvbnN0IGluIHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZSgpLCBzbywgd2UgY2FuJ3QgY2hhbmdl IGl0DQo+YW5kDQo+PiBpdCBpcyBnb29kLg0KPj4gU28sIHRoZSBvbmx5IHdheSBpcyBydGVfZXRo X3J4X3F1ZXVlX2luZm9fZ2V0KCkuDQo+PiBJIGd1ZXNzIHRoZXJlIGlzIGEgbG90IG9mIHNwYWNl IGZvciB0aGUgc2FtZSBpbXByb3ZlbWVudCBmb3Igb3RoZXIgUngNCj4+IG9mZmxvYWRzDQo+PiBp biB2YXJpb3VzIFBNRHMuDQo+DQo+DQo+V2UgZG9uJ3QgbmVlZCB0aGUgdXBkYXRlICdldGhfY29u ZicgcGFyYW1ldGVyIG9mIHRoZQ0KPidydGVfZXRoX2Rldl9jb25maWd1cmUoKScsDQo+dGhhdCBp cyB3aGF0IHVzZXIgcmVxdWVzdGVkLCBidXQgY29uZmlnIHN0b3JlZCBpbiAnZGV2LT5kYXRhLT5k ZXZfY29uZicNCj53aGljaA0KPmNhbiBiZSB1cGRhdGVkLg0KPg0KPj4gQWxzbyBJIHdvcnJ5IHRo YXQgaXQgY291bGQgYmUgbm90IHRoYXQgdHJpdmlhbCB0byBkbyBpbiBhbGwgZWZmZWN0ZWQgUE1E cy4NCj4NCj4NCj5ZZXMgaXQgY2FuIGJlIHNvbWUgd29yaywgYW5kIGlmIHRoaXMgcGF0Y2hzZXQg ZG9lc24ndCBkbyBpdCwgd2hvIHdpbGwgZG8NCj50aGUgd29yaz8NCj4NCj4+DQo+Pj4+PiBTcGVj aWZpYyB0byBgREVWX1JYX09GRkxPQURfUlNTX0hBU0hgLCB3ZSBoYXZlIGFscmVhZHkNCj5zb21l IFJTUyBjb25maWcNCj4+Pj4+IHN0cnVjdHVyZXMgYW5kIGl0IGlzIHBhcnQgb2YgdGhlICdydGVf ZXRoX2Rldl9jb25maWd1cmUoKScgQVBJLA0KPndvbid0IGl0IGNyZWF0ZQ0KPj4+Pj4gbXVsdGlw bGUgd2F5IHRvIGRvIHNhbWUgdGhpbmc/DQo+Pj4+IE5vLCBhIG5ldyBvZmZsb2FkIGlzIHJlc3Bv bnNpYmxlIGZvciBSU1MgaGFzaCBkZWxpdmVyeSBmcm9tIE5JQyB0bw0KPmhvc3QNCj4+Pj4gYW5k IGZpbGwgaW4gaW4gbWJ1ZiByZXR1cm5lZCB0byBhcHBsaWNhdGlvbiBvbiBSeC4NCj4+PiBXaGF0 IHlvdSBoYXZlIGRlc2NyaWJlZCBpcyBhbHJlYWR5IGhhcHBlbmluZyB3aXRob3V0IHRoZSBuZXcN Cj5vZmZsb2FkIGZsYWcgYW5kDQo+Pj4gdGhpcyBpcyBteSBjb25jZXJuIHRoYXQgd2UgYXJlIGR1 cGxpY2F0aW5nIGl0Lg0KPj4+DQo+Pj4NCj4+PiBUaGVyZSBpcyBhICdzdHJ1Y3QgcnRlX2V0aF9y eG1vZGUnICh1bmRlciAnc3RydWN0IHJ0ZV9ldGhfY29uZicpDQo+Pj4gd2hpY2ggaGFzICdlbnVt IHJ0ZV9ldGhfcnhfbXFfbW9kZSBtcV9tb2RlOycNCj4+Pg0KPj4+IElmICJtcV9tb2RlID09IEVU SF9NUV9SWF9OT05FIiBoYXNoIGNhbGN1bGF0aW9uIGlzIGRpc2FibGVkLA0KPmFuZA0KPj4+ICdt YnVmOjpoYXNoOjpyc3MnIGlzIG5vdCB1cGRhdGVkLg0KPj4NCj4+IE5vLW5vLiBJdCBiaW5kcyBS U1MgZGlzdHJpYnV0aW9uIGFuZCBoYXNoIGRlbGl2ZXJ5LiBXaGF0IHRoZSBuZXcNCj4+IG9mZmxv YWQgYWxsb3dzIHRvIGFjaGlldmU6IEkgd2FudCBSeCB0byBzcHJlYWQgdHJhZmZpYyBvdmVyIG1h bnkgUngNCj4+IHF1ZXVlcywgYnV0IEkgZG9uJ3QgbmVlZCBSU1MgaGFzaC4NCj4NCj4NCj5JIHNl ZSwgc28gUlNTIGNvbmZpZ3VyYXRpb24gd2lsbCBzdGF5IHNhbWUsIGJ1dCBkcml2ZXIgbmVlZHMg dG8gdGFrZSBjYXJlDQo+dGhlDQo+bmV3IGZsYWdzIHRvIGRlY2lkZSB0byB1cGRhdGUgb3Igbm90 IHRoZSBtYnVmOjpyc3M6Omhhc2ggZmllbGQuDQo+DQo+SSBkb24ndCBrbm93IGlmIGRpc2FibGlu ZyBSU1MgYnV0IGNhbGN1bGF0aW5nIGhhc2ggaXMgc3VwcG9ydGVkLCBpZiBub3QNCj5zdXBwb3J0 ZWQgdGhhdCBjYXNlIGFsc28gc2hvdWxkIGJlIGNoZWNrZWQgYnkgZHJpdmVyLg0KPg0KPj4NCj4+ PiAoVGhhbmtzIEJydWNlIHRvIGhlbHBpbmcgZmluZGluZyBpdCBvdXQpDQo+Pj4NCj4+Pg0KPj4+ Pj4gQW5kIGZvciB0aGUgYG9sX2ZsYWdzOlBLVF9SWF9SU1NgIGZsYWcsIGl0IHdhcyBhbHJlYWR5 IHVzZWQgdG8NCj5tYXJrIHRoYXQNCj4+Pj4+ICdtYnVmOjpoYXNoOjpyc3MnIGlzIHZhbGlkLCBy aWdodD8gSXMgdGhlcmUgYW55dGhpbmcgbmV3IHJlbGF0ZWQgdGhhdA0KPmluIHRoZSBzZXQ/DQo+ Pj4+IEFzIEkgdW5kZXJzdGFuZCB5b3UgbWVhbiwgb2xfZmxhZ3M6OlBLVF9SWF9SU1NfSEFTSC4N Cj4+Pj4gWWVzLCB0aGUgbmV3IG9mZmxvYWQgYWxsb3dzIHNheSBpZiBhcHBsaWNhdGlvbiBuZWVk cyBpdCBvciBub3cuDQo+Pj4+IEJhc2ljYWxseSBpdCBkZWNvdXBsZXMgUlNTIGRpc3RyaWJ1dGlv biBhbmQgaGFzaCBkZWxpdmVyeS4NCj4+PiBTZXR0aW5nICdvbF9mbGFnczo6UEtUX1JYX1JTU19I QVNIJyBhbmQgJ21idWY6Omhhc2g6OnJzcycgYWxyZWFkeQ0KPnRoZXJlIGFuZCBub3QNCj4+PiBj aGFuZ2luZy4gSSBqdXN0IHdhbnQgdG8gY2xhcmlmeSBzaW5jZSB0aGlzIGlzIG5vdCBjbGVhciBp biB0aGUgY29tbWl0IGxvZy4NCj4+Pg0KPj4+IE9ubHkgYWRkaXRpb24gaXMgdG8gYWRkIGEgbmV3 IGZsYWcgdG8gY29udHJvbCBQTUQgdG8gZW5hYmxlL2Rpc2FibGUNCj5oYXNoDQo+Pj4gY2FsY3Vs YXRpb24gKHdoaWNoIFBNRHMgaWdub3JlIGluIHRoZSBwYXRjaCA/Pz8pDQo+Pg0KPj4gSXQgaXMg bm90IGNhbGN1bGF0aW9uLCBidXQgZGVsaXZlcnkgb2YgdGhlIHZhbHVlIGZyb20gSFcgdG8gYXBw bGljYXRpb25zLg0KPg0KPg0KPk9LDQo+DQo+PiBZZXMsIGNvbW1pdCBsb2cgbWF5L3Nob3VsZCBi ZSBpbXByb3ZlZC4+DQo+Pj4+PiBTcGVjaWZpYyB0byB0aGUgYERFVl9SWF9PRkZMT0FEX0ZMT1df TUFSS2AgYW5kDQo+YFJURV9GTE9XX0FDVElPTl9GTEFHYCwgdGhleSBhcmUNCj4+Pj4+IHJ0ZV9m bG93IGFjdGlvbnMsIGFwcGxpY2F0aW9uIGNhbiB2ZXJpZnkgYW5kIGxhdGVyIHJlcXVlc3QgdGhl c2UNCj5hY3Rpb25zIHZpYQ0KPj4+Pj4gcnRlX2Zsb3cgQVBJcy4gV2h5IHdlIGFyZSBhZGRpbmcg YW4gYWRkaXRpb25hbCBSWF9PRkZMT0FEIGZsYWcNCj5mb3IgdGhlbT8NCj4+Pj4gVGhlIHJlYXNv biBpcyBiYXNpY2FsbHkgdGhlIHNhbWUgYXMgYWJvdmUuIEhXIG5lZWRzIHRvIGtub3cgaW4NCj5h ZHZhbmNlLA0KPj4+PiBpZiBhcHBsaWNhdGlvbiBpcyBnb2luZyB0byB1c2UgZmxvdyBtYXJrcyBh bmQgY29uZmlndXJlIFJ4IHF1ZXVlIHRvDQo+ZW5hYmxlDQo+Pj4+IHRoZSBpbmZvcm1hdGlvbiBk ZWxpdmVyeS4NCj4+PiBXaGF0IHlvdSBkZXNjcmliZWQgaXMgZG9uZSB2aWEgJ3J0ZV9mbG93X2Ny ZWF0ZSgpJyBBUEksIGFwcGxpY2F0aW9uDQo+d2lsbCByZXF1ZXN0DQo+Pj4gdGhvc2UgYWN0aW9u cyB2aWEgQVBJIGFuZCBSeCBxdWV1ZSB3aWxsIGJlIGNvbmZpZ3VyZWQgYWNjb3JkaW5nbHksDQo+ dGhpcyBpcyBtb3JlDQo+Pj4gZHluYW1pYyBhcHByb2FjaC4gV2h5IGFwcGxpY2F0aW9uIG5lZWQg dG8gc2V0IHRoaXMgYWRkaXRpb25hbA0KPmNvbmZpZ3VyYXRpb24gZmxhZz8NCj4+DQo+PiBNb3Jl IGR5bmFtaWMgYXBwcm9hY2ggaXMgZGVmaW5pdGVseSBiZXR0ZXIsIGJ1dCBpdCBpcyBub3QgYWx3 YXlzDQo+cG9zc2libGUuDQo+PiBTb21lIFBNRHMgY2FuJ3QgZXZlbiBjaGFuZ2UgTVRVIGR5bmFt aWNhbGx5IG9yIE1UVSBjaGFuZ2luZw0KPnJlcXVpcmVzDQo+PiByZXN0YXJ0IHdoaWNoIGlzIGhh cmRseSByZWFsbHkgYSBkeW5hbWljIGNoYW5nZS4gT2YgY291cnNlLCBpdCBpcw0KPj4gdW5saWtl bHkgdGhhdA0KPj4gTVRVIGlzIGNoYW5nZWQgd2hlbiB0cmFmZmljIGlzIHJ1bm5pbmcgZXRjLCBi dXQgc3RpbGwgcG9zc2libGUuDQo+PiBUaGUgaW5mb3JtYXRpb24gYWJvdXQgbmVjZXNzaXR5IHRv IHN1cHBvcnQgZmxvdyBtYXJrcyBkZWxpdmVyeSBtYXkNCj4+IGJlIHJlcXVpcmVkIG9uIFJ4IHF1 ZXVlIHNldHVwIGFuZCBjYW5ub3QgYmUgY2hhbmdlZCBkeW5hbWljYWxseQ0KPndoZW4NCj4+IFJ4 IHF1ZXVlIGlzIHJ1bm5pbmcgYW5kIGFwcGxpY2F0aW9uIHdvdWxkIGxpa2UgdG8gYWRkIGZsb3cg cnVsZSB3aXRoDQo+bWFyaw0KPj4gYWN0aW9uLg0KPg0KPkl0IGRvZXNuJ3QgbmVlZCB0byBiZSBj aGFuZ2VkIGR5bmFtaWNhbGx5LCBhcHBsaWNhdGlvbiBjYW4gY2FsbA0KPidydGVfZmxvd192YWxp ZGF0ZSgpJyBhbmQgbGVhcm4gaWYgaXQgY2FuIHNldCB0aGlzIGFjdGlvbiBvciBub3QuIFBlcmhh cHMgSQ0KPmFtDQo+bWlzc2luZyBzb21ldGhpbmcsIHdoZW4gaXQgaXMgcmVxdWlyZWQgdG8gaGF2 ZSB0aGlzIGFzIGNvbmZpZ3VyYXRpb24NCj5vcHRpb24/DQo+DQo+Pg0KPj4+IEFuZCBhcyBhYm92 ZSB0aGUgbmV3IFJYIG9mZmxvYWQgZmxhZ3MgaWdub3JlZCBieSBQTURzLCBoYXJkIHRvDQo+dW5k ZXJzdGFuZCB3aGF0DQo+Pj4gaXMgdGhlIGludGVudGlvbiBoZXJlLg0KPj4+DQo+Pj4NCj4+PiBB Ym92ZSB1c2FnZSBvZiBmbGFncyBmZWVscyBsaWtlIHRoZSBpbnRlbnRpb24gaXMgYWRkaW5nIHNv bWUgY2FwYWJpbGl0eQ0KPj4+IGluZm9ybWF0aW9uIGZvciB0aGUgUE1EcyBtb3JlIHRoYXQgYWRk aW5nIG5ldyBvZmZsb2FkDQo+Y29uZmlndXJhdGlvbi4NCj4+PiBJZiBzbyB0aGlzIGlzIGJpZ2dl ci9vbGRlciBwcm9ibGVtLCBhbmQgaW5zdGVhZCBvZiBhYnVzaW5nIHRoZSBvZmZsb2FkDQo+Zmxh Z3Mgd2UNCj4+PiBjYW4gdGhpbmsgb2YgYW4gQVBJIHRvIHByZXNlbnQgZGV2aWNlIGNhcGFiaWxp dGllcywgYW5kIG1vdmUNCj5mZWF0dXJlcy5pbmkNCj4+PiBjb250ZW50IHRvIHRoZSBBUEkgaW4g bG9uZyB0ZXJtLg0KPj4NCj4+IFdoYXQgSSByZWFsbHkgbGlrZSB3aXRoIHRoZXNlIG5ldyBvZmZs b2FkIGZsYWdzIGZvciBSeCBoYXNoIGFuZCBmbG93DQo+bWFyayBpcw0KPj4gdGhhdCBpdCBtYWtl cyBmZWF0dXJlcyB3aGljaCBwcm92aWRlIGluZm9ybWF0aW9uIGluIG1idWYgb24gUngNCj5jb25z aXN0ZW50Og0KPj4gIMKgLSB3YW50IHRpbWVzdGFtcD8gPT4gREVWX1JYX09GRkxPQURfVElNRVNU QU1QDQo+PiAgwqAtIHdhbnQgUnggY2hlY2tzdW0gZmxhZ3MgPT4gREVWX1JYX09GRkxPQURfQ0hF Q0tTVU0NCj4+ICDCoC0gd2FudCB0byBzdHJpcCBWTEFOPyA9PiBERVZfUlhfT0ZGTE9BRF9WTEFO X1NUUklQDQo+PiAgwqAtIHdhbnQgUlNTIGhhc2g/ID0+IERFVl9SWF9PRkZMT0FEX1JTU19IQVNI DQo+PiAgwqAtIHdhbnQgZmxvdyBtYXJrIHN1cHBvcnQ/ID0+IERFVl9SWF9PRkZMT0FEX0ZMT1df TUFSSw0KPj4NCj4+IEFsc28gaXQgcGVyZmVjdGx5IGZpdHMgZHluYW1pYyBtYnVmIGZpZWxkcyBh bmQgYWxsb3dzIHRvIG1ha2UgUlNTIGhhc2gNCj4+IGFuZCBmbG93IG1hcmsgZmllbGRzIGR5bmFt aWMgd2l0aCB0aGUgbmV3IG9mZmxvYWRzIGFzIGNvbnRyb2xzDQo+DQo+QWdyZWUgUlNTX0hBU0gg Zml0cyB3ZWxsLCBteSBtYWluIGNvbmNlcm4gd2l0aCB0aGUgcGF0Y2hzZXQgaXMgZHJpdmVyDQo+ aW1wbGVtZW50YXRpb25zIGFyZSBtaXNzaW5nIGFuZCBqdXN0IGlnbm9yZWQuDQo+DQoNCklnbm9y aW5nIGRyaXZlciBpbXBsZW1lbnRhdGlvbiBpcyBpbnRlbnRpb25hbCBhcyBpdCBpbnZvbHZlcyBh ZGRpbmcgYSBicmFuY2gNCmluIFJ4IGZhc3RwYXRoIGZ1bmN0aW9uIGZvciBhbGwgZHJpdmVycyBh bmQgbWlnaHQgaGF2ZSAtdmUgZWZmZWN0cyBvbiBwZXJmb3JtYW5jZS4NCg0KPkkgYW0gbm90IHNv IHN1cmUgYWJvdXQgRkxPV19NQVJLIG9uZSwgaXQgbG9va3MgbGlrZSBpdCBpcyBkdXBsaWNhdGlu ZyB0aGUNCj5ydGVfZmxvdyBBUEkuDQo+DQo+Pg0KPj4+Pj4+ICAgIEFkZCBuZXcgcGFja2V0IHR5 cGUgc2V0IGZ1bmN0aW9uDQo+YHJ0ZV9ldGhfZGV2X3NldF9zdXBwb3J0ZWRfcHR5cGVzYCwNCj4+ Pj4+PiAgICBhbGxvd3MgYXBwbGljYXRpb24gdG8gaW5mb3JtIFBNRHMgYWJvdXQgdGhlIHBhY2tl dCB0eXBlcyBpdCBpcw0KPmludGVyZXN0ZWQNCj4+Pj4+PiAgICBpbi4gQmFzZWQgb24gcHR5cGVz IHJlcXVlc3RlZCBieSBhcHBsaWNhdGlvbiBQTURzIGNhbg0KPm9wdGltaXplIHRoZSBSeCBwYXRo Lg0KPj4+Pj4gT0sgdG8gdGhlIEFQSSwgYnV0IHdoeSAiUGFja2V0IHR5cGUgcGFyc2luZyIgZmVh dHVyZSB1cGRhdGVkIHRvDQo+c2F5IGl0IHNob3VsZA0KPj4+Pj4gaW1wbGVtZW50IHRoaXMgQVBJ Pw0KPj4+Pj4gSXMgdGhpcyBBUEkgcmVhbGx5IHJlcXVpcmVkIHRvIHNheSAiUGFja2V0IHR5cGUg cGFyc2luZyIgc3VwcG9ydGVkDQo+YnkgUE1EPw0KPj4+PiBBcyBJIHVuZGVyc3RhbmQgaXQgaXMg bm90IHN0cmljdGx5IHJlcXVpcmVkLCBidXQgcmVsYXRlZCB0byB0aGUgZmVhdHVyZS4NCj4+PiBJ IGFtIE9LIHdpdGggInJlbGF0ZWQiLCBidXQgaXQgaXMgZG9jdW1lbnRlZCBhcyAiaW1wbGVtZW50 cyIsIHNvIGRvYw0KPnNheXMgaXQgaXMNCj4+PiByZXF1aXJlZC4NCj4+DQo+PiBBZ3JlZWQuDQo+ Pg0KPj4+Pj4+ICAgIEZvciBleGFtcGxlLCBpZiBhIGdpdmVuIFBNRCBkb2Vzbid0IHN1cHBvcnQg YW55IHBhY2tldCB0eXBlcw0KPnRoYXQgdGhlDQo+Pj4+Pj4gICAgYXBwbGljYXRpb24gaXMgaW50 ZXJlc3RlZCBpbiB0aGVuIHRoZSBhcHBsaWNhdGlvbiBjYW4gZGlzYWJsZVsxXQ0KPndyaXRlcyB0 bw0KPj4+Pj4+ICAgIGBtYnVmLnBhY2tldF90eXBlYCBkb25lIGJ5IHRoZSBQTUQgYW5kIHVzZSBh IHNvZnR3YXJlDQo+cHR5cGUgcGFyc2VyLg0KPj4+Pj4+ICAgICAgICAgWzFdIHJ0ZV9ldGhfZGV2 X3NldF9zdXBwb3J0ZWRfcHR5cGVzKCpwb3J0X2lkKiwNCj5SVEVfUFRZUEVfVU5LTk9XTiwNCj4+ Pj4+PiAJCQkJCSAgTlVMTCwgMCk7DQo+Pj4+PiBBbmQgZm9yIHRoZSA3LzcgcGF0Y2gsIHdoeSB3 ZSBhcmUgdXBkYXRpbmcgYWxsIGV4YW1wbGVzLCBpcyB0aGUNCj5BUEkgc29tZXRoaW5nIGRvDQo+ Pj4+PiB3ZSByZWFsbHkgbmVlZCB0byBjYWxsIGZvciBhbnkgRFBESyBhcHBsaWNhdGlvbj8gSSBh bSBmb3IgbGVhdmluZw0KPnRoZSBkZWZhdWx0DQo+Pj4+PiBiZWhhdmlvciB1bmxlc3MgdGhlcmUg aXMgYSB2ZXJ5IHNwZWNpZmljIGNhc2UgZm9yIHNldCBvciBkaXNhYmxlDQo+cGFja2V0IHR5cGlu Zy4NCj4+Pj4+IEluc3RlYWQgaW1wbGVtZW50IGEgY29tbWFuZCBpbiB0ZXN0cG1kIHRvIHRlc3Qg dGhpcyBmZWF0dXJlLg0KPj4+PiBJZiBhbiBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgcGFja2V0 IHR5cGVzIHByb3ZpZGVkIGluIG1idWYsIGl0IGlzDQo+Pj4+IGJldHRlciB0byBpbmZvcm0gUE1E IHRoYXQgdGhlIGluZm9ybWF0aW9uIGlzIG5vdCByZXF1aXJlZCB0byBhbGxvdw0KPlBNRA0KPj4+ PiB0byBkbyBvcHRpbWl6YXRpb25zLg0KPj4+Pg0KPj4+IEkgY2FuIHNlZSBkaXNhYmxpbmcgcGFj a2V0IHR5cGUgZGV0ZWN0aW9uIG1heSBpbmNyZWFzZSB0aGUNCj5wZXJmb3JtYW5jZSBidXQNCj4+ PiBzYW1wbGUgYXBwbGljYXRpb25zIGFyZSB0byBkZW1vbnN0cmF0ZSBhIHNwZWNpZmljIGZlYXR1 cmUsIGFkZGluZw0KPnRoZXNlIGtpbmQgb2YNCj4+PiBBUElzIHdpbGwgcG9sbHV0ZSB0aGVtLg0K Pj4+ICdza2VsZXRvbicgYXBwIHRoYXQgc2hvd3MgdGhlIG1vc3QgYmFzaWMgY29kZSBmb3IgZm9y d2FyZGluZw0KPnNhbXBsZSwgd2h5IGl0IGlzDQo+Pj4gbm93IGhhdmluZyAiZXhwZXJpbWVudGFs IiAnc2V0X3N1cHBvcnRlZF9wdHlwZXMoKScgQVBJPyBTYW1lIGZvcg0KPm90aGVyLiBBcyBzYWlk DQo+Pj4gYmVmb3JlIEkgdGhpbmsgYSB0ZXN0cG1kIGNvbW1hbmQgc3VpdHMgYmV0dGVyIGhlcmUu DQo+Pg0KPj4gTWF5IGJlIHlvdSdyZSByaWdodCBhbmQgd2Ugc2hvdWxkIHJlY29uc2lkZXIgd2hp Y2ggYXBwbGljYXRpb25zDQo+PiBhcmUgdXBkYXRlZCBhbmQgd2hpY2ggYXJlIGlnbm9yZWQuIEkg Z3Vlc3MgYmVmb3JlIHRoZSBjcml0ZXJpYQ0KPj4gd2FzIHNpbXBsZTogZG9uJ3QgdXNlIHBhY2tl dCB0eXBlIGluZm9ybWF0aW9uLCBzYXkgc28gdG8gdGFrZQ0KPj4gYmVuZWZpdHMgZnJvbSBhbGwg cG9zc2libGUgb3B0aW1pemF0aW9ucy4NCj4+DQo+Pj4+IFllcywgbWF5IGJlIGl0IHdvdWxkIGJl IGJldHRlciB0byBoYXZlIGl0IGFzIHRoZQ0KPj4+PiBkZWZhdWx0IGJlaGF2aW91ciwgYnV0IGl0 IHdvdWxkIGJlIGJlaGF2aW91ciBjaGFuZ2UgaW4gY29tcGFyaXNvbg0KPj4+PiB0byBwcmV2aW91 cyBEUERLIHJlbGVhc2VzIGFuZCBpdCBpcyBiZXR0ZXIgdG8gYXZvaWQgaXQuDQo+Pj4gU29ycnkg SSBtaXNzZWQgd2h5IG5vdCBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gY2F1c2UgYmVoYXZpb3IgY2hh bmdlPyBJDQo+dGhpbmsgaXQNCj4+PiBpcyBvdGhlciB3YXkgYXJvdW5kLCBubz8NCj4+DQo+PiBK dXN0IG1pc3VuZGVyc3RhbmRpbmcuIFdoYXQgSSB3YXMgdHJ5aW5nIHRvIHNheSBpcyB0aGF0IGl0 IGNvdWxkDQo+PiBiZSBtb3JlIGxvZ2ljYWwgdG8gaGF2ZSBwYWNrZXQgdHlwZSBwYXJzaW5nIGFu ZCBkZWxpdmVyeQ0KPj4gZGlzYWJsZWQgYnkgZGVmYXVsdMKgIChhcyB3ZSBoYXZlIGZvciBhbGwg b3RoZXIgb2ZmbG9hZHMpLCBidXQNCj4+IGl0IHdvdWxkIGJlIGJlaGF2aW91ciBjaGFuZ2UgZnJv bSBhcHBsaWNhdGlvbiBwb2ludCBvZiB2aWV3Lg0KPj4gVGhhdCdzIHdoeSBpdCBpcyBuZWNlc3Nh cnkgdG8gZGlzYWJsZSBleHBsaWNpdGx5Lg0KPj4NCj4+IFRoYW5rcywNCj4+IEFuZHJldy4NCj4+ DQo+Pj4+IFRoYW5rcywNCj4+Pj4gQW5kcmV3Lg0KPj4+Pg0KPj4+Pj4+IHYxMiBDaGFuZ2VzOg0K Pj4+Pj4+IC0tLS0tLS0tLS0tDQo+Pj4+Pj4gLSBSZWJhc2Ugb250byBuZXh0LW5ldC4NCj4+Pj4+ Pg0KPj4+Pj4+IHYxMSBDaGFuZ2VzOg0KPj4+Pj4+IC0tLS0tLS0tLS0tDQo+Pj4+Pj4gLSBVc2Ug UlRFX0RJTSB0byBnZXQgYXJyYXkgc2l6ZS4NCj4+Pj4+PiAtIFNpbmNlIHdlIGFyZSB1c2luZyBh IGxpc3Qgb2YgTUFTS3MgdG8gdmFsaWRhdGUgcHR5cGVfbWFzaw0KPnJldHVybiAtRUlOVkFMDQo+ Pj4+Pj4gICAgIGlmIGFueSB1bmtub3duIG1hc2sgaXMgc2V0Lg0KPj4+Pj4+IC0gUmViYXNlIHRv IFRPVC4NCj4+Pj4+Pg0KPj4+Pj4+IHYxMCBDaGFuZ2VzOg0KPj4+Pj4+IC0tLS0tLS0tLS0tDQo+ Pj4+Pj4gLSBNb2RpZnkgcHR5cGVfbWFzayB2YWxpZGF0aW9uIGluDQo+c2V0X3N1cHBvcnRlZF9w dHlwZXMuKEFuZHJldykNCj4+Pj4+Pg0KPj4+Pj4+IHY5IENoYW5nZXM6DQo+Pj4+Pj4gLS0tLS0t LS0tLQ0KPj4+Pj4+IC0gQWRkIHB0eXBlX21hc2sgdmFsaWRhdGlvbiBpbiBzZXRfc3VwcG9ydGVk X3B0eXBlcy4oQW5kcmV3KQ0KPj4+Pj4+IC0gTWFrZSBkZXNjcmlwdGlvbiBtb3JlIHZlcmJvc2Uu DQo+Pj4+Pj4NCj4+Pj4+PiB2OCBDaGFuZ2VzOg0KPj4+Pj4+IC0tLS0tLS0tLS0NCj4+Pj4+PiAt IE1ha2UgZGVzY3JpcHRpb24gbW9yZSB2ZXJib3NlLg0KPj4+Pj4+IC0gU2V0IFJURV9QVFlQRV9V TktOT1dOIGluIHNldF9wdHlwZXMgYXJyYXkgd2hlbiBlaXRoZXINCj5nZXQgb3Qgc2V0IHB0eXBl cw0KPj4+Pj4+ICAgICBpcyBub3Qgc3VwcG9ydGVkIGJ5IGV0aGVybmV0IGRldmljZS4NCj4+Pj4+ Pg0KPj4+Pj4+IHY3IENoYW5nZXM6DQo+Pj4+Pj4gLS0tLS0tLS0tLQ0KPj4+Pj4+IC0gRml4IHVu dXNlZCB2YXJpYWJsZSBpbiBuZXQvb2N0ZW9udHgyDQo+Pj4+Pj4NCj4+Pj4+PiB2NiBDaGFuZ2Vz Og0KPj4+Pj4+IC0tLS0tLS0tLS0NCj4+Pj4+PiAtIEFkZCBhZGRpdGlvbmFsIGNoZWNrcyBmb3Ig c2V0IHN1cHBvcnRlZCBwdHlwZXMuKEFuZHJldykNCj4+Pj4+PiAtIENsYXJpZnkgYHJ0ZV9ldGhf ZGV2X3NldF9zdXBwb3J0ZWRfcHR5cGVzYCBkb2N1bWVudGF0aW9uLg0KPj4+Pj4+IC0gUmVtb3Zl IERFVl9SWF9PRkZMT0FEX0ZMT1dfTUFSSyBlbXVsYXRpb24gZnJvbQ0KPm5ldC9vY3Rlb250eDIu DQo+Pj4+Pj4NCj4+Pj4+PiB2NSBDaGFuZ2VzOg0KPj4+Pj4+IC0tLS0tLS0tLS0NCj4+Pj4+PiAt IEZpeCB0eXBvcy4NCj4+Pj4+Pg0KPj4+Pj4+IHY0IENoYW5nZXM6DQo+Pj4+Pj4gLS0tLS0tLS0t LQ0KPj4+Pj4+IC0gU2V0IHRoZSBsYXN0IGVsZW1lbnQgaW4gc2V0X3B0eXBlIGFycmF5IGFzDQo+ UlRFX1BUWVBFX1VOS05PV04gdG8gbWFyayB0aGUgZW5kDQo+Pj4+Pj4gICAgIG9mIGFycmF5Lg0K Pj4+Pj4+IC0gRml4IGludmFsaWQgc2V0IHB0eXBlIGZ1bmN0aW9uIGNhbGwgaW4gZXhhbXBsZXMu DQo+Pj4+Pj4gLSBSZW1vdmUgc2V0dGluZyBydGVfZXRoX2Rldl9zZXRfc3VwcG9ydGVkX3B0eXBl cyB0bw0KPlVOS05PV04gaW4gbDNmd2QtcG93ZXIuDQo+Pj4+Pj4NCj4+Pj4+PiB2MyBDaGFuZ2Vz Og0KPj4+Pj4+IC0tLS0tLS0tLS0NCj4+Pj4+PiAtIEFkZCBtaXNzaW5nIHJlbGVhc2Ugbm90ZXMu IChBbmRyZXcpDQo+Pj4+Pj4gLSBSZS13b3JkIHZhcmlvdXMgZGVzY3JpcHRpb25zLg0KPj4+Pj4+ IC0gRml4IHB0eXBlIHNldCBsb2dpYy4NCj4+Pj4+Pg0KPj4+Pj4+IHYyIENoYW5nZXM6DQo+Pj4+ Pj4gLS0tLS0tLS0tLQ0KPj4+Pj4+IC0gVXBkYXRlIHJlbGVhc2Ugbm90ZXMuIChBbmRyZXcpDQo+ Pj4+Pj4gLSBSZWRvIGNvbW1pdCBsb2dzLiAoQW5kcmV3KQ0KPj4+Pj4+IC0gRGlzYWJsZSBwdHlw ZSBwYXJzaW5nIGZvciB1bnN1cHBvcnRlZCBleGFtcGxlcy4gKEplcmluKQ0KPj4+Pj4+IC0gRGlz YWJsZSBSU1Mgd3JpdGUgb25seSBpbiBnZW5lcmljIG1vZGUgZXZlbnRkZXZfcGlwZWxpbmUuDQo+ KEplcmluKQ0KPj4+Pj4+IC0gTW9kaWZ5IHNldF9zdXBwb3J0ZWRfcHR5cGVzIGZ1bmN0aW9uIHRv IHJldHVybiBzdWNjZXNzZnVseQ0KPnNldCBtYXNrDQo+Pj4+Pj4gICAgIGluc3RlYWQgb2YgZmFp bHVyZS4NCj4+Pj4+PiAtIERyb3BwZWQgc2V0X3N1cHBvcnRlZF9wdHlwZXMgdG8gZHJpdmVycyBi eSBoYW5kbGluZyBpbiBsaWJyYXJ5DQo+Pj4+Pj4gICAgIGxheWVyLCBpbnRlcmVzdGVkIFBNRCBj YW4gYWRkIGl0IGluLg0KPj4+Pj4+DQo+Pj4+Pj4gUGF2YW4gTmlraGlsZXNoICg3KToNCj4+Pj4+ PiAgICAgZXRoZGV2OiBhZGQgc2V0IHB0eXBlIGZ1bmN0aW9uDQo+Pj4+Pj4gICAgIGV0aGRldjog YWRkIG1idWYgUlNTIHVwZGF0ZSBhcyBhbiBvZmZsb2FkDQo+Pj4+Pj4gICAgIGV0aGRldjogYWRk IGZsb3cgYWN0aW9uIHR5cGUgdXBkYXRlIGFzIGFuIG9mZmxvYWQNCj4+Pj4+PiAgICAgZHJpdmVy cy9uZXQ6IHVwZGF0ZSBSeCBSU1MgaGFzaCBvZmZsb2FkIGNhcGFiaWxpdGllcw0KPj4+Pj4+ICAg ICBkcml2ZXJzL25ldDogdXBkYXRlIFJ4IGZsb3cgZmxhZyBhbmQgbWFyayBjYXBhYmlsaXRpZXMN Cj4+Pj4+PiAgICAgZXhhbXBsZXMvZXZlbnRkZXZfcGlwZWxpbmU6IGFkZCBuZXcgUnggUlNTIGhh c2ggb2ZmbG9hZA0KPj4+Pj4+ICAgICBleGFtcGxlczogZGlzYWJsZSBSeCBwYWNrZXQgdHlwZSBw YXJzaW5nDQo+Pj4+PiA8Li4uPg0KPj4NCg0K