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 26A9942B6B; Mon, 22 May 2023 07:12:37 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F244A410DD; Mon, 22 May 2023 07:12:36 +0200 (CEST) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id ED65B410E4; Mon, 22 May 2023 07:12:34 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1684732355; x=1716268355; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ZJ6arbjeDqUOrftb6P+Eq2CG379VB1gYG6IxQ62HhB4=; b=bRcEr1NK+Y4FwXdR5eZYBpWDWgEY9Tjh10ZhK91fZgqHMSa4cRvvdu5X mO14CUFIQKfArDEIG//AHuviQK48wZBtzRHHftSY4nbr3kRsNEP7Y91pz a4O478Bm97IECBZIez6le5cgHc0H8srWEtdHdwj6SvPbntsJS1N0Wy371 XxTF45R1pBvm5AQDFWMweVznoWOTzgcbLrXJzJxDtybNpZQHoHO95jzaq JLGN/uqBfFSWHLEsaHqK4dRIPO2sIeseLib0yCtWJzO76HpsETC5L/ZY2 TiscVPiPKjaf2mrAduFjh9zm6HaqzG+P907pp5SP3OMZbMtLrfKvmlfPF g==; X-IronPort-AV: E=McAfee;i="6600,9927,10717"; a="416290600" X-IronPort-AV: E=Sophos;i="6.00,183,1681196400"; d="scan'208";a="416290600" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 May 2023 22:12:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10717"; a="768375931" X-IronPort-AV: E=Sophos;i="6.00,183,1681196400"; d="scan'208";a="768375931" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga008.fm.intel.com with ESMTP; 21 May 2023 22:12:33 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Sun, 21 May 2023 22:12:33 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Sun, 21 May 2023 22:12:33 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Sun, 21 May 2023 22:12:33 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.175) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Sun, 21 May 2023 22:12:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gLZpUQqObuWe5+o63dDbjUZw5olq63wDUKy92QkTBAUceDNDD1lwTyg68v+khLG3yLp58Shpaw22SGiNX6klMhBo4llqiR3BqIAmUKyn4IXP5jftqa+tSdm+GuIJD/z3XI8AF/bad9uH4zFztI1EAnF6NxnB1N/IcHZnT5eonkJEDGrVKs5lhHPa+pbXxjj9t3g5wlBaw9N+oAdTMU4oDN30JTHcC0zQfkW0rIogCUW1K6dF+FjPKlRwRglw9GGuo2bAgUPFeWbVC7KFMWbgjE5F+Q0QdOpuvvXtSlxQ6tvJ2N12K1QGv6jIu25HJKksRkIxEGZz3Hgiw1GKi9ESBw== 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=ZJ6arbjeDqUOrftb6P+Eq2CG379VB1gYG6IxQ62HhB4=; b=UJUiYq006HGXX87Tvasfu0ENhVNCm1pIUICT8vE9QpLhm+vlhMuiSo1mLYQGZhNgvG7bfQjmRFGvqHf9Rnl7wP7dq+mrHF5/ygBmSBOOXe4AR3mMyFVqwzFQUanCNwl3Nn19506TVzTBEE+MParIxgnx4pUU1NVhElAwQpqW5DocXxlUlrkxxhjFuZRw/r3zDmxmg84qWlhXXSeHVE8ZL05eQwdGNuWUcjkAdaaRHoIuBjA3MY45ULwE7EW3jc1deWa1ZA3ftBTO1lAOwuqOdA79VLRole8op3BU3jJhC/bvrYGR4iftgTKiykokZ8G1cl95h5X1dzskEA4YRr8pdg== 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 DM4PR11MB5994.namprd11.prod.outlook.com (2603:10b6:8:5d::20) by BN9PR11MB5306.namprd11.prod.outlook.com (2603:10b6:408:137::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Mon, 22 May 2023 05:12:30 +0000 Received: from DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::e570:d9a7:df1b:1589]) by DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::e570:d9a7:df1b:1589%7]) with mapi id 15.20.6411.028; Mon, 22 May 2023 05:12:30 +0000 From: "Zhang, Qi Z" To: Ori Kam , "dev@dpdk.org" CC: "techboard@dpdk.org" , "Richardson, Bruce" , "Burakov, Anatoly" , "Wiles, Keith" , "Liang, Cunming" , "Wu, Jingjing" , "Zhang, Helin" , "Mcnamara, John" , "Xu, Rosen" Subject: RE: seeking community input on adapting DPDK to P4Runtime backend Thread-Topic: seeking community input on adapting DPDK to P4Runtime backend Thread-Index: AdmBdydpWI/N9jo8SXuEnV2EuOZZewHVxP7QACYE/+AAC4PasAC1cCtw Date: Mon, 22 May 2023 05:12:29 +0000 Message-ID: References: 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: DM4PR11MB5994:EE_|BN9PR11MB5306:EE_ x-ms-office365-filtering-correlation-id: 38953ae0-6ca5-4e70-6b5e-08db5a8323cd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Z1x3pWvEvGq58VqCvcgUN2EAxEcbiicT8yq7/5C+nSn6Ai9rrE86bmyzP3Oqg2i7xmVB+hTPyYgZuIam+H8DoevA9A5FbWTbq2G5Kzsi+Y3z3zaKvJqZWCMnrxOHIhmc8v6XhjRJINQrlSq6EytNi08jq7KQQK4I+4oN1fYZNacVoMt0BPw1rPkWsU9k/V5VXS5DA8QEIxnQfR8eNfJEkKrHLDdbuFgm4EmDwvviyOMiK01p10nU9eFJfogTUiznGBKy3/2Sts+Owf3k8lPmsEkx1ONpePjWrIK8jsZpX5AaX2iedzvw2Q0eQelXb3O1rwVB2w+uoG1SdVQw138/BD5fSUPZpF0+3RCAyhlYCe8Y+DxXjG/ubZYDB7bxVqJt8O3EAuyOfQUPxwe1Zj7h8p73DhhNWtnub1gVCo94puwEZj8m3+6owlgA9ZrZd8U1cDA1W29jclkM7P4JErvgpBtJiGzQOhpmTL1ILZ3QpTOEvxfCkkT/s+VifeYWZWwN8XX/B5N7bEjRbkW+W6E/fApqSDwgP5XENUQ3vkfFyhgc9qE77utdPiYkej4ArhNMwk1SvlSiep0OUWLDGcISQpGsmWE8trwvp4fUU9I8Ph3yMuG6DpXgebs2mK3Xe2+A x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB5994.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(396003)(376002)(346002)(136003)(39860400002)(366004)(451199021)(38070700005)(122000001)(82960400001)(66899021)(38100700002)(33656002)(86362001)(55016003)(107886003)(53546011)(9686003)(52536014)(6506007)(8676002)(8936002)(2906002)(30864003)(186003)(54906003)(478600001)(110136005)(64756008)(316002)(4326008)(26005)(41300700001)(71200400001)(5660300002)(66446008)(66476007)(966005)(7696005)(76116006)(66556008)(66946007)(83380400001)(32563001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QkV1SWF4MmNpb3ZBZCtVTVBzWmVGbWhST05jUm1kR0VxQmFEdVBIZkZ5Wlor?= =?utf-8?B?K1RBcUlubHU3Ti9jSlBTSDlvcEs5RGJZenYyK0thdFkzRDAxU1pjQkxMZXc4?= =?utf-8?B?ZjNsRWVwSUtEZEVmQWVqS2FjaGNDdE9TUzVjZDlGbEp1R3VxcUVKbk9TRGhk?= =?utf-8?B?bWpYUk9RZEVxbkR6TGJOdFlDaFNFMW1PbytEazF3Q3NHZVN1bldFbGpHeDhl?= =?utf-8?B?dGJHRUpSU2N0OTI4UGZFNkhPQ1lRQU9aU215am1nNXpWMEw1cU81L0hkTlFX?= =?utf-8?B?U0xDLzF2UWlXNEt0bWVpUGs1dllLckVicDF1VllkckY4QkIwdUZtbjZMbyt5?= =?utf-8?B?aUNBRVpLeTJWNEhUTEJHVXhoM0Q4SmJtSy9PRW9SemFSWEM2cTdrZ0JmcGZz?= =?utf-8?B?RmlJcmkxRm43S1JwSXhOY1lqdzM3QXQ3bmFNdnc0Z3oreXJoR3JTQUJpcFQw?= =?utf-8?B?SERNTDVSSkJyWlBJMlh1cS9iV2ovN3FLdHRUVDZseHVjakdCc3dsbHIybzY1?= =?utf-8?B?ZnpwOHVkQkJlck1IbzY2SHkvbm1Ldzk5a3BCUDRPdG5aYmJYNlFvY1MvQUVa?= =?utf-8?B?Y1pYdHNQcjhrT2JxdGR4Q1FKK25yTTlNeWpiR2xSeXBlMlBGcmJ5citsZjAv?= =?utf-8?B?Zk91TmR4bmF6aEFuSnpwYkN5aU9iMFo0Q0pOaXVKdEFPbFJoVDRlVzNncTZR?= =?utf-8?B?L0VVdU9SMjFsQUxtV0hsbFpRdndyU3pZUDRPVmprM3NMYVJWaHhLaWxjL3l1?= =?utf-8?B?MEFGb2dEWm1jU1h0T1VwS3F5Q2xGbk9BWUg4ZytkYnl5cU1TZUt4WjAyUVlF?= =?utf-8?B?cENNS1JtSFVveXVrTlJuNmJzdXRzTXBBcXJsN1RoNnVTZHlGOHpNdnNCYnU2?= =?utf-8?B?SEZZS0hPbVZ5dmJpM1o5R0RQNWxwdDVkVi94R3RqRjZmVFBnUzFuYjNRbmkr?= =?utf-8?B?QVhMbnFEZmZWZkJZN1BjR3FFWTdsV2dKZGVEYytTSElKOEgvdlhMM1dPTmpD?= =?utf-8?B?NWduMXYvV3lkQi9qMmx3TU1LQlVWOU9wRVVPQ0ZYeWVrTzRWc3cydk5nbGxH?= =?utf-8?B?VGtwZEJueW9HaUxEKzlCRDhieE5ZOFJBNXR0M010UHJ1K0M2WFNqMjNmMGVI?= =?utf-8?B?U1hVa1RSZ3pYa0R4QlVqYS9CM2hpeitxL0NacmhwaFZTVUV5SmRiUmFoOUFo?= =?utf-8?B?Uzd6UkUybmxUTjdDbnZTWU1jeHRZc0dvNVM1Mk9oRnlIZkhyRWxJOUpqVzlu?= =?utf-8?B?RlV1aDFDS0ZDcEtnUUFlcEZqNTViTzJLbFluc3BnYVRSTkxhbFNGQW5hWlY3?= =?utf-8?B?ZjFUZk85RlkvQXplZElGK2tibUU0Ui9IYkZucHBlWkp1T2ZlYlRMSmp4NXVU?= =?utf-8?B?Yk5aWHdoaSs4Wlo1SGtSYWhvenExdWg0U05kbGxuSFh6MWpta2pVVXR1MG1q?= =?utf-8?B?RkdwWnBXUTFHN0dZOElPSkllaE8wMDNnNlhBdGJzbDk1MmduRUZOWTNJQVhS?= =?utf-8?B?NkJnTEtTSDBXcjNERWNlL1piTkE4NnhDeWV5SFVyYTB0TlFwRllsK3l4Z3Zi?= =?utf-8?B?aURoWHVHSENGaTI2TmQxWm9ZQVJnN2ZnU0VlQVMyZDRrMDRyRkxpakxpS1dX?= =?utf-8?B?SC9YeEM0ZVNZZVErVmV0NEVORk9mMWZvU1B4UnB1cWdLb3hWMXRCeTNJLzJL?= =?utf-8?B?ZnFkUDc0dzFZVFZ4TEtTYWdwWGFURXNpdFl1ZHNCMXNnYjVXMmVSdkdrM3pS?= =?utf-8?B?VlEwNUkwUzB3b2V5WDBMRUgwMm5heW5IMjc2SE45bUt2L3FVU1FiNS9OVVVE?= =?utf-8?B?b21XcHo2aHhlS05yQlFUVUVTVGxSNXl6c0pRMFNPM2sycXBZckJ6WjBYZHR3?= =?utf-8?B?NTROWjdMVHhueVYyWlNaZVpUNzIzVi9yeDg5RUQ4bjI2MmN1Ymd1bzhHajdD?= =?utf-8?B?K2wwVlF4cEFid29iNHZsczJWbys5MU9CRHV0NFpmeGdkZ011cWx1akxiZHFs?= =?utf-8?B?WDNoNnJFRDJRZzNmbHgvNWRsTTQ5aVZUS2lnQTRXdUxkNU1SQmgwYnE3c2Zs?= =?utf-8?B?bWFtbjVmWVpOQVVVTzRXaTdKdmd1UU5Zdm1wUEFGOEhESFFwWjJ2YllzQ2d0?= =?utf-8?Q?vAmL3h4t4O+6byos6L4DczxVk?= 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: DM4PR11MB5994.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 38953ae0-6ca5-4e70-6b5e-08db5a8323cd X-MS-Exchange-CrossTenant-originalarrivaltime: 22 May 2023 05:12:29.0690 (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: piZUl5XLOCJeRtavMsHZOXgeXC6GUO9SHLRmUN9uh+kY/pxcXitcYqFyCJ9dcySicBbN4yke8Kr+eReB7DUlBA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR11MB5306 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 bnZpZGlhLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIE1heSAxOCwgMjAyMyAxMDozNCBQTQ0KPiBU bzogWmhhbmcsIFFpIFogPHFpLnouemhhbmdAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+IENj OiB0ZWNoYm9hcmRAZHBkay5vcmc7IFJpY2hhcmRzb24sIEJydWNlIDxicnVjZS5yaWNoYXJkc29u QGludGVsLmNvbT47DQo+IEJ1cmFrb3YsIEFuYXRvbHkgPGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5j b20+OyBXaWxlcywgS2VpdGgNCj4gPGtlaXRoLndpbGVzQGludGVsLmNvbT47IExpYW5nLCBDdW5t aW5nIDxjdW5taW5nLmxpYW5nQGludGVsLmNvbT47IFd1LA0KPiBKaW5namluZyA8amluZ2ppbmcu d3VAaW50ZWwuY29tPjsgWmhhbmcsIEhlbGluIDxoZWxpbi56aGFuZ0BpbnRlbC5jb20+Ow0KPiBN Y25hbWFyYSwgSm9obiA8am9obi5tY25hbWFyYUBpbnRlbC5jb20+OyBYdSwgUm9zZW4NCj4gPHJv c2VuLnh1QGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IHNlZWtpbmcgY29tbXVuaXR5IGlucHV0 IG9uIGFkYXB0aW5nIERQREsgdG8gUDRSdW50aW1lDQo+IGJhY2tlbmQNCj4gDQo+IEhpIFpoYW5n LA0KPiANCj4gSSB0aGluayB3ZSBib3RoIHdhbnQgdGhlIHNhbWUgdGhpbmcgYW5kIHNoYXJlIHRo ZSBzYW1lIGJhc2ljIGNvbmNlcHRzLg0KPiANCj4gUFNCLCBzb21lIGFuc3dlcnMsDQo+IA0KPiBC ZXN0LA0KPiBPcmkNCj4gDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g RnJvbTogWmhhbmcsIFFpIFogPHFpLnouemhhbmdAaW50ZWwuY29tPg0KPiA+IFNlbnQ6IFRodXJz ZGF5LCBNYXkgMTgsIDIwMjMgMTozMyBQTQ0KPiA+DQo+ID4NCj4gPg0KPiA+ID4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IE9yaSBLYW0gPG9yaWthQG52aWRpYS5jb20+ DQo+ID4gPiBTZW50OiBXZWRuZXNkYXksIE1heSAxNywgMjAyMyAxMToxOSBQTQ0KPiA+ID4gVG86 IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiA+ID4g Q2M6IHRlY2hib2FyZEBkcGRrLm9yZzsgUmljaGFyZHNvbiwgQnJ1Y2UNCj4gPiA8YnJ1Y2Uucmlj aGFyZHNvbkBpbnRlbC5jb20+Ow0KPiA+ID4gQnVyYWtvdiwgQW5hdG9seSA8YW5hdG9seS5idXJh a292QGludGVsLmNvbT47IFdpbGVzLCBLZWl0aA0KPiA+ID4gPGtlaXRoLndpbGVzQGludGVsLmNv bT47IExpYW5nLCBDdW5taW5nIDxjdW5taW5nLmxpYW5nQGludGVsLmNvbT47DQo+ID4gPiBXdSwg SmluZ2ppbmcgPGppbmdqaW5nLnd1QGludGVsLmNvbT47IFpoYW5nLCBIZWxpbg0KPiA+ID4gPGhl bGluLnpoYW5nQGludGVsLmNvbT47IE1jbmFtYXJhLCBKb2huIDxqb2huLm1jbmFtYXJhQGludGVs LmNvbT47DQo+ID4gPiBYdSwgUm9zZW4gPHJvc2VuLnh1QGludGVsLmNvbT4NCj4gPiA+IFN1Ympl Y3Q6IFJFOiBzZWVraW5nIGNvbW11bml0eSBpbnB1dCBvbiBhZGFwdGluZyBEUERLIHRvIFA0UnVu dGltZQ0KPiA+ID4gYmFja2VuZA0KPiA+ID4NCj4gPiA+IEhpIFpoYW5nLA0KPiA+ID4NCj4gPiA+ IHJ0ZV9mbG93IGlzIGFuIGV4Y2VsbGVudCBjYW5kaWRhdGUgZm9yIGltcGxlbWVudGluZyBQNC4N Cj4gPiA+IFdlIGFuZCBzb21lIGludGVybmFsIHRlc3RzIHRoYXQgc2hvd3MgZ3JlYXQgcHJvbWlz ZSBpbiB0aGlzIHJlZ2FyZC4NCj4gPiA+DQo+ID4gPiBJIHdvdWxkIGJlIHZlcnkgaGFwcHkgdG8g c3VwcGx5IGFueSBuZWVkZWQgaW5mb3JtYXRpb24gYW5kIGhhdmUNCj4gPiA+IGRpc2N1c3Npb24g b24gaG93IHRvIGNvbnRpbnVlIHdpdGggdGhpcyBwcm9qZWN0Lg0KPiA+DQo+ID4gVGhhbmsgeW91 IE9yaSEgUGxlYXNlIGNoZWNrIG15IGZvbGxvd2luZyBjb21tZW50cw0KPiA+DQo+ID4gUmVnYXJk cw0KPiA+IFFpDQo+ID4NCj4gPiA+DQo+ID4gPiBQbGVhc2Ugc2VlIGlubGluZSBkZXRhaWxlZCBh bnN3ZXJzLg0KPiA+ID4NCj4gPiA+IEJlc3QsDQo+ID4gPiBPcmkgS2FtDQo+ID4gPg0KPiA+ID4N Cj4gPiA+DQo+ID4gPg0KPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4g PiBGcm9tOiBaaGFuZywgUWkgWiA8cWkuei56aGFuZ0BpbnRlbC5jb20+DQo+ID4gPiA+IFNlbnQ6 IE1vbmRheSwgTWF5IDgsIDIwMjMgOTo0MCBBTQ0KPiA+ID4gPiBTdWJqZWN0OiBzZWVraW5nIGNv bW11bml0eSBpbnB1dCBvbiBhZGFwdGluZyBEUERLIHRvIFA0UnVudGltZQ0KPiA+ID4gYmFja2Vu ZA0KPiA+ID4gPg0KPiA+ID4gPiBIaToNCj4gPiA+ID4NCj4gPiA+ID4gT3VyIHRlYW0gaXMgY3Vy cmVudGx5IHdvcmtpbmcgb24gZGV2ZWxvcGluZyBhIERQREsgUE1EIGZvciBhIFA0LQ0KPiA+ID4g PiBwcm9ncmFtbWVkIG5ldHdvcmsgY29udHJvbGxlciwgYmFzZWQgb24gY3VzdG9tZXIgZmVlZGJh Y2sgdG8NCj4gPiBpbnRlZ3JhdGUNCj4gPiA+ID4gRFBESyBpbnRvIHRoZSBQNFJ1bnRpbWUgYmFj a2VuZCAuW2h0dHBzOi8vcDQub3JnL3A0LQ0KPiA+ID4gPiBzcGVjL3A0cnVudGltZS9tYWluL1A0 UnVudGltZS1TcGVjLmh0bWxdDQo+ID4gPiA+DQo+ID4gPiA+ICgqKSBIb3dldmVyLCB3ZSBhcmUg ZmFjaW5nIGNoYWxsZW5nZXMgaW4gYWRhcHRpbmcgRFBESydzIHJ0ZV9mbG93DQo+ID4gPiA+IEFQ SSB0byB0aGUgUDRSdW50aW1lIEFQSSwgcHJpbWFyaWx5IGR1ZSB0byB0aGUgdHJhbnNpdGlvbiBm cm9tIGENCj4gPiA+ID4gdGFibGUtYmFzZWQgQVBJIHdpdGggZmllbGRzIG9mIGFyYml0cmFyeSBi aXRzIHdpZHRoIGF0IGFyYml0cmFyeQ0KPiA+ID4gPiBvZmZzZXQgdG8gYSBwcm90b2NvbC1iYXNl ZCBBUEkgKG1vcmUgZGV0YWlsIGJlIGRlc2NyaWJlZCBpbiBwb3N0LXNjcmlwdCkuDQo+ID4gPiA+ DQo+ID4gPiA+IFdlIGFyZSBzZWVraW5nIHN1Z2dlc3Rpb25zIGFuZCBiZXN0IHByYWN0aWNlcyBm cm9tIHRoZSBvcGVuLXNvdXJjZQ0KPiA+ID4gPiBjb21tdW5pdHkgdG8gaGVscCB1cyB3aXRoIHRo aXMgaW50ZWdyYXRpb24uIFNwZWNpZmljYWxseSwgd2UgYXJlDQo+ID4gPiA+IGludGVyZXN0ZWQg aW4NCj4gPiA+ID4gbGVhcm5pbmc6DQo+ID4gPiA+DQo+ID4gPiA+ICgqKSBJZiBhbnlvbmUgaGFz IHByZXZpb3VzbHkgYXR0ZW1wdGVkIHRvIG1hcCBydGVfZmxvdyB0byBQNC1iYXNlZA0KPiA+ID4g ZGV2aWNlcy4NCj4gPiA+DQo+ID4gPiBXZSBkaWQgdHJ5IHN1Y2Nlc3NmdWxseS4NCj4gPiA+DQo+ ID4gPiA+ICgqKSBUaG91Z2h0cyBvbiBob3cgdG8gbWFwIGZyb20gdGFibGUtYmFzZWQgbWF0Y2hp bmcgdG8gcHJvdG9jb2wtDQo+ID4gYmFzZWQNCj4gPiA+ID4gbWF0Y2hpbmcgbGlrZSBpbiBydGVf Zmxvdy4NCj4gPiA+DQo+ID4gPiBSdGVfZmxvdyBpcyB0YWJsZSBiYXNlZCAoZ3JvdXBzKSwgbm93 IHdpdGggdGhlIGludHJvZHVjdGlvbiBvZg0KPiA+ID4gdGVtcGxhdGUNCj4gPiBBUEkNCj4gPiA+ IHJ0ZV9mbG93IGlzIGV2ZW4gbW9yZSB0YWJsZSBiYXNlZCAod2UgYWRkZWQgdGhlIGNvbmNlcHQg b2YgdGFibGVzKQ0KPiA+ID4gd2hpY2ggYXJlIGp1c3Qgd2hhdA0KPiA+ID4gcDQgcmVxdWlyZXMu DQo+ID4NCj4gPiBZZXMsIHRoZSBydGVfZmxvdyB0ZW1wbGF0ZSBjYW4gYmUgdXNlZCB0byBtYXAg YSBzZXF1ZW5jZSBvZiBwYXR0ZXJucw0KPiA+IHRvIGENCj4gPiBQNCB0YWJsZSBhbmQgYSBzZXF1 ZW5jZSBvZiBhY3Rpb25zIHRvIGEgUDQgYWN0aW9uLiBIb3dldmVyLCBVc2luZyBhDQo+ID4gZml4 ZWQgcnRlX2Zsb3cgdGVtcGxhdGUgY2FuIGJlIHByb2JsZW1hdGljIHdoZW4gaGFuZGxpbmcgZGlm ZmVyZW50IFA0DQo+ID4gcHJvZ3JhbXMgaW4gdGhlIHNhbWUgZHJpdmVyLiBUbyBwcm92aWRlIG1v cmUgZmxleGliaWxpdHksIHRoZSBtYXBwaW5nDQo+ID4gb2YgcGF0dGVybnMgYW5kIGFjdGlvbnMg Y2FuIGJlIGV4dGVybmFsaXplZCBpbnRvIGEgY29uZmlndXJhdGlvbiBmaWxlDQo+ID4gb3IgcGFy dCBvZiB0aGUgZmlybXdhcmUgY2FuIGJlIGxlYXJuZWQgZnJvbSBkcml2ZXIsIGFsbG93aW5nIGZv cg0KPiA+IGN1c3RvbWl6YXRpb24gYmFzZWQgb24gdGhlIHNwZWNpZmljIHJlcXVpcmVtZW50cyBv ZiBlYWNoIFA0IHBpcGVsaW5lLg0KPiA+IGFjdHVhbGx5IHdlIGhhdmUgZW5hYmxlZCB0aGlzIGFw cHJvYWNoIGluIG9yZGVyIHRvIGFjY29tbW9kYXRlIGRpZmZlcmVudA0KPiBQNCBwcm9ncmFtcy4N Cj4gPg0KPiA+IEhvd2V2ZXIsIGFuIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRvIGNvbnNpZGVyIGlz IHdoZXRoZXIgaXQgd291bGQgYmUNCj4gPiBmZWFzaWJsZSB0byBkaXJlY3RseSBleHBvc2UgdGhl IFA0IHRhYmxlIGFuZCBhY3Rpb24gbmFtZXMgb3IgSURzIHRvDQo+ID4gdGhlIGFwcGxpY2F0aW9u LCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIHJ0ZV9mbG93IHRlbXBsYXRlcy4gVGhpcw0KPiA+IGFw cHJvYWNoIG9mZmVycyBzZXZlcmFsIHBvdGVudGlhbCBiZW5lZml0czoNCj4gPg0KPiA+IEludGVn cmF0aW9uIHdpdGggUDRydW50aW1lIEJhY2tlbmQ6IEJ5IGV4cG9zaW5nIHRoZSBQNCB0YWJsZSBh bmQNCj4gPiBhY3Rpb24gbmFtZXMgb3IgSURzIGRpcmVjdGx5LCBEUERLIGNvdWxkIGJlIGVhc2ls eSBpbnRlZ3JhdGVkIGFzIGENCj4gPiBQNHJ1bnRpbWUgYmFja2VuZC4gVGhpcyBlbGltaW5hdGVz IHRoZSBuZWVkIGZvciB0cmFuc2xhdGlvbiBmcm9tIHRoZQ0KPiA+IFA0cnVudGltZSBBUEkgdG8g cnRlX2Zsb3cgdGVtcGxhdGVzIGluIHRoZSBhcHBsaWNhdGlvbiwgc2ltcGxpZnlpbmcgdGhlDQo+ IGludGVncmF0aW9uIHByb2Nlc3MuDQo+ID4NCj4gPiBFbGltaW5hdGlvbiBvZiBNYW51YWwgTWFw cGluZzogRXhwb3NpbmcgdGhlIFA0IHRhYmxlIGFuZCBhY3Rpb24gbmFtZXMNCj4gPiBvciBJRHMg dG8gdGhlIGFwcGxpY2F0aW9uIHdvdWxkIHJlbW92ZSB0aGUgcmVxdWlyZW1lbnQgZm9yIHRoZQ0K PiA+IGVuZ2luZWVyaW5nIHRlYW0gdG8gbWFudWFsbHkgbWFwIGVhY2ggcGlwZWxpbmUgdG8gc3Bl Y2lmaWMgcnRlX2Zsb3cNCj4gPiB0ZW1wbGF0ZXMuIFRoaXMgaXMgcGFydGljdWxhcmx5IGJlbmVm aWNpYWwgaW4gY2FzZXMgd2hlcmUgaGFyZHdhcmUNCj4gPiB2ZW5kb3JzIHByb3ZpZGUgY3VzdG9t ZXJzIHdpdGggYSB0b29sY2hhaW4gdG8gY3JlYXRlIHRoZWlyIG93biBQNA0KPiA+IHBpcGVsaW5l cyBidXQgZG8gbm90IG5lY2Vzc2FyaWx5IG93biB0aGUgUDQgcHJvZ3JhbXMuIEJ5IGVsaW1pbmF0 aW5nDQo+ID4gdGhlIGRlcGVuZGVuY3kgb24gcnRlX2Zsb3cgdGVtcGxhdGVzLCB0aGlzIGFwcHJv YWNoIHJlZHVjZXMgY29tcGxleGl0eQ0KPiBpbiB1c2luZyBEUERLIGFzIHRoZSBkcml2ZXIuDQo+ ID4NCj4gPiBUbyBiZSBtb3JlIHNwZWNpZmljLCB0aGUgcHJvcG9zZWQgQVBJIGZvciBleHBvc2lu ZyBQNCB0YWJsZSBhbmQgYWN0aW9uDQo+ID4gbmFtZXMgb3IgSURzIGRpcmVjdGx5IHRvIHRoZSBh cHBsaWNhdGlvbiBjb3VsZCBiZSBhcyBmb2xsb3dzOg0KPiA+DQo+ID4gLyogR2V0IHRoZSB0YWJs ZSBpbmZvICovDQo+ID4gc3RydWN0IHJ0ZV9wNF90YWJsZV9pbmZvIHRibF9pbmZvOw0KPiA+IHJ0 ZV9wNF90YWJsZV9pbmZvX2dldF9ieV9uYW1lKHBvcnRfaWQsICJkZWNhcF92eGxhbl90Y3BfdGFi bGUiLA0KPiA+ICZ0YmxfaW5mbyk7DQo+ID4NCj4gPiAvKiBDcmVhdGUgdGhlIGtleSAqLw0KPiA+ IHN0cnVjdCBydGVfcDRfdGFibGVfa2V5ICprZXk7DQo+ID4gcnRlX3A0X3RhYmxlX2tleV9jcmVh dGUocG9ydF9pZCwgdGJsX2luZm8tPmlkLCAma2V5KTsNCj4gPg0KPiA+IC8qIFNldCB0aGUga2V5 IGZpZWxkcyAqLw0KPiA+IHJ0ZV9wNF90YWJsZV9rZXlfZmllbGRfc2V0X2J5X25hbWUocG9ydF9p ZCwga2V5LCAid2lyZV9wb3J0IiwNCj4gPiAmd2lyZV9wb3J0LCAyKTsgcnRlX3A0X3RhYmxlX2tl eV9maWVsZF9zZXRfYnlfbmFtZShwb3J0X2lkLCBrZXksDQo+ID4gInR1bl9pcF9zcmMiLCAmdHVu X2lwX3NyYywgNCk7DQo+ID4gcnRlX3A0X3RhYmxlX2tleV9maWVsZF9zZXRfYnlfbmFtZShwb3J0 X2lkLCBrZXksICJ0dW5faXBfZHN0IiwNCj4gPiAmdHVuX2lwX2RzdCwgNCk7IHJ0ZV9wNF90YWJs ZV9rZXlfZmllbGRfc2V0X2J5X25hbWUocG9ydF9pZCwga2V5LA0KPiA+ICJ2bmkiLCAmdm5pLCAz KTsgcnRlX3A0X3RhYmxlX2tleV9maWVsZF9zZXRfYnlfbmFtZShwb3J0X2lkLCBrZXksDQo+ID4g ImlwdjRfc3JjIiwgJmlwdjRfc3JjLCA0KTsgcnRlX3A0X3RhYmxlX2tleV9maWVsZF9zZXRfYnlf bmFtZShwb3J0X2lkLA0KPiA+IGtleSwgImlwdjRfZHN0IiwgJmlwdjRfZHN0LCA0KTsNCj4gPiBy dGVfcDRfdGFibGVfa2V5X2ZpZWxkX3NldF9ieV9uYW1lKHBvcnRfaWQsIGtleSwgInNyY19wb3J0 IiwNCj4gPiAmc3JjX3BvcnQsIDIpOyBydGVfcDRfdGFibGVfa2V5X2ZpZWxkX3NldF9ieV9uYW1l KHBvcnRfaWQsIGtleSwNCj4gPiAiZHN0X3BvcnQiLCAmZHN0X3BvcnQsIDIpOw0KPiA+DQo+ID4g LyogR2V0IHRoZSBhY3Rpb24gc3BlYyBpbmZvICovDQo+ID4gc3RydWN0IHJ0ZV9wNF9hY3Rpb25f c3BlY19pbmZvIGFzX2luZm87DQo+ID4gcnRlX3A0X2FjdGlvbl9zcGVjX2luZm9fZ2V0X2J5X25h bWUocG9ydF9pZCwgImRlY2FwX3Z4bGFuX2Z3ZCIsDQo+ID4gJmFzX2luZm8pOw0KPiA+DQo+ID4N Cj4gPiAvKiBDcmVhdGUgdGhlIGFjdGlvbiAqLw0KPiA+IHN0cnVjdCBydGVfcDRfYWN0aW9uICph Y3Rpb247DQo+ID4gcnRlX3A0X2FjdGlvbl9jcmVhdGUocG9ydF9pZCwgYXNfaW5mby0+aWQsICZh Y3Rpb24pOw0KPiA+DQo+ID4NCj4gPiAvKiBTZXQgdGhlIGFjdGlvbiBmaWVsZHMgKi8NCj4gPiBy dGVfcDRfdGFibGVfYWN0aW9uX2ZpZWxkX3NldF9ieV9uYW1lKHBvcnRfaWQsIGFjdGlvbiwgIm1v ZF9pZCIsDQo+ID4gJm1vZF9pZCwgMyk7IHJ0ZV9wNF90YWJsZV9hY3Rpb25fZmllbGRfc2V0X2J5 X25hbWUocG9ydF9pZCwgYWN0aW9uLA0KPiA+ICJwb3J0X2lkIiwgJnRhcmdldF9wb3J0X2lkLCAy KTsNCj4gPg0KPiA+IC8qIEFkZCB0aGUgZW50cnkgKi8NCj4gPiBydGVfcDRfdGFibGVfZW50cnlf YWRkKHBvcnRfaWQsIHRibF9pbmZvLT5pZCwga2V5LCBhY3Rpb24pOw0KPiA+DQo+ID4gLi4uDQo+ ID4NCj4gDQo+IEkgdGhpbmsgdGhhdCBpbnRyb2R1Y2Ugc29tZSBBUEkgdGhhdCBrbm93cyBQNCBp cyB0aGUgd2F5IHRvIGdvLCANCg0KR29vZCB0byBrbm93IQ0KDQo+IGJ1dCBJIHRoaW5rIHRoYXQN Cj4gdGhpcyBzaG91bGQgYmUgYSB2ZXJ5IHNpbXBsZSBBUEkgd2hpY2ggY2FsbHMgcnRlX2Zsb3cu DQoNCkkgZ3Vlc3MgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIEFQSSBpbXBsZW1lbnRhdGlvbiBtYXkg ZGVwZW5kIG9uIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBJbiBvdXIgY2FzZSwgd2UgY2FuIGRp cmVjdGx5IHRyYW5zbGF0ZSB0aGUgUDQgdGFibGUga2V5IGFuZCBhY3Rpb24gaW50byBsb3ctbGV2 ZWwgaGFyZHdhcmUgY29uZmlndXJhdGlvbiB1c2luZyBoaW50cyBnZW5lcmF0ZWQgYnkgdGhlIFA0 IGNvbXBpbGVyLCB3aXRob3V0IHRoZSBuZWVkIGZvciBhZGRpdGlvbmFsIHRyYW5zbGF0aW9uIHdp dGggcnRlX2Zsb3cgcHJvdG9jb2wtYmFzZWQgdGVtcGxhdGVzDQoNClRoYW5rcw0KUWkNCg0KPiAN Cj4gDQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gPiA+DQo+ID4gPiA+ICgqKSBBbnkgaWRlYXMgb24g aG93IHRvIGV4dGVuZCBvciBleHBhbmQgdGhlIHJ0ZV9mbG93IEFQSXMgdG8NCj4gPiA+ID4gYmV0 dGVyIGFjY29tbW9kYXRlIFA0LWJhc2VkIG9yIG90aGVyIHRhYmxlLW1hdGNoaW5nIGJhc2VkIGRl dmljZXMuDQo+ID4gPiA+DQo+ID4gPg0KPiA+ID4gTGV0cyBkaXNjdXNzIGFueSBpc3N1ZSB5b3Ug aGF2ZS4NCj4gPiA+DQo+ID4gPiA+IFlvdXIgaW5zaWdodHMgYW5kIGZlZWRiYWNrIHdvdWxkIGJl IGdyZWF0bHkgYXBwcmVjaWF0ZWQhDQo+ID4gPiA+DQo+ID4gPiA+ID09PT09PT09PT09PT09PT09 PT09PT09IFBvc3QtU2NyaXB0DQo+ID4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ ID4gPg0KPiA+ID4gPiBNb3JlIGRldGFpbHMgb24gdGhlIHByb2JsZW0gYmVsb3csIGZvciBhbnlv bmUgaW50ZXJlc3RlZA0KPiA+ID4gPg0KPiA+ID4gPiBJbiBQNCwgZmxvdyBvZmZsb2FkaW5nIGNh biBiZSBpbXBsZW1lbnRlZCB1c2luZyB0aGUgUDRSdW50aW1lIEFQSSwNCj4gPiA+ID4gd2hpY2gg cHJvdmlkZXMgYSBzdGFuZGFyZCBpbnRlcmZhY2UgZm9yIGNvbnRyb2xsaW5nIGFuZA0KPiA+ID4g PiBjb25maWd1cmluZyB0aGUgZGF0YSBwbGFuZSBiZWhhdmlvciBvZiBuZXR3b3JrIGRldmljZXMu IFA0UnVudGltZQ0KPiA+ID4gPiBhbGxvd3MgbmV0d29yayBvcGVyYXRvcnMgdG8gZHluYW1pY2Fs bHkgYWRkLCBtb2RpZnksIGFuZCByZW1vdmUNCj4gPiA+ID4gZmxvdyBydWxlcyBpbiB0aGUgaGFy ZHdhcmUgZm9yd2FyZGluZyB0YWJsZXMgb2YgUDQtZW5hYmxlZCBkZXZpY2VzLg0KPiA+ID4gPg0K PiA+ID4gPiBUaGUgUDRSdW50aW1lIEFQSSBpcyBhIHRhYmxlLWJhc2VkIEFQSSwgaXQgYXNzdW1l IHRoZSBwYWNrZXQNCj4gPiA+ID4gcHJvY2VzcyBwaXBlbGluZSB3YXMgY29uc2lzdHMgb2Ygb25l IG9yIG1vcmUga2V5L2FjdGlvbiB1bml0cw0KPiA+ID4gPiAodGFibGVzKS4gSW4gUDRSdW50aW1l LCBlYWNoIHRhYmxlIGRlZmluZXMgdGhlIGZpZWxkcyB0byBiZQ0KPiA+ID4gPiBtYXRjaGVkIGFu ZCB0aGUgYWN0aW9ucyB0byBiZSB0YWtlbiBvbiBpbmNvbWluZyBwYWNrZXRzLiBEdXJpbmcNCj4g PiA+ID4gY29tcGlsYXRpb24sIHRoZSBQNCBjb21waWxlciBhc3NpZ25zIGEgdW5pcXVlDQo+ID4g PiA+IHVpbnQzMiBJRCB0byBlYWNoIHRhYmxlLCBhY3Rpb24sIGFuZCBmaWVsZCwgd2hpY2ggaXMg YXNzb2NpYXRlZA0KPiA+ID4gPiB3aXRoIGl0cyBjb3JyZXNwb25kaW5nIHN0cmluZyBuYW1lLiBU aGVzZSBJRHMgaGF2ZSBubyBpbmhlcmVudA0KPiA+ID4gPiByZWxhdGlvbnNoaXAgdG8gYW55IG5l dHdvcmsgcHJvdG9jb2wgYnV0IGluc3RlYWQgc2VydmUgYXMgYSBtZWFucw0KPiA+ID4gPiB0byBp ZGVudGlmeSBkaWZmZXJlbnQgY29tcG9uZW50cyBvZiBhIFA0IHByb2dyYW0gd2l0aGluIHRoZSBQ NFJ1bnRpbWUNCj4gQVBJLg0KPiA+ID4gPg0KPiA+ID4gVGhpcyBpcyB0aGUgY29uY2VwdCBvZiB0 YWJsZXMgYW5kIGdyb3VwcyBpbiBydGVfZmxvdy4NCj4gPiA+DQo+ID4gPiA+IElmIHdlIGNob29z ZSB0byB1c2UgcnRlX2Zsb3cgYXMgdGhlIGxvdy1sZXZlbCBBUEkgZm9yIFA0UnVudGltZSwgYQ0K PiA+ID4gPiB0cmFuc2xhdGlvbiBsYXllciBpcyBuZWVkZWQgaW4gdGhlIGFwcGxpY2F0aW9uIHRv IG1hcCB0aGUgUDQNCj4gPiA+ID4gdGFibGVzIGFuZCBhY3Rpb25zIHRvIHRoZSBjb3JyZXNwb25k aW5nIHJ0ZV9mbG93IHJ1bGVzLiBIb3dldmVyLA0KPiA+ID4gPiB0aGlzIHRyYW5zbGF0aW9uIGxh eWVyIGNhbiBiZSBwcm9ibGVtYXRpYyBhcyBpdCBpcyBub3QgZWFzaWx5IHNjYWxhYmxlLg0KPiA+ ID4gPiBXaGVuIHRoZSBQNCBwaXBlbGluZSBpcyByZWZpbmVkIG9yIHVwZGF0ZWQsIHRoZSB0cmFu c2xhdGlvbiBydWxlcw0KPiA+ID4gPiBtYXkgYWxzbyBuZWVkIHRvIGJlIHVwZGF0ZWQsIHdoaWNo IGNhbiByZXN1bHQgaW4gZXJyb3JzIGFuZA0KPiA+ID4gPiByZWR1Y2VkDQo+ID4gZWZmaWNpZW5j eS4NCj4gPiA+ID4NCj4gPiA+IEkgZG9uJ3QgdW5kZXJzdGFuZCB3aHkuDQo+ID4gPg0KPiA+ID4g PiBPbiB0aGUgb3RoZXIgaGFuZCwgYSBoYXJkd2FyZSB2ZW5kb3IgdGhhdCBwcm92aWRlcyBhIFA0 LWVuYWJsZWQNCj4gPiA+ID4gZGV2aWNlIGlzIHJlcXVpcmVkIHRvIGltcGxlbWVudCBhbiBydGVf ZmxvdyBpbnRlcmZhY2UgaW4gdGhlaXIgRFBESyBQTUQuDQo+ID4gPiA+IFR5cGljYWxseSwgdGhl DQo+ID4gPiA+IFA0IGNvbXBpbGVyIGdlbmVyYXRlcyBoaW50cyBmb3IgdGhlIGRyaXZlciBvbiBo b3cgdG8gbWFwIFA0IHRhYmxlcw0KPiA+ID4gPiB0byBoYXJkd2FyZSByZXNvdXJjZXMsIGFuZCBo b3cgdG8gY29udmVydCB0YWJsZSBlbnRyeQ0KPiA+ID4gPiBhZGQvbW9kaWZ5L2RlbGV0ZSBhY3Rp b25zIGludG8gbG93LWxldmVsIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zLg0KPiA+ID4gPiBIb3dl dmVyLCBiZWNhdXNlIHJ0ZV9mbG93IGlzIHByb3RvY29sLWJhc2VkLCBpdCBwb3NlcyBhbg0KPiA+ ID4gPiBhZGRpdGlvbmFsIGNoYWxsZW5nZSBmb3IgZHJpdmVyIGRldmVsb3BlcnMsIHdobyBtdXN0 IGNyZWF0ZQ0KPiA+ID4gPiBhbm90aGVyIHRyYW5zbGF0aW9uIGxheWVyIHRvIGNvbnZlcnQgcnRl X2Zsb3cgdG9rZW5zIGludG8gUDQNCj4gPiA+ID4gb2JqZWN0IGlkZW50aWZpZXJzLiBUaGlzIHRy YW5zbGF0aW9uIGxheWVyIG11c3QgYmUgY2FyZWZ1bGx5DQo+ID4gPiA+IGRlc2lnbmVkIGFuZCBp bXBsZW1lbnRlZCB0byBlbnN1cmUgb3B0aW1hbCBwZXJmb3JtYW5jZSBhbmQNCj4gPiA+ID4gc2Nh bGFiaWxpdHksIGFuZCB0byBlbnN1cmUgdGhhdCB0aGUgZHJpdmVyIGNhbiBlZmZpY2llbnRseQ0K PiA+ID4gaGFuZGxlIHRoZSBkeW5hbWljIG5hdHVyZSBvZiBQNCBwcm9ncmFtcy4NCj4gPiA+ID4N Cj4gPiA+IFJpZ2h0LCBidXQgc29tZSBvZiB0aGUgdHJhbnNsYXRpb24gY2FuIGJlIGRvbmUgaW4g c2hhcmVkIGNvZGUgYnkgYWxsDQo+ID4gPiBQTURzIGFuZCB0aGUgdHJhbnNsYXRpb24gaXMgc3Rh dGljIGZvciB0aGUgY29tcGlsYXRpb24gc28gaW5zZXJ0aW5nDQo+ID4gPiBydWxlcyBjYW4gYmUg c3VwcGVyIGZhc3Qgd2l0aCBubyBuZWVkIGZvciBleHRyYSB3b3JrLg0KPiA+ID4NCj4gPiA+ID4g VG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIHByb2JsZW0sIGxldCdzIGNvbnNpZGVyIHRoZSBmb2xs b3dpbmcNCj4gPiA+ID4gZXhhbXBsZSB0aGF0IGRlbW9uc3RyYXRlcyBob3cgdG8gdXNlIHRoZSBQ NFJ1bnRpbWUgQVBJIHRvIHByb2dyYW0NCj4gPiA+ID4gYSBydWxlIGZvciBwcm9jZXNzaW5nIGEg VlhMQU4gcGFja2V0LiBUaGUgcnVsZSBtYXRjaGVzIGEgVlhMQU4NCj4gPiA+ID4gcGFja2V0LCBk ZWNhcHN1bGF0ZXMgdGhlIHR1bm5lbCBoZWFkZXIsIGFuZCBmb3J3YXJkcyBpdCB0byBhIHNwZWNp ZmljDQo+IHBvcnQuDQo+ID4gPiA+DQo+ID4gPiA+IFRoZSBQNCBzb3VyY2UgY29kZSBiZWxvdyBk ZXNjcmliZXMgdGhlIFZYTEFOIGRlY2FwIHRhYmxlDQo+ID4gPiA+IGRlY2FwX3Z4bGFuX3RjcF90 YWJsZSwgd2hpY2ggbWF0Y2hlcyB0aGUgb3V0ZXIgSVAgYWRkcmVzcywgVk5JLA0KPiA+ID4gPiBp bm5lciBJUCBhZGRyZXNzLCBhbmQgaW5uZXIgVENQIHBvcnQuIEZvciBlYWNoIHJ1bGUsIGZvdXIg YWN0aW9uDQo+ID4gPiA+IHNwZWNpZmljYXRpb25zIGNhbiBiZSBzZWxlY3RlZC4gV2Ugd2lsbCBm b2N1cyBvbiBvbmUgYWN0aW9uDQo+ID4gPiA+IHNwZWNpZmljYXRpb24gZGVjYXBfdnhsYW5fZndk IHRoYXQgcGVyZm9ybXMgZGVjYXBzdWxhdGlvbiBhbmQNCj4gPiA+ID4gZm9yd2FyZHMNCj4gPiA+ IHRoZSBwYWNrZXQgdG8gYSBzcGVjaWZpYyBwb3J0Lg0KPiA+ID4gPg0KPiA+ID4gPiB0YWJsZSBk ZWNhcF92eGxhbl90Y3BfdGFibGUgew0KPiA+ID4gPiDCoMKgwqAga2V5ID0gew0KPiA+ID4gPiDC oMKgwqDCoMKgwqDCoCBoZHJzLmlwdjRbbWV0YS5kZXB0aC0xXS5zcmNfaXA6IGV4YWN0IEBuYW1l KCJ0dW5faXBfc3JjIik7DQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgIGhkcnMuaXB2NFttZXRhLmRl cHRoLTFdLmRzdF9pcDogZXhhY3QgQG5hbWUoInR1bl9pcF9kc3QiKTsNCj4gPiA+ID4gwqDCoMKg wqDCoMKgwqAgaGRycy52eGxhblttZXRhLmRlcHRoLTFdLnZuacKgIDogZXhhY3QgQG5hbWUoInZu aSIpOw0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoCBoZHJzLmlwdjRbbWV0YS5kZXB0aF0uc3JjX2lw wqAgOiBleGFjdCBAbmFtZSgiaXB2NF9zcmMiKTsNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqAgaGRy cy5pcHY0W21ldGEuZGVwdGhdLmRzdF9pcMKgIDogZXhhY3QgQG5hbWUoImlwdjRfZHN0Iik7DQo+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgIGhkcnMudGNwLnNwb3J0wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDogZXhhY3QgQG5hbWUoInNyY19wb3J0Iik7DQo+ID4gPiA+IMKgwqDCoMKgwqDC oMKgIGhkcnMudGNwLmRwb3J0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogZXhhY3Qg QG5hbWUoImRzdF9wb3J0Iik7DQo+ID4gPiA+IMKgwqDCoCB9DQo+ID4gPiA+IMKgwqDCoCBhY3Rp b25zID0gew0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoCBAdGFibGVvbmx5IGRlY2FwX3Z4bGFuX2Z3 ZDsNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqAgQHRhYmxlb25seSBkZWNhcF92eGxhbl9kbmF0X2Z3 ZDsNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqAgQHRhYmxlb25seSBkZWNhcF92eGxhbl9zbmF0X2Z3 ZDsNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqAgQGRlZmF1bHRvbmx5IHNldF9leGNlcHRpb247DQo+ ID4gPiA+IMKgwqDCoCB9DQo+ID4gPiA+IH0NCj4gPiA+IFRyYW5zbGF0ZSB0byBydGVfZmxvdzoN Cj4gPiA+IHRlbXBsYXRlIHBhdHRlcm4gcmVsYXhlZF9tb2RlID0gMSBwYXR0ZXJuID0gIElwdjRf c3JjIC8gaXB2NF9kc3QgIC8NCj4gPiA+IHZuaSAvIGlwdjRfc3JjIC8gaXB2NF9kc3QgLyB0Y3Bf c3BvcnQgLyB0Y3BfZHBvcnQgbWFwIHN0cnVjdHVyZSA9IHsNCj4gPiA+IAl0dW5faXBfc3JjID0g JnBhdHRlcm5baXB2NF9zcmNdDQo+ID4gPiAJLi4uLg0KPiA+ID4gfQ0KPiA+ID4gPiAuLi4NCj4g PiA+ID4NCj4gPiA+ID4gYWN0aW9uIGRlY2FwX3Z4bGFuX2Z3ZChQb3J0SWRfdCBwb3J0X2lkKSB7 DQo+ID4gPiA+IMKgwqDCoCBtZXRhLm1vZF9hY3Rpb24gPSAoYml0PDExPilWWExBTl9ERUNBUF9P VVRFUl9JUFY0Ow0KPiA+ID4gPiDCoMKgwqAgc2VuZF90b19wb3J0KHBvcnRfaWQpOw0KPiA+ID4g PiB9DQo+ID4gPiA+DQo+ID4gPiBTYW1lIGFzIGFib3ZlIGp1c3Qgd2l0aCBhY3Rpb24gdGVtcGxh dGUNCj4gPiA+DQo+ID4gPiA+IEJlbG93IGlzIGFuIGV4YW1wbGUgb2YgdGhlIGhpbnQgdGhhdCB0 aGUgY29tcGlsZXIgd2lsbCBnZW5lcmF0ZQ0KPiA+ID4gPiBmb3IgdGhlDQo+ID4gPiA+IGRlY2Fw X3Z4bGFuX3RjcF90YWJsZToNCj4gPiA+ID4NCj4gPiA+ID4gVGFibGUgSUQ6wqDCoMKgwqDCoCA4 NDU0MTQ0DQo+ID4gPiA+IE5hbWU6wqDCoMKgwqDCoMKgwqDCoMKgIGRlY2FwX3Z4bGFuX3RjcF90 YWJsZSBGaWVsZCBJRMKgwqDCoMKgwqDCoCBOYW1lDQo+ID4gPiA+IE1hdGNoIFR5cGXCoMKgwqDC oCBCaXQgV2lkdGggQnl0ZSBXaWR0aMKgwqDCoMKgIEJ5dGUgT3JkZXINCj4gPiA+ID4gMcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR1bl9pcF9zcmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBleGFjdMKgwqDCoMKgwqDCoMKgwqDCoCAzMg0KPiA+ID4gPiA0wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV0d29yaw0KPiA+ID4gPiAywqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdHVuX2lwX2RzdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGV4YWN0wqDCoMKgwqDCoMKgwqDCoMKgIDMyDQo+ID4gPiA+IDTCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBuZXR3b3JrDQo+ID4gPiA+IDPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2bmnC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4YWN0 wqDCoCDCoMKgwqDCoMKgwqDCoDI0DQo+ID4gPiA+IDPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBuZXR3b3JrDQo+ID4gPiA+IDTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpcHY0X3NyY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleGFjdMKgwqDCoMKgwqDC oMKgwqDCoCAzMg0KPiA+ID4gPiA0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV0d29yaw0K PiA+ID4gPiA1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXB2NF9kc3TCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhhY3TCoMKgwqDCoMKgwqDCoMKgwqAgMzIN Cj4gPiA+ID4gNMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5ldHdvcmsNCj4gPiA+ID4gNsKg wqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoHNyY19wb3J0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGV4YWN0wqDCoMKgwqDCoMKgwqDCoMKgIDE2DQo+ID4gPiA+IDLC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXR3b3JrDQo+ID4gPiA+IDfCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBkc3RfcG9ydMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBleGFjdMKgwqDCoMKgwqDCoMKgwqDCoCAxNg0KPiA+ID4gPiAywqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgbmV0d29yayBTcGVjIElEwqDCoMKgwqDCoMKgwqAgTmFtZQ0KPiA+ID4g PiA4NTE5NzE2wqDCoMKgwqDCoMKgIMKgZGVjYXBfdnhsYW5fZndkDQo+ID4gPiA+IDg1MTk3MTjC oMKgwqDCoMKgwqDCoCBkZWNhcF92eGxhbl9kbmF0X2Z3ZA0KPiA+ID4gPiA4NTE5NzIwwqDCoMKg wqDCoMKgwqAgZGVjYXBfdnhsYW5fc25hdF9md2QNCj4gPiA+ID4gODUxOTY5NcKgwqDCoMKgwqDC oMKgIHNldF9leGNlcHRpb24NCj4gPiA+ID4NCj4gPiA+ID4gQW5kIHRoZSBoaW50IG9mIGFjdGlv biBzcGVjICJkZWNhcF92eGxhbl9md2QiIGFzIGJlbG93Og0KPiA+ID4gPg0KPiA+ID4gPiBTcGVj IElEOsKgwqDCoMKgwqDCoCA4NTE5NzE2DQo+ID4gPiA+IE5hbWU6wqDCoMKgwqDCoMKgwqDCoMKg IGRlY2FwX3Z4bGFuX2Z3ZA0KPiA+ID4gPiBGaWVsZCBJRMKgwqDCoMKgwqDCoCBOYW1lwqDCoMKg wqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQml0IFdpZHRowqDC oMKgwqDCoCBCeXRlDQo+ID4gPiA+IFdpZHRoIEJ5dGUgT3JkZXINCj4gPiA+ID4gMcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHBvcnRfaWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAzMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA0IGhvc3QNCj4gPiA+ID4N Cj4gPiA+ID4gUGxlYXNlIG5vdGUgdGhhdCBkaWZmZXJlbnQgY29tcGlsZXJzIG1heSBhc3NpZ24g ZGlmZmVyZW50IElEcy4NCj4gPiA+ID4NCj4gPiA+ID4gQmVsb3cgaXMgYW4gZXhhbXBsZSBvZiBo b3cgdG8gcHJvZ3JhbSBhIHJ1bGUgdXNpbmcgdGhlIFA0IHJ1bnRpbWUNCj4gPiA+ID4gQVBJIGlu IEpTT04gZm9ybWF0LiBUaGlzIHJ1bGUgbWF0Y2hlcyBmaWVsZHMgYW5kIGRpcmVjdHMgcGFja2V0 cyB0byBwb3J0IDUuDQo+ID4gPiA+DQo+ID4gPiA+IHsNCj4gPiA+ID4gwqDCoMKgICJ0eXBlIjog MSzCoCAvL0lOU0VSVA0KPiA+ID4gPiDCoMKgwqAgImVudGl0eSI6IHsNCj4gPiA+ID4gwqDCoMKg wqDCoMKgwqAgInRhYmxlX2VudHJ5Ijogew0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICJ0YWJsZV9pZCI6IDg0NTQxNDQsDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm1h dGNoIjogWw0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeyAiZmllbGRf aWQiOiAxLCAiZXhhY3QiOiB7ICJ2YWx1ZSI6IFsxMCwgMCwgMCwgMV0NCj4gPiA+ID4gfSB9LMKg wqAgLy8gb3V0ZXIgc3JjIElQID0NCj4gPiA+ID4gMTAuMC4wLjENCj4gPiA+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHsgImZpZWxkX2lkIjogMiwgImV4YWN0IjogeyAidmFsdWUi OiBbMTAsIDAsIDAsIDJdDQo+ID4gPiA+IH0gfSzCoCAvLyBvdXRlciBkc3QgSVAgPQ0KPiA+ID4g PiAxMC4wLjAuMg0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeyAiZmll bGRfaWQiOiAzLCAiZXhhY3QiOiB7ICJ2YWx1ZSI6IFswLCAwLCAxMF0gfQ0KPiA+ID4gPiB9LCAv L8KgIHZuaSA9IDEwLA0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeyAi ZmllbGRfaWQiOiA0LCAiZXhhY3QiOiB7ICJ2YWx1ZSI6IFsxOTIsIDAsIDAsDQo+ID4gPiA+IDFd IH0gfSwgLy8gaW5uZXIgc3JjIElQID0NCj4gPiA+ID4gMTkyLjAuMC4xDQo+ID4gPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7ImZpZWxkX2lkIjogNSwgImV4YWN0IjogeyAidmFs dWUiOiBbMTkyLCAwLCAwLCAyXQ0KPiA+ID4gPiB9IH0sIC8vIGlubmVyIGRzdCBJUCA9DQo+ID4g PiA+IDE5Mi4wLjAuMg0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgeyJm aWVsZF9pZCI6IDYsICJleGFjdCI6IHsgInZhbHVlIjogWzAsIDIwMF0gfSB9LA0KPiA+ID4gPiAv LyB0Y3Agc3JjIHBvcnQgPSAyMDANCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHsiZmllbGRfaWQiOiA3LCAiZXhhY3QiOiB7ICJ2YWx1ZSI6IFswLCAyMDFdIH0gfSwNCj4g PiA+ID4gLy8gdGNwIGRzdCBwb3J0ID0gMjAxDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgXSwNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYWN0aW9uIjogew0KPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImFjdGlvbiI6IHsNCj4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImFjdGlvbl9pZCI6IDg1MTk3MTYs DQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJwYXJhbXMi OiBbDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgeyAicGFyYW1faWQiOiAxLCAidmFsdWUiOiBbNSwgMCwgMCwgMF0gfQ0KPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBdDQo+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSwN Cj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuLi4NCj4gPiA+ID4gwqDCoMKgwqDCoMKg wqAgfQ0KPiA+ID4gPiDCoMKgwqAgfcKgwqDCoCAuLi4NCj4gPiA+ID4gfQ0KPiA+ID4gPg0KPiA+ ID4gPiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgaXMgb25seSBhIHBhcnQgb2YgdGhlIGZ1bGwgY29t bWFuZC4gRm9yIG1vcmUNCj4gPiA+ID4gaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byB0aGUg cDRydW50aW1lLnByb3RvWzJdDQo+ID4gPiA+DQo+ID4gPiA+IDEuIGh0dHBzOi8vcDQub3JnL3A0 LXNwZWMvcDRydW50aW1lL21haW4vUDRSdW50aW1lLVNwZWMuaHRtbA0KPiA+ID4gPiAyLg0KPiA+ ID4gPg0KPiA+ID4NCj4gPg0KPiBodHRwczovL2dpdGh1Yi5jb20vcDRsYW5nL3A0cnVudGltZS9i bG9iL21haW4vcHJvdG8vcDQvdjEvcDRydW50aW1lLnANCj4gPiA+IHINCj4gPiA+ID4gb3RvDQo+ ID4gPiA+DQo+ID4gPiA+IFRoYW5rIHlvdSBmb3IgeW91ciBhdHRlbnRpb24gdG8gdGhpcyBtYXR0 ZXIuDQo+ID4gPiA+DQo+ID4gPg0KPiA+ID4gSSB0aGluayB0aGF0IHdlIHNob3VsZCBzY2hlZHVs ZSBzb21lIG1lZXRpbmcgdG8gc2VlIGhvdyBtdWNoIGdhcHMgd2UNCj4gPiA+IHJlYWxseSBoYXZl IGJldHdlZW4gdGhlIHJ0ZV9mbG93IGFuZA0KPiA+ID4gUDQgYW5kIGhvdyB3ZSBjYW4gaW1wcm92 ZSB0aGUgcnRlX2Zsb3cgdG8gYWxsb3cgdGhlIGJlc3QgZXhwZXJpZW5jZS4NCj4gPg0KPiA+IFNv dW5kIGEgZ29vZCBpZGVhIQ0KPiA+ID4NCj4gPiA+ID4gUmVnYXJkcw0KPiA+ID4gPiBRaQ0K