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 B2E42740032 for ; Wed, 20 Dec 2023 04:33:31 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=Isfcohh/qPSrFJYDieellKzk9X+xXIm0IaNS/G3rihw=; 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=1703046810; v=1; b=o/MdYiJpsLHWMYNVJ/xRhSpJH9QGGlgcLnugzkm0llpr2faDsAZWts2acdWfMphJiLPH61yQ RjJ0k558ZsaywBq84WP6OhrV3PSAq6tcviBvyrMysLRACSlf43oSJK24WepL0ILSWGxKpZgtKin 7JL4muhS0qV8gNSTagWPFI2I= X-Received: by 127.0.0.2 with SMTP id i041YY7687511xvjHQwtCtMm; Tue, 19 Dec 2023 20:33:30 -0800 X-Received: from NAM12-DM6-obe.outbound.protection.outlook.com (NAM12-DM6-obe.outbound.protection.outlook.com [40.107.243.71]) by mx.groups.io with SMTP id smtpd.web10.15167.1703046809159930884 for ; Tue, 19 Dec 2023 20:33:29 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ncfm4psGZRtLwUckyu12MAqvbnP5dDtIAR0Xifl+8w04Isx1yO1u2+MWxKg4im/V+7+Q0hl1wW+CxQpjXm8zRbMMKgv6tM+CW+QpWMwyFg3BYQAlahE/RTVIZ5YCny8Fw/cZxeE3qnKKphmtHr0GLVuQJwdOu0E1U0wyEO+m0Op5RMDEd3WPgfQSqj8F91gEEkI7bHjkfZVFvUpBLvbKrH41bYnEQwgRfY2RYmhEqukaUU6fgxQenh8V2iDIheWZYTkcIfApHSVV9kG4hccajNLAahUoJQkeJ6+CEm7pDsIk7dTyt66sWhn8QwI8GgTfnOGAKx3+G7AqPsgb2bz8Tw== 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=7aGEEnsjrwvPgSPdSwhwx8dcA0+As/eMBlzTIT2i3CQ=; b=SRZ901Gi/B3HqZda8D/ld5M0WHatCrg+6SlZ4CJQeBMDvezW5llooXYAd3SLoi8kysoPFFX59r5gcVSu4rowUHyyP9/aA5MHNKU71hLrYO9atSTawTvkZL6C11Uhx69LyfmhkGmjxnIikSsAugWZTm2o6Bewi0OGNNnWIyUk3zPIYaTUYLviTrG51Czy/nu4QCcStQunB5MoLiqqCZ/54VHTeyY6b23bgMTLgTcOcTkDRrYQYjd+O4SDGehVCdbXLsvVkDzsDpNZai0JBPqcSAOXrGx5OIXw2ImMW4Cake7lySVcFY8DYrILcQYdvPr/2j4SmwO5ZQdSUMvwDQbQ3w== 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 BN9PR12MB5082.namprd12.prod.outlook.com (2603:10b6:408:133::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7113.18; Wed, 20 Dec 2023 04:33:24 +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.7091.034; Wed, 20 Dec 2023 04:33:24 +0000 From: "Abdul Lateef Attar via groups.io" To: Pierre Gondois , "devel@edk2.groups.io" CC: Sami Mujawar Subject: Re: [edk2-devel] [Resend PATCH v4 4/4] DynamicTablesPkg: AML Code generation to invoke a method Thread-Topic: [Resend PATCH v4 4/4] DynamicTablesPkg: AML Code generation to invoke a method Thread-Index: AQHaMih0C1FX5p87KE+BSMUvUK+JibCwpikAgADvPuA= Date: Wed, 20 Dec 2023 04:33:24 +0000 Message-ID: References: <1c56b1a9e5afe32036d950a33372849b36e10404.1702954979.git.AbdulLateef.Attar@amd.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ActionId=a1d10684-4199-446d-bbb2-6c2d1f98aa50;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ContentBits=0;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Enabled=true;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Method=Privileged;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Name=Public-AIP 2.0;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SetDate=2023-12-20T04:27:58Z;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA1PR12MB6458:EE_|BN9PR12MB5082:EE_ x-ms-office365-filtering-correlation-id: 5ca1fd6d-1095-402a-a8cf-08dc0114ce0e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: Oog2gmrE/7IVe+rYAaeuIudkql9mUV0HFgIMS+ysUjyQ9hQV2jZaseNqNwDzRwQ/Ef6zz9QtUhk+KRqPZaunZA3t+9BujvUDkI0OhFsUZUESdkgATKoOM0ynNkMjf4pSYhy8Ck3Ll7eH/gWH2aGl0GM08A2chexYxgwfpQ/zNpauA27l3asbjM9f0dglR3Rpj3yMolhIKVqj3gQYVuR8+SbrtZuCD4F7jcjry5VILcMbOx8UEWDnwKhOJtWY290RaEwnkhdjFrFOWytjx6qilcXVnbkXXxZJKiQ+t4cVLDoTQQ3rN2yWIH/7q6edWnrRz6i6W4AUmC1CmoMdjh5QsZP8bJ1c02bwkcu4QRQ53AjutblcDZOAFwnGf4YW3ta66LTEh9EhhdTmqYFFZY+6lU9zypIuRtX72VmjUSLjjGyRz3nQOyeDmDw0xXrvybGiuvJiUXDuKGJpkd24FBhiO3H2lI8L/4EqY7wwD7/b3qFS+VbJjMTn0s0rQ9tgF4bPfqCw93uOlc49rqDrEa+TNd6hEfGHdUu6MkN8SjQQOxDW5f+5YWiCy2cVxRYiDuF6t9vjycIJmYUxUDPXwUGDvHdkRwpsbn+e5ErAUthdLjrUUIhMU7cvn16u6lbLwSYEiYKsSJBlKSCGQhRWBAaCKjtOC+izedeDpT93gKKTP1k= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?T0pSRTVhcHQ3WEtHSjMzNExROSt2ZjBBUFhVb1pKMXRpU29Ub3c2Sm9nR3pm?= =?utf-8?B?ZHpjTWRiSzc0eFF6bDMwYkxnVHErZHczK1o2VU1IYkxQbGNaTndhenpSQ05X?= =?utf-8?B?UE9DL2lLZlV0VldHekNGbEpGelozTUdvT3RWc29HclpYcCtyQ2xBcE5HWnZ2?= =?utf-8?B?dlZhZGxtVUNpcEg5SE80NnRxWFE2QmJpcUkxa1c2UzBiMWs2NjNYK2k1QlV0?= =?utf-8?B?QVlxelVTZktyTzViMGRrdkVyQ1d5bEVMeXB2N2xTNGdXV1JDbnd0OWhKVTdk?= =?utf-8?B?TDFueGJ1VEIyMm8yWkpTOG51aFYxRHI1Z3NWTUNkc3BrbFBwT3B1NkFiNVdQ?= =?utf-8?B?QnZmeXEwcDU4YmoyUms1d0ZCYys1N0pnenp1Tlk5aVZ4UjVhSTBaTGtlTnhF?= =?utf-8?B?SFFmTjNYM1ByakNrVlZ0YW1kMlFJWmVadXBqUUdNeFBQK1Q3bnlrejVRU0ZH?= =?utf-8?B?U21TVHpVb1ZjTng3Wk1DWmxRejhlVldqbjVWMGtZQ2x0SFVyT2puL3Y0Y25j?= =?utf-8?B?bmdPRVNldEU2TktYazVjYzlqQVRnTExjd2t3R2pnbS8xMkxsYjFwSUFCLy9P?= =?utf-8?B?SEVGMTZkaHk5bFRwZWFRaGRxcXgwaFBNUk10dkVMSzNQR1BqUjFZRGMxRlp4?= =?utf-8?B?V2htcks5N0FLREFzSlJRdlJaZUZuZkhQK0dDMllYVjFXYWdEZEo3d3RaN1RK?= =?utf-8?B?MWZBNnlVM3k1KzVOTWkwQ2pucFpwM01JZEgrSzA4N1RGakZQVER0TCs2Wmlp?= =?utf-8?B?bDhxekg1SFVpaHh4MDAvQnhuVko4VWdhSU5xM0JSVnZGZmxrazM2Q1dvYzJQ?= =?utf-8?B?Z0pCby9kaHQ2RENSMkJvM1lFTjNnZGRXU3RXTk9MS3NtYW9kSngwM0FsNHVl?= =?utf-8?B?YzNObEN6U2NBRmNFeFZ1R01ENUFqbGVVampoN2REUlNZY1d3THlGZlMvZ0Fv?= =?utf-8?B?NktDUjViWTZtdjNqbUhQUThINDdYZ0x5UFRKRWVNZ1hmczlwb2VHYUJvc2d6?= =?utf-8?B?cWtnUWU4NkZ2b3g2NWpLVGZ1QThmeHBZTE5lSmt4Q2VRanBzUTNNaDJJWWNu?= =?utf-8?B?SlVUKzBuT3pGQUlseUFDaFZYaXV6cHl5TisxZWZNbVVIZGhQVVBHYjhCd3h1?= =?utf-8?B?aGZZU0FOQll0djRDMW9JMDl2K2wwS0dUY1pWNys4c2d5cUxhK016cUVtZS9P?= =?utf-8?B?M3VyZGs4UEFocFE1d29YbW1Cd1BYdTNwWU1qc1F4RWpJbVpTV3JvdFBjOGhK?= =?utf-8?B?SjByczdCems4Z0tPZnNtNEJHbys0SExlTWVuZ2xodUpDWEVyOXNSSTdrZ2p0?= =?utf-8?B?Wm0zSGVrRUh6TXlEcWU0aTdEVUlyNWJTY3VDV0NwWVNFdG5PUTd3c3NYUWJM?= =?utf-8?B?SisrYjJ5Q3ZkVnl3WndablN6cUxDaTJBaGh6Q1RNdWRRVXJIRVQrZzRVR043?= =?utf-8?B?ZnJXcXdRWXZQMkVxeDQ3UndHaGRYUFR4UlhtQjBOTXA1d1k0L0tCN1FHTFVQ?= =?utf-8?B?MVNhT3FRU0xadFpTNzZVYlRUaXQ0NUlrMTIwVG1QSUpEMDF2Wm5xQlR0MVR5?= =?utf-8?B?RzAvcHFNaWh6UjBUTFdKd01MMG8ySVM3ZWcxUWplZkk4WUR6OEpYc1Y3UFk1?= =?utf-8?B?Ti9palJpc2RtcnRMa2lscnc3SUdVeFc5VDZ1Rzd1VTBvTFUzY0VIUDc4cDMx?= =?utf-8?B?cXdoaVNoUHpETzN1VXJEVi9JZnZxbkR1Y1lxNmZtN0RnR2lvM01seFU2bFpo?= =?utf-8?B?bkpjMFErUXlUODc2cFZMUmo5UTBZWWhtaFd4MnlyWE9WYmxmN1VCcDg5ZDZY?= =?utf-8?B?ZXZUSG40bHRoTWJVUEhRa2ZQTmhFRnV1WC8xR3dDZFJNeEV3eTQxbU5KKzFr?= =?utf-8?B?MkEzZ3JPcEEzSm1LcGh5YXVwUDhVWFI3ZGZYaUZuSWMwcytxUUVxdlprUlFB?= =?utf-8?B?anEzSkZ4dkRvWE1NQjhYeXdoT1RDZWw0VWlpdXB0MFdySFVQWVpZQ0lRbXAx?= =?utf-8?B?VlAwQ00wMU5YbDBZNzBmZ0xBQUpKdlBvcGZMVTJaWlZnbGJBYWNDWkc5b2Jt?= =?utf-8?B?cDIxQSswVXdzY1JYeVFTYWl3eFBJcTArOWZIZXp0NjdNUkt2TXNORUVnU3po?= =?utf-8?Q?hhoM=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: 5ca1fd6d-1095-402a-a8cf-08dc0114ce0e X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Dec 2023 04:33:24.7564 (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: ijDhWobUsPKvlniiAyJYicrg0HA3mvBM8o+8T7zUaymSlshUTGH6Sxn8ADTCLbnuJUz882wM5ugXXHFwuoBPXg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR12MB5082 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: jDm07EGpfBh5hQUjSu5StdMRx7686176AA= 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="o/MdYiJp"; 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; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") W1B1YmxpY10NCg0KSGkgUGllcnJlLA0KICAgICAgICBSZWdhcmRpbmcgdGhlIGJlbG93IGNvbW1l bnQNCj4gK0FtbENvZGVHZW5JbnZva2VNZXRob2QgKA0KPiArICBJTiAgQ09OU1QgQ0hBUjggICAg ICAgICAgICAgKk1ldGhvZE5hbWVTdHJpbmcsDQo+ICsgIElOICAgICAgICBVSU5UOCAgICAgICAg ICAgICBOdW1BcmdzLA0KPiArICBJTiAgICAgICAgQU1MX01FVEhPRF9QQVJBTSAgKlBhcmFtZXRl cnMgICBPUFRJT05BTCwNCj4gKyAgSU4gICAgICAgIEFNTF9OT0RFX0hBTkRMRSAgIFBhcmVudE5v ZGUNCk1heWJlIGl0IHdvdWxkIGJlIHdvcnRoIGFsc28gaGF2aW5nIGFuIE9VVCBwYXJhbWV0ZXIg aW4gY2FzZSBzb21lb25lIGRvZXNuJ3Qgd2FudCB0byBhdHRhY2ggdGhlIG1ldGhvZCBpbnZvY2F0 aW9uIGRpcmVjdGx5IChjZi4gb3RoZXIgbWV0aG9kcyBpbiB0aGUgZmlsZSk6DQogICBPVVQgQU1M X09CSkVDVF9OT0RFX0hBTkRMRSAgKk5ld09iamVjdE5vZGUgICBPUFRJT05BTA0KDQpJIGRvbuKA mXQgdGhpbmsgaXRzIHBvc3NpYmxlIGJlY2F1c2UgTWV0aG9kSW52b2NhdGlvbiBpcyBhIHN0cmVh bSBvZiBvYmplY3RzLCBhbmQgZmlyc3Qgb2JqZWN0IGlzIE5hbWVTdHJpbmcobWV0aG9kIG5hbWUp IHdoaWNoIGlzICJEYXRhIG5vZGUiLg0KQU1MIGxpYnJhcnkgZG9lc27igJl0IGFsbG93IGFkZGlu ZyB2YXJpYWJsZSBsaXN0IGFyZ3VtZW50cyB0byB0aGUgIkRhdGEgbm9kZSIsIG9ubHkgIm9iamVj dCBub2RlIiBpcyBzdXBwb3J0ZWQuDQoNCkknbGwgYWRkcmVzcyB0aGUgcmVtYWluaW5nIGNvbW1l bnRzIGFuZCBzdWJtaXQgdGhlIHY1IHBhdGNoLg0KDQpUaGFua3MNCkFiZHVMDQoNCi0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBQaWVycmUgR29uZG9pcyA8cGllcnJlLmdvbmRvaXNA YXJtLmNvbT4NClNlbnQ6IFR1ZXNkYXksIERlY2VtYmVyIDE5LCAyMDIzIDc6NDEgUE0NClRvOiBB dHRhciwgQWJkdWxMYXRlZWYgKEFiZHVsIExhdGVlZikgPEFiZHVsTGF0ZWVmLkF0dGFyQGFtZC5j b20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KQ2M6IEF0dGFyLCBBYmR1bExhdGVlZiAoQWJkdWwg TGF0ZWVmKSA8QWJkdWxMYXRlZWYuQXR0YXJAYW1kLmNvbT47IFNhbWkgTXVqYXdhciA8c2FtaS5t dWphd2FyQGFybS5jb20+DQpTdWJqZWN0OiBSZTogW1Jlc2VuZCBQQVRDSCB2NCA0LzRdIER5bmFt aWNUYWJsZXNQa2c6IEFNTCBDb2RlIGdlbmVyYXRpb24gdG8gaW52b2tlIGEgbWV0aG9kDQoNCkNh dXRpb246IFRoaXMgbWVzc2FnZSBvcmlnaW5hdGVkIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlLiBV c2UgcHJvcGVyIGNhdXRpb24gd2hlbiBvcGVuaW5nIGF0dGFjaG1lbnRzLCBjbGlja2luZyBsaW5r cywgb3IgcmVzcG9uZGluZy4NCg0KDQpIZWxsbyBBYmR1bCwNClRoZSBuZXcgZnVuY3Rpb24gbG9v a3MgZ29vZCwgdGhlcmUgaXMganVzdCBvbmUgc21hbGwgaXNzdWUgd2l0aCB0aGUgdHJlZSBsYXlv dXQsDQoNClJlZ2FyZHMsDQpQaWVycmUNCg0KT24gMTIvMTkvMjMgMDQ6MDYsIEFiZHVsIExhdGVl ZiBBdHRhciB3cm90ZToNCj4gRnJvbTogQWJkdWwgTGF0ZWVmIEF0dGFyIDxBYmR1bExhdGVlZi5B dHRhckBhbWQuY29tPg0KPg0KPiBBZGRzIEFQSSB0byBnZW5lcmF0ZSBBTUwgY29kZSB0byBpbnZv a2UvY2FsbCBhbm90aGVyIG1ldGhvZC4gQWxzbw0KPiBwcm92aWRlcyBhYmlsaXR5IHRvIHBhc3Mg YXJndW1lbnRzIG9mIHR5cGUgaW50ZWdlciwgc3RyaW5nLCBBcmdPYmogb3INCj4gTG9jYWxPYmou DQo+DQo+IENjOiBQaWVycmUgR29uZG9pcyA8cGllcnJlLmdvbmRvaXNAYXJtLmNvbT4NCj4gQ2M6 IFNhbWkgTXVqYXdhciA8c2FtaS5tdWphd2FyQGFybS5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IEFi ZHVsIExhdGVlZiBBdHRhciA8QWJkdWxMYXRlZWYuQXR0YXJAYW1kLmNvbT4NCj4gLS0tDQo+ICAg Li4uL0luY2x1ZGUvTGlicmFyeS9BbWxMaWIvQW1sTGliLmggICAgICAgICAgIHwgMTEyICsrKysr KysrKw0KPiAgIC4uLi9Db21tb24vQW1sTGliL0NvZGVHZW4vQW1sQ29kZUdlbi5jICAgICAgICB8 IDIzNiArKysrKysrKysrKysrKysrKy0NCj4gICAyIGZpbGVzIGNoYW5nZWQsIDM0NyBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pDQo+DQo+IGRpZmYgLS1naXQgYS9EeW5hbWljVGFibGVzUGtn L0luY2x1ZGUvTGlicmFyeS9BbWxMaWIvQW1sTGliLmgNCj4gYi9EeW5hbWljVGFibGVzUGtnL0lu Y2x1ZGUvTGlicmFyeS9BbWxMaWIvQW1sTGliLmgNCj4gaW5kZXggZWI4NzQwNjkyZi4uZmIxNjYz N2YwMiAxMDA2NDQNCj4gLS0tIGEvRHluYW1pY1RhYmxlc1BrZy9JbmNsdWRlL0xpYnJhcnkvQW1s TGliL0FtbExpYi5oDQo+ICsrKyBiL0R5bmFtaWNUYWJsZXNQa2cvSW5jbHVkZS9MaWJyYXJ5L0Ft bExpYi9BbWxMaWIuaA0KPiBAQCAtMTAxLDYgKzEwMSw1NiBAQCB0eXBlZGVmIGVudW0gew0KPiAg ICAgQW1sQWRkcmVzc1JhbmdlTWF4ICAgICAgPSA0DQo+ICAgfSBBTUxfTUVNT1JZX0FUVFJJQlVU RVNfTVRQOw0KPg0KPiArLyoqIE1ldGhvZCBwYXJhbWV0ZXIgdHlwZXMNCj4gKw0KPiArICBQb3Nz aWJsZSB2YWx1ZXMgYXJlOg0KPiArICAgIDAgLSBBbWxNZXRob2RQYXJhbVR5cGVJbnRlZ2VyDQo+ ICsgICAgMSAtIEFtbE1ldGhvZFBhcmFtVHlwZVN0cmluZw0KPiArICAgIDIgLSBBbWxNZXRob2RQ YXJhbVR5cGVBcmcNCj4gKyAgICAzIC0gQW1sTWV0aG9kUGFyYW1UeXBlTG9jYWwNCj4gKw0KPiAr ICBAcGFyIFJlZmVyZW5jZShzKQ0KPiArICAtIEFDUEkgNi41LCBzMjAuMi41ICJUZXJtIE9iamVj dHMgRW5jb2RpbmciDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZiBlbnVtIHsNCj4gKyAgQW1sTWV0 aG9kUGFyYW1UeXBlSW50ZWdlciA9IDAsDQo+ICsgIEFtbE1ldGhvZFBhcmFtVHlwZVN0cmluZyAg PSAxLA0KPiArICBBbWxNZXRob2RQYXJhbVR5cGVBcmcgICAgID0gMiwNCj4gKyAgQW1sTWV0aG9k UGFyYW1UeXBlTG9jYWwgICA9IDMNCj4gK30gQU1MX01FVEhPRF9QQVJBTV9UWVBFOw0KPiArDQo+ ICsvKiogQU1MIE1ldGhvZCBwYXJhbWV0ZXIgZGF0YQ0KPiArICBob2xkcyB0aGUgQU1MIG1ldGhv ZCBwYXJhbWV0ZXIgZGF0YS4NCj4gKyoqLw0KPiArdHlwZWRlZiB1bmlvbiB7DQo+ICsgIFVJTlQ4 ICAgICBBcmc7DQo+ICsgIFVJTlQ4ICAgICBMb2NhbDsNCj4gKyAgVUlOVDY0ICAgIEludGVnZXI7 DQo+ICsgIFZPSUQgICAgICAqQnVmZmVyOw0KPiArfSBBTUxfTUVUSE9EX1BBUkFNX0RBVEE7DQo+ ICsNCj4gKy8qKiBzdHJ1Y3R1cmUgdG8gaG9sZCBBTUwgbWV0aG9kIHBhcmFtZXRlciB0eXBlcw0K PiArICBUeXBlICAtICAgVHlwZSBvZiBwYXJhbWV0ZXINCj4gKyAgRGF0YSAgLSAgIGhvbGRzIGRh dGEgb2YgcGFyYW1ldGVyDQo+ICsgICAgICAgICAgICBpZiBUeXBlIGlzIEFtbE1ldGhvZFBhcmFt VHlwZUludGVnZXINCj4gKyAgICAgICAgICAgICAgdGhlbiBEYXRhIGlzIG9mIHR5cGUgSW50ZWdl ciB0byBob2xkIGludGVnZXIgdmFsdWUuDQo+ICsgICAgICAgICAgICBpZiBUeXBlIGlzIEFtbE1l dGhvZFBhcmFtVHlwZVN0cmluZw0KPiArICAgICAgICAgICAgICB0aGVuIERhdGEgY29udGFpbnMg bnVsbCB0ZXJtaW5hdGVkIHN0cmluZy4NCj4gKyAgICAgICAgICAgIElmIFR5cGUgaXMgQW1sTWV0 aG9kUGFyYW1UeXBlQXJnDQo+ICsgICAgICAgICAgICAgIHRoZW4gRGF0YSBjb250YWlucyB0aGUg QXJndW1lbnQgbnVtYmVyLA0KPiArICAgICAgICAgICAgICAwIHRvIDYgYXJlIHN1cHBvcnRlZCB2 YWx1ZS4NCj4gKyAgICAgICAgICAgIElmIFR5cGUgaXMgQW1sTWV0aG9kUGFyYW1UeXBlTG9jYWwN Cj4gKyAgICAgICAgICAgICAgdGhlbiBEYXRhIGNvbnRhaW5zIHRoZSBMb2NhbCB2YXJpYWJsZSBu dW1iZXIsDQo+ICsgICAgICAgICAgICAgIDAgdG8gNyBhcmUgc3VwcG9ydGVkIHZhbHVlLg0KPiAr ICBEYXRhU2l6ZSAtIGZvciBmdXR1cmUgdXNlDQo+ICsqKi8NCj4gK3R5cGVkZWYgc3RydWN0IHsN Cj4gKyAgQU1MX01FVEhPRF9QQVJBTV9UWVBFICAgIFR5cGU7DQo+ICsgIEFNTF9NRVRIT0RfUEFS QU1fREFUQSAgICBEYXRhOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgRGF0YVNpemU7 DQo+ICt9IEFNTF9NRVRIT0RfUEFSQU07DQo+ICsNCj4gICAvKiogUGFyc2UgdGhlIGRlZmluaXRp b24gYmxvY2suDQo+DQo+ICAgICBUaGUgZnVuY3Rpb24gcGFyc2VzIHRoZSB3aG9sZSBBTUwgYmxv Yi4gSXQgc3RhcnRzIHdpdGggdGhlIEFDUEkNCj4gRFNEVC9TU0RUIEBAIC0xNjkzLDQgKzE3NDMs NjYgQEAgQW1sQWRkTmFtZVN0cmluZ1RvTmFtZWRQYWNrYWdlICgNCj4gICAgIElOIEFNTF9PQkpF Q1RfTk9ERV9IQU5ETEUgIE5hbWVkTm9kZQ0KPiAgICAgKTsNCj4NCj4gKy8qKiBBTUwgY29kZSBn ZW5lcmF0aW9uIHRvIGludm9rZS9jYWxsIGFub3RoZXIgbWV0aG9kLg0KPiArDQo+ICsgIFRoaXMg bWV0aG9kIGlzIHN1YnNldCBpbXBsZW1lbnRhdGlvbiBvZiBNZXRob2RJbnZvY2F0aW9uICBkZWZp bmVkDQo+ICsgaW4gdGhlIEFDUEkgc3BlY2lmaWNhdGlvbiA2LjUsICBzZWN0aW9uIDIwLjIuNSAi VGVybSBPYmplY3RzDQo+ICsgRW5jb2RpbmciLg0KPiArICBBZGRlZCBpbnRlZ2VyLCBzdHJpbmcs IEFyZ09iaiBhbmQgTG9jYWxPYmogc3VwcG9ydC4NCj4gKw0KPiArICBFeGFtcGxlIDE6DQo+ICsg ICAgQW1sQ29kZUdlbkludm9rZU1ldGhvZCAoIk1FVDAiLCAwLCBOVUxMLCBQYXJlbnROb2RlKTsN Cj4gKyAgICBpcyBlcXVpdmFsZW50IG9mIHRoZSBmb2xsb3dpbmcgQVNMIGNvZGU6DQo+ICsgICAg ICBNRVQwICgpOw0KPiArDQo+ICsgIEV4YW1wbGUgMjoNCj4gKyAgICBBTUxfTUVUSE9EX1BBUkFN ICBQYXJhbVs0XTsNCj4gKyAgICBQYXJhbVswXS5EYXRhLkludGVnZXIgPSAweDEwMDsNCj4gKyAg ICBQYXJhbVswXS5UeXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlSW50ZWdlcjsNCj4gKyAgICBQYXJh bVsxXS5EYXRhLkJ1ZmZlciA9ICJURVNUIjsNCj4gKyAgICBQYXJhbVsxXS5UeXBlID0gQW1sTWV0 aG9kUGFyYW1UeXBlU3RyaW5nOw0KPiArICAgIFBhcmFtWzJdLkRhdGEuQXJnID0gMDsNCj4gKyAg ICBQYXJhbVsyXS5UeXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlQXJnOw0KPiArICAgIFBhcmFtWzNd LkRhdGEuTG9jYWwgPSAyOw0KPiArICAgIFBhcmFtWzNdLlR5cGUgPSBBbWxNZXRob2RQYXJhbVR5 cGVMb2NhbDsNCj4gKyAgICBBbWxDb2RlR2VuSW52b2tlTWV0aG9kICgiTUVUMCIsIDQsIFBhcmFt LCBQYXJlbnROb2RlKTsNCj4gKw0KPiArICAgIGlzIGVxdWl2YWxlbnQgb2YgdGhlIGZvbGxvd2lu ZyBBU0wgY29kZToNCj4gKyAgICAgIE1FVDAgKDB4MTAwLCAiVEVTVCIsIEFyZzAsIExvY2FsMik7 DQo+ICsNCj4gKyAgRXhhbXBsZSAzOg0KPiArICAgIEFNTF9NRVRIT0RfUEFSQU0gIFBhcmFtWzJd Ow0KPiArICAgIFBhcmFtWzBdLkRhdGEuQXJnID0gMDsNCj4gKyAgICBQYXJhbVswXS5UeXBlID0g QW1sTWV0aG9kUGFyYW1UeXBlQXJnOw0KPiArICAgIFBhcmFtWzFdLkRhdGEuSW50ZWdlciA9IDB4 MTAwOw0KPiArICAgIFBhcmFtWzFdLlR5cGUgPSBBbWxNZXRob2RQYXJhbVR5cGVJbnRlZ2VyOw0K PiArICAgIEFtbENvZGVHZW5NZXRob2RSZXROYW1lU3RyaW5nICgiTUVUMiIsIE5VTEwsIDIsIFRS VUUsIDAsIFBhcmVudE5vZGUsICZNZXRob2ROb2RlKTsNCj4gKyAgICBBbWxDb2RlR2VuSW52b2tl TWV0aG9kICgiTUVUMyIsIDIsIFBhcmFtLCBNZXRob2ROb2RlKTsNCj4gKw0KPiArICAgIGlzIGVx dWl2YWxlbnQgb2YgdGhlIGZvbGxvd2luZyBBU0wgY29kZToNCj4gKyAgICBNZXRob2QgKE1FVDIs IDIsIFNlcmlhbGl6ZWQpDQo+ICsgICAgew0KPiArICAgICAgTUVUMyAoQXJnMCwgMHgwMTAwKQ0K PiArICAgIH0NCj4gKw0KPiArICBAcGFyYW0gW2luXSBNZXRob2ROYW1lU3RyaW5nICBNZXRob2Qg bmFtZSB0byBiZSBjYWxsZWQvaW52b2tlZC4NCj4gKyAgQHBhcmFtIFtpbl0gTnVtQXJncyAgICAg ICAgICAgTnVtYmVyIG9mIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDAgdG8gNyBhcmUgcGVybWlzc2libGUgdmFsdWVzLg0KPiArICBA cGFyYW0gW2luXSBQYXJhbWV0ZXJzICAgICAgICBjb250YWlucyB0aGUgcGFyYW1ldGVyIGRhdGEu DQo+ICsgIEBwYXJhbSBbaW5dIFBhcmVudE5vZGUgICAgICAgIHNldCBQYXJlbnROb2RlIGFzIHRo ZSBwYXJlbnQ+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBub2RlIGNy ZWF0ZWQuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBTdWNjZXNz Lg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIEludmFsaWQgcGFyYW1ldGVy Lg0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgIEZhaWxlZCB0byBhbGxvY2F0 ZSBtZW1vcnkuDQo+ICsgKiovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0FtbENvZGVH ZW5JbnZva2VNZXRob2QgKA0KPiArICBJTiAgQ09OU1QgQ0hBUjggICAgICAgICAgICAgKk1ldGhv ZE5hbWVTdHJpbmcsDQo+ICsgIElOICAgICAgICBVSU5UOCAgICAgICAgICAgICBOdW1BcmdzLA0K PiArICBJTiAgICAgICAgQU1MX01FVEhPRF9QQVJBTSAgKlBhcmFtZXRlcnMgICBPUFRJT05BTCwN Cj4gKyAgSU4gICAgICAgIEFNTF9OT0RFX0hBTkRMRSAgIFBhcmVudE5vZGUNCj4gKyAgKTsNCj4g Kw0KPiAgICNlbmRpZiAvLyBBTUxfTElCX0hfDQo+IGRpZmYgLS1naXQNCj4gYS9EeW5hbWljVGFi bGVzUGtnL0xpYnJhcnkvQ29tbW9uL0FtbExpYi9Db2RlR2VuL0FtbENvZGVHZW4uYw0KPiBiL0R5 bmFtaWNUYWJsZXNQa2cvTGlicmFyeS9Db21tb24vQW1sTGliL0NvZGVHZW4vQW1sQ29kZUdlbi5j DQo+IGluZGV4IGE2ZGIzNGZiOTcuLjY4OGVlZmRjZWYgMTAwNjQ0DQo+IC0tLSBhL0R5bmFtaWNU YWJsZXNQa2cvTGlicmFyeS9Db21tb24vQW1sTGliL0NvZGVHZW4vQW1sQ29kZUdlbi5jDQo+ICsr KyBiL0R5bmFtaWNUYWJsZXNQa2cvTGlicmFyeS9Db21tb24vQW1sTGliL0NvZGVHZW4vQW1sQ29k ZUdlbi5jDQo+IEBAIC0yLDYgKzIsNyBAQA0KPiAgICAgQU1MIENvZGUgR2VuZXJhdGlvbi4NCj4N Cj4gICAgIENvcHlyaWdodCAoYykgMjAyMCAtIDIwMjIsIEFybSBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gKyAgQ29weXJpZ2h0IChDKSAyMDIzIEFkdmFuY2VkIE1pY3JvIERl dmljZXMsIEluYy4gQWxsIHJpZ2h0cw0KPiArIHJlc2VydmVkLjxCUj4NCj4NCj4gICAgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICAgKiovDQo+IEBAIC05 MjEsNyArOTIyLDcgQEAgQW1sQ29kZUdlbk5hbWVVbmljb2RlU3RyaW5nICgNCj4gICAgIFN0YXR1 cyA9IEFtbENyZWF0ZURhdGFOb2RlICgNCj4gICAgICAgICAgICAgICAgRUFtbE5vZGVEYXRhVHlw ZVJhdywNCj4gICAgICAgICAgICAgICAgKENPTlNUIFVJTlQ4ICopU3RyaW5nLA0KPiAtICAgICAg ICAgICAgIFN0clNpemUgKFN0cmluZyksDQo+ICsgICAgICAgICAgICAgKFVJTlQzMilTdHJTaXpl IChTdHJpbmcpLA0KPiAgICAgICAgICAgICAgICAmRGF0YU5vZGUNCj4gICAgICAgICAgICAgICAg KTsNCj4gICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gQEAgLTM4NDksMyArMzg1MCwy MzYgQEAgZXhpdF9oYW5kbGVyOg0KPg0KPiAgICAgcmV0dXJuIFN0YXR1czsNCj4gICB9DQo+ICsN Cj4gKy8qKiBBTUwgY29kZSBnZW5lcmF0aW9uIHRvIGludm9rZS9jYWxsIGFub3RoZXIgbWV0aG9k Lg0KPiArDQo+ICsgIFRoaXMgbWV0aG9kIGlzIHN1YnNldCBpbXBsZW1lbnRhdGlvbiBvZiBNZXRo b2RJbnZvY2F0aW9uICBkZWZpbmVkDQo+ICsgaW4gdGhlIEFDUEkgc3BlY2lmaWNhdGlvbiA2LjUs ICBzZWN0aW9uIDIwLjIuNSAiVGVybSBPYmplY3RzDQo+ICsgRW5jb2RpbmciLg0KPiArICBBZGRl ZCBpbnRlZ2VyLCBzdHJpbmcsIEFyZ09iaiBhbmQgTG9jYWxPYmogc3VwcG9ydC4NCj4gKw0KPiAr ICBFeGFtcGxlIDE6DQo+ICsgICAgQW1sQ29kZUdlbkludm9rZU1ldGhvZCAoIk1FVDAiLCAwLCBO VUxMLCBQYXJlbnROb2RlKTsNCj4gKyAgICBpcyBlcXVpdmFsZW50IG9mIHRoZSBmb2xsb3dpbmcg QVNMIGNvZGU6DQo+ICsgICAgICBNRVQwICgpOw0KPiArDQo+ICsgIEV4YW1wbGUgMjoNCj4gKyAg ICBBTUxfTUVUSE9EX1BBUkFNICBQYXJhbVs0XTsNCj4gKyAgICBQYXJhbVswXS5EYXRhLkludGVn ZXIgPSAweDEwMDsNCj4gKyAgICBQYXJhbVswXS5UeXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlSW50 ZWdlcjsNCj4gKyAgICBQYXJhbVsxXS5EYXRhLkJ1ZmZlciA9ICJURVNUIjsNCj4gKyAgICBQYXJh bVsxXS5UeXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlU3RyaW5nOw0KPiArICAgIFBhcmFtWzJdLkRh dGEuQXJnID0gMDsNCj4gKyAgICBQYXJhbVsyXS5UeXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlQXJn Ow0KPiArICAgIFBhcmFtWzNdLkRhdGEuTG9jYWwgPSAyOw0KPiArICAgIFBhcmFtWzNdLlR5cGUg PSBBbWxNZXRob2RQYXJhbVR5cGVMb2NhbDsNCj4gKyAgICBBbWxDb2RlR2VuSW52b2tlTWV0aG9k ICgiTUVUMCIsIDQsIFBhcmFtLCBQYXJlbnROb2RlKTsNCj4gKw0KPiArICAgIGlzIGVxdWl2YWxl bnQgb2YgdGhlIGZvbGxvd2luZyBBU0wgY29kZToNCj4gKyAgICAgIE1FVDAgKDB4MTAwLCAiVEVT VCIsIEFyZzAsIExvY2FsMik7DQo+ICsNCj4gKyAgRXhhbXBsZSAzOg0KPiArICAgIEFNTF9NRVRI T0RfUEFSQU0gIFBhcmFtWzJdOw0KPiArICAgIFBhcmFtWzBdLkRhdGEuQXJnID0gMDsNCj4gKyAg ICBQYXJhbVswXS5UeXBlID0gQW1sTWV0aG9kUGFyYW1UeXBlQXJnOw0KPiArICAgIFBhcmFtWzFd LkRhdGEuSW50ZWdlciA9IDB4MTAwOw0KPiArICAgIFBhcmFtWzFdLlR5cGUgPSBBbWxNZXRob2RQ YXJhbVR5cGVJbnRlZ2VyOw0KPiArICAgIEFtbENvZGVHZW5NZXRob2RSZXROYW1lU3RyaW5nICgi TUVUMiIsIE5VTEwsIDIsIFRSVUUsIDAsIFBhcmVudE5vZGUsICZNZXRob2ROb2RlKTsNCj4gKyAg ICBBbWxDb2RlR2VuSW52b2tlTWV0aG9kICgiTUVUMyIsIDIsIFBhcmFtLCBNZXRob2ROb2RlKTsN Cj4gKw0KPiArICAgIGlzIGVxdWl2YWxlbnQgb2YgdGhlIGZvbGxvd2luZyBBU0wgY29kZToNCj4g KyAgICBNZXRob2QgKE1FVDIsIDIsIFNlcmlhbGl6ZWQpDQo+ICsgICAgew0KPiArICAgICAgTUVU MyAoQXJnMCwgMHgwMTAwKQ0KPiArICAgIH0NCj4gKw0KPiArICBAcGFyYW0gW2luXSBNZXRob2RO YW1lU3RyaW5nICBNZXRob2QgbmFtZSB0byBiZSBjYWxsZWQvaW52b2tlZC4NCj4gKyAgQHBhcmFt IFtpbl0gTnVtQXJncyAgICAgICAgICAgTnVtYmVyIG9mIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgdG8gNyBhcmUgcGVybWlzc2li bGUgdmFsdWVzLg0KPiArICBAcGFyYW0gW2luXSBQYXJhbWV0ZXJzICAgICAgICBjb250YWlucyB0 aGUgcGFyYW1ldGVyIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFBhcmVudE5vZGUgICAgICAgIHNl dCBQYXJlbnROb2RlIGFzIHRoZSBwYXJlbnQNCg0KTklUOiBzZXQtPlNldA0KDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBub2RlIGNyZWF0ZWQuDQo+ICsNCj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBTdWNjZXNzLg0KPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiAgIEludmFsaWQgcGFyYW1ldGVyLg0KPiArICBAcmV0dmFsIEVG SV9PVVRfT0ZfUkVTT1VSQ0VTICAgIEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkuDQo+ICsgKiov DQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0FtbENvZGVHZW5JbnZva2VNZXRob2QgKA0K PiArICBJTiAgQ09OU1QgQ0hBUjggICAgICAgICAgICAgKk1ldGhvZE5hbWVTdHJpbmcsDQo+ICsg IElOICAgICAgICBVSU5UOCAgICAgICAgICAgICBOdW1BcmdzLA0KPiArICBJTiAgICAgICAgQU1M X01FVEhPRF9QQVJBTSAgKlBhcmFtZXRlcnMgICBPUFRJT05BTCwNCj4gKyAgSU4gICAgICAgIEFN TF9OT0RFX0hBTkRMRSAgIFBhcmVudE5vZGUNCg0KTWF5YmUgaXQgd291bGQgYmUgd29ydGggYWxz byBoYXZpbmcgYW4gT1VUIHBhcmFtZXRlciBpbiBjYXNlIHNvbWVvbmUgZG9lc24ndCB3YW50IHRv IGF0dGFjaCB0aGUgbWV0aG9kIGludm9jYXRpb24gZGlyZWN0bHkgKGNmLiBvdGhlciBtZXRob2Rz IGluIHRoZSBmaWxlKToNCiAgIE9VVCBBTUxfT0JKRUNUX05PREVfSEFORExFICAqTmV3T2JqZWN0 Tm9kZSAgIE9QVElPTkFMDQoNCg0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAg U3RhdHVzOw0KPiArICBVSU5UOCAgICAgICAgICAgIEluZGV4Ow0KPiArICBDSEFSOCAgICAgICAg ICAgICpBbWxOYW1lU3RyaW5nOw0KPiArICBVSU5UMzIgICAgICAgICAgIEFtbE5hbWVTdHJpbmdT aXplOw0KPiArICBBTUxfREFUQV9OT0RFICAgICpEYXRhTm9kZTsNCj4gKyAgQU1MX09CSkVDVF9O T0RFICAqSW50Tm9kZTsNCj4gKyAgQU1MX05PREVfSEFORExFICBIZWFkTm9kZTsNCj4gKyAgQU1M X05PREVfSEFORExFICBDdXJyZW50Tm9kZTsNCj4gKyAgQU1MX09CSkVDVF9OT0RFICAqT2JqZWN0 Tm9kZTsNCj4gKw0KPiArICBpZiAoKE1ldGhvZE5hbWVTdHJpbmcgPT0gTlVMTCkgfHwgKFBhcmVu dE5vZGUgPT0gTlVMTCkpIHsNCj4gKyAgICBBU1NFUlQgKDApOw0KPiArICAgIHJldHVybiBFRklf SU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoKE51bUFyZ3MgPiA3KSB8 fA0KPiArICAgICAgKChQYXJhbWV0ZXJzID09IE5VTEwpICYmIChOdW1BcmdzID4gMCkpKSAgew0K PiArICAgIEFTU0VSVCAoMCk7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsN Cj4gKyAgfQ0KPiArDQo+ICsgIGlmIChQYXJhbWV0ZXJzICE9IE5VTEwpIHsNCj4gKyAgICAvLy8g VmFsaWRhdGUgYW5kIGNvbnZlcnQgdGhlIFBhcmFtZXRlcnMgdG8gdGhlIHN0cmVhbSBvZiBub2Rl DQo+ICsgICAgSGVhZE5vZGUgICAgPSBOVUxMOw0KPiArICAgIEN1cnJlbnROb2RlID0gTlVMTDsN Cj4gKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBOdW1BcmdzOyBJbmRleCsrKSB7DQo+ICsg ICAgICBzd2l0Y2ggKFBhcmFtZXRlcnNbSW5kZXhdLlR5cGUpIHsNCj4gKyAgICAgICAgY2FzZSBB bWxNZXRob2RQYXJhbVR5cGVJbnRlZ2VyOg0KPiArICAgICAgICAgIEludE5vZGUgPSBOVUxMOw0K PiArICAgICAgICAgIFN0YXR1cyAgPSBBbWxDb2RlR2VuSW50ZWdlciAoUGFyYW1ldGVyc1tJbmRl eF0uRGF0YS5JbnRlZ2VyLCAmSW50Tm9kZSk7DQo+ICsgICAgICAgICAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiArICAgICAgICAgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4g KyAgICAgICAgICAgIGdvdG8gZXhpdF9oYW5kbGVyOw0KPiArICAgICAgICAgIH0NCj4gKw0KPiAr ICAgICAgICAgIEN1cnJlbnROb2RlID0gKEFNTF9OT0RFX0hBTkRMRSlJbnROb2RlOw0KPiArICAg ICAgICAgIGJyZWFrOw0KPiArICAgICAgICBjYXNlIEFtbE1ldGhvZFBhcmFtVHlwZVN0cmluZzoN Cj4gKyAgICAgICAgICBPYmplY3ROb2RlID0gTlVMTDsNCj4gKyAgICAgICAgICBpZiAoUGFyYW1l dGVyc1tJbmRleF0uRGF0YS5CdWZmZXIgPT0gTlVMTCkgew0KPiArICAgICAgICAgICAgQVNTRVJU X0VGSV9FUlJPUiAoRUZJX0lOVkFMSURfUEFSQU1FVEVSKTsNCj4gKyAgICAgICAgICAgIFN0YXR1 cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgICAgICAgICAgIGdvdG8gZXhpdF9oYW5k bGVyOw0KPiArICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgIFN0YXR1cyA9IEFtbENvZGVH ZW5TdHJpbmcgKFBhcmFtZXRlcnNbSW5kZXhdLkRhdGEuQnVmZmVyLCAmT2JqZWN0Tm9kZSk7DQo+ ICsgICAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgICAgICAgQVNT RVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gKyAgICAgICAgICAgIGdvdG8gZXhpdF9oYW5kbGVy Ow0KPiArICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgIEN1cnJlbnROb2RlID0gKEFNTF9O T0RFX0hBTkRMRSlPYmplY3ROb2RlOw0KPiArICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICBj YXNlIEFtbE1ldGhvZFBhcmFtVHlwZUFyZzoNCj4gKyAgICAgICAgICBPYmplY3ROb2RlID0gTlVM TDsNCj4gKyAgICAgICAgICBpZiAoUGFyYW1ldGVyc1tJbmRleF0uRGF0YS5BcmcgPiAoVUlOVDgp KEFNTF9BUkc2IC0gQU1MX0FSRzApKSB7DQo+ICsgICAgICAgICAgICBBU1NFUlRfRUZJX0VSUk9S IChFRklfSU5WQUxJRF9QQVJBTUVURVIpOw0KPiArICAgICAgICAgICAgU3RhdHVzID0gRUZJX0lO VkFMSURfUEFSQU1FVEVSOw0KPiArICAgICAgICAgICAgZ290byBleGl0X2hhbmRsZXI7DQo+ICsg ICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgU3RhdHVzID0gQW1sQ3JlYXRlT2JqZWN0Tm9k ZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICBBbWxHZXRCeXRlRW5jb2RpbmdCeU9wQ29kZSAo QU1MX0FSRzAgKyBQYXJhbWV0ZXJzW0luZGV4XS5EYXRhLkFyZywgMCksDQo+ICsgICAgICAgICAg ICAgICAgICAgICAwLA0KPiArICAgICAgICAgICAgICAgICAgICAgJk9iamVjdE5vZGUNCj4gKyAg ICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiArICAgICAgICAgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gKyAgICAg ICAgICAgIGdvdG8gZXhpdF9oYW5kbGVyOw0KPiArICAgICAgICAgIH0NCj4gKw0KPiArICAgICAg ICAgIEN1cnJlbnROb2RlID0gKEFNTF9OT0RFX0hBTkRMRSlPYmplY3ROb2RlOw0KPiArICAgICAg ICAgIGJyZWFrOw0KPiArICAgICAgICBjYXNlIEFtbE1ldGhvZFBhcmFtVHlwZUxvY2FsOg0KPiAr ICAgICAgICAgIE9iamVjdE5vZGUgPSBOVUxMOw0KPiArICAgICAgICAgIGlmIChQYXJhbWV0ZXJz W0luZGV4XS5EYXRhLkxvY2FsID4gKFVJTlQ4KShBTUxfTE9DQUw3IC0gQU1MX0xPQ0FMMCkpIHsN Cj4gKyAgICAgICAgICAgIEFTU0VSVF9FRklfRVJST1IgKEVGSV9JTlZBTElEX1BBUkFNRVRFUik7 DQo+ICsgICAgICAgICAgICBTdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAg ICAgICAgICBnb3RvIGV4aXRfaGFuZGxlcjsNCj4gKyAgICAgICAgICB9DQo+ICsNCj4gKyAgICAg ICAgICBTdGF0dXMgPSBBbWxDcmVhdGVPYmplY3ROb2RlICgNCj4gKyAgICAgICAgICAgICAgICAg ICAgIEFtbEdldEJ5dGVFbmNvZGluZ0J5T3BDb2RlIChBTUxfTE9DQUwwICsgUGFyYW1ldGVyc1tJ bmRleF0uRGF0YS5Mb2NhbCwgMCksDQo+ICsgICAgICAgICAgICAgICAgICAgICAwLA0KPiArICAg ICAgICAgICAgICAgICAgICAgJk9iamVjdE5vZGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICk7 DQo+ICsgICAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgICAgICAg QVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gKyAgICAgICAgICAgIGdvdG8gZXhpdF9oYW5k bGVyOw0KPiArICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgIEN1cnJlbnROb2RlID0gKEFN TF9OT0RFX0hBTkRMRSlPYmplY3ROb2RlOw0KPiArICAgICAgICAgIGJyZWFrOw0KPiArICAgICAg ICBkZWZhdWx0Og0KPiArICAgICAgICAgIEFTU0VSVF9FRklfRVJST1IgKEVGSV9JTlZBTElEX1BB UkFNRVRFUik7DQo+ICsgICAgICAgICAgU3RhdHVzID0gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0K PiArICAgICAgICAgIGdvdG8gZXhpdF9oYW5kbGVyOw0KPiArICAgICAgICAgIGJyZWFrOw0KPiAr ICAgICAgfQ0KPiArDQo+ICsgICAgICBpZiAoSGVhZE5vZGUgPT0gTlVMTCkgew0KPiArICAgICAg ICBIZWFkTm9kZSA9IEN1cnJlbnROb2RlOw0KDQpJIHRoaW5rIHRoZXJlIGlzIGFuIGlzc3VlIGhl cmUuIFRoZSBtZXRob2QgYXJndW1lbnRzIHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgdmFyaWFi bGUgbGlzdCBvZiBhcmd1bWVudHMgb2YgdGhlIHBhcmVudCwgbm90IG9mIGFub3RoZXIgYXJndW1l bnQuDQoNCkZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZzoNClNjb3BlIChfU0IpIHsNCiAgIE1F VDAgKEFyZzAsIEFyZzEsIEFyZzIpDQp9DQoNClNob3VsZCBjcmVhdGUgYSB0cmVlIGFzOg0KX1NC DQpcLSAoVmFyaWFibGUgbGlzdCBvZiBhcmd1bWVudHMgb2YgX1NCKQ0KICAgLSBNRVQwDQogICAt IEFyZzANCiAgIC0gQXJnMQ0KICAgLSBBcmcyDQoNCldpdGggdGhlIHByZXNlbnQgY29kZSwgdGhl IGNyZWF0ZWQgdHJlZSBpczoNCl9TQg0KXC0gKFZhcmlhYmxlIGxpc3Qgb2YgYXJndW1lbnRzIG9m IF9TQikNCiAgIC0gTUVUMA0KICAgLSBBcmcwDQogICBcLSAoVmFyaWFibGUgbGlzdCBvZiBhcmd1 bWVudHMgb2YgQXJnMCkNCiAgICAgLSBBcmcxDQogICAgIC0gQXJnMg0KDQpXaGVuIHNlcmlhbGl6 aW5nIHRoZSB0cmVlLCB0aGUgZ2VuZXJhdGVkIGJpbmFyeSBpcyBpZGVudGljYWwsIGJ1dCB0aGUg dHJlZSBpcyBpbmNvcnJlY3QuDQoNCj4gKyAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgIFN0YXR1 cyA9IEFtbFZhckxpc3RBZGRUYWlsICgNCj4gKyAgICAgICAgICAgICAgICAgICBIZWFkTm9kZSwN Cj4gKyAgICAgICAgICAgICAgICAgICBDdXJyZW50Tm9kZQ0KPiArICAgICAgICAgICAgICAgICAg ICk7DQo+ICsgICAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgICAgICBB U1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiArICAgICAgICAgIGdvdG8gZXhpdF9oYW5kbGVy Ow0KPiArICAgICAgICB9DQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAg Ly8vIENyZWF0ZSBjYWxsZWQvaW52b2tlZCBtZXRob2QgbmFtZSBzdHJpbmcgIFN0YXR1cyA9DQo+ ICsgQ29udmVydEFzbE5hbWVUb0FtbE5hbWUgKE1ldGhvZE5hbWVTdHJpbmcsICZBbWxOYW1lU3Ry aW5nKTsgIGlmDQo+ICsgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIEFTU0VSVF9FRklf RVJST1IgKFN0YXR1cyk7DQo+ICsgICAgZ290byBleGl0X2hhbmRsZXI7DQo+ICsgIH0NCj4gKw0K PiArICBTdGF0dXMgPSBBbWxHZXROYW1lU3RyaW5nU2l6ZSAoQW1sTmFtZVN0cmluZywgJkFtbE5h bWVTdHJpbmdTaXplKTsNCj4gKyBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgQVNT RVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gKyAgICBGcmVlUG9vbCAoQW1sTmFtZVN0cmluZyk7 DQo+ICsgICAgZ290byBleGl0X2hhbmRsZXI7DQo+ICsgIH0NCj4gKw0KPiArICBEYXRhTm9kZSA9 IE5VTEw7DQo+ICsgIFN0YXR1cyAgID0gQW1sQ3JlYXRlRGF0YU5vZGUgKA0KPiArICAgICAgICAg ICAgICAgRUFtbE5vZGVEYXRhVHlwZU5hbWVTdHJpbmcsDQo+ICsgICAgICAgICAgICAgICAoVUlO VDggKilBbWxOYW1lU3RyaW5nLA0KPiArICAgICAgICAgICAgICAgQW1sTmFtZVN0cmluZ1NpemUs DQo+ICsgICAgICAgICAgICAgICAmRGF0YU5vZGUNCj4gKyAgICAgICAgICAgICAgICk7DQo+ICsg IEZyZWVQb29sIChBbWxOYW1lU3RyaW5nKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiArICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ICsgICAgZ290byBleGl0X2hh bmRsZXI7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMgPSBBbWxWYXJMaXN0QWRkVGFpbCAoDQo+ ICsgICAgICAgICAgICAgKEFNTF9OT0RFX0hBTkRMRSlQYXJlbnROb2RlLA0KPiArICAgICAgICAg ICAgIChBTUxfTk9ERV9IQU5ETEUpRGF0YU5vZGUNCj4gKyAgICAgICAgICAgICApOw0KPiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQoNCkkgdGhpbmsgRGF0YU5vZGUgd291bGQgbm90IGJl IGZyZWVkIGlmIHdlIGZhaWwgaGVyZS4NCg0KPiArICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1 cyk7DQo+ICsgICAgZ290byBleGl0X2hhbmRsZXI7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMg PSBBbWxWYXJMaXN0QWRkVGFpbCAoDQo+ICsgICAgICAgICAgICAgKEFNTF9OT0RFX0hBTkRMRSlQ YXJlbnROb2RlLA0KPiArICAgICAgICAgICAgIEhlYWROb2RlDQo+ICsgICAgICAgICAgICAgKTsN Cj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIEFTU0VSVF9FRklfRVJST1Ig KFN0YXR1cyk7DQo+ICsgICAgZ290byBleGl0X2hhbmRsZXI7DQo+ICsgIH0NCj4gKw0KPiArICBy ZXR1cm4gU3RhdHVzOw0KPiArDQo+ICtleGl0X2hhbmRsZXI6DQo+ICsgIGlmIChIZWFkTm9kZSAh PSBOVUxMKSB7DQo+ICsgICAgQW1sRGVsZXRlVHJlZSAoSGVhZE5vZGUpOw0KPiArICB9DQo+ICsN Cj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCg0KCi09LT0tPS09LT0tPS09LT0tPS09LT0tCkdy b3Vwcy5pbyBMaW5rczogWW91IHJlY2VpdmUgYWxsIG1lc3NhZ2VzIHNlbnQgdG8gdGhpcyBncm91 cC4KVmlldy9SZXBseSBPbmxpbmUgKCMxMTI3NDIpOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cv ZGV2ZWwvbWVzc2FnZS8xMTI3NDIKTXV0ZSBUaGlzIFRvcGljOiBodHRwczovL2dyb3Vwcy5pby9t dC8xMDMyNTY4NjQvNzY4NjE3NgpHcm91cCBPd25lcjogZGV2ZWwrb3duZXJAZWRrMi5ncm91cHMu aW8KVW5zdWJzY3JpYmU6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC91bnN1YiBbcmVi ZWNjYUBvcGVuZncuaW9dCi09LT0tPS09LT0tPS09LT0tPS09LT0tCgoNCg==