From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2116.outbound.protection.outlook.com [40.107.255.116]) by sourceware.org (Postfix) with ESMTPS id 84C473857736 for ; Mon, 15 May 2023 13:49:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 84C473857736 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=espressif.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=espressif.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l82cDqe/lEsgIS+/ApR57c9WHxZ+CXDUQJ2nSegpAWCw10FUGYF5QoozPPdkggi6S7piRr2gAXAntZLjpi1ru0XHSihq7eSnkfWC2zasmLZzchPoxeQOIM3KgV77hQP95kIvK2c3hri6SRShAHLMfKx2eh7Ao3os6idsMqilt2IVkmAOSiiFT0Zw7gkTb8HTbFOl80IkGZKt5yHXfTNHR2D42qoIjaYLzcw7jTDjy+FrJsCGs7IUgqg4d6k6/M5mQchkdrYq6/9JNJGTGuIPT7PXdoiZHsFp4B8gJAH2N0qlyygh3IzSGohOpL+0ZKkY+uImFn2cQnbMOJ24S0ps6g== 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=hUfznW0LVhi8EgBJJdMH8aBalE4UnXwFuEPmKQkwvSI=; b=C2ku4V1hrMCM5OV2aKEUdEadnvy0A5qx7vmwjVXOQX3GsxKKG5LDH7994jgNIjcne4zpbgNIsl0SH0BRcOgZAPxS49cB+cLyBtz+Lv+DiD49IFXaaKn5W6SqJrWqMgPpsk2mchJdq5QOeRILkATgbvB81EjSMQkPe9im5LXni+1kNi+/9KmOi6+gpC8F16Mi7MGZhfSMP9JPKrIhxEo/yZhWctUfeswFjUts23VVbuldYf3LFubtr7FTp5XGj7WEBz+3quDZ+3zBP3wTYGsnMJ6fRtSpGafdcYrRdz5zn16xYt6PPWeYVUcL0u5+fIB9jHZWH/MtuC/EOKj6wJ5eyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=espressif.com; dmarc=pass action=none header.from=espressif.com; dkim=pass header.d=espressif.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=espressifsystems.onmicrosoft.com; s=selector1-espressifsystems-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hUfznW0LVhi8EgBJJdMH8aBalE4UnXwFuEPmKQkwvSI=; b=Ox5kKZyrYRY4nCUA4UQi8GWR3VkheWFB8E9Y9mtBDE8kuGSLuNlIJ5xnq+m8Fp0Q4sazOpY0T6EQvYcY+jKrxgyqJPGTa8Ks0vGRDvfdjSkbkKgI6Gc1f/+LolDh6cHy+cLfNovtNu8DJqSbYANZ2pOaZpdlGB/na9fd6K6avuw= Received: from TYZPR04MB5736.apcprd04.prod.outlook.com (2603:1096:400:1fa::7) by TYZPR04MB6150.apcprd04.prod.outlook.com (2603:1096:400:25c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.30; Mon, 15 May 2023 13:48:46 +0000 Received: from TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::8e83:7f84:2f6b:5a5]) by TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::8e83:7f84:2f6b:5a5%7]) with mapi id 15.20.6387.026; Mon, 15 May 2023 13:48:46 +0000 From: Alexey Lapshin To: "jcmvbkbc@gmail.com" CC: Alexey Gerenkov , "newlib@sourceware.org" , Ivan Grokhotkov Subject: [PATCH, RFC v2 2/8] libc: sys: add xtensa port Thread-Topic: [PATCH, RFC v2 2/8] libc: sys: add xtensa port Thread-Index: AQHZhzP3BfhvHcaypku5g7x2mX/mqg== Date: Mon, 15 May 2023 13:48:45 +0000 Message-ID: <1500a81953193955466c495f3dec43cfb5d059ef.camel@espressif.com> References: <1cb9e9f8c8e4e1df52b439184333d628b3532f65.camel@espressif.com> <15cedffa7c98bea187abe6041c7542db03dbe834.camel@espressif.com> In-Reply-To: <15cedffa7c98bea187abe6041c7542db03dbe834.camel@espressif.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=espressif.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYZPR04MB5736:EE_|TYZPR04MB6150:EE_ x-ms-office365-filtering-correlation-id: 6df1e9ad-ad16-4fc7-df30-08db554b1a79 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: FE9mZ27jFhpVUTrWloiE9fNa7J1d7nkRPltlhavBCoOuDpjfRvT0xrCFTwKan8D4EVdAAkgq6as8H1xV1aUVof20plABLuTRfsLhMLHVH7/T1r3K+hc9Sa1CCM/+naTcOiJYhRG4h9yALoEeytGLI/J7psz0+ojjlTQ0H3m18ryA19cslA1bccvbThrYujLjNflm6hdbVGqJdQMqZBsvhJFwyEpeCD250A2q0YEjPzQcnjziA/R8XvmcRyFmIghZQc6j+VufHlng4asdPR2UXzNaH2nlWbNWklXagJfwy+JlaKW2AjkCG69jP2rMV000ygO5YHkH/jYsBB8hvWBe4ye2SSwFjP/9S/7mSVVfsaUlwXkwlcAeeEyNm9rUXUnbJlYl290oGMtnPyTPqGpYsCJL+vjlvwXl+yttORCnhL+o5AGD/HaA3qgUf1vzxEkoL2reE/jfN/u+ZMIJKNzCSMrJXF7HNHTXN1R9WiNj5fzg4/lqozHDeJRW5w4JbJCfP7+mQbhB+A+3m25nufsarV1u9PZoi5JkCTt50VKpz8iEM/O6Xjw/2TWtWvu8iAzDvPrMapuL5TXim+FwrvJgQDxO1E+lrSroVmevLJ6944sWZxPbWMW+gkCrBpGjdwUHM3OO0QpEhQWzsPDkjI67rThHIrxX9XDzo46Y2ntZRci7pSDOUoskfo0Trn9NEPaQ x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR04MB5736.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(346002)(376002)(396003)(366004)(39840400004)(451199021)(83380400001)(66476007)(66556008)(64756008)(66446008)(66946007)(91956017)(76116006)(2616005)(6486002)(26005)(6506007)(55236004)(6512007)(107886003)(478600001)(54906003)(71200400001)(186003)(30864003)(44832011)(86362001)(8676002)(8936002)(5660300002)(2906002)(36756003)(41300700001)(38070700005)(4326008)(6916009)(316002)(38100700002)(122000001)(84970400001)(66899021)(2004002)(547064002)(559001)(579004)(460985005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RklHTHJpckdrOXpYY0Y2V1A2czliT1RXNkpzQkVGQWVlQ2swSy8vVXV5djBr?= =?utf-8?B?NkZWVVBXUTJXT0xJN0ttUVcydlJmMnJyeW9WOE9vcnk4ZzRLZ29RTGl1bVpB?= =?utf-8?B?Z2hEU29yVkh1d2tMWjgwbXhLUzR0bSsvL2lSZnprZzhSVVhaZEFQSnB4NlBq?= =?utf-8?B?b0lkellrVkFzOGlSMUpwL2RaT3p4T1RzbFE4YU4vUFVWa3BRZ3E4VldublhU?= =?utf-8?B?RURzdUZvWGlYa2JLdTRzZmNTaHpDMyt4cWpaY1NERVdJSzZzOWdEVEM4czlv?= =?utf-8?B?cyttSWowWkdQWGpjQzBCNGJoNER1bE9DeE1tZ3RWUG5HWmxYb3NWY3FYbFg4?= =?utf-8?B?bzJuRTJpVWdWaWRuc0k3Y2JCSXJqMlVPenR2bWdNd24xL2dDeWFWVmdrQ0VL?= =?utf-8?B?ZTNrSHZYWHBvaWJsaEFQWm5Venc2TXBVOGRrK1NkMkx2RThwbGpGT1VkSHZO?= =?utf-8?B?MnNZN21JbG1uUjB2dHcyQldEcTdzUlZMQ1dPS2V3MEZ4UGxoK2ErQ1A5QlRT?= =?utf-8?B?bkNLVUxwTldOWktwSDhySVcxYzlEc3hySFdjV1Fkelo1SC85Q0RvNTNNeFAw?= =?utf-8?B?VWV2MXRDTytobVprbTlMSzJSWWMxb2ZHbS9wcWFUR3pKcURlSkd4b24xRTdR?= =?utf-8?B?VG9XaVlqZGNld2ljdDA4a3cwYTlpZm55WlNuS2pCaWpmYU5jcXdvdnRGZWtY?= =?utf-8?B?bXdZd21HdW5WR3dmOGNkZ0pxRjRkNndJbFY2TUJMQUpFMGFXblRmS3ZMbW9x?= =?utf-8?B?WGlrUXE0RzhYTzNVZ3NOdEpRMVI2M2R5NlZkTEtLSmdUMFppRldmcFVFc3RQ?= =?utf-8?B?ZzhTV3dGK2hibURHMGFEQ0c1alRNNmhpWG9LTmVKODlFT1ptWm52MHR5OUR5?= =?utf-8?B?aWJzeXZEM0ZSTTFvT0JXWkc1MXNFRnhSY2M3QXRIOGRNaGFTMVZVNWdDY1ho?= =?utf-8?B?Nm9uUWc2R3lBUU11cGdOSlB6d0Joc3o5SEFMQlpDTjBJMElCVDZnay9ZZm9R?= =?utf-8?B?enRCdU9pUG4wT2RWTzNsZVJKaEVZb2dkVnZvQzJOTGRSY1h1TjR4L1M3Y2U3?= =?utf-8?B?K3lUZGkxWGJWVElma3Q4eno0eTJsTTF4NnQxc05NbmtmZmllLytmenZmWHhz?= =?utf-8?B?L2lzMTJzeCtPVWJ5bzRLTFpTMndWT1RQaDZ1bkhYdFQ1NGlWUWtxd0hySUdD?= =?utf-8?B?cnZqMVRJdUFnWi85ZUhiUWp0TDJNVUZUVzVhbTAvTHJQRFZZRkxQN3BrUkFJ?= =?utf-8?B?QWZ6SG1mSVJHQWRPbVlmR2dITjk0dTMyYmVsS1lvb1I2QzRhV2RacXVGeGRv?= =?utf-8?B?QXJoT0FqWEh2cW1peHVnK1Z5V3REU251Uk8vRThzcDBueGhiVjVXK0VTc1oz?= =?utf-8?B?RHZVZnp1TlFabVFzTkErSzlhc2sycllndUEzMXJzMVpVNU9TSkV5MlhxUThr?= =?utf-8?B?aGIzMUxoUStZZEtudzE3ZlJHVEZqYmtGOTVDSXBBTmp3QWl1NUpqeVErOXlD?= =?utf-8?B?eGpjV1lMTXlYQjM5NS9zS3IrbThrMUNYUzhvcE42aWROdnJpYTBGVURYVUdh?= =?utf-8?B?Yk4vVzNBMUtIWUR2MUJUaXBycXdVVlphaklCZ1hpNkZLOVVXOHpOS3E4cEwr?= =?utf-8?B?OXkzaTVRRFFvLzFOM25rN3g4ZFdCbDNCT25OdmtWaVdYc0NJb091YU9FMG51?= =?utf-8?B?NTFsbEFFNzBCaXN2czdhUC9yLzdSRmpRWDRkWmpjV2lUaWM1Y3hmREFZUUsy?= =?utf-8?B?a3YwaHFDUmtJc2hFNWE1Tmt6MDI0dUwzb2IraGczYnQ0NUV0eVVFb3JjTUFq?= =?utf-8?B?ZFRHTEFEUlZ1eWsxYndKM01ocVhrb0pmUTBnd0Q1K241RGpyRTM2Y3ZYeUt4?= =?utf-8?B?QWsxNyt2dmoxZVJ2TjlUVkliQndENWFuL0hzdFBWL20xYkxvZ1lWWFlva3hq?= =?utf-8?B?d1NqMjA2d0hDWERoY3Y1WkE0dmtVczNmNWIrdHVoWlFkT05vL2lIcHFmYlo3?= =?utf-8?B?ZFpOOVVpOG1qN2FEbHVueitZMXlFbitROEFCQytLOXUwTDdLRmNoblVsekZC?= =?utf-8?B?OGZ2NDRiS0E3MTVKNWl3NE9VdCsyeWlNUGxIQno0VFV5eUxMWjZ3a3ZCUHRr?= =?utf-8?B?cXY4dlBKUkxXR0lXZ2NPNHpodDdWeXdOaW9KdmlBekVxWGlpS2lPWW5wcmhU?= =?utf-8?Q?XBdutkETgjTzmnthkx6nEds=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: espressif.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYZPR04MB5736.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6df1e9ad-ad16-4fc7-df30-08db554b1a79 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2023 13:48:45.7732 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5faf27fd-3557-4294-9545-8ea74a409f39 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: S82caTGMk+RBMsXHaGTv7cdQ3sdy27NPSkmFEyvwTDoGV+ozHF64fejlrBoMdOIVXOHyoEe/J2kfMPx/+LessFk+/QZzHc/Od5qaUXHGR5Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYZPR04MB6150 X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_LINEPADDING,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: bmV3bGliOg0KICAgICAgICAqIGxpYmMvc3lzL2NvbmZpZ3VyZTogYWRkIHh0ZW5zYSBwb3J0DQog ICAgICAgICogbGliYy9zeXMveHRlbnNhL01ha2VmaWxlLmFtOiBpbml0aWFsIGNvbW1pdA0KICAg ICAgICAqIGxpYmMvc3lzL3h0ZW5zYS9NYWtlZmlsZS5pbjogTGlrZXdpc2UuDQogICAgICAgICog bGliYy9zeXMveHRlbnNhL19hdGV4aXQuYzogTGlrZXdpc2UuDQogICAgICAgICogbGliYy9zeXMv eHRlbnNhL2FjbG9jYWwubTQ6IExpa2V3aXNlLg0KICAgICAgICAqIGxpYmMvc3lzL3h0ZW5zYS9j bGlicmFyeV9pbml0LmM6IExpa2V3aXNlLg0KICAgICAgICAqIGxpYmMvc3lzL3h0ZW5zYS9jb25m aWd1cmU6IExpa2V3aXNlLg0KICAgICAgICAqIGxpYmMvc3lzL3h0ZW5zYS9jb25maWd1cmUuaW46 IExpa2V3aXNlLg0KICAgICAgICAqIGxpYmMvc3lzL3h0ZW5zYS9jcmVhdC5jOiBMaWtld2lzZS4N CiAgICAgICAgKiBsaWJjL3N5cy94dGVuc2EvY3J0MC5jOiBMaWtld2lzZS4NCiAgICAgICAgKiBs aWJjL3N5cy94dGVuc2EvaW5jbHVkZS9mZW52Lmg6IExpa2V3aXNlLg0KICAgICAgICAqIGxpYmMv c3lzL3h0ZW5zYS9pbmNsdWRlL3VuaXN0ZC5oOiBMaWtld2lzZS4NCiAgICAgICAgKiBsaWJjL3N5 cy94dGVuc2EvaW5jbHVkZS94dGVuc2EvY29uZmlnL2NvcmUtaXNhLmg6IExpa2V3aXNlLg0KICAg ICAgICAqIGxpYmMvc3lzL3h0ZW5zYS9pc2F0dHkuYzogTGlrZXdpc2UuDQogICAgICAgICogbGli Yy9zeXMveHRlbnNhL3N5cy9maWxlLmg6IExpa2V3aXNlLg0KLS0tDQogbmV3bGliL2xpYmMvc3lz L2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArDQogbmV3bGliL2xpYmMvc3lz L3h0ZW5zYS9NYWtlZmlsZS5hbSAgICAgICAgICAgIHwgICAxNCArDQogbmV3bGliL2xpYmMvc3lz L3h0ZW5zYS9NYWtlZmlsZS5pbiAgICAgICAgICAgIHwgIDM4OCArKw0KIG5ld2xpYi9saWJjL3N5 cy94dGVuc2EvX2F0ZXhpdC5jICAgICAgICAgICAgICB8ICAgNTMgKw0KIG5ld2xpYi9saWJjL3N5 cy94dGVuc2EvYWNsb2NhbC5tNCAgICAgICAgICAgICB8ICA4ODAgKysrKw0KIG5ld2xpYi9saWJj L3N5cy94dGVuc2EvY2xpYnJhcnlfaW5pdC5jICAgICAgICB8ICAgNDIgKw0KIG5ld2xpYi9saWJj L3N5cy94dGVuc2EvY29uZmlndXJlICAgICAgICAgICAgICB8IDQ2MjMgKysrKysrKysrKysrKysr KysNCiBuZXdsaWIvbGliYy9zeXMveHRlbnNhL2NvbmZpZ3VyZS5pbiAgICAgICAgICAgfCAgIDE0 ICsNCiBuZXdsaWIvbGliYy9zeXMveHRlbnNhL2NyZWF0LmMgICAgICAgICAgICAgICAgfCAgICA5 ICsNCiBuZXdsaWIvbGliYy9zeXMveHRlbnNhL2NydDAuYyAgICAgICAgICAgICAgICAgfCAgIDE2 ICsNCiBuZXdsaWIvbGliYy9zeXMveHRlbnNhL2luY2x1ZGUvZmVudi5oICAgICAgICAgfCAgIDg4 ICsNCiBuZXdsaWIvbGliYy9zeXMveHRlbnNhL2luY2x1ZGUvdW5pc3RkLmggICAgICAgfCAgIDEz ICsNCiAuLi4veHRlbnNhL2luY2x1ZGUveHRlbnNhL2NvbmZpZy9jb3JlLWlzYS5oICAgfCAgNjU1 ICsrKw0KIG5ld2xpYi9saWJjL3N5cy94dGVuc2EvaXNhdHR5LmMgICAgICAgICAgICAgICB8ICAg MTggKw0KIG5ld2xpYi9saWJjL3N5cy94dGVuc2Evc3lzL2ZpbGUuaCAgICAgICAgICAgICB8ICAg MzMgKw0KIDE1IGZpbGVzIGNoYW5nZWQsIDY4NDkgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2Rl IDEwMDY0NCBuZXdsaWIvbGliYy9zeXMveHRlbnNhL01ha2VmaWxlLmFtDQogY3JlYXRlIG1vZGUg MTAwNjQ0IG5ld2xpYi9saWJjL3N5cy94dGVuc2EvTWFrZWZpbGUuaW4NCiBjcmVhdGUgbW9kZSAx MDA2NDQgbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9fYXRleGl0LmMNCiBjcmVhdGUgbW9kZSAxMDA2 NDQgbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9hY2xvY2FsLm00DQogY3JlYXRlIG1vZGUgMTAwNjQ0 IG5ld2xpYi9saWJjL3N5cy94dGVuc2EvY2xpYnJhcnlfaW5pdC5jDQogY3JlYXRlIG1vZGUgMTAw NzU1IG5ld2xpYi9saWJjL3N5cy94dGVuc2EvY29uZmlndXJlDQogY3JlYXRlIG1vZGUgMTAwNjQ0 IG5ld2xpYi9saWJjL3N5cy94dGVuc2EvY29uZmlndXJlLmluDQogY3JlYXRlIG1vZGUgMTAwNjQ0 IG5ld2xpYi9saWJjL3N5cy94dGVuc2EvY3JlYXQuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXds aWIvbGliYy9zeXMveHRlbnNhL2NydDAuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGli Yy9zeXMveHRlbnNhL2luY2x1ZGUvZmVudi5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9s aWJjL3N5cy94dGVuc2EvaW5jbHVkZS91bmlzdGQuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXds aWIvbGliYy9zeXMveHRlbnNhL2luY2x1ZGUveHRlbnNhL2NvbmZpZy9jb3JlLWlzYS5oDQogY3Jl YXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJjL3N5cy94dGVuc2EvaXNhdHR5LmMNCiBjcmVhdGUg bW9kZSAxMDA2NDQgbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9zeXMvZmlsZS5oDQoNCmRpZmYgLS1n aXQgYS9uZXdsaWIvbGliYy9zeXMvY29uZmlndXJlIGIvbmV3bGliL2xpYmMvc3lzL2NvbmZpZ3Vy ZQ0KaW5kZXggZTQxZjFjZGUxLi44MjUwNGIwMDUgMTAwNzU1DQotLS0gYS9uZXdsaWIvbGliYy9z eXMvY29uZmlndXJlDQorKysgYi9uZXdsaWIvbGliYy9zeXMvY29uZmlndXJlDQpAQCAtODEzLDYg KzgxMyw3IEBAIHN5c3ZuZWN2NzANCiB0aWM4MA0KIHRpcnRvcw0KIHc2NQ0KK3h0ZW5zYQ0KIHo4 a3NpbScNCiANCiAjIEluaXRpYWxpemUgc29tZSB2YXJpYWJsZXMgc2V0IGJ5IG9wdGlvbnMuDQpA QCAtMTE4NzcsNiArMTE4NzgsOCBAQCBzdWJkaXJzPSIkc3ViZGlycyBhMjlraGlmIg0KIAl0aXJ0 b3MpIHN1YmRpcnM9IiRzdWJkaXJzIHRpcnRvcyINCiAgOzsNCiAJdzY1KSBzdWJkaXJzPSIkc3Vi ZGlycyB3NjUiDQorIDs7DQorCXh0ZW5zYSkgc3ViZGlycz0iJHN1YmRpcnMgeHRlbnNhIg0KICA7 Ow0KIAl6OGtzaW0pIHN1YmRpcnM9IiRzdWJkaXJzIHo4a3NpbSINCiAgOzsNCmRpZmYgLS1naXQg YS9uZXdsaWIvbGliYy9zeXMveHRlbnNhL01ha2VmaWxlLmFtIGIvbmV3bGliL2xpYmMvc3lzL3h0 ZW5zYS9NYWtlZmlsZS5hbQ0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4u YTA3MzZhMjQ2DQotLS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGliYy9zeXMveHRlbnNhL01h a2VmaWxlLmFtDQpAQCAtMCwwICsxLDE0IEBADQorIyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBh dXRvbWFrZSB0byBnZW5lcmF0ZSBNYWtlZmlsZS5pbg0KKw0KK0FVVE9NQUtFX09QVElPTlMgPSBj eWdudXMNCisNCitJTkNMVURFUyA9ICQoTkVXTElCX0NGTEFHUykgJChDUk9TU19DRkxBR1MpICQo VEFSR0VUX0NGTEFHUykNCisNCitub2luc3RfTElCUkFSSUVTID0gbGliLmENCisNCitsaWJfYV9T T1VSQ0VTID0gX2F0ZXhpdC5jIGNyZWF0LmMgaXNhdHR5LmMgY2xpYnJhcnlfaW5pdC5jDQorDQor YWxsOiBjcnQwLm8NCisNCitBQ0xPQ0FMX0FNRkxBR1MgPSAtSSAuLi8uLi8uLg0KK0NPTkZJR19T VEFUVVNfREVQRU5ERU5DSUVTID0gJChuZXdsaWJfYmFzZWRpcikvY29uZmlndXJlLmhvc3QNCmRp ZmYgLS1naXQgYS9uZXdsaWIvbGliYy9zeXMveHRlbnNhL01ha2VmaWxlLmluIGIvbmV3bGliL2xp YmMvc3lzL3h0ZW5zYS9NYWtlZmlsZS5pbg0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAwMC4uZmNjYmNkZGMxDQotLS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGliYy9zeXMv eHRlbnNhL01ha2VmaWxlLmluDQpAQCAtMCwwICsxLDM4OCBAQA0KKyMgTWFrZWZpbGUuaW4gZ2Vu ZXJhdGVkIGJ5IGF1dG9tYWtlIDEuOS41IGZyb20gTWFrZWZpbGUuYW0uDQorIyBAY29uZmlndXJl X2lucHV0QA0KKw0KKyMgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4 LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLA0KKyMgMjAwMywgMjAwNCwgMjAwNSAgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdh cmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJt aXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQg bW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQor IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwNCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJt aXR0ZWQgYnkgbGF3OyB3aXRob3V0DQorIyBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQorIyBQQVJUSUNVTEFSIFBVUlBPU0UuDQor DQorQFNFVF9NQUtFQA0KKw0KK1NPVVJDRVMgPSAkKGxpYl9hX1NPVVJDRVMpDQorDQorc3JjZGly ID0gQHNyY2RpckANCit0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJADQorVlBBVEggPSBAc3JjZGly QA0KK3BrZ2RhdGFkaXIgPSAkKGRhdGFkaXIpL0BQQUNLQUdFQA0KK3BrZ2xpYmRpciA9ICQobGli ZGlyKS9AUEFDS0FHRUANCitwa2dpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9AUEFDS0FHRUAN Cit0b3BfYnVpbGRkaXIgPSAuDQorYW1fX2NkID0gQ0RQQVRIPSIkJHtaU0hfVkVSU0lPTisufSQo UEFUSF9TRVBBUkFUT1IpIiAmJiBjZA0KK0lOU1RBTEwgPSBASU5TVEFMTEANCitpbnN0YWxsX3No X0RBVEEgPSAkKGluc3RhbGxfc2gpIC1jIC1tIDY0NA0KK2luc3RhbGxfc2hfUFJPR1JBTSA9ICQo aW5zdGFsbF9zaCkgLWMNCitpbnN0YWxsX3NoX1NDUklQVCA9ICQoaW5zdGFsbF9zaCkgLWMNCitJ TlNUQUxMX0hFQURFUiA9ICQoSU5TVEFMTF9EQVRBKQ0KK3RyYW5zZm9ybSA9ICQocHJvZ3JhbV90 cmFuc2Zvcm1fbmFtZSkNCitOT1JNQUxfSU5TVEFMTCA9IDoNCitQUkVfSU5TVEFMTCA9IDoNCitQ T1NUX0lOU1RBTEwgPSA6DQorTk9STUFMX1VOSU5TVEFMTCA9IDoNCitQUkVfVU5JTlNUQUxMID0g Og0KK1BPU1RfVU5JTlNUQUxMID0gOg0KK2J1aWxkX3RyaXBsZXQgPSBAYnVpbGRADQoraG9zdF90 cmlwbGV0ID0gQGhvc3RADQorRElTVF9DT01NT04gPSAkKHNyY2RpcikvLi4vLi4vLi4vLi4vY29u ZmlnLmd1ZXNzIFwNCisJJChzcmNkaXIpLy4uLy4uLy4uLy4uL2NvbmZpZy5zdWIgJChzcmNkaXIp L01ha2VmaWxlLmluIFwNCisJJChzcmNkaXIpL01ha2VmaWxlLmFtICQodG9wX3NyY2RpcikvY29u ZmlndXJlIFwNCisJJChhbV9fY29uZmlndXJlX2RlcHMpICQoc3JjZGlyKS8uLi8uLi8uLi8uLi9t a2luc3RhbGxkaXJzDQorc3ViZGlyID0gLg0KK0FDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2Fj bG9jYWwubTQNCithbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS8uLi8uLi8uLi9h Y2luY2x1ZGUubTQgXA0KKwkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5pbg0KK2FtX19jb25maWd1 cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVT KSBcDQorCSQoQUNMT0NBTF9NNCkNCithbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUyA9IGNvbmZp Zy5zdGF0dXMgY29uZmlnLmNhY2hlIGNvbmZpZy5sb2cgXA0KKyBjb25maWd1cmUubGluZW5vIGNv bmZpZ3VyZS5zdGF0dXMubGluZW5vDQorbWtpbnN0YWxsZGlycyA9ICQoU0hFTEwpICQodG9wX3Ny Y2RpcikvLi4vLi4vLi4vLi4vbWtpbnN0YWxsZGlycw0KK0NPTkZJR19DTEVBTl9GSUxFUyA9DQor TElCUkFSSUVTID0gJChub2luc3RfTElCUkFSSUVTKQ0KK0FSRkxBR1MgPSBjcnUNCitsaWJfYV9B UiA9ICQoQVIpICQoQVJGTEFHUykNCitsaWJfYV9MSUJBREQgPQ0KK2FtX2xpYl9hX09CSkVDVFMg PSBfYXRleGl0LiQoT0JKRVhUKSBjcmVhdC4kKE9CSkVYVCkgaXNhdHR5LiQoT0JKRVhUKSBcDQor CWNsaWJyYXJ5X2luaXQuJChPQkpFWFQpDQorbGliX2FfT0JKRUNUUyA9ICQoYW1fbGliX2FfT0JK RUNUUykNCitERUZBVUxUX0lOQ0xVREVTID0gLUkuIC1JJChzcmNkaXIpDQorZGVwY29tcCA9DQor YW1fX2RlcGZpbGVzX21heWJlID0NCitDT01QSUxFID0gJChDQykgJChERUZTKSAkKERFRkFVTFRf SU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpIFwNCisJJChDUFBGTEFHUykgJChB TV9DRkxBR1MpICQoQ0ZMQUdTKQ0KK0NDTEQgPSAkKENDKQ0KK0xJTksgPSAkKENDTEQpICQoQU1f Q0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRADQorU09VUkNF UyA9ICQobGliX2FfU09VUkNFUykNCitFVEFHUyA9IGV0YWdzDQorQ1RBR1MgPSBjdGFncw0KK0FD TE9DQUwgPSBAQUNMT0NBTEANCitBTURFUF9GQUxTRSA9IEBBTURFUF9GQUxTRUANCitBTURFUF9U UlVFID0gQEFNREVQX1RSVUVADQorQU1UQVIgPSBAQU1UQVJADQorQVIgPSBAQVJADQorQVMgPSBA QVNADQorQVVUT0NPTkYgPSBAQVVUT0NPTkZADQorQVVUT0hFQURFUiA9IEBBVVRPSEVBREVSQA0K K0FVVE9NQUtFID0gQEFVVE9NQUtFQA0KK0FXSyA9IEBBV0tADQorQ0MgPSBAQ0NADQorQ0NBUyA9 IEBDQ0FTQA0KK0NDQVNGTEFHUyA9IEBDQ0FTRkxBR1NADQorQ0NERVBNT0RFID0gQENDREVQTU9E RUANCitDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQA0KK0RFRlMgPSBAREVGU0ANCitERVBESVIgPSBA REVQRElSQA0KK0VDSE9fQyA9IEBFQ0hPX0NADQorRUNIT19OID0gQEVDSE9fTkANCitFQ0hPX1Qg PSBARUNIT19UQA0KK0VMSVhfTEVWRUxfMF9GQUxTRSA9IEBFTElYX0xFVkVMXzBfRkFMU0VADQor RUxJWF9MRVZFTF8wX1RSVUUgPSBARUxJWF9MRVZFTF8wX1RSVUVADQorRUxJWF9MRVZFTF8xX0ZB TFNFID0gQEVMSVhfTEVWRUxfMV9GQUxTRUANCitFTElYX0xFVkVMXzFfVFJVRSA9IEBFTElYX0xF VkVMXzFfVFJVRUANCitFTElYX0xFVkVMXzJfRkFMU0UgPSBARUxJWF9MRVZFTF8yX0ZBTFNFQA0K K0VMSVhfTEVWRUxfMl9UUlVFID0gQEVMSVhfTEVWRUxfMl9UUlVFQA0KK0VMSVhfTEVWRUxfM19G QUxTRSA9IEBFTElYX0xFVkVMXzNfRkFMU0VADQorRUxJWF9MRVZFTF8zX1RSVUUgPSBARUxJWF9M RVZFTF8zX1RSVUVADQorRUxJWF9MRVZFTF80X0ZBTFNFID0gQEVMSVhfTEVWRUxfNF9GQUxTRUAN CitFTElYX0xFVkVMXzRfVFJVRSA9IEBFTElYX0xFVkVMXzRfVFJVRUANCitJTlNUQUxMX0RBVEEg PSBASU5TVEFMTF9EQVRBQA0KK0lOU1RBTExfUFJPR1JBTSA9IEBJTlNUQUxMX1BST0dSQU1ADQor SU5TVEFMTF9TQ1JJUFQgPSBASU5TVEFMTF9TQ1JJUFRADQorSU5TVEFMTF9TVFJJUF9QUk9HUkFN ID0gQElOU1RBTExfU1RSSVBfUFJPR1JBTUANCitMREZMQUdTID0gQExERkxBR1NADQorTElCT0JK UyA9IEBMSUJPQkpTQA0KK0xJQlMgPSBATElCU0ANCitMVExJQk9CSlMgPSBATFRMSUJPQkpTQA0K K01BSU5UID0gQE1BSU5UQA0KK01BSU5UQUlORVJfTU9ERV9GQUxTRSA9IEBNQUlOVEFJTkVSX01P REVfRkFMU0VADQorTUFJTlRBSU5FUl9NT0RFX1RSVUUgPSBATUFJTlRBSU5FUl9NT0RFX1RSVUVA DQorTUFLRUlORk8gPSBATUFLRUlORk9ADQorTUFZX1NVUFBMWV9TWVNDQUxMU19GQUxTRSA9IEBN QVlfU1VQUExZX1NZU0NBTExTX0ZBTFNFQA0KK01BWV9TVVBQTFlfU1lTQ0FMTFNfVFJVRSA9IEBN QVlfU1VQUExZX1NZU0NBTExTX1RSVUVADQorTkVXTElCX0NGTEFHUyA9IEBORVdMSUJfQ0ZMQUdT QA0KK05PX0lOQ0xVREVfTElTVCA9IEBOT19JTkNMVURFX0xJU1RADQorT0JKRVhUID0gQE9CSkVY VEANCitQQUNLQUdFID0gQFBBQ0tBR0VADQorUEFDS0FHRV9CVUdSRVBPUlQgPSBAUEFDS0FHRV9C VUdSRVBPUlRADQorUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUANCitQQUNLQUdFX1NUUklO RyA9IEBQQUNLQUdFX1NUUklOR0ANCitQQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FHRV9UQVJOQU1F QA0KK1BBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQA0KK1BBQ0tBR0VfVkVSU0lPTiA9IEBQQUNL QUdFX1ZFUlNJT05ADQorUEFUSF9TRVBBUkFUT1IgPSBAUEFUSF9TRVBBUkFUT1JADQorUkFOTElC ID0gQFJBTkxJQkANCitSRUFERUxGID0gQFJFQURFTEZADQorU0VUX01BS0UgPSBAU0VUX01BS0VA DQorU0hFTEwgPSBAU0hFTExADQorU1RSSVAgPSBAU1RSSVBADQorVVNFX0xJQlRPT0xfRkFMU0Ug PSBAVVNFX0xJQlRPT0xfRkFMU0VADQorVVNFX0xJQlRPT0xfVFJVRSA9IEBVU0VfTElCVE9PTF9U UlVFQA0KK1ZFUlNJT04gPSBAVkVSU0lPTkANCithZXh0ID0gQGFleHRADQorYW1fX2Zhc3RkZXBD Q19GQUxTRSA9IEBhbV9fZmFzdGRlcENDX0ZBTFNFQA0KK2FtX19mYXN0ZGVwQ0NfVFJVRSA9IEBh bV9fZmFzdGRlcENDX1RSVUVADQorYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVADQorYW1fX2xl YWRpbmdfZG90ID0gQGFtX19sZWFkaW5nX2RvdEANCithbV9fcXVvdGUgPSBAYW1fX3F1b3RlQA0K K2FtX190YXIgPSBAYW1fX3RhckANCithbV9fdW50YXIgPSBAYW1fX3VudGFyQA0KK2JpbmRpciA9 IEBiaW5kaXJADQorYnVpbGQgPSBAYnVpbGRADQorYnVpbGRfYWxpYXMgPSBAYnVpbGRfYWxpYXNA DQorYnVpbGRfY3B1ID0gQGJ1aWxkX2NwdUANCitidWlsZF9vcyA9IEBidWlsZF9vc0ANCitidWls ZF92ZW5kb3IgPSBAYnVpbGRfdmVuZG9yQA0KK2RhdGFkaXIgPSBAZGF0YWRpckANCitkYXRhcm9v dGRpciA9IEBkYXRhcm9vdGRpckANCitkb2NkaXIgPSBAZG9jZGlyQA0KK2R2aWRpciA9IEBkdmlk aXJADQorZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhADQoraG9zdCA9IEBob3N0QA0KK2hvc3Rf YWxpYXMgPSBAaG9zdF9hbGlhc0ANCitob3N0X2NwdSA9IEBob3N0X2NwdUANCitob3N0X29zID0g QGhvc3Rfb3NADQoraG9zdF92ZW5kb3IgPSBAaG9zdF92ZW5kb3JADQoraHRtbGRpciA9IEBodG1s ZGlyQA0KK2luY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckANCitpbmZvZGlyID0gQGluZm9kaXJADQor aW5zdGFsbF9zaCA9IEBpbnN0YWxsX3NoQA0KK2xpYmRpciA9IEBsaWJkaXJADQorbGliZXhlY2Rp ciA9IEBsaWJleGVjZGlyQA0KK2xpYm1fbWFjaGluZV9kaXIgPSBAbGlibV9tYWNoaW5lX2RpckAN Citsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQA0KK2xvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRp ckANCitscGZ4ID0gQGxwZnhADQorbWFjaGluZV9kaXIgPSBAbWFjaGluZV9kaXJADQorbWFuZGly ID0gQG1hbmRpckANCitta2Rpcl9wID0gQG1rZGlyX3BADQorbmV3bGliX2Jhc2VkaXIgPSBAbmV3 bGliX2Jhc2VkaXJADQorb2V4dCA9IEBvZXh0QA0KK29sZGluY2x1ZGVkaXIgPSBAb2xkaW5jbHVk ZWRpckANCitwZGZkaXIgPSBAcGRmZGlyQA0KK3ByZWZpeCA9IEBwcmVmaXhADQorcHJvZ3JhbV90 cmFuc2Zvcm1fbmFtZSA9IEBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQA0KK3BzZGlyID0gQHBzZGly QA0KK3NiaW5kaXIgPSBAc2JpbmRpckANCitzaGFyZWRzdGF0ZWRpciA9IEBzaGFyZWRzdGF0ZWRp ckANCitzeXNfZGlyID0gQHN5c19kaXJADQorc3lzY29uZmRpciA9IEBzeXNjb25mZGlyQA0KK3Rh cmdldF9hbGlhcyA9IEB0YXJnZXRfYWxpYXNADQorQVVUT01BS0VfT1BUSU9OUyA9IGN5Z251cw0K K0lOQ0xVREVTID0gJChORVdMSUJfQ0ZMQUdTKSAkKENST1NTX0NGTEFHUykgJChUQVJHRVRfQ0ZM QUdTKQ0KK25vaW5zdF9MSUJSQVJJRVMgPSBsaWIuYQ0KK2xpYl9hX1NPVVJDRVMgPSBfYXRleGl0 LmMgY3JlYXQuYyBpc2F0dHkuYyBjbGlicmFyeV9pbml0LmMNCitBQ0xPQ0FMX0FNRkxBR1MgPSAt SSAuLi8uLi8uLg0KK0NPTkZJR19TVEFUVVNfREVQRU5ERU5DSUVTID0gJChuZXdsaWJfYmFzZWRp cikvY29uZmlndXJlLmhvc3QNCithbGw6IGFsbC1hbQ0KKw0KKy5TVUZGSVhFUzoNCisuU1VGRklY RVM6IC5jIC5vIC5vYmoNCithbS0tcmVmcmVzaDoNCisJQDoNCiskKHNyY2RpcikvTWFrZWZpbGUu aW46IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChzcmNkaXIpL01ha2VmaWxlLmFtICAkKGFtX19j b25maWd1cmVfZGVwcykNCisJQGZvciBkZXAgaW4gJD87IGRvIFwNCisJICBjYXNlICckKGFtX19j b25maWd1cmVfZGVwcyknIGluIFwNCisJICAgICokJGRlcCopIFwNCisJICAgICAgZWNobyAnIGNk ICQoc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWN5Z251cyAnOyBcDQorCSAgICAgIGNkICQoc3Jj ZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWN5Z251cyAgXA0KKwkJJiYgZXhpdCAwOyBcDQorCSAgICAg IGV4aXQgMTs7IFwNCisJICBlc2FjOyBcDQorCWRvbmU7IFwNCisJZWNobyAnIGNkICQodG9wX3Ny Y2RpcikgJiYgJChBVVRPTUFLRSkgLS1jeWdudXMgIE1ha2VmaWxlJzsgXA0KKwljZCAkKHRvcF9z cmNkaXIpICYmIFwNCisJICAkKEFVVE9NQUtFKSAtLWN5Z251cyAgTWFrZWZpbGUNCisuUFJFQ0lP VVM6IE1ha2VmaWxlDQorTWFrZWZpbGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWls ZGRpcikvY29uZmlnLnN0YXR1cw0KKwlAY2FzZSAnJD8nIGluIFwNCisJICAqY29uZmlnLnN0YXR1 cyopIFwNCisJICAgIGVjaG8gJyAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMnOyBcDQorCSAgICAk KFNIRUxMKSAuL2NvbmZpZy5zdGF0dXM7OyBcDQorCSAgKikgXA0KKwkgICAgZWNobyAnIGNkICQo dG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJEAgJChhbV9fZGVwZmls ZXNfbWF5YmUpJzsgXA0KKwkgICAgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29u ZmlnLnN0YXR1cyAkQCAkKGFtX19kZXBmaWxlc19tYXliZSk7OyBcDQorCWVzYWM7DQorDQorJCh0 b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXM6ICQodG9wX3NyY2RpcikvY29uZmlndXJlICQoQ09O RklHX1NUQVRVU19ERVBFTkRFTkNJRVMpDQorCSQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAtLXJl Y2hlY2sNCisNCiskKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZTogQE1BSU5UQUlORVJfTU9ERV9UUlVF QCAkKGFtX19jb25maWd1cmVfZGVwcykNCisJY2QgJChzcmNkaXIpICYmICQoQVVUT0NPTkYpDQor JChBQ0xPQ0FMX000KTogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKGFtX19hY2xvY2FsX200X2Rl cHMpDQorCWNkICQoc3JjZGlyKSAmJiAkKEFDTE9DQUwpICQoQUNMT0NBTF9BTUZMQUdTKQ0KKw0K K2NsZWFuLW5vaW5zdExJQlJBUklFUzoNCisJLXRlc3QgLXogIiQobm9pbnN0X0xJQlJBUklFUyki IHx8IHJtIC1mICQobm9pbnN0X0xJQlJBUklFUykNCitsaWIuYTogJChsaWJfYV9PQkpFQ1RTKSAk KGxpYl9hX0RFUEVOREVOQ0lFUykgDQorCS1ybSAtZiBsaWIuYQ0KKwkkKGxpYl9hX0FSKSBsaWIu YSAkKGxpYl9hX09CSkVDVFMpICQobGliX2FfTElCQUREKQ0KKwkkKFJBTkxJQikgbGliLmENCisN Cittb3N0bHljbGVhbi1jb21waWxlOg0KKwktcm0gLWYgKi4kKE9CSkVYVCkNCisNCitkaXN0Y2xl YW4tY29tcGlsZToNCisJLXJtIC1mICoudGFiLmMNCisNCisuYy5vOg0KKwkkKENPTVBJTEUpIC1j ICQ8DQorDQorLmMub2JqOg0KKwkkKENPTVBJTEUpIC1jIGAkKENZR1BBVEhfVykgJyQ8J2ANCit1 bmluc3RhbGwtaW5mby1hbToNCisNCitJRDogJChIRUFERVJTKSAkKFNPVVJDRVMpICQoTElTUCkg JChUQUdTX0ZJTEVTKQ0KKwlsaXN0PSckKFNPVVJDRVMpICQoSEVBREVSUykgJChMSVNQKSAkKFRB R1NfRklMRVMpJzsgXA0KKwl1bmlxdWU9YGZvciBpIGluICQkbGlzdDsgZG8gXA0KKwkgICAgaWYg dGVzdCAtZiAiJCRpIjsgdGhlbiBlY2hvICQkaTsgZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7IGZp OyBcDQorCSAgZG9uZSB8IFwNCisJICAkKEFXSykgJyAgICB7IGZpbGVzWyQkMF0gPSAxOyB9IFwN CisJICAgICAgIEVORCB7IGZvciAoaSBpbiBmaWxlcykgcHJpbnQgaTsgfSdgOyBcDQorCW1raWQg LWZJRCAkJHVuaXF1ZQ0KK3RhZ3M6IFRBR1MNCisNCitUQUdTOiAgJChIRUFERVJTKSAkKFNPVVJD RVMpICAkKFRBR1NfREVQRU5ERU5DSUVTKSBcDQorCQkkKFRBR1NfRklMRVMpICQoTElTUCkNCisJ dGFncz07IFwNCisJaGVyZT1gcHdkYDsgXA0KKwlsaXN0PSckKFNPVVJDRVMpICQoSEVBREVSUykg ICQoTElTUCkgJChUQUdTX0ZJTEVTKSc7IFwNCisJdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRv IFwNCisJICAgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNy Y2RpcikvJCRpOyBmaTsgXA0KKwkgIGRvbmUgfCBcDQorCSAgJChBV0spICcgICAgeyBmaWxlc1sk JDBdID0gMTsgfSBcDQorCSAgICAgICBFTkQgeyBmb3IgKGkgaW4gZmlsZXMpIHByaW50IGk7IH0n YDsgXA0KKwlpZiB0ZXN0IC16ICIkKEVUQUdTX0FSR1MpJCR0YWdzJCR1bmlxdWUiOyB0aGVuIDo7 IGVsc2UgXA0KKwkgIHRlc3QgLW4gIiQkdW5pcXVlIiB8fCB1bmlxdWU9JCRlbXB0eV9maXg7IFwN CisJICAkKEVUQUdTKSAkKEVUQUdTRkxBR1MpICQoQU1fRVRBR1NGTEFHUykgJChFVEFHU19BUkdT KSBcDQorCSAgICAkJHRhZ3MgJCR1bmlxdWU7IFwNCisJZmkNCitjdGFnczogQ1RBR1MNCitDVEFH UzogICQoSEVBREVSUykgJChTT1VSQ0VTKSAgJChUQUdTX0RFUEVOREVOQ0lFUykgXA0KKwkJJChU QUdTX0ZJTEVTKSAkKExJU1ApDQorCXRhZ3M9OyBcDQorCWhlcmU9YHB3ZGA7IFwNCisJbGlzdD0n JChTT1VSQ0VTKSAkKEhFQURFUlMpICAkKExJU1ApICQoVEFHU19GSUxFUyknOyBcDQorCXVuaXF1 ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBcDQorCSAgICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIGVj aG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsgZmk7IFwNCisJICBkb25lIHwgXA0KKwkg ICQoQVdLKSAnICAgIHsgZmlsZXNbJCQwXSA9IDE7IH0gXA0KKwkgICAgICAgRU5EIHsgZm9yIChp IGluIGZpbGVzKSBwcmludCBpOyB9J2A7IFwNCisJdGVzdCAteiAiJChDVEFHU19BUkdTKSQkdGFn cyQkdW5pcXVlIiBcDQorCSAgfHwgJChDVEFHUykgJChDVEFHU0ZMQUdTKSAkKEFNX0NUQUdTRkxB R1MpICQoQ1RBR1NfQVJHUykgXA0KKwkgICAgICQkdGFncyAkJHVuaXF1ZQ0KKw0KK0dUQUdTOg0K KwloZXJlPWAkKGFtX19jZCkgJCh0b3BfYnVpbGRkaXIpICYmIHB3ZGAgXA0KKwkgICYmIGNkICQo dG9wX3NyY2RpcikgXA0KKwkgICYmIGd0YWdzIC1pICQoR1RBR1NfQVJHUykgJCRoZXJlDQorDQor ZGlzdGNsZWFuLXRhZ3M6DQorCS1ybSAtZiBUQUdTIElEIEdUQUdTIEdSVEFHUyBHU1lNUyBHUEFU SCB0YWdzDQorY2hlY2stYW06DQorY2hlY2s6IGNoZWNrLWFtDQorYWxsLWFtOiBNYWtlZmlsZSAk KExJQlJBUklFUykNCitpbnN0YWxsZGlyczoNCitpbnN0YWxsOiBpbnN0YWxsLWFtDQoraW5zdGFs bC1leGVjOiBpbnN0YWxsLWV4ZWMtYW0NCitpbnN0YWxsLWRhdGE6IGluc3RhbGwtZGF0YS1hbQ0K K3VuaW5zdGFsbDogdW5pbnN0YWxsLWFtDQorDQoraW5zdGFsbC1hbTogYWxsLWFtDQorCUAkKE1B S0UpICQoQU1fTUFLRUZMQUdTKSBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1kYXRhLWFtDQorDQor aW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stYW0NCitpbnN0YWxsLXN0cmlwOg0KKwkkKE1BS0Up ICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFN KSIgXA0KKwkgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJ TlNUQUxMX1NUUklQX0ZMQUc9LXMgXA0KKwkgIGB0ZXN0IC16ICckKFNUUklQKScgfHwgXA0KKwkg ICAgZWNobyAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyJgIGluc3Rh bGwNCittb3N0bHljbGVhbi1nZW5lcmljOg0KKw0KK2NsZWFuLWdlbmVyaWM6DQorDQorZGlzdGNs ZWFuLWdlbmVyaWM6DQorCS10ZXN0IC16ICIkKENPTkZJR19DTEVBTl9GSUxFUykiIHx8IHJtIC1m ICQoQ09ORklHX0NMRUFOX0ZJTEVTKQ0KKw0KK21haW50YWluZXItY2xlYW4tZ2VuZXJpYzoNCisJ QGVjaG8gIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5lcnMgdG8gdXNlIg0K KwlAZWNobyAiaXQgZGVsZXRlcyBmaWxlcyB0aGF0IG1heSByZXF1aXJlIHNwZWNpYWwgdG9vbHMg dG8gcmVidWlsZC4iDQorY2xlYW46IGNsZWFuLWFtDQorDQorY2xlYW4tYW06IGNsZWFuLWdlbmVy aWMgY2xlYW4tbm9pbnN0TElCUkFSSUVTIG1vc3RseWNsZWFuLWFtDQorDQorZGlzdGNsZWFuOiBk aXN0Y2xlYW4tYW0NCisJLXJtIC1mICQoYW1fX0NPTkZJR19ESVNUQ0xFQU5fRklMRVMpDQorCS1y bSAtZiBNYWtlZmlsZQ0KK2Rpc3RjbGVhbi1hbTogY2xlYW4tYW0gZGlzdGNsZWFuLWNvbXBpbGUg ZGlzdGNsZWFuLWdlbmVyaWMgXA0KKwlkaXN0Y2xlYW4tdGFncw0KKw0KK2R2aTogZHZpLWFtDQor DQorZHZpLWFtOg0KKw0KK2h0bWw6IGh0bWwtYW0NCisNCitpbmZvOiBpbmZvLWFtDQorDQoraW5m by1hbToNCisNCitpbnN0YWxsLWRhdGEtYW06DQorDQoraW5zdGFsbC1leGVjLWFtOg0KKw0KK2lu c3RhbGwtaW5mbzogaW5zdGFsbC1pbmZvLWFtDQorDQoraW5zdGFsbC1tYW46DQorDQoraW5zdGFs bGNoZWNrLWFtOg0KKw0KK21haW50YWluZXItY2xlYW46IG1haW50YWluZXItY2xlYW4tYW0NCisJ LXJtIC1mICQoYW1fX0NPTkZJR19ESVNUQ0xFQU5fRklMRVMpDQorCS1ybSAtcmYgJCh0b3Bfc3Jj ZGlyKS9hdXRvbTR0ZS5jYWNoZQ0KKwktcm0gLWYgTWFrZWZpbGUNCittYWludGFpbmVyLWNsZWFu LWFtOiBkaXN0Y2xlYW4tYW0gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljDQorDQorbW9zdGx5Y2xl YW46IG1vc3RseWNsZWFuLWFtDQorDQorbW9zdGx5Y2xlYW4tYW06IG1vc3RseWNsZWFuLWNvbXBp bGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYw0KKw0KK3BkZjogcGRmLWFtDQorDQorcGRmLWFtOg0KKw0K K3BzOiBwcy1hbQ0KKw0KK3BzLWFtOg0KKw0KK3VuaW5zdGFsbC1hbToNCisNCisuUEhPTlk6IENU QUdTIEdUQUdTIGFsbCBhbGwtYW0gYW0tLXJlZnJlc2ggY2hlY2sgY2hlY2stYW0gY2xlYW4gXA0K KwljbGVhbi1nZW5lcmljIGNsZWFuLW5vaW5zdExJQlJBUklFUyBjdGFncyBkaXN0Y2xlYW4gXA0K KwlkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBkaXN0Y2xlYW4tdGFncyBkdmkg ZHZpLWFtIFwNCisJaHRtbCBodG1sLWFtIGluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0g aW5zdGFsbC1kYXRhIFwNCisJaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZXhlYyBpbnN0YWxsLWV4 ZWMtYW0gaW5zdGFsbC1pbmZvIFwNCisJaW5zdGFsbC1pbmZvLWFtIGluc3RhbGwtbWFuIGluc3Rh bGwtc3RyaXAgaW5zdGFsbGNoZWNrIFwNCisJaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIG1h aW50YWluZXItY2xlYW4gXA0KKwltYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4g bW9zdGx5Y2xlYW4tY29tcGlsZSBcDQorCW1vc3RseWNsZWFuLWdlbmVyaWMgcGRmIHBkZi1hbSBw cyBwcy1hbSB0YWdzIHVuaW5zdGFsbCBcDQorCXVuaW5zdGFsbC1hbSB1bmluc3RhbGwtaW5mby1h bQ0KKw0KKw0KK2FsbDogY3J0MC5vDQorIyBUZWxsIHZlcnNpb25zIFszLjU5LDMuNjMpIG9mIEdO VSBtYWtlIHRvIG5vdCBleHBvcnQgYWxsIHZhcmlhYmxlcy4NCisjIE90aGVyd2lzZSBhIHN5c3Rl bSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4NCisuTk9FWFBPUlQ6 DQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9fYXRleGl0LmMgYi9uZXdsaWIv bGliYy9zeXMveHRlbnNhL19hdGV4aXQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAwMC4uNGRmNmFmN2Q3DQotLS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGliYy9zeXMv eHRlbnNhL19hdGV4aXQuYw0KQEAgLTAsMCArMSw1MyBAQA0KKy8qIENvcHlyaWdodCAoYykgMTk5 OC0yMDA2IFRlbnNpbGljYSBJbmMuICBBTEwgUklHSFRTIFJFU0VSVkVELg0KKw0KKyAgIFJlZGlz dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0 aG91dA0KKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KKw0KKyAgIDEuIFJlZGlzdHJpYnV0aW9ucyBv ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICAgICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy Lg0KKw0KKyAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj ZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KKyAgICAgIGRvY3VtZW50 YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp b24uDQorDQorICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP TERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMNCisgICBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQNCisgICBUTywgVEhF IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEN CisgICBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM TCBURU5TSUxJQ0ENCisgICBJTkNPUlBPUkFURUQgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwNCisgICBFWEVNUExBUlksIE9SIENPTlNFUVVF TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sDQorICAgUFJPQ1VS RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs IE9SDQorICAgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF RCBBTkQgT04gQU5ZIFRIRU9SWSBPRg0KKyAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HDQorICAgTkVHTElHRU5DRSBP UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTDQor ICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE QU1BR0UuICAqLw0KKw0KKy8qIF9hdGV4aXQ6IFRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlcnNpb24g b2YgdGhlIHN0YW5kYXJkIGF0ZXhpdCBmdW5jdGlvbi4NCisgICBJdCBpcyBvbmx5IGludGVuZGVk IHRvIGJlIHVzZWQgYnkgY3J0MCB0byByZWdpc3RlciB0aGUgX2ZpbmkgZnVuY3Rpb24NCisgICBm b3IgY29kZSBpbiB0aGUgRUxGIGZpbmFsaXphdGlvbiBzZWN0aW9uLiAgVXNpbmcgdGhlIHN0YW5k YXJkIHZlcnNpb24NCisgICByZXF1aXJlcyB0aGF0IGFsbCBwcm9ncmFtcyBsaW5rIGluIG1hbGxv YywgbGVhZGluZyB0byBhIHNpZ25pZmljYW50DQorICAgaW5jcmVhc2UgaW4gY29kZSBzaXplIGZv ciBwcm9ncmFtcyB0aGF0IHdvdWxkIG90aGVyd2lzZSBub3QgbmVlZCBtYWxsb2MuICAqLw0KKw0K KyNpbmNsdWRlIDxzdGRkZWYuaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgPHJl ZW50Lmg+DQorDQorLyogUmVnaXN0ZXIgYSBmdW5jdGlvbiB0byBiZSBwZXJmb3JtZWQgYXQgZXhp dC4gICovDQorDQoraW50DQorX2F0ZXhpdCh2b2lkICgqZm4pKHZvaWQpKQ0KK3sNCisgIHJlZ2lz dGVyIHN0cnVjdCBfYXRleGl0ICpwOw0KKw0KKyNpZm5kZWYgX1JFRU5UX1NNQUxMDQorICBpZiAo KHAgPSBfUkVFTlQtPl9hdGV4aXQpID09IE5VTEwpDQorICAgIF9SRUVOVC0+X2F0ZXhpdCA9IHAg PSAmX1JFRU5ULT5fYXRleGl0MDsNCisjZWxzZQ0KKyAgcCA9ICZfUkVFTlQtPl9hdGV4aXQ7DQor I2VuZGlmDQorICBpZiAocC0+X2luZCA+PSBfQVRFWElUX1NJWkUpDQorICAgIHJldHVybiAtMTsN CisgIHAtPl9mbnNbcC0+X2luZCsrXSA9IGZuOw0KKyAgcmV0dXJuIDA7DQorfQ0KKw0KZGlmZiAt LWdpdCBhL25ld2xpYi9saWJjL3N5cy94dGVuc2EvYWNsb2NhbC5tNCBiL25ld2xpYi9saWJjL3N5 cy94dGVuc2EvYWNsb2NhbC5tNA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MC4uODdjMGU3OGJjDQotLS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGliYy9zeXMveHRlbnNh L2FjbG9jYWwubTQNCkBAIC0wLDAgKzEsODgwIEBADQorIyBnZW5lcmF0ZWQgYXV0b21hdGljYWxs eSBieSBhY2xvY2FsIDEuOS41IC0qLSBBdXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykg MTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwNCisj IDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMgVGhpcyBmaWxlIGlzIGZy ZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGlt aXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9y IHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2 ZWQuDQorDQorIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwNCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWSwgdG8gdGhlIGV4 dGVudCBwZXJtaXR0ZWQgYnkgbGF3OyB3aXRob3V0DQorIyBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQorIyBQQVJUSUNVTEFSIFBV UlBPU0UuDQorDQorIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lv biB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlm aWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgQU1f QVVUT01BS0VfVkVSU0lPTihWRVJTSU9OKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KKyMgQXV0b21ha2UgWC5ZIHRyYWNlcyB0aGlzIG1hY3JvIHRvIGVuc3VyZSBhY2xvY2FsLm00 IGhhcyBiZWVuDQorIyBnZW5lcmF0ZWQgZnJvbSB0aGUgbTQgZmlsZXMgYWNjb21wYW55aW5nIEF1 dG9tYWtlIFguWS4NCitBQ19ERUZVTihbQU1fQVVUT01BS0VfVkVSU0lPTl0sIFthbV9fYXBpX3Zl cnNpb249IjEuOSJdKQ0KKw0KKyMgQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTg0KKyMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQ2FsbCBBTV9BVVRPTUFLRV9WRVJT SU9OIHNvIGl0IGNhbiBiZSB0cmFjZWQuDQorIyBUaGlzIGZ1bmN0aW9uIGlzIEFDX1JFUVVJUkVk IGJ5IEFDX0lOSVRfQVVUT01BS0UuDQorQUNfREVGVU4oW0FNX1NFVF9DVVJSRU5UX0FVVE9NQUtF X1ZFUlNJT05dLA0KKwkgW0FNX0FVVE9NQUtFX1ZFUlNJT04oWzEuOS41XSldKQ0KKw0KKyMgQU1f QVVYX0RJUl9FWFBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0q LSBBdXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29m dHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBw ZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhv dXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQor DQorIyBGb3IgcHJvamVjdHMgdXNpbmcgQUNfQ09ORklHX0FVWF9ESVIoW2Zvb10pLCBBdXRvY29u ZiBzZXRzDQorIyAkYWNfYXV4X2RpciB0byBgJHNyY2Rpci9mb28nLiAgSW4gb3RoZXIgcHJvamVj dHMsIGl0IGlzIHNldCB0bw0KKyMgYCRzcmNkaXInLCBgJHNyY2Rpci8uLicsIG9yIGAkc3JjZGly Ly4uLy4uJy4NCisjDQorIyBPZiBjb3Vyc2UsIEF1dG9tYWtlIG11c3QgaG9ub3IgdGhpcyB2YXJp YWJsZSB3aGVuZXZlciBpdCBjYWxscyBhDQorIyB0b29sIGZyb20gdGhlIGF1eGlsaWFyeSBkaXJl Y3RvcnkuICBUaGUgcHJvYmxlbSBpcyB0aGF0ICRzcmNkaXIgKGFuZA0KKyMgdGhlcmVmb3JlICRh Y19hdXhfZGlyIGFzIHdlbGwpIGNhbiBiZSBlaXRoZXIgYWJzb2x1dGUgb3IgcmVsYXRpdmUsDQor IyBkZXBlbmRpbmcgb24gaG93IGNvbmZpZ3VyZSBpcyBydW4uICBUaGlzIGlzIHByZXR0eSBhbm5v eWluZywgc2luY2UNCisjIGl0IG1ha2VzICRhY19hdXhfZGlyIHF1aXRlIHVudXNhYmxlIGluIHN1 YmRpcmVjdG9yaWVzOiBpbiB0aGUgdG9wDQorIyBzb3VyY2UgZGlyZWN0b3J5LCBhbnkgZm9ybSB3 aWxsIHdvcmsgZmluZSwgYnV0IGluIHN1YmRpcmVjdG9yaWVzIGENCisjIHJlbGF0aXZlIHBhdGgg bmVlZHMgdG8gYmUgYWRqdXN0ZWQgZmlyc3QuDQorIw0KKyMgJGFjX2F1eF9kaXIvbWlzc2luZw0K KyMgICAgZmFpbHMgd2hlbiBjYWxsZWQgZnJvbSBhIHN1YmRpcmVjdG9yeSBpZiAkYWNfYXV4X2Rp ciBpcyByZWxhdGl2ZQ0KKyMgJHRvcF9zcmNkaXIvJGFjX2F1eF9kaXIvbWlzc2luZw0KKyMgICAg ZmFpbHMgaWYgJGFjX2F1eF9kaXIgaXMgYWJzb2x1dGUsDQorIyAgICBmYWlscyB3aGVuIGNhbGxl ZCBmcm9tIGEgc3ViZGlyZWN0b3J5IGluIGEgVlBBVEggYnVpbGQgd2l0aA0KKyMgICAgICAgICAg YSByZWxhdGl2ZSAkYWNfYXV4X2Rpcg0KKyMNCisjIFRoZSByZWFzb24gb2YgdGhlIGxhdHRlciBm YWlsdXJlIGlzIHRoYXQgJHRvcF9zcmNkaXIgYW5kICRhY19hdXhfZGlyDQorIyBhcmUgYm90aCBw cmVmaXhlZCBieSAkc3JjZGlyLiAgSW4gYW4gaW4tc291cmNlIGJ1aWxkIHRoaXMgaXMgdXN1YWxs eQ0KKyMgaGFybWxlc3MgYmVjYXVzZSAkc3JjZGlyIGlzIGAuJywgYnV0IHRoaW5ncyB3aWxsIGJy b2tlIHdoZW4geW91DQorIyBzdGFydCBhIFZQQVRIIGJ1aWxkIG9yIHVzZSBhbiBhYnNvbHV0ZSAk c3JjZGlyLg0KKyMNCisjIFNvIHdlIGNvdWxkIHVzZSBzb21ldGhpbmcgc2ltaWxhciB0byAkdG9w X3NyY2Rpci8kYWNfYXV4X2Rpci9taXNzaW5nLA0KKyMgaWZmIHdlIHN0cmlwIHRoZSBsZWFkaW5n ICRzcmNkaXIgZnJvbSAkYWNfYXV4X2Rpci4gIFRoYXQgd291bGQgYmU6DQorIyAgIGFtX2F1eF9k aXI9J1wkKHRvcF9zcmNkaXIpLydgZXhwciAiJGFjX2F1eF9kaXIiIDogIiRzcmNkaXIvLypcKC4q XCkiYA0KKyMgYW5kIHRoZW4gd2Ugd291bGQgZGVmaW5lICRNSVNTSU5HIGFzDQorIyAgIE1JU1NJ Tkc9Ilwke1NIRUxMfSAkYW1fYXV4X2Rpci9taXNzaW5nIg0KKyMgVGhpcyB3aWxsIHdvcmsgYXMg bG9uZyBhcyBNSVNTSU5HIGlzIG5vdCBjYWxsZWQgZnJvbSBjb25maWd1cmUsIGJlY2F1c2UNCisj IHVuZm9ydHVuYXRlbHkgJCh0b3Bfc3JjZGlyKSBoYXMgbm8gbWVhbmluZyBpbiBjb25maWd1cmUu DQorIyBIb3dldmVyIHRoZXJlIGFyZSBvdGhlciB2YXJpYWJsZXMsIGxpa2UgQ0MsIHdoaWNoIGFy ZSBvZnRlbiB1c2VkIGluDQorIyBjb25maWd1cmUsIGFuZCBjb3VsZCB0aGVyZWZvcmUgbm90IHVz ZSB0aGlzICJmaXhlZCIgJGFjX2F1eF9kaXIuDQorIw0KKyMgQW5vdGhlciBzb2x1dGlvbiwgdXNl ZCBoZXJlLCBpcyB0byBhbHdheXMgZXhwYW5kICRhY19hdXhfZGlyIHRvIGFuDQorIyBhYnNvbHV0 ZSBQQVRILiAgVGhlIGRyYXdiYWNrIGlzIHRoYXQgdXNpbmcgYWJzb2x1dGUgcGF0aHMgcHJldmVu dCBhDQorIyBjb25maWd1cmVkIHRyZWUgdG8gYmUgbW92ZWQgd2l0aG91dCByZWNvbmZpZ3VyYXRp b24uDQorDQorQUNfREVGVU4oW0FNX0FVWF9ESVJfRVhQQU5EXSwNCitbZG5sIFJlbHkgb24gYXV0 b2NvbmYgdG8gc2V0IHVwIENEUEFUSCBwcm9wZXJseS4NCitBQ19QUkVSRVEoWzIuNTBdKWRubA0K KyMgZXhwYW5kICRhY19hdXhfZGlyIHRvIGFuIGFic29sdXRlIHBhdGgNCithbV9hdXhfZGlyPWBj ZCAkYWNfYXV4X2RpciAmJiBwd2RgDQorXSkNCisNCisjIEFNX0NPTkRJVElPTkFMICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotDQorDQor IyBDb3B5cmlnaHQgKEMpIDE5OTcsIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUNCisjIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNv ZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQg cGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRo b3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0K Kw0KKyMgc2VyaWFsIDcNCisNCisjIEFNX0NPTkRJVElPTkFMKE5BTUUsIFNIRUxMLUNPTkRJVElP TikNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIERlZmluZSBh IGNvbmRpdGlvbmFsLg0KK0FDX0RFRlVOKFtBTV9DT05ESVRJT05BTF0sDQorW0FDX1BSRVJFUSgy LjUyKWRubA0KKyBpZmVsc2UoWyQxXSwgW1RSVUVdLCAgW0FDX0ZBVEFMKFskMDogaW52YWxpZCBj b25kaXRpb246ICQxXSldLA0KKwlbJDFdLCBbRkFMU0VdLCBbQUNfRkFUQUwoWyQwOiBpbnZhbGlk IGNvbmRpdGlvbjogJDFdKV0pZG5sDQorQUNfU1VCU1QoWyQxX1RSVUVdKQ0KK0FDX1NVQlNUKFsk MV9GQUxTRV0pDQoraWYgJDI7IHRoZW4NCisgICQxX1RSVUU9DQorICAkMV9GQUxTRT0nIycNCitl bHNlDQorICAkMV9UUlVFPScjJw0KKyAgJDFfRkFMU0U9DQorZmkNCitBQ19DT05GSUdfQ09NTUFO RFNfUFJFKA0KK1tpZiB0ZXN0IC16ICIkeyQxX1RSVUV9IiAmJiB0ZXN0IC16ICIkeyQxX0ZBTFNF fSI7IHRoZW4NCisgIEFDX01TR19FUlJPUihbW2NvbmRpdGlvbmFsICIkMSIgd2FzIG5ldmVyIGRl ZmluZWQuDQorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNv bmRpdGlvbmFsbHkuXV0pDQorZmldKV0pDQorDQorDQorIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIw MDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUNCisjIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5 IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMs IGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgc2VyaWFsIDgNCisN CisjIFRoZXJlIGFyZSBhIGZldyBkaXJ0eSBoYWNrcyBiZWxvdyB0byBhdm9pZCBsZXR0aW5nIGBB Q19QUk9HX0NDJyBiZQ0KKyMgd3JpdHRlbiBpbiBjbGVhciwgaW4gd2hpY2ggY2FzZSBhdXRvbWFr ZSwgd2hlbiByZWFkaW5nIGFjbG9jYWwubTQsDQorIyB3aWxsIHRoaW5rIGl0IHNlZXMgYSAqdXNl KiwgYW5kIHRoZXJlZm9yZSB3aWxsIHRyaWdnZXIgYWxsIGl0J3MNCisjIEMgc3VwcG9ydCBtYWNo aW5lcnkuICBBbHNvIG5vdGUgdGhhdCBpdCBtZWFucyB0aGF0IGF1dG9zY2FuLCBzZWVpbmcNCisj IENDIGV0Yy4gaW4gdGhlIE1ha2VmaWxlLCB3aWxsIGFzayBmb3IgYW4gQUNfUFJPR19DQyB1c2Uu Li4NCisNCisNCisjIF9BTV9ERVBFTkRFTkNJRVMoTkFNRSkNCisjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCisjIFNlZSBob3cgdGhlIGNvbXBpbGVyIGltcGxlbWVudHMgZGVwZW5kZW5jeSBjaGVj a2luZy4NCisjIE5BTUUgaXMgIkNDIiwgIkNYWCIsICJHQ0oiLCBvciAiT0JKQyIuDQorIyBXZSB0 cnkgYSBmZXcgdGVjaG5pcXVlcyBhbmQgdXNlIHRoYXQgdG8gc2V0IGEgc2luZ2xlIGNhY2hlIHZh cmlhYmxlLg0KKyMNCisjIFdlIGRvbid0IEFDX1JFUVVJUkUgdGhlIGNvcnJlc3BvbmRpbmcgQUNf UFJPR19DQyBzaW5jZSB0aGUgbGF0dGVyIHdhcw0KKyMgbW9kaWZpZWQgdG8gaW52b2tlIF9BTV9E RVBFTkRFTkNJRVMoQ0MpOyB3ZSB3b3VsZCBoYXZlIGEgY2lyY3VsYXINCisjIGRlcGVuZGVuY3ks IGFuZCBnaXZlbiB0aGF0IHRoZSB1c2VyIGlzIG5vdCBleHBlY3RlZCB0byBydW4gdGhpcyBtYWNy bywNCisjIGp1c3QgcmVseSBvbiBBQ19QUk9HX0NDLg0KK0FDX0RFRlVOKFtfQU1fREVQRU5ERU5D SUVTXSwNCitbQUNfUkVRVUlSRShbQU1fU0VUX0RFUERJUl0pZG5sDQorQUNfUkVRVUlSRShbQU1f T1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFORFNdKWRubA0KK0FDX1JFUVVJUkUoW0FNX01BS0VfSU5D TFVERV0pZG5sDQorQUNfUkVRVUlSRShbQU1fREVQX1RSQUNLXSlkbmwNCisNCitpZmVsc2UoWyQx XSwgQ0MsICAgW2RlcGNjPSIkQ0MiICAgYW1fY29tcGlsZXJfbGlzdD1dLA0KKyAgICAgICBbJDFd LCBDWFgsICBbZGVwY2M9IiRDWFgiICBhbV9jb21waWxlcl9saXN0PV0sDQorICAgICAgIFskMV0s IE9CSkMsIFtkZXBjYz0iJE9CSkMiIGFtX2NvbXBpbGVyX2xpc3Q9J2djYzMgZ2NjJ10sDQorICAg ICAgIFskMV0sIEdDSiwgIFtkZXBjYz0iJEdDSiIgIGFtX2NvbXBpbGVyX2xpc3Q9J2djYzMgZ2Nj J10sDQorICAgICAgICAgICAgICAgICAgIFtkZXBjYz0iJCQxIiAgIGFtX2NvbXBpbGVyX2xpc3Q9 XSkNCisNCitBQ19DQUNIRV9DSEVDSyhbZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2NdLA0KKyAg ICAgICAgICAgICAgIFthbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZV0sDQorW2lm IHRlc3QgLXogIiRBTURFUF9UUlVFIiAmJiB0ZXN0IC1mICIkYW1fZGVwY29tcCI7IHRoZW4NCisg ICMgV2UgbWFrZSBhIHN1YmRpciBhbmQgZG8gdGhlIHRlc3RzIHRoZXJlLiAgT3RoZXJ3aXNlIHdl IGNhbiBlbmQgdXANCisgICMgbWFraW5nIGJvZ3VzIGZpbGVzIHRoYXQgd2UgZG9uJ3Qga25vdyBh Ym91dCBhbmQgbmV2ZXIgcmVtb3ZlLiAgRm9yDQorICAjIGluc3RhbmNlIGl0IHdhcyByZXBvcnRl ZCB0aGF0IG9uIEhQLVVYIHRoZSBnY2MgdGVzdCB3aWxsIGVuZCB1cA0KKyAgIyBtYWtpbmcgYSBk dW1teSBmaWxlIG5hbWVkIGBEJyAtLSBiZWNhdXNlIGAtTUQnIG1lYW5zIGBwdXQgdGhlIG91dHB1 dA0KKyAgIyBpbiBEJy4NCisgIG1rZGlyIGNvbmZ0ZXN0LmRpcg0KKyAgIyBDb3B5IGRlcGNvbXAg dG8gc3ViZGlyIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdvbid0IGZpbmQgaXQgaWYgd2UncmUNCisg ICMgdXNpbmcgYSByZWxhdGl2ZSBkaXJlY3RvcnkuDQorICBjcCAiJGFtX2RlcGNvbXAiIGNvbmZ0 ZXN0LmRpcg0KKyAgY2QgY29uZnRlc3QuZGlyDQorICAjIFdlIHdpbGwgYnVpbGQgb2JqZWN0cyBh bmQgZGVwZW5kZW5jaWVzIGluIGEgc3ViZGlyZWN0b3J5IGJlY2F1c2UNCisgICMgaXQgaGVscHMg dG8gZGV0ZWN0IGluYXBwbGljYWJsZSBkZXBlbmRlbmN5IG1vZGVzLiAgRm9yIGluc3RhbmNlDQor ICAjIGJvdGggVHJ1NjQncyBjYyBhbmQgSUNDIHN1cHBvcnQgLU1EIHRvIG91dHB1dCBkZXBlbmRl bmNpZXMgYXMgYQ0KKyAgIyBzaWRlIGVmZmVjdCBvZiBjb21waWxhdGlvbiwgYnV0IElDQyB3aWxs IHB1dCB0aGUgZGVwZW5kZW5jaWVzIGluDQorICAjIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aGls ZSBUcnU2NCB3aWxsIHB1dCB0aGVtIGluIHRoZSBvYmplY3QNCisgICMgZGlyZWN0b3J5Lg0KKyAg bWtkaXIgc3ViDQorDQorICBhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT1ub25l DQorICBpZiB0ZXN0ICIkYW1fY29tcGlsZXJfbGlzdCIgPSAiIjsgdGhlbg0KKyAgICAgYW1fY29t cGlsZXJfbGlzdD1gc2VkIC1uIFsncy9eIypcKFthLXpBLVowLTldKlwpKSQvXDEvcCddIDwgLi9k ZXBjb21wYA0KKyAgZmkNCisgIGZvciBkZXBtb2RlIGluICRhbV9jb21waWxlcl9saXN0OyBkbw0K KyAgICAjIFNldHVwIGEgc291cmNlIHdpdGggbWFueSBkZXBlbmRlbmNpZXMsIGJlY2F1c2Ugc29t ZSBjb21waWxlcnMNCisgICAgIyBsaWtlIHRvIHdyYXAgbGFyZ2UgZGVwZW5kZW5jeSBsaXN0cyBv biBjb2x1bW4gODAgKHdpdGggXCksIGFuZA0KKyAgICAjIHdlIHNob3VsZCBub3QgY2hvb3NlIGEg ZGVwY29tcCBtb2RlIHdoaWNoIGlzIGNvbmZ1c2VkIGJ5IHRoaXMuDQorICAgICMNCisgICAgIyBX ZSBuZWVkIHRvIHJlY3JlYXRlIHRoZXNlIGZpbGVzIGZvciBlYWNoIHRlc3QsIGFzIHRoZSBjb21w aWxlciBtYXkNCisgICAgIyBvdmVyd3JpdGUgc29tZSBvZiB0aGVtIHdoZW4gdGVzdGluZyB3aXRo IG9ic2N1cmUgY29tbWFuZCBsaW5lcy4NCisgICAgIyBUaGlzIGhhcHBlbnMgYXQgbGVhc3Qgd2l0 aCB0aGUgQUlYIEMgY29tcGlsZXIuDQorICAgIDogPiBzdWIvY29uZnRlc3QuYw0KKyAgICBmb3Ig aSBpbiAxIDIgMyA0IDUgNjsgZG8NCisgICAgICBlY2hvICcjaW5jbHVkZSAiY29uZnRzdCckaScu aCInID4+IHN1Yi9jb25mdGVzdC5jDQorICAgICAgIyBVc2luZyBgOiA+IHN1Yi9jb25mdHN0JGku aCcgY3JlYXRlcyBvbmx5IHN1Yi9jb25mdHN0MS5oIHdpdGgNCisgICAgICAjIFNvbGFyaXMgOCdz IHsvdXNyLH0vYmluL3NoLg0KKyAgICAgIHRvdWNoIHN1Yi9jb25mdHN0JGkuaA0KKyAgICBkb25l DQorICAgIGVjaG8gIiR7YW1fX2luY2x1ZGV9ICR7YW1fX3F1b3RlfXN1Yi9jb25mdGVzdC5QbyR7 YW1fX3F1b3RlfSIgPiBjb25mbWYNCisNCisgICAgY2FzZSAkZGVwbW9kZSBpbg0KKyAgICBub3Np ZGVlZmZlY3QpDQorICAgICAgIyBhZnRlciB0aGlzIHRhZywgbWVjaGFuaXNtcyBhcmUgbm90IGJ5 IHNpZGUtZWZmZWN0LCBzbyB0aGV5J2xsDQorICAgICAgIyBvbmx5IGJlIHVzZWQgd2hlbiBleHBs aWNpdGx5IHJlcXVlc3RlZA0KKyAgICAgIGlmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJh Y2tpbmciID0geHllczsgdGhlbg0KKwljb250aW51ZQ0KKyAgICAgIGVsc2UNCisJYnJlYWsNCisg ICAgICBmaQ0KKyAgICAgIDs7DQorICAgIG5vbmUpIGJyZWFrIDs7DQorICAgIGVzYWMNCisgICAg IyBXZSBjaGVjayB3aXRoIGAtYycgYW5kIGAtbycgZm9yIHRoZSBzYWtlIG9mIHRoZSAiZGFzaG1z dGRvdXQiDQorICAgICMgbW9kZS4gIEl0IHR1cm5zIG91dCB0aGF0IHRoZSBTdW5Qcm8gQysrIGNv bXBpbGVyIGRvZXMgbm90IHByb3Blcmx5DQorICAgICMgaGFuZGxlIGAtTSAtbycsIGFuZCB3ZSBu ZWVkIHRvIGRldGVjdCB0aGlzLg0KKyAgICBpZiBkZXBtb2RlPSRkZXBtb2RlIFwNCisgICAgICAg c291cmNlPXN1Yi9jb25mdGVzdC5jIG9iamVjdD1zdWIvY29uZnRlc3QuJHtPQkpFWFQtb30gXA0K KyAgICAgICBkZXBmaWxlPXN1Yi9jb25mdGVzdC5QbyB0bXBkZXBmaWxlPXN1Yi9jb25mdGVzdC5U UG8gXA0KKyAgICAgICAkU0hFTEwgLi9kZXBjb21wICRkZXBjYyAtYyAtbyBzdWIvY29uZnRlc3Qu JHtPQkpFWFQtb30gc3ViL2NvbmZ0ZXN0LmMgXA0KKyAgICAgICAgID4vZGV2L251bGwgMj5jb25m dGVzdC5lcnIgJiYNCisgICAgICAgZ3JlcCBzdWIvY29uZnRzdDYuaCBzdWIvY29uZnRlc3QuUG8g PiAvZGV2L251bGwgMj4mMSAmJg0KKyAgICAgICBncmVwIHN1Yi9jb25mdGVzdC4ke09CSkVYVC1v fSBzdWIvY29uZnRlc3QuUG8gPiAvZGV2L251bGwgMj4mMSAmJg0KKyAgICAgICAke01BS0UtbWFr ZX0gLXMgLWYgY29uZm1mID4gL2Rldi9udWxsIDI+JjE7IHRoZW4NCisgICAgICAjIGljYyBkb2Vz bid0IGNob2tlIG9uIHVua25vd24gb3B0aW9ucywgaXQgd2lsbCBqdXN0IGlzc3VlIHdhcm5pbmdz DQorICAgICAgIyBvciByZW1hcmtzIChldmVuIHdpdGggLVdlcnJvcikuICBTbyB3ZSBncmVwIHN0 ZGVyciBmb3IgYW55IG1lc3NhZ2UNCisgICAgICAjIHRoYXQgc2F5cyBhbiBvcHRpb24gd2FzIGln bm9yZWQgb3Igbm90IHN1cHBvcnRlZC4NCisgICAgICAjIFdoZW4gZ2l2ZW4gLU1QLCBpY2MgNy4w IGFuZCA3LjEgY29tcGxhaW4gdGh1c2x5Og0KKyAgICAgICMgICBpY2M6IENvbW1hbmQgbGluZSB3 YXJuaW5nOiBpZ25vcmluZyBvcHRpb24gJy1NJzsgbm8gYXJndW1lbnQgcmVxdWlyZWQNCisgICAg ICAjIFRoZSBkaWFnbm9zaXMgY2hhbmdlZCBpbiBpY2MgOC4wOg0KKyAgICAgICMgICBpY2M6IENv bW1hbmQgbGluZSByZW1hcms6IG9wdGlvbiAnLU1QJyBub3Qgc3VwcG9ydGVkDQorICAgICAgaWYg KGdyZXAgJ2lnbm9yaW5nIG9wdGlvbicgY29uZnRlc3QuZXJyIHx8DQorICAgICAgICAgIGdyZXAg J25vdCBzdXBwb3J0ZWQnIGNvbmZ0ZXN0LmVycikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDo7IGVs c2UNCisgICAgICAgIGFtX2N2XyQxX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlPSRkZXBtb2Rl DQorICAgICAgICBicmVhaw0KKyAgICAgIGZpDQorICAgIGZpDQorICBkb25lDQorDQorICBjZCAu Lg0KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcg0KK2Vsc2UNCisgIGFtX2N2XyQxX2RlcGVuZGVuY2ll c19jb21waWxlcl90eXBlPW5vbmUNCitmaQ0KK10pDQorQUNfU1VCU1QoWyQxREVQTU9ERV0sIFtk ZXBtb2RlPSRhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZV0pDQorQU1fQ09ORElU SU9OQUwoW2FtX19mYXN0ZGVwJDFdLCBbDQorICB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3Ry YWNraW5nIiAhPSB4bm8gXA0KKyAgJiYgdGVzdCAiJGFtX2N2XyQxX2RlcGVuZGVuY2llc19jb21w aWxlcl90eXBlIiA9IGdjYzNdKQ0KK10pDQorDQorDQorIyBBTV9TRVRfREVQRElSDQorIyAtLS0t LS0tLS0tLS0tDQorIyBDaG9vc2UgYSBkaXJlY3RvcnkgbmFtZSBmb3IgZGVwZW5kZW5jeSBmaWxl cy4NCisjIFRoaXMgbWFjcm8gaXMgQUNfUkVRVUlSRWQgaW4gX0FNX0RFUEVOREVOQ0lFUw0KK0FD X0RFRlVOKFtBTV9TRVRfREVQRElSXSwNCitbQUNfUkVRVUlSRShbQU1fU0VUX0xFQURJTkdfRE9U XSlkbmwNCitBQ19TVUJTVChbREVQRElSXSwgWyIke2FtX19sZWFkaW5nX2RvdH1kZXBzIl0pZG5s DQorXSkNCisNCisNCisjIEFNX0RFUF9UUkFDSw0KKyMgLS0tLS0tLS0tLS0tDQorQUNfREVGVU4o W0FNX0RFUF9UUkFDS10sDQorW0FDX0FSR19FTkFCTEUoZGVwZW5kZW5jeS10cmFja2luZywNCitb ICAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyAgc3BlZWRzIHVwIG9uZS10aW1lIGJ1aWxk DQorICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICAgZG8gbm90IHJlamVjdCBzbG93IGRl cGVuZGVuY3kgZXh0cmFjdG9yc10pDQoraWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFj a2luZyIgIT0geG5vOyB0aGVuDQorICBhbV9kZXBjb21wPSIkYWNfYXV4X2Rpci9kZXBjb21wIg0K KyAgQU1ERVBCQUNLU0xBU0g9J1wnDQorZmkNCitBTV9DT05ESVRJT05BTChbQU1ERVBdLCBbdGVz dCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vXSkNCitBQ19TVUJTVChbQU1E RVBCQUNLU0xBU0hdKQ0KK10pDQorDQorIyBHZW5lcmF0ZSBjb2RlIHRvIHNldCB1cCBkZXBlbmRl bmN5IHRyYWNraW5nLiAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQ0KKw0KKyMgQ29weXJp Z2h0IChDKSAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1DQorIyBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0 d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBl cm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91 dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisN Cisjc2VyaWFsIDMNCisNCisjIF9BTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EUw0KKyMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQUNfREVGVU4oW19BTV9PVVRQVVRfREVQRU5E RU5DWV9DT01NQU5EU10sDQorW2ZvciBtZiBpbiAkQ09ORklHX0ZJTEVTOyBkbw0KKyAgIyBTdHJp cCBNRiBzbyB3ZSBlbmQgdXAgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZmlsZS4NCisgIG1mPWBlY2hv ICIkbWYiIHwgc2VkIC1lICdzLzouKiQvLydgDQorICAjIENoZWNrIHdoZXRoZXIgdGhpcyBpcyBh biBBdXRvbWFrZSBnZW5lcmF0ZWQgTWFrZWZpbGUgb3Igbm90Lg0KKyAgIyBXZSB1c2VkIHRvIG1h dGNoIG9ubHkgdGhlIGZpbGVzIG5hbWVkIGBNYWtlZmlsZS5pbicsIGJ1dA0KKyAgIyBzb21lIHBl b3BsZSByZW5hbWUgdGhlbTsgc28gaW5zdGVhZCB3ZSBsb29rIGF0IHRoZSBmaWxlIGNvbnRlbnQu DQorICAjIEdyZXAnaW5nIHRoZSBmaXJzdCBsaW5lIGlzIG5vdCBlbm91Z2g6IHNvbWUgcGVvcGxl IHBvc3QtcHJvY2Vzcw0KKyAgIyBlYWNoIE1ha2VmaWxlLmluIGFuZCBhZGQgYSBuZXcgbGluZSBv biB0b3Agb2YgZWFjaCBmaWxlIHRvIHNheSBzby4NCisgICMgU28gbGV0J3MgZ3JlcCB3aG9sZSBm aWxlLg0KKyAgaWYgZ3JlcCAnXiMuKmdlbmVyYXRlZCBieSBhdXRvbWFrZScgJG1mID4gL2Rldi9u dWxsIDI+JjE7IHRoZW4NCisgICAgZGlycGFydD1gQVNfRElSTkFNRSgiJG1mIilgDQorICBlbHNl DQorICAgIGNvbnRpbnVlDQorICBmaQ0KKyAgIyBFeHRyYWN0IHRoZSBkZWZpbml0aW9uIG9mIERF UERJUiwgYW1fX2luY2x1ZGUsIGFuZCBhbV9fcXVvdGUNCisgICMgZnJvbSB0aGUgTWFrZWZpbGUg d2l0aG91dCBydW5uaW5nIGBtYWtlJy4NCisgIERFUERJUj1gc2VkIC1uICdzL15ERVBESVIgPSAv L3AnIDwgIiRtZiJgDQorICB0ZXN0IC16ICIkREVQRElSIiAmJiBjb250aW51ZQ0KKyAgYW1fX2lu Y2x1ZGU9YHNlZCAtbiAncy9eYW1fX2luY2x1ZGUgPSAvL3AnIDwgIiRtZiJgDQorICB0ZXN0IC16 ICJhbV9faW5jbHVkZSIgJiYgY29udGludWUNCisgIGFtX19xdW90ZT1gc2VkIC1uICdzL15hbV9f cXVvdGUgPSAvL3AnIDwgIiRtZiJgDQorICAjIFdoZW4gdXNpbmcgYW5zaTJrbnIsIFUgbWF5IGJl IGVtcHR5IG9yIGFuIHVuZGVyc2NvcmU7IGV4cGFuZCBpdA0KKyAgVT1gc2VkIC1uICdzL15VID0g Ly9wJyA8ICIkbWYiYA0KKyAgIyBGaW5kIGFsbCBkZXBlbmRlbmN5IG91dHB1dCBmaWxlcywgdGhl eSBhcmUgaW5jbHVkZWQgZmlsZXMgd2l0aA0KKyAgIyAkKERFUERJUikgaW4gdGhlaXIgbmFtZXMu ICBXZSBpbnZva2Ugc2VkIHR3aWNlIGJlY2F1c2UgaXQgaXMgdGhlDQorICAjIHNpbXBsZXN0IGFw cHJvYWNoIHRvIGNoYW5naW5nICQoREVQRElSKSB0byBpdHMgYWN0dWFsIHZhbHVlIGluIHRoZQ0K KyAgIyBleHBhbnNpb24uDQorICBmb3IgZmlsZSBpbiBgc2VkIC1uICINCisgICAgcy9eJGFtX19p bmNsdWRlICRhbV9fcXVvdGVcKC4qKERFUERJUikuKlwpJGFtX19xdW90ZSInJC9cMS9wJyA8IiRt ZiIgfCBcDQorICAgICAgIHNlZCAtZSAncy9cJChERVBESVIpLyciJERFUERJUiInL2cnIC1lICdz L1wkVS8nIiRVIicvZydgOyBkbw0KKyAgICAjIE1ha2Ugc3VyZSB0aGUgZGlyZWN0b3J5IGV4aXN0 cy4NCisgICAgdGVzdCAtZiAiJGRpcnBhcnQvJGZpbGUiICYmIGNvbnRpbnVlDQorICAgIGZkaXI9 YEFTX0RJUk5BTUUoWyIkZmlsZSJdKWANCisgICAgQVNfTUtESVJfUChbJGRpcnBhcnQvJGZkaXJd KQ0KKyAgICAjIGVjaG8gImNyZWF0aW5nICRkaXJwYXJ0LyRmaWxlIg0KKyAgICBlY2hvICcjIGR1 bW15JyA+ICIkZGlycGFydC8kZmlsZSINCisgIGRvbmUNCitkb25lDQorXSkjIF9BTV9PVVRQVVRf REVQRU5ERU5DWV9DT01NQU5EUw0KKw0KKw0KKyMgQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFO RFMNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBUaGlzIG1hY3JvIHNob3Vs ZCBvbmx5IGJlIGludm9rZWQgb25jZSAtLSB1c2UgdmlhIEFDX1JFUVVJUkUuDQorIw0KKyMgVGhp cyBjb2RlIGlzIG9ubHkgcmVxdWlyZWQgd2hlbiBhdXRvbWF0aWMgZGVwZW5kZW5jeSB0cmFja2lu Zw0KKyMgaXMgZW5hYmxlZC4gIEZJWE1FLiAgVGhpcyBjcmVhdGVzIGVhY2ggYC5QJyBmaWxlIHRo YXQgd2Ugd2lsbA0KKyMgbmVlZCBpbiBvcmRlciB0byBib290c3RyYXAgdGhlIGRlcGVuZGVuY3kg aGFuZGxpbmcgY29kZS4NCitBQ19ERUZVTihbQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFORFNd LA0KK1tBQ19DT05GSUdfQ09NTUFORFMoW2RlcGZpbGVzXSwNCisgICAgIFt0ZXN0IHgiJEFNREVQ X1RSVUUiICE9IHgiIiB8fCBfQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFORFNdLA0KKyAgICAg W0FNREVQX1RSVUU9IiRBTURFUF9UUlVFIiBhY19hdXhfZGlyPSIkYWNfYXV4X2RpciJdKQ0KK10p DQorDQorIyBEbyBhbGwgdGhlIHdvcmsgZm9yIEF1dG9tYWtlLiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLSotIEF1dG9jb25mIC0qLQ0KKw0KKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3 LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1DQorIyBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0 d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBl cm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91 dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisN CisjIHNlcmlhbCAxMg0KKw0KKyMgVGhpcyBtYWNybyBhY3R1YWxseSBkb2VzIHRvbyBtdWNoLiAg U29tZSBjaGVja3MgYXJlIG9ubHkgbmVlZGVkIGlmDQorIyB5b3VyIHBhY2thZ2UgZG9lcyBjZXJ0 YWluIHRoaW5ncy4gIEJ1dCB0aGlzIGlzbid0IHJlYWxseSBhIGJpZyBkZWFsLg0KKw0KKyMgQU1f SU5JVF9BVVRPTUFLRShQQUNLQUdFLCBWRVJTSU9OLCBbTk8tREVGSU5FXSkNCisjIEFNX0lOSVRf QVVUT01BS0UoW09QVElPTlNdKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCisjIFRoZSBjYWxsIHdpdGggUEFDS0FHRSBhbmQgVkVSU0lPTiBhcmd1 bWVudHMgaXMgdGhlIG9sZCBzdHlsZQ0KKyMgY2FsbCAocHJlIGF1dG9jb25mLTIuNTApLCB3aGlj aCBpcyBiZWluZyBwaGFzZWQgb3V0LiAgUEFDS0FHRQ0KKyMgYW5kIFZFUlNJT04gc2hvdWxkIG5v dyBiZSBwYXNzZWQgdG8gQUNfSU5JVCBhbmQgcmVtb3ZlZCBmcm9tDQorIyB0aGUgY2FsbCB0byBB TV9JTklUX0FVVE9NQUtFLg0KKyMgV2Ugc3VwcG9ydCBib3RoIGNhbGwgc3R5bGVzIGZvciB0aGUg dHJhbnNpdGlvbi4gIEFmdGVyDQorIyB0aGUgbmV4dCBBdXRvbWFrZSByZWxlYXNlLCBBdXRvY29u ZiBjYW4gbWFrZSB0aGUgQUNfSU5JVA0KKyMgYXJndW1lbnRzIG1hbmRhdG9yeSwgYW5kIHRoZW4g d2UgY2FuIGRlcGVuZCBvbiBhIG5ldyBBdXRvY29uZg0KKyMgcmVsZWFzZSBhbmQgZHJvcCB0aGUg b2xkIGNhbGwgc3VwcG9ydC4NCitBQ19ERUZVTihbQU1fSU5JVF9BVVRPTUFLRV0sDQorW0FDX1BS RVJFUShbMi41OF0pZG5sDQorZG5sIEF1dG9jb25mIHdhbnRzIHRvIGRpc2FsbG93IEFNXyBuYW1l cy4gIFdlIGV4cGxpY2l0bHkgYWxsb3cNCitkbmwgdGhlIG9uZXMgd2UgY2FyZSBhYm91dC4NCitt NF9wYXR0ZXJuX2FsbG93KFteQU1fW0EtWl0rRkxBR1MkXSlkbmwNCitBQ19SRVFVSVJFKFtBTV9T RVRfQ1VSUkVOVF9BVVRPTUFLRV9WRVJTSU9OXSlkbmwNCitBQ19SRVFVSVJFKFtBQ19QUk9HX0lO U1RBTExdKWRubA0KKyMgdGVzdCB0byBzZWUgaWYgc3JjZGlyIGFscmVhZHkgY29uZmlndXJlZA0K K2lmIHRlc3QgImBjZCAkc3JjZGlyICYmIHB3ZGAiICE9ICJgcHdkYCIgJiYNCisgICB0ZXN0IC1m ICRzcmNkaXIvY29uZmlnLnN0YXR1czsgdGhlbg0KKyAgQUNfTVNHX0VSUk9SKFtzb3VyY2UgZGly ZWN0b3J5IGFscmVhZHkgY29uZmlndXJlZDsgcnVuICJtYWtlIGRpc3RjbGVhbiIgdGhlcmUgZmly c3RdKQ0KK2ZpDQorDQorIyB0ZXN0IHdoZXRoZXIgd2UgaGF2ZSBjeWdwYXRoDQoraWYgdGVzdCAt eiAiJENZR1BBVEhfVyI7IHRoZW4NCisgIGlmIChjeWdwYXRoIC0tdmVyc2lvbikgPi9kZXYvbnVs bCAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgICBDWUdQQVRIX1c9J2N5Z3BhdGggLXcnDQorICBlbHNl DQorICAgIENZR1BBVEhfVz1lY2hvDQorICBmaQ0KK2ZpDQorQUNfU1VCU1QoW0NZR1BBVEhfV10p DQorDQorIyBEZWZpbmUgdGhlIGlkZW50aXR5IG9mIHRoZSBwYWNrYWdlLg0KK2RubCBEaXN0aW5n dWlzaCBiZXR3ZWVuIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlIGNhbGxzLg0KK200X2lmdmFsKFsk Ml0sDQorW200X2lmdmFsKFskM10sIFtfQU1fU0VUX09QVElPTihbbm8tZGVmaW5lXSldKWRubA0K KyBBQ19TVUJTVChbUEFDS0FHRV0sIFskMV0pZG5sDQorIEFDX1NVQlNUKFtWRVJTSU9OXSwgWyQy XSldLA0KK1tfQU1fU0VUX09QVElPTlMoWyQxXSlkbmwNCisgQUNfU1VCU1QoW1BBQ0tBR0VdLCBb J0FDX1BBQ0tBR0VfVEFSTkFNRSddKWRubA0KKyBBQ19TVUJTVChbVkVSU0lPTl0sIFsnQUNfUEFD S0FHRV9WRVJTSU9OJ10pXSlkbmwNCisNCitfQU1fSUZfT1BUSU9OKFtuby1kZWZpbmVdLCwNCitb QUNfREVGSU5FX1VOUVVPVEVEKFBBQ0tBR0UsICIkUEFDS0FHRSIsIFtOYW1lIG9mIHBhY2thZ2Vd KQ0KKyBBQ19ERUZJTkVfVU5RVU9URUQoVkVSU0lPTiwgIiRWRVJTSU9OIiwgW1ZlcnNpb24gbnVt YmVyIG9mIHBhY2thZ2VdKV0pZG5sDQorDQorIyBTb21lIHRvb2xzIEF1dG9tYWtlIG5lZWRzLg0K K0FDX1JFUVVJUkUoW0FNX1NBTklUWV9DSEVDS10pZG5sDQorQUNfUkVRVUlSRShbQUNfQVJHX1BS T0dSQU1dKWRubA0KK0FNX01JU1NJTkdfUFJPRyhBQ0xPQ0FMLCBhY2xvY2FsLSR7YW1fX2FwaV92 ZXJzaW9ufSkNCitBTV9NSVNTSU5HX1BST0coQVVUT0NPTkYsIGF1dG9jb25mKQ0KK0FNX01JU1NJ TkdfUFJPRyhBVVRPTUFLRSwgYXV0b21ha2UtJHthbV9fYXBpX3ZlcnNpb259KQ0KK0FNX01JU1NJ TkdfUFJPRyhBVVRPSEVBREVSLCBhdXRvaGVhZGVyKQ0KK0FNX01JU1NJTkdfUFJPRyhNQUtFSU5G TywgbWFrZWluZm8pDQorQU1fUFJPR19JTlNUQUxMX1NIDQorQU1fUFJPR19JTlNUQUxMX1NUUklQ DQorQUNfUkVRVUlSRShbQU1fUFJPR19NS0RJUl9QXSlkbmwNCisjIFdlIG5lZWQgYXdrIGZvciB0 aGUgImNoZWNrIiB0YXJnZXQuICBUaGUgc3lzdGVtICJhd2siIGlzIGJhZCBvbg0KKyMgc29tZSBw bGF0Zm9ybXMuDQorQUNfUkVRVUlSRShbQUNfUFJPR19BV0tdKWRubA0KK0FDX1JFUVVJUkUoW0FD X1BST0dfTUFLRV9TRVRdKWRubA0KK0FDX1JFUVVJUkUoW0FNX1NFVF9MRUFESU5HX0RPVF0pZG5s DQorX0FNX0lGX09QVElPTihbdGFyLXVzdGFyXSwgW19BTV9QUk9HX1RBUihbdXN0YXJdKV0sDQor ICAgICAgICAgICAgICBbX0FNX0lGX09QVElPTihbdGFyLXBheF0sIFtfQU1fUFJPR19UQVIoW3Bh eF0pXSwNCisJICAgICAgCQkgICAgIFtfQU1fUFJPR19UQVIoW3Y3XSldKV0pDQorX0FNX0lGX09Q VElPTihbbm8tZGVwZW5kZW5jaWVzXSwsDQorW0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0ND XSwNCisgICAgICAgICAgICAgICAgICBbX0FNX0RFUEVOREVOQ0lFUyhDQyldLA0KKyAgICAgICAg ICAgICAgICAgIFtkZWZpbmUoW0FDX1BST0dfQ0NdLA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVmbihbQUNfUFJPR19DQ10pW19BTV9ERVBFTkRFTkNJRVMoQ0MpXSldKWRubA0KK0FDX1BS T1ZJREVfSUZFTFNFKFtBQ19QUk9HX0NYWF0sDQorICAgICAgICAgICAgICAgICAgW19BTV9ERVBF TkRFTkNJRVMoQ1hYKV0sDQorICAgICAgICAgICAgICAgICAgW2RlZmluZShbQUNfUFJPR19DWFhd LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmbihbQUNfUFJPR19DWFhdKVtfQU1fREVQ RU5ERU5DSUVTKENYWCldKV0pZG5sDQorXSkNCitdKQ0KKw0KKw0KKyMgV2hlbiBjb25maWcuc3Rh dHVzIGdlbmVyYXRlcyBhIGhlYWRlciwgd2UgbXVzdCB1cGRhdGUgdGhlIHN0YW1wLWggZmlsZS4N CisjIFRoaXMgZmlsZSByZXNpZGVzIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgY29uZmln IGhlYWRlcg0KKyMgdGhhdCBpcyBnZW5lcmF0ZWQuICBUaGUgc3RhbXAgZmlsZXMgYXJlIG51bWJl cmVkIHRvIGhhdmUgZGlmZmVyZW50IG5hbWVzLg0KKw0KKyMgQXV0b2NvbmYgY2FsbHMgX0FDX0FN X0NPTkZJR19IRUFERVJfSE9PSyAod2hlbiBkZWZpbmVkKSBpbiB0aGUNCisjIGxvb3Agd2hlcmUg Y29uZmlnLnN0YXR1cyBjcmVhdGVzIHRoZSBoZWFkZXJzLCBzbyB3ZSBjYW4gZ2VuZXJhdGUNCisj IG91ciBzdGFtcCBmaWxlcyB0aGVyZS4NCitBQ19ERUZVTihbX0FDX0FNX0NPTkZJR19IRUFERVJf SE9PS10sDQorWyMgQ29tcHV0ZSAkMSdzIGluZGV4IGluICRjb25maWdfaGVhZGVycy4NCitfYW1f c3RhbXBfY291bnQ9MQ0KK2ZvciBfYW1faGVhZGVyIGluICRjb25maWdfaGVhZGVycyA6OyBkbw0K KyAgY2FzZSAkX2FtX2hlYWRlciBpbg0KKyAgICAkMSB8ICQxOiogKQ0KKyAgICAgIGJyZWFrIDs7 DQorICAgICogKQ0KKyAgICAgIF9hbV9zdGFtcF9jb3VudD1gZXhwciAkX2FtX3N0YW1wX2NvdW50 ICsgMWAgOzsNCisgIGVzYWMNCitkb25lDQorZWNobyAidGltZXN0YW1wIGZvciAkMSIgPmBBU19E SVJOQU1FKFskMV0pYC9zdGFtcC1oW10kX2FtX3N0YW1wX2NvdW50XSkNCisNCisjIENvcHlyaWdo dCAoQykgMjAwMSwgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQor Iw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3Ry aWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0 aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBBTV9QUk9HX0lOU1RBTExfU0gNCisjIC0t LS0tLS0tLS0tLS0tLS0tLQ0KKyMgRGVmaW5lICRpbnN0YWxsX3NoLg0KK0FDX0RFRlVOKFtBTV9Q Uk9HX0lOU1RBTExfU0hdLA0KK1tBQ19SRVFVSVJFKFtBTV9BVVhfRElSX0VYUEFORF0pZG5sDQor aW5zdGFsbF9zaD0ke2luc3RhbGxfc2gtIiRhbV9hdXhfZGlyL2luc3RhbGwtc2gifQ0KK0FDX1NV QlNUKGluc3RhbGxfc2gpXSkNCisNCisjIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSAgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdh cmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJt aXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQg bW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQor IyBzZXJpYWwgMg0KKw0KKyMgQ2hlY2sgd2hldGhlciB0aGUgdW5kZXJseWluZyBmaWxlLXN5c3Rl bSBzdXBwb3J0cyBmaWxlbmFtZXMNCisjIHdpdGggYSBsZWFkaW5nIGRvdC4gIEZvciBpbnN0YW5j ZSBNUy1ET1MgZG9lc24ndC4NCitBQ19ERUZVTihbQU1fU0VUX0xFQURJTkdfRE9UXSwNCitbcm0g LXJmIC50c3QgMj4vZGV2L251bGwNCitta2RpciAudHN0IDI+L2Rldi9udWxsDQoraWYgdGVzdCAt ZCAudHN0OyB0aGVuDQorICBhbV9fbGVhZGluZ19kb3Q9Lg0KK2Vsc2UNCisgIGFtX19sZWFkaW5n X2RvdD1fDQorZmkNCitybWRpciAudHN0IDI+L2Rldi9udWxsDQorQUNfU1VCU1QoW2FtX19sZWFk aW5nX2RvdF0pXSkNCisNCisjIEFkZCAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgb3B0aW9uIHRv IGNvbmZpZ3VyZS4gICAgICAgICAtKi0gQXV0b2NvbmYgLSotDQorIyBGcm9tIEppbSBNZXllcmlu Zw0KKw0KKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk4LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAz LCAyMDA0LCAyMDA1DQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisjDQorIyBU aGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0K KyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBp dCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90 aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIHNlcmlhbCA0DQorDQorQUNfREVGVU4oW0FNX01BSU5U QUlORVJfTU9ERV0sDQorW0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgbWFpbnRh aW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXNdKQ0KKyAgZG5sIG1haW50YWluZXIt bW9kZSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0DQorICBBQ19BUkdfRU5BQkxFKG1haW50YWluZXIt bW9kZSwNCitbICAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgIGVuYWJsZSBtYWtlIHJ1bGVzIGFu ZCBkZXBlbmRlbmNpZXMgbm90IHVzZWZ1bA0KKwkJCSAgKGFuZCBzb21ldGltZXMgY29uZnVzaW5n KSB0byB0aGUgY2FzdWFsIGluc3RhbGxlcl0sDQorICAgICAgVVNFX01BSU5UQUlORVJfTU9ERT0k ZW5hYmxldmFsLA0KKyAgICAgIFVTRV9NQUlOVEFJTkVSX01PREU9bm8pDQorICBBQ19NU0dfUkVT VUxUKFskVVNFX01BSU5UQUlORVJfTU9ERV0pDQorICBBTV9DT05ESVRJT05BTChNQUlOVEFJTkVS X01PREUsIFt0ZXN0ICRVU0VfTUFJTlRBSU5FUl9NT0RFID0geWVzXSkNCisgIE1BSU5UPSRNQUlO VEFJTkVSX01PREVfVFJVRQ0KKyAgQUNfU1VCU1QoTUFJTlQpZG5sDQorXQ0KKykNCisNCitBVV9E RUZVTihbam1fTUFJTlRBSU5FUl9NT0RFXSwgW0FNX01BSU5UQUlORVJfTU9ERV0pDQorDQorIyBD aGVjayB0byBzZWUgaG93ICdtYWtlJyB0cmVhdHMgaW5jbHVkZXMuCSAgICAgICAgICAgIC0qLSBB dXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNSAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUg c29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRl ZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdp dGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQu DQorDQorIyBzZXJpYWwgMw0KKw0KKyMgQU1fTUFLRV9JTkNMVURFKCkNCisjIC0tLS0tLS0tLS0t LS0tLS0tDQorIyBDaGVjayB0byBzZWUgaG93IG1ha2UgdHJlYXRzIGluY2x1ZGVzLg0KK0FDX0RF RlVOKFtBTV9NQUtFX0lOQ0xVREVdLA0KK1thbV9tYWtlPSR7TUFLRS1tYWtlfQ0KK2NhdCA+IGNv bmZpbmMgPDwgJ0VORCcNCithbV9fZG9pdDoNCisJQGVjaG8gZG9uZQ0KKy5QSE9OWTogYW1fX2Rv aXQNCitFTkQNCisjIElmIHdlIGRvbid0IGZpbmQgYW4gaW5jbHVkZSBkaXJlY3RpdmUsIGp1c3Qg Y29tbWVudCBvdXQgdGhlIGNvZGUuDQorQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3R5bGUgb2YgaW5j bHVkZSB1c2VkIGJ5ICRhbV9tYWtlXSkNCithbV9faW5jbHVkZT0iIyINCithbV9fcXVvdGU9DQor X2FtX3Jlc3VsdD1ub25lDQorIyBGaXJzdCB0cnkgR05VIG1ha2Ugc3R5bGUgaW5jbHVkZS4NCitl Y2hvICJpbmNsdWRlIGNvbmZpbmMiID4gY29uZm1mDQorIyBXZSBncmVwIG91dCBgRW50ZXJpbmcg ZGlyZWN0b3J5JyBhbmQgYExlYXZpbmcgZGlyZWN0b3J5Jw0KKyMgbWVzc2FnZXMgd2hpY2ggY2Fu IG9jY3VyIGlmIGB3JyBlbmRzIHVwIGluIE1BS0VGTEFHUy4NCisjIEluIHBhcnRpY3VsYXIgd2Ug ZG9uJ3QgbG9vayBhdCBgXm1ha2U6JyBiZWNhdXNlIEdOVSBtYWtlIG1pZ2h0DQorIyBiZSBpbnZv a2VkIHVuZGVyIHNvbWUgb3RoZXIgbmFtZSAodXN1YWxseSAiZ21ha2UiKSwgaW4gd2hpY2gNCisj IGNhc2UgaXQgcHJpbnRzIGl0cyBuZXcgbmFtZSBpbnN0ZWFkIG9mIGBtYWtlJy4NCitpZiB0ZXN0 ICJgJGFtX21ha2UgLXMgLWYgY29uZm1mIDI+IC9kZXYvbnVsbCB8IGdyZXAgLXYgJ2luZyBkaXJl Y3RvcnknYCIgPSAiZG9uZSI7IHRoZW4NCisgICBhbV9faW5jbHVkZT1pbmNsdWRlDQorICAgYW1f X3F1b3RlPQ0KKyAgIF9hbV9yZXN1bHQ9R05VDQorZmkNCisjIE5vdyB0cnkgQlNEIG1ha2Ugc3R5 bGUgaW5jbHVkZS4NCitpZiB0ZXN0ICIkYW1fX2luY2x1ZGUiID0gIiMiOyB0aGVuDQorICAgZWNo byAnLmluY2x1ZGUgImNvbmZpbmMiJyA+IGNvbmZtZg0KKyAgIGlmIHRlc3QgImAkYW1fbWFrZSAt cyAtZiBjb25mbWYgMj4gL2Rldi9udWxsYCIgPSAiZG9uZSI7IHRoZW4NCisgICAgICBhbV9faW5j bHVkZT0uaW5jbHVkZQ0KKyAgICAgIGFtX19xdW90ZT0iXCIiDQorICAgICAgX2FtX3Jlc3VsdD1C U0QNCisgICBmaQ0KK2ZpDQorQUNfU1VCU1QoW2FtX19pbmNsdWRlXSkNCitBQ19TVUJTVChbYW1f X3F1b3RlXSkNCitBQ19NU0dfUkVTVUxUKFskX2FtX3Jlc3VsdF0pDQorcm0gLWYgY29uZmluYyBj b25mbWYNCitdKQ0KKw0KKyMgRmFrZSB0aGUgZXhpc3RlbmNlIG9mIHByb2dyYW1zIHRoYXQgR05V IG1haW50YWluZXJzIHVzZS4gIC0qLSBBdXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykg MTk5NywgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNQ0KKyMgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNv cHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9u cywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgNA0K Kw0KKyMgQU1fTUlTU0lOR19QUk9HKE5BTUUsIFBST0dSQU0pDQorIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCitBQ19ERUZVTihbQU1fTUlTU0lOR19QUk9HXSwNCitbQUNfUkVRVUlS RShbQU1fTUlTU0lOR19IQVNfUlVOXSkNCiskMT0keyQxLSIke2FtX21pc3NpbmdfcnVufSQyIn0N CitBQ19TVUJTVCgkMSldKQ0KKw0KKw0KKyMgQU1fTUlTU0lOR19IQVNfUlVODQorIyAtLS0tLS0t LS0tLS0tLS0tLS0NCisjIERlZmluZSBNSVNTSU5HIGlmIG5vdCBkZWZpbmVkIHNvIGZhciBhbmQg dGVzdCBpZiBpdCBzdXBwb3J0cyAtLXJ1bi4NCisjIElmIGl0IGRvZXMsIHNldCBhbV9taXNzaW5n X3J1biB0byB1c2UgaXQsIG90aGVyd2lzZSwgdG8gbm90aGluZy4NCitBQ19ERUZVTihbQU1fTUlT U0lOR19IQVNfUlVOXSwNCitbQUNfUkVRVUlSRShbQU1fQVVYX0RJUl9FWFBBTkRdKWRubA0KK3Rl c3QgeCIke01JU1NJTkcrc2V0fSIgPSB4c2V0IHx8IE1JU1NJTkc9Ilwke1NIRUxMfSAkYW1fYXV4 X2Rpci9taXNzaW5nIg0KKyMgVXNlIGV2YWwgdG8gZXhwYW5kICRTSEVMTA0KK2lmIGV2YWwgIiRN SVNTSU5HIC0tcnVuIHRydWUiOyB0aGVuDQorICBhbV9taXNzaW5nX3J1bj0iJE1JU1NJTkcgLS1y dW4gIg0KK2Vsc2UNCisgIGFtX21pc3NpbmdfcnVuPQ0KKyAgQUNfTVNHX1dBUk4oW2BtaXNzaW5n JyBzY3JpcHQgaXMgdG9vIG9sZCBvciBtaXNzaW5nXSkNCitmaQ0KK10pDQorDQorIyBDb3B5cmln aHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0K KyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0 cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMg dGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgQU1fUFJPR19NS0RJUl9QDQorIyAtLS0t LS0tLS0tLS0tLS0NCisjIENoZWNrIHdoZXRoZXIgYG1rZGlyIC1wJyBpcyBzdXBwb3J0ZWQsIGZh bGxiYWNrIHRvIG1raW5zdGFsbGRpcnMgb3RoZXJ3aXNlLg0KKyMNCisjIEF1dG9tYWtlIDEuOCB1 c2VkIGBta2RpciAtbSAwNzU1IC1wIC0tJyB0byBlbnN1cmUgdGhhdCBkaXJlY3Rvcmllcw0KKyMg Y3JlYXRlZCBieSBgbWFrZSBpbnN0YWxsJyBhcmUgYWx3YXlzIHdvcmxkIHJlYWRhYmxlLCBldmVu IGlmIHRoZQ0KKyMgaW5zdGFsbGVyIGhhcHBlbnMgdG8gaGF2ZSBhbiBvdmVybHkgcmVzdHJpY3Rp dmUgdW1hc2sgKGUuZy4gMDc3KS4NCisjIFRoaXMgd2FzIGEgbWlzdGFrZS4gIFRoZXJlIGFyZSBh dCBsZWFzdCB0d28gcmVhc29ucyB3aHkgd2UgbXVzdCBub3QNCisjIHVzZSBgLW0gMDc1NSc6DQor IyAgIC0gaXQgY2F1c2VzIHNwZWNpYWwgYml0cyBsaWtlIFNHSUQgdG8gYmUgaWdub3JlZCwNCisj ICAgLSBpdCBtYXkgYmUgdG9vIHJlc3RyaWN0aXZlIChzb21lIHNldHVwcyBleHBlY3QgNzc1IGRp cmVjdG9yaWVzKS4NCisjDQorIyBEbyBub3QgdXNlIC1tIDA3NTUgYW5kIGxldCBwZW9wbGUgY2hv b3NlIHdoYXRldmVyIHRoZXkgZXhwZWN0IGJ5DQorIyBzZXR0aW5nIHVtYXNrLg0KKyMNCisjIFdl IGNhbm5vdCBhY2NlcHQgYW55IGltcGxlbWVudGF0aW9uIG9mIGBta2RpcicgdGhhdCByZWNvZ25p emVzIGAtcCcuDQorIyBTb21lIGltcGxlbWVudGF0aW9ucyAoc3VjaCBhcyBTb2xhcmlzIDgncykg YXJlIG5vdCB0aHJlYWQtc2FmZTogaWYgYQ0KKyMgcGFyYWxsZWwgbWFrZSB0cmllcyB0byBydW4g YG1rZGlyIC1wIGEvYicgYW5kIGBta2RpciAtcCBhL2MnDQorIyBjb25jdXJyZW50bHksIGJvdGgg dmVyc2lvbiBjYW4gZGV0ZWN0IHRoYXQgYS8gaXMgbWlzc2luZywgYnV0IG9ubHkNCisjIG9uZSBj YW4gY3JlYXRlIGl0IGFuZCB0aGUgb3RoZXIgd2lsbCBlcnJvciBvdXQuICBDb25zZXF1ZW50bHkg d2UNCisjIHJlc3RyaWN0IG91cnNlbHZlcyB0byBHTlUgbWFrZSAodXNpbmcgdGhlIC0tdmVyc2lv biBvcHRpb24gZW5zdXJlcw0KKyMgdGhpcy4pDQorQUNfREVGVU4oW0FNX1BST0dfTUtESVJfUF0s DQorW2lmIG1rZGlyIC1wIC0tdmVyc2lvbiAuID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0ICEgLWQg Li8tLXZlcnNpb247IHRoZW4NCisgICMgV2UgdXNlZCB0byBrZWVwaW5nIHRoZSBgLicgYXMgZmly c3QgYXJndW1lbnQsIGluIG9yZGVyIHRvDQorICAjIGFsbG93ICQobWtkaXJfcCkgdG8gYmUgdXNl ZCB3aXRob3V0IGFyZ3VtZW50LiAgQXMgaW4NCisgICMgICAkKG1rZGlyX3ApICQoc29tZWRpcikN CisgICMgd2hlcmUgJChzb21lZGlyKSBpcyBjb25kaXRpb25hbGx5IGRlZmluZWQuICBIb3dldmVy IHRoaXMgaXMgd3JvbmcNCisgICMgZm9yIHR3byByZWFzb25zOg0KKyAgIyAgMS4gaWYgdGhlIHBh Y2thZ2UgaXMgaW5zdGFsbGVkIGJ5IGEgdXNlciB3aG8gY2Fubm90IHdyaXRlIGAuJw0KKyAgIyAg ICAgbWFrZSBpbnN0YWxsIHdpbGwgZmFpbCwNCisgICMgIDIuIHRoZSBhYm92ZSBjb21tZW50IHNo b3VsZCBtb3N0IGNlcnRhaW5seSByZWFkDQorICAjICAgICAkKG1rZGlyX3ApICQoREVTVERJUikk KHNvbWVkaXIpDQorICAjICAgICBzbyBpdCBkb2VzIG5vdCB3b3JrIHdoZW4gJChzb21lZGlyKSBp cyB1bmRlZmluZWQgYW5kDQorICAjICAgICAkKERFU1RESVIpIGlzIG5vdC4NCisgICMgIFRvIHN1 cHBvcnQgdGhlIGxhdHRlciBjYXNlLCB3ZSBoYXZlIHRvIHdyaXRlDQorICAjICAgICB0ZXN0IC16 ICIkKHNvbWVkaXIpIiB8fCAkKG1rZGlyX3ApICQoREVTVERJUikkKHNvbWVkaXIpLA0KKyAgIyAg c28gdGhlIGAuJyB0cmljayBpcyBwb2ludGxlc3MuDQorICBta2Rpcl9wPSdta2RpciAtcCAtLScN CitlbHNlDQorICAjIE9uIE5leHRTdGVwIGFuZCBPcGVuU3RlcCwgdGhlIGBta2RpcicgY29tbWFu ZCBkb2VzIG5vdA0KKyAgIyByZWNvZ25pemUgYW55IG9wdGlvbi4gIEl0IHdpbGwgaW50ZXJwcmV0 IGFsbCBvcHRpb25zIGFzDQorICAjIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZSwgYW5kIHRoZW4gYWJv cnQgYmVjYXVzZSBgLicgYWxyZWFkeQ0KKyAgIyBleGlzdHMuDQorICBmb3IgZCBpbiAuLy1wIC4v LS12ZXJzaW9uOw0KKyAgZG8NCisgICAgdGVzdCAtZCAkZCAmJiBybWRpciAkZA0KKyAgZG9uZQ0K KyAgIyAkKG1raW5zdGFsbGRpcnMpIGlzIGRlZmluZWQgYnkgQXV0b21ha2UgaWYgbWtpbnN0YWxs ZGlycyBleGlzdHMuDQorICBpZiB0ZXN0IC1mICIkYWNfYXV4X2Rpci9ta2luc3RhbGxkaXJzIjsg dGhlbg0KKyAgICBta2Rpcl9wPSckKG1raW5zdGFsbGRpcnMpJw0KKyAgZWxzZQ0KKyAgICBta2Rp cl9wPSckKGluc3RhbGxfc2gpIC1kJw0KKyAgZmkNCitmaQ0KK0FDX1NVQlNUKFtta2Rpcl9wXSld KQ0KKw0KKyMgSGVscGVyIGZ1bmN0aW9ucyBmb3Igb3B0aW9uIGhhbmRsaW5nLiAgICAgICAgICAg ICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAw MiwgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhp cyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisj IGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQs DQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGlj ZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgMw0KKw0KKyMgX0FNX01BTkdMRV9PUFRJT04o TkFNRSkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQUNfREVGVU4oW19BTV9NQU5HTEVf T1BUSU9OXSwNCitbW19BTV9PUFRJT05fXW00X2JwYXRzdWJzdCgkMSwgW1teYS16QS1aMC05X11d LCBbX10pXSkNCisNCisjIF9BTV9TRVRfT1BUSU9OKE5BTUUpDQorIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCisjIFNldCBvcHRpb24gTkFNRS4gIFByZXNlbnRseSB0aGF0IG9ubHkg bWVhbnMgZGVmaW5pbmcgYSBmbGFnIGZvciB0aGlzIG9wdGlvbi4NCitBQ19ERUZVTihbX0FNX1NF VF9PUFRJT05dLA0KK1ttNF9kZWZpbmUoX0FNX01BTkdMRV9PUFRJT04oWyQxXSksIDEpXSkNCisN CisjIF9BTV9TRVRfT1BUSU9OUyhPUFRJT05TKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KKyMgT1BUSU9OUyBpcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIEF1dG9t YWtlIG9wdGlvbnMuDQorQUNfREVGVU4oW19BTV9TRVRfT1BUSU9OU10sDQorW0FDX0ZPUkVBQ0go W19BTV9PcHRpb25dLCBbJDFdLCBbX0FNX1NFVF9PUFRJT04oX0FNX09wdGlvbildKV0pDQorDQor IyBfQU1fSUZfT1BUSU9OKE9QVElPTiwgSUYtU0VULCBbSUYtTk9ULVNFVF0pDQorIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBFeGVjdXRlIElGLVNFVCBp ZiBPUFRJT04gaXMgc2V0LCBJRi1OT1QtU0VUIG90aGVyd2lzZS4NCitBQ19ERUZVTihbX0FNX0lG X09QVElPTl0sDQorW200X2lmc2V0KF9BTV9NQU5HTEVfT1BUSU9OKFskMV0pLCBbJDJdLCBbJDNd KV0pDQorDQorIyBDaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYnVpbGQgZW52aXJvbm1lbnQg aXMgc2FuZS4gICAgLSotIEF1dG9jb25mIC0qLQ0KKw0KKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAx OTk3LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA1DQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQv b3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBs b25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIHNlcmlhbCA0DQorDQorIyBB TV9TQU5JVFlfQ0hFQ0sNCisjIC0tLS0tLS0tLS0tLS0tLQ0KK0FDX0RFRlVOKFtBTV9TQU5JVFlf Q0hFQ0tdLA0KK1tBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgYnVpbGQgZW52aXJvbm1lbnQgaXMg c2FuZV0pDQorIyBKdXN0IGluIGNhc2UNCitzbGVlcCAxDQorZWNobyB0aW1lc3RhbXAgPiBjb25m dGVzdC5maWxlDQorIyBEbyBgc2V0JyBpbiBhIHN1YnNoZWxsIHNvIHdlIGRvbid0IGNsb2JiZXIg dGhlIGN1cnJlbnQgc2hlbGwncw0KKyMgYXJndW1lbnRzLiAgTXVzdCB0cnkgLUwgZmlyc3QgaW4g Y2FzZSBjb25maWd1cmUgaXMgYWN0dWFsbHkgYQ0KKyMgc3ltbGluazsgc29tZSBzeXN0ZW1zIHBs YXkgd2VpcmQgZ2FtZXMgd2l0aCB0aGUgbW9kIHRpbWUgb2Ygc3ltbGlua3MNCisjIChlZyBGcmVl QlNEIHJldHVybnMgdGhlIG1vZCB0aW1lIG9mIHRoZSBzeW1saW5rJ3MgY29udGFpbmluZw0KKyMg ZGlyZWN0b3J5KS4NCitpZiAoDQorICAgc2V0IFggYGxzIC1MdCAkc3JjZGlyL2NvbmZpZ3VyZSBj b25mdGVzdC5maWxlIDI+IC9kZXYvbnVsbGANCisgICBpZiB0ZXN0ICIkWypdIiA9ICJYIjsgdGhl bg0KKyAgICAgICMgLUwgZGlkbid0IHdvcmsuDQorICAgICAgc2V0IFggYGxzIC10ICRzcmNkaXIv Y29uZmlndXJlIGNvbmZ0ZXN0LmZpbGVgDQorICAgZmkNCisgICBybSAtZiBjb25mdGVzdC5maWxl DQorICAgaWYgdGVzdCAiJFsqXSIgIT0gIlggJHNyY2Rpci9jb25maWd1cmUgY29uZnRlc3QuZmls ZSIgXA0KKyAgICAgICYmIHRlc3QgIiRbKl0iICE9ICJYIGNvbmZ0ZXN0LmZpbGUgJHNyY2Rpci9j b25maWd1cmUiOyB0aGVuDQorDQorICAgICAgIyBJZiBuZWl0aGVyIG1hdGNoZWQsIHRoZW4gd2Ug aGF2ZSBhIGJyb2tlbiBscy4gIFRoaXMgY2FuIGhhcHBlbg0KKyAgICAgICMgaWYsIGZvciBpbnN0 YW5jZSwgQ09ORklHX1NIRUxMIGlzIGJhc2ggYW5kIGl0IGluaGVyaXRzIGENCisgICAgICAjIGJy b2tlbiBscyBhbGlhcyBmcm9tIHRoZSBlbnZpcm9ubWVudC4gIFRoaXMgaGFzIGFjdHVhbGx5DQor ICAgICAgIyBoYXBwZW5lZC4gIFN1Y2ggYSBzeXN0ZW0gY291bGQgbm90IGJlIGNvbnNpZGVyZWQg InNhbmUiLg0KKyAgICAgIEFDX01TR19FUlJPUihbbHMgLXQgYXBwZWFycyB0byBmYWlsLiAgTWFr ZSBzdXJlIHRoZXJlIGlzIG5vdCBhIGJyb2tlbg0KK2FsaWFzIGluIHlvdXIgZW52aXJvbm1lbnRd KQ0KKyAgIGZpDQorDQorICAgdGVzdCAiJFsyXSIgPSBjb25mdGVzdC5maWxlDQorICAgKQ0KK3Ro ZW4NCisgICAjIE9rLg0KKyAgIDoNCitlbHNlDQorICAgQUNfTVNHX0VSUk9SKFtuZXdseSBjcmVh dGVkIGZpbGUgaXMgb2xkZXIgdGhhbiBkaXN0cmlidXRlZCBmaWxlcyENCitDaGVjayB5b3VyIHN5 c3RlbSBjbG9ja10pDQorZmkNCitBQ19NU0dfUkVTVUxUKHllcyldKQ0KKw0KKyMgQ29weXJpZ2h0 IChDKSAyMDAxLCAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisj DQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJp YnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRo aXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIEFNX1BST0dfSU5TVEFMTF9TVFJJUA0KKyMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBPbmUgaXNzdWUgd2l0aCB2ZW5kb3IgYGluc3RhbGwn IChldmVuIEdOVSkgaXMgdGhhdCB5b3UgY2FuJ3QNCisjIHNwZWNpZnkgdGhlIHByb2dyYW0gdXNl ZCB0byBzdHJpcCBiaW5hcmllcy4gIFRoaXMgaXMgZXNwZWNpYWxseQ0KKyMgYW5ub3lpbmcgaW4g Y3Jvc3MtY29tcGlsaW5nIGVudmlyb25tZW50cywgd2hlcmUgdGhlIGJ1aWxkJ3Mgc3RyaXANCisj IGlzIHVubGlrZWx5IHRvIGhhbmRsZSB0aGUgaG9zdCdzIGJpbmFyaWVzLg0KKyMgRm9ydHVuYXRl bHkgaW5zdGFsbC1zaCB3aWxsIGhvbm9yIGEgU1RSSVBQUk9HIHZhcmlhYmxlLCBzbyB3ZQ0KKyMg YWx3YXlzIHVzZSBpbnN0YWxsLXNoIGluIGBtYWtlIGluc3RhbGwtc3RyaXAnLCBhbmQgaW5pdGlh bGl6ZQ0KKyMgU1RSSVBQUk9HIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBTVFJJUCB2YXJpYWJsZSAo c2V0IGJ5IHRoZSB1c2VyKS4NCitBQ19ERUZVTihbQU1fUFJPR19JTlNUQUxMX1NUUklQXSwNCitb QUNfUkVRVUlSRShbQU1fUFJPR19JTlNUQUxMX1NIXSlkbmwNCisjIEluc3RhbGxlZCBiaW5hcmll cyBhcmUgdXN1YWxseSBzdHJpcHBlZCB1c2luZyBgc3RyaXAnIHdoZW4gdGhlIHVzZXINCisjIHJ1 biBgbWFrZSBpbnN0YWxsLXN0cmlwJy4gIEhvd2V2ZXIgYHN0cmlwJyBtaWdodCBub3QgYmUgdGhl IHJpZ2h0DQorIyB0b29sIHRvIHVzZSBpbiBjcm9zcy1jb21waWxhdGlvbiBlbnZpcm9ubWVudHMs IHRoZXJlZm9yZSBBdXRvbWFrZQ0KKyMgd2lsbCBob25vciB0aGUgYFNUUklQJyBlbnZpcm9ubWVu dCB2YXJpYWJsZSB0byBvdmVycnVsZSB0aGlzIHByb2dyYW0uDQorZG5sIERvbid0IHRlc3QgZm9y ICRjcm9zc19jb21waWxpbmcgPSB5ZXMsIGJlY2F1c2UgaXQgbWlnaHQgYmUgYG1heWJlJy4NCitp ZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiAhPSBubzsgdGhlbg0KKyAgQUNfQ0hFQ0tfVE9PTChb U1RSSVBdLCBbc3RyaXBdLCA6KQ0KK2ZpDQorSU5TVEFMTF9TVFJJUF9QUk9HUkFNPSJcJHtTSEVM TH0gXCQoaW5zdGFsbF9zaCkgLWMgLXMiDQorQUNfU1VCU1QoW0lOU1RBTExfU1RSSVBfUFJPR1JB TV0pXSkNCisNCisjIENoZWNrIGhvdyB0byBjcmVhdGUgYSB0YXJiYWxsLiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotDQorDQorIyBDb3B5cmlnaHQgKEMpIDIwMDQs IDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBp cyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1 bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0 aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJl c2VydmVkLg0KKw0KKyMgc2VyaWFsIDINCisNCisjIF9BTV9QUk9HX1RBUihGT1JNQVQpDQorIyAt LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQ2hlY2sgaG93IHRvIGNyZWF0ZSBhIHRhcmJhbGwgaW4g Zm9ybWF0IEZPUk1BVC4NCisjIEZPUk1BVCBzaG91bGQgYmUgb25lIG9mIGB2NycsIGB1c3Rhcics IG9yIGBwYXgnLg0KKyMNCisjIFN1YnN0aXR1dGUgYSB2YXJpYWJsZSAkKGFtX190YXIpIHRoYXQg aXMgYSBjb21tYW5kDQorIyB3cml0aW5nIHRvIHN0ZG91dCBhIEZPUk1BVC10YXJiYWxsIGNvbnRh aW5pbmcgdGhlIGRpcmVjdG9yeQ0KKyMgJHRhcmRpci4NCisjICAgICB0YXJkaXI9ZGlyZWN0b3J5 ICYmICQoYW1fX3RhcikgPiByZXN1bHQudGFyDQorIw0KKyMgU3Vic3RpdHV0ZSBhIHZhcmlhYmxl ICQoYW1fX3VudGFyKSB0aGF0IGV4dHJhY3Qgc3VjaA0KKyMgYSB0YXJiYWxsIHJlYWQgZnJvbSBz dGRpbi4NCisjICAgICAkKGFtX191bnRhcikgPCByZXN1bHQudGFyDQorQUNfREVGVU4oW19BTV9Q Uk9HX1RBUl0sDQorWyMgQWx3YXlzIGRlZmluZSBBTVRBUiBmb3IgYmFja3dhcmQgY29tcGF0aWJp bGl0eS4NCitBTV9NSVNTSU5HX1BST0coW0FNVEFSXSwgW3Rhcl0pDQorbTRfaWYoWyQxXSwgW3Y3 XSwNCisgICAgIFthbV9fdGFyPScke0FNVEFSfSBjaG9mIC0gIiQkdGFyZGlyIic7IGFtX191bnRh cj0nJHtBTVRBUn0geGYgLSddLA0KKyAgICAgW200X2Nhc2UoWyQxXSwgW3VzdGFyXSwsIFtwYXhd LCwNCisgICAgICAgICAgICAgIFttNF9mYXRhbChbVW5rbm93biB0YXIgZm9ybWF0XSldKQ0KK0FD X01TR19DSEVDS0lORyhbaG93IHRvIGNyZWF0ZSBhICQxIHRhciBhcmNoaXZlXSkNCisjIExvb3Ag b3ZlciBhbGwga25vd24gbWV0aG9kcyB0byBjcmVhdGUgYSB0YXIgYXJjaGl2ZSB1bnRpbCBvbmUg d29ya3MuDQorX2FtX3Rvb2xzPSdnbnV0YXIgbTRfaWYoWyQxXSwgW3VzdGFyXSwgW3BsYWludGFy XSkgcGF4IGNwaW8gbm9uZScNCitfYW1fdG9vbHM9JHthbV9jdl9wcm9nX3Rhcl8kMS0kX2FtX3Rv b2xzfQ0KKyMgRG8gbm90IGZvbGQgdGhlIGFib3ZlIHR3byBsaW5lIGludG8gb25lLCBiZWNhdXNl IFRydTY0IHNoIGFuZA0KKyMgU29sYXJpcyBzaCB3aWxsIG5vdCBncm9rIHNwYWNlcyBpbiB0aGUg cmhzIG9mIGAtJy4NCitmb3IgX2FtX3Rvb2wgaW4gJF9hbV90b29scw0KK2RvDQorICBjYXNlICRf YW1fdG9vbCBpbg0KKyAgZ251dGFyKQ0KKyAgICBmb3IgX2FtX3RhciBpbiB0YXIgZ251dGFyIGd0 YXI7DQorICAgIGRvDQorICAgICAgQU1fUlVOX0xPRyhbJF9hbV90YXIgLS12ZXJzaW9uXSkgJiYg YnJlYWsNCisgICAgZG9uZQ0KKyAgICBhbV9fdGFyPSIkX2FtX3RhciAtLWZvcm1hdD1tNF9pZihb JDFdLCBbcGF4XSwgW3Bvc2l4XSwgWyQxXSkgLWNoZiAtICInIiQkdGFyZGlyIicNCisgICAgYW1f X3Rhcl89IiRfYW1fdGFyIC0tZm9ybWF0PW00X2lmKFskMV0sIFtwYXhdLCBbcG9zaXhdLCBbJDFd KSAtY2hmIC0gIiciJHRhcmRpciInDQorICAgIGFtX191bnRhcj0iJF9hbV90YXIgLXhmIC0iDQor ICAgIDs7DQorICBwbGFpbnRhcikNCisgICAgIyBNdXN0IHNraXAgR05VIHRhcjogaWYgaXQgZG9l cyBub3Qgc3VwcG9ydCAtLWZvcm1hdD0gaXQgZG9lc24ndCBjcmVhdGUNCisgICAgIyB1c3RhciB0 YXJiYWxsIGVpdGhlci4NCisgICAgKHRhciAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMSAmJiBj b250aW51ZQ0KKyAgICBhbV9fdGFyPSd0YXIgY2hmIC0gIiQkdGFyZGlyIicNCisgICAgYW1fX3Rh cl89J3RhciBjaGYgLSAiJHRhcmRpciInDQorICAgIGFtX191bnRhcj0ndGFyIHhmIC0nDQorICAg IDs7DQorICBwYXgpDQorICAgIGFtX190YXI9J3BheCAtTCAteCAkMSAtdyAiJCR0YXJkaXIiJw0K KyAgICBhbV9fdGFyXz0ncGF4IC1MIC14ICQxIC13ICIkdGFyZGlyIicNCisgICAgYW1fX3VudGFy PSdwYXggLXInDQorICAgIDs7DQorICBjcGlvKQ0KKyAgICBhbV9fdGFyPSdmaW5kICIkJHRhcmRp ciIgLXByaW50IHwgY3BpbyAtbyAtSCAkMSAtTCcNCisgICAgYW1fX3Rhcl89J2ZpbmQgIiR0YXJk aXIiIC1wcmludCB8IGNwaW8gLW8gLUggJDEgLUwnDQorICAgIGFtX191bnRhcj0nY3BpbyAtaSAt SCAkMSAtZCcNCisgICAgOzsNCisgIG5vbmUpDQorICAgIGFtX190YXI9ZmFsc2UNCisgICAgYW1f X3Rhcl89ZmFsc2UNCisgICAgYW1fX3VudGFyPWZhbHNlDQorICAgIDs7DQorICBlc2FjDQorDQor ICAjIElmIHRoZSB2YWx1ZSB3YXMgY2FjaGVkLCBzdG9wIG5vdy4gIFdlIGp1c3Qgd2FudGVkIHRv IGhhdmUgYW1fX3Rhcg0KKyAgIyBhbmQgYW1fX3VudGFyIHNldC4NCisgIHRlc3QgLW4gIiR7YW1f Y3ZfcHJvZ190YXJfJDF9IiAmJiBicmVhaw0KKw0KKyAgIyB0YXIvdW50YXIgYSBkdW1teSBkaXJl Y3RvcnksIGFuZCBzdG9wIGlmIHRoZSBjb21tYW5kIHdvcmtzDQorICBybSAtcmYgY29uZnRlc3Qu ZGlyDQorICBta2RpciBjb25mdGVzdC5kaXINCisgIGVjaG8gR3JlcE1lID4gY29uZnRlc3QuZGly L2ZpbGUNCisgIEFNX1JVTl9MT0coW3RhcmRpcj1jb25mdGVzdC5kaXIgJiYgZXZhbCAkYW1fX3Rh cl8gPmNvbmZ0ZXN0LnRhcl0pDQorICBybSAtcmYgY29uZnRlc3QuZGlyDQorICBpZiB0ZXN0IC1z IGNvbmZ0ZXN0LnRhcjsgdGhlbg0KKyAgICBBTV9SVU5fTE9HKFskYW1fX3VudGFyIDxjb25mdGVz dC50YXJdKQ0KKyAgICBncmVwIEdyZXBNZSBjb25mdGVzdC5kaXIvZmlsZSA+L2Rldi9udWxsIDI+ JjEgJiYgYnJlYWsNCisgIGZpDQorZG9uZQ0KK3JtIC1yZiBjb25mdGVzdC5kaXINCisNCitBQ19D QUNIRV9WQUwoW2FtX2N2X3Byb2dfdGFyXyQxXSwgW2FtX2N2X3Byb2dfdGFyXyQxPSRfYW1fdG9v bF0pDQorQUNfTVNHX1JFU1VMVChbJGFtX2N2X3Byb2dfdGFyXyQxXSldKQ0KK0FDX1NVQlNUKFth bV9fdGFyXSkNCitBQ19TVUJTVChbYW1fX3VudGFyXSkNCitdKSAjIF9BTV9QUk9HX1RBUg0KKw0K K200X2luY2x1ZGUoWy4uLy4uLy4uL2FjaW5jbHVkZS5tNF0pDQpkaWZmIC0tZ2l0IGEvbmV3bGli L2xpYmMvc3lzL3h0ZW5zYS9jbGlicmFyeV9pbml0LmMgYi9uZXdsaWIvbGliYy9zeXMveHRlbnNh L2NsaWJyYXJ5X2luaXQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4u OTc1OTgxYWM1DQotLS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2Ns aWJyYXJ5X2luaXQuYw0KQEAgLTAsMCArMSw0MiBAQA0KKy8qIENvcHlyaWdodCAoYykgMjAwMy0y MDA2IFRlbnNpbGljYSBJbmMuICBBTEwgUklHSFRTIFJFU0VSVkVELg0KKw0KKyAgIFJlZGlzdHJp YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dA0KKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KKw0KKyAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICAgICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0K Kw0KKyAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0 aGUgYWJvdmUgY29weXJpZ2h0DQorICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KKyAgICAgIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u DQorDQorICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF UlMgQU5EIENPTlRSSUJVVE9SUyAiQVMNCisgICBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQNCisgICBUTywgVEhFIElN UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEENCisg ICBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBU RU5TSUxJQ0ENCisgICBJTkNPUlBPUkFURUQgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwNCisgICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sDQorICAgUFJPQ1VSRU1F TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S DQorICAgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB TkQgT04gQU5ZIFRIRU9SWSBPRg0KKyAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HDQorICAgTkVHTElHRU5DRSBPUiBP VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTDQorICAg U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B R0UuICAqLw0KKw0KKyNpbmNsdWRlIDxzdGRsaWIuaD4NCisjaW5jbHVkZSA8dW5pc3RkLmg+DQor DQorY29uc3QgY2hhciAqIF9fcHJvZ25hbWUgPSAwOw0KKw0KK3ZvaWQNCitfX2NsaWJyYXJ5X2lu aXQgKGludCBhcmdjLCBjaGFyICoqYXJndiwgY2hhciAqKmVudnAsDQorCQkgdm9pZCAoKmluaXQp KHZvaWQpLA0KKwkJIHZvaWQgKCpmaW5pKSh2b2lkKSkNCit7DQorICBpZiAoYXJndiAhPSAwKQ0K KyAgICBfX3Byb2duYW1lID0gKmFyZ3Y7DQorICBlbnZpcm9uID0gZW52cDsNCisgIGlmIChpbml0 KQ0KKyAgICBpbml0ICgpOw0KKyAgaWYgKGZpbmkpDQorICAgIF9hdGV4aXQgKGZpbmkpOw0KK30N CmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2NvbmZpZ3VyZSBiL25ld2xpYi9s aWJjL3N5cy94dGVuc2EvY29uZmlndXJlDQpuZXcgZmlsZSBtb2RlIDEwMDc1NQ0KaW5kZXggMDAw MDAwMDAwLi42NjMwNzA1ODINCi0tLSAvZGV2L251bGwNCisrKyBiL25ld2xpYi9saWJjL3N5cy94 dGVuc2EvY29uZmlndXJlDQpAQCAtMCwwICsxLDQ2MjMgQEANCisjISAvYmluL3NoDQorIyBHdWVz cyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZp bGVzLg0KKyMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY0IGZvciBuZXdsaWIgMS4xOS4w Lg0KKyMNCisjIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5 OCwgMTk5OSwgMjAwMCwgMjAwMSwNCisjIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIw MDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZQ0KKyMgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisj IFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0 cmlidXRlIGFuZCBtb2RpZnkgaXQuDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBN NHNoIEluaXRpYWxpemF0aW9uLiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorDQor IyBCZSBtb3JlIEJvdXJuZSBjb21wYXRpYmxlDQorRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNF ICMgZm9yIE1LUyBzaA0KK2lmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxh dGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6DQorICBlbXVsYXRlIHNoDQorICBOVUxMQ01E PToNCisgICMgUHJlLTQuMiB2ZXJzaW9ucyBvZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gJHsx KyIkQCJ9LCB3aGljaA0KKyAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRo aXMgZmVhdHVyZS4NCisgIGFsaWFzIC1nICckezErIiRAIn0nPSciJEAiJw0KKyAgc2V0b3B0IE5P X0dMT0JfU1VCU1QNCitlbHNlDQorICBjYXNlIGAoc2V0IC1vKSAyPi9kZXYvbnVsbGAgaW4gIygN CisgICpwb3NpeCopIDoNCisgICAgc2V0IC1vIHBvc2l4IDs7ICMoDQorICAqKSA6DQorICAgICA7 Ow0KK2VzYWMNCitmaQ0KKw0KKw0KK2FzX25sPScNCisnDQorZXhwb3J0IGFzX25sDQorIyBQcmlu dGluZyBhIGxvbmcgc3RyaW5nIGNyYXNoZXMgU29sYXJpcyA3IC91c3IvYmluL3ByaW50Zi4NCith c19lY2hvPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJw0K K2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobw0KK2FzX2Vj aG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvDQorIyBQ cmVmZXIgYSBrc2ggc2hlbGwgYnVpbHRpbiBvdmVyIGFuIGV4dGVybmFsIHByaW50ZiBwcm9ncmFt IG9uIFNvbGFyaXMsDQorIyBidXQgd2l0aG91dCB3YXN0aW5nIGZvcmtzIGZvciBiYXNoIG9yIHpz aC4NCitpZiB0ZXN0IC16ICIkQkFTSF9WRVJTSU9OJFpTSF9WRVJTSU9OIiBcDQorICAgICYmICh0 ZXN0ICJYYHByaW50IC1yIC0tICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7 IHRoZW4NCisgIGFzX2VjaG89J3ByaW50IC1yIC0tJw0KKyAgYXNfZWNob19uPSdwcmludCAtcm4g LS0nDQorZWxpZiAodGVzdCAiWGBwcmludGYgJXMgJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAy Pi9kZXYvbnVsbDsgdGhlbg0KKyAgYXNfZWNobz0ncHJpbnRmICVzXG4nDQorICBhc19lY2hvX249 J3ByaW50ZiAlcycNCitlbHNlDQorICBpZiB0ZXN0ICJYYCgvdXNyL3VjYi9lY2hvIC1uIC1uICRh c19lY2hvKSAyPi9kZXYvbnVsbGAiID0gIlgtbiAkYXNfZWNobyI7IHRoZW4NCisgICAgYXNfZWNo b19ib2R5PSdldmFsIC91c3IvdWNiL2VjaG8gLW4gIiQxJGFzX25sIicNCisgICAgYXNfZWNob19u PScvdXNyL3VjYi9lY2hvIC1uJw0KKyAgZWxzZQ0KKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhw ciAiWCQxIiA6ICJYXFwoLipcXCkiJw0KKyAgICBhc19lY2hvX25fYm9keT0nZXZhbA0KKyAgICAg IGFyZz0kMTsNCisgICAgICBjYXNlICRhcmcgaW4gIygNCisgICAgICAqIiRhc19ubCIqKQ0KKwll eHByICJYJGFyZyIgOiAiWFxcKC4qXFwpJGFzX25sIjsNCisJYXJnPWBleHByICJYJGFyZyIgOiAi LiokYXNfbmxcXCguKlxcKSJgOzsNCisgICAgICBlc2FjOw0KKyAgICAgIGV4cHIgIlgkYXJnIiA6 ICJYXFwoLipcXCkiIHwgdHIgLWQgIiRhc19ubCINCisgICAgJw0KKyAgICBleHBvcnQgYXNfZWNo b19uX2JvZHkNCisgICAgYXNfZWNob19uPSdzaCAtYyAkYXNfZWNob19uX2JvZHkgYXNfZWNobycN CisgIGZpDQorICBleHBvcnQgYXNfZWNob19ib2R5DQorICBhc19lY2hvPSdzaCAtYyAkYXNfZWNo b19ib2R5IGFzX2VjaG8nDQorZmkNCisNCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4NCitp ZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbg0KKyAgUEFUSF9TRVBB UkFUT1I9Og0KKyAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rl di9udWxsIDI+JjEgJiYgew0KKyAgICAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNo IC1jIDopID4vZGV2L251bGwgMj4mMSB8fA0KKyAgICAgIFBBVEhfU0VQQVJBVE9SPSc7Jw0KKyAg fQ0KK2ZpDQorDQorDQorIyBJRlMNCisjIFdlIG5lZWQgc3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUs IGluIHByZWNpc2VseSB0aGF0IG9yZGVyLiAgUXVvdGluZyBpcw0KKyMgdGhlcmUgdG8gcHJldmVu dCBlZGl0b3JzIGZyb20gY29tcGxhaW5pbmcgYWJvdXQgc3BhY2UtdGFiLg0KKyMgKElmIF9BU19Q QVRIX1dBTEsgd2VyZSBjYWxsZWQgd2l0aCBJRlMgdW5zZXQsIGl0IHdvdWxkIGRpc2FibGUgd29y ZA0KKyMgc3BsaXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRvIGVtcHR5IHZhbHVlLikNCitJRlM9IiAi IgkkYXNfbmwiDQorDQorIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdl IGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4NCitjYXNlICQwIGluICMoKA0KKyAgKltc XC9dKiApIGFzX215c2VsZj0kMCA7Ow0KKyAgKikgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRI X1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lG Uw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgdGVzdCAtciAiJGFzX2Rp ci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJlYWsNCisgIGRvbmUNCitJRlM9JGFz X3NhdmVfSUZTDQorDQorICAgICA7Ow0KK2VzYWMNCisjIFdlIGRpZCBub3QgZmluZCBvdXJzZWx2 ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQnDQorIyBpbiB3aGlj aCBjYXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4gdGhlIHBhdGguDQoraWYgdGVzdCAieCRh c19teXNlbGYiID0geDsgdGhlbg0KKyAgYXNfbXlzZWxmPSQwDQorZmkNCitpZiB0ZXN0ICEgLWYg IiRhc19teXNlbGYiOyB0aGVuDQorICAkYXNfZWNobyAiJGFzX215c2VsZjogZXJyb3I6IGNhbm5v dCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBmaWxlIG5hbWUiID4mMg0KKyAg ZXhpdCAxDQorZmkNCisNCisjIFVuc2V0IHZhcmlhYmxlcyB0aGF0IHdlIGRvIG5vdCBuZWVkIGFu ZCB3aGljaCBjYXVzZSBidWdzIChlLmcuIGluDQorIyBwcmUtMy4wIFVXSU4ga3NoKS4gIEJ1dCBk byBub3QgY2F1c2UgYnVncyBpbiBiYXNoIDIuMDE7IHRoZSAifHwgZXhpdCAxIg0KKyMgc3VwcHJl c3NlcyBhbnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIgbWVzc2FnZSB0aGVyZS4gICcoKCcgY291bGQN CisjIHRyaWdnZXIgYSBidWcgaW4gcGRrc2ggNS4yLjE0Lg0KK2ZvciBhc192YXIgaW4gQkFTSF9F TlYgRU5WIE1BSUwgTUFJTFBBVEgNCitkbyBldmFsIHRlc3QgeFwkeyRhc192YXIrc2V0fSA9IHhz ZXQgXA0KKyAgJiYgKCAodW5zZXQgJGFzX3ZhcikgfHwgZXhpdCAxKSA+L2Rldi9udWxsIDI+JjEg JiYgdW5zZXQgJGFzX3ZhciB8fCA6DQorZG9uZQ0KK1BTMT0nJCAnDQorUFMyPSc+ICcNCitQUzQ9 JysgJw0KKw0KKyMgTkxTIG51aXNhbmNlcy4NCitMQ19BTEw9Qw0KK2V4cG9ydCBMQ19BTEwNCitM QU5HVUFHRT1DDQorZXhwb3J0IExBTkdVQUdFDQorDQorIyBDRFBBVEguDQorKHVuc2V0IENEUEFU SCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSA0KKw0KK2lmIHRlc3QgIngkQ09ORklH X1NIRUxMIiA9IHg7IHRoZW4NCisgIGFzX2JvdXJuZV9jb21wYXRpYmxlPSJpZiB0ZXN0IC1uIFwi XCR7WlNIX1ZFUlNJT04rc2V0fVwiICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRo ZW4gOg0KKyAgZW11bGF0ZSBzaA0KKyAgTlVMTENNRD06DQorICAjIFByZS00LjIgdmVyc2lvbnMg b2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uIFwkezErXCJcJEBcIn0sIHdoaWNoDQorICAjIGlz IGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLg0KKyAgYWxpYXMg LWcgJ1wkezErXCJcJEBcIn0nPSdcIlwkQFwiJw0KKyAgc2V0b3B0IE5PX0dMT0JfU1VCU1QNCitl bHNlDQorICBjYXNlIFxgKHNldCAtbykgMj4vZGV2L251bGxcYCBpbiAjKA0KKyAgKnBvc2l4Kikg Og0KKyAgICBzZXQgLW8gcG9zaXggOzsgIygNCisgICopIDoNCisgICAgIDs7DQorZXNhYw0KK2Zp DQorIg0KKyAgYXNfcmVxdWlyZWQ9ImFzX2ZuX3JldHVybiAoKSB7IChleGl0IFwkMSk7IH0NCith c19mbl9zdWNjZXNzICgpIHsgYXNfZm5fcmV0dXJuIDA7IH0NCithc19mbl9mYWlsdXJlICgpIHsg YXNfZm5fcmV0dXJuIDE7IH0NCithc19mbl9yZXRfc3VjY2VzcyAoKSB7IHJldHVybiAwOyB9DQor YXNfZm5fcmV0X2ZhaWx1cmUgKCkgeyByZXR1cm4gMTsgfQ0KKw0KK2V4aXRjb2RlPTANCithc19m bl9zdWNjZXNzIHx8IHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9zdWNjZXNzIGZhaWxlZC47IH0N Cithc19mbl9mYWlsdXJlICYmIHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9mYWlsdXJlIHN1Y2Nl ZWRlZC47IH0NCithc19mbl9yZXRfc3VjY2VzcyB8fCB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5f cmV0X3N1Y2Nlc3MgZmFpbGVkLjsgfQ0KK2FzX2ZuX3JldF9mYWlsdXJlICYmIHsgZXhpdGNvZGU9 MTsgZWNobyBhc19mbl9yZXRfZmFpbHVyZSBzdWNjZWVkZWQuOyB9DQoraWYgKCBzZXQgeDsgYXNf Zm5fcmV0X3N1Y2Nlc3MgeSAmJiB0ZXN0IHggPSBcIlwkMVwiICk7IHRoZW4gOg0KKw0KK2Vsc2UN CisgIGV4aXRjb2RlPTE7IGVjaG8gcG9zaXRpb25hbCBwYXJhbWV0ZXJzIHdlcmUgbm90IHNhdmVk Lg0KK2ZpDQordGVzdCB4XCRleGl0Y29kZSA9IHgwIHx8IGV4aXQgMSINCisgIGFzX3N1Z2dlc3Rl ZD0iICBhc19saW5lbm9fMT0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19z dWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCIgYXNfbGluZW5vXzFhPVwkTElORU5PDQorICBhc19saW5l bm9fMj0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9JGFz X3N1Z2dlc3RlZCIgYXNfbGluZW5vXzJhPVwkTElORU5PDQorICBldmFsICd0ZXN0IFwieFwkYXNf bGluZW5vXzEnXCRhc19ydW4nXCIgIT0gXCJ4XCRhc19saW5lbm9fMidcJGFzX3J1bidcIiAmJg0K KyAgdGVzdCBcInhcYGV4cHIgXCRhc19saW5lbm9fMSdcJGFzX3J1bicgKyAxXGBcIiA9IFwieFwk YXNfbGluZW5vXzInXCRhc19ydW4nXCInIHx8IGV4aXQgMSINCisgIGlmIChldmFsICIkYXNfcmVx dWlyZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6DQorICBhc19oYXZlX3JlcXVpcmVkPXllcw0KK2Vs c2UNCisgIGFzX2hhdmVfcmVxdWlyZWQ9bm8NCitmaQ0KKyAgaWYgdGVzdCB4JGFzX2hhdmVfcmVx dWlyZWQgPSB4eWVzICYmIChldmFsICIkYXNfc3VnZ2VzdGVkIikgMj4vZGV2L251bGw7IHRoZW4g Og0KKw0KK2Vsc2UNCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCith c19mb3VuZD1mYWxzZQ0KK2ZvciBhc19kaXIgaW4gL2JpbiRQQVRIX1NFUEFSQVRPUi91c3IvYmlu JFBBVEhfU0VQQVJBVE9SJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAt eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgIGFzX2ZvdW5kPToNCisgIGNhc2UgJGFzX2RpciBp biAjKA0KKwkgLyopDQorCSAgIGZvciBhc19iYXNlIGluIHNoIGJhc2gga3NoIHNoNTsgZG8NCisJ ICAgICAjIFRyeSBvbmx5IHNoZWxscyB0aGF0IGV4aXN0LCB0byBzYXZlIHNldmVyYWwgZm9ya3Mu DQorCSAgICAgYXNfc2hlbGw9JGFzX2Rpci8kYXNfYmFzZQ0KKwkgICAgIGlmIHsgdGVzdCAtZiAi JGFzX3NoZWxsIiB8fCB0ZXN0IC1mICIkYXNfc2hlbGwuZXhlIjsgfSAmJg0KKwkJICAgIHsgJGFz X2VjaG8gIiRhc19ib3VybmVfY29tcGF0aWJsZSIiJGFzX3JlcXVpcmVkIiB8IGFzX3J1bj1hICIk YXNfc2hlbGwiOyB9IDI+L2Rldi9udWxsOyB0aGVuIDoNCisgIENPTkZJR19TSEVMTD0kYXNfc2hl bGwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMNCisJCSAgIGlmIHsgJGFzX2VjaG8gIiRhc19ib3VybmVf Y29tcGF0aWJsZSIiJGFzX3N1Z2dlc3RlZCIgfCBhc19ydW49YSAiJGFzX3NoZWxsIjsgfSAyPi9k ZXYvbnVsbDsgdGhlbiA6DQorICBicmVhayAyDQorZmkNCitmaQ0KKwkgICBkb25lOzsNCisgICAg ICAgZXNhYw0KKyAgYXNfZm91bmQ9ZmFsc2UNCitkb25lDQorJGFzX2ZvdW5kIHx8IHsgaWYgeyB0 ZXN0IC1mICIkU0hFTEwiIHx8IHRlc3QgLWYgIiRTSEVMTC5leGUiOyB9ICYmDQorCSAgICAgIHsg JGFzX2VjaG8gIiRhc19ib3VybmVfY29tcGF0aWJsZSIiJGFzX3JlcXVpcmVkIiB8IGFzX3J1bj1h ICIkU0hFTEwiOyB9IDI+L2Rldi9udWxsOyB0aGVuIDoNCisgIENPTkZJR19TSEVMTD0kU0hFTEwg YXNfaGF2ZV9yZXF1aXJlZD15ZXMNCitmaTsgfQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCisNCisg ICAgICBpZiB0ZXN0ICJ4JENPTkZJR19TSEVMTCIgIT0geDsgdGhlbiA6DQorICAjIFdlIGNhbm5v dCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgYQ0KKwkj IG5ldXRyYWxpemF0aW9uIHZhbHVlIGZvciBzaGVsbHMgd2l0aG91dCB1bnNldDsgYW5kIHRoaXMg YWxzbw0KKwkjIHdvcmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBjYW5ub3QgdW5zZXQgbm9uZXhpc3Rl bnQgdmFyaWFibGVzLg0KKwlCQVNIX0VOVj0vZGV2L251bGwNCisJRU5WPS9kZXYvbnVsbA0KKwko dW5zZXQgQkFTSF9FTlYpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBCQVNIX0VOViBFTlYNCisJ ZXhwb3J0IENPTkZJR19TSEVMTA0KKwlleGVjICIkQ09ORklHX1NIRUxMIiAiJGFzX215c2VsZiIg JHsxKyIkQCJ9DQorZmkNCisNCisgICAgaWYgdGVzdCB4JGFzX2hhdmVfcmVxdWlyZWQgPSB4bm87 IHRoZW4gOg0KKyAgJGFzX2VjaG8gIiQwOiBUaGlzIHNjcmlwdCByZXF1aXJlcyBhIHNoZWxsIG1v cmUgbW9kZXJuIHRoYW4gYWxsIg0KKyAgJGFzX2VjaG8gIiQwOiB0aGUgc2hlbGxzIHRoYXQgSSBm b3VuZCBvbiB5b3VyIHN5c3RlbS4iDQorICBpZiB0ZXN0IHgke1pTSF9WRVJTSU9OK3NldH0gPSB4 c2V0IDsgdGhlbg0KKyAgICAkYXNfZWNobyAiJDA6IEluIHBhcnRpY3VsYXIsIHpzaCAkWlNIX1ZF UlNJT04gaGFzIGJ1Z3MgYW5kIHNob3VsZCINCisgICAgJGFzX2VjaG8gIiQwOiBiZSB1cGdyYWRl ZCB0byB6c2ggNC4zLjQgb3IgbGF0ZXIuIg0KKyAgZWxzZQ0KKyAgICAkYXNfZWNobyAiJDA6IFBs ZWFzZSB0ZWxsIGJ1Zy1hdXRvY29uZkBnbnUub3JnIGFib3V0IHlvdXIgc3lzdGVtLA0KKyQwOiBp bmNsdWRpbmcgYW55IGVycm9yIHBvc3NpYmx5IG91dHB1dCBiZWZvcmUgdGhpcw0KKyQwOiBtZXNz YWdlLiBUaGVuIGluc3RhbGwgYSBtb2Rlcm4gc2hlbGwsIG9yIG1hbnVhbGx5IHJ1bg0KKyQwOiB0 aGUgc2NyaXB0IHVuZGVyIHN1Y2ggYSBzaGVsbCBpZiB5b3UgZG8gaGF2ZSBvbmUuIg0KKyAgZmkN CisgIGV4aXQgMQ0KK2ZpDQorZmkNCitmaQ0KK1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9 DQorZXhwb3J0IFNIRUxMDQorIyBVbnNldCBtb3JlIHZhcmlhYmxlcyBrbm93biB0byBpbnRlcmZl cmUgd2l0aCBiZWhhdmlvciBvZiBjb21tb24gdG9vbHMuDQorQ0xJQ09MT1JfRk9SQ0U9IEdSRVBf T1BUSU9OUz0NCit1bnNldCBDTElDT0xPUl9GT1JDRSBHUkVQX09QVElPTlMNCisNCisjIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNNHNoIFNoZWxsIEZ1bmN0aW9ucy4gIyMNCisjIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIGFzX2ZuX3Vuc2V0IFZBUg0KKyMgLS0tLS0tLS0t LS0tLS0tDQorIyBQb3J0YWJseSB1bnNldCBWQVIuDQorYXNfZm5fdW5zZXQgKCkNCit7DQorICB7 IGV2YWwgJDE9OyB1bnNldCAkMTt9DQorfQ0KK2FzX3Vuc2V0PWFzX2ZuX3Vuc2V0DQorDQorIyBh c19mbl9zZXRfc3RhdHVzIFNUQVRVUw0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIFNl dCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2luZy4NCithc19mbl9zZXRfc3RhdHVzICgpDQor ew0KKyAgcmV0dXJuICQxDQorfSAjIGFzX2ZuX3NldF9zdGF0dXMNCisNCisjIGFzX2ZuX2V4aXQg U1RBVFVTDQorIyAtLS0tLS0tLS0tLS0tLS0tLQ0KKyMgRXhpdCB0aGUgc2hlbGwgd2l0aCBTVEFU VVMsIGV2ZW4gaW4gYSAidHJhcCAwIiBvciAic2V0IC1lIiBjb250ZXh0Lg0KK2FzX2ZuX2V4aXQg KCkNCit7DQorICBzZXQgK2UNCisgIGFzX2ZuX3NldF9zdGF0dXMgJDENCisgIGV4aXQgJDENCit9 ICMgYXNfZm5fZXhpdA0KKw0KKyMgYXNfZm5fbWtkaXJfcA0KKyMgLS0tLS0tLS0tLS0tLQ0KKyMg Q3JlYXRlICIkYXNfZGlyIiBhcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHBhcmVudHMgaWYgbmVj ZXNzYXJ5Lg0KK2FzX2ZuX21rZGlyX3AgKCkNCit7DQorDQorICBjYXNlICRhc19kaXIgaW4gIygN CisgIC0qKSBhc19kaXI9Li8kYXNfZGlyOzsNCisgIGVzYWMNCisgIHRlc3QgLWQgIiRhc19kaXIi IHx8IGV2YWwgJGFzX21rZGlyX3AgfHwgew0KKyAgICBhc19kaXJzPQ0KKyAgICB3aGlsZSA6OyBk bw0KKyAgICAgIGNhc2UgJGFzX2RpciBpbiAjKA0KKyAgICAgICpcJyopIGFzX3FkaXI9YCRhc19l Y2hvICIkYXNfZGlyIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7ICMnKA0KKyAgICAgICop IGFzX3FkaXI9JGFzX2Rpcjs7DQorICAgICAgZXNhYw0KKyAgICAgIGFzX2RpcnM9IickYXNfcWRp cicgJGFzX2RpcnMiDQorICAgICAgYXNfZGlyPWAkYXNfZGlybmFtZSAtLSAiJGFzX2RpciIgfHwN CiskYXNfZXhwciBYIiRhc19kaXIiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBc DQorCSBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcDQorCSBYIiRhc19kaXIiIDogJ1hc KC8vXCkkJyBcfCBcDQorCSBYIiRhc19kaXIiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8 fA0KKyRhc19lY2hvIFgiJGFzX2RpciIgfA0KKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlte L11bXi9dKlwvKiQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9c L1wpW14vXS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9c KSQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cKS4qL3sNCisJ ICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICBzLy4qLy4vOyBxJ2ANCisgICAgICB0ZXN0 IC1kICIkYXNfZGlyIiAmJiBicmVhaw0KKyAgICBkb25lDQorICAgIHRlc3QgLXogIiRhc19kaXJz IiB8fCBldmFsICJta2RpciAkYXNfZGlycyINCisgIH0gfHwgdGVzdCAtZCAiJGFzX2RpciIgfHwg YXNfZm5fZXJyb3IgImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19kaXIiDQorDQorDQorfSAj IGFzX2ZuX21rZGlyX3ANCisjIGFzX2ZuX2FwcGVuZCBWQVIgVkFMVUUNCisjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCisjIEFwcGVuZCB0aGUgdGV4dCBpbiBWQUxVRSB0byB0aGUgZW5kIG9mIHRo ZSBkZWZpbml0aW9uIGNvbnRhaW5lZCBpbiBWQVIuIFRha2UNCisjIGFkdmFudGFnZSBvZiBhbnkg c2hlbGwgb3B0aW1pemF0aW9ucyB0aGF0IGFsbG93IGFtb3J0aXplZCBsaW5lYXIgZ3Jvd3RoIG92 ZXINCisjIHJlcGVhdGVkIGFwcGVuZHMsIGluc3RlYWQgb2YgdGhlIHR5cGljYWwgcXVhZHJhdGlj IGdyb3d0aCBwcmVzZW50IGluIG5haXZlDQorIyBpbXBsZW1lbnRhdGlvbnMuDQoraWYgKGV2YWwg ImFzX3Zhcj0xOyBhc192YXIrPTI7IHRlc3QgeFwkYXNfdmFyID0geDEyIikgMj4vZGV2L251bGw7 IHRoZW4gOg0KKyAgZXZhbCAnYXNfZm5fYXBwZW5kICgpDQorICB7DQorICAgIGV2YWwgJDErPVwk Mg0KKyAgfScNCitlbHNlDQorICBhc19mbl9hcHBlbmQgKCkNCisgIHsNCisgICAgZXZhbCAkMT1c JCQxXCQyDQorICB9DQorZmkgIyBhc19mbl9hcHBlbmQNCisNCisjIGFzX2ZuX2FyaXRoIEFSRy4u Lg0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBQZXJmb3JtIGFyaXRobWV0aWMgZXZhbHVhdGlv biBvbiB0aGUgQVJHcywgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gdGhlDQorIyBnbG9iYWwgJGFz X3ZhbC4gVGFrZSBhZHZhbnRhZ2Ugb2Ygc2hlbGxzIHRoYXQgY2FuIGF2b2lkIGZvcmtzLiBUaGUg YXJndW1lbnRzDQorIyBtdXN0IGJlIHBvcnRhYmxlIGFjcm9zcyAkKCgpKSBhbmQgZXhwci4NCitp ZiAoZXZhbCAidGVzdCBcJCgoIDEgKyAxICkpID0gMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoNCisg IGV2YWwgJ2FzX2ZuX2FyaXRoICgpDQorICB7DQorICAgIGFzX3ZhbD0kKCggJCogKSkNCisgIH0n DQorZWxzZQ0KKyAgYXNfZm5fYXJpdGggKCkNCisgIHsNCisgICAgYXNfdmFsPWBleHByICIkQCIg fHwgdGVzdCAkPyAtZXEgMWANCisgIH0NCitmaSAjIGFzX2ZuX2FyaXRoDQorDQorDQorIyBhc19m bl9lcnJvciBFUlJPUiBbTElORU5PIExPR19GRF0NCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KKyMgT3V0cHV0ICJgYmFzZW5hbWUgJDBgOiBlcnJvcjogRVJST1IiIHRvIHN0 ZGVyci4gSWYgTElORU5PIGFuZCBMT0dfRkQgYXJlDQorIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQg dGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlDQor IyBzY3JpcHQgd2l0aCBzdGF0dXMgJD8sIHVzaW5nIDEgaWYgdGhhdCB3YXMgMC4NCithc19mbl9l cnJvciAoKQ0KK3sNCisgIGFzX3N0YXR1cz0kPzsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFz X3N0YXR1cz0xDQorICBpZiB0ZXN0ICIkMyI7IHRoZW4NCisgICAgYXNfbGluZW5vPSR7YXNfbGlu ZW5vLSIkMiJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFj aw0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDEi ID4mJDMNCisgIGZpDQorICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDEiID4mMg0KKyAgYXNf Zm5fZXhpdCAkYXNfc3RhdHVzDQorfSAjIGFzX2ZuX2Vycm9yDQorDQoraWYgZXhwciBhIDogJ1wo YVwpJyA+L2Rldi9udWxsIDI+JjEgJiYNCisgICB0ZXN0ICJYYGV4cHIgMDAwMDEgOiAnLipcKC4u LlwpJ2AiID0gWDAwMTsgdGhlbg0KKyAgYXNfZXhwcj1leHByDQorZWxzZQ0KKyAgYXNfZXhwcj1m YWxzZQ0KK2ZpDQorDQoraWYgKGJhc2VuYW1lIC0tIC8pID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0 ICJYYGJhc2VuYW1lIC0tIC8gMj4mMWAiID0gIlgvIjsgdGhlbg0KKyAgYXNfYmFzZW5hbWU9YmFz ZW5hbWUNCitlbHNlDQorICBhc19iYXNlbmFtZT1mYWxzZQ0KK2ZpDQorDQoraWYgKGFzX2Rpcj1g ZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJYJGFzX2RpciIgPSBYLykgPi9kZXYvbnVsbCAyPiYxOyB0 aGVuDQorICBhc19kaXJuYW1lPWRpcm5hbWUNCitlbHNlDQorICBhc19kaXJuYW1lPWZhbHNlDQor ZmkNCisNCithc19tZT1gJGFzX2Jhc2VuYW1lIC0tICIkMCIgfHwNCiskYXNfZXhwciBYLyIkMCIg OiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXA0KKwkgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwN CisJIFgiJDAiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fA0KKyRhc19lY2hvIFgvIiQw IiB8DQorICAgIHNlZCAnL14uKlwvXChbXi9dW14vXSpcKVwvKiQvew0KKwkgICAgcy8vXDEvDQor CSAgICBxDQorCSAgfQ0KKwkgIC9eWFwvXChcL1wvXCkkL3sNCisJICAgIHMvL1wxLw0KKwkgICAg cQ0KKwkgIH0NCisJICAvXlhcL1woXC9cKS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkg IH0NCisJICBzLy4qLy4vOyBxJ2ANCisNCisjIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3Rl ciBSYW5nZXMuDQorYXNfY3JfbGV0dGVycz0nYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonDQor YXNfY3JfTEVUVEVSUz0nQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonDQorYXNfY3JfTGV0dGVy cz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTDQorYXNfY3JfZGlnaXRzPScwMTIzNDU2Nzg5 Jw0KK2FzX2NyX2FsbnVtPSRhc19jcl9MZXR0ZXJzJGFzX2NyX2RpZ2l0cw0KKw0KKw0KKyAgYXNf bGluZW5vXzE9JExJTkVOTyBhc19saW5lbm9fMWE9JExJTkVOTw0KKyAgYXNfbGluZW5vXzI9JExJ TkVOTyBhc19saW5lbm9fMmE9JExJTkVOTw0KKyAgZXZhbCAndGVzdCAieCRhc19saW5lbm9fMSck YXNfcnVuJyIgIT0gIngkYXNfbGluZW5vXzInJGFzX3J1biciICYmDQorICB0ZXN0ICJ4YGV4cHIg JGFzX2xpbmVub18xJyRhc19ydW4nICsgMWAiID0gIngkYXNfbGluZW5vXzInJGFzX3J1biciJyB8 fCB7DQorICAjIEJsYW1lIExlZSBFLiBNY01haG9uICgxOTMxLTE5ODkpIGZvciBzZWQncyBzeW50 YXguICA6LSkNCisgIHNlZCAtbiAnDQorICAgIHANCisgICAgL1skXUxJTkVOTy89DQorICAnIDwk YXNfbXlzZWxmIHwNCisgICAgc2VkICcNCisgICAgICBzL1skXUxJTkVOTy4qLyYtLw0KKyAgICAg IHQgbGluZW5vDQorICAgICAgYg0KKyAgICAgIDpsaW5lbm8NCisgICAgICBODQorICAgICAgOmxv b3ANCisgICAgICBzL1skXUxJTkVOT1woW14nJGFzX2NyX2FsbnVtJ19dLipcblwpXCguKlwpL1wy XDFcMi8NCisgICAgICB0IGxvb3ANCisgICAgICBzLy1cbi4qLy8NCisgICAgJyA+JGFzX21lLmxp bmVubyAmJg0KKyAgY2htb2QgK3ggIiRhc19tZS5saW5lbm8iIHx8DQorICAgIHsgJGFzX2VjaG8g IiRhc19tZTogZXJyb3I6IGNhbm5vdCBjcmVhdGUgJGFzX21lLmxpbmVubzsgcmVydW4gd2l0aCBh IFBPU0lYIHNoZWxsIiA+JjI7IGFzX2ZuX2V4aXQgMTsgfQ0KKw0KKyAgIyBEb24ndCB0cnkgdG8g ZXhlYyBhcyBpdCBjaGFuZ2VzICRbMF0sIGNhdXNpbmcgYWxsIHNvcnQgb2YgcHJvYmxlbXMNCisg ICMgKHRoZSBkaXJuYW1lIG9mICRbMF0gaXMgbm90IHRoZSBwbGFjZSB3aGVyZSB3ZSBtaWdodCBm aW5kIHRoZQ0KKyAgIyBvcmlnaW5hbCBhbmQgc28gb24uICBBdXRvY29uZiBpcyBlc3BlY2lhbGx5 IHNlbnNpdGl2ZSB0byB0aGlzKS4NCisgIC4gIi4vJGFzX21lLmxpbmVubyINCisgICMgRXhpdCBz dGF0dXMgaXMgdGhhdCBvZiB0aGUgbGFzdCBjb21tYW5kLg0KKyAgZXhpdA0KK30NCisNCitFQ0hP X0M9IEVDSE9fTj0gRUNIT19UPQ0KK2Nhc2UgYGVjaG8gLW4geGAgaW4gIygoKCgoDQorLW4qKQ0K KyAgY2FzZSBgZWNobyAneHlcYydgIGluDQorICAqYyopIEVDSE9fVD0nCSc7OwkjIEVDSE9fVCBp cyBzaW5nbGUgdGFiIGNoYXJhY3Rlci4NCisgIHh5KSAgRUNIT19DPSdcYyc7Ow0KKyAgKikgICBl Y2hvIGBlY2hvIGtzaDg4IGJ1ZyBvbiBBSVggNi4xYCA+IC9kZXYvbnVsbA0KKyAgICAgICBFQ0hP X1Q9JwknOzsNCisgIGVzYWM7Ow0KKyopDQorICBFQ0hPX049Jy1uJzs7DQorZXNhYw0KKw0KK3Jt IC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlDQoraWYgdGVzdCAtZCBjb25mJCQuZGly OyB0aGVuDQorICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5maWxlDQorZWxzZQ0KKyAgcm0gLWYg Y29uZiQkLmRpcg0KKyAgbWtkaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbA0KK2ZpDQoraWYgKGVj aG8gPmNvbmYkJC5maWxlKSAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgaWYgbG4gLXMgY29uZiQkLmZp bGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuDQorICAgIGFzX2xuX3M9J2xuIC1zJw0KKyAgICAj IC4uLiBidXQgdGhlcmUgYXJlIHR3byBnb3RjaGFzOg0KKyAgICAjIDEpIE9uIE1TWVMsIGJvdGgg YGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWlsLg0KKyAgICAjIDIpIERKR1BQ IDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7IGBsbiAtcycgY3JlYXRlcyBhIHdyYXBwZXIgZXhlY3V0 YWJsZS4NCisgICAgIyBJbiBib3RoIGNhc2VzLCB3ZSBoYXZlIHRvIGRlZmF1bHQgdG8gYGNwIC1w Jy4NCisgICAgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0 ICEgLWYgY29uZiQkLmV4ZSB8fA0KKyAgICAgIGFzX2xuX3M9J2NwIC1wJw0KKyAgZWxpZiBsbiBj b25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4NCisgICAgYXNfbG5fcz1sbg0KKyAg ZWxzZQ0KKyAgICBhc19sbl9zPSdjcCAtcCcNCisgIGZpDQorZWxzZQ0KKyAgYXNfbG5fcz0nY3Ag LXAnDQorZmkNCitybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxl IGNvbmYkJC5maWxlDQorcm1kaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbA0KKw0KK2lmIG1rZGly IC1wIC4gMj4vZGV2L251bGw7IHRoZW4NCisgIGFzX21rZGlyX3A9J21rZGlyIC1wICIkYXNfZGly IicNCitlbHNlDQorICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIgLi8tcA0KKyAgYXNfbWtkaXJfcD1m YWxzZQ0KK2ZpDQorDQoraWYgdGVzdCAteCAvID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgYXNf dGVzdF94PSd0ZXN0IC14Jw0KK2Vsc2UNCisgIGlmIGxzIC1kTCAvID4vZGV2L251bGwgMj4mMTsg dGhlbg0KKyAgICBhc19sc19MX29wdGlvbj1MDQorICBlbHNlDQorICAgIGFzX2xzX0xfb3B0aW9u PQ0KKyAgZmkNCisgIGFzX3Rlc3RfeD0nDQorICAgIGV2YWwgc2ggLWMgJ1wnJw0KKyAgICAgIGlm IHRlc3QgLWQgIiQxIjsgdGhlbg0KKwl0ZXN0IC1kICIkMS8uIjsNCisgICAgICBlbHNlDQorCWNh c2UgJDEgaW4gIygNCisJLSopc2V0ICIuLyQxIjs7DQorCWVzYWM7DQorCWNhc2UgYGxzIC1sZCck YXNfbHNfTF9vcHRpb24nICIkMSIgMj4vZGV2L251bGxgIGluICMoKA0KKwk/Pz9bc3hdKik6Ozsq KWZhbHNlOztlc2FjO2ZpDQorICAgICdcJycgc2gNCisgICcNCitmaQ0KK2FzX2V4ZWN1dGFibGVf cD0kYXNfdGVzdF94DQorDQorIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBh IHZhbGlkIENQUCBuYW1lLg0KK2FzX3RyX2NwcD0iZXZhbCBzZWQgJ3klKiRhc19jcl9sZXR0ZXJz JVAkYXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciDQorDQorIyBTZWQgZXhw cmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuDQorYXNf dHJfc2g9ImV2YWwgc2VkICd5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyINCisNCisN CitleGVjIDc8JjAgPC9kZXYvbnVsbCA2PiYxDQorDQorIyBOYW1lIG9mIHRoZSBob3N0Lg0KKyMg aG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChTVlIzLjIsIExpbnV4KSByZXR1cm5zIGEgYm9ndXMg ZXhpdCBzdGF0dXMsDQorIyBzbyB1bmFtZSBnZXRzIHJ1biB0b28uDQorYWNfaG9zdG5hbWU9YCho b3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgDQorDQorIw0KKyMgSW5p dGlhbGl6YXRpb25zLg0KKyMNCithY19kZWZhdWx0X3ByZWZpeD0vdXNyL2xvY2FsDQorYWNfY2xl YW5fZmlsZXM9DQorYWNfY29uZmlnX2xpYm9ial9kaXI9Lg0KK0xJQk9CSlM9DQorY3Jvc3NfY29t cGlsaW5nPW5vDQorc3ViZGlycz0NCitNRkxBR1M9DQorTUFLRUZMQUdTPQ0KKw0KKyMgSWRlbnRp dHkgb2YgdGhpcyBwYWNrYWdlLg0KK1BBQ0tBR0VfTkFNRT0nbmV3bGliJw0KK1BBQ0tBR0VfVEFS TkFNRT0nbmV3bGliJw0KK1BBQ0tBR0VfVkVSU0lPTj0nMS4xOS4wJw0KK1BBQ0tBR0VfU1RSSU5H PSduZXdsaWIgMS4xOS4wJw0KK1BBQ0tBR0VfQlVHUkVQT1JUPScnDQorUEFDS0FHRV9VUkw9JycN CisNCithY191bmlxdWVfZmlsZT0iaXNhdHR5LmMiDQorYWNfc3Vic3RfdmFycz0nTFRMSUJPQkpT DQorTElCT0JKUw0KK3N5c19kaXINCittYWNoaW5lX2Rpcg0KK2xpYm1fbWFjaGluZV9kaXINCits cGZ4DQorYWV4dA0KK29leHQNCitPQkpFWFQNCitVU0VfTElCVE9PTF9GQUxTRQ0KK1VTRV9MSUJU T09MX1RSVUUNCitFTElYX0xFVkVMXzRfRkFMU0UNCitFTElYX0xFVkVMXzRfVFJVRQ0KK0VMSVhf TEVWRUxfM19GQUxTRQ0KK0VMSVhfTEVWRUxfM19UUlVFDQorRUxJWF9MRVZFTF8yX0ZBTFNFDQor RUxJWF9MRVZFTF8yX1RSVUUNCitFTElYX0xFVkVMXzFfRkFMU0UNCitFTElYX0xFVkVMXzFfVFJV RQ0KK0VMSVhfTEVWRUxfMF9GQUxTRQ0KK0VMSVhfTEVWRUxfMF9UUlVFDQorTERGTEFHUw0KK05P X0lOQ0xVREVfTElTVA0KK05FV0xJQl9DRkxBR1MNCitDQ0FTRkxBR1MNCitDQ0FTDQorTUFJTlQN CitNQUlOVEFJTkVSX01PREVfRkFMU0UNCitNQUlOVEFJTkVSX01PREVfVFJVRQ0KK1JFQURFTEYN CitSQU5MSUINCitBUg0KK0FTDQorYW1fX2Zhc3RkZXBDQ19GQUxTRQ0KK2FtX19mYXN0ZGVwQ0Nf VFJVRQ0KK0NDREVQTU9ERQ0KK0FNREVQQkFDS1NMQVNIDQorQU1ERVBfRkFMU0UNCitBTURFUF9U UlVFDQorYW1fX3F1b3RlDQorYW1fX2luY2x1ZGUNCitERVBESVINCitDQw0KK2FtX191bnRhcg0K K2FtX190YXINCitBTVRBUg0KK2FtX19sZWFkaW5nX2RvdA0KK1NFVF9NQUtFDQorQVdLDQorbWtk aXJfcA0KK0lOU1RBTExfU1RSSVBfUFJPR1JBTQ0KK1NUUklQDQoraW5zdGFsbF9zaA0KK01BS0VJ TkZPDQorQVVUT0hFQURFUg0KK0FVVE9NQUtFDQorQVVUT0NPTkYNCitBQ0xPQ0FMDQorVkVSU0lP Tg0KK1BBQ0tBR0UNCitDWUdQQVRIX1cNCitJTlNUQUxMX0RBVEENCitJTlNUQUxMX1NDUklQVA0K K0lOU1RBTExfUFJPR1JBTQ0KK2hvc3Rfb3MNCitob3N0X3ZlbmRvcg0KK2hvc3RfY3B1DQoraG9z dA0KK2J1aWxkX29zDQorYnVpbGRfdmVuZG9yDQorYnVpbGRfY3B1DQorYnVpbGQNCituZXdsaWJf YmFzZWRpcg0KK01BWV9TVVBQTFlfU1lTQ0FMTFNfRkFMU0UNCitNQVlfU1VQUExZX1NZU0NBTExT X1RSVUUNCit0YXJnZXRfYWxpYXMNCitob3N0X2FsaWFzDQorYnVpbGRfYWxpYXMNCitMSUJTDQor RUNIT19UDQorRUNIT19ODQorRUNIT19DDQorREVGUw0KK21hbmRpcg0KK2xvY2FsZWRpcg0KK2xp YmRpcg0KK3BzZGlyDQorcGRmZGlyDQorZHZpZGlyDQoraHRtbGRpcg0KK2luZm9kaXINCitkb2Nk aXINCitvbGRpbmNsdWRlZGlyDQoraW5jbHVkZWRpcg0KK2xvY2Fsc3RhdGVkaXINCitzaGFyZWRz dGF0ZWRpcg0KK3N5c2NvbmZkaXINCitkYXRhZGlyDQorZGF0YXJvb3RkaXINCitsaWJleGVjZGly DQorc2JpbmRpcg0KK2JpbmRpcg0KK3Byb2dyYW1fdHJhbnNmb3JtX25hbWUNCitwcmVmaXgNCitl eGVjX3ByZWZpeA0KK1BBQ0tBR0VfVVJMDQorUEFDS0FHRV9CVUdSRVBPUlQNCitQQUNLQUdFX1NU UklORw0KK1BBQ0tBR0VfVkVSU0lPTg0KK1BBQ0tBR0VfVEFSTkFNRQ0KK1BBQ0tBR0VfTkFNRQ0K K1BBVEhfU0VQQVJBVE9SDQorU0hFTEwnDQorYWNfc3Vic3RfZmlsZXM9JycNCithY191c2VyX29w dHM9Jw0KK2VuYWJsZV9vcHRpb25fY2hlY2tpbmcNCitlbmFibGVfbXVsdGlsaWINCitlbmFibGVf dGFyZ2V0X29wdHNwYWNlDQorZW5hYmxlX21hbGxvY19kZWJ1Z2dpbmcNCitlbmFibGVfbmV3bGli X211bHRpdGhyZWFkDQorZW5hYmxlX25ld2xpYl9pY29udg0KK2VuYWJsZV9uZXdsaWJfZWxpeF9s ZXZlbA0KK2VuYWJsZV9uZXdsaWJfaW9fZmxvYXQNCitlbmFibGVfbmV3bGliX3N1cHBsaWVkX3N5 c2NhbGxzDQorZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcNCitlbmFibGVfbWFpbnRhaW5lcl9t b2RlDQorJw0KKyAgICAgIGFjX3ByZWNpb3VzX3ZhcnM9J2J1aWxkX2FsaWFzDQoraG9zdF9hbGlh cw0KK3RhcmdldF9hbGlhcw0KK0NDQVMNCitDQ0FTRkxBR1MnDQorDQorDQorIyBJbml0aWFsaXpl IHNvbWUgdmFyaWFibGVzIHNldCBieSBvcHRpb25zLg0KK2FjX2luaXRfaGVscD0NCithY19pbml0 X3ZlcnNpb249ZmFsc2UNCithY191bnJlY29nbml6ZWRfb3B0cz0NCithY191bnJlY29nbml6ZWRf c2VwPQ0KKyMgVGhlIHZhcmlhYmxlcyBoYXZlIHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBvcHRpb25z LCB3aXRoDQorIyBkYXNoZXMgY2hhbmdlZCB0byB1bmRlcmxpbmVzLg0KK2NhY2hlX2ZpbGU9L2Rl di9udWxsDQorZXhlY19wcmVmaXg9Tk9ORQ0KK25vX2NyZWF0ZT0NCitub19yZWN1cnNpb249DQor cHJlZml4PU5PTkUNCitwcm9ncmFtX3ByZWZpeD1OT05FDQorcHJvZ3JhbV9zdWZmaXg9Tk9ORQ0K K3Byb2dyYW1fdHJhbnNmb3JtX25hbWU9cyx4LHgsDQorc2lsZW50PQ0KK3NpdGU9DQorc3JjZGly PQ0KK3ZlcmJvc2U9DQoreF9pbmNsdWRlcz1OT05FDQoreF9saWJyYXJpZXM9Tk9ORQ0KKw0KKyMg SW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBvcHRpb25zLg0KKyMgVGhlc2UgYXJlIGxlZnQgdW5leHBh bmRlZCBzbyB1c2VycyBjYW4gIm1ha2UgaW5zdGFsbCBleGVjX3ByZWZpeD0vZm9vIg0KKyMgYW5k IGFsbCB0aGUgdmFyaWFibGVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGJlIGJhc2VkIG9uIGV4ZWNf cHJlZml4DQorIyBieSBkZWZhdWx0IHdpbGwgYWN0dWFsbHkgY2hhbmdlLg0KKyMgVXNlIGJyYWNl cyBpbnN0ZWFkIG9mIHBhcmVucyBiZWNhdXNlIHNoLCBwZXJsLCBldGMuIGFsc28gYWNjZXB0IHRo ZW0uDQorIyAoVGhlIGxpc3QgZm9sbG93cyB0aGUgc2FtZSBvcmRlciBhcyB0aGUgR05VIENvZGlu ZyBTdGFuZGFyZHMuKQ0KK2JpbmRpcj0nJHtleGVjX3ByZWZpeH0vYmluJw0KK3NiaW5kaXI9JyR7 ZXhlY19wcmVmaXh9L3NiaW4nDQorbGliZXhlY2Rpcj0nJHtleGVjX3ByZWZpeH0vbGliZXhlYycN CitkYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3NoYXJlJw0KK2RhdGFkaXI9JyR7ZGF0YXJvb3RkaXJ9 Jw0KK3N5c2NvbmZkaXI9JyR7cHJlZml4fS9ldGMnDQorc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4 fS9jb20nDQorbG9jYWxzdGF0ZWRpcj0nJHtwcmVmaXh9L3ZhcicNCitpbmNsdWRlZGlyPScke3By ZWZpeH0vaW5jbHVkZScNCitvbGRpbmNsdWRlZGlyPScvdXNyL2luY2x1ZGUnDQorZG9jZGlyPSck e2RhdGFyb290ZGlyfS9kb2MvJHtQQUNLQUdFX1RBUk5BTUV9Jw0KK2luZm9kaXI9JyR7ZGF0YXJv b3RkaXJ9L2luZm8nDQoraHRtbGRpcj0nJHtkb2NkaXJ9Jw0KK2R2aWRpcj0nJHtkb2NkaXJ9Jw0K K3BkZmRpcj0nJHtkb2NkaXJ9Jw0KK3BzZGlyPScke2RvY2Rpcn0nDQorbGliZGlyPScke2V4ZWNf cHJlZml4fS9saWInDQorbG9jYWxlZGlyPScke2RhdGFyb290ZGlyfS9sb2NhbGUnDQorbWFuZGly PScke2RhdGFyb290ZGlyfS9tYW4nDQorDQorYWNfcHJldj0NCithY19kYXNoZGFzaD0NCitmb3Ig YWNfb3B0aW9uDQorZG8NCisgICMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1 bWVudCwgYXNzaWduIGl0Lg0KKyAgaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuDQorICAgIGV2 YWwgJGFjX3ByZXY9XCRhY19vcHRpb24NCisgICAgYWNfcHJldj0NCisgICAgY29udGludWUNCisg IGZpDQorDQorICBjYXNlICRhY19vcHRpb24gaW4NCisgICo9KikJYWNfb3B0YXJnPWBleHByICJY JGFjX29wdGlvbiIgOiAnW149XSo9XCguKlwpJ2AgOzsNCisgICopCWFjX29wdGFyZz15ZXMgOzsN CisgIGVzYWMNCisNCisgICMgQWNjZXB0IHRoZSBpbXBvcnRhbnQgQ3lnbnVzIGNvbmZpZ3VyZSBv cHRpb25zLCBzbyB3ZSBjYW4gZGlhZ25vc2UgdHlwb3MuDQorDQorICBjYXNlICRhY19kYXNoZGFz aCRhY19vcHRpb24gaW4NCisgIC0tKQ0KKyAgICBhY19kYXNoZGFzaD15ZXMgOzsNCisNCisgIC1i aW5kaXIgfCAtLWJpbmRpciB8IC0tYmluZGkgfCAtLWJpbmQgfCAtLWJpbiB8IC0tYmkpDQorICAg IGFjX3ByZXY9YmluZGlyIDs7DQorICAtYmluZGlyPSogfCAtLWJpbmRpcj0qIHwgLS1iaW5kaT0q IHwgLS1iaW5kPSogfCAtLWJpbj0qIHwgLS1iaT0qKQ0KKyAgICBiaW5kaXI9JGFjX29wdGFyZyA7 Ow0KKw0KKyAgLWJ1aWxkIHwgLS1idWlsZCB8IC0tYnVpbCB8IC0tYnVpIHwgLS1idSkNCisgICAg YWNfcHJldj1idWlsZF9hbGlhcyA7Ow0KKyAgLWJ1aWxkPSogfCAtLWJ1aWxkPSogfCAtLWJ1aWw9 KiB8IC0tYnVpPSogfCAtLWJ1PSopDQorICAgIGJ1aWxkX2FsaWFzPSRhY19vcHRhcmcgOzsNCisN CisgIC1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWwgfCAtLWNhY2hlLWZp IFwNCisgIHwgLS1jYWNoZS1mIHwgLS1jYWNoZS0gfCAtLWNhY2hlIHwgLS1jYWNoIHwgLS1jYWMg fCAtLWNhIHwgLS1jKQ0KKyAgICBhY19wcmV2PWNhY2hlX2ZpbGUgOzsNCisgIC1jYWNoZS1maWxl PSogfCAtLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXA0KKyAg fCAtLWNhY2hlLWY9KiB8IC0tY2FjaGUtPSogfCAtLWNhY2hlPSogfCAtLWNhY2g9KiB8IC0tY2Fj PSogfCAtLWNhPSogfCAtLWM9KikNCisgICAgY2FjaGVfZmlsZT0kYWNfb3B0YXJnIDs7DQorDQor ICAtLWNvbmZpZy1jYWNoZSB8IC1DKQ0KKyAgICBjYWNoZV9maWxlPWNvbmZpZy5jYWNoZSA7Ow0K Kw0KKyAgLWRhdGFkaXIgfCAtLWRhdGFkaXIgfCAtLWRhdGFkaSB8IC0tZGF0YWQpDQorICAgIGFj X3ByZXY9ZGF0YWRpciA7Ow0KKyAgLWRhdGFkaXI9KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9 KiB8IC0tZGF0YWQ9KikNCisgICAgZGF0YWRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtZGF0YXJv b3RkaXIgfCAtLWRhdGFyb290ZGlyIHwgLS1kYXRhcm9vdGRpIHwgLS1kYXRhcm9vdGQgfCAtLWRh dGFyb290IFwNCisgIHwgLS1kYXRhcm9vIHwgLS1kYXRhcm8gfCAtLWRhdGFyKQ0KKyAgICBhY19w cmV2PWRhdGFyb290ZGlyIDs7DQorICAtZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaXI9KiB8 IC0tZGF0YXJvb3RkaT0qIHwgLS1kYXRhcm9vdGQ9KiBcDQorICB8IC0tZGF0YXJvb3Q9KiB8IC0t ZGF0YXJvbz0qIHwgLS1kYXRhcm89KiB8IC0tZGF0YXI9KikNCisgICAgZGF0YXJvb3RkaXI9JGFj X29wdGFyZyA7Ow0KKw0KKyAgLWRpc2FibGUtKiB8IC0tZGlzYWJsZS0qKQ0KKyAgICBhY191c2Vy b3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qZGlzYWJsZS1cKC4qXCknYA0KKyAgICAjIFJl amVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuDQorICAg IGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxs ICYmDQorICAgICAgYXNfZm5fZXJyb3IgImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9w dCINCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0DQorICAgIGFjX3VzZXJvcHQ9YCRh c19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2ANCisgICAgY2FzZSAkYWNf dXNlcl9vcHRzIGluDQorICAgICAgKiINCisiZW5hYmxlXyRhY191c2Vyb3B0Ig0KKyIqKSA7Ow0K KyAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNf dW5yZWNvZ25pemVkX3NlcC0tZGlzYWJsZS0kYWNfdXNlcm9wdF9vcmlnIg0KKwkgYWNfdW5yZWNv Z25pemVkX3NlcD0nLCAnOzsNCisgICAgZXNhYw0KKyAgICBldmFsIGVuYWJsZV8kYWNfdXNlcm9w dD1ubyA7Ow0KKw0KKyAgLWRvY2RpciB8IC0tZG9jZGlyIHwgLS1kb2NkaSB8IC0tZG9jIHwgLS1k bykNCisgICAgYWNfcHJldj1kb2NkaXIgOzsNCisgIC1kb2NkaXI9KiB8IC0tZG9jZGlyPSogfCAt LWRvY2RpPSogfCAtLWRvYz0qIHwgLS1kbz0qKQ0KKyAgICBkb2NkaXI9JGFjX29wdGFyZyA7Ow0K Kw0KKyAgLWR2aWRpciB8IC0tZHZpZGlyIHwgLS1kdmlkaSB8IC0tZHZpZCB8IC0tZHZpIHwgLS1k dikNCisgICAgYWNfcHJldj1kdmlkaXIgOzsNCisgIC1kdmlkaXI9KiB8IC0tZHZpZGlyPSogfCAt LWR2aWRpPSogfCAtLWR2aWQ9KiB8IC0tZHZpPSogfCAtLWR2PSopDQorICAgIGR2aWRpcj0kYWNf b3B0YXJnIDs7DQorDQorICAtZW5hYmxlLSogfCAtLWVuYWJsZS0qKQ0KKyAgICBhY191c2Vyb3B0 PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qZW5hYmxlLVwoW149XSpcKSdgDQorICAgICMgUmVq ZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4NCisgICAg ZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwg JiYNCisgICAgICBhc19mbl9lcnJvciAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0 Ig0KKyAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQNCisgICAgYWNfdXNlcm9wdD1gJGFz X2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYA0KKyAgICBjYXNlICRhY191 c2VyX29wdHMgaW4NCisgICAgICAqIg0KKyJlbmFibGVfJGFjX3VzZXJvcHQiDQorIiopIDs7DQor ICAgICAgKikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191 bnJlY29nbml6ZWRfc2VwLS1lbmFibGUtJGFjX3VzZXJvcHRfb3JpZyINCisJIGFjX3VucmVjb2du aXplZF9zZXA9JywgJzs7DQorICAgIGVzYWMNCisgICAgZXZhbCBlbmFibGVfJGFjX3VzZXJvcHQ9 XCRhY19vcHRhcmcgOzsNCisNCisgIC1leGVjLXByZWZpeCB8IC0tZXhlY19wcmVmaXggfCAtLWV4 ZWMtcHJlZml4IHwgLS1leGVjLXByZWZpIFwNCisgIHwgLS1leGVjLXByZWYgfCAtLWV4ZWMtcHJl IHwgLS1leGVjLXByIHwgLS1leGVjLXAgfCAtLWV4ZWMtIFwNCisgIHwgLS1leGVjIHwgLS1leGUg fCAtLWV4KQ0KKyAgICBhY19wcmV2PWV4ZWNfcHJlZml4IDs7DQorICAtZXhlYy1wcmVmaXg9KiB8 IC0tZXhlY19wcmVmaXg9KiB8IC0tZXhlYy1wcmVmaXg9KiB8IC0tZXhlYy1wcmVmaT0qIFwNCisg IHwgLS1leGVjLXByZWY9KiB8IC0tZXhlYy1wcmU9KiB8IC0tZXhlYy1wcj0qIHwgLS1leGVjLXA9 KiB8IC0tZXhlYy09KiBcDQorICB8IC0tZXhlYz0qIHwgLS1leGU9KiB8IC0tZXg9KikNCisgICAg ZXhlY19wcmVmaXg9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWdhcyB8IC0tZ2FzIHwgLS1nYSB8IC0t ZykNCisgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aC1nYXMuDQorICAgIHdpdGhfZ2FzPXllcyA7 Ow0KKw0KKyAgLWhlbHAgfCAtLWhlbHAgfCAtLWhlbCB8IC0taGUgfCAtaCkNCisgICAgYWNfaW5p dF9oZWxwPWxvbmcgOzsNCisgIC1oZWxwPXIqIHwgLS1oZWxwPXIqIHwgLS1oZWw9ciogfCAtLWhl PXIqIHwgLWhyKikNCisgICAgYWNfaW5pdF9oZWxwPXJlY3Vyc2l2ZSA7Ow0KKyAgLWhlbHA9cyog fCAtLWhlbHA9cyogfCAtLWhlbD1zKiB8IC0taGU9cyogfCAtaHMqKQ0KKyAgICBhY19pbml0X2hl bHA9c2hvcnQgOzsNCisNCisgIC1ob3N0IHwgLS1ob3N0IHwgLS1ob3MgfCAtLWhvKQ0KKyAgICBh Y19wcmV2PWhvc3RfYWxpYXMgOzsNCisgIC1ob3N0PSogfCAtLWhvc3Q9KiB8IC0taG9zPSogfCAt LWhvPSopDQorICAgIGhvc3RfYWxpYXM9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWh0bWxkaXIgfCAt LWh0bWxkaXIgfCAtLWh0bWxkaSB8IC0taHRtbGQgfCAtLWh0bWwgfCAtLWh0bSB8IC0taHQpDQor ICAgIGFjX3ByZXY9aHRtbGRpciA7Ow0KKyAgLWh0bWxkaXI9KiB8IC0taHRtbGRpcj0qIHwgLS1o dG1sZGk9KiB8IC0taHRtbGQ9KiB8IC0taHRtbD0qIHwgLS1odG09KiBcDQorICB8IC0taHQ9KikN CisgICAgaHRtbGRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtaW5jbHVkZWRpciB8IC0taW5jbHVk ZWRpciB8IC0taW5jbHVkZWRpIHwgLS1pbmNsdWRlZCB8IC0taW5jbHVkZSBcDQorICB8IC0taW5j bHVkIHwgLS1pbmNsdSB8IC0taW5jbCB8IC0taW5jKQ0KKyAgICBhY19wcmV2PWluY2x1ZGVkaXIg OzsNCisgIC1pbmNsdWRlZGlyPSogfCAtLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpPSogfCAt LWluY2x1ZGVkPSogfCAtLWluY2x1ZGU9KiBcDQorICB8IC0taW5jbHVkPSogfCAtLWluY2x1PSog fCAtLWluY2w9KiB8IC0taW5jPSopDQorICAgIGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0K KyAgLWluZm9kaXIgfCAtLWluZm9kaXIgfCAtLWluZm9kaSB8IC0taW5mb2QgfCAtLWluZm8gfCAt LWluZikNCisgICAgYWNfcHJldj1pbmZvZGlyIDs7DQorICAtaW5mb2Rpcj0qIHwgLS1pbmZvZGly PSogfCAtLWluZm9kaT0qIHwgLS1pbmZvZD0qIHwgLS1pbmZvPSogfCAtLWluZj0qKQ0KKyAgICBp bmZvZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1saWJkaXIgfCAtLWxpYmRpciB8IC0tbGliZGkg fCAtLWxpYmQpDQorICAgIGFjX3ByZXY9bGliZGlyIDs7DQorICAtbGliZGlyPSogfCAtLWxpYmRp cj0qIHwgLS1saWJkaT0qIHwgLS1saWJkPSopDQorICAgIGxpYmRpcj0kYWNfb3B0YXJnIDs7DQor DQorICAtbGliZXhlY2RpciB8IC0tbGliZXhlY2RpciB8IC0tbGliZXhlY2RpIHwgLS1saWJleGVj ZCB8IC0tbGliZXhlYyBcDQorICB8IC0tbGliZXhlIHwgLS1saWJleCB8IC0tbGliZSkNCisgICAg YWNfcHJldj1saWJleGVjZGlyIDs7DQorICAtbGliZXhlY2Rpcj0qIHwgLS1saWJleGVjZGlyPSog fCAtLWxpYmV4ZWNkaT0qIHwgLS1saWJleGVjZD0qIHwgLS1saWJleGVjPSogXA0KKyAgfCAtLWxp YmV4ZT0qIHwgLS1saWJleD0qIHwgLS1saWJlPSopDQorICAgIGxpYmV4ZWNkaXI9JGFjX29wdGFy ZyA7Ow0KKw0KKyAgLWxvY2FsZWRpciB8IC0tbG9jYWxlZGlyIHwgLS1sb2NhbGVkaSB8IC0tbG9j YWxlZCB8IC0tbG9jYWxlKQ0KKyAgICBhY19wcmV2PWxvY2FsZWRpciA7Ow0KKyAgLWxvY2FsZWRp cj0qIHwgLS1sb2NhbGVkaXI9KiB8IC0tbG9jYWxlZGk9KiB8IC0tbG9jYWxlZD0qIHwgLS1sb2Nh bGU9KikNCisgICAgbG9jYWxlZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1sb2NhbHN0YXRlZGly IHwgLS1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGkgfCAtLWxvY2Fsc3RhdGVkIFwNCisg IHwgLS1sb2NhbHN0YXRlIHwgLS1sb2NhbHN0YXQgfCAtLWxvY2Fsc3RhIHwgLS1sb2NhbHN0IHwg LS1sb2NhbHMpDQorICAgIGFjX3ByZXY9bG9jYWxzdGF0ZWRpciA7Ow0KKyAgLWxvY2Fsc3RhdGVk aXI9KiB8IC0tbG9jYWxzdGF0ZWRpcj0qIHwgLS1sb2NhbHN0YXRlZGk9KiB8IC0tbG9jYWxzdGF0 ZWQ9KiBcDQorICB8IC0tbG9jYWxzdGF0ZT0qIHwgLS1sb2NhbHN0YXQ9KiB8IC0tbG9jYWxzdGE9 KiB8IC0tbG9jYWxzdD0qIHwgLS1sb2NhbHM9KikNCisgICAgbG9jYWxzdGF0ZWRpcj0kYWNfb3B0 YXJnIDs7DQorDQorICAtbWFuZGlyIHwgLS1tYW5kaXIgfCAtLW1hbmRpIHwgLS1tYW5kIHwgLS1t YW4gfCAtLW1hIHwgLS1tKQ0KKyAgICBhY19wcmV2PW1hbmRpciA7Ow0KKyAgLW1hbmRpcj0qIHwg LS1tYW5kaXI9KiB8IC0tbWFuZGk9KiB8IC0tbWFuZD0qIHwgLS1tYW49KiB8IC0tbWE9KiB8IC0t bT0qKQ0KKyAgICBtYW5kaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLW5mcCB8IC0tbmZwIHwgLS1u ZikNCisgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aG91dC1mcC4NCisgICAgd2l0aF9mcD1ubyA7 Ow0KKw0KKyAgLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXRlIHwgLS1uby1jcmVhdCB8IC0tbm8tY3Jl YSB8IC0tbm8tY3JlIFwNCisgIHwgLS1uby1jciB8IC0tbm8tYyB8IC1uKQ0KKyAgICBub19jcmVh dGU9eWVzIDs7DQorDQorICAtbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpb24gfCAtLW5vLXJl Y3Vyc2lvIHwgLS1uby1yZWN1cnNpIFwNCisgIHwgLS1uby1yZWN1cnMgfCAtLW5vLXJlY3VyIHwg LS1uby1yZWN1IHwgLS1uby1yZWMgfCAtLW5vLXJlIHwgLS1uby1yKQ0KKyAgICBub19yZWN1cnNp b249eWVzIDs7DQorDQorICAtb2xkaW5jbHVkZWRpciB8IC0tb2xkaW5jbHVkZWRpciB8IC0tb2xk aW5jbHVkZWRpIHwgLS1vbGRpbmNsdWRlZCBcDQorICB8IC0tb2xkaW5jbHVkZSB8IC0tb2xkaW5j bHVkIHwgLS1vbGRpbmNsdSB8IC0tb2xkaW5jbCB8IC0tb2xkaW5jIFwNCisgIHwgLS1vbGRpbiB8 IC0tb2xkaSB8IC0tb2xkIHwgLS1vbCB8IC0tbykNCisgICAgYWNfcHJldj1vbGRpbmNsdWRlZGly IDs7DQorICAtb2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGlyPSogfCAtLW9sZGluY2x1 ZGVkaT0qIHwgLS1vbGRpbmNsdWRlZD0qIFwNCisgIHwgLS1vbGRpbmNsdWRlPSogfCAtLW9sZGlu Y2x1ZD0qIHwgLS1vbGRpbmNsdT0qIHwgLS1vbGRpbmNsPSogfCAtLW9sZGluYz0qIFwNCisgIHwg LS1vbGRpbj0qIHwgLS1vbGRpPSogfCAtLW9sZD0qIHwgLS1vbD0qIHwgLS1vPSopDQorICAgIG9s ZGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXByZWZpeCB8IC0tcHJlZml4IHwgLS1w cmVmaSB8IC0tcHJlZiB8IC0tcHJlIHwgLS1wciB8IC0tcCkNCisgICAgYWNfcHJldj1wcmVmaXgg OzsNCisgIC1wcmVmaXg9KiB8IC0tcHJlZml4PSogfCAtLXByZWZpPSogfCAtLXByZWY9KiB8IC0t cHJlPSogfCAtLXByPSogfCAtLXA9KikNCisgICAgcHJlZml4PSRhY19vcHRhcmcgOzsNCisNCisg IC1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dyYW0tcHJlZmkgfCAt LXByb2dyYW0tcHJlZiBcDQorICB8IC0tcHJvZ3JhbS1wcmUgfCAtLXByb2dyYW0tcHIgfCAtLXBy b2dyYW0tcCkNCisgICAgYWNfcHJldj1wcm9ncmFtX3ByZWZpeCA7Ow0KKyAgLXByb2dyYW0tcHJl Zml4PSogfCAtLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZmk9KiBcDQorICB8IC0t cHJvZ3JhbS1wcmVmPSogfCAtLXByb2dyYW0tcHJlPSogfCAtLXByb2dyYW0tcHI9KiB8IC0tcHJv Z3JhbS1wPSopDQorICAgIHByb2dyYW1fcHJlZml4PSRhY19vcHRhcmcgOzsNCisNCisgIC1wcm9n cmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZmaXggfCAtLXByb2dyYW0tc3VmZmkgfCAtLXByb2dy YW0tc3VmZiBcDQorICB8IC0tcHJvZ3JhbS1zdWYgfCAtLXByb2dyYW0tc3UgfCAtLXByb2dyYW0t cykNCisgICAgYWNfcHJldj1wcm9ncmFtX3N1ZmZpeCA7Ow0KKyAgLXByb2dyYW0tc3VmZml4PSog fCAtLXByb2dyYW0tc3VmZml4PSogfCAtLXByb2dyYW0tc3VmZmk9KiBcDQorICB8IC0tcHJvZ3Jh bS1zdWZmPSogfCAtLXByb2dyYW0tc3VmPSogfCAtLXByb2dyYW0tc3U9KiB8IC0tcHJvZ3JhbS1z PSopDQorICAgIHByb2dyYW1fc3VmZml4PSRhY19vcHRhcmcgOzsNCisNCisgIC1wcm9ncmFtLXRy YW5zZm9ybS1uYW1lIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIFwNCisgIHwgLS1wcm9ncmFt LXRyYW5zZm9ybS1uYW0gfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hIFwNCisgIHwgLS1wcm9ncmFt LXRyYW5zZm9ybS1uIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS0gXA0KKyAgfCAtLXByb2dyYW0tdHJh bnNmb3JtIHwgLS1wcm9ncmFtLXRyYW5zZm9yIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm8gfCAt LXByb2dyYW0tdHJhbnNmIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zIHwgLS1wcm9ncmFtLXRyYW4g XA0KKyAgfCAtLXByb2dyLXRyYSB8IC0tcHJvZ3JhbS10ciB8IC0tcHJvZ3JhbS10KQ0KKyAgICBh Y19wcmV2PXByb2dyYW1fdHJhbnNmb3JtX25hbWUgOzsNCisgIC1wcm9ncmFtLXRyYW5zZm9ybS1u YW1lPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9KiBcDQorICB8IC0tcHJvZ3JhbS10cmFu c2Zvcm0tbmFtPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hPSogXA0KKyAgfCAtLXByb2dyYW0t dHJhbnNmb3JtLW49KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tPSogXA0KKyAgfCAtLXByb2dyYW0t dHJhbnNmb3JtPSogfCAtLXByb2dyYW0tdHJhbnNmb3I9KiBcDQorICB8IC0tcHJvZ3JhbS10cmFu c2ZvPSogfCAtLXByb2dyYW0tdHJhbnNmPSogXA0KKyAgfCAtLXByb2dyYW0tdHJhbnM9KiB8IC0t cHJvZ3JhbS10cmFuPSogXA0KKyAgfCAtLXByb2dyLXRyYT0qIHwgLS1wcm9ncmFtLXRyPSogfCAt LXByb2dyYW0tdD0qKQ0KKyAgICBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSRhY19vcHRhcmcgOzsN CisNCisgIC1wZGZkaXIgfCAtLXBkZmRpciB8IC0tcGRmZGkgfCAtLXBkZmQgfCAtLXBkZiB8IC0t cGQpDQorICAgIGFjX3ByZXY9cGRmZGlyIDs7DQorICAtcGRmZGlyPSogfCAtLXBkZmRpcj0qIHwg LS1wZGZkaT0qIHwgLS1wZGZkPSogfCAtLXBkZj0qIHwgLS1wZD0qKQ0KKyAgICBwZGZkaXI9JGFj X29wdGFyZyA7Ow0KKw0KKyAgLXBzZGlyIHwgLS1wc2RpciB8IC0tcHNkaSB8IC0tcHNkIHwgLS1w cykNCisgICAgYWNfcHJldj1wc2RpciA7Ow0KKyAgLXBzZGlyPSogfCAtLXBzZGlyPSogfCAtLXBz ZGk9KiB8IC0tcHNkPSogfCAtLXBzPSopDQorICAgIHBzZGlyPSRhY19vcHRhcmcgOzsNCisNCisg IC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcDQor ICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkNCisgICAg c2lsZW50PXllcyA7Ow0KKw0KKyAgLXNiaW5kaXIgfCAtLXNiaW5kaXIgfCAtLXNiaW5kaSB8IC0t c2JpbmQgfCAtLXNiaW4gfCAtLXNiaSB8IC0tc2IpDQorICAgIGFjX3ByZXY9c2JpbmRpciA7Ow0K KyAgLXNiaW5kaXI9KiB8IC0tc2JpbmRpcj0qIHwgLS1zYmluZGk9KiB8IC0tc2JpbmQ9KiB8IC0t c2Jpbj0qIFwNCisgIHwgLS1zYmk9KiB8IC0tc2I9KikNCisgICAgc2JpbmRpcj0kYWNfb3B0YXJn IDs7DQorDQorICAtc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRz dGF0ZWRpIFwNCisgIHwgLS1zaGFyZWRzdGF0ZWQgfCAtLXNoYXJlZHN0YXRlIHwgLS1zaGFyZWRz dGF0IHwgLS1zaGFyZWRzdGEgXA0KKyAgfCAtLXNoYXJlZHN0IHwgLS1zaGFyZWRzIHwgLS1zaGFy ZWQgfCAtLXNoYXJlIHwgLS1zaGFyIFwNCisgIHwgLS1zaGEgfCAtLXNoKQ0KKyAgICBhY19wcmV2 PXNoYXJlZHN0YXRlZGlyIDs7DQorICAtc2hhcmVkc3RhdGVkaXI9KiB8IC0tc2hhcmVkc3RhdGVk aXI9KiB8IC0tc2hhcmVkc3RhdGVkaT0qIFwNCisgIHwgLS1zaGFyZWRzdGF0ZWQ9KiB8IC0tc2hh cmVkc3RhdGU9KiB8IC0tc2hhcmVkc3RhdD0qIHwgLS1zaGFyZWRzdGE9KiBcDQorICB8IC0tc2hh cmVkc3Q9KiB8IC0tc2hhcmVkcz0qIHwgLS1zaGFyZWQ9KiB8IC0tc2hhcmU9KiB8IC0tc2hhcj0q IFwNCisgIHwgLS1zaGE9KiB8IC0tc2g9KikNCisgICAgc2hhcmVkc3RhdGVkaXI9JGFjX29wdGFy ZyA7Ow0KKw0KKyAgLXNpdGUgfCAtLXNpdGUgfCAtLXNpdCkNCisgICAgYWNfcHJldj1zaXRlIDs7 DQorICAtc2l0ZT0qIHwgLS1zaXRlPSogfCAtLXNpdD0qKQ0KKyAgICBzaXRlPSRhY19vcHRhcmcg OzsNCisNCisgIC1zcmNkaXIgfCAtLXNyY2RpciB8IC0tc3JjZGkgfCAtLXNyY2QgfCAtLXNyYyB8 IC0tc3IpDQorICAgIGFjX3ByZXY9c3JjZGlyIDs7DQorICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0q IHwgLS1zcmNkaT0qIHwgLS1zcmNkPSogfCAtLXNyYz0qIHwgLS1zcj0qKQ0KKyAgICBzcmNkaXI9 JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaXIgfCAtLXN5c2Nv bmZkaSB8IC0tc3lzY29uZmQgfCAtLXN5c2NvbmYgXA0KKyAgfCAtLXN5c2NvbiB8IC0tc3lzY28g fCAtLXN5c2MgfCAtLXN5cyB8IC0tc3kpDQorICAgIGFjX3ByZXY9c3lzY29uZmRpciA7Ow0KKyAg LXN5c2NvbmZkaXI9KiB8IC0tc3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGk9KiB8IC0tc3lzY29u ZmQ9KiB8IC0tc3lzY29uZj0qIFwNCisgIHwgLS1zeXNjb249KiB8IC0tc3lzY289KiB8IC0tc3lz Yz0qIHwgLS1zeXM9KiB8IC0tc3k9KikNCisgICAgc3lzY29uZmRpcj0kYWNfb3B0YXJnIDs7DQor DQorICAtdGFyZ2V0IHwgLS10YXJnZXQgfCAtLXRhcmdlIHwgLS10YXJnIHwgLS10YXIgfCAtLXRh IHwgLS10KQ0KKyAgICBhY19wcmV2PXRhcmdldF9hbGlhcyA7Ow0KKyAgLXRhcmdldD0qIHwgLS10 YXJnZXQ9KiB8IC0tdGFyZ2U9KiB8IC0tdGFyZz0qIHwgLS10YXI9KiB8IC0tdGE9KiB8IC0tdD0q KQ0KKyAgICB0YXJnZXRfYWxpYXM9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXYgfCAtdmVyYm9zZSB8 IC0tdmVyYm9zZSB8IC0tdmVyYm9zIHwgLS12ZXJibyB8IC0tdmVyYikNCisgICAgdmVyYm9zZT15 ZXMgOzsNCisNCisgIC12ZXJzaW9uIHwgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwg LS12ZXJzIHwgLVYpDQorICAgIGFjX2luaXRfdmVyc2lvbj06IDs7DQorDQorICAtd2l0aC0qIHwg LS13aXRoLSopDQorICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRo LVwoW149XSpcKSdgDQorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVs bCB2YXJpYWJsZSBuYW1lcy4NCisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRh c19jcl9hbG51bV0iID4vZGV2L251bGwgJiYNCisgICAgICBhc19mbl9lcnJvciAiaW52YWxpZCBw YWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0Ig0KKyAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJv cHQNCisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsu XS9fL2cnYA0KKyAgICBjYXNlICRhY191c2VyX29wdHMgaW4NCisgICAgICAqIg0KKyJ3aXRoXyRh Y191c2Vyb3B0Ig0KKyIqKSA7Ow0KKyAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNf dW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0td2l0aC0kYWNfdXNlcm9wdF9v cmlnIg0KKwkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsNCisgICAgZXNhYw0KKyAgICBldmFs IHdpdGhfJGFjX3VzZXJvcHQ9XCRhY19vcHRhcmcgOzsNCisNCisgIC13aXRob3V0LSogfCAtLXdp dGhvdXQtKikNCisgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGhv dXQtXCguKlwpJ2ANCisgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxs IHZhcmlhYmxlIG5hbWVzLg0KKyAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFz X2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJg0KKyAgICAgIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHBh Y2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiDQorICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9w dA0KKyAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5d L18vZydgDQorICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbg0KKyAgICAgICoiDQorIndpdGhfJGFj X3VzZXJvcHQiDQorIiopIDs7DQorICAgICAgKikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191 bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS13aXRob3V0LSRhY191c2Vyb3B0 X29yaWciDQorCSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7Ow0KKyAgICBlc2FjDQorICAgIGV2 YWwgd2l0aF8kYWNfdXNlcm9wdD1ubyA7Ow0KKw0KKyAgLS14KQ0KKyAgICAjIE9ic29sZXRlOyB1 c2UgLS13aXRoLXguDQorICAgIHdpdGhfeD15ZXMgOzsNCisNCisgIC14LWluY2x1ZGVzIHwgLS14 LWluY2x1ZGVzIHwgLS14LWluY2x1ZGUgfCAtLXgtaW5jbHVkIHwgLS14LWluY2x1IFwNCisgIHwg LS14LWluY2wgfCAtLXgtaW5jIHwgLS14LWluIHwgLS14LWkpDQorICAgIGFjX3ByZXY9eF9pbmNs dWRlcyA7Ow0KKyAgLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlcz0qIHwgLS14LWluY2x1ZGU9 KiB8IC0teC1pbmNsdWQ9KiB8IC0teC1pbmNsdT0qIFwNCisgIHwgLS14LWluY2w9KiB8IC0teC1p bmM9KiB8IC0teC1pbj0qIHwgLS14LWk9KikNCisgICAgeF9pbmNsdWRlcz0kYWNfb3B0YXJnIDs7 DQorDQorICAteC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllIHwgLS14 LWxpYnJhcmkgXA0KKyAgfCAtLXgtbGlicmFyIHwgLS14LWxpYnJhIHwgLS14LWxpYnIgfCAtLXgt bGliIHwgLS14LWxpIHwgLS14LWwpDQorICAgIGFjX3ByZXY9eF9saWJyYXJpZXMgOzsNCisgIC14 LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmllPSogfCAtLXgtbGli cmFyaT0qIFwNCisgIHwgLS14LWxpYnJhcj0qIHwgLS14LWxpYnJhPSogfCAtLXgtbGlicj0qIHwg LS14LWxpYj0qIHwgLS14LWxpPSogfCAtLXgtbD0qKQ0KKyAgICB4X2xpYnJhcmllcz0kYWNfb3B0 YXJnIDs7DQorDQorICAtKikgYXNfZm5fZXJyb3IgInVucmVjb2duaXplZCBvcHRpb246IFxgJGFj X29wdGlvbicNCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiINCisgICAg OzsNCisNCisgICo9KikNCisgICAgYWNfZW52dmFyPWBleHByICJ4JGFjX29wdGlvbiIgOiAneFwo W149XSpcKT0nYA0KKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwg dmFyaWFibGUgbmFtZXMuDQorICAgIGNhc2UgJGFjX2VudnZhciBpbiAjKA0KKyAgICAgICcnIHwg WzAtOV0qIHwgKlshXyRhc19jcl9hbG51bV0qICkNCisgICAgICBhc19mbl9lcnJvciAiaW52YWxp ZCB2YXJpYWJsZSBuYW1lOiBcYCRhY19lbnZ2YXInIiA7Ow0KKyAgICBlc2FjDQorICAgIGV2YWwg JGFjX2VudnZhcj1cJGFjX29wdGFyZw0KKyAgICBleHBvcnQgJGFjX2VudnZhciA7Ow0KKw0KKyAg KikNCisgICAgIyBGSVhNRTogc2hvdWxkIGJlIHJlbW92ZWQgaW4gYXV0b2NvbmYgMy4wLg0KKyAg ICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB5b3Ugc2hvdWxkIHVzZSAtLWJ1aWxkLCAtLWhv c3QsIC0tdGFyZ2V0IiA+JjINCisgICAgZXhwciAieCRhY19vcHRpb24iIDogIi4qW14tLl8kYXNf Y3JfYWxudW1dIiA+L2Rldi9udWxsICYmDQorICAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklO RzogaW52YWxpZCBob3N0IHR5cGU6ICRhY19vcHRpb24iID4mMg0KKyAgICA6ICR7YnVpbGRfYWxp YXM9JGFjX29wdGlvbn0gJHtob3N0X2FsaWFzPSRhY19vcHRpb259ICR7dGFyZ2V0X2FsaWFzPSRh Y19vcHRpb259DQorICAgIDs7DQorDQorICBlc2FjDQorZG9uZQ0KKw0KK2lmIHRlc3QgLW4gIiRh Y19wcmV2IjsgdGhlbg0KKyAgYWNfb3B0aW9uPS0tYGVjaG8gJGFjX3ByZXYgfCBzZWQgJ3MvXy8t L2cnYA0KKyAgYXNfZm5fZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgdG8gJGFjX29wdGlvbiINCitm aQ0KKw0KK2lmIHRlc3QgLW4gIiRhY191bnJlY29nbml6ZWRfb3B0cyI7IHRoZW4NCisgIGNhc2Ug JGVuYWJsZV9vcHRpb25fY2hlY2tpbmcgaW4NCisgICAgbm8pIDs7DQorICAgIGZhdGFsKSBhc19m bl9lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgOzsN CisgICAgKikgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRp b25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mMiA7Ow0KKyAgZXNhYw0KK2ZpDQorDQorIyBD aGVjayBhbGwgZGlyZWN0b3J5IGFyZ3VtZW50cyBmb3IgY29uc2lzdGVuY3kuDQorZm9yIGFjX3Zh ciBpbglleGVjX3ByZWZpeCBwcmVmaXggYmluZGlyIHNiaW5kaXIgbGliZXhlY2RpciBkYXRhcm9v dGRpciBcDQorCQlkYXRhZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIgbG9jYWxzdGF0ZWRp ciBpbmNsdWRlZGlyIFwNCisJCW9sZGluY2x1ZGVkaXIgZG9jZGlyIGluZm9kaXIgaHRtbGRpciBk dmlkaXIgcGRmZGlyIHBzZGlyIFwNCisJCWxpYmRpciBsb2NhbGVkaXIgbWFuZGlyDQorZG8NCisg IGV2YWwgYWNfdmFsPVwkJGFjX3Zhcg0KKyAgIyBSZW1vdmUgdHJhaWxpbmcgc2xhc2hlcy4NCisg IGNhc2UgJGFjX3ZhbCBpbg0KKyAgICAqLyApDQorICAgICAgYWNfdmFsPWBleHByICJYJGFjX3Zh bCIgOiAnWFwoLipbXi9dXCknIFx8ICJYJGFjX3ZhbCIgOiAnWFwoLipcKSdgDQorICAgICAgZXZh bCAkYWNfdmFyPVwkYWNfdmFsOzsNCisgIGVzYWMNCisgICMgQmUgc3VyZSB0byBoYXZlIGFic29s dXRlIGRpcmVjdG9yeSBuYW1lcy4NCisgIGNhc2UgJGFjX3ZhbCBpbg0KKyAgICBbXFwvJF0qIHwg PzpbXFwvXSogKSAgY29udGludWU7Ow0KKyAgICBOT05FIHwgJycgKSBjYXNlICRhY192YXIgaW4g KnByZWZpeCApIGNvbnRpbnVlOzsgZXNhYzs7DQorICBlc2FjDQorICBhc19mbl9lcnJvciAiZXhw ZWN0ZWQgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgZm9yIC0tJGFjX3ZhcjogJGFjX3ZhbCIN Citkb25lDQorDQorIyBUaGVyZSBtaWdodCBiZSBwZW9wbGUgd2hvIGRlcGVuZCBvbiB0aGUgb2xk IGJyb2tlbiBiZWhhdmlvcjogYCRob3N0Jw0KKyMgdXNlZCB0byBob2xkIHRoZSBhcmd1bWVudCBv ZiAtLWhvc3QgZXRjLg0KKyMgRklYTUU6IFRvIHJlbW92ZSBzb21lIGRheS4NCitidWlsZD0kYnVp bGRfYWxpYXMNCitob3N0PSRob3N0X2FsaWFzDQordGFyZ2V0PSR0YXJnZXRfYWxpYXMNCisNCisj IEZJWE1FOiBUbyByZW1vdmUgc29tZSBkYXkuDQoraWYgdGVzdCAieCRob3N0X2FsaWFzIiAhPSB4 OyB0aGVuDQorICBpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiA9IHg7IHRoZW4NCisgICAgY3Jvc3Nf Y29tcGlsaW5nPW1heWJlDQorICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IElmIHlvdSB3 YW50ZWQgdG8gc2V0IHRoZSAtLWJ1aWxkIHR5cGUsIGRvbid0IHVzZSAtLWhvc3QuDQorICAgIElm IGEgY3Jvc3MgY29tcGlsZXIgaXMgZGV0ZWN0ZWQgdGhlbiBjcm9zcyBjb21waWxlIG1vZGUgd2ls bCBiZSB1c2VkLiIgPiYyDQorICBlbGlmIHRlc3QgIngkYnVpbGRfYWxpYXMiICE9ICJ4JGhvc3Rf YWxpYXMiOyB0aGVuDQorICAgIGNyb3NzX2NvbXBpbGluZz15ZXMNCisgIGZpDQorZmkNCisNCith Y190b29sX3ByZWZpeD0NCit0ZXN0IC1uICIkaG9zdF9hbGlhcyIgJiYgYWNfdG9vbF9wcmVmaXg9 JGhvc3RfYWxpYXMtDQorDQordGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYgZXhlYyA2Pi9kZXYvbnVs bA0KKw0KKw0KK2FjX3B3ZD1gcHdkYCAmJiB0ZXN0IC1uICIkYWNfcHdkIiAmJg0KK2FjX2xzX2Rp PWBscyAtZGkgLmAgJiYNCithY19wd2RfbHNfZGk9YGNkICIkYWNfcHdkIiAmJiBscyAtZGkgLmAg fHwNCisgIGFzX2ZuX2Vycm9yICJ3b3JraW5nIGRpcmVjdG9yeSBjYW5ub3QgYmUgZGV0ZXJtaW5l ZCINCit0ZXN0ICJYJGFjX2xzX2RpIiA9ICJYJGFjX3B3ZF9sc19kaSIgfHwNCisgIGFzX2ZuX2Vy cm9yICJwd2QgZG9lcyBub3QgcmVwb3J0IG5hbWUgb2Ygd29ya2luZyBkaXJlY3RvcnkiDQorDQor DQorIyBGaW5kIHRoZSBzb3VyY2UgZmlsZXMsIGlmIGxvY2F0aW9uIHdhcyBub3Qgc3BlY2lmaWVk Lg0KK2lmIHRlc3QgLXogIiRzcmNkaXIiOyB0aGVuDQorICBhY19zcmNkaXJfZGVmYXVsdGVkPXll cw0KKyAgIyBUcnkgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoaXMgc2NyaXB0LCB0aGVuIHRo ZSBwYXJlbnQgZGlyZWN0b3J5Lg0KKyAgYWNfY29uZmRpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19t eXNlbGYiIHx8DQorJGFzX2V4cHIgWCIkYXNfbXlzZWxmIiA6ICdYXCguKlteL11cKS8vKlteL11b Xi9dKi8qJCcgXHwgXA0KKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvL1wpW14vXScgXHwgXA0KKwkg WCIkYXNfbXlzZWxmIiA6ICdYXCgvL1wpJCcgXHwgXA0KKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgv XCknIFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYIiRhc19teXNlbGYiIHwNCisgICAg c2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sNCisJICAgIHMvL1wxLw0KKwkg ICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKVteL10uKi97DQorCSAgICBzLy9cMS8NCisJICAg IHENCisJICB9DQorCSAgL15YXChcL1wvXCkkL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkg IH0NCisJICAvXlhcKFwvXCkuKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAg cy8uKi8uLzsgcSdgDQorICBzcmNkaXI9JGFjX2NvbmZkaXINCisgIGlmIHRlc3QgISAtciAiJHNy Y2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVuDQorICAgIHNyY2Rpcj0uLg0KKyAgZmkNCitlbHNl DQorICBhY19zcmNkaXJfZGVmYXVsdGVkPW5vDQorZmkNCitpZiB0ZXN0ICEgLXIgIiRzcmNkaXIv JGFjX3VuaXF1ZV9maWxlIjsgdGhlbg0KKyAgdGVzdCAiJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiID0g eWVzICYmIHNyY2Rpcj0iJGFjX2NvbmZkaXIgb3IgLi4iDQorICBhc19mbl9lcnJvciAiY2Fubm90 IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkc3JjZGlyIg0KK2ZpDQorYWNfbXNn PSJzb3VyY2VzIGFyZSBpbiAkc3JjZGlyLCBidXQgXGBjZCAkc3JjZGlyJyBkb2VzIG5vdCB3b3Jr Ig0KK2FjX2Fic19jb25mZGlyPWAoDQorCWNkICIkc3JjZGlyIiAmJiB0ZXN0IC1yICIuLyRhY191 bmlxdWVfZmlsZSIgfHwgYXNfZm5fZXJyb3IgIiRhY19tc2ciDQorCXB3ZClgDQorIyBXaGVuIGJ1 aWxkaW5nIGluIHBsYWNlLCBzZXQgc3JjZGlyPS4NCitpZiB0ZXN0ICIkYWNfYWJzX2NvbmZkaXIi ID0gIiRhY19wd2QiOyB0aGVuDQorICBzcmNkaXI9Lg0KK2ZpDQorIyBSZW1vdmUgdW5uZWNlc3Nh cnkgdHJhaWxpbmcgc2xhc2hlcyBmcm9tIHNyY2Rpci4NCisjIERvdWJsZSBzbGFzaGVzIGluIGZp bGUgbmFtZXMgaW4gb2JqZWN0IGZpbGUgZGVidWdnaW5nIGluZm8NCisjIG1lc3MgdXAgTS14IGdk YiBpbiBFbWFjcy4NCitjYXNlICRzcmNkaXIgaW4NCisqLykgc3JjZGlyPWBleHByICJYJHNyY2Rp ciIgOiAnWFwoLipbXi9dXCknIFx8ICJYJHNyY2RpciIgOiAnWFwoLipcKSdgOzsNCitlc2FjDQor Zm9yIGFjX3ZhciBpbiAkYWNfcHJlY2lvdXNfdmFyczsgZG8NCisgIGV2YWwgYWNfZW52XyR7YWNf dmFyfV9zZXQ9XCR7JHthY192YXJ9K3NldH0NCisgIGV2YWwgYWNfZW52XyR7YWNfdmFyfV92YWx1 ZT1cJCR7YWNfdmFyfQ0KKyAgZXZhbCBhY19jdl9lbnZfJHthY192YXJ9X3NldD1cJHske2FjX3Zh cn0rc2V0fQ0KKyAgZXZhbCBhY19jdl9lbnZfJHthY192YXJ9X3ZhbHVlPVwkJHthY192YXJ9DQor ZG9uZQ0KKw0KKyMNCisjIFJlcG9ydCB0aGUgLS1oZWxwIG1lc3NhZ2UuDQorIw0KK2lmIHRlc3Qg IiRhY19pbml0X2hlbHAiID0gImxvbmciOyB0aGVuDQorICAjIE9taXQgc29tZSBpbnRlcm5hbCBv ciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4NCisgICMg VGhpcyBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBz aC4NCisgIGNhdCA8PF9BQ0VPRg0KK1xgY29uZmlndXJlJyBjb25maWd1cmVzIG5ld2xpYiAxLjE5 LjAgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLg0KKw0KK1VzYWdlOiAkMCBbT1BU SU9OXS4uLiBbVkFSPVZBTFVFXS4uLg0KKw0KK1RvIGFzc2lnbiBlbnZpcm9ubWVudCB2YXJpYWJs ZXMgKGUuZy4sIENDLCBDRkxBR1MuLi4pLCBzcGVjaWZ5IHRoZW0gYXMNCitWQVI9VkFMVUUuICBT ZWUgYmVsb3cgZm9yIGRlc2NyaXB0aW9ucyBvZiBzb21lIG9mIHRoZSB1c2VmdWwgdmFyaWFibGVz Lg0KKw0KK0RlZmF1bHRzIGZvciB0aGUgb3B0aW9ucyBhcmUgc3BlY2lmaWVkIGluIGJyYWNrZXRz Lg0KKw0KK0NvbmZpZ3VyYXRpb246DQorICAtaCwgLS1oZWxwICAgICAgICAgICAgICBkaXNwbGF5 IHRoaXMgaGVscCBhbmQgZXhpdA0KKyAgICAgIC0taGVscD1zaG9ydCAgICAgICAgZGlzcGxheSBv cHRpb25zIHNwZWNpZmljIHRvIHRoaXMgcGFja2FnZQ0KKyAgICAgIC0taGVscD1yZWN1cnNpdmUg ICAgZGlzcGxheSB0aGUgc2hvcnQgaGVscCBvZiBhbGwgdGhlIGluY2x1ZGVkIHBhY2thZ2VzDQor ICAtViwgLS12ZXJzaW9uICAgICAgICAgICBkaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5k IGV4aXQNCisgIC1xLCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5n Li4uJyBtZXNzYWdlcw0KKyAgICAgIC0tY2FjaGUtZmlsZT1GSUxFICAgY2FjaGUgdGVzdCByZXN1 bHRzIGluIEZJTEUgW2Rpc2FibGVkXQ0KKyAgLUMsIC0tY29uZmlnLWNhY2hlICAgICAgYWxpYXMg Zm9yIFxgLS1jYWNoZS1maWxlPWNvbmZpZy5jYWNoZScNCisgIC1uLCAtLW5vLWNyZWF0ZSAgICAg ICAgIGRvIG5vdCBjcmVhdGUgb3V0cHV0IGZpbGVzDQorICAgICAgLS1zcmNkaXI9RElSICAgICAg ICBmaW5kIHRoZSBzb3VyY2VzIGluIERJUiBbY29uZmlndXJlIGRpciBvciBcYC4uJ10NCisNCitJ bnN0YWxsYXRpb24gZGlyZWN0b3JpZXM6DQorICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0 YWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgNCisgICAgICAgICAg ICAgICAgICAgICAgICAgIFskYWNfZGVmYXVsdF9wcmVmaXhdDQorICAtLWV4ZWMtcHJlZml4PUVQ UkVGSVggICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgZmlsZXMgaW4gRVBSRUZJWA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWF0NCisNCitCeSBkZWZhdWx0LCBcYG1h a2UgaW5zdGFsbCcgd2lsbCBpbnN0YWxsIGFsbCB0aGUgZmlsZXMgaW4NCitcYCRhY19kZWZhdWx0 X3ByZWZpeC9iaW4nLCBcYCRhY19kZWZhdWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4gc3Bl Y2lmeQ0KK2FuIGluc3RhbGxhdGlvbiBwcmVmaXggb3RoZXIgdGhhbiBcYCRhY19kZWZhdWx0X3By ZWZpeCcgdXNpbmcgXGAtLXByZWZpeCcsDQorZm9yIGluc3RhbmNlIFxgLS1wcmVmaXg9XCRIT01F Jy4NCisNCitGb3IgYmV0dGVyIGNvbnRyb2wsIHVzZSB0aGUgb3B0aW9ucyBiZWxvdy4NCisNCitG aW5lIHR1bmluZyBvZiB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOg0KKyAgLS1iaW5kaXI9 RElSICAgICAgICAgICAgdXNlciBleGVjdXRhYmxlcyBbRVBSRUZJWC9iaW5dDQorICAtLXNiaW5k aXI9RElSICAgICAgICAgICBzeXN0ZW0gYWRtaW4gZXhlY3V0YWJsZXMgW0VQUkVGSVgvc2Jpbl0N CisgIC0tbGliZXhlY2Rpcj1ESVIgICAgICAgIHByb2dyYW0gZXhlY3V0YWJsZXMgW0VQUkVGSVgv bGliZXhlY10NCisgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFj aGluZSBkYXRhIFtQUkVGSVgvZXRjXQ0KKyAgLS1zaGFyZWRzdGF0ZWRpcj1ESVIgICAgbW9kaWZp YWJsZSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbUFJFRklYL2NvbV0NCisgIC0tbG9j YWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklY L3Zhcl0NCisgIC0tbGliZGlyPURJUiAgICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBb RVBSRUZJWC9saWJdDQorICAtLWluY2x1ZGVkaXI9RElSICAgICAgICBDIGhlYWRlciBmaWxlcyBb UFJFRklYL2luY2x1ZGVdDQorICAtLW9sZGluY2x1ZGVkaXI9RElSICAgICBDIGhlYWRlciBmaWxl cyBmb3Igbm9uLWdjYyBbL3Vzci9pbmNsdWRlXQ0KKyAgLS1kYXRhcm9vdGRpcj1ESVIgICAgICAg cmVhZC1vbmx5IGFyY2guLWluZGVwZW5kZW50IGRhdGEgcm9vdCBbUFJFRklYL3NoYXJlXQ0KKyAg LS1kYXRhZGlyPURJUiAgICAgICAgICAgcmVhZC1vbmx5IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVu dCBkYXRhIFtEQVRBUk9PVERJUl0NCisgIC0taW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9j dW1lbnRhdGlvbiBbREFUQVJPT1RESVIvaW5mb10NCisgIC0tbG9jYWxlZGlyPURJUiAgICAgICAg IGxvY2FsZS1kZXBlbmRlbnQgZGF0YSBbREFUQVJPT1RESVIvbG9jYWxlXQ0KKyAgLS1tYW5kaXI9 RElSICAgICAgICAgICAgbWFuIGRvY3VtZW50YXRpb24gW0RBVEFST09URElSL21hbl0NCisgIC0t ZG9jZGlyPURJUiAgICAgICAgICAgIGRvY3VtZW50YXRpb24gcm9vdCBbREFUQVJPT1RESVIvZG9j L25ld2xpYl0NCisgIC0taHRtbGRpcj1ESVIgICAgICAgICAgIGh0bWwgZG9jdW1lbnRhdGlvbiBb RE9DRElSXQ0KKyAgLS1kdmlkaXI9RElSICAgICAgICAgICAgZHZpIGRvY3VtZW50YXRpb24gW0RP Q0RJUl0NCisgIC0tcGRmZGlyPURJUiAgICAgICAgICAgIHBkZiBkb2N1bWVudGF0aW9uIFtET0NE SVJdDQorICAtLXBzZGlyPURJUiAgICAgICAgICAgICBwcyBkb2N1bWVudGF0aW9uIFtET0NESVJd DQorX0FDRU9GDQorDQorICBjYXQgPDxcX0FDRU9GDQorDQorUHJvZ3JhbSBuYW1lczoNCisgIC0t cHJvZ3JhbS1wcmVmaXg9UFJFRklYICAgICAgICAgICAgcHJlcGVuZCBQUkVGSVggdG8gaW5zdGFs bGVkIHByb2dyYW0gbmFtZXMNCisgIC0tcHJvZ3JhbS1zdWZmaXg9U1VGRklYICAgICAgICAgICAg YXBwZW5kIFNVRkZJWCB0byBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcw0KKyAgLS1wcm9ncmFtLXRy YW5zZm9ybS1uYW1lPVBST0dSQU0gICBydW4gc2VkIFBST0dSQU0gb24gaW5zdGFsbGVkIHByb2dy YW0gbmFtZXMNCisNCitTeXN0ZW0gdHlwZXM6DQorICAtLWJ1aWxkPUJVSUxEICAgICBjb25maWd1 cmUgZm9yIGJ1aWxkaW5nIG9uIEJVSUxEIFtndWVzc2VkXQ0KKyAgLS1ob3N0PUhPU1QgICAgICAg Y3Jvc3MtY29tcGlsZSB0byBidWlsZCBwcm9ncmFtcyB0byBydW4gb24gSE9TVCBbQlVJTERdDQor X0FDRU9GDQorZmkNCisNCitpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbg0KKyAgY2Fz ZSAkYWNfaW5pdF9oZWxwIGluDQorICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZp Z3VyYXRpb24gb2YgbmV3bGliIDEuMTkuMDoiOzsNCisgICBlc2FjDQorICBjYXQgPDxcX0FDRU9G DQorDQorT3B0aW9uYWwgRmVhdHVyZXM6DQorICAtLWRpc2FibGUtb3B0aW9uLWNoZWNraW5nICBp Z25vcmUgdW5yZWNvZ25pemVkIC0tZW5hYmxlLy0td2l0aCBvcHRpb25zDQorICAtLWRpc2FibGUt RkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZF QVRVUkU9bm8pDQorICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FS Rz15ZXNdDQorICAtLWVuYWJsZS1tdWx0aWxpYiAgICAgICAgIGJ1aWxkIG1hbnkgbGlicmFyeSB2 ZXJzaW9ucyAoZGVmYXVsdCkNCisgIC0tZW5hYmxlLXRhcmdldC1vcHRzcGFjZSAgb3B0aW1pemUg Zm9yIHNwYWNlDQorICAtLWVuYWJsZS1tYWxsb2MtZGVidWdnaW5nIGluZGljYXRlIG1hbGxvYyBk ZWJ1Z2dpbmcgcmVxdWVzdGVkDQorICAtLWVuYWJsZS1uZXdsaWItbXVsdGl0aHJlYWQgICAgICAg IGVuYWJsZSBzdXBwb3J0IGZvciBtdWx0aXBsZSB0aHJlYWRzDQorICAtLWVuYWJsZS1uZXdsaWIt aWNvbnYgICAgIGVuYWJsZSBpY29udiBsaWJyYXJ5IHN1cHBvcnQNCisgIC0tZW5hYmxlLW5ld2xp Yi1lbGl4LWxldmVsICAgICAgICAgc3VwcGx5IGRlc2lyZWQgZWxpeCBsaWJyYXJ5IGxldmVsICgx LTQpDQorICAtLWRpc2FibGUtbmV3bGliLWlvLWZsb2F0IGRpc2FibGUgcHJpbnRmL3NjYW5mIGZh bWlseSBmbG9hdCBzdXBwb3J0DQorICAtLWRpc2FibGUtbmV3bGliLXN1cHBsaWVkLXN5c2NhbGxz IGRpc2FibGUgbmV3bGliIGZyb20gc3VwcGx5aW5nIHN5c2NhbGxzDQorICAtLWRpc2FibGUtZGVw ZW5kZW5jeS10cmFja2luZyAgc3BlZWRzIHVwIG9uZS10aW1lIGJ1aWxkDQorICAtLWVuYWJsZS1k ZXBlbmRlbmN5LXRyYWNraW5nICAgZG8gbm90IHJlamVjdCBzbG93IGRlcGVuZGVuY3kgZXh0cmFj dG9ycw0KKyAgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlICBlbmFibGUgbWFrZSBydWxlcyBhbmQg ZGVwZW5kZW5jaWVzIG5vdCB1c2VmdWwNCisJCQkgIChhbmQgc29tZXRpbWVzIGNvbmZ1c2luZykg dG8gdGhlIGNhc3VhbCBpbnN0YWxsZXINCisNCitTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50 IHZhcmlhYmxlczoNCisgIENDQVMgICAgICAgIGFzc2VtYmxlciBjb21waWxlciBjb21tYW5kIChk ZWZhdWx0cyB0byBDQykNCisgIENDQVNGTEFHUyAgIGFzc2VtYmxlciBjb21waWxlciBmbGFncyAo ZGVmYXVsdHMgdG8gQ0ZMQUdTKQ0KKw0KK1VzZSB0aGVzZSB2YXJpYWJsZXMgdG8gb3ZlcnJpZGUg dGhlIGNob2ljZXMgbWFkZSBieSBgY29uZmlndXJlJyBvciB0byBoZWxwDQoraXQgdG8gZmluZCBs aWJyYXJpZXMgYW5kIHByb2dyYW1zIHdpdGggbm9uc3RhbmRhcmQgbmFtZXMvbG9jYXRpb25zLg0K Kw0KK1JlcG9ydCBidWdzIHRvIHRoZSBwYWNrYWdlIHByb3ZpZGVyLg0KK19BQ0VPRg0KK2FjX3N0 YXR1cz0kPw0KK2ZpDQorDQoraWYgdGVzdCAiJGFjX2luaXRfaGVscCIgPSAicmVjdXJzaXZlIjsg dGhlbg0KKyAgIyBJZiB0aGVyZSBhcmUgc3ViZGlycywgcmVwb3J0IHRoZWlyIHNwZWNpZmljIC0t aGVscC4NCisgIGZvciBhY19kaXIgaW4gOiAkYWNfc3ViZGlyc19hbGw7IGRvIHRlc3QgIngkYWNf ZGlyIiA9IHg6ICYmIGNvbnRpbnVlDQorICAgIHRlc3QgLWQgIiRhY19kaXIiIHx8DQorICAgICAg eyBjZCAiJHNyY2RpciIgJiYgYWNfcHdkPWBwd2RgICYmIHNyY2Rpcj0uICYmIHRlc3QgLWQgIiRh Y19kaXIiOyB9IHx8DQorICAgICAgY29udGludWUNCisgICAgYWNfYnVpbGRkaXI9Lg0KKw0KK2Nh c2UgIiRhY19kaXIiIGluDQorLikgYWNfZGlyX3N1ZmZpeD0gYWNfdG9wX2J1aWxkZGlyX3N1Yj0u IGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7DQorKikNCisgIGFjX2Rpcl9zdWZmaXg9L2AkYXNfZWNo byAiJGFjX2RpciIgfCBzZWQgJ3N8XlwuW1xcL118fCdgDQorICAjIEEgIi4uIiBmb3IgZWFjaCBk aXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguDQorICBhY190b3BfYnVpbGRkaXJfc3ViPWAkYXNf ZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwgc2VkICdzfC9bXlxcL10qfC8uLnxnO3N8L3x8J2ANCisg IGNhc2UgJGFjX3RvcF9idWlsZGRpcl9zdWIgaW4NCisgICIiKSBhY190b3BfYnVpbGRkaXJfc3Vi PS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsNCisgICopICBhY190b3BfYnVpbGRfcHJlZml4PSRh Y190b3BfYnVpbGRkaXJfc3ViLyA7Ow0KKyAgZXNhYyA7Ow0KK2VzYWMNCithY19hYnNfdG9wX2J1 aWxkZGlyPSRhY19wd2QNCithY19hYnNfYnVpbGRkaXI9JGFjX3B3ZCRhY19kaXJfc3VmZml4DQor IyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eToNCithY190b3BfYnVpbGRkaXI9JGFjX3RvcF9i dWlsZF9wcmVmaXgNCisNCitjYXNlICRzcmNkaXIgaW4NCisgIC4pICAjIFdlIGFyZSBidWlsZGlu ZyBpbiBwbGFjZS4NCisgICAgYWNfc3JjZGlyPS4NCisgICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9w X2J1aWxkZGlyX3N1Yg0KKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkIDs7DQorICBbXFwv XSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIG5hbWUuDQorICAgIGFjX3NyY2Rpcj0kc3JjZGly JGFjX2Rpcl9zdWZmaXg7DQorICAgIGFjX3RvcF9zcmNkaXI9JHNyY2Rpcg0KKyAgICBhY19hYnNf dG9wX3NyY2Rpcj0kc3JjZGlyIDs7DQorICAqKSAjIFJlbGF0aXZlIG5hbWUuDQorICAgIGFjX3Ny Y2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIkYWNfZGlyX3N1ZmZpeA0KKyAgICBhY190 b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2Rpcg0KKyAgICBhY19hYnNfdG9wX3Ny Y2Rpcj0kYWNfcHdkLyRzcmNkaXIgOzsNCitlc2FjDQorYWNfYWJzX3NyY2Rpcj0kYWNfYWJzX3Rv cF9zcmNkaXIkYWNfZGlyX3N1ZmZpeA0KKw0KKyAgICBjZCAiJGFjX2RpciIgfHwgeyBhY19zdGF0 dXM9JD87IGNvbnRpbnVlOyB9DQorICAgICMgQ2hlY2sgZm9yIGd1ZXN0ZWQgY29uZmlndXJlLg0K KyAgICBpZiB0ZXN0IC1mICIkYWNfc3JjZGlyL2NvbmZpZ3VyZS5nbnUiOyB0aGVuDQorICAgICAg ZWNobyAmJg0KKyAgICAgICRTSEVMTCAiJGFjX3NyY2Rpci9jb25maWd1cmUuZ251IiAtLWhlbHA9 cmVjdXJzaXZlDQorICAgIGVsaWYgdGVzdCAtZiAiJGFjX3NyY2Rpci9jb25maWd1cmUiOyB0aGVu DQorICAgICAgZWNobyAmJg0KKyAgICAgICRTSEVMTCAiJGFjX3NyY2Rpci9jb25maWd1cmUiIC0t aGVscD1yZWN1cnNpdmUNCisgICAgZWxzZQ0KKyAgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5J Tkc6IG5vIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gaXMgaW4gJGFjX2RpciIgPiYyDQorICAg IGZpIHx8IGFjX3N0YXR1cz0kPw0KKyAgICBjZCAiJGFjX3B3ZCIgfHwgeyBhY19zdGF0dXM9JD87 IGJyZWFrOyB9DQorICBkb25lDQorZmkNCisNCit0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBl eGl0ICRhY19zdGF0dXMNCitpZiAkYWNfaW5pdF92ZXJzaW9uOyB0aGVuDQorICBjYXQgPDxcX0FD RU9GDQorbmV3bGliIGNvbmZpZ3VyZSAxLjE5LjANCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25m IDIuNjQNCisNCitDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuDQorVGhpcyBjb25maWd1cmUgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24NCitnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBk aXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuDQorX0FDRU9GDQorICBleGl0DQorZmkNCisNCisjIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBBdXRvY29uZiBpbml0aWFsaXphdGlvbi4g IyMNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisNCisjIGFjX2ZuX2NfdHJ5X2Nv bXBpbGUgTElORU5PDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgVHJ5IHRvIGNv bXBpbGUgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVk Lg0KK2FjX2ZuX2NfdHJ5X2NvbXBpbGUgKCkNCit7DQorICBhc19saW5lbm89JHthc19saW5lbm8t IiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrDQor ICBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0DQorICBpZiB7IHsgYWNfdHJ5PSIkYWNfY29tcGls ZSINCitjYXNlICIoKCRhY190cnkiIGluDQorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9l Y2hvPVwkYWNfdHJ5OzsNCisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7Ow0KK2VzYWMNCitldmFs IGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNo b1wiIg0KKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQ0KKyAgKGV2YWwgIiRhY19jb21w aWxlIikgMj5jb25mdGVzdC5lcnINCisgIGFjX3N0YXR1cz0kPw0KKyAgaWYgdGVzdCAtcyBjb25m dGVzdC5lcnI7IHRoZW4NCisgICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXJyID5jb25mdGVz dC5lcjENCisgICAgY2F0IGNvbmZ0ZXN0LmVyMSA+JjUNCisgICAgbXYgLWYgY29uZnRlc3QuZXIx IGNvbmZ0ZXN0LmVycg0KKyAgZmkNCisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQ0KKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAm JiB7DQorCSB0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIgfHwNCisJIHRlc3QgISAtcyBjb25m dGVzdC5lcnINCisgICAgICAgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQ7IHRoZW4g Og0KKyAgYWNfcmV0dmFsPTANCitlbHNlDQorICAkYXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJv Z3JhbSB3YXM6IiA+JjUNCitzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1DQorDQor CWFjX3JldHZhbD0xDQorZmkNCisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19s aW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9DQorICBy ZXR1cm4gJGFjX3JldHZhbA0KKw0KK30gIyBhY19mbl9jX3RyeV9jb21waWxlDQorY2F0ID5jb25m aWcubG9nIDw8X0FDRU9GDQorVGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNl ZCBieSBjb21waWxlcnMgd2hpbGUNCitydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2lu ZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLg0KKw0KK0l0IHdhcyBjcmVhdGVkIGJ5IG5l d2xpYiAkYXNfbWUgMS4xOS4wLCB3aGljaCB3YXMNCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25m IDIuNjQuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMNCisNCisgICQgJDAgJEANCisNCitf QUNFT0YNCitleGVjIDU+PmNvbmZpZy5sb2cNCit7DQorY2F0IDw8X0FTVU5BTUUNCisjIyAtLS0t LS0tLS0gIyMNCisjIyBQbGF0Zm9ybS4gIyMNCisjIyAtLS0tLS0tLS0gIyMNCisNCitob3N0bmFt ZSA9IGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYA0KK3VuYW1l IC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYA0KK3VuYW1lIC1y ID0gYCh1bmFtZSAtcikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYA0KK3VuYW1lIC1zID0g YCh1bmFtZSAtcykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYA0KK3VuYW1lIC12ID0gYCh1 bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYA0KKw0KKy91c3IvYmluL3VuYW1l IC1wID0gYCgvdXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYA0K Ky9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1lIC1YKSAyPi9kZXYvbnVsbCAgICAgfHwg ZWNobyB1bmtub3duYA0KKw0KKy9iaW4vYXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJjaCkg Mj4vZGV2L251bGwgICAgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmANCisvdXNyL2Jpbi9hcmNo IC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hv IHVua25vd25gDQorL3Vzci9jb252ZXgvZ2V0c3lzaW5mbyA9IGAoL3Vzci9jb252ZXgvZ2V0c3lz aW5mbykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYA0KKy91c3IvYmluL2hvc3RpbmZvICAg ICAgPSBgKC91c3IvYmluL2hvc3RpbmZvKSAyPi9kZXYvbnVsbCAgICAgIHx8IGVjaG8gdW5rbm93 bmANCisvYmluL21hY2hpbmUgICAgICAgICAgID0gYCgvYmluL21hY2hpbmUpIDI+L2Rldi9udWxs ICAgICAgICAgICB8fCBlY2hvIHVua25vd25gDQorL3Vzci9iaW4vb3NsZXZlbCAgICAgICA9IGAo L3Vzci9iaW4vb3NsZXZlbCkgMj4vZGV2L251bGwgICAgICAgfHwgZWNobyB1bmtub3duYA0KKy9i aW4vdW5pdmVyc2UgICAgICAgICAgPSBgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsICAgICAg ICAgIHx8IGVjaG8gdW5rbm93bmANCisNCitfQVNVTkFNRQ0KKw0KK2FzX3NhdmVfSUZTPSRJRlM7 IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0k YXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgICRhc19l Y2hvICJQQVRIOiAkYXNfZGlyIg0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCit9ID4m NQ0KKw0KK2NhdCA+JjUgPDxfQUNFT0YNCisNCisNCisjIyAtLS0tLS0tLS0tLSAjIw0KKyMjIENv cmUgdGVzdHMuICMjDQorIyMgLS0tLS0tLS0tLS0gIyMNCisNCitfQUNFT0YNCisNCisNCisjIEtl ZXAgYSB0cmFjZSBvZiB0aGUgY29tbWFuZCBsaW5lLg0KKyMgU3RyaXAgb3V0IC0tbm8tY3JlYXRl IGFuZCAtLW5vLXJlY3Vyc2lvbiBzbyB0aGV5IGRvIG5vdCBwaWxlIHVwLg0KKyMgU3RyaXAgb3V0 IC0tc2lsZW50IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byByZWNvcmQgaXQgZm9yIGZ1dHVyZSBy dW5zLg0KKyMgQWxzbyBxdW90ZSBhbnkgYXJncyBjb250YWluaW5nIHNoZWxsIG1ldGEtY2hhcmFj dGVycy4NCisjIE1ha2UgdHdvIHBhc3NlcyB0byBhbGxvdyBmb3IgcHJvcGVyIGR1cGxpY2F0ZS1h cmd1bWVudCBzdXBwcmVzc2lvbi4NCithY19jb25maWd1cmVfYXJncz0NCithY19jb25maWd1cmVf YXJnczA9DQorYWNfY29uZmlndXJlX2FyZ3MxPQ0KK2FjX211c3Rfa2VlcF9uZXh0PWZhbHNlDQor Zm9yIGFjX3Bhc3MgaW4gMSAyDQorZG8NCisgIGZvciBhY19hcmcNCisgIGRvDQorICAgIGNhc2Ug JGFjX2FyZyBpbg0KKyAgICAtbm8tY3JlYXRlIHwgLS1uby1jKiB8IC1uIHwgLW5vLXJlY3Vyc2lv biB8IC0tbm8tciopIGNvbnRpbnVlIDs7DQorICAgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0t cXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcDQorICAgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwg LS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsKQ0KKyAgICAgIGNvbnRpbnVlIDs7DQorICAgICpcJyop DQorICAgICAgYWNfYXJnPWAkYXNfZWNobyAiJGFjX2FyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwn Jy9nImAgOzsNCisgICAgZXNhYw0KKyAgICBjYXNlICRhY19wYXNzIGluDQorICAgIDEpIGFzX2Zu X2FwcGVuZCBhY19jb25maWd1cmVfYXJnczAgIiAnJGFjX2FyZyciIDs7DQorICAgIDIpDQorICAg ICAgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzMSAiICckYWNfYXJnJyINCisgICAgICBp ZiB0ZXN0ICRhY19tdXN0X2tlZXBfbmV4dCA9IHRydWU7IHRoZW4NCisJYWNfbXVzdF9rZWVwX25l eHQ9ZmFsc2UgIyBHb3QgdmFsdWUsIGJhY2sgdG8gbm9ybWFsLg0KKyAgICAgIGVsc2UNCisJY2Fz ZSAkYWNfYXJnIGluDQorCSAgKj0qIHwgLS1jb25maWctY2FjaGUgfCAtQyB8IC1kaXNhYmxlLSog fCAtLWRpc2FibGUtKiBcDQorCSAgfCAtZW5hYmxlLSogfCAtLWVuYWJsZS0qIHwgLWdhcyB8IC0t ZyogfCAtbmZwIHwgLS1uZiogXA0KKwkgIHwgLXEgfCAtcXVpZXQgfCAtLXEqIHwgLXNpbGVudCB8 IC0tc2lsKiB8IC12IHwgLXZlcmIqIFwNCisJICB8IC13aXRoLSogfCAtLXdpdGgtKiB8IC13aXRo b3V0LSogfCAtLXdpdGhvdXQtKiB8IC0teCkNCisJICAgIGNhc2UgIiRhY19jb25maWd1cmVfYXJn czAgIiBpbg0KKwkgICAgICAiJGFjX2NvbmZpZ3VyZV9hcmdzMSIqIiAnJGFjX2FyZycgIiogKSBj b250aW51ZSA7Ow0KKwkgICAgZXNhYw0KKwkgICAgOzsNCisJICAtKiApIGFjX211c3Rfa2VlcF9u ZXh0PXRydWUgOzsNCisJZXNhYw0KKyAgICAgIGZpDQorICAgICAgYXNfZm5fYXBwZW5kIGFjX2Nv bmZpZ3VyZV9hcmdzICIgJyRhY19hcmcnIg0KKyAgICAgIDs7DQorICAgIGVzYWMNCisgIGRvbmUN Citkb25lDQoreyBhY19jb25maWd1cmVfYXJnczA9OyB1bnNldCBhY19jb25maWd1cmVfYXJnczA7 fQ0KK3sgYWNfY29uZmlndXJlX2FyZ3MxPTsgdW5zZXQgYWNfY29uZmlndXJlX2FyZ3MxO30NCisN CisjIFdoZW4gaW50ZXJydXB0ZWQgb3IgZXhpdCdkLCBjbGVhbnVwIHRlbXBvcmFyeSBmaWxlcywg YW5kIGNvbXBsZXRlDQorIyBjb25maWcubG9nLiAgV2UgcmVtb3ZlIGNvbW1lbnRzIGJlY2F1c2Ug YW55d2F5IHRoZSBxdW90ZXMgaW4gdGhlcmUNCisjIHdvdWxkIGNhdXNlIHByb2JsZW1zIG9yIGxv b2sgdWdseS4NCisjIFdBUk5JTkc6IFVzZSAnXCcnIHRvIHJlcHJlc2VudCBhbiBhcG9zdHJvcGhl IHdpdGhpbiB0aGUgdHJhcC4NCisjIFdBUk5JTkc6IERvIG5vdCBzdGFydCB0aGUgdHJhcCBjb2Rl IHdpdGggYSBuZXdsaW5lLCBkdWUgdG8gYSBGcmVlQlNEIDQuMCBidWcuDQordHJhcCAnZXhpdF9z dGF0dXM9JD8NCisgICMgU2F2ZSBpbnRvIGNvbmZpZy5sb2cgc29tZSBpbmZvcm1hdGlvbiB0aGF0 IG1pZ2h0IGhlbHAgaW4gZGVidWdnaW5nLg0KKyAgew0KKyAgICBlY2hvDQorDQorICAgIGNhdCA8 PFxfQVNCT1gNCisjIyAtLS0tLS0tLS0tLS0tLS0tICMjDQorIyMgQ2FjaGUgdmFyaWFibGVzLiAj Iw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMNCitfQVNCT1gNCisgICAgZWNobw0KKyAgICAjIFRo ZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMg aW4gdmFsdWVzLA0KKygNCisgIGZvciBhY192YXIgaW4gYChzZXQpIDI+JjEgfCBzZWQgLW4gJ1wn J3MvXlwoW2EtekEtWl9dW2EtekEtWjAtOV9dKlwpPS4qL1wxL3AnXCcnYDsgZG8NCisgICAgZXZh bCBhY192YWw9XCQkYWNfdmFyDQorICAgIGNhc2UgJGFjX3ZhbCBpbiAjKA0KKyAgICAqJHthc19u bH0qKQ0KKyAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKA0KKyAgICAgICpfY3ZfKikgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAk YWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklO RzogY2FjaGUgdmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4mMjt9IDs7DQor ICAgICAgZXNhYw0KKyAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKA0KKyAgICAgIF8gfCBJRlMgfCBh c19ubCkgOzsgIygNCisgICAgICBCQVNIX0FSR1YgfCBCQVNIX1NPVVJDRSkgZXZhbCAkYWNfdmFy PSA7OyAjKA0KKyAgICAgICopIHsgZXZhbCAkYWNfdmFyPTsgdW5zZXQgJGFjX3Zhcjt9IDs7DQor ICAgICAgZXNhYyA7Ow0KKyAgICBlc2FjDQorICBkb25lDQorICAoc2V0KSAyPiYxIHwNCisgICAg Y2FzZSAkYXNfbmxgKGFjX3NwYWNlPSdcJycgJ1wnJzsgc2V0KSAyPiYxYCBpbiAjKA0KKyAgICAq JHthc19ubH1hY19zcGFjZT1cICopDQorICAgICAgc2VkIC1uIFwNCisJInMvJ1wnJy8nXCcnXFxc XCdcJycnXCcnL2c7DQorCSAgcy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51 bV0qXFwpPVxcKC4qXFwpL1xcMT0nXCcnXFwyJ1wnJy9wIg0KKyAgICAgIDs7ICMoDQorICAgICop DQorICAgICAgc2VkIC1uICIvXltfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0v cCINCisgICAgICA7Ow0KKyAgICBlc2FjIHwNCisgICAgc29ydA0KKykNCisgICAgZWNobw0KKw0K KyAgICBjYXQgPDxcX0FTQk9YDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBPdXRwdXQg dmFyaWFibGVzLiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjDQorX0FTQk9YDQorICAgIGVj aG8NCisgICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3RfdmFycw0KKyAgICBkbw0KKyAgICAgIGV2 YWwgYWNfdmFsPVwkJGFjX3Zhcg0KKyAgICAgIGNhc2UgJGFjX3ZhbCBpbg0KKyAgICAgICpcJ1wn JyopIGFjX3ZhbD1gJGFzX2VjaG8gIiRhY192YWwiIHwgc2VkICJzLydcJycvJ1wnJ1xcXFxcXFxc J1wnJydcJycvZyJgOzsNCisgICAgICBlc2FjDQorICAgICAgJGFzX2VjaG8gIiRhY192YXI9J1wn JyRhY192YWwnXCcnIg0KKyAgICBkb25lIHwgc29ydA0KKyAgICBlY2hvDQorDQorICAgIGlmIHRl c3QgLW4gIiRhY19zdWJzdF9maWxlcyI7IHRoZW4NCisgICAgICBjYXQgPDxcX0FTQk9YDQorIyMg LS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KKyMjIEZpbGUgc3Vic3RpdHV0aW9ucy4gIyMNCisjIyAt LS0tLS0tLS0tLS0tLS0tLS0tICMjDQorX0FTQk9YDQorICAgICAgZWNobw0KKyAgICAgIGZvciBh Y192YXIgaW4gJGFjX3N1YnN0X2ZpbGVzDQorICAgICAgZG8NCisJZXZhbCBhY192YWw9XCQkYWNf dmFyDQorCWNhc2UgJGFjX3ZhbCBpbg0KKwkqXCdcJycqKSBhY192YWw9YCRhc19lY2hvICIkYWNf dmFsIiB8IHNlZCAicy8nXCcnLydcJydcXFxcXFxcXCdcJycnXCcnL2ciYDs7DQorCWVzYWMNCisJ JGFzX2VjaG8gIiRhY192YXI9J1wnJyRhY192YWwnXCcnIg0KKyAgICAgIGRvbmUgfCBzb3J0DQor ICAgICAgZWNobw0KKyAgICBmaQ0KKw0KKyAgICBpZiB0ZXN0IC1zIGNvbmZkZWZzLmg7IHRoZW4N CisgICAgICBjYXQgPDxcX0FTQk9YDQorIyMgLS0tLS0tLS0tLS0gIyMNCisjIyBjb25mZGVmcy5o LiAjIw0KKyMjIC0tLS0tLS0tLS0tICMjDQorX0FTQk9YDQorICAgICAgZWNobw0KKyAgICAgIGNh dCBjb25mZGVmcy5oDQorICAgICAgZWNobw0KKyAgICBmaQ0KKyAgICB0ZXN0ICIkYWNfc2lnbmFs IiAhPSAwICYmDQorICAgICAgJGFzX2VjaG8gIiRhc19tZTogY2F1Z2h0IHNpZ25hbCAkYWNfc2ln bmFsIg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiBleGl0ICRleGl0X3N0YXR1cyINCisgIH0gPiY1 DQorICBybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogJiYNCisgICAgcm0gLWYgLXIg Y29uZnRlc3QqIGNvbmZkZWZzKiBjb25mJCQqICRhY19jbGVhbl9maWxlcyAmJg0KKyAgICBleGl0 ICRleGl0X3N0YXR1cw0KKycgMA0KK2ZvciBhY19zaWduYWwgaW4gMSAyIDEzIDE1OyBkbw0KKyAg dHJhcCAnYWNfc2lnbmFsPSckYWNfc2lnbmFsJzsgYXNfZm5fZXhpdCAxJyAkYWNfc2lnbmFsDQor ZG9uZQ0KK2FjX3NpZ25hbD0wDQorDQorIyBjb25mZGVmcy5oIGF2b2lkcyBPUyBjb21tYW5kIGxp bmUgbGVuZ3RoIGxpbWl0cyB0aGF0IERFRlMgY2FuIGV4Y2VlZC4NCitybSAtZiAtciBjb25mdGVz dCogY29uZmRlZnMuaA0KKw0KKyRhc19lY2hvICIvKiBjb25mZGVmcy5oICovIiA+IGNvbmZkZWZz LmgNCisNCisjIFByZWRlZmluZWQgcHJlcHJvY2Vzc29yIHZhcmlhYmxlcy4NCisNCitjYXQgPj5j b25mZGVmcy5oIDw8X0FDRU9GDQorI2RlZmluZSBQQUNLQUdFX05BTUUgIiRQQUNLQUdFX05BTUUi DQorX0FDRU9GDQorDQorY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRg0KKyNkZWZpbmUgUEFDS0FH RV9UQVJOQU1FICIkUEFDS0FHRV9UQVJOQU1FIg0KK19BQ0VPRg0KKw0KK2NhdCA+PmNvbmZkZWZz LmggPDxfQUNFT0YNCisjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiJFBBQ0tBR0VfVkVSU0lPTiIN CitfQUNFT0YNCisNCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GDQorI2RlZmluZSBQQUNLQUdF X1NUUklORyAiJFBBQ0tBR0VfU1RSSU5HIg0KK19BQ0VPRg0KKw0KK2NhdCA+PmNvbmZkZWZzLmgg PDxfQUNFT0YNCisjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICIkUEFDS0FHRV9CVUdSRVBPUlQi DQorX0FDRU9GDQorDQorY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRg0KKyNkZWZpbmUgUEFDS0FH RV9VUkwgIiRQQUNLQUdFX1VSTCINCitfQUNFT0YNCisNCisNCisjIExldCB0aGUgc2l0ZSBmaWxl IHNlbGVjdCBhbiBhbHRlcm5hdGUgY2FjaGUgZmlsZSBpZiBpdCB3YW50cyB0by4NCisjIFByZWZl ciBhbiBleHBsaWNpdGx5IHNlbGVjdGVkIGZpbGUgdG8gYXV0b21hdGljYWxseSBzZWxlY3RlZCBv bmVzLg0KK2FjX3NpdGVfZmlsZTE9Tk9ORQ0KK2FjX3NpdGVfZmlsZTI9Tk9ORQ0KK2lmIHRlc3Qg LW4gIiRDT05GSUdfU0lURSI7IHRoZW4NCisgIGFjX3NpdGVfZmlsZTE9JENPTkZJR19TSVRFDQor ZWxpZiB0ZXN0ICJ4JHByZWZpeCIgIT0geE5PTkU7IHRoZW4NCisgIGFjX3NpdGVfZmlsZTE9JHBy ZWZpeC9zaGFyZS9jb25maWcuc2l0ZQ0KKyAgYWNfc2l0ZV9maWxlMj0kcHJlZml4L2V0Yy9jb25m aWcuc2l0ZQ0KK2Vsc2UNCisgIGFjX3NpdGVfZmlsZTE9JGFjX2RlZmF1bHRfcHJlZml4L3NoYXJl L2NvbmZpZy5zaXRlDQorICBhY19zaXRlX2ZpbGUyPSRhY19kZWZhdWx0X3ByZWZpeC9ldGMvY29u ZmlnLnNpdGUNCitmaQ0KK2ZvciBhY19zaXRlX2ZpbGUgaW4gIiRhY19zaXRlX2ZpbGUxIiAiJGFj X3NpdGVfZmlsZTIiDQorZG8NCisgIHRlc3QgIngkYWNfc2l0ZV9maWxlIiA9IHhOT05FICYmIGNv bnRpbnVlDQorICBpZiB0ZXN0IC1yICIkYWNfc2l0ZV9maWxlIjsgdGhlbg0KKyAgICB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFj X3NpdGVfZmlsZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAk YWNfc2l0ZV9maWxlIiA+JjY7fQ0KKyAgICBzZWQgJ3MvXi98IC8nICIkYWNfc2l0ZV9maWxlIiA+ JjUNCisgICAgLiAiJGFjX3NpdGVfZmlsZSINCisgIGZpDQorZG9uZQ0KKw0KK2lmIHRlc3QgLXIg IiRjYWNoZV9maWxlIjsgdGhlbg0KKyAgIyBTb21lIHZlcnNpb25zIG9mIGJhc2ggd2lsbCBmYWls IHRvIHNvdXJjZSAvZGV2L251bGwgKHNwZWNpYWwNCisgICMgZmlsZXMgYWN0dWFsbHkpLCBzbyB3 ZSBhdm9pZCBkb2luZyB0aGF0Lg0KKyAgaWYgdGVzdCAtZiAiJGNhY2hlX2ZpbGUiOyB0aGVuDQor ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogbG9hZGluZyBjYWNo ZSAkY2FjaGVfZmlsZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogbG9hZGluZyBjYWNoZSAkY2Fj aGVfZmlsZSIgPiY2O30NCisgICAgY2FzZSAkY2FjaGVfZmlsZSBpbg0KKyAgICAgIFtcXC9dKiB8 ID86W1xcL10qICkgLiAiJGNhY2hlX2ZpbGUiOzsNCisgICAgICAqKSAgICAgICAgICAgICAgICAg ICAgICAuICIuLyRjYWNoZV9maWxlIjs7DQorICAgIGVzYWMNCisgIGZpDQorZWxzZQ0KKyAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyBjYWNoZSAkY2Fj aGVfZmlsZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2Zp bGUiID4mNjt9DQorICA+JGNhY2hlX2ZpbGUNCitmaQ0KKw0KKyMgQ2hlY2sgdGhhdCB0aGUgcHJl Y2lvdXMgdmFyaWFibGVzIHNhdmVkIGluIHRoZSBjYWNoZSBoYXZlIGtlcHQgdGhlIHNhbWUNCisj IHZhbHVlLg0KK2FjX2NhY2hlX2NvcnJ1cHRlZD1mYWxzZQ0KK2ZvciBhY192YXIgaW4gJGFjX3By ZWNpb3VzX3ZhcnM7IGRvDQorICBldmFsIGFjX29sZF9zZXQ9XCRhY19jdl9lbnZfJHthY192YXJ9 X3NldA0KKyAgZXZhbCBhY19uZXdfc2V0PVwkYWNfZW52XyR7YWNfdmFyfV9zZXQNCisgIGV2YWwg YWNfb2xkX3ZhbD1cJGFjX2N2X2Vudl8ke2FjX3Zhcn1fdmFsdWUNCisgIGV2YWwgYWNfbmV3X3Zh bD1cJGFjX2Vudl8ke2FjX3Zhcn1fdmFsdWUNCisgIGNhc2UgJGFjX29sZF9zZXQsJGFjX25ld19z ZXQgaW4NCisgICAgc2V0LCkNCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGVycm9yOiBcYCRhY192YXInIHdhcyBzZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4g dGhlIHByZXZpb3VzIHJ1biIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zh cicgd2FzIHNldCB0byBcYCRhY19vbGRfdmFsJyBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQ0K KyAgICAgIGFjX2NhY2hlX2NvcnJ1cHRlZD06IDs7DQorICAgICxzZXQpDQorICAgICAgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMg bm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBlcnJv cjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQ0KKyAg ICAgIGFjX2NhY2hlX2NvcnJ1cHRlZD06IDs7DQorICAgICwpOzsNCisgICAgKikNCisgICAgICBp ZiB0ZXN0ICJ4JGFjX29sZF92YWwiICE9ICJ4JGFjX25ld192YWwiOyB0aGVuDQorCSMgZGlmZmVy ZW5jZXMgaW4gd2hpdGVzcGFjZSBkbyBub3QgbGVhZCB0byBmYWlsdXJlLg0KKwlhY19vbGRfdmFs X3c9YGVjaG8geCAkYWNfb2xkX3ZhbGANCisJYWNfbmV3X3ZhbF93PWBlY2hvIHggJGFjX25ld192 YWxgDQorCWlmIHRlc3QgIiRhY19vbGRfdmFsX3ciICE9ICIkYWNfbmV3X3ZhbF93IjsgdGhlbg0K KwkgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IFxgJGFj X3ZhcicgaGFzIGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIHJ1bjoiID4mNQ0KKyRhc19lY2hv ICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91 cyBydW46IiA+JjI7fQ0KKwkgIGFjX2NhY2hlX2NvcnJ1cHRlZD06DQorCWVsc2UNCisJICB7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHdhcm5pbmc6IGlnbm9yaW5nIHdo aXRlc3BhY2UgY2hhbmdlcyBpbiBcYCRhY192YXInIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+ JjUNCiskYXNfZWNobyAiJGFzX21lOiB3YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNoYW5n ZXMgaW4gXGAkYWNfdmFyJyBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30NCisJICBldmFs ICRhY192YXI9XCRhY19vbGRfdmFsDQorCWZpDQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogICBmb3JtZXIgdmFsdWU6ICBcYCRhY19vbGRfdmFsJyIgPiY1DQorJGFz X2VjaG8gIiRhc19tZTogICBmb3JtZXIgdmFsdWU6ICBcYCRhY19vbGRfdmFsJyIgPiYyO30NCisJ eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAgIGN1cnJlbnQgdmFsdWU6 IFxgJGFjX25ld192YWwnIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiAgIGN1cnJlbnQgdmFsdWU6 IFxgJGFjX25ld192YWwnIiA+JjI7fQ0KKyAgICAgIGZpOzsNCisgIGVzYWMNCisgICMgUGFzcyBw cmVjaW91cyB2YXJpYWJsZXMgdG8gY29uZmlnLnN0YXR1cy4NCisgIGlmIHRlc3QgIiRhY19uZXdf c2V0IiA9IHNldDsgdGhlbg0KKyAgICBjYXNlICRhY19uZXdfdmFsIGluDQorICAgICpcJyopIGFj X2FyZz0kYWNfdmFyPWAkYXNfZWNobyAiJGFjX25ld192YWwiIHwgc2VkICJzLycvJ1xcXFxcXFxc JycvZyJgIDs7DQorICAgICopIGFjX2FyZz0kYWNfdmFyPSRhY19uZXdfdmFsIDs7DQorICAgIGVz YWMNCisgICAgY2FzZSAiICRhY19jb25maWd1cmVfYXJncyAiIGluDQorICAgICAgKiIgJyRhY19h cmcnICIqKSA7OyAjIEF2b2lkIGR1cHMuICBVc2Ugb2YgcXVvdGVzIGVuc3VyZXMgYWNjdXJhY3ku DQorICAgICAgKikgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzICIgJyRhY19hcmcnIiA7 Ow0KKyAgICBlc2FjDQorICBmaQ0KK2RvbmUNCitpZiAkYWNfY2FjaGVfY29ycnVwdGVkOyB0aGVu DQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBc YCRhY19wd2QnOiIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6 IiA+JjI7fQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJv cjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+ JjUNCiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQg Y2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjI7fQ0KKyAgYXNfZm5fZXJyb3IgInJ1biBcYG1h a2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiICIk TElORU5PIiA1DQorZmkNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KKyMjIE1haW4gYm9k eSBvZiBzY3JpcHQuICMjDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisNCithY19leHQ9 Yw0KK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnDQorYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1Mg JENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1Jw0KK2FjX2xpbms9JyRDQyAtbyBjb25mdGVz dCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAk TElCUyA+JjUnDQorYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQ0KKw0KKw0K Kw0KKw0KK2FjX2F1eF9kaXI9DQorZm9yIGFjX2RpciBpbiAuLi8uLi8uLi8uLiAiJHNyY2RpciIv Li4vLi4vLi4vLi47IGRvDQorICBmb3IgYWNfdCBpbiBpbnN0YWxsLXNoIGluc3RhbGwuc2ggc2h0 b29sOyBkbw0KKyAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY190IjsgdGhlbg0KKyAgICAgIGFj X2F1eF9kaXI9JGFjX2Rpcg0KKyAgICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyLyRhY190 IC1jIg0KKyAgICAgIGJyZWFrIDINCisgICAgZmkNCisgIGRvbmUNCitkb25lDQoraWYgdGVzdCAt eiAiJGFjX2F1eF9kaXIiOyB0aGVuDQorICBhc19mbl9lcnJvciAiY2Fubm90IGZpbmQgaW5zdGFs bC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluIC4uLy4uLy4uLy4uIFwiJHNyY2RpclwiLy4u Ly4uLy4uLy4uIiAiJExJTkVOTyIgNQ0KK2ZpDQorDQorIyBUaGVzZSB0aHJlZSB2YXJpYWJsZXMg YXJlIHVuZG9jdW1lbnRlZCBhbmQgdW5zdXBwb3J0ZWQsDQorIyBhbmQgYXJlIGludGVuZGVkIHRv IGJlIHdpdGhkcmF3biBpbiBhIGZ1dHVyZSBBdXRvY29uZiByZWxlYXNlLg0KKyMgVGhleSBjYW4g Y2F1c2Ugc2VyaW91cyBwcm9ibGVtcyBpZiBhIGJ1aWxkZXIncyBzb3VyY2UgdHJlZSBpcyBpbiBh IGRpcmVjdG9yeQ0KKyMgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIHVudXN1YWwgY2hhcmFjdGVy cy4NCithY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiICAj IFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuDQorYWNfY29uZmlnX3N1Yj0iJFNIRUxMICRhY19h dXhfZGlyL2NvbmZpZy5zdWIiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuDQorYWNfY29u ZmlndXJlPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlndXJlIiAgIyBQbGVhc2UgZG9uJ3QgdXNl IHRoaXMgdmFyLg0KKw0KKw0KKw0KKw0KKyMgTWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1 Yi4NCiskU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiIHN1bjQgPi9kZXYvbnVsbCAyPiYx IHx8DQorICBhc19mbl9lcnJvciAiY2Fubm90IHJ1biAkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmln LnN1YiIgIiRMSU5FTk8iIDUNCisNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUNCiskYXNfZWNob19uICJjaGVj a2luZyBidWlsZCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfYnVp bGQrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitl bHNlDQorICBhY19idWlsZF9hbGlhcz0kYnVpbGRfYWxpYXMNCit0ZXN0ICJ4JGFjX2J1aWxkX2Fs aWFzIiA9IHggJiYNCisgIGFjX2J1aWxkX2FsaWFzPWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZp Zy5ndWVzcyJgDQordGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmDQorICBhc19mbl9lcnJv ciAiY2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7IHlvdSBtdXN0IHNwZWNpZnkgb25lIiAiJExJTkVO TyIgNQ0KK2FjX2N2X2J1aWxkPWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICRhY19i dWlsZF9hbGlhc2AgfHwNCisgIGFzX2ZuX2Vycm9yICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmln LnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQ0KKw0KK2ZpDQoreyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9idWlsZCIg PiY1DQorJGFzX2VjaG8gIiRhY19jdl9idWlsZCIgPiY2OyB9DQorY2FzZSAkYWNfY3ZfYnVpbGQg aW4NCisqLSotKikgOzsNCisqKSBhc19mbl9lcnJvciAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmlj YWwgYnVpbGQiICIkTElORU5PIiA1OzsNCitlc2FjDQorYnVpbGQ9JGFjX2N2X2J1aWxkDQorYWNf c2F2ZV9JRlM9JElGUzsgSUZTPSctJw0KK3NldCB4ICRhY19jdl9idWlsZA0KK3NoaWZ0DQorYnVp bGRfY3B1PSQxDQorYnVpbGRfdmVuZG9yPSQyDQorc2hpZnQ7IHNoaWZ0DQorIyBSZW1lbWJlciwg dGhlIGZpcnN0IGNoYXJhY3RlciBvZiBJRlMgaXMgdXNlZCB0byBjcmVhdGUgJCosDQorIyBleGNl cHQgd2l0aCBvbGQgc2hlbGxzOg0KK2J1aWxkX29zPSQqDQorSUZTPSRhY19zYXZlX0lGUw0KK2Nh c2UgJGJ1aWxkX29zIGluICpcICopIGJ1aWxkX29zPWBlY2hvICIkYnVpbGRfb3MiIHwgc2VkICdz LyAvLS9nJ2A7OyBlc2FjDQorDQorDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUNCiskYXNfZWNob19uICJjaGVj a2luZyBob3N0IHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9DQoraWYgdGVzdCAiJHthY19jdl9ob3N0 K3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxz ZQ0KKyAgaWYgdGVzdCAieCRob3N0X2FsaWFzIiA9IHg7IHRoZW4NCisgIGFjX2N2X2hvc3Q9JGFj X2N2X2J1aWxkDQorZWxzZQ0KKyAgYWNfY3ZfaG9zdD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25m aWcuc3ViIiAkaG9zdF9hbGlhc2AgfHwNCisgICAgYXNfZm5fZXJyb3IgIiRTSEVMTCAkYWNfYXV4 X2Rpci9jb25maWcuc3ViICRob3N0X2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUNCitmaQ0KKw0K K2ZpDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRh Y19jdl9ob3N0IiA+JjUNCiskYXNfZWNobyAiJGFjX2N2X2hvc3QiID4mNjsgfQ0KK2Nhc2UgJGFj X2N2X2hvc3QgaW4NCisqLSotKikgOzsNCisqKSBhc19mbl9lcnJvciAiaW52YWxpZCB2YWx1ZSBv ZiBjYW5vbmljYWwgaG9zdCIgIiRMSU5FTk8iIDU7Ow0KK2VzYWMNCitob3N0PSRhY19jdl9ob3N0 DQorYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJw0KK3NldCB4ICRhY19jdl9ob3N0DQorc2hpZnQN Citob3N0X2NwdT0kMQ0KK2hvc3RfdmVuZG9yPSQyDQorc2hpZnQ7IHNoaWZ0DQorIyBSZW1lbWJl ciwgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBJRlMgaXMgdXNlZCB0byBjcmVhdGUgJCosDQorIyBl eGNlcHQgd2l0aCBvbGQgc2hlbGxzOg0KK2hvc3Rfb3M9JCoNCitJRlM9JGFjX3NhdmVfSUZTDQor Y2FzZSAkaG9zdF9vcyBpbiAqXCAqKSBob3N0X29zPWBlY2hvICIkaG9zdF9vcyIgfCBzZWQgJ3Mv IC8tL2cnYDs7IGVzYWMNCisNCisNCithbV9fYXBpX3ZlcnNpb249IjEuOSINCisjIEZpbmQgYSBn b29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwNCisj IHNvIG9uZSBzY3JpcHQgaXMgYXMgZ29vZCBhcyBhbm90aGVyLiAgQnV0IGF2b2lkIHRoZSBicm9r ZW4gb3INCisjIGluY29tcGF0aWJsZSB2ZXJzaW9uczoNCisjIFN5c1YgL2V0Yy9pbnN0YWxsLCAv dXNyL3NiaW4vaW5zdGFsbA0KKyMgU3VuT1MgL3Vzci9ldGMvaW5zdGFsbA0KKyMgSVJJWCAvc2Jp bi9pbnN0YWxsDQorIyBBSVggL2Jpbi9pbnN0YWxsDQorIyBBbWlnYU9TIC9DL2luc3RhbGwsIHdo aWNoIGluc3RhbGxzIGJvb3RibG9ja3Mgb24gZmxvcHB5IGRpc2NzDQorIyBBSVggNCAvdXNyL2Jp bi9pbnN0YWxsYnNkLCB3aGljaCBkb2Vzbid0IHdvcmsgd2l0aG91dCBhIC1nIGZsYWcNCisjIEFG UyAvdXNyL2Fmc3dzL2Jpbi9pbnN0YWxsLCB3aGljaCBtaXNoYW5kbGVzIG5vbmV4aXN0ZW50IGFy Z3MNCisjIFNWUjQgL3Vzci91Y2IvaW5zdGFsbCwgd2hpY2ggdHJpZXMgdG8gdXNlIHRoZSBub25l eGlzdGVudCBncm91cCAic3RhZmYiDQorIyBPUy8yJ3Mgc3lzdGVtIGluc3RhbGwsIHdoaWNoIGhh cyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHNlbWFudGljDQorIyAuL2luc3RhbGwsIHdoaWNoIGNh biBiZSBlcnJvbmVvdXNseSBjcmVhdGVkIGJ5IG1ha2UgZnJvbSAuL2luc3RhbGwuc2guDQorIyBS ZWplY3QgaW5zdGFsbCBwcm9ncmFtcyB0aGF0IGNhbm5vdCBpbnN0YWxsIG11bHRpcGxlIGZpbGVz Lg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y IGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgLXogIiRJTlNU QUxMIjsgdGhlbg0KK2lmIHRlc3QgIiR7YWNfY3ZfcGF0aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0 aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgYXNfc2F2ZV9J RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0K KyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisg ICAgIyBBY2NvdW50IGZvciBwZW9wbGUgd2hvIHB1dCB0cmFpbGluZyBzbGFzaGVzIGluIFBBVEgg ZWxlbWVudHMuDQorY2FzZSAkYXNfZGlyLyBpbiAjKCgNCisgIC4vIHwgLi8vIHwgL1tjQ10vKiB8 IFwNCisgIC9ldGMvKiB8IC91c3Ivc2Jpbi8qIHwgL3Vzci9ldGMvKiB8IC9zYmluLyogfCAvdXNy L2Fmc3dzL2Jpbi8qIHwgXA0KKyAgPzpbXFwvXW9zMltcXC9daW5zdGFsbFtcXC9dKiB8ID86W1xc L11PUzJbXFwvXUlOU1RBTExbXFwvXSogfCBcDQorICAvdXNyL3VjYi8qICkgOzsNCisgICopDQor ICAgICMgT1NGMSBhbmQgU0NPIE9EVCAzLjAgaGF2ZSB0aGVpciBvd24gbmFtZXMgZm9yIGluc3Rh bGwuDQorICAgICMgRG9uJ3QgdXNlIGluc3RhbGxic2QgZnJvbSBPU0Ygc2luY2UgaXQgaW5zdGFs bHMgc3R1ZmYgYXMgcm9vdA0KKyAgICAjIGJ5IGRlZmF1bHQuDQorICAgIGZvciBhY19wcm9nIGlu IGdpbnN0YWxsIHNjb2luc3QgaW5zdGFsbDsgZG8NCisgICAgICBmb3IgYWNfZXhlY19leHQgaW4g JycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisJaWYgeyB0ZXN0IC1mICIkYXNfZGly LyRhY19wcm9nJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY19wcm9nJGFj X2V4ZWNfZXh0IjsgfTsgdGhlbg0KKwkgIGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmDQor CSAgICBncmVwIGRzcG1zZyAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgPi9kZXYvbnVs bCAyPiYxOyB0aGVuDQorCSAgICAjIEFJWCBpbnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJs ZSBjYWxsaW5nIGNvbnZlbnRpb24uDQorCSAgICA6DQorCSAgZWxpZiB0ZXN0ICRhY19wcm9nID0g aW5zdGFsbCAmJg0KKwkgICAgZ3JlcCBwd3BsdXMgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19l eHQiID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKwkgICAgIyBwcm9ncmFtLXNwZWNpZmljIGluc3Rh bGwgc2NyaXB0IHVzZWQgYnkgSFAgcHdwbHVzLS1kb24ndCB1c2UuDQorCSAgICA6DQorCSAgZWxz ZQ0KKwkgICAgcm0gLXJmIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50d28gY29uZnRlc3QuZGlyDQor CSAgICBlY2hvIG9uZSA+IGNvbmZ0ZXN0Lm9uZQ0KKwkgICAgZWNobyB0d28gPiBjb25mdGVzdC50 d28NCisJICAgIG1rZGlyIGNvbmZ0ZXN0LmRpcg0KKwkgICAgaWYgIiRhc19kaXIvJGFjX3Byb2ck YWNfZXhlY19leHQiIC1jIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50d28gImBwd2RgL2NvbmZ0ZXN0 LmRpciIgJiYNCisJICAgICAgdGVzdCAtcyBjb25mdGVzdC5vbmUgJiYgdGVzdCAtcyBjb25mdGVz dC50d28gJiYNCisJICAgICAgdGVzdCAtcyBjb25mdGVzdC5kaXIvY29uZnRlc3Qub25lICYmDQor CSAgICAgIHRlc3QgLXMgY29uZnRlc3QuZGlyL2NvbmZ0ZXN0LnR3bw0KKwkgICAgdGhlbg0KKwkg ICAgICBhY19jdl9wYXRoX2luc3RhbGw9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQgLWMi DQorCSAgICAgIGJyZWFrIDMNCisJICAgIGZpDQorCSAgZmkNCisJZmkNCisgICAgICBkb25lDQor ICAgIGRvbmUNCisgICAgOzsNCitlc2FjDQorDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0K Kw0KK3JtIC1yZiBjb25mdGVzdC5vbmUgY29uZnRlc3QudHdvIGNvbmZ0ZXN0LmRpcg0KKw0KK2Zp DQorICBpZiB0ZXN0ICIke2FjX2N2X3BhdGhfaW5zdGFsbCtzZXR9IiA9IHNldDsgdGhlbg0KKyAg ICBJTlNUQUxMPSRhY19jdl9wYXRoX2luc3RhbGwNCisgIGVsc2UNCisgICAgIyBBcyBhIGxhc3Qg cmVzb3J0LCB1c2UgdGhlIHNsb3cgc2hlbGwgc2NyaXB0LiAgRG9uJ3QgY2FjaGUgYQ0KKyAgICAj IHZhbHVlIGZvciBJTlNUQUxMIHdpdGhpbiBhIHNvdXJjZSBkaXJlY3RvcnksIGJlY2F1c2UgdGhh dCB3aWxsDQorICAgICMgYnJlYWsgb3RoZXIgcGFja2FnZXMgdXNpbmcgdGhlIGNhY2hlIGlmIHRo YXQgZGlyZWN0b3J5IGlzDQorICAgICMgcmVtb3ZlZCwgb3IgaWYgdGhlIHZhbHVlIGlzIGEgcmVs YXRpdmUgbmFtZS4NCisgICAgSU5TVEFMTD0kYWNfaW5zdGFsbF9zaA0KKyAgZmkNCitmaQ0KK3sg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSU5TVEFMTCIg PiY1DQorJGFzX2VjaG8gIiRJTlNUQUxMIiA+JjY7IH0NCisNCisjIFVzZSB0ZXN0IC16IGJlY2F1 c2UgU3VuT1M0IHNoIG1pc2hhbmRsZXMgYnJhY2VzIGluICR7dmFyLXZhbH0uDQorIyBJdCB0aGlu a3MgdGhlIGZpcnN0IGNsb3NlIGJyYWNlIGVuZHMgdGhlIHZhcmlhYmxlIHN1YnN0aXR1dGlvbi4N Cit0ZXN0IC16ICIkSU5TVEFMTF9QUk9HUkFNIiAmJiBJTlNUQUxMX1BST0dSQU09JyR7SU5TVEFM TH0nDQorDQordGVzdCAteiAiJElOU1RBTExfU0NSSVBUIiAmJiBJTlNUQUxMX1NDUklQVD0nJHtJ TlNUQUxMfScNCisNCit0ZXN0IC16ICIkSU5TVEFMTF9EQVRBIiAmJiBJTlNUQUxMX0RBVEE9JyR7 SU5TVEFMTH0gLW0gNjQ0Jw0KKw0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgd2hldGhlciBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lIiA+JjUNCisk YXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmUuLi4g IiA+JjY7IH0NCisjIEp1c3QgaW4gY2FzZQ0KK3NsZWVwIDENCitlY2hvIHRpbWVzdGFtcCA+IGNv bmZ0ZXN0LmZpbGUNCisjIERvIGBzZXQnIGluIGEgc3Vic2hlbGwgc28gd2UgZG9uJ3QgY2xvYmJl ciB0aGUgY3VycmVudCBzaGVsbCdzDQorIyBhcmd1bWVudHMuICBNdXN0IHRyeSAtTCBmaXJzdCBp biBjYXNlIGNvbmZpZ3VyZSBpcyBhY3R1YWxseSBhDQorIyBzeW1saW5rOyBzb21lIHN5c3RlbXMg cGxheSB3ZWlyZCBnYW1lcyB3aXRoIHRoZSBtb2QgdGltZSBvZiBzeW1saW5rcw0KKyMgKGVnIEZy ZWVCU0QgcmV0dXJucyB0aGUgbW9kIHRpbWUgb2YgdGhlIHN5bWxpbmsncyBjb250YWluaW5nDQor IyBkaXJlY3RvcnkpLg0KK2lmICgNCisgICBzZXQgWCBgbHMgLUx0ICRzcmNkaXIvY29uZmlndXJl IGNvbmZ0ZXN0LmZpbGUgMj4gL2Rldi9udWxsYA0KKyAgIGlmIHRlc3QgIiQqIiA9ICJYIjsgdGhl bg0KKyAgICAgICMgLUwgZGlkbid0IHdvcmsuDQorICAgICAgc2V0IFggYGxzIC10ICRzcmNkaXIv Y29uZmlndXJlIGNvbmZ0ZXN0LmZpbGVgDQorICAgZmkNCisgICBybSAtZiBjb25mdGVzdC5maWxl DQorICAgaWYgdGVzdCAiJCoiICE9ICJYICRzcmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGUi IFwNCisgICAgICAmJiB0ZXN0ICIkKiIgIT0gIlggY29uZnRlc3QuZmlsZSAkc3JjZGlyL2NvbmZp Z3VyZSI7IHRoZW4NCisNCisgICAgICAjIElmIG5laXRoZXIgbWF0Y2hlZCwgdGhlbiB3ZSBoYXZl IGEgYnJva2VuIGxzLiAgVGhpcyBjYW4gaGFwcGVuDQorICAgICAgIyBpZiwgZm9yIGluc3RhbmNl LCBDT05GSUdfU0hFTEwgaXMgYmFzaCBhbmQgaXQgaW5oZXJpdHMgYQ0KKyAgICAgICMgYnJva2Vu IGxzIGFsaWFzIGZyb20gdGhlIGVudmlyb25tZW50LiAgVGhpcyBoYXMgYWN0dWFsbHkNCisgICAg ICAjIGhhcHBlbmVkLiAgU3VjaCBhIHN5c3RlbSBjb3VsZCBub3QgYmUgY29uc2lkZXJlZCAic2Fu ZSIuDQorICAgICAgYXNfZm5fZXJyb3IgImxzIC10IGFwcGVhcnMgdG8gZmFpbC4gIE1ha2Ugc3Vy ZSB0aGVyZSBpcyBub3QgYSBicm9rZW4NCithbGlhcyBpbiB5b3VyIGVudmlyb25tZW50IiAiJExJ TkVOTyIgNQ0KKyAgIGZpDQorDQorICAgdGVzdCAiJDIiID0gY29uZnRlc3QuZmlsZQ0KKyAgICkN Cit0aGVuDQorICAgIyBPay4NCisgICA6DQorZWxzZQ0KKyAgIGFzX2ZuX2Vycm9yICJuZXdseSBj cmVhdGVkIGZpbGUgaXMgb2xkZXIgdGhhbiBkaXN0cmlidXRlZCBmaWxlcyENCitDaGVjayB5b3Vy IHN5c3RlbSBjbG9jayIgIiRMSU5FTk8iIDUNCitmaQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQ0KKyRhc19lY2hvICJ5ZXMiID4mNjsg fQ0KK3Rlc3QgIiRwcm9ncmFtX3ByZWZpeCIgIT0gTk9ORSAmJg0KKyAgcHJvZ3JhbV90cmFuc2Zv cm1fbmFtZT0icyZeJiRwcm9ncmFtX3ByZWZpeCY7JHByb2dyYW1fdHJhbnNmb3JtX25hbWUiDQor IyBVc2UgYSBkb3VibGUgJCBzbyBtYWtlIGlnbm9yZXMgaXQuDQordGVzdCAiJHByb2dyYW1fc3Vm Zml4IiAhPSBOT05FICYmDQorICBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSJzJlwkJiRwcm9ncmFt X3N1ZmZpeCY7JHByb2dyYW1fdHJhbnNmb3JtX25hbWUiDQorIyBEb3VibGUgYW55IFwgb3IgJC4N CisjIEJ5IGRlZmF1bHQgd2FzIGBzLHgseCcsIHJlbW92ZSBpdCBpZiB1c2VsZXNzLg0KK2FjX3Nj cmlwdD0ncy9bXFwkXS8mJi9nO3MvO3MseCx4LCQvLycNCitwcm9ncmFtX3RyYW5zZm9ybV9uYW1l PWAkYXNfZWNobyAiJHByb2dyYW1fdHJhbnNmb3JtX25hbWUiIHwgc2VkICIkYWNfc2NyaXB0ImAN CisNCisjIGV4cGFuZCAkYWNfYXV4X2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoDQorYW1fYXV4X2Rp cj1gY2QgJGFjX2F1eF9kaXIgJiYgcHdkYA0KKw0KK3Rlc3QgeCIke01JU1NJTkcrc2V0fSIgPSB4 c2V0IHx8IE1JU1NJTkc9Ilwke1NIRUxMfSAkYW1fYXV4X2Rpci9taXNzaW5nIg0KKyMgVXNlIGV2 YWwgdG8gZXhwYW5kICRTSEVMTA0KK2lmIGV2YWwgIiRNSVNTSU5HIC0tcnVuIHRydWUiOyB0aGVu DQorICBhbV9taXNzaW5nX3J1bj0iJE1JU1NJTkcgLS1ydW4gIg0KK2Vsc2UNCisgIGFtX21pc3Np bmdfcnVuPQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJO SU5HOiBcYG1pc3NpbmcnIHNjcmlwdCBpcyB0b28gb2xkIG9yIG1pc3NpbmciID4mNQ0KKyRhc19l Y2hvICIkYXNfbWU6IFdBUk5JTkc6IFxgbWlzc2luZycgc2NyaXB0IGlzIHRvbyBvbGQgb3IgbWlz c2luZyIgPiYyO30NCitmaQ0KKw0KK2lmIG1rZGlyIC1wIC0tdmVyc2lvbiAuID4vZGV2L251bGwg Mj4mMSAmJiB0ZXN0ICEgLWQgLi8tLXZlcnNpb247IHRoZW4NCisgICMgV2UgdXNlZCB0byBrZWVw aW5nIHRoZSBgLicgYXMgZmlyc3QgYXJndW1lbnQsIGluIG9yZGVyIHRvDQorICAjIGFsbG93ICQo bWtkaXJfcCkgdG8gYmUgdXNlZCB3aXRob3V0IGFyZ3VtZW50LiAgQXMgaW4NCisgICMgICAkKG1r ZGlyX3ApICQoc29tZWRpcikNCisgICMgd2hlcmUgJChzb21lZGlyKSBpcyBjb25kaXRpb25hbGx5 IGRlZmluZWQuICBIb3dldmVyIHRoaXMgaXMgd3JvbmcNCisgICMgZm9yIHR3byByZWFzb25zOg0K KyAgIyAgMS4gaWYgdGhlIHBhY2thZ2UgaXMgaW5zdGFsbGVkIGJ5IGEgdXNlciB3aG8gY2Fubm90 IHdyaXRlIGAuJw0KKyAgIyAgICAgbWFrZSBpbnN0YWxsIHdpbGwgZmFpbCwNCisgICMgIDIuIHRo ZSBhYm92ZSBjb21tZW50IHNob3VsZCBtb3N0IGNlcnRhaW5seSByZWFkDQorICAjICAgICAkKG1r ZGlyX3ApICQoREVTVERJUikkKHNvbWVkaXIpDQorICAjICAgICBzbyBpdCBkb2VzIG5vdCB3b3Jr IHdoZW4gJChzb21lZGlyKSBpcyB1bmRlZmluZWQgYW5kDQorICAjICAgICAkKERFU1RESVIpIGlz IG5vdC4NCisgICMgIFRvIHN1cHBvcnQgdGhlIGxhdHRlciBjYXNlLCB3ZSBoYXZlIHRvIHdyaXRl DQorICAjICAgICB0ZXN0IC16ICIkKHNvbWVkaXIpIiB8fCAkKG1rZGlyX3ApICQoREVTVERJUikk KHNvbWVkaXIpLA0KKyAgIyAgc28gdGhlIGAuJyB0cmljayBpcyBwb2ludGxlc3MuDQorICBta2Rp cl9wPSdta2RpciAtcCAtLScNCitlbHNlDQorICAjIE9uIE5leHRTdGVwIGFuZCBPcGVuU3RlcCwg dGhlIGBta2RpcicgY29tbWFuZCBkb2VzIG5vdA0KKyAgIyByZWNvZ25pemUgYW55IG9wdGlvbi4g IEl0IHdpbGwgaW50ZXJwcmV0IGFsbCBvcHRpb25zIGFzDQorICAjIGRpcmVjdG9yaWVzIHRvIGNy ZWF0ZSwgYW5kIHRoZW4gYWJvcnQgYmVjYXVzZSBgLicgYWxyZWFkeQ0KKyAgIyBleGlzdHMuDQor ICBmb3IgZCBpbiAuLy1wIC4vLS12ZXJzaW9uOw0KKyAgZG8NCisgICAgdGVzdCAtZCAkZCAmJiBy bWRpciAkZA0KKyAgZG9uZQ0KKyAgIyAkKG1raW5zdGFsbGRpcnMpIGlzIGRlZmluZWQgYnkgQXV0 b21ha2UgaWYgbWtpbnN0YWxsZGlycyBleGlzdHMuDQorICBpZiB0ZXN0IC1mICIkYWNfYXV4X2Rp ci9ta2luc3RhbGxkaXJzIjsgdGhlbg0KKyAgICBta2Rpcl9wPSckKG1raW5zdGFsbGRpcnMpJw0K KyAgZWxzZQ0KKyAgICBta2Rpcl9wPSckKGluc3RhbGxfc2gpIC1kJw0KKyAgZmkNCitmaQ0KKw0K K2ZvciBhY19wcm9nIGluIGdhd2sgbWF3ayBuYXdrIGF3aw0KK2RvDQorICAjIEV4dHJhY3QgdGhl IGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdp dGggYXJncy4NCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQor JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgdGVzdCAi JHthY19jdl9wcm9nX0FXSytzZXR9IiA9IHNldDsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2Fj aGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRBV0siOyB0aGVuDQorICBhY19jdl9w cm9nX0FXSz0iJEFXSyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuDQorZWxzZQ0K K2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQ QVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFz X2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNp b25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAm JiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAg ICBhY19jdl9wcm9nX0FXSz0iJGFjX3Byb2ciDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0K KyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQor DQorZmkNCitmaQ0KK0FXSz0kYWNfY3ZfcHJvZ19BV0sNCitpZiB0ZXN0IC1uICIkQVdLIjsgdGhl bg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRB V0siID4mNQ0KKyRhc19lY2hvICIkQVdLIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJu byIgPiY2OyB9DQorZmkNCisNCisNCisgIHRlc3QgLW4gIiRBV0siICYmIGJyZWFrDQorZG9uZQ0K Kw0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hl dGhlciAke01BS0UtbWFrZX0gc2V0cyBcJChNQUtFKSIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tp bmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJChNQUtFKS4uLiAiID4mNjsgfQ0KK3NldCB4 ICR7TUFLRS1tYWtlfQ0KK2FjX21ha2U9YCRhc19lY2hvICIkMiIgfCBzZWQgJ3MvKy9wL2c7IHMv W15hLXpBLVowLTlfXS9fL2cnYA0KK2lmIHsgYXNfdmFyPWFjX2N2X3Byb2dfbWFrZV8ke2FjX21h a2V9X3NldDsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6 DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGNhdCA+Y29uZnRlc3Qu bWFrZSA8PFxfQUNFT0YNCitTSEVMTCA9IC9iaW4vc2gNCithbGw6DQorCUBlY2hvICdAQEAlJSU9 JChNQUtFKT1AQEAlJSUnDQorX0FDRU9GDQorIyBHTlUgbWFrZSBzb21ldGltZXMgcHJpbnRzICJt YWtlWzFdOiBFbnRlcmluZy4uLiIsIHdoaWNoIHdvdWxkIGNvbmZ1c2UgdXMuDQorY2FzZSBgJHtN QUtFLW1ha2V9IC1mIGNvbmZ0ZXN0Lm1ha2UgMj4vZGV2L251bGxgIGluDQorICAqQEBAJSUlPT8q PUBAQCUlJSopDQorICAgIGV2YWwgYWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0PXllczs7 DQorICAqKQ0KKyAgICBldmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldD1ubzs7DQor ZXNhYw0KK3JtIC1mIGNvbmZ0ZXN0Lm1ha2UNCitmaQ0KK2lmIGV2YWwgdGVzdCBcJGFjX2N2X3By b2dfbWFrZV8ke2FjX21ha2V9X3NldCA9IHllczsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1DQorJGFzX2VjaG8gInllcyIg PiY2OyB9DQorICBTRVRfTUFLRT0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQor ICBTRVRfTUFLRT0iTUFLRT0ke01BS0UtbWFrZX0iDQorZmkNCisNCitybSAtcmYgLnRzdCAyPi9k ZXYvbnVsbA0KK21rZGlyIC50c3QgMj4vZGV2L251bGwNCitpZiB0ZXN0IC1kIC50c3Q7IHRoZW4N CisgIGFtX19sZWFkaW5nX2RvdD0uDQorZWxzZQ0KKyAgYW1fX2xlYWRpbmdfZG90PV8NCitmaQ0K K3JtZGlyIC50c3QgMj4vZGV2L251bGwNCisNCitERVBESVI9IiR7YW1fX2xlYWRpbmdfZG90fWRl cHMiDQorDQorYWNfY29uZmlnX2NvbW1hbmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIGRlcGZpbGVz Ig0KKw0KKw0KK2FtX21ha2U9JHtNQUtFLW1ha2V9DQorY2F0ID4gY29uZmluYyA8PCAnRU5EJw0K K2FtX19kb2l0Og0KKwlAZWNobyBkb25lDQorLlBIT05ZOiBhbV9fZG9pdA0KK0VORA0KKyMgSWYg d2UgZG9uJ3QgZmluZCBhbiBpbmNsdWRlIGRpcmVjdGl2ZSwganVzdCBjb21tZW50IG91dCB0aGUg Y29kZS4NCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n IGZvciBzdHlsZSBvZiBpbmNsdWRlIHVzZWQgYnkgJGFtX21ha2UiID4mNQ0KKyRhc19lY2hvX24g ImNoZWNraW5nIGZvciBzdHlsZSBvZiBpbmNsdWRlIHVzZWQgYnkgJGFtX21ha2UuLi4gIiA+JjY7 IH0NCithbV9faW5jbHVkZT0iIyINCithbV9fcXVvdGU9DQorX2FtX3Jlc3VsdD1ub25lDQorIyBG aXJzdCB0cnkgR05VIG1ha2Ugc3R5bGUgaW5jbHVkZS4NCitlY2hvICJpbmNsdWRlIGNvbmZpbmMi ID4gY29uZm1mDQorIyBXZSBncmVwIG91dCBgRW50ZXJpbmcgZGlyZWN0b3J5JyBhbmQgYExlYXZp bmcgZGlyZWN0b3J5Jw0KKyMgbWVzc2FnZXMgd2hpY2ggY2FuIG9jY3VyIGlmIGB3JyBlbmRzIHVw IGluIE1BS0VGTEFHUy4NCisjIEluIHBhcnRpY3VsYXIgd2UgZG9uJ3QgbG9vayBhdCBgXm1ha2U6 JyBiZWNhdXNlIEdOVSBtYWtlIG1pZ2h0DQorIyBiZSBpbnZva2VkIHVuZGVyIHNvbWUgb3RoZXIg bmFtZSAodXN1YWxseSAiZ21ha2UiKSwgaW4gd2hpY2gNCisjIGNhc2UgaXQgcHJpbnRzIGl0cyBu ZXcgbmFtZSBpbnN0ZWFkIG9mIGBtYWtlJy4NCitpZiB0ZXN0ICJgJGFtX21ha2UgLXMgLWYgY29u Zm1mIDI+IC9kZXYvbnVsbCB8IGdyZXAgLXYgJ2luZyBkaXJlY3RvcnknYCIgPSAiZG9uZSI7IHRo ZW4NCisgICBhbV9faW5jbHVkZT1pbmNsdWRlDQorICAgYW1fX3F1b3RlPQ0KKyAgIF9hbV9yZXN1 bHQ9R05VDQorZmkNCisjIE5vdyB0cnkgQlNEIG1ha2Ugc3R5bGUgaW5jbHVkZS4NCitpZiB0ZXN0 ICIkYW1fX2luY2x1ZGUiID0gIiMiOyB0aGVuDQorICAgZWNobyAnLmluY2x1ZGUgImNvbmZpbmMi JyA+IGNvbmZtZg0KKyAgIGlmIHRlc3QgImAkYW1fbWFrZSAtcyAtZiBjb25mbWYgMj4gL2Rldi9u dWxsYCIgPSAiZG9uZSI7IHRoZW4NCisgICAgICBhbV9faW5jbHVkZT0uaW5jbHVkZQ0KKyAgICAg IGFtX19xdW90ZT0iXCIiDQorICAgICAgX2FtX3Jlc3VsdD1CU0QNCisgICBmaQ0KK2ZpDQorDQor DQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRfYW1f cmVzdWx0IiA+JjUNCiskYXNfZWNobyAiJF9hbV9yZXN1bHQiID4mNjsgfQ0KK3JtIC1mIGNvbmZp bmMgY29uZm1mDQorDQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tp bmcgd2FzIGdpdmVuLg0KK2lmIHRlc3QgIiR7ZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcrc2V0 fSIgPSBzZXQ7IHRoZW4gOg0KKyAgZW5hYmxldmFsPSRlbmFibGVfZGVwZW5kZW5jeV90cmFja2lu ZzsNCitmaQ0KKw0KK2lmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhu bzsgdGhlbg0KKyAgYW1fZGVwY29tcD0iJGFjX2F1eF9kaXIvZGVwY29tcCINCisgIEFNREVQQkFD S1NMQVNIPSdcJw0KK2ZpDQorDQorDQoraWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFj a2luZyIgIT0geG5vOyB0aGVuDQorICBBTURFUF9UUlVFPQ0KKyAgQU1ERVBfRkFMU0U9JyMnDQor ZWxzZQ0KKyAgQU1ERVBfVFJVRT0nIycNCisgIEFNREVQX0ZBTFNFPQ0KK2ZpDQorDQorDQorDQor DQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW11bHRpbGliIHdhcyBnaXZlbi4NCitpZiB0ZXN0 ICIke2VuYWJsZV9tdWx0aWxpYitzZXR9IiA9IHNldDsgdGhlbiA6DQorICBlbmFibGV2YWw9JGVu YWJsZV9tdWx0aWxpYjsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbg0KKyAgeWVzKSBtdWx0aWxpYj15 ZXMgOzsNCisgIG5vKSAgbXVsdGlsaWI9bm8gOzsNCisgICopICAgYXNfZm5fZXJyb3IgImJhZCB2 YWx1ZSAke2VuYWJsZXZhbH0gZm9yIG11bHRpbGliIG9wdGlvbiIgIiRMSU5FTk8iIDUgOzsNCisg ZXNhYw0KK2Vsc2UNCisgIG11bHRpbGliPXllcw0KK2ZpDQorDQorIyBDaGVjayB3aGV0aGVyIC0t ZW5hYmxlLXRhcmdldC1vcHRzcGFjZSB3YXMgZ2l2ZW4uDQoraWYgdGVzdCAiJHtlbmFibGVfdGFy Z2V0X29wdHNwYWNlK3NldH0iID0gc2V0OyB0aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX3Rh cmdldF9vcHRzcGFjZTsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbg0KKyAgeWVzKSB0YXJnZXRfb3B0 c3BhY2U9eWVzIDs7DQorICBubykgIHRhcmdldF9vcHRzcGFjZT1ubyA7Ow0KKyAgKikgICBhc19m bl9lcnJvciAiYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgdGFyZ2V0LW9wdHNwYWNlIG9wdGlv biIgIiRMSU5FTk8iIDUgOzsNCisgZXNhYw0KK2Vsc2UNCisgIHRhcmdldF9vcHRzcGFjZT0NCitm aQ0KKw0KKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1tYWxsb2MtZGVidWdnaW5nIHdhcyBnaXZl bi4NCitpZiB0ZXN0ICIke2VuYWJsZV9tYWxsb2NfZGVidWdnaW5nK3NldH0iID0gc2V0OyB0aGVu IDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX21hbGxvY19kZWJ1Z2dpbmc7IGNhc2UgIiR7ZW5hYmxl dmFsfSIgaW4NCisgIHllcykgbWFsbG9jX2RlYnVnZ2luZz15ZXMgOzsNCisgIG5vKSAgbWFsbG9j X2RlYnVnZ2luZz1ubyA7Ow0KKyAgKikgICBhc19mbl9lcnJvciAiYmFkIHZhbHVlICR7ZW5hYmxl dmFsfSBmb3IgbWFsbG9jLWRlYnVnZ2luZyBvcHRpb24iICIkTElORU5PIiA1IDs7DQorIGVzYWMN CitlbHNlDQorICBtYWxsb2NfZGVidWdnaW5nPQ0KK2ZpDQorDQorIyBDaGVjayB3aGV0aGVyIC0t ZW5hYmxlLW5ld2xpYi1tdWx0aXRocmVhZCB3YXMgZ2l2ZW4uDQoraWYgdGVzdCAiJHtlbmFibGVf bmV3bGliX211bHRpdGhyZWFkK3NldH0iID0gc2V0OyB0aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5h YmxlX25ld2xpYl9tdWx0aXRocmVhZDsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbg0KKyAgeWVzKSBu ZXdsaWJfbXVsdGl0aHJlYWQ9eWVzIDs7DQorICBubykgIG5ld2xpYl9tdWx0aXRocmVhZD1ubyA7 Ow0KKyAgKikgICBhc19mbl9lcnJvciAiYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgbmV3bGli LW11bHRpdGhyZWFkIG9wdGlvbiIgIiRMSU5FTk8iIDUgOzsNCisgZXNhYw0KK2Vsc2UNCisgIG5l d2xpYl9tdWx0aXRocmVhZD15ZXMNCitmaQ0KKw0KKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1u ZXdsaWItaWNvbnYgd2FzIGdpdmVuLg0KK2lmIHRlc3QgIiR7ZW5hYmxlX25ld2xpYl9pY29uditz ZXR9IiA9IHNldDsgdGhlbiA6DQorICBlbmFibGV2YWw9JGVuYWJsZV9uZXdsaWJfaWNvbnY7IGlm IHRlc3QgIiR7bmV3bGliX2ljb252K3NldH0iICE9IHNldDsgdGhlbg0KKyAgIGNhc2UgIiR7ZW5h YmxldmFsfSIgaW4NCisgICAgIHllcykgbmV3bGliX2ljb252PXllcyA7Ow0KKyAgICAgbm8pICBu ZXdsaWJfaWNvbnY9bm8gOzsNCisgICAgICopICAgYXNfZm5fZXJyb3IgImJhZCB2YWx1ZSAke2Vu YWJsZXZhbH0gZm9yIG5ld2xpYi1pY29udiBvcHRpb24iICIkTElORU5PIiA1IDs7DQorICAgZXNh Yw0KKyBmaQ0KK2Vsc2UNCisgIG5ld2xpYl9pY29udj0ke25ld2xpYl9pY29udn0NCitmaQ0KKw0K KyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1uZXdsaWItZWxpeC1sZXZlbCB3YXMgZ2l2ZW4uDQor aWYgdGVzdCAiJHtlbmFibGVfbmV3bGliX2VsaXhfbGV2ZWwrc2V0fSIgPSBzZXQ7IHRoZW4gOg0K KyAgZW5hYmxldmFsPSRlbmFibGVfbmV3bGliX2VsaXhfbGV2ZWw7IGNhc2UgIiR7ZW5hYmxldmFs fSIgaW4NCisgIDApICAgbmV3bGliX2VsaXhfbGV2ZWw9MCA7Ow0KKyAgMSkgICBuZXdsaWJfZWxp eF9sZXZlbD0xIDs7DQorICAyKSAgIG5ld2xpYl9lbGl4X2xldmVsPTIgOzsNCisgIDMpICAgbmV3 bGliX2VsaXhfbGV2ZWw9MyA7Ow0KKyAgNCkgICBuZXdsaWJfZWxpeF9sZXZlbD00IDs7DQorICAq KSAgIGFzX2ZuX2Vycm9yICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciBuZXdsaWItZWxpeC1s ZXZlbCBvcHRpb24iICIkTElORU5PIiA1IDs7DQorIGVzYWMNCitlbHNlDQorICBuZXdsaWJfZWxp eF9sZXZlbD0wDQorZmkNCisNCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbmV3bGliLWlvLWZs b2F0IHdhcyBnaXZlbi4NCitpZiB0ZXN0ICIke2VuYWJsZV9uZXdsaWJfaW9fZmxvYXQrc2V0fSIg PSBzZXQ7IHRoZW4gOg0KKyAgZW5hYmxldmFsPSRlbmFibGVfbmV3bGliX2lvX2Zsb2F0OyBjYXNl ICIke2VuYWJsZXZhbH0iIGluDQorICB5ZXMpIG5ld2xpYl9pb19mbG9hdD15ZXMgOzsNCisgIG5v KSAgbmV3bGliX2lvX2Zsb2F0PW5vIDs7DQorICAqKSAgIGFzX2ZuX2Vycm9yICJiYWQgdmFsdWUg JHtlbmFibGV2YWx9IGZvciBuZXdsaWItaW8tZmxvYXQgb3B0aW9uIiAiJExJTkVOTyIgNSA7Ow0K KyBlc2FjDQorZWxzZQ0KKyAgbmV3bGliX2lvX2Zsb2F0PXllcw0KK2ZpDQorDQorIyBDaGVjayB3 aGV0aGVyIC0tZW5hYmxlLW5ld2xpYi1zdXBwbGllZC1zeXNjYWxscyB3YXMgZ2l2ZW4uDQoraWYg dGVzdCAiJHtlbmFibGVfbmV3bGliX3N1cHBsaWVkX3N5c2NhbGxzK3NldH0iID0gc2V0OyB0aGVu IDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX25ld2xpYl9zdXBwbGllZF9zeXNjYWxsczsgY2FzZSAi JHtlbmFibGV2YWx9IiBpbg0KKyAgeWVzKSBuZXdsaWJfbWF5X3N1cHBseV9zeXNjYWxscz15ZXMg OzsNCisgIG5vKSAgbmV3bGliX21heV9zdXBwbHlfc3lzY2FsbHM9bm8gOzsNCisgICopICAgYXNf Zm5fZXJyb3IgImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIG5ld2xpYi1zdXBwbGllZC1zeXNj YWxscyBvcHRpb24iICIkTElORU5PIiA1IDs7DQorIGVzYWMNCitlbHNlDQorICBuZXdsaWJfbWF5 X3N1cHBseV9zeXNjYWxscz15ZXMNCitmaQ0KKw0KKw0KKw0KK2lmIHRlc3QgeCR7bmV3bGliX21h eV9zdXBwbHlfc3lzY2FsbHN9ID0geHllczsgdGhlbg0KKyAgTUFZX1NVUFBMWV9TWVNDQUxMU19U UlVFPQ0KKyAgTUFZX1NVUFBMWV9TWVNDQUxMU19GQUxTRT0nIycNCitlbHNlDQorICBNQVlfU1VQ UExZX1NZU0NBTExTX1RSVUU9JyMnDQorICBNQVlfU1VQUExZX1NZU0NBTExTX0ZBTFNFPQ0KK2Zp DQorDQorDQorDQordGVzdCAteiAiJHt3aXRoX3RhcmdldF9zdWJkaXJ9IiAmJiB3aXRoX3Rhcmdl dF9zdWJkaXI9Lg0KKw0KK2lmIHRlc3QgIiR7c3JjZGlyfSIgPSAiLiI7IHRoZW4NCisgIGlmIHRl c3QgIiR7d2l0aF90YXJnZXRfc3ViZGlyfSIgIT0gIi4iOyB0aGVuDQorICAgIG5ld2xpYl9iYXNl ZGlyPSIke3NyY2Rpcn0vJHt3aXRoX211bHRpc3JjdG9wfS4uLy4uLy4uLy4uIg0KKyAgZWxzZQ0K KyAgICBuZXdsaWJfYmFzZWRpcj0iJHtzcmNkaXJ9LyR7d2l0aF9tdWx0aXNyY3RvcH0uLi8uLi8u LiINCisgIGZpDQorZWxzZQ0KKyAgbmV3bGliX2Jhc2VkaXI9IiR7c3JjZGlyfS8uLi8uLi8uLiIN CitmaQ0KKw0KKw0KKw0KKw0KKyMgdGVzdCB0byBzZWUgaWYgc3JjZGlyIGFscmVhZHkgY29uZmln dXJlZA0KK2lmIHRlc3QgImBjZCAkc3JjZGlyICYmIHB3ZGAiICE9ICJgcHdkYCIgJiYNCisgICB0 ZXN0IC1mICRzcmNkaXIvY29uZmlnLnN0YXR1czsgdGhlbg0KKyAgYXNfZm5fZXJyb3IgInNvdXJj ZSBkaXJlY3RvcnkgYWxyZWFkeSBjb25maWd1cmVkOyBydW4gXCJtYWtlIGRpc3RjbGVhblwiIHRo ZXJlIGZpcnN0IiAiJExJTkVOTyIgNQ0KK2ZpDQorDQorIyB0ZXN0IHdoZXRoZXIgd2UgaGF2ZSBj eWdwYXRoDQoraWYgdGVzdCAteiAiJENZR1BBVEhfVyI7IHRoZW4NCisgIGlmIChjeWdwYXRoIC0t dmVyc2lvbikgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgICBDWUdQQVRIX1c9J2N5 Z3BhdGggLXcnDQorICBlbHNlDQorICAgIENZR1BBVEhfVz1lY2hvDQorICBmaQ0KK2ZpDQorDQor DQorIyBEZWZpbmUgdGhlIGlkZW50aXR5IG9mIHRoZSBwYWNrYWdlLg0KKyBQQUNLQUdFPSduZXds aWInDQorIFZFUlNJT049JzEuMTkuMCcNCisNCisNCisjIFNvbWUgdG9vbHMgQXV0b21ha2UgbmVl ZHMuDQorDQorQUNMT0NBTD0ke0FDTE9DQUwtIiR7YW1fbWlzc2luZ19ydW59YWNsb2NhbC0ke2Ft X19hcGlfdmVyc2lvbn0ifQ0KKw0KKw0KK0FVVE9DT05GPSR7QVVUT0NPTkYtIiR7YW1fbWlzc2lu Z19ydW59YXV0b2NvbmYifQ0KKw0KKw0KK0FVVE9NQUtFPSR7QVVUT01BS0UtIiR7YW1fbWlzc2lu Z19ydW59YXV0b21ha2UtJHthbV9fYXBpX3ZlcnNpb259In0NCisNCisNCitBVVRPSEVBREVSPSR7 QVVUT0hFQURFUi0iJHthbV9taXNzaW5nX3J1bn1hdXRvaGVhZGVyIn0NCisNCisNCitNQUtFSU5G Tz0ke01BS0VJTkZPLSIke2FtX21pc3NpbmdfcnVufW1ha2VpbmZvIn0NCisNCitpbnN0YWxsX3No PSR7aW5zdGFsbF9zaC0iJGFtX2F1eF9kaXIvaW5zdGFsbC1zaCJ9DQorDQorIyBJbnN0YWxsZWQg YmluYXJpZXMgYXJlIHVzdWFsbHkgc3RyaXBwZWQgdXNpbmcgYHN0cmlwJyB3aGVuIHRoZSB1c2Vy DQorIyBydW4gYG1ha2UgaW5zdGFsbC1zdHJpcCcuICBIb3dldmVyIGBzdHJpcCcgbWlnaHQgbm90 IGJlIHRoZSByaWdodA0KKyMgdG9vbCB0byB1c2UgaW4gY3Jvc3MtY29tcGlsYXRpb24gZW52aXJv bm1lbnRzLCB0aGVyZWZvcmUgQXV0b21ha2UNCisjIHdpbGwgaG9ub3IgdGhlIGBTVFJJUCcgZW52 aXJvbm1lbnQgdmFyaWFibGUgdG8gb3ZlcnJ1bGUgdGhpcyBwcm9ncmFtLg0KK2lmIHRlc3QgIiRj cm9zc19jb21waWxpbmciICE9IG5vOyB0aGVuDQorICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVm aXgiOyB0aGVuDQorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVm aXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KK3NldCBk dW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRh c19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7 YWNfY3ZfcHJvZ19TVFJJUCtzZXR9IiA9IHNldDsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2Fj aGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRTVFJJUCI7IHRoZW4NCisgIGFjX2N2 X3Byb2dfU1RSSVA9IiRTVFJJUCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuDQor ZWxzZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGly IGluICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIi ICYmIGFzX2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9l eHRlbnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf ZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhl bg0KKyAgICBhY19jdl9wcm9nX1NUUklQPSIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIg0KKyAgICAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25l DQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCitTVFJJUD0kYWNfY3ZfcHJvZ19TVFJJ UA0KK2lmIHRlc3QgLW4gIiRTVFJJUCI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkU1RSSVAiID4mNQ0KKyRhc19lY2hvICIkU1RSSVAi ID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKw0KK2Zp DQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfU1RSSVAiOyB0aGVuDQorICBhY19jdF9TVFJJUD0k U1RSSVANCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAic3RyaXAiLCBzbyBpdCBjYW4g YmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KK3NldCBkdW1teSBzdHJpcDsgYWNfd29yZD0k Mg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y ICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+ JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfU1RSSVArc2V0fSIgPSBzZXQ7IHRo ZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1u ICIkYWNfY3RfU1RSSVAiOyB0aGVuDQorICBhY19jdl9wcm9nX2FjX2N0X1NUUklQPSIkYWNfY3Rf U1RSSVAiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZl X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2Rv DQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0K KyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8N CisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rl c3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNfY3Zf cHJvZ19hY19jdF9TVFJJUD0ic3RyaXAiDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAg ICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQor ZmkNCitmaQ0KK2FjX2N0X1NUUklQPSRhY19jdl9wcm9nX2FjX2N0X1NUUklQDQoraWYgdGVzdCAt biAiJGFjX2N0X1NUUklQIjsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9TVFJJUCIgPiY1DQorJGFzX2VjaG8gIiRhY19jdF9T VFJJUCIgPiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQor ICBpZiB0ZXN0ICJ4JGFjX2N0X1NUUklQIiA9IHg7IHRoZW4NCisgICAgU1RSSVA9IjoiDQorICBl bHNlDQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4NCit5ZXM6 KQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNp bmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUNCiskYXNf ZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0 aCBob3N0IHRyaXBsZXQiID4mMjt9DQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7DQorZXNhYw0KKyAg ICBTVFJJUD0kYWNfY3RfU1RSSVANCisgIGZpDQorZWxzZQ0KKyAgU1RSSVA9IiRhY19jdl9wcm9n X1NUUklQIg0KK2ZpDQorDQorZmkNCitJTlNUQUxMX1NUUklQX1BST0dSQU09Ilwke1NIRUxMfSBc JChpbnN0YWxsX3NoKSAtYyAtcyINCisNCisjIFdlIG5lZWQgYXdrIGZvciB0aGUgImNoZWNrIiB0 YXJnZXQuICBUaGUgc3lzdGVtICJhd2siIGlzIGJhZCBvbg0KKyMgc29tZSBwbGF0Zm9ybXMuDQor IyBBbHdheXMgZGVmaW5lIEFNVEFSIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Lg0KKw0KK0FN VEFSPSR7QU1UQVItIiR7YW1fbWlzc2luZ19ydW59dGFyIn0NCisNCithbV9fdGFyPScke0FNVEFS fSBjaG9mIC0gIiQkdGFyZGlyIic7IGFtX191bnRhcj0nJHtBTVRBUn0geGYgLScNCisNCisNCisN CisNCisNCisNCisjIEZJWE1FOiBXZSB0ZW1wb3JhcmlseSBkZWZpbmUgb3VyIG93biB2ZXJzaW9u IG9mIEFDX1BST0dfQ0MuICBUaGlzIGlzDQorIyBjb3BpZWQgZnJvbSBhdXRvY29uZiAyLjEyLCBi dXQgZG9lcyBub3QgY2FsbCBBQ19QUk9HX0NDX1dPUktTLiAgV2UNCisjIGFyZSBwcm9iYWJseSB1 c2luZyBhIGNyb3NzIGNvbXBpbGVyLCB3aGljaCB3aWxsIG5vdCBiZSBhYmxlIHRvIGZ1bGx5DQor IyBsaW5rIGFuIGV4ZWN1dGFibGUuICBUaGlzIHNob3VsZCByZWFsbHkgYmUgZml4ZWQgaW4gYXV0 b2NvbmYNCisjIGl0c2VsZi4NCisNCisNCisNCisNCisNCisNCisNCisjIEV4dHJhY3QgdGhlIGZp cnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3Mu DQorc2V0IGR1bW15IGdjYzsgYWNfd29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJj aGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2df Q0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitl bHNlDQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuDQorICBhY19jdl9wcm9nX0NDPSIkQ0MiICMg TGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZT OyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9 JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3Ig YWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsg dGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFz X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19DQz0i Z2NjIg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAk YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitk b25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCitDQz0kYWNfY3Zf cHJvZ19DQw0KK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQ0KKyRhc19lY2hvICIkQ0MiID4m NjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKw0KKw0KK2Rl cGNjPSIkQ0MiICAgYW1fY29tcGlsZXJfbGlzdD0NCisNCit7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGRlcGVuZGVuY3kgc3R5bGUgb2YgJGRlcGNjIiA+ JjUNCiskYXNfZWNob19uICJjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjYy4uLiAi ID4mNjsgfQ0KK2lmIHRlc3QgIiR7YW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUr c2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNl DQorICBpZiB0ZXN0IC16ICIkQU1ERVBfVFJVRSIgJiYgdGVzdCAtZiAiJGFtX2RlcGNvbXAiOyB0 aGVuDQorICAjIFdlIG1ha2UgYSBzdWJkaXIgYW5kIGRvIHRoZSB0ZXN0cyB0aGVyZS4gIE90aGVy d2lzZSB3ZSBjYW4gZW5kIHVwDQorICAjIG1ha2luZyBib2d1cyBmaWxlcyB0aGF0IHdlIGRvbid0 IGtub3cgYWJvdXQgYW5kIG5ldmVyIHJlbW92ZS4gIEZvcg0KKyAgIyBpbnN0YW5jZSBpdCB3YXMg cmVwb3J0ZWQgdGhhdCBvbiBIUC1VWCB0aGUgZ2NjIHRlc3Qgd2lsbCBlbmQgdXANCisgICMgbWFr aW5nIGEgZHVtbXkgZmlsZSBuYW1lZCBgRCcgLS0gYmVjYXVzZSBgLU1EJyBtZWFucyBgcHV0IHRo ZSBvdXRwdXQNCisgICMgaW4gRCcuDQorICBta2RpciBjb25mdGVzdC5kaXINCisgICMgQ29weSBk ZXBjb21wIHRvIHN1YmRpciBiZWNhdXNlIG90aGVyd2lzZSB3ZSB3b24ndCBmaW5kIGl0IGlmIHdl J3JlDQorICAjIHVzaW5nIGEgcmVsYXRpdmUgZGlyZWN0b3J5Lg0KKyAgY3AgIiRhbV9kZXBjb21w IiBjb25mdGVzdC5kaXINCisgIGNkIGNvbmZ0ZXN0LmRpcg0KKyAgIyBXZSB3aWxsIGJ1aWxkIG9i amVjdHMgYW5kIGRlcGVuZGVuY2llcyBpbiBhIHN1YmRpcmVjdG9yeSBiZWNhdXNlDQorICAjIGl0 IGhlbHBzIHRvIGRldGVjdCBpbmFwcGxpY2FibGUgZGVwZW5kZW5jeSBtb2Rlcy4gIEZvciBpbnN0 YW5jZQ0KKyAgIyBib3RoIFRydTY0J3MgY2MgYW5kIElDQyBzdXBwb3J0IC1NRCB0byBvdXRwdXQg ZGVwZW5kZW5jaWVzIGFzIGENCisgICMgc2lkZSBlZmZlY3Qgb2YgY29tcGlsYXRpb24sIGJ1dCBJ Q0Mgd2lsbCBwdXQgdGhlIGRlcGVuZGVuY2llcyBpbg0KKyAgIyB0aGUgY3VycmVudCBkaXJlY3Rv cnkgd2hpbGUgVHJ1NjQgd2lsbCBwdXQgdGhlbSBpbiB0aGUgb2JqZWN0DQorICAjIGRpcmVjdG9y eS4NCisgIG1rZGlyIHN1Yg0KKw0KKyAgYW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5 cGU9bm9uZQ0KKyAgaWYgdGVzdCAiJGFtX2NvbXBpbGVyX2xpc3QiID0gIiI7IHRoZW4NCisgICAg IGFtX2NvbXBpbGVyX2xpc3Q9YHNlZCAtbiAncy9eIypcKFthLXpBLVowLTldKlwpKSQvXDEvcCcg PCAuL2RlcGNvbXBgDQorICBmaQ0KKyAgZm9yIGRlcG1vZGUgaW4gJGFtX2NvbXBpbGVyX2xpc3Q7 IGRvDQorICAgICMgU2V0dXAgYSBzb3VyY2Ugd2l0aCBtYW55IGRlcGVuZGVuY2llcywgYmVjYXVz ZSBzb21lIGNvbXBpbGVycw0KKyAgICAjIGxpa2UgdG8gd3JhcCBsYXJnZSBkZXBlbmRlbmN5IGxp c3RzIG9uIGNvbHVtbiA4MCAod2l0aCBcKSwgYW5kDQorICAgICMgd2Ugc2hvdWxkIG5vdCBjaG9v c2UgYSBkZXBjb21wIG1vZGUgd2hpY2ggaXMgY29uZnVzZWQgYnkgdGhpcy4NCisgICAgIw0KKyAg ICAjIFdlIG5lZWQgdG8gcmVjcmVhdGUgdGhlc2UgZmlsZXMgZm9yIGVhY2ggdGVzdCwgYXMgdGhl IGNvbXBpbGVyIG1heQ0KKyAgICAjIG92ZXJ3cml0ZSBzb21lIG9mIHRoZW0gd2hlbiB0ZXN0aW5n IHdpdGggb2JzY3VyZSBjb21tYW5kIGxpbmVzLg0KKyAgICAjIFRoaXMgaGFwcGVucyBhdCBsZWFz dCB3aXRoIHRoZSBBSVggQyBjb21waWxlci4NCisgICAgOiA+IHN1Yi9jb25mdGVzdC5jDQorICAg IGZvciBpIGluIDEgMiAzIDQgNSA2OyBkbw0KKyAgICAgIGVjaG8gJyNpbmNsdWRlICJjb25mdHN0 JyRpJy5oIicgPj4gc3ViL2NvbmZ0ZXN0LmMNCisgICAgICAjIFVzaW5nIGA6ID4gc3ViL2NvbmZ0 c3QkaS5oJyBjcmVhdGVzIG9ubHkgc3ViL2NvbmZ0c3QxLmggd2l0aA0KKyAgICAgICMgU29sYXJp cyA4J3Mgey91c3IsfS9iaW4vc2guDQorICAgICAgdG91Y2ggc3ViL2NvbmZ0c3QkaS5oDQorICAg IGRvbmUNCisgICAgZWNobyAiJHthbV9faW5jbHVkZX0gJHthbV9fcXVvdGV9c3ViL2NvbmZ0ZXN0 LlBvJHthbV9fcXVvdGV9IiA+IGNvbmZtZg0KKw0KKyAgICBjYXNlICRkZXBtb2RlIGluDQorICAg IG5vc2lkZWVmZmVjdCkNCisgICAgICAjIGFmdGVyIHRoaXMgdGFnLCBtZWNoYW5pc21zIGFyZSBu b3QgYnkgc2lkZS1lZmZlY3QsIHNvIHRoZXknbGwNCisgICAgICAjIG9ubHkgYmUgdXNlZCB3aGVu IGV4cGxpY2l0bHkgcmVxdWVzdGVkDQorICAgICAgaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5j eV90cmFja2luZyIgPSB4eWVzOyB0aGVuDQorCWNvbnRpbnVlDQorICAgICAgZWxzZQ0KKwlicmVh aw0KKyAgICAgIGZpDQorICAgICAgOzsNCisgICAgbm9uZSkgYnJlYWsgOzsNCisgICAgZXNhYw0K KyAgICAjIFdlIGNoZWNrIHdpdGggYC1jJyBhbmQgYC1vJyBmb3IgdGhlIHNha2Ugb2YgdGhlICJk YXNobXN0ZG91dCINCisgICAgIyBtb2RlLiAgSXQgdHVybnMgb3V0IHRoYXQgdGhlIFN1blBybyBD KysgY29tcGlsZXIgZG9lcyBub3QgcHJvcGVybHkNCisgICAgIyBoYW5kbGUgYC1NIC1vJywgYW5k IHdlIG5lZWQgdG8gZGV0ZWN0IHRoaXMuDQorICAgIGlmIGRlcG1vZGU9JGRlcG1vZGUgXA0KKyAg ICAgICBzb3VyY2U9c3ViL2NvbmZ0ZXN0LmMgb2JqZWN0PXN1Yi9jb25mdGVzdC4ke09CSkVYVC1v fSBcDQorICAgICAgIGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlBvIHRtcGRlcGZpbGU9c3ViL2NvbmZ0 ZXN0LlRQbyBcDQorICAgICAgICRTSEVMTCAuL2RlcGNvbXAgJGRlcGNjIC1jIC1vIHN1Yi9jb25m dGVzdC4ke09CSkVYVC1vfSBzdWIvY29uZnRlc3QuYyBcDQorICAgICAgICAgPi9kZXYvbnVsbCAy PmNvbmZ0ZXN0LmVyciAmJg0KKyAgICAgICBncmVwIHN1Yi9jb25mdHN0Ni5oIHN1Yi9jb25mdGVz dC5QbyA+IC9kZXYvbnVsbCAyPiYxICYmDQorICAgICAgIGdyZXAgc3ViL2NvbmZ0ZXN0LiR7T0JK RVhULW99IHN1Yi9jb25mdGVzdC5QbyA+IC9kZXYvbnVsbCAyPiYxICYmDQorICAgICAgICR7TUFL RS1tYWtlfSAtcyAtZiBjb25mbWYgPiAvZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgICAgICMgaWNj IGRvZXNuJ3QgY2hva2Ugb24gdW5rbm93biBvcHRpb25zLCBpdCB3aWxsIGp1c3QgaXNzdWUgd2Fy bmluZ3MNCisgICAgICAjIG9yIHJlbWFya3MgKGV2ZW4gd2l0aCAtV2Vycm9yKS4gIFNvIHdlIGdy ZXAgc3RkZXJyIGZvciBhbnkgbWVzc2FnZQ0KKyAgICAgICMgdGhhdCBzYXlzIGFuIG9wdGlvbiB3 YXMgaWdub3JlZCBvciBub3Qgc3VwcG9ydGVkLg0KKyAgICAgICMgV2hlbiBnaXZlbiAtTVAsIGlj YyA3LjAgYW5kIDcuMSBjb21wbGFpbiB0aHVzbHk6DQorICAgICAgIyAgIGljYzogQ29tbWFuZCBs aW5lIHdhcm5pbmc6IGlnbm9yaW5nIG9wdGlvbiAnLU0nOyBubyBhcmd1bWVudCByZXF1aXJlZA0K KyAgICAgICMgVGhlIGRpYWdub3NpcyBjaGFuZ2VkIGluIGljYyA4LjA6DQorICAgICAgIyAgIGlj YzogQ29tbWFuZCBsaW5lIHJlbWFyazogb3B0aW9uICctTVAnIG5vdCBzdXBwb3J0ZWQNCisgICAg ICBpZiAoZ3JlcCAnaWdub3Jpbmcgb3B0aW9uJyBjb25mdGVzdC5lcnIgfHwNCisgICAgICAgICAg Z3JlcCAnbm90IHN1cHBvcnRlZCcgY29uZnRlc3QuZXJyKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4g OjsgZWxzZQ0KKyAgICAgICAgYW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9JGRl cG1vZGUNCisgICAgICAgIGJyZWFrDQorICAgICAgZmkNCisgICAgZmkNCisgIGRvbmUNCisNCisg IGNkIC4uDQorICBybSAtcmYgY29uZnRlc3QuZGlyDQorZWxzZQ0KKyAgYW1fY3ZfQ0NfZGVwZW5k ZW5jaWVzX2NvbXBpbGVyX3R5cGU9bm9uZQ0KK2ZpDQorDQorZmkNCit7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFtX2N2X0NDX2RlcGVuZGVuY2llc19j b21waWxlcl90eXBlIiA+JjUNCiskYXNfZWNobyAiJGFtX2N2X0NDX2RlcGVuZGVuY2llc19jb21w aWxlcl90eXBlIiA+JjY7IH0NCitDQ0RFUE1PREU9ZGVwbW9kZT0kYW1fY3ZfQ0NfZGVwZW5kZW5j aWVzX2NvbXBpbGVyX3R5cGUNCisNCisNCisNCitpZg0KKyAgdGVzdCAieCRlbmFibGVfZGVwZW5k ZW5jeV90cmFja2luZyIgIT0geG5vIFwNCisgICYmIHRlc3QgIiRhbV9jdl9DQ19kZXBlbmRlbmNp ZXNfY29tcGlsZXJfdHlwZSIgPSBnY2MzOyB0aGVuDQorICBhbV9fZmFzdGRlcENDX1RSVUU9DQor ICBhbV9fZmFzdGRlcENDX0ZBTFNFPScjJw0KK2Vsc2UNCisgIGFtX19mYXN0ZGVwQ0NfVFJVRT0n IycNCisgIGFtX19mYXN0ZGVwQ0NfRkFMU0U9DQorZmkNCisNCisNCitpZiB0ZXN0IC16ICIkQ0Mi OyB0aGVuDQorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNjIiwgc28gaXQgY2FuIGJl IGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitzZXQgZHVtbXkgY2M7IGFjX3dvcmQ9JDINCit7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNf d29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9 DQoraWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19l Y2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbg0K KyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4N CitlbHNlDQorICBhY19wcm9nX3JlamVjdGVkPW5vDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ QVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZl X0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNf ZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYg IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGlmIHRlc3QgIiRhc19kaXIvJGFjX3dv cmQkYWNfZXhlY19leHQiID0gIi91c3IvdWNiL2NjIjsgdGhlbg0KKyAgICAgICBhY19wcm9nX3Jl amVjdGVkPXllcw0KKyAgICAgICBjb250aW51ZQ0KKyAgICAgZmkNCisgICAgYWNfY3ZfcHJvZ19D Qz0iY2MiDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5k ICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0K K2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQoraWYgdGVzdCAkYWNfcHJvZ19y ZWplY3RlZCA9IHllczsgdGhlbg0KKyAgIyBXZSBmb3VuZCBhIGJvZ29uIGluIHRoZSBwYXRoLCBz byBtYWtlIHN1cmUgd2UgbmV2ZXIgdXNlIGl0Lg0KKyAgc2V0IGR1bW15ICRhY19jdl9wcm9nX0ND DQorICBzaGlmdA0KKyAgaWYgdGVzdCAkIyAhPSAwOyB0aGVuDQorICAgICMgV2UgY2hvc2UgYSBk aWZmZXJlbnQgY29tcGlsZXIgZnJvbSB0aGUgYm9ndXMgb25lLg0KKyAgICAjIEhvd2V2ZXIsIGl0 IGhhcyB0aGUgc2FtZSBiYXNlbmFtZSwgc28gdGhlIGJvZ29uIHdpbGwgYmUgY2hvc2VuDQorICAg ICMgZmlyc3QgaWYgd2Ugc2V0IENDIHRvIGp1c3QgdGhlIGJhc2VuYW1lOyB1c2UgdGhlIGZ1bGwg ZmlsZSBuYW1lLg0KKyAgICBzaGlmdA0KKyAgICBhY19jdl9wcm9nX0NDPSIkYXNfZGlyLyRhY193 b3JkJHsxKycgJ30kQCINCisgIGZpDQorZmkNCitmaQ0KK2ZpDQorQ0M9JGFjX2N2X3Byb2dfQ0MN CitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUNCiskYXNfZWNobyAiJENDIiA+JjY7IH0NCitl bHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog bm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQorZmkNCisNCisNCisgIHRlc3QgLXogIiRD QyIgJiYgYXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFibGUgY2MgZm91bmQgaW4gXCRQQVRIIiAiJExJ TkVOTyIgNQ0KK2ZpDQorDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyBHTlUgQyIgPiY1DQorJGFzX2VjaG9fbiAi Y2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgR05VIEMuLi4gIiA+JjY7IH0NCitpZiB0ZXN0 ICIke2FjX2N2X2NfY29tcGlsZXJfZ251K3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hv X24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgY2F0ID4gY29uZnRlc3QuYyA8PEVPRg0KKyNp ZmRlZiBfX0dOVUNfXw0KKyAgeWVzOw0KKyNlbmRpZg0KK0VPRg0KK2lmIHsgYWNfdHJ5PScke0ND LWNjfSAtRSBjb25mdGVzdC5jJw0KKyAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19s aW5lbm8tJExJTkVOT306IFwiJGFjX3RyeVwiIjsgfSA+JjUNCisgIChldmFsICRhY190cnkpIDI+ JjUNCisgIGFjX3N0YXR1cz0kPw0KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1DQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB9 IHwgZWdyZXAgeWVzID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgYWNfY3ZfY19jb21waWxlcl9n bnU9eWVzDQorZWxzZQ0KKyAgYWNfY3ZfY19jb21waWxlcl9nbnU9bm8NCitmaQ0KK2ZpDQoreyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX2Nv bXBpbGVyX2dudSIgPiY1DQorJGFzX2VjaG8gIiRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY2OyB9 DQorDQoraWYgdGVzdCAkYWNfY3ZfY19jb21waWxlcl9nbnUgPSB5ZXM7IHRoZW4NCisgIEdDQz15 ZXMNCisgIGFjX3Rlc3RfQ0ZMQUdTPSIke0NGTEFHUytzZXR9Ig0KKyAgYWNfc2F2ZV9DRkxBR1M9 IiRDRkxBR1MiDQorICBhY190ZXN0X0NGTEFHUz0ke0NGTEFHUytzZXR9DQorYWNfc2F2ZV9DRkxB R1M9JENGTEFHUw0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZyIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg d2hldGhlciAkQ0MgYWNjZXB0cyAtZy4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJv Z19jY19nK3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2 DQorZWxzZQ0KKyAgYWNfc2F2ZV9jX3dlcnJvcl9mbGFnPSRhY19jX3dlcnJvcl9mbGFnDQorICAg YWNfY193ZXJyb3JfZmxhZz15ZXMNCisgICBhY19jdl9wcm9nX2NjX2c9bm8NCisgICBDRkxBR1M9 Ii1nIg0KKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQNCisv KiBlbmQgY29uZmRlZnMuaC4gICovDQorDQoraW50DQorbWFpbiAoKQ0KK3sNCisNCisgIDsNCisg IHJldHVybiAwOw0KK30NCitfQUNFT0YNCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5P IjsgdGhlbiA6DQorICBhY19jdl9wcm9nX2NjX2c9eWVzDQorZWxzZQ0KKyAgQ0ZMQUdTPSIiDQor ICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dA0KKy8qIGVu ZCBjb25mZGVmcy5oLiAgKi8NCisNCitpbnQNCittYWluICgpDQorew0KKw0KKyAgOw0KKyAgcmV0 dXJuIDA7DQorfQ0KK19BQ0VPRg0KK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0 aGVuIDoNCisNCitlbHNlDQorICBhY19jX3dlcnJvcl9mbGFnPSRhY19zYXZlX2Nfd2Vycm9yX2Zs YWcNCisJIENGTEFHUz0iLWciDQorCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz dC4kYWNfZXh0DQorLyogZW5kIGNvbmZkZWZzLmguICAqLw0KKw0KK2ludA0KK21haW4gKCkNCit7 DQorDQorICA7DQorICByZXR1cm4gMDsNCit9DQorX0FDRU9GDQoraWYgYWNfZm5fY190cnlfY29t cGlsZSAiJExJTkVOTyI7IHRoZW4gOg0KKyAgYWNfY3ZfcHJvZ19jY19nPXllcw0KK2ZpDQorcm0g LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0 DQorZmkNCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0 ZXN0LiRhY19leHQNCitmaQ0KK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19v YmpleHQgY29uZnRlc3QuJGFjX2V4dA0KKyAgIGFjX2Nfd2Vycm9yX2ZsYWc9JGFjX3NhdmVfY193 ZXJyb3JfZmxhZw0KK2ZpDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX2ciID4mNQ0KKyRhc19lY2hvICIkYWNfY3ZfcHJvZ19j Y19nIiA+JjY7IH0NCitpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuDQorICBD RkxBR1M9JGFjX3NhdmVfQ0ZMQUdTDQorZWxpZiB0ZXN0ICRhY19jdl9wcm9nX2NjX2cgPSB5ZXM7 IHRoZW4NCisgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuDQorICAgIENGTEFHUz0iLWcgLU8y Ig0KKyAgZWxzZQ0KKyAgICBDRkxBR1M9Ii1nIg0KKyAgZmkNCitlbHNlDQorICBpZiB0ZXN0ICIk R0NDIiA9IHllczsgdGhlbg0KKyAgICBDRkxBR1M9Ii1PMiINCisgIGVsc2UNCisgICAgQ0ZMQUdT PQ0KKyAgZmkNCitmaQ0KKyAgaWYgdGVzdCAiJGFjX3Rlc3RfQ0ZMQUdTIiA9IHNldDsgdGhlbg0K KyAgICBDRkxBR1M9IiRhY19zYXZlX0NGTEFHUyINCisgIGVsaWYgdGVzdCAkYWNfY3ZfcHJvZ19j Y19nID0geWVzOyB0aGVuDQorICAgIENGTEFHUz0iLWcgLU8yIg0KKyAgZWxzZQ0KKyAgICBDRkxB R1M9Ii1PMiINCisgIGZpDQorZWxzZQ0KKyAgR0NDPQ0KKyAgdGVzdCAiJHtDRkxBR1Mrc2V0fSIg PSBzZXQgfHwgQ0ZMQUdTPSItZyINCitmaQ0KKw0KKw0KK2lmIHRlc3QgLW4gIiRhY190b29sX3By ZWZpeCI7IHRoZW4NCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3By ZWZpeH1hcyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1 bW15ICR7YWNfdG9vbF9wcmVmaXh9YXM7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2Vj aG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgdGVzdCAiJHthY19j dl9wcm9nX0FTK3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIg PiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJEFTIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19BUz0i JEFTIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9J RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0K KyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisg ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQor ICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0 X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3By b2dfQVM9IiR7YWNfdG9vbF9wcmVmaXh9YXMiDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0K KyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQor DQorZmkNCitmaQ0KK0FTPSRhY19jdl9wcm9nX0FTDQoraWYgdGVzdCAtbiAiJEFTIjsgdGhlbg0K KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRBUyIg PiY1DQorJGFzX2VjaG8gIiRBUyIgPiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4m NjsgfQ0KK2ZpDQorDQorDQorZmkNCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUyI7IHRoZW4N CisgIGFjX2N0X0FTPSRBUw0KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhcyIsIHNv IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1bW15IGFzOyBhY193 b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4u LiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUytzZXR9IiA9IHNldDsg dGhlbiA6DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3Qg LW4gIiRhY19jdF9BUyI7IHRoZW4NCisgIGFjX2N2X3Byb2dfYWNfY3RfQVM9IiRhY19jdF9BUyIg IyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuDQorZWxzZQ0KK2FzX3NhdmVfSUZTPSRJ RlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElG Uz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgIGZv ciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbw0KKyAgaWYg eyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIk YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX2Fj X2N0X0FTPSJhcyINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Zm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisg IGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitmaQ0KK2ZpDQorYWNf Y3RfQVM9JGFjX2N2X3Byb2dfYWNfY3RfQVMNCitpZiB0ZXN0IC1uICIkYWNfY3RfQVMiOyB0aGVu DQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFj X2N0X0FTIiA+JjUNCiskYXNfZWNobyAiJGFjX2N0X0FTIiA+JjY7IH0NCitlbHNlDQorICB7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRh c19lY2hvICJubyIgPiY2OyB9DQorZmkNCisNCisgIGlmIHRlc3QgIngkYWNfY3RfQVMiID0geDsg dGhlbg0KKyAgICBBUz0iIg0KKyAgZWxzZQ0KKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFj X3Rvb2xfd2FybmVkIGluDQoreWVzOikNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhv c3QgdHJpcGxldCIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3Mg dG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQ0KK2FjX3Rvb2xfd2Fy bmVkPXllcyA7Ow0KK2VzYWMNCisgICAgQVM9JGFjX2N0X0FTDQorICBmaQ0KK2Vsc2UNCisgIEFT PSIkYWNfY3ZfcHJvZ19BUyINCitmaQ0KKw0KK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7 IHRoZW4NCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1h ciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1bW15ICR7 YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAi Y2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgdGVzdCAiJHthY19jdl9wcm9n X0FSK3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQor ZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJEFSIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19BUj0iJEFSIiAj IExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElG UzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZT PSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9y IGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7 IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfQVI9 IiR7YWNfdG9vbF9wcmVmaXh9YXIiDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAgICBi cmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorZmkN CitmaQ0KK0FSPSRhY19jdl9wcm9nX0FSDQoraWYgdGVzdCAtbiAiJEFSIjsgdGhlbg0KKyAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRBUiIgPiY1DQor JGFzX2VjaG8gIiRBUiIgPiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0K K2ZpDQorDQorDQorZmkNCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4NCisgIGFj X2N0X0FSPSRBUg0KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNh biBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1bW15IGFyOyBhY193b3JkPSQy DQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig JGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4m NjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6 DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRh Y19jdF9BUiI7IHRoZW4NCisgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19jdF9BUiIgIyBMZXQg dGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuDQorZWxzZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElG Uz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNf c2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgIGZvciBhY19l eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0 IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX2FjX2N0X0FS PSJhciINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQg JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZpDQor ZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitmaQ0KK2ZpDQorYWNfY3RfQVI9 JGFjX2N2X3Byb2dfYWNfY3RfQVINCitpZiB0ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVuDQorICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0FS IiA+JjUNCiskYXNfZWNobyAiJGFjX2N0X0FSIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hv ICJubyIgPiY2OyB9DQorZmkNCisNCisgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbg0K KyAgICBBUj0iIg0KKyAgZWxzZQ0KKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xf d2FybmVkIGluDQoreWVzOikNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJp cGxldCIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMg bm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQ0KK2FjX3Rvb2xfd2FybmVkPXll cyA7Ow0KK2VzYWMNCisgICAgQVI9JGFjX2N0X0FSDQorICBmaQ0KK2Vsc2UNCisgIEFSPSIkYWNf Y3ZfcHJvZ19BUiINCitmaQ0KKw0KK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4N CisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1yYW5saWIi LCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KK3NldCBkdW1teSAke2Fj X3Rvb2xfcHJlZml4fXJhbmxpYjsgYWNfd29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19u ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3By b2dfUkFOTElCK3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIg PiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4NCisgIGFjX2N2X3Byb2df UkFOTElCPSIkUkFOTElCIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNl DQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4g JFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYg YXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVu c2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi ICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQor ICAgIGFjX2N2X3Byb2dfUkFOTElCPSIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiINCisgICAgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0K K0lGUz0kYXNfc2F2ZV9JRlMNCisNCitmaQ0KK2ZpDQorUkFOTElCPSRhY19jdl9wcm9nX1JBTkxJ Qg0KK2lmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFJBTkxJQiIgPiY1DQorJGFzX2VjaG8gIiRSQU5M SUIiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKw0K K2ZpDQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfUkFOTElCIjsgdGhlbg0KKyAgYWNfY3RfUkFO TElCPSRSQU5MSUINCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicmFubGliIiwgc28g aXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitzZXQgZHVtbXkgcmFubGliOyBh Y193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj a2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29y ZC4uLiAiID4mNjsgfQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIrc2V0fSIg PSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBp ZiB0ZXN0IC1uICIkYWNfY3RfUkFOTElCIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19hY19jdF9SQU5M SUI9IiRhY19jdF9SQU5MSUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vs c2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBp biAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAm JiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0 ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4N CisgICAgYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9InJhbmxpYiINCisgICAgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNf c2F2ZV9JRlMNCisNCitmaQ0KK2ZpDQorYWNfY3RfUkFOTElCPSRhY19jdl9wcm9nX2FjX2N0X1JB TkxJQg0KK2lmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIiOyB0aGVuDQorICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X1JBTkxJQiIgPiY1DQor JGFzX2VjaG8gIiRhY19jdF9SQU5MSUIiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5v IiA+JjY7IH0NCitmaQ0KKw0KKyAgaWYgdGVzdCAieCRhY19jdF9SQU5MSUIiID0geDsgdGhlbg0K KyAgICBSQU5MSUI9IjoiDQorICBlbHNlDQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNf dG9vbF93YXJuZWQgaW4NCit5ZXM6KQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9z dCB0cmlwbGV0IiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0 b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9DQorYWNfdG9vbF93YXJu ZWQ9eWVzIDs7DQorZXNhYw0KKyAgICBSQU5MSUI9JGFjX2N0X1JBTkxJQg0KKyAgZmkNCitlbHNl DQorICBSQU5MSUI9IiRhY19jdl9wcm9nX1JBTkxJQiINCitmaQ0KKw0KK2lmIHRlc3QgLW4gIiRh Y190b29sX3ByZWZpeCI7IHRoZW4NCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHth Y190b29sX3ByZWZpeH1yZWFkZWxmIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGgg YXJncy4NCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1yZWFkZWxmOyBhY193b3JkPSQyDQor eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFj X3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsg fQ0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19SRUFERUxGK3NldH0iID0gc2V0OyB0aGVuIDoNCisg ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJFJFQURF TEYiOyB0aGVuDQorICBhY19jdl9wcm9nX1JFQURFTEY9IiRSRUFERUxGIiAjIExldCB0aGUgdXNl ciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRI X1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lG Uw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0 IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dv cmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfUkVBREVMRj0iJHthY190 b29sX3ByZWZpeH1yZWFkZWxmIg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJl YWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQor ZmkNCitSRUFERUxGPSRhY19jdl9wcm9nX1JFQURFTEYNCitpZiB0ZXN0IC1uICIkUkVBREVMRiI7 IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAkUkVBREVMRiIgPiY1DQorJGFzX2VjaG8gIiRSRUFERUxGIiA+JjY7IH0NCitlbHNlDQorICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0K KyRhc19lY2hvICJubyIgPiY2OyB9DQorZmkNCisNCisNCitmaQ0KK2lmIHRlc3QgLXogIiRhY19j dl9wcm9nX1JFQURFTEYiOyB0aGVuDQorICBhY19jdF9SRUFERUxGPSRSRUFERUxGDQorICAjIEV4 dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInJlYWRlbGYiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt IG5hbWUgd2l0aCBhcmdzLg0KK3NldCBkdW1teSByZWFkZWxmOyBhY193b3JkPSQyDQoreyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQi ID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lm IHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9SRUFERUxGK3NldH0iID0gc2V0OyB0aGVuIDoNCisg ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJGFjX2N0 X1JFQURFTEYiOyB0aGVuDQorICBhY19jdl9wcm9nX2FjX2N0X1JFQURFTEY9IiRhY19jdF9SRUFE RUxGIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9J RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0K KyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisg ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQor ICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0 X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3By b2dfYWNfY3RfUkVBREVMRj0icmVhZGVsZiINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1DQor ICAgIGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisN CitmaQ0KK2ZpDQorYWNfY3RfUkVBREVMRj0kYWNfY3ZfcHJvZ19hY19jdF9SRUFERUxGDQoraWYg dGVzdCAtbiAiJGFjX2N0X1JFQURFTEYiOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X1JFQURFTEYiID4mNQ0KKyRhc19lY2hv ICIkYWNfY3RfUkVBREVMRiIgPiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsg fQ0KK2ZpDQorDQorICBpZiB0ZXN0ICJ4JGFjX2N0X1JFQURFTEYiID0geDsgdGhlbg0KKyAgICBS RUFERUxGPSI6Ig0KKyAgZWxzZQ0KKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xf d2FybmVkIGluDQoreWVzOikNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJp cGxldCIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMg bm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQ0KK2FjX3Rvb2xfd2FybmVkPXll cyA7Ow0KK2VzYWMNCisgICAgUkVBREVMRj0kYWNfY3RfUkVBREVMRg0KKyAgZmkNCitlbHNlDQor ICBSRUFERUxGPSIkYWNfY3ZfcHJvZ19SRUFERUxGIg0KK2ZpDQorDQorDQorDQorDQorIyBIYWNr IHRvIGVuc3VyZSB0aGF0IElOU1RBTEwgd29uJ3QgYmUgc2V0IHRvICIuLi8iIHdpdGggYXV0b2Nv bmYgMi4xMy4gICovDQorYWNfZ2l2ZW5fSU5TVEFMTD0kSU5TVEFMTA0KKw0KK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUg bWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXMiID4mNQ0KKyRhc19lY2hv X24gImNoZWNraW5nIHdoZXRoZXIgdG8gZW5hYmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlv bnMgb2YgTWFrZWZpbGVzLi4uICIgPiY2OyB9DQorICAgICMgQ2hlY2sgd2hldGhlciAtLWVuYWJs ZS1tYWludGFpbmVyLW1vZGUgd2FzIGdpdmVuLg0KK2lmIHRlc3QgIiR7ZW5hYmxlX21haW50YWlu ZXJfbW9kZStzZXR9IiA9IHNldDsgdGhlbiA6DQorICBlbmFibGV2YWw9JGVuYWJsZV9tYWludGFp bmVyX21vZGU7IFVTRV9NQUlOVEFJTkVSX01PREU9JGVuYWJsZXZhbA0KK2Vsc2UNCisgIFVTRV9N QUlOVEFJTkVSX01PREU9bm8NCitmaQ0KKw0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRVU0VfTUFJTlRBSU5FUl9NT0RFIiA+JjUNCiskYXNfZWNo byAiJFVTRV9NQUlOVEFJTkVSX01PREUiID4mNjsgfQ0KKw0KKw0KK2lmIHRlc3QgJFVTRV9NQUlO VEFJTkVSX01PREUgPSB5ZXM7IHRoZW4NCisgIE1BSU5UQUlORVJfTU9ERV9UUlVFPQ0KKyAgTUFJ TlRBSU5FUl9NT0RFX0ZBTFNFPScjJw0KK2Vsc2UNCisgIE1BSU5UQUlORVJfTU9ERV9UUlVFPScj Jw0KKyAgTUFJTlRBSU5FUl9NT0RFX0ZBTFNFPQ0KK2ZpDQorDQorICBNQUlOVD0kTUFJTlRBSU5F Ul9NT0RFX1RSVUUNCisNCisNCisjIEJ5IGRlZmF1bHQgd2Ugc2ltcGx5IHVzZSB0aGUgQyBjb21w aWxlciB0byBidWlsZCBhc3NlbWJseSBjb2RlLg0KKw0KK3Rlc3QgIiR7Q0NBUytzZXR9IiA9IHNl dCB8fCBDQ0FTPSRDQw0KK3Rlc3QgIiR7Q0NBU0ZMQUdTK3NldH0iID0gc2V0IHx8IENDQVNGTEFH Uz0kQ0ZMQUdTDQorDQorDQorDQorDQorIyBXZSBuZWVkIEFDX0VYRUVYVCB0byBrZWVwIGF1dG9t YWtlIGhhcHB5IGluIGN5Z251cyBtb2RlLiAgSG93ZXZlciwNCisjIGF0IGxlYXN0IGN1cnJlbnRs eSwgd2UgbmV2ZXIgYWN0dWFsbHkgYnVpbGQgYSBwcm9ncmFtLCBzbyB3ZSBuZXZlcg0KKyMgbmVl ZCB0byB1c2UgJChFWEVFWFQpLiAgTW9yZW92ZXIsIHRoZSB0ZXN0IGZvciBFWEVFWFQgbm9ybWFs bHkNCisjIGZhaWxzLCBiZWNhdXNlIHdlIGFyZSBwcm9iYWJseSBjb25maWd1cmluZyB3aXRoIGEg Y3Jvc3MgY29tcGlsZXINCisjIHdoaWNoIGNhbid0IGNyZWF0ZSBleGVjdXRhYmxlcy4gIFNvIHdl IGluY2x1ZGUgQUNfRVhFRVhUIHRvIGtlZXANCisjIGF1dG9tYWtlIGhhcHB5LCBidXQgd2UgZG9u J3QgZXhlY3V0ZSBpdCwgc2luY2Ugd2UgZG9uJ3QgY2FyZSBhYm91dA0KKyMgdGhlIHJlc3VsdC4N CitpZiBmYWxzZTsgdGhlbg0KKw0KKyAgZHVtbXlfdmFyPTENCitmaQ0KKw0KKy4gJHtuZXdsaWJf YmFzZWRpcn0vY29uZmlndXJlLmhvc3QNCisNCituZXdsaWJfY2ZsYWdzPSIke25ld2xpYl9jZmxh Z3N9IC1mbm8tYnVpbHRpbiINCisNCitORVdMSUJfQ0ZMQUdTPSR7bmV3bGliX2NmbGFnc30NCisN CisNCitOT19JTkNMVURFX0xJU1Q9JHtub2luY2x1ZGV9DQorDQorDQorTERGTEFHUz0ke2xkZmxh Z3N9DQorDQorDQorDQorDQoraWYgdGVzdCB4JHtuZXdsaWJfZWxpeF9sZXZlbH0gPSB4MDsgdGhl bg0KKyAgRUxJWF9MRVZFTF8wX1RSVUU9DQorICBFTElYX0xFVkVMXzBfRkFMU0U9JyMnDQorZWxz ZQ0KKyAgRUxJWF9MRVZFTF8wX1RSVUU9JyMnDQorICBFTElYX0xFVkVMXzBfRkFMU0U9DQorZmkN CisNCisNCisNCitpZiB0ZXN0IHgke25ld2xpYl9lbGl4X2xldmVsfSA9IHgxOyB0aGVuDQorICBF TElYX0xFVkVMXzFfVFJVRT0NCisgIEVMSVhfTEVWRUxfMV9GQUxTRT0nIycNCitlbHNlDQorICBF TElYX0xFVkVMXzFfVFJVRT0nIycNCisgIEVMSVhfTEVWRUxfMV9GQUxTRT0NCitmaQ0KKw0KKw0K Kw0KK2lmIHRlc3QgeCR7bmV3bGliX2VsaXhfbGV2ZWx9ID0geDI7IHRoZW4NCisgIEVMSVhfTEVW RUxfMl9UUlVFPQ0KKyAgRUxJWF9MRVZFTF8yX0ZBTFNFPScjJw0KK2Vsc2UNCisgIEVMSVhfTEVW RUxfMl9UUlVFPScjJw0KKyAgRUxJWF9MRVZFTF8yX0ZBTFNFPQ0KK2ZpDQorDQorDQorDQoraWYg dGVzdCB4JHtuZXdsaWJfZWxpeF9sZXZlbH0gPSB4MzsgdGhlbg0KKyAgRUxJWF9MRVZFTF8zX1RS VUU9DQorICBFTElYX0xFVkVMXzNfRkFMU0U9JyMnDQorZWxzZQ0KKyAgRUxJWF9MRVZFTF8zX1RS VUU9JyMnDQorICBFTElYX0xFVkVMXzNfRkFMU0U9DQorZmkNCisNCisNCisNCitpZiB0ZXN0IHgk e25ld2xpYl9lbGl4X2xldmVsfSA9IHg0OyB0aGVuDQorICBFTElYX0xFVkVMXzRfVFJVRT0NCisg IEVMSVhfTEVWRUxfNF9GQUxTRT0nIycNCitlbHNlDQorICBFTElYX0xFVkVMXzRfVFJVRT0nIycN CisgIEVMSVhfTEVWRUxfNF9GQUxTRT0NCitmaQ0KKw0KKw0KKw0KKw0KK2lmIHRlc3QgeCR7dXNl X2xpYnRvb2x9ID0geHllczsgdGhlbg0KKyAgVVNFX0xJQlRPT0xfVFJVRT0NCisgIFVTRV9MSUJU T09MX0ZBTFNFPScjJw0KK2Vsc2UNCisgIFVTRV9MSUJUT09MX1RSVUU9JyMnDQorICBVU0VfTElC VE9PTF9GQUxTRT0NCitmaQ0KKw0KKw0KKyMgSGFyZC1jb2RlIE9CSkVYVC4gIE5vcm1hbGx5IGl0 IGlzIHNldCBieSBBQ19PQkpFWFQsIGJ1dCB3ZQ0KKyMgdXNlIG9leHQsIHdoaWNoIGlzIHNldCBp biBjb25maWd1cmUuaG9zdCBiYXNlZCBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtLg0KK09CSkVYVD0k e29leHR9DQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorYWNfY29uZmlnX2ZpbGVz PSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIg0KKw0KK2NhdCA+Y29uZmNhY2hlIDw8XF9BQ0VP Rg0KKyMgVGhpcyBmaWxlIGlzIGEgc2hlbGwgc2NyaXB0IHRoYXQgY2FjaGVzIHRoZSByZXN1bHRz IG9mIGNvbmZpZ3VyZQ0KKyMgdGVzdHMgcnVuIG9uIHRoaXMgc3lzdGVtIHNvIHRoZXkgY2FuIGJl IHNoYXJlZCBiZXR3ZWVuIGNvbmZpZ3VyZQ0KKyMgc2NyaXB0cyBhbmQgY29uZmlndXJlIHJ1bnMs IHNlZSBjb25maWd1cmUncyBvcHRpb24gLS1jb25maWctY2FjaGUuDQorIyBJdCBpcyBub3QgdXNl ZnVsIG9uIG90aGVyIHN5c3RlbXMuICBJZiBpdCBjb250YWlucyByZXN1bHRzIHlvdSBkb24ndA0K KyMgd2FudCB0byBrZWVwLCB5b3UgbWF5IHJlbW92ZSBvciBlZGl0IGl0Lg0KKyMNCisjIGNvbmZp Zy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlvbiB0byB0aGUgY2FjaGUgZmlsZSBpZiB5b3UgZ2l2 ZSBpdA0KKyMgdGhlIC0tcmVjaGVjayBvcHRpb24gdG8gcmVydW4gY29uZmlndXJlLg0KKyMNCisj IGBhY19jdl9lbnZfZm9vJyB2YXJpYWJsZXMgKHNldCBvciB1bnNldCkgd2lsbCBiZSBvdmVycmlk ZGVuIHdoZW4NCisjIGxvYWRpbmcgdGhpcyBmaWxlLCBvdGhlciAqdW5zZXQqIGBhY19jdl9mb28n IHdpbGwgYmUgYXNzaWduZWQgdGhlDQorIyBmb2xsb3dpbmcgdmFsdWVzLg0KKw0KK19BQ0VPRg0K Kw0KKyMgVGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBu ZXdsaW5lcyBpbiB2YWx1ZXMsDQorIyBidXQgd2Uga25vdyBvZiBubyB3b3JrYXJvdW5kIHRoYXQg aXMgc2ltcGxlLCBwb3J0YWJsZSwgYW5kIGVmZmljaWVudC4NCisjIFNvLCB3ZSBraWxsIHZhcmlh YmxlcyBjb250YWluaW5nIG5ld2xpbmVzLg0KKyMgVWx0cml4IHNoIHNldCB3cml0ZXMgdG8gc3Rk ZXJyIGFuZCBjYW4ndCBiZSByZWRpcmVjdGVkIGRpcmVjdGx5LA0KKyMgYW5kIHNldHMgdGhlIGhp Z2ggYml0IGluIHRoZSBjYWNoZSBmaWxlIHVubGVzcyB3ZSBhc3NpZ24gdG8gdGhlIHZhcnMuDQor KA0KKyAgZm9yIGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8IHNlZCAtbiAncy9eXChbYS16QS1aX11b YS16QS1aMC05X10qXCk9LiovXDEvcCdgOyBkbw0KKyAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIN CisgICAgY2FzZSAkYWNfdmFsIGluICMoDQorICAgICoke2FzX25sfSopDQorICAgICAgY2FzZSAk YWNfdmFyIGluICMoDQorICAgICAgKl9jdl8qKSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IFdBUk5JTkc6IGNhY2hlIHZhcmlhYmxlICRhY192YXIgY29udGFpbnMgYSBu ZXdsaW5lIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAk YWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiYyO30gOzsNCisgICAgICBlc2FjDQorICAgICAg Y2FzZSAkYWNfdmFyIGluICMoDQorICAgICAgXyB8IElGUyB8IGFzX25sKSA7OyAjKA0KKyAgICAg IEJBU0hfQVJHViB8IEJBU0hfU09VUkNFKSBldmFsICRhY192YXI9IDs7ICMoDQorICAgICAgKikg eyBldmFsICRhY192YXI9OyB1bnNldCAkYWNfdmFyO30gOzsNCisgICAgICBlc2FjIDs7DQorICAg IGVzYWMNCisgIGRvbmUNCisNCisgIChzZXQpIDI+JjEgfA0KKyAgICBjYXNlICRhc19ubGAoYWNf c3BhY2U9JyAnOyBzZXQpIDI+JjFgIGluICMoDQorICAgICoke2FzX25sfWFjX3NwYWNlPVwgKikN CisgICAgICAjIGBzZXQnIGRvZXMgbm90IHF1b3RlIGNvcnJlY3RseSwgc28gYWRkIHF1b3Rlczog ZG91YmxlLXF1b3RlDQorICAgICAgIyBzdWJzdGl0dXRpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBh bmQgc2VkIHR1cm5zIFxcIGludG8gXC4NCisgICAgICBzZWQgLW4gXA0KKwkicy8nLydcXFxcJycv ZzsNCisJICBzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwo LipcXCkvXFwxPSdcXDInL3AiDQorICAgICAgOzsgIygNCisgICAgKikNCisgICAgICAjIGBzZXQn IHF1b3RlcyBjb3JyZWN0bHkgYXMgcmVxdWlyZWQgYnkgUE9TSVgsIHNvIGRvIG5vdCBhZGQgcXVv dGVzLg0KKyAgICAgIHNlZCAtbiAiL15bXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVt XSo9L3AiDQorICAgICAgOzsNCisgICAgZXNhYyB8DQorICAgIHNvcnQNCispIHwNCisgIHNlZCAn DQorICAgICAvXmFjX2N2X2Vudl8vYiBlbmQNCisgICAgIHQgY2xlYXINCisgICAgIDpjbGVhcg0K KyAgICAgcy9eXChbXj1dKlwpPVwoLipbe31dLipcKSQvdGVzdCAiJHtcMStzZXR9IiA9IHNldCB8 fCAmLw0KKyAgICAgdCBlbmQNCisgICAgIHMvXlwoW149XSpcKT1cKC4qXCkkL1wxPSR7XDE9XDJ9 Lw0KKyAgICAgOmVuZCcgPj5jb25mY2FjaGUNCitpZiBkaWZmICIkY2FjaGVfZmlsZSIgY29uZmNh Y2hlID4vZGV2L251bGwgMj4mMTsgdGhlbiA6OyBlbHNlDQorICBpZiB0ZXN0IC13ICIkY2FjaGVf ZmlsZSI7IHRoZW4NCisgICAgdGVzdCAieCRjYWNoZV9maWxlIiAhPSAieC9kZXYvbnVsbCIgJiYN CisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHVwZGF0aW5n IGNhY2hlICRjYWNoZV9maWxlIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiB1cGRhdGluZyBjYWNo ZSAkY2FjaGVfZmlsZSIgPiY2O30NCisgICAgY2F0IGNvbmZjYWNoZSA+JGNhY2hlX2ZpbGUNCisg IGVsc2UNCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBub3Qg dXBkYXRpbmcgdW53cml0YWJsZSBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1DQorJGFzX2VjaG8gIiRh c19tZTogbm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9DQor ICBmaQ0KK2ZpDQorcm0gLWYgY29uZmNhY2hlDQorDQordGVzdCAieCRwcmVmaXgiID0geE5PTkUg JiYgcHJlZml4PSRhY19kZWZhdWx0X3ByZWZpeA0KKyMgTGV0IG1ha2UgZXhwYW5kIGV4ZWNfcHJl Zml4Lg0KK3Rlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJl Zml4fScNCisNCisjIFRyYW5zZm9ybSBjb25mZGVmcy5oIGludG8gREVGUy4NCisjIFByb3RlY3Qg YWdhaW5zdCBzaGVsbCBleHBhbnNpb24gd2hpbGUgZXhlY3V0aW5nIE1ha2VmaWxlIHJ1bGVzLg0K KyMgUHJvdGVjdCBhZ2FpbnN0IE1ha2VmaWxlIG1hY3JvIGV4cGFuc2lvbi4NCisjDQorIyBJZiB0 aGUgZmlyc3Qgc2VkIHN1YnN0aXR1dGlvbiBpcyBleGVjdXRlZCAod2hpY2ggbG9va3MgZm9yIG1h Y3JvcyB0aGF0DQorIyB0YWtlIGFyZ3VtZW50cyksIHRoZW4gYnJhbmNoIHRvIHRoZSBxdW90ZSBz ZWN0aW9uLiAgT3RoZXJ3aXNlLA0KKyMgbG9vayBmb3IgYSBtYWNybyB0aGF0IGRvZXNuJ3QgdGFr ZSBhcmd1bWVudHMuDQorYWNfc2NyaXB0PScNCis6bWxpbmUNCisvXFwkL3sNCisgTg0KKyBzLFxc XG4sLA0KKyBiIG1saW5lDQorfQ0KK3QgY2xlYXINCis6Y2xlYXINCitzL15bCSBdKiNbCSBdKmRl ZmluZVsJIF1bCSBdKlwoW14JIChdW14JIChdKihbXildKilcKVsJIF0qXCguKlwpLy1EXDE9XDIv Zw0KK3QgcXVvdGUNCitzL15bCSBdKiNbCSBdKmRlZmluZVsJIF1bCSBdKlwoW14JIF1bXgkgXSpc KVsJIF0qXCguKlwpLy1EXDE9XDIvZw0KK3QgcXVvdGUNCitiIGFueQ0KKzpxdW90ZQ0KK3MvWwkg YH4jJF4mKigpe31cXHw7J1wnJyI8Pj9dL1xcJi9nDQorcy9cWy9cXCYvZw0KK3MvXF0vXFwmL2cN CitzL1wkLyQkL2cNCitIDQorOmFueQ0KKyR7DQorCWcNCisJcy9eXG4vLw0KKwlzL1xuLyAvZw0K KwlwDQorfQ0KKycNCitERUZTPWBzZWQgLW4gIiRhY19zY3JpcHQiIGNvbmZkZWZzLmhgDQorDQor DQorYWNfbGlib2Jqcz0NCithY19sdGxpYm9ianM9DQorZm9yIGFjX2kgaW4gOiAkTElCT0JKUzsg ZG8gdGVzdCAieCRhY19pIiA9IHg6ICYmIGNvbnRpbnVlDQorICAjIDEuIFJlbW92ZSB0aGUgZXh0 ZW5zaW9uLCBhbmQgJFUgaWYgYWxyZWFkeSBpbnN0YWxsZWQuDQorICBhY19zY3JpcHQ9J3MvXCRV XC4vLi87cy9cLm8kLy87cy9cLm9iaiQvLycNCisgIGFjX2k9YCRhc19lY2hvICIkYWNfaSIgfCBz ZWQgIiRhY19zY3JpcHQiYA0KKyAgIyAyLiBQcmVwZW5kIExJQk9CSkRJUi4gIFdoZW4gdXNlZCB3 aXRoIGF1dG9tYWtlPj0xLjEwIExJQk9CSkRJUg0KKyAgIyAgICB3aWxsIGJlIHNldCB0byB0aGUg ZGlyZWN0b3J5IHdoZXJlIExJQk9CSlMgb2JqZWN0cyBhcmUgYnVpbHQuDQorICBhc19mbl9hcHBl bmQgYWNfbGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaVwkVS4kYWNfb2JqZXh0Ig0KKyAgYXNf Zm5fYXBwZW5kIGFjX2x0bGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaSInJFUubG8nDQorZG9u ZQ0KK0xJQk9CSlM9JGFjX2xpYm9ianMNCisNCitMVExJQk9CSlM9JGFjX2x0bGlib2Jqcw0KKw0K Kw0KK2lmIHRlc3QgLXogIiR7TUFZX1NVUFBMWV9TWVNDQUxMU19UUlVFfSIgJiYgdGVzdCAteiAi JHtNQVlfU1VQUExZX1NZU0NBTExTX0ZBTFNFfSI7IHRoZW4NCisgIGFzX2ZuX2Vycm9yICJjb25k aXRpb25hbCBcIk1BWV9TVVBQTFlfU1lTQ0FMTFNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3Vh bGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4i ICIkTElORU5PIiA1DQorZmkNCitpZiB0ZXN0IC16ICIke0FNREVQX1RSVUV9IiAmJiB0ZXN0IC16 ICIke0FNREVQX0ZBTFNFfSI7IHRoZW4NCisgIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkFN REVQXCIgd2FzIG5ldmVyIGRlZmluZWQuDQorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3 YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVz dCAteiAiJHthbV9fZmFzdGRlcENDX1RSVUV9IiAmJiB0ZXN0IC16ICIke2FtX19mYXN0ZGVwQ0Nf RkFMU0V9IjsgdGhlbg0KKyAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiYW1fX2Zhc3RkZXBD Q1wiIHdhcyBuZXZlciBkZWZpbmVkLg0KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2Fz IG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3Qg LXogIiR7TUFJTlRBSU5FUl9NT0RFX1RSVUV9IiAmJiB0ZXN0IC16ICIke01BSU5UQUlORVJfTU9E RV9GQUxTRX0iOyB0aGVuDQorICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJNQUlOVEFJTkVS X01PREVcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3Jv IHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1DQorZmkNCitpZiB0 ZXN0IC16ICIke0VMSVhfTEVWRUxfMF9UUlVFfSIgJiYgdGVzdCAteiAiJHtFTElYX0xFVkVMXzBf RkFMU0V9IjsgdGhlbg0KKyAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiRUxJWF9MRVZFTF8w XCIgd2FzIG5ldmVyIGRlZmluZWQuDQorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMg b25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAt eiAiJHtFTElYX0xFVkVMXzFfVFJVRX0iICYmIHRlc3QgLXogIiR7RUxJWF9MRVZFTF8xX0ZBTFNF fSI7IHRoZW4NCisgIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkVMSVhfTEVWRUxfMVwiIHdh cyBuZXZlciBkZWZpbmVkLg0KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkg aW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7 RUxJWF9MRVZFTF8yX1RSVUV9IiAmJiB0ZXN0IC16ICIke0VMSVhfTEVWRUxfMl9GQUxTRX0iOyB0 aGVuDQorICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJFTElYX0xFVkVMXzJcIiB3YXMgbmV2 ZXIgZGVmaW5lZC4NCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9r ZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1DQorZmkNCitpZiB0ZXN0IC16ICIke0VMSVhf TEVWRUxfM19UUlVFfSIgJiYgdGVzdCAteiAiJHtFTElYX0xFVkVMXzNfRkFMU0V9IjsgdGhlbg0K KyAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiRUxJWF9MRVZFTF8zXCIgd2FzIG5ldmVyIGRl ZmluZWQuDQorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNv bmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHtFTElYX0xFVkVM XzRfVFJVRX0iICYmIHRlc3QgLXogIiR7RUxJWF9MRVZFTF80X0ZBTFNFfSI7IHRoZW4NCisgIGFz X2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkVMSVhfTEVWRUxfNFwiIHdhcyBuZXZlciBkZWZpbmVk Lg0KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRp b25hbGx5LiIgIiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7VVNFX0xJQlRPT0xfVFJV RX0iICYmIHRlc3QgLXogIiR7VVNFX0xJQlRPT0xfRkFMU0V9IjsgdGhlbg0KKyAgYXNfZm5fZXJy b3IgImNvbmRpdGlvbmFsIFwiVVNFX0xJQlRPT0xcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3Vh bGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4i ICIkTElORU5PIiA1DQorZmkNCisNCis6ICR7Q09ORklHX1NUQVRVUz0uL2NvbmZpZy5zdGF0dXN9 DQorYWNfd3JpdGVfZmFpbD0wDQorYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMN CithY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzICRDT05GSUdfU1RBVFVTIg0KK3sgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY3JlYXRpbmcgJENPTkZJR19TVEFU VVMiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiA+JjY7 fQ0KK2FzX3dyaXRlX2ZhaWw9MA0KK2NhdCA+JENPTkZJR19TVEFUVVMgPDxfQVNFT0YgfHwgYXNf d3JpdGVfZmFpbD0xDQorIyEgJFNIRUxMDQorIyBHZW5lcmF0ZWQgYnkgJGFzX21lLg0KKyMgUnVu IHRoaXMgZmlsZSB0byByZWNyZWF0ZSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLg0KKyMgQ29t cGlsZXIgb3V0cHV0IHByb2R1Y2VkIGJ5IGNvbmZpZ3VyZSwgdXNlZnVsIGZvciBkZWJ1Z2dpbmcN CisjIGNvbmZpZ3VyZSwgaXMgaW4gY29uZmlnLmxvZyBpZiBpdCBleGlzdHMuDQorDQorZGVidWc9 ZmFsc2UNCithY19jc19yZWNoZWNrPWZhbHNlDQorYWNfY3Nfc2lsZW50PWZhbHNlDQorDQorU0hF TEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0NCitleHBvcnQgU0hFTEwNCitfQVNFT0YNCitjYXQg Pj4kQ09ORklHX1NUQVRVUyA8PFxfQVNFT0YgfHwgYXNfd3JpdGVfZmFpbD0xDQorIyMgLS0tLS0t LS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNNHNoIEluaXRpYWxpemF0aW9uLiAjIw0KKyMjIC0tLS0t LS0tLS0tLS0tLS0tLS0tICMjDQorDQorIyBCZSBtb3JlIEJvdXJuZSBjb21wYXRpYmxlDQorRFVB TENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaA0KK2lmIHRlc3QgLW4gIiR7WlNI X1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6DQor ICBlbXVsYXRlIHNoDQorICBOVUxMQ01EPToNCisgICMgUHJlLTQuMiB2ZXJzaW9ucyBvZiBac2gg ZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaA0KKyAgIyBpcyBjb250cmFyeSB0 byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4NCisgIGFsaWFzIC1nICckezErIiRA In0nPSciJEAiJw0KKyAgc2V0b3B0IE5PX0dMT0JfU1VCU1QNCitlbHNlDQorICBjYXNlIGAoc2V0 IC1vKSAyPi9kZXYvbnVsbGAgaW4gIygNCisgICpwb3NpeCopIDoNCisgICAgc2V0IC1vIHBvc2l4 IDs7ICMoDQorICAqKSA6DQorICAgICA7Ow0KK2VzYWMNCitmaQ0KKw0KKw0KK2FzX25sPScNCisn DQorZXhwb3J0IGFzX25sDQorIyBQcmludGluZyBhIGxvbmcgc3RyaW5nIGNyYXNoZXMgU29sYXJp cyA3IC91c3IvYmluL3ByaW50Zi4NCithc19lY2hvPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcJw0KK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hv JGFzX2VjaG8kYXNfZWNobw0KK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2Vj aG8kYXNfZWNobyRhc19lY2hvDQorIyBQcmVmZXIgYSBrc2ggc2hlbGwgYnVpbHRpbiBvdmVyIGFu IGV4dGVybmFsIHByaW50ZiBwcm9ncmFtIG9uIFNvbGFyaXMsDQorIyBidXQgd2l0aG91dCB3YXN0 aW5nIGZvcmtzIGZvciBiYXNoIG9yIHpzaC4NCitpZiB0ZXN0IC16ICIkQkFTSF9WRVJTSU9OJFpT SF9WRVJTSU9OIiBcDQorICAgICYmICh0ZXN0ICJYYHByaW50IC1yIC0tICRhc19lY2hvYCIgPSAi WCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRoZW4NCisgIGFzX2VjaG89J3ByaW50IC1yIC0tJw0K KyAgYXNfZWNob19uPSdwcmludCAtcm4gLS0nDQorZWxpZiAodGVzdCAiWGBwcmludGYgJXMgJGFz X2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgYXNfZWNobz0ncHJp bnRmICVzXG4nDQorICBhc19lY2hvX249J3ByaW50ZiAlcycNCitlbHNlDQorICBpZiB0ZXN0ICJY YCgvdXNyL3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAyPi9kZXYvbnVsbGAiID0gIlgtbiAkYXNf ZWNobyI7IHRoZW4NCisgICAgYXNfZWNob19ib2R5PSdldmFsIC91c3IvdWNiL2VjaG8gLW4gIiQx JGFzX25sIicNCisgICAgYXNfZWNob19uPScvdXNyL3VjYi9lY2hvIC1uJw0KKyAgZWxzZQ0KKyAg ICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAiWCQxIiA6ICJYXFwoLipcXCkiJw0KKyAgICBhc19l Y2hvX25fYm9keT0nZXZhbA0KKyAgICAgIGFyZz0kMTsNCisgICAgICBjYXNlICRhcmcgaW4gIygN CisgICAgICAqIiRhc19ubCIqKQ0KKwlleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpJGFzX25sIjsN CisJYXJnPWBleHByICJYJGFyZyIgOiAiLiokYXNfbmxcXCguKlxcKSJgOzsNCisgICAgICBlc2Fj Ow0KKyAgICAgIGV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkiIHwgdHIgLWQgIiRhc19ubCINCisg ICAgJw0KKyAgICBleHBvcnQgYXNfZWNob19uX2JvZHkNCisgICAgYXNfZWNob19uPSdzaCAtYyAk YXNfZWNob19uX2JvZHkgYXNfZWNobycNCisgIGZpDQorICBleHBvcnQgYXNfZWNob19ib2R5DQor ICBhc19lY2hvPSdzaCAtYyAkYXNfZWNob19ib2R5IGFzX2VjaG8nDQorZmkNCisNCisjIFRoZSB1 c2VyIGlzIGFsd2F5cyByaWdodC4NCitpZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9 IHNldDsgdGhlbg0KKyAgUEFUSF9TRVBBUkFUT1I9Og0KKyAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQ QVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgJiYgew0KKyAgICAoUEFUSD0nL2Jp bjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSB8fA0KKyAgICAg IFBBVEhfU0VQQVJBVE9SPSc7Jw0KKyAgfQ0KK2ZpDQorDQorDQorIyBJRlMNCisjIFdlIG5lZWQg c3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLiAgUXVvdGlu ZyBpcw0KKyMgdGhlcmUgdG8gcHJldmVudCBlZGl0b3JzIGZyb20gY29tcGxhaW5pbmcgYWJvdXQg c3BhY2UtdGFiLg0KKyMgKElmIF9BU19QQVRIX1dBTEsgd2VyZSBjYWxsZWQgd2l0aCBJRlMgdW5z ZXQsIGl0IHdvdWxkIGRpc2FibGUgd29yZA0KKyMgc3BsaXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRv IGVtcHR5IHZhbHVlLikNCitJRlM9IiAiIgkkYXNfbmwiDQorDQorIyBGaW5kIHdobyB3ZSBhcmUu ICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4N CitjYXNlICQwIGluICMoKA0KKyAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7Ow0KKyAgKikgYXNf c2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgN Citkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly PS4NCisgICAgdGVzdCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYg YnJlYWsNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorICAgICA7Ow0KK2VzYWMNCisj IFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMg YHNoIENPTU1BTkQnDQorIyBpbiB3aGljaCBjYXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4g dGhlIHBhdGguDQoraWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhlbg0KKyAgYXNfbXlzZWxm PSQwDQorZmkNCitpZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0aGVuDQorICAkYXNfZWNobyAi JGFzX215c2VsZjogZXJyb3I6IGNhbm5vdCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNv bHV0ZSBmaWxlIG5hbWUiID4mMg0KKyAgZXhpdCAxDQorZmkNCisNCisjIFVuc2V0IHZhcmlhYmxl cyB0aGF0IHdlIGRvIG5vdCBuZWVkIGFuZCB3aGljaCBjYXVzZSBidWdzIChlLmcuIGluDQorIyBw cmUtMy4wIFVXSU4ga3NoKS4gIEJ1dCBkbyBub3QgY2F1c2UgYnVncyBpbiBiYXNoIDIuMDE7IHRo ZSAifHwgZXhpdCAxIg0KKyMgc3VwcHJlc3NlcyBhbnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIgbWVz c2FnZSB0aGVyZS4gICcoKCcgY291bGQNCisjIHRyaWdnZXIgYSBidWcgaW4gcGRrc2ggNS4yLjE0 Lg0KK2ZvciBhc192YXIgaW4gQkFTSF9FTlYgRU5WIE1BSUwgTUFJTFBBVEgNCitkbyBldmFsIHRl c3QgeFwkeyRhc192YXIrc2V0fSA9IHhzZXQgXA0KKyAgJiYgKCAodW5zZXQgJGFzX3ZhcikgfHwg ZXhpdCAxKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgJGFzX3ZhciB8fCA6DQorZG9uZQ0KK1BT MT0nJCAnDQorUFMyPSc+ICcNCitQUzQ9JysgJw0KKw0KKyMgTkxTIG51aXNhbmNlcy4NCitMQ19B TEw9Qw0KK2V4cG9ydCBMQ19BTEwNCitMQU5HVUFHRT1DDQorZXhwb3J0IExBTkdVQUdFDQorDQor IyBDRFBBVEguDQorKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFU SA0KKw0KKw0KKyMgYXNfZm5fZXJyb3IgRVJST1IgW0xJTkVOTyBMT0dfRkRdDQorIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJy b3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQ0KKyMgcHJvdmlk ZWQsIGFsc28gb3V0cHV0IHRoZSBlcnJvciB0byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJTkVOTy4g VGhlbiBleGl0IHRoZQ0KKyMgc2NyaXB0IHdpdGggc3RhdHVzICQ/LCB1c2luZyAxIGlmIHRoYXQg d2FzIDAuDQorYXNfZm5fZXJyb3IgKCkNCit7DQorICBhc19zdGF0dXM9JD87IHRlc3QgJGFzX3N0 YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQ0KKyAgaWYgdGVzdCAiJDMiOyB0aGVuDQorICAgIGFz X2xpbmVubz0ke2FzX2xpbmVuby0iJDIifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNr PSRhc19saW5lbm9fc3RhY2sNCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogZXJyb3I6ICQxIiA+JiQzDQorICBmaQ0KKyAgJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6 ICQxIiA+JjINCisgIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cw0KK30gIyBhc19mbl9lcnJvcg0KKw0K Kw0KKyMgYXNfZm5fc2V0X3N0YXR1cyBTVEFUVVMNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQorIyBTZXQgJD8gdG8gU1RBVFVTLCB3aXRob3V0IGZvcmtpbmcuDQorYXNfZm5fc2V0X3N0YXR1 cyAoKQ0KK3sNCisgIHJldHVybiAkMQ0KK30gIyBhc19mbl9zZXRfc3RhdHVzDQorDQorIyBhc19m bl9leGl0IFNUQVRVUw0KKyMgLS0tLS0tLS0tLS0tLS0tLS0NCisjIEV4aXQgdGhlIHNoZWxsIHdp dGggU1RBVFVTLCBldmVuIGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4dC4NCithc19m bl9leGl0ICgpDQorew0KKyAgc2V0ICtlDQorICBhc19mbl9zZXRfc3RhdHVzICQxDQorICBleGl0 ICQxDQorfSAjIGFzX2ZuX2V4aXQNCisNCisjIGFzX2ZuX3Vuc2V0IFZBUg0KKyMgLS0tLS0tLS0t LS0tLS0tDQorIyBQb3J0YWJseSB1bnNldCBWQVIuDQorYXNfZm5fdW5zZXQgKCkNCit7DQorICB7 IGV2YWwgJDE9OyB1bnNldCAkMTt9DQorfQ0KK2FzX3Vuc2V0PWFzX2ZuX3Vuc2V0DQorIyBhc19m bl9hcHBlbmQgVkFSIFZBTFVFDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBBcHBlbmQg dGhlIHRleHQgaW4gVkFMVUUgdG8gdGhlIGVuZCBvZiB0aGUgZGVmaW5pdGlvbiBjb250YWluZWQg aW4gVkFSLiBUYWtlDQorIyBhZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhh dCBhbGxvdyBhbW9ydGl6ZWQgbGluZWFyIGdyb3d0aCBvdmVyDQorIyByZXBlYXRlZCBhcHBlbmRz LCBpbnN0ZWFkIG9mIHRoZSB0eXBpY2FsIHF1YWRyYXRpYyBncm93dGggcHJlc2VudCBpbiBuYWl2 ZQ0KKyMgaW1wbGVtZW50YXRpb25zLg0KK2lmIChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0 ZXN0IHhcJGFzX3ZhciA9IHgxMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoNCisgIGV2YWwgJ2FzX2Zu X2FwcGVuZCAoKQ0KKyAgew0KKyAgICBldmFsICQxKz1cJDINCisgIH0nDQorZWxzZQ0KKyAgYXNf Zm5fYXBwZW5kICgpDQorICB7DQorICAgIGV2YWwgJDE9XCQkMVwkMg0KKyAgfQ0KK2ZpICMgYXNf Zm5fYXBwZW5kDQorDQorIyBhc19mbl9hcml0aCBBUkcuLi4NCisjIC0tLS0tLS0tLS0tLS0tLS0t LQ0KKyMgUGVyZm9ybSBhcml0aG1ldGljIGV2YWx1YXRpb24gb24gdGhlIEFSR3MsIGFuZCBzdG9y ZSB0aGUgcmVzdWx0IGluIHRoZQ0KKyMgZ2xvYmFsICRhc192YWwuIFRha2UgYWR2YW50YWdlIG9m IHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhlIGFyZ3VtZW50cw0KKyMgbXVzdCBiZSBw b3J0YWJsZSBhY3Jvc3MgJCgoKSkgYW5kIGV4cHIuDQoraWYgKGV2YWwgInRlc3QgXCQoKCAxICsg MSApKSA9IDIiKSAyPi9kZXYvbnVsbDsgdGhlbiA6DQorICBldmFsICdhc19mbl9hcml0aCAoKQ0K KyAgew0KKyAgICBhc192YWw9JCgoICQqICkpDQorICB9Jw0KK2Vsc2UNCisgIGFzX2ZuX2FyaXRo ICgpDQorICB7DQorICAgIGFzX3ZhbD1gZXhwciAiJEAiIHx8IHRlc3QgJD8gLWVxIDFgDQorICB9 DQorZmkgIyBhc19mbl9hcml0aA0KKw0KKw0KK2lmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVs bCAyPiYxICYmDQorICAgdGVzdCAiWGBleHByIDAwMDAxIDogJy4qXCguLi5cKSdgIiA9IFgwMDE7 IHRoZW4NCisgIGFzX2V4cHI9ZXhwcg0KK2Vsc2UNCisgIGFzX2V4cHI9ZmFsc2UNCitmaQ0KKw0K K2lmIChiYXNlbmFtZSAtLSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAt LSAvIDI+JjFgIiA9ICJYLyI7IHRoZW4NCisgIGFzX2Jhc2VuYW1lPWJhc2VuYW1lDQorZWxzZQ0K KyAgYXNfYmFzZW5hbWU9ZmFsc2UNCitmaQ0KKw0KK2lmIChhc19kaXI9YGRpcm5hbWUgLS0gL2Ag JiYgdGVzdCAiWCRhc19kaXIiID0gWC8pID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgYXNfZGly bmFtZT1kaXJuYW1lDQorZWxzZQ0KKyAgYXNfZGlybmFtZT1mYWxzZQ0KK2ZpDQorDQorYXNfbWU9 YCRhc19iYXNlbmFtZSAtLSAiJDAiIHx8DQorJGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVte L10qXCkvKiQnIFx8IFwNCisJIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBYIiQwIiA6ICdY XCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYLyIkMCIgfA0KKyAgICBzZWQg Jy9eLipcL1woW14vXVteL10qXClcLyokL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0N CisJICAvXlhcL1woXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAg L15YXC9cKFwvXCkuKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8u LzsgcSdgDQorDQorIyBBdm9pZCBkZXBlbmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLg0KK2Fz X2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Jw0KK2FzX2NyX0xFVFRFUlM9 J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJw0KK2FzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRl cnMkYXNfY3JfTEVUVEVSUw0KK2FzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScNCithc19jcl9hbG51 bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMNCisNCitFQ0hPX0M9IEVDSE9fTj0gRUNIT19U PQ0KK2Nhc2UgYGVjaG8gLW4geGAgaW4gIygoKCgoDQorLW4qKQ0KKyAgY2FzZSBgZWNobyAneHlc YydgIGluDQorICAqYyopIEVDSE9fVD0nCSc7OwkjIEVDSE9fVCBpcyBzaW5nbGUgdGFiIGNoYXJh Y3Rlci4NCisgIHh5KSAgRUNIT19DPSdcYyc7Ow0KKyAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1 ZyBvbiBBSVggNi4xYCA+IC9kZXYvbnVsbA0KKyAgICAgICBFQ0hPX1Q9JwknOzsNCisgIGVzYWM7 Ow0KKyopDQorICBFQ0hPX049Jy1uJzs7DQorZXNhYw0KKw0KK3JtIC1mIGNvbmYkJCBjb25mJCQu ZXhlIGNvbmYkJC5maWxlDQoraWYgdGVzdCAtZCBjb25mJCQuZGlyOyB0aGVuDQorICBybSAtZiBj b25mJCQuZGlyL2NvbmYkJC5maWxlDQorZWxzZQ0KKyAgcm0gLWYgY29uZiQkLmRpcg0KKyAgbWtk aXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbA0KK2ZpDQoraWYgKGVjaG8gPmNvbmYkJC5maWxlKSAy Pi9kZXYvbnVsbDsgdGhlbg0KKyAgaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9u dWxsOyB0aGVuDQorICAgIGFzX2xuX3M9J2xuIC1zJw0KKyAgICAjIC4uLiBidXQgdGhlcmUgYXJl IHR3byBnb3RjaGFzOg0KKyAgICAjIDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBh bmQgYGxuIGZpbGUgZGlyJyBmYWlsLg0KKyAgICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3lt bGlua3M7IGBsbiAtcycgY3JlYXRlcyBhIHdyYXBwZXIgZXhlY3V0YWJsZS4NCisgICAgIyBJbiBi b3RoIGNhc2VzLCB3ZSBoYXZlIHRvIGRlZmF1bHQgdG8gYGNwIC1wJy4NCisgICAgbG4gLXMgY29u ZiQkLmZpbGUgY29uZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0ICEgLWYgY29uZiQkLmV4ZSB8 fA0KKyAgICAgIGFzX2xuX3M9J2NwIC1wJw0KKyAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQg Mj4vZGV2L251bGw7IHRoZW4NCisgICAgYXNfbG5fcz1sbg0KKyAgZWxzZQ0KKyAgICBhc19sbl9z PSdjcCAtcCcNCisgIGZpDQorZWxzZQ0KKyAgYXNfbG5fcz0nY3AgLXAnDQorZmkNCitybSAtZiBj b25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxlIGNvbmYkJC5maWxlDQorcm1k aXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbA0KKw0KKw0KKyMgYXNfZm5fbWtkaXJfcA0KKyMgLS0t LS0tLS0tLS0tLQ0KKyMgQ3JlYXRlICIkYXNfZGlyIiBhcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5n IHBhcmVudHMgaWYgbmVjZXNzYXJ5Lg0KK2FzX2ZuX21rZGlyX3AgKCkNCit7DQorDQorICBjYXNl ICRhc19kaXIgaW4gIygNCisgIC0qKSBhc19kaXI9Li8kYXNfZGlyOzsNCisgIGVzYWMNCisgIHRl c3QgLWQgIiRhc19kaXIiIHx8IGV2YWwgJGFzX21rZGlyX3AgfHwgew0KKyAgICBhc19kaXJzPQ0K KyAgICB3aGlsZSA6OyBkbw0KKyAgICAgIGNhc2UgJGFzX2RpciBpbiAjKA0KKyAgICAgICpcJyop IGFzX3FkaXI9YCRhc19lY2hvICIkYXNfZGlyIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7 ICMnKA0KKyAgICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7DQorICAgICAgZXNhYw0KKyAgICAgIGFz X2RpcnM9IickYXNfcWRpcicgJGFzX2RpcnMiDQorICAgICAgYXNfZGlyPWAkYXNfZGlybmFtZSAt LSAiJGFzX2RpciIgfHwNCiskYXNfZXhwciBYIiRhc19kaXIiIDogJ1hcKC4qW14vXVwpLy8qW14v XVteL10qLyokJyBcfCBcDQorCSBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcDQorCSBY IiRhc19kaXIiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBYIiRhc19kaXIiIDogJ1hcKC9cKScgXHwg LiAyPi9kZXYvbnVsbCB8fA0KKyRhc19lY2hvIFgiJGFzX2RpciIgfA0KKyAgICBzZWQgJy9eWFwo LipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAg fQ0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0N CisJICAvXlhcKFwvXC9cKSQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9e WFwoXC9cKS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICBzLy4qLy4vOyBx J2ANCisgICAgICB0ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhaw0KKyAgICBkb25lDQorICAgIHRl c3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyINCisgIH0gfHwgdGVzdCAt ZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3IgImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19k aXIiDQorDQorDQorfSAjIGFzX2ZuX21rZGlyX3ANCitpZiBta2RpciAtcCAuIDI+L2Rldi9udWxs OyB0aGVuDQorICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInDQorZWxzZQ0KKyAgdGVz dCAtZCAuLy1wICYmIHJtZGlyIC4vLXANCisgIGFzX21rZGlyX3A9ZmFsc2UNCitmaQ0KKw0KK2lm IHRlc3QgLXggLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCisgIGFzX3Rlc3RfeD0ndGVzdCAteCcN CitlbHNlDQorICBpZiBscyAtZEwgLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCisgICAgYXNfbHNf TF9vcHRpb249TA0KKyAgZWxzZQ0KKyAgICBhc19sc19MX29wdGlvbj0NCisgIGZpDQorICBhc190 ZXN0X3g9Jw0KKyAgICBldmFsIHNoIC1jICdcJycNCisgICAgICBpZiB0ZXN0IC1kICIkMSI7IHRo ZW4NCisJdGVzdCAtZCAiJDEvLiI7DQorICAgICAgZWxzZQ0KKwljYXNlICQxIGluICMoDQorCS0q KXNldCAiLi8kMSI7Ow0KKwllc2FjOw0KKwljYXNlIGBscyAtbGQnJGFzX2xzX0xfb3B0aW9uJyAi JDEiIDI+L2Rldi9udWxsYCBpbiAjKCgNCisJPz8/W3N4XSopOjs7KilmYWxzZTs7ZXNhYztmaQ0K KyAgICAnXCcnIHNoDQorICAnDQorZmkNCithc19leGVjdXRhYmxlX3A9JGFzX3Rlc3RfeA0KKw0K KyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4N Cithc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMl O3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIg0KKw0KKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEg c3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLg0KK2FzX3RyX3NoPSJldmFsIHNlZCAn eSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciDQorDQorDQorZXhlYyA2PiYxDQorIyMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNYWluIGJvZHkgb2Yg JENPTkZJR19TVEFUVVMgc2NyaXB0LiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICMjDQorX0FTRU9GDQordGVzdCAkYXNfd3JpdGVfZmFpbCA9IDAgJiYgY2htb2Qg K3ggJENPTkZJR19TVEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0xDQorDQorY2F0ID4+JENPTkZJR19T VEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KKyMgU2F2ZSB0aGUgbG9nIG1lc3Nh Z2UsIHRvIGtlZXAgJDAgYW5kIHNvIG9uIG1lYW5pbmdmdWwsIGFuZCB0bw0KKyMgcmVwb3J0IGFj dHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcg0K KyMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuDQorYWNfbG9nPSINCitUaGlzIGZpbGUg d2FzIGV4dGVuZGVkIGJ5IG5ld2xpYiAkYXNfbWUgMS4xOS4wLCB3aGljaCB3YXMNCitnZW5lcmF0 ZWQgYnkgR05VIEF1dG9jb25mIDIuNjQuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMNCisN CisgIENPTkZJR19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMNCisgIENPTkZJR19IRUFERVJTICA9 ICRDT05GSUdfSEVBREVSUw0KKyAgQ09ORklHX0xJTktTICAgID0gJENPTkZJR19MSU5LUw0KKyAg Q09ORklHX0NPTU1BTkRTID0gJENPTkZJR19DT01NQU5EUw0KKyAgJCAkMCAkQA0KKw0KK29uIGAo aG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYA0KKyINCisNCitfQUNF T0YNCisNCitjYXNlICRhY19jb25maWdfZmlsZXMgaW4gKiINCisiKikgc2V0IHggJGFjX2NvbmZp Z19maWxlczsgc2hpZnQ7IGFjX2NvbmZpZ19maWxlcz0kKjs7DQorZXNhYw0KKw0KKw0KKw0KK2Nh dCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KKyMgRmlsZXMg dGhhdCBjb25maWcuc3RhdHVzIHdhcyBtYWRlIGZvci4NCitjb25maWdfZmlsZXM9IiRhY19jb25m aWdfZmlsZXMiDQorY29uZmlnX2NvbW1hbmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIg0KKw0KK19B Q0VPRg0KKw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWls PTENCithY19jc191c2FnZT0iXA0KK1xgJGFzX21lJyBpbnN0YW50aWF0ZXMgZmlsZXMgYW5kIG90 aGVyIGNvbmZpZ3VyYXRpb24gYWN0aW9ucw0KK2Zyb20gdGVtcGxhdGVzIGFjY29yZGluZyB0byB0 aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiAgVW5sZXNzIHRoZSBmaWxlcw0KK2FuZCBhY3Rpb25z IGFyZSBzcGVjaWZpZWQgYXMgVEFHcywgYWxsIGFyZSBpbnN0YW50aWF0ZWQgYnkgZGVmYXVsdC4N CisNCitVc2FnZTogJDAgW09QVElPTl0uLi4gW1RBR10uLi4NCisNCisgIC1oLCAtLWhlbHAgICAg ICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQNCisgIC1WLCAtLXZlcnNpb24gICAgcHJpbnQg dmVyc2lvbiBudW1iZXIgYW5kIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MsIHRoZW4gZXhpdA0KKyAg LXEsIC0tcXVpZXQsIC0tc2lsZW50DQorICAgICAgICAgICAgICAgICAgIGRvIG5vdCBwcmludCBw cm9ncmVzcyBtZXNzYWdlcw0KKyAgLWQsIC0tZGVidWcgICAgICBkb24ndCByZW1vdmUgdGVtcG9y YXJ5IGZpbGVzDQorICAgICAgLS1yZWNoZWNrICAgIHVwZGF0ZSAkYXNfbWUgYnkgcmVjb25maWd1 cmluZyBpbiB0aGUgc2FtZSBjb25kaXRpb25zDQorICAgICAgLS1maWxlPUZJTEVbOlRFTVBMQVRF XQ0KKyAgICAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSB0aGUgY29uZmlndXJhdGlvbiBmaWxl IEZJTEUNCisNCitDb25maWd1cmF0aW9uIGZpbGVzOg0KKyRjb25maWdfZmlsZXMNCisNCitDb25m aWd1cmF0aW9uIGNvbW1hbmRzOg0KKyRjb25maWdfY29tbWFuZHMNCisNCitSZXBvcnQgYnVncyB0 byB0aGUgcGFja2FnZSBwcm92aWRlci4iDQorDQorX0FDRU9GDQorY2F0ID4+JENPTkZJR19TVEFU VVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorYWNfY3NfdmVyc2lvbj0iXFwNCituZXds aWIgY29uZmlnLnN0YXR1cyAxLjE5LjANCitjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkg R05VIEF1dG9jb25mIDIuNjQsDQorICB3aXRoIG9wdGlvbnMgXFwiYCRhc19lY2hvICIkYWNfY29u ZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2BcXCINCisN CitDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorVGhp cyBjb25maWcuc3RhdHVzIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uDQorZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJp YnV0ZSBhbmQgbW9kaWZ5IGl0LiINCisNCithY19wd2Q9JyRhY19wd2QnDQorc3JjZGlyPSckc3Jj ZGlyJw0KK0lOU1RBTEw9JyRJTlNUQUxMJw0KK0FXSz0nJEFXSycNCit0ZXN0IC1uICJcJEFXSyIg fHwgQVdLPWF3aw0KK19BQ0VPRg0KKw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8 fCBhY193cml0ZV9mYWlsPTENCisjIFRoZSBkZWZhdWx0IGxpc3RzIGFwcGx5IGlmIHRoZSB1c2Vy IGRvZXMgbm90IHNwZWNpZnkgYW55IGZpbGUuDQorYWNfbmVlZF9kZWZhdWx0cz06DQord2hpbGUg dGVzdCAkIyAhPSAwDQorZG8NCisgIGNhc2UgJDEgaW4NCisgIC0tKj0qKQ0KKyAgICBhY19vcHRp b249YGV4cHIgIlgkMSIgOiAnWFwoW149XSpcKT0nYA0KKyAgICBhY19vcHRhcmc9YGV4cHIgIlgk MSIgOiAnWFtePV0qPVwoLipcKSdgDQorICAgIGFjX3NoaWZ0PToNCisgICAgOzsNCisgICopDQor ICAgIGFjX29wdGlvbj0kMQ0KKyAgICBhY19vcHRhcmc9JDINCisgICAgYWNfc2hpZnQ9c2hpZnQN CisgICAgOzsNCisgIGVzYWMNCisNCisgIGNhc2UgJGFjX29wdGlvbiBpbg0KKyAgIyBIYW5kbGlu ZyBvZiB0aGUgb3B0aW9ucy4NCisgIC1yZWNoZWNrIHwgLS1yZWNoZWNrIHwgLS1yZWNoZWMgfCAt LXJlY2hlIHwgLS1yZWNoIHwgLS1yZWMgfCAtLXJlIHwgLS1yKQ0KKyAgICBhY19jc19yZWNoZWNr PTogOzsNCisgIC0tdmVyc2lvbiB8IC0tdmVyc2lvIHwgLS12ZXJzaSB8IC0tdmVycyB8IC0tdmVy IHwgLS12ZSB8IC0tdiB8IC1WICkNCisgICAgJGFzX2VjaG8gIiRhY19jc192ZXJzaW9uIjsgZXhp dCA7Ow0KKyAgLS1kZWJ1ZyB8IC0tZGVidSB8IC0tZGViIHwgLS1kZSB8IC0tZCB8IC1kICkNCisg ICAgZGVidWc9OiA7Ow0KKyAgLS1maWxlIHwgLS1maWwgfCAtLWZpIHwgLS1mICkNCisgICAgJGFj X3NoaWZ0DQorICAgIGNhc2UgJGFjX29wdGFyZyBpbg0KKyAgICAqXCcqKSBhY19vcHRhcmc9YCRh c19lY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7Ow0KKyAgICBl c2FjDQorICAgIGFzX2ZuX2FwcGVuZCBDT05GSUdfRklMRVMgIiAnJGFjX29wdGFyZyciDQorICAg IGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7Ow0KKyAgLS1oZSB8IC0taCB8ICAtLWhlbHAgfCAtLWhl bCB8IC1oICkNCisgICAgJGFzX2VjaG8gIiRhY19jc191c2FnZSI7IGV4aXQgOzsNCisgIC1xIHwg LXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcDQorICB8IC1z aWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCB8IC0tc2kgfCAtLXMp DQorICAgIGFjX2NzX3NpbGVudD06IDs7DQorDQorICAjIFRoaXMgaXMgYW4gZXJyb3IuDQorICAt KikgYXNfZm5fZXJyb3IgInVucmVjb2duaXplZCBvcHRpb246IFxgJDEnDQorVHJ5IFxgJDAgLS1o ZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDs7DQorDQorICAqKSBhc19mbl9hcHBlbmQgYWNf Y29uZmlnX3RhcmdldHMgIiAkMSINCisgICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2UgOzsNCisN CisgIGVzYWMNCisgIHNoaWZ0DQorZG9uZQ0KKw0KK2FjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPQ0K Kw0KK2lmICRhY19jc19zaWxlbnQ7IHRoZW4NCisgIGV4ZWMgNj4vZGV2L251bGwNCisgIGFjX2Nv bmZpZ3VyZV9leHRyYV9hcmdzPSIkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgLS1zaWxlbnQiDQor ZmkNCisNCitfQUNFT0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0 ZV9mYWlsPTENCitpZiBcJGFjX2NzX3JlY2hlY2s7IHRoZW4NCisgIHNldCBYICckU0hFTEwnICck MCcgJGFjX2NvbmZpZ3VyZV9hcmdzIFwkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgLS1uby1jcmVh dGUgLS1uby1yZWN1cnNpb24NCisgIHNoaWZ0DQorICBcJGFzX2VjaG8gInJ1bm5pbmcgQ09ORklH X1NIRUxMPSRTSEVMTCBcJCoiID4mNg0KKyAgQ09ORklHX1NIRUxMPSckU0hFTEwnDQorICBleHBv cnQgQ09ORklHX1NIRUxMDQorICBleGVjICJcJEAiDQorZmkNCisNCitfQUNFT0YNCitjYXQgPj4k Q09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorZXhlYyA1Pj5jb25m aWcubG9nDQorew0KKyAgZWNobw0KKyAgc2VkICdoO3MvLi8tL2c7cy9eLi4uLyMjIC87cy8uLi4k LyAjIy87cDt4O3A7eCcgPDxfQVNCT1gNCisjIyBSdW5uaW5nICRhc19tZS4gIyMNCitfQVNCT1gN CisgICRhc19lY2hvICIkYWNfbG9nIg0KK30gPiY1DQorDQorX0FDRU9GDQorY2F0ID4+JENPTkZJ R19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorIw0KKyMgSU5JVC1DT01NQU5E Uw0KKyMNCitBTURFUF9UUlVFPSIkQU1ERVBfVFJVRSIgYWNfYXV4X2Rpcj0iJGFjX2F1eF9kaXIi DQorDQorX0FDRU9GDQorDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dy aXRlX2ZhaWw9MQ0KKw0KKyMgSGFuZGxpbmcgb2YgYXJndW1lbnRzLg0KK2ZvciBhY19jb25maWdf dGFyZ2V0IGluICRhY19jb25maWdfdGFyZ2V0cw0KK2RvDQorICBjYXNlICRhY19jb25maWdfdGFy Z2V0IGluDQorICAgICJkZXBmaWxlcyIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5E UyBkZXBmaWxlcyIgOzsNCisgICAgIk1ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJ TEVTIE1ha2VmaWxlIiA7Ow0KKw0KKyAgKikgYXNfZm5fZXJyb3IgImludmFsaWQgYXJndW1lbnQ6 IFxgJGFjX2NvbmZpZ190YXJnZXQnIiAiJExJTkVOTyIgNTs7DQorICBlc2FjDQorZG9uZQ0KKw0K Kw0KKyMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVjaWZ5IHRo ZSBpdGVtcyB0byBpbnN0YW50aWF0ZSwNCisjIHRoZW4gdGhlIGVudnZhciBpbnRlcmZhY2UgaXMg dXNlZC4gIFNldCBvbmx5IHRob3NlIHRoYXQgYXJlIG5vdC4NCisjIFdlIHVzZSB0aGUgbG9uZyBm b3JtIGZvciB0aGUgZGVmYXVsdCBhc3NpZ25tZW50IGJlY2F1c2Ugb2YgYW4gZXh0cmVtZWx5DQor IyBiaXphcnJlIGJ1ZyBvbiBTdW5PUyA0LjEuMy4NCitpZiAkYWNfbmVlZF9kZWZhdWx0czsgdGhl bg0KKyAgdGVzdCAiJHtDT05GSUdfRklMRVMrc2V0fSIgPSBzZXQgfHwgQ09ORklHX0ZJTEVTPSRj b25maWdfZmlsZXMNCisgIHRlc3QgIiR7Q09ORklHX0NPTU1BTkRTK3NldH0iID0gc2V0IHx8IENP TkZJR19DT01NQU5EUz0kY29uZmlnX2NvbW1hbmRzDQorZmkNCisNCisjIEhhdmUgYSB0ZW1wb3Jh cnkgZGlyZWN0b3J5IGZvciBjb252ZW5pZW5jZS4gIE1ha2UgaXQgaW4gdGhlIGJ1aWxkIHRyZWUN CisjIHNpbXBseSBiZWNhdXNlIHRoZXJlIGlzIG5vIHJlYXNvbiBhZ2FpbnN0IGhhdmluZyBpdCBo ZXJlLCBhbmQgaW4gYWRkaXRpb24sDQorIyBjcmVhdGluZyBhbmQgbW92aW5nIGZpbGVzIGZyb20g L3RtcCBjYW4gc29tZXRpbWVzIGNhdXNlIHByb2JsZW1zLg0KKyMgSG9vayBmb3IgaXRzIHJlbW92 YWwgdW5sZXNzIGRlYnVnZ2luZy4NCisjIE5vdGUgdGhhdCB0aGVyZSBpcyBhIHNtYWxsIHdpbmRv dyBpbiB3aGljaCB0aGUgZGlyZWN0b3J5IHdpbGwgbm90IGJlIGNsZWFuZWQ6DQorIyBhZnRlciBp dHMgY3JlYXRpb24gYnV0IGJlZm9yZSBpdHMgbmFtZSBoYXMgYmVlbiBhc3NpZ25lZCB0byBgJHRt cCcuDQorJGRlYnVnIHx8DQorew0KKyAgdG1wPQ0KKyAgdHJhcCAnZXhpdF9zdGF0dXM9JD8NCisg IHsgdGVzdCAteiAiJHRtcCIgfHwgdGVzdCAhIC1kICIkdG1wIiB8fCBybSAtZnIgIiR0bXAiOyB9 ICYmIGV4aXQgJGV4aXRfc3RhdHVzDQorJyAwDQorICB0cmFwICdhc19mbl9leGl0IDEnIDEgMiAx MyAxNQ0KK30NCisjIENyZWF0ZSBhIChzZWN1cmUpIHRtcCBkaXJlY3RvcnkgZm9yIHRtcCBmaWxl cy4NCisNCit7DQorICB0bXA9YCh1bWFzayAwNzcgJiYgbWt0ZW1wIC1kICIuL2NvbmZYWFhYWFgi KSAyPi9kZXYvbnVsbGAgJiYNCisgIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiDQor fSAgfHwNCit7DQorICB0bXA9Li9jb25mJCQtJFJBTkRPTQ0KKyAgKHVtYXNrIDA3NyAmJiBta2Rp ciAiJHRtcCIpDQorfSB8fCBhc19mbl9lcnJvciAiY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBk aXJlY3RvcnkgaW4gLiIgIiRMSU5FTk8iIDUNCisNCisjIFNldCB1cCB0aGUgc2NyaXB0cyBmb3Ig Q09ORklHX0ZJTEVTIHNlY3Rpb24uDQorIyBObyBuZWVkIHRvIGdlbmVyYXRlIHRoZW0gaWYgdGhl cmUgYXJlIG5vIENPTkZJR19GSUxFUy4NCisjIFRoaXMgaGFwcGVucyBmb3IgaW5zdGFuY2Ugd2l0 aCBgLi9jb25maWcuc3RhdHVzIGNvbmZpZy5oJy4NCitpZiB0ZXN0IC1uICIkQ09ORklHX0ZJTEVT IjsgdGhlbg0KKw0KKw0KK2FjX2NyPWBlY2hvIFggfCB0ciBYICdcMDE1J2ANCisjIE9uIGN5Z3dp biwgYmFzaCBjYW4gZWF0IFxyIGluc2lkZSBgYCBpZiB0aGUgdXNlciByZXF1ZXN0ZWQgaWduY3Iu DQorIyBCdXQgd2Uga25vdyBvZiBubyBvdGhlciBzaGVsbCB3aGVyZSBhY19jciB3b3VsZCBiZSBl bXB0eSBhdCB0aGlzDQorIyBwb2ludCwgc28gd2UgY2FuIHVzZSBhIGJhc2hpc20gYXMgYSBmYWxs YmFjay4NCitpZiB0ZXN0ICJ4JGFjX2NyIiA9IHg7IHRoZW4NCisgIGV2YWwgYWNfY3I9XCRcJ1xc clwnDQorZmkNCithY19jc19hd2tfY3I9YCRBV0sgJ0JFR0lOIHsgcHJpbnQgImFccmIiIH0nIDwv ZGV2L251bGwgMj4vZGV2L251bGxgDQoraWYgdGVzdCAiJGFjX2NzX2F3a19jciIgPSAiYSR7YWNf Y3J9YiI7IHRoZW4NCisgIGFjX2NzX2F3a19jcj0nXHInDQorZWxzZQ0KKyAgYWNfY3NfYXdrX2Ny PSRhY19jcg0KK2ZpDQorDQorZWNobyAnQkVHSU4geycgPiIkdG1wL3N1YnMxLmF3ayIgJiYNCitf QUNFT0YNCisNCisNCit7DQorICBlY2hvICJjYXQgPmNvbmYkJHN1YnMuYXdrIDw8X0FDRU9GIiAm Jg0KKyAgZWNobyAiJGFjX3N1YnN0X3ZhcnMiIHwgc2VkICdzLy4qLyYhJCYkYWNfZGVsaW0vJyAm Jg0KKyAgZWNobyAiX0FDRU9GIg0KK30gPmNvbmYkJHN1YnMuc2ggfHwNCisgIGFzX2ZuX2Vycm9y ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUNCithY19kZWxpbV9u dW09YGVjaG8gIiRhY19zdWJzdF92YXJzIiB8IGdyZXAgLWMgJyQnYA0KK2FjX2RlbGltPSclIV8h IyAnDQorZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIDo7 IGRvDQorICAuIC4vY29uZiQkc3Vicy5zaCB8fA0KKyAgICBhc19mbl9lcnJvciAiY291bGQgbm90 IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1DQorDQorICBhY19kZWxpbV9uPWBzZWQg LW4gInMvLiokYWNfZGVsaW1cJC9YL3AiIGNvbmYkJHN1YnMuYXdrIHwgZ3JlcCAtYyBYYA0KKyAg aWYgdGVzdCAkYWNfZGVsaW1fbiA9ICRhY19kZWxpbV9udW07IHRoZW4NCisgICAgYnJlYWsNCisg IGVsaWYgJGFjX2xhc3RfdHJ5OyB0aGVuDQorICAgIGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgbWFr ZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUNCisgIGVsc2UNCisgICAgYWNfZGVsaW09IiRh Y19kZWxpbSEkYWNfZGVsaW0gXyRhY19kZWxpbSEhICINCisgIGZpDQorZG9uZQ0KK3JtIC1mIGNv bmYkJHN1YnMuc2gNCisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0 ZV9mYWlsPTENCitjYXQgPj4iXCR0bXAvc3ViczEuYXdrIiA8PFxcX0FDQVdLICYmDQorX0FDRU9G DQorc2VkIC1uICcNCitoDQorcy9eL1NbIi87IHMvIS4qLyJdPS8NCitwDQorZw0KK3MvXlteIV0q IS8vDQorOnJlcGwNCit0IHJlcGwNCitzLyciJGFjX2RlbGltIickLy8NCit0IGRlbGltDQorOm5s DQoraA0KK3MvXCguXHsxNDhcfVwpLiovXDEvDQordCBtb3JlMQ0KK3MvWyJcXF0vXFwmL2c7IHMv Xi8iLzsgcy8kL1xcbiJcXC8NCitwDQorbg0KK2IgcmVwbA0KKzptb3JlMQ0KK3MvWyJcXF0vXFwm L2c7IHMvXi8iLzsgcy8kLyJcXC8NCitwDQorZw0KK3MvLlx7MTQ4XH0vLw0KK3QgbmwNCis6ZGVs aW0NCitoDQorcy9cKC5cezE0OFx9XCkuKi9cMS8NCit0IG1vcmUyDQorcy9bIlxcXS9cXCYvZzsg cy9eLyIvOyBzLyQvIi8NCitwDQorYg0KKzptb3JlMg0KK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsg cy8kLyJcXC8NCitwDQorZw0KK3MvLlx7MTQ4XH0vLw0KK3QgZGVsaW0NCisnIDxjb25mJCRzdWJz LmF3ayB8IHNlZCAnDQorL15bXiIiXS97DQorICBODQorICBzL1xuLy8NCit9DQorJyA+PiRDT05G SUdfU1RBVFVTIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KK3JtIC1mIGNvbmYkJHN1YnMuYXdrDQorY2F0 ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorX0FDQVdLDQor Y2F0ID4+IlwkdG1wL3N1YnMxLmF3ayIgPDxfQUNBV0sgJiYNCisgIGZvciAoa2V5IGluIFMpIFNf aXNfc2V0W2tleV0gPSAxDQorICBGUyA9ICIHIg0KKw0KK30NCit7DQorICBsaW5lID0gJCAwDQor ICBuZmllbGRzID0gc3BsaXQobGluZSwgZmllbGQsICJAIikNCisgIHN1YnN0ZWQgPSAwDQorICBs ZW4gPSBsZW5ndGgoZmllbGRbMV0pDQorICBmb3IgKGkgPSAyOyBpIDwgbmZpZWxkczsgaSsrKSB7 DQorICAgIGtleSA9IGZpZWxkW2ldDQorICAgIGtleWxlbiA9IGxlbmd0aChrZXkpDQorICAgIGlm IChTX2lzX3NldFtrZXldKSB7DQorICAgICAgdmFsdWUgPSBTW2tleV0NCisgICAgICBsaW5lID0g c3Vic3RyKGxpbmUsIDEsIGxlbikgIiIgdmFsdWUgIiIgc3Vic3RyKGxpbmUsIGxlbiArIGtleWxl biArIDMpDQorICAgICAgbGVuICs9IGxlbmd0aCh2YWx1ZSkgKyBsZW5ndGgoZmllbGRbKytpXSkN CisgICAgICBzdWJzdGVkID0gMQ0KKyAgICB9IGVsc2UNCisgICAgICBsZW4gKz0gMSArIGtleWxl bg0KKyAgfQ0KKw0KKyAgcHJpbnQgbGluZQ0KK30NCisNCitfQUNBV0sNCitfQUNFT0YNCitjYXQg Pj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQoraWYgc2VkICJz LyRhY19jci8vIiA8IC9kZXYvbnVsbCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICBzZWQgInMv JGFjX2NyXCQvLzsgcy8kYWNfY3IvJGFjX2NzX2F3a19jci9nIg0KK2Vsc2UNCisgIGNhdA0KK2Zp IDwgIiR0bXAvc3ViczEuYXdrIiA+ICIkdG1wL3N1YnMuYXdrIiBcDQorICB8fCBhc19mbl9lcnJv ciAiY291bGQgbm90IHNldHVwIGNvbmZpZyBmaWxlcyBtYWNoaW5lcnkiICIkTElORU5PIiA1DQor X0FDRU9GDQorDQorIyBWUEFUSCBtYXkgY2F1c2UgdHJvdWJsZSB3aXRoIHNvbWUgbWFrZXMsIHNv IHdlIHJlbW92ZSAkKHNyY2RpciksDQorIyAke3NyY2Rpcn0gYW5kIEBzcmNkaXJAIGZyb20gVlBB VEggaWYgc3JjZGlyIGlzICIuIiwgc3RyaXAgbGVhZGluZyBhbmQNCisjIHRyYWlsaW5nIGNvbG9u cyBhbmQgdGhlbiByZW1vdmUgdGhlIHdob2xlIGxpbmUgaWYgVlBBVEggYmVjb21lcyBlbXB0eQ0K KyMgKGFjdHVhbGx5IHdlIGxlYXZlIGFuIGVtcHR5IGxpbmUgdG8gcHJlc2VydmUgbGluZSBudW1i ZXJzKS4NCitpZiB0ZXN0ICJ4JHNyY2RpciIgPSB4LjsgdGhlbg0KKyAgYWNfdnBzdWI9Jy9eWwkg XSpWUEFUSFsJIF0qPS97DQorcy86KlwkKHNyY2Rpcik6Ki86Lw0KK3MvOipcJHtzcmNkaXJ9Oiov Oi8NCitzLzoqQHNyY2RpckA6Ki86Lw0KK3MvXlwoW149XSo9WwkgXSpcKToqL1wxLw0KK3MvOiok Ly8NCitzL15bXj1dKj1bCSBdKiQvLw0KK30nDQorZmkNCisNCitjYXQgPj4kQ09ORklHX1NUQVRV UyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorZmkgIyB0ZXN0IC1uICIkQ09ORklHX0ZJ TEVTIg0KKw0KKw0KK2V2YWwgc2V0IFggIiAgOkYgJENPTkZJR19GSUxFUyAgICAgIDpDICRDT05G SUdfQ09NTUFORFMiDQorc2hpZnQNCitmb3IgYWNfdGFnDQorZG8NCisgIGNhc2UgJGFjX3RhZyBp bg0KKyAgOltGSExDXSkgYWNfbW9kZT0kYWNfdGFnOyBjb250aW51ZTs7DQorICBlc2FjDQorICBj YXNlICRhY19tb2RlJGFjX3RhZyBpbg0KKyAgOltGSExdKjoqKTs7DQorICA6TCogfCA6Qyo6Kikg YXNfZm5fZXJyb3IgImludmFsaWQgdGFnIFxgJGFjX3RhZyciICIkTElORU5PIiA1OzsNCisgIDpb RkhdLSkgYWNfdGFnPS06LTs7DQorICA6W0ZIXSopIGFjX3RhZz0kYWNfdGFnOiRhY190YWcuaW47 Ow0KKyAgZXNhYw0KKyAgYWNfc2F2ZV9JRlM9JElGUw0KKyAgSUZTPToNCisgIHNldCB4ICRhY190 YWcNCisgIElGUz0kYWNfc2F2ZV9JRlMNCisgIHNoaWZ0DQorICBhY19maWxlPSQxDQorICBzaGlm dA0KKw0KKyAgY2FzZSAkYWNfbW9kZSBpbg0KKyAgOkwpIGFjX3NvdXJjZT0kMTs7DQorICA6W0ZI XSkNCisgICAgYWNfZmlsZV9pbnB1dHM9DQorICAgIGZvciBhY19mDQorICAgIGRvDQorICAgICAg Y2FzZSAkYWNfZiBpbg0KKyAgICAgIC0pIGFjX2Y9IiR0bXAvc3RkaW4iOzsNCisgICAgICAqKSAj IExvb2sgZm9yIHRoZSBmaWxlIGZpcnN0IGluIHRoZSBidWlsZCB0cmVlLCB0aGVuIGluIHRoZSBz b3VyY2UgdHJlZQ0KKwkgIyAoaWYgdGhlIHBhdGggaXMgbm90IGFic29sdXRlKS4gIFRoZSBhYnNv bHV0ZSBwYXRoIGNhbm5vdCBiZSBET1Mtc3R5bGUsDQorCSAjIGJlY2F1c2UgJGFjX2YgY2Fubm90 IGNvbnRhaW4gYDonLg0KKwkgdGVzdCAtZiAiJGFjX2YiIHx8DQorCSAgIGNhc2UgJGFjX2YgaW4N CisJICAgW1xcLyRdKikgZmFsc2U7Ow0KKwkgICAqKSB0ZXN0IC1mICIkc3JjZGlyLyRhY19mIiAm JiBhY19mPSIkc3JjZGlyLyRhY19mIjs7DQorCSAgIGVzYWMgfHwNCisJICAgYXNfZm5fZXJyb3Ig ImNhbm5vdCBmaW5kIGlucHV0IGZpbGU6IFxgJGFjX2YnIiAiJExJTkVOTyIgNTs7DQorICAgICAg ZXNhYw0KKyAgICAgIGNhc2UgJGFjX2YgaW4gKlwnKikgYWNfZj1gJGFzX2VjaG8gIiRhY19mIiB8 IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7IGVzYWMNCisgICAgICBhc19mbl9hcHBlbmQgYWNf ZmlsZV9pbnB1dHMgIiAnJGFjX2YnIg0KKyAgICBkb25lDQorDQorICAgICMgTGV0J3Mgc3RpbGwg cHJldGVuZCBpdCBpcyBgY29uZmlndXJlJyB3aGljaCBpbnN0YW50aWF0ZXMgKGkuZS4sIGRvbid0 DQorICAgICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoN CisgICAgIyAgICAvKiBjb25maWcuaC4gIEdlbmVyYXRlZCBieSBjb25maWcuc3RhdHVzLiAgKi8N CisgICAgY29uZmlndXJlX2lucHV0PSdHZW5lcmF0ZWQgZnJvbSAnYA0KKwkgICRhc19lY2hvICIk KiIgfCBzZWQgJ3N8XlteOl0qL3x8O3N8OlteOl0qL3wsIHxnJw0KKwlgJyBieSBjb25maWd1cmUu Jw0KKyAgICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuDQorICAgICAgY29uZmlndXJl X2lucHV0PSIkYWNfZmlsZS4gICRjb25maWd1cmVfaW5wdXQiDQorICAgICAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyAkYWNfZmlsZSIgPiY1DQorJGFz X2VjaG8gIiRhc19tZTogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNjt9DQorICAgIGZpDQorICAgICMg TmV1dHJhbGl6ZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW50ZXJwcmV0ZWQgYnkgc2VkIGluIHJlcGxh Y2VtZW50IHN0cmluZ3MuDQorICAgIGNhc2UgJGNvbmZpZ3VyZV9pbnB1dCBpbiAjKA0KKyAgICAq XCYqIHwgKlx8KiB8ICpcXCogKQ0KKyAgICAgICBhY19zZWRfY29uZl9pbnB1dD1gJGFzX2VjaG8g IiRjb25maWd1cmVfaW5wdXQiIHwNCisgICAgICAgc2VkICdzL1tcXFxcJnxdL1xcXFwmL2cnYDs7 ICMoDQorICAgICopIGFjX3NlZF9jb25mX2lucHV0PSRjb25maWd1cmVfaW5wdXQ7Ow0KKyAgICBl c2FjDQorDQorICAgIGNhc2UgJGFjX3RhZyBpbg0KKyAgICAqOi06KiB8ICo6LSkgY2F0ID4iJHRt cC9zdGRpbiIgXA0KKyAgICAgIHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgY3JlYXRlICRhY19m aWxlIiAiJExJTkVOTyIgNSA7Ow0KKyAgICBlc2FjDQorICAgIDs7DQorICBlc2FjDQorDQorICBh Y19kaXI9YCRhc19kaXJuYW1lIC0tICIkYWNfZmlsZSIgfHwNCiskYXNfZXhwciBYIiRhY19maWxl IiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXA0KKwkgWCIkYWNfZmlsZSIgOiAn WFwoLy9cKVteL10nIFx8IFwNCisJIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBY IiRhY19maWxlIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYIiRh Y19maWxlIiB8DQorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97DQor CSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXClbXi9dLiovew0KKwkg ICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpJC97DQorCSAgICBzLy9c MS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wpLiovew0KKwkgICAgcy8vXDEvDQorCSAg ICBxDQorCSAgfQ0KKwkgIHMvLiovLi87IHEnYA0KKyAgYXNfZGlyPSIkYWNfZGlyIjsgYXNfZm5f bWtkaXJfcA0KKyAgYWNfYnVpbGRkaXI9Lg0KKw0KK2Nhc2UgIiRhY19kaXIiIGluDQorLikgYWNf ZGlyX3N1ZmZpeD0gYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7 DQorKikNCisgIGFjX2Rpcl9zdWZmaXg9L2AkYXNfZWNobyAiJGFjX2RpciIgfCBzZWQgJ3N8Xlwu W1xcL118fCdgDQorICAjIEEgIi4uIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZm aXguDQorICBhY190b3BfYnVpbGRkaXJfc3ViPWAkYXNfZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwg c2VkICdzfC9bXlxcL10qfC8uLnxnO3N8L3x8J2ANCisgIGNhc2UgJGFjX3RvcF9idWlsZGRpcl9z dWIgaW4NCisgICIiKSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0g OzsNCisgICopICBhY190b3BfYnVpbGRfcHJlZml4PSRhY190b3BfYnVpbGRkaXJfc3ViLyA7Ow0K KyAgZXNhYyA7Ow0KK2VzYWMNCithY19hYnNfdG9wX2J1aWxkZGlyPSRhY19wd2QNCithY19hYnNf YnVpbGRkaXI9JGFjX3B3ZCRhY19kaXJfc3VmZml4DQorIyBmb3IgYmFja3dhcmQgY29tcGF0aWJp bGl0eToNCithY190b3BfYnVpbGRkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgNCisNCitjYXNlICRz cmNkaXIgaW4NCisgIC4pICAjIFdlIGFyZSBidWlsZGluZyBpbiBwbGFjZS4NCisgICAgYWNfc3Jj ZGlyPS4NCisgICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkZGlyX3N1Yg0KKyAgICBhY19h YnNfdG9wX3NyY2Rpcj0kYWNfcHdkIDs7DQorICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29s dXRlIG5hbWUuDQorICAgIGFjX3NyY2Rpcj0kc3JjZGlyJGFjX2Rpcl9zdWZmaXg7DQorICAgIGFj X3RvcF9zcmNkaXI9JHNyY2Rpcg0KKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7DQor ICAqKSAjIFJlbGF0aXZlIG5hbWUuDQorICAgIGFjX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZp eCRzcmNkaXIkYWNfZGlyX3N1ZmZpeA0KKyAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRf cHJlZml4JHNyY2Rpcg0KKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkLyRzcmNkaXIgOzsN Citlc2FjDQorYWNfYWJzX3NyY2Rpcj0kYWNfYWJzX3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeA0K Kw0KKw0KKyAgY2FzZSAkYWNfbW9kZSBpbg0KKyAgOkYpDQorICAjDQorICAjIENPTkZJR19GSUxF DQorICAjDQorDQorICBjYXNlICRJTlNUQUxMIGluDQorICBbXFwvJF0qIHwgPzpbXFwvXSogKSBh Y19JTlNUQUxMPSRJTlNUQUxMIDs7DQorICAqKSBhY19JTlNUQUxMPSRhY190b3BfYnVpbGRfcHJl Zml4JElOU1RBTEwgOzsNCisgIGVzYWMNCitfQUNFT0YNCisNCitjYXQgPj4kQ09ORklHX1NUQVRV UyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorIyBJZiB0aGUgdGVtcGxhdGUgZG9lcyBu b3Qga25vdyBhYm91dCBkYXRhcm9vdGRpciwgZXhwYW5kIGl0Lg0KKyMgRklYTUU6IFRoaXMgaGFj ayBzaG91bGQgYmUgcmVtb3ZlZCBhIGZldyB5ZWFycyBhZnRlciAyLjYwLg0KK2FjX2RhdGFyb290 ZGlyX2hhY2s9OyBhY19kYXRhcm9vdGRpcl9zZWVuPQ0KK2FjX3NlZF9kYXRhcm9vdD0nDQorL2Rh dGFyb290ZGlyLyB7DQorICBwDQorICBxDQorfQ0KKy9AZGF0YWRpckAvcA0KKy9AZG9jZGlyQC9w DQorL0BpbmZvZGlyQC9wDQorL0Bsb2NhbGVkaXJAL3ANCisvQG1hbmRpckAvcCcNCitjYXNlIGBl dmFsICJzZWQgLW4gXCJcJGFjX3NlZF9kYXRhcm9vdFwiICRhY19maWxlX2lucHV0cyJgIGluDQor KmRhdGFyb290ZGlyKikgYWNfZGF0YXJvb3RkaXJfc2Vlbj15ZXM7Ow0KKypAZGF0YWRpckAqfCpA ZG9jZGlyQCp8KkBpbmZvZGlyQCp8KkBsb2NhbGVkaXJAKnwqQG1hbmRpckAqKQ0KKyAgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkYWNfZmlsZV9pbnB1 dHMgc2VlbXMgdG8gaWdub3JlIHRoZSAtLWRhdGFyb290ZGlyIHNldHRpbmciID4mNQ0KKyRhc19l Y2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cyBzZWVtcyB0byBpZ25vcmUgdGhl IC0tZGF0YXJvb3RkaXIgc2V0dGluZyIgPiYyO30NCitfQUNFT0YNCitjYXQgPj4kQ09ORklHX1NU QVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCisgIGFjX2RhdGFyb290ZGlyX2hhY2s9 Jw0KKyAgcyZAZGF0YWRpckAmJGRhdGFkaXImZw0KKyAgcyZAZG9jZGlyQCYkZG9jZGlyJmcNCisg IHMmQGluZm9kaXJAJiRpbmZvZGlyJmcNCisgIHMmQGxvY2FsZWRpckAmJGxvY2FsZWRpciZnDQor ICBzJkBtYW5kaXJAJiRtYW5kaXImZw0KKyAgcyZcXFwke2RhdGFyb290ZGlyfSYkZGF0YXJvb3Rk aXImZycgOzsNCitlc2FjDQorX0FDRU9GDQorDQorIyBOZXV0cmFsaXplIFZQQVRIIHdoZW4gYCRz cmNkaXInID0gYC4nLg0KKyMgU2hlbGwgY29kZSBpbiBjb25maWd1cmUuYWMgbWlnaHQgc2V0IGV4 dHJhc3ViLg0KKyMgRklYTUU6IGRvIHdlIHJlYWxseSB3YW50IHRvIG1haW50YWluIHRoaXMgZmVh dHVyZT8NCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEN CithY19zZWRfZXh0cmE9IiRhY192cHN1Yg0KKyRleHRyYXN1Yg0KK19BQ0VPRg0KK2NhdCA+PiRD T05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCis6dA0KKy9AW2EtekEt Wl9dW2EtekEtWl8wLTldKkAvIWINCitzfEBjb25maWd1cmVfaW5wdXRAfCRhY19zZWRfY29uZl9p bnB1dHw7dCB0DQorcyZAdG9wX2J1aWxkZGlyQCYkYWNfdG9wX2J1aWxkZGlyX3N1YiY7dCB0DQor cyZAdG9wX2J1aWxkX3ByZWZpeEAmJGFjX3RvcF9idWlsZF9wcmVmaXgmO3QgdA0KK3MmQHNyY2Rp ckAmJGFjX3NyY2RpciY7dCB0DQorcyZAYWJzX3NyY2RpckAmJGFjX2Fic19zcmNkaXImO3QgdA0K K3MmQHRvcF9zcmNkaXJAJiRhY190b3Bfc3JjZGlyJjt0IHQNCitzJkBhYnNfdG9wX3NyY2RpckAm JGFjX2Fic190b3Bfc3JjZGlyJjt0IHQNCitzJkBidWlsZGRpckAmJGFjX2J1aWxkZGlyJjt0IHQN CitzJkBhYnNfYnVpbGRkaXJAJiRhY19hYnNfYnVpbGRkaXImO3QgdA0KK3MmQGFic190b3BfYnVp bGRkaXJAJiRhY19hYnNfdG9wX2J1aWxkZGlyJjt0IHQNCitzJkBJTlNUQUxMQCYkYWNfSU5TVEFM TCY7dCB0DQorJGFjX2RhdGFyb290ZGlyX2hhY2sNCisiDQorZXZhbCBzZWQgXCJcJGFjX3NlZF9l eHRyYVwiICIkYWNfZmlsZV9pbnB1dHMiIHwgJEFXSyAtZiAiJHRtcC9zdWJzLmF3ayIgPiR0bXAv b3V0IFwNCisgIHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJ TkVOTyIgNQ0KKw0KK3Rlc3QgLXogIiRhY19kYXRhcm9vdGRpcl9oYWNrJGFjX2RhdGFyb290ZGly X3NlZW4iICYmDQorICB7IGFjX291dD1gc2VkIC1uICcvXCR7ZGF0YXJvb3RkaXJ9L3AnICIkdG1w L291dCJgOyB0ZXN0IC1uICIkYWNfb3V0IjsgfSAmJg0KKyAgeyBhY19vdXQ9YHNlZCAtbiAnL15b CSBdKmRhdGFyb290ZGlyWwkgXSo6Kj0vcCcgIiR0bXAvb3V0ImA7IHRlc3QgLXogIiRhY19vdXQi OyB9ICYmDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5J Tkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFy b290ZGlyJw0KK3doaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUg aXQgaXMgZGVmaW5lZC4iID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxl IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJw0KK3do aWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgZGVmaW5l ZC4iID4mMjt9DQorDQorICBybSAtZiAiJHRtcC9zdGRpbiINCisgIGNhc2UgJGFjX2ZpbGUgaW4N CisgIC0pIGNhdCAiJHRtcC9vdXQiICYmIHJtIC1mICIkdG1wL291dCI7Ow0KKyAgKikgcm0gLWYg IiRhY19maWxlIiAmJiBtdiAiJHRtcC9vdXQiICIkYWNfZmlsZSI7Ow0KKyAgZXNhYyBcDQorICB8 fCBhc19mbl9lcnJvciAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUNCisg OzsNCisNCisNCisgIDpDKSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBleGVjdXRpbmcgJGFjX2ZpbGUgY29tbWFuZHMiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGV4 ZWN1dGluZyAkYWNfZmlsZSBjb21tYW5kcyIgPiY2O30NCisgOzsNCisgIGVzYWMNCisNCisNCisg IGNhc2UgJGFjX2ZpbGUkYWNfbW9kZSBpbg0KKyAgICAiZGVwZmlsZXMiOkMpIHRlc3QgeCIkQU1E RVBfVFJVRSIgIT0geCIiIHx8IGZvciBtZiBpbiAkQ09ORklHX0ZJTEVTOyBkbw0KKyAgIyBTdHJp cCBNRiBzbyB3ZSBlbmQgdXAgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZmlsZS4NCisgIG1mPWBlY2hv ICIkbWYiIHwgc2VkIC1lICdzLzouKiQvLydgDQorICAjIENoZWNrIHdoZXRoZXIgdGhpcyBpcyBh biBBdXRvbWFrZSBnZW5lcmF0ZWQgTWFrZWZpbGUgb3Igbm90Lg0KKyAgIyBXZSB1c2VkIHRvIG1h dGNoIG9ubHkgdGhlIGZpbGVzIG5hbWVkIGBNYWtlZmlsZS5pbicsIGJ1dA0KKyAgIyBzb21lIHBl b3BsZSByZW5hbWUgdGhlbTsgc28gaW5zdGVhZCB3ZSBsb29rIGF0IHRoZSBmaWxlIGNvbnRlbnQu DQorICAjIEdyZXAnaW5nIHRoZSBmaXJzdCBsaW5lIGlzIG5vdCBlbm91Z2g6IHNvbWUgcGVvcGxl IHBvc3QtcHJvY2Vzcw0KKyAgIyBlYWNoIE1ha2VmaWxlLmluIGFuZCBhZGQgYSBuZXcgbGluZSBv biB0b3Agb2YgZWFjaCBmaWxlIHRvIHNheSBzby4NCisgICMgU28gbGV0J3MgZ3JlcCB3aG9sZSBm aWxlLg0KKyAgaWYgZ3JlcCAnXiMuKmdlbmVyYXRlZCBieSBhdXRvbWFrZScgJG1mID4gL2Rldi9u dWxsIDI+JjE7IHRoZW4NCisgICAgZGlycGFydD1gJGFzX2Rpcm5hbWUgLS0gIiRtZiIgfHwNCisk YXNfZXhwciBYIiRtZiIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwNCisJIFgi JG1mIiA6ICdYXCgvL1wpW14vXScgXHwgXA0KKwkgWCIkbWYiIDogJ1hcKC8vXCkkJyBcfCBcDQor CSBYIiRtZiIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8DQorJGFzX2VjaG8gWCIkbWYi IHwNCisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sNCisJICAgIHMv L1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKVteL10uKi97DQorCSAgICBzLy9c MS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXCkkL3sNCisJICAgIHMvL1wxLw0KKwkg ICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXCkuKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJ ICB9DQorCSAgcy8uKi8uLzsgcSdgDQorICBlbHNlDQorICAgIGNvbnRpbnVlDQorICBmaQ0KKyAg IyBFeHRyYWN0IHRoZSBkZWZpbml0aW9uIG9mIERFUERJUiwgYW1fX2luY2x1ZGUsIGFuZCBhbV9f cXVvdGUNCisgICMgZnJvbSB0aGUgTWFrZWZpbGUgd2l0aG91dCBydW5uaW5nIGBtYWtlJy4NCisg IERFUERJUj1gc2VkIC1uICdzL15ERVBESVIgPSAvL3AnIDwgIiRtZiJgDQorICB0ZXN0IC16ICIk REVQRElSIiAmJiBjb250aW51ZQ0KKyAgYW1fX2luY2x1ZGU9YHNlZCAtbiAncy9eYW1fX2luY2x1 ZGUgPSAvL3AnIDwgIiRtZiJgDQorICB0ZXN0IC16ICJhbV9faW5jbHVkZSIgJiYgY29udGludWUN CisgIGFtX19xdW90ZT1gc2VkIC1uICdzL15hbV9fcXVvdGUgPSAvL3AnIDwgIiRtZiJgDQorICAj IFdoZW4gdXNpbmcgYW5zaTJrbnIsIFUgbWF5IGJlIGVtcHR5IG9yIGFuIHVuZGVyc2NvcmU7IGV4 cGFuZCBpdA0KKyAgVT1gc2VkIC1uICdzL15VID0gLy9wJyA8ICIkbWYiYA0KKyAgIyBGaW5kIGFs bCBkZXBlbmRlbmN5IG91dHB1dCBmaWxlcywgdGhleSBhcmUgaW5jbHVkZWQgZmlsZXMgd2l0aA0K KyAgIyAkKERFUERJUikgaW4gdGhlaXIgbmFtZXMuICBXZSBpbnZva2Ugc2VkIHR3aWNlIGJlY2F1 c2UgaXQgaXMgdGhlDQorICAjIHNpbXBsZXN0IGFwcHJvYWNoIHRvIGNoYW5naW5nICQoREVQRElS KSB0byBpdHMgYWN0dWFsIHZhbHVlIGluIHRoZQ0KKyAgIyBleHBhbnNpb24uDQorICBmb3IgZmls ZSBpbiBgc2VkIC1uICINCisgICAgcy9eJGFtX19pbmNsdWRlICRhbV9fcXVvdGVcKC4qKERFUERJ UikuKlwpJGFtX19xdW90ZSInJC9cMS9wJyA8IiRtZiIgfCBcDQorICAgICAgIHNlZCAtZSAncy9c JChERVBESVIpLyciJERFUERJUiInL2cnIC1lICdzL1wkVS8nIiRVIicvZydgOyBkbw0KKyAgICAj IE1ha2Ugc3VyZSB0aGUgZGlyZWN0b3J5IGV4aXN0cy4NCisgICAgdGVzdCAtZiAiJGRpcnBhcnQv JGZpbGUiICYmIGNvbnRpbnVlDQorICAgIGZkaXI9YCRhc19kaXJuYW1lIC0tICIkZmlsZSIgfHwN CiskYXNfZXhwciBYIiRmaWxlIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXA0K KwkgWCIkZmlsZSIgOiAnWFwoLy9cKVteL10nIFx8IFwNCisJIFgiJGZpbGUiIDogJ1hcKC8vXCkk JyBcfCBcDQorCSBYIiRmaWxlIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNf ZWNobyBYIiRmaWxlIiB8DQorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8q JC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXClbXi9dLiov ew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpJC97DQorCSAg ICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wpLiovew0KKwkgICAgcy8vXDEv DQorCSAgICBxDQorCSAgfQ0KKwkgIHMvLiovLi87IHEnYA0KKyAgICBhc19kaXI9JGRpcnBhcnQv JGZkaXI7IGFzX2ZuX21rZGlyX3ANCisgICAgIyBlY2hvICJjcmVhdGluZyAkZGlycGFydC8kZmls ZSINCisgICAgZWNobyAnIyBkdW1teScgPiAiJGRpcnBhcnQvJGZpbGUiDQorICBkb25lDQorZG9u ZQ0KKyA7Ow0KKw0KKyAgZXNhYw0KK2RvbmUgIyBmb3IgYWNfdGFnDQorDQorDQorYXNfZm5fZXhp dCAwDQorX0FDRU9GDQorYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUNCisNCit0 ZXN0ICRhY193cml0ZV9mYWlsID0gMCB8fA0KKyAgYXNfZm5fZXJyb3IgIndyaXRlIGZhaWx1cmUg Y3JlYXRpbmcgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1DQorDQorDQorIyBjb25maWd1cmUg aXMgd3JpdGluZyB0byBjb25maWcubG9nLCBhbmQgdGhlbiBjYWxscyBjb25maWcuc3RhdHVzLg0K KyMgY29uZmlnLnN0YXR1cyBkb2VzIGl0cyBvd24gcmVkaXJlY3Rpb24sIGFwcGVuZGluZyB0byBj b25maWcubG9nLg0KKyMgVW5mb3J0dW5hdGVseSwgb24gRE9TIHRoaXMgZmFpbHMsIGFzIGNvbmZp Zy5sb2cgaXMgc3RpbGwga2VwdCBvcGVuDQorIyBieSBjb25maWd1cmUsIHNvIGNvbmZpZy5zdGF0 dXMgd29uJ3QgYmUgYWJsZSB0byB3cml0ZSB0byBpdDsgaXRzDQorIyBvdXRwdXQgaXMgc2ltcGx5 IGRpc2NhcmRlZC4gIFNvIHdlIGV4ZWMgdGhlIEZEIHRvIC9kZXYvbnVsbCwNCisjIGVmZmVjdGl2 ZWx5IGNsb3NpbmcgY29uZmlnLmxvZywgc28gaXQgY2FuIGJlIHByb3Blcmx5IChyZSlvcGVuZWQg YW5kDQorIyBhcHBlbmRlZCB0byBieSBjb25maWcuc3RhdHVzLiAgV2hlbiBjb21pbmcgYmFjayB0 byBjb25maWd1cmUsIHdlDQorIyBuZWVkIHRvIG1ha2UgdGhlIEZEIGF2YWlsYWJsZSBhZ2Fpbi4N CitpZiB0ZXN0ICIkbm9fY3JlYXRlIiAhPSB5ZXM7IHRoZW4NCisgIGFjX2NzX3N1Y2Nlc3M9Og0K KyAgYWNfY29uZmlnX3N0YXR1c19hcmdzPQ0KKyAgdGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYNCisg ICAgYWNfY29uZmlnX3N0YXR1c19hcmdzPSIkYWNfY29uZmlnX3N0YXR1c19hcmdzIC0tcXVpZXQi DQorICBleGVjIDU+L2Rldi9udWxsDQorICAkU0hFTEwgJENPTkZJR19TVEFUVVMgJGFjX2NvbmZp Z19zdGF0dXNfYXJncyB8fCBhY19jc19zdWNjZXNzPWZhbHNlDQorICBleGVjIDU+PmNvbmZpZy5s b2cNCisgICMgVXNlIHx8LCBub3QgJiYsIHRvIGF2b2lkIGV4aXRpbmcgZnJvbSB0aGUgaWYgd2l0 aCAkPyA9IDEsIHdoaWNoDQorICAjIHdvdWxkIG1ha2UgY29uZmlndXJlIGZhaWwgaWYgdGhpcyBp cyB0aGUgbGFzdCBpbnN0cnVjdGlvbi4NCisgICRhY19jc19zdWNjZXNzIHx8IGFzX2ZuX2V4aXQg JD8NCitmaQ0KK2lmIHRlc3QgLW4gIiRhY191bnJlY29nbml6ZWRfb3B0cyIgJiYgdGVzdCAiJGVu YWJsZV9vcHRpb25fY2hlY2tpbmciICE9IG5vOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNf dW5yZWNvZ25pemVkX29wdHMiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVucmVj b2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mMjt9DQorZmkNCisNCmRp ZmYgLS1naXQgYS9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2NvbmZpZ3VyZS5pbiBiL25ld2xpYi9s aWJjL3N5cy94dGVuc2EvY29uZmlndXJlLmluDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAwLi4yOWJiYTJlN2QNCi0tLSAvZGV2L251bGwNCisrKyBiL25ld2xpYi9saWJjL3N5 cy94dGVuc2EvY29uZmlndXJlLmluDQpAQCAtMCwwICsxLDE0IEBADQorZG5sIFRoaXMgaXMgdGhl IG5ld2xpYi9saWJjL3N5cy94dGVuc2EgY29uZmlndXJlLmluIGZpbGUuDQorZG5sIFByb2Nlc3Mg dGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuDQor DQorQUNfUFJFUkVRKDIuNTkpDQorQUNfSU5JVChbbmV3bGliXSxbTkVXTElCX1ZFUlNJT05dKQ0K K0FDX0NPTkZJR19TUkNESVIoW2lzYXR0eS5jXSkNCisNCitkbmwgQ2FuJ3QgYmUgZG9uZSBpbiBO RVdMSUJfQ09ORklHVVJFIGJlY2F1c2UgdGhhdCBjb25mdXNlcyBhdXRvbWFrZS4NCitBQ19DT05G SUdfQVVYX0RJUiguLi8uLi8uLi8uLikNCisNCitORVdMSUJfQ09ORklHVVJFKC4uLy4uLy4uKQ0K Kw0KK0FDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQ0KK0FDX09VVFBVVA0KZGlmZiAtLWdpdCBh L25ld2xpYi9saWJjL3N5cy94dGVuc2EvY3JlYXQuYyBiL25ld2xpYi9saWJjL3N5cy94dGVuc2Ev Y3JlYXQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uMjFlNmExODc0 DQotLS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2NyZWF0LmMNCkBA IC0wLDAgKzEsOSBAQA0KKy8qIGNyZWF0KCkgInN5c3RlbSBjYWxsIiAoY29waWVkIGZyb20gbGli Yy9wb3NpeC9jcmVhdC5jKSAqLw0KKw0KKyNpbmNsdWRlIDxmY250bC5oPg0KKw0KK2ludA0KK2Ny ZWF0IChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSkNCit7DQorICByZXR1cm4gb3BlbiAo cGF0aCwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQywgbW9kZSk7DQorfQ0KZGlmZiAtLWdp dCBhL25ld2xpYi9saWJjL3N5cy94dGVuc2EvY3J0MC5jIGIvbmV3bGliL2xpYmMvc3lzL3h0ZW5z YS9jcnQwLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjExNzI1ZGNh NQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9jcnQwLmMNCkBA IC0wLDAgKzEsMTYgQEANCisvKiBEdW1teSBjcnQwIGNvZGUuICAqLw0KKw0KKy8qIENvcHlyaWdo dCAoYykgMjAwMyBieSBUZW5zaWxpY2EgSW5jLiAgQUxMIFJJR0hUUyBSRVNFUlZFRC4NCisgICBU aGVzZSBjb2RlZCBpbnN0cnVjdGlvbnMsIHN0YXRlbWVudHMsIGFuZCBjb21wdXRlciBwcm9ncmFt cyBhcmUgdGhlDQorICAgY29weXJpZ2h0ZWQgd29ya3MgYW5kIGNvbmZpZGVudGlhbCBwcm9wcmll dGFyeSBpbmZvcm1hdGlvbiBvZiBUZW5zaWxpY2EgSW5jLg0KKyAgIFRoZXkgbWF5IG5vdCBiZSBt b2RpZmllZCwgY29waWVkLCByZXByb2R1Y2VkLCBkaXN0cmlidXRlZCwgb3IgZGlzY2xvc2VkIHRv DQorICAgdGhpcmQgcGFydGllcyBpbiBhbnkgbWFubmVyLCBtZWRpdW0sIG9yIGZvcm0sIGluIHdo b2xlIG9yIGluIHBhcnQsIHdpdGhvdXQNCisgICB0aGUgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9m IFRlbnNpbGljYSBJbmMuICAqLw0KKw0KKy8qIFh0ZW5zYSBzeXN0ZW1zIG5vcm1hbGx5IHVzZSBh IGNydDEgZmlsZSBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyDQorICAgbGlua2VyIHN1cHBv cnQgcGFja2FnZSAoTFNQKS4gIFRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoaXMgY3J0MCBmaWxlLA0K KyAgIGV4Y2VwdCB0aGF0IHRoZSBuZXdsaWIgbWFrZWZpbGVzIHJlcXVpcmUgaXQgdG8gZXhpc3Qg aWYgdGhlcmUgaXMgYQ0KKyAgIHN5cy94dGVuc2EgZGlyZWN0b3J5LiAgVGhlIGRpcmVjdG9yeSBl eGlzdHMgb25seSB0byBob2xkIHRoZSBoZWFkZXINCisgICBmaWxlcyBmb3IgdGhlIFh0ZW5zYSBJ U1Mgc2VtaWhvc3RpbmcgInBsYXRmb3JtIi4gICovDQorDQordm9pZCBjcnQwX3VudXNlZCAodm9p ZCkge30NCmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2luY2x1ZGUvZmVudi5o IGIvbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9pbmNsdWRlL2ZlbnYuaA0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uMmZhNzZmNzU4DQotLS0gL2Rldi9udWxsDQorKysgYi9u ZXdsaWIvbGliYy9zeXMveHRlbnNhL2luY2x1ZGUvZmVudi5oDQpAQCAtMCwwICsxLDg4IEBADQor LyogQ29weXJpZ2h0IChjKSAyMDExIFRlbnNpbGljYSBJbmMuICBBTEwgUklHSFRTIFJFU0VSVkVE Lg0KKw0KKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dA0KKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92 aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAgIGFyZSBtZXQ6DQorDQorICAg MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj b3B5cmlnaHQNCisgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg Zm9sbG93aW5nIGRpc2NsYWltZXIuDQorDQorICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KKyAgICAgIGNvcHlyaWdodCBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nDQorICAgICAgZGlzY2xh aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk DQorICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKw0KKyAgIFRISVMgU09GVFdBUkUgSVMg UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCisgICAi QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUIE5PVA0KKyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZIEFORCBGSVRORVNTDQorICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwNCisgICBURU5TSUxJQ0EgSU5DT1JQT1JBVEVE IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQorICAgSU5DSURFTlRBTCwgU1BF Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMNCisgICAoSU5DTFVESU5H LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IN CisgICBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT IElOVEVSUlVQVElPTikNCisgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsDQorICAgU1RSSUNUIExJQUJJTElUWSwgT1Ig VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAgIEFSSVNJTkcgSU4g QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQN CisgICBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuICAqLw0KKw0KKw0KKyNpZm5k ZWYgX0ZFTlZfSA0KKyNkZWZpbmUgX0ZFTlZfSA0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK2V4 dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBmZW52X3Q7DQor dHlwZWRlZiB1bnNpZ25lZCBsb25nIGZleGNlcHRfdDsNCisNCisjZGVmaW5lIEZFX0RJVkJZWkVS TyAgIDB4MDgNCisjZGVmaW5lIEZFX0lORVhBQ1QgICAgIDB4MDENCisjZGVmaW5lIEZFX0lOVkFM SUQgICAgIDB4MTANCisjZGVmaW5lIEZFX09WRVJGTE9XICAgIDB4MDQNCisjZGVmaW5lIEZFX1VO REVSRkxPVyAgIDB4MDINCisNCisjZGVmaW5lIEZFX0FMTF9FWENFUFQgXA0KKyAgKEZFX0RJVkJZ WkVSTyAgfAkJICAgICAgXA0KKyAgIEZFX0lORVhBQ1QgICAgfAkJICAgICAgXA0KKyAgIEZFX0lO VkFMSUQgICAgfAkJICAgICAgXA0KKyAgIEZFX09WRVJGTE9XICAgfAkJICAgICAgXA0KKyAgIEZF X1VOREVSRkxPVykNCisNCisjZGVmaW5lIEZFX0RPV05XQVJEICAgMHgzDQorI2RlZmluZSBGRV9U T05FQVJFU1QgIDB4MA0KKyNkZWZpbmUgRkVfVE9XQVJEWkVSTyAweDENCisjZGVmaW5lIEZFX1VQ V0FSRCAgICAgMHgyDQorDQorI2RlZmluZSBGRV9ERkxfRU5WICgoY29uc3QgZmVudl90ICopIDAp DQorDQoraW50ICBmZWNsZWFyZXhjZXB0KGludCk7DQoraW50ICBmZWdldGV4Y2VwdGZsYWcoZmV4 Y2VwdF90ICosIGludCk7DQoraW50ICBmZXJhaXNlZXhjZXB0KGludCk7DQoraW50ICBmZXNldGV4 Y2VwdGZsYWcoY29uc3QgZmV4Y2VwdF90ICosIGludCk7DQoraW50ICBmZXRlc3RleGNlcHQoaW50 KTsNCitpbnQgIGZlZ2V0cm91bmQodm9pZCk7DQoraW50ICBmZXNldHJvdW5kKGludCk7DQoraW50 ICBmZWdldGVudihmZW52X3QgKik7DQoraW50ICBmZWhvbGRleGNlcHQoZmVudl90ICopOw0KK2lu dCAgZmVzZXRlbnYoY29uc3QgZmVudl90ICopOw0KK2ludCAgZmV1cGRhdGVlbnYoY29uc3QgZmVu dl90ICopOw0KKw0KKy8qIGdsaWJjIGV4dGVuc2lvbnMgICovDQoraW50IGZlZW5hYmxlZXhjZXB0 KGludCBleGNlcHRzKTsNCitpbnQgZmVkaXNhYmxlZXhjZXB0KGludCBleGNlcHRzKTsNCitpbnQg ZmVnZXRleGNlcHQodm9pZCk7DQorDQorI2RlZmluZSBfRkVfRVhDRVBUSU9OX0ZMQUdTX09GRlNF VCA3DQorI2RlZmluZSBfRkVfRVhDRVBUSU9OX0ZMQUdfTUFTSyAoRkVfQUxMX0VYQ0VQVCA8PCBf RkVfRVhDRVBUSU9OX0ZMQUdTX09GRlNFVCkNCisjZGVmaW5lIF9GRV9FWENFUFRJT05fRU5BQkxF X09GRlNFVCAyDQorI2RlZmluZSBfRkVfRVhDRVBUSU9OX0VOQUJMRV9NQVNLIChGRV9BTExfRVhD RVBUIDw8IF9GRV9FWENFUFRJT05fRU5BQkxFX09GRlNFVCkNCisjZGVmaW5lIF9GRV9ST1VORF9N T0RFX09GRlNFVCAwDQorI2RlZmluZSBfRkVfUk9VTkRfTU9ERV9NQVNLICgweDMgPDwgX0ZFX1JP VU5EX01PREVfT0ZGU0VUKQ0KKyNkZWZpbmUgX0ZFX0ZMT0FUSU5HX0VOVl9NQVNLIChfRkVfRVhD RVBUSU9OX0ZMQUdfTUFTSyB8IF9GRV9FWENFUFRJT05fRU5BQkxFX01BU0sgfCBfRkVfUk9VTkRf TU9ERV9NQVNLKQ0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisNCisjZW5k aWYNCmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2luY2x1ZGUvdW5pc3RkLmgg Yi9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2luY2x1ZGUvdW5pc3RkLmgNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjRmNmZkMjlhNA0KLS0tIC9kZXYvbnVsbA0KKysrIGIv bmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9pbmNsdWRlL3VuaXN0ZC5oDQpAQCAtMCwwICsxLDEzIEBA DQorI2lmbmRlZiBfVU5JU1REX0hfDQorI2RlZmluZSBfVU5JU1REX0hfDQorDQorIyBpbmNsdWRl IDxzeXMvdW5pc3RkLmg+DQorDQorI2lmbmRlZiBMX1NFVA0KKy8qIE9sZCBCU0QgbmFtZXMgZm9y IHRoZSBzYW1lIGNvbnN0YW50czsganVzdCBmb3IgY29tcGF0aWJpbGl0eS4gICovDQorI2RlZmlu ZQkJTF9TRVQJCVNFRUtfU0VUDQorI2RlZmluZQkJTF9JTkNSCQlTRUVLX0NVUg0KKyNkZWZpbmUJ CUxfWFRORAkJU0VFS19FTkQNCisjZW5kaWYNCisNCisjZW5kaWYgLyogX1VOSVNURF9IXyAqLw0K ZGlmZiAtLWdpdCBhL25ld2xpYi9saWJjL3N5cy94dGVuc2EvaW5jbHVkZS94dGVuc2EvY29uZmln L2NvcmUtaXNhLmggYi9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2luY2x1ZGUveHRlbnNhL2NvbmZp Zy9jb3JlLWlzYS5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi4wMjVl NDI3MjQNCi0tLSAvZGV2L251bGwNCisrKyBiL25ld2xpYi9saWJjL3N5cy94dGVuc2EvaW5jbHVk ZS94dGVuc2EvY29uZmlnL2NvcmUtaXNhLmgNCkBAIC0wLDAgKzEsNjU1IEBADQorLyoNCisgKiB4 dGVuc2EvY29uZmlnL2NvcmUtaXNhLmggLS0gSEFMIGRlZmluaXRpb25zIHRoYXQgYXJlIGRlcGVu ZGVudCBvbiBYdGVuc2ENCisgKgkJCQlwcm9jZXNzb3IgQ09SRSBjb25maWd1cmF0aW9uDQorICoN CisgKiAgU2VlIDx4dGVuc2EvY29uZmlnL2NvcmUuaD4sIHdoaWNoIGluY2x1ZGVzIHRoaXMgZmls ZSwgZm9yIG1vcmUgZGV0YWlscy4NCisgKi8NCisNCisvKiBYdGVuc2EgcHJvY2Vzc29yIGNvcmUg Y29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4NCisNCisgICBDb3B5cmlnaHQgKGMpIDE5OTktMjAx NiBUZW5zaWxpY2EgSW5jLg0KKw0KKyAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZw0KKyAgIGEgY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQ0KKyAgICJT b2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcNCisgICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsDQorICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvDQorICAgcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv DQorICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKw0KKyAgIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkDQor ICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu DQorDQorICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsDQorICAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GDQorICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULg0KKyAgIElO IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZDQorICAgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwNCisgICBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO RyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQ0KKyAgIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8NCisNCisjaWZu ZGVmIF9YVEVOU0FfQ09SRV9DT05GSUdVUkFUSU9OX0gNCisjZGVmaW5lIF9YVEVOU0FfQ09SRV9D T05GSUdVUkFUSU9OX0gNCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwkgICAgUGFyYW1l dGVycyBVc2VmdWwgZm9yIEFueSBDb2RlLCBVU0VSIG9yIFBSSVZJTEVHRUQNCisgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8NCisNCisvKg0KKyAqICBOb3RlOiAgTWFjcm9zIG9mIHRoZSBmb3JtIFhDSEFM X0hBVkVfKioqIGhhdmUgYSB2YWx1ZSBvZiAxIGlmIHRoZSBvcHRpb24gaXMNCisgKiAgY29uZmln dXJlZCwgYW5kIGEgdmFsdWUgb2YgMCBvdGhlcndpc2UuICBUaGVzZSBtYWNyb3MgYXJlIGFsd2F5 cyBkZWZpbmVkLg0KKyAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKwkJCQlJU0ENCisgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0qLw0KKw0KKyNkZWZpbmUgWENIQUxfSEFWRV9CRQkJCTAJLyogYmlnLWVuZGlh biBieXRlIG9yZGVyaW5nICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1dJTkRPV0VECQkxCS8qIHdp bmRvd2VkIHJlZ2lzdGVycyBvcHRpb24gKi8NCisjZGVmaW5lIFhDSEFMX05VTV9BUkVHUwkJCTY0 CS8qIG51bSBvZiBwaHlzaWNhbCBhZGRyIHJlZ3MgKi8NCisjZGVmaW5lIFhDSEFMX05VTV9BUkVH U19MT0cyCQk2CS8qIGxvZzIoWENIQUxfTlVNX0FSRUdTKSAqLw0KKyNkZWZpbmUgWENIQUxfTUFY X0lOU1RSVUNUSU9OX1NJWkUJMwkvKiBtYXggaW5zdHIgYnl0ZXMgKDMuLjgpICovDQorI2RlZmlu ZSBYQ0hBTF9IQVZFX0RFQlVHCQkxCS8qIGRlYnVnIG9wdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxf SEFWRV9ERU5TSVRZCQkxCS8qIDE2LWJpdCBpbnN0cnVjdGlvbnMgKi8NCisjZGVmaW5lIFhDSEFM X0hBVkVfTE9PUFMJCTEJLyogemVyby1vdmVyaGVhZCBsb29wcyAqLw0KKyNkZWZpbmUgWENIQUxf TE9PUF9CVUZGRVJfU0laRQkJMjU2CS8qIHplcm8tb3YuIGxvb3AgaW5zdHIgYnVmZmVyIHNpemUg Ki8NCisjZGVmaW5lIFhDSEFMX0hBVkVfTlNBCQkJMQkvKiBOU0EvTlNBVSBpbnN0cnVjdGlvbnMg Ki8NCisjZGVmaW5lIFhDSEFMX0hBVkVfTUlOTUFYCQkxCS8qIE1JTi9NQVggaW5zdHJ1Y3Rpb25z ICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1NFWFQJCQkxCS8qIFNFWFQgaW5zdHJ1Y3Rpb24gKi8N CisjZGVmaW5lIFhDSEFMX0hBVkVfREVQQklUUwkJMAkvKiBERVBCSVRTIGluc3RydWN0aW9uICov DQorI2RlZmluZSBYQ0hBTF9IQVZFX0NMQU1QUwkJMQkvKiBDTEFNUFMgaW5zdHJ1Y3Rpb24gKi8N CisjZGVmaW5lIFhDSEFMX0hBVkVfTVVMMTYJCTEJLyogTVVMMTZTL01VTDE2VSBpbnN0cnVjdGlv bnMgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfTVVMMzIJCTEJLyogTVVMTCBpbnN0cnVjdGlvbiAq Lw0KKyNkZWZpbmUgWENIQUxfSEFWRV9NVUwzMl9ISUdICQkxCS8qIE1VTFVIL01VTFNIIGluc3Ry dWN0aW9ucyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9ESVYzMgkJMQkvKiBRVU9TL1FVT1UvUkVN Uy9SRU1VIGluc3RydWN0aW9ucyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9MMzJSCQkJMQkvKiBM MzJSIGluc3RydWN0aW9uICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0FCU09MVVRFX0xJVEVSQUxT CTAJLyogbm9uLVBDLXJlbCAoZXh0ZW5kZWQpIEwzMlIgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVf Q09OU1QxNgkJMAkvKiBDT05TVDE2IGluc3RydWN0aW9uICovDQorI2RlZmluZSBYQ0hBTF9IQVZF X0FERFgJCQkxCS8qIEFERFgjL1NVQlgjIGluc3RydWN0aW9ucyAqLw0KKyNkZWZpbmUgWENIQUxf SEFWRV9XSURFX0JSQU5DSEVTCTAJLyogQiouVzE4IG9yIEIqLlcxNSBpbnN0cidzICovDQorI2Rl ZmluZSBYQ0hBTF9IQVZFX1BSRURJQ1RFRF9CUkFOQ0hFUwkwCS8qIEJbRVEvRVFaL05FL05FWl1U IGluc3RyJ3MgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfQ0FMTDRBTkQxMgkJMQkvKiAob2Jzb2xl dGUgb3B0aW9uKSAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9BQlMJCQkxCS8qIEFCUyBpbnN0cnVj dGlvbiAqLw0KKy8qI2RlZmluZSBYQ0hBTF9IQVZFX1BPUEMJCTAqLwkvKiBQT1BDIGluc3RydWN0 aW9uICovDQorLyojZGVmaW5lIFhDSEFMX0hBVkVfQ1JDCQkwKi8JLyogQ1JDIGluc3RydWN0aW9u ICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1JFTEVBU0VfU1lOQwkJMQkvKiBMMzJBSS9TMzJSSSBp bnN0cnVjdGlvbnMgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfUzMyQzFJCQkxCS8qIFMzMkMxSSBp bnN0cnVjdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9TUEVDVUxBVElPTgkJMAkvKiBzcGVj dWxhdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9GVUxMX1JFU0VUCQkxCS8qIGFsbCByZWdz L3N0YXRlIHJlc2V0ICovDQorI2RlZmluZSBYQ0hBTF9OVU1fQ09OVEVYVFMJCTEJLyogKi8NCisj ZGVmaW5lIFhDSEFMX05VTV9NSVNDX1JFR1MJCTQJLyogbnVtIG9mIHNjcmF0Y2ggcmVncyAoMC4u NCkgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfVEFQX01BU1RFUgkJMAkvKiBKVEFHIFRBUCBjb250 cm9sIGluc3RyJ3MgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfUFJJRAkJCTEJLyogcHJvY2Vzc29y IElEIHJlZ2lzdGVyICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0VYVEVSTl9SRUdTCQkxCS8qIFdF Ui9SRVIgaW5zdHJ1Y3Rpb25zICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX01YCQkJMAkvKiBNWCBj b3JlIChUZW5zaWxpY2EgaW50ZXJuYWwpICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX01QX0lOVEVS UlVQVFMJMAkvKiBpbnRlcnJ1cHQgZGlzdHJpYnV0b3IgcG9ydCAqLw0KKyNkZWZpbmUgWENIQUxf SEFWRV9NUF9SVU5TVEFMTAkJMAkvKiBjb3JlIFJ1blN0YWxsIGNvbnRyb2wgcG9ydCAqLw0KKyNk ZWZpbmUgWENIQUxfSEFWRV9QU08JCQkwCS8qIFBvd2VyIFNodXQtT2ZmICovDQorI2RlZmluZSBY Q0hBTF9IQVZFX1BTT19DRE0JCTAJLyogY29yZS9kZWJ1Zy9tZW0gcHdyIGRvbWFpbnMgKi8NCisj ZGVmaW5lIFhDSEFMX0hBVkVfUFNPX0ZVTExfUkVURU5USU9OCTAJLyogYWxsIHJlZ3MgcHJlc2Vy dmVkIG9uIFBTTyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9USFJFQURQVFIJCTEJLyogVEhSRUFE UFRSIHJlZ2lzdGVyICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0JPT0xFQU5TCQkxCS8qIGJvb2xl YW4gcmVnaXN0ZXJzICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0NQCQkJMQkvKiBDUEVOQUJMRSBy ZWcgKGNvcHJvY2Vzc29yKSAqLw0KKyNkZWZpbmUgWENIQUxfQ1BfTUFYQ0ZHCQkJOAkvKiBtYXgg YWxsb3dlZCBjcCBpZCBwbHVzIG9uZSAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9NQUMxNgkJMQkv KiBNQUMxNiBwYWNrYWdlICovDQorDQorI2RlZmluZSBYQ0hBTF9IQVZFX0ZVU0lPTgkJIDAJLyog RnVzaW9uKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfRlVTSU9OX0ZQCSAwCSAgICAgICAgLyogRnVz aW9uIEZQIG9wdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9GVVNJT05fTE9XX1BPV0VSIDAJ LyogRnVzaW9uIExvdyBQb3dlciBvcHRpb24gKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfRlVTSU9O X0FFUwkgMAkgICAgICAgIC8qIEZ1c2lvbiBCTEUvV2lmaSBBRVMtMTI4IENDTSBvcHRpb24gKi8N CisjZGVmaW5lIFhDSEFMX0hBVkVfRlVTSU9OX0NPTlZFTkMJIDAgICAgICAgLyogRnVzaW9uIENv bnYgRW5jb2RlIG9wdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9GVVNJT05fTEZTUl9DUkMJ IDAJLyogRnVzaW9uIExGU1ItQ1JDIG9wdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9GVVNJ T05fQklUT1BTCSAwCS8qIEZ1c2lvbiBCaXQgT3BlcmF0aW9ucyBTdXBwb3J0IG9wdGlvbiAqLw0K KyNkZWZpbmUgWENIQUxfSEFWRV9GVVNJT05fQVZTCSAwCS8qIEZ1c2lvbiBBVlMgb3B0aW9uICov DQorI2RlZmluZSBYQ0hBTF9IQVZFX0ZVU0lPTl8xNkJJVF9CQVNFQkFORAkgMAkvKiBGdXNpb24g MTYtYml0IEJhc2ViYW5kIG9wdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9GVVNJT05fVklU RVJCSSAgICAgICAgMCAgICAgLyogRnVzaW9uIFZpdGVyYmkgb3B0aW9uICovDQorI2RlZmluZSBY Q0hBTF9IQVZFX0ZVU0lPTl9TT0ZUREVNQVAgICAgICAwICAgLyogRnVzaW9uIFNvZnQgQml0IERl bWFwIG9wdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9ISUZJUFJPCQkwCS8qIEhpRmlQcm8g QXVkaW8gRW5naW5lIHBrZyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9ISUZJNAkJMAkvKiBIaUZp NCBBdWRpbyBFbmdpbmUgcGtnICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0hJRkk0X1ZGUFUJCTAJ LyogSGlGaTQgQXVkaW8gRW5naW5lIFZGUFUgb3B0aW9uICovDQorI2RlZmluZSBYQ0hBTF9IQVZF X0hJRkkzCQkwCS8qIEhpRmkzIEF1ZGlvIEVuZ2luZSBwa2cgKi8NCisjZGVmaW5lIFhDSEFMX0hB VkVfSElGSTNfVkZQVQkJMAkvKiBIaUZpMyBBdWRpbyBFbmdpbmUgVkZQVSBvcHRpb24gKi8NCisj ZGVmaW5lIFhDSEFMX0hBVkVfSElGSTIJCTAJLyogSGlGaTIgQXVkaW8gRW5naW5lIHBrZyAqLw0K KyNkZWZpbmUgWENIQUxfSEFWRV9ISUZJMkVQCQkwCS8qIEhpRmkyRVAgKi8NCisjZGVmaW5lIFhD SEFMX0hBVkVfSElGSV9NSU5JCQkwDQorDQorDQorI2RlZmluZSBYQ0hBTF9IQVZFX1ZFQ1RPUkZQ VTIwMDUJMAkvKiB2ZWN0b3Igb3IgdXNlciBmbG9hdGluZy1wb2ludCBwa2cgKi8NCisjZGVmaW5l IFhDSEFMX0hBVkVfVVNFUl9EUEZQVSAgICAgICAgIDAgICAgICAgLyogdXNlciBEUCBmbG9hdGlu Zy1wb2ludCBwa2cgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfVVNFUl9TUEZQVSAgICAgICAgIDAg ICAgICAgLyogdXNlciBEUCBmbG9hdGluZy1wb2ludCBwa2cgKi8NCisjZGVmaW5lIFhDSEFMX0hB VkVfRlAgICAgICAgICAgICAgICAgIDEgICAgICAvKiBzaW5nbGUgcHJlYyBmbG9hdGluZyBwb2lu dCAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9GUF9ESVYgICAgICAgICAgICAgMSAgLyogRlAgd2l0 aCBESVYgaW5zdHJ1Y3Rpb25zICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0ZQX1JFQ0lQICAgICAg ICAgICAxICAgICAgICAvKiBGUCB3aXRoIFJFQ0lQIGluc3RydWN0aW9ucyAqLw0KKyNkZWZpbmUg WENIQUxfSEFWRV9GUF9TUVJUICAgICAgICAgICAgMSAvKiBGUCB3aXRoIFNRUlQgaW5zdHJ1Y3Rp b25zICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0ZQX1JTUVJUICAgICAgICAgICAxICAgICAgICAv KiBGUCB3aXRoIFJTUVJUIGluc3RydWN0aW9ucyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9ERlAg ICAgICAgICAgICAgICAgICAgICAgICAwICAgICAvKiBkb3VibGUgcHJlY2lzaW9uIEZQIHBrZyAq Lw0KKyNkZWZpbmUgWENIQUxfSEFWRV9ERlBfRElWICAgICAgICAgICAgMCAvKiBERlAgd2l0aCBE SVYgaW5zdHJ1Y3Rpb25zICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0RGUF9SRUNJUCAgICAgICAg ICAwICAgICAgIC8qIERGUCB3aXRoIFJFQ0lQIGluc3RydWN0aW9ucyovDQorI2RlZmluZSBYQ0hB TF9IQVZFX0RGUF9TUVJUICAgICAgICAgICAwICAgICAgICAvKiBERlAgd2l0aCBTUVJUIGluc3Ry dWN0aW9ucyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9ERlBfUlNRUlQgICAgICAgICAgMCAgICAg ICAvKiBERlAgd2l0aCBSU1FSVCBpbnN0cnVjdGlvbnMqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9E RlBfQUNDRUwJCTEJLyogZG91YmxlIHByZWNpc2lvbiBGUCBhY2NlbGVyYXRpb24gcGtnICovDQor I2RlZmluZSBYQ0hBTF9IQVZFX0RGUF9hY2NlbAkJWENIQUxfSEFWRV9ERlBfQUNDRUwJCQkJLyog Zm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKi8NCisNCisjZGVmaW5lIFhDSEFMX0hBVkVfREZQ VV9TSU5HTEVfT05MWSAgICAxICAgICAgICAgICAgICAgICAJLyogREZQVSBDb3Byb2Nlc3Nvciwg c2luZ2xlIHByZWNpc2lvbiBvbmx5ICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0RGUFVfU0lOR0xF X0RPVUJMRSAgMCAgICAgICAgICAgICAgIAkvKiBERlBVIENvcHJvY2Vzc29yLCBzaW5nbGUgYW5k IGRvdWJsZSBwcmVjaXNpb24gKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfVkVDVFJBMQkJMAkvKiBW ZWN0cmEgSSAgcGtnICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1ZFQ1RSQUxYCQkwCS8qIFZlY3Ry YSBMWCBwa2cgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfUERYNAkJICAgICAgICAwCS8qIFBEWDQg Ki8NCisjZGVmaW5lIFhDSEFMX0hBVkVfQ09OTlhEMgkJMAkvKiBDb25uWCBEMiBwa2cgKi8NCisj ZGVmaW5lIFhDSEFMX0hBVkVfQ09OTlhEMl9EVUFMTFNGTElYICAgMAkvKiBDb25uWCBEMiAmIER1 YWwgTG9hZFN0b3JlIEZsaXggKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfQkJFMTYJCTAJLyogQ29u blggQkJFMTYgcGtnICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0JCRTE2X1JTUVJUCQkwCS8qIEJC RTE2ICYgdmVjdG9yIHJlY2lwIHNxcnQgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfQkJFMTZfVkVD RElWCQkwCS8qIEJCRTE2ICYgdmVjdG9yIGRpdmlkZSAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9C QkUxNl9ERVNQUkVBRAkwCS8qIEJCRTE2ICYgZGVzcHJlYWQgKi8NCisjZGVmaW5lIFhDSEFMX0hB VkVfQkJFTkVQCQkwCS8qIENvbm5YIEJCRU5FUCBwa2dzICovDQorI2RlZmluZSBYQ0hBTF9IQVZF X0JTUDMJCQkwCS8qIENvbm5YIEJTUDMgcGtnICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0JTUDNf VFJBTlNQT1NFCTAJLyogQlNQMyAmIHRyYW5zcG9zZTMyeDMyICovDQorI2RlZmluZSBYQ0hBTF9I QVZFX1NTUDE2CQkwCS8qIENvbm5YIFNTUDE2IHBrZyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9T U1AxNl9WSVRFUkJJCTAJLyogU1NQMTYgJiB2aXRlcmJpICovDQorI2RlZmluZSBYQ0hBTF9IQVZF X1RVUkJPMTYJCTAJLyogQ29ublggVHVyYm8xNiBwa2cgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVf QkJQMTYJCTAJLyogQ29ublggQkJQMTYgcGtnICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0ZMSVgz CQkwCS8qIGJhc2ljIDMtd2F5IEZMSVggb3B0aW9uICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0dS SVZQRVAgICAgICAgICAgICAgIDAgICAvKiAgR1JJVlBFUCBpcyBHZW5lcmFsIFJlbGVhc2Ugb2Yg SVZQRVAgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfR1JJVlBFUF9ISVNUT0dSQU0gICAgMCAgIC8q IEhpc3RvZ3JhbSBvcHRpb24gb24gR1JJVlBFUCAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K KwkJCQlNSVNDDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjZGVmaW5lIFhDSEFMX05VTV9MT0FE U1RPUkVfVU5JVFMJMQkvKiBsb2FkL3N0b3JlIHVuaXRzICovDQorI2RlZmluZSBYQ0hBTF9OVU1f V1JJVEVCVUZGRVJfRU5UUklFUwk0CS8qIHNpemUgb2Ygd3JpdGUgYnVmZmVyICovDQorI2RlZmlu ZSBYQ0hBTF9JTlNUX0ZFVENIX1dJRFRICQk0CS8qIGluc3RyLWZldGNoIHdpZHRoIGluIGJ5dGVz ICovDQorI2RlZmluZSBYQ0hBTF9EQVRBX1dJRFRICQk0CS8qIGRhdGEgd2lkdGggaW4gYnl0ZXMg Ki8NCisjZGVmaW5lIFhDSEFMX0RBVEFfUElQRV9ERUxBWQkJMgkvKiBkLXNpZGUgcGlwZWxpbmUg ZGVsYXkNCisJCQkJCQkgICAoMSA9IDUtc3RhZ2UsIDIgPSA3LXN0YWdlKSAqLw0KKyNkZWZpbmUg WENIQUxfQ0xPQ0tfR0FUSU5HX0dMT0JBTAkxCS8qIGdsb2JhbCBjbG9jayBnYXRpbmcgKi8NCisj ZGVmaW5lIFhDSEFMX0NMT0NLX0dBVElOR19GVU5DVU5JVAkxCS8qIGZ1bmN0LiB1bml0IGNsb2Nr IGdhdGluZyAqLw0KKy8qICBJbiBUMTA1MCwgYXBwbGllcyB0byBzZWxlY3RlZCBjb3JlIGxvYWQg YW5kIHN0b3JlIGluc3RydWN0aW9ucyAoc2VlIElTQSk6ICovDQorI2RlZmluZSBYQ0hBTF9VTkFM SUdORURfTE9BRF9FWENFUFRJT04JMAkvKiB1bmFsaWduZWQgbG9hZHMgY2F1c2UgZXhjLiAqLw0K KyNkZWZpbmUgWENIQUxfVU5BTElHTkVEX1NUT1JFX0VYQ0VQVElPTgkwCS8qIHVuYWxpZ25lZCBz dG9yZXMgY2F1c2UgZXhjLiovDQorI2RlZmluZSBYQ0hBTF9VTkFMSUdORURfTE9BRF9IVwkJMQkv KiB1bmFsaWduZWQgbG9hZHMgd29yayBpbiBodyAqLw0KKyNkZWZpbmUgWENIQUxfVU5BTElHTkVE X1NUT1JFX0hXCTEJLyogdW5hbGlnbmVkIHN0b3JlcyB3b3JrIGluIGh3Ki8NCisNCisjZGVmaW5l IFhDSEFMX1NXX1ZFUlNJT04JCTExMDAwMDMJLyogc3cgdmVyc2lvbiBvZiB0aGlzIGhlYWRlciAq Lw0KKw0KKyNkZWZpbmUgWENIQUxfQ09SRV9JRAkJCSJlc3AzMl92M180OV9wcm9kIgkvKiBhbHBo YW51bSBjb3JlIG5hbWUNCisJCQkJCQkgICAoQ29yZUlEKSBzZXQgaW4gdGhlIFh0ZW5zYQ0KKwkJ CQkJCSAgIFByb2Nlc3NvciBHZW5lcmF0b3IgKi8NCisNCisjZGVmaW5lIFhDSEFMX0JVSUxEX1VO SVFVRV9JRAkJMHgwMDA1RkU5NgkvKiAyMi1iaXQgc3cgYnVpbGQgSUQgKi8NCisNCisvKg0KKyAq ICBUaGVzZSBkZWZpbml0aW9ucyBkZXNjcmliZSB0aGUgaGFyZHdhcmUgdGFyZ2V0ZWQgYnkgdGhp cyBzb2Z0d2FyZS4NCisgKi8NCisjZGVmaW5lIFhDSEFMX0hXX0NPTkZJR0lEMAkJMHhDMkJDRkZG RQkvKiBDb25maWdJRCBoaSAzMiBiaXRzKi8NCisjZGVmaW5lIFhDSEFMX0hXX0NPTkZJR0lEMQkJ MHgxQ0M1RkU5NgkvKiBDb25maWdJRCBsbyAzMiBiaXRzKi8NCisjZGVmaW5lIFhDSEFMX0hXX1ZF UlNJT05fTkFNRQkJIkxYNi4wLjMiCS8qIGZ1bGwgdmVyc2lvbiBuYW1lICovDQorI2RlZmluZSBY Q0hBTF9IV19WRVJTSU9OX01BSk9SCQkyNjAwCS8qIG1ham9yIHZlciMgb2YgdGFyZ2V0ZWQgaHcg Ki8NCisjZGVmaW5lIFhDSEFMX0hXX1ZFUlNJT05fTUlOT1IJCTMJLyogbWlub3IgdmVyIyBvZiB0 YXJnZXRlZCBodyAqLw0KKyNkZWZpbmUgWENIQUxfSFdfVkVSU0lPTgkJMjYwMDAzCS8qIG1ham9y KjEwMCttaW5vciAqLw0KKyNkZWZpbmUgWENIQUxfSFdfUkVMX0xYNgkJMQ0KKyNkZWZpbmUgWENI QUxfSFdfUkVMX0xYNl8wCQkxDQorI2RlZmluZSBYQ0hBTF9IV19SRUxfTFg2XzBfMwkJMQ0KKyNk ZWZpbmUgWENIQUxfSFdfQ09ORklHSURfUkVMSUFCTEUJMQ0KKy8qICBJZiBzb2Z0d2FyZSB0YXJn ZXRzIGEgKnJhbmdlKiBvZiBoYXJkd2FyZSB2ZXJzaW9ucywgdGhlc2UgYXJlIHRoZSBib3VuZHM6 ICovDQorI2RlZmluZSBYQ0hBTF9IV19NSU5fVkVSU0lPTl9NQUpPUgkyNjAwCS8qIG1ham9yIHYg b2YgZWFybGllc3QgdGd0IGh3ICovDQorI2RlZmluZSBYQ0hBTF9IV19NSU5fVkVSU0lPTl9NSU5P UgkzCS8qIG1pbm9yIHYgb2YgZWFybGllc3QgdGd0IGh3ICovDQorI2RlZmluZSBYQ0hBTF9IV19N SU5fVkVSU0lPTgkJMjYwMDAzCS8qIGVhcmxpZXN0IHRhcmdldGVkIGh3ICovDQorI2RlZmluZSBY Q0hBTF9IV19NQVhfVkVSU0lPTl9NQUpPUgkyNjAwCS8qIG1ham9yIHYgb2YgbGF0ZXN0IHRndCBo dyAqLw0KKyNkZWZpbmUgWENIQUxfSFdfTUFYX1ZFUlNJT05fTUlOT1IJMwkvKiBtaW5vciB2IG9m IGxhdGVzdCB0Z3QgaHcgKi8NCisjZGVmaW5lIFhDSEFMX0hXX01BWF9WRVJTSU9OCQkyNjAwMDMJ LyogbGF0ZXN0IHRhcmdldGVkIGh3ICovDQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorCQkJCUNB Q0hFDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjZGVmaW5lIFhDSEFMX0lDQUNIRV9MSU5FU0la RQkJNAkvKiBJLWNhY2hlIGxpbmUgc2l6ZSBpbiBieXRlcyAqLw0KKyNkZWZpbmUgWENIQUxfRENB Q0hFX0xJTkVTSVpFCQk0CS8qIEQtY2FjaGUgbGluZSBzaXplIGluIGJ5dGVzICovDQorI2RlZmlu ZSBYQ0hBTF9JQ0FDSEVfTElORVdJRFRICQkyCS8qIGxvZzIoSSBsaW5lIHNpemUgaW4gYnl0ZXMp ICovDQorI2RlZmluZSBYQ0hBTF9EQ0FDSEVfTElORVdJRFRICQkyCS8qIGxvZzIoRCBsaW5lIHNp emUgaW4gYnl0ZXMpICovDQorDQorI2RlZmluZSBYQ0hBTF9JQ0FDSEVfU0laRQkJMAkvKiBJLWNh Y2hlIHNpemUgaW4gYnl0ZXMgb3IgMCAqLw0KKyNkZWZpbmUgWENIQUxfRENBQ0hFX1NJWkUJCTAJ LyogRC1jYWNoZSBzaXplIGluIGJ5dGVzIG9yIDAgKi8NCisNCisjZGVmaW5lIFhDSEFMX0RDQUNI RV9JU19XUklURUJBQ0sJMAkvKiB3cml0ZWJhY2sgZmVhdHVyZSAqLw0KKyNkZWZpbmUgWENIQUxf RENBQ0hFX0lTX0NPSEVSRU5UCTAJLyogTVAgY29oZXJlbmNlIGZlYXR1cmUgKi8NCisNCisjZGVm aW5lIFhDSEFMX0hBVkVfUFJFRkVUQ0gJCTAJLyogUFJFRkNUTCByZWdpc3RlciAqLw0KKyNkZWZp bmUgWENIQUxfSEFWRV9QUkVGRVRDSF9MMQkJMAkvKiBwcmVmZXRjaCB0byBMMSBkY2FjaGUgKi8N CisjZGVmaW5lIFhDSEFMX1BSRUZFVENIX0NBU1RPVVRfTElORVMJMAkvKiBkY2FjaGUgcHJlZi4g Y2FzdG91dCBidWZzeiAqLw0KKyNkZWZpbmUgWENIQUxfUFJFRkVUQ0hfRU5UUklFUwkJMAkvKiBj YWNoZSBwcmVmZXRjaCBlbnRyaWVzICovDQorI2RlZmluZSBYQ0hBTF9QUkVGRVRDSF9CTE9DS19F TlRSSUVTCTAJLyogcHJlZmV0Y2ggYmxvY2sgc3RyZWFtcyAqLw0KKyNkZWZpbmUgWENIQUxfSEFW RV9DQUNIRV9CTE9DS09QUwkwCS8qIGJsb2NrIHByZWZldGNoIGZvciBjYWNoZXMgKi8NCisjZGVm aW5lIFhDSEFMX0hBVkVfSUNBQ0hFX1RFU1QJCTAJLyogSWNhY2hlIHRlc3QgaW5zdHJ1Y3Rpb25z ICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0RDQUNIRV9URVNUCQkwCS8qIERjYWNoZSB0ZXN0IGlu c3RydWN0aW9ucyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9JQ0FDSEVfRFlOX1dBWVMJMAkvKiBJ Y2FjaGUgZHluYW1pYyB3YXkgc3VwcG9ydCAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9EQ0FDSEVf RFlOX1dBWVMJMAkvKiBEY2FjaGUgZHluYW1pYyB3YXkgc3VwcG9ydCAqLw0KKw0KKw0KKw0KKw0K Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqDQorICAgIFBhcmFtZXRlcnMgVXNlZnVsIGZvciBQUklWSUxF R0VEIChTdXBlcnZpc29yeSBvciBOb24tVmlydHVhbGl6ZWQpIENvZGUNCisgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8NCisNCisNCisjaWZuZGVmIFhURU5TQV9IQUxfTk9OX1BSSVZJTEVHRURfT05MWQ0K Kw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKwkJCQlDQUNIRQ0KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQor I2RlZmluZSBYQ0hBTF9IQVZFX1BJRgkJCTEJLyogYW55IG91dGJvdW5kIFBJRiBwcmVzZW50ICov DQorI2RlZmluZSBYQ0hBTF9IQVZFX0FYSQkJCTAJLyogQVhJIGJ1cyAqLw0KKw0KKyNkZWZpbmUg WENIQUxfSEFWRV9QSUZfV1JfUkVTUAkJCTAJLyogcGlmIHdyaXRlIHJlc3BvbnNlICovDQorI2Rl ZmluZSBYQ0hBTF9IQVZFX1BJRl9SRVFfQVRUUgkJCTAJLyogcGlmIGF0dHJpYnV0ZSAqLw0KKw0K Ky8qICBJZiBwcmVzZW50LCBjYWNoZSBzaXplIGluIGJ5dGVzID09ICh3YXlzICogMl4obGluZXdp ZHRoICsgc2V0d2lkdGgpKS4gICovDQorDQorLyogIE51bWJlciBvZiBjYWNoZSBzZXRzIGluIGxv ZzIobGluZXMgcGVyIHdheSk6ICAqLw0KKyNkZWZpbmUgWENIQUxfSUNBQ0hFX1NFVFdJRFRICQkw DQorI2RlZmluZSBYQ0hBTF9EQ0FDSEVfU0VUV0lEVEgJCTANCisNCisvKiAgQ2FjaGUgc2V0IGFz c29jaWF0aXZpdHkgKG51bWJlciBvZiB3YXlzKTogICovDQorI2RlZmluZSBYQ0hBTF9JQ0FDSEVf V0FZUwkJMQ0KKyNkZWZpbmUgWENIQUxfRENBQ0hFX1dBWVMJCTENCisNCisvKiAgQ2FjaGUgZmVh dHVyZXM6ICAqLw0KKyNkZWZpbmUgWENIQUxfSUNBQ0hFX0xJTkVfTE9DS0FCTEUJMA0KKyNkZWZp bmUgWENIQUxfRENBQ0hFX0xJTkVfTE9DS0FCTEUJMA0KKyNkZWZpbmUgWENIQUxfSUNBQ0hFX0VD Q19QQVJJVFkJCTANCisjZGVmaW5lIFhDSEFMX0RDQUNIRV9FQ0NfUEFSSVRZCQkwDQorDQorLyog IENhY2hlIGFjY2VzcyBzaXplIGluIGJ5dGVzIChhZmZlY3RzIG9wZXJhdGlvbiBvZiBTSUNXIGlu c3RydWN0aW9uKTogICovDQorI2RlZmluZSBYQ0hBTF9JQ0FDSEVfQUNDRVNTX1NJWkUJMQ0KKyNk ZWZpbmUgWENIQUxfRENBQ0hFX0FDQ0VTU19TSVpFCTENCisNCisjZGVmaW5lIFhDSEFMX0RDQUNI RV9CQU5LUwkJMAkvKiBudW1iZXIgb2YgYmFua3MgKi8NCisNCisvKiAgTnVtYmVyIG9mIGVuY29k ZWQgY2FjaGUgYXR0ciBiaXRzIChzZWUgPHh0ZW5zYS9oYWwuaD4gZm9yIGRlY29kZWQgYml0cyk6 ICAqLw0KKyNkZWZpbmUgWENIQUxfQ0FfQklUUwkJCTQNCisNCisNCisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CisJCQlJTlRFUk5BTCBJL0QgUkFNL1JPTXMgYW5kIFhMTUkNCisgIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0K Kw0KKyNkZWZpbmUgWENIQUxfTlVNX0lOU1RST00JCTEJLyogbnVtYmVyIG9mIGNvcmUgaW5zdHIu IFJPTXMgKi8NCisjZGVmaW5lIFhDSEFMX05VTV9JTlNUUkFNCQkyCS8qIG51bWJlciBvZiBjb3Jl IGluc3RyLiBSQU1zICovDQorI2RlZmluZSBYQ0hBTF9OVU1fREFUQVJPTQkJMQkvKiBudW1iZXIg b2YgY29yZSBkYXRhIFJPTXMgKi8NCisjZGVmaW5lIFhDSEFMX05VTV9EQVRBUkFNCQkyCS8qIG51 bWJlciBvZiBjb3JlIGRhdGEgUkFNcyAqLw0KKyNkZWZpbmUgWENIQUxfTlVNX1VSQU0JCQkwCS8q IG51bWJlciBvZiBjb3JlIHVuaWZpZWQgUkFNcyovDQorI2RlZmluZSBYQ0hBTF9OVU1fWExNSQkJ CTEJLyogbnVtYmVyIG9mIGNvcmUgWExNSSBwb3J0cyAqLw0KKw0KKy8qICBJbnN0cnVjdGlvbiBS T00gMDogICovDQorI2RlZmluZSBYQ0hBTF9JTlNUUk9NMF9WQUREUgkJMHg0MDgwMDAwMAkvKiB2 aXJ0dWFsIGFkZHJlc3MgKi8NCisjZGVmaW5lIFhDSEFMX0lOU1RST00wX1BBRERSCQkweDQwODAw MDAwCS8qIHBoeXNpY2FsIGFkZHJlc3MgKi8NCisjZGVmaW5lIFhDSEFMX0lOU1RST00wX1NJWkUJ CTQxOTQzMDQJLyogc2l6ZSBpbiBieXRlcyAqLw0KKyNkZWZpbmUgWENIQUxfSU5TVFJPTTBfRUND X1BBUklUWQkwCS8qIEVDQy9wYXJpdHkgdHlwZSwgMD1ub25lICovDQorDQorLyogIEluc3RydWN0 aW9uIFJBTSAwOiAgKi8NCisjZGVmaW5lIFhDSEFMX0lOU1RSQU0wX1ZBRERSCQkweDQwMDAwMDAw CS8qIHZpcnR1YWwgYWRkcmVzcyAqLw0KKyNkZWZpbmUgWENIQUxfSU5TVFJBTTBfUEFERFIJCTB4 NDAwMDAwMDAJLyogcGh5c2ljYWwgYWRkcmVzcyAqLw0KKyNkZWZpbmUgWENIQUxfSU5TVFJBTTBf U0laRQkJNDE5NDMwNAkvKiBzaXplIGluIGJ5dGVzICovDQorI2RlZmluZSBYQ0hBTF9JTlNUUkFN MF9FQ0NfUEFSSVRZCTAJLyogRUNDL3Bhcml0eSB0eXBlLCAwPW5vbmUgKi8NCisNCisvKiAgSW5z dHJ1Y3Rpb24gUkFNIDE6ICAqLw0KKyNkZWZpbmUgWENIQUxfSU5TVFJBTTFfVkFERFIJCTB4NDA0 MDAwMDAJLyogdmlydHVhbCBhZGRyZXNzICovDQorI2RlZmluZSBYQ0hBTF9JTlNUUkFNMV9QQURE UgkJMHg0MDQwMDAwMAkvKiBwaHlzaWNhbCBhZGRyZXNzICovDQorI2RlZmluZSBYQ0hBTF9JTlNU UkFNMV9TSVpFCQk0MTk0MzA0CS8qIHNpemUgaW4gYnl0ZXMgKi8NCisjZGVmaW5lIFhDSEFMX0lO U1RSQU0xX0VDQ19QQVJJVFkJMAkvKiBFQ0MvcGFyaXR5IHR5cGUsIDA9bm9uZSAqLw0KKw0KKy8q ICBEYXRhIFJPTSAwOiAgKi8NCisjZGVmaW5lIFhDSEFMX0RBVEFST00wX1ZBRERSCQkweDNGNDAw MDAwCS8qIHZpcnR1YWwgYWRkcmVzcyAqLw0KKyNkZWZpbmUgWENIQUxfREFUQVJPTTBfUEFERFIJ CTB4M0Y0MDAwMDAJLyogcGh5c2ljYWwgYWRkcmVzcyAqLw0KKyNkZWZpbmUgWENIQUxfREFUQVJP TTBfU0laRQkJNDE5NDMwNAkvKiBzaXplIGluIGJ5dGVzICovDQorI2RlZmluZSBYQ0hBTF9EQVRB Uk9NMF9FQ0NfUEFSSVRZCTAJLyogRUNDL3Bhcml0eSB0eXBlLCAwPW5vbmUgKi8NCisjZGVmaW5l IFhDSEFMX0RBVEFST00wX0JBTktTCQkxCS8qIG51bWJlciBvZiBiYW5rcyAqLw0KKw0KKy8qICBE YXRhIFJBTSAwOiAgKi8NCisjZGVmaW5lIFhDSEFMX0RBVEFSQU0wX1ZBRERSCQkweDNGRjgwMDAw CS8qIHZpcnR1YWwgYWRkcmVzcyAqLw0KKyNkZWZpbmUgWENIQUxfREFUQVJBTTBfUEFERFIJCTB4 M0ZGODAwMDAJLyogcGh5c2ljYWwgYWRkcmVzcyAqLw0KKyNkZWZpbmUgWENIQUxfREFUQVJBTTBf U0laRQkJNTI0Mjg4CS8qIHNpemUgaW4gYnl0ZXMgKi8NCisjZGVmaW5lIFhDSEFMX0RBVEFSQU0w X0VDQ19QQVJJVFkJMAkvKiBFQ0MvcGFyaXR5IHR5cGUsIDA9bm9uZSAqLw0KKyNkZWZpbmUgWENI QUxfREFUQVJBTTBfQkFOS1MJCTEJLyogbnVtYmVyIG9mIGJhbmtzICovDQorDQorLyogIERhdGEg UkFNIDE6ICAqLw0KKyNkZWZpbmUgWENIQUxfREFUQVJBTTFfVkFERFIJCTB4M0Y4MDAwMDAJLyog dmlydHVhbCBhZGRyZXNzICovDQorI2RlZmluZSBYQ0hBTF9EQVRBUkFNMV9QQUREUgkJMHgzRjgw MDAwMAkvKiBwaHlzaWNhbCBhZGRyZXNzICovDQorI2RlZmluZSBYQ0hBTF9EQVRBUkFNMV9TSVpF CQk0MTk0MzA0CS8qIHNpemUgaW4gYnl0ZXMgKi8NCisjZGVmaW5lIFhDSEFMX0RBVEFSQU0xX0VD Q19QQVJJVFkJMAkvKiBFQ0MvcGFyaXR5IHR5cGUsIDA9bm9uZSAqLw0KKyNkZWZpbmUgWENIQUxf REFUQVJBTTFfQkFOS1MJCTEJLyogbnVtYmVyIG9mIGJhbmtzICovDQorDQorLyogIFhMTUkgUG9y dCAwOiAgKi8NCisjZGVmaW5lIFhDSEFMX1hMTUkwX1ZBRERSCQkweDNGRjAwMDAwCS8qIHZpcnR1 YWwgYWRkcmVzcyAqLw0KKyNkZWZpbmUgWENIQUxfWExNSTBfUEFERFIJCTB4M0ZGMDAwMDAJLyog cGh5c2ljYWwgYWRkcmVzcyAqLw0KKyNkZWZpbmUgWENIQUxfWExNSTBfU0laRQkJNTI0Mjg4CS8q IHNpemUgaW4gYnl0ZXMgKi8NCisjZGVmaW5lIFhDSEFMX1hMTUkwX0VDQ19QQVJJVFkJMAkvKiBF Q0MvcGFyaXR5IHR5cGUsIDA9bm9uZSAqLw0KKw0KKyNkZWZpbmUgWENIQUxfSEFWRV9JTUVNX0xP QURTVE9SRQkxCS8qIGNhbiBsb2FkL3N0b3JlIHRvIElST00vSVJBTSovDQorDQorDQorLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQorCQkJSU5URVJSVVBUUyBhbmQgVElNRVJTDQorICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8N CisNCisjZGVmaW5lIFhDSEFMX0hBVkVfSU5URVJSVVBUUwkJMQkvKiBpbnRlcnJ1cHQgb3B0aW9u ICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0hJR0hQUklfSU5URVJSVVBUUwkxCS8qIG1lZC9oaWdo LXByaS4gaW50ZXJydXB0cyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9OTUkJCQkxCS8qIG5vbi1t YXNrYWJsZSBpbnRlcnJ1cHQgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfQ0NPVU5UCQkxCS8qIEND T1VOVCByZWcuICh0aW1lciBvcHRpb24pICovDQorI2RlZmluZSBYQ0hBTF9OVU1fVElNRVJTCQkz CS8qIG51bWJlciBvZiBDQ09NUEFSRW4gcmVncyAqLw0KKyNkZWZpbmUgWENIQUxfTlVNX0lOVEVS UlVQVFMJCTMyCS8qIG51bWJlciBvZiBpbnRlcnJ1cHRzICovDQorI2RlZmluZSBYQ0hBTF9OVU1f SU5URVJSVVBUU19MT0cyCTUJLyogY2VpbChsb2cyKE5VTV9JTlRFUlJVUFRTKSkgKi8NCisjZGVm aW5lIFhDSEFMX05VTV9FWFRJTlRFUlJVUFRTCQkyNgkvKiBudW0gb2YgZXh0ZXJuYWwgaW50ZXJy dXB0cyAqLw0KKyNkZWZpbmUgWENIQUxfTlVNX0lOVExFVkVMUwkJNgkvKiBudW1iZXIgb2YgaW50 ZXJydXB0IGxldmVscw0KKwkJCQkJCSAgIChub3QgaW5jbHVkaW5nIGxldmVsIHplcm8pICovDQor I2RlZmluZSBYQ0hBTF9FWENNX0xFVkVMCQkzCS8qIGxldmVsIG1hc2tlZCBieSBQUy5FWENNICov DQorCS8qIChhbHdheXMgMSBpbiBYRUExOyBsZXZlbHMgMiAuLiBFWENNX0xFVkVMIGFyZSAibWVk aXVtIHByaW9yaXR5IikgKi8NCisNCisvKiAgTWFza3Mgb2YgaW50ZXJydXB0cyBhdCBlYWNoIGlu dGVycnVwdCBsZXZlbDogICovDQorI2RlZmluZSBYQ0hBTF9JTlRMRVZFTDFfTUFTSwkJMHgwMDA2 MzdGRg0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUwyX01BU0sJCTB4MDAzODAwMDANCisjZGVmaW5l IFhDSEFMX0lOVExFVkVMM19NQVNLCQkweDI4QzA4ODAwDQorI2RlZmluZSBYQ0hBTF9JTlRMRVZF TDRfTUFTSwkJMHg1MzAwMDAwMA0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUw1X01BU0sJCTB4ODQw MTAwMDANCisjZGVmaW5lIFhDSEFMX0lOVExFVkVMNl9NQVNLCQkweDAwMDAwMDAwDQorI2RlZmlu ZSBYQ0hBTF9JTlRMRVZFTDdfTUFTSwkJMHgwMDAwNDAwMA0KKw0KKy8qICBNYXNrcyBvZiBpbnRl cnJ1cHRzIGF0IGVhY2ggcmFuZ2UgMS4ubiBvZiBpbnRlcnJ1cHQgbGV2ZWxzOiAgKi8NCisjZGVm aW5lIFhDSEFMX0lOVExFVkVMMV9BTkRCRUxPV19NQVNLCTB4MDAwNjM3RkYNCisjZGVmaW5lIFhD SEFMX0lOVExFVkVMMl9BTkRCRUxPV19NQVNLCTB4MDAzRTM3RkYNCisjZGVmaW5lIFhDSEFMX0lO VExFVkVMM19BTkRCRUxPV19NQVNLCTB4MjhGRUJGRkYNCisjZGVmaW5lIFhDSEFMX0lOVExFVkVM NF9BTkRCRUxPV19NQVNLCTB4N0JGRUJGRkYNCisjZGVmaW5lIFhDSEFMX0lOVExFVkVMNV9BTkRC RUxPV19NQVNLCTB4RkZGRkJGRkYNCisjZGVmaW5lIFhDSEFMX0lOVExFVkVMNl9BTkRCRUxPV19N QVNLCTB4RkZGRkJGRkYNCisjZGVmaW5lIFhDSEFMX0lOVExFVkVMN19BTkRCRUxPV19NQVNLCTB4 RkZGRkZGRkYNCisNCisvKiAgTGV2ZWwgb2YgZWFjaCBpbnRlcnJ1cHQ6ICAqLw0KKyNkZWZpbmUg WENIQUxfSU5UMF9MRVZFTAkJMQ0KKyNkZWZpbmUgWENIQUxfSU5UMV9MRVZFTAkJMQ0KKyNkZWZp bmUgWENIQUxfSU5UMl9MRVZFTAkJMQ0KKyNkZWZpbmUgWENIQUxfSU5UM19MRVZFTAkJMQ0KKyNk ZWZpbmUgWENIQUxfSU5UNF9MRVZFTAkJMQ0KKyNkZWZpbmUgWENIQUxfSU5UNV9MRVZFTAkJMQ0K KyNkZWZpbmUgWENIQUxfSU5UNl9MRVZFTAkJMQ0KKyNkZWZpbmUgWENIQUxfSU5UN19MRVZFTAkJ MQ0KKyNkZWZpbmUgWENIQUxfSU5UOF9MRVZFTAkJMQ0KKyNkZWZpbmUgWENIQUxfSU5UOV9MRVZF TAkJMQ0KKyNkZWZpbmUgWENIQUxfSU5UMTBfTEVWRUwJCTENCisjZGVmaW5lIFhDSEFMX0lOVDEx X0xFVkVMCQkzDQorI2RlZmluZSBYQ0hBTF9JTlQxMl9MRVZFTAkJMQ0KKyNkZWZpbmUgWENIQUxf SU5UMTNfTEVWRUwJCTENCisjZGVmaW5lIFhDSEFMX0lOVDE0X0xFVkVMCQk3DQorI2RlZmluZSBY Q0hBTF9JTlQxNV9MRVZFTAkJMw0KKyNkZWZpbmUgWENIQUxfSU5UMTZfTEVWRUwJCTUNCisjZGVm aW5lIFhDSEFMX0lOVDE3X0xFVkVMCQkxDQorI2RlZmluZSBYQ0hBTF9JTlQxOF9MRVZFTAkJMQ0K KyNkZWZpbmUgWENIQUxfSU5UMTlfTEVWRUwJCTINCisjZGVmaW5lIFhDSEFMX0lOVDIwX0xFVkVM CQkyDQorI2RlZmluZSBYQ0hBTF9JTlQyMV9MRVZFTAkJMg0KKyNkZWZpbmUgWENIQUxfSU5UMjJf TEVWRUwJCTMNCisjZGVmaW5lIFhDSEFMX0lOVDIzX0xFVkVMCQkzDQorI2RlZmluZSBYQ0hBTF9J TlQyNF9MRVZFTAkJNA0KKyNkZWZpbmUgWENIQUxfSU5UMjVfTEVWRUwJCTQNCisjZGVmaW5lIFhD SEFMX0lOVDI2X0xFVkVMCQk1DQorI2RlZmluZSBYQ0hBTF9JTlQyN19MRVZFTAkJMw0KKyNkZWZp bmUgWENIQUxfSU5UMjhfTEVWRUwJCTQNCisjZGVmaW5lIFhDSEFMX0lOVDI5X0xFVkVMCQkzDQor I2RlZmluZSBYQ0hBTF9JTlQzMF9MRVZFTAkJNA0KKyNkZWZpbmUgWENIQUxfSU5UMzFfTEVWRUwJ CTUNCisjZGVmaW5lIFhDSEFMX0RFQlVHTEVWRUwJCTYJLyogZGVidWcgaW50ZXJydXB0IGxldmVs ICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0RFQlVHX0VYVEVSTl9JTlQJMQkvKiBPQ0QgZXh0ZXJu YWwgZGIgaW50ZXJydXB0ICovDQorI2RlZmluZSBYQ0hBTF9OTUlMRVZFTAkJCTcJLyogTk1JICJs ZXZlbCIgKGZvciB1c2Ugd2l0aA0KKwkJCQkJCSAgIEVYQ1NBVkUvRVBTL0VQQ19uLCBSRkkgbikg Ki8NCisNCisvKiAgVHlwZSBvZiBlYWNoIGludGVycnVwdDogICovDQorI2RlZmluZSBYQ0hBTF9J TlQwX1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmluZSBYQ0hBTF9JTlQx X1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmluZSBYQ0hBTF9JTlQyX1RZ UEUgCVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmluZSBYQ0hBTF9JTlQzX1RZUEUg CVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmluZSBYQ0hBTF9JTlQ0X1RZUEUgCVhU SEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmluZSBYQ0hBTF9JTlQ1X1RZUEUgCVhUSEFM X0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmluZSBYQ0hBTF9JTlQ2X1RZUEUgCVhUSEFMX0lO VFRZUEVfVElNRVINCisjZGVmaW5lIFhDSEFMX0lOVDdfVFlQRSAJWFRIQUxfSU5UVFlQRV9TT0ZU V0FSRQ0KKyNkZWZpbmUgWENIQUxfSU5UOF9UWVBFIAlYVEhBTF9JTlRUWVBFX0VYVEVSTl9MRVZF TA0KKyNkZWZpbmUgWENIQUxfSU5UOV9UWVBFIAlYVEhBTF9JTlRUWVBFX0VYVEVSTl9MRVZFTA0K KyNkZWZpbmUgWENIQUxfSU5UMTBfVFlQRSAJWFRIQUxfSU5UVFlQRV9FWFRFUk5fRURHRQ0KKyNk ZWZpbmUgWENIQUxfSU5UMTFfVFlQRSAJWFRIQUxfSU5UVFlQRV9QUk9GSUxJTkcNCisjZGVmaW5l IFhDSEFMX0lOVDEyX1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmluZSBY Q0hBTF9JTlQxM19UWVBFIAlYVEhBTF9JTlRUWVBFX0VYVEVSTl9MRVZFTA0KKyNkZWZpbmUgWENI QUxfSU5UMTRfVFlQRSAJWFRIQUxfSU5UVFlQRV9OTUkNCisjZGVmaW5lIFhDSEFMX0lOVDE1X1RZ UEUgCVhUSEFMX0lOVFRZUEVfVElNRVINCisjZGVmaW5lIFhDSEFMX0lOVDE2X1RZUEUgCVhUSEFM X0lOVFRZUEVfVElNRVINCisjZGVmaW5lIFhDSEFMX0lOVDE3X1RZUEUgCVhUSEFMX0lOVFRZUEVf RVhURVJOX0xFVkVMDQorI2RlZmluZSBYQ0hBTF9JTlQxOF9UWVBFIAlYVEhBTF9JTlRUWVBFX0VY VEVSTl9MRVZFTA0KKyNkZWZpbmUgWENIQUxfSU5UMTlfVFlQRSAJWFRIQUxfSU5UVFlQRV9FWFRF Uk5fTEVWRUwNCisjZGVmaW5lIFhDSEFMX0lOVDIwX1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJO X0xFVkVMDQorI2RlZmluZSBYQ0hBTF9JTlQyMV9UWVBFIAlYVEhBTF9JTlRUWVBFX0VYVEVSTl9M RVZFTA0KKyNkZWZpbmUgWENIQUxfSU5UMjJfVFlQRSAJWFRIQUxfSU5UVFlQRV9FWFRFUk5fRURH RQ0KKyNkZWZpbmUgWENIQUxfSU5UMjNfVFlQRSAJWFRIQUxfSU5UVFlQRV9FWFRFUk5fTEVWRUwN CisjZGVmaW5lIFhDSEFMX0lOVDI0X1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQor I2RlZmluZSBYQ0hBTF9JTlQyNV9UWVBFIAlYVEhBTF9JTlRUWVBFX0VYVEVSTl9MRVZFTA0KKyNk ZWZpbmUgWENIQUxfSU5UMjZfVFlQRSAJWFRIQUxfSU5UVFlQRV9FWFRFUk5fTEVWRUwNCisjZGVm aW5lIFhDSEFMX0lOVDI3X1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmlu ZSBYQ0hBTF9JTlQyOF9UWVBFIAlYVEhBTF9JTlRUWVBFX0VYVEVSTl9FREdFDQorI2RlZmluZSBY Q0hBTF9JTlQyOV9UWVBFIAlYVEhBTF9JTlRUWVBFX1NPRlRXQVJFDQorI2RlZmluZSBYQ0hBTF9J TlQzMF9UWVBFIAlYVEhBTF9JTlRUWVBFX0VYVEVSTl9FREdFDQorI2RlZmluZSBYQ0hBTF9JTlQz MV9UWVBFIAlYVEhBTF9JTlRUWVBFX0VYVEVSTl9MRVZFTA0KKw0KKy8qICBNYXNrcyBvZiBpbnRl cnJ1cHRzIGZvciBlYWNoIHR5cGUgb2YgaW50ZXJydXB0OiAgKi8NCisjZGVmaW5lIFhDSEFMX0lO VFRZUEVfTUFTS19VTkNPTkZJR1VSRUQJMHgwMDAwMDAwMA0KKyNkZWZpbmUgWENIQUxfSU5UVFlQ RV9NQVNLX1NPRlRXQVJFCTB4MjAwMDAwODANCisjZGVmaW5lIFhDSEFMX0lOVFRZUEVfTUFTS19F WFRFUk5fRURHRQkweDUwNDAwNDAwDQorI2RlZmluZSBYQ0hBTF9JTlRUWVBFX01BU0tfRVhURVJO X0xFVkVMCTB4OEZCRTMzM0YNCisjZGVmaW5lIFhDSEFMX0lOVFRZUEVfTUFTS19USU1FUgkweDAw MDE4MDQwDQorI2RlZmluZSBYQ0hBTF9JTlRUWVBFX01BU0tfTk1JCQkweDAwMDA0MDAwDQorI2Rl ZmluZSBYQ0hBTF9JTlRUWVBFX01BU0tfV1JJVEVfRVJST1IJMHgwMDAwMDAwMA0KKyNkZWZpbmUg WENIQUxfSU5UVFlQRV9NQVNLX1BST0ZJTElORwkweDAwMDAwODAwDQorDQorLyogIEludGVycnVw dCBudW1iZXJzIGFzc2lnbmVkIHRvIHNwZWNpZmljIGludGVycnVwdCBzb3VyY2VzOiAgKi8NCisj ZGVmaW5lIFhDSEFMX1RJTUVSMF9JTlRFUlJVUFQJCTYJLyogQ0NPTVBBUkUwICovDQorI2RlZmlu ZSBYQ0hBTF9USU1FUjFfSU5URVJSVVBUCQkxNQkvKiBDQ09NUEFSRTEgKi8NCisjZGVmaW5lIFhD SEFMX1RJTUVSMl9JTlRFUlJVUFQJCTE2CS8qIENDT01QQVJFMiAqLw0KKyNkZWZpbmUgWENIQUxf VElNRVIzX0lOVEVSUlVQVAkJWFRIQUxfVElNRVJfVU5DT05GSUdVUkVEDQorI2RlZmluZSBYQ0hB TF9OTUlfSU5URVJSVVBUCQkxNAkvKiBub24tbWFza2FibGUgaW50ZXJydXB0ICovDQorI2RlZmlu ZSBYQ0hBTF9QUk9GSUxJTkdfSU5URVJSVVBUCTExCS8qIHByb2ZpbGluZyBpbnRlcnJ1cHQgKi8N CisNCisvKiAgSW50ZXJydXB0IG51bWJlcnMgZm9yIGxldmVscyBhdCB3aGljaCBvbmx5IG9uZSBp bnRlcnJ1cHQgaXMgY29uZmlndXJlZDogICovDQorI2RlZmluZSBYQ0hBTF9JTlRMRVZFTDdfTlVN CQkxNA0KKy8qICAoVGhlcmUgYXJlIG1hbnkgaW50ZXJydXB0cyBlYWNoIGF0IGxldmVsKHMpIDEs IDIsIDMsIDQsIDUuKSAgKi8NCisNCisNCisvKg0KKyAqICBFeHRlcm5hbCBpbnRlcnJ1cHQgbWFw cGluZy4NCisgKiAgVGhlc2UgbWFjcm9zIGRlc2NyaWJlIGhvdyBYdGVuc2EgcHJvY2Vzc29yIGlu dGVycnVwdCBudW1iZXJzDQorICogIChhcyBudW1iZXJlZCBpbnRlcm5hbGx5LCBlZy4gaW4gSU5U RVJSVVBUIGFuZCBJTlRFTkFCTEUgcmVnaXN0ZXJzKQ0KKyAqICBtYXAgdG8gZXh0ZXJuYWwgQklu dGVycnVwdDxuPiBwaW5zLCBmb3IgdGhvc2UgaW50ZXJydXB0cw0KKyAqICBjb25maWd1cmVkIGFz IGV4dGVybmFsIChsZXZlbC10cmlnZ2VyZWQsIGVkZ2UtdHJpZ2dlcmVkLCBvciBOTUkpLg0KKyAq ICBTZWUgdGhlIFh0ZW5zYSBwcm9jZXNzb3IgZGF0YWJvb2sgZm9yIG1vcmUgZGV0YWlscy4NCisg Ki8NCisNCisvKiAgQ29yZSBpbnRlcnJ1cHQgbnVtYmVycyBtYXBwZWQgdG8gZWFjaCBFWFRFUk5B TCBCSW50ZXJydXB0IHBpbiBudW1iZXI6ICAqLw0KKyNkZWZpbmUgWENIQUxfRVhUSU5UMF9OVU0J CTAJLyogKGludGxldmVsIDEpICovDQorI2RlZmluZSBYQ0hBTF9FWFRJTlQxX05VTQkJMQkvKiAo aW50bGV2ZWwgMSkgKi8NCisjZGVmaW5lIFhDSEFMX0VYVElOVDJfTlVNCQkyCS8qIChpbnRsZXZl bCAxKSAqLw0KKyNkZWZpbmUgWENIQUxfRVhUSU5UM19OVU0JCTMJLyogKGludGxldmVsIDEpICov DQorI2RlZmluZSBYQ0hBTF9FWFRJTlQ0X05VTQkJNAkvKiAoaW50bGV2ZWwgMSkgKi8NCisjZGVm aW5lIFhDSEFMX0VYVElOVDVfTlVNCQk1CS8qIChpbnRsZXZlbCAxKSAqLw0KKyNkZWZpbmUgWENI QUxfRVhUSU5UNl9OVU0JCTgJLyogKGludGxldmVsIDEpICovDQorI2RlZmluZSBYQ0hBTF9FWFRJ TlQ3X05VTQkJOQkvKiAoaW50bGV2ZWwgMSkgKi8NCisjZGVmaW5lIFhDSEFMX0VYVElOVDhfTlVN CQkxMAkvKiAoaW50bGV2ZWwgMSkgKi8NCisjZGVmaW5lIFhDSEFMX0VYVElOVDlfTlVNCQkxMgkv KiAoaW50bGV2ZWwgMSkgKi8NCisjZGVmaW5lIFhDSEFMX0VYVElOVDEwX05VTQkJMTMJLyogKGlu dGxldmVsIDEpICovDQorI2RlZmluZSBYQ0hBTF9FWFRJTlQxMV9OVU0JCTE0CS8qIChpbnRsZXZl bCA3KSAqLw0KKyNkZWZpbmUgWENIQUxfRVhUSU5UMTJfTlVNCQkxNwkvKiAoaW50bGV2ZWwgMSkg Ki8NCisjZGVmaW5lIFhDSEFMX0VYVElOVDEzX05VTQkJMTgJLyogKGludGxldmVsIDEpICovDQor I2RlZmluZSBYQ0hBTF9FWFRJTlQxNF9OVU0JCTE5CS8qIChpbnRsZXZlbCAyKSAqLw0KKyNkZWZp bmUgWENIQUxfRVhUSU5UMTVfTlVNCQkyMAkvKiAoaW50bGV2ZWwgMikgKi8NCisjZGVmaW5lIFhD SEFMX0VYVElOVDE2X05VTQkJMjEJLyogKGludGxldmVsIDIpICovDQorI2RlZmluZSBYQ0hBTF9F WFRJTlQxN19OVU0JCTIyCS8qIChpbnRsZXZlbCAzKSAqLw0KKyNkZWZpbmUgWENIQUxfRVhUSU5U MThfTlVNCQkyMwkvKiAoaW50bGV2ZWwgMykgKi8NCisjZGVmaW5lIFhDSEFMX0VYVElOVDE5X05V TQkJMjQJLyogKGludGxldmVsIDQpICovDQorI2RlZmluZSBYQ0hBTF9FWFRJTlQyMF9OVU0JCTI1 CS8qIChpbnRsZXZlbCA0KSAqLw0KKyNkZWZpbmUgWENIQUxfRVhUSU5UMjFfTlVNCQkyNgkvKiAo aW50bGV2ZWwgNSkgKi8NCisjZGVmaW5lIFhDSEFMX0VYVElOVDIyX05VTQkJMjcJLyogKGludGxl dmVsIDMpICovDQorI2RlZmluZSBYQ0hBTF9FWFRJTlQyM19OVU0JCTI4CS8qIChpbnRsZXZlbCA0 KSAqLw0KKyNkZWZpbmUgWENIQUxfRVhUSU5UMjRfTlVNCQkzMAkvKiAoaW50bGV2ZWwgNCkgKi8N CisjZGVmaW5lIFhDSEFMX0VYVElOVDI1X05VTQkJMzEJLyogKGludGxldmVsIDUpICovDQorLyog IEVYVEVSTkFMIEJJbnRlcnJ1cHQgcGluIG51bWJlcnMgbWFwcGVkIHRvIGVhY2ggY29yZSBpbnRl cnJ1cHQgbnVtYmVyOiAgKi8NCisjZGVmaW5lIFhDSEFMX0lOVDBfRVhUTlVNCQkwCS8qIChpbnRs ZXZlbCAxKSAqLw0KKyNkZWZpbmUgWENIQUxfSU5UMV9FWFROVU0JCTEJLyogKGludGxldmVsIDEp ICovDQorI2RlZmluZSBYQ0hBTF9JTlQyX0VYVE5VTQkJMgkvKiAoaW50bGV2ZWwgMSkgKi8NCisj ZGVmaW5lIFhDSEFMX0lOVDNfRVhUTlVNCQkzCS8qIChpbnRsZXZlbCAxKSAqLw0KKyNkZWZpbmUg WENIQUxfSU5UNF9FWFROVU0JCTQJLyogKGludGxldmVsIDEpICovDQorI2RlZmluZSBYQ0hBTF9J TlQ1X0VYVE5VTQkJNQkvKiAoaW50bGV2ZWwgMSkgKi8NCisjZGVmaW5lIFhDSEFMX0lOVDhfRVhU TlVNCQk2CS8qIChpbnRsZXZlbCAxKSAqLw0KKyNkZWZpbmUgWENIQUxfSU5UOV9FWFROVU0JCTcJ LyogKGludGxldmVsIDEpICovDQorI2RlZmluZSBYQ0hBTF9JTlQxMF9FWFROVU0JCTgJLyogKGlu dGxldmVsIDEpICovDQorI2RlZmluZSBYQ0hBTF9JTlQxMl9FWFROVU0JCTkJLyogKGludGxldmVs IDEpICovDQorI2RlZmluZSBYQ0hBTF9JTlQxM19FWFROVU0JCTEwCS8qIChpbnRsZXZlbCAxKSAq Lw0KKyNkZWZpbmUgWENIQUxfSU5UMTRfRVhUTlVNCQkxMQkvKiAoaW50bGV2ZWwgNykgKi8NCisj ZGVmaW5lIFhDSEFMX0lOVDE3X0VYVE5VTQkJMTIJLyogKGludGxldmVsIDEpICovDQorI2RlZmlu ZSBYQ0hBTF9JTlQxOF9FWFROVU0JCTEzCS8qIChpbnRsZXZlbCAxKSAqLw0KKyNkZWZpbmUgWENI QUxfSU5UMTlfRVhUTlVNCQkxNAkvKiAoaW50bGV2ZWwgMikgKi8NCisjZGVmaW5lIFhDSEFMX0lO VDIwX0VYVE5VTQkJMTUJLyogKGludGxldmVsIDIpICovDQorI2RlZmluZSBYQ0hBTF9JTlQyMV9F WFROVU0JCTE2CS8qIChpbnRsZXZlbCAyKSAqLw0KKyNkZWZpbmUgWENIQUxfSU5UMjJfRVhUTlVN CQkxNwkvKiAoaW50bGV2ZWwgMykgKi8NCisjZGVmaW5lIFhDSEFMX0lOVDIzX0VYVE5VTQkJMTgJ LyogKGludGxldmVsIDMpICovDQorI2RlZmluZSBYQ0hBTF9JTlQyNF9FWFROVU0JCTE5CS8qIChp bnRsZXZlbCA0KSAqLw0KKyNkZWZpbmUgWENIQUxfSU5UMjVfRVhUTlVNCQkyMAkvKiAoaW50bGV2 ZWwgNCkgKi8NCisjZGVmaW5lIFhDSEFMX0lOVDI2X0VYVE5VTQkJMjEJLyogKGludGxldmVsIDUp ICovDQorI2RlZmluZSBYQ0hBTF9JTlQyN19FWFROVU0JCTIyCS8qIChpbnRsZXZlbCAzKSAqLw0K KyNkZWZpbmUgWENIQUxfSU5UMjhfRVhUTlVNCQkyMwkvKiAoaW50bGV2ZWwgNCkgKi8NCisjZGVm aW5lIFhDSEFMX0lOVDMwX0VYVE5VTQkJMjQJLyogKGludGxldmVsIDQpICovDQorI2RlZmluZSBY Q0hBTF9JTlQzMV9FWFROVU0JCTI1CS8qIChpbnRsZXZlbCA1KSAqLw0KKw0KKw0KKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KKwkJCUVYQ0VQVElPTlMgYW5kIFZFQ1RPUlMNCisgIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0K Kw0KKyNkZWZpbmUgWENIQUxfWEVBX1ZFUlNJT04JCTIJLyogWHRlbnNhIEV4Y2VwdGlvbiBBcmNo aXRlY3R1cmUNCisJCQkJCQkgICBudW1iZXI6IDEgPT0gWEVBMSAob2xkKQ0KKwkJCQkJCQkgICAy ID09IFhFQTIgKG5ldykNCisJCQkJCQkJICAgMCA9PSBYRUFYIChleHRlcm4pIG9yIFRYICovDQor I2RlZmluZSBYQ0hBTF9IQVZFX1hFQTEJCQkwCS8qIEV4Y2VwdGlvbiBBcmNoaXRlY3R1cmUgMSAq Lw0KKyNkZWZpbmUgWENIQUxfSEFWRV9YRUEyCQkJMQkvKiBFeGNlcHRpb24gQXJjaGl0ZWN0dXJl IDIgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfWEVBWAkJCTAJLyogRXh0ZXJuYWwgRXhjZXB0aW9u IEFyY2guICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0VYQ0VQVElPTlMJCTEJLyogZXhjZXB0aW9u IG9wdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9IQUxUCQkJMAkvKiBoYWx0IGFyY2hpdGVj dHVyZSBvcHRpb24gKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfQk9PVExPQURFUgkJMAkvKiBib290 IGxvYWRlciAoZm9yIFRYKSAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9NRU1fRUNDX1BBUklUWQkw CS8qIGxvY2FsIG1lbW9yeSBFQ0MvcGFyaXR5ICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1ZFQ1RP Ul9TRUxFQ1QJMQkvKiByZWxvY2F0YWJsZSB2ZWN0b3JzICovDQorI2RlZmluZSBYQ0hBTF9IQVZF X1ZFQ0JBU0UJCTEJLyogcmVsb2NhdGFibGUgdmVjdG9ycyAqLw0KKyNkZWZpbmUgWENIQUxfVkVD QkFTRV9SRVNFVF9WQUREUgkweDQwMDAwMDAwICAvKiBWRUNCQVNFIHJlc2V0IHZhbHVlICovDQor I2RlZmluZSBYQ0hBTF9WRUNCQVNFX1JFU0VUX1BBRERSCTB4NDAwMDAwMDANCisjZGVmaW5lIFhD SEFMX1JFU0VUX1ZFQ0JBU0VfT1ZFUkxBUAkwDQorDQorI2RlZmluZSBYQ0hBTF9SRVNFVF9WRUNU T1IwX1ZBRERSCTB4NTAwMDAwMDANCisjZGVmaW5lIFhDSEFMX1JFU0VUX1ZFQ1RPUjBfUEFERFIJ MHg1MDAwMDAwMA0KKyNkZWZpbmUgWENIQUxfUkVTRVRfVkVDVE9SMV9WQUREUgkweDQwMDAwNDAw DQorI2RlZmluZSBYQ0hBTF9SRVNFVF9WRUNUT1IxX1BBRERSCTB4NDAwMDA0MDANCisjZGVmaW5l IFhDSEFMX1JFU0VUX1ZFQ1RPUl9WQUREUgkweDQwMDAwNDAwDQorI2RlZmluZSBYQ0hBTF9SRVNF VF9WRUNUT1JfUEFERFIJMHg0MDAwMDQwMA0KKyNkZWZpbmUgWENIQUxfVVNFUl9WRUNPRlMJCTB4 MDAwMDAzNDANCisjZGVmaW5lIFhDSEFMX1VTRVJfVkVDVE9SX1ZBRERSCQkweDQwMDAwMzQwDQor I2RlZmluZSBYQ0hBTF9VU0VSX1ZFQ1RPUl9QQUREUgkJMHg0MDAwMDM0MA0KKyNkZWZpbmUgWENI QUxfS0VSTkVMX1ZFQ09GUwkJMHgwMDAwMDMwMA0KKyNkZWZpbmUgWENIQUxfS0VSTkVMX1ZFQ1RP Ul9WQUREUgkweDQwMDAwMzAwDQorI2RlZmluZSBYQ0hBTF9LRVJORUxfVkVDVE9SX1BBRERSCTB4 NDAwMDAzMDANCisjZGVmaW5lIFhDSEFMX0RPVUJMRUVYQ19WRUNPRlMJCTB4MDAwMDAzQzANCisj ZGVmaW5lIFhDSEFMX0RPVUJMRUVYQ19WRUNUT1JfVkFERFIJMHg0MDAwMDNDMA0KKyNkZWZpbmUg WENIQUxfRE9VQkxFRVhDX1ZFQ1RPUl9QQUREUgkweDQwMDAwM0MwDQorI2RlZmluZSBYQ0hBTF9X SU5ET1dfT0Y0X1ZFQ09GUwkJMHgwMDAwMDAwMA0KKyNkZWZpbmUgWENIQUxfV0lORE9XX1VGNF9W RUNPRlMJCTB4MDAwMDAwNDANCisjZGVmaW5lIFhDSEFMX1dJTkRPV19PRjhfVkVDT0ZTCQkweDAw MDAwMDgwDQorI2RlZmluZSBYQ0hBTF9XSU5ET1dfVUY4X1ZFQ09GUwkJMHgwMDAwMDBDMA0KKyNk ZWZpbmUgWENIQUxfV0lORE9XX09GMTJfVkVDT0ZTCTB4MDAwMDAxMDANCisjZGVmaW5lIFhDSEFM X1dJTkRPV19VRjEyX1ZFQ09GUwkweDAwMDAwMTQwDQorI2RlZmluZSBYQ0hBTF9XSU5ET1dfVkVD VE9SU19WQUREUgkweDQwMDAwMDAwDQorI2RlZmluZSBYQ0hBTF9XSU5ET1dfVkVDVE9SU19QQURE UgkweDQwMDAwMDAwDQorI2RlZmluZSBYQ0hBTF9JTlRMRVZFTDJfVkVDT0ZTCQkweDAwMDAwMTgw DQorI2RlZmluZSBYQ0hBTF9JTlRMRVZFTDJfVkVDVE9SX1ZBRERSCTB4NDAwMDAxODANCisjZGVm aW5lIFhDSEFMX0lOVExFVkVMMl9WRUNUT1JfUEFERFIJMHg0MDAwMDE4MA0KKyNkZWZpbmUgWENI QUxfSU5UTEVWRUwzX1ZFQ09GUwkJMHgwMDAwMDFDMA0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUwz X1ZFQ1RPUl9WQUREUgkweDQwMDAwMUMwDQorI2RlZmluZSBYQ0hBTF9JTlRMRVZFTDNfVkVDVE9S X1BBRERSCTB4NDAwMDAxQzANCisjZGVmaW5lIFhDSEFMX0lOVExFVkVMNF9WRUNPRlMJCTB4MDAw MDAyMDANCisjZGVmaW5lIFhDSEFMX0lOVExFVkVMNF9WRUNUT1JfVkFERFIJMHg0MDAwMDIwMA0K KyNkZWZpbmUgWENIQUxfSU5UTEVWRUw0X1ZFQ1RPUl9QQUREUgkweDQwMDAwMjAwDQorI2RlZmlu ZSBYQ0hBTF9JTlRMRVZFTDVfVkVDT0ZTCQkweDAwMDAwMjQwDQorI2RlZmluZSBYQ0hBTF9JTlRM RVZFTDVfVkVDVE9SX1ZBRERSCTB4NDAwMDAyNDANCisjZGVmaW5lIFhDSEFMX0lOVExFVkVMNV9W RUNUT1JfUEFERFIJMHg0MDAwMDI0MA0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUw2X1ZFQ09GUwkJ MHgwMDAwMDI4MA0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUw2X1ZFQ1RPUl9WQUREUgkweDQwMDAw MjgwDQorI2RlZmluZSBYQ0hBTF9JTlRMRVZFTDZfVkVDVE9SX1BBRERSCTB4NDAwMDAyODANCisj ZGVmaW5lIFhDSEFMX0RFQlVHX1ZFQ09GUwkJWENIQUxfSU5UTEVWRUw2X1ZFQ09GUw0KKyNkZWZp bmUgWENIQUxfREVCVUdfVkVDVE9SX1ZBRERSCVhDSEFMX0lOVExFVkVMNl9WRUNUT1JfVkFERFIN CisjZGVmaW5lIFhDSEFMX0RFQlVHX1ZFQ1RPUl9QQUREUglYQ0hBTF9JTlRMRVZFTDZfVkVDVE9S X1BBRERSDQorI2RlZmluZSBYQ0hBTF9OTUlfVkVDT0ZTCQkweDAwMDAwMkMwDQorI2RlZmluZSBY Q0hBTF9OTUlfVkVDVE9SX1ZBRERSCQkweDQwMDAwMkMwDQorI2RlZmluZSBYQ0hBTF9OTUlfVkVD VE9SX1BBRERSCQkweDQwMDAwMkMwDQorI2RlZmluZSBYQ0hBTF9JTlRMRVZFTDdfVkVDT0ZTCQlY Q0hBTF9OTUlfVkVDT0ZTDQorI2RlZmluZSBYQ0hBTF9JTlRMRVZFTDdfVkVDVE9SX1ZBRERSCVhD SEFMX05NSV9WRUNUT1JfVkFERFINCisjZGVmaW5lIFhDSEFMX0lOVExFVkVMN19WRUNUT1JfUEFE RFIJWENIQUxfTk1JX1ZFQ1RPUl9QQUREUg0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKwkJCQlE RUJVRyBNT0RVTEUNCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qICBNaXNjICAqLw0KKyNkZWZp bmUgWENIQUxfSEFWRV9ERUJVR19FUkkJCTEJLyogRVJJIHRvIGRlYnVnIG1vZHVsZSAqLw0KKyNk ZWZpbmUgWENIQUxfSEFWRV9ERUJVR19BUEIJCTEJLyogQVBCIHRvIGRlYnVnIG1vZHVsZSAqLw0K KyNkZWZpbmUgWENIQUxfSEFWRV9ERUJVR19KVEFHCQkxCS8qIEpUQUcgdG8gZGVidWcgbW9kdWxl ICovDQorDQorLyogIE9uLUNoaXAgRGVidWcgKE9DRCkgICovDQorI2RlZmluZSBYQ0hBTF9IQVZF X09DRAkJCTEJLyogT25DaGlwRGVidWcgb3B0aW9uICovDQorI2RlZmluZSBYQ0hBTF9OVU1fSUJS RUFLCQkyCS8qIG51bWJlciBvZiBJQlJFQUtuIHJlZ3MgKi8NCisjZGVmaW5lIFhDSEFMX05VTV9E QlJFQUsJCTIJLyogbnVtYmVyIG9mIERCUkVBS24gcmVncyAqLw0KKyNkZWZpbmUgWENIQUxfSEFW RV9PQ0RfRElSX0FSUkFZCTAJLyogZmFzdGVyIE9DRCBvcHRpb24gKHRvIExYNCkgKi8NCisjZGVm aW5lIFhDSEFMX0hBVkVfT0NEX0xTMzJERFIJCTEJLyogTDMyRERSL1MzMkREUiAoZmFzdGVyIE9D RCkgKi8NCisNCisvKiAgVFJBWCAoaW4gY29yZSkgICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1RS QVgJCQkxCS8qIFRSQVggaW4gZGVidWcgbW9kdWxlICovDQorI2RlZmluZSBYQ0hBTF9UUkFYX01F TV9TSVpFCQkxNjM4NAkvKiBUUkFYIG1lbW9yeSBzaXplIGluIGJ5dGVzICovDQorI2RlZmluZSBY Q0hBTF9UUkFYX01FTV9TSEFSRUFCTEUJMQkvKiBzdGFydC9lbmQgcmVnczsgcmVhZHkgc2lnLiAq Lw0KKyNkZWZpbmUgWENIQUxfVFJBWF9BVEJfV0lEVEgJCTMyCS8qIEFUQiB3aWR0aCAoYml0cyks IDA9bm8gQVRCICovDQorI2RlZmluZSBYQ0hBTF9UUkFYX1RJTUVfV0lEVEgJCTAJLyogdGltZXN0 YW1wIGJpdHdpZHRoLCAwPW5vbmUgKi8NCisNCisvKiAgUGVyZiBjb3VudGVycyAgKi8NCisjZGVm aW5lIFhDSEFMX05VTV9QRVJGX0NPVU5URVJTCQkyCS8qIHBlcmZvcm1hbmNlIGNvdW50ZXJzICov DQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorCQkJCU1NVQ0KKyAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQor DQorLyogIFNlZSBjb3JlLW1hdG1hcC5oIGhlYWRlciBmaWxlIGZvciBtb3JlIGRldGFpbHMuICAq Lw0KKw0KKyNkZWZpbmUgWENIQUxfSEFWRV9UTEJTCQkJMQkvKiBpbnZlcnNlIG9mIEhBVkVfQ0FD SEVBVFRSICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1NQQU5OSU5HX1dBWQkJMQkvKiBvbmUgd2F5 IG1hcHMgSStEIDRHQiB2YWRkciAqLw0KKyNkZWZpbmUgWENIQUxfU1BBTk5JTkdfV0FZCQkwCS8q IFRMQiBzcGFubmluZyB3YXkgbnVtYmVyICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0lERU5USVRZ X01BUAkJMQkvKiB2YWRkciA9PSBwYWRkciBhbHdheXMgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVf Q0FDSEVBVFRSCQkwCS8qIENBQ0hFQVRUUiByZWdpc3RlciBwcmVzZW50ICovDQorI2RlZmluZSBY Q0hBTF9IQVZFX01JTUlDX0NBQ0hFQVRUUgkxCS8qIHJlZ2lvbiBwcm90ZWN0aW9uICovDQorI2Rl ZmluZSBYQ0hBTF9IQVZFX1hMVF9DQUNIRUFUVFIJMAkvKiByZWdpb24gcHJvdC4gdy90cmFuc2xh dGlvbiAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9QVFBfTU1VCQkwCS8qIGZ1bGwgTU1VICh3aXRo IHBhZ2UgdGFibGUNCisJCQkJCQkgICBbYXV0b3JlZmlsbF0gYW5kIHByb3RlY3Rpb24pDQorCQkJ CQkJICAgdXNhYmxlIGZvciBhbiBNTVUtYmFzZWQgT1MgKi8NCisvKiAgSWYgbm9uZSBvZiB0aGUg YWJvdmUgbGFzdCA0IGFyZSBzZXQsIGl0J3MgYSBjdXN0b20gVExCIGNvbmZpZ3VyYXRpb24uICAq Lw0KKw0KKyNkZWZpbmUgWENIQUxfTU1VX0FTSURfQklUUwkJMAkvKiBudW1iZXIgb2YgYml0cyBp biBBU0lEcyAqLw0KKyNkZWZpbmUgWENIQUxfTU1VX1JJTkdTCQkJMQkvKiBudW1iZXIgb2Ygcmlu Z3MgKDEuLjQpICovDQorI2RlZmluZSBYQ0hBTF9NTVVfUklOR19CSVRTCQkwCS8qIG51bSBvZiBi aXRzIGluIFJJTkcgZmllbGQgKi8NCisNCisjZW5kaWYgLyogIVhURU5TQV9IQUxfTk9OX1BSSVZJ TEVHRURfT05MWSAqLw0KKw0KKw0KKyNlbmRpZiAvKiBfWFRFTlNBX0NPUkVfQ09ORklHVVJBVElP Tl9IICovDQorDQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9pc2F0dHkuYyBi L25ld2xpYi9saWJjL3N5cy94dGVuc2EvaXNhdHR5LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQpp bmRleCAwMDAwMDAwMDAuLmZlNjQyMDliOQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xp YmMvc3lzL3h0ZW5zYS9pc2F0dHkuYw0KQEAgLTAsMCArMSwxOCBAQA0KKy8qIGlzYXR0eS5jICov DQorDQorLyogRHVtYiBpbXBsZW1lbnRhdGlvbiBzbyBwcm9ncmFtcyB3aWxsIGF0IGxlYXN0IHJ1 bi4gICovDQorDQorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+DQorI2luY2x1ZGUgPHJlZW50Lmg+DQor DQoraW50DQorX2lzYXR0eV9yIChzdHJ1Y3QgX3JlZW50ICpwdHIsIGludCBmZCkNCit7DQorICBz dHJ1Y3Qgc3RhdCBidWY7DQorDQorICBpZiAoX2ZzdGF0X3IgKHB0ciwgZmQsICZidWYpIDwgMCkN CisgICAgcmV0dXJuIDA7DQorICBpZiAoU19JU0NIUiAoYnVmLnN0X21vZGUpKQ0KKyAgICByZXR1 cm4gMTsNCisgIHJldHVybiAwOw0KK30NCmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9zeXMveHRl bnNhL3N5cy9maWxlLmggYi9uZXdsaWIvbGliYy9zeXMveHRlbnNhL3N5cy9maWxlLmgNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjQ4YTJjYTA2ZA0KLS0tIC9kZXYvbnVs bA0KKysrIGIvbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9zeXMvZmlsZS5oDQpAQCAtMCwwICsxLDMz IEBADQorLyogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDYgVGVuc2lsaWNhIEluYy4gIEFMTCBSSUdI VFMgUkVTRVJWRUQuDQorDQorICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVy bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQor DQorICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh Ym92ZSBjb3B5cmlnaHQNCisgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorDQorICAgMi4gUmVkaXN0cmlidXRpb25zIGlu IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgICAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIgaW4gdGhlDQorICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisNCisgICBUSElTIFNPRlRXQVJFIElTIFBS T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUw0KKyAg IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRA0KKyAgIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQ0KKyAgIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRFTlNJTElDQQ0KKyAgIElOQ09SUE9SQVRFRCBC RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLA0K KyAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO T1QgTElNSVRFRCBUTywNCisgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1INCisgICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GDQorICAgTElB QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ TkNMVURJTkcNCisgICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMNCisgICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gICovDQorDQorI2luY2x1ZGUgPHN5cy9m Y250bC5oPg0KKw0KKy8qIEFsdGVybmF0ZSBuYW1lcyBmb3IgdmFsdWVzIGZvciB0aGUgV0hFTkNF IGFyZ3VtZW50IHRvIGBsc2VlaycuDQorICAgVGhlc2UgYXJlIHRoZSBzYW1lIGFzIFNFRUtfU0VU LCBTRUVLX0NVUiwgYW5kIFNFRUtfRU5ELCByZXNwZWN0aXZlbHkuICovDQorI2lmbmRlZiBMX1NF VA0KKyNkZWZpbmUgTF9TRVQgICAwICAgICAgIC8qIFNlZWsgZnJvbSBiZWdpbm5pbmcgb2YgZmls ZS4gICovDQorI2RlZmluZSBMX0lOQ1IgIDEgICAgICAgLyogU2VlayBmcm9tIGN1cnJlbnQgcG9z aXRpb24uICAqLw0KKyNkZWZpbmUgTF9YVE5EICAyICAgICAgIC8qIFNlZWsgZnJvbSBlbmQgb2Yg ZmlsZS4gICovDQorI2VuZGlmDQotLSANCjIuMzQuMQ0KDQo=