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 3E8EE43861; Mon, 8 Jan 2024 09:17:23 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 11552402B0; Mon, 8 Jan 2024 09:17:23 +0100 (CET) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2079.outbound.protection.outlook.com [40.107.6.79]) by mails.dpdk.org (Postfix) with ESMTP id F18D940263; Mon, 8 Jan 2024 09:17:20 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RDbxWAXB7DMzJDbwMCoZIpjAfmO3MjXzVvwju3hTlNwRwjSY0naNAH0ei6TlnSwC2topqoopOwUF/3GFNn/DibGPqOBUAg8WXF/YkY2EO2lrcYh6BPSOk5UT1rFX+ZoI/oU4RnRu/Fzxv7Fhl3FJEkyzWnCwXyLJivCF+FkI8W2xrs1wpQGjLHxbQU9swqdNXZ+WBrxxNN3yqI/DBtVzQx806tgkFluE9Idq0YPddQfqKxpoHEXPqIA3kgXCkYT4yacdWCpQ61UEBt6/yVMfo7HW1ZBiMlbuoch9TAB+LQruEXWCzUulKlNumhPN/6gB6rSkSBkSn/JgDVpKPiXg2w== 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=KePlhrgastTdvHQsOSuUcsp9aqd9EtMmzbGhQw6M3as=; b=eEOL/TudS6fZZFANFCVFCv0chHFo/XmcEWvj2sb0TQdGBvRCufwDw3zyxxoCKpXSX1H1wC9dcw8NXbTEzOlffelkjrRXhihoAHmIdYu2NZpbpPH1y0DL/bgiDQlinnAjeLO9IG3AJL0v5yYNA71cBKozwQ9RbA4RXUX11F4OQlrWR5GzlHFp5QxxyINMvxngzKjR05jy3eW5qQUCb2FNa+CVxiYrxtMQ8ELs4QM+9nQBrlc7RMTKFc4ZuRcWmG7DWziChkzvgYZaS1ODIBgr2avdwn7POAwF2ZO2ttHueks/dLn87FjnTwLxIGyfMV/JWTHgUNc9wchHmg7RcxqsCQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KePlhrgastTdvHQsOSuUcsp9aqd9EtMmzbGhQw6M3as=; b=elC4AbP0POu8iMSfzE0TX2ifxzOcRqShgdEoqjQMZQtAHxZqv5120iqWyiCyrhWeU8O8D6zv4su95oUylE9waSlV+NrH9qOCmjaZcojnX6RKJ5e1apO19rzFzrCmPQT1DM71MWIlFLO5FKxNa/CKv51rHR7sj/4ci7QQiQ6C5cI= Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PA4PR04MB9487.eurprd04.prod.outlook.com (2603:10a6:102:27c::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan 2024 08:17:19 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::f632:28ad:a609:a056]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::f632:28ad:a609:a056%4]) with mapi id 15.20.7159.020; Mon, 8 Jan 2024 08:17:19 +0000 From: Hemant Agrawal To: "jerinj@marvell.com" , "dev@dpdk.org" CC: "techboard@dpdk.org" , Thomas Monjalon Subject: RE: [dpdk-dev] [v5] doc: define qualification criteria for external library Thread-Topic: [dpdk-dev] [v5] doc: define qualification criteria for external library Thread-Index: AQHaQgiPlngUhS/OfUW6VgMIM8p5wrDPkgQA Date: Mon, 8 Jan 2024 08:17:19 +0000 Message-ID: References: <20240105123042.4007877-1-jerinj@marvell.com> <20240108075850.4151361-1-jerinj@marvell.com> In-Reply-To: <20240108075850.4151361-1-jerinj@marvell.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAXPR04MB9328:EE_|PA4PR04MB9487:EE_ x-ms-office365-filtering-correlation-id: 6a260b2d-0303-4268-518f-08dc10223b8f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: wNqqPHjhAi9MMiwnWIFyAxTr6xcH6ne3dQOx1o9Z/8J+d1w+aTLMgUmzmGTA+VpEGasXPcW4HZeY5dpLlqIHhZEpRCAfopTrZ3dcuJIvzc1FqqSfMZ7u9WNnIOgJGmsHii3QoLt0LSAgr702ZSMs1srn6zepVKxFrS5Br6P1f6XTG+OoEGe1yjZsXX75Ddw50FsUD0llHNpi6KJSvemIgtWc19vqblU0AUKSzYzFLDiSmaB0TscOqpvEVCL9z7pWRuB01nrQjyo4qYmlmVReYNm+a8GoZ/NNZY0bM01iANOpI9XOR4VrsFu0UjQiEv/TGDx7/T0kWPH/AlfL9NvU5cuewlTfBjOvhCWF0FIAeZ+eoCSh2/O/mPnVcvXRfF7scYxR34y7wOjS8L2+94f5eVMk7FMSs3rfTWl1UXCfqlSexnztZMnD8GVsGW7MRCa3VqwRvrgxJEwhmgo5QHK6sIH1BQyY74eWqFjz7wjHFkpEzIVV6hAk9DDdowF2Nus6tzZkbXDGeiCTobh/7jeVKcRLAGH4yirKd3y7b9iA2z2CetWo6F8FzDz9x6Nt66TEpqa2oUJ9aMIOnFoSl4Z9r6keUhaaHuCEW1LYIbioPjSOzk1cPpAkfz12QrTzSaQ5jOlNeejPCBfGbxjzd1JHuQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39860400002)(346002)(396003)(366004)(376002)(136003)(230922051799003)(230173577357003)(230273577357003)(451199024)(186009)(1800799012)(64100799003)(55016003)(26005)(9686003)(55236004)(53546011)(7696005)(6506007)(478600001)(71200400001)(966005)(38100700002)(122000001)(33656002)(86362001)(99936003)(5660300002)(2906002)(41300700001)(83380400001)(38070700009)(110136005)(66946007)(66556008)(66476007)(66446008)(54906003)(316002)(64756008)(76116006)(4326008)(44832011)(8676002)(52536014)(8936002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?5JlX5y1fhmZpEPVpELhBSwjWaCo2pxW/eeRUnO2mV92J8qMitQROPfnN+tgL?= =?us-ascii?Q?UY6y/ppa0ObPWeUHhLvEu852IMwQR8qPdLvDIDuk0k/HN7zmDptlnxiFRs0Y?= =?us-ascii?Q?oVOgcYFuyxYuIS+JCFxlaztBs+4KilVPyXLEOPmD186ZtXgGl4+OxtzLv/op?= =?us-ascii?Q?PzVPC2p0Ok0GRx6pJVVQncKCiaTX2KkEX6sD6ZJQelm25ZCqIgFHoGtXfTjo?= =?us-ascii?Q?Bmmb7kOD17RqnCzWiXcpwEfC+aLq+WEUvPtaCVnZxcQmgeDUPKlZlIOANoE7?= =?us-ascii?Q?+lVy0Ew9UHmHRdfvFZAc/I9QuSfeChi2bVXVaWK+4Bxvc1eSW5XCDuBRD4zk?= =?us-ascii?Q?3j7T5w/z6NxxahuYQRVfHyEAx1g2n9Ldad4lcrRpKgA1riKEjKMj8fRJozUO?= =?us-ascii?Q?tEE6pMbhavQdmq0bHM4wEmqbvK1pVwsMTkAxRmfngXmp5T4jz/TVeNLTKyxa?= =?us-ascii?Q?kbtUg6ygAnn2KOGIFSmV9eYIdbuNHzKyySdh1MyJCAOFijPuC0KQSd7E3rsX?= =?us-ascii?Q?iiOcWQ9cBUu7ZSAr1dX2zUp1Gj9lYrdr2eHC7omQI/jFrATo2kBmVPLNKY3N?= =?us-ascii?Q?qZ/zfEHJSvkB8Lo2IzjZ9Nvk7m/GO/PDQZR02LklcWsg0Tuj34QLsRUdb8fk?= =?us-ascii?Q?6Dq5951M0WBT9rf2hLBgEffguLyHY4qvwwp3aEPL8HQUPLy1UdDEaBuaVtRg?= =?us-ascii?Q?kbceyFR628pMeOzBVD6/3E66cj6WNYL6aVd+Za7w51k3Zg8mNrVgGdI1TIJ2?= =?us-ascii?Q?YNOn5d+sHAur9tJ1ddRN9ljTua4hiq4Qnl8ly2Hu0lRgKpk4nIwZPZVemvx0?= =?us-ascii?Q?Cbmwpji0lKGbAdP22PZG7RZekxmH3cKRGbGQMaQa7B1E9GIwMJ0k77tEUSn4?= =?us-ascii?Q?51IMLUzQoxCqUQsJdN8RSzyFo83kmglPB/k4AarrcbZ0CPUWpdBCSnEq1aRz?= =?us-ascii?Q?tkhULX0TvokbWNXkAzi3gSxj2DSSnj/f2unO3pN0oF68VX3RIXT4TEq9wePE?= =?us-ascii?Q?PoE91s/X0tTYEUuebkxQyVlEW95d66hVMZ2w+BSWQgz5XlR04obbFLnw5nYG?= =?us-ascii?Q?aobQ388uAHgaFTJ8K+4eSj0WxVBFs4QqA6iGcID2JUn7KnDZfUPxlZQjbvBF?= =?us-ascii?Q?iXxcoO9jw6acI6EOTbCwm1hWX8Ee6GaJFwAvb2HxGJL0CYSz+pVjdEd9LtNR?= =?us-ascii?Q?SY0XafMOEyA1FVNxZIDoAGkdwovjg6rjNwgXvAD1xR3Gsvrcm5kLAXMDCO10?= =?us-ascii?Q?4H8i+jdwWCcOl2ge8LgQ+aB7auQcK9g4UsRfKN/+BBaX+Wp48wXhxHj72E8Z?= =?us-ascii?Q?WmVUgI5lQGfUWYJMogX/wpk9kkB9pQV6+cjbgbazu7SAZjiN1MmXJdmEqlsC?= =?us-ascii?Q?trpgBU8sGOcSWZmCYCFczKFFLvniFqkMYqAmIx5uPwdfhkVOjHWc1K+sWnhY?= =?us-ascii?Q?D2Z4cGy06RupoLUk/rsJKHWOy9Mmmohv3qesEtDUY4w8+zv5m+0kcAkT7sKH?= =?us-ascii?Q?064npSHPTvUauyK0nGJ3+zJK/mS84tWh7llp6UowOX/esyIoULy9aP22Wb9G?= =?us-ascii?Q?bvqFQ5fNBVerfoJiSBSSJ1ZKQej97b94bjvQH80G?= Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=SHA1; boundary="----=_NextPart_000_07E6_01DA4239.31C4A170" MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6a260b2d-0303-4268-518f-08dc10223b8f X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jan 2024 08:17:19.3356 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Ri5JrIwN41MzEtnTHQEqOoF3jT/IzEJQ1DuDW1rVOsSljgNv3macftrqR9kpglkuNnqu7rDXjd3vI+MOS+8LbQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB9487 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 ------=_NextPart_000_07E6_01DA4239.31C4A170 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit On 08-Jan-24 1:28 PM, jerinj@marvell.com wrote: > From: Jerin Jacob > > Define qualification criteria for external library > based on a techboard meeting minutes [1] and past > learnings from mailing list discussion. > > [1] > http://mails.dpdk.org/archives/dev/2019-June/135847.html > https://mails.dpdk.org/archives/dev/2024-January/284849.html > > Signed-off-by: Jerin Jacob > Acked-by: Thomas Monjalon > --- > doc/guides/contributing/index.rst | 1 + > .../contributing/library_dependency.rst | 52 +++++++++++++++++++ > 2 files changed, 53 insertions(+) > create mode 100644 doc/guides/contributing/library_dependency.rst > > v5: > - Added "Dependency nature" section based on Stephen's input > > v4: > - Address Thomas comments from https://patches.dpdk.org/project/dpdk/patch/20240105121215.3950532-1-jerinj@ marvell.com/ > > v3: > - Updated the content based on TB discussion which is documented at > https://mails.dpdk.org/archives/dev/2024-January/284849.html > > v2: > - Added "Meson build integration" and "Code readability" sections. > > > diff --git a/doc/guides/contributing/index.rst b/doc/guides/contributing/index.rst > index dcb9b1fbf0..e5a8c2b0a3 100644 > --- a/doc/guides/contributing/index.rst > +++ b/doc/guides/contributing/index.rst > @@ -15,6 +15,7 @@ Contributor's Guidelines > documentation > unit_test > new_library > + library_dependency > patches > vulnerability > stable > diff --git a/doc/guides/contributing/library_dependency.rst b/doc/guides/contributing/library_dependency.rst > new file mode 100644 > index 0000000000..94025fdf60 > --- /dev/null > +++ b/doc/guides/contributing/library_dependency.rst > @@ -0,0 +1,52 @@ > +.. SPDX-License-Identifier: BSD-3-Clause > + Copyright(c) 2024 Marvell. > + > +External Library dependency > +=========================== > + > +This document defines the qualification criteria for external libraries that may be > +used as dependencies in DPDK drivers or libraries. > + > +#. **Documentation:** > + > + - Must have adequate documentation for the steps to build it. > + - Must have clear license documentation on distribution and usage aspects of external library. > + > +#. **Free availability:** > + > + - The library must be freely available to build in either source or binary form. > + - It shall be downloadable from a direct link. There shall not be any requirement to explicitly > + login or sign a user agreement. > + > +#. **Usage License:** > + > + - Both permissive (e.g., BSD-3 or Apache) and non-permissive (e.g., GPLv3) licenses are acceptable. > + - In the case of a permissive license, automatic inclusion in the build process is assumed. > + For non-permissive licenses, an additional build configuration option is required. > + > +#. **Distributions License:** > + > + - No specific constraints beyond documentation. Though we are not mandatory open distribution. However we should ask for the defining the distribution aspect clearly in the library. > > + > +#. **Compiler compatibility:** > + > + - The library must be able to compile with a DPDK supported compiler for the given execution > + environment. > + For example, for Linux, the library must be able to compile with GCC and/or clang. > + - Library may be limited to a specific OS. > + > +#. **Meson build integration:** > + > + - The library must have standard method like ``pkg-config`` for seamless integration with > + DPDK's build environment. > + > +#. **Code readability:** > + > + - Optional dependencies should use stubs to minimize ``ifdef`` clutter, promoting improved > + code readability. > + > +#. **Dependency nature:** > + > + - The external library dependency should be optional. > + i.e Missing external library must not impact the core functionality of the DPDK, specific > + library and/or driver will not built if dependencies are not meet. ------=_NextPart_000_07E6_01DA4239.31C4A170 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIhaTCCBaIw ggOKoAMCAQICCE4Rpu+H69FRMA0GCSqGSIb3DQEBCwUAMGUxIjAgBgNVBAMMGU5YUCBJbnRlcm5h bCBQb2xpY3kgQ0EgRzIxCzAJBgNVBAsMAklUMREwDwYDVQQKDAhOWFAgQi5WLjESMBAGA1UEBwwJ RWluZGhvdmVuMQswCQYDVQQGEwJOTDAeFw0yMzA0MjEwNjQzNDVaFw0yODA0MTkwNjQzNDVaMIG2 MRwwGgYDVQQDDBNOWFAgRW50ZXJwcmlzZSBDQSA1MQswCQYDVQQLDAJJVDERMA8GA1UECgwITlhQ IEIuVi4xEjAQBgNVBAcMCUVpbmRob3ZlbjEWMBQGA1UECAwNTm9vcmQtQnJhYmFudDETMBEGCgmS JomT8ixkARkWA3diaTETMBEGCgmSJomT8ixkARkWA254cDETMBEGCgmSJomT8ixkARkWA2NvbTEL MAkGA1UEBhMCTkwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDAWrnSkYP60A8wj4AO kATDjnbdgLv6waFfyXE/hvatdWz2YYtb1YSRi5/wXW+Pz8rsTmSj7iusI+FcLP8WEaMVLn4sEIQY NI8KJUCz21tsIArYs0hMKEUFeCq3mxTJfPqzdj9CExJBlZ5vWS4er8eJI8U8kZrt4CoY7De0FdJh 35Pi5QGzUFmFuaLgXfV1N5yukTzEhqz36kODoSRw+eDHH9YqbzefzEHK9d93TNiLaVlln42O0qaI MmxK1aNcZx+nQkFsF/VrV9M9iLGA+Qb/MFmR20MJAU5kRGkJ2/QzgVQM3Nlmp/bF/3HWOJ2j2mpg axvzxHNN+5rSNvkG2vSpAgMBAAGjggECMIH/MFIGCCsGAQUFBwEBBEYwRDBCBggrBgEFBQcwAoY2 aHR0cDovL253dy5wa2kubnhwLmNvbS9jZXJ0cy9OWFBJbnRlcm5hbFBvbGljeUNBRzIuY2VyMB0G A1UdDgQWBBRYlWDuTnTvZSKqve0ZqSt6jhedBzASBgNVHRMBAf8ECDAGAQH/AgEAMEUGA1UdHwQ+ MDwwOqA4oDaGNGh0dHA6Ly9ud3cucGtpLm54cC5jb20vY3JsL05YUEludGVybmFsUG9saWN5Q0FH Mi5jcmwwHwYDVR0jBBgwFoAUeeFJAeB7zjQ5KUMZMmVhPAbYVaswDgYDVR0PAQH/BAQDAgEGMA0G CSqGSIb3DQEBCwUAA4ICAQAQbWh8H9B8/vU3UgKxwXu2C9dJdtoukO5zA8B39gAsiX/FcVB9j8fr Y7OuqbvF/qs5SNGdISMIuXDrF5FSGvY5Z+EZcYin4z0ppwDr0IzVXzw5NvopgEh6sDXgPhCCh95G Mpt9uHDuav1Jo5dfN9CWB78D+3doDK2FcHWxT6zfBOXQ69c7pioBz5r5FP0ej4HzWWzYUxWJfMcQ uxwIRfISM1GLcX3LliiB3R3eDUJyvgsPhm7d+D1QIgElyLpUJJ+3SZpXK6ZVkQlLcpEG01Jl5RK7 e0g7F2GGn8dkTm2W3E9qRnHLnwj3ghnewYTOk8SWARN7Epe0fPfeXyS0/gHEix7iYs4ac2y8L0AG 2gbegEAKATWSxTgN/At+5MLPqnQuilUZKlcjgtDMzhnSJK2ArmuEXTEJUa/0fwKsnIQuhF4QONqS nm8+QSb+/uRm/IWcW5LuCUuxwufQDzto7Xlc1q1dpOggtUJI+IojSlzTfeHkgYNr2XFZ4BrkY0i8 VFVmnqichsJOM2+zqQU4ZGszdFz/RLD4mLMCvmsMzRI7jIg7fkQer3CvIZkBwS1xjl4+ZGrkzyZm zHyP274V7PSyYztkXvYr/CkTgjIu+JG6vGEN8LuVXt7AmwD7WNF8MKAkPOFIKWHXviyotKGRb0Jl x2XwYgoaXD5Noa1jwB8kKTCCBawwggOUoAMCAQICCE5+BsxlkQBIMA0GCSqGSIb3DQEBCwUAMFox FzAVBgNVBAMMDk5YUCBST09UIENBIEcyMQswCQYDVQQLDAJJVDERMA8GA1UECgwITlhQIEIuVi4x EjAQBgNVBAcMCUVpbmRob3ZlbjELMAkGA1UEBhMCTkwwHhcNMTYwMTI5MTI0MDIzWhcNMzYwMTI0 MTI0MDIzWjBaMRcwFQYDVQQDDA5OWFAgUk9PVCBDQSBHMjELMAkGA1UECwwCSVQxETAPBgNVBAoM CE5YUCBCLlYuMRIwEAYDVQQHDAlFaW5kaG92ZW4xCzAJBgNVBAYTAk5MMIICIjANBgkqhkiG9w0B AQEFAAOCAg8AMIICCgKCAgEAo+z+9o6n82Bqvyeo8HsZ5Tn2RsUcMMWLvU5b1vKTNXUAI4V0YsUQ RITB+QD22YPq2Km6i0DIyPdR1NbnisNpDQmVE27srtduRpB8lvZgOODX/3hhjeTWRZ22PAII57gI vKqZCMUWvYRdYZsSKP+4Q+lEks89ys953tp3PI8EeUztT3qUTfs7TbgD5A9s+1zCPqI7b/XmXTrk WBmwmmqDHBijwIvzy5uE3MTBunVZFAl2kD/jiBgdj+4O4u593Ny1c9c4If6Xvz3+DEIjdvbULrUy GIatwJdvw6FxRt5znmYKe3VyzsY7Zk/8MsOZvzoSPBMSZBWSHj/e8fBwDEDKf6XQ0BD7Z27AWTUc ddk1sphn38HHOwEpjKfOxNGX7fSXqz2JaRtlamvSoCrd4zrH5f94hcSVFcP9nF9m3JqRzAmbGYTd zgAjKjPRVWAgaZGF8b/laK5Ai8gCEi767DuzMsXkvj9/BQw8fyn5xOY55zRmFo2jU8/blWy/jsAw UeEBDo4KPRAuPbSiOt8Jf8NbDOvDGPKwEC8de76SxPi3ulhuFb0Qzxsbk39+ET3Ixy347MAZTji/ a87GeIDWi+nCWHwZPQSEg0e0LVh7uRNNb1clWILEF/bSMe3zT3rWKWDmzCiTn3+PicqvYM7cWiZi 3srlCkIAeaiav9tMaAZ3XG8CAwEAAaN2MHQwHQYDVR0OBBYEFJBIUyMqeeqEmz0+uQ7omXRAXqC2 MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMB8GA1UdIwQYMBaAFJBIUyMqeeqE mz0+uQ7omXRAXqC2MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAhIKiXslbxr5W 1LZDMqxPd9IepFkQ0DJP8/CNm5OqyBgfJeKJKZMiPBNxx/UF9m6IAqJtNy98t1GPHmp/ikJ2jmqV qT0INUt79KLP7HVr3/t2SpIJbWzpx8ZQPG+QJV4i1kSwNfk3gUDKC3hR7+rOD+iSO5163Myz/Czz jN1+syWRVenpbizPof8iE9ckZnD9V05/IL88alSHINotbq+o0tbNhoCHdEu7u/e7MdVIT1eHt8fu b5M10Rhzg5p/rEuzr1AqiEOAGYcVvJDnrI8mY3Mc18RLScBiVHp/Gqkf3SFiWvi//okLIQGMus1G 0CVNqrwrK/6JPB9071FzZjo5S1jiV5/UNhzLykSngcaE3+0/zKiAP2vkimfHHQ72SJk4QI0KOvRB 1GGeF6UrXROwk6NPYEFixwTdVzHJ2hOmqJx5SRXEyttNN12BT8wQOlYpUmXpaad/Ej2vnVsS5nHc YbRn2Avm/DgmsAJ/0IpNaMHiAzXZm2CpC0c8SGi4mWYVA7Pax+PnGXBbZ9wtKxvRrkVpiNGpuXDC WZvXEkx118x+A1SqINon8DS5tbrkfP2TLep7wzZgE6aFN2QxyXdHs4k7gQlTqG04Lf7oo2sHSbO5 kAbU44KYw5fBtLpG7pxlyV5fr+okL70a5SWYTPPsochDqyaHeAWghx/a4++FRjQwggX8MIID5KAD AgECAgg4IAFWH4OCCTANBgkqhkiG9w0BAQsFADBaMRcwFQYDVQQDDA5OWFAgUk9PVCBDQSBHMjEL MAkGA1UECwwCSVQxETAPBgNVBAoMCE5YUCBCLlYuMRIwEAYDVQQHDAlFaW5kaG92ZW4xCzAJBgNV BAYTAk5MMB4XDTIyMDkzMDA4MjUyOVoXDTMyMDkyOTA4MjUyOVowZTEiMCAGA1UEAwwZTlhQIElu dGVybmFsIFBvbGljeSBDQSBHMjELMAkGA1UECwwCSVQxETAPBgNVBAoMCE5YUCBCLlYuMRIwEAYD VQQHDAlFaW5kaG92ZW4xCzAJBgNVBAYTAk5MMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC AgEApcu/gliwg0dn1d35U0pZLMvwbNGN1WW/15pqzBcpG/ZBq5q+ygq4/zkEqQAM3cZsSi2U2tji KZOEfj4csyEJVZFQiwXMptsmErfk7BMoLtaIN79vFOd1bzdjW0HaSTb9GkJ7CTcb7z/FKKiwc2j5 3VVNDR1xVBnUNEaB1AzQOkp6hgupCgnlkw9X+/2+i7UCipk2JWLspg9srFaH0vwrgMFxEfs41y6i BVD70R/4+suoatXvgFv3ltGZ3x/hak3N1hHkjJq3oa1jSkLmp6KoQAqbcHTkeKomMOmPUJK1YqDk pdbGuuRkYU3IvCW5OZgldrkigcOTaMNUaeZUAv8P3TTtqN4jIp/Hls/26VR+CqdoAtmzypBEyvOF DtzqPqVzFXfkUl2HZ0JGTYEXUEfnI0sUJCyLpcLO1DjnwEp8A+ueolYIpLASupGzGMGZ5I5Ou1Ro F2buesEgwb+WV7HRNAXTmezUh3rWLm4fAoUwv1lysICOfGGJQ2VkNe5OXzObvzjl30FYdDWb6F+x IDyG0Awxft4cXZcpFOGR3FH4ZZ5OH+UNl1IxnNwVpGSqmzEU7xnoTXlyVH3Q/jYDG27HSoILQp/y RMJXWx/Xn57ZVXNm63YrZ35XsX91pMHDRoQdJBMKkya813dggmhEszSIBYKqoiFt1HaMK/KnPwSS LO8CAwEAAaOBujCBtzAdBgNVHQ4EFgQUeeFJAeB7zjQ5KUMZMmVhPAbYVaswEgYDVR0TAQH/BAgw BgEB/wIBATAUBgNVHSABAf8ECjAIMAYGBFUdIAAwOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL253 dy5wa2kubnhwLmNvbS9jcmwvTlhQUm9vdENBRzIuY3JsMB8GA1UdIwQYMBaAFJBIUyMqeeqEmz0+ uQ7omXRAXqC2MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAeXZR8kIdv3q3/VJX sdc8y+8blR9OWqmxjAo40VqPOWLcxLP2PkH3pleOPO/7Eg26pQzIESYql5pxlw/tL7b4HhjcYpFo m8yECNChnIxWeh8L/EfMPmcxi8wts4Zuu9q3bWOJxAcu4zWySDzbR/F/y6tzuaLgOZOmYihKTvG4 dbRYBsC+0QMkf+6mfmDuB0O/HXE6bP9yf8rYZ1QWIfDp4h0eMtRuPZ7DeJd15qEqv0AqeAWtuwAd XCQIBxYTYXHJxIwg7sxAMXdkFOXrGc8mCe6J+myQ0d449XIAFVTpBtKPBjUfAnulbDFY8bEmkEEg yPYSmMALe+gDhOIlL3dJ2jeOd/edEfaIGlMfUPEnfD1s2sDXPH8O3o9zWHWaU2bevYw+KUK86QiS a+wGussopb+n/cnBhgd9g1iNsO4V29YpaqaUQZVnKhL3EAhucecoNPiOJ2MMSboxLKmKtAGALdP2 VC2gU7NxmatkzbU/FeZVApqWw/k6SPcO9ugisCOx93H77CHt0kD6JWcMOn5/fQQmVvk34PESJrHC bYb11pdfzHsSPMwgih/CHik1cWP09mP8zS8qcucbUAloNHlkkZl/V5eub/xroh4Dsbk2IybvrsQV 32ABBfV6lfiitfvNOLdZ4NJ2nbPM8hBQpcj7bPE/kadY1yb1jgaulfXkinwwggfFMIIGraADAgEC AhMtAAg3m4yWvLUCsy8DAAAACDebMA0GCSqGSIb3DQEBCwUAMIG2MRwwGgYDVQQDDBNOWFAgRW50 ZXJwcmlzZSBDQSA1MQswCQYDVQQLDAJJVDERMA8GA1UECgwITlhQIEIuVi4xEjAQBgNVBAcMCUVp bmRob3ZlbjEWMBQGA1UECAwNTm9vcmQtQnJhYmFudDETMBEGCgmSJomT8ixkARkWA3diaTETMBEG CgmSJomT8ixkARkWA254cDETMBEGCgmSJomT8ixkARkWA2NvbTELMAkGA1UEBhMCTkwwHhcNMjIw NzE4MDU1MDE1WhcNMjQwNDA4MDkxNTA0WjCBmjETMBEGCgmSJomT8ixkARkWA2NvbTETMBEGCgmS JomT8ixkARkWA254cDETMBEGCgmSJomT8ixkARkWA3diaTEMMAoGA1UECxMDTlhQMQswCQYDVQQL EwJJTjEWMBQGA1UECxMNTWFuYWdlZCBVc2VyczETMBEGA1UECxMKRGV2ZWxvcGVyczERMA8GA1UE AxMIbnhhMTUzMDkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1EQHq9ZE4iXC0JBSJ /DqTjiqy6UlaV3vOe3A2UeeT4Cq6/YxYfg8f/doybNlTxkp1GsYiHF8FC0J0D6uDsOWOWFR7Ntpk 48z6YaiKN1kUG1IFuaE25h4W/9+imrhOP0TlT4dCR34CD2N3+H4f2MGEwVrWaJ58+s4YSeJwj6jH I/tJtRm5hw/j8GjMOxI74lGQGAwAA5NQpdXGTTqhWfYjmzDCPWluPuBYVT8wwoJJt4dgp0vfLsAB 2bOErFNnrPJDfiNm58G3cmn1POmIfeAWhZTSVbHhHl2L5QQU9YLT5xPXeJSzs5IdEjf75puBZ91p ZXj1liwEz9y6lT2RYs3pAgMBAAGjggPkMIID4DA8BgkrBgEEAYI3FQcELzAtBiUrBgEEAYI3FQiF gsB+gY70VYbthTiC65lLmpJWP4Of3RqFqL5FAgFkAgE4MB0GA1UdJQQWMBQGCCsGAQUFBwMEBggr BgEFBQcDAjAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADAnBgkrBgEEAYI3FQoEGjAYMAoG CCsGAQUFBwMEMAoGCCsGAQUFBwMCMEkGA1UdEQRCMECgJgYKKwYBBAGCNxQCA6AYDBZoZW1hbnQu YWdyYXdhbEBueHAuY29tgRZoZW1hbnQuYWdyYXdhbEBueHAuY29tMB0GA1UdDgQWBBSWxWQvNNiD xg9XQ34iBHKAPRiMSjAfBgNVHSMEGDAWgBRYlWDuTnTvZSKqve0ZqSt6jhedBzCCAUYGA1UdHwSC AT0wggE5MIIBNaCCATGgggEthoHIbGRhcDovLy9DTj1OWFAlMjBFbnRlcnByaXNlJTIwQ0ElMjA1 LENOPU5MQU1TUEtJMDAwNSxDTj1DRFAsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2Vy dmljZXMsQ049Q29uZmlndXJhdGlvbixEQz13YmksREM9bnhwLERDPWNvbT9jZXJ0aWZpY2F0ZVJl dm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnSGL2h0dHA6 Ly9ud3cucGtpLm54cC5jb20vY3JsL05YUEVudGVycHJpc2VDQTUuY3Jshi9odHRwOi8vd3d3LnBr aS5ueHAuY29tL2NybC9OWFBFbnRlcnByaXNlQ0E1LmNybDCCARAGCCsGAQUFBwEBBIIBAjCB/zCB uwYIKwYBBQUHMAKGga5sZGFwOi8vL0NOPU5YUCUyMEVudGVycHJpc2UlMjBDQSUyMDUsQ049QUlB LENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24s REM9d2JpLERDPW54cCxEQz1jb20/Y0FDZXJ0aWZpY2F0ZT9iYXNlP29iamVjdENsYXNzPWNlcnRp ZmljYXRpb25BdXRob3JpdHkwPwYIKwYBBQUHMAKGM2h0dHA6Ly9ud3cucGtpLm54cC5jb20vY2Vy dHMvTlhQLUVudGVycHJpc2UtQ0E1LmNydDBRBgkrBgEEAYI3GQIERDBCoEAGCisGAQQBgjcZAgGg MgQwUy0xLTUtMjEtMTkxNTIwNzAxMy0yNjE1MDQwMzY4LTMwNzY5Mjk0NTgtNjI1MzQ2MA0GCSqG SIb3DQEBCwUAA4IBAQC//+Zjgat4f+pFIMU+GEl9TM9oQsli090sQTy1Umrk8Y1Opjr80YKfjz8O YK+t2LQCxJx9QApSlcV6SuAstsAOCsMSk9eHtocyeqm7He01fiht4lP/+vWtC8kGxU52TeQqU8CN iMjpdgacgVKnEYE3BnH/ZMHzK8/viJYrshTOYcbz+AbB43kriMHW/XC0bemKUctDpjVtvmNXcwEM fRcgp+e2PgcnCzAYsoTjNLskWrGUfzpqY7nK4kqaD+OWCj7fCiYtIlDbzVjUHsHnjMng3sQinQ3k pqJRAZPlv95WWwQ2u/mtcMnRF2Kz+PXk59jJgDMFo8AR0/iWXSH3gMZJMIIIRjCCBy6gAwIBAgIT LQAK6PkFwVFgL5FIIAABAAro+TANBgkqhkiG9w0BAQsFADCBtjEcMBoGA1UEAwwTTlhQIEVudGVy cHJpc2UgQ0EgNTELMAkGA1UECwwCSVQxETAPBgNVBAoMCE5YUCBCLlYuMRIwEAYDVQQHDAlFaW5k aG92ZW4xFjAUBgNVBAgMDU5vb3JkLUJyYWJhbnQxEzARBgoJkiaJk/IsZAEZFgN3YmkxEzARBgoJ kiaJk/IsZAEZFgNueHAxEzARBgoJkiaJk/IsZAEZFgNjb20xCzAJBgNVBAYTAk5MMB4XDTIzMTEy ODA0MDczNFoXDTI1MTEyNzA0MDczNFowgZoxEzARBgoJkiaJk/IsZAEZFgNjb20xEzARBgoJkiaJ k/IsZAEZFgNueHAxEzARBgoJkiaJk/IsZAEZFgN3YmkxDDAKBgNVBAsTA05YUDELMAkGA1UECxMC SU4xFjAUBgNVBAsTDU1hbmFnZWQgVXNlcnMxEzARBgNVBAsTCkRldmVsb3BlcnMxETAPBgNVBAMT CG54YTE1MzA5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtSDKUsFV1LV4peksLeuq OfeV/mkb44Dv2eJzdssSqGrWhItwZO9dvemBXkXEpJoFJVp+9w7xv38s0Z1Me7LoVSnWCaEBmaZr nNP8+h7UjJwISLrRgXxBseRBBAL2iXhunRSc2D0o5/LjCwdfcOIGSa4QpPgYcFTPQW2jQWkZzzFu uHu0ry92nY/zaiSDRnmjb5+6BGstXFfNcYFuGyRMq7X4col7gt3i+j5e5CnUzJx649nHWW9MvNv5 uc/WoiGTSayzr/vZB7zQB2YKAb3iujlHY8OM7tFQ7k2FQVZZ8ZxQcedEzo8VBk7UEKGb02csJJ59 pf3xK/55IvLA+UDHGQIDAQABo4IEZTCCBGEwPAYJKwYBBAGCNxUHBC8wLQYlKwYBBAGCNxUIhYLA foGO9FWG7YU4guuZS5qSVj+F5opuhLXhfgIBZAIBOzATBgNVHSUEDDAKBggrBgEFBQcDBDAOBgNV HQ8BAf8EBAMCBSAwDAYDVR0TAQH/BAIwADAbBgkrBgEEAYI3FQoEDjAMMAoGCCsGAQUFBwMEMIGU BgkqhkiG9w0BCQ8EgYYwgYMwCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBLTALBglghkgBZQMEARYw CwYJYIZIAWUDBAEZMAsGCWCGSAFlAwQBAjALBglghkgBZQMEAQUwCgYIKoZIhvcNAwcwBwYFKw4D AgcwDgYIKoZIhvcNAwICAgCAMA4GCCqGSIb3DQMEAgICADAdBgNVHQ4EFgQUMtpWOeaAvmWsxdYh EuJjPOZnpIIwHwYDVR0jBBgwFoAUWJVg7k5072Uiqr3tGakreo4XnQcwggFGBgNVHR8EggE9MIIB OTCCATWgggExoIIBLYaByGxkYXA6Ly8vQ049TlhQJTIwRW50ZXJwcmlzZSUyMENBJTIwNSxDTj1u bGFtc3BraTAwMDUsQ049Q0RQLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2Vz LENOPUNvbmZpZ3VyYXRpb24sREM9d2JpLERDPW54cCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0 aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50hi9odHRwOi8vbnd3 LnBraS5ueHAuY29tL2NybC9OWFBFbnRlcnByaXNlQ0E1LmNybIYvaHR0cDovL3d3dy5wa2kubnhw LmNvbS9jcmwvTlhQRW50ZXJwcmlzZUNBNS5jcmwwggEQBggrBgEFBQcBAQSCAQIwgf8wgbsGCCsG AQUFBzAChoGubGRhcDovLy9DTj1OWFAlMjBFbnRlcnByaXNlJTIwQ0ElMjA1LENOPUFJQSxDTj1Q dWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERDPXdi aSxEQz1ueHAsREM9Y29tP2NBQ2VydGlmaWNhdGU/YmFzZT9vYmplY3RDbGFzcz1jZXJ0aWZpY2F0 aW9uQXV0aG9yaXR5MD8GCCsGAQUFBzAChjNodHRwOi8vbnd3LnBraS5ueHAuY29tL2NlcnRzL05Y UC1FbnRlcnByaXNlLUNBNS5jZXIwSQYDVR0RBEIwQKAmBgorBgEEAYI3FAIDoBgMFmhlbWFudC5h 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 IlpQlHfsUg4AAAAAAAA= ------=_NextPart_000_07E6_01DA4239.31C4A170--