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 C2CB0A0544; Tue, 7 Jun 2022 12:14:02 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A59084021D; Tue, 7 Jun 2022 12:14:02 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 89E0440156 for ; Tue, 7 Jun 2022 12:14:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1654596840; x=1686132840; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=LuYeKbOklWGhLrgszWwl7xvjaY5nXWbzCdAU3XZfqDk=; b=SGszRd8pIcewL+MwsqnVOousEOdrJtAPF81ObpnbXr35JjJ4hH685V1z wSNjrqF3vhGbHZMmAiFwu7+2dJUOMdxMmcbgHSYJZKiwwcVghCP5nGXDM QKpPAkpI0mK+eSA7bj2UQ76ebdq3RvR67tAuPE4dTjTmCuRejC0Z5Yuxs Y4hlsl2bv49mKegPaDH7ZHKWUSGuAbcgofXFmbxbKG7ATp0iVb/eJmkTw 3quTnakXaY5iS8deZxrWEznlhOP+BCFsqKygbXZZ1Et2uMUWaAxdTfATh ZqDwOdNb/c+6BUr2COljT+ZZlPVJq1+JpRmb+BfwCxD2ChOo6VKall8tI g==; X-IronPort-AV: E=McAfee;i="6400,9594,10370"; a="274252691" X-IronPort-AV: E=Sophos;i="5.91,283,1647327600"; d="scan'208";a="274252691" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2022 03:13:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,283,1647327600"; d="scan'208";a="826295651" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by fmsmga006.fm.intel.com with ESMTP; 07 Jun 2022 03:13:58 -0700 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 7 Jun 2022 03:13:58 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Tue, 7 Jun 2022 03:13:58 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.47) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Tue, 7 Jun 2022 03:13:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E5eWA93/3ZtmwOanJSoY96s7vfKECr39QEmen4+I0yS4cMQh3u70xwhg3BD+1dD4yHylhQeMEQS3+90xs2blo4xw/9kfruauDU0grcXrBdTmcTMAcci6BfhgPUDqi9uwAYAp+h9v6sqjEuuNVIKBOEV8llLwi+Rbox/1LR/345lRR8JJPedamxbNRLDMCoTVxmtIiRnYe0DyYrTpjMFoMyCgEWs46yYsWEQrHKhSRlpabr2nsSoiKzZk3Hl15Tl6VDVPbBsPauBcaqMUHe6eIm0eopdGmOKlYNVV8UxWlksgBh5t2JZcTBprLsQwJ5QMIJ48Fw9daK1Ym9jCcbOMaQ== 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=LuYeKbOklWGhLrgszWwl7xvjaY5nXWbzCdAU3XZfqDk=; b=I0VtJ0C7TaN8tnqGvmGgWC47Lp7fhcy/HB4JC3w5pDnEZm8Lkj9d6YPc1JS7JLuYw/CL/2ZNmcghv1RMVz6Ut/FZOWiXtuvN0KJHRUX6jv3aspM7oDcblXqx4G1rwNyZYQSve/Bqs2sBHqXdSBLPIJbxy1wsLi1MVUOrvJMM4ygSMWNbGyspksGjHkhEQ29c+onaXVKzJQJPrFZLDmQzk3cWYTQ4aWkA7yQ6+1+RJRMm42Hb7tnkpaPvxoVPhRF8NiNbpTq/VkKyx4Y7juVeyZZmsa/P8lUc5dhumjmY23UFH3cQk3P7PzHtYHUYgSRU05xqkftHdCQHKKDZdHzMIw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BN9PR11MB5513.namprd11.prod.outlook.com (2603:10b6:408:102::11) by DM6PR11MB4361.namprd11.prod.outlook.com (2603:10b6:5:1df::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.13; Tue, 7 Jun 2022 10:13:56 +0000 Received: from BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::31c6:2ec8:2f71:42da]) by BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::31c6:2ec8:2f71:42da%2]) with mapi id 15.20.5314.019; Tue, 7 Jun 2022 10:13:56 +0000 From: "Ding, Xuan" To: Andrew Rybchenko , "Wu, WenxuanX" , "thomas@monjalon.net" , "Li, Xiaoyun" , "ferruh.yigit@xilinx.com" , "Singh, Aman Deep" , "dev@dpdk.org" , "Zhang, Yuying" , "Zhang, Qi Z" , "jerinjacobk@gmail.com" CC: "stephen@networkplumber.org" , "Wang, YuanX" , Ray Kinsella Subject: RE: [PATCH v8 1/3] ethdev: introduce protocol hdr based buffer split Thread-Topic: [PATCH v8 1/3] ethdev: introduce protocol hdr based buffer split Thread-Index: AQHYdcH3HFAmhGXUVUOOiSLRt5Q8gK08G4+AgAGzACCAAYPsAIAEY9eQ Date: Tue, 7 Jun 2022 10:13:55 +0000 Message-ID: References: <20220303060136.36427-1-xuan.ding@intel.com> <20220601135059.958882-1-wenxuanx.wu@intel.com> <20220601135059.958882-2-wenxuanx.wu@intel.com> <3d246777-a86b-ebc5-8288-86de89568536@oktetlabs.ru> In-Reply-To: <3d246777-a86b-ebc5-8288-86de89568536@oktetlabs.ru> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3a98cb98-bd68-4201-5e6c-08da486e6e32 x-ms-traffictypediagnostic: DM6PR11MB4361:EE_ 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: fmI6UMfgqRCrEvdzOWy4ChYrbiNWRrICkMOsSaGnPC5h0t0N8NbvJqRtheBdjObpaYJrK8XdwUOhpXs/RyAQWEiYgLSLuqmEW/Tuw1m3Hriywj7ZI4iAxxSDpf6ZX3GYCCcqO+m0ygWAdKhb+QkCqUQ5PoRhuIQtN0esNTuobQCYZSDelQ5SKszBRuDo/tkVrMlE7eICCRDEhB7PjuNgPg8JuLbX+qkG7njqCJDi8dWogxNOBP9fCXZTwcn9J+dbzzTYyDhmXkCDTAvHnyP3HYWFzvTC0NZWxyIqXKqSV8N52uWKnfFz+6R5Nu8R7UtuxFcfdLHJUjjR9Gwk42tOWGmgIArGVYv+ZVGXehS02P94eXWA6I8sda9kqQ2UKAdpbOSwkB46wK0VjC2IYtUWNnIxAZK/yMK5+8YOSfJsFwAcUwGGwmU//gnQ5vLipwyEBg+JjQbIu3jk2F+EXj35YsosEMSPp+F6+391xsneh3LZbw9RR4Xi4pkEJi9RBnKX9kKItvfmaITmnOfcTvJXCvFAvUfPf/jANWLvw40TDAR9EJPYU+XfpeV83KBHQrafm9lLl35BEwzrZZppTEQZit91gqVttSFL/TGh4DeygtSxG7GDppPNKCbBS0YfoCTkyann4nATt6j26ZjzzYTgWoGydLMKw7G8N0v4NUGbSe+pIq769za5W6AxngfvIw6n+WzTOHj1Lu0TdmIaO9gujTHxi8Wlo/B9LdMm9wqs6Es= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5513.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(6506007)(64756008)(38070700005)(122000001)(33656002)(316002)(8676002)(66446008)(921005)(55016003)(30864003)(2906002)(52536014)(4326008)(5660300002)(508600001)(8936002)(66946007)(66476007)(110136005)(66556008)(76116006)(86362001)(9686003)(26005)(186003)(82960400001)(38100700002)(53546011)(54906003)(83380400001)(7696005)(71200400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SzRCTE9nRVNpYnQvN2JJaDNwVTZaMW1VVzZ4OU1LR2dZVVlyQTNCdy9URmVQ?= =?utf-8?B?OWZ5NUpBcTNnOUhxZ3JYd2gzbzRPT1pwQ21DOWJ5WXFJUnFkaEhYVUxFZkl5?= =?utf-8?B?SUpSYmlPY2hrRGNVekliRGtjQzBDdkh1NVowbUl3QmdDS3FjaGJNNitzT3BN?= =?utf-8?B?UmM4SHdlRUtIZUFhRTZaUHVkcVZGZ0xrSzFKQXlVRzJQb0tCKy9MbUVhUzNH?= =?utf-8?B?VzkzTUVwV1pJR0MwT2xqdTJMdlBlTHJrUlgvQmpmSnBpdzNlU0ZzL2RBblNK?= =?utf-8?B?ejcwN3djdHN3aVBXaStUcXhUWDQ1K2Y2UGxMekVLNkJFejhzMkl0QXpUR1Zm?= =?utf-8?B?cEFNczRBZWNkNGR3eDdkT1MrcVg5MS81U2ZicjFaekxrK2w2a3pmaDRnSGJU?= =?utf-8?B?YjhsaHRBQW9PYmFWKzIxZTRKR3hMYWdPYjFKRkVkdTZJUmtYcS92Rmp0S0xY?= =?utf-8?B?R1d3UHcyaDh3aTBBY200WlhYMUFCREM1T0FjcGFqbnMxMGxpSjVXUWRLbnA4?= =?utf-8?B?R2xjVSs2a2FCUU43MDNtMzErV011RjY5Rlo2SUUrRzhyejZFa3ZYcWRDWEwx?= =?utf-8?B?SWtVdDl1NEtsM0ZheHZWWHhBRG5aZHB6R3h6V2Y2dWh5ZFdMZnpPVElCNlBV?= =?utf-8?B?UzV1S2ttaUcyQWxYVFlPTGtkTzRtL1hSVHk5Q2NQNjg0T25oSU1veWJKNXBP?= =?utf-8?B?K3J3N2VGWW1lVzZSSTVHWG94bUFwSVR1ZXpZZmhuNThCS2owdTBFVEJJUEk4?= =?utf-8?B?RzdTUlNOK0FGL2YzZWJQZVNWbkpsS3M5TGw0amVGMm4wNytiUWxENUVYMU4r?= =?utf-8?B?YUk0a1piMlczMG1Ub0l6L0VFa2JXbm0zSjlHZ3BkZktPMWNVc2l3aGd1cldO?= =?utf-8?B?RE1yYmZrb1Qza2ZQa01RQzJsekhCbHhyNklidS9QcmRCVGpWK0pHK2w5amo0?= =?utf-8?B?L3FVckM1Nk50RllWT1ZUYWp2MGtzTm5yN1k0dHhUdS9Sa3dRR3BEd2M0dFgz?= =?utf-8?B?bXNiWDlTL2wzV2swUkdMenVabFNLNE12S2JPR2xDNUhFM28wSHhDUFR4Yjcx?= =?utf-8?B?Rnl2ZkhhR2RrSVRxK09PNEIzQzhvQmZlMUdWakhiRFRSUFRyMldKZTJZdHpa?= =?utf-8?B?SDNjaVJkMm5oeWdDYkg1cmdLTzJHWGFmNTBQMnZYMllmQ2pJTE82VFNzSVBk?= =?utf-8?B?NG15NCtyQ1R3VVBWTXAyYTdkRitNVWxIS2FiSlc1dEppc3Vhb2FFbGU0MEhW?= =?utf-8?B?b1drU0UxM3RwOUhzTUt1UDNuM3dSREM0VHFmQmdyZ3R6QnliWndpYUVkbi9Q?= =?utf-8?B?L2JYZkVBUnZaaUtJajZmN2dRTFlzclpBWTVqOUp6L0tvYk5XVldHTEY0Z1VC?= =?utf-8?B?RHhGQU9rRHpjbE1CY2JzNzhKZkFiTHB0dG1IL3hZNllMekpWWVcxcVdIMSsw?= =?utf-8?B?NU8vRytNTlI1QTU1NzUybXZ3amVzdFRQM2dvbDRCQnJIeTBudjJ1VXBKaFBx?= =?utf-8?B?eDMwRnliMi9kUmVHckNuSTZWWTZWN2h1VFRHNXQwQTJSUXFwbWdRdG5XTUsx?= =?utf-8?B?MnlkVmhnQ2d6NjVvVmNiWm0yTjhwM3l1ZGR6djNJTnptTjFEcG5tM2xuc1BX?= =?utf-8?B?Wis0ZlBWYk9ZKzM4blJnRTl3RDZZWlMySXd6dFdkcVhGT21ZMUk4Qk1wbUgr?= =?utf-8?B?OWsreitzWGpYL3VsVXVQZDdmWTN2emdpZ3JocnpTTGc0RElWUFJiWDIyQW42?= =?utf-8?B?M0hnVUdvbUZWK3RvSC9FMjZ2N2E4TExHNTIwRmo0VHdncVdEaGorVkVqTi9o?= =?utf-8?B?K0FlNW5EcC9BT3VWVU0vUW1IL0tNYzhrbVd1MjhyUTE0cFFBUFpVdi8yUVE0?= =?utf-8?B?KzN1cXVVd2VVVDd6QkcrZmxNTEtZRkdhR2NleDJNV0pwQVZvV21uaTZBN0dP?= =?utf-8?B?emMyMmJvVjZIRDRXaDhYdDBQVnVaeTlZRysrdEdHYUxHWUxLdDJmSWdsU3J0?= =?utf-8?B?OGJKdGszWGxtb2Vxd0NianlDMW1QMGkzNkVtc1lxR0NoSFNnUHZiTTVULzY0?= =?utf-8?B?U21LWjJUalpWYVZZZlN4WFFSOGtRM1ovY3hlem0yT3lqaVdDblVZYTFFNlNt?= =?utf-8?B?UTdhbEhvQW5GR3U3SCtBWjJrS1F4c2NST3RPcmdydnlxb0lyUVRrNzN6aTBj?= =?utf-8?B?aDh0bDVUSllwTlF5L3dZTytoSkJDZWtwUjBOenQ4MGlBcWhOQXRHcCtrZC90?= =?utf-8?B?Mk5zWmNHZURGaHNPNkQ0RzdhMXVTd1VIaW0yU3U4cWZJMzY2RFhkaTJ5NXBp?= =?utf-8?B?OUZHUUNudWJVcUxTVlBtOCt6UU12RkduZ1BVeEVkNHBDM2FXN0NPZz09?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5513.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a98cb98-bd68-4201-5e6c-08da486e6e32 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2022 10:13:55.8431 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: bN4n0za0PHXsfCEuF4z1/TtCU4FyPbg7Zges56EE2KgcyYEDRhZoxyLc/fl02lMS8DrUz+MiKe5As6Qn3ulHrg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4361 X-OriginatorOrg: intel.com 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 SGkgQW5kcmV3LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFuZHJl dyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiBTZW50OiBTYXR1 cmRheSwgSnVuZSA0LCAyMDIyIDEwOjI2IFBNDQo+IFRvOiBEaW5nLCBYdWFuIDx4dWFuLmRpbmdA aW50ZWwuY29tPjsgV3UsIFdlbnh1YW5YDQo+IDx3ZW54dWFueC53dUBpbnRlbC5jb20+OyB0aG9t YXNAbW9uamFsb24ubmV0OyBMaSwgWGlhb3l1bg0KPiA8eGlhb3l1bi5saUBpbnRlbC5jb20+OyBm ZXJydWgueWlnaXRAeGlsaW54LmNvbTsgU2luZ2gsIEFtYW4gRGVlcA0KPiA8YW1hbi5kZWVwLnNp bmdoQGludGVsLmNvbT47IGRldkBkcGRrLm9yZzsgWmhhbmcsIFl1eWluZw0KPiA8eXV5aW5nLnpo YW5nQGludGVsLmNvbT47IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVsLmNvbT47DQo+IGpl cmluamFjb2JrQGdtYWlsLmNvbQ0KPiBDYzogc3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc7IFdh bmcsIFl1YW5YIDx5dWFueC53YW5nQGludGVsLmNvbT47DQo+IFJheSBLaW5zZWxsYSA8bWRyQGFz aHJvZS5ldT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2OCAxLzNdIGV0aGRldjogaW50cm9kdWNl IHByb3RvY29sIGhkciBiYXNlZCBidWZmZXIgc3BsaXQNCj4gDQo+IE9uIDYvMy8yMiAxOTozMCwg RGluZywgWHVhbiB3cm90ZToNCj4gPiBIaSBBbmRyZXcsDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogQW5kcmV3IFJ5YmNoZW5rbyA8YW5kcmV3LnJ5YmNo ZW5rb0Bva3RldGxhYnMucnU+DQo+ID4+IFNlbnQ6IFRodXJzZGF5LCBKdW5lIDIsIDIwMjIgOToy MSBQTQ0KPiA+PiBUbzogV3UsIFdlbnh1YW5YIDx3ZW54dWFueC53dUBpbnRlbC5jb20+OyB0aG9t YXNAbW9uamFsb24ubmV0Ow0KPiBMaSwNCj4gPj4gWGlhb3l1biA8eGlhb3l1bi5saUBpbnRlbC5j b20+OyBmZXJydWgueWlnaXRAeGlsaW54LmNvbTsgU2luZ2gsIEFtYW4NCj4gPj4gRGVlcCA8YW1h bi5kZWVwLnNpbmdoQGludGVsLmNvbT47IGRldkBkcGRrLm9yZzsgWmhhbmcsIFl1eWluZw0KPiA+ PiA8eXV5aW5nLnpoYW5nQGludGVsLmNvbT47IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVs LmNvbT47DQo+ID4+IGplcmluamFjb2JrQGdtYWlsLmNvbQ0KPiA+PiBDYzogc3RlcGhlbkBuZXR3 b3JrcGx1bWJlci5vcmc7IERpbmcsIFh1YW4gPHh1YW4uZGluZ0BpbnRlbC5jb20+Ow0KPiA+PiBX YW5nLCBZdWFuWCA8eXVhbngud2FuZ0BpbnRlbC5jb20+OyBSYXkgS2luc2VsbGEgPG1kckBhc2hy b2UuZXU+DQo+ID4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjggMS8zXSBldGhkZXY6IGludHJvZHVj ZSBwcm90b2NvbCBoZHIgYmFzZWQNCj4gPj4gYnVmZmVyIHNwbGl0DQo+ID4+DQo+ID4+IElzIGl0 IHRoZSByaWdodCBvbmUgc2luY2UgaXQgaXMgbGlzdGVkIGluIHBhdGNod29yaz8NCj4gPg0KPiA+ IFllcywgaXQgaXMuDQo+ID4NCj4gPj4NCj4gPj4gT24gNi8xLzIyIDE2OjUwLCB3ZW54dWFueC53 dUBpbnRlbC5jb20gd3JvdGU6DQo+ID4+PiBGcm9tOiBXZW54dWFuIFd1IDx3ZW54dWFueC53dUBp bnRlbC5jb20+DQo+ID4+Pg0KPiA+Pj4gQ3VycmVudGx5LCBSeCBidWZmZXIgc3BsaXQgc3VwcG9y dHMgbGVuZ3RoIGJhc2VkIHNwbGl0LiBXaXRoIFJ4DQo+ID4+PiBxdWV1ZSBvZmZsb2FkIFJURV9F VEhfUlhfT0ZGTE9BRF9CVUZGRVJfU1BMSVQgZW5hYmxlZCBhbmQgUngNCj4gcGFja2V0DQo+ID4+ IHNlZ21lbnQNCj4gPj4+IGNvbmZpZ3VyZWQsIFBNRCB3aWxsIGJlIGFibGUgdG8gc3BsaXQgdGhl IHJlY2VpdmVkIHBhY2tldHMgaW50bw0KPiA+Pj4gbXVsdGlwbGUgc2VnbWVudHMuDQo+ID4+Pg0K PiA+Pj4gSG93ZXZlciwgbGVuZ3RoIGJhc2VkIGJ1ZmZlciBzcGxpdCBpcyBub3Qgc3VpdGFibGUg Zm9yIE5JQ3MgdGhhdCBkbw0KPiA+Pj4gc3BsaXQgYmFzZWQgb24gcHJvdG9jb2wgaGVhZGVycy4g R2l2ZW4gYSBhcmJpdHJhcmlseSB2YXJpYWJsZSBsZW5ndGgNCj4gPj4+IGluIFJ4IHBhY2tldA0K PiA+Pg0KPiA+PiBhIC0+IGFuDQo+ID4NCj4gPiBUaGFua3MgZm9yIHlvdXIgY2F0Y2gsIHdpbGwg Zml4IGl0IGluIG5leHQgdmVyc2lvbi4NCj4gPg0KPiA+Pg0KPiA+Pj4gc2VnbWVudCwgaXQgaXMg YWxtb3N0IGltcG9zc2libGUgdG8gcGFzcyBhIGZpeGVkIHByb3RvY29sIGhlYWRlciB0byBQTUQu DQo+ID4+PiBCZXNpZGVzLCB0aGUgZXhpc3RlbmNlIG9mIHR1bm5lbGluZyByZXN1bHRzIGluIHRo ZSBjb21wb3NpdGlvbiBvZiBhDQo+ID4+PiBwYWNrZXQgaXMgdmFyaW91cywgd2hpY2ggbWFrZXMg dGhlIHNpdHVhdGlvbiBldmVuIHdvcnNlLg0KPiA+Pj4NCj4gPj4+IFRoaXMgcGF0Y2ggZXh0ZW5k cyBjdXJyZW50IGJ1ZmZlciBzcGxpdCB0byBzdXBwb3J0IHByb3RvY29sIGhlYWRlcg0KPiA+Pj4g YmFzZWQgYnVmZmVyIHNwbGl0LiBBIG5ldyBwcm90b19oZHIgZmllbGQgaXMgaW50cm9kdWNlZCBp biB0aGUNCj4gPj4+IHJlc2VydmVkIGZpZWxkIG9mIHJ0ZV9ldGhfcnhzZWdfc3BsaXQgc3RydWN0 dXJlIHRvIHNwZWNpZnkgcHJvdG9jb2wNCj4gPj4+IGhlYWRlci4gVGhlIHByb3RvX2hkciBmaWVs ZCBkZWZpbmVzIHRoZSBzcGxpdCBwb3NpdGlvbiBvZiBwYWNrZXQsDQo+ID4+PiBzcGxpdHRpbmcg d2lsbCBhbHdheXMgaGFwcGVucyBhZnRlciB0aGUgcHJvdG9jb2wgaGVhZGVyIGRlZmluZWQgaW4N Cj4gPj4+IHRoZSBSeCBwYWNrZXQgc2VnbWVudC4gV2hlbiBSeCBxdWV1ZSBvZmZsb2FkDQo+ID4+ PiBSVEVfRVRIX1JYX09GRkxPQURfQlVGRkVSX1NQTElUIGlzIGVuYWJsZWQgYW5kIGNvcnJlc3Bv bmRpbmcNCj4gPj4gcHJvdG9jb2wNCj4gPj4+IGhlYWRlciBpcyBjb25maWd1cmVkLCBQTUQgd2ls bCBzcGxpdCB0aGUgaW5ncmVzcyBwYWNrZXRzIGludG8NCj4gPj4+IG11bHRpcGxlDQo+ID4+IHNl Z21lbnRzLg0KPiA+Pj4NCj4gPj4+IHN0cnVjdCBydGVfZXRoX3J4c2VnX3NwbGl0IHsNCj4gPj4+ DQo+ID4+PiAgICAgICAgICAgc3RydWN0IHJ0ZV9tZW1wb29sICptcDsgLyogbWVtb3J5IHBvb2xz IHRvIGFsbG9jYXRlDQo+ID4+PiBzZWdtZW50IGZyb20NCj4gPj4gKi8NCj4gPj4+ICAgICAgICAg ICB1aW50MTZfdCBsZW5ndGg7IC8qIHNlZ21lbnQgbWF4aW1hbCBkYXRhIGxlbmd0aCwNCj4gPj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZXMgInNwbGl0IHBvaW50IiAq Lw0KPiA+Pj4gICAgICAgICAgIHVpbnQxNl90IG9mZnNldDsgLyogZGF0YSBvZmZzZXQgZnJvbSBi ZWdpbm5pbmcNCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIG1idWYgZGF0 YSBidWZmZXIgKi8NCj4gPj4+ICAgICAgICAgICB1aW50MzJfdCBwcm90b19oZHI7IC8qIGlubmVy L291dGVyIEwyL0wzL0w0IHByb3RvY29sIGhlYWRlciwNCj4gPj4+IAkJCSAgICAgICBjb25maWd1 cmVzICJzcGxpdCBwb2ludCIgKi8NCj4gPj4+ICAgICAgIH07DQo+ID4+Pg0KPiA+Pj4gQm90aCBp bm5lciBhbmQgb3V0ZXIgTDIvTDMvTDQgbGV2ZWwgcHJvdG9jb2wgaGVhZGVyIHNwbGl0IGNhbiBi ZQ0KPiBzdXBwb3J0ZWQuDQo+ID4+PiBDb3JyZXNwb25kaW5nIHByb3RvY29sIGhlYWRlciBjYXBh YmlsaXR5IGlzIFJURV9QVFlQRV9MMl9FVEhFUiwNCj4gPj4+IFJURV9QVFlQRV9MM19JUFY0LCBS VEVfUFRZUEVfTDNfSVBWNiwgUlRFX1BUWVBFX0w0X1RDUCwNCj4gPj4+IFJURV9QVFlQRV9MNF9V RFAsIFJURV9QVFlQRV9MNF9TQ1RQLCBSVEVfUFRZUEVfSU5ORVJfTDJfRVRIRVIsDQo+ID4+PiBS VEVfUFRZUEVfSU5ORVJfTDNfSVBWNCwgUlRFX1BUWVBFX0lOTkVSX0wzX0lQVjYsDQo+ID4+PiBS VEVfUFRZUEVfSU5ORVJfTDRfVENQLCBSVEVfUFRZUEVfSU5ORVJfTDRfVURQLA0KPiA+PiBSVEVf UFRZUEVfSU5ORVJfTDRfU0NUUC4NCj4gPj4+DQo+ID4+PiBGb3IgZXhhbXBsZSwgbGV0J3Mgc3Vw cG9zZSB3ZSBjb25maWd1cmVkIHRoZSBSeCBxdWV1ZSB3aXRoIHRoZQ0KPiA+Pj4gZm9sbG93aW5n IHNlZ21lbnRzOg0KPiA+Pj4gICAgICAgc2VnMCAtIHBvb2wwLCBwcm90b19oZHIwPVJURV9QVFlQ RV9MM19JUFY0LCBvZmYwPTJCDQo+ID4+PiAgICAgICBzZWcxIC0gcG9vbDEsIHByb3RvX2hkcjE9 UlRFX1BUWVBFX0w0X1VEUCwgb2ZmMT0xMjhCDQo+ID4+PiAgICAgICBzZWcyIC0gcG9vbDIsIG9m ZjE9MEINCj4gPj4+DQo+ID4+PiBUaGUgcGFja2V0IGNvbnNpc3RzIG9mIE1BQ19JUFY0X1VEUF9Q QVlMT0FEIHdpbGwgYmUgc3BsaXQgbGlrZQ0KPiA+Pj4gZm9sbG93aW5nOg0KPiA+Pj4gICAgICAg c2VnMCAtIGlwdjQgaGVhZGVyIEAgUlRFX1BLVE1CVUZfSEVBRFJPT00gKyAyIGluIG1idWYgZnJv bQ0KPiA+PiBwb29sMA0KPiA+Pj4gICAgICAgc2VnMSAtIHVkcCBoZWFkZXIgQCAxMjggaW4gbWJ1 ZiBmcm9tIHBvb2wxDQo+ID4+PiAgICAgICBzZWcyIC0gcGF5bG9hZCBAIDAgaW4gbWJ1ZiBmcm9t IHBvb2wyDQo+ID4+DQo+ID4+IEl0IG11c3QgYmUgZGVmaW5lZCBob3cgSUNNUHY0IHBhY2tldHMg d2lsbCBiZSBzcGxpdCBpbiBzdWNoIGNhc2UuDQo+ID4+IEFuZCBob3cgVURQIG92ZXIgSVB2NiB3 aWxsIGJlIHNwbGl0Lg0KPiA+DQo+ID4gVGhlIElDTVAgaGVhZGVyIHR5cGUgaXMgbWlzc2VkLCBJ IHdpbGwgZGVmaW5lIHRoZSBleHBlY3RlZCBzcGxpdA0KPiA+IGJlaGF2aW9yIGFuZCBhZGQgaXQg aW4gbmV4dCB2ZXJzaW9uLCB0aGFua3MgZm9yIHlvdXIgY2F0Y2guDQoNCkkgaGF2ZSBhIHF1ZXN0 aW9uIGhlcmUuIFNpbmNlIElDTVAgcGFja2V0cyBhcmUgbWFpbmx5IHVzZWQgdG8gY2hlY2sgdGhl DQpjb25uZWN0aXZpdHkgb2YgbmV0d29yaywgaXMgaXQgbmVjZXNzYXJ5IGZvciB1cyB0byBzcGxp dCBJQ01QIHBhY2tldHM/DQpBbmQgSSBmb3VuZCB0aGVyZSBpcyBubyBSVEVfUFRZUEUgZm9yIElD TVAuDQoNCj4gPg0KPiA+IEluIGZhY3QsIHRoZSBidWZmZXIgc3BsaXQgYmFzZWQgb24gcHJvdG9j b2wgaGVhZGVyIGRlcGVuZHMgb24gdGhlIGRyaXZlcg0KPiBwYXJzaW5nIHJlc3VsdC4NCj4gPiBB cyBsb25nIGFzIGRyaXZlciBjYW4gcmVjb2duaXplIHRoaXMgcGFja2V0IHR5cGUsIEkgdGhpbmsg dGhlcmUgaXMgbm8NCj4gPiBkaWZmZXJlbmNlIGJldHdlZW4gVURQIG92ZXIgSVBWNCBhbmQgVURQ IG92ZXIgSVBWNj8NCj4gDQo+IFdlIGNhbiBiaW5kIGl0IHRvIHB0eXBlcyByZWNvZ25pemVkIGJ5 IHRoZSBIVytkcml2ZXIsIGJ1dCBJIGNhbiBlYXNpbHkNCj4gaW1hZ2luZSB0aGUgY2FzZSB3aGVu IEhXIGhhcyBubyBtZWFucyB0byByZXBvcnQgcmVjb2duaXplZCBwYWNrZXQgdHlwZQ0KPiAoaS5l LiBwdHlwZSBnZXQgcmV0dXJucyBlbXB0eSBsaXN0KSwgYnV0IHN0aWxsIGNvdWxkIHNwbGl0IG9u IGl0Lg0KDQpHZXQgeW91ciBwb2ludC4gQnV0IGlmIG9uZSBwdHlwZSBjYW5ub3QgYmUgcmVjb2du aXplZCBieSBIVytkcml2ZXIsIGlzIGl0IHN0aWxsIG5lY2Vzc2FyeSBmb3INCnVzIHRvIGRvIHRo ZSBzcGxpdD8gVGhlIG1haW4gcHVycG9zZSBvZiBidWZmZXIgc3BsaXQgaXMgdG8gc3BsaXQgaGVh ZGVyIGFuZCBwYXlsb2FkLiBBbHRob3VnaCB3ZQ0KYWRkIHNwbGl0IGZvciB2YXJpb3VzIHByb3Rv Y29sIGhlYWRlcnMgbm93LCB3ZSBzaG91bGQgZm9jdXMgdGhlIHB0eXBlIGNhbiBiZSByZWNvZ25p emVkLg0KDQo+IEFsc28sIG5vYm9keSBndWFyYW50ZWVzIHRoYXQgdGhlcmUgaXMgbm8gZGlmZmVy ZW50IGluIFVEUCBvdmVyIElQdjQgdnMNCj4gSVB2NiByZWNvZ25pdGlvbiBhbmQgc3BsaXQuIElQ djYgY291bGQgaGF2ZSBhIG51bWJlciBvZiBleHRlbnNpb24gaGVhZGVycw0KPiB3aGljaCBjb3Vs ZCBiZSBub3QgdGhhdCB0cml2aWFsIHRvIGhvcCBpbiBIVy4gU28sIEhXIGNvdWxkIHJlY29nbml6 ZSBJUHY2LA0KPiBidXQgbm90IHByb3RvY29scyBhZnRlciBpdC4NCj4gQWxzbyBpdCBpcyB2ZXJ5 IGludGVyZXN0aW5nIHF1ZXN0aW9uIGhvdyB0byBkZWZpbmUgcHJvdG9jb2wgc3BsaXQgZm9yIElQ djYgcGx1cw0KPiBleHRlbnNpb24gaGVhZGVycy4gV2hlcmUgdG8gc3RvcD8NCg0KVGhlIGV4dGVu c2lvbiBoZWFkZXIgeW91IG1lbnRpb25lZCBpcyBpbmRlZWQgYW4gaW50ZXJlc3RpbmcgcXVlc3Rp b24uDQpPbiBvdXIgZGV2aWNlLCB0aGUgc3RvcCB3b3VsZCBiZSB0aGUgZW5kIG9mIGV4dGVuc2lv biBoZWFkZXIuIFRoZSBzYW1lIGFzDQphYm92ZSwgdGhlIG1haW4gcHVycG9zZSBvZiBidWZmZXJz IHNwbGl0IGlzIGZvciBoZWFkZXIgYW5kIHBheWxvYWQuDQpFdmVuIHJ0ZV9mbG93LCB3ZSBkb24n dCBsaXN0IGFsbCBvZiB0aGUgZXh0ZW5zaW9uIGhlYWRlcnMuIFNvIHdlIGNhbid0IGNvcGUgd2l0 aA0KYWxsIHRoZSBJUFY2IGV4dGVuc2lvbiBoZWFkZXJzLg0KDQpGb3IgSVBWNiBleHRlbnNpb24g aGVhZGVycywgd2hhdCBpZiB3ZSB0cmVhdCB0aGUgSVBWNiBoZWFkZXIgYW5kIGV4dGVuc2lvbg0K aGVhZGVyIGFzIG9uZSBsYXllcj8gQmVjYXVzZSA5OSUgb2YgY2FzZXMgd2lsbCBub3QgcmVxdWly ZSBhIHNlcGFyYXRlIGV4dGVuc2lvbg0KaGVhZGVyLg0KDQpIb3BlIHRvIGdldCB5b3VyIGluc2ln aHRzLg0KDQo+IA0KPiA+DQo+ID4+Pg0KPiA+Pj4gTm93IGJ1ZmZldCBzcGxpdCBjYW4gYmUgY29u ZmlndXJlZCBpbiB0d28gbW9kZXMuIEZvciBsZW5ndGggYmFzZWQNCj4gPj4+IGJ1ZmZlciBzcGxp dCwgdGhlIG1wLCBsZW5ndGgsIG9mZnNldCBmaWVsZCBpbiBSeCBwYWNrZXQgc2VnbWVudA0KPiA+ Pj4gc2hvdWxkIGJlIGNvbmZpZ3VyZWQsIHdoaWxlIHRoZSBwcm90b19oZHIgZmllbGQgc2hvdWxk IG5vdCBiZSBjb25maWd1cmVkLg0KPiA+Pj4gRm9yIHByb3RvY29sIGhlYWRlciBiYXNlZCBidWZm ZXIgc3BsaXQsIHRoZSBtcCwgb2Zmc2V0LCBwcm90b19oZHINCj4gPj4+IGZpZWxkIGluIFJ4IHBh Y2tldCBzZWdtZW50IHNob3VsZCBiZSBjb25maWd1cmVkLCB3aGlsZSB0aGUgbGVuZ3RoDQo+ID4+ PiBmaWVsZCBzaG91bGQgbm90IGJlIGNvbmZpZ3VyZWQuDQo+ID4+Pg0KPiA+Pj4gVGhlIHNwbGl0 IGxpbWl0YXRpb25zIGltcG9zZWQgYnkgdW5kZXJseWluZyBQTUQgaXMgcmVwb3J0ZWQgaW4gdGhl DQo+ID4+PiBydGVfZXRoX2Rldl9pbmZvLT5yeF9zZWdfY2FwYSBmaWVsZC4gVGhlIG1lbW9yeSBh dHRyaWJ1dGVzIGZvciB0aGUNCj4gPj4+IHNwbGl0IHBhcnRzIG1heSBkaWZmZXIgZWl0aGVyLCBk cGRrIG1lbW9yeSBhbmQgZXh0ZXJuYWwgbWVtb3J5LA0KPiA+PiByZXNwZWN0aXZlbHkuDQo+ID4+ Pg0KPiA+Pj4gU2lnbmVkLW9mZi1ieTogWHVhbiBEaW5nIDx4dWFuLmRpbmdAaW50ZWwuY29tPg0K PiA+Pj4gU2lnbmVkLW9mZi1ieTogWXVhbiBXYW5nIDx5dWFueC53YW5nQGludGVsLmNvbT4NCj4g Pj4+IFNpZ25lZC1vZmYtYnk6IFdlbnh1YW4gV3UgPHdlbnh1YW54Lnd1QGludGVsLmNvbT4NCj4g Pj4+IFJldmlld2VkLWJ5OiBRaSBaaGFuZyA8cWkuei56aGFuZ0BpbnRlbC5jb20+DQo+ID4+PiBB Y2tlZC1ieTogUmF5IEtpbnNlbGxhIDxtZHJAYXNocm9lLmV1Pg0KPiA+Pj4gLS0tDQo+ID4+PiAg ICBsaWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLQ0KPiAtLS0tDQo+ID4+PiAgICBsaWIvZXRoZGV2L3J0ZV9ldGhkZXYuaCB8IDI4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4gPj4+ICAgIDIgZmlsZXMgY2hhbmdlZCwg NjAgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkNCj4gPj4+DQo+ID4+PiBkaWZmIC0tZ2l0 IGEvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMgYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBpbmRl eA0KPiA+Pj4gMjlhM2Q4MDQ2Ni4uZmJkNTVjZGQ5ZCAxMDA2NDQNCj4gPj4+IC0tLSBhL2xpYi9l dGhkZXYvcnRlX2V0aGRldi5jDQo+ID4+PiArKysgYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYw0K PiA+Pj4gQEAgLTE2NjEsNiArMTY2MSw3IEBAIHJ0ZV9ldGhfcnhfcXVldWVfY2hlY2tfc3BsaXQo Y29uc3Qgc3RydWN0DQo+ID4+IHJ0ZV9ldGhfcnhzZWdfc3BsaXQgKnJ4X3NlZywNCj4gPj4+ICAg IAkJc3RydWN0IHJ0ZV9tZW1wb29sICptcGwgPSByeF9zZWdbc2VnX2lkeF0ubXA7DQo+ID4+PiAg ICAJCXVpbnQzMl90IGxlbmd0aCA9IHJ4X3NlZ1tzZWdfaWR4XS5sZW5ndGg7DQo+ID4+PiAgICAJ CXVpbnQzMl90IG9mZnNldCA9IHJ4X3NlZ1tzZWdfaWR4XS5vZmZzZXQ7DQo+ID4+PiArCQl1aW50 MzJfdCBwcm90b19oZHIgPSByeF9zZWdbc2VnX2lkeF0ucHJvdG9faGRyOw0KPiA+Pj4NCj4gPj4+ ICAgIAkJaWYgKG1wbCA9PSBOVUxMKSB7DQo+ID4+PiAgICAJCQlSVEVfRVRIREVWX0xPRyhFUlIs ICJudWxsIG1lbXBvb2wgcG9pbnRlclxuIik7DQo+ID4+IEBAIC0xNjk0LDEzDQo+ID4+PiArMTY5 NSwzOCBAQCBydGVfZXRoX3J4X3F1ZXVlX2NoZWNrX3NwbGl0KGNvbnN0IHN0cnVjdA0KPiA+PiBy dGVfZXRoX3J4c2VnX3NwbGl0ICpyeF9zZWcsDQo+ID4+PiAgICAJCX0NCj4gPj4+ICAgIAkJb2Zm c2V0ICs9IHNlZ19pZHggIT0gMCA/IDAgOiBSVEVfUEtUTUJVRl9IRUFEUk9PTTsNCj4gPj4+ICAg IAkJKm1icF9idWZfc2l6ZSA9IHJ0ZV9wa3RtYnVmX2RhdGFfcm9vbV9zaXplKG1wbCk7DQo+ID4+ PiAtCQlsZW5ndGggPSBsZW5ndGggIT0gMCA/IGxlbmd0aCA6ICptYnBfYnVmX3NpemU7DQo+ID4+ PiAtCQlpZiAoKm1icF9idWZfc2l6ZSA8IGxlbmd0aCArIG9mZnNldCkgew0KPiA+Pj4gLQkJCVJU RV9FVEhERVZfTE9HKEVSUiwNCj4gPj4+IC0JCQkJICAgICAgICIlcyBtYnVmX2RhdGFfcm9vbV9z aXplICV1IDwgJXUNCj4gPj4gKHNlZ21lbnQgbGVuZ3RoPSV1ICsgc2VnbWVudCBvZmZzZXQ9JXUp XG4iLA0KPiA+Pj4gLQkJCQkgICAgICAgbXBsLT5uYW1lLCAqbWJwX2J1Zl9zaXplLA0KPiA+Pj4g LQkJCQkgICAgICAgbGVuZ3RoICsgb2Zmc2V0LCBsZW5ndGgsIG9mZnNldCk7DQo+ID4+PiAtCQkJ cmV0dXJuIC1FSU5WQUw7DQo+ID4+PiArCQlpZiAocHJvdG9faGRyID09IFJURV9QVFlQRV9VTktO T1dOKSB7DQo+ID4+PiArCQkJLyogU3BsaXQgYXQgZml4ZWQgbGVuZ3RoLiAqLw0KPiA+Pj4gKwkJ CWxlbmd0aCA9IGxlbmd0aCAhPSAwID8gbGVuZ3RoIDogKm1icF9idWZfc2l6ZTsNCj4gPj4+ICsJ CQlpZiAoKm1icF9idWZfc2l6ZSA8IGxlbmd0aCArIG9mZnNldCkgew0KPiA+Pj4gKwkJCQlSVEVf RVRIREVWX0xPRyhFUlIsDQo+ID4+PiArCQkJCQkiJXMgbWJ1Zl9kYXRhX3Jvb21fc2l6ZSAldSA8 ICV1DQo+ID4+IChzZWdtZW50IGxlbmd0aD0ldSArIHNlZ21lbnQgb2Zmc2V0PSV1KVxuIiwNCj4g Pj4+ICsJCQkJCW1wbC0+bmFtZSwgKm1icF9idWZfc2l6ZSwNCj4gPj4+ICsJCQkJCWxlbmd0aCAr IG9mZnNldCwgbGVuZ3RoLCBvZmZzZXQpOw0KPiA+Pj4gKwkJCQlyZXR1cm4gLUVJTlZBTDsNCj4g Pj4+ICsJCQl9DQo+ID4+PiArCQl9IGVsc2Ugew0KPiA+Pj4gKwkJCS8qIFNwbGl0IGFmdGVyIHNw ZWNpZmllZCBwcm90b2NvbCBoZWFkZXIuICovDQo+ID4+PiArCQkJaWYgKCEocHJvdG9faGRyICYN Cj4gPj4gUlRFX0JVRkZFUl9TUExJVF9QUk9UT19IRFJfTUFTSykpIHsNCj4gPj4NCj4gPj4gVGhl IGNvbmRpdGlvbiBsb29rcyBzdXNwaWNpb3VzLiBJdCB3aWxsIGJlIHRydWUgaWYgcHJvdG9faGRy IGhhcyBubw0KPiA+PiBzaW5nbGUgYml0IGZyb20gdGhlIG1hc2suIEkgZ3Vlc3MgaXQgaXMgbm90 IHRoZSBpbnRlbnQuDQo+ID4NCj4gPiBBY3R1YWxseSBpdCBpcyB0aGUgaW50ZW50Li4uIEhlcmUg dGhlIG1hc2sgaXMgdXNlZCB0byBjaGVjayBpZg0KPiA+IHByb3RvX2hkciBiZWxvbmdzIHRvIHRo ZSBpbm5lci9vdXRlciBMMi9MMy9MNCBjYXBhYmlsaXR5IHdlIGRlZmluZWQuDQo+ID4gQW5kIHdo aWNoIHByb3RvX2hkciBpcyBzdXBwb3J0ZWQgYnkgdGhlIE5JQyB3aWxsIGJlIGNoZWNrZWQgaW4g dGhlIFBNRA0KPiBsYXRlci4NCg0KTmVlZCB0byBjb3JyZWN0IGhlcmUuIFlvdSBhcmUgcmlnaHQs IEkgbWFkZSBhIGJ1ZyBpbiBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbi4NCg0KPiANCj4gRnJhbmts eSBzcGVha2luZyBJIHNlZSBubyB2YWx1ZSBpbiBzdWNoIGluY29tcGxldGUgY2hlY2sgaWYgd2Ug c3RpbGwgcmVseSBvbg0KPiBkcml2ZXIuIEkgc2ltcGx5IHNlZSBubyByZWFzb24gdG8gb2JsaWdl IHRoZSBkcml2ZXIgdG8gc3VwcG9ydCBvbmUgb2YgdGhlc2UNCj4gcHJvdG9jb2xzLg0KDQpXaXRo IEFQSSwgd2UgY2FuIGdldCB0aGUgZHJpdmVyJ3MgY2FwYWJpbGl0aWVzIGZpcnN0LCBhbmQgZG8g dGhlIGNoZWNrIGluIGV0aGRldiBsYXRlci4NCkluIHRoaXMgd2F5LCB3ZSBjYW4gZmluaXNoIHRo ZSBjaGVja3MgaW4gb25jZS4gUGxlYXNlIHNlZSB2OS4NCg0KPiANCj4gPg0KPiA+PiBJIGd1ZXNz IHRoZSBjb25kaXRpb24gc2hvdWxkIGJlDQo+ID4+ICAgICBwcm90b19oZHIgJiB+UlRFX0JVRkZF Ul9TUExJVF9QUk9UT19IRFJfTUFTSyBpLmUuIHRoZXJlIGlzDQo+ID4+IHVuc3VwcG9ydGVkIGJp dHMgaW4gcHJvdG9faGRyDQo+ID4+DQo+ID4+IElNSE8gd2UgbmVlZCBleHRyYSBmaWVsZCBpbiBk ZXZfaW5mbyB0byByZXBvcnQgc3VwcG9ydGVkIHByb3RvY29scyB0bw0KPiA+PiBzcGxpdCBvbi4g T3IgYSBuZXcgQVBJIHRvIGdldCBhbiBhcnJheSBzaW1pbGFyIHRvIHB0eXBlIGdldC4NCj4gPj4g TWF5IGJlIGEgbmV3IEFQSSBpcyBhIGJldHRlciBjaG9pY2UgdG8gbm90IG92ZXJsb2FkIGRldl9p bmZvIGFuZCB0bw0KPiA+PiBiZSBtb3JlIGZsZXhpYmxlIGluIHJlcG9ydGluZy4NCj4gPg0KPiA+ IFRoYW5rcyBmb3IgeW91ciBzdWdnZXN0aW9uLg0KPiA+IEhlcmUgSSBob3BlIHRvIGNvbmZpcm0g dGhlIGludGVudCBvZiBkZXZfaW5mbyBvciBBUEkgdG8gZXhwb3NlIHRoZQ0KPiBzdXBwb3J0ZWQg cHJvdG9faGRyIG9mIGRyaXZlci4NCj4gPiBJcyBpdCBmb3IgdGhlIHByb19oZHIgY2hlY2sgaW4g dGhlIHJ0ZV9ldGhfcnhfcXVldWVfY2hlY2tfc3BsaXQoKT8NCj4gPiBJZiBzbywgY291bGQgd2Ug anVzdCBjaGVjayB3aGV0aGVyIHByb19oZHJzIGNvbmZpZ3VyZWQgYmVsb25ncyB0bw0KPiA+IEwy L0wzL0w0IGluIGxpYiwgYW5kIGNoZWNrIHRoZSBjYXBhYmlsaXR5IGluIFBNRD8gVGhpcyBpcyB3 aGF0IHRoZSBjdXJyZW50DQo+IGRlc2lnbiBkb2VzLg0KPiANCj4gTG9vay4gQXBwbGljYXRpb24g bmVlZHMgdG8ga25vdyB3aGF0IHRvIGV4cGVjdCBmcm9tIGV0aCBkZXZpY2UuDQo+IEl0IHNob3Vs ZCBrbm93IHdoaWNoIHByb3RvY29scyBpdCBjYW4gc3BsaXQgb24uIE9mIGNvdXJzZSB3ZSBjYW4g ZW5mb3JjZQ0KPiBhcHBsaWNhdGlvbiB0byB1c2UgdHJ5LWZhaWwgYXBwcm9hY2ggd2hpY2ggd291 bGQgbWFrZSBzZW5zZSBpZiB3ZSBoYXZlDQo+IGRlZGljYXRlZCBBUEkgdG8gcmVxdWVzdCBSeCBi dWZmZXIgc3BsaXQsIGJ1dCBzaW5jZSBpdCBpcyBkb25lIHZpYSBSeCBxdWV1ZQ0KPiBjb25maWd1 cmF0aW9uLCBpdCBjb3VsZCBiZSB0cmlja3kgZm9yIGFwcGxpY2F0aW9uIHRvIHJlYWxpemUgd2hp Y2ggcGFydCBvZiB0aGUNCj4gY29uZmlndXJhdGlvbiBpcyB3cm9uZy4gSXQgY291bGQgc2ltcGx5 IHJlc3VsdCBpbiBhIHRvbyBtYW55IHJldHJpZXMgd2l0aA0KPiBkaWZmZXJlbnQgY29uZmlndXJh dGlvbi4NCg0KQWdyZWUuIFRvIGF2b2lkIHRoZSB1bm5lY2Vzc2FyeSB0cnktZmFpbHMsIEkgd2ls bCBhZGQgYSBuZXcgQVBJIGluIGRldl9vcHMsDQpwbGVhc2Ugc2VlIHY5Lg0KDQo+IA0KPiBJLmUu IHRoZSBpbmZvcm1hdGlvbiBzaG91bGQgYmUgdXNlZCBieSBldGhkZXYgdG8gdmFsaWRhdGUgcmVx dWVzdCBhbmQgdGhlDQo+IGluZm9ybWF0aW9uIHNob3VsZCBiZSB1ZWQgYnkgdGhlIGFwcGxpY2F0 aW9uIHRvIHVuZGVyc3RhbmQgd2hhdCBpcw0KPiBzdXBwb3J0ZWQuDQo+IA0KPiA+DQo+ID4gQWN0 dWFsbHkgSSBoYXZlIGFub3RoZXIgcXVlc3Rpb24sIGRvIHdlIG5lZWQgYSBBUEkgb3IgZGV2X2lu Zm8gdG8gZXhwb3NlDQo+IHdoaWNoIGJ1ZmZlciBzcGxpdCB0aGUgZHJpdmVyIHN1cHBvcnRzLg0K PiA+IGkuZS4gbGVuZ3RoIGJhc2VkIG9yIHByb3RvX2hkciBiYXNlZC4gQmVjYXVzZSBpdCByZXF1 aXJlcyBkaWZmZXJlbnQNCj4gPiBmaWVsZHMgdG8gYmUgY29uZmlndXJlZCBpbiBSWCBwYWNrZXQg c2VnbWVudC4NCj4gDQo+IFNlZSBhYm92ZS4gSWYgZGVkaWNhdGVkIEFQSSByZXR1cm4gLUVOT1RT VVAgb3IgZW1wdHkgc2V0IG9mIHN1cHBvcnRlZA0KPiBwcm90b2NvbHMgdG8gc3BsaXQgb24sIHRo ZSBhbnN3ZXIgaXMgY2xlYXIuDQoNCkdldCB5b3VyIHBvaW50LiBJIHRvdGFsbHkgYWdyZWUgd2l0 aCB5b3VyIGlkZWEgb2YgYSBuZXcgQVBJLg0KVGhyb3VnaCB0aGUgQVBJLCB0aGUgbG9naWMgd2ls bCBsb29rIGxpa2U6DQpyZXQgPSBydGVfZ2V0X3N1cHBvcnRlZF9idWZmZXJfc3BsaXRfcHJvdG8o KTsNCglpZiAocmV0ID09IC1FTk9UU1VQKQ0KCQlDaGVjayBsZW5ndGggYmFzZWQgYnVmZmVyIHNw bGl0DQoJZWxzZQ0KCQlDaGVja2VkIHByb3RvIGJhc2VkIGJ1ZmZlciBzcGxpdA0KDQpXZSBkb24n dCBuZWVkIHRvIGNhcmUgYWJvdXQgdGhlIGlycmVsZXZhbnQgZmllbGRzIGluIHJlc3BlY3RpdmUN CmJ1ZmZlciBzcGxpdCBhbnltb3JlLg0KDQpCVFcsIGNvdWxkIHlvdSBoZWxwIHRvIHJldmlldyB0 aGUgZGVwcmVjYXRpb24gbm90aWNlIGZvciBoZWFkZXIgc3BsaXQ/DQpJZiBpdCBnZXRzIGFja2Vk LCBJIHdpbGwgc3RhcnQgdGhlIGRlcHJlY2F0aW9uIGluIDIyLjExLg0KDQpUaGFua3MsDQpYdWFu DQoNCj4gDQo+ID4NCj4gPiBIb3BlIHRvIGdldCB5b3VyIGluc2lnaHRzLiA6KQ0KPiA+DQo+ID4+ DQo+ID4+PiArCQkJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gPj4+ICsJCQkJCSJQcm90b2NvbCBo ZWFkZXIgJXUgbm90DQo+ID4+IHN1cHBvcnRlZClcbiIsDQo+ID4+PiArCQkJCQlwcm90b19oZHIp Ow0KPiA+Pg0KPiA+PiBJIHRoaW5rIGl0IHdvdWxkIGJlIHVzZWZ1bCB0byBsb2cgdW5zdXBwb3J0 ZWQgYml0cyBvbmx5LCBpZiB3ZSBzYXkgc28uDQo+ID4NCj4gPiBUaGUgc2FtZSBhcyBhYm92ZS4N Cj4gPiBUaGFua3MgYWdhaW4gZm9yIHlvdXIgdGltZS4NCj4gPg0KPiA+IFJlZ2FyZHMsDQo+ID4g WHVhbg0K