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 68EE142C02 for ; Mon, 2 May 2022 08:14:40 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 12AB168B2C6; Mon, 2 May 2022 11:14:38 +0300 (EEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11olkn2089.outbound.protection.outlook.com [40.92.18.89]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8212A68B037 for ; Mon, 2 May 2022 11:14:31 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jNKY48uAkoynlvCgCmMxkFnbNsUhlhT74u4+/myCxl4C4GeTgT8cB6WcPfHRdFBDX27fZlIt7uBhsCBnPPpIeRJkwCE0IT6/GJZpSSkpx2fL5mqkAi+if8TDwOSj47PxfKGxzRBtpBqoQlyi8UuCovVf+txmIVAcYaXftDUu/baQSD9JtCx6+mJnkWLQ4kgqTgIR/tqB7+WGGfhpPTfc9V+tFcPiJ1UP25/fOmSvC2cXihC0zxxu+scrSgBkAMOzqTXgq7fqnujSpNNs849XWckEPqeytus9Sngi+HyRB6yPvWtAe8m6dQJXYsrKoTJ/bu3s4aHy4utKxJcN7SRuUQ== 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=eppjMlJrgg84xpOOMpjH8DocEjlE97G1aVfsuCuPLAY=; b=BshdrTKMBikqGiyRaf+aWujc8gzdoF3e+htSomJ9mCDy8rYGp1UsPi26QJ1apYM0wG0mL/Z1ih85Xnnkdl6NTjXIi92nV12DW3PCODnXyuZDD6mO8R+S+xtx1R0ohA41IMIYpaw2hhXL7jwe2FGhoIY0yVAhuFOPVK+LFyN/E1htROCKht6/n1cBzyv0ALQqdIXQk34s4JZnl0D1XiGLXHx5xVqUpP+NFIoxaOPkSpcQgQ7kSlSJFTWLk4Q3VlKpFnaPSrNJTxpuU9rieZpFP6ujAPhNY4NuPdPM3ViB8WEdCvtrUM1AAc+L0cs6BplHFWv2rMlJ436ZBf+fdDqJ5Q== 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=eppjMlJrgg84xpOOMpjH8DocEjlE97G1aVfsuCuPLAY=; b=Xi3QW+mDGoOnkWjT3Kjo3ertLQcw+gwu1FAWDMIiZ1CQFuBRcJzmmCuk4D447kzc65je+n81J/mbR91IPFVgR0+2ihfUbByZ07V9l464OrrDPBKhbiADUrI8b87XkcZDkZ3zr2tUFiBGn/ajdmQluOjuR8zbctlFcNDymm6zYch3qKNjYDTjPH/f2c7/bF0DeAvHu5b5mMWomE8nKXxw4TlrR+0YB8DEUZQBG13OmXce/CYKbfuNcL8Pqd8txIcGFtT+K3QDy+erJIxejqtDiFBHEarKpgcd75pLiGvyPWlHY6ZA8a4TDLxhDbTDhUdAffrCisM5+iF3WhFX8qyeiw== Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by IA1P223MB0497.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:3eb::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Mon, 2 May 2022 08:14:28 +0000 Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::7472:6f83:eeb:45e3]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::7472:6f83:eeb:45e3%9]) with mapi id 15.20.5206.013; Mon, 2 May 2022 08:14:28 +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+66AgAABwGCAAZbXgIAAlKpg Date: Mon, 2 May 2022 08:14:28 +0000 Message-ID: References: <85ff784b6ff80d4f2e0f724d0b93472e50d2c256.1651349262.git.ffmpegagent@gmail.com> <994ee7a9-ab91-4d13-9538-ed4502c73bd6@jkqxz.net> In-Reply-To: <994ee7a9-ab91-4d13-9538-ed4502c73bd6@jkqxz.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-tmn: [YTEWR9yfIT+gJNS9Q+SEXGCFm5lqqxO7] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 895ecf0c-0ff9-4dc5-e2cd-08da2c13c705 x-ms-traffictypediagnostic: IA1P223MB0497:EE_ x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DXeXVhyO3KAo2UFEUXCWkDcoyTxM8K7bug0mPt7KvfVcekpPPH3bdw7/zj4U6aAJoIltKkx9dKJSREcpH3vFILKIzoNw0HlFTlrT3HuaZc3yOTNZWDfZghQnpRyCzXGEn7K/x8iShyLK8h4U2dFhegA8IWd1j0xqEvPOolJAqB0vyy+Laqx8tzKsadNxvkyWDJmYhbV3C559nZLs2ef3XDBEAqpAYEWuExEARPAWlIsLyIVREi2BkBKVzaNdrsAP5tQY6xGpWHfMn6o0rdmOQHyt/j3H26byQL6IyH2kFC5aAWr9ijH4jcMgMthcsv5A1T9OmOBLTentwwY2rDairiUIBomZjr87lxbh+y8F/Ya9LXd657AOb1eMMJoSPiU3p6RqN4YrTeAVQXermI8OPCViJZbzNhbWaVCYfy+hloPfv20+YX5s59QxyGvPDsse+fNshEmvhq+djk2MXy4as5bluM8yZqqqdk5i5sgILEPXbsDk4hlWEhGbvk8cG71x2hoviwNpYmyinpdwmASYjOwPPU8+ZS0beg4XqhRheiTBg+bs/XiL1JG07yuLI5ns+VUKLoKhqgCokJQKsrlCdg== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eCt5L2xsY29oc1BhWjhhd3BEalpHWGcyQjBhSHkwbVpta1NCdEZlblNQVWhT?= =?utf-8?B?cFJEZW0xOVhvRlU0SDg0QkV5QWJJTDdlS2p1SytLKzFmOFJBczN4R3JRN09m?= =?utf-8?B?alVkTUgxWTBsdWtld0xaRkdTcjl5NGpwamttZWt4ZzNZTFRGV1p2T3hONWVD?= =?utf-8?B?QU05RHNJbE9FbUJaTTVMdG13azJUalBTOTFHS3FSVnJvYkhiZU5mazlOQ0RT?= =?utf-8?B?Z1ZlMXJUZVpaTFl2SkZ0czdvdnpVYlovdEFXaU9ONGNuTDF1VUZleFJPbmEw?= =?utf-8?B?MU4yTGFQOGo5QnNLSzBReU80cjd0cENNOUg4b0FSby9zWEJVblRwSFFJS205?= =?utf-8?B?OHVCb29ZNE1oK205T0oxSGVKREtTVEpIMllzcTl2T0ZPV1d2WWp1TGNRZWdH?= =?utf-8?B?LzlXaG5MQzdha3JOSVNhUHY4SnBiNUg1MmY0Y04zQmlqOThBV294ZHpHbGFt?= =?utf-8?B?bmFjR2kyNlBGeWdLellrdWMzNUpuQVFBbVdDelh5NDZNWmxhczBGbVRJWG9q?= =?utf-8?B?eGZHelQwbmVWQ0ZLUjRNN2ZUQ2J4K2RuMk9ERlBIWnYvc2ZQVGo3VE9aSGZo?= =?utf-8?B?NTBjQnJFRVVySVd0S092dG5JZTAzYlFlSzl5SGhUTFhBdjlWWjFWN1RPeXg0?= =?utf-8?B?YjB2bFhSdHRXYUorbTBxT2FZM0NZV3ZUNW9SMFJ1NklERWhFSWtnQU1Rb1Ny?= =?utf-8?B?RjhsTWc2aHFUbWxtV1NwSFZUU1o0YTcwekxTNkh0OHU4b2oyRXZwakFmQkF6?= =?utf-8?B?cTlURThlZHJCUGFDRjl2MDNFL3diakJKR211UitEU1VyTzBweFBsS2FMQ3VF?= =?utf-8?B?ZDB0N2JWUjExc0lSTEthQVpaYXFLTDlHTlNWRFlUdG9rWUJtR2wwd21kUkVE?= =?utf-8?B?eGI5UDdiSnBBTTZVOHlQTmJPeXVtWWxoMG9DWFd4alNibEU5TjZ4cFp1SWpN?= =?utf-8?B?Z2JjNW1pNTFRbnF0MjZjRmZVS0wrYnhXSUx1Y3JRY3Nac3FCbFdkQzdVZjlI?= =?utf-8?B?cU9HTTl1cCswTjF3alJQeW01ejRSbDEvc2JqeUZTbkxoVkdPbkpwdUlzT3Yy?= =?utf-8?B?cXhZK2JtdHArTFdpZlVRcGR0Y2QwVmlURWV3NS9hWUhwbWlEZGVTb3d5RXVI?= =?utf-8?B?VUdORXI3QUpQemNoNFhkem4wcER0aVF5NTlnMEY4SCsvMXVtMjkvaERBNnJy?= =?utf-8?B?MmUrV01TeHhvYXBzcUxJVUkzdC94WWNaMlh6bE5WaDVOOTErQ3Faend4SFc5?= =?utf-8?B?ajV5Y21kMXFYczdONlBBNGU3Vm42dGdGdFNLVWxweVdyS3phSEI1WTdmOERh?= =?utf-8?B?bktWTytWQVBRWGdHVmZTbVdQVmhBWThuMFBWT1k1RUM1YVN6WlYzTUtsbWJy?= =?utf-8?B?QjdOTkVNVUFvL2Q5T3RRMEsyR0hlYklpVENiOWhiZWk4ZVF3UE1BeENYY3FI?= =?utf-8?B?dW81dUZaN0hhTG8rdTY5UHd5VUE2Qzl0UkttWk9vQzhSc0NlQlhmY05ZUDMx?= =?utf-8?B?NE4wMzVsSmRlQW94WDh3VE1CcktUQzVKWTZvMTVscVQzRDlxazVlQWpkSDdH?= =?utf-8?B?WGhhajE0ckFzMXNPVWZxOWJVSGJqekQ5YjQ3NmZCT3ZEdUFzd3lxSlZubHZD?= =?utf-8?B?YTJqRFliZWlIM1V2YzVsejEza1JHenR5LytqR09xNUJFaXo2eS9WMUJMU2tH?= =?utf-8?B?czErelhrMHkzaE4zNC8yUTdacjd3VmtkWVhIcFlQUHdyWEZZNnVIdFRYV3p1?= =?utf-8?B?RjgvWkwvNEJ4UUM3UWozMEpYd1J3c0RucDlZODBTL0h1NEE2dmZGQkc3ZjdX?= =?utf-8?B?SEN1cVlzeTA3cjRpWC9IUmlWTFhoZDlRcUZLSWNOZFd4V0tkVUFYbUtqVjRv?= =?utf-8?B?K2s2N2d0aWMycEV0azYxeHJtb0c3S1B0cG1sQWt2Nk1ka1dlR2dUSmdTVTl6?= =?utf-8?Q?Z6PaxgXPO9Y=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: 895ecf0c-0ff9-4dc5-e2cd-08da2c13c705 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2022 08:14:28.1242 (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: IA1P223MB0497 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 Zm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPiBPbiBCZWhhbGYgT2YgTWFyaw0KPiBUaG9t cHNvbg0KPiBTZW50OiBNb25kYXksIE1heSAyLCAyMDIyIDEyOjAxIEFNDQo+IFRvOiBmZm1wZWct ZGV2ZWxAZmZtcGVnLm9yZw0KPiBTdWJqZWN0OiBSZTogW0ZGbXBlZy1kZXZlbF0gW1BBVENIIDEv M10gYXZ1dGlscy9od2NvbnRleHQ6IGFkZCBkZXJpdmUtDQo+IGRldmljZSBmdW5jdGlvbiB3aGlj aCBzZWFyY2hlcyBmb3IgZXhpc3RpbmcgZGV2aWNlcyBpbiBib3RoIGRpcmVjdGlvbnMNCg0KWy4u XQ0KDQo+ID4+ICogVGhlIHRocmVhZC1zYWZldHkgcHJvcGVydGllcyBvZiB0aGUgaHdjb250ZXh0 IEFQSSBoYXZlIGJlZW4gbG9zdA0KPiAtDQo+ID4+IHlvdSBjYW4gbm8gbG9uZ2VyIG9wZXJhdGUg b24gZGV2aWNlcyBpbmRlcGVuZGVudGx5IGFjcm9zcyB0aHJlYWRzDQo+ID4+IChpbnNvZmFyIGFz IHRoZSB1bmRlcmx5aW5nIEFQSSBhbGxvd3MgdGhhdCkuDQo+ID4+ICAgICBNYXliZSB0aGVyZSBp cyBhbiBhcmd1bWVudCB0aGF0IGRlcml2YXRpb24gaXMgc29tZXRoaW5nIHdoaWNoDQo+ID4+IHNo b3VsZCBoYXBwZW4gZWFybHkgb24gYW5kIHRoZXJlZm9yZSBkb2N1bWVudGluZyBpdCBhcyB0aHJl YWQtDQo+IHVuc2FmZQ0KPiA+PiBpcyBvaywgYnV0IHdoZW4gaHd1cGxvYWQvaHdtYXAgY2FuIHVz ZSBpdCBpbnNpZGUgZmlsdGVyZ3JhcGhzIHRoYXQNCj4gPj4ganVzdCBpc24ndCBnb2luZyB0byBo YXBwZW4gKGFuZCB3aWxsIGJlIHZpb2xhdGVkIGluIHRoZSBGRm1wZWcNCj4gdXRpbGl0eQ0KPiA+ PiBpZiBmaWx0ZXJzIGdldCB0aHJlYWRlZCwgYXMgaXMgYmVpbmcgd29ya2VkIG9uKS4NCj4gPg0K PiA+ICBGcm9tIG15IHVuZGVyc3RhbmRpbmcgdGhlcmUgd2lsbCBiZSBhIHNpbmdsZSBzZXBhcmF0 ZSB0aHJlYWQgd2hpY2gNCj4gPiBoYW5kbGVzIGFsbCBmaWx0ZXJncmFwaCBvcGVyYXRpb25zLg0K PiA+IEkgZG9uJ3QgdGhpbmsgaXQgd291bGQgZXZlbiBiZSBwb3NzaWJsZSAod2l0aG91dCBtYXNz aXZlIGNoYW5nZXMpDQo+ID4gdG8gYXJiaXRyYXRlIGZpbHRlciBwcm9jZXNzaW5nIGluIHBhcmFs bGVsLg0KPiA+IEJ1dCBldmVuIGlmIHRoaXMgd291bGQgYmUgaW1wbGVtZW50ZWQ6IHRoZSBmaWx0 ZXJncmFwaCBzZXR1cCAoaW5pdCwNCj4gPiB1bmluaXQsIHF1ZXJ5X2Zvcm1hdHMsIGV0Yy4pIHdv dWxkIHN1cmVseSBoYXBwZW4gb24gYSBzaW5nbGUgdGhyZWFkLg0KPiANCj4gVGhlIGZmbXBlZyB1 dGlsaXR5IGNyZWF0ZXMgZmlsdGVyZ3JhcGhzIGR5bmFtaWNhbGx5IHdoZW4gdGhlIGZpcnN0DQo+ IGZyYW1lIGlzIGF2YWlsYWJsZSBmcm9tIHRoZWlyIGlucHV0cywgc28gSSBkb24ndCBzZWUgd2h5 IHlvdSB3b3VsZG4ndA0KPiBhbGxvdyBtdWx0aXBsZSBvZiB0aGVtIHRvIGJlIGNyZWF0ZWQgaW4g cGFyYWxsZWwgaW4gdGhhdCBjYXNlLg0KPiANCj4gSWYgeW91IGNyZWF0ZSBhbGwgZGV2aWNlcyBh dCB0aGUgYmVnaW5uaW5nIGFuZCB0aGVuIGdpdmUgcmVmZXJlbmNlcyB0bw0KPiB0aGVtIHRvIHRo ZSB2YXJpb3VzIGZpbHRlcnMgd2hpY2ggbmVlZCB0aGVtIChzbyBuZXZlciBtYW5pcHVsYXRlDQo+ IGRldmljZXMgZHluYW1pY2FsbHkgd2l0aGluIHRoZSBncmFwaCkgdGhlbiBpdCB3b3VsZCBiZSBv aywgYnV0IEkgdGhpbmsNCj4geW91J3ZlIGFscmVhZHkgcmVqZWN0ZWQgdGhhdCBhcHByb2FjaC4N Cg0KUGxlYXNlIGxldCdzIG5vdCBicmVhayBvdXQgb2YgdGhlIHNjb3BlIG9mIHRoaXMgcGF0Y2hz ZXQuDQpUaGlzIHBhdGNoc2V0IGlzIG5vdCBhYm91dCByZS1kb2luZyBkZXZpY2UgZGVyaXZhdGlv bi4gVGhlIG9ubHkNCnNtYWxsIGNoYW5nZSB0aGF0IGl0IGRvZXMgaXMgdGhhdCBpdCByZXR1cm5z IGFuIGV4aXN0aW5nIGRldmljZQ0KaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUgd2hlbiBz dWNoIGRldmljZSBhbHJlYWR5IGV4aXN0cw0KaW4gdGhlIHNhbWUoISkgY2hhaW4uDQoNClRoZSBj aGFuZ2UgaXQgbWFrZXMgaGFzIHJlYWxseSBub3RoaW5nIHRvIGRvIHdpdGggdGhyZWFkaW5nIG9y IA0KYW55dGhpbmcgYXJvdW5kIGl0Lg0KDQoNCj4gPj4gKiBJJ20gbm90IHN1cmUgdGhhdCBpdCBp cyByZWFzb25hYmxlIHRvIGlnbm9yZSBvcHRpb25zLiAgSWYgYW4NCj4gPj4gdW5yZWxhdGVkIGNv bXBvbmVudCBkZXJpdmVkIGEgZGV2aWNlIGJlZm9yZSB5b3Ugd2l0aCBzcGVjaWFsDQo+IG9wdGlv bnMsDQo+ID4+IHlvdSBtaWdodCBnZXQgdGhhdCBkZXZpY2UgZXZlbiBpZiB5b3UgaGF2ZSBpbmNv bXBhdGlibGUgZGlmZmVyZW50DQo+ID4+IG9wdGlvbnMuDQo+ID4NCj4gPiBJIHVuZGVyc3RhbmQg d2hhdCB5b3UgbWVhbiwgYnV0IHRoaXMgaXMgb3V0c2lkZSB0aGUgc2NvcGUgb2YNCj4gPiB0aGlz IHBhdGNoc2V0LCBiZWNhdXNlIHdoZW4geW91IHdvdWxkIHdhbnQgdG8gZG8gdGhpcywgaXQNCj4g PiB3b3VsZCBuZWVkIHRvIGJlIGltcGxlbWVudGVkIGZvciBkZXJpdmF0aW9uIGluIGdlbmVyYWws IG5vdA0KPiA+IGluIHRoaXMgcGF0Y2hzZXQgd2hpY2ggb25seSBhZGRzIHJldmVyc2Utc2VhcmNo IHRvIHRoZQ0KPiA+IGV4aXN0aW5nIGRlcml2YXRpb24gZnVuY3Rpb25hbGl0eS4NCj4gDQo+IEkn bSBub3Qgc3VyZSB3aGF0IHlvdSBtZWFuIGJ5IHRoYXQ/ICBUaGUgZmVhdHVyZSBhbHJlYWR5IGV4 aXN0czsgaGVyZQ0KPiBpcyBhIGNvbmNyZXRlIGV4YW1wbGUgb2Ygd2hlcmUgeW91IHdvdWxkIGdl dCB0aGUgd3JvbmcgcmVzdWx0Og0KPiANCj4gU3RhcnQgd2l0aCBWQUFQSSBkZXZpY2UgQS4NCj4g DQo+IENvbXBvbmVudCBQIGRlcml2ZXMgVnVsa2FuIGRldmljZSBCIHdpdGggc29tZSBleHRlbnNp b24gb3B0aW9ucyBYLg0KPiANCj4gQ29tcG9uZW50IFEgd2FudHMgdGhlIHNhbWUgZGV2aWNlIGFz IFAsIHNvIGl0IGRlcml2ZXMgYWdhaW4gd2l0aA0KPiBleHRlbnNpb24gb3B0aW9ucyBYIGFuZCBn ZXRzIEIuDQo+IA0KPiBFdmVyeXRoaW5nIHdvcmtzIGZpbmUgZm9yIGEgd2hpbGUuDQo+IA0KPiBM YXRlciwgdW5yZWxhdGVkIGNvbXBvbmVudCBSIGlzIGluc2VydGVkIGJlZm9yZSBQIGFuZCBRLiAg SXQgd2FudHMgYQ0KPiBWdWxrYW4gZGV2aWNlIEMgd2l0aCBleHRlbnNpb24gb3B0aW9ucyBZLCBz byBpdCBkZXJpdmVzIHRoYXQuDQo+IA0KPiBOb3cgY29tcG9uZW50IFEgaXMgYnJva2VuIGJlY2F1 c2UgaXQgZ2V0cyBDIGluc3RlYWQgb2YgQiBhbmQgaGFzIHRoZQ0KPiB3cm9uZyBleHRlbnNpb25z IGVuYWJsZWQuDQoNCkFzIHBlciB5b3VyIHJlcXVlc3QsIHRoaXMgcGF0Y2hzZXQncyBjaGFuZ2Vz IGFyZSBub3cgbGltaXRlZCB0bw0KdXNlIGZmbXBlZyBjbGkuIEFuZCB0aGVyZSBpcyBjdXJyZW50 bHkgbm8gc3VwcG9ydCBmb3IgImV4dGVuc2lvbg0Kb3B0aW9ucyIgd2hlbiBkZXJpdmluZyBhIGRl dmljZS4NCg0KV2hhdCBJIG1lYW50IGFib3ZlIGlzIHRoaXM6IA0KDQpBc3N1bWUgdGhpcyBwYXRj aHNldCB3b3VsZG4ndCBiZSBhcHBsaWVkLCBidXQgYSBwYXRjaHNldCB3b3VsZA0KYmUgYXBwbGll ZCB0aGF0IGFsbG93cyB0byBzcGVjaWZ5ICJleHRlbnNpb24gb3B0aW9ucyIuDQpUaGVuLCBldmVu IHdpdGhvdXQgdGhpcyBwYXRjaHNldCwgSSBjb3VsZCBjb25zdHJ1Y3QgYSBzaW1pbGFyIA0KZXhh bXBsZSwgd2hlcmUgeW91IHdvdWxkIGdldCB0aGUgc2FtZSBkZXZpY2Ugd2hlbiBkZXJpdmluZyAN CnR3byB0aW1lcyBmcm9tIHRoZSBzYW1lIGRldmljZSBidXQgd2l0aCBkaWZmZXJlbnQgZXh0ZW5z aW9uDQpvcHRpb25zLg0KDQpUaGF0J3Mgd2h5IEkgc2FpZDogeWVzLCBJIHVuZGVyc3RhbmQgdGhl IGNhc2UgeW91IGFyZSB0YWxraW5nDQphYm91dC4gQnV0IGl0IHdvdWxkIHJlcXVpcmUgdHdvIHNl cGFyYXRlIHBhdGNoZXMsIG9uZSBmb3INCmVuYWJsaW5nIGV4dGVuc2lvbiBvcHRpb25zIGFuZCBh bm90aGVyIG9uZSBmb3IgbWF0Y2hpbmcgDQpleHRlbnNpb24gb3B0aW9ucyB3aGVuIGRlcml2aW5n IGEgZGV2aWNlLiBUaGlzIHdvdWxkIG1ha2UNCnNlbnNlLCBidXQ6DQoNCkl0IGhhcyBub3RoaW5n IHRvIGRvIHdpdGggdGhpcyBwYXRjaHNldC4NCihpdCBjb3VsZCBiZSBkb25lIGJlZm9yZSBvciBh ZnRlcndhcmRzKQ0KDQpJJ20gb3BlbiB0byBkaXNjdXNzIHRoaXMgKHNlcGFyYXRlbHkpLCBiZWNh dXNlIGl0IG9wZW5zIHVwIA0KYSByYW5nZSBvZiBxdWVzdGlvbnMgaG93IGl0IGNvdWxkIGJlIGRv bmUuDQoNCj4gPj4+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvaHdjb250ZXh0LmMgYi9saWJhdnV0 aWwvaHdjb250ZXh0LmMNCj4gPj4+IGluZGV4IGFiOWFkMzcwM2UuLjFhZWE3ZGQ1YzMgMTAwNjQ0 DQo+ID4+PiAtLS0gYS9saWJhdnV0aWwvaHdjb250ZXh0LmMNCj4gPj4+ICsrKyBiL2xpYmF2dXRp bC9od2NvbnRleHQuYw0KPiA+Pj4gQEAgLTEyMyw2ICsxMjMsNyBAQCBzdGF0aWMgY29uc3QgQVZD bGFzcyBod2RldmljZV9jdHhfY2xhc3MgPSB7DQo+ID4+PiAgICBzdGF0aWMgdm9pZCBod2Rldmlj ZV9jdHhfZnJlZSh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgKmRhdGEpDQo+ID4+PiAgICB7DQo+ID4+ PiAgICAgICAgQVZIV0RldmljZUNvbnRleHQgKmN0eCA9IChBVkhXRGV2aWNlQ29udGV4dCopZGF0 YTsNCj4gPj4+ICsgICAgaW50IGk7DQo+ID4+Pg0KPiA+Pj4gICAgICAgIC8qIHVuaW5pdCBtaWdo dCBzdGlsbCB3YW50IGFjY2VzcyB0aGUgaHcgY29udGV4dCBhbmQgdGhlDQo+IHVzZXINCj4gPj4+ ICAgICAgICAgKiBmcmVlKCkgY2FsbGJhY2sgbWlnaHQgZGVzdHJveSBpdCwgc28gdW5pbml0IGhh cyB0byBiZQ0KPiA+PiBjYWxsZWQgZmlyc3QgKi8NCj4gPj4+IEBAIC0xMzMsNiArMTM0LDggQEAg c3RhdGljIHZvaWQgaHdkZXZpY2VfY3R4X2ZyZWUodm9pZCAqb3BhcXVlLA0KPiA+PiB1aW50OF90 ICpkYXRhKQ0KPiA+Pj4gICAgICAgICAgICBjdHgtPmZyZWUoY3R4KTsNCj4gPj4+DQo+ID4+PiAg ICAgICAgYXZfYnVmZmVyX3VucmVmKCZjdHgtPmludGVybmFsLT5zb3VyY2VfZGV2aWNlKTsNCj4g Pj4+ICsgICAgZm9yIChpID0gMDsgaSA8IEFWX0hXREVWSUNFX1RZUEVfTkI7IGkrKykNCj4gPj4+ ICsgICAgICAgIGF2X2J1ZmZlcl91bnJlZigmY3R4LT5pbnRlcm5hbC0+ZGVyaXZlZF9kZXZpY2Vz W2ldKTsNCj4gPj4+DQo+ID4+PiAgICAgICAgYXZfZnJlZXAoJmN0eC0+aHdjdHgpOw0KPiA+Pj4g ICAgICAgIGF2X2ZyZWVwKCZjdHgtPmludGVybmFsLT5wcml2KTsNCj4gPj4+IEBAIC02NDQsMTAg KzY0NywzMSBAQCBmYWlsOg0KPiA+Pj4gICAgICAgIHJldHVybiByZXQ7DQo+ID4+PiAgICB9DQo+ ID4+Pg0KPiA+Pj4gLWludCBhdl9od2RldmljZV9jdHhfY3JlYXRlX2Rlcml2ZWRfb3B0cyhBVkJ1 ZmZlclJlZg0KPiAqKmRzdF9yZWZfcHRyLA0KPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbnVtIEFWSFdEZXZpY2VUeXBlIHR5cGUsDQo+ID4+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWQnVmZmVyUmVmICpzcmNfcmVmLA0K PiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVkRpY3Rpb25h cnkgKm9wdGlvbnMsDQo+IGludA0KPiA+PiBmbGFncykNCj4gPj4+ICtzdGF0aWMgQVZCdWZmZXJS ZWYqIGZpbmRfZGVyaXZlZF9od2RldmljZV9jdHgoQVZCdWZmZXJSZWYNCj4gKnNyY19yZWYsDQo+ ID4+IGVudW0gQVZIV0RldmljZVR5cGUgdHlwZSkNCj4gPj4+ICt7DQo+ID4+PiArICAgIEFWQnVm ZmVyUmVmICp0bXBfcmVmOw0KPiA+Pj4gKyAgICBBVkhXRGV2aWNlQ29udGV4dCAqc3JjX2N0eDsN Cj4gPj4+ICsgICAgaW50IGk7DQo+ID4+PiArDQo+ID4+PiArICAgIHNyY19jdHggPSAoQVZIV0Rl dmljZUNvbnRleHQqKXNyY19yZWYtPmRhdGE7DQo+ID4+PiArICAgIGlmIChzcmNfY3R4LT50eXBl ID09IHR5cGUpDQo+ID4+PiArICAgICAgICByZXR1cm4gc3JjX3JlZjsNCj4gPj4+ICsNCj4gPj4+ ICsgICAgZm9yIChpID0gMDsgaSA8IEFWX0hXREVWSUNFX1RZUEVfTkI7IGkrKykNCj4gPj4+ICsg ICAgICAgIGlmIChzcmNfY3R4LT5pbnRlcm5hbC0+ZGVyaXZlZF9kZXZpY2VzW2ldKSB7DQo+ID4+ PiArICAgICAgICAgICAgdG1wX3JlZiA9IGZpbmRfZGVyaXZlZF9od2RldmljZV9jdHgoc3JjX2N0 eC0NCj4gPmludGVybmFsLQ0KPiA+Pj4gZGVyaXZlZF9kZXZpY2VzW2ldLCB0eXBlKTsNCj4gPj4+ ICsgICAgICAgICAgICBpZiAodG1wX3JlZikNCj4gPj4+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHRtcF9yZWY7DQo+ID4+PiArICAgICAgICB9DQo+ID4+PiArDQo+ID4+PiArICAgIHJldHVybiBO VUxMOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICtzdGF0aWMgaW50IGh3ZGV2aWNlX2N0eF9j cmVhdGVfZGVyaXZlZChBVkJ1ZmZlclJlZiAqKmRzdF9yZWZfcHRyLA0KPiA+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gQVZIV0RldmljZVR5cGUgdHlwZSwN Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVkJ1ZmZlclJl ZiAqc3JjX3JlZiwNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBBVkRpY3Rpb25hcnkgKm9wdGlvbnMsIGludA0KPiA+PiBmbGFncywNCj4gPj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ2V0X2V4aXN0aW5nKQ0KPiA+Pj4g ICAgew0KPiA+Pj4gICAgICAgIEFWQnVmZmVyUmVmICpkc3RfcmVmID0gTlVMTCwgKnRtcF9yZWY7 DQo+ID4+PiAgICAgICAgQVZIV0RldmljZUNvbnRleHQgKmRzdF9jdHgsICp0bXBfY3R4Ow0KPiA+ Pj4gQEAgLTY2Nyw2ICs2OTEsMTggQEAgaW50DQo+ID4+IGF2X2h3ZGV2aWNlX2N0eF9jcmVhdGVf ZGVyaXZlZF9vcHRzKEFWQnVmZmVyUmVmICoqZHN0X3JlZl9wdHIsDQo+ID4+PiAgICAgICAgICAg IHRtcF9yZWYgPSB0bXBfY3R4LT5pbnRlcm5hbC0+c291cmNlX2RldmljZTsNCj4gPj4+ICAgICAg ICB9DQo+ID4+Pg0KPiA+Pj4gKyAgICBpZiAoZ2V0X2V4aXN0aW5nKSB7DQo+ID4+PiArICAgICAg ICB0bXBfcmVmID0gZmluZF9kZXJpdmVkX2h3ZGV2aWNlX2N0eChzcmNfcmVmLCB0eXBlKTsNCj4g Pj4+ICsgICAgICAgIGlmICh0bXBfcmVmKSB7DQo+ID4+PiArICAgICAgICAgICAgZHN0X3JlZiA9 IGF2X2J1ZmZlcl9yZWYodG1wX3JlZik7DQo+ID4+PiArICAgICAgICAgICAgaWYgKCFkc3RfcmVm KSB7DQo+ID4+PiArICAgICAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsNCj4gPj4+ ICsgICAgICAgICAgICAgICAgZ290byBmYWlsOw0KPiA+Pj4gKyAgICAgICAgICAgIH0NCj4gPj4+ ICsgICAgICAgICAgICBnb3RvIGRvbmU7DQo+ID4+PiArICAgICAgICB9DQo+ID4+PiArICAgIH0N Cj4gPj4+ICsNCj4gPj4+ICAgICAgICBkc3RfcmVmID0gYXZfaHdkZXZpY2VfY3R4X2FsbG9jKHR5 cGUpOw0KPiA+Pj4gICAgICAgIGlmICghZHN0X3JlZikgew0KPiA+Pj4gICAgICAgICAgICByZXQg PSBBVkVSUk9SKEVOT01FTSk7DQo+ID4+PiBAQCAtNjg4LDYgKzcyNCwxMyBAQCBpbnQNCj4gPj4g YXZfaHdkZXZpY2VfY3R4X2NyZWF0ZV9kZXJpdmVkX29wdHMoQVZCdWZmZXJSZWYgKipkc3RfcmVm X3B0ciwNCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9NRU0p Ow0KPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+ID4+PiAgICAgICAg ICAgICAgICAgICAgfQ0KPiA+Pj4gKyAgICAgICAgICAgICAgICBpZiAoIXRtcF9jdHgtPmludGVy bmFsLT5kZXJpdmVkX2RldmljZXNbdHlwZV0pIHsNCj4gPj4NCj4gPj4gSSB3b25kZXIgd2hldGhl ciB5b3Ugb25seSB3YW50IHRvIGRvIHRoaXMgd2hlbiB0aGUgdXNlciBtYWRlIHRoZQ0KPiBuZXcN Cj4gPj4gY2FsbCwgbm90IHRoZSBvbGQgb25lPw0KPiA+Pg0KPiA+PiBUaGUgc2VtYW50aWNzIHdv dWxkIHBlcmhhcHMgZmVlbCBjbGVhcmVyIGFzICJnZXQgb3IgY3JlYXRlIHRoZQ0KPiBzaGFyZWQN Cj4gPj4gZGVyaXZlZCBkZXZpY2UiIHJhdGhlciB0aGFuICJnZXQgdGhlIGZpcnN0IGRldmljZSBk ZXJpdmVkIG9yIGNyZWF0ZQ0KPiBhDQo+ID4+IG5ldyBvbmUgaWYgbm90Ii4NCj4gPg0KPiA+IEkn dmUgYmVlbiB0aGVyZSBmb3IgYSBtb21lbnQsIGFuZCB0aGVuIEkgdGhvdWdodCB0aGF0IHdoZW4g dGhlIEFQSQ0KPiA+IGNvbnN1bWVyIHdvdWxkIG1peCBBUEkgY2FsbHMsIGUuZy4gZmlyc3Qgd2l0 aG91dCAnZ2V0JyBhbmQgc2Vjb25kDQo+ID4gd2l0aCAnZ2V0JywgdGhlbiB0aGUgc2Vjb25kIGNh bGwgd291bGQgbm90IHByb2R1Y2UgdGhlIGV4cGVjdGVkDQo+ID4gcmVzdWx0Lg0KPiA+DQo+ID4g TGV0IG1lIGtub3cgd2hhdCB5b3UgdGhpbmssIEkgaGF2ZSBubyBzdHJvbmcgb3BpbmlvbiBhYm91 dCB0aGlzLg0KPiANCj4gQ2FuIHlvdSBleHBsYWluIHlvdXIgZXhhbXBsZSBmdXJ0aGVyPw0KDQpN YXliZSB3ZSBzaG91bGQgZ2V0IGNsZWFyIGFib3V0IHdoYXQgdGhpcyBwYXRjaHNldCBkb2VzIGV4 YWN0bHkuDQpMZXQncyBsb29rIGF0IHRoZSBmb2xsb3dpbmcgZGVyaXZhdGlvbiBjaGFpbiBvZiBk ZXZpY2VzOg0KDQpBDQrilJzilIAgWA0K4pSCICDilJTilIAgWQ0K4pSc4pSAIEINCuKUgiAg4pSU 4pSAIEMNCuKUlOKUgCBWDQogICDilJTilIAgVw0KDQpUaGUgbWVhbmluZyBpczogDQoNCi0gWSBp cyBkZXJpdmVkIGZyb20gWCwgWCBpcyBkZXJpdmVkIGZyb20gQQ0KLSBDIGlzIGRlcml2ZWQgZnJv bSBCLCBCIGlzIGRlcml2ZWQgZnJvbSBBDQotIFcgaXMgZGVyaXZlZCBmcm9tIFYsIFYgaXMgZGVy aXZlZCBmcm9tIEENCg0KSW4gdGhlIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uLCBlYWNoIGRldmlj ZSAia25vd3MiIGl0cyBwYXJlbnQNCih2aWEgdGhlICdzb3VyY2VfZGV2aWNlJyBmaWVsZCkuDQoN CldoZW4geW91IGNhbGwgYXZfaHdkZXZpY2VfY3R4X2NyZWF0ZV9kZXJpdmVkKCkgYW5kIHNwZWNp ZnkgIkMiDQphcyB0aGUgc291cmNlIGRldmljZSwgdGhlbiBpdCB3aWxsIGl0ZXJhdGUgdGhlIHRy ZWUgdXB3YXJkcywNCnNvIHdoZW4gQiBpcyBvZiB0aGUgcmVxdWVzdGVkIHR5cGUsIGl0IHdpbGwg cmV0dXJuIEIgb3IgaWYNCkEgaXMgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLCBpdCB3aWxsIHJldHVy biBBLg0KT3RoZXJ3aXNlLCBpdCB3aWxsIGNyZWF0ZSBhIG5ldyBkZXZpY2Ugb2YgdGhlIHJlcXVl c3RlZCB0eXBlDQphbmQgc2V0cyBDIGFzIGl0cyBwYXJlbnQuDQoNCkJ1dCBpdCBkb2Vzbid0IHJl dHVybiBYLCBZLCBWIG9yIFcgKHdoZW4gYW55IHdvdWxkIG1hdGNoIHRoZQ0KcmVxdWVzdGVkIHR5 cGUpLg0KDQpUaGlzIGlzIHRoZSBjdXJyZW50IGJlaGF2aW9yLg0KDQoNCldoYXQgdGhpcyBwYXRj aHNldCBkb2VzIGlzIHRoYXQgd2UgYWxzbyBzdG9yZSB0aGUgZGVyaXZlZCANCmNoaWxkcmVuIGZv ciBlYWNoIGRldmljZSAoZGVyaXZlZF9kZXZpY2VzIGFycmF5KS4NCg0KSW4gdGhlIGV4YW1wbGUg YWJvdmUsIGl0IG1lYW5zIGhhdCBBIGhhcyByZWZlcmVuY2VzIHRvIA0KWCwgQiBhbmQgVi4gWCB0 byBZLCBCIHRvIEMgYW5kIFYgdG8gVy4NCg0KVGhlIGJlaGF2aW9yIG9mIHRoZSBuZXcgZnVuY3Rp b24gaXMgYXMgZm9sbG93czoNCg0KV2hlbiB5b3UgY2FsbCBhdl9od2RldmljZV9jdHhfZ2V0X29y X2NyZWF0ZV9kZXJpdmVkKCkgYW5kIHNwZWNpZnkgIkMiDQphcyB0aGUgc291cmNlIGRldmljZSwg dGhlbiBpdCB3aWxsIGl0ZXJhdGUgdGhlIHRyZWUgdXB3YXJkcywNCnNvIHdoZW4gQiBpcyBvZiB0 aGUgcmVxdWVzdGVkIHR5cGUsIGl0IHdpbGwgcmV0dXJuIEIgb3IgaWYNCkEgaXMgb2YgdGhlIHJl cXVlc3RlZCB0eXBlLCBpdCB3aWxsIHJldHVybiBBIChsaWtlIGJlZm9yZSkuDQoNCkFkZGl0aW9u YWxseSwgaXQgd2lsbCBhbHNvIGl0ZXJhdGUgYWxsIHRocm91Z2ggb3RoZXIgY2hpbGRyZW4gDQpv ZiBCIGFuZCBvdGhlciBjaGlsZHJlbiBvZiBBLiBXaGljaCBtZWFucyB0aGF0IGlmIFgsIFksIFYg b3IgVw0KbWF0Y2hlcyB0aGUgcmVxdWVzdGVkIHR5cGUsIGl0IHdvdWxkIHJldHVybiBpdC4NCg0K T3RoZXJ3aXNlLCBpdCB3aWxsIGNyZWF0ZSBhIG5ldyBkZXZpY2Ugb2YgdGhlIHJlcXVlc3RlZCB0 eXBlDQphbmQgc2V0cyBDIGFzIGl0cyBwYXJlbnQuDQoNClRoaXMgaXMgdGhlIGJlaGF2aW9yIG9m IHRoZSBuZXcgZnVuY3Rpb24uDQpBbGwgdGhhdCBpdCBjaGFuZ2VzIGlzIHRoYXQgaXQgc2VhcmNo ZXMgdGhlIGZ1bGwgdHJlZSBpbnN0ZWFkDQpvZiB0aGUgcGFyZW50cyBvbmx5Lg0KDQoNCk5vdyBi YWNrIHRvIHlvdXIgb3JpZ2luYWwgcXVlc3Rpb246DQoNCj4+PiArICAgICAgICAgICAgICAgIGlm ICghdG1wX2N0eC0+aW50ZXJuYWwtPmRlcml2ZWRfZGV2aWNlc1t0eXBlXSkgew0KPj4NCj4+IEkg d29uZGVyIHdoZXRoZXIgeW91IG9ubHkgd2FudCB0byBkbyB0aGlzIHdoZW4gdGhlIHVzZXIgbWFk ZSB0aGUgbmV3DQo+PiBjYWxsLCBub3QgdGhlIG9sZCBvbmU/DQo+Pg0KPj4gVGhlIHNlbWFudGlj cyB3b3VsZCBwZXJoYXBzIGZlZWwgY2xlYXJlciBhcyAiZ2V0IG9yIGNyZWF0ZSB0aGUgc2hhcmVk DQo+PiBkZXJpdmVkIGRldmljZSIgcmF0aGVyIHRoYW4gImdldCB0aGUgZmlyc3QgZGV2aWNlIGRl cml2ZWQgb3IgY3JlYXRlIGENCj4+IG5ldyBvbmUgaWYgbm90Ii4NCg0KVGhlIGxpbmUgb2YgY29k ZSB5b3UgY29tbWVudGVkIG9uLCBpcyBhYm91dCBhZGRpbmcgYSBuZXdseSBjcmVhdGVkDQpkZXJp dmVkIGRldmljZSB0byB0aGUgY2hpbGQgY29sbGVjdGlvbiBvZiBpdHMgcGFyZW50Lg0KDQo+PiBJ IHdvbmRlciB3aGV0aGVyIHlvdSBvbmx5IHdhbnQgdG8gZG8gdGhpcyB3aGVuIHRoZSB1c2VyIG1h ZGUgdGhlIG5ldw0KPj4gY2FsbCwgbm90IHRoZSBvbGQgb25lPw0KDQpUaGUgZGlmZmVyZW5jZSBi ZXR3ZWVuIG9sZCBhbmQgbmV3IGlzIHRoYXQgb2xkIHNlYXJjaGVzIG9ubHkgcGFyZW50cw0KYW5k IG5ldyBzZWFyY2hlcyB0aGUgZnVsbCB0cmVlLg0KQnV0IHNob3VsZCBjYWxsaW5nIHRoZSBvbGQg ZnVuY3Rpb24gYWxzbyBjb250cm9sIHdoZXRoZXIgYSBuZXdseSBjcmVhdGVkDQpkZXJpdmVkIGRl dmljZSBpcyBhZGRlZCB0byB0aGUgY2hpbGQgY29sbGVjdGlvbiBvZiBpdHMgcGFyZW50Pw0KDQpJ dCBtaWdodCBiZSBjb25mdXNpbmcgYmVoYXZpb3Igd2hlbiB5b3UgZmlyc3QgY2FsbCB0aGUgb2xk IGZ1bmN0aW9uDQphbmQgbGF0ZXIgY2FsbCB0aGUgbmV3IGZ1bmN0aW9uIGJ1dCB5b3Ugd291bGQg Z2V0IHRoZSBkZXZpY2Ugb25seQ0Kd2hlbiBpdCdzIGEgcGFyZW50IGJ1dCBub3Qgd2hlbiBpdCdz IGEgZG93bi10cmVlLWNoaWxkIG9mIGFueSBwYXJlbnQuDQoNCkFuZCB0aGF0J3Mgd2hlcmUgSSBz YWlkOg0KDQo+IExldCBtZSBrbm93IHdoYXQgeW91IHRoaW5rLCBJIGhhdmUgbm8gc3Ryb25nIG9w aW5pb24gYWJvdXQgdGhpcy4NCg0KQmVzdCByZWdhcmRzLA0Kc29mdHdvcmt6DQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGlu ZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUs IG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1 bnN1YnNjcmliZSIuCg==