From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR02-HE1-obe.outbound.protection.outlook.com (EUR02-HE1-obe.outbound.protection.outlook.com [40.107.1.46]) by mx.groups.io with SMTP id smtpd.web11.56387.1595859219705164979 for ; Mon, 27 Jul 2020 07:13:40 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=s+qvCpcN; spf=pass (domain: arm.com, ip: 40.107.1.46, mailfrom: sami.mujawar@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=bfZJw4DNIf0LhWUtTJh0PTUGm3JuUIGB6srAevaIB7c=; b=s+qvCpcN7DDwdcpdYBcv/TkBBZf0cECF1/kMQddllLs2OxvARTHAeCZj9uHnSLfyUaujiSYRrFWJOfzYBj/lps0BXDBitVDHcxx+178aPgleHwulot3LZLM0UD3tpZQu5mjDe7tqFt6+LIkgy5VsTHw/inAqu3F2u5sF3rmq0xk= Received: from DB6PR07CA0060.eurprd07.prod.outlook.com (2603:10a6:6:2a::22) by VI1PR0801MB1918.eurprd08.prod.outlook.com (2603:10a6:800:84::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.23; Mon, 27 Jul 2020 14:13:37 +0000 Received: from DB5EUR03FT055.eop-EUR03.prod.protection.outlook.com (2603:10a6:6:2a:cafe::fc) by DB6PR07CA0060.outlook.office365.com (2603:10a6:6:2a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.10 via Frontend Transport; Mon, 27 Jul 2020 14:13:37 +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=bestguesspass 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 DB5EUR03FT055.mail.protection.outlook.com (10.152.21.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.10 via Frontend Transport; Mon, 27 Jul 2020 14:13:36 +0000 Received: ("Tessian outbound 1c27ecaec3d6:v62"); Mon, 27 Jul 2020 14:13:36 +0000 X-CR-MTA-TID: 64aa7808 Received: from bea1dfcef4d9.3 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 67BA8E6B-4B48-4C0F-BC6D-5FB7E7945B00.1; Mon, 27 Jul 2020 14:13:31 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id bea1dfcef4d9.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 27 Jul 2020 14:13:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cACJMjOf8hktbHGMIPoGZgVnx/fnMlWAAZ+j6J6uo7rm9W+WoGc8mu7lsqRbfKsKPa9rfuMUSB9iGetgP2JYYeWD/LEpUEY8redKqy5U8qmUbmDF85CNeaHGWjLVslFyLuBQaimDWrqGVdKTCxtTwk3lkPUk2qC/aUSj26t+oQciIWhKLQK/3ECId6ZXI75DkuBeuhHcJXhhg84Lu73wHqHzAw+jfnXLraMF+0KdmK+BJUyYHhlYNxf5p86qYAsoxVDKGGBt3IhKq8kH69NJUBTp+Q7ZK1UuedLsVgohovTUEUltCxrk4M4w6TElqrs0u426PpzEtlqPahDHXnv1eQ== 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=bfZJw4DNIf0LhWUtTJh0PTUGm3JuUIGB6srAevaIB7c=; b=GVK7vgiDB8FuH5S0wt9U/6FCAuEfeNistpgNkwdG4eVbwOOxprztv0sHm3Y170uzFr1va8F6JrfEoYq4zuF1sqoPjHco9e+jL2VbmrQBNCLvq5D2xXUY8Njjm72UBIzaAzmrErrisTwydyayHBSm0QU/Lr/Ah1C1dZKfdAJDR53rsArFLD44hgOPNklaHoaxvOUjU3yYCaXc0PpDmTapTS96PTxem1SJtupse0ilsaifi+mB0Ea29quWGtNc2UmGyZnO2Rw/y+4RbZJ6Q4Hl1E0NsMZvS0jXiBrPLWZGUHiGtSwCbqvMzFmNdvvlRR7iGIho1+TJdC65jfJ1iA+y1w== 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=bfZJw4DNIf0LhWUtTJh0PTUGm3JuUIGB6srAevaIB7c=; b=s+qvCpcN7DDwdcpdYBcv/TkBBZf0cECF1/kMQddllLs2OxvARTHAeCZj9uHnSLfyUaujiSYRrFWJOfzYBj/lps0BXDBitVDHcxx+178aPgleHwulot3LZLM0UD3tpZQu5mjDe7tqFt6+LIkgy5VsTHw/inAqu3F2u5sF3rmq0xk= Received: from DB7PR08MB3097.eurprd08.prod.outlook.com (2603:10a6:5:1d::27) by DB6PR0801MB1927.eurprd08.prod.outlook.com (2603:10a6:4:75::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.23; Mon, 27 Jul 2020 14:13:29 +0000 Received: from DB7PR08MB3097.eurprd08.prod.outlook.com ([fe80::3015:4e8d:a337:51f2]) by DB7PR08MB3097.eurprd08.prod.outlook.com ([fe80::3015:4e8d:a337:51f2%5]) with mapi id 15.20.3216.033; Mon, 27 Jul 2020 14:13:29 +0000 From: "Sami Mujawar" To: Leif Lindholm , "devel@edk2.groups.io" , Pierre Gondois , Masahisa Kojima CC: Tomas Pilar , "bob.c.feng@intel.com" , "liming.gao@intel.com" , Ard Biesheuvel Subject: Re: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML bytecode arrays into .obj file Thread-Topic: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML bytecode arrays into .obj file Thread-Index: AQHWT7DRi9T/4Hd/UkqyZTKwCy0DoKkbnJyAgAABPKA= Date: Mon, 27 Jul 2020 14:13:29 +0000 Message-ID: References: <20200701140604.5292-1-pierre.gondois@arm.com> <20200701140604.5292-5-pierre.gondois@arm.com> <20200727135825.GZ1337@vanye> In-Reply-To: <20200727135825.GZ1337@vanye> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 88015cf2-23d4-4f2f-a2fc-4561c249f841.1 x-checkrecipientchecked: true Authentication-Results-Original: nuviainc.com; dkim=none (message not signed) header.d=none;nuviainc.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [2a00:23c6:548a:4800:2554:268b:efaa:8d1e] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7d8b8f58-01be-43ed-1fb7-08d83237410e x-ms-traffictypediagnostic: DB6PR0801MB1927:|VI1PR0801MB1918: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:2582;OLM:4125; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: Rx4gEJK2sOy0rxmm8qUnHdWgqTdjsUC3nkawl8ztwU6TFKouoqHOei91PmYfxUsGQmp391CBL8vEki8uWSvmix0A44qOZy5y8swwE5BrNsJHUF42f7jnPxwfQ48c/e19vM3PoGn4YFlGTDHuyFJcas89Fvnw70QDD7li9WtBznJfhq6da5CYxkaslJJ+h0ZtHx1GpmxI+FHAyA/gHnvq3Vax7SIJ8j572Rk3lD3cqgIx+fPHlVM5H+cd3/38Jk5p/mT75Psiqzqius13sZ61UUTEfECoN2je/3oNYCUfhkomFSuO4GtM8oMSU5LAHi0IdOOrmN7Gl9Rl1MhCf6lYa4Ddpp0SMYXdBqaTKPQ6jUOlRZMFql+kGgL3uOwbGrQY3wKCrfdDOI6JI/8t2375N35Adz+ltvJmiqOiWAi6kFQ98sQSeZZ+/HzXWiTVjBMCIA5oTb+YpqHQISYe3qufwQ== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB7PR08MB3097.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(366004)(39860400002)(346002)(136003)(376002)(396003)(7696005)(966005)(2906002)(55016002)(316002)(86362001)(478600001)(8936002)(6506007)(83380400001)(53546011)(9686003)(66446008)(66556008)(110136005)(54906003)(4326008)(76116006)(66946007)(64756008)(52536014)(33656002)(186003)(30864003)(8676002)(66476007)(5660300002)(71200400001)(142923001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: 3OS3JzBoaEpzsRGZKfGa98BjV7LPHcR/wom3gv8W+mHpE5GY4LN+tljZ4QsEDv0hOJOgY4Dtd6GLY+qskNb3M1NioBbGOEJhrBvtDpPvLKgxI9beeZ7P0E3fcbXvgc0qIbkdV1rYnF6vmJ5BmFDtRob9N7jEaxLLWA33S8LJDj2r3z3UX6vbbuI6m2288XEc+c7lrYMGLwfznYF+xOI9QLK/3LIKfpCR0qqgF76UjbZkFcH+Fyi7D0mQiGcP5t722v2b+Kq2T1F+zAfj4ZTBsdNKbPDv+c/h436awjDm0ss0GWgg4Ni/LL7VZ3q4iGeSziZ3DlX0pT0nr5fWX+bA77pJURdLyELD3oZaOMmnqDHfvgBGndty4snQpi7wnOuvyLpmzpoSjMcwKaKPLY3eEWtCfvt/k1Qn6Ip4Orxlu9ZyjTzAXgtVc6CG/RsMAg5rZJ8FXpBCKcetLO3o++PLACjW4N024MZhsSXzFN8I5BNDJWma/jvEp5Zjg17hh+9wdlJ2kT9nVBTd7VuvoG2Yj5yTL6U4/TM1jSS8RMMRN3E87b1fZc045Vm4RYFPINZE MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1927 Original-Authentication-Results: nuviainc.com; dkim=none (message not signed) header.d=none;nuviainc.com; dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT055.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: e0e90d62-3193-4d82-c150-08d832373ca7 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AUWSanZyboS239V4Tf7h6gUIN3B4cayLdtaGq0nv/0iIQPlVs8xp/sGPFSm/6ps90CEKffWHB674jlv80/4dXp04mlFzrJR0iwzlUKHMOpXXEG+h8/t3V+ZwxXxAoAwuZVmZf5m5R3hWZBa4NRG7SY0RI18dTgk/CkGBD3F3n1Er4O0yuiRj0XDgTKs4NGNVxP65sHPBM2nGnV4/7qEL9q4CGfCv7piQhVEZT31/dDjKJyXHQaY9ws/YPgvwkEhxzRyn7xiIWo2UcZ8WZqidA0hrl+r9ZMpShF9pxdYkc7nZpuYAWRrz6oRv1gE/h7MlQ/k2vSkGvSoo4yp49RAIfhjW11POUblivhHQL/YgS0D0CHw6WpE4UxK81dFNyeGgRbsGDvP2dGLMRGcXhGbnQ8srCCqoGdyesruQXDRBZ4Bl/G73WhPnseIhNrVJj/67GlmeYNdIUYfAyIzDqwMVpn8p3KmjzrKlk58iT2XxuLUr7zptrAV6LT2aIkvda5m/ 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;SFTY:;SFS:(4636009)(346002)(376002)(39860400002)(136003)(396003)(46966005)(26005)(55016002)(4326008)(186003)(53546011)(6506007)(110136005)(30864003)(9686003)(70586007)(7696005)(966005)(70206006)(478600001)(316002)(83380400001)(2906002)(8676002)(86362001)(5660300002)(47076004)(356005)(336012)(33656002)(81166007)(54906003)(52536014)(8936002)(82740400003)(82310400002)(142923001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2020 14:13:36.8889 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7d8b8f58-01be-43ed-1fb7-08d83237410e 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: DB5EUR03FT055.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1918 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGVpZiwNCg0KV291bGQgdXBkYXRpbmcgYnVpbGRfcnVsZS50ZW1wbGF0ZSBzbyB0aGF0IHRo ZSBBbWxUb0MgU2NyaXB0IGdlbmVyYXRlcyBhIEMgZmlsZSB3aXRoIGFuIEF1dG9HZW4gcHJlZml4 IGJlIGFuIG9wdGlvbj8NCg0KUmVnYXJkcywNCg0KU2FtaSBNdWphd2FyDQoNCi0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT4N ClNlbnQ6IDI3IEp1bHkgMjAyMCAwMjo1OCBQTQ0KVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBQ aWVycmUgR29uZG9pcyA8UGllcnJlLkdvbmRvaXNAYXJtLmNvbT47IE1hc2FoaXNhIEtvamltYSA8 bWFzYWhpc2Eua29qaW1hQGxpbmFyby5vcmc+DQpDYzogU2FtaSBNdWphd2FyIDxTYW1pLk11amF3 YXJAYXJtLmNvbT47IFRvbWFzIFBpbGFyIDxUb21hcy5QaWxhckBhcm0uY29tPjsgYm9iLmMuZmVu Z0BpbnRlbC5jb207IGxpbWluZy5nYW9AaW50ZWwuY29tOyBBcmQgQmllc2hldXZlbCA8QXJkLkJp ZXNoZXV2ZWxAYXJtLmNvbT4NClN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIHY1IDQv NV0gQmFzZVRvb2xzOiBDb21waWxlIEFNTCBieXRlY29kZSBhcnJheXMgaW50byAub2JqIGZpbGUN Cg0KSGkgUGllcnJlLCAoK01hc2FoaXNhKQ0KDQpUaGlzIGNvbW1pdCAoMGE0YWEyMGU4ZDQ0KSBt YWRlIGZvciBhbiBleGNpdGluZyBzdGFydCB0byBteSB3ZWVrLg0KDQpTb2Npb25leHQncyBEZXZl bG9wZXJib3ggZmFpbGVkIHRvIGJ1aWxkIGZvciBtZSwgd2l0aCB0aGUgc3BlY3RhY3VsYXIgZXJy b3IgbWVzc2FnZToNCg0KL3Vzci9saWIvZ2NjLWNyb3NzL2FhcmNoNjQtbGludXgtZ251LzgvLi4v Li4vLi4vLi4vYWFyY2g2NC1saW51eC1nbnUvYmluL2xkOg0KRFdBUkYgZXJyb3I6IGNvdWxkIG5v dCBmaW5kIGFiYnJldiBudW1iZXIgNTkxMg0KL3RtcC9jY0t0NGdhTS5sdHJhbnMwLmx0cmFucy5v OiBpbiBmdW5jdGlvbiBgUmVnaXN0ZXJEZXZpY2VzJzoNCjxhcnRpZmljaWFsPjooLnRleHQuUmVn aXN0ZXJEZXZpY2VzKzB4YjApOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBSZWdpc3RlckVtbWMn DQoNCkdDQzQ5ICh3aXRob3V0IGx0bykgYW5kIENMQU5HMzggcHJvZmlsZXMgZ2l2ZSBtdWNoIHRo ZSBzYW1lIHJlc3VsdCwgd2l0aCBzbGlnaHRseSBsZXNzIGVzb3RlcmljIG1lc3NhZ2VzLg0KDQpU aGUgcmVhc29uIGZvciB0aGlzIHR1cm5lZCBvdXQgdG8gYmUgdGhhdCBlZGsyLXBsYXRmb3JtcyBT aWxpY29uL1NvY2lvbmV4dC9TeW5RdWFjZXIvRHJpdmVycy9QbGF0Zm9ybUR4ZS8gaGFzIGJvdGgg YW4gRW1tYy5hc2wgYW5kIGFuIEVtbWMuYyBmaWxlLCB3aGljaCBhZnRlciB0aGlzIHBhdGNoIGJv dGggZ2VuZXJhdGUgYW4gRW1tYy5vYmogaW4gdGhlIHNhbWUgb3V0cHV0IGRpcmVjdG9yeS4NCg0K SSB0aGluayB0aGUgY29ycmVjdCBjb3Vyc2Ugb2YgYWN0aW9uIGlzIHRvIGZpeCB0aGlzIGluIHRo ZSBTeW5RdWFjZXIgZHJpdmVyLCBidXQgSSBhbSByZXBvcnRpbmcgaXQgaGVyZSBzbyB3ZSBnZXQg aXQgbG9nZ2VkIGluIHRoZSBsaXN0IGFyY2hpdmVzLg0KDQpJdCB3b3VsZCBvZiBjb3Vyc2UgYmUg Z29vZCBpZiB0aGUgYnVpbGQgc3lzdGVtIGNvdWxkIGRldGVjdCBhbmQgd2FybiBvdmVyIGNhc2Vz IGxpa2UgdGhpcywgcmF0aGVyIHRoYW4gc2lsZW50bHkgb3ZlcndyaXRpbmcgZXhpc3Rpbmcgb2Jq ZWN0IGZpbGVzLg0KDQpNYXNhaGlzYSAtIHNpbmNlIEFyZCBpcyBzdGlsbCBvbiBob2xpZGF5LCBj b3VsZCB5b3UgY3JlYXRlIGEgcGF0Y2ggYW5kIHNlbmQgb3V0IGZvciBtZSB0byByZXZpZXc/IEVp dGhlciBvbmUgb2YgdGhlIGZpbGVzIG5lZWRzIHRvIGJlIHJlbmFtZWQsIG9yIHdlIG5lZWQgdG8g bW92ZSB0aGUgLmFzbCBmaWxlcyAoRW1tYy5hc2wgYW5kIE9wdGVlLmFzbCkgaW50byBhIHN1YmRp cmVjdG9yeS4NCg0KQmVzdCBSZWdhcmRzLA0KDQpMZWlmDQoNCk9uIFdlZCwgSnVsIDAxLCAyMDIw IGF0IDE1OjA2OjAzICswMTAwLCBQaWVycmVHb25kb2lzIHdyb3RlOg0KPiBGcm9tOiBQaWVycmUg R29uZG9pcyA8cGllcnJlLmdvbmRvaXNAYXJtLmNvbT4NCj4NCj4gVGhlIEFtbFRvSGV4IHNjcmlw dCBhbmQgUG9zaXgvV2luZG93c0xpa2Ugd3JhcHBlcnMgY29udmVydCBhbiBBTUwgZmlsZQ0KPiB0 byBhIC5oZXggZmlsZSwgY29udGFpbmluZyBhIEMgYXJyYXkgc3RvcmluZyBBTUwgYnl0ZWNvZGUu IFRoaXMgIi5oZXgiDQo+IGZpbGUgY2FuIHRoZW4gYmUgaW5jbHVkZWQgaW4gYSBDIGZpbGUsIGFs bG93aW5nIHRvIGFjY2VzcyB0aGUgQU1MDQo+IGJ5dGVjb2RlIGZyb20gdGhpcyBDIGZpbGUuDQo+ DQo+IFRoZSBFREsyIGJ1aWxkIHN5c3RlbSBkb2Vzbid0IGFsbG93IHRvIGEgZGVwaWN0IGRlcGVu ZGVuY3kgb3JkZXJzDQo+IGJldHdlZW4gZmlsZXMgb2YgZGlmZmVyZW50IGxhbmd1YWdlcy4gRm9y IGluc3RhbmNlLCBpbiBhIG1vZHVsZQ0KPiBjb250YWluaW5nIGEgIi5jIiBmaWxlIGFuZCBhICIu YXNsIiwgdGhlICIuYyINCj4gZmlsZSBtYXkgb3IgbWF5IG5vdCBiZSBidWlsdCBwcmlvciB0byB0 aGUgIi5hc2wiIGZpbGUuDQo+IFRoaXMgcHJldmVudHMgYW55IGluY2x1c2lvbiBvZiBhIGdlbmVy YXRlZCAiLmhleCIgaW4gYSAiLmMiIGZpbGUgc2luY2UNCj4gdGhpcyBsYXRlciAiLmhleCIgZmls ZSBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQuDQo+DQo+IFRoaXMgcGF0Y2gg bW9kaWZpZXMgdGhlIEFtbFRvQyBzY3JpcHQgdG8gZ2VuZXJhdGUgYSBDIGZpbGUgaW5zdGVhZCBv Zg0KPiBhICIuaGV4IiBmaWxlLg0KPiBJdCBhbHNvIGFkZHMgdGhlIGdlbmVyYXRpb24gb2YgYW4g aW50ZXJtZWRpYXRlICIuYW1saSIgZmlsZSB3aGVuDQo+IGNvbXBpbGluZyBhbiBBU0wgZmlsZSwg YW5kIGFkZHMgYSBydWxlIHRvIGNvbnZlcnQgdGhpcyAiLmFtbGkiIHRvIGEgQw0KPiBmaWxlLg0K Pg0KPiBUaGlzIGFsbG93cyB0byBnZW5lcmF0ZSBhIEMgZmlsZSBjb250YWluaW5nIHRoZSBBTUwg Ynl0ZWNvZGUgZnJvbSBhbg0KPiBBU0wgZmlsZS4gVGhpcyBDIGZpbGUgd2lsbCB0aGVuIGJlIGhh bmRsZWQgYnkgdGhlIEVESzIgYnVpbGQgc3lzdGVtIHRvDQo+IGdlbmVyYXRlIGFuIG9iamVjdCBm aWxlLg0KPiBUaHVzLCBubyBmaWxlIGluY2x1c2lvbiB3aWxsIGJlIHJlcXVpcmVkIGFueW1vcmUu IFRoZSBDIGZpbGUgcmVxdWlyaW5nDQo+IHRoZSBBTUwgYnl0ZWNvZGUgYXMgYSBDIGFycmF5LCBh bmQgdGhlIEFTTCBmaWxlLCB3aWxsIGJlIGNvbXBpbGVkDQo+IGluZGVwZW5kZW50bHkuIFRoZSBD IGFycmF5IG11c3QgYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBzeW1ib2wuIFRoZQ0KPiBsaW5r ZXIgaXMgcmVzb2x2aW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlIEMgYXJyYXkgc3ltYm9sLg0KPg0K PiBUbyBzdW1tYXJpemUsIHRoZSBmbG93IGdvZXMgYXM6DQo+ICAtMS4gQVNMIGZpbGUgaXMgY29t cGlsZWQgdG8gQU1MOw0KPiAgLTIuIEFNTCBmaWxlIGlzIGNvcGllZCB0byBhICIuYW1saSIgaW50 ZXJtZWRpYXRlIGZpbGU7ICAtMy4gRURLMg0KPiBidWlsZCBzeXN0ZW0gYXBwbGllcyB0aGUgcnVs ZSByZWxldmFudCB0byAiLmFtbGkiDQo+ICAgICAgZmlsZXMuIFRoaXMgaXMsIGNhbGxpbmcgdGhl ICJBbWxUb0MiIHNjcmlwdCwgZ2VuZXJhdGluZw0KPiAgICAgIGEgQyBmaWxlIGZyb20gdGhlICIu YW1saSIgZmlsZTsNCj4gIC00LiBFREsyIGJ1aWxkIHN5c3RlbSBhcHBsaWVzIHRoZSBydWxlIHJl bGV2YW50IHRvIEMgZmlsZXMuDQo+ICAgICAgVGhpcyBpcyBjcmVhdGluZyBhbiBvYmplY3QgZmls ZS4NCj4gIC01LiBFREsyIGJ1aWxkIHN5c3RlbSBsaW5rcyB0aGUgb2JqZWN0IGZpbGUgY29udGFp bmluZyB0aGUNCj4gICAgICBBTUwgYnl0ZWNvZGUgd2l0aCB0aGUgb2JqZWN0IGZpbGUgcmVxdWly aW5nIGl0Lg0KPg0KPiBTaWduZWQtb2ZmLWJ5OiBQaWVycmUgR29uZG9pcyA8UGllcnJlLkdvbmRv aXNAYXJtLmNvbT4NCj4gU3VnZ2VzdGVkLWJ5OiBUb21hcyBQaWxhciA8VG9tYXMuUGlsYXJAYXJt LmNvbT4NCj4gLS0tDQo+DQo+IFRoZSBjaGFuZ2VzIGNhbiBiZSBzZWVuIGF0Og0KPiBodHRwczov L2dpdGh1Yi5jb20vUGllcnJlQVJNL2VkazIvY29tbWl0cy84MDNfQ29tcGlsZV9BTUxfYnl0ZWNv ZGVfYXJyDQo+IGF5X2ludG9fT0JKX2ZpbGVfdjUNCj4NCj4gTm90ZXM6DQo+ICAgICB2MToNCj4g ICAgICAtIEFkZCBhIG5ldyBydWxlIHRvIHRoZSBidWlsZF9ydWxlLnRlbXBsYXRlIGZpbGUgdG8N Cj4gICAgICAgIGdlbmVyYXRlICIub2JqIiBmaWxlcyBmcm9tIC5hc2wgZmlsZXMsIGFuZCBtb2Rp ZnkNCj4gICAgICAgIHRoZSBBbWxUb0Mgc2NyaXB0IGFjY29yZGluZ2x5LiBbUGllcnJlXQ0KPiAg ICAgdjI6DQo+ICAgICAgLSBSZXN0cmljdCB0aGUgcnVsZSB0byBEWEVfRFJJVkVSLiBUaGlzIGFs bG93cyB0byBidWlsZA0KPiAgICAgICAgdGhlIE92bWZQa2csIHdoaWNoIHdhcyBub3QgdGhlIGNh c2UgaW4gdjEuIFtQaWVycmVdDQo+ICAgICB2MzoNCj4gICAgICAtIENoYW5nZWQgIlNpZ25lZC1v ZmYtYnkiIHRvICJTdWdnZXN0ZWQtYnkiLiBbQm9iXQ0KPiAgICAgdjQ6DQo+ICAgICAtIE5vIG1v ZGlmaWNhdGlvbi4gUmUtc2VuZGluZyB0aGUgcGF0Y2ggd2l0aCBiYXNlNjQNCj4gICAgICAgZW5j b2RpbmcgdG8gY29uc2VydmUgdGhlIHJpZ2h0IGxpbmUgZW5kaW5ncy4gW0JvYl0NCj4gICAgIHY1 Og0KPiAgICAgIC0gTm8gbW9kaWZpY2F0aW9uLiBbUGllcnJlXQ0KPg0KPiAgQmFzZVRvb2xzL0Nv bmYvYnVpbGRfcnVsZS50ZW1wbGF0ZSAgICAgICB8IDE1ICsrKy0NCj4gIEJhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL0FtbFRvQy9BbWxUb0MucHkgfCA4MiArKysrKysrKy0tLS0tLS0tLS0tLQ0KPiAg MiBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkNCj4NCj4g ZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Db25mL2J1aWxkX3J1bGUudGVtcGxhdGUNCj4gYi9CYXNl VG9vbHMvQ29uZi9idWlsZF9ydWxlLnRlbXBsYXRlDQo+IGluZGV4DQo+IDA4MjJiNjgxZmNkOWY2 MWM2NTA4ZTZmOTNmZmMzMWZhNzBmZDcwNTkuLmMwMzQ4Njk5MTU5MTQ5MzZlMjhmNjRhNmFhZGIN Cj4gYTA4ZTAxNjlkYTQ0IDEwMDc1NQ0KPiAtLS0gYS9CYXNlVG9vbHMvQ29uZi9idWlsZF9ydWxl LnRlbXBsYXRlDQo+ICsrKyBiL0Jhc2VUb29scy9Db25mL2J1aWxkX3J1bGUudGVtcGxhdGUNCj4g QEAgLTQxOSw2ICs0MTksNyBAQA0KPg0KPiAgICAgIDxPdXRwdXRGaWxlPg0KPiAgICAgICAgICAk KE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uYW1sDQo+ICsgICAgICAgICQoT1VU UFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5hbWxpDQo+DQo+ICAgICAgPEV4dHJhRGVw ZW5kZW5jeT4NCj4gICAgICAgICAgJChNQUtFX0ZJTEUpDQo+IEBAIC00MjgsMTQgKzQyOSwyNCBA QA0KPiAgICAgICAgICAiJChBU0xQUCkiICQoREVQU19GTEFHUykgJChBU0xQUF9GTEFHUykgJChJ TkMpIC9JJHtzX3BhdGh9ICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5pID4g JChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmlpaQ0KPiAgICAgICAgICBUcmlt IC0tc291cmNlLWNvZGUgLWwgLW8gJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9 LmlpaWkgJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmlpaQ0KPiAgICAgICAg ICAiJChBU0wpIiAkKEFTTF9GTEFHUykgJChBU0xfT1VURkxBR1MpJHtkc3R9ICQoT1VUUFVUX0RJ UikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5paWlpDQo+IC0gICAgICAgIC1BbWxUb0hleCAkKE9V VFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uYW1sDQo+ICsgICAgICAgICQoQ1ApICQo T1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5hbWwNCj4gKyAkKE9VVFBVVF9ESVIp KCspJHtzX2Rpcn0oKykke3NfYmFzZX0uYW1saQ0KPg0KPiAgICAgIDxDb21tYW5kLkdDQz4NCj4g ICAgICAgICAgVHJpbSAtLWFzbC1maWxlIC0tYXNsLWRlcHMgLW8gJChPVVRQVVRfRElSKSgrKSR7 c19kaXJ9KCspJHtzX2Jhc2V9LmkgLWkgJChJTkNfTElTVCkgJHtzcmN9DQo+ICAgICAgICAgICIk KEFTTFBQKSIgJChERVBTX0ZMQUdTKSAkKEFTTFBQX0ZMQUdTKSAkKElOQykgLUkke3NfcGF0aH0g JChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmkgPiAkKE9VVFBVVF9ESVIpKCsp JHtzX2Rpcn0oKykke3NfYmFzZX0uaWlpDQo+ICAgICAgICAgIFRyaW0gLS1zb3VyY2UtY29kZSAt bCAtbyAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uaWlpaSAkKE9VVFBVVF9E SVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uaWlpDQo+ICAgICAgICAgICIkKEFTTCkiICQoQVNM X0ZMQUdTKSAkKEFTTF9PVVRGTEFHUykke2RzdH0gJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCsp JHtzX2Jhc2V9LmlpaWkNCj4gLSAgICAgICAgLUFtbFRvSGV4ICQoT1VUUFVUX0RJUikoKykke3Nf ZGlyfSgrKSR7c19iYXNlfS5hbWwNCj4gKyAgICAgICAgJChDUCkgJChPVVRQVVRfRElSKSgrKSR7 c19kaXJ9KCspJHtzX2Jhc2V9LmFtbA0KPiArICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7 c19iYXNlfS5hbWxpDQo+ICsNCj4gK1tBY3BpLU1hY2hpbmUtTGFuZ3VhZ2UtRmlsZS10by1DLkRY RV9EUklWRVJdDQo+ICsgICAgPElucHV0RmlsZT4NCj4gKyAgICAgICAgPy5hbWxpDQo+ICsNCj4g KyAgICA8T3V0cHV0RmlsZT4NCj4gKyAgICAgICAgJHtzX3BhdGh9KCspJHtzX2Jhc2V9LmMNCj4g Kw0KPiArICAgIDxDb21tYW5kPg0KPiArICAgICAgICAtQW1sVG9DICR7c3JjfQ0KPg0KPiAgW0Mt Q29kZS1GaWxlLkFjcGlUYWJsZV0NCj4gICAgICA8SW5wdXRGaWxlPg0KPiBkaWZmIC0tZ2l0IGEv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQW1sVG9DL0FtbFRvQy5weQ0KPiBiL0Jhc2VUb29scy9T b3VyY2UvUHl0aG9uL0FtbFRvQy9BbWxUb0MucHkNCj4gaW5kZXgNCj4gNjQzZGIyOTEwZTM3YWNm ZGQ4MGFjMThkMjg4YzkyMTMyMGE3OWNlMS4uMzQ2ZGU3MTU5ZGU3MDJkODYwYmJkODA5ZGRiZQ0K PiA4MTc1ZjE0OTNjZmIgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0Ft bFRvQy9BbWxUb0MucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQW1sVG9DL0Ft bFRvQy5weQ0KPiBAQCAtMSw5ICsxLDkgQEANCj4gICMjIEBmaWxlDQo+ICAjDQo+IC0jIENvbnZl cnQgYW4gQU1MIGZpbGUgdG8gYSAuaGV4IGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2Rl DQo+IHN0b3JlZCBpbiBhDQo+ICsjIENvbnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAuYyBmaWxlIGNv bnRhaW5pbmcgdGhlIEFNTCBieXRlY29kZSBzdG9yZWQNCj4gK2luIGENCj4gICMgQyBhcnJheS4N Cj4gLSMgQnkgZGVmYXVsdCwgIlRhYmxlc1xEc2R0LmFtbCIgd2lsbCBnZW5lcmF0ZSAiVGFibGVz XERzZHQuaGV4Ii4NCj4gLSMgIlRhYmxlc1xEc2R0LmhleCIgd2lsbCBjb250YWluIGEgQyBhcnJh eSBuYW1lZCAiZHNkdF9hbWxfY29kZSIgdGhhdA0KPiBjb250YWlucw0KPiArIyBCeSBkZWZhdWx0 LCAiVGFibGVzXERzZHQuYW1sIiB3aWxsIGdlbmVyYXRlICJUYWJsZXNcRHNkdC5jIi4NCj4gKyMg IlRhYmxlc1xEc2R0LmMiIHdpbGwgY29udGFpbiBhIEMgYXJyYXkgbmFtZWQgImRzZHRfYW1sX2Nv ZGUiIHRoYXQNCj4gK2NvbnRhaW5zDQo+ICAjIHRoZSBBTUwgYnl0ZWNvZGUuDQo+ICAjDQo+ICAj IENvcHlyaWdodCAoYykgMjAyMCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS PiBAQCAtMTcsMzENCj4gKzE3LDI2IEBAIGZyb20gQ29tbW9uLkJ1aWxkVG9vbEVycm9yIGltcG9y dCAqICBpbXBvcnQgc3lzICBpbXBvcnQgb3MNCj4NCj4gK19fZGVzY3JpcHRpb25fXyA9ICIiIg0K PiArQ29udmVydCBhbiBBTUwgZmlsZSB0byBhIC5jIGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5 dGVjb2RlIHN0b3JlZA0KPiAraW4gYSBDIGFycmF5LiBCeSBkZWZhdWx0LCBUYWJsZXNcRHNkdC5h bWwgd2lsbCBnZW5lcmF0ZSBUYWJsZXNcRHNkdC5jLg0KPiArVGFibGVzXERzZHQuYyB3aWxsIGNv bnRhaW4gYSBDIGFycmF5IG5hbWVkICJkc2R0X2FtbF9jb2RlIiB0aGF0DQo+ICtjb250YWlucyB0 aGUgQU1MIGJ5dGVjb2RlLg0KPiArIiIiDQo+ICsNCj4gICMjIFBhcnNlIHRoZSBjb21tYW5kIGxp bmUgYXJndW1lbnRzLg0KPiAgIw0KPiAgIyBAcmV0dmFsIEEgYXJncGFyc2UuTmFtZVNwYWNlIGlu c3RhbmNlLCBjb250YWluaW5nIHBhcnNlZCB2YWx1ZXMuDQo+ICAjDQo+ICBkZWYgUGFyc2VBcmdz KCk6DQo+ICAgICAgIyBJbml0aWFsaXplIHRoZSBwYXJzZXIuDQo+IC0gICAgUGFyc2VyID0gYXJn cGFyc2UuQXJndW1lbnRQYXJzZXIoDQo+IC0gICAgICBkZXNjcmlwdGlvbj0iQ29udmVydCBhbiBB TUwgZmlsZSB0byBhIC5oZXggZmlsZSBjb250YWluaW5nIHRoZSBBTUwgIiArIFwNCj4gLSAgICAg ICAgICAgICAgICAgICJieXRlY29kZSBzdG9yZWQgaW4gYSBDIGFycmF5LiBCeSBkZWZhdWx0LCAi ICsgXA0KPiAtICAgICAgICAgICAgICAgICAgIlwiVGFibGVzXFxEc2R0LmFtbFwiIHdpbGwgZ2Vu ZXJhdGUiICsgXA0KPiAtICAgICAgICAgICAgICAgICAgIlwiVGFibGVzXFxEc2R0LmhleFwiLiBc IlRhYmxlc1xcRHNkdC5oZXhcIiB3aWxsICIgKyBcDQo+IC0gICAgICAgICAgICAgICAgICAiY29u dGFpbiBhIEMgYXJyYXkgbmFtZWQgXCJkc2R0X2FtbF9jb2RlXCIgdGhhdCAiICsgXA0KPiAtICAg ICAgICAgICAgICAgICAgImNvbnRhaW5zIHRoZSBBTUwgYnl0ZWNvZGUuIg0KPiAtICAgICAgKQ0K PiArICAgIFBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPV9fZGVz Y3JpcHRpb25fXykNCj4NCj4gICAgICAjIERlZmluZSB0aGUgcG9zc2libGUgYXJndW1lbnRzLg0K PiAtICAgIFBhcnNlci5hZGRfYXJndW1lbnQoDQo+IC0gICAgICBkZXN0PSJJbnB1dEZpbGUiLA0K PiAtICAgICAgaGVscD0iUGF0aCB0byBhbiBpbnB1dCBBTUwgZmlsZSB0byBnZW5lcmF0ZSBhIC5o ZXggZmlsZSBmcm9tLiINCj4gLSAgICAgICkNCj4gLSAgICBQYXJzZXIuYWRkX2FyZ3VtZW50KA0K PiAtICAgICAgIi1vIiwgIi0tb3V0LWRpciIsIGRlc3Q9Ik91dERpciIsDQo+IC0gICAgICBoZWxw PSJPdXRwdXQgZGlyZWN0b3J5IHdoZXJlIHRoZSAuaGV4IGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQu ICIgKyBcDQo+IC0gICAgICAgICAgICJEZWZhdWx0IGlzIHRoZSBpbnB1dCBmaWxlJ3MgZGlyZWN0 b3J5LiINCj4gLSAgICAgICkNCj4gKyAgICBQYXJzZXIuYWRkX2FyZ3VtZW50KGRlc3Q9IklucHV0 RmlsZSIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGFuIGlucHV0 IEFNTCBmaWxlIHRvIGdlbmVyYXRlIGEgLmMgZmlsZSBmcm9tLiIpDQo+ICsgICAgUGFyc2VyLmFk ZF9hcmd1bWVudCgiLW8iLCAiLS1vdXQtZGlyIiwgZGVzdD0iT3V0RGlyIiwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGhlbHA9Ik91dHB1dCBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5jIGZpbGUg d2lsbA0KPiArIGJlIGdlbmVyYXRlZC4gRGVmYXVsdCBpcyB0aGUgaW5wdXQgZmlsZSdzIGRpcmVj dG9yeS4iKQ0KPg0KPiAgICAgICMgUGFyc2UgdGhlIGlucHV0IGFyZ3VtZW50cy4NCj4gICAgICBB cmdzID0gUGFyc2VyLnBhcnNlX2FyZ3MoKQ0KPiBAQCAtNTUsOSArNTAsNyBAQCBkZWYgUGFyc2VB cmdzKCk6DQo+ICAgICAgICAgIHdpdGggb3BlbihBcmdzLklucHV0RmlsZSwgInJiIikgYXMgZklu Og0KPiAgICAgICAgICAgICAgU2lnbmF0dXJlID0gc3RyKGZJbi5yZWFkKDQpKQ0KPiAgICAgICAg ICAgICAgaWYgKCJEU0RUIiBub3QgaW4gU2lnbmF0dXJlKSBhbmQgKCJTU0RUIiBub3QgaW4gU2ln bmF0dXJlKToNCj4gLSAgICAgICAgICAgICAgICBFZGtMb2dnZXIuaW5mbygiSW52YWxpZCBmaWxl IHR5cGUuICIgKyBcDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaWxlIGRv ZXMgbm90IGhhdmUgYSB2YWxpZCAiICsgXA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiRFNEVCBvciBTU0RUIHNpZ25hdHVyZTogJXMiICUgQXJncy5JbnB1dEZpbGUpDQo+ICsg ICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmluZm8oIkludmFsaWQgZmlsZSB0eXBlLiBGaWxlIGRv ZXMgbm90IGhhdmUNCj4gKyBhIHZhbGlkIERTRFQgb3IgU1NEVCBzaWduYXR1cmU6IHt9Ii5mb3Jt YXQoQXJncy5JbnB1dEZpbGUpKQ0KPiAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lDQo+DQo+ ICAgICAgIyBHZXQgdGhlIGJhc2VuYW1lIG9mIHRoZSBpbnB1dCBmaWxlLg0KPiBAQCAtNjYsNDIg KzU5LDM5IEBAIGRlZiBQYXJzZUFyZ3MoKToNCj4NCj4gICAgICAjIElmIG5vIG91dHB1dCBkaXJl Y3RvcnkgaXMgc3BlY2lmaWVkLCBvdXRwdXQgdG8gdGhlIGlucHV0IGRpcmVjdG9yeS4NCj4gICAg ICBpZiBub3QgQXJncy5PdXREaXI6DQo+IC0gICAgICAgIEFyZ3MuT3V0cHV0RmlsZSA9IG9zLnBh dGguam9pbigNCj4gLSAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoQXJncy5JbnB1dEZpbGUpLA0K PiAtICAgICAgICAgIEJhc2VOYW1lICsgIi5oZXgiDQo+IC0gICAgICAgICAgKQ0KPiArICAgICAg ICBBcmdzLk91dHB1dEZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKEFyZ3MuSW5w dXRGaWxlKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VO YW1lICsgIi5jIikNCj4gICAgICBlbHNlOg0KPiAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlz dHMoQXJncy5PdXREaXIpOg0KPiAgICAgICAgICAgICAgb3MubWtkaXIoQXJncy5PdXREaXIpDQo+ IC0gICAgICAgIEFyZ3MuT3V0cHV0RmlsZSA9IG9zLnBhdGguam9pbihBcmdzLk91dERpciwgQmFz ZU5hbWUgKyAiLmhleCIpDQo+ICsgICAgICAgIEFyZ3MuT3V0cHV0RmlsZSA9IG9zLnBhdGguam9p bihBcmdzLk91dERpciwgQmFzZU5hbWUgKyAiLmMiKQ0KPg0KPiAgICAgIEFyZ3MuQmFzZU5hbWUg PSBCYXNlTmFtZQ0KPg0KPiAgICAgIHJldHVybiBBcmdzDQo+DQo+IC0jIyBDb252ZXJ0IGFuIEFN TCBmaWxlIHRvIGEgLmhleCBmaWxlIGNvbnRhaW5pbmcgdGhlIEFNTCBieXRlY29kZQ0KPiBzdG9y ZWQNCj4gKyMjIENvbnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAuYyBmaWxlIGNvbnRhaW5pbmcgdGhl IEFNTCBieXRlY29kZQ0KPiArc3RvcmVkDQo+ICAjICBpbiBhIEMgYXJyYXkuDQo+ICAjDQo+ICAj IEBwYXJhbSAgSW5wdXRGaWxlICAgICBQYXRoIHRvIHRoZSBpbnB1dCBBTUwgZmlsZS4NCj4gLSMg QHBhcmFtICBPdXRwdXRGaWxlICAgIFBhdGggdG8gdGhlIG91dHB1dCAuaGV4IGZpbGUgdG8gZ2Vu ZXJhdGUuDQo+ICsjIEBwYXJhbSAgT3V0cHV0RmlsZSAgICBQYXRoIHRvIHRoZSBvdXRwdXQgLmMg ZmlsZSB0byBnZW5lcmF0ZS4NCj4gICMgQHBhcmFtICBCYXNlTmFtZSAgICAgIEJhc2UgbmFtZSBv ZiB0aGUgaW5wdXQgZmlsZS4NCj4gLSMgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYWxz byB0aGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIC5oZXggZmlsZS4NCj4gKyMgICAgICAgICAgICAg ICAgICAgICAgIFRoaXMgaXMgYWxzbyB0aGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIC5jIGZpbGUu DQo+ICAjDQo+IC1kZWYgQW1sVG9IZXgoSW5wdXRGaWxlLCBPdXRwdXRGaWxlLCBCYXNlTmFtZSk6 DQo+ICtkZWYgQW1sVG9DKElucHV0RmlsZSwgT3V0cHV0RmlsZSwgQmFzZU5hbWUpOg0KPg0KPiAt ICAgIE1hY3JvTmFtZSA9ICJfX3t9X0hFWF9fIi5mb3JtYXQoQmFzZU5hbWUudXBwZXIoKSkNCj4g ICAgICBBcnJheU5hbWUgPSBCYXNlTmFtZS5sb3dlcigpICsgIl9hbWxfY29kZSINCj4gKyAgICBG aWxlSGVhZGVyID1cDQo+ICsiIiINCj4gKy8vIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQg ZnJvbToNCj4gKy8vICAgLVB5dGhvbiBzY3JpcHQ6IHt9DQo+ICsvLyAgIC1JbnB1dCBBTUwgZmls ZToge30NCj4gKw0KPiArIiIiDQo+DQo+ICAgICAgd2l0aCBvcGVuKElucHV0RmlsZSwgInJiIikg YXMgZkluLCBvcGVuKE91dHB1dEZpbGUsICJ3IikgYXMgZk91dDoNCj4gICAgICAgICAgIyBXcml0 ZSBoZWFkZXIuDQo+IC0gICAgICAgIGZPdXQud3JpdGUoIi8vIFRoaXMgZmlsZSBoYXMgYmVlbiBn ZW5lcmF0ZWQgZnJvbTpcbiIgKyBcDQo+IC0gICAgICAgICAgICAgICAgICAgIi8vIFx0UHl0aG9u IHNjcmlwdDogIiArIFwNCj4gLSAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgoX19m aWxlX18pICsgIlxuIiArIFwNCj4gLSAgICAgICAgICAgICAgICAgICAiLy8gXHRJbnB1dCBBTUwg ZmlsZTogIiArIFwNCj4gLSAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgoSW5wdXRG aWxlKSArICJcblxuIiArIFwNCj4gLSAgICAgICAgICAgICAgICAgICAiI2lmbmRlZiB7fVxuIi5m b3JtYXQoTWFjcm9OYW1lKSArIFwNCj4gLSAgICAgICAgICAgICAgICAgICAiI2RlZmluZSB7fVxu XG4iLmZvcm1hdChNYWNyb05hbWUpDQo+IC0gICAgICAgICAgICAgICAgICAgKQ0KPiArICAgICAg ICBmT3V0LndyaXRlKEZpbGVIZWFkZXIuZm9ybWF0KG9zLnBhdGguYWJzcGF0aChJbnB1dEZpbGUp LA0KPiArIG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKQ0KPg0KPiAgICAgICAgICAjIFdyaXRl IHRoZSBhcnJheSBhbmQgaXRzIGNvbnRlbnQuDQo+ICAgICAgICAgIGZPdXQud3JpdGUoInVuc2ln bmVkIGNoYXIge31bXSA9IHt7XG4gICIuZm9ybWF0KEFycmF5TmFtZSkpDQo+IEBAIC0xMTUsMTUg KzEwNSwxMiBAQCBkZWYgQW1sVG9IZXgoSW5wdXRGaWxlLCBPdXRwdXRGaWxlLCBCYXNlTmFtZSk6 DQo+ICAgICAgICAgICAgICBieXRlID0gZkluLnJlYWQoMSkNCj4gICAgICAgICAgZk91dC53cml0 ZSgiXG59O1xuIikNCj4NCj4gLSAgICAgICAgIyBXcml0ZSBmb290ZXIuDQo+IC0gICAgICAgIGZP dXQud3JpdGUoIiNlbmRpZiAvLyB7fVxuIi5mb3JtYXQoTWFjcm9OYW1lKSkNCj4gLQ0KPiAgIyMg TWFpbiBtZXRob2QNCj4gICMNCj4gICMgVGhpcyBtZXRob2Q6DQo+ICAjICAgMS0gIEluaXRpYWxp emUgYW4gRWRrTG9nZ2VyIGluc3RhbmNlLg0KPiAgIyAgIDItICBQYXJzZXMgdGhlIGlucHV0IGFy Z3VtZW50cy4NCj4gLSMgICAzLSAgQ29udmVydHMgYW4gQU1MIGZpbGUgdG8gYSAuaGV4IGZpbGUg Y29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2RlIHN0b3JlZA0KPiArIyAgIDMtICBDb252ZXJ0cyBh biBBTUwgZmlsZSB0byBhIC5jIGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2RlIHN0b3Jl ZA0KPiAgIyAgICAgICBpbiBhIEMgYXJyYXkuDQo+ICAjDQo+ICAjIEByZXR2YWwgMCAgICAgU3Vj Y2Vzcy4NCj4gQEAgLTEzOSwxMCArMTI2LDkgQEAgZGVmIE1haW4oKToNCj4gICAgICAgICAgaWYg bm90IENvbW1hbmRBcmd1bWVudHM6DQo+ICAgICAgICAgICAgICByZXR1cm4gMQ0KPg0KPiAtICAg ICAgICAjIENvbnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAuaGV4IGZpbGUgY29udGFpbmluZyB0aGUg QU1MIGJ5dGVjb2RlIHN0b3JlZA0KPiArICAgICAgICAjIENvbnZlcnQgYW4gQU1MIGZpbGUgdG8g YSAuYyBmaWxlIGNvbnRhaW5pbmcgdGhlIEFNTA0KPiArIGJ5dGVjb2RlIHN0b3JlZA0KPiAgICAg ICAgICAjIGluIGEgQyBhcnJheS4NCj4gLSAgICAgICAgQW1sVG9IZXgoQ29tbWFuZEFyZ3VtZW50 cy5JbnB1dEZpbGUsIENvbW1hbmRBcmd1bWVudHMuT3V0cHV0RmlsZSwNCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgQ29tbWFuZEFyZ3VtZW50cy5CYXNlTmFtZSkNCj4gKyAgICAgICAgQW1s VG9DKENvbW1hbmRBcmd1bWVudHMuSW5wdXRGaWxlLA0KPiArIENvbW1hbmRBcmd1bWVudHMuT3V0 cHV0RmlsZSwgQ29tbWFuZEFyZ3VtZW50cy5CYXNlTmFtZSkNCj4gICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6DQo+ICAgICAgICAgIHByaW50KGUpDQo+ICAgICAgICAgIHJldHVybiAxDQo+IC0t DQo+ICdHdWlkKENFMTY1NjY5LTNFRjMtNDkzRi1CODVELTYxOTBFRTVCOTc1OSknDQo+DQo+DQpJ TVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFj aG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlv dSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRl ciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3Ro ZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBp bmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3UuDQo=