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 15B7942FB8; Wed, 2 Aug 2023 18:57:29 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 98A9A41153; Wed, 2 Aug 2023 18:57:28 +0200 (CEST) Received: from mgamail.intel.com (unknown [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id 654E14021D; Wed, 2 Aug 2023 18:57:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690995446; x=1722531446; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ljA8Xu5/ZKRyb2hamvIxvH2lyY57BPlJ4751V5mY8Nk=; b=nwW5ZZ3U+qfwBa0BVPODHpKqTg5PRG2pG4VaTt/gwg01J/QAa7hVtsaL ubwLU4vLitMlIANYj/rHjQ8yGH08kE2FmjtV4wBubGOc5Rtv5OHv52X86 gYpcU99Eq1YdzAQ9Prpp+6rjgVloc/4B4x+pPDleOPr0h38NW/+mlajbq dHzukwbvps4DkAW0ptpMRU/nWfhPSTv4r2cbHnsjkInV0iGxT2pZweZkv iu+wT44FMRf4dzzqY4mCiuxJASsx74I8hU9b/VneoFkMQSBR8nEdcKvuc 2YzLAuPoHP2+nRz+FWCCgu9oUY2ZSnGm5i6zLDSev7oF6GdKeWip7NmGu w==; X-IronPort-AV: E=McAfee;i="6600,9927,10790"; a="368544404" X-IronPort-AV: E=Sophos;i="6.01,249,1684825200"; d="scan'208";a="368544404" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Aug 2023 09:57:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10790"; a="852941695" X-IronPort-AV: E=Sophos;i="6.01,249,1684825200"; d="scan'208";a="852941695" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga004.jf.intel.com with ESMTP; 02 Aug 2023 09:57:02 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 2 Aug 2023 09:57:02 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Wed, 2 Aug 2023 09:57:02 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.46) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Wed, 2 Aug 2023 09:57:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EtC+d8GZazY+Z+czQLyuwk0iqUy6q2LH3pSxFzJHkSwK5Z3s0m6Ww2ELN4acW9R06JAv3uQrGMUJOo1mVKRw2Hgu5jAgO1lovPbqkZYGLt5OuHzxyNFbAxi2huzNRjRS4RYogV/x1RtfgCfbUppQ2eQ8GhnvFChjigP0fMEzYzwYlhSYuarEYLtMT7K5obFYCYid5u26AszYGPxJ4jeE2zYPf0AgXFaQvDZ26PvO5MuRPUHvgzY4MT8tWNuIIM325cbKeJ6VWKm5aufkAOiCsjOpT743ivoi/q29qaAbetnWEnj071ULAd2UD6YZJ0hGkvEZQTUsHGs/8BwKuorNMw== 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=ljA8Xu5/ZKRyb2hamvIxvH2lyY57BPlJ4751V5mY8Nk=; b=ebM/CoKrMbprtNgNyRSDvfnTVryCb/LtlNT+bICaUEElhirPJ8FDzVSo270h5/loQmuSz88fG1sRUx14Qzy+3a2b0gzOH2QVpJtDFMoSNcd6DKCCCQliCCtJPpBqM2s5zD7jr2WqMTW6Yyi9GoHOpxmk3V4YBb2p1jkbxFeCmPb2MHtwLxkfSXsX9onONg0OLGzMTyWYFztUAlbnFGEqGXLwtInIy166WgoCDBOVUS+5yDL3WqvBj8ovB+O/+m+sMc/60vtuXGCMaqMB/LnxLf73j/QzURTy3pF+PbrSPjyOa93NxkR0R1yGnKD8EzqepGdxjWRa+QYktQyoIdc1DQ== 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 PH7PR11MB7450.namprd11.prod.outlook.com (2603:10b6:510:27e::17) by CH3PR11MB8364.namprd11.prod.outlook.com (2603:10b6:610:174::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6609.25; Wed, 2 Aug 2023 16:56:59 +0000 Received: from PH7PR11MB7450.namprd11.prod.outlook.com ([fe80::a4d0:c163:16c4:aaa2]) by PH7PR11MB7450.namprd11.prod.outlook.com ([fe80::a4d0:c163:16c4:aaa2%4]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 16:56:59 +0000 From: "Dumitrescu, Cristian" To: Ori Kam , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , Jerin Jacob CC: "Zhang, Qi Z" , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , "david.marchand@redhat.com" , "Richardson, Bruce" , "jerinj@marvell.com" , "ferruh.yigit@amd.com" , "techboard@dpdk.org" , "Mcnamara, John" , "Zhang, Helin" , "dev@dpdk.org" Subject: RE: [PATCH] ethdev: introduce generic flow item and action Thread-Topic: [PATCH] ethdev: introduce generic flow item and action Thread-Index: AQHZxSHaq6JEAAy13km0+kJQgl6M8q/WzPOAgAAKDYCAAAW8gIAAKMlQgAASn4CAAA7fAIAACkrw Date: Wed, 2 Aug 2023 16:56:59 +0000 Message-ID: References: <20230802173451.3151646-1-qi.z.zhang@intel.com> <98CBD80474FA8B44BF855DF32C47DC35D87AB8@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D87AB9@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D87ABF@smartserver.smartshare.dk> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR11MB7450:EE_|CH3PR11MB8364:EE_ x-ms-office365-filtering-correlation-id: 15e4dee4-b596-4dc2-947a-08db93797ccd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: o0JJ7CXQm+0nQFQn5xccwxU97Y9kptltieDWbgBZU9y5EqHkL36Ndwl0zAgfkcZ1LLKpKJOtk/P7JTpPT8rpVHAEFOX+WoVodC3GhEjgbQ940hf6YhRckCfO17uoFxaf3pA/JJb/pPSp7sln/wVkfvSjIBKk7Qo8dU4mXheTbbf6/u4pBd6VbX77YFPqHFJx7dB6SModJdHa466hzraOBDGS7EP3ftasQwSPOzQbvAKmsoD13r8elTT3mRqs4Fe4aLPhq38HQMri/diPwC47XJkN6XTNQ78cFp4MKcuj+1OrNxxYkIvccWq8++ED7gXWOLRiN1Vq6A5/cLbXl35ni/nt6pw/pMopbKA+hY1etjQnyZyAd/xb2k1zSs8U2Kab6aAg49DVWVzg88rj6V/AS9YxOS8pF4jpePpdIQF5ChoGqt2WoVBbdv+1DtFomyEgf8Ap1w/VdxVqNdzTI4h/X3KJ6G0bL/1iQ7h9xapCP/pZmfxiR4LLyq9GvaqC5DH0rNCE32zIajCQ1JGPfFY7t+iIkTdWjtdBsDzbJy51sgrpujhJi8Ij2TpnIe/Tk7Rv/xlQ/1QfgrjyHlU6QXh1l5DckEglq1BHxyyfSCnTqdmN7KGxp6UDni3wTGs9cPwVbvyqtkmFafZ9mi1Ug3ub7p27iDhyWE5Mybf7xnA4oRc= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH7PR11MB7450.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(396003)(39860400002)(376002)(366004)(346002)(136003)(451199021)(54906003)(110136005)(82960400001)(8936002)(38070700005)(71200400001)(41300700001)(122000001)(55016003)(186003)(38100700002)(966005)(66574015)(9686003)(478600001)(2906002)(83380400001)(52536014)(5660300002)(7696005)(33656002)(4326008)(66946007)(66446008)(66476007)(45080400002)(66556008)(76116006)(64756008)(8676002)(53546011)(6506007)(86362001)(316002)(26005)(41533002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SkQwUEV0SGdFV2dPNTZXUVJ0ZXZwZDZjeDRDVDVONzNDZHBuNWVvaUZBa3B3?= =?utf-8?B?eCtRVEZYcWVQbHNNSGhDcEs3NStxTDlBaGZLdFg5anR1TWUrcGQ4cjZxRTZs?= =?utf-8?B?TlNJalNXTlNFNTVXelVBaXJIS1lITkU3azFOcUZIeDRJZGtSNE9KSy8xN0pW?= =?utf-8?B?QnR3eHBIc3cvUFpDSktHZnMzd21NNkZSaEpIWnNpeHJwRjdWQ1pGa2NYWTRX?= =?utf-8?B?MHkvL25lc05Ga3N1UWthZDRyNlhCOTdKL0tTSTNObGMxUDJvVFl6b2NJNS9C?= =?utf-8?B?TVMyeDIzMzRlOVFWYUxEZkJqdnZUVmEyVWdUaG5jek9jc3dGM3d0Vmd0ZDUw?= =?utf-8?B?WGhxV1duVk9MYzV4YUdZVWxQb2dzc1Zpd1N2TFBURWRvTFVQZld0enlQUFBj?= =?utf-8?B?VjNoQVhvM2RnQXN0MTQwQWttNTJPV0tkbWtYWWVIam43MGhFeklBUVBzZkVV?= =?utf-8?B?U1pJRmIyYURlQ2lVZkJWYlJKYkNqZVFESGZKZHlrL2RiemIyaEVrelREYS85?= =?utf-8?B?eHBib1V6bmwrbnVTQWo0ekdlYWxoRGd6bFExeVhoTmtrR2tqZHVDUVl5alQ3?= =?utf-8?B?aWRtQWJySUMra3E4KzloMmY1Ly9EaFNsWUhxc1JFZHhNVXAwQ0xWMzYwTmZF?= =?utf-8?B?czlLYTY0cXBEZmJKWk51TlJhalpzNVlwR1hQZXgvOVBTYnlQZHo1VTM2eVRT?= =?utf-8?B?TnA1bHE5VTZ6TXQ3UnY4djU2YWdqdnd1U1RZb1h6WTJIZ1ZjeUpBeXowOUc4?= =?utf-8?B?eVMxRUN1OG5RYThNd2dJM2VzeUtWM0R6U21YUUYrcm53STBMN045LzJRcTJt?= =?utf-8?B?WFczcjRLbnFlWjYvLzNhUktoZitQVUo0RU56N3JrcTRWejJVeFdYYld0bGs2?= =?utf-8?B?akR3MUdwajhIZFpiakxaRCthS0Y3UmtEcFArd0RoS01rTWlGRDQwYUluRk1T?= =?utf-8?B?Y0dTK3ZkK3hwQVZCTFdZU25vSVFieHF5cWVSc2F4YU41bTJGR3dObDdKQjRJ?= =?utf-8?B?QXRnMENYbEZZYnEzMlpNZGd6ZjhrVWtxWDFDZTVRR0JZOW1XL1dFTDBtQ0NB?= =?utf-8?B?VjEyOUhzWE8rZ2pYUmJKd2N5aXpUN00ydjJwL2FLZW1lMjZORTJrTk5qeERQ?= =?utf-8?B?ZEZtY3QzbG15WU5aTlB0TzdIbHdicC9RdG5CTTBJdngvaFI2bDMrVjdmZkxN?= =?utf-8?B?OEE3dC9GRkVnYlRNQXUwcy85cjlMTCtLN09LNVZ6V2xFeFJpZnlZOUVtUjBj?= =?utf-8?B?STRFZ1lpMEJwREFZcm5ROEFKWitOaStpVHJEM2NnblNPQzdOUnNTMkRjVTA1?= =?utf-8?B?YU9aczA4VEU2anUxMlN4Q0l6d2V3OHFoWkIzeDhmeGs2R2ZWQnFTM2h2SXJG?= =?utf-8?B?QStWd09PNERzM2syRjU4ckI3RURkbUU1NnNEaGZ2ZThMbnVrK0M1WkdmVE9D?= =?utf-8?B?UGpqWnloc00wS3B2eFBBczU3Qml6cEVTekRGdmxkTlhHWVFXcWRua3JWRjNk?= =?utf-8?B?VVhWTDAzSkZaY1ZEaFZOcWhlcCtRMTRzUTE0V3o5a2VYZmdSR25DM0xJb3M4?= =?utf-8?B?RXAyOW9pN0RtYVVxZlAvT1JXTHZhNzFUL25aZS96ZW5hcFV2V1lmaFdmMEJH?= =?utf-8?B?b1JhZEpFT0N2aXBQWlE1OCtpU2JZSk9TMkN4U1RtWm9QcENvMzAyZU5BRURa?= =?utf-8?B?Nzc4eE9leXFva0F0WVJELy9Vb1lRU0h0eGsyRmloUmNPOFNVaG1RZ25YdGRZ?= =?utf-8?B?M1Zmci9YR1BEenFMcllOTFdxYm5tUWhrSnBYTlZEQ0JocXByUFJuVktKUWhq?= =?utf-8?B?S1hqQzM1TWRzdG11TTlpVnFVR1dDRDlneXVkOEhrNnV0blBSSEZNMDgxK3pB?= =?utf-8?B?cGtjMjNLNmhkR2ZGUzVDSzllN3ZWRWpUWXFHQjZVRHFDOFVpcTRuUWE5c3JG?= =?utf-8?B?Y2xXWW9CZnNQbjJrcHlJT3hkajZqQ3VPWEdkZDVBT1Yxb0djaGVESHAyOVZm?= =?utf-8?B?czZJNzhUdmJVNFZwNmppTFZsc2c4eEJrZkcySzBKbWJhcFduWGNLNDNUT0RY?= =?utf-8?B?VzFRckpQeXQ5d1hmYXpESS9nM3k1MEh4TGpCZDFZUGNjZmFNNWEybmkvbzVQ?= =?utf-8?B?SVpVK3VzUVUwdkpKVG9aM1N3MHA3YzM5bWJ5VlhPZmNHaUcrRGhEZGRwSlZk?= =?utf-8?B?TlE9PQ==?= 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: PH7PR11MB7450.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15e4dee4-b596-4dc2-947a-08db93797ccd X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Aug 2023 16:56:59.7169 (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: w8P4jM0UEWJJVTgJltgINSpX7tCUT9UxA4OaaZ+ELr5XtIjof+4b5eaL7lB7/k4TXQFe2PpnOJ4Mpc3923M5j8R/oaGkfGI8UaEsOAWo5bc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8364 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 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogT3JpIEthbSA8b3Jpa2FA bnZpZGlhLmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBBdWd1c3QgMiwgMjAyMyA0OjQ3IFBNDQo+ IFRvOiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPjsgRHVtaXRyZXNj dSwgQ3Jpc3RpYW4NCj4gPGNyaXN0aWFuLmR1bWl0cmVzY3VAaW50ZWwuY29tPjsgSmVyaW4gSmFj b2IgPGplcmluamFjb2JrQGdtYWlsLmNvbT4NCj4gQ2M6IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5n QGludGVsLmNvbT47IE5CVS1Db250YWN0LVRob21hcyBNb25qYWxvbg0KPiAoRVhURVJOQUwpIDx0 aG9tYXNAbW9uamFsb24ubmV0PjsgZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNvbTsNCj4gUmljaGFy ZHNvbiwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsgamVyaW5qQG1hcnZlbGwu Y29tOw0KPiBmZXJydWgueWlnaXRAYW1kLmNvbTsgdGVjaGJvYXJkQGRwZGsub3JnOyBNY25hbWFy YSwgSm9obg0KPiA8am9obi5tY25hbWFyYUBpbnRlbC5jb20+OyBaaGFuZywgSGVsaW4gPGhlbGlu LnpoYW5nQGludGVsLmNvbT47DQo+IGRldkBkcGRrLm9yZw0KPiBTdWJqZWN0OiBSRTogW1BBVENI XSBldGhkZXY6IGludHJvZHVjZSBnZW5lcmljIGZsb3cgaXRlbSBhbmQgYWN0aW9uDQo+IA0KPiBI aSBRaQ0KDQpIaSBPcmksDQoNClRoYW5rcyBmb3IgeW91ciBpbnB1dCENCg0KPiANCj4gPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFy dHNoYXJlc3lzdGVtcy5jb20+DQo+ID4gU2VudDogV2VkbmVzZGF5LCBBdWd1c3QgMiwgMjAyMyA2 OjI1IFBNDQo+ID4NCj4gPiA+IEZyb206IER1bWl0cmVzY3UsIENyaXN0aWFuIFttYWlsdG86Y3Jp c3RpYW4uZHVtaXRyZXNjdUBpbnRlbC5jb21dDQo+ID4gPiBTZW50OiBXZWRuZXNkYXksIDIgQXVn dXN0IDIwMjMgMTYuMDYNCj4gPiA+DQo+ID4gPiA+IEZyb206IEplcmluIEphY29iIDxqZXJpbmph Y29ia0BnbWFpbC5jb20+DQo+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgQXVndXN0IDIsIDIwMjMg MTI6MjIgUE0NCj4gPiA+ID4NCj4gPiA+ID4gT24gV2VkLCBBdWcgMiwgMjAyMyBhdCA0OjMx4oCv UE0gTW9ydGVuIEJyw7hydXANCj4gPiA+ID4gPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4gd3Jv dGU6DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEZyb206IE1vcnRlbiBCcsO4cnVwIFttYWlsdG86 bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tXQ0KPiA+ID4gPiA+ID4gU2VudDogV2VkbmVzZGF5LCAy IEF1Z3VzdCAyMDIzIDEyLjI1DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBGcm9tOiBRaSBa aGFuZyBbbWFpbHRvOnFpLnouemhhbmdAaW50ZWwuY29tXQ0KPiA+ID4gPiA+ID4gPiBTZW50OiBX ZWRuZXNkYXksIDIgQXVndXN0IDIwMjMgMTkuMzUNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gRnJvbTogQ3Jpc3RpYW4gRHVtaXRyZXNjdSA8Y3Jpc3RpYW4uZHVtaXRyZXNjdUBpbnRlbC5j b20+DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEZvciBuZXR3b3JrIGRldmljZXMgdGhh dCBhcmUgcHJvZ3JhbW1hYmxlIHRocm91Z2ggbGFuZ3VhZ2VzDQo+IHN1Y2ggYXMNCj4gPiA+ID4g PiA+ID4gdGhlIFA0IGxhbmd1YWdlLCB0aGVyZSBhcmUgbm8gcHJlLWRlZmluZWQgZmxvdyBpdGVt cyBhbmQgYWN0aW9ucy4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gVGhlIGZvcm1hdCBv ZiB0aGUgcHJvdG9jb2wgaGVhZGVyIGFuZCBtZXRhZGF0YSBmaWVsZHMgdGhhdCBhcmUNCj4gdXNl ZCB0bw0KPiA+ID4gPiA+ID4gPiBzcGVjaWZ5IHRoZSBmbG93IGl0ZW1zIHRoYXQgbWFrZSB1cCB0 aGUgZmxvdyBwYXR0ZXJuLCBhcyB3ZWxsIGFzIHRoZQ0KPiA+ID4gPiA+ID4gPiBmbG93IGFjdGlv bnMsIGFyZSBhbGwgZGVmaW5lZCBieSB0aGUgcHJvZ3JhbSwgd2l0aCBhbiBpbmZpbml0eSBvZg0K PiA+ID4gPiA+ID4gPiBwb3NzaWJsZSBjb21iaW5hdGlvbnMsIGFzIG9wcG9zZWQgdG8gYmVpbmcg c2VsZWN0ZWQgZnJvbSBhIGZpbml0ZQ0KPiA+ID4gPiA+ID4gPiBwcmUtZGVmaW5lZCBsaXN0Lg0K PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBJdCBpcyB2aXJ0dWFsbHkgaW1wb3NzaWJsZSB0 byBwcmUtZGVmaW5lIGFsbCB0aGUgZmxvdyBpdGVtcyBhbmQgdGhlDQo+ID4gPiA+ID4gPiA+IGZs b3cgYWN0aW9ucyB0aGF0IHByb2dyYW1zIG1pZ2h0IGV2ZXIgdXNlLCBhcyB0aGVzZSBhcmUgb25s eQ0KPiBsaW1pdGVkDQo+ID4gPiA+ID4gPiA+IGJ5IHRoZSBzZXQgb2YgSFcgcmVzb3VyY2VzIGFu ZCB0aGUgcHJvZ3JhbSBkZXZlbG9wZXIncw0KPiBpbWFnaW5hdGlvbi4NCj4gPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ID4gVG8gc3VwcG9ydCB0aGUgcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNl cywgd2UgYXJlIGludHJvZHVjaW5nOg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiAqIEEg Z2VuZXJpYyBmbG93IGl0ZW06IFRoZSBmbG93IGl0ZW0gaXMgZXhwcmVzc2VkIGFzIGFuIGFycmF5 IG9mDQo+IGJ5dGVzDQo+ID4gPiA+ID4gPiA+IG9mIGEgZ2l2ZW4gbGVuZ3RoLCB3aG9zZSBtZWFu aW5nIGlzIGRlZmluZWQgYnkgdGhlIHByb2dyYW0gbG9hZGVkDQo+IGJ5DQo+ID4gPiA+ID4gPiA+ IHRoZSBuZXR3b3JrIGRldmljZS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGUgZmxvdyBp dGVtIGlzIG5vdCAiZ2VuZXJpYyIsIGl0IGlzICJvcGFxdWUiOiBPbmx5IHRoZSBhcHBsaWNhdGlv bg0KPiA+ID4ga25vd3MNCj4gPiA+ID4gPiA+IHdoYXQgdGhpcyBmbG93IGl0ZW0gZG9lcy4NCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBJIGhhdGUgdGhlIGNvbmNlcHQgZm9yIHR3byByZWFzb25z Og0KPiA+ID4gPiA+ID4gMS4gVGhlIGluYWJpbGl0eSBmb3IgYXBwbGljYXRpb25zIHRvIGRldGVj dCB3aGljaCBmbG93IGl0ZW1zIHRoZQ0KPiA+ID4gdW5kZXJseWluZw0KPiA+ID4gPiA+ID4gaGFy ZHdhcmUgc3VwcG9ydHMuDQo+ID4gPiA+ID4gPiAyLiBUaGUgcmlzayB0aGF0IHZlbmRvcnMgd2ls bCB1c2UgdGhpcyBpbnN0ZWFkIG9mIGludHJvZHVjaW5nIG5ldyBmbG93DQo+ID4gPiBpdGVtDQo+ ID4gPiA+ID4gPiB0eXBlcywgYXZhaWxhYmxlIGZvciBhbnlvbmUgdG8gaW1wbGVtZW50Lg0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gQWZ0ZXIgZnVydGhlciBjb25zaWRlcmF0aW9uLCB0aGVyZSBtaWdo dCBiZSBhIG1pZGRsZSBncm91bmQuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBDb25zaWRlciBWZW5k b3ItU3BlY2lmaWMgYXR0cmlidXRlcyBmb3IgREhDUCBhbmQgUkFESVVTLCBvciBTTk1QDQo+ID4g TUlCcy4uLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQW55IHZlbmRvciBpcyBmcmVlIHRvIGFkZCBo aXMgb3duLCBwcm9wcmlldGFyeSBzcGVjaWFsLXB1cnBvc2UNCj4gYXR0cmlidXRlcywNCj4gPiA+ ID4gd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZSBzdGFuZGFyZGl6YXRpb24gcHJvY2Vzcy4gKFRo aXMgaXMgdGhlIGtleQ0KPiA+ID4gY2hhbGxlbmdlDQo+ID4gPiA+IHRoaXMgcGF0Y2ggc2VlbXMg dG8gYmUgYWltaW5nIGF0LikNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoZSB2ZW5kb3IgbWlnaHQg cHVibGlzaCB0aGVzZSBhdHRyaWJ1dGVzLCBhbmQgb3RoZXIgdmVuZG9ycyBtYXkNCj4gPiA+ID4g aW1wbGVtZW50IHRoZW0gdG9vLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQW5kIGluIG9yZGVyIHRv IHByZXZlbnQgY29sbGlzaW9ucywgdGhlIFZlbmRvci1TcGVjaWZpYyBhdHRyaWJ1dGVzDQo+IGNv bnRhaW4NCj4gPiA+IGENCj4gPiA+ID4gZ2xvYmFsbHkgdW5pcXVlIHZlbmRvciBJRCwgc3VjaCBh cyB0aGUgUHJpdmF0ZSBFbnRlcnByaXNlIE51bWJlciBbMV0NCj4gPiA+ID4gbWFuYWdlZCBieSBJ QU5BLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSWYgc2ltaWxhciBwcmluY2lwbGVzIGNhbiBiZSB3 b3JrZWQgaW50byB0aGUgcGF0Y2gsIEkgY2FuIHN1cHBvcnQgaXQuDQo+ID4gPiA+DQo+ID4gPiA+ ICsxDQo+ID4gPiA+DQo+ICsxIEkgdW5kZXJzdGFuZCB0aGF0IHRoaXMgaXMgc3VwcG9zZWQgdG8g YmUgZ2VuZXJpYywgYnV0IGhvdyBjYW4gaXQ/DQoNCldoYXQgZXhhY3RseSBpdCBub3QgZ2VuZXJp Yz8NCg0KPiBob3cgZG8geW91IGtub3cgaWYgUE1EIHN1cHBvcnRzIHRoaXM/DQoNCldoYXQgaXMg dGhlIGN1cnJlbnQgUlRFX0ZMT1cgbWVjaGFuaXNtIHRvIGZpbmQgb3V0IHdoZXRoZXIgYSBkZXZp Y2UvUE1EDQpzdXBwb3J0cyBhIGNlcnRhaW4gZmxvdz8gVGhlIG9ubHkgbWVjaGFuaXNtIGF2YWls YWJsZSBpcyB0byB0cnkgdG8gY3JlYXRlIHRoZQ0KZmxvdyAocnRlX2Zsb3dfY3JlYXRlKSBvciBt aW1pYyB0aGUgY3JlYXRpb24gb2YgdGhlIGZsb3cgKHJ0ZV9mbG93X3ZhbGlkYXRlKQ0KYW5kIHNl ZSBpZiB5b3UgZ2V0IHN1Y2Nlc3Mgb3IgZXJyb3IsIHJpZ2h0PyBTYW1lIG1lY2hhbmlzbSB0byBi ZSB1c2VkIGhlcmUuDQpPZiBjb3Vyc2UsIHdlIHdvdWxkIGJlIGhhcHB5IHRvIHN1cHBvcnQgdGhl IGFkZGl0aW9uIG9mIGEgbW9yZSBjb21wbGV4DQpxdWVyeSBtZWNoYW5pc20gaW4gUlRFX0ZMT1cu DQoNCj4gd2hhdCBpZiBlYWNoIFBNRCBuZWVkcyBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnM/DQoN Ck5vdCBzdXJlIHdoYXQgeW91J3JlIHJlZmVycmluZyB0byBleGFjdGx5LiBUaGUgZm9ybWF0IG9m IHRoZSBmbG93IGl0ZW1zIGFuZA0KZmxvdyBhY3Rpb25zIGlzIGRlZmluZWQgYnkgdGhlIFA0IHBy b2dyYW07IHNvIGFsbCB0aGUgSFcgZGV2aWNlcyB0aGF0IGFyZQ0KYWJsZSB0byBzdWNjZXNzZnVs bHkgbG9hZCBhIGdpdmVuIFA0IHByb2dyYW0sIHBvdGVudGlhbGx5IGZyb20gZGlmZmVyZW50DQp2 ZW5kb3JzLCB3aWxsIGhhdmUgdGhlIHNhbWUgdW5kZXJzdGFuZGluZyBvZiBlYWNoIGZsb3cgaXRl bSBhbmQgYWN0aW9uLg0KDQo+DQo+IEluIGFkZGl0aW9uIGhvdyBjYW4geW91IGhhbmRsZSBudW1i ZXIgb2YgdGhvc2UgYWN0aW9uIGFuZCBpdGVtcz8NCj4gRm9yIGV4YW1wbGUgaWYgSSBoYXZlIG1h dGNoIG9uIHByb3RvY29sIFggYW5kIFkgYW5kIGRvIGFjdGlvbnMgWiBhbmQgVw0KPiBlYWNoIG9u ZSBvZiB0aG9zZSBjYW4gYmUgZ2VuZXJpYyBpdGVtLg0KPiBpZiB5b3UgaGF2ZSBhIHdheSB0byBk ZWZpbmUgYSBzdGFuZGFyZCB3aHkgdG8gcmVhZCBzdWNoIGFjdGlvbnMgdGhlbiB3ZSBoYXZlDQo+ IHNvbWV0aGluZyB0byB0YWxrIGFib3V0Lg0KDQpZZXMsIHdlIGRvLiBUaGUgZm9ybWF0IG9mIGFs bCBmbG93IGl0ZW1zIGFuZCBmbG93IGFjdGlvbnMgYXZhaWxhYmxlIG9uIHRoZSBIVw0KZGV2aWNl IGlzIGZ1bGx5IGRlZmluZWQgYnkgdGhlIFA0IHByb2dyYW0sIHRoZXJlZm9yZSBhbGwgdGhlIEhX IGRldmljZXMsDQpwb3RlbnRpYWxseSBmcm9tIGRpZmZlcmVudCB2ZW5kb3JzLCB0aGF0IGFyZSBh YmxlIHRvIHN1Y2Nlc3NmdWxseSBsb2FkIGEgZ2l2ZW4gUDQNCnByb2dyYW0sIHdpbGwgaGF2ZSB0 aGUgc2FtZSB1bmRlcnN0YW5kaW5nIG9mIHRoZW0uDQoNCj4gDQo+IA0KPiA+ID4NCj4gPiA+IE1v cnRlbiwgSmVyaW4sDQo+ID4gPg0KPiA+ID4gSSB0aGluayB0aGVyZSBpcyBhIGZ1bmRhbWVudGFs IG1pc3VuZGVyc3RhbmRpbmcgaGVyZTogd2UgYXJlIG5vdCB0cnlpbmcgdG8NCj4gPiA+IHByb3Zp ZGUgc3VwcG9ydCBmb3Igc29tZSBub24tc3RhbmRhcmQgdmVuZG9yLXNwZWNpZmljIGZlYXR1cmVz IGhlcmUuDQo+IFdoYXQNCj4gPiA+IHdlIGFyZSB0cnlpbmcgdG8gZG8gaXMgYWRkIGdlbmVyaWMg bXVsdGktdmVuZG9yIHN1cHBvcnQgaW4gUlRFX0ZMT1cgZm9yDQo+ID4gPiBQNCBwcm9ncmFtbWFi bGUgbmV0d29yayBkZXZpY2VzLCB3aGljaCByZXF1aXJlcyBzdXBwb3J0aW5nIGZsb3cgaXRlbXMN Cj4gPiA+IGFuZCBhY3Rpb25zIHRoYXQgYXJlIGRlZmluZWQgZGlyZWN0bHkgYnkgdGhlIHVzZXIg dGhyb3VnaCB0aGVpciBQNA0KPiBwcm9ncmFtcw0KPiA+ID4gYXMgb3Bwb3NlZCB0byBiZWluZyBz ZWxlY3RlZCBmcm9tIGEgcHJlLWRlZmluZWQgbGlzdC4NCj4gPiA+DQo+ID4gPiBUaGVyZSBhcmUg YW4gaW5maW5pdHkgb2YgZmxvdyBpdGVtcyBhbmQgYWN0aW9ucyB0aGF0IHRoZSB1c2VycyBjYW4g ZGVmaW5lDQo+ID4gPiB0aHJvdWdoDQo+ID4gPiB0aGVpciBQNCBwcm9ncmFtcywgYW5kIHRoZXkg Y2Fubm90IGJlIHN1cHBvcnRlZCB3aXRoIGEgZmluaXRlIGxpc3Qgb2YNCj4gPiBSVEVfRkxPVw0K PiA+ID4gaXRlbXMgYW5kIGFjdGlvbnM6DQo+ID4gPg0KPiA+ID4gMS8gU29tZSBmbG93IGl0ZW1z IG1hcCBkaXJlY3RseSB0byB0aGUgSUVURiBkZWZpbmVkIHByb3RvY29scywgd2hpbGUgc29tZQ0K PiA+ID4gb3RoZXJzIGRvIG5vdCwgYW5kIG9ubHkgdGhlIHVzZXIgd3JpdGluZyB0aGUgcHJvZ3Jh bSBrbm93cyB0aGUgZXhhY3QNCj4gYW5zd2VyOw0KPiA+ID4NCj4gPiA+IDIvIFNvbWUgZmxvdyBp dGVtcyBhcmUgc2ltcGx5IGFwcGxpY2F0aW9uLXNwZWNpZmljIChub3QgdmVuZG9yIHNwZWNpZmlj KQ0KPiA+ID4gbWV0YS1kYXRhIHRoYXQgKEkgaG9wZSB3ZSBhbGwgYWNjZXB0KSBpcyBvdXRzaWRl IG9mIHRoZSBzdGFuZGFyZGl6YXRpb24NCj4gPiA+IHByb2Nlc3MuDQo+ID4NCj4gPiBTdWNoIGl0 ZW1zIGNhbiB1c2UgYSBzcGVjaWFsICJyZXNlcnZlZCIgdmVuZG9yLWlkLg0KPiA+DQo+IA0KPiBD YW4geW91IHNob3cgbWUgd2hhdCBpdGVtcy9hY3Rpb25zIGFyZSBtaXNzaW5nIGluIHJ0ZV9mbG93 Pw0KDQpUaGUgbnVtYmVyIG9mIGZsb3cgaXRlbXMgKHByb3RvY29sIGhlYWRlcnMsIGJ1dCBhbHNv IG1ldGFkYXRhKSBhbmQgZmxvdyBhY3Rpb25zDQp0aGF0IHVzZXJzIGNhbiBkZWZpbmUgaW4gdGhl aXIgUDQgcHJvZ3JhbXMgaXMgaW5maW5pdGUsIHNvIHVuZm9ydHVuYXRlbHkgT3JpLCBhcyBtdWNo DQphcyBJIHdhbnQgdG8gZ3JhbnQgeW91IHRoaXMgd2lzaCwgSSBhbSBub3QgZ29pbmcgdG8gYmUg YWJsZSB0byDwn5iKLiBBbHNvLCBpdCBpcw0KaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUgdXNl cnMgd3JpdGUgdGhlaXIgUDQgcHJvZ3JhbSAoZGVmaW5pbmcgdGhlaXIgZGF0YSBwYXRoDQpwaXBl bGluZSkgd2l0aG91dCBhbnkgaW52b2x2ZW1lbnQgZnJvbSB0aGVpciBkZXZpY2UgdmVuZG9yLCBz byB0aGUgdmVuZG9yIGlzIHNpbXBseQ0Kbm90IGF3YXJlIG9mIG1lYW5pbmcgb2YgdGhlIHVzZXIn cyBmbG93IGl0ZW1zIGFuZCBhY3Rpb25zIGVpdGhlci4NCg0KPiANCj4gPiA+DQo+ID4gPiAzLyBT b21lIGZsb3cgYWN0aW9ucyBtYXAgZGlyZWN0bHkgdG8gdGhlIGV4aXN0aW5nIFJURV9GTE9XIGFj dGlvbnMNCj4gPiAoZXNwZWNpYWxseQ0KPiA+ID4gdGhlIG1vcmUgc3RyYWlnaHRmb3J3YXJkIGFj dGlvbnMgc3VjaCBhczogcGFja2V0IGRyb3AsIHBhY2tldCByZWRpcmVjdGlvbg0KPiB0bw0KPiA+ ID4gYW4NCj4gPiA+IG91dHB1dCBxdWV1ZSwgc29tZSBzcGVjaWZpYyBwYWNrZXQgbW9kaWZpY2F0 aW9ucywgZXRjKSwgd2hpbGUgdGhlIHZhc3QNCj4gPiA+IG1ham9yaXR5DQo+ID4gPiBvZiBwb3Nz aWJsZSBhY3Rpb25zIGRvIG5vdC4NCj4gPiA+DQo+ID4gPiBBcmUgeW91IHNheWluZyB0aGF0IHRo ZSBQNCBwcm9ncmFtbWFibGUgbmV0d29yayBkZXZpY2VzIHNob3VsZCBOT1QgYmUNCj4gPiA+IHN1 cHBvcnRlZCBieSBEUERLIGFuZCBSVEVfRkxPVz8NCj4gPg0KPiA+IE5vLCBJIGdldCB0aGUgbmVl ZCBmb3IgdGhpcy4gQW5kIEkgdW5kZXJzdGFuZCB0aGF0IHNpbmNlIFA0IGlzIGNvbXBpbGVkIHRv DQo+ID4gaGFyZHdhcmUtc3BlY2lmaWMgYmluYXJ5IGJsb2JzLCB0aGVyZSBpcyBhIG5lZWQgdG8g cHV0IHN1Y2ggYmxvYnMgaW50byBEUERLDQo+IGFzDQo+ID4gZmxvdyBpdGVtcyBhbmQgYWN0aW9u cywgaW5zdGVhZCBvZiB0aGUgInVuY29tcGlsZWQiIFA0IHByb2dyYW0uDQo+ID4NCj4gPiBJIGFt IHN1Z2dlc3RpbmcgdGhhdCBpbnN0ZWFkIG9mIGFkZGluZyBhIGNvbXBsZXRlbHkgb3BhcXVlIGRh dGEgdHlwZToNCj4gPg0KPiA+IFN0cnVjdCBpdGVtIHsNCj4gPiBJbnQgbGVuOyAgICAgIC8vIExl bmd0aCBvZiB2YWx1ZSBpbiBieXRlcy4NCj4gPiBDaGFyIHZhbHVlW107IC8vIEFwcGxpY2F0aW9u IHNwZWNpZmljIG1lYW5pbmcuDQo+ID4gfTsNCj4gPg0KPiANCj4gQnV0IHNpbmNlIHlvdSBkaWRu J3QgZGVmaW5lIGEga25vd24gcHJvdG9jb2wgZm9yIFBNRCB0byByZWFkIHRoZSBkYXRhIGhvdw0K PiAyIHBtZHMgY2FuIHVzZSB0aGUgc2FtZSBhY3Rpb24/DQoNClRoZSBmb3JtYXQgb2YgYWxsIGZs b3cgaXRlbXMgYW5kIGZsb3cgYWN0aW9ucyBhdmFpbGFibGUgb24gdGhlIEhXIGRldmljZSBpcyBm dWxseQ0KZGVmaW5lZCBieSB0aGUgUDQgcHJvZ3JhbSwgdGhlcmVmb3JlIGFsbCB0aGUgSFcgZGV2 aWNlcywgZXZlbiBpZiBmcm9tIGRpZmZlcmVudA0KdmVuZG9ycywgd2lsbCBoYXZlIHRoZSBzYW1l IHVuZGVyc3RhbmRpbmcgb2YgdGhlbS4NCg0KPiANCj4gPiAuLi5hZGQgYSBzZW1pLW9wYXF1ZSBk YXRhIHR5cGU6DQo+ID4NCj4gPiBTdHJ1Y3QgdGx2IHsNCj4gPiBJbnQgdHlwZTsgICAgIC8vIFZl bmRvciBzcGVjaWZpYyB0eXBlLg0KPiA+IEludCBsZW47ICAgICAgLy8gTGVuZ3RoIG9mIHZhbHVl IGluIGJ5dGVzLg0KPiA+IENoYXIgdmFsdWVbXTsgLy8gKFZlbmRvciwgVHlwZSkgc3BlY2lmaWMg bWVhbmluZy4NCj4gPiB9Ow0KPiA+DQo+ID4gU3RydWN0IGl0ZW0gew0KPiA+IEludCB2ZW5kb3I7 ICAgICAgICAgIC8vIFZlbmRvciBJRC4NCj4gPiBJbnQgbGVuOyAgICAgICAgICAgICAvLyBMZW5n dGggb2YgdmFsdWVzIGluIGJ5dGVzLg0KPiA+IFN0cnVjdCB0bHYgdmFsdWVzW107IC8vIEFycmF5 IG9mIFRMVnMuDQo+ID4gfTsNCj4gPg0KPiA+IExpa2UgUkFESVVTIFZlbmRvci1TcGVjaWZpYyBh dHRyaWJ1dGVzOg0KPiA+IGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZj MjEzOCNzZWN0aW9uLTUuMjYNCj4gPg0KPiA+IFRoZW4gc29tZSAoVmVuZG9yLCBUeXBlKSBmaWVs ZHMgY2FuIGJlIGRvY3VtZW50ZWQgKGFuZCB0aHVzIGdlbmVyYWxseQ0KPiA+IHVuZGVyc3Rvb2Qg YnkgRFBESyksIGFuZCBzb21lIHVuZG9jdW1lbnRlZC4NCj4gPg0KPiA+IEUuZy4gbGlrZSBNaWNy b3NvZnQgZG9jdW1lbnRlZCBzb21lIG9mIHRoZWlycyBpbiBSRkMgMjU0ODoNCj4gPiBodHRwczov L2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzI1NDgNCj4gPg0KPiA+DQo+ID4gQW5v dGhlciBiZW5lZml0IGlzIHRoYXQgdGhlc2UgbmV3ICJWRU5ET1ItU1BFQ0lGSUMiIGZsb3cgdHlw ZXMgY2FuIGJlDQo+IHJldXNlZA0KPiA+IGZvciBvdGhlciBwdXJwb3NlcyB0aGFuIGNvbXBpbGVk IFA0IHByb2dyYW1zLg0KPiA+DQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g UHJlZmVyYWJseSwgdGhlcmUgc2hvdWxkIGFsc28gYmUgYSBtZWFucyBmb3IgYXBwbGljYXRpb25z IHRvIHF1ZXJ5IGlmDQo+ID4gPiBzcGVjaWZpYw0KPiA+ID4gPiBWZW5kb3ItU3BlY2lmaWMgZmxv dyBpdGVtcyBhbmQgYWN0aW9ucyBhcmUgc3VwcG9ydGVkIG9yIG5vdC4NCj4gPiA+ID4gPg0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gWzFdOiBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9l bnRlcnByaXNlLW51bWJlcnMvDQo+ID4gPiA+ID4NCj4gPiA+DQo+ID4gPiBSZWdhcmRzLA0KPiA+ ID4gQ3Jpc3RpYW4NCg0KUmVnYXJkcywNCkNyaXN0aWFuDQo=