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 60A24A0547; Wed, 29 Jun 2022 23:58:27 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0A71641138; Wed, 29 Jun 2022 23:58:27 +0200 (CEST) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2086.outbound.protection.outlook.com [40.107.20.86]) by mails.dpdk.org (Postfix) with ESMTP id C12C9410D5 for ; Wed, 29 Jun 2022 23:58:25 +0200 (CEST) ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=XlUQysHUb6AmgR5k+dLBjTdC98IgbBIcywglnDjODGudc18EjO1KAQOEe5BJ0gkx8+LD+KN4/S7hGVMT8IMmMBiCCzs9cNEi6aY8CzjdWdXCBQr0wjYGBHowQBStLc3vd0AlZ0vjR1dD/GwpRFQq1TlWvM5zyfDq7wwyOrwRzbbbLKqaThCqnON46teIYu+XxdAIOCxhiUyRcqJRs3SwwlItljLcz0Z+U2PXc4ngvl1mDFZsmJByMz/lEOoYymm7qYOZVQw0zi8EFK2FpQRd7RMrQAPVycvLfkX1JtdopIRLTQpnYtBBjsLqJMbIDT/3dGTELW6NjAak/0R/1/TnYQ== ARC-Message-Signature: i=2; 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=h44cNPbxgCaYi/vQXzFyowDQ2qaokJoHnPZmrjv9eR8=; b=R9SUz/U1zoI7cnrzuhgHnx/OepJaeUF66adfpMgsrJhINU1LnmeWZEhAw1BFEJqUeNu72/ykSvOnbHX8+kMd9QWpA2w3dO52s/EHNTqfRqadt2qyjgrD3RL1GjrI8DUmG6CfimpjeyvpGiTEXuJlhoxfq2a1Ew0w2jh3X4jZmFCnDn1Z/6L3dXkEs+B2mYmH7RjIs66lhYjfVQwpQmxjJW0/C/C55LamirB6JGlDuLOkYYQA0M+2HZcgGOyo1UvaWWTMPc15WkbS2oL1jx+UVHvP37OhBgUrU36DEs/htxQxmYyrgi6dEjvX2y1NnpTh9CnGb4qe96HOTTgQPWEBfA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=dpdk.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=h44cNPbxgCaYi/vQXzFyowDQ2qaokJoHnPZmrjv9eR8=; b=YidzyAHifkyo7AfBkIR/dWPd1RW5J4uOs/t81l5OoZ4ztFK25MjjQkkmuC84fVS5NuxH+rI7fIG57bHtFrUDtN264BF3pwv62MuxZyPX0X8lRXYMNaPkFP8unkcMCioyfhrWRkK1GfoQuokA6g/LCrdjXR7PQbMns1BnSlwMYNU= Received: from DU2PR04CA0068.eurprd04.prod.outlook.com (2603:10a6:10:232::13) by DB9PR08MB6457.eurprd08.prod.outlook.com (2603:10a6:10:23e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.17; Wed, 29 Jun 2022 21:58:24 +0000 Received: from DBAEUR03FT045.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:232:cafe::cd) by DU2PR04CA0068.outlook.office365.com (2603:10a6:10:232::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14 via Frontend Transport; Wed, 29 Jun 2022 21:58:24 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT045.mail.protection.outlook.com (100.127.142.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15 via Frontend Transport; Wed, 29 Jun 2022 21:58:24 +0000 Received: ("Tessian outbound 879f4da7a6e9:v121"); Wed, 29 Jun 2022 21:58:24 +0000 X-CR-MTA-TID: 64aa7808 Received: from 830361e5128e.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 296121F7-E973-499F-A0DC-2C9CBB4F8880.1; Wed, 29 Jun 2022 21:58:14 +0000 Received: from EUR02-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 830361e5128e.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 29 Jun 2022 21:58:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Dcesrp/QPJQP6VHXfgJLd6xGPjrGagU3pvgY9lWYOXP9TEIMkggKfjA5eAozgORA9Kw9lvASGgffN69Dr67UQwGcOJiY499jFerLNRmNsVqx/OAtsxH1k/Ly5e2BczCHeZDHemXOvNILXnweFCZkFwBspekcpmU+wMH4aNQBe/XWm+g7wXFAaayZiZPKxs4UgyhStS4YeDwRkKcL90BWoKxjXW4WH9l58wGLuCM5gCDdP238WzDelyBMnG6K6C02rPz3sDP21Kw2jsejyeMg7AvN796n4pc6kE9Bk2uTr0BqJsRUIcuU8rESNgdBqOuR/D9nl9G81OLfcSAJHv1//A== 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=h44cNPbxgCaYi/vQXzFyowDQ2qaokJoHnPZmrjv9eR8=; b=j8OZJ7GnmYhPg76SEIltXA6dnIqx9dHlVvs0IbeRz0nNIfoQFg0Sk+n5tBCR2O4ukMHySKcuYBVFA1wK8mMB3kdRC1gQw7rG5HCWE7VYByDBY/5HaY7rlH9kA2krK4cf5XkpwWpdm3Sv9PavL+OFIpGoaEpEHhefqpZrKDk9fKj4d9zdFOxxjcNnufUQ5Rn5Csz20flOe4j/yegLl4lkdarGS2rvD/eJXCxtEJSrC6q82s0bghrPYEZtjaRmnAgzIMTRCq88UUy+O6KHvobiBw4rcJtA3gZFn0JpDp8IQM8fhjj6sHYtEutalK31BPsJjYIh6sYXMvbSW2HQbA2Eew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=h44cNPbxgCaYi/vQXzFyowDQ2qaokJoHnPZmrjv9eR8=; b=YidzyAHifkyo7AfBkIR/dWPd1RW5J4uOs/t81l5OoZ4ztFK25MjjQkkmuC84fVS5NuxH+rI7fIG57bHtFrUDtN264BF3pwv62MuxZyPX0X8lRXYMNaPkFP8unkcMCioyfhrWRkK1GfoQuokA6g/LCrdjXR7PQbMns1BnSlwMYNU= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by DB7PR08MB3756.eurprd08.prod.outlook.com (2603:10a6:10:79::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.18; Wed, 29 Jun 2022 21:58:11 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::1c7f:6a8d:b518:f972]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::1c7f:6a8d:b518:f972%4]) with mapi id 15.20.5395.014; Wed, 29 Jun 2022 21:58:11 +0000 From: Honnappa Nagarahalli To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , Konstantin Ananyev , Feifei Wang CC: nd , "dev@dpdk.org" , Ruifeng Wang , "honnappanagarahalli@gmail.com" , nd Subject: RE: [PATCH v1 0/5] Direct re-arming of buffers on receive side Thread-Topic: [PATCH v1 0/5] Direct re-arming of buffers on receive side Thread-Index: AQHYaOu4EddlA+nThkio6GVpTNxEK60tSI6AgAEaNPCABeakgIAFaLvAgATATQCAAI/5AIAoK1bA Date: Wed, 29 Jun 2022 21:58:10 +0000 Message-ID: References: <20220420081650.2043183-1-feifei.wang2@arm.com> <20220516061012.618787-1-feifei.wang2@arm.com> <5320c9dd-8f53-155e-7900-ff02bfa11b4d@yandex.ru> <48994ee9-74b4-7fcc-f61b-c8f45686a031@yandex.ru> <98CBD80474FA8B44BF855DF32C47DC35D870EA@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35D870EA@smartserver.smartshare.dk> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 89233EF36CDA23419BE700FFFD032B2D.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-MS-Office365-Filtering-Correlation-Id: 0cd2921f-507f-46ec-b873-08da5a1a7d27 x-ms-traffictypediagnostic: DB7PR08MB3756:EE_|DBAEUR03FT045:EE_|DB9PR08MB6457:EE_ x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: PG+FyvR9/7BuJMlhbfOu1XVtBe2lSm5I0JrplX3sCRps7G48qs0Sg2rPonYJefKb2WQx4uOpYtIEH5z5bywa6hdW7mwrcvWqVeoP2cbucY268d1V4A9is20htDa7UiR/yCKWurM+/Sss55p6WUp1X88q8mkbAi8GC48XLSUz0EUt1Wd8NApbCtHI3sqqrXiuzWSLIEeAbos2Db19mlFjDdXdgstZAEhyuP4cHwP1ymUEmc51CV6yWNWqiUBp1Ywhj2GLBRm/S/Qwp2tov8nxsoXZWpadSe7TRFi6VlrdcMiSD6rhdglfLtUkpI5POhncknPmatOq/Zigawp2vfBwCuueQ1HV/c/0r8aDpBKLoyXhtQZtj9Ye09Tg0C72mPqEl7ROTSm8YuolEMdpmD5ZQ+qbIdlHozpGMKDDcf0wQMwVylTQbfH4R37+RPKqEcnrTMw33bwrK2aPS/LB81s9SWCV2n0Blnr/dFdJgCUrbnNlZCxkxGfrzZ9iP5GWCugs/Y2lckVw47o22knYAiLauwsg5Yv9MzNTdA4DPn4Uo56Z7qK6NbHc8V9lqvMNhj0hn7BLz5ZEXl54KkhKZJBlW9lymlErbtulVx9eFLM8Pm6M7AegX8wjdyGzkB/G2opA0xPA5C10NYZzASmjkYos6po7QCQOh/obQe7jD8MTROHTdc5GSYNjUf0DvFV63JG82qBLRfrehFNvYpwlMSIlUzkVICx+RuPRGW78XdyZhfrNlF4DtxouekjJxvChwUePUw8QXnHAf1+jRargXqzzfmhEw5rdm1FrUo88soWNWfaNQp+BGGDjCCsr23+S0wamFBKq0jBUVFBL4RvxcaHDzToMXCBruPqFYThUwFCS/DE= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(346002)(376002)(396003)(136003)(366004)(39860400002)(2906002)(66476007)(76116006)(186003)(66446008)(71200400001)(26005)(7696005)(41300700001)(66556008)(66946007)(83380400001)(478600001)(9686003)(64756008)(5660300002)(4326008)(33656002)(52536014)(8676002)(966005)(86362001)(8936002)(6506007)(30864003)(122000001)(6636002)(110136005)(55016003)(54906003)(38070700005)(316002)(38100700002)(23180200003); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3756 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT045.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 376bf93f-9c83-42cf-9af6-08da5a1a754c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NF+kOjdCYboSQ1vPBnXupbJZXD7d+FddW28mHPeHl9FAn6lfR32Wkq5C95cSPNjsFm0WALocmQql9+nKK7XATAFX3x5OFtIoQW3LmPzqNbZeamhJcamU2dmeABhACRw+/nxHgvE+JUf4qxWxDopLBBNTJTrN42YmreccQmvblOEcmS6dM9SZ2Fj5DcR66H2haqmgOdM8karHO0zDlHLn1T7oMFmj2UpCOn3FNC5nEtOuMlfBfYvxMXaxd8Mx1Q+bpUhUSWIUsm325Ezwaj1evWgciApc7I+9eGHLUhxjIKSn1RLpbgVmgy64W8jbpM407F4C2S/6OTttesCHq8mkD1JRD3lKsVmuJ4c5e2SInC5bg9kPEV8p0PrXLgD9PtdpDTo7gIIIBck+3NZCjAECqEyvmHVEKrA8YZ1WmxnO3pflOQDEjCr4QrREmIg6iaASzz+nFLpfxXWaVvyA9GE1s+rV6RCjxklCCm4DObGnfd5z6D0jB1nKQrjvc2k6PdXwhDYl9/zrtcA9vl1idPlNtyh7h2yantToNfeus0Oe2Oo9ID1UjiQBAk66b3LNcpT5rp7FS5F93WKZk9Yrb3mk3dTS/zOfKY88YWnZhF4twu5apXKDbIj2nfbNGdeRZmM58cKmbHfAh0N4E1RAkrPi4z2P+Ny/TWqkpQlXFeSirU86umoDLwpYkJrRI6iuBsZxe4S6YWY0znM4um8qIG7rJ69J0GcsIwqDAvOHWRn9UHjg727RDLLypPbV3JBR/ej/hmBFwFCz/DwkTluaij3N4OQX5w0qhmBzsomIu22QqG8+vp/ZfX/WeUwlwc7ufjiJXZCbIqFbV7YMhNP55GAQEUTzL1+JdemLrgn0hQm5xIA= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230016)(4636009)(39860400002)(376002)(346002)(136003)(396003)(40470700004)(36840700001)(46966006)(8676002)(478600001)(4326008)(52536014)(356005)(8936002)(110136005)(2906002)(26005)(36860700001)(9686003)(336012)(86362001)(55016003)(40460700003)(41300700001)(966005)(83380400001)(7696005)(54906003)(82310400005)(30864003)(40480700001)(316002)(5660300002)(82740400003)(186003)(6506007)(47076005)(6636002)(81166007)(33656002)(70586007)(70206006)(23180200003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2022 21:58:24.1751 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0cd2921f-507f-46ec-b873-08da5a1a7d27 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT045.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6457 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 PHNuaXA+DQoNCj4gPiA+Pj4NCj4gPiA+Pj4+DQo+ID4gPj4+PiBba29uc3RhbnRpbi52LmFuYW55 ZXZAeWFuZGV4LnJ1IGFwcGVhcnMgc2ltaWxhciB0byBzb21lb25lIHdobw0KPiA+ID4+Pj4gcHJl dmlvdXNseSBzZW50IHlvdSBlbWFpbCwgYnV0IG1heSBub3QgYmUgdGhhdCBwZXJzb24uIExlYXJu IHdoeQ0KPiA+IHRoaXMNCj4gPiA+Pj4+IGNvdWxkIGJlIGEgcmlzayBhdA0KPiA+ID4+Pj4gaHR0 cHM6Ly9ha2EubXMvTGVhcm5BYm91dFNlbmRlcklkZW50aWZpY2F0aW9uLl0NCj4gPiA+Pj4+DQo+ ID4gPj4+PiAxNi8wNS8yMDIyIDA3OjEwLCBGZWlmZWkgV2FuZyDQv9C40YjQtdGCOg0KPiA+ID4+ Pj4+DQo+ID4gPj4+Pj4+PiBDdXJyZW50bHksIHRoZSB0cmFuc21pdCBzaWRlIGZyZWVzIHRoZSBi dWZmZXJzIGludG8gdGhlIGxjb3JlDQo+ID4gPj4+Pj4+PiBjYWNoZSBhbmQgdGhlIHJlY2VpdmUg c2lkZSBhbGxvY2F0ZXMgYnVmZmVycyBmcm9tIHRoZSBsY29yZQ0KPiA+IGNhY2hlLg0KPiA+ID4+ Pj4+Pj4gVGhlIHRyYW5zbWl0IHNpZGUgdHlwaWNhbGx5IGZyZWVzIDMyIGJ1ZmZlcnMgcmVzdWx0 aW5nIGluDQo+ID4gPj4+Pj4+PiAzMio4PTI1NkIgb2Ygc3RvcmVzIHRvIGxjb3JlIGNhY2hlLiBU aGUgcmVjZWl2ZSBzaWRlIGFsbG9jYXRlcw0KPiA+IDMyDQo+ID4gPj4+Pj4+PiBidWZmZXJzIGFu ZCBzdG9yZXMgdGhlbSBpbiB0aGUgcmVjZWl2ZSBzaWRlIHNvZnR3YXJlIHJpbmcsDQo+ID4gPj4+ Pj4+PiByZXN1bHRpbmcgaW4gMzIqOD0yNTZCIG9mIHN0b3JlcyBhbmQgMjU2QiBvZiBsb2FkIGZy b20gdGhlDQo+ID4gbGNvcmUgY2FjaGUuDQo+ID4gPj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4gVGhpcyBw YXRjaCBwcm9wb3NlcyBhIG1lY2hhbmlzbSB0byBhdm9pZCBmcmVlaW5nIHRvL2FsbG9jYXRpbmcN Cj4gPiA+Pj4+Pj4+IGZyb20gdGhlIGxjb3JlIGNhY2hlLiBpLmUuIHRoZSByZWNlaXZlIHNpZGUg d2lsbCBmcmVlIHRoZQ0KPiA+IGJ1ZmZlcnMNCj4gPiA+Pj4+Pj4+IGZyb20gdHJhbnNtaXQgc2lk ZSBkaXJlY3RseSBpbnRvIGl0J3Mgc29mdHdhcmUgcmluZy4gVGhpcyB3aWxsDQo+ID4gPj4+Pj4+ PiBhdm9pZCB0aGUgMjU2QiBvZiBsb2FkcyBhbmQgc3RvcmVzIGludHJvZHVjZWQgYnkgdGhlIGxj b3JlDQo+ID4gY2FjaGUuDQo+ID4gPj4+Pj4+PiBJdCBhbHNvIGZyZWVzIHVwIHRoZSBjYWNoZSBs aW5lcyB1c2VkIGJ5IHRoZSBsY29yZSBjYWNoZS4NCj4gPiA+Pj4+Pj4+DQo+ID4gPj4+Pj4+PiBI b3dldmVyLCB0aGlzIHNvbHV0aW9uIHBvc2VzIHNldmVyYWwgY29uc3RyYWludHM6DQo+ID4gPj4+ Pj4+Pg0KPiA+ID4+Pj4+Pj4gMSlUaGUgcmVjZWl2ZSBxdWV1ZSBuZWVkcyB0byBrbm93IHdoaWNo IHRyYW5zbWl0IHF1ZXVlIGl0DQo+ID4gc2hvdWxkDQo+ID4gPj4+Pj4+PiB0YWtlIHRoZSBidWZm ZXJzIGZyb20uIFRoZSBhcHBsaWNhdGlvbiBsb2dpYyBkZWNpZGVzIHdoaWNoDQo+ID4gPj4+Pj4+ PiB0cmFuc21pdCBwb3J0IHRvIHVzZSB0byBzZW5kIG91dCB0aGUgcGFja2V0cy4gSW4gbWFueSB1 c2UNCj4gPiA+Pj4+Pj4+IGNhc2VzIHRoZSBOSUMgbWlnaHQgaGF2ZSBhIHNpbmdsZSBwb3J0IChb MV0sIFsyXSwgWzNdKSwgaW4NCj4gPiA+Pj4+Pj4+IHdoaWNoIGNhc2UNCj4gPiBhDQo+ID4gPj4+ Pj4+PiBnaXZlbiB0cmFuc21pdCBxdWV1ZSBpcyBhbHdheXMgbWFwcGVkIHRvIGEgc2luZ2xlIHJl Y2VpdmUNCj4gPiA+Pj4+Pj4+IHF1ZXVlDQo+ID4gPj4+Pj4+PiAoMToxIFJ4IHF1ZXVlOiBUeCBx dWV1ZSkuIFRoaXMgaXMgZWFzeSB0byBjb25maWd1cmUuDQo+ID4gPj4+Pj4+Pg0KPiA+ID4+Pj4+ Pj4gSWYgdGhlIE5JQyBoYXMgMiBwb3J0cyAodGhlcmUgYXJlIHNldmVyYWwgcmVmZXJlbmNlcyks IHRoZW4gd2UNCj4gPiA+Pj4+Pj4+IHdpbGwgaGF2ZQ0KPiA+ID4+Pj4+Pj4gMToyIChSWCBxdWV1 ZTogVFggcXVldWUpIG1hcHBpbmcgd2hpY2ggaXMgc3RpbGwgZWFzeSB0bw0KPiA+IGNvbmZpZ3Vy ZS4NCj4gPiA+Pj4+Pj4+IEhvd2V2ZXIsIGlmIHRoaXMgaXMgZ2VuZXJhbGl6ZWQgdG8gJ04nIHBv cnRzLCB0aGUNCj4gPiA+Pj4+Pj4+IGNvbmZpZ3VyYXRpb24gY2FuIGJlIGxvbmcuIE1vcmUgb3Zl ciB0aGUgUE1EIHdvdWxkIGhhdmUgdG8NCj4gPiA+Pj4+Pj4+IHNjYW4gYSBsaXN0IG9mIHRyYW5z bWl0IHF1ZXVlcyB0byBwdWxsIHRoZSBidWZmZXJzIGZyb20uDQo+ID4gPj4+Pj4NCj4gPiA+Pj4+ Pj4gSnVzdCB0byByZS1pdGVyYXRlIHNvbWUgZ2VuZXJpYyBjb25jZXJucyBhYm91dCB0aGlzIHBy b3Bvc2FsOg0KPiA+ID4+Pj4+PiAgICAgLSBXZSBlZmZlY3RpdmVseSBsaW5rIFJYIGFuZCBUWCBx dWV1ZXMgLSB3aGVuIHRoaXMgZmVhdHVyZQ0KPiA+IGlzIGVuYWJsZWQsDQo+ID4gPj4+Pj4+ICAg ICAgIHVzZXIgY2FuJ3Qgc3RvcCBUWCBxdWV1ZSB3aXRob3V0IHN0b3BwaW5nIGxpbmtlZCBSWCBx dWV1ZQ0KPiA+IGZpcnN0Lg0KPiA+ID4+Pj4+PiAgICAgICBSaWdodCBub3cgdXNlciBpcyBmcmVl IHRvIHN0YXJ0L3N0b3AgYW55IHF1ZXVlcyBhdCBoaXMNCj4gPiB3aWxsLg0KPiA+ID4+Pj4+PiAg ICAgICBJZiB0aGF0IGZlYXR1cmUgd2lsbCBhbGxvdyB0byBsaW5rIHF1ZXVlcyBmcm9tIGRpZmZl cmVudA0KPiA+IHBvcnRzLA0KPiA+ID4+Pj4+PiAgICAgICB0aGVuIGV2ZW4gcG9ydHMgd2lsbCBi ZWNvbWUgZGVwZW5kZW50IGFuZCB1c2VyIHdpbGwgaGF2ZQ0KPiA+IHRvIHBheSBleHRyYQ0KPiA+ ID4+Pj4+PiAgICAgICBjYXJlIHdoZW4gbWFuYWdpbmcgc3VjaCBwb3J0cy4NCj4gPiA+Pj4+Pg0K PiA+ID4+Pj4+IFtGZWlmZWldIFdoZW4gZGlyZWN0IHJlYXJtIGVuYWJsZWQsIHRoZXJlIGFyZSB0 d28gcGF0aCBmb3INCj4gPiA+Pj4+PiB0aHJlYWQNCj4gPiB0bw0KPiA+ID4+Pj4+IGNob29zZS4g SWYgdGhlcmUgYXJlIGVub3VnaCBUeCBmcmVlZCBidWZmZXJzLCBSeCBjYW4gcHV0IGJ1ZmZlcnMN Cj4gPiA+Pj4+PiBmcm9tIFR4Lg0KPiA+ID4+Pj4+IE90aGVyd2lzZSwgUnggd2lsbCBwdXQgYnVm ZmVycyBmcm9tIG1lbXBvb2wgYXMgdXN1YWwuIFRodXMsDQo+ID4gPj4+Pj4gdXNlcnMNCj4gPiBk bw0KPiA+ID4+Pj4+IG5vdCBuZWVkIHRvIHBheSBtdWNoIGF0dGVudGlvbiBtYW5hZ2luZyBwb3J0 cy4NCj4gPiA+Pj4+DQo+ID4gPj4+PiBXaGF0IEkgYW0gdGFsa2luZyBhYm91dDogcmlnaHQgbm93 IGRpZmZlcmVudCBwb3J0IG9yIGRpZmZlcmVudA0KPiA+IHF1ZXVlcw0KPiA+ID4+Pj4gb2YgdGhl IHNhbWUgcG9ydCBjYW4gYmUgdHJlYXRlZCBhcyBpbmRlcGVuZGVudCBlbnRpdGllczoNCj4gPiA+ Pj4+IGluIGdlbmVyYWwgdXNlciBpcyBmcmVlIHRvIHN0YXJ0L3N0b3AgKGFuZCBldmVuIHJlY29u ZmlndXJlIGluDQo+ID4gc29tZQ0KPiA+ID4+Pj4gY2FzZXMpIG9uZSBlbnRpdHkgd2l0aG91dCBu ZWVkIHRvIHN0b3Agb3RoZXIgZW50aXR5Lg0KPiA+ID4+Pj4gSS5FIHVzZXIgY2FuIHN0b3AgYW5k IHJlLWNvbmZpZ3VyZSBUWCBxdWV1ZSB3aGlsZSBrZWVwIHJlY2VpdmluZw0KPiA+ID4+Pj4gcGFj a2V0cyBmcm9tIFJYIHF1ZXVlLg0KPiA+ID4+Pj4gV2l0aCBkaXJlY3QgcmUtYXJtIGVuYWJsZWQs IEkgdGhpbmsgaXQgd291bGRuJ3QgYmUgcG9zc2libGUgYW55DQo+ID4gbW9yZToNCj4gPiA+Pj4+ IGJlZm9yZSBzdG9wcGluZy9yZWNvbmZpZ3VyaW5nIFRYIHF1ZXVlIHVzZXIgd291bGQgaGF2ZSBt YWtlIHN1cmUNCj4gPiB0aGF0DQo+ID4gPj4+PiBjb3JyZXNwb25kaW5nIFJYIHF1ZXVlIHdvdWxk bid0IGJlIHVzZWQgYnkgZGF0YXBhdGguDQo+ID4gPj4+IEkgYW0gdHJ5aW5nIHRvIHVuZGVyc3Rh bmQgdGhlIHByb2JsZW0gYmV0dGVyLiBGb3IgdGhlIFRYIHF1ZXVlIHRvDQo+ID4gYmUgc3RvcHBl ZCwNCj4gPiA+PiB0aGUgdXNlciBtdXN0IGhhdmUgYmxvY2tlZCB0aGUgZGF0YSBwbGFuZSBmcm9t IGFjY2Vzc2luZyB0aGUgVFgNCj4gPiBxdWV1ZS4NCj4gPiA+Pg0KPiA+ID4+IFN1cmVseSBpdCBp cyB1c2VyIHJlc3BvbnNpYmlsaXR5IHRub3QgdG8gY2FsbCB0eF9idXJzdCgpIGZvcg0KPiA+IHN0 b3BwZWQvcmVsZWFzZWQgcXVldWUuDQo+ID4gPj4gVGhlIHByb2JsZW0gaXMgdGhhdCB3aGlsZSBU WCBmb3IgdGhhdCBxdWV1ZSBpcyBzdG9wcGVkLCBSWCBmb3INCj4gPiByZWxhdGVkIHF1ZXVlIHN0 aWxsDQo+ID4gPj4gY2FuIGNvbnRpbnVlLg0KPiA+ID4+IFNvIHJ4X2J1cnN0KCkgd2lsbCB0cnkg dG8gcmVhZC9tb2RpZnkgVFggcXVldWUgZGF0YSwgdGhhdCBtaWdodCBiZQ0KPiA+IGFscmVhZHkg ZnJlZWQsDQo+ID4gPj4gb3Igc2ltdWx0YW5lb3VzbHkgbW9kaWZpZWQgYnkgY29udHJvbCBwYXRo Lg0KPiA+ID4gVW5kZXJzdG9vZCwgYWdyZWUgb24gdGhlIGlzc3VlDQo+ID4gPg0KPiA+ID4+DQo+ ID4gPj4gQWdhaW4sIGl0IGFsbCBjYW4gYmUgbWl0aWdhdGVkIGJ5IGNhcmVmdWxseSByZS1kZXNp Z25pbmcgYW5kDQo+ID4gbW9kaWZ5aW5nIGNvbnRyb2wgYW5kDQo+ID4gPj4gZGF0YS1wYXRoIGlu c2lkZSB1c2VyIGFwcCAtIGJ5IGRvaW5nIGV4dHJhIGNoZWNrcyBhbmQNCj4gPiBzeW5jaHJvbml6 YXRpb25zLCBldGMuDQo+ID4gPj4gQnV0IGZyb20gcHJhY3RpY2FsIHBvaW50IC0gSSBwcmVzdW1l IG1vc3Qgb2YgdXNlcnMgc2ltcGx5IHdvdWxkDQo+ID4gYXZvaWQgdXNpbmcgdGhpcw0KPiA+ID4+ IGZlYXR1cmUgZHVlIGFsbCBwb3RlbnRpYWwgcHJvYmxlbXMgaXQgbWlnaHQgY2F1c2UuDQo+ID4g PiBUaGF0IGlzIHN1YmplY3RpdmUsIGl0IGFsbCBkZXBlbmRzIG9uIHRoZSBwZXJmb3JtYW5jZSBp bXByb3ZlbWVudHMNCj4gPiB1c2VycyBzZWUgaW4gdGhlaXIgYXBwbGljYXRpb24uDQo+ID4gPiBJ TU8sIHRoZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBzZWVuIHdpdGggdGhpcyBwYXRjaCBpcyB3 b3J0aCBmZXcNCj4gPiBjaGFuZ2VzLg0KPiA+DQo+ID4gWWVzLCBpdCBpcyBzdWJqZWN0aXZlIHRp bGwgc29tZSBleHRlbnQsIHRob3VnaCBteSBmZWVsaW5nIHRoYXQgaXQNCj4gPiBtaWdodCBlbmQt dXAgYmVpbmcgc29ydCBvZiBzeW50aGV0aWMgaW1wcm92ZW1lbnQgdXNlZCBvbmx5IGJ5IHNvbWUN Cj4gPiBzaG93LWNhc2UgYmVuY2htYXJrcy4NCj4gDQo+IEkgYmVsaWV2ZSB0aGF0IG9uZSBzcGVj aWZpYyBpbXBvcnRhbnQgdXNlIGNhc2UgaGFzIGFscmVhZHkgYmVlbiBtZW50aW9uZWQsIHNvIEkN Cj4gZG9uJ3QgdGhpbmsgdGhpcyBpcyBhIGJlbmNobWFyayBvbmx5IGZlYXR1cmUuDQorMQ0KDQo+ IA0KPiA+ICBGcm9tIG15IHBlcnNwZWN0aXZlLCBpdCB3b3VsZCBiZSBtdWNoIG1vcmUgcGxhdXNp YmxlLCBpZiB3ZSBjYW4NCj4gPiBpbnRyb2R1Y2Ugc29tZSBzb3J0IG9mIGdlbmVyaWMgaW1wcm92 ZW1lbnQsIHRoYXQgZG9lc24ndCBpbXBvc2UgYWxsDQo+ID4gdGhlc2UgZXh0cmEgY29uc3RyYWlu dHMgYW5kIGltcGxpY2F0aW9ucy4NCj4gPiBMaWtlIG9uZSwgZGlzY3Vzc2VkIGJlbG93IGluIHRo YXQgdGhyZWFkIHdpdGggWkMgbWVtcG9vbCBhcHByb2FjaC4NCj4gPg0KPiANCj4gQ29uc2lkZXJp bmcgdGhpcyBmZWF0dXJlIGZyb20gYSBoaWdoIGxldmVsIHBlcnNwZWN0aXZlLCBJIGFncmVlIHdp dGggS29uc3RhbnRpbidzDQo+IGNvbmNlcm5zLCBzbyBJJ2xsIGFsc28gc3VwcG9ydCBoaXMgdmll d3MuDQpXZSBkaWQgaGFjayB0aGUgWkMgbWVtcG9vbCBhcHByb2FjaCBbMV0sIGxldmVsIG9mIGlt cHJvdmVtZW50IGlzIHByZXR0eSBzbWFsbCBjb21wYXJlZCB3aXRoIHRoaXMgcGF0Y2guDQoNClsx XSBodHRwOi8vcGF0Y2hlcy5kcGRrLm9yZy9wcm9qZWN0L2RwZGsvcGF0Y2gvMjAyMjA2MTMwNTUx MzYuMTk0OTc4NC0xLWZlaWZlaS53YW5nMkBhcm0uY29tLw0KDQo+IA0KPiBJZiB0aGlzIHBhdGNo IGlzIHN1cHBvc2VkIHRvIGJlIGEgZ2VuZXJpYyBmZWF0dXJlLCBwbGVhc2UgYWRkIHN1cHBvcnQg Zm9yIGl0IGluIGFsbA0KPiBOSUMgUE1Ecywgbm90IGp1c3Qgb25lLiAoUmVnYXJkbGVzcyBpZiB0 aGUgZmVhdHVyZSBpcyBkZWZpbmVkIGFzIDE6MSBtYXBwaW5nIG9yDQo+IE46TSBtYXBwaW5nLikg SXQgaXMgcHVyZWx5IHNvZnR3YXJlLCBzbyBpdCBzaG91bGQgYmUgYXZhaWxhYmxlIGZvciBhbGwg UE1Ecywgbm90DQo+IGp1c3QgeW91ciBmYXZvcml0ZSBoYXJkd2FyZSEgQ29uc2lkZXIgdGhlICJm YXN0IG1idWYgZnJlZSIgZmVhdHVyZSwgd2hpY2ggaXMNCj4gcHVyZSBzb2Z0d2FyZTsgd2h5IGlz IHRoYXQgZmVhdHVyZSBub3QgaW1wbGVtZW50ZWQgaW4gYWxsIFBNRHM/DQpBZ3JlZSwgaXQgaXMg Z29vZCB0byBoYXZlIGl0IHN1cHBvcnRlZCBpbiBhbGwgdGhlIGRyaXZlcnMuIFdlIGRvIG5vdCBo YXZlIGEgZmF2b3JpdGUgaGFyZHdhcmUsIGp1c3QgcGlja2VkIGEgUE1EIHdoaWNoIHdlIGFyZSBt b3JlIGZhbWlsaWFyIHdpdGguIFdlIGRvIHBsYW4gdG8gaW1wbGVtZW50IGluIG90aGVyIHByb21p bmVudCBQTURzLg0KDQo+IA0KPiBBIHNlY29uZGFyeSBwb2ludCBJJ20gbWFraW5nIGhlcmUgaXMg dGhhdCB0aGlzIHNwZWNpZmljIGZlYXR1cmUgd2lsbCBsZWFkIHRvIGFuDQo+IGVub3Jtb3VzIGFt b3VudCBvZiBjb3B5LXBhc3RlIGNvZGUsIGluc3RlYWQgb2YgYSBnZW5lcmljIGxpYnJhcnkgZnVu Y3Rpb24NCj4gZWFzaWx5IGF2YWlsYWJsZSBmb3IgYWxsIFBNRHMuDQpBcmUgeW91IHRhbGtpbmcg YWJvdXQgdGhlIGk0MGUgZHJpdmVyIGNvZGUgaW4gc3BlY2lmaWM/IElmIHllcywgYWdyZWUgd2Ug c2hvdWxkIGF2b2lkIGNvcHktcGFzdGUgYW5kIHdlIHdpbGwgbG9vayB0byByZWR1Y2UgdGhhdC4N Cg0KDQo+IA0KPiA+DQo+ID4gPj4NCj4gPiA+Pj4gTGlrZSBGZWlmZWkgc2F5cywgdGhlIFJYIHNp ZGUgaGFzIHRoZSBub3JtYWwgcGFja2V0IGFsbG9jYXRpb24NCj4gPiA+Pj4gcGF0aA0KPiA+IHN0 aWxsIGF2YWlsYWJsZS4NCj4gPiA+Pj4gQWxzbyB0aGlzIHNvdW5kcyBsaWtlIGEgY29ybmVyIGNh c2UgdG8gbWUsIHdlIGNhbiBoYW5kbGUgdGhpcw0KPiA+IHRocm91Z2ggY2hlY2tzIGluDQo+ID4g Pj4gdGhlIHF1ZXVlX3N0b3AgQVBJLg0KPiA+ID4+DQo+ID4gPj4gRGVwZW5kcy4NCj4gPiA+PiBp ZiBpdCB3b3VsZCBiZSBhbGxvd2VkIHRvIGxpbmsgcXVldWVzIG9ubHkgZnJvbSB0aGUgc2FtZSBw b3J0LCB0aGVuDQo+ID4geWVzLCBleHRyYQ0KPiA+ID4+IGNoZWNrcyBmb3IgcXVldWUtc3RvcCBt aWdodCBiZSBlbm91Z2guDQo+ID4gPj4gQXMgcmlnaHQgbm93IERQREsgZG9lc24ndCBhbGxvdyB1 c2VyIHRvIGNoYW5nZSBudW1iZXIgb2YgcXVldWVzDQo+ID4gd2l0aG91dA0KPiA+ID4+IGRldl9z dG9wKCkgZmlyc3QuDQo+ID4gPj4gVGhvdWdoIGlmIGl0IHdvdWxkIGJlIGFsbG93ZWQgdG8gbGlu ayBxdWV1ZXMgZnJvbSBkaWZmZXJlbnQgcG9ydHMsDQo+ID4gdGhlbiBzaXR1YXRpb24NCj4gPiA+ PiB3aWxsIGJlIG11Y2ggd29yc2UuDQo+ID4gPj4gUmlnaHQgbm93IHBvcnRzIGFyZSB0b3RhbGx5 IGluZGVwZW5kZW50IGVudGl0aWVzIChleGNlcHQgc29tZQ0KPiA+IHNwZWNpYWwgY2FzZXMgbGlr ZQ0KPiA+ID4+IGxpbmstYm9uZGluZywgZXRjLikuDQo+ID4gPj4gQXMgb25lIHBvcnQgY2FuIGtl ZXAgZG9pbmcgUlgvVFgsIHNlY29uZCBvbmUgY2FuIGJlIHN0b3BwZWQsIHJlLQ0KPiA+IGNvbmZn dXJlZCwNCj4gPiA+PiBldmVuIGRldGFjaGVkLCBhbmQgbmV3bHkgYXR0YWNoZWQgZGV2aWNlIG1p Z2h0IHJlLXVzZSBzYW1lIHBvcnQNCj4gPiBudW1iZXIuDQo+ID4gPiBJIHNlZSB0aGlzIGFzIGEg c2ltaWxhciByZXN0cmljdGlvbiB0byB0aGUgb25lIGRpc2N1c3NlZCBhYm92ZS4NCj4gPg0KPiA+ IFllcywgdGhleSBhcmUgc2ltaWxhciBpbiBwcmluY2lwYWwsIHRob3VnaCBJIHRoaW5rIHRoYXQg dGhlIGNhc2Ugd2l0aA0KPiA+IHF1ZXVlcyBmcm9tIGRpZmZlcmVudCBwb3J0IHdvdWxkIG1ha2Ug dGhpbmdzIG11Y2ggbW9yZSBjb21wbGV4Lg0KPiA+DQo+ID4gID4gRG8geW91IHNlZSBhbnkgaXNz dWVzIGlmIHdlIGVuZm9yY2UgdGhpcyB3aXRoIGNoZWNrcz8NCj4gPg0KPiA+IEhhcmQgdG8gdGVs bCBzdHJhaWdodHdheSwgYSBsb3Qgd2lsbCBkZXBlbmQgaG93IHNtYXJ0IHN1Y2gNCj4gPiBpbXBs ZW1lbnRhdGlvbiB3b3VsZCBiZS4NCj4gPiBVc3VhbGx5IERQREsgdGVuZHMgbm90IHRvIGF2b2lk IGhlYXZ5DQo+ID4gc3luY2hyb25pemF0aW9ucyB3aXRoaW4gaXRzIGRhdGEtcGF0aCBmdW5jdGlv bnMuDQo+IA0KPiBDZXJ0YWlubHkhIEltcGxlbWVudGluZyBtb3JlIGFuZCBtb3JlIG9mIHN1Y2gg ZmVhdHVyZXMgaW4gdGhlIFBNRHMgd2lsbCBsZWFkDQo+IHRvIGxvbmdlciBhbmQgbG9uZ2VyIGRh dGEgcGxhbmUgY29kZSBwYXRocyBpbiB0aGUgUE1Ecy4gSXQgaXMgdGhlICJzYWxhbWkNCj4gbWV0 aG9kIiwgd2hlcmUgZWFjaCBzbWFsbCBwaWVjZSBtYWtlcyBubyBwZXJmb3JtYW5jZSBkaWZmZXJl bmNlLCBidXQgdGhleSBhbGwNCj4gYWRkIHVwLCBhbmQgZXZlbnR1YWxseSB0aGUgc3VtIG9mIHRo ZW0gZG9lcyBpbXBhY3QgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZQ0KPiBnZW5lcmFsIHVzZSBjYXNl IG5lZ2F0aXZlbHkuDQpJdCB3b3VsZCBiZSBnb29kIHRvIGhhdmUgYSB0ZXN0IHJ1bm5pbmcgaW4g VU5IIHRoYXQgc2hvd3MgdGhlIHBlcmZvcm1hbmNlIHRyZW5kLg0KDQo+IA0KPiA+DQo+ID4gPj4N Cj4gPiA+Pg0KPiA+ID4+Pj4NCj4gPiA+Pj4+Pg0KPiA+ID4+Pj4+PiAtIHZlcnkgbGltaXRlZCB1 c2FnZSBzY2VuYXJpbyAtIGl0IHdpbGwgaGF2ZSBhIHBvc2l0aXZlIGVmZmVjdA0KPiA+IG9ubHkN Cj4gPiA+Pj4+Pj4gICAgICB3aGVuIHdlIGhhdmUgYSBmaXhlZCBmb3J3YXJkaW5nIG1hcHBpbmc6 IGFsbCAob3IgbmVhcmx5DQo+ID4gYWxsKSBwYWNrZXRzDQo+ID4gPj4+Pj4+ICAgICAgZnJvbSB0 aGUgUlggcXVldWUgYXJlIGZvcndhcmRlZCBpbnRvIHRoZSBzYW1lIFRYIHF1ZXVlLg0KPiA+ID4+ Pj4+DQo+ID4gPj4+Pj4gW0ZlaWZlaV0gQWx0aG91Z2ggdGhlIHVzYWdlIHNjZW5hcmlvIGlzIGxp bWl0ZWQsIHRoaXMgdXNhZ2UNCj4gPiBzY2VuYXJpbw0KPiA+ID4+Pj4+IGhhcyBhIHdpZGUgcmFu Z2Ugb2YgYXBwbGljYXRpb25zLCBzdWNoIGFzIE5JQyB3aXRoIG9uZSBwb3J0Lg0KPiA+ID4+Pj4N Cj4gPiA+Pj4+IHllcywgdGhlcmUgYXJlIE5JQ3Mgd2l0aCBvbmUgcG9ydCwgYnV0IG5vIGd1YXJh bnRlZSB0aGVyZQ0KPiA+ID4+Pj4gd291bGRuJ3QNCj4gPiBiZQ0KPiA+ID4+Pj4gc2V2ZXJhbCBz dWNoIE5JQ3Mgd2l0aGluIHRoZSBzeXN0ZW0uDQo+ID4gPj4+IFdoYXQgSSBzZWUgaW4gbXkgaW50 ZXJhY3Rpb25zIGlzLCBhIHNpbmdsZSBOSUMvRFBVIGlzIHVuZGVyDQo+ID4gdXRpbGl6ZWQgZm9y IGEgMg0KPiA+ID4+IHNvY2tldCBzeXN0ZW0uIFNvbWUgYXJlIGFkZGluZyBtb3JlIHNvY2tldHMg dG8gdGhlIHN5c3RlbSB0byBiZXR0ZXINCj4gPiB1dGlsaXplIHRoZQ0KPiA+ID4+IERQVS4gVGhl IE5JQyBiYW5kd2lkdGggY29udGludWVzIHRvIGdyb3cgc2lnbmlmaWNhbnRseS4gSSBkbyBub3QN Cj4gPiB0aGluayB0aGVyZSB3aWxsDQo+ID4gPj4gYmUgYSBtdWx0aS1EUFUgcGVyIHNlcnZlciBz Y2VuYXJpby4NCj4gPiA+Pg0KPiA+ID4+DQo+ID4gPj4gSW50ZXJlc3RpbmcuLi4gZnJvbSBteSBl eHBlcmllbmNlIGl0IGlzIHZpc2EtdmVyc2E6DQo+ID4gPj4gaW4gbWFueSBjYXNlcyAyMDBHYi9z IGlzIG5vdCB0aGF0IG11Y2ggdGhlc2UgZGF5cyB0byBzYXR1cmF0ZQ0KPiA+ID4+IG1vZGVybg0K PiA+IDIgc29ja2V0DQo+ID4gPj4geDg2IHNlcnZlci4NCj4gPiA+PiBUaG91Z2ggSSBzdXBwb3Nl IGEgbG90IGRlcGVuZHMgb24gcGFydGljdWxhciBIVyBhbmQgYWN0dWFsIHdvcmtsb2FkLg0KPiA+ ID4+DQo+ID4gPj4+DQo+ID4gPj4+Pg0KPiA+ID4+Pj4+IEZ1cnRyaGVybW9yZSwgSSB0aGluayB0 aGlzIGlzIGEgdHJhZGVvZmYgYmV0d2VlbiBwZXJmb3JtYW5jZSBhbmQNCj4gPiA+Pj4+PiBmbGV4 aWJpbGl0eS4NCj4gPiA+Pj4+PiBPdXIgZ29hbCBpcyB0byBhY2hpZXZlIGJlc3QgcGVyZm9ybWFu Y2UsIHRoaXMgbWVhbnMgd2UgbmVlZCB0bw0KPiA+IGdpdmUNCj4gPiA+Pj4+PiB1cCBzb21lIGZs ZXhpYmlsaXR5IGRlY2lzaXZlbHkuIEZvciBleGFtcGxlIG9mICdGQVNUX0ZSRUUgTW9kZScsDQo+ ID4gaXQNCj4gPiA+Pj4+PiBkZWxldGVzIG1vc3Qgb2YgdGhlIGJ1ZmZlciBjaGVjayAocmVmY250 ID4gMSwgZXh0ZXJuYWwgYnVmZmVyLA0KPiA+IGNoYWluDQo+ID4gPj4+Pj4gYnVmZmVyKSwgY2hv b3NlcyBhIHNob3Jlc3QgcGF0aCwgYW5kIHRoZW4gYWNoaWV2ZSBzaWduaWZpY2FudA0KPiA+ID4+ Pj4+IHBlcmZvcm1hbmNlDQo+ID4gPj4+PiBpbXByb3ZlbWVudC4NCj4gPiA+Pj4+Pj4gV29uZGVy IGRpZCB5b3UgaGFkIGEgY2hhbmNlIHRvIGNvbnNpZGVyIG1lbXBvb2wtY2FjaGUgWkMgQVBJLA0K PiA+ID4+Pj4+PiBzaW1pbGFyIHRvIG9uZSB3ZSBoYXZlIGZvciB0aGUgcmluZz8NCj4gPiA+Pj4+ Pj4gSXQgd291bGQgYWxsb3cgdXMgb24gVFggZnJlZSBwYXRoIHRvIGF2b2lkIGNvcHlpbmcgbWJ1 ZnMgdG8NCj4gPiA+Pj4+Pj4gdGVtcG9yYXJ5IGFycmF5IG9uIHRoZSBzdGFjay4NCj4gPiA+Pj4+ Pj4gSW5zdGVhZCB3ZSBjYW4gcHV0IHRoZW0gc3RyYWlnaHQgZnJvbSBUWCBTVyByaW5nIHRvIHRo ZSBtZW1wb29sDQo+ID4gY2FjaGUuDQo+ID4gPj4+Pj4+IFRoYXQgc2hvdWxkIHNhdmUgZXh0cmEg c3RvcmUvbG9hZCBmb3IgbWJ1ZiBhbmQgbWlnaHQgaGVscCB0bw0KPiA+ID4+Pj4+PiBhY2hpZXZl IHNvbWUgcGVyZm9ybWFuY2UgZ2FpbiB3aXRob3V0IGJ5LXBhc3NpbmcgbWVtcG9vbC4NCj4gPiA+ Pj4+Pj4gSXQgcHJvYmFibHkgd291bGRuJ3QgYmUgYXMgZmFzdCBhcyB3aGF0IHlvdSBwcm9wb3Np bmcsIGJ1dA0KPiA+ID4+Pj4+PiBtaWdodA0KPiA+IGJlDQo+ID4gPj4+Pj4+IGZhc3QgZW5vdWdo IHRvIGNvbnNpZGVyIGFzIGFsdGVybmF0aXZlLg0KPiA+ID4+Pj4+PiBBZ2FpbiwgaXQgd291bGQg YmUgYSBnZW5lcmljIG9uZSwgc28gd2UgY2FuIGF2b2lkIGFsbCB0aGVzZQ0KPiA+ID4+Pj4+PiBp bXBsaWNhdGlvbnMgYW5kIGxpbWl0YXRpb25zLg0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4gW0ZlaWZl aV0gSSB0aGluayB0aGlzIGlzIGEgZ29vZCB0cnkuIEhvd2V2ZXIsIHRoZSBtb3N0IGltcG9ydGFu dA0KPiA+ID4+Pj4+IHRoaW5nIGlzIHRoYXQgaWYgd2UgY2FuIGJ5cGFzcyB0aGUgbWVtcG9vbCBk ZWNpc2l2ZWx5IHRvIHB1cnN1ZQ0KPiA+IHRoZQ0KPiA+ID4+Pj4+IHNpZ25pZmljYW50IHBlcmZv cm1hbmNlIGdhaW5zLg0KPiA+ID4+Pj4NCj4gPiA+Pj4+IEkgdW5kZXJzdGFuZCB0aGUgaW50ZW50 aW9uLCBhbmQgSSBwZXJzb25hbGx5IHRoaW5rIHRoaXMgaXMgd3JvbmcNCj4gPiBhbmQNCj4gPiA+ Pj4+IGRhbmdlcm91cyBhdHRpdHVkZS4NCj4gPiA+Pj4+IFdlIGhhdmUgbWVtcG9vbCBhYnN0cmFj dGlvbiBpbiBwbGFjZSBmb3IgdmVyeSBnb29kIHJlYXNvbi4NCj4gPiA+Pj4+IFNvIHdlIG5lZWQg dG8gdHJ5IHRvIGltcHJvdmUgbWVtcG9vbCBwZXJmb3JtYW5jZSAoYW5kIEFQSSBpZg0KPiA+ID4+ Pj4gbmVjZXNzYXJ5KSBhdCBmaXJzdCBwbGFjZSwgbm90IHRvIGF2b2lkIGl0IGFuZCBicmVhayBv dXIgb3duDQo+ID4gPj4+PiBydWxlcw0KPiA+IGFuZA0KPiA+ID4+IHJlY29tbWVuZGF0aW9ucy4N Cj4gPiA+Pj4gVGhlIGFic3RyYWN0aW9uIGNhbiBiZSB0aG91Z2h0IG9mIGF0IGEgaGlnaGVyIGxl dmVsLiBpLmUuIHRoZQ0KPiA+IGRyaXZlciBtYW5hZ2VzIHRoZQ0KPiA+ID4+IGJ1ZmZlciBhbGxv Y2F0aW9uL2ZyZWUgYW5kIGlzIGhpZGRlbiBmcm9tIHRoZSBhcHBsaWNhdGlvbi4gVGhlDQo+ID4g YXBwbGljYXRpb24gZG9lcw0KPiA+ID4+IG5vdCBuZWVkIHRvIGJlIGF3YXJlIG9mIGhvdyB0aGVz ZSBjaGFuZ2VzIGFyZSBpbXBsZW1lbnRlZC4NCj4gPiA+Pj4NCj4gPiA+Pj4+DQo+ID4gPj4+Pg0K PiA+ID4+Pj4+IEZvciBaQywgdGhlcmUgbWF5YmUgYSBwcm9ibGVtIGZvciBpdCBpbiBpNDBlLiBU aGUgcmVhc29uIGZvcg0KPiA+ID4+Pj4+IHRoYXQgcHV0IFR4IGJ1ZmZlcnMgaW50byB0ZW1wb3Jh cnkgaXMgdGhhdCBpNDBlX3R4X2VudHJ5DQo+ID4gPj4+Pj4gaW5jbHVkZXMNCj4gPiBidWZmZXIN Cj4gPiA+Pj4+PiBwb2ludGVyIGFuZCBpbmRleC4NCj4gPiA+Pj4+PiBUaHVzIHdlIGNhbm5vdCBw dXQgVHggU1dfcmluZyBlbnRyeSBpbnRvIG1lbXBvb2wgZGlyZWN0bHksIHdlDQo+ID4gbmVlZA0K PiA+ID4+Pj4+IHRvIGZpcnN0bHQgZXh0cmFjdCBtYnVmIHBvaW50ZXIuIEZpbmFsbHksIHRob3Vn aCB3ZSB1c2UgWkMsIHdlDQo+ID4gc3RpbGwNCj4gPiA+Pj4+PiBjYW4ndCBhdm9pZCB1c2luZyBh IHRlbXBvcmFyeSBzdGFjayB0byBleHRyYWN0IFR4IGJ1ZmZlcg0KPiA+IHBvaW50ZXJzLg0KPiA+ ID4+Pj4NCj4gPiA+Pj4+IFdoZW4gdGFsa2luZyBhYm91dCBaQyBBUEkgZm9yIG1lbXBvb2wgY2Fj aGUgSSBtZWFudCBzb21ldGhpbmcNCj4gPiBsaWtlOg0KPiA+ID4+Pj4gdm9pZCAqKiBtZW1wb29s X2NhY2hlX3B1dF96Y19zdGFydChzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUgKm1jLA0KPiA+ID4+ Pj4gdWludDMyX3QgKm5iX2VsZW0sIHVpbnQzMl90IGZsYWdzKTsgdm9pZA0KPiA+ID4+Pj4gbWVt cG9vbF9jYWNoZV9wdXRfemNfZmluaXNoKHN0cnVjdA0KPiA+ID4+Pj4gcnRlX21lbXBvb2xfY2Fj aGUgKm1jLCB1aW50MzJfdCBuYl9lbGVtKTsgaS5lLiBfc3RhcnRfIHdpbGwNCj4gPiA+Pj4+IHJl dHVybiB1c2VyIGEgcG9pbnRlciBpbnNpZGUgbXAtY2FjaGUgd2hlcmUgdG8gcHV0IGZyZWUgZWxl bXMgYW5kDQo+ID4gPj4+PiBtYXgNCj4gPiBudW1iZXINCj4gPiA+Pj4+IG9mIHNsb3RzIHRoYXQg Y2FuIGJlIHNhZmVseSBmaWxsZWQuDQo+ID4gPj4+PiBfZmluaXNoXyB3aWxsIHVwZGF0ZSBtYy0+ bGVuLg0KPiA+ID4+Pj4gQXMgYW4gZXhhbXBsZToNCj4gPiA+Pj4+DQo+ID4gPj4+PiAvKiBleHBl Y3QgdG8gZnJlZSBOIG1idWZzICovDQo+ID4gPj4+PiB1aW50MzJfdCBuID0gTjsNCj4gPiA+Pj4+ IHZvaWQgKipwID0gbWVtcG9vbF9jYWNoZV9wdXRfemNfc3RhcnQobWMsICZuLCAuLi4pOw0KPiA+ ID4+Pj4NCj4gPiA+Pj4+IC8qIGZyZWUgdXAgdG8gbiBlbGVtcyAqLw0KPiA+ID4+Pj4gZm9yIChp ID0gMDsgaSAhPSBuOyBpKyspIHsNCj4gPiA+Pj4+DQo+ID4gPj4+PiAgICAgIC8qIGdldCBuZXh0 IGZyZWUgbWJ1ZiBmcm9tIHNvbWV3aGVyZSAqLw0KPiA+ID4+Pj4gICAgICBtYiA9IGV4dHJhY3Rf YW5kX3ByZWZyZWVfbWJ1ZiguLi4pOw0KPiA+ID4+Pj4NCj4gPiA+Pj4+ICAgICAgLyogbm8gbW9y ZSBmcmVlIG1idWZzIGZvciBub3cgKi8NCj4gPiA+Pj4+ICAgICAgaWYgKG1iID09IE5VTEwpDQo+ ID4gPj4+PiAgICAgICAgIGJyZWFrOw0KPiA+ID4+Pj4NCj4gPiA+Pj4+ICAgICAgcFtpXSA9IG1i Ow0KPiA+ID4+Pj4gfQ0KPiA+ID4+Pj4NCj4gPiA+Pj4+IC8qIGZpbmFsaXplIFpDIHB1dCwgd2l0 aCBfaV8gZnJlZWQgZWxlbXMgKi8NCj4gPiA+Pj4+IG1lbXBvb2xfY2FjaGVfcHV0X3pjX2Zpbmlz aChtYywgaSk7DQo+ID4gPj4+Pg0KPiA+ID4+Pj4gVGhhdCB3YXksIEkgdGhpbmsgd2UgY2FuIG92 ZXJjb21lIHRoZSBpc3N1ZSB3aXRoIGk0MGVfdHhfZW50cnkNCj4gPiA+Pj4+IHlvdSBtZW50aW9u ZWQgYWJvdmUuIFBsdXMgaXQgbWlnaHQgYmUgdXNlZnVsIGluIG90aGVyIHNpbWlsYXIgcGxhY2Vz Lg0KPiA+ID4+Pj4NCj4gPiA+Pj4+IEFub3RoZXIgYWx0ZXJuYXRpdmUgaXMgb2J2aW91c2x5IHRv IHNwbGl0IGk0MGVfdHhfZW50cnkgaW50byB0d28NCj4gPiA+Pj4+IHN0cnVjdHMgKG9uZSBmb3Ig bWJ1Ziwgc2Vjb25kIGZvciBpdHMgbWV0YWRhdGEpIGFuZCBoYXZlIGENCj4gPiBzZXBhcmF0ZQ0K PiA+ID4+Pj4gYXJyYXkgZm9yIGVhY2ggb2YgdGhlbS4NCj4gPiA+Pj4+IFRob3VnaCB3aXRoIHRo YXQgYXBwcm9hY2ggd2UgbmVlZCB0byBtYWtlIHN1cmUgbm8gcGVyZiBkcm9wcyB3aWxsDQo+ID4g YmUNCj4gPiA+Pj4+IGludHJvZHVjZWQsIHBsdXMgcHJvYmFibHkgbW9yZSBjb2RlIGNoYW5nZXMg d2lsbCBiZSByZXF1aXJlZC4NCj4gPiA+Pj4gQ29tbWl0ICc1MTcxYjRlZTZiNiIgYWxyZWFkeSBk b2VzIHRoaXMgKGluIGEgZGlmZmVyZW50IHdheSksIGJ1dA0KPiA+IGp1c3QgZm9yDQo+ID4gPj4g QVZYNTEyLiBVbmZvcnR1bmF0ZWx5LCBpdCBkb2VzIG5vdCByZWNvcmQgYW55IHBlcmZvcm1hbmNl DQo+ID4gaW1wcm92ZW1lbnRzLiBXZQ0KPiA+ID4+IGNvdWxkIHBvcnQgdGhpcyB0byBBcm0gTkVP TiBhbmQgbG9vayBhdCB0aGUgcGVyZm9ybWFuY2UuDQo+ID4gPg0KPiA+DQoNCg==