From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR02-VE1-obe.outbound.protection.outlook.com (EUR02-VE1-obe.outbound.protection.outlook.com [40.107.2.68]) by mx.groups.io with SMTP id smtpd.web11.35562.1629782570488463690 for ; Mon, 23 Aug 2021 22:22:51 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=AsvXBt1c; spf=pass (domain: arm.com, ip: 40.107.2.68, mailfrom: omkar.kulkarni@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=I70JVe+7Fb4aX0ikQnC1e5t+Gtj953i+OQxIpnNsEAU=; b=AsvXBt1cJpF6hV01RxoeGXXMmB0s2Ug7dHZh0e7X4DKyPYAGmyfQVlaHoK2+nq6kPDW85AHGqyU0gAm28yLkl+RIiDSOPVSFdaF2YMJxTjjbdY60xjyljIiDHVPBZIu8Gfs9e2KBv2jAeDQsUtIwo/gqJ4lC0EiQwXpubBv23+g= Received: from AM5PR0502CA0023.eurprd05.prod.outlook.com (2603:10a6:203:91::33) by PAXPR08MB6893.eurprd08.prod.outlook.com (2603:10a6:102:13f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4436.19; Tue, 24 Aug 2021 05:22:47 +0000 Received: from VE1EUR03FT044.eop-EUR03.prod.protection.outlook.com (2603:10a6:203:91:cafe::31) by AM5PR0502CA0023.outlook.office365.com (2603:10a6:203:91::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4436.19 via Frontend Transport; Tue, 24 Aug 2021 05:22:47 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT044.mail.protection.outlook.com (10.152.19.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4436.19 via Frontend Transport; Tue, 24 Aug 2021 05:22:46 +0000 Received: ("Tessian outbound 1a0c40aa17d8:v103"); Tue, 24 Aug 2021 05:22:46 +0000 X-CR-MTA-TID: 64aa7808 Received: from 7d52fea0f33b.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 72C1B64A-B4DA-421A-A0AD-7167D553FA8E.1; Tue, 24 Aug 2021 05:22:41 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 7d52fea0f33b.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 24 Aug 2021 05:22:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JVH76C5uPTre66pqC4xytgztDj2XAlmPVOn2XOmPkAtDx7cMqUsvI3vSKQ+kE8inE1VsMVdSkKG+xB9XAtbXWW6V8w9BXCro4ONAA3XhvBy05+CAfFzyQBKMT9+5kxm59Cxh7f+B3OElzBh5WsP+krJJZQAgp+/U6wYJHmBtgcBIB8DzKtpePi/IUBmwdw3CjJtGhQhxbkFu8PRLFOby5UGrzbnor5RJxt2RJxgYmDdw+EsH7xbhjJiAH7NldkNumHmP/F7o7KpU/zmYJrbUU1JCq/t8Nm869qGt/PT7p3jX4x8f6pciBOzDyu4Ya9M4Ry5olYZPF71mXXQwoVd4BA== 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-SenderADCheck; bh=I70JVe+7Fb4aX0ikQnC1e5t+Gtj953i+OQxIpnNsEAU=; b=JvN/vc7DgJjbPL8O/dXFtk66tenBRSCdx81ZLpCLbPCFUv/FeUCmPdcp/iceBCSxJawMO9mE6jHZ8+ixlH9dDJ9WYICAfgeTQyjFz3YAd5YWVrTCggE+0pMyqub5dnCwRNEurze9tyvuMsyOE8HPYhBPvQU8rAO1x1QiG/q5PZBQClGtt0F4vNyUq2A7SfK4f4w5XMa7IdkuZkj8G41mjOzxIhjjs8FUuY/whP1XD+4Nrr8PfI89vz3cqNUZgfyqY00LzgPclJ5jHAw70GVSl9zdOxZu4a3ClPO4RfRLIwwZtj7L+Ue4PrxzLNNd+oUgRqK+NZdb/QiLpoKAtet+Mw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=I70JVe+7Fb4aX0ikQnC1e5t+Gtj953i+OQxIpnNsEAU=; b=AsvXBt1cJpF6hV01RxoeGXXMmB0s2Ug7dHZh0e7X4DKyPYAGmyfQVlaHoK2+nq6kPDW85AHGqyU0gAm28yLkl+RIiDSOPVSFdaF2YMJxTjjbdY60xjyljIiDHVPBZIu8Gfs9e2KBv2jAeDQsUtIwo/gqJ4lC0EiQwXpubBv23+g= Received: from DBAPR08MB5781.eurprd08.prod.outlook.com (2603:10a6:10:1ad::23) by DB8PR08MB5131.eurprd08.prod.outlook.com (2603:10a6:10:38::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4436.19; Tue, 24 Aug 2021 05:22:39 +0000 Received: from DBAPR08MB5781.eurprd08.prod.outlook.com ([fe80::c047:90bc:1a3b:4d88]) by DBAPR08MB5781.eurprd08.prod.outlook.com ([fe80::c047:90bc:1a3b:4d88%8]) with mapi id 15.20.4436.025; Tue, 24 Aug 2021 05:22:39 +0000 From: "Omkar Anand Kulkarni" To: Sami Mujawar , "devel@edk2.groups.io" CC: Ard Biesheuvel , nd Subject: Re: [PATCH v2 1/4] ArmPlatformPkg: Allow dynamic generation of HEST ACPI table Thread-Topic: [PATCH v2 1/4] ArmPlatformPkg: Allow dynamic generation of HEST ACPI table Thread-Index: AQHXh5z5vkGtdWuXO0+SdWMJQYIX1auBet8A Date: Tue, 24 Aug 2021 05:22:39 +0000 Message-ID: References: <20210710161831.30433-1-omkar.kulkarni@arm.com> <20210710161831.30433-2-omkar.kulkarni@arm.com> <59009d52-3d49-29bd-3a47-91536d569004@arm.com> In-Reply-To: <59009d52-3d49-29bd-3a47-91536d569004@arm.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 9A05A88357B9444B98E3216BBD5B6B1D.0 x-checkrecipientchecked: true Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 4ad17e33-b09b-4add-bafe-08d966bf3568 x-ms-traffictypediagnostic: DB8PR08MB5131:|PAXPR08MB6893: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 9mYqivaWVeUSJ01ihjrKVkMiPpERrjEkXNxJ8BbqXcnn+LovyJf2N+SiADklU/yBOSXh11B5NpKWB8FgLDvuPvRVo6VS9GB5aUBp89iPOJzlaO6Zhcf7hEAiAe8KnmnsgQ7BZqj19abWdM+ZBt3d4NlJlZ7ub5U6LPY/OfOgOhco9FeYaT2u6s8xfqBJirWHeKfyEfRMJxheKEIVoPw6iIHoxHbobL469HT8JHIZuknfoUDZsZ7N8aAqhDl2cPCbxxMx+BCCFtPO29SvJPrddQlpDlfTEL5zW+g7p7BB20FQlkWfSi1Fb1atABpe3nXxxEvnPZAkYsOQ+IDWHgyeg6k0X2Ysuodso8dzLRNHkJF5N7phUTrkj46/dCFcpoP6Xv/t5tu258bMRKaQoawM68XboJB9F7GCdQpGO5v4HhAn8XQoCMToVNYafJ/DejsOne2tcBVci0uNLv1/E90vYhTiTOxkDDviH/9xLOjfDUIP12tUl65KYX9E9u938dH2kp75EEqF/fw+c577QZa1rsdvsL8GtGui/N2dtMrntBMynwOC6gr1FT6bgQyrKXP5GXFblkIBsouTPxuIgZnlz+qAZGGrAalcYOOvuf8YkW6/ycfUE9+lsPbeDmqNK5FAuSVnCCDSSKn6mSpzWyhpMz1Ei/8AmVvikSRm5EY7F4eqL+yRXku3n5m2kYPwRxeNKYWQK0HTacvHbnJl82XryQ== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5781.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(346002)(136003)(39860400002)(376002)(396003)(55016002)(8676002)(54906003)(9686003)(19627235002)(76116006)(110136005)(6506007)(186003)(53546011)(64756008)(66476007)(66446008)(8936002)(52536014)(26005)(66946007)(316002)(66556008)(4326008)(86362001)(122000001)(30864003)(478600001)(5660300002)(71200400001)(33656002)(83380400001)(7696005)(38070700005)(38100700002)(2906002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QkZJVFl4ZmU4Q0IvdDR6azFJeG96cmtzV1h4SWlrMHRLNmxqK3FIbGZQR2tL?= =?utf-8?B?RGFRaDA1ZEZsemx6VG1sVTZmdXNRNUkrMCsrZHFkemQwcVEvanZwZ0N5SEkr?= =?utf-8?B?ZnFTM3RPQnR0ajQ5N0FicHFlOXlRZ1dMVjllM3hPYUNkeXN4a3lsdEdDWmR6?= =?utf-8?B?dVo1czFJREtaUk1oTytVY0M2aUtBalF4UHZsRnFnQ09zVWpMU2JuazdQelNB?= =?utf-8?B?TnpBVVRpblh4VHFEcHZDNDMrTUhvemNZanFBNURrWHFlTlpWdVZDaHRTaTVY?= =?utf-8?B?K2QxaUpZZFZPSS9vME1sQ0YxS2k1dEJ1VmNwNEI2N0NUTHhOKzAwei90WU1R?= =?utf-8?B?encyTjNuWTVJM0Vtc25WQTdJRFRvRHN2QVR3TzdyS21XQWhrZUxqbVJaQkFx?= =?utf-8?B?SkdYVVRHRXZrZUg4dUFxUDRteU5udVZGY2J6MjcrbzRxeVA0b2gxZjRuemFr?= =?utf-8?B?RTkveDlVcVBjYmUrbDJ1TFFCVHdXYWF5ZllpYnkzY0h3RTk5N1l0M3pjV2tq?= =?utf-8?B?R2p6ZVdocSt6T2JGTkJNSVNiVFVaVFBJRmd0djZHeWhwemUrS2NKbHlVVlFJ?= =?utf-8?B?VUFpOXN2MEhVOFpWSDB4bEsrWStMejVwZUlSMDYwa0F3emRPb21mRzJkc3hi?= =?utf-8?B?UGFPdGlIbkFHK21QdVE3c2dzRFY1UTg3U2piVERXZXE0eTJoVlphNWhpM0tP?= =?utf-8?B?Y0JqT3NVNDNPZTRwYnZ3aVdyMFMzVVYwZm1MTld1b1pjNTZacTFpV09DM29B?= =?utf-8?B?Qmk0NGFMbVJrMTZtRnY1OEk0dWp2ak9Jd2hlNXlNUHFtMC9ON09SSWFaZmtq?= =?utf-8?B?TDRsT3EvYkZsRk93blZRb0RUK1BQVzE2TUxYakpRQmIyM0xMZHV1dzlXTmcx?= =?utf-8?B?YVFSNURqM1dPLzd3SC94aXRuWW9ZU3R2UWYyZDhJV2ErbkdTaGhIb3ZrN1dX?= =?utf-8?B?d05VVUpmbFdVNUJLYmpaQ3ZwOXFxQ0ErbFNQUVhQcUFQOGZWZ1dCWGVVVG1Z?= =?utf-8?B?Wk80ZFZNdlVwZmpIbG1xdExPdFptaGtweFNvSXM0NEV2eVppWThsNVg5cjlQ?= =?utf-8?B?U2NhaXNwY2M2cndRMTllQ3pIeU4xOVRoQWFRbUFXNndMZi92dWhTZWZ2WUNj?= =?utf-8?B?U3FkRnFFUTNYWEUya3VHR2ZLSFBxcFZlaXRNd2gwY2hTWnF1cmxvamJsVEsw?= =?utf-8?B?ZEhIZE9vT09adnYwd2J4bVFiNjZDLy92NUJyTHRhWms3ZVJibFhzSDFFaVdH?= =?utf-8?B?Y2w0T0pGYUN5VzNnZzFJaGZsenVuTXJZUDlIM0EzbWVHWWRTQzhrWWFkaE1N?= =?utf-8?B?R2lSV0txT0xhTVUzR2w2bkpNNTBIei9YUGpaVVhKdU96Sm9ZNzlDZ1JudHdV?= =?utf-8?B?UW9QOUN5K2U1cUxWMTYrRkdEVmc5RzlUYVVjWjI3cXhJcXZ6QVMzVEdycXBw?= =?utf-8?B?bXBQWk42WlE3c2NHVUtmd0hEQjNCSDlRKzBkdkZJSmU2SDZtV3F0N3hyT3Z1?= =?utf-8?B?a3RnNDhITzVwNE1SM05WcXRzYVBBZ0c4UHVtZDFSeERJYzNtRWdDVGFaSFJw?= =?utf-8?B?WlZndkxhaER6ZTZhaS94OWhNemNxTDRtV2d0RCtsQlZGRXpkNkVaelNLWmdU?= =?utf-8?B?SE1DRnQ0Y1d4alRuK2JvYkJLaUxWNVcyVnE5bjlnbWxPS3hXZTRjYzJPVC9M?= =?utf-8?B?YjFHL1FkL01hdjkwandWTXFleWpWcmZhQzgvNWhOb0F3QTN2aEs4cVpmd1I1?= =?utf-8?Q?BLZPyh2H3oU6LuRhVDq7AX6ANfrhIE5pbxbqnk9?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5131 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Return-Path: Omkar.Kulkarni@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT044.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: de1b6260-d5e9-497e-f57b-08d966bf30dc X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: u9ixIoCrXrvA89DwXngKXrS6JKPZ+vILWveOy9inzXLp1qh0O8MFUaPcfNcw+Q7PcPJEU1OiAjdiVtPldPiZmr6Vuib9BV2ot4bx5o/Eafel0ff140fGihWAMrJLXV1Du37xhwg/VViLbRpMqW1cW3l9zz/6qRmNEFyPPJx/hAJIjJ600V2gcqnOchnRcjvVcMDqR3EaF8DAzpIdErP+iFqyd3ccDSl0PWe2LP0txwCPSqG1bccuYpQw4fd1Wt/ri3xFPD8cEclzjYxN1vSxWifl2GrLQOPx5wRFneF5Exe/v8iwE/+mw/yqiHvT5e8+74qJFczm9SgxwIRHbMx8RdynUVb9Vii3JIF3ZX7OPOvbuJ9/ylP9JVw82bWthIz0QHgIgF3Chypr8TBvdeJOoTOvnVEGm/0Olbmbm5SZzOeDC2dPw0C3IcfjHco9HYdSfg3PZ5DoyiRpM9I23y1RR7me2R49rq5pjb14mkCkD0rvL4pgslemUvoFRUoz75457wQHhhyNAoeuC+umUqkFa4aQs9cXBfj3Vo+82+xKaPbE3c0jP2g1i0AVYlPOEzWAnBvQPNTHM/QeJvoF3uXMyKa2M3hWXYBopLojwnNv6y2IE58WvrCUoHvgj9Y++Ah+ZRCYhijKYp5ybzoQC+1zJNd4xf5voNnexIFgyHm47K00z+/WUCKRgmuMjoS3mO0nhwNPtxCshE8lgTNcRXO8Fw== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(4636009)(396003)(136003)(376002)(346002)(39860400002)(46966006)(36840700001)(186003)(82740400003)(9686003)(8676002)(82310400003)(8936002)(55016002)(26005)(316002)(6506007)(36860700001)(81166007)(4326008)(30864003)(2906002)(53546011)(83380400001)(7696005)(70586007)(70206006)(19627235002)(478600001)(33656002)(110136005)(54906003)(5660300002)(52536014)(86362001)(356005)(47076005)(336012);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Aug 2021 05:22:46.9089 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4ad17e33-b09b-4add-bafe-08d966bf3568 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT044.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6893 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQpIaSBTYW1pLA0KDQpUaGFua3MgZm9yIHJldmlld2luZyB0aGlzIHBhdGNoLiBQbGVhc2UgZmlu ZCBteSByZXNwb25zZSBpbmxpbmUuDQoNClJlZ2FyZHMsDQpPbWthcg0KDQpIaSBPbWthciwNClBs ZWFzZSBmaW5kIG15IHJlc3BvbnNlIG1hcmtlZCBpbmxpbmUgYXMgW1NBTUldLg0KUmVnYXJkcywN ClNhbWkgTXVqYXdhcg0KDQpPbiAxMC8wNy8yMDIxIDA1OjE4IFBNLCBPbWthciBBbmFuZCBLdWxr YXJuaSB3cm90ZToNCkludHJvZHVjZSB0aGUgSEVTVCB0YWJsZSBnZW5lcmF0aW9uIHByb3RvY29s IHRoYXQgYWxsb3dzIHBsYXRmb3JtcyB0bw0KYnVpbGQgdGhlIHRhYmxlIHdpdGggbXVsdGlwbGUg ZXJyb3Igc291cmNlIGRlc2NyaXB0b3JzIGFuZCBpbnN0YWxsIHRoZQ0KdGFibGUuIFRoZSBwcm90 b2NvbCBwcm92aWRlcyB0d28gaW50ZXJmYWNlcy4gVGhlIGZpcnN0IGludGVyZmFjZSBhbGxvd3MN CmZvciBhZGRpbmcgbXVsdGlwbGUgZXJyb3Igc291cmNlIGRlc2NyaXB0b3JzIGludG8gdGhlIEhF U1QgdGFibGUuIFRoZQ0Kc2Vjb25kIGludGVyZmFjZSBjYW4gdGhlbiBiZSB1c2VkIHRvIGR5bmFt aWNhbGx5IGluc3RhbGwgdGhlIGZ1bGx5DQpwb3B1bGF0ZWQgSEVTVCB0YWJsZS4gVGhpcyBhbGxv d3MgbXVsdGlwbGUgZHJpdmVycyBhbmQvb3IgbGlicmFyaWVzIHRvDQpkeW5hbWljYWxseSByZWdp c3RlciBlcnJvciBzb3VyY2UgZGVzY3JpcHRvcnMgaW50byB0aGUgSEVTVCB0YWJsZS4NCg0KQ28t YXV0aG9yZWQtYnk6IFRob21hcyBBYnJhaGFtIG1haWx0bzp0aG9tYXMuYWJyYWhhbUBhcm0uY29t DQpTaWduZWQtb2ZmLWJ5OiBPbWthciBBbmFuZCBLdWxrYXJuaSBtYWlsdG86b21rYXIua3Vsa2Fy bmlAYXJtLmNvbQ0KLS0tDQogQXJtUGxhdGZvcm1Qa2cvQXJtUGxhdGZvcm1Qa2cuZGVjICAgICAg ICAgICAgICAgfCAgIDQgKw0KIEFybVBsYXRmb3JtUGtnL0RyaXZlcnMvQXBlaS9IZXN0RHhlL0hl c3REeGUuaW5mIHwgIDQ5ICsrKw0KIEFybVBsYXRmb3JtUGtnL0luY2x1ZGUvUHJvdG9jb2wvSGVz dFRhYmxlLmggICAgIHwgIDcxICsrKysNCiBBcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL0FwZWkvSGVz dER4ZS9IZXN0RHhlLmMgICB8IDM1NCArKysrKysrKysrKysrKysrKysrKw0KIDQgZmlsZXMgY2hh bmdlZCwgNDc4IGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL0FybVBsYXRmb3JtUGtnL0Fy bVBsYXRmb3JtUGtnLmRlYyBiL0FybVBsYXRmb3JtUGtnL0FybVBsYXRmb3JtUGtnLmRlYw0KaW5k ZXggM2EyNWRkY2RjOGNhLi5lNGFmZTVkYThlMTEgMTAwNjQ0DQotLS0gYS9Bcm1QbGF0Zm9ybVBr Zy9Bcm1QbGF0Zm9ybVBrZy5kZWMNCisrKyBiL0FybVBsYXRmb3JtUGtnL0FybVBsYXRmb3JtUGtn LmRlYw0KQEAgLTEyNywzICsxMjcsNyBAQA0KICAgZ0FybVBsYXRmb3JtVG9rZW5TcGFjZUd1aWQu UGNkUEwwMzFSdGNQcG1BY2N1cmFjeXwzMDAwMDAwMDB8VUlOVDMyfDB4MDAwMDAwMjINCiANCiAg IGdBcm1QbGF0Zm9ybVRva2VuU3BhY2VHdWlkLlBjZFdhdGNoZG9nQ291bnR8MHgwfFVJTlQzMnww eDAwMDAwMDMzDQorDQorW1Byb3RvY29scy5jb21tb25dDQorICAjIyBBcm0gUGxhdGZvcm0gSEVT VCB0YWJsZSBnZW5lcmF0aW9uIHByb3RvY29sDQorICBnSGVzdFRhYmxlUHJvdG9jb2xHdWlkID0g eyAweDcwNWJkY2Q5LCAweDhjNDcsIDB4NDU3ZSwgeyAweGFkLCAweDBkLCAweGY3LCAweDg2LCAw eGYzLCAweDRhLCAweDBkLCAweDYzIH0gfQ0KZGlmZiAtLWdpdCBhL0FybVBsYXRmb3JtUGtnL0Ry aXZlcnMvQXBlaS9IZXN0RHhlL0hlc3REeGUuaW5mIGIvQXJtUGxhdGZvcm1Qa2cvRHJpdmVycy9B cGVpL0hlc3REeGUvSGVzdER4ZS5pbmYNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwMDAwMDAuLjkxYzczODViZjdmZg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQXJtUGxhdGZvcm1Q a2cvRHJpdmVycy9BcGVpL0hlc3REeGUvSGVzdER4ZS5pbmYNCkBAIC0wLDAgKzEsNDkgQEANCisj IyBAZmlsZQ0KKyMgIER4ZSBkcml2ZXIgdGhhdCBjcmVhdGVzIGFuZCBwdWJsaXNoZXMgdGhlIEhF U1QgdGFibGUuDQorIw0KKyMgIFRoaXMgZHJpdmVyIGNyZWF0ZXMgSEVTVCBoZWFkZXIgYW5kIHBy b3ZpZGVzIHByb3RvY29sIHNlcnZpY2UgdG8gYXBwZW5kDQorIyAgYW5kIGluc3RhbGwgdGhlIEhF U1QgdGFibGUuDQorIw0KKyMgIENvcHlyaWdodCAoYykgMjAyMCAtIDIwMjEsIEFSTSBMaW1pdGVk LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQorIw0KKyMjDQorDQorW0RlZmluZXNdDQorICBJTkZfVkVSU0lPTiAg ICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDFBDQorICBCQVNFX05BTUUgICAgICAgICAgICAg ICAgICAgICAgPSBIZXN0RHhlDQorICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA5 MzMwOTlhMi1lZjcxLTRlMDAtODJhYS1hNzliMWUwYTNiMzgNCisgIE1PRFVMRV9UWVBFICAgICAg ICAgICAgICAgICAgICA9IERYRV9EUklWRVINCisgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAg ICAgICA9IDEuMA0KKyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgICAgID0gSGVzdEluaXRp YWxpemUNCisNCitbU291cmNlcy5Db21tb25dDQorICBIZXN0RHhlLmMNCisNCitbUGFja2FnZXNd DQorICBBcm1Qa2cvQXJtUGtnLmRlYw0KKyAgQXJtUGxhdGZvcm1Qa2cvQXJtUGxhdGZvcm1Qa2cu ZGVjDQorICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KKyAgTWRlUGtnL01kZVBrZy5k ZWMNCisgIFBsYXRmb3JtL0FSTS9TZ2lQa2cvU2dpUGxhdGZvcm0uZGVjDQorDQorW0xpYnJhcnlD bGFzc2VzXQ0KKyAgQXJtTGliDQorICBCYXNlTWVtb3J5TGliDQorICBEZWJ1Z0xpYg0KKyAgVWVm aURyaXZlckVudHJ5UG9pbnQNCisgIFVlZmlMaWINCisNCitbUHJvdG9jb2xzXQ0KKyAgZ0VmaUFj cGlUYWJsZVByb3RvY29sR3VpZCAgICAgICAgICMjIFBST1RPQ09MIEFMV0FZU19DT05TVU1FRA0K KyAgZ0hlc3RUYWJsZVByb3RvY29sR3VpZCAgICAgICAgICAgICMjIFBST0RVQ0VTDQorDQorW0Zp eGVkUGNkXQ0KKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEFjcGlEZWZhdWx0 Q3JlYXRvcklkDQorICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkQWNwaURlZmF1 bHRDcmVhdG9yUmV2aXNpb24NCisgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RB Y3BpRGVmYXVsdE9lbUlkDQorICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkQWNw aURlZmF1bHRPZW1SZXZpc2lvbg0KKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBj ZEFjcGlEZWZhdWx0T2VtVGFibGVJZA0KKw0KK1tEZXBleF0NCisgIFRSVUUNCmRpZmYgLS1naXQg YS9Bcm1QbGF0Zm9ybVBrZy9JbmNsdWRlL1Byb3RvY29sL0hlc3RUYWJsZS5oIGIvQXJtUGxhdGZv cm1Qa2cvSW5jbHVkZS9Qcm90b2NvbC9IZXN0VGFibGUuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQN CmluZGV4IDAwMDAwMDAwMDAwMC4uM2IyZTFmN2Q5MjAzDQotLS0gL2Rldi9udWxsDQorKysgYi9B cm1QbGF0Zm9ybVBrZy9JbmNsdWRlL1Byb3RvY29sL0hlc3RUYWJsZS5oDQpAQCAtMCwwICsxLDcx IEBADQorLyoqIEBmaWxlDQorICBCdWlsZHMgYW5kIGluc3RhbGxzIHRoZSBIRVNUIEFDUEkgdGFi bGUuDQorDQorICBEZWZpbmUgdGhlIHByb3RvY29sIGludGVyZmFjZSB0aGF0IGFsbG93cyBIRVNU IEFDUEkgdGFibGUgdG8gYmUgY3JlYXRlZCwNCisgIHBvcHVsYXRlZCB3aXRoIGVycm9yIHJlY29y ZCBkZXNjcmlwdGlvbnMgYW5kIGluc3RhbGxhdGlvbiBvZiB0aGUgSEVTVCBBQ1BJDQorICB0YWJs ZS4NCisNCisgIENvcHlyaWdodCAoYykgMjAyMCAtIDIwMjEsIEFSTSBMaW1pdGVkLiBBbGwgcmln aHRzIHJlc2VydmVkLg0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCisqKi8NCisNCisjaWZuZGVmIEhFU1RfVEFCTEVfSF8NCisjZGVmaW5lIEhFU1RfVEFC TEVfSF8NCisNCisjZGVmaW5lIEhFU1RfVEFCTEVfUFJPVE9DT0xfR1VJRCBcDQorICB7IFwNCisg ICAgMHg3MDViZGNkOSwgMHg4YzQ3LCAweDQ1N2UsIFwNCisgICAgeyAweGFkLCAweDBkLCAweGY3 LCAweDg2LCAweGYzLCAweDRhLCAweDBkLCAweDYzIH0gXA0KKyAgfQ0KKw0KKy8qKg0KKyAgQXBw ZW5kIEhFU1QgZXJyb3Igc291cmNlIGRlc2NyaXB0b3IgcHJvdG9jb2wgc2VydmljZS4NCisNCisg IFByb3RvY29sIHNlcnZpY2UgdXNlZCB0byBhcHBlbmQgbmV3bHkgY29sbGVjdGVkIGVycm9yIHNv dXJjZSBkZXNjcmlwdG9ycyB0bw0KKyAgdG8gYW4gYWxyZWFkeSBjcmVhdGVkIEhFU1QgdGFibGUu DQorDQorICBAcGFyYW1baW5dICBFcnJvclNvdXJjZURlc2NyaXB0b3JMaXN0ICAgICAgTGlzdCBv ZiBFcnJvciBTb3VyY2UgRGVzY3JpcHRvcnMuDQorICBAcGFyYW1baW5dICBFcnJvclNvdXJjZURl c2NyaXB0b3JMaXN0U2l6ZSAgVG90YWwgU2l6ZSBvZiBFcnJvciBTb3VyY2UNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdG9ycy4NCisgIEBwYXJh bVtpbl0gIEVycm9yU291cmNlRGVzY3JpcHRvckNvdW50ICAgICBUb3RhbCBjb3VudCBvZiBlcnJv ciBzb3VyY2UNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZXNjcmlwdG9ycy4NCisNCisgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgICAgICAgICAgQXBwZW5k aW5nIHRoZSBlcnJvciBzb3VyY2UgZGVzY3JpcHRvcnMNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3VjY2Vzc2Z1bC4NCisgIEByZXR2YWwgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VT ICAgQnVmZmVyIHJlYWxsb2NhdGlvbiBmYWlsZWQgZm9yIHRoZSBIZXN0DQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLg0KKyAgQHJldHZhbCAgRUZJX0lOVkFMSURfUEFS QU1FVEVSICBOdWxsIEVycm9yU291cmNlRGVzY3JpcHRvckxpc3QgcGFyYW0gb3INCisqKi8NCit0 eXBlZGVmDQorRUZJX1NUQVRVUw0KKyhFRklBUEkgKkFQUEVORF9FUlJPUl9TT1VSQ0VfREVTQ1JJ UFRPUikgKA0KKyAgSU4gQ09OU1QgVk9JRCAqRXJyb3JTb3VyY2VEZXNjcmlwdG9yTGlzdCwNCisg IElOIFVJTlROICAgICAgRXJyb3JTb3VyY2VEZXNjcmlwdG9yTGlzdFNpemUsDQorICBJTiBVSU5U TiAgICAgIEVycm9yU291cmNlRGVzY3JpcHRvckNvdW50DQorICApOw0KKw0KKy8qKg0KKyAgSW5z dGFsbCBIRVNUIHRhYmxlIHByb3RvY29sIHNlcnZpY2UuDQorDQorICBJbnN0YWxscyB0aGUgSEVT VCB0YWJsZSB0aGF0IGhhcyBiZWVuIGFwcGVuZGVkIHdpdGggdGhlIGVycm9yIHNvdXJjZQ0KKyAg ZGVzY3JpcHRvcnMuIFRoZSBjaGVja3N1bSBvZiB0aGlzIHRhYmxlIGlzIGNhbGN1bGF0ZWQgYW5k IHVwZGF0ZWQgaW4NCisgIHRoZSB0YWJsZSBoZWFkZXIuIFRoZSBIRVNUIHRhYmxlIGlzIHRoZW4g aW5zdGFsbGVkLg0KKw0KKyAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgIEhFU1QgdGFibGUgaXMgaW5z dGFsbGVkIHN1Y2Nlc3NmdWxseS4NCisgIEByZXR2YWwgIEVGSV9BQk9SVEVEICBIRVNUIHRhYmxl IGlzIE5VTEwuDQorICBAcmV0dmFsICBPdGhlciAgICAgICAgSW5zdGFsbCBzZXJ2aWNlIGNhbGwg ZmFpbGVkLg0KKyoqLw0KK3R5cGVkZWYNCitFRklfU1RBVFVTDQorKEVGSUFQSSAqSU5TVEFMTF9I RVNUX1RBQkxFKSAoVk9JRCk7DQorDQorLy8NCisvLyBIRVNUX1RBQkxFX1BST1RPQ09MIGVuYWJs ZXMgY3JlYXRpb24gYW5kIGluc3RhbGxhdGlvbiBvZiBIRVNUIHRhYmxlDQorLy8NCit0eXBlZGVm IHN0cnVjdCB7DQorICBBUFBFTkRfRVJST1JfU09VUkNFX0RFU0NSSVBUT1IgQXBwZW5kRXJyb3JT b3VyY2VEZXNjcmlwdG9yczsNCisgIElOU1RBTExfSEVTVF9UQUJMRSAgICAgICAgICAgICBJbnN0 YWxsSGVzdFRhYmxlOw0KK30gSEVTVF9UQUJMRV9QUk9UT0NPTDsNCisNCitleHRlcm4gRUZJX0dV SUQgZ0hlc3RUYWJsZVByb3RvY29sR3VpZDsNCisjZW5kaWYgIC8vIEhFU1RfVEFCTEVfSF8NCmRp ZmYgLS1naXQgYS9Bcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL0FwZWkvSGVzdER4ZS9IZXN0RHhlLmMg Yi9Bcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL0FwZWkvSGVzdER4ZS9IZXN0RHhlLmMNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLmI2OGUxYTBjNGU0OA0KLS0tIC9kZXYv bnVsbA0KKysrIGIvQXJtUGxhdGZvcm1Qa2cvRHJpdmVycy9BcGVpL0hlc3REeGUvSGVzdER4ZS5j DQpAQCAtMCwwICsxLDM1NCBAQA0KKy8qKiBAZmlsZQ0KKyAgQnVpbGRzIGFuZCBpbnN0YWxscyB0 aGUgSEVTVCBBQ1BJIHRhYmxlLg0KKw0KKyAgVGhpcyBkcml2ZXIgaW5zdGFsbHMgYSBwcm90b2Nv bCB0aGF0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhbmQgaW5zdGFsbCBhIEhFU1QNCisgIEFDUEkg dGFibGUuIFRoZSBwcm90b2NvbCBhbGxvd3Mgb25lIG9yIG1vcmUgZXJyb3Igc291cmNlIHByb2R1 Y2VycyB0byBhZGQgdGhlDQorICBlcnJvciBzb3VyY2UgZGVzY3JpcHRvcnMgaW50byB0aGUgSEVT VCB0YWJsZS4gSXQgYWxzbyBhbGxvd3MgdGhlIHJlc3VsdGluZw0KKyAgSEVTVCB0YWJsZSB0byBi ZSBpbnN0YWxsZWQuDQorDQorICBDb3B5cmlnaHQgKGMpIDIwMjAgLSAyMDIxLCBBUk0gTGltaXRl ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQorDQorICBAcGFyIFNwZWNpZmljYXRpb24gUmVmZXJlbmNlOg0KKyAg ICAtIEFDUEkgNi4zLCBUYWJsZSAxOC0zODIsIEhhcmR3YXJlIEVycm9yIFNvdXJjZSBUYWJsZQ0K KyoqLw0KKw0KKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCisjaW5jbHVkZSA8 TGlicmFyeS9Bcm1MaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQorI2luY2x1 ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGli Lmg+DQorI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KKyNpbmNsdWRl IDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KKyNpbmNsdWRlIDxQcm90b2Nv bC9BY3BpU3lzdGVtRGVzY3JpcHRpb25UYWJsZS5oPg0KKyNpbmNsdWRlIDxQcm90b2NvbC9BY3Bp VGFibGUuaD4NCisjaW5jbHVkZSA8UHJvdG9jb2wvSGVzdFRhYmxlLmg+DQorDQordHlwZWRlZiBz dHJ1Y3Qgew0KKyAgVk9JRCAgICpIZXN0VGFibGU7ICAgICAgICAvLy8gUG9pbnRlciB0byBIRVNU IHRhYmxlLg0KKyAgVUlOVDMyIEN1cnJlbnRUYWJsZVNpemU7ICAvLy8gQ3VycmVudCBzaXplIG9m IEhFU1QgdGFibGUuDQorfSBIRVNUX0RYRV9EUklWRVJfREFUQTsNCisNCitTVEFUSUMgRUZJX0FD UElfVEFCTEVfUFJPVE9DT0wgKm1BY3BpVGFibGVQcm90b2NvbCA9IE5VTEw7DQorU1RBVElDIEhF U1RfRFhFX0RSSVZFUl9EQVRBIG1IZXN0RHJpdmVyRGF0YTsNCisNCisvKioNCisgIEhlbHBlciBm dW5jdGlvbiB0byB0aGUgZHJpdmVyLg0KKw0KKyAgRnVuY3Rpb24gdGhhdCByZWFsbG9jYXRlcyBt ZW1vcnkgZm9yIGV2ZXJ5IG5ldyBlcnJvciBzb3VyY2UgZGVzY3JpcHRvciBpbmZvDQorICBhZGRl ZC4NCisNCisgIEBwYXJhbVtpbl0gICAgICAgT2xkVGFibGVTaXplICBPbGQgbWVtb3J5IHBvb2wg c2l6ZS4NCisgIEBwYXJhbVtpbl0gICAgICAgTmV3VGFibGVTaXplICBSZXF1aXJlZCBtZW1vcnkg cG9vbCBzaXplLg0KKyAgQHBhcmFtW2luLCBvdXRdICBPbGRCdWZmZXIgICAgIEN1cnJlbnQgbWVt b3J5IGJ1ZmZlciBwb2ludGVyIGhvbGRpbmcgdGhlIEhlc3QNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0YWJsZSBkYXRhLg0KKw0KKyAgQHJldHVybiAgTmV3IHBvaW50ZXIgdG8g cmVhbGxvY2F0ZWQgbWVtb3J5IHBvb2wuDQorKiovDQorU1RBVElDDQorVk9JRCoNCitSZWFsbG9j YXRlSGVzdFRhYmxlTWVtb3J5ICgNCisgIElOICAgICBVSU5UMzIgT2xkVGFibGVTaXplLA0KKyAg SU4gICAgIFVJTlQzMiBOZXdUYWJsZVNpemUsDQorICBJTiBPVVQgVk9JRCAgICpPbGRCdWZmZXIN CisgICkNCit7DQpbU0FNSV0gSGF2ZSB5b3UgY29uc2lkZXJlZCBtYWludGFpbmluZyBhIGxpbmtl ZCBsaXN0IG9mIHRoZSBlcnJvciBzb3VyY2VzIGFuZCBzZXJpYWxpc2luZyB0aGUgbGlzdCBvbmNl IEluc3RhbGxIZXN0VGFibGUoKSBpcyBjYWxsZWQ/IA0KDQpUaGlzIGlzIGEgc2ltcGxlIGltcGxl bWVudGF0aW9uIHdoaWNoIGNvbGxlY3RzIGFsbCB0aGUgZXJyb3Igc291cmNlIGRlc2NyaXB0b3Jz IGFzIGJ1ZmZlcnMuIExpbmtlZCBsaXN0IHdpbGwgYWRkIGNvbXBsZXhpdHkgdG8gdGhlIGNvZGUu IEFyZSB0aGVyZSBhbnkgcGFydGljdWxhciBiZW5lZml0cyBvZiB1c2luZyBsaW5rZWQgbGlzdCBv dmVyIHRoaXMgbWV0aG9kLiBGb3IgdGhlIHYzLCBsaW5rZWQgbGlzdCBoYXMgbm90IGJlZW4gdXNl ZC4gTGV0IG1lIGtub3cgeW91IG9waW5pb24uDQoNCi0gT21rYXINCg0KKyAgcmV0dXJuIFJlYWxs b2NhdGVSZXNlcnZlZFBvb2wgKA0KKyAgICAgICAgICAgT2xkVGFibGVTaXplLA0KKyAgICAgICAg ICAgTmV3VGFibGVTaXplLA0KKyAgICAgICAgICAgT2xkQnVmZmVyDQorICAgICAgICAgICApOw0K W1NBTUldIElzIHRoaXMgd3JhcHBlciBmdW5jdGlvbiByZXF1aXJlZD8gQ2FuIFJlYWxsb2NhdGVS ZXNlcnZlZFBvb2woKSBiZSB1c2VkIGRpcmVjdGx5IGluc3RlYWQ/IA0KDQpBY2suDQoNCi0gT21r YXINCg0KK30NCisNCisvKioNCisgIEFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIEhFU1QgdGFibGUg aGVhZGVyIGFuZCBwb3B1bGF0ZSBpdC4NCisNCisgIEhlbHBlciBmdW5jdGlvbiBmb3IgdGhpcyBk cml2ZXIsIHBvcHVsYXRlcyB0aGUgSEVTVCB0YWJsZSBoZWFkZXIuIENhbGxlZCBvbmNlDQorICBp biB0aGUgYmVnaW5uaW5nIG9uIGZpcnN0IGludm9jYXRpb24gb2YgYXBwZW5kIGVycm9yIHNvdXJj ZSBkZXNjcmlwdG9yDQorICBwcm90b2NvbCBzZXJ2aWNlLg0KKw0KKyAgQHJldHZhbCAgRUZJX1NV Q0NFU1MgICAgICAgICAgIE9uIHN1Y2Nlc3NmdWwgY3JlYXRpb24gb2YgSEVTVCBoZWFkZXIuDQor ICBAcmV0dmFsICBFRklfT1VUX09GX1JFU09VUkNFUyAgSWYgc3lzdGVtIGlzIG91dCBvZiBtZW1v cnkgcmVjb3VyY2VzLg0KKyoqLw0KK1NUQVRJQw0KK0VGSV9TVEFUVVMNCitCdWlsZEhlc3RIZWFk ZXIgKFZPSUQpDQpbU0FNSV0gVk9JRCBhbmQgY2xvc2luZyBwYXJlbnRoZXNpcyBzaG91bGQgYmUg b24gYSBzZXBhcmF0ZSBsaW5lLiANCg0KQWNrLg0KDQotIE9ta2FyDQoNCit7DQorICBFRklfQUNQ SV82XzNfSEFSRFdBUkVfRVJST1JfU09VUkNFX1RBQkxFX0hFQURFUiBIZXN0SGVhZGVyOw0KKyAg VUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcE9lbVRh YmxlSWQ7DQorDQorICAvLw0KKyAgLy8gQWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgSEVTVCB0YWJs ZSBoZWFkZXIuDQorICAvLw0KKyAgbUhlc3REcml2ZXJEYXRhLkhlc3RUYWJsZSA9DQorICAgIFJl YWxsb2NhdGVIZXN0VGFibGVNZW1vcnkgKA0KKyAgICAgIDAsDQorICAgICAgc2l6ZW9mIChFRklf QUNQSV82XzNfSEFSRFdBUkVfRVJST1JfU09VUkNFX1RBQkxFX0hFQURFUiksDQorICAgICAgTlVM TA0KKyAgICAgICk7DQpbU0FNSV0gSXMgdGhlIFJlbG9jYXRlIHZlcnNpb24gb2YgdGhlIGZ1bmN0 aW9uIHJlcXVpcmVkIGhlcmUsIG1heWJlIHRoZSBBbGxvYyB2ZXJzaW9uIGNvdWxkIGJlIHVzZWQu DQotIFNob3VsZCBFZmlSZXNlcnZlZE1lbW9yeVR5cGUgYmUgdXNlZD8gDQrCoMKgwqAgUGxlYXNl IHNlZSBleHRyYWN0IGZyb20gc2VjdGlvbiAyLjMuNiBBQXJjaDY0IFBsYXRmb3JtcyBvZiB0aGUg VUVGSSAyLjkgc3BlY2lmaWNhdGlvbiBiZWxvdzoNCsKgwqDCoCAiTm90ZTpQcmV2aW91cyBFRkkg c3BlY2lmaWNhdGlvbnMgYWxsb3dlZCBBQ1BJIHRhYmxlcyBsb2FkZWQgYXQgcnVudGltZSB0byBi ZSBpbiB0aGUNCsKgIMKgwqAgRWZpUmVzZXJ2ZWRNZW1vcnlUeXBlIGFuZCB0aGVyZSB3YXMgbm8g Z3VpZGFuY2UgcHJvdmlkZWQgZm9yIG90aGVyIEVGSSBDb25maWd1cmF0aW9uDQrCoMKgwqAgVGFi bGVzLiBFZmlSZXNlcnZlZE1lbW9yeVR5cGUgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgYnkg ZmlybXdhcmUuIFVFRkkgMi4wIGNsYXJpZmllZA0KwqDCoMKgIHRoZSBzaXR1YXRpb24gbW92aW5n IGZvcndhcmQuICINCg0KQWNrLg0KDQotIE9ta2FyDQoNCisgIGlmIChtSGVzdERyaXZlckRhdGEu SGVzdFRhYmxlID09IE5VTEwpIHsNCisgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0K KyAgfQ0KKw0KKyAgbUhlc3REcml2ZXJEYXRhLkN1cnJlbnRUYWJsZVNpemUgPQ0KKyAgICBzaXpl b2YgKEVGSV9BQ1BJXzZfM19IQVJEV0FSRV9FUlJPUl9TT1VSQ0VfVEFCTEVfSEVBREVSKTsNCisN CisgIC8vDQorICAvLyBQb3B1bGF0ZSB0aGUgdmFsdWVzIG9mIHRoZSBIRVNUIHRhYmxlIGhlYWRl ci4NCisgIC8vDQorICBIZXN0SGVhZGVyLkhlYWRlci5TaWduYXR1cmUgPQ0KKyAgICBFRklfQUNQ SV82XzNfSEFSRFdBUkVfRVJST1JfU09VUkNFX1RBQkxFX1NJR05BVFVSRTsNCisgIEhlc3RIZWFk ZXIuSGVhZGVyLlJldmlzaW9uID0NCisgICAgRUZJX0FDUElfNl8zX0hBUkRXQVJFX0VSUk9SX1NP VVJDRV9UQUJMRV9SRVZJU0lPTjsNCisgIENvcHlNZW0gKA0KKyAgICAmSGVzdEhlYWRlci5IZWFk ZXIuT2VtSWQsDQorICAgIEZpeGVkUGNkR2V0UHRyIChQY2RBY3BpRGVmYXVsdE9lbUlkKSwNCisg ICAgc2l6ZW9mIChIZXN0SGVhZGVyLkhlYWRlci5PZW1JZCkNCisgICAgKTsNCisgIFRlbXBPZW1U YWJsZUlkID0gRml4ZWRQY2RHZXQ2NCAoUGNkQWNwaURlZmF1bHRPZW1UYWJsZUlkKTsNCisgIENv cHlNZW0gKA0KKyAgICAmSGVzdEhlYWRlci5IZWFkZXIuT2VtVGFibGVJZCwNCisgICAgJlRlbXBP ZW1UYWJsZUlkLA0KKyAgICBzaXplb2YgKEhlc3RIZWFkZXIuSGVhZGVyLk9lbVRhYmxlSWQpDQor ICAgICk7DQpbU0FNSV0gSGVzdEhlYWRlci5IZWFkZXIuT2VtVGFibGVJZCA9IEZpeGVkUGNkR2V0 NjQgKFBjZEFjcGlEZWZhdWx0T2VtVGFibGVJZCk7ID8gDQorICBIZXN0SGVhZGVyLkhlYWRlci5P ZW1SZXZpc2lvbiA9IFBjZEdldDMyIChQY2RBY3BpRGVmYXVsdE9lbVJldmlzaW9uKTsNCisgIEhl c3RIZWFkZXIuSGVhZGVyLkNyZWF0b3JJZCA9IFBjZEdldDMyIChQY2RBY3BpRGVmYXVsdENyZWF0 b3JJZCk7DQorICBIZXN0SGVhZGVyLkhlYWRlci5DcmVhdG9yUmV2aXNpb24gPSBQY2RHZXQzMiAo UGNkQWNwaURlZmF1bHRDcmVhdG9yUmV2aXNpb24pOw0KKyAgSGVzdEhlYWRlci5FcnJvclNvdXJj ZUNvdW50ID0gMDsNCisgIENvcHlNZW0gKG1IZXN0RHJpdmVyRGF0YS5IZXN0VGFibGUsICZIZXN0 SGVhZGVyLCBzaXplb2YgKEhlc3RIZWFkZXIpKTsNCltTQU1JXSBJcyBpdCBwb3NzaWJsZSB0byB1 c2UgYSBsb2NhbCBIRVNUIHRhYmxlIHBvaW50ZXIgdG8gaW5pdGFsaXNlIHRoZSB2YWx1ZXMgaW5z dGVhZCBvZiBpbml0aWFsaXNpbmcgYSBIRVNUIHN0cnVjdHVyZSBhbmQgdGhlbiBkb2luZyBtZW1j b3B5Pw0KDQpBY2suDQoNCi0gT21rYXINCg0KKw0KKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KK30N CisNCisvKioNCisgIEFwcGVuZCBIRVNUIGVycm9yIHNvdXJjZSBkZXNjcmlwdG9yIHByb3RvY29s IHNlcnZpY2UuDQorDQorICBQcm90b2NvbCBzZXJ2aWNlIHVzZWQgdG8gYXBwZW5kIG5ld2x5IGNv bGxlY3RlZCBlcnJvciBzb3VyY2UgZGVzY3JpcHRvcnMgdG8NCisgIHRvIGFuIGFscmVhZHkgY3Jl YXRlZCBIRVNUIHRhYmxlLg0KKw0KKyAgQHBhcmFtW2luXSAgRXJyb3JTb3VyY2VEZXNjcmlwdG9y TGlzdCAgICAgIExpc3Qgb2YgRXJyb3IgU291cmNlIERlc2NyaXB0b3JzLg0KKyAgQHBhcmFtW2lu XSAgRXJyb3JTb3VyY2VEZXNjcmlwdG9yTGlzdFNpemUgIFRvdGFsIFNpemUgb2YgRXJyb3IgU291 cmNlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3Jp cHRvcnMuDQorICBAcGFyYW1baW5dICBFcnJvclNvdXJjZURlc2NyaXB0b3JDb3VudCAgICAgVG90 YWwgY291bnQgb2YgZXJyb3Igc291cmNlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGVzY3JpcHRvcnMuDQorDQorICBAcmV0dmFsICBFRklfU1VDQ0VTUyAg ICAgICAgICAgIEFwcGVuZGluZyB0aGUgZXJyb3Igc291cmNlIGRlc2NyaXB0b3JzDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWwuDQorICBAcmV0dmFsICBFRklf T1VUX09GX1JFU09VUkNFUyAgIEJ1ZmZlciByZWFsbG9jYXRpb24gZmFpbGVkIGZvciB0aGUgSGVz dA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS4NCisgIEByZXR2YWwg IEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgTnVsbCBFcnJvclNvdXJjZURlc2NyaXB0b3JMaXN0IHBh cmFtIG9yDQorKiovDQorU1RBVElDDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK0FwcGVuZEVycm9y U291cmNlRGVzY3JpcHRvciAoDQorICBJTiBDT05TVCBWT0lEICpFcnJvclNvdXJjZURlc2NyaXB0 b3JMaXN0LA0KKyAgSU4gVUlOVE4gICAgICBFcnJvclNvdXJjZURlc2NyaXB0b3JMaXN0U2l6ZSwN CisgIElOIFVJTlROICAgICAgRXJyb3JTb3VyY2VEZXNjcmlwdG9yQ291bnQNCisgICkNCit7DQor ICBFRklfQUNQSV82XzNfSEFSRFdBUkVfRVJST1JfU09VUkNFX1RBQkxFX0hFQURFUiAqSGVzdEhl YWRlclB0cjsNCisgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFN0YXR1czsNCisgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE5ld1RhYmxlU2l6ZTsNCisgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpFcnJvckRlc2NyaXB0b3JQdHI7DQorDQorICBpZiAoKEVycm9yU291 cmNlRGVzY3JpcHRvckxpc3QgPT0gTlVMTCkgfHwNCisgICAgICAoRXJyb3JTb3VyY2VEZXNjcmlw dG9yTGlzdFNpemUgPT0gMCkpIHsNCisgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7 DQorICB9DQorDQorICAvLw0KKyAgLy8gQ3JlYXRlIGEgSEVTVCB0YWJsZSBoZWFkZXIgaWYgbm90 IGFscmVhZHkgY3JlYXRlZC4NCisgIC8vDQorICBpZiAobUhlc3REcml2ZXJEYXRhLkhlc3RUYWJs ZSA9PSBOVUxMKSB7DQorICAgIFN0YXR1cyA9IEJ1aWxkSGVzdEhlYWRlciAoKTsNCisgICAgaWYg KFN0YXR1cyA9PSBFRklfT1VUX09GX1JFU09VUkNFUykgew0KKyAgICAgIERFQlVHICgoDQorICAg ICAgICBERUJVR19FUlJPUiwNCisgICAgICAgICIlYTogRmFpbGVkIHRvIGJ1aWxkIEhFU1QgaGVh ZGVyLCBzdGF0dXM6ICVyXG4iLA0KKyAgICAgICAgX19GVU5DVElPTl9fLA0KKyAgICAgICAgU3Rh dHVzDQorICAgICAgICApKTsNCisgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICB9DQorICB9DQor DQorICAvLw0KKyAgLy8gUmVzaXplIHRoZSBleGlzdGluZyBIRVNUIHRhYmxlIGJ1ZmZlciB0byBh Y2NvbW1vZGF0ZSB0aGUgaW5jb21pbmcgZXJyb3INCisgIC8vIHNvdXJjZSBkZXNjcmlwdG9ycy4N CisgIC8vDQorICBOZXdUYWJsZVNpemUgPSBtSGVzdERyaXZlckRhdGEuQ3VycmVudFRhYmxlU2l6 ZSArDQorICAgICAgICAgICAgICAgICBFcnJvclNvdXJjZURlc2NyaXB0b3JMaXN0U2l6ZTsNCisg IG1IZXN0RHJpdmVyRGF0YS5IZXN0VGFibGUgPSBSZWFsbG9jYXRlSGVzdFRhYmxlTWVtb3J5ICgN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1IZXN0RHJpdmVyRGF0YS5DdXJyZW50 VGFibGVTaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3VGFibGVTaXpl LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhlc3REcml2ZXJEYXRhLkhlc3RU YWJsZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCisgIGlmIChtSGVzdERy aXZlckRhdGEuSGVzdFRhYmxlID09IE5VTEwpIHsNCisgICAgREVCVUcgKCgNCisgICAgICBERUJV R19FUlJPUiwNCisgICAgICAiJWE6IEZhaWxlZCB0byByZWFsbG9jYXRlIG1lbW9yeSBmb3IgSEVT VCB0YWJsZVxuIiwNCisgICAgICBfX0ZVTkNUSU9OX18NCisgICAgICApKTsNCisgICAgcmV0dXJu IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KKyAgfQ0KKw0KW1NBTUldIEFzIG1lbnRpb25lZCBlYXJs aWVyLCB3b3VsZCBpdCBiZSBwb3NzaWJsZSB0byBtYWludGFpbiBhIGxpbmsgbGlzdCBpbnN0ZWFk IG9mIHJlbG9jYXRpbmcgdGhlIG1lbW9yeT8NCg0KVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBzaW1w bGVyIG92ZXIgdGhlIGxpbmtlZCBsaXN0IGltcGxlbWVudGF0aW9uLiBTYW1lIGFzIHRoZSBjb21t ZW50IGFib3ZlLCBmb3IgdjMsIHRoaXMgaW1wbGVtZW50YXRpb24gd2lsbCBiZSBtYWludGFpbmVk LiBMZXQgbWUga25vdyB5b3VyIG9waW5pb24uDQoNCi0gT21rYXINCg0KKyAgLy8NCisgIC8vIENv cHkgdGhlIGluY29taW5nIGVycm9yIHNvdXJjZSBkZXNjcmlwdG9ycyBpbnRvIEhFU1QgdGFibGUu DQorICAvLw0KKyAgRXJyb3JEZXNjcmlwdG9yUHRyID0gKFZPSUQgKiltSGVzdERyaXZlckRhdGEu SGVzdFRhYmxlICsNCisgICAgICAgICAgICAgICAgICAgICAgIG1IZXN0RHJpdmVyRGF0YS5DdXJy ZW50VGFibGVTaXplOw0KKyAgSGVzdEhlYWRlclB0ciA9IChFRklfQUNQSV82XzNfSEFSRFdBUkVf RVJST1JfU09VUkNFX1RBQkxFX0hFQURFUiAqKQ0KKyAgICAgICAgICAgICAgICAgIG1IZXN0RHJp dmVyRGF0YS5IZXN0VGFibGU7DQorICBDb3B5TWVtICgNCisgICAgRXJyb3JEZXNjcmlwdG9yUHRy LA0KKyAgICBFcnJvclNvdXJjZURlc2NyaXB0b3JMaXN0LA0KKyAgICBFcnJvclNvdXJjZURlc2Ny aXB0b3JMaXN0U2l6ZQ0KKyAgICApOw0KKyAgbUhlc3REcml2ZXJEYXRhLkN1cnJlbnRUYWJsZVNp emUgPSBOZXdUYWJsZVNpemU7DQorICBIZXN0SGVhZGVyUHRyLT5IZWFkZXIuTGVuZ3RoID0gbUhl c3REcml2ZXJEYXRhLkN1cnJlbnRUYWJsZVNpemU7DQorICBIZXN0SGVhZGVyUHRyLT5FcnJvclNv dXJjZUNvdW50ICs9IEVycm9yU291cmNlRGVzY3JpcHRvckNvdW50Ow0KKw0KKyAgREVCVUcgKCgN CisgICAgREVCVUdfSU5GTywNCisgICAgIkhlc3REeGU6ICVkIEVycm9yIHNvdXJjZSBkZXNjcmlw dG9yKHMpIGFkZGVkIFxuIiwNCisgICAgRXJyb3JTb3VyY2VEZXNjcmlwdG9yQ291bnQNCisgICAg KSk7DQorICByZXR1cm4gRUZJX1NVQ0NFU1M7DQorfQ0KKw0KKy8qKg0KKyAgSW5zdGFsbCBIRVNU IHRhYmxlIHByb3RvY29sIHNlcnZpY2UuDQorDQorICBJbnN0YWxscyB0aGUgSEVTVCB0YWJsZSB0 aGF0IGhhcyBiZWVuIGFwcGVuZGVkIHdpdGggdGhlIGVycm9yIHNvdXJjZQ0KKyAgZGVzY3JpcHRv cnMuIFRoZSBjaGVja3N1bSBvZiB0aGlzIHRhYmxlIGlzIGNhbGN1bGF0ZWQgYW5kIHVwZGF0ZWQg aW4NCisgIHRoZSB0YWJsZSBoZWFkZXIuIFRoZSBIRVNUIHRhYmxlIGlzIHRoZW4gaW5zdGFsbGVk Lg0KKw0KKyAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgIEhFU1QgdGFibGUgaXMgaW5zdGFsbGVkIHN1 Y2Nlc3NmdWxseS4NCisgIEByZXR2YWwgIEVGSV9BQk9SVEVEICBIRVNUIHRhYmxlIGlzIE5VTEwu DQorICBAcmV0dmFsICBPdGhlciAgICAgICAgSW5zdGFsbCBzZXJ2aWNlIGNhbGwgZmFpbGVkLg0K KyoqLw0KK1NUQVRJQw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitJbnN0YWxsSGVzdEFjcGlUYWJs ZSAoVk9JRCkNCltTQU1JXSBQbGVhc2UgdXBkYXRlIGFjY29yZGluZyB0byBjb2Rpbmcgc3RhbmRh cmQuDQoNCkFjay4NCg0KLSBPbWthcg0KDQorew0KKyAgRUZJX0FDUElfNl8zX0hBUkRXQVJFX0VS Uk9SX1NPVVJDRV9UQUJMRV9IRUFERVIgKkhlc3RIZWFkZXI7DQorICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQorICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3BpVGFibGVIYW5kbGU7DQorDQor ICAvLw0KKyAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSB2YWxpZCBIRVNUIHRhYmxlIGRhdGEuIElmIG5v dCwgdGhlcmUgbm8gaGFyZHdhcmUgZXJyb3INCisgIC8vIHNvdXJjZXMgc3VwcG9ydGVkIGJ5IHRo ZSBwbGF0Zm9ybSBhbmQgbm8gSEVTVCB0YWJsZSB0byBwdWJsaXNoLCByZXR1cm4uDQorICAvLw0K KyAgaWYgKG1IZXN0RHJpdmVyRGF0YS5IZXN0VGFibGUgPT0gTlVMTCkgew0KKyAgICBERUJVRyAo KA0KKyAgICAgIERFQlVHX0lORk8sDQorICAgICAgIkhlc3REeGU6IE5vIGRhdGEgYXZhaWxhYmxl IHRvIGdlbmVyYXRlIEhFU1QgdGFibGVcbiINCisgICAgICApKTsNCisgICAgcmV0dXJuIEVGSV9T VUNDRVNTOw0KW1NBTUldIENhbiBhIHN1aXRhYmxlIGVycm9yIGNvZGUgYmUgcmV0dXJuZWQgaGVy ZT8gRUZJX05PVF9GT1VORD8NCg0KQWNrLg0KDQotIE9ta2FyDQoNCisgIH0NCisNCisgIC8vDQor ICAvLyBWYWxpZCBkYXRhIGZvciBIRVNUIHRhYmxlIGZvdW5kLiBVcGRhdGUgdGhlIGhlYWRlciBj aGVja3N1bSBhbmQgaW5zdGFsbCB0aGUNCisgIC8vIEhFU1QgdGFibGUuDQorICAvLw0KKyAgSGVz dEhlYWRlciA9IChFRklfQUNQSV82XzNfSEFSRFdBUkVfRVJST1JfU09VUkNFX1RBQkxFX0hFQURF UiAqKQ0KKyAgICAgICAgICAgICAgIG1IZXN0RHJpdmVyRGF0YS5IZXN0VGFibGU7DQorICBIZXN0 SGVhZGVyLT5IZWFkZXIuQ2hlY2tzdW0gPSBDYWxjdWxhdGVDaGVja1N1bTggKA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDggKilIZXN0SGVhZGVyLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBIZXN0SGVhZGVyLT5IZWFkZXIuTGVuZ3RoDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQpbU0FNSV0gQ2hlY2tzdW0gY2FsY3Vs YXRpb24gaXMgbm90IG5lZWRlZCBhcyBBQ1BJVGFibGVQcm90b2NvbC0+SW5zdGFsbEFjcGlUYWJs ZSgpIGRvZXMgdGhpcyBpbnRlcm5hbGx5Lg0KDQpBY2suDQoNCi0gT21rYXINCg0KKw0KKyAgU3Rh dHVzID0gbUFjcGlUYWJsZVByb3RvY29sLT5JbnN0YWxsQWNwaVRhYmxlICgNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtQWNwaVRhYmxlUHJvdG9jb2wsDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSGVzdEhlYWRlciwNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBIZXN0SGVhZGVyLT5IZWFkZXIuTGVuZ3RoLA0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZBY3BpVGFibGVIYW5kbGUNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBERUJVRyAo KA0KKyAgICAgIERFQlVHX0VSUk9SLA0KKyAgICAgICIlYTogSEVTVCB0YWJsZSBpbnN0YWxsYXRp b24gZmFpbGVkLCBzdGF0dXM6ICVyXG4iLA0KKyAgICAgIF9fRlVOQ1RJT05fXywNCisgICAgICBT dGF0dXMNCisgICAgICApKTsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIC8vDQor ICAvLyBGcmVlIHRoZSBIRVNUIHRhYmxlIGJ1ZmZlci4NCisgIC8vDQorICBGcmVlUG9vbCAobUhl c3REcml2ZXJEYXRhLkhlc3RUYWJsZSk7DQorICBERUJVRyAoKA0KKyAgICBERUJVR19JTkZPLA0K KyAgICAiSGVzdER4ZTogSW5zdGFsbGVkIEhFU1QgdGFibGUgXG4iDQorICAgICkpOw0KKyAgcmV0 dXJuIEVGSV9TVUNDRVNTOw0KW1NBTUldIHJldHVybiBTdGF0dXM7DQoNCkFjay4NCg0KLSBPbWth cg0KDQorfQ0KKw0KKy8vDQorLy8gSEVTVCB0YWJsZSBnZW5lcmF0aW9uIHByb3RvY29sIGluc3Rh bmNlLg0KKy8vDQorU1RBVElDIEhFU1RfVEFCTEVfUFJPVE9DT0wgbUhlc3RQcm90b2NvbCA9IHsN CisgIEFwcGVuZEVycm9yU291cmNlRGVzY3JpcHRvciwNCisgIEluc3RhbGxIZXN0QWNwaVRhYmxl DQorfTsNCltTQU1JXSBIRVNUIGlzIHBsYXRmb3JtIGFuZCBwcm9jZXNzb3IgYXJjaGl0ZWN0dXJl IGluZGVwZW5kZW50LiBUaHJlZm9yZSwgY2FuIHRoaXMgaW1wbGVtZW50YXRpb24gYmUgcGFjZWQg aW4gYSBjb21tb24gbG9jYXRpb24/IE1kZU1vZHVsZVBrZz8NCg0KQWNrLg0KDQotIE9ta2FyDQoN CisNCisvKioNCisgIFRoZSBFbnRyeSBQb2ludCBmb3IgSEVTVCBEeGUgZHJpdmVyLg0KKw0KKyAg VGhpcyBmdW5jdGlvbiBpbnN0YWxscyB0aGUgSEVTVCB0YWJsZSBjcmVhdGlvbiBhbmQgaW5zdGFs bGF0aW9uIHByb3RvY29sDQorICBzZXJ2aWNlcy4NCisNCisgIEBwYXJhbVtpbl0gIEltYWdlSGFu ZGxlICBIYW5kbGUgdG8gdGhlIEVmaSBpbWFnZS4NCisgIEBwYXJhbVtpbl0gIFN5c3RlbVRhYmxl ICBBIHBvaW50ZXIgdG8gdGhlIEVmaSBTeXN0ZW0gVGFibGUuDQorDQorICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgIE9uIHN1Y2Nlc3NmdWwgaW5zdGFsbGF0aW9uIG9mIHByb3RvY29sIHNlcnZpY2Vz IGFuZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiB0aGUgQUNQSSB0YWJsZSBw cm90b2NvbC4NCisgIEByZXR2YWwgT3RoZXIgICAgICAgICAgT24gRmFpbHVyZSB0byBsb2NhdGUg QUNQSSB0YWJsZSBwcm90b2NvbCBvciBpbnN0YWxsDQorICAgICAgICAgICAgICAgICAgICAgICAg IG9mIEhFU1QgdGFibGUgZ2VuZXJhdGlvbiBwcm90b2NvbC4NCisqKi8NCitFRklfU1RBVFVTDQor RUZJQVBJDQorSGVzdEluaXRpYWxpemUgKA0KKyAgSU4gRUZJX0hBTkRMRSAgICAgICBJbWFnZUhh bmRsZSwNCisgIElOIEVGSV9TWVNURU1fVEFCTEUgKlN5c3RlbVRhYmxlDQorICApDQorew0KKyAg RUZJX0hBTkRMRSBIYW5kbGUgPSBOVUxMOw0KKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQorDQorICBT dGF0dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29sICgNCisgICAgICAgICAgICAgICAgICAmZ0VmaUFj cGlUYWJsZVByb3RvY29sR3VpZCwNCisgICAgICAgICAgICAgICAgICBOVUxMLA0KKyAgICAgICAg ICAgICAgICAgIChWT0lEICoqKSZtQWNwaVRhYmxlUHJvdG9jb2wNCisgICAgICAgICAgICAgICAg ICApOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBERUJVRyAoKA0KKyAgICAg IERFQlVHX0VSUk9SLA0KKyAgICAgICIlYTogRmFpbGVkIHRvIGxvY2F0ZSBBQ1BJIHRhYmxlIHBy b3RvY29sLCBzdGF0dXM6ICVyXG4iLA0KKyAgICAgIF9fRlVOQ1RJT05fXywNCisgICAgICBTdGF0 dXMNCisgICAgICApKTsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIFN0YXR1cyA9 IGdCUy0+SW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICgNCisgICAgICAgICAgICAgICAgICAmSGFu ZGxlLA0KKyAgICAgICAgICAgICAgICAgICZnSGVzdFRhYmxlUHJvdG9jb2xHdWlkLA0KKyAgICAg ICAgICAgICAgICAgIEVGSV9OQVRJVkVfSU5URVJGQUNFLA0KKyAgICAgICAgICAgICAgICAgICZt SGVzdFByb3RvY29sDQorICAgICAgICAgICAgICAgICAgKTsNCisgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCisgICAgREVCVUcgKCgNCisgICAgICBERUJVR19FUlJPUiwNCisgICAgICAiJWE6 IEZhaWxlZCB0byBpbnN0YWxsIEhFU1QgdGFibGUgZ2VuZXJhdGlvbiBwcm90b2NvbCBzdGF0dXM6 ICVyXG4iLA0KKyAgICAgIF9fRlVOQ1RJT05fXywNCisgICAgICBTdGF0dXMNCisgICAgICApKTsN CisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIHJldHVybiBFRklfU1VDQ0VTUzsNCltT QU1JXSByZXR1cm4gU3RhdHVzOw0KDQpBY2suDQoNCi0gT21rYXINCg0KK30NCg0K