From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 8D9CA40611 for ; Fri, 27 May 2022 16:12:48 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E9D8468B5C9; Fri, 27 May 2022 19:12:44 +0300 (EEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12olkn2099.outbound.protection.outlook.com [40.92.22.99]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9279C68B4C5 for ; Fri, 27 May 2022 19:12:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WkuXQaNXuTPVjAQVEY/nQazr1JAYjy6pXHs4V1OAbKmT4T6eop3vVwLkCNy+LegdTa6qpEsj1Fqdwfmwul9Ga01JpW1f5vqrwQU/krSh3pvFvbGJnomF3cbEgEzI6tNdXObfGEEATvgNp3dILh6syFPEBUnQuqX6HGxoeGzSsQn3ViwbiPZZmSboJADJpETyVBTELtX/JRzfj+0pTgBhAIKTr3MNrtQYze7qh04WnYGxLtcgHXftoT3tL9RKilA5920fgb67goZ2OYeYkz/5jL9FpjV+lCPR9I84Rx+W5OOecVYODRqGs5nc20IgbN5oLVWc2jwzBR36p7sm8t3gow== 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=IxwKawNXPsJyeCsH0QTJUUN8+O0Topn5qiJogAdBf3Y=; b=MGTk8E9UCP/77eUiJpizSmj0JhU6Vntfj+AqF6eP5mXuoLMrOdAu0CvLAGaOunWwxU2hPOcDXg2z0fcNEbDWNXykqFaTVV4IhaiGV6gsr/+e8PNdtHSN+jrbHP3i6RMC4ZeeXjJrftNDADKbDN8bXUHO3B831eM+bxUDfwJPSTdJS4wBhau5zsNHPXNIF8qlPnZU3ci/0Bc5Stde4eHZT4HpCNCsVC9xOiF4jhoThfepdM+XVGQJGcOm0HaXBQCtWtm0V2BurZpVSVM/TrN5Hr9+0OpBqdAB7FJxyv/zZSwLpd1ydFyIreGnypIuPoGZLLFn4KJQmIwgGlEKJ/nphA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IxwKawNXPsJyeCsH0QTJUUN8+O0Topn5qiJogAdBf3Y=; b=I4BOrRf3NXnbFH4sqeTUSUdZL0E7LUi71inCrTqg0e/9UBghDmZUKsUUq0xYvc3f6LY5HSCt6sTBbJUquXXuftVCk3UHHryjmEJibRXojSMWDmZP2IUjJrB+Dfpw0cPS17AvY//Ux4n/oIjrsSyWJNqhqCkkJ1jiVX8pe2YOQSf29QCImdIHRgmCtIhVI1oDiI+mUm84KOiYAi8vQRzr4bbdRvdhO2xoRoOEsvYJjDNqdQoaxLZjxPiBw2VbC7SsxHsvIyEXeIsMcFOLb+acK+5AfjgiN05CgTdXGveT3Bi0BUeopmE7I04EUU5oLOP/HUkKSw9Bv9DY8OWkVcoSUQ== Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by CH0P223MB0043.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:f2::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Fri, 27 May 2022 16:12:35 +0000 Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::f144:21f9:cdb1:5c8a]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::f144:21f9:cdb1:5c8a%7]) with mapi id 15.20.5293.016; Fri, 27 May 2022 16:12:35 +0000 From: Soft Works To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH 1/3] avutils/hwcontext: add derive-device function which searches for existing devices in both directions Thread-Index: AQHYXM31okUFSHUnd0mZd8hUGLzrfq0I+66AgAABwGCAAZbXgIAAlKpggAEArACAAAVXcIAAGBsAgAAAnpCAAVXggIAlV9Qw Date: Fri, 27 May 2022 16:12:35 +0000 Message-ID: References: <85ff784b6ff80d4f2e0f724d0b93472e50d2c256.1651349262.git.ffmpegagent@gmail.com> <994ee7a9-ab91-4d13-9538-ed4502c73bd6@jkqxz.net> <33e93072-cde1-437b-bf60-e78250f26692@jkqxz.net> <99c7fc4a-dcc3-91f7-615e-36218564a65b@jkqxz.net> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-tmn: [CxDKsyreNOOks3y1ACU4Ew6dXdHaxu6X] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d879828c-b076-43bb-e4c4-08da3ffbb665 x-ms-traffictypediagnostic: CH0P223MB0043:EE_ x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 3fcuB/BouOTb5OxGRDMD4F6r18umM4A+Retto5n5YfVniLcRunZNfXKvlXQDtuXyt3+E3ThYMN1EQfKhjUtP+rMhYRCsRx5Dqw85YZpFrXRaYQ4IvqpOItWK/zx5CScwCc2qcNvif8frLeEoXRd4z20dQF1q2K8cyisVnOgfeyR0f5mzXkKy/d7UBb2hbGYjABm0UrvMUSQ2eOTxvW4PL6u5kFZS5wyE7UnBQp0zQmlGRx4OoIN8woJpreQSEtBDTk5ip26yg9xQhMZQM86fOeftdlxRdUmYulDfFfAcSWNqgI51Gr9aW3utQ4hxiEAafhHUpnP8XEuT5AlY+aOznyG28mS/SJSh6KzHSwSQzxhuq6X29Lb/wo9viHMtfG2oAT1OfCI92LuLQvieHF8txntLdJhqLlnWgK3FEdh+EhAHA/rqXiTBLdO45UnH6qReBSJhndwn4oRbRkASVw8ZNazMDwcjmbWfrwE0uKcbEvppvBFONaZuZsDfX6cVV8gluUu8cn+sf1qWVV+XijqxwF+cdfHBCAtIf5mVv0ulnxx6qMWyQzXLW02ENLEKS6YD/zHPXz8gjhFDuv7kJ3y+2mHmtOT90gdbs5+DtpyNJQlWt6tGmIcfss+iMRNSqA+/ x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cHlmRGJkVDhFaEJ2R2ZzUHNwamlkZ0o4M3p1SmhZQzlJalc3Q2VoemNRcEFu?= =?utf-8?B?UjdFek1rdGpJQ1hqcVYwejFwQ2d1RERaY1NaVmNJUlI2T0dGNzBvNFl2L1Mx?= =?utf-8?B?OVlkeHUwUkVFUFhTUVhHNmVvLzlSV1NuRGtzaVNLMHhtZzByVlVCemUzbTdo?= =?utf-8?B?bzJsVGloVzViTFhRbGdLL0E3c3pBUWhWa1kvOCtMTEwrZVpNTXdRdjRUMVVX?= =?utf-8?B?TFJ6c2ZESVBTU2xiVlAzSFMyczhTQklmUjJhY0ZLdFF1U293U0NwL2h4K2N4?= =?utf-8?B?ODZQd3pMOTFBUkNhMkgyUlFyalhCeStoczNOREQxSTlXTHVuTGVxNmpmZHlW?= =?utf-8?B?ZS8vVzY1R2FnckV2b1BtQUhOU0grYzV1TDZ4VmFVT01qWFczVFRDUGRGL3RT?= =?utf-8?B?cXVnckpJZXhob1RjRGRyQXlReFN3aHM1SU1kZU91TUJFaXJUVmJoYThQbzR0?= =?utf-8?B?Yk00VU9OWjhGbUVVSzBVSnpJSkxKRG8yM3MzcVpRMjRZaVBDUTVUeGpoYlMy?= =?utf-8?B?YnVsTm8zS3lPRjdXNVZJOW9YT09sUElKMGtRQjdkaU9oWncxT3pZODY4emhY?= =?utf-8?B?T1RleTBONVVFYmg2WjkyNCtpbVpvTVl4VXZnOEZqZGxSMnFJRGR4VnVsQlp6?= =?utf-8?B?clRQbHpCRnRuUFNadDc4K01vcGtJcHN2akpZaFl6bjVtOEEzRGJtbysza0Nt?= =?utf-8?B?LzFHaStaWXU1b29JNnBrTUJueEdxSjhMY2RiM1dVQ0Uxd3JUVzg2dW9vZW1z?= =?utf-8?B?cVdHL0xBOXQ4ZGlrei83bWRSRVR5ajZ3VzdhRFZxTEROTXR2bjJKYWtKNE1U?= =?utf-8?B?anZBdDFzK2Vib0JpcXZmbURpNWhyR0YyY1QvTTdPdDZHYnI1aXFhbzlqMVdQ?= =?utf-8?B?NWpJRGhxOUN1c0VPU3FvVUlEcDJRNjRyaHFVRVpZbGtXSGVKbURGQ3gyQlpH?= =?utf-8?B?dmdnVEl4NjlvcHNJdmFmSVhQYzRTc0Q0ei83VklpZUJCZDdaMWJWMDhTZTdW?= =?utf-8?B?QWRDUnZhbko2emdpNkFjM0lneGwyL2kvUDI5eHFhdFU0aFE5amI1YUc5T3g4?= =?utf-8?B?VURVODZTRzlLODduSStEUnZ5bi84dkRMZW9kT01HVzBCZEM4Mnp2S3lqZzly?= =?utf-8?B?U25OZ1RydkpUdXBqb01kc0Y5eXkvcHNMakw0RFlZYVN4ekl1NU80OTdXRkp0?= =?utf-8?B?cmYzWlFPYWVCVEMvMytUNkxvbHV5LzhSYms3aGJkaDZlcktla1F0Qy9abU40?= =?utf-8?B?THFrZHhHcy9nSUYrbXFpUE5uU2x5am9TSWpsTE9ld3NQWkNCYmFUMHVFZzli?= =?utf-8?B?SFVmTzVqMHI0RlpadFBhYUdtNUFrMVUzWms4aXRnZVBMdzlHQnJ5N0NiK0ky?= =?utf-8?B?MmVEYXVhQlZVR3pvRjJYWlphTmx3TGNIMzhGYjNFTlZPZUNEMU14MVA4d1dx?= =?utf-8?B?TGNxc1FVbFdKdUVXZU4xc1hGOEduT3hWN1VSRGUvTHNFTjgyNjBSY09IQVA5?= =?utf-8?B?VlRUVm5qdW5wT29mbVRMRmk3TFJHcjBHZm1NU0hlcWNKTFFMYStqWkg5QzVR?= =?utf-8?B?Z1ZkSVh4SS96dHhOeWJ2bS9XSzVreXJYTjUrMS9tcHpvWG44aTVNZ0RKMGhx?= =?utf-8?B?MlJldHhxb1NjcGgzNm91ek5CQysrSDdvcUFVWURGSGxIUU9NV0VYK1dlSFFJ?= =?utf-8?B?bUlCL09Lb3ptT3FPakdlbGpkckdpRnE0VWw3UXBCS3AvczZOVm8zTTM5c3Jn?= =?utf-8?B?SkhmR2p3MWtFKytlM2lNOGgvNkhPc1Nic01VR2k4Wkw2K0NWQW5TemZYeEVr?= =?utf-8?B?dGpsdGczRFJyaDhjMGNYbXlINS9nVFNzK0NsUTA0QkV6S3UraUxuUmpNZWxE?= =?utf-8?B?WWtZeUg2LzR1dis2bnpzZ2lwaXFLOC9sMm1BNzI3L1NEYkxja0Focy9YbG9O?= =?utf-8?Q?jSTrZ2eQ2Hk=3D?= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-1ff67.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: d879828c-b076-43bb-e4c4-08da3ffbb665 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 May 2022 16:12:35.5350 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0P223MB0043 Subject: Re: [FFmpeg-devel] [PATCH 1/3] avutils/hwcontext: add derive-device function which searches for existing devices in both directions X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZmZtcGVnLWRldmVsIDxm Zm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPiBPbiBCZWhhbGYgT2YNCj4gTWFyayBUaG9t cHNvbg0KPiBTZW50OiBUdWVzZGF5LCBNYXkgMywgMjAyMiAxMDoyMyBQTQ0KPiBUbzogZmZtcGVn LWRldmVsQGZmbXBlZy5vcmcNCj4gU3ViamVjdDogUmU6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSCAx LzNdIGF2dXRpbHMvaHdjb250ZXh0OiBhZGQNCj4gZGVyaXZlLWRldmljZSBmdW5jdGlvbiB3aGlj aCBzZWFyY2hlcyBmb3IgZXhpc3RpbmcgZGV2aWNlcyBpbiBib3RoDQo+IGRpcmVjdGlvbnMNCj4g DQo+IE9uIDAzLzA1LzIwMjIgMDE6MTEsIFNvZnQgV29ya3Mgd3JvdGU6DQo+ID4+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IGZmbXBlZy1kZXZlbCA8ZmZtcGVnLWRldmVs LWJvdW5jZXNAZmZtcGVnLm9yZz4gT24gQmVoYWxmIE9mDQo+IE1hcmsNCj4gPj4gVGhvbXBzb24N Cj4gPj4gU2VudDogVHVlc2RheSwgTWF5IDMsIDIwMjIgMTo1NyBBTQ0KPiA+PiBUbzogZmZtcGVn LWRldmVsQGZmbXBlZy5vcmcNCj4gPj4gU3ViamVjdDogUmU6IFtGRm1wZWctZGV2ZWxdIFtQQVRD SCAxLzNdIGF2dXRpbHMvaHdjb250ZXh0OiBhZGQNCj4gZGVyaXZlLQ0KPiA+PiBkZXZpY2UgZnVu Y3Rpb24gd2hpY2ggc2VhcmNoZXMgZm9yIGV4aXN0aW5nIGRldmljZXMgaW4gYm90aA0KPiBkaXJl Y3Rpb25zDQo+ID4+DQo+ID4+IE9uIDAyLzA1LzIwMjIgMjM6NTksIFNvZnQgV29ya3Mgd3JvdGU6 DQo+ID4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBmZm1wZWct ZGV2ZWwgPGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+IE9uIEJlaGFsZg0KPiBPZg0K PiA+PiBNYXJrDQo+ID4+Pj4gVGhvbXBzb24NCj4gPj4+PiBTZW50OiBUdWVzZGF5LCBNYXkgMywg MjAyMiAxMjoxMiBBTQ0KPiA+Pj4+IFRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZw0KPiA+Pj4+ IFN1YmplY3Q6IFJlOiBbRkZtcGVnLWRldmVsXSBbUEFUQ0ggMS8zXSBhdnV0aWxzL2h3Y29udGV4 dDogYWRkDQo+ID4+IGRlcml2ZS0NCj4gPj4+PiBkZXZpY2UgZnVuY3Rpb24gd2hpY2ggc2VhcmNo ZXMgZm9yIGV4aXN0aW5nIGRldmljZXMgaW4gYm90aA0KPiA+PiBkaXJlY3Rpb25zDQo+ID4+Pj4N Cj4gPj4+PiBPbiAwMi8wNS8yMDIyIDA5OjE0LCBTb2Z0IFdvcmtzIHdyb3RlOg0KPiA+Pj4+Pj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+Pj4+IEZyb206IGZmbXBlZy1kZXZlbCA8 ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4gT24gQmVoYWxmDQo+IE9mDQo+ID4+Pj4g TWFyaw0KPiA+Pj4+Pj4gVGhvbXBzb24NCj4gPj4+Pj4+IFNlbnQ6IE1vbmRheSwgTWF5IDIsIDIw MjIgMTI6MDEgQU0NCj4gPj4+Pj4+IFRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZw0KPiA+Pj4+ Pj4gU3ViamVjdDogUmU6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSCAxLzNdIGF2dXRpbHMvaHdjb250 ZXh0OiBhZGQNCj4gPj4+PiBkZXJpdmUtDQo+ID4+Pj4+PiBkZXZpY2UgZnVuY3Rpb24gd2hpY2gg c2VhcmNoZXMgZm9yIGV4aXN0aW5nIGRldmljZXMgaW4gYm90aA0KPiA+Pj4+IGRpcmVjdGlvbnMN Cj4gPj4+Pj4NCj4gPj4+Pj4gWy4uXQ0KPiA+Pj4+Pg0KPiA+Pj4+Pj4+PiAqIFRoZSB0aHJlYWQt c2FmZXR5IHByb3BlcnRpZXMgb2YgdGhlIGh3Y29udGV4dCBBUEkgaGF2ZQ0KPiBiZWVuDQo+ID4+ Pj4gbG9zdA0KPiA+Pj4+Pj4gLQ0KPiA+Pj4+Pj4+PiB5b3UgY2FuIG5vIGxvbmdlciBvcGVyYXRl IG9uIGRldmljZXMgaW5kZXBlbmRlbnRseSBhY3Jvc3MNCj4gPj4gdGhyZWFkcw0KPiA+Pj4+Pj4+ PiAoaW5zb2ZhciBhcyB0aGUgdW5kZXJseWluZyBBUEkgYWxsb3dzIHRoYXQpLg0KPiA+Pj4+Pj4+ PiAgICAgICAgTWF5YmUgdGhlcmUgaXMgYW4gYXJndW1lbnQgdGhhdCBkZXJpdmF0aW9uIGlzDQo+ IHNvbWV0aGluZw0KPiA+Pj4+IHdoaWNoDQo+ID4+Pj4+Pj4+IHNob3VsZCBoYXBwZW4gZWFybHkg b24gYW5kIHRoZXJlZm9yZSBkb2N1bWVudGluZyBpdCBhcw0KPiB0aHJlYWQtDQo+ID4+Pj4+PiB1 bnNhZmUNCj4gPj4+Pj4+Pj4gaXMgb2ssIGJ1dCB3aGVuIGh3dXBsb2FkL2h3bWFwIGNhbiB1c2Ug aXQgaW5zaWRlDQo+IGZpbHRlcmdyYXBocw0KPiA+Pj4+IHRoYXQNCj4gPj4+Pj4+Pj4ganVzdCBp c24ndCBnb2luZyB0byBoYXBwZW4gKGFuZCB3aWxsIGJlIHZpb2xhdGVkIGluIHRoZQ0KPiBGRm1w ZWcNCj4gPj4+Pj4+IHV0aWxpdHkNCj4gPj4+Pj4+Pj4gaWYgZmlsdGVycyBnZXQgdGhyZWFkZWQs IGFzIGlzIGJlaW5nIHdvcmtlZCBvbikuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAgICAgRnJvbSBt eSB1bmRlcnN0YW5kaW5nIHRoZXJlIHdpbGwgYmUgYSBzaW5nbGUgc2VwYXJhdGUNCj4gdGhyZWFk DQo+ID4+Pj4gd2hpY2gNCj4gPj4+Pj4+PiBoYW5kbGVzIGFsbCBmaWx0ZXJncmFwaCBvcGVyYXRp b25zLg0KPiA+Pj4+Pj4+IEkgZG9uJ3QgdGhpbmsgaXQgd291bGQgZXZlbiBiZSBwb3NzaWJsZSAo d2l0aG91dCBtYXNzaXZlDQo+ID4+IGNoYW5nZXMpDQo+ID4+Pj4+Pj4gdG8gYXJiaXRyYXRlIGZp bHRlciBwcm9jZXNzaW5nIGluIHBhcmFsbGVsLg0KPiA+Pj4+Pj4+IEJ1dCBldmVuIGlmIHRoaXMg d291bGQgYmUgaW1wbGVtZW50ZWQ6IHRoZSBmaWx0ZXJncmFwaCBzZXR1cA0KPiA+Pj4+IChpbml0 LA0KPiA+Pj4+Pj4+IHVuaW5pdCwgcXVlcnlfZm9ybWF0cywgZXRjLikgd291bGQgc3VyZWx5IGhh cHBlbiBvbiBhIHNpbmdsZQ0KPiA+Pj4+IHRocmVhZC4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBUaGUg ZmZtcGVnIHV0aWxpdHkgY3JlYXRlcyBmaWx0ZXJncmFwaHMgZHluYW1pY2FsbHkgd2hlbiB0aGUN Cj4gPj4gZmlyc3QNCj4gPj4+Pj4+IGZyYW1lIGlzIGF2YWlsYWJsZSBmcm9tIHRoZWlyIGlucHV0 cywgc28gSSBkb24ndCBzZWUgd2h5IHlvdQ0KPiA+Pj4+IHdvdWxkbid0DQo+ID4+Pj4+PiBhbGxv dyBtdWx0aXBsZSBvZiB0aGVtIHRvIGJlIGNyZWF0ZWQgaW4gcGFyYWxsZWwgaW4gdGhhdCBjYXNl Lg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IElmIHlvdSBjcmVhdGUgYWxsIGRldmljZXMgYXQgdGhlIGJl Z2lubmluZyBhbmQgdGhlbiBnaXZlDQo+ID4+IHJlZmVyZW5jZXMNCj4gPj4+PiB0bw0KPiA+Pj4+ Pj4gdGhlbSB0byB0aGUgdmFyaW91cyBmaWx0ZXJzIHdoaWNoIG5lZWQgdGhlbSAoc28gbmV2ZXIN Cj4gbWFuaXB1bGF0ZQ0KPiA+Pj4+Pj4gZGV2aWNlcyBkeW5hbWljYWxseSB3aXRoaW4gdGhlIGdy YXBoKSB0aGVuIGl0IHdvdWxkIGJlIG9rLCBidXQNCj4gSQ0KPiA+Pj4+IHRoaW5rDQo+ID4+Pj4+ PiB5b3UndmUgYWxyZWFkeSByZWplY3RlZCB0aGF0IGFwcHJvYWNoLg0KPiA+Pj4+Pg0KPiA+Pj4+ PiBQbGVhc2UgbGV0J3Mgbm90IGJyZWFrIG91dCBvZiB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaHNl dC4NCj4gPj4+Pj4gVGhpcyBwYXRjaHNldCBpcyBub3QgYWJvdXQgcmUtZG9pbmcgZGV2aWNlIGRl cml2YXRpb24uIFRoZSBvbmx5DQo+ID4+Pj4+IHNtYWxsIGNoYW5nZSB0aGF0IGl0IGRvZXMgaXMg dGhhdCBpdCByZXR1cm5zIGFuIGV4aXN0aW5nIGRldmljZQ0KPiA+Pj4+PiBpbnN0ZWFkIG9mIGNy ZWF0aW5nIGEgbmV3IG9uZSB3aGVuIHN1Y2ggZGV2aWNlIGFscmVhZHkgZXhpc3RzDQo+ID4+Pj4+ IGluIHRoZSBzYW1lKCEpIGNoYWluLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGUgY2hhbmdlIGl0IG1h a2VzIGhhcyByZWFsbHkgbm90aGluZyB0byBkbyB3aXRoIHRocmVhZGluZyBvcg0KPiA+Pj4+PiBh bnl0aGluZyBhcm91bmQgaXQuDQo+ID4+Pj4NCj4gPj4+PiBUaGUgY2hhbmdlIG1ha2VzIGV4aXN0 aW5nIHRocmVhZC1zYWZlIGh3Y29udGV4dCBBUElzIHVuc2FmZS4NCj4gVGhhdA0KPiA+PiBpcw0K PiA+Pj4+IGRlZmluaXRlbHkgbm90ICJub3RoaW5nIHRvIGRvIHdpdGggdGhyZWFkaW5nIiwgYW5k IGhhcyB0byBiZQ0KPiA+PiByZXNvbHZlZA0KPiA+Pj4+IHNpbmNlIHRoZXkgY2FuIGN1cnJlbnRs eSBiZSBjYWxsZWQgZnJvbSBjb250ZXh0cyB3aGljaCBleHBlY3QNCj4gPj4gdGhyZWFkLQ0KPiA+ Pj4+IHNhZmV0eSAoc3VjaCBhcyBtYWtpbmcgZmlsdGVyZ3JhcGhzKS4NCj4gPj4+DQo+ID4+PiBB cyBJIHNhaWQsIEknbSBub3QgYXdhcmUgdGhhdCBmaWx0ZXJncmFwaCBjcmVhdGlvbiB3b3VsZCBi ZSBhDQo+ID4+IGNvbnRleHQNCj4gPj4+IHdoaWNoIHJlcXVpcmVzIHRocmVhZC1zYWZldHksIGV2 ZW4gd2hlbiBjb25zaWRlcmluZyBmcmFtZXMgd2hpY2gNCj4gZ2V0DQo+ID4+PiBwdXNoZWQgaW50 byBhIGZpbHRlcmdyYXBoIChsaWtlIGZyb20gYSBkZWNvZGVyKS4NCj4gPj4NCj4gPj4gVXNlciBw cm9ncmFtcyBjYW4gZG8gd2hhdGV2ZXIgdGhleSBsaWtlIHdpdGhpbiB0aGUgQVBJDQo+IGNvbnN0 cmFpbnRzLg0KPiA+Pg0KPiA+Pj4gQ291bGQgeW91IHBsZWFzZSBzaG93IGEgY29tbWFuZCBsaW5l IHdoaWNoIGNhdXNlcyBhIHNpdHVhdGlvbg0KPiB3aGVyZQ0KPiA+Pj4gZGV2aWNlX2Rlcml2ZSBp cyBiZWluZyBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzPw0KPiA+Pg0KPiA+PiBHaXZlbiB0 aGF0IHRoZSBmZm1wZWcgdXRpbGl0eSBpcyBjdXJyZW50bHkgZW50aXJlbHkgc2luZ2xlLQ0KPiB0 aHJlYWRlZCwNCj4gPj4gdGhpcyB3aWxsIG9ubHkgaGFwcGVuIG9uY2UgdGhlIGludGVuZGVkIHBs YW5zIGZvciBhZGRpbmcgdGhyZWFkaW5nDQo+IHRvDQo+ID4+IGl0IGFyZSBjb21wbGV0ZS4NCj4g Pg0KPiA+IEFzIG1lbnRpb25lZCwgSSBkb24ndCB0aGluayB0aGF0IHdvdWxkIGJlIHBvc3NpYmxl IGVhc2lseSwgYW5kIGZyb20NCj4gPiB3aGF0IEkgaGF2ZSB1bmRlcnN0b29kLCB0aGUgcGxhbiBp cyB0byBoYXZlIHNlcGFyYXRlIHRocmVhZHMgZm9yDQo+IGRlY29kaW5nLA0KPiA+IGVuY29kaW5n IGFuZCBmaWx0ZXJpbmcgYnV0IG5vdCBtdWx0aXBsZSB0aHJlYWRzIGZvciBmaWx0ZXJpbmcuDQo+ IA0KPiBBcyB0aGUgc3VtbWFyeSBpbiA8aHR0cHM6Ly9saXN0cy5mZm1wZWcub3JnL3BpcGVybWFp bC9mZm1wZWctDQo+IGRldmVsLzIwMjItQXByaWwvMjk0OTQwLmh0bWw+IHN0YXRlcywgdGhlIGlu dGVudCBpcyBhIHNlcGFyYXRlIHRocmVhZA0KPiBmb3IgZWFjaCBpbnN0YW5jZSBvZiB0aG9zZSB0 aGluZ3MsIGluY2x1ZGluZyBmaWx0ZXJncmFwaHMuDQo+IA0KPiA+PiBXaXRoIHRoYXQsIGl0IHdp bGwgYmUgdHJ1ZSBmb3Igc29tZXRoaW5nIHdoaWNoIG1ha2VzIHR3bw0KPiBmaWx0ZXJncmFwaHMN Cj4gPj4gYW5kIHVzZXMgZGVyaXZhdGlvbiBpbiBib3RoIG9mIHRoZW0uICBGb3IgZXhhbXBsZTos IHRoaXMgY3VycmVudGx5DQo+ID4+IG1ha2VzIHR3byBpbmRlcGVuZGVudCBWQUFQSSBkZXZpY2Vz LCBidXQgZXF1YWxseSBjb3VsZCByZXVzZSB0aGUNCj4gc2FtZQ0KPiA+PiBkZXZpY2U6DQo+ID4+ DQo+ID4+ICMgZmZtcGVnIC15IC1mIGttc2dyYWIgLWkgL2Rldi9kcmkvY2FyZDAgLXZmDQo+ID4+ IGh3bWFwPWRlcml2ZV9kZXZpY2U9dmFhcGksc2NhbGVfdmFhcGk9Zm9ybWF0PW52MTIgLWM6diBo MjY0X3ZhYXBpDQo+ID4+IG91dDEubXA0IC12Zg0KPiA+PiBod21hcD1kZXJpdmVfZGV2aWNlPXZh YXBpLHNjYWxlX3ZhYXBpPXc9MTI4MDpoPTcyMDpmb3JtYXQ9bnYxMiAtDQo+IGM6dg0KPiA+PiBo MjY0X3ZhYXBpIG91dDIubXA0DQo+ID4NCj4gPiBXZWxsLCBtdWx0aS10aHJlYWRpbmcgaXMgbm90 IGFuIGlzc3VlIHJpZ2h0IG5vdywgYW5kIEkgZG9uJ3QgZXhwZWN0DQo+IGl0DQo+ID4gdG8gYmUg dGhlbi4NCj4gPg0KPiA+IEJ1dCBvbiBhIG1vcmUgcHJhY3RpY2FsIHRha2U6IHdoYXQgZG8geW91 IHdhbnQgbWUgdG8gZG8/DQo+ID4NCj4gPiBHdWFyZCB0aGF0IGZ1bmN0aW9uIHdpdGggYSBsb2Nr PyBJIGNhbiBkbyB0aGlzLCBubyBwcm9ibGVtLg0KDQoNCkhpIE1hcmssDQoNCkkgaGF2ZSBzdWJt aXR0ZWQgYSBuZXcgcGF0Y2hzZXQgYmFzZWQgb24geW91ciBzdWdnZXN0aW9uczoNCmh0dHBzOi8v cGF0Y2h3b3JrLmZmbXBlZy5vcmcvcHJvamVjdC9mZm1wZWcvbGlzdC8/c2VyaWVzPTY2NTUNCg0K DQo+IEknZCBsaWtlIGl0IHRvIGJlIGRlc2lnbmVkIGluIGEgd2F5IHRoYXQgYXZvaWRzIHRoaXMg c29ydCBvZiBwcm9ibGVtLA0KPiBhcyBhbGwgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyBhcmUuDQoN ClVuZGVyc3Rvb2QgYW5kIGFjY2VwdGVkLg0KDQoNCj4gPiBub25lIG9mIGFueSBvZiB0aGUgZGV2 aWNlIGNvbnRyb2wgZnVuY3Rpb24gZG9lcyBhbnkNCj4gc3luY2hyb25pemF0aW9uLA0KPiA+IHNv IHdoeSB3b3VsZCBleGFjdGx5IHRoaXMgLSBhbmQgb25seSB0aGlzIGZ1bmN0aW9uIG5lZWQNCj4g c3luY2hyb25pemF0aW9uPw0KPiANCj4gVGhlIGRlcml2ZWRfZGV2aWNlcyBmaWVsZCBpcyBtb2Rp ZmllZCBwb3N0LWNyZWF0aW9uLCB3aGljaCBnaXZlcyB5b3UNCj4gZGF0YSByYWNlcyBpZiB0aGVy ZSBpcyBubyBvdGhlciBzeW5jaHJvbmlzYXRpb24uDQo+IA0KPiAoQ29uc2lkZXIgc2ltdWx0YW5l b3VzIGRlcml2YXRpb24gY2FsbHM6IGN1cnJlbnRseSB0aGF0J3MgY29tcGxldGVseQ0KPiBmaW5l IC0gaXQgbWFrZXMgbm8gY2hhbmdlcyB0byB0aGUgcGFyZW50IGRldmljZSBhbmQgdGhlIGRlcml2 ZWQNCj4gZGV2aWNlcyBhcmUgaW5kZXBlbmRlbnQuICBXaXRoIHlvdXIgcHJvcG9zZWQgcGF0Y2gg dGhlcmUgaXMgdW5kZWZpbmVkDQo+IGJlaGF2aW91ciBiZWNhdXNlIG9mIHRoZSBzaW11bHRhbmVv dXMgcmVhZGluZyBhbmQgd3JpdGluZyBvZiB0aGUNCj4gZGVyaXZlZF9kZXZpY2VzIGZpZWxkLikN Cj4gDQo+IFRoZSBvbmx5IG90aGVyIG11dGFibGUgZmllbGQgaXMgdGhlIGJ1ZmZlciBwb29sIGlu IGEgZnJhbWVzIGNvbnRleHQsDQo+IHdoaWNoIGhhcyBpdHMgb3duIGludGVybmFsIHN5bmNocm9u aXNhdGlvbi4NCg0KSSBoYWQgdGhvdWdodCB0aGVyZSBtdXN0IGJlIG90aGVyIGNhc2VzIG9mIHJh Y2UgY29uZGl0aW9ucyBiZWNhdXNlDQpub25lIG9mIHRoZSBvdGhlciBmdW5jdGlvbnMgYXJlIGVt cGxveWluZyBhbnkgc3luY2hyb25pemF0aW9uIHBhdHRlcm5zLA0KYnV0IC0gYXQgbGVhc3Qgd2l0 aCByZWdhcmRzIHRvIGRldmljZSBjdHggLSBJIHJlYWxpemVkIHRoYXQgeW91IGFyZSByaWdodA0K aW4gdGhhdCB0aGVyZSBhcmVuJ3QgYW55IHJhY2VzIChpbiAicmVndWxhciIgdXNlIGNhc2VzIGF0 IGxlYXN0KS4NCg0KDQo+IEhhdmluZyB0aG91Z2h0IGFib3V0IHRoaXMgYSBiaXQgZnVydGhlciwg SSBzdXNwZWN0IHlvdSBhcmUgZ29pbmcgdG8NCj4gbmVlZCBhbiBhZGRpdGlvbmFsIHNoYXJlZC1k ZXZpY2VzIG9iamVjdCBvZiBzb21lIGtpbmQgaW4gb3JkZXIgdG8gZ2V0DQo+IGFyb3VuZCB0aGUg Y2lyY3VsYXIgcmVmZXJlbmNlcyBhbmQgZml4IHRoZSBtZW1vcnkgbGVhayBwcm9ibGVtLg0KPiAN Cj4gVGhhdCBhZGRpdGlvbmFsIG9iamVjdCB3aWxsIGhhdmUgdG8gYmUgbXV0YWJsZSBhbmQgYWNj ZXNzaWJsZSBmcm9tDQo+IG11bHRpcGxlIHRocmVhZHMsIHNvIHdpbGwgcHJvYmFibHkgbmVlZCBh biBpbnRlcm5hbCBsb2NrIChvciBjYXJlZnVsDQo+IGxvY2stZnJlZSBkZXNpZ24pLg0KDQoNCkkg dGhpbmsgSSBoYXZlIGZvdW5kIGEgc2FmZSBhbmQgc2ltcGxlIHNvbHV0aW9uIHRvIGJvdGggcmVx dWlyZW1lbnRzOg0Kd2Vhay1yZWZlcmVuY2VzIGFuZCBzeW5jaHJvbml6YXRpb24uDQoNCg0KV2Vh ayBSZWZlcmVuY2VzDQo9PT09PT09PT09PT09PT0NCg0KVGhlIHVzZSBvZiBBVkJ1ZmZlciBhbmQg QVZCdWZmZXJSZWYgaXMgYSB3ZWxsLWVzdGFibGlzaGVkIHBhdHRlcm4sIHNvIGl0J3MNCnN1cmVs eSBub3QgYW4gb3B0aW9uIHRvIG1ha2UgYW55IGZ1bmRhbWVudGFsIGNoYW5nZXMgb3Igc3RhcnQg dXNpbmcgYSANCmRpZmZlcmVudCBwYXR0ZXJuIGZvciBhIHNwZWNpZmljIHVzZSBjYXNlLiBVbmZv cnR1bmF0ZWx5LCBpdHMgIGltcGxlbWVudGF0aW9uDQpkb2Vzbid0IGxlYXZlIHJvb20gZm9yIGFk YXB0aW5nIGl0IGFzIGEgd2Vhay1yZWZlcmVuY2UgcGF0dGVybi4NCg0KU28gY2FtZSB0byB0aGUg Zm9sbG93aW5nIHBhdHRlcm46DQoNCi0gV2hlbiBhIGRldmljZSBjb250ZXh0IGlzIGNyZWF0ZWQg aXQgaXMgcmVnaXN0ZXJlZCBpbiBhIGdsb2JhbCBhcnJheQ0KICAod2l0aCB0aHJlYWQtc2FmZSBh Y2Nlc3MpIGFuZCBnZXRzIGEgcmVnaXN0cmF0aW9uIGlkICgxLCAyLCAzLCAuLi4pDQogID0+IHNl ZSByZWdpc3Rlcl9od19kZXZpY2UoKQ0KDQotIFRoZSByZWdpc3RyYXRpb24gaWQgaXMgdGhlICJ3 ZWFrIHJlZmVyZW5jZSINCg0KLSBXaGVuIGEgZGV2aWNlIGNvbnRleHQgaXMgZnJlZWQsIGl0IGdl dHMgdW5yZWdpc3RlcmVkIA0KICAocmVtb3ZlZCBmcm9tIHRoZSBhcnJheSkNCiAgPT4gc2VlIHVu cmVnaXN0ZXJfaHdfZGV2aWNlKCkNCg0KLSBOb3csIGEgZGV2aWNlIGNvbnRleHQgY2FuIHJlZmVy ZW5jZSBvdGhlciBkZXZpY2UgY29udGV4dHMganVzdCANCiAgdGhyb3VnaCB0aGF0IG51bWJlciAo b2YgY291cnNlIG5vdCBrbm93aW5nIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcNCiAgZGV2aWNl IGlzIHN0aWxsICJhbGl2ZSIpDQoNCi0gQnV0IHRoaXMgY2FuIGJlIGJlIGRldGVybWluZWQgYnkg cXVlcnlpbmcgZnJvbSB0aGUgYXJyYXkgd2hpY2ggY2FuIHJldHVybiBhbg0KICBBVkJ1ZmZlclJl ZiB0byB0aGF0IGRldmljZSBvbiBzdWNjZXNzwrQNCiAgPT4gc2VlIGdldF9yZWdpc3RlcmVkX2h3 X2RldmljZSgpDQoNCg0KU3luY2hyb25pemF0aW9uDQo9PT09PT09PT09PT09PT0NCg0KLSBBbGwg cmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgY2FsbHMgYXJlIGxvY2tlZCBieSBhIG11dGV4DQotIFF1 ZXJ5aW5nIGZvciBhIGRldmljZSBieSByZWdpc3RyYXRpb24gaWQgaXMgbG9ja2VkIGluIHRoZSBz YW1lIHdheQ0KICBhbmQgcmV0dXJucyBhbiBBVkJ1ZmZlclJlZiB0byB0aGUgZGV2aWNlIGNvbnRl eHQsIG1ha2luZyBzdXJlDQogIHRoYXQgdGhlIHJldHVybmVkIGRldmljZSBjb250ZXh0IHdpbGwg cmVtYWluIHZhbGlkIGFuZCBub3QgYmUNCiAgZnJlZWQNCg0KDQpTcGVjaWZpY3MNCj09PT09PT09 PQ0KDQpJIGhhZCBvbmUgcHJvYmxlbSB0byBtYWtlIGl0IHdvcmsgYXMgZGVzY3JpYmVkIGFib3Zl OiBIb3cgdG8gcmV0dXJuDQphbiBBVkJ1ZmZlclJlZiB0byB0aGUgZGV2aWNlIGNvbnRleHQgZnJv bSBnZXRfcmVnaXN0ZXJlZF9od19kZXZpY2UoKT8NCg0KQ3VycmVudGx5LCBhbiBBVkJ1ZmZlclJl ZiBjYW4gb25seSBiZSBjcmVhdGVkIGZyb20gYW5vdGhlciBBVkJ1ZmZlclJlZi4NCkJ1dCBuZWl0 aGVyIHRoZSBkZXZpY2UgY29udGV4dCBub3IgdGhlIHJlZ2lzdHJhdGlvbiBhcnJheSBjYW4gc3Rv cmUNCmFuIEFWQnVmZmVyUmVmIHRvIHRoZSBjb250ZXh0LCBiZWNhdXNlIHRoYXQgYWRkaXRpb25h bCByZWZlcmVuY2Ugd291bGQNCmNhdXNlIHRoZSBkZXZpY2UgY29udGV4dCB0byBuZXZlciBiZSBm cmVlZCBhdCBhbGwuIA0KTmVpdGhlciBjb3VsZCB3ZSB1c2UgdGhlIEFWQnVmZmVyUmVmIHRoYXQg aXMgc3VwcGxpZWQgZm9yIA0KYXZfaHdkZXZpY2VfY3R4X2luaXQoKSwgYmVjYXVzZSBpdCBjb3Vs ZCBiZSByZWxlYXNlZCBhdCBzb21lIHRpbWUgd2hpbGUNCmFub3RoZXIgQVZCdWZmZXJSZWYgaXMg c3RpbGwgaG9sZGluZyBhIHJlZmVyZW5jZS4NCg0KVGhhdCdzIHdoeSBJIGNob3NlIHRvIHVzZSBh bmQgc3RvcmUgQVZCdWZmZXIgaXRzZWxmLiBBVkJ1ZmZlciBpdHNlbGYgDQppcyBub3Qgc3VpdGFi bGUgZm9yIHVzZSBhcyBhIHdlYWsgcmVmZXJlbmNlLCBiZWNhdXNlIGl0J3Mgbm90IHBvc3NpYmxl DQp0byBkZXRlcm1pbmUgZnJvbSB0aGUgcG9pbnRlciBvbmNlIGFuZCB3aGV0aGVyIGl0IGlzIGF2 X2ZyZWUnZCBvciBub3QuDQoNClRob3VnaCwgaW4gdGhlIGNvbnRleHQgb2YgaHdkZXZpY2Ugd2Ug ZG9uJ3QgaGF2ZSB0aGF0IHByb2JsZW0gZHVlDQp0byB0aGUgdXNlIG9mIGh3ZGV2aWNlX2N0eF9m cmVlKCkgYXMgYSBjdXN0b20gY2FsbGJhY2sgZm9yIGZyZWVpbmcNCnRoZSBBVkJ1ZmZlciwgc28g d2UgY2FuIHNhZmVseSB1c2UgQVZCdWZmZXIgdG8gc3RvcmUgYXMgYSByZWZlcmVuY2UNCmluIHRo ZSBnbG9iYWwgZGV2aWNlIGNvbnRleHQgcmVnaXN0cmF0aW9uIGFycmF5Lg0KDQpUaGUgcmVmZXJl bmNlIGNvdW50IGlzIHN0b3JlZCBpbiBBVkJ1ZmZlciBhbnl3YXksIGFuZCB0aGF0IGxlYXZlcyB1 cw0Kd2l0aCBqdXN0IG9uZSByZXF1aXJlbWVudDoNCg0KQmVpbmcgYWJsZSB0byBjcmVhdGUgYW4g QVZCdWZmZXJSZWYgZnJvbSBhbiBBVkJ1ZmZlciBkaXJlY3RseSBpbnN0ZWFkDQpvZiBmcm9tIGFu b3RoZXIgQVZCdWZmZXJSZWYuDQpUaGlzIGlzIGRvbmUgaW4gUEFUQ0ggMS80OiBhZGQgYXZfcmVm X2Zyb21fYnVmZmVyKCkgZnVuY3Rpb24NCg0KDQoNCkkgaG9wZSB0aGlzIG1ha2VzIHNlbnNlIHRv IHlvdSBhbmQgZnVsZmlsbHMgdGhlIHJlcXVpcmVtZW50cyB5b3UgDQphcmUgYXNraW5nIGZvci4N ClBsZWFzZSBsZXQgbWUga25vdyB3aGF0IHlvdSB0aGluay4NCg0KVGhhbmtzLA0Kc3cNCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBt YWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21h aWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBh Ym92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1Ympl Y3QgInVuc3Vic2NyaWJlIi4K