From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 9B6C3941042 for ; Fri, 22 Dec 2023 04:10:31 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=2HbcPHe0RNaBd9MGeg+QPltS/VC97MgbAr6ODSiJ6F0=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:msip_labels:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1703218230; v=1; b=Kx4D/YTpLbHi5LpoWDOW33CEY5/Nm8JfzpqUSHjrzD7H9Jn8CniVgY3ROXqWRnHw7Ws6x1r9 CSHJc9iQ2rrptSgKvJiNcfpcvnNCjmr27Ur4pWaKBTY4i7p0I8zevAidONPFsV9JiNQ3EveRRAu 7EtV/PPGuSXg3kTLqbmsQxM8= X-Received: by 127.0.0.2 with SMTP id rAuZYY7687511xkGoII2ZQ4k; Thu, 21 Dec 2023 20:10:30 -0800 X-Received: from NAM10-MW2-obe.outbound.protection.outlook.com (NAM10-MW2-obe.outbound.protection.outlook.com [40.107.94.89]) by mx.groups.io with SMTP id smtpd.web11.12788.1703218229486592446 for ; Thu, 21 Dec 2023 20:10:29 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RqcbO0vzqOSeLHzH+FCam2X+AUD8RbkVtKKQl1BE75R6FL7nu/TwxgpEAyZrkkWlcieeNA2VCz9GI3Z/8isUnuLk+aqKqj09XfJTG4tb+5D5GzgSmJBOGGReMzTKOXkDIhFVq8MzpXxRjD6w94sxOOOaES6+T5drp1vIyrjhHLd8fnhfb74qd3sC4vsVU9OMM6axofa/fL5M5clqYDeF9uMyS9VjSYxXLnXM6ZKQMsS+ncAaLmnI/5fEfje2SWkSJKpdkTvEFqpI5bFdf+Gydjk4z42uklKXS0Pb1PKXxGJwYc3nQY6XF7Sv/UEpKo96sw4zi8JwQey/amSUMtVkFg== 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=cs/izGU6vSl1tYb8E64Ca6kAIFM4JWcYh2JdAtvKvKQ=; b=BCPggvQ+sOknQZaeePBrN4AjH6g2jWrsWVG4grVYwGCP7U8GQ2IBGL4KUcCG3K1rl/FlUb1uP0IES/m/+MCBitkNpNJ+z/KMAlc7YpAFb5tWcJytBttbhQpAwM+dqFgo9UdxpoXJsmkRZDJp3UIa8lGGqpAXcCQjoQqQCphN8MTOdxyQ9dd/FaYv8aCS9MXnwFz1jptnusWuMYvWBw+YP3VVFDYfuLa8+6Q78su8Qw0DhIYEnsjDoebtQtWbWa0oj39YfPKAdg3ro1SHXK1kFar+h+dAVgEW9fI5YLAEgJh2HSrvvMaNcCxP/4U7U8jgC11smvfCnTFsYjE3a8LaHw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none X-Received: from IA1PR12MB6458.namprd12.prod.outlook.com (2603:10b6:208:3aa::22) by SA1PR12MB7441.namprd12.prod.outlook.com (2603:10b6:806:2b9::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7113.18; Fri, 22 Dec 2023 04:10:26 +0000 X-Received: from IA1PR12MB6458.namprd12.prod.outlook.com ([fe80::c436:397e:a940:5e6d]) by IA1PR12MB6458.namprd12.prod.outlook.com ([fe80::c436:397e:a940:5e6d%4]) with mapi id 15.20.7113.019; Fri, 22 Dec 2023 04:10:26 +0000 From: "Abdul Lateef Attar via groups.io" To: Sami Mujawar , "devel@edk2.groups.io" CC: Pierre Gondois , "nd@arm.com" Subject: Re: [edk2-devel] [Resend PATCH v5 4/4] DynamicTablesPkg: AML Code generation to invoke a method Thread-Topic: [Resend PATCH v5 4/4] DynamicTablesPkg: AML Code generation to invoke a method Thread-Index: AQHaMyhjmzR7Mrh510eBNAm0+S5U0LCzxG+AgADsStA= Date: Fri, 22 Dec 2023 04:10:26 +0000 Message-ID: References: <0304349ab5b384980681427b98dc3313faf279eb.1703064925.git.AbdulLateef.Attar@amd.com> <83bbfabf-bef8-467b-8c96-7386005022ff@arm.com> In-Reply-To: <83bbfabf-bef8-467b-8c96-7386005022ff@arm.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=980dee25-144c-42ce-8c2b-fc4344752cc1;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=0;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-12-22T04:01:20Z;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA1PR12MB6458:EE_|SA1PR12MB7441:EE_ x-ms-office365-filtering-correlation-id: 36fea509-8787-4c12-9afb-08dc02a3ed7e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: YchbNbyj7cZZ3ABgTeJuYOkylVGnhxgVKt4HG6hkdaBsnYXz4Is8wCHJ8zDmUoZYrPvlqC+ltgb0maBDjgAR8MmK9QTInLVlb+w/nsIkQ/XU46HkCrF7pqGUXlYcPkBpjhBgagJZzXKEmDMuioQZZA7hDWbUupZCSsZyXra0quPuMq4T6RArSwwsbTULzMLehwG6soT5CGhxrgghY+q94P9WZc3RHjApVrj8Ar0aNbvsS/0TGcHpluygwkJQUfbLdV5ijDjQKLJaCLsu35wBBxc67u+e4XfY5d2ZJtQlJtlPUm++vAT9SiGQCSXVg4cunCZ7YU3d1QSE2uzCJ4ukUi6VDGueOQGFZEISaZQiukfEGASXTfofI3GmP6/PoFq1ibGej9eTttG6k03Q2te9EqRtz2c/xp6cJR2GN69DEVIHl3oY0sQCX94P3SupklP573QLgiU93Aw5MCPl3MQlAv4wtQs5oT/08G5Br6ZitTaE5ISj5Np+lNqp0g2bAteKMYKbLAkYctwvrcOxh9H1iH1QFULFZlU4M047Rv8J62LchgaLqxkvtIFhKGhe56CMiFmW91fXZ7iBcbNJVqcX3wivISXNoWMiCYbBEAcK4PGjr4ZjKDKc8BeYdyvQ3mxm3uaETgIvU4TWhHCzLhzgCoB3pjIEbSXgBadVX8ljte8= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VHZSWHpyU1dTWkdSTE5lQ2ZDMXJkaXhKb01acWVFV05XY2dLRk1mcGVLOE84?= =?utf-8?B?RjVqWSt6OFo3WFVqWmdVbmZ3WlphaUFlaHk0ZnRwTDgzb1BpRHpnSE0waDBG?= =?utf-8?B?KzhTZm0yR3c1elRhQTNxQ3I2MDFaTEtSQnp6dkhGMWN5UjZLc2lrdlAreHVT?= =?utf-8?B?Q0lMRUJSc3loWDFJTzBSRWVFTEhOTXpJM1YxZjJYUWE4aytyMm1MakRWTlN4?= =?utf-8?B?ZFEwdzMzemtVZ0NEanUwekNmWnE5b0YvNTJrRktncW9LNW1rSXlvZ2xoNHRj?= =?utf-8?B?ejViTkc1OUpQWXh4VDZBaGZESHVwZ01oTmZIYUlLdVNrakRENVpieWpjWnlX?= =?utf-8?B?T21xczMxUzFpMDI0N3VqZlFXeGp1MHhDamkrOWJLYkd1Z25FTU5OR0NkbHBE?= =?utf-8?B?SktUQlBoOHpsdERWRENVS1kva0kvOWdVa0lnb2tEc1VmYXAxRFFoN2Z4U0Ry?= =?utf-8?B?cnFCUnp2TjZoKzdTOGgxcGIrYnBBVGdqbTVqNjVNQXZ4UGt6R0o4QjVRbm12?= =?utf-8?B?N2VwOEN2YzBFT0ZuUDZtMWJQQlVJVlJHRWoyN1ROMW5mVEdmL1crMkJqN2FS?= =?utf-8?B?NzE2czRES2F4OWV5ZVR3a01hU0JUbDZORzdad3VidUp3ME4wcUU0TDM3VmRt?= =?utf-8?B?a2Q0cWVNRXZZZy85MEJhWWh3QnZhZ2d1czB2aWJBWlZIOEw0SDNrVHpZRld4?= =?utf-8?B?dEZvNTVTcTB0SGlZRWluWjZRTm4wZ21XRHAyeWVWVlVjaFpoNXNoaDl4NWR1?= =?utf-8?B?SnRQSXFxZXlJS1hTS2pnYm1zYmFlaFVtaTkyajN6VTgrakNLeVVHSnNsN3NG?= =?utf-8?B?OGV4bmRUeVZBQTlmaG9SZG1oTXZJeE5KZVdvNjlpZjFPWHUwNExSc1J3b1Zt?= =?utf-8?B?Y1RwaVRRc1ZvYmlNYklWQVUxUW1oRUJiTStKdXJXaFVXNWpKaVlyUGpnTmFF?= =?utf-8?B?dnEzZ2dKTC9ETTg1Y1RwNExYamFQUXJhM200NkVXSEZna3QyN2MxY2tkK1JU?= =?utf-8?B?eEpnaFdSVHhIbDVPSjhLNXVqckkzOFp5UVNTRjJUU0NySkNSUmwzaWxGMGpi?= =?utf-8?B?QlVnOHQyVnBuTnpiWCt4ZndCTDFkaUNJUVNnbTVBN2NGaXcvNVdqN1l3bVFt?= =?utf-8?B?UzR3Nkxnck0yZjVEV0xYU09sd3Z5aDQ5TmhNWXRweGFySUZnaElzUUFTclI3?= =?utf-8?B?QjZGbUdGdXVSY1Z1eEl3UGJ3RmkvTEFnTks3SHptUXRNNDUyem9PbUhidU9o?= =?utf-8?B?Z0RqekN3NnlseVovRFhHZGpvTjU5V1dSZkt2Y3M4SUw4aHIwbHkyaEZnQU94?= =?utf-8?B?VVRSa2tqd1Y0UG83QktucW9FUW5DMWFuM0RtcTJZcUV4dnpPWEVXZ2xvblVB?= =?utf-8?B?Y09BaWVtNk4yRC8zcjZuYWQvSi9BenZhVDdqNElraVRMdXlnWmlZa21RUUha?= =?utf-8?B?ZmNMaEZMSzRuVURPU3NIM1FxOWNubmNiSUM1bmtXME9NWXU0V2JlUnlsVTBr?= =?utf-8?B?VHFFYTZtc281Nmc3U2NveU9ZditKN2VOTTBWVXZ5WlVvdHhpeXVaWVRQOGlj?= =?utf-8?B?YThYL3N2Sk9taTNhekFXR3ptQUFkZmJwZ2xkeWtZTi9YNDAwekF4bExCOC9P?= =?utf-8?B?R1FnNkNSYjd4a0RVUmVGSXRSYlU2cE1oTTVHWWJSOTF6RTJldXVGZG1XRlps?= =?utf-8?B?UWpNM1Z0WTBJalNWQTh4L2pwckptUWFOQjVsbEhXcmt5OEkyaWE5cmV0VTZF?= =?utf-8?B?NVR3eWVTVHpraVJEaXNUSlFHYmFudEpWUVdmOWVaVndCRTZiWmN5Z1VLZ2ZX?= =?utf-8?B?KzBPaTNpcm9XWHhPRUNhTWpXZmZ5WlhaNitxUzNBbUZzSjJ0V3pGbm1rUnZs?= =?utf-8?B?Q1VVaktBSmhyZU9nQkd1ZDBTaUo2NTk5Vm1HR2R6K21XOStWQnpvTE41N09o?= =?utf-8?B?QWRhdE9sdzhLREZPUFM3SVB0dGM1d1h0SkIyeGpXMDJyb0RSNEwwUHkvNlI1?= =?utf-8?B?V1o3eW0xMW5LMkViK1QyR25hb2FtY0kxcjJSVi93dEpiSFBCd1dXbXdCbEk4?= =?utf-8?B?UDcrMUNhQkI0aFN4Uzh3VWpTSTlWY3JIMkVoK3k0WnpRMWpOTi9udTZITjFo?= =?utf-8?Q?v0I0=3D?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA1PR12MB6458.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36fea509-8787-4c12-9afb-08dc02a3ed7e X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Dec 2023 04:10:26.7028 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: LN6Rxuspi1JxiLYp65qscUQN+6EWxyshuHpA8cXneLpHLkSdsIAW0iYyYfdbJlO1TMDxyHFABzMuG8/QQwslGQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB7441 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,AbdulLateef.Attar@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: YnUaggGettPptAPkIdhoO36gx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b="Kx4D/YTp"; dmarc=none; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNCkhpIFNhbWksDQogICAgICAgIFRo YW5rcyBmb3IgdGhlIGluLWRlcHRoIHJldmlldyBhbmQgbWFraW5nIHRoZSBjaGFuZ2VzLg0KUmVn YXJkaW5nIGJlbG93IGNvbW1lbnQuDQpbU0FNSV0gVGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIHJl bGF0ZWQgdG8gdGhpcyBwYXRjaC4gV2VyZSB5b3UgZ2V0dGluZyBhbnkgaXNzdWVzIHdoZW4gYnVp bGRpbmc/IElmIHNvLCBjYW4geW91IHN1Ym1pdCBhIHNlcGFyYXRlIHBhdGNoLCBwbGVhc2U/DQoN CklmIHlvdSBhZ3JlZSwgSSB3aWxsIGRyb3AgdGhlIGFib3ZlIGxpbmUgZnJvbSB0aGlzIHBhdGNo IGFuZCBtZXJnZS4NCg0KWy9TQU1JXQ0KDQpbQWJkdWxdIFdpdGggVlMyMDE5IEkgYW0gc2VlaW5n IGNvbXBpbGF0aW9uIGVycm9yLCBJJ2xsIHN1Ym1pdCBhIHNlcGFyYXRlIHBhdGNoIGZvciB0aGlz Lg0KDQpUaGFua3MNCkFiZHVMDQoNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206 IFNhbWkgTXVqYXdhciA8c2FtaS5tdWphd2FyQGFybS5jb20+DQpTZW50OiBUaHVyc2RheSwgRGVj ZW1iZXIgMjEsIDIwMjMgNzoyNiBQTQ0KVG86IEF0dGFyLCBBYmR1bExhdGVlZiAoQWJkdWwgTGF0 ZWVmKSA8QWJkdWxMYXRlZWYuQXR0YXJAYW1kLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQpD YzogQXR0YXIsIEFiZHVsTGF0ZWVmIChBYmR1bCBMYXRlZWYpIDxBYmR1bExhdGVlZi5BdHRhckBh bWQuY29tPjsgUGllcnJlIEdvbmRvaXMgPHBpZXJyZS5nb25kb2lzQGFybS5jb20+OyBuZEBhcm0u Y29tDQpTdWJqZWN0OiBSZTogW1Jlc2VuZCBQQVRDSCB2NSA0LzRdIER5bmFtaWNUYWJsZXNQa2c6 IEFNTCBDb2RlIGdlbmVyYXRpb24gdG8gaW52b2tlIGEgbWV0aG9kDQoNCkNhdXRpb246IFRoaXMg bWVzc2FnZSBvcmlnaW5hdGVkIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlLiBVc2UgcHJvcGVyIGNh dXRpb24gd2hlbiBvcGVuaW5nIGF0dGFjaG1lbnRzLCBjbGlja2luZyBsaW5rcywgb3IgcmVzcG9u ZGluZy4NCg0KDQpIaSBBYmR1bCwNCg0KSSBoYXZlIHNvbWUgbWlub3IgZmVlZGJhY2sgbWFrZWQg aW5saW5lIGFzIFtTQU1JXS4NCg0KSSB0aGluayBvdGhlciB0aGFuIHRoZSB0eXBlY2FzdCBjaGFu Z2UgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBTdHJTaXplKCksIHRoZSByZW1haW5kZXIgb2Yg dGhlIHBhdGNoIGxvb2tzIG9rIHRvIG1lIChpLmUuIHdpdGggdGhlIG1pbm9yIGNoYW5nZXMgSSBz dWdnZXN0ZWQpLg0KDQpQbGVhc2UgbGV0IG1lIGtub3cgaWYgeW91IGFncmVlIHdpdGggbXkgc3Vn Z2VzdGlvbnMgYW5kIEkgd2lsbCBtYWtlIHRoZSBjaGFuZ2VzIGFuZCBnZXQgdGhpcyBwYXRjaCBt ZXJnZWQuDQoNClJlZ2FyZHMsDQoNClNhbWkgTXVqYXdhcg0KDQpPbiAyMC8xMi8yMDIzIDA5OjM4 IGFtLCBBYmR1bCBMYXRlZWYgQXR0YXIgd3JvdGU6DQo+IEZyb206IEFiZHVsIExhdGVlZiBBdHRh ciA8QWJkdWxMYXRlZWYuQXR0YXJAYW1kLmNvbT4NCj4NCj4gQWRkcyBBUEkgdG8gZ2VuZXJhdGUg QU1MIGNvZGUgdG8gaW52b2tlL2NhbGwgYW5vdGhlciBtZXRob2QuIEFsc28NCj4gcHJvdmlkZXMg YWJpbGl0eSB0byBwYXNzIGFyZ3VtZW50cyBvZiB0eXBlIGludGVnZXIsIHN0cmluZywgQXJnT2Jq IG9yDQo+IExvY2FsT2JqLg0KPg0KPiBDYzogUGllcnJlIEdvbmRvaXMgPHBpZXJyZS5nb25kb2lz QGFybS5jb20+DQo+IENjOiBTYW1pIE11amF3YXIgPHNhbWkubXVqYXdhckBhcm0uY29tPg0KPiBT aWduZWQtb2ZmLWJ5OiBBYmR1bCBMYXRlZWYgQXR0YXIgPEFiZHVsTGF0ZWVmLkF0dGFyQGFtZC5j b20+DQo+IC0tLQ0KPiAgIC4uLi9JbmNsdWRlL0xpYnJhcnkvQW1sTGliL0FtbExpYi5oICAgICAg ICAgICB8IDExMiArKysrKysrKysNCj4gICAuLi4vQ29tbW9uL0FtbExpYi9Db2RlR2VuL0FtbENv ZGVHZW4uYyAgICAgICAgfCAyMzUgKysrKysrKysrKysrKysrKystDQo+ICAgMiBmaWxlcyBjaGFu Z2VkLCAzNDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPg0KPiBkaWZmIC0tZ2l0IGEv RHluYW1pY1RhYmxlc1BrZy9JbmNsdWRlL0xpYnJhcnkvQW1sTGliL0FtbExpYi5oDQo+IGIvRHlu YW1pY1RhYmxlc1BrZy9JbmNsdWRlL0xpYnJhcnkvQW1sTGliL0FtbExpYi5oDQo+IGluZGV4IGVi ODc0MDY5MmYuLjA0M2VjM2Q4NDIgMTAwNjQ0DQo+IC0tLSBhL0R5bmFtaWNUYWJsZXNQa2cvSW5j bHVkZS9MaWJyYXJ5L0FtbExpYi9BbWxMaWIuaA0KPiArKysgYi9EeW5hbWljVGFibGVzUGtnL0lu Y2x1ZGUvTGlicmFyeS9BbWxMaWIvQW1sTGliLmgNCj4gQEAgLTEwMSw2ICsxMDEsNTYgQEAgdHlw ZWRlZiBlbnVtIHsNCj4gICAgIEFtbEFkZHJlc3NSYW5nZU1heCAgICAgID0gNA0KPiAgIH0gQU1M X01FTU9SWV9BVFRSSUJVVEVTX01UUDsNCj4NCj4gKy8qKiBNZXRob2QgcGFyYW1ldGVyIHR5cGVz DQo+ICsNCj4gKyAgUG9zc2libGUgdmFsdWVzIGFyZToNCj4gKyAgICAwIC0gQW1sTWV0aG9kUGFy YW1UeXBlSW50ZWdlcg0KPiArICAgIDEgLSBBbWxNZXRob2RQYXJhbVR5cGVTdHJpbmcNCj4gKyAg ICAyIC0gQW1sTWV0aG9kUGFyYW1UeXBlQXJnDQo+ICsgICAgMyAtIEFtbE1ldGhvZFBhcmFtVHlw ZUxvY2FsDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2UocykNCj4gKyAgLSBBQ1BJIDYuNSwgczIw LjIuNSAiVGVybSBPYmplY3RzIEVuY29kaW5nIg0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYgZW51 bSB7DQo+ICsgIEFtbE1ldGhvZFBhcmFtVHlwZUludGVnZXIgPSAwLA0KPiArICBBbWxNZXRob2RQ YXJhbVR5cGVTdHJpbmcgID0gMSwNCj4gKyAgQW1sTWV0aG9kUGFyYW1UeXBlQXJnICAgICA9IDIs DQo+ICsgIEFtbE1ldGhvZFBhcmFtVHlwZUxvY2FsICAgPSAzDQo+ICt9IEFNTF9NRVRIT0RfUEFS QU1fVFlQRTsNCj4gKw0KPiArLyoqIEFNTCBNZXRob2QgcGFyYW1ldGVyIGRhdGENCj4gKyAgaG9s ZHMgdGhlIEFNTCBtZXRob2QgcGFyYW1ldGVyIGRhdGEuDQo+ICsqKi8NCj4gK3R5cGVkZWYgdW5p b24gew0KPiArICBVSU5UOCAgICAgQXJnOw0KPiArICBVSU5UOCAgICAgTG9jYWw7DQo+ICsgIFVJ TlQ2NCAgICBJbnRlZ2VyOw0KPiArICBWT0lEICAgICAgKkJ1ZmZlcjsNCj4gK30gQU1MX01FVEhP RF9QQVJBTV9EQVRBOw0KPiArDQo+ICsvKiogc3RydWN0dXJlIHRvIGhvbGQgQU1MIG1ldGhvZCBw YXJhbWV0ZXIgdHlwZXMNCj4gKyAgVHlwZSAgLSAgIFR5cGUgb2YgcGFyYW1ldGVyDQo+ICsgIERh dGEgIC0gICBob2xkcyBkYXRhIG9mIHBhcmFtZXRlcg0KPiArICAgICAgICAgICAgaWYgVHlwZSBp cyBBbWxNZXRob2RQYXJhbVR5cGVJbnRlZ2VyDQo+ICsgICAgICAgICAgICAgIHRoZW4gRGF0YSBp cyBvZiB0eXBlIEludGVnZXIgdG8gaG9sZCBpbnRlZ2VyIHZhbHVlLg0KPiArICAgICAgICAgICAg aWYgVHlwZSBpcyBBbWxNZXRob2RQYXJhbVR5cGVTdHJpbmcNCj4gKyAgICAgICAgICAgICAgdGhl biBEYXRhIGNvbnRhaW5zIG51bGwgdGVybWluYXRlZCBzdHJpbmcuDQo+ICsgICAgICAgICAgICBJ ZiBUeXBlIGlzIEFtbE1ldGhvZFBhcmFtVHlwZUFyZw0KPiArICAgICAgICAgICAgICB0aGVuIERh dGEgY29udGFpbnMgdGhlIEFyZ3VtZW50IG51bWJlciwNCj4gKyAgICAgICAgICAgICAgMCB0byA2 IGFyZSBzdXBwb3J0ZWQgdmFsdWUuDQo+ICsgICAgICAgICAgICBJZiBUeXBlIGlzIEFtbE1ldGhv ZFBhcmFtVHlwZUxvY2FsDQo+ICsgICAgICAgICAgICAgIHRoZW4gRGF0YSBjb250YWlucyB0aGUg TG9jYWwgdmFyaWFibGUgbnVtYmVyLA0KPiArICAgICAgICAgICAgICAwIHRvIDcgYXJlIHN1cHBv cnRlZCB2YWx1ZS4NCj4gKyAgRGF0YVNpemUgLSBmb3IgZnV0dXJlIHVzZQ0KPiArKiovDQo+ICt0 eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEFNTF9NRVRIT0RfUEFSQU1fVFlQRSAgICBUeXBlOw0KPiAr ICBBTUxfTUVUSE9EX1BBUkFNX0RBVEEgICAgRGF0YTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAg ICAgICAgIERhdGFTaXplOw0KPiArfSBBTUxfTUVUSE9EX1BBUkFNOw0KPiArDQo+ICAgLyoqIFBh cnNlIHRoZSBkZWZpbml0aW9uIGJsb2NrLg0KPg0KPiAgICAgVGhlIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgd2hvbGUgQU1MIGJsb2IuIEl0IHN0YXJ0cyB3aXRoIHRoZSBBQ1BJDQo+IERTRFQvU1NEVCBA QCAtMTY5Myw0ICsxNzQzLDY2IEBAIEFtbEFkZE5hbWVTdHJpbmdUb05hbWVkUGFja2FnZSAoDQo+ ICAgICBJTiBBTUxfT0JKRUNUX05PREVfSEFORExFICBOYW1lZE5vZGUNCj4gICAgICk7DQo+DQo+ ICsvKiogQU1MIGNvZGUgZ2VuZXJhdGlvbiB0byBpbnZva2UvY2FsbCBhbm90aGVyIG1ldGhvZC4N Cj4gKw0KPiArICBUaGlzIG1ldGhvZCBpcyBhIHN1YnNldCBpbXBsZW1lbnRhdGlvbiBvZiBNZXRo b2RJbnZvY2F0aW9uICBkZWZpbmVkDQo+ICsgaW4gdGhlIEFDUEkgc3BlY2lmaWNhdGlvbiA2LjUs ICBzZWN0aW9uIDIwLjIuNSAiVGVybSBPYmplY3RzDQo+ICsgRW5jb2RpbmciLg0KPiArICBBZGRl ZCBpbnRlZ2VyLCBzdHJpbmcsIEFyZ09iaiBhbmQgTG9jYWxPYmogc3VwcG9ydC4NCj4gKw0KPiAr ICBFeGFtcGxlIDE6DQo+ICsgICAgQW1sQ29kZUdlbkludm9rZU1ldGhvZCAoIk1FVDAiLCAwLCBO VUxMLCBQYXJlbnROb2RlKTsNCj4gKyAgICBpcyBlcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmcg QVNMIGNvZGU6DQo+ICsgICAgICBNRVQwICgpOw0KPiArDQo+ICsgIEV4YW1wbGUgMjoNCj4gKyAg ICBBTUxfTUVUSE9EX1BBUkFNICBQYXJhbVs0XTsNCj4gKyAgICBQYXJhbVswXS5EYXRhLkludGVn ZXIgPSAweDEwMDsNCj4gKyAgICBQYXJhbVswXS5UeXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlSW50 ZWdlcjsNCj4gKyAgICBQYXJhbVsxXS5EYXRhLkJ1ZmZlciA9ICJURVNUIjsNCj4gKyAgICBQYXJh bVsxXS5UeXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlU3RyaW5nOw0KPiArICAgIFBhcmFtWzJdLkRh dGEuQXJnID0gMDsNCj4gKyAgICBQYXJhbVsyXS5UeXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlQXJn Ow0KPiArICAgIFBhcmFtWzNdLkRhdGEuTG9jYWwgPSAyOw0KPiArICAgIFBhcmFtWzNdLlR5cGUg PSBBbWxNZXRob2RQYXJhbVR5cGVMb2NhbDsNCj4gKyAgICBBbWxDb2RlR2VuSW52b2tlTWV0aG9k ICgiTUVUMCIsIDQsIFBhcmFtLCBQYXJlbnROb2RlKTsNCj4gKw0KPiArICAgIGlzIGVxdWl2YWxl bnQgdG8gdGhlIGZvbGxvd2luZyBBU0wgY29kZToNCj4gKyAgICAgIE1FVDAgKDB4MTAwLCAiVEVT VCIsIEFyZzAsIExvY2FsMik7DQo+ICsNCj4gKyAgRXhhbXBsZSAzOg0KPiArICAgIEFNTF9NRVRI T0RfUEFSQU0gIFBhcmFtWzJdOw0KPiArICAgIFBhcmFtWzBdLkRhdGEuQXJnID0gMDsNCj4gKyAg ICBQYXJhbVswXS5UeXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlQXJnOw0KPiArICAgIFBhcmFtWzFd LkRhdGEuSW50ZWdlciA9IDB4MTAwOw0KPiArICAgIFBhcmFtWzFdLlR5cGUgPSBBbWxNZXRob2RQ YXJhbVR5cGVJbnRlZ2VyOw0KPiArICAgIEFtbENvZGVHZW5NZXRob2RSZXROYW1lU3RyaW5nICgi TUVUMiIsIE5VTEwsIDIsIFRSVUUsIDAsIFBhcmVudE5vZGUsICZNZXRob2ROb2RlKTsNCj4gKyAg ICBBbWxDb2RlR2VuSW52b2tlTWV0aG9kICgiTUVUMyIsIDIsIFBhcmFtLCBNZXRob2ROb2RlKTsN Cj4gKw0KPiArICAgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZvbGxvd2luZyBBU0wgY29kZToNCj4g KyAgICBNZXRob2QgKE1FVDIsIDIsIFNlcmlhbGl6ZWQpDQo+ICsgICAgew0KPiArICAgICAgTUVU MyAoQXJnMCwgMHgwMTAwKQ0KPiArICAgIH0NCj4gKw0KPiArICBAcGFyYW0gW2luXSBNZXRob2RO YW1lU3RyaW5nICBUaGUgbWV0aG9kIG5hbWUgdG8gYmUgY2FsbGVkIG9yIGludm9rZWQuDQo+ICsg IEBwYXJhbSBbaW5dIE51bUFyZ3MgICAgICAgICAgIE51bWJlciBvZiBhcmd1bWVudHMgdG8gYmUg cGFzc2VkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIHRvIDcgYXJlIHBl cm1pc3NpYmxlIHZhbHVlcy4NCj4gKyAgQHBhcmFtIFtpbl0gUGFyYW1ldGVycyAgICAgICAgQ29u dGFpbnMgdGhlIHBhcmFtZXRlciBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQYXJlbnROb2RlICAg ICAgICBUaGUgcGFyZW50IG5vZGUgdG8gd2hpY2ggdGhlIG1ldGhvZCBpbnZvY2F0aW9uDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzIGFyZSBhdHRhY2hlZC4NCj4gKw0K PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFN1Y2Nlc3MuDQo+ICsgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgSW52YWxpZCBwYXJhbWV0ZXIuDQo+ICsgIEByZXR2 YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICAgRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeS4NCj4g KyAqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArQW1sQ29kZUdlbkludm9rZU1ldGhv ZCAoDQo+ICsgIElOICBDT05TVCBDSEFSOCAgICAgICAgICAgICAqTWV0aG9kTmFtZVN0cmluZywN Cj4gKyAgSU4gICAgICAgIFVJTlQ4ICAgICAgICAgICAgIE51bUFyZ3MsDQo+ICsgIElOICAgICAg ICBBTUxfTUVUSE9EX1BBUkFNICAqUGFyYW1ldGVycyAgIE9QVElPTkFMLA0KPiArICBJTiAgICAg ICAgQU1MX05PREVfSEFORExFICAgUGFyZW50Tm9kZQ0KPiArICApOw0KPiArDQo+ICAgI2VuZGlm IC8vIEFNTF9MSUJfSF8NCj4gZGlmZiAtLWdpdA0KPiBhL0R5bmFtaWNUYWJsZXNQa2cvTGlicmFy eS9Db21tb24vQW1sTGliL0NvZGVHZW4vQW1sQ29kZUdlbi5jDQo+IGIvRHluYW1pY1RhYmxlc1Br Zy9MaWJyYXJ5L0NvbW1vbi9BbWxMaWIvQ29kZUdlbi9BbWxDb2RlR2VuLmMNCj4gaW5kZXggYTZk YjM0ZmI5Ny4uZGRlYzliNjdlZCAxMDA2NDQNCj4gLS0tIGEvRHluYW1pY1RhYmxlc1BrZy9MaWJy YXJ5L0NvbW1vbi9BbWxMaWIvQ29kZUdlbi9BbWxDb2RlR2VuLmMNCj4gKysrIGIvRHluYW1pY1Rh Ymxlc1BrZy9MaWJyYXJ5L0NvbW1vbi9BbWxMaWIvQ29kZUdlbi9BbWxDb2RlR2VuLmMNCj4gQEAg LTIsNiArMiw3IEBADQo+ICAgICBBTUwgQ29kZSBHZW5lcmF0aW9uLg0KPg0KPiAgICAgQ29weXJp Z2h0IChjKSAyMDIwIC0gMjAyMiwgQXJtIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiArICBDb3B5cmlnaHQgKEMpIDIwMjMgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBB bGwgcmlnaHRzDQo+ICsgcmVzZXJ2ZWQuPEJSPg0KPg0KPiAgICAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gICAqKi8NCj4gQEAgLTkyMSw3ICs5MjIsNyBA QCBBbWxDb2RlR2VuTmFtZVVuaWNvZGVTdHJpbmcgKA0KPiAgICAgU3RhdHVzID0gQW1sQ3JlYXRl RGF0YU5vZGUgKA0KPiAgICAgICAgICAgICAgICBFQW1sTm9kZURhdGFUeXBlUmF3LA0KPiAgICAg ICAgICAgICAgICAoQ09OU1QgVUlOVDggKilTdHJpbmcsDQo+IC0gICAgICAgICAgICAgU3RyU2l6 ZSAoU3RyaW5nKSwNCj4gKyAgICAgICAgICAgICAoVUlOVDMyKVN0clNpemUgKFN0cmluZyksDQoN CltTQU1JXSBUaGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgcmVsYXRlZCB0byB0aGlzIHBhdGNoLiBX ZXJlIHlvdSBnZXR0aW5nIGFueSBpc3N1ZXMgd2hlbiBidWlsZGluZz8gSWYgc28sIGNhbiB5b3Ug c3VibWl0IGEgc2VwYXJhdGUgcGF0Y2gsIHBsZWFzZT8NCg0KSWYgeW91IGFncmVlLCBJIHdpbGwg ZHJvcCB0aGUgYWJvdmUgbGluZSBmcm9tIHRoaXMgcGF0Y2ggYW5kIG1lcmdlLg0KDQpbL1NBTUld DQoNCj4gICAgICAgICAgICAgICAgJkRhdGFOb2RlDQo+ICAgICAgICAgICAgICAgICk7DQo+ICAg ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+IEBAIC0zODQ5LDMgKzM4NTAsMjM1IEBAIGV4 aXRfaGFuZGxlcjoNCj4NCj4gICAgIHJldHVybiBTdGF0dXM7DQo+ICAgfQ0KPiArDQo+ICsvKiog QU1MIGNvZGUgZ2VuZXJhdGlvbiB0byBpbnZva2UvY2FsbCBhbm90aGVyIG1ldGhvZC4NCj4gKw0K PiArICBUaGlzIG1ldGhvZCBpcyBhIHN1YnNldCBpbXBsZW1lbnRhdGlvbiBvZiBNZXRob2RJbnZv Y2F0aW9uICBkZWZpbmVkDQo+ICsgaW4gdGhlIEFDUEkgc3BlY2lmaWNhdGlvbiA2LjUsICBzZWN0 aW9uIDIwLjIuNSAiVGVybSBPYmplY3RzDQo+ICsgRW5jb2RpbmciLg0KPiArICBBZGRlZCBpbnRl Z2VyLCBzdHJpbmcsIEFyZ09iaiBhbmQgTG9jYWxPYmogc3VwcG9ydC4NCj4gKw0KPiArICBFeGFt cGxlIDE6DQo+ICsgICAgQW1sQ29kZUdlbkludm9rZU1ldGhvZCAoIk1FVDAiLCAwLCBOVUxMLCBQ YXJlbnROb2RlKTsNCj4gKyAgICBpcyBlcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmcgQVNMIGNv ZGU6DQo+ICsgICAgICBNRVQwICgpOw0KPiArDQo+ICsgIEV4YW1wbGUgMjoNCj4gKyAgICBBTUxf TUVUSE9EX1BBUkFNICBQYXJhbVs0XTsNCj4gKyAgICBQYXJhbVswXS5EYXRhLkludGVnZXIgPSAw eDEwMDsNCj4gKyAgICBQYXJhbVswXS5UeXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlSW50ZWdlcjsN Cj4gKyAgICBQYXJhbVsxXS5EYXRhLkJ1ZmZlciA9ICJURVNUIjsNCj4gKyAgICBQYXJhbVsxXS5U eXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlU3RyaW5nOw0KPiArICAgIFBhcmFtWzJdLkRhdGEuQXJn ID0gMDsNCj4gKyAgICBQYXJhbVsyXS5UeXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlQXJnOw0KPiAr ICAgIFBhcmFtWzNdLkRhdGEuTG9jYWwgPSAyOw0KPiArICAgIFBhcmFtWzNdLlR5cGUgPSBBbWxN ZXRob2RQYXJhbVR5cGVMb2NhbDsNCj4gKyAgICBBbWxDb2RlR2VuSW52b2tlTWV0aG9kICgiTUVU MCIsIDQsIFBhcmFtLCBQYXJlbnROb2RlKTsNCj4gKw0KPiArICAgIGlzIGVxdWl2YWxlbnQgdG8g dGhlIGZvbGxvd2luZyBBU0wgY29kZToNCj4gKyAgICAgIE1FVDAgKDB4MTAwLCAiVEVTVCIsIEFy ZzAsIExvY2FsMik7DQo+ICsNCj4gKyAgRXhhbXBsZSAzOg0KPiArICAgIEFNTF9NRVRIT0RfUEFS QU0gIFBhcmFtWzJdOw0KPiArICAgIFBhcmFtWzBdLkRhdGEuQXJnID0gMDsNCj4gKyAgICBQYXJh bVswXS5UeXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlQXJnOw0KPiArICAgIFBhcmFtWzFdLkRhdGEu SW50ZWdlciA9IDB4MTAwOw0KPiArICAgIFBhcmFtWzFdLlR5cGUgPSBBbWxNZXRob2RQYXJhbVR5 cGVJbnRlZ2VyOw0KPiArICAgIEFtbENvZGVHZW5NZXRob2RSZXROYW1lU3RyaW5nICgiTUVUMiIs IE5VTEwsIDIsIFRSVUUsIDAsIFBhcmVudE5vZGUsICZNZXRob2ROb2RlKTsNCj4gKyAgICBBbWxD b2RlR2VuSW52b2tlTWV0aG9kICgiTUVUMyIsIDIsIFBhcmFtLCBNZXRob2ROb2RlKTsNCj4gKw0K PiArICAgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZvbGxvd2luZyBBU0wgY29kZToNCj4gKyAgICBN ZXRob2QgKE1FVDIsIDIsIFNlcmlhbGl6ZWQpDQo+ICsgICAgew0KPiArICAgICAgTUVUMyAoQXJn MCwgMHgwMTAwKQ0KPiArICAgIH0NCj4gKw0KPiArICBAcGFyYW0gW2luXSBNZXRob2ROYW1lU3Ry aW5nICBUaGUgbWV0aG9kIG5hbWUgdG8gYmUgY2FsbGVkIG9yIGludm9rZWQuDQo+ICsgIEBwYXJh bSBbaW5dIE51bUFyZ3MgICAgICAgICAgIE51bWJlciBvZiBhcmd1bWVudHMgdG8gYmUgcGFzc2Vk LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIHRvIDcgYXJlIHBlcm1pc3Np YmxlIHZhbHVlcy4NCj4gKyAgQHBhcmFtIFtpbl0gUGFyYW1ldGVycyAgICAgICAgQ29udGFpbnMg dGhlIHBhcmFtZXRlciBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQYXJlbnROb2RlICAgICAgICBU aGUgcGFyZW50IG5vZGUgdG8gd2hpY2ggdGhlIG1ldGhvZCBpbnZvY2F0aW9uDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzIGFyZSBhdHRhY2hlZC4NCj4gKw0KPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFN1Y2Nlc3MuDQo+ICsgIEByZXR2YWwgRUZJ X0lOVkFMSURfUEFSQU1FVEVSICAgSW52YWxpZCBwYXJhbWV0ZXIuDQo+ICsgIEByZXR2YWwgRUZJ X09VVF9PRl9SRVNPVVJDRVMgICAgRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeS4NCj4gKyAqKi8N Cj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArQW1sQ29kZUdlbkludm9rZU1ldGhvZCAoDQo+ ICsgIElOICBDT05TVCBDSEFSOCAgICAgICAgICAgICAqTWV0aG9kTmFtZVN0cmluZywNCj4gKyAg SU4gICAgICAgIFVJTlQ4ICAgICAgICAgICAgIE51bUFyZ3MsDQo+ICsgIElOICAgICAgICBBTUxf TUVUSE9EX1BBUkFNICAqUGFyYW1ldGVycyAgIE9QVElPTkFMLA0KPiArICBJTiAgICAgICAgQU1M X05PREVfSEFORExFICAgUGFyZW50Tm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMg ICAgICAgU3RhdHVzOw0KPiArICBVSU5UOCAgICAgICAgICAgIEluZGV4Ow0KPiArICBDSEFSOCAg ICAgICAgICAgICpBbWxOYW1lU3RyaW5nOw0KPiArICBVSU5UMzIgICAgICAgICAgIEFtbE5hbWVT dHJpbmdTaXplOw0KPiArICBBTUxfREFUQV9OT0RFICAgICpEYXRhTm9kZTsNCj4gKyAgQU1MX09C SkVDVF9OT0RFICAqT2JqZWN0Tm9kZTsNCj4gKyAgQU1MX05PREVfSEFORExFICAqTm9kZVN0cmVh bTsNCj4gKw0KPiArICBpZiAoKE1ldGhvZE5hbWVTdHJpbmcgPT0gTlVMTCkgfHwgKFBhcmVudE5v ZGUgPT0gTlVMTCkpIHsNCj4gKyAgICBBU1NFUlQgKDApOw0KPiArICAgIHJldHVybiBFRklfSU5W QUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoKE51bUFyZ3MgPiA3KSB8fA0K PiArICAgICAgKChQYXJhbWV0ZXJzID09IE5VTEwpICYmIChOdW1BcmdzID4gMCkpKSAgew0KPiAr ICAgIEFTU0VSVCAoMCk7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4g KyAgfQ0KPiArDQo+ICsgIC8vLyBBbGxvY2F0ZSBzcGFjZSB0byBzdG9yZSBtZXRob2RuYW1lLCBv YmplY3QsIGRhdGEgbm9kZSBwb2ludGVycw0KPiArIE5vZGVTdHJlYW0gPSBBbGxvY2F0ZVplcm9Q b29sIChzaXplb2YgKEFNTF9OT0RFX0hBTkRMRSkgKiAoTnVtQXJncyArDQo+ICsgMSkpOyAgaWYg KE5vZGVTdHJlYW0gPT0gTlVMTCkgew0KPiArICAgIEFTU0VSVCAoMCk7DQo+ICsgICAgcmV0dXJu IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArICB9DQo+ICsNCj4gKyAgLy8vIENyZWF0ZSBhIGNh bGxlZCBvciBpbnZva2VkIG1ldGhvZCBuYW1lIHN0cmluZy4NCj4gKyAgU3RhdHVzID0gQ29udmVy dEFzbE5hbWVUb0FtbE5hbWUgKE1ldGhvZE5hbWVTdHJpbmcsDQo+ICsgJkFtbE5hbWVTdHJpbmcp OyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIEFTU0VSVF9FRklfRVJST1IgKFN0 YXR1cyk7DQo+ICsgICAgZ290byBleGl0X2hhbmRsZXI7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0 dXMgPSBBbWxHZXROYW1lU3RyaW5nU2l6ZSAoQW1sTmFtZVN0cmluZywgJkFtbE5hbWVTdHJpbmdT aXplKTsNCj4gKyBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgQVNTRVJUX0VGSV9F UlJPUiAoU3RhdHVzKTsNCj4gKyAgICBGcmVlUG9vbCAoQW1sTmFtZVN0cmluZyk7DQo+ICsgICAg Z290byBleGl0X2hhbmRsZXI7DQo+ICsgIH0NCj4gKw0KPiArICBEYXRhTm9kZSA9IE5VTEw7DQo+ ICsgIFN0YXR1cyAgID0gQW1sQ3JlYXRlRGF0YU5vZGUgKA0KPiArICAgICAgICAgICAgICAgRUFt bE5vZGVEYXRhVHlwZU5hbWVTdHJpbmcsDQo+ICsgICAgICAgICAgICAgICAoVUlOVDggKilBbWxO YW1lU3RyaW5nLA0KPiArICAgICAgICAgICAgICAgQW1sTmFtZVN0cmluZ1NpemUsDQo+ICsgICAg ICAgICAgICAgICAmRGF0YU5vZGUNCj4gKyAgICAgICAgICAgICAgICk7DQo+ICsgIEZyZWVQb29s IChBbWxOYW1lU3RyaW5nKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAg IEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ICsgICAgZ290byBleGl0X2hhbmRsZXI7DQo+ ICsgIH0NCj4gKw0KPiArICBOb2RlU3RyZWFtWzBdID0gKEFNTF9OT0RFX0hBTkRMRSlEYXRhTm9k ZTsNCj4gKw0KPiArICBpZiAoUGFyYW1ldGVycyAhPSBOVUxMKSB7DQo+ICsgICAgLy8vIFZhbGlk YXRlIGFuZCBjb252ZXJ0IHRoZSBQYXJhbWV0ZXJzIHRvIHRoZSBzdHJlYW0gb2Ygbm9kZXMuDQo+ ICsgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgTnVtQXJnczsgSW5kZXgrKykgew0KPiArICAg ICAgc3dpdGNoIChQYXJhbWV0ZXJzW0luZGV4XS5UeXBlKSB7DQo+ICsgICAgICAgIGNhc2UgQW1s TWV0aG9kUGFyYW1UeXBlSW50ZWdlcjoNCj4gKyAgICAgICAgICBPYmplY3ROb2RlID0gTlVMTDsN CltTQU1JXSBJIHRoaW5rIHRoZSBhYm92ZSBsaW5lIGNhbiBiZSBtb3ZlZCByaWdodCBhZnRlciB0 aGUgJ2ZvcicNCnN0YXRlbWVudC4gSWYgeW91IGFncmVlIEkgY2FuIGZpeCB0aGlzIGJlZm9yZSBt ZXJnaW5nLg0KPiArICAgICAgICAgIFN0YXR1cyAgICAgPSBBbWxDb2RlR2VuSW50ZWdlciAoUGFy YW1ldGVyc1tJbmRleF0uRGF0YS5JbnRlZ2VyLCAmT2JqZWN0Tm9kZSk7DQo+ICsgICAgICAgICAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgICAgICAgQVNTRVJUX0VGSV9FUlJP UiAoU3RhdHVzKTsNCj4gKyAgICAgICAgICAgIGdvdG8gZXhpdF9oYW5kbGVyOw0KPiArICAgICAg ICAgIH0NCj4gKw0KPiArICAgICAgICAgIE5vZGVTdHJlYW1bSW5kZXgrMV0gPSAoQU1MX05PREVf SEFORExFKU9iamVjdE5vZGU7DQpbU0FNSV0gTWlub3IsIGEgc3BhY2UgaXMgcmVxdWlyZWQgYmVm b3JlIGFuZCBhZnRlciAnKycuIEkgd2lsbCBmaXggdGhhdCBiZWZvcmUgbWVyZ2luZy4NCj4gKyAg ICAgICAgICBicmVhazsNCj4gKyAgICAgICAgY2FzZSBBbWxNZXRob2RQYXJhbVR5cGVTdHJpbmc6 DQo+ICsgICAgICAgICAgT2JqZWN0Tm9kZSA9IE5VTEw7DQo+ICsgICAgICAgICAgaWYgKFBhcmFt ZXRlcnNbSW5kZXhdLkRhdGEuQnVmZmVyID09IE5VTEwpIHsNCj4gKyAgICAgICAgICAgIEFTU0VS VF9FRklfRVJST1IgKEVGSV9JTlZBTElEX1BBUkFNRVRFUik7DQo+ICsgICAgICAgICAgICBTdGF0 dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAgICAgICAgICBnb3RvIGV4aXRfaGFu ZGxlcjsNCj4gKyAgICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgICBTdGF0dXMgPSBBbWxDb2Rl R2VuU3RyaW5nIChQYXJhbWV0ZXJzW0luZGV4XS5EYXRhLkJ1ZmZlciwNCj4gKyAmT2JqZWN0Tm9k ZSk7DQpbU0FNSV0gTWlub3IsIEkgcHJlZmVyIHRvIGtlZXAgdGhlIGNvZGUgd2l0aGluIDgwIGNo YXJhY3RlcnMuIEkgd2lsbCBmaXggdGhhdCBiZWZvcmUgbWVyZ2luZy4NCj4gKyAgICAgICAgICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICAgICAgICBBU1NFUlRfRUZJX0VSUk9S IChTdGF0dXMpOw0KPiArICAgICAgICAgICAgZ290byBleGl0X2hhbmRsZXI7DQo+ICsgICAgICAg ICAgfQ0KPiArDQo+ICsgICAgICAgICAgTm9kZVN0cmVhbVtJbmRleCsxXSA9IChBTUxfTk9ERV9I QU5ETEUpT2JqZWN0Tm9kZTsNCltTQU1JXSBJIGJlbGlldmUgdGhlIGFib3ZlIGxpbmUgY2FuIGJl IG1vdmVkIGFmdGVyIHRoZSBzd2l0Y2ggYmxvY2suIEkgY2FuIGRvIHRoYXQgaWYgeW91IGFncmVl Lg0KPiArICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICBjYXNlIEFtbE1ldGhvZFBhcmFtVHlw ZUFyZzoNCj4gKyAgICAgICAgICBPYmplY3ROb2RlID0gTlVMTDsNCj4gKyAgICAgICAgICBpZiAo UGFyYW1ldGVyc1tJbmRleF0uRGF0YS5BcmcgPiAoVUlOVDgpKEFNTF9BUkc2IC0gQU1MX0FSRzAp KSB7DQo+ICsgICAgICAgICAgICBBU1NFUlRfRUZJX0VSUk9SIChFRklfSU5WQUxJRF9QQVJBTUVU RVIpOw0KPiArICAgICAgICAgICAgU3RhdHVzID0gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiAr ICAgICAgICAgICAgZ290byBleGl0X2hhbmRsZXI7DQo+ICsgICAgICAgICAgfQ0KPiArDQo+ICsg ICAgICAgICAgU3RhdHVzID0gQW1sQ3JlYXRlT2JqZWN0Tm9kZSAoDQo+ICsgICAgICAgICAgICAg ICAgICAgICBBbWxHZXRCeXRlRW5jb2RpbmdCeU9wQ29kZSAoQU1MX0FSRzAgKyBQYXJhbWV0ZXJz W0luZGV4XS5EYXRhLkFyZywgMCksDQo+ICsgICAgICAgICAgICAgICAgICAgICAwLA0KPiArICAg ICAgICAgICAgICAgICAgICAgJk9iamVjdE5vZGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICk7 DQo+ICsgICAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgICAgICAg QVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gKyAgICAgICAgICAgIGdvdG8gZXhpdF9oYW5k bGVyOw0KPiArICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgIE5vZGVTdHJlYW1bSW5kZXgr MV0gPSAoQU1MX05PREVfSEFORExFKU9iamVjdE5vZGU7DQo+ICsgICAgICAgICAgYnJlYWs7DQo+ ICsgICAgICAgIGNhc2UgQW1sTWV0aG9kUGFyYW1UeXBlTG9jYWw6DQo+ICsgICAgICAgICAgT2Jq ZWN0Tm9kZSA9IE5VTEw7DQo+ICsgICAgICAgICAgaWYgKFBhcmFtZXRlcnNbSW5kZXhdLkRhdGEu TG9jYWwgPiAoVUlOVDgpKEFNTF9MT0NBTDcgLSBBTUxfTE9DQUwwKSkgew0KPiArICAgICAgICAg ICAgQVNTRVJUX0VGSV9FUlJPUiAoRUZJX0lOVkFMSURfUEFSQU1FVEVSKTsNCj4gKyAgICAgICAg ICAgIFN0YXR1cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgICAgICAgICAgIGdvdG8g ZXhpdF9oYW5kbGVyOw0KPiArICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgIFN0YXR1cyA9 IEFtbENyZWF0ZU9iamVjdE5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgQW1sR2V0Qnl0 ZUVuY29kaW5nQnlPcENvZGUgKEFNTF9MT0NBTDAgKyBQYXJhbWV0ZXJzW0luZGV4XS5EYXRhLkxv Y2FsLCAwKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAmT2JqZWN0Tm9kZQ0KPiArICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgICAgICAg ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICAgICAgICBBU1NFUlRfRUZJX0VS Uk9SIChTdGF0dXMpOw0KPiArICAgICAgICAgICAgZ290byBleGl0X2hhbmRsZXI7DQo+ICsgICAg ICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgTm9kZVN0cmVhbVtJbmRleCsxXSA9IChBTUxfTk9E RV9IQU5ETEUpT2JqZWN0Tm9kZTsNCj4gKyAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgZGVm YXVsdDoNCj4gKyAgICAgICAgICBBU1NFUlRfRUZJX0VSUk9SIChFRklfSU5WQUxJRF9QQVJBTUVU RVIpOw0KPiArICAgICAgICAgIFN0YXR1cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAg ICAgICAgICBnb3RvIGV4aXRfaGFuZGxlcjsNCj4gKyAgICAgICAgICBicmVhazsNCj4gKyAgICAg IH0NCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICAvLy8gSW5kZXggPD0gTnVtQXJncywgYmVj YXVzZSBhbiBhZGRpdGlvbmFsIG1ldGhvZCBuYW1lIHdhcyBhZGRlZC4NCj4gKyAgZm9yIChJbmRl eCA9IDA7IEluZGV4IDw9IE51bUFyZ3M7IEluZGV4KyspIHsNCj4gKyAgICBTdGF0dXMgPSBBbWxW YXJMaXN0QWRkVGFpbCAoDQo+ICsgICAgICAgICAgICAgICAoQU1MX05PREVfSEFORExFKVBhcmVu dE5vZGUsDQo+ICsgICAgICAgICAgICAgICAgKEFNTF9OT0RFX0hBTkRMRSlOb2RlU3RyZWFtW0lu ZGV4XQ0KPiArICAgICAgICAgICAgICAgKTsNCj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ICsgICAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiArICAgICAgZ290byBl eGl0X2hhbmRsZXJfZGV0YWNoOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIEZyZWVQb29s IChOb2RlU3RyZWFtKTsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gKw0KPiArZXhpdF9oYW5kbGVy X2RldGFjaDoNCj4gKyAgLy8vIFRoZSBpbmRleCBjb250YWlucyB0aGUgbGFzdCBzdWNjZXNzZnVs IG5vZGUgYXR0YWNoZWQuDQo+ICsgIGZvciAoIDsgSW5kZXggPiAwOyBJbmRleC0tKSB7DQo+ICsg ICAgLy8vIEluZGV4IGNvbnRhaW5zIHRoZSBub2RlIG51bWJlciB0aGF0IGlzIGZhaWxlZCBmb3Ig QW1sVmFyTGlzdEFkZFRhaWwoKS4NCj4gKyAgICAvLy8gSGVuY2UsIHN0YXJ0IGRldGFjaGluZyBm cm9tIHRoZSBsYXN0IHN1Y2Nlc3NmdWwNCj4gKyAgICBBbWxEZXRhY2hOb2RlIChOb2RlU3RyZWFt W0luZGV4LTFdKTsNCj4gKyAgfQ0KPiArDQo+ICtleGl0X2hhbmRsZXI6DQo+ICsgIC8vLyBJbmRl eCA8PSBOdW1BcmdzLCBiZWNhdXNlIGFuIGFkZGl0aW9uYWwgbWV0aG9kIG5hbWUgd2FzIGFkZGVk Lg0KPiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPD0gTnVtQXJnczsgSW5kZXgrKykgew0KPiAr ICAgIGlmIChOb2RlU3RyZWFtW0luZGV4XSAhPSAwKSB7DQo+ICsgICAgICBBbWxEZWxldGVUcmVl IChOb2RlU3RyZWFtW0luZGV4XSk7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgRnJlZVBv b2wgKE5vZGVTdHJlYW0pOw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KDQoKLT0tPS09LT0t PS09LT0tPS09LT0tPS0KR3JvdXBzLmlvIExpbmtzOiBZb3UgcmVjZWl2ZSBhbGwgbWVzc2FnZXMg c2VudCB0byB0aGlzIGdyb3VwLgpWaWV3L1JlcGx5IE9ubGluZSAoIzExMjgzNCk6IGh0dHBzOi8v ZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzExMjgzNApNdXRlIFRoaXMgVG9waWM6IGh0 dHBzOi8vZ3JvdXBzLmlvL210LzEwMzI3ODUyMS83Njg2MTc2Ckdyb3VwIE93bmVyOiBkZXZlbCtv d25lckBlZGsyLmdyb3Vwcy5pbwpVbnN1YnNjcmliZTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9n L2RldmVsL3Vuc3ViIFtyZWJlY2NhQG9wZW5mdy5pb10KLT0tPS09LT0tPS09LT0tPS09LT0tPS0K Cg0K