From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id A723C4DFF8 for ; Sat, 10 Jan 2026 20:04:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1768075453; h=date : to : message-id : references : mime-version : in-reply-to : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=6Qqq7FNG2SGMbrmxe71hxT0HQHzzdpqgWPAAcL7XrSg=; b=xywa5vNCGmv8owAV7+aLHoVZjKP4hY6Ww880zh0FqXoG3+DK5tmWXNhUmtj7ladx+OB/e UuPtawnhozvuthKzdj0zgZIWN+W/KJoM6uOuPRt9AAjX0/Fzr2+bNpwMkrwaeBTp/se/0iR 6UgMLMhjg5/KFjKFG9bZZbLPdvNSeGQ0wfbfSElFn6Y5jV70q3NtB34uianK6f8K1t6lYgE eRfIofI1osnLRpK3NVEdDOLI2QvuS44qUCdvPYIaGAUdKc7m+MJ5Y73cOUwCkbnfu7mXXn5 LEHQsM1opfGDb4cGubG6buJO/mBU9v6OOAMhnW7zGOFLnb1Ur1WdwDzcIQqA== Received: from [172.20.0.4] (unknown [172.20.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 4C36D690DB3; Sat, 10 Jan 2026 22:04:13 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1768075435; b=Cqcy45mRuPqyBp6brFrgB3SE77WJpg6GPYKeS2OjhpaqHWalts0YlHv4xxizHfl4+z893 sOi5/GE0CThlp4b5RAoLrruNsovdVO/l8c0Sky5ToPtn5HWbH2loW1GSP5djefEpVyl9+hW Wj9eYfYgIMTbsFzkicVDfC2aYv0+gZ990+KcEu5uL8TSG90t3Y7SDI34SvCGjEhH1jUlBKD lol5AEkfIm4BGtoVPp5CaDSJA3f5bmGNa8U3icBqHab4MtvUcC9gayOgTMlYmHGvV6/F7r3 Cb474lnNQavnJw4fb+PAoPgaP0eT3Hvf71Yd1sPajeuv+JzrZ/OiRX/Dn6eA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1768075435; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=6Qqq7FNG2SGMbrmxe71hxT0HQHzzdpqgWPAAcL7XrSg=; b=LA+VFgWZPVLPHpDEHqgDtumOCDdmvD37iTjjOauDbJjrSx4FFARSPgkp7/Q8f7osv01fB 2s2h7rFgGfjkPTRvxOmKwn6aw5BTi1VtBJF2ICREJIgUS3gTZjiy0qjIR3w37fVTxBVLUsf 32l6PRdzqd7mrhbXesGgjM1/xQ1gQRmItEETNy9IKUXNfer8t5lcyjxlMXgwxZaJ2/gEtOI ee7P7sMnWvmgGHiafuFYIrB7N1ViCdGUKTN6qGarQTipLtVbe3kZHrFFi4wkR28EjX2MtHg AOLoiq5hmV5SZIfGCwCi7hhViDKISkvhMGV3T0v1SZ0zCX6GTogzBy/Cmbgg== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=fail; arc=none; dmarc=none Authentication-Results: ffmpeg.org; dkim=fail; arc=none (Message is not ARC signed); dmarc=none Received: from nef.ens.fr (nef2.ens.fr [129.199.96.40]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 33EBF690D11 for ; Sat, 10 Jan 2026 22:03:41 +0200 (EET) X-ENS-nef-client: 129.199.129.80 ( name = phare.normalesup.org ) Received: from phare.normalesup.org (phare.normalesup.org [129.199.129.80]) by nef.ens.fr (8.14.4/1.01.28121999) with ESMTP id 60AK3dfL002702 ; Sat, 10 Jan 2026 21:03:39 +0100 Received: by phare.normalesup.org (Postfix, from userid 1001) id 309662EFDF; Sat, 10 Jan 2026 21:03:39 +0100 (CET) Date: Sat, 10 Jan 2026 21:03:39 +0100 To: FFmpeg development discussions and patches Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.4.3 (nef.ens.fr [129.199.96.32]); Sat, 10 Jan 2026 21:03:39 +0100 (CET) Message-ID-Hash: RIY6VJ7UX26NFH73UJNHA3NZQD6ZXGIJ X-Message-ID-Hash: RIY6VJ7UX26NFH73UJNHA3NZQD6ZXGIJ X-MailFrom: SRS0=tYNf=7P=phare.normalesup.org=george@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] Re: [PATCH RFC] libavfilter: expose expression variable metadata via AVFilter struct List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Nicolas George via ffmpeg-devel Cc: Len Woodward , Nicolas George Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Archived-At: List-Archive: List-Post: TGVuIFdvb2R3YXJkIHZpYSBmZm1wZWctZGV2ZWwgKEhFMTIwMjYtMDEtMDkpOg0KPiAjIyBQcmlv ciBEaXNjdXNzaW9uDQo+IA0KPiBBIHNlYXJjaCBvZiB0aGUgbWFpbGluZyBsaXN0IGFyY2hpdmVz IGZvdW5kIG5vIHByaW9yIHByb3Bvc2FscyBmb3IgdGhpcw0KPiBzcGVjaWZpYyBmZWF0dXJlLiBU aGUgY2xvc2VzdCByZWxhdGVkIGRpc2N1c3Npb24gaXMgdGhlIFsyMDEzIFNjcmlwdGluZw0KPiBS RkNdKGh0dHBzOi8vZmZtcGVnLm9yZy9waXBlcm1haWwvZmZtcGVnLWRldmVsLzIwMTMtTm92ZW1i ZXIvMTUxMDY5Lmh0bWwpLA0KPiB3aGljaCByYWlzZWQgdGhlIGJyb2FkZXIgY2hhbGxlbmdlIG9m IGJpbmRpbmcgdGhlIGxhdmZpIEFQSSB0byBvdGhlcg0KPiBsYW5ndWFnZXMuIFRoaXMgcHJvcG9z YWwgYWRkcmVzc2VzIG9uZSBuYXJyb3cgYXNwZWN0IG9mIHRoYXQ6IG1ha2luZyBmaWx0ZXINCj4g ZXhwcmVzc2lvbiB2YXJpYWJsZXMgZGlzY292ZXJhYmxlLg0KPiANCj4gIyMgUHJvYmxlbQ0KPiAN Cj4gRmlsdGVycyBsaWtlIGBkcmF3dGV4dGAsIGBnZXFgLCBhbmQgYG92ZXJsYXlgIGFjY2VwdCBl eHByZXNzaW9ucw0KPiByZWZlcmVuY2luZyB2YXJpYWJsZXMgc3VjaCBhcyBgd2AsIGBoYCwgYHRg LCBgbmAsIGV0Yy4gVGhlc2UgdmFyaWFibGVzIGFyZQ0KPiBkb2N1bWVudGVkIGluIEZGbXBlZydz IG9mZmljaWFsIGRvY3VtZW50YXRpb24gYW5kIHVzZWQgaW4gY291bnRsZXNzIGZpbHRlcg0KPiBz dHJpbmdzIHdvcmxkd2lkZeKAlGJ1dCB0aGV5J3JlIG5vdCBwcm9ncmFtbWF0aWNhbGx5IGRpc2Nv dmVyYWJsZS4NCj4gDQo+IEFwcGxpY2F0aW9ucyBidWlsZGluZyBmaWx0ZXIgZ3JhcGhzIHByb2dy YW1tYXRpY2FsbHkgKEdVSXMsIGxhbmd1YWdlDQo+IGJpbmRpbmdzLCB2aWRlbyBlZGl0b3JzKSBj dXJyZW50bHkgbXVzdCBkdXBsaWNhdGUgRkZtcGVnJ3MgaW50ZXJuYWwNCj4gYHZhcl9uYW1lc2Ag YXJyYXlzIGFuZCBtYW51YWxseSBrZWVwIHRoZW0gaW4gc3luYy4gVGhpcyBpcyBmcmFnaWxlIGFu ZA0KPiBjcmVhdGVzIG1haW50ZW5hbmNlIGJ1cmRlbiBhY3Jvc3MgdGhlIGVjb3N5c3RlbS4NCj4g DQo+ICMjIFdoeSBUaGVzZSBBcmUgQWxyZWFkeSBTdGFibGUgQVBJDQo+IA0KPiBUaGVzZSB2YXJp YWJsZXMgYXJlIGRvY3VtZW50ZWQsIHVzZXItZmFjaW5nLCBhbmQgY2Fubm90IGJlIGNoYW5nZWQg d2l0aG91dA0KPiBicmVha2luZyBleGlzdGluZyBmaWx0ZXIgc3RyaW5ncy4gVGhlIHN0YWJpbGl0 eSBjb250cmFjdCBhbHJlYWR5DQo+IGV4aXN0c+KAlHRoaXMgcHJvcG9zYWwgc2ltcGx5IGV4dGVu ZHMgcHJvZ3JhbW1hdGljIGFjY2VzcyB0byBtYXRjaCB3aGF0DQo+IHN0cmluZy1iYXNlZCB1c2Vy cyBhbHJlYWR5IGhhdmUuDQo+IA0KPiAjIyBQcm9wb3NlZCBTb2x1dGlvbg0KPiANCj4gQWRkIGFu IGBleHByZXNzaW9uX3ZhcnNgIGZpZWxkIHRvIHRoZSBgQVZGaWx0ZXJgIHN0cnVjdCwgZm9sbG93 aW5nIHRoZQ0KPiBwYXR0ZXJuIGVzdGFibGlzaGVkIGJ5IGBBVk9wdGlvbmAgZm9yIGZpbHRlciBv cHRpb25zLg0KDQpIaS4gSSB0aGluayBpdCBpcyBhbiBleGNlbGxlbnQgaWRlYS4gU2VlIGNvbW1l bnRzIGJlbG93Lg0KDQo+IA0KPiAqKlB1YmxpYyBBUEkgYWRkaXRpb24gKGF2ZmlsdGVyLmgpOioq DQo+IA0KPiBgYGBjDQo+IHR5cGVkZWYgc3RydWN0IEFWRmlsdGVyRXhwclZhciB7DQo+ICAgICBj b25zdCBjaGFyICpuYW1lOyAgICAvKiBWYXJpYWJsZSBuYW1lIChlLmcuLCAidGV4dF93IikgKi8N Cj4gICAgIGNvbnN0IGNoYXIgKmhlbHA7ICAgIC8qIERlc2NyaXB0aW9uIChlLmcuLCAiV2lkdGgg b2YgcmVuZGVyZWQgdGV4dCIpICovDQo+IH0gQVZGaWx0ZXJFeHByVmFyOw0KDQpGaWx0ZXJzIGFy ZSB0aGUgbWFpbiB1c2VycyBvZiBleHByZXNzaW9ucyBhbmQgdmFyaWFibGVzLCBidXQgdGhleSBh cmUNCm5vdCB0aGUgb25seSBvbmVzLiBUaGVyZWZvcmUsIEkgdGhpbmsgdGhpcyBBUEkgc2hvdWxk IGV4aXN0IGluDQpsaWJhdnV0aWwsIG5vdCBsaWJhdmZpbHRlci4NCg0KPiANCj4gdHlwZWRlZiBz dHJ1Y3QgQVZGaWx0ZXIgew0KPiAgICAgLy8gLi4uIGV4aXN0aW5nIGZpZWxkcyAuLi4NCj4gDQo+ ICAgICAvKioNCj4gICAgICAqIE5VTEwtdGVybWluYXRlZCBhcnJheSBvZiBleHByZXNzaW9uIHZh cmlhYmxlcyBhY2NlcHRlZCBieSB0aGlzDQo+IGZpbHRlciwNCj4gICAgICAqIG9yIE5VTEwgaWYg dGhlIGZpbHRlciBkb2VzIG5vdCB1c2UgZXhwcmVzc2lvbiBldmFsdWF0aW9uLg0KPiAgICAgICov DQo+ICAgICBjb25zdCBBVkZpbHRlckV4cHJWYXIgKmV4cHJlc3Npb25fdmFyczsNCj4gfSBBVkZp bHRlcjsNCj4gYGBgDQo+IA0KPiAqKkZpbHRlciBpbXBsZW1lbnRhdGlvbiAoZS5nLiwgdmZfZHJh d3RleHQuYyk6KioNCj4gDQo+IGBgYGMNCj4gLy8gRXhpc3RpbmcgYXJyYXkgLSB1bmNoYW5nZWQs IHVzZWQgaW50ZXJuYWxseSBieSBhdl9leHByX3BhcnNlKCksDQo+IC8vIGZmX3ByaW50X2V2YWxf ZXhwcigpLCBhbmQgb3RoZXIgaW50ZXJuYWwgZnVuY3Rpb25zDQo+IHN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCB2YXJfbmFtZXNbXSA9IHsNCj4gICAgICJkYXIiLCAiaCIsICJ3IiwgIm4iLCAidCIs ICJ0ZXh0X2giLCAidGV4dF93IiwNCj4gICAgIC8vIC4uLg0KPiAgICAgTlVMTA0KPiB9Ow0KPiAN Cj4gLy8gTmV3IGFycmF5IC0gcHVibGljIG1ldGFkYXRhIHdpdGggZG9jdW1lbnRhdGlvbg0KPiBz dGF0aWMgY29uc3QgQVZGaWx0ZXJFeHByVmFyIGRyYXd0ZXh0X2V4cHJfdmFyc1tdID0gew0KPiAg ICAgeyAiZGFyIiwgICAgIkRpc3BsYXkgYXNwZWN0IHJhdGlvIiB9LA0KPiAgICAgeyAiaCIsICAg ICAgIlZpZGVvIGhlaWdodCIgfSwNCj4gICAgIHsgInciLCAgICAgICJWaWRlbyB3aWR0aCIgfSwN Cj4gICAgIHsgIm4iLCAgICAgICJGcmFtZSBudW1iZXIgKHN0YXJ0aW5nIGF0IDApIiB9LA0KPiAg ICAgeyAidCIsICAgICAgIlRpbWVzdGFtcCBpbiBzZWNvbmRzIiB9LA0KPiAgICAgeyAidGV4dF9o IiwgIkhlaWdodCBvZiByZW5kZXJlZCB0ZXh0IiB9LA0KPiAgICAgeyAidGV4dF93IiwgIldpZHRo IG9mIHJlbmRlcmVkIHRleHQiIH0sDQo+ICAgICAvLyAuLi4NCj4gICAgIHsgTlVMTCB9DQo+IH07 DQo+IA0KPiBjb25zdCBBVkZpbHRlciBmZl92Zl9kcmF3dGV4dCA9IHsNCj4gICAgIC5uYW1lICAg ICAgICAgICAgPSAiZHJhd3RleHQiLA0KPiAgICAgLy8gLi4uIGV4aXN0aW5nIGZpZWxkcyAuLi4N Cj4gICAgIC5leHByZXNzaW9uX3ZhcnMgPSBkcmF3dGV4dF9leHByX3ZhcnMsDQo+IH07DQo+IGBg YA0KPiANCj4gKipBcHBsaWNhdGlvbiB1c2FnZToqKg0KPiANCj4gYGBgYw0KPiBjb25zdCBBVkZp bHRlciAqZiA9IGF2ZmlsdGVyX2dldF9ieV9uYW1lKCJkcmF3dGV4dCIpOw0KPiBpZiAoZi0+ZXhw cmVzc2lvbl92YXJzKSB7DQo+ICAgICBmb3IgKGNvbnN0IEFWRmlsdGVyRXhwclZhciAqdiA9IGYt PmV4cHJlc3Npb25fdmFyczsgdi0+bmFtZTsgdisrKQ0KPiAgICAgICAgIHByaW50ZigiICAlcyAt ICVzXG4iLCB2LT5uYW1lLCB2LT5oZWxwKTsNCj4gfQ0KPiBgYGANCj4gDQo+ICMjIFdoeSBUaGlz IEFwcHJvYWNoDQo+IA0KPiAxLiAqKkZvbGxvd3MgZXN0YWJsaXNoZWQgcHJlY2VkZW50Kio6IE1p cnJvcnMgaG93IGBBVk9wdGlvbmAgZXhwb3NlcyBmaWx0ZXINCj4gb3B0aW9ucy4gRGV2ZWxvcGVy cyBhbHJlYWR5IHVuZGVyc3RhbmQgdGhpcyBwYXR0ZXJuLg0KPiAyLiAqKkRpc2NvdmVyYWJsZSoq OiBHaXZlbiBhbnkgYEFWRmlsdGVyKmAsIGNoZWNrIGlmIGl0IGhhcyBleHByZXNzaW9uDQo+IHZh cmlhYmxlcy4gTm8gbmVlZCBmb3IgcGVyLWZpbHRlciBzeW1ib2wga25vd2xlZGdlLg0KPiAzLiAq KlNlbGYtZG9jdW1lbnRpbmcqKjogSGVscCB0ZXh0IChhbHJlYWR5IHdyaXR0ZW4gaW4gYC50ZXhp YCBmaWxlcykNCj4gYmVjb21lcyBtYWNoaW5lLXJlYWRhYmxlLg0KPiA0LiAqKlB1cmVseSBhZGRp dGl2ZSoqOiBFeGlzdGluZyBpbnRlcm5hbCBmdW5jdGlvbnMgKGBhdl9leHByX3BhcnNlKClgLA0K PiBgZmZfcHJpbnRfZXZhbF9leHByKClgLCBgZmZfcHJpbnRfZm9ybWF0dGVkX2V2YWxfZXhwcigp YCwgZXRjLikgY29udGludWUNCj4gdXNpbmcgYHZhcl9uYW1lc2AgdW5jaGFuZ2VkLiBObyBzaWdu YXR1cmUgY2hhbmdlcywgbm8gcmlzayB0byBleGlzdGluZyBjb2RlDQo+IHBhdGhzLg0KPiA1LiAq Kk1pbm9yIHJlbGVhc2UgY29tcGF0aWJsZSoqOiBUaGlzIGNhbiBsYW5kIGluIGEgbWlub3IgcmVs ZWFzZSBzaW5jZSBpdA0KPiBhZGRzIGZ1bmN0aW9uYWxpdHkgd2l0aG91dCBtb2RpZnlpbmcgZXhp c3RpbmcgYmVoYXZpb3IuDQoNCj4gNi4gKipFeHRlbnNpYmxlKio6IFRoZSBzdHJ1Y3QgY2FuIGxh dGVyIGdhaW4gZmllbGRzICh0eXBlIGhpbnRzLCBmbGFncykNCj4gd2l0aG91dCBicmVha2luZyB1 c2Vycy4NCg0KWW91IGFyZSBtaXN0YWtlbiBvbiB0aGlzIHBvaW50OiBhZGRpbmcgZmllbGRzIHRv IHRoZSBzdHJ1Y3R1cmUgd291bGQgYmUNCmNvbXBhdGlibGUgYXQgdGhlIEFQSSBsZXZlbCBidXQg YXQgdGhlIEFCSSBsZXZlbCBpdCB3b3VsZCBpbnZhbGlkYXRlIHRoZQ0K4oCcdisr4oCdIGluIHRo ZSBsb29wIGluIOKAnGFwcGxpY2F0aW9uIHVzYWdl4oCdIGFib3ZlLg0KDQpUaGF0IGNhbiBiZSBm aXhlZCBieSB1c2luZyBhIGZ1bmN0aW9uIHRvIGFjY2VzcyBlYWNoIGVsZW1lbnQsIHNvbWV0aGlu Zw0KbGlrZSDigJxhdl9leHByX2dldF92YXJpYWJsZShleHByY3R4LCBpbmRleCnigJ0uIFNpbmNl IHdlIGFyZSBpbiB0aGUNCnByb3hpbWl0eSBvZiBwYXJzaW5nIGFuZCBldmFsdWF0aW5nIGFuIGV4 cHJlc3Npb24sIHRoZSBvdmVyaGVhZCBpcyBub3QgYQ0KY29uY2Vybi4NCg0KPiANCj4gIyMgT24g QXJyYXkgRHVwbGljYXRpb24NCj4gDQo+IFllcywgdGhpcyBtZWFucyBmaWx0ZXJzIGhhdmUgdHdv IGFycmF5cyB3aXRoIG92ZXJsYXBwaW5nIGNvbnRlbnQuIFRoaXMgaXMNCj4gaW50ZW50aW9uYWw6 DQo+IA0KPiAtIEJvdGggYXJyYXlzIGxpdmUgaW4gdGhlIHNhbWUgZmlsZSwgYWRqYWNlbnQgdG8g ZWFjaCBvdGhlcuKAlGRyaWZ0IGlzIGVhc3kNCj4gdG8gc3BvdCBkdXJpbmcgcmV2aWV3DQo+IC0g VGhlIGV4aXN0aW5nIGB2YXJfbmFtZXNgIGFycmF5IGlzIHVzZWQgYnkgbXVsdGlwbGUgaW50ZXJu YWwgZnVuY3Rpb25zOw0KPiBjaGFuZ2luZyBhbGwgb2YgdGhlbSBpcyBhIGxhcmdlciB1bmRlcnRh a2luZyBiZXR0ZXIgc3VpdGVkIGZvciBhIG1ham9yDQo+IHJlbGVhc2UNCj4gLSBUaGUgY29zdCBp cyBhIGZldyBodW5kcmVkIGJ5dGVzIG9mIHN0YXRpYyBzdG9yYWdlIHBlciBmaWx0ZXINCj4gDQo+ IElmIHNvdXJjZS1sZXZlbCBkdXBsaWNhdGlvbiBpcyBhIGNvbmNlcm4sIGFuIFgtbWFjcm8gY2Fu IGdlbmVyYXRlIGJvdGgNCj4gYXJyYXlzIGZyb20gYSBzaW5nbGUgZGVmaW5pdGlvbjoNCj4gDQo+ IGBgYGMNCj4gI2RlZmluZSBEUkFXVEVYVF9FWFBSX1ZBUlMgXA0KPiAgICAgWCgiZGFyIiwgICAg IkRpc3BsYXkgYXNwZWN0IHJhdGlvIikgXA0KPiAgICAgWCgiaCIsICAgICAgIlZpZGVvIGhlaWdo dCIpIFwNCj4gICAgIFgoInciLCAgICAgICJWaWRlbyB3aWR0aCIpDQo+ICAgICAvLyAuLi4NCj4g DQo+ICNkZWZpbmUgWChuYW1lLCBoZWxwKSBuYW1lLA0KPiBzdGF0aWMgY29uc3QgY2hhciAqY29u c3QgdmFyX25hbWVzW10gPSB7IERSQVdURVhUX0VYUFJfVkFSUyBOVUxMIH07DQo+ICN1bmRlZiBY DQo+IA0KPiAjZGVmaW5lIFgobmFtZSwgaGVscCkgeyBuYW1lLCBoZWxwIH0sDQo+IHN0YXRpYyBj b25zdCBBVkZpbHRlckV4cHJWYXIgZHJhd3RleHRfZXhwcl92YXJzW10gPSB7IERSQVdURVhUX0VY UFJfVkFSUyB7DQo+IE5VTEwgfSB9Ow0KPiAjdW5kZWYgWA0KPiBgYGANCj4gDQo+IFRoaXMgZWxp bWluYXRlcyBhbnkgcG9zc2liaWxpdHkgb2YgZHJpZnQgYmV0d2VlbiBhcnJheXMuIEVpdGhlciBh cHByb2FjaA0KPiB3b3Jrc+KAlG1haW50YWluZXIgcHJlZmVyZW5jZS4NCj4gDQoNCj4gQSBmdXR1 cmUgbWFqb3IgcmVsZWFzZSBjb3VsZCBjb25zb2xpZGF0ZSB0byBhIHNpbmdsZSBhcnJheSBieSB1 cGRhdGluZw0KPiBpbnRlcm5hbCBmdW5jdGlvbnMgdG8gYWNjZXB0IGBBVkZpbHRlckV4cHJWYXIq YCwgYnV0IHRoYXQncyBhIHNlcGFyYXRlLA0KPiBsYXJnZXIgZWZmb3J0LiBUaGlzIHByb3Bvc2Fs IGRlbGl2ZXJzIHZhbHVlIG5vdyB3aXRob3V0IHRoYXQgc2NvcGUuDQoNCkkgYWdyZWUsIHRoZSBB VkV4cHIgQVBJIG5lZWRzIHRvIGJlIGNsZWFuZWQgdXAgYW5kIGl0IHdvdWxkIHRha2UgY2FyZSBv Zg0KdGhlIGR1cGxpY2F0aW9uIGlzc3VlLg0KDQo+IA0KPiAjIyBTaW1wbGVyIEFsdGVybmF0aXZl cw0KPiANCj4gSWYgZXh0ZW5kaW5nIGBBVkZpbHRlcmAgaXMgdW5kZXNpcmFibGUsIHRoZXNlIGFs dGVybmF0aXZlcyBhbHNvIHNvbHZlIHRoZQ0KPiBpbW1lZGlhdGUgcHJvYmxlbToNCj4gDQo+ICoq RXhwb3J0IGV4aXN0aW5nIHN5bWJvbHM6KioNCj4gYGBgZGlmZg0KPiAtc3RhdGljIGNvbnN0IGNo YXIgKmNvbnN0IHZhcl9uYW1lc1tdID0gew0KPiArY29uc3QgY2hhciAqY29uc3QgZmZfZHJhd3Rl eHRfdmFyX25hbWVzW10gPSB7DQo+IGBgYA0KPiANCj4gKipQZXItZmlsdGVyIGFjY2Vzc29yOioq DQo+IGBgYGMNCj4gY29uc3QgY2hhciAqY29uc3QgKmF2ZmlsdGVyX2RyYXd0ZXh0X2dldF92YXJf bmFtZXModm9pZCk7DQo+IGBgYA0KPiANCj4gQm90aCB3b3JrLCBidXQgbGFjayBkaXNjb3ZlcmFi aWxpdHkgYW5kIG1ldGFkYXRhLiBJZiBjb21taXR0aW5nIHRvIEFQSQ0KPiBzdGFiaWxpdHkgZm9y IGV4cHJlc3Npb24gdmFyaWFibGVzLCB0aGUgYEFWRmlsdGVyYCBzdHJ1Y3QgYXBwcm9hY2ggcHJv dmlkZXMNCj4gYmV0dGVyIGxvbmctdGVybSB2YWx1ZS4NCg0KSSB0aGluayB0aGUgYWRkIHRvIEFW RmlsdGVyIGlzIHByZWZlcmFibGUuIE9yIG1heWJlIEFWRmlsdGVyQ29udGV4dCwNCmRlcGVuZGlu ZyBvbiB0aGUgZGV0YWlscyBvZiBob3cgd2Ugd2FudCB0byBkZXNpZ24gaXQuDQoNCj4gIyMgU2Nv cGUNCj4gDQo+IEknbSBwcmVwYXJlZCB0byBzdWJtaXQgcGF0Y2hlcyBmb3I6DQo+IA0KPiAxLiBg QVZGaWx0ZXJFeHByVmFyYCBzdHJ1Y3QgYW5kIGBBVkZpbHRlcmAgZmllbGQgYWRkaXRpb24NCj4g Mi4gTWlncmF0aW9uIG9mIGBkcmF3dGV4dGAgYXMgcHJvb2Ygb2YgY29uY2VwdA0KPiAzLiBNaWdy YXRpb24gb2Ygb3RoZXIgZXhwcmVzc2lvbi1lbmFibGVkIGZpbHRlcnMgaWYgZGVzaXJlZA0KPiA0 LiBEb2N1bWVudGF0aW9uIHVwZGF0ZXMNCj4gDQo+IEhhcHB5IHRvIHN0YXJ0IHdpdGggYGRyYXd0 ZXh0YCBvbmx5LCBvciBjb3ZlciBhbGwgZmlsdGVyc+KAlHdoaWNoZXZlcg0KPiBtYWludGFpbmVy cyBwcmVmZXIuDQoNClRoYW5rcy4NCg0KUmVnYXJkcywNCg0KLS0gDQogIE5pY29sYXMgR2Vvcmdl DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWct ZGV2ZWwgbWFpbGluZyBsaXN0IC0tIGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnClRvIHVuc3Vic2Ny aWJlIHNlbmQgYW4gZW1haWwgdG8gZmZtcGVnLWRldmVsLWxlYXZlQGZmbXBlZy5vcmcK