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 91BFAA00BE; Wed, 30 Oct 2019 11:03:55 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 974721BF9F; Wed, 30 Oct 2019 11:03:54 +0100 (CET) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70075.outbound.protection.outlook.com [40.107.7.75]) by dpdk.org (Postfix) with ESMTP id 8BF971BF9C for ; Wed, 30 Oct 2019 11:03:52 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PsjpkL2p0eXiHkW+JjzkqUIem9j81rBaR2BXEeEdIoUSrZdTfEzyUo0RsHXMrBkM6UJXluEHeW9PJvggtHEOkVcgZpWO2z+roewLYOV/p4kHKtD7hFfnRJCdc/AtVTOtkDdXGNLY3+PhS73WapyxwdHbZ2/4TdTudtUM1/hFhq3aO9s8nv8/JREilrg9UpfFvXGp+gPkb+Xf8aNcTDfSzanSDURxkB3Si3EE5Ht+es8Zihg3DASJe0UUTR1LCWmMigEFZs1yVeoUz+bDqBxMLn4BhSuqrP8Ig2B6EzgZxGjZT9OE+n/ZSPEdMAH9yPmKS6dNAFdNFwhGgbaqZUTVGw== 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=Zg8+Q/qjYigaEmXtREXmK+Oc5nak8vDetDgLHSarwSQ=; b=FB3UiP/3/WQnGYTs2vsmmGF8t/bIkGw6C5Lx05qXrJNLm55kCR7FhhIbEtRiNMhnhAOEJdQJVEzR+VLUJT8cWsKSVRtVAMWmNl7ma+UXZFtr6PQFCbVY5yAa1+lm0xEur2tDPqzcLdkG09aGsQLUOXkt3kQw1LiZy7FYmWswEAoYTiLKKHenUkWZQF/33R5h7/+w/hnLai7VyRQ8lItmGs+xZi9l44B1KMKDswwKbzqetnJC1urR80FnJLooKtCrtg4NrW7OPSs5kY629cJ7RRyoPxpurfD59j9Uk3vJo2u3BYu4c5KkHP21cgAMOLV4MmYqqYZRTBErDuq5O7ULhQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Zg8+Q/qjYigaEmXtREXmK+Oc5nak8vDetDgLHSarwSQ=; b=Nkb+lxLSgviswuVbddZWyOAjNAh2OoaWTntUgpBJHOW9J7m9t11MkQDOFq+QEWiuGCFQTlwCkVsHlR6I3ybXT6r/0EuofTrB4Pd7YWrQUNFstMhuKljCfpd4ng494/JUsqrYWy1D2xyC1ptmOb5olyVnua+FVMfCYbOlAkuyihM= Received: from AM4PR05MB3265.eurprd05.prod.outlook.com (10.171.188.154) by AM4PR05MB3266.eurprd05.prod.outlook.com (10.171.190.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.20; Wed, 30 Oct 2019 10:03:50 +0000 Received: from AM4PR05MB3265.eurprd05.prod.outlook.com ([fe80::edab:529f:d14e:d3b]) by AM4PR05MB3265.eurprd05.prod.outlook.com ([fe80::edab:529f:d14e:d3b%7]) with mapi id 15.20.2387.027; Wed, 30 Oct 2019 10:03:50 +0000 From: Slava Ovsiienko To: Andrew Rybchenko , Thomas Monjalon , "olivier.matz@6wind.com" CC: "dev@dpdk.org" , Matan Azrad , Ori Kam , Yongseok Koh Thread-Topic: [dpdk-dev] [PATCH v4] ethdev: extend flow metadata Thread-Index: AQHVjPYP3yCquRGX4Ean9kYpOkOfjqdx0C4AgAAEMrCAAPrZAIAAD5UwgAANVCA= Date: Wed, 30 Oct 2019 10:03:50 +0000 Message-ID: References: <1571922495-4588-1-git-send-email-viacheslavo@mellanox.com> <1572201636-16374-1-git-send-email-viacheslavo@mellanox.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=viacheslavo@mellanox.com; x-originating-ip: [95.164.10.10] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: eb9928e3-2753-47ba-4932-08d75d207655 x-ms-traffictypediagnostic: AM4PR05MB3266:|AM4PR05MB3266: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 02065A9E77 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(366004)(136003)(376002)(396003)(39860400002)(13464003)(51444003)(189003)(199004)(66946007)(66446008)(55016002)(2940100002)(30864003)(81166006)(64756008)(2501003)(76116006)(4326008)(66476007)(66556008)(2906002)(86362001)(81156014)(71190400001)(256004)(71200400001)(14444005)(7696005)(8676002)(6116002)(3846002)(5660300002)(478600001)(26005)(102836004)(52536014)(76176011)(6506007)(8936002)(53546011)(6436002)(9686003)(486006)(11346002)(33656002)(229853002)(186003)(54906003)(99286004)(74316002)(66066001)(446003)(7736002)(25786009)(476003)(110136005)(14454004)(305945005)(6246003)(107886003)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB3266; H:AM4PR05MB3265.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 4FkoLyctrESGcp7FPN7ElujX0vEyJwhQo79bWKGMK82D6Tix2EE6xDHJ+9hqX5lLDDN9srWC+Hy30GLEHIGdB7GHHoTwxKHRlxSykXJSL3eyeQ9Z7HSVbQX9y3hhz+lLAIQ4a8W/+scuiGFcwuyyvtBSA0i9RIEzfg5s6F3baKD3JE134A3Hu+oY3MLwkzSmiJ+yLyGBQhF3n0JOlkaabKxh/a7AXgmriEnB8S+/tMtyY+BAwUI8rvPr3UHpZkW1lNPdBZVOzmWsFlVAdwq+9Iar/2yZcUzxDyB63ef1xgukhx0D+F8XXMdA9iA0zRrCSVUqDABw4oU+Sbx2dDNri67p86plriDWXdaXD9BBVNwj6+opc9HuupktHx/+DW/vLACqDIDq3BlyxKVfmRkEyc9o8TMnstLbqvPq80+7YO9TMUh0y0QLfeP0i/nvV0Sd Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb9928e3-2753-47ba-4932-08d75d207655 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Oct 2019 10:03:50.0592 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ogMJd7EeT9yw88yGW3ul3qH5lBCE4mvSe2uaXKir4ywKMezx+VIaBh477Mn+Sn80VKE6ssrbmtxZlfzrwMGqmVGbvUcZdgCliugz8YwHH2E= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB3266 Subject: Re: [dpdk-dev] [PATCH v4] ethdev: extend flow metadata 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" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTbGF2YSBPdnNpaWVua28NCj4g U2VudDogV2VkbmVzZGF5LCBPY3RvYmVyIDMwLCAyMDE5IDExOjAwDQo+IFRvOiBBbmRyZXcgUnli Y2hlbmtvIDxhcnliY2hlbmtvQHNvbGFyZmxhcmUuY29tPjsgVGhvbWFzIE1vbmphbG9uDQo+IDx0 aG9tYXNAbW9uamFsb24ubmV0Pjsgb2xpdmllci5tYXR6QDZ3aW5kLmNvbQ0KPiBDYzogZGV2QGRw ZGsub3JnOyBNYXRhbiBBenJhZCA8bWF0YW5AbWVsbGFub3guY29tPjsgT3JpIEthbQ0KPiA8b3Jp a2FAbWVsbGFub3guY29tPjsgWW9uZ3Nlb2sgS29oIDx5c2tvaEBtZWxsYW5veC5jb20+DQo+IFN1 YmplY3Q6IFJFOiBbZHBkay1kZXZdIFtQQVRDSCB2NF0gZXRoZGV2OiBleHRlbmQgZmxvdyBtZXRh ZGF0YQ0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IEFuZHJl dyBSeWJjaGVua28gPGFyeWJjaGVua29Ac29sYXJmbGFyZS5jb20+DQo+ID4gU2VudDogV2VkbmVz ZGF5LCBPY3RvYmVyIDMwLCAyMDE5IDk6MzUNCj4gPiBUbzogU2xhdmEgT3ZzaWllbmtvIDx2aWFj aGVzbGF2b0BtZWxsYW5veC5jb20+OyBUaG9tYXMgTW9uamFsb24NCj4gPiA8dGhvbWFzQG1vbmph bG9uLm5ldD47IG9saXZpZXIubWF0ekA2d2luZC5jb20NCj4gPiBDYzogZGV2QGRwZGsub3JnOyBN YXRhbiBBenJhZCA8bWF0YW5AbWVsbGFub3guY29tPjsgT3JpIEthbQ0KPiA+IDxvcmlrYUBtZWxs YW5veC5jb20+OyBZb25nc2VvayBLb2ggPHlza29oQG1lbGxhbm94LmNvbT4NCj4gPiBTdWJqZWN0 OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjRdIGV0aGRldjogZXh0ZW5kIGZsb3cgbWV0YWRhdGEN Cj4gPg0KPiA+IEBPbGl2aWVyLCBwbGVhc2UsIHRha2UgYSBsb29rIGF0IHRoZSBlbmQgb2YgdGhl IG1haWwuDQo+ID4NCj4gPiBPbiAxMC8yOS8xOSA4OjE5IFBNLCBTbGF2YSBPdnNpaWVua28gd3Jv dGU6DQo+ID4gPiBIaSwgQW5kcmV3DQo+ID4gPg0KPiA+ID4gVGhhbmsgeW91IGZvciB0aGUgcmV2 aWV3Lg0KPiA+ID4NCj4gPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4+IEZy b206IEFuZHJldyBSeWJjaGVua28gPGFyeWJjaGVua29Ac29sYXJmbGFyZS5jb20+DQo+ID4gPj4g U2VudDogVHVlc2RheSwgT2N0b2JlciAyOSwgMjAxOSAxODoyMg0KPiA+ID4+IFRvOiBTbGF2YSBP dnNpaWVua28gPHZpYWNoZXNsYXZvQG1lbGxhbm94LmNvbT47IGRldkBkcGRrLm9yZw0KPiA+ID4+ IENjOiBUaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+OyBNYXRhbiBBenJhZA0K PiA+ID4+IDxtYXRhbkBtZWxsYW5veC5jb20+OyBvbGl2aWVyLm1hdHpANndpbmQuY29tOyBPcmkg S2FtDQo+ID4gPj4gPG9yaWthQG1lbGxhbm94LmNvbT47IFlvbmdzZW9rIEtvaCA8eXNrb2hAbWVs bGFub3guY29tPg0KPiA+ID4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2NF0gZXRo ZGV2OiBleHRlbmQgZmxvdyBtZXRhZGF0YQ0KPiA+ID4+DQo+ID4gPj4gT24gMTAvMjcvMTkgOTo0 MCBQTSwgVmlhY2hlc2xhdiBPdnNpaWVua28gd3JvdGU6DQo+ID4gPj4+IEN1cnJlbnRseSwgbWV0 YWRhdGEgY2FuIGJlIHNldCBvbiBlZ3Jlc3MgcGF0aCB2aWEgbWJ1ZiB0eF9tZXRhZGF0YQ0KPiA+ ID4+PiBmaWVsZCB3aXRoIFBLVF9UWF9NRVRBREFUQSBmbGFnIGFuZCBSVEVfRkxPV19JVEVNX1RZ UEVfTUVUQQ0KPiA+ID4+IG1hdGNoZXMgbWV0YWRhdGEuDQo+ID4gPj4+IFRoaXMgcGF0Y2ggZXh0 ZW5kcyB0aGUgbWV0YWRhdGEgZmVhdHVyZSB1c2FiaWxpdHkuDQo+ID4gPj4+DQo+ID4gPj4+IDEp IFJURV9GTE9XX0FDVElPTl9UWVBFX1NFVF9NRVRBDQo+ID4gPj4+DQo+ID4gPj4+IFdoZW4gc3Vw cG9ydGluZyBtdWx0aXBsZSB0YWJsZXMsIFR4IG1ldGFkYXRhIGNhbiBhbHNvIGJlIHNldCBieSBh DQo+ID4gPj4+IHJ1bGUgYW5kIG1hdGNoZWQgYnkgYW5vdGhlciBydWxlLiBUaGlzIG5ldyBhY3Rp b24gYWxsb3dzIG1ldGFkYXRhDQo+ID4gPj4+IHRvIGJlIHNldCBhcyBhIHJlc3VsdCBvZiBmbG93 IG1hdGNoLg0KPiA+ID4+Pg0KPiA+ID4+PiAyKSBNZXRhZGF0YSBvbiBpbmdyZXNzDQo+ID4gPj4+ DQo+ID4gPj4+IFRoZXJlJ3MgYWxzbyBuZWVkIHRvIHN1cHBvcnQgbWV0YWRhdGEgb24gaW5ncmVz cy4gTWV0YWRhdGEgY2FuIGJlDQo+ID4gPj4+IHNldCBieSBTRVRfTUVUQSBhY3Rpb24gYW5kIG1h dGNoZWQgYnkgTUVUQSBpdGVtIGxpa2UgVHguIFRoZSBmaW5hbA0KPiA+ID4+PiB2YWx1ZSBzZXQg YnkgdGhlIGFjdGlvbiB3aWxsIGJlIGRlbGl2ZXJlZCB0byBhcHBsaWNhdGlvbiB2aWENCj4gPiA+ Pj4gbWV0YWRhdGEgZHluYW1pYyBmaWVsZCBvZiBtYnVmIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZCBi eQ0KPiA+ID4+IFJURV9GTE9XX0RZTkZfTUVUQURBVEEoKS4NCj4gPiA+Pj4gUEtUX1JYX0RZTkZf TUVUQURBVEEgZmxhZyB3aWxsIGJlIHNldCBhbG9uZyB3aXRoIHRoZSBkYXRhLg0KPiA+ID4+Pg0K PiA+ID4+PiBUaGUgbWJ1ZiBkeW5hbWljIGZpZWxkIG11c3QgYmUgcmVnaXN0ZXJlZCBieSBjYWxs aW5nDQo+ID4gPj4+IHJ0ZV9mbG93X2R5bmZfbWV0YWRhdGFfcmVnaXN0ZXIoKSBwcmlvciB0byB1 c2UgU0VUX01FVEEgYWN0aW9uLg0KPiA+ID4+Pg0KPiA+ID4+PiBUaGUgYXZhaWxhYmlsaXR5IG9m IGR5bmFtaWMgbWJ1ZiBtZXRhZGF0YSBmaWVsZCBjYW4gYmUgY2hlY2tlZA0KPiA+ID4+PiB3aXRo DQo+ID4gPj4+IHJ0ZV9mbG93X2R5bmZfbWV0YWRhdGFfYXZhaWwoKSByb3V0aW5lLg0KPiA+ID4+ Pg0KPiA+ID4+PiBGb3IgbG9vcGJhY2svaGFpcnBpbiBwYWNrZXQsIG1ldGFkYXRhIHNldCBvbiBS eC9UeCBtYXkgb3IgbWF5IG5vdA0KPiA+ID4+PiBiZSBwcm9wYWdhdGVkIHRvIHRoZSBvdGhlciBw YXRoIGRlcGVuZGluZyBvbiBoYXJkd2FyZSBjYXBhYmlsaXR5Lg0KPiA+ID4+Pg0KPiA+ID4+PiBT aWduZWQtb2ZmLWJ5OiBZb25nc2VvayBLb2ggPHlza29oQG1lbGxhbm94LmNvbT4NCj4gPiA+Pj4g U2lnbmVkLW9mZi1ieTogVmlhY2hlc2xhdiBPdnNpaWVua28gPHZpYWNoZXNsYXZvQG1lbGxhbm94 LmNvbT4NCj4gPiA+PiBBYm92ZSBleHBsYW5hdGlvbnMgbGFjayBpbmZvcm1hdGlvbiBhYm91dCAi bWV0YSIgdnMgIm1hcmsiIHdoaWNoDQo+ID4gPj4gbWF5IGJlIHNldCBvbiBSeCBhcyB3ZWxsIGFu ZCBkZWxpdmVyZWQgaW4gb3RoZXIgbWJ1ZiBmaWVsZC4NCj4gPiA+PiBJdCBzaG91bGQgYmUgZXhw bGFpbmVkIGJ5IG9uZSBtb3JlIGZpZWxkIGlzIHJlcXVpcmVkIGFuZCBydWxlcyBkZWZpbmVkLg0K PiA+ID4gVGhlcmUgaXMgc29tZSBzdG9yeSBhYm91dCBtZXRhZGF0YSBmZWF0dXJlcy4NCj4gPiA+ IEluaXRpYWxseSwgdGhlcmUgd2VyZSBwcm9wb3NlZCB0d28gbWV0YWRhdGEgcmVsYXRlZCBhY3Rp b25zOg0KPiA+ID4NCj4gPiA+IC0gUlRFX0ZMT1dfQUNUSU9OX1RZUEVfRkxBRw0KPiA+ID4gLSBS VEVfRkxPV19BQ1RJT05fVFlQRV9NQVJLDQo+ID4gPg0KPiA+ID4gVGhlc2UgYWN0aW9ucyBzZXQg dGhlIHNwZWNpYWwgZmxhZyBpbiB0aGUgcGFja2V0IG1ldGFkYXRhLCBNQVJLDQo+ID4gPiBhY3Rp b24gc3RvcmVzIHNvbWUgc3BlY2lmaWVkIHZhbHVlIGluIHRoZSBtZXRhZGF0YSBzdG9yYWdlLCBh bmQsIG9uDQo+ID4gPiB0aGUgcGFja2V0IHJlY2VpdmluZyBQTUQgcHV0cyB0aGUgZmxhZyBhbmQg dmFsdWUgdG8gdGhlIG1idWYgYW5kDQo+ID4gPiBhcHBsaWNhdGlvbnMgY2FuIHNlZSB0aGUgcGFj a2V0IHdhcyB0aHJlYXRlZCBpbnNpZGUgZmxvdyBlbmdpbmUNCj4gPiA+IGFjY29yZGluZyB0byB0 aGUgYXBwcm9wcmlhdGUgUlRFIGZsb3cocykuIE1BUksgYW5kIEZMQUcgYXJlIGxpa2UNCj4gPiA+ IHNvbWUga2luZCBvZiBnYXRld2F5IHRvIHRyYW5zZmVyIHNvbWUgcGVyLXBhY2tldCBpbmZvcm1h dGlvbiBmcm9tDQo+ID4gPiB0aGUgZmxvdw0KPiA+IGVuZ2luZSB0byB0aGUgYXBwbGljYXRpb24g dmlhIHJlY2VpdmluZyBkYXRhcGF0aC4NCj4gPiA+DQo+ID4gPiAgRnJvbSB0aGUgZGF0YXBhdGgg cG9pbnQgb2YgdmlldywgdGhlIE1BUksgYW5kIEZMQUcgYXJlIHJlbGF0ZWQgdG8NCj4gPiA+IHRo ZQ0KPiA+IHJlY2VpdmluZyBzaWRlIG9ubHkuDQo+ID4gPiBJdCB3b3VsZCB1c2VmdWwgdG8gaGF2 ZSB0aGUgc2FtZSBnYXRld2F5IG9uIHRoZSB0cmFuc21pdHRpbmcgc2lkZQ0KPiA+ID4gYW5kIHRo ZXJlIHdhcyB0aGUgZmVhdHVyZSBvZiB0eXBlIFJURV9GTE9XX0lURU1fVFlQRV9NRVRBIHdhcw0K PiA+IHByb3Bvc2VkLg0KPiA+ID4gVGhlIGFwcGxpY2F0aW9uIGNhbiBmaWxsIHRoZSBmaWVsZCBp biBtYnVmIGFuZCB0aGlzIHZhbHVlIHdpbGwgYmUNCj4gPiA+IHRyYW5zZmVycmVkIHRvDQo+ID4g c29tZSBmaWVsZCBpbiB0aGUgcGFja2V0IG1ldGFkYXRhIGluc2lkZSB0aGUgZmxvdyBlbmdpbmUu DQo+ID4gPiBJdCBkaWQgbm90IG1hdHRlciB3aGV0aGVyIHRoZXNlIG1ldGFkYXRhIGZpZWxkcyBh cmUgc2hhcmVkIGJlY2F1c2UNCj4gPiA+IG9mIE1BUksgYW5kIE1FVEEgaXRlbXMgYmVsb25nZWQg dG8gZGlmZmVyZW50IGRvbWFpbnMgKHJlY2VpdmluZyBhbmQNCj4gPiB0cmFuc21pdHRpbmcpIGFu ZCBjb3VsZCBiZSB2ZW5kb3Itc3BlY2lmaWMuDQo+ID4gPg0KPiA+ID4gU28gZmFyLCBzbyBnb29k LCBEUERLIHByb3Bvc2VzIHNvbWUgZW50aXRpZXMgdG8gY29udHJvbCBtZXRhZGF0YQ0KPiA+ID4g aW5zaWRlIHRoZSBmbG93IGVuZ2luZSBhbmQgZ2F0ZXdheXMgdG8gZXhjaGFuZ2UgdGhlc2UgdmFs dWVzIG9uIGENCj4gPiA+IHBlci0NCj4gPiBwYWNrZXQgYmFzaXMgdmlhIGRhdGFwYXRocy4NCj4g PiA+DQo+ID4gPiBBcyB3ZSBjYW4gc2VlLCB0aGUgTUFSSyBhbmQgTUVUQSBtZWFucyBhcmUgbm90 IHN5bW1ldHJpYywgdGhlcmUgaXMNCj4gPiA+IGFic2VudCBhY3Rpb24gd2hpY2ggd291bGQgYWxs b3cgdXMgdG8gc2V0IE1FVEEgdmFsdWUgb24gdGhlDQo+ID4gPiB0cmFuc21pdHRpbmcNCj4gPiBw YXRoLiBTbywgdGhlIGFjdGlvbiBvZiB0eXBlOg0KPiA+ID4gLSBSVEVfRkxPV19BQ1RJT05fVFlQ RV9TRVRfTUVUQSBpcyBwcm9wb3NlZC4NCj4gPiA+DQo+ID4gPiBUaGUgbmV4dCwgYXBwbGljYXRp b25zIHJhaXNlIHRoZSBuZXcgcmVxdWlyZW1lbnRzIGZvciBwYWNrZXQgbWV0YWRhdGEuDQo+ID4g PiBUaGUgZmxvdyBlbmdpbmVzIGFyZSBnZXR0aW5nIG1vcmUgY29tcGxleCwgaW50ZXJuYWwgc3dp dGNoZXMgYXJlDQo+ID4gPiBpbnRyb2R1Y2VkLCBtdWx0aXBsZSBwb3J0cyBtaWdodCBiZSBzdXBw b3J0ZWQgd2l0aGluIHRoZSBzYW1lIGZsb3cNCj4gPiA+IGVuZ2luZSBuYW1lc3BhY2UuIEZyb20g dGhlIERQREsgcG9pbnRzIG9mIHZpZXcsIGl0IG1lYW5zIHRoZSBwYWNrZXRzDQo+ID4gPiBtaWdo dCBiZSBzZW50IG9uIG9uZSBldGhfZGV2IHBvcnQgYW5kIHJlY2VpdmVkIG9uIHRoZSBvdGhlciBv bmUsIGFuZA0KPiA+ID4gdGhlDQo+ID4gcGFja2V0IHBhdGggaW5zaWRlIHRoZSBmbG93IGVuZ2lu ZSBlbnRpcmVseSBiZWxvbmdzIHRvIHRoZSBzYW1lDQo+ID4gaGFyZHdhcmUgZGV2aWNlLiBUaGUg c2ltcGxlc3QgZXhhbXBsZSBpcyBTUi1JT1Ygd2l0aCBQRiwgVkZzIGFuZCB0aGUNCj4gcmVwcmVz ZW50b3JzLg0KPiA+ID4gQW5kIHRoZXJlIGlzIGEgYnJpbGxpYW50IG9wcG9ydHVuaXR5IHRvIHBy b3ZpZGUgc29tZSBvdXQtb2YtYmFuZA0KPiA+ID4gY2hhbm5lbCB0bw0KPiA+IHRyYW5zZmVyIHNv bWUgZXh0cmEgZGF0YQ0KPiA+ID4gICBmcm9tIG9uZSBwb3J0IHRvIGFub3RoZXIgb25lLCBiZXNp ZGVzIHRoZSBwYWNrZXQgZGF0YSBpdHNlbGYuDQo+ID4gPg0KPiA+ID4NCj4gPiA+PiBBYm92ZSBl eHBsYW5hdGlvbnMgbGFjayBpbmZvcm1hdGlvbiBhYm91dCAibWV0YSIgdnMgIm1hcmsiIHdoaWNo DQo+ID4gPj4gbWF5IGJlIHNldCBvbiBSeCBhcyB3ZWxsIGFuZCBkZWxpdmVyZWQgaW4gb3RoZXIg bWJ1ZiBmaWVsZC4NCj4gPiA+PiBJdCBzaG91bGQgYmUgZXhwbGFpbmVkIGJ5IG9uZSBtb3JlIGZp ZWxkIGlzIHJlcXVpcmVkIGFuZCBydWxlcyBkZWZpbmVkLg0KPiA+ID4+IE90aGVyd2lzZSB3ZSBj YW4gZW5kdXAgaW4gaGFsZiBQTURzIHN1cHBvcnRpbmcgbWFyayBvbmx5LCBoYWxmIFBNRHMNCj4g PiA+PiBzdXBwb3J0aW5nIG1ldGEgb25seSBhbmQgYXBwbGljYXRpb25zIGluIGFuIGludGVyZXN0 aW5nIHNpdHVhdGlvbg0KPiA+ID4+IHRvIG1ha2UgYSBjaG9pY2Ugd2hpY2ggb25lIHRvIHVzZS4N Cj4gPiA+IFRoZXJlIGlzIG5vICJtYXJrIiB2cyAibWV0YSIuIE1BUksgYW5kIE1FVEEgbWVhbnMg YXJlIGtlcHQgZm9yDQo+ID4gPiBjb21wYXRpYmlsaXR5IGlzc3VlcyBhbmQgbGVnYWN5IHBhcnQg d29ya3MgZXhhY3RseSBhcyBiZWZvcmUuIFRoZQ0KPiA+ID4gdHJpYWxzICh3aXRoIGZsb3dfdmFs aWRhdGUpICBpcyBzdXBwb3NlZCB0byBjaGVjayB3aGV0aGVyIFBNRA0KPiA+ID4gc3VwcG9ydHMg TUFSSyBvciBNRVRBIGZlYXR1cmUgb24gYXBwcm9wcmlhdGUgZG9tYWluLiBJdCBkZXBlbmRzIG9u DQo+ID4gPiBQTUQgaW1wbGVtZW50YXRpb24sIGNvbmZpZ3VyYXRpb24gYW5kIHVuZGVybGF5aW5n IEhXL0ZXL2tlcm5lbA0KPiA+ID4gY2FwYWJpbGl0aWVzDQo+ID4gYW5kIHNob3VsZCBiZSByZXNv bHZlZCBpbiBydW50aW1lLg0KPiA+DQo+ID4gVGhlIHRyaWFscyBhIHdheSwgYnV0IHZlcnkgdHJp Y2t5IHdheS4gTXkgaW1hZ2luYXRpb24gZHJhd3MgbWUNCj4gPiBwaWN0dXJlcyBob3cgYW4gYXBw bGljYXRpb24gY29kZSBjb3VsZCBsb29rIGxpa2UgaW4gYXR0ZW1wdCB0byB1c2UNCj4gPiBlaXRo ZXIgbWFyayBvciBtZXRhIGZvciBSeCBvbmx5IGFuZCB0aGVzZSBwaWN0dXJlcyBhcmUgbm90IG5p Y2UuDQo+IEFncmVlLCB0cmlhbHMgaXMgbm90IHRoZSBiZXN0IHdheS4NCj4gRm9yIG5vdyB0aGVy ZSBpcyBubyBhcHBsaWNhdGlvbiB0cnlpbmcgdG8gY2hvb3NlIG1hcmsgb3IgbWV0YSwgYmVjYXVz ZQ0KPiB0aGVzZSBvbmVzIGJlbG9uZ2VkIHRvIG90aGVyIGRvbWFpbnMsIGFuZCBleHRlbnNpb24g aXMgbmV3bHkgaW50cm9kdWNlZC4NCj4gU28sIHRoZSBhcHBsaWNhdGlvbnMgdXNpbmcgbWFyayB3 aWxsIGNvbnRpbnVlIHVzZSBtYXJrLCB0aGUgc2FtZSBpcyByZWdhcmRpbmcNCj4gbWV0YS4NCj4g VGhlIG5ldyBhcHBsaWNhdGlvbiBkZWZpbml0ZWx5IHdpbGwgYXNrIGZvciBib3RoIG1hcmsgYW5k IG9mIHRoZW0sIHdlIGhhdmUNCj4gdGhlIHJlcXVpcmVtZW50cyBmcm9tIGN1c3RvbWVycyAgLSAi Z2l2ZSB1cyBhcyBtYW55IHRocm91Z2ggYml0cyBhcyB5b3UNCj4gY2FuIi4NCj4gVGhpcyBuZXcg YXBwbGljYXRpb24ganVzdCBtYXkgcmVmdXNlIHRvIHdvcmsgaWYgbWV0YWRhdGEgZmVhdHVyZXMg YXJlIG5vdA0KPiBkZXRlY3RlZCwgYmVjYXVzZSByZWxheXMgb24gaXQgc3Ryb25nbHkuDQo+IEJU VywgdHJpYWxzIGFyZSBub3Qgc28gY29tcGxleDogcnRlX2Zsb3dfdmFsaWRhdGUobWFyayksDQo+ IHJ0ZV9mbG93X3ZhbGlkYXRlX21ldGFkYXRhKCkgYW5kIHRoYXQncyBpdC4NCj4gDQo+ID4gTWF5 IGJlIGl0IHdpbGwgbG9vayBhY2NlcHRhYmxlIHdoZW4gbWFyayBiZWNvbWVzIGEgZHluYW1pYyBz aW5jZSB1c2FnZQ0KPiA+IG9mIGVpdGhlciBvbmUgb3IgYW5vdGhlciBkeW5hbWljIGZpZWxkIGlz IGRlZmluaXRlbHkgZWFzaWVyIHRoYW4gdXNhZ2UNCj4gPiBvZiBlaXRoZXIgZml4ZWQgb3IgZHlu YW1pYyBmaWVsZC4NCj4gQXQgbGVhc3QgaW4gUE1EIGRhdGFwYXRoIGl0IGRvZXMgbm90IGxvb2sg dmVyeSB1Z2x5Lg0KPiA+DQo+ID4gTWF5IGJlIGR5bmFtaWMgZmllbGQgZm9yIG1hcmsgYXQgZml4 ZWQgb2Zmc2V0IHNob3VsZCBiZSBpbnRyb2R1Y2VkIGluDQo+ID4gdGhlIHJlbGVhc2Ugb3IgdGhl IG5lYXJlc3QgZnV0dXJlPyBJdCB3aWxsIGFsbG93IHRvIHByZXNlcnZlIEFCSSB1cCB0bw0KPiA+ IDIwLjExIGFuZCBwcm92aWRlIGZ1dHVyZSBwcm9vZiBBUEkuDQo+ID4gVGhlIHRyaWNrIGlzIHRv IHJlZ2lzdGVyIGR5bmFtaWMgbWV0YSBmaWVsZCBhdCBmaXhlZCBvZmZzZXQgYXQgc3RhcnQNCj4g PiBvZiBhIGRheSB0byBiZSBzdXJlIHRoYXQgaXQgaXMgZ3VhcmFudGVlZCB0byBzdWNjZWVkLg0K PiA+IEl0IHNvdW5kcyBsaWtlIGl0IGlzIGEgdHJhbnNpdGlvbiBtZWNoYW5pc20gZnJvbSBmaXhl ZCB0byBkeW5hbWljIGZpZWxkcy4NCj4gPg0KPiA+IFtzbmlwXQ0KPiA+DQo+ID4gPj4+IGRpZmYg LS1naXQgYS9saWIvbGlicnRlX2V0aGRldi9ydGVfZmxvdy5oDQo+ID4gPj4+IGIvbGliL2xpYnJ0 ZV9ldGhkZXYvcnRlX2Zsb3cuaCBpbmRleCA0ZmVlMTA1Li5iODIxNTU3IDEwMDY0NA0KPiA+ID4+ PiAtLS0gYS9saWIvbGlicnRlX2V0aGRldi9ydGVfZmxvdy5oDQo+ID4gPj4+ICsrKyBiL2xpYi9s aWJydGVfZXRoZGV2L3J0ZV9mbG93LmgNCj4gPiA+Pj4gQEAgLTI4LDYgKzI4LDggQEANCj4gPiA+ Pj4gICAgI2luY2x1ZGUgPHJ0ZV9ieXRlb3JkZXIuaD4NCj4gPiA+Pj4gICAgI2luY2x1ZGUgPHJ0 ZV9lc3AuaD4NCj4gPiA+Pj4gICAgI2luY2x1ZGUgPHJ0ZV9oaWdpZy5oPg0KPiA+ID4+PiArI2lu Y2x1ZGUgPHJ0ZV9tYnVmLmg+DQo+ID4gPj4+ICsjaW5jbHVkZSA8cnRlX21idWZfZHluLmg+DQo+ ID4gPj4+DQo+ID4gPj4+ICAgICNpZmRlZiBfX2NwbHVzcGx1cw0KPiA+ID4+PiAgICBleHRlcm4g IkMiIHsNCj4gPiA+Pj4gQEAgLTQxOCw3ICs0MjAsOCBAQCBlbnVtIHJ0ZV9mbG93X2l0ZW1fdHlw ZSB7DQo+ID4gPj4+ICAgIAkvKioNCj4gPiA+Pj4gICAgCSAqIFtNRVRBXQ0KPiA+ID4+PiAgICAJ ICoNCj4gPiA+Pj4gLQkgKiBNYXRjaGVzIGEgbWV0YWRhdGEgdmFsdWUgc3BlY2lmaWVkIGluIG1i dWYgbWV0YWRhdGEgZmllbGQuDQo+ID4gPj4+ICsJICogTWF0Y2hlcyBhIG1ldGFkYXRhIHZhbHVl Lg0KPiA+ID4+PiArCSAqDQo+ID4gPj4+ICAgIAkgKiBTZWUgc3RydWN0IHJ0ZV9mbG93X2l0ZW1f bWV0YS4NCj4gPiA+Pj4gICAgCSAqLw0KPiA+ID4+PiAgICAJUlRFX0ZMT1dfSVRFTV9UWVBFX01F VEEsDQo+ID4gPj4+IEBAIC0xMjYzLDkgKzEyNjYsMTcgQEAgc3RydWN0DQo+IHJ0ZV9mbG93X2l0 ZW1faWNtcDZfbmRfb3B0X3RsYV9ldGgNCj4gPiB7DQo+ID4gPj4+ICAgICNlbmRpZg0KPiA+ID4+ Pg0KPiA+ID4+PiAgICAvKioNCj4gPiA+Pj4gLSAqIFJURV9GTE9XX0lURU1fVFlQRV9NRVRBLg0K PiA+ID4+PiArICogQHdhcm5pbmcNCj4gPiA+Pj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBz dHJ1Y3R1cmUgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yDQo+ID4gPj4+ICsgbm90aWNlDQo+ID4g Pj4gSXMgaXQgYWxsb3dlZCB0byBtYWtlIGV4cGVyaW1lbnRhbCBiYWNrPw0KPiA+ID4gSSB0aGlu ayB3ZSBzaG91bGQgcmVtb3ZlIEVYUEVSSU1FTlRBTCBoZXJlLiBXZSBkbyBub3QgaW50cm9kdWNl IG5ldw0KPiA+ID4gZmVhdHVyZSwgYnV0IGp1c3QgZXh0ZW5kIHRoZSBhcHBseSBhcmVhLg0KPiA+ DQo+ID4gQWdyZWVkLg0KPiA+DQo+ID4gPj4+ICAgICAqDQo+ID4gPj4+IC0gKiBNYXRjaGVzIGEg c3BlY2lmaWVkIG1ldGFkYXRhIHZhbHVlLg0KPiA+ID4+PiArICogUlRFX0ZMT1dfSVRFTV9UWVBF X01FVEENCj4gPiA+Pj4gKyAqDQo+ID4gPj4+ICsgKiBNYXRjaGVzIGEgc3BlY2lmaWVkIG1ldGFk YXRhIHZhbHVlLiBPbiBlZ3Jlc3MsIG1ldGFkYXRhIGNhbiBiZQ0KPiA+ID4+PiArIHNldCBlaXRo ZXIgYnkNCj4gPiA+Pj4gKyAqIG1idWYgdHhfbWV0YWRhdGEgZmllbGQgd2l0aCBQS1RfVFhfTUVU QURBVEEgZmxhZyBvcg0KPiA+ID4+PiArICogUlRFX0ZMT1dfQUNUSU9OX1RZUEVfU0VUX01FVEEu IE9uIGluZ3Jlc3MsDQo+ID4gPj4+ICsgUlRFX0ZMT1dfQUNUSU9OX1RZUEVfU0VUX01FVEEgc2V0 cw0KPiA+ID4+PiArICogbWV0YWRhdGEgZm9yIGEgcGFja2V0IGFuZCB0aGUgbWV0YWRhdGEgd2ls bCBiZSByZXBvcnRlZCB2aWENCj4gPiA+Pj4gKyBtYnVmIG1ldGFkYXRhDQo+ID4gPj4+ICsgKiBk eW5hbWljIGZpZWxkIHdpdGggUEtUX1JYX0RZTkZfTUVUQURBVEEgZmxhZy4gVGhlIGR5bmFtaWMN Cj4gPiBtYnVmDQo+ID4gPj4+ICsgZmllbGQgbXVzdCBiZQ0KPiA+ID4+PiArICogcmVnaXN0ZXJl ZCBpbiBhZHZhbmNlIGJ5IHJ0ZV9mbG93X2R5bmZfbWV0YWRhdGFfcmVnaXN0ZXIoKS4NCj4gPiA+ Pj4gICAgICovDQo+ID4gPj4+ICAgIHN0cnVjdCBydGVfZmxvd19pdGVtX21ldGEgew0KPiA+ID4+ PiAgICAJcnRlX2JlMzJfdCBkYXRhOw0KPiA+ID4+IFtzbmlwXQ0KPiA+ID4+DQo+ID4gPj4+IEBA IC0yNDI5LDYgKzI0NDcsNTUgQEAgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9zZXRfbWFjIHsNCj4g PiA+Pj4gICAgCXVpbnQ4X3QgbWFjX2FkZHJbUlRFX0VUSEVSX0FERFJfTEVOXTsNCj4gPiA+Pj4g ICAgfTsNCj4gPiA+Pj4NCj4gPiA+Pj4gKy8qKg0KPiA+ID4+PiArICogQHdhcm5pbmcNCj4gPiA+ Pj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBzdHJ1Y3R1cmUgbWF5IGNoYW5nZSB3aXRob3V0 IHByaW9yDQo+ID4gPj4+ICtub3RpY2UNCj4gPiA+Pj4gKyAqDQo+ID4gPj4+ICsgKiBSVEVfRkxP V19BQ1RJT05fVFlQRV9TRVRfTUVUQQ0KPiA+ID4+PiArICoNCj4gPiA+Pj4gKyAqIFNldCBtZXRh ZGF0YS4gTWV0YWRhdGEgc2V0IGJ5IG1idWYgdHhfbWV0YWRhdGEgZmllbGQgd2l0aA0KPiA+ID4+ PiArICogUEtUX1RYX01FVEFEQVRBIGZsYWcgb24gZWdyZXNzIHdpbGwgYmUgb3ZlcnJpZGRlbiBi eSB0aGlzIGFjdGlvbi4NCj4gPiA+Pj4gK09uDQo+ID4gPj4+ICsgKiBpbmdyZXNzLCB0aGUgbWV0 YWRhdGEgd2lsbCBiZSBjYXJyaWVkIGJ5IG1idWYgbWV0YWRhdGEgZHluYW1pYw0KPiA+ID4+PiAr ZmllbGQNCj4gPiA+Pj4gKyAqIHdpdGggUEtUX1JYX0RZTkZfTUVUQURBVEEgZmxhZyBpZiBzZXQu ICBUaGUgZHluYW1pYyBtYnVmIGZpZWxkDQo+ID4gPj4+ICttdXN0IGJlDQo+ID4gPj4+ICsgKiBy ZWdpc3RlcmVkIGluIGFkdmFuY2UgYnkgcnRlX2Zsb3dfZHluZl9tZXRhZGF0YV9yZWdpc3Rlcigp Lg0KPiA+ID4+PiArICoNCj4gPiA+Pj4gKyAqIEFsdGVyaW5nIHBhcnRpYWwgYml0cyBpcyBzdXBw b3J0ZWQgd2l0aCBtYXNrLiBGb3IgYml0cyB3aGljaA0KPiA+ID4+PiAraGF2ZSBuZXZlcg0KPiA+ ID4+PiArICogYmVlbiBzZXQsIHVucHJlZGljdGFibGUgdmFsdWUgd2lsbCBiZSBzZWVuIGRlcGVu ZGluZyBvbiBkcml2ZXINCj4gPiA+Pj4gKyAqIGltcGxlbWVudGF0aW9uLiBGb3IgbG9vcGJhY2sv aGFpcnBpbiBwYWNrZXQsIG1ldGFkYXRhIHNldCBvbg0KPiA+ID4+PiArUngvVHggbWF5DQo+ID4g Pj4+ICsgKiBvciBtYXkgbm90IGJlIHByb3BhZ2F0ZWQgdG8gdGhlIG90aGVyIHBhdGggZGVwZW5k aW5nIG9uIEhXDQo+ID4gPj4gY2FwYWJpbGl0eS4NCj4gPiA+Pj4gKyAqDQo+ID4gPj4+ICsgKiBS VEVfRkxPV19JVEVNX1RZUEVfTUVUQSBtYXRjaGVzIG1ldGFkYXRhLg0KPiA+ID4+PiArICovDQo+ ID4gPj4+ICtzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3NldF9tZXRhIHsNCj4gPiA+Pj4gKwlydGVf YmUzMl90IGRhdGE7DQo+ID4gPj4+ICsJcnRlX2JlMzJfdCBtYXNrOw0KPiA+ID4+IEFzIEkgdW5k ZXJzdGFuZCB0eF9tZXRhZGF0YSBpcyBob3N0IGVuZGlhbi4gSnVzdCBkb3VibGUtY2hlY2tpbmcu DQo+ID4gPj4gSXMgYSBuZXcgZHluYW1pYyBmaWVsZCBob3N0IGVuZGlhbiBvciBiaWcgZW5kaWFu Pw0KPiA+ID4+IEkgZGVmaW5pdGVseSB3b3VsZCBsaWtlIHRvIHNlZSBtb3RpdmF0aW9uIGluIGNv bW1lbnRzIHdoeSBkYXRhL21hc2sNCj4gPiA+PiBhcmUgYmlnLSBlbmRpYW4gaGVyZS4NCj4gPiA+ IG1ldGFkYXRhIGlzIG9wYXF1ZSB2YWx1ZSwgZW5kaWFubmVzcyBkb2VzIG5vdCBtYXR0ZXIsIHRo ZXJlIGFyZSBubw0KPiA+ID4gc29tZSBzcGVjaWFsIG1vdGl2YXRpb25zIGZvciBjaG9vc2luZyBl bmRpYW5uZXMuDQo+ID4gPiBydGVfZmxvd19pdGVtX21ldGEoKSBzdHJ1Y3R1cmUgcHJvdmlkZXMg ZGF0YSB3aXRoIHJ0ZV9iZTMyX3QgdHlwZSwNCj4gPiA+IHNvIG1ldGEgcmVsYXRlZCBhY3Rpb24g ZG9lcw0KPiA+IHRoZSBzYW1lLg0KPiA+DQo+ID4gRW5kaWFubmVzcyBvZiBtZXRhIGluIG1idWYg YW5kIGZsb3cgQVBJIHNob3VsZCBtYXRjaCBhbmQgaXQgbXVzdCBiZQ0KPiBZZXMsIGFuZCB0aGV5 IG1hdGNoIChmb3IgbWV0YSksIGJvdGggYXJlIHJ0ZV9iZTMyX3QuIE9LLCB3aWxsIGVtcGhhc2l6 ZSBpdCBpbg0KPiBkb2NzLg0KPiANCj4gPiBkb2N1bWVudGVkLiBFbmRpYW5uZXNzIGlzIGltcG9y dGFudCBpZiBhIEhXIHN1cHBvcnRzIGxlc3MgYml0cyBzaW5jZQ0KPiA+IGl0IG1ha2VzIGEgaGl0 IGZvciBhcHBsaWNhdGlvbiB0byB1c2UgTFNCIGZpcnN0IGlmIHRoZSBiaXQgc3BhY2UgaXMgc3Vm ZmljaWVudC4NCj4gPiBtYXJrIGlzIGRlZmluZWQgYXMgaG9zdC1lbmRpYW4gKHVpbnQzMl90KSBh bmQgSSB0aGluayBtZXRhIHNob3VsZCBiZQ0KPiA+IHRoZSBzYW1lLiBPdGhlcndpc2UgaXQgY29t cGxpY2F0ZXMgZXZlbiBtb3JlIGVpdGhlciBtYXJrIG9yIG1ldGEgdXNhZ2UNCj4gPiBhcyBkaXNj dXNzZWQgYWJvdmUgLg0KPiBtYXJrIGlzIG1hcmssIG1ldGEgaXMgbWV0YSwgdGhlc2Ugb25lcyBh cmUgbm90IGludGVycmVsYXRlZCAoZGVzcGl0ZSB0aGV5IGFyZQ0KPiBiZWNvbWluZyBzaW1pbGFy KS4gQW5kIHRoZXJlIGlzIG5vIGNob2ljZSBiZXR3ZWVuIG1hcmsgYW5kIG1ldGEuDQo+IEl0IGlz IG5vdCBvYnZpb3VzIHdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIGVuZGlhbm5lc3MgZm9yIGJvdGgu DQo+IFRoZXJlIGFyZSBzb21lIGFwcGxpY2F0aW9ucyB1c2luZyB0aGlzIGxlZ2FjeSBmZWF0dXJl cywgc28gdGhlcmUgbWlnaHQgYmUNCj4gY29tcGF0aWJpbGl0eSBpc3N1ZXMgZWl0aGVyLg0KPiAN Cj4gPg0KPiA+IFllcywgSSB0aGluayB0aGF0IHJ0ZV9mbG93X2l0ZW1fbWV0YSBzaG91bGQgYmUg Zml4ZWQgc2luY2UgYm90aCBtYXJrDQo+ID4gYW5kIHR4X21ldGFkYXRhIGFyZSBob3N0LWVuZGlh bi4NCj4gPg0KPiA+IChpdCBzYXlzIG5vdGhpbmcgYWJvdXQgSFcgaW50ZXJmYWNlIHdoaWNoIGlz IHZlbmRvciBzcGVjaWZpYyBhbmQNCj4gPiB2ZW5kb3IgUE1EcyBzaG91bGQgY2FyZSBhYm91dCBp dCkNCj4gSGFuZGxpbmcgdGhpcyBpbiBQTUQgbWlnaHQgaW50cm9kdWNlIHRoZSBleHRyYSBlbmRp YW5uZXNzIGNvbnZlcnNpb24gaW4NCj4gZGF0YXBhdGgsIGltcGFjdGluZyBwZXJmb3JtYW5jZS4g Tm90IG5pY2UsIElNTy4NCg0KVXBkYXRlOiBJJ3ZlIHJldmlld2VkIG90aGVyIFtNRVRBXSBpdGVt cy9hY3Rpb25zLCBhbGwgb2YgdGhlbSBhcmUgaW4NCmhvc3QgZW5kaWFubmVzcy4gT0ssIHdlIGFy ZSBtb3ZpbmcgdHhfbWV0YWRhdGEgdG8gZHluZmllbGQsIGl0IHNlZW1zIHRvDQpiZSBnb29kIHBv aW50IHRvIGFsdGVyIG1ldGFkYXRhIGVuZGlhbm5lc3MuIEFuZCBJIHNlZSB0aGUgd2F5IHRvIGF2 b2lkDQpjb252ZXJzaW9ucyBpbiBkYXRhIHBhdGgNCg0KV2l0aCBiZXN0IHJlZ2FyZHMsIFNsYXZh DQoNCj4gPg0KPiA+ID4gSSBjb3VsZCBhc3N1bWUgdGhlIG9yaWdpbiBvZiBzZWxlY3RpbmcgYmln ZW5kaWFuIHR5cGUgd2FzIHRoZQ0KPiA+ID4gZW5kaWFubmVzcyBvZiBtZXRhZGF0YSBmaWVsZCBp biBUeCBkZXNjcmlwdG9yIG9mIENvbm5lY3RYIE5JQ3MuDQo+ID4gPg0KPiA+ID4+PiArfTsNCj4g PiA+Pj4gKw0KPiA+ID4+PiArLyogTWJ1ZiBkeW5hbWljIGZpZWxkIG9mZnNldCBmb3IgbWV0YWRh dGEuICovIGV4dGVybiBpbnQNCj4gPiA+Pj4gK3J0ZV9mbG93X2R5bmZfbWV0YWRhdGFfb2ZmczsN Cj4gPiA+Pj4gKw0KPiA+ID4+PiArLyogTWJ1ZiBkeW5hbWljIGZpZWxkIGZsYWcgbWFzayBmb3Ig bWV0YWRhdGEuICovIGV4dGVybiB1aW50NjRfdA0KPiA+ID4+PiArcnRlX2Zsb3dfZHluZl9tZXRh ZGF0YV9tYXNrOw0KPiA+ID4+IFRoZXNlIHR3byBnbG9iYWwgdmFyaWFibGVzIGxvb2sgZnJpZ2h0 ZW5pbmcgdG8gbWUuDQo+ID4gPj4gSXQgZG9lcyBub3QgbG9vayBnb29kIHRvIG1lLg0KPiA+ID4g Rm9yIG1lIHRvby4gQnV0IHdlIG5lZWQgdGhlIHBlcmZvcm1hbmNlLCB0aGVzZSBvbmVzIGFyZSBp bnRlbmRlZCBmb3INCj4gPiA+IHVzYWdlIGluIGRhdGFwYXRoLCBhbnkgb3ZlcmhlYWQgaXMgcGFp bmZ1bC4NCj4gPg0KPiA+IEBPbGl2aWVyLCBjb3VsZCB5b3Ugc2hhcmUgeW91ciB0aG91Z2h0cywg cGxlYXNlLg0KPiA+DQo+ID4gQW5kcmV3Lg0KPiANCj4gV2l0aCBiZXN0IHJlZ2FyZHMsIFNsYXZh DQoNCg==