From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2112.outbound.protection.outlook.com [40.107.255.112]) by sourceware.org (Postfix) with ESMTPS id 1A11D3856DE5 for ; Thu, 11 May 2023 06:12:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1A11D3856DE5 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=KjyP2w7YtK6q/jZrJnTwtw+6ee5KwU09eoNS5giZ1z952MalGBNb+qqCq8ZyAyA4k/UiSHlrkin9eQSEgw1mFsxqm45skyWlaWG6Yk3PjolivrEki7VHhhfXZXrbdeUA9BYIpBiS4YYhl7jthHxiFUqXRnJwEEkE690JGqGyrhLJx//jHfsS/x3aFhNcpw0sU5mzckJSVJMLKRKaEWOOGXpJI2xIiXglZjqRZE+EgJynJT7MoEaKNoocAP5yERkQlN54gPMtd18TqE06dP5AwYR3R6icA+Gr8RRVXe2BJAGH50AfcgFJHqFxIFiYGk9Eu15492pvhUy7+0lXXGRNBQ== 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=rB1UbvJlwP8+2ypjI2ud7C0dpLnEaTFnlAH9+dFN6bE=; b=lMF4A9URVBlO2noIKIOlUKee2JkBye4utcOrdggedHpBViadPcZbDEyhVMqa0LWV0S0kL5nnYIEmSF6Aq9CM1ie9L0C9bpoxFqTgiAI3pK+8KQFy6w/qPrtkhMbSMIGdGQbMDigl5xKfebxKaeZdoPwu/lw5cYoO7GELkox8c6p3T9JLyUh0Ca5zpCfVFAAUqRneQXG0hZPDcXp+19lwyMVkjLSqIe8u22CYXGNyd8yrTgtESxlqf5JcxIGLdAm7UJl4OTlF4PT/4o2Plx6kLeI3MGeNCtOqRCeC5uBctI124fjvMebO8pC2yP3d0pr7uxwHxnPAFP+IM4HQJPiwwQ== 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=rB1UbvJlwP8+2ypjI2ud7C0dpLnEaTFnlAH9+dFN6bE=; b=WDkoGfZcieRBBlvdMHO7X/NOc+09BZsKh6DUmAdV/urE41iG3srKHqULlvwpHpoiUEEgMIpWT1mqyeiOzMmhi89kWy+SW7Q6FHMkyOWEXR9zCjsRM7SQ+kbtgj9iQrlLXNcHxVGlM/fV7PnJx7REqpbaxEOidYZVh5XKtOsQMzk= Received: from TYZPR04MB5736.apcprd04.prod.outlook.com (2603:1096:400:1fa::7) by TYUPR04MB6931.apcprd04.prod.outlook.com (2603:1096:400:356::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.21; Thu, 11 May 2023 06:12:30 +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.020; Thu, 11 May 2023 06:12:30 +0000 From: Alexey Lapshin To: "newlib@sourceware.org" CC: Alexey Gerenkov , "jcmvbkbc@gmail.com" , Ivan Grokhotkov Subject: Re: [PATCH, RFC 2/8] libc: sys: add xtensa port Thread-Topic: [PATCH, RFC 2/8] libc: sys: add xtensa port Thread-Index: AQHZg8+RE39B+opBBkKFFflaUaQTig== Date: Thu, 11 May 2023 06:12:30 +0000 Message-ID: References: <1cb9e9f8c8e4e1df52b439184333d628b3532f65.camel@espressif.com> In-Reply-To: <1cb9e9f8c8e4e1df52b439184333d628b3532f65.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_|TYUPR04MB6931:EE_ x-ms-office365-filtering-correlation-id: ae24f2c3-13dd-4c73-5e84-08db51e6b3bc x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: XU9ijGMWNnP4nWTW14HYE8qm4Zc4dIOQsTH6/Qt7P0akwD8MDrIGrKCS91R3nfaaMR7WGfKeM5fCnW88ytQUWnMM6ob5HEA3MVlTXkD1KyXWnHoVAJs2mu8hMJsk59I4Of7ywno9RwbRxvC0rl8Cjoh8agl9zIzkniyGM5R9HYQy5B6QBCD65nDHVhEfG06s2rf0ru/9CPQZkmFClZ4LZ0toC042WiAdrABlViklm3zb0NWvuvv8co0lR4Qke8GrvzdmBWwjv2JPYJnmf2H+6aBfpsMbA4X7GNQj1f310fBYf/tCBI1bMJYavfpmH6m7Scy4pZ6bPqy7VCaexVsSgbSvvLAMhICaeMOlGO+iF3WFNS3AYzzq4V+KA5GlVHLXTEI8Ch0Lx+YkwFplZFHNAdfeoKxtwJZ5HFaWCWWc02yC7LMYi2P+izRhHrNp5N7nA9+9S6lgZNEsrxtAV99tdU0/AlHsnbQQoV5cscd2NttJMF7pgUYifi/cLAt+qQjFm+otW3usR8Ob5GJbwNUgyzFtUNjANcdP2Ubuxtk8Fu4F1KQtH3vQAikVBH8LZFhhI2KOvxV2jHNLEJVmiFzLzp3N9HmpqUJITrJ8lxE+keXtmMN+mfY8iB9mfa+Msse1fRAYo37CQZSAK1wnaNkpuJmgtkRc/WxUUfgruqUHbhS483rVt3M07mRBZL2YaROv 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)(396003)(39850400004)(376002)(136003)(366004)(346002)(451199021)(86362001)(36756003)(54906003)(91956017)(316002)(6916009)(4326008)(76116006)(66946007)(66556008)(64756008)(66446008)(66476007)(6486002)(478600001)(8676002)(44832011)(41300700001)(8936002)(5660300002)(30864003)(71200400001)(2906002)(38100700002)(38070700005)(122000001)(6512007)(55236004)(2616005)(186003)(107886003)(26005)(6506007)(83380400001)(66899021)(84970400001)(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?ZDhjSSt1cDZ1VjZHNUFLL0ZTcHJaUlJ6VGZTaDJ5SzJmVmFqNnpsdnFwSXpa?= =?utf-8?B?bUFVTDNXS2V4UWVVT0gwbDFKQTZXNFY2bm9VOUsraVpQWWlyWWY1dEYvYWlr?= =?utf-8?B?WDlSS1crYUZ2ZzhOcUFJd08ySE16ZFFrLzY4dXRob1daSTJPRmVLUFg3SGJt?= =?utf-8?B?R1BBVXlrRTFtSU9WSkM3THFLT1BwSVV5MjhFVTQ3SDVUWTUra1RJMU13RXhm?= =?utf-8?B?M0FKMGlBT3pKQnhxdUhxejltZVhyVk0vVG9sSEx1OWI0c2VHbFFlaTVldG9m?= =?utf-8?B?Z3Ftb1hmSTZRMWpObVhBS3BKb3VCQjE3RHM1b3FSNDhVNU1oaWdlYnMxbHNT?= =?utf-8?B?TlRtbGN4MGU4ZlVETFFQdSs2aTh3WVNlL1pUOHlUZm1MRmh0dHUzWnp5bmF3?= =?utf-8?B?a05ucUcwcTN5Mnl0dzBKRGZNNmdPOWFYdThUTmRUNUticFYrYUVVQWROeUYr?= =?utf-8?B?bjFLdnNReWlKdForZ291NmFYQWJNaHRnNDRBbUI4eWRoUjQ5WHJGZUYwVXdS?= =?utf-8?B?cUgwVXJsdUcwSjhPT2MvekxEcXRxUWt2NXQrS1p5Zk8xWW01SUZUM0ZjdHV2?= =?utf-8?B?K21DckVIYWdmVUM5NlZER0dWaHcwYkYxazVhSEp1dnExbGhYSFZFREkrS1kx?= =?utf-8?B?M2dRcjdIKzVkQTI2cGg0VGJhUFcxOHBlMWpFdkNWbEpJMnFzdzRpKzZHdHQ2?= =?utf-8?B?S1U3YU5ramt3MUE4RjhpekxpcDFBWFdjRm8yRlZVUGFWeW1TSHUzNzdYaXFQ?= =?utf-8?B?RmNpODNyUzBlbFFyMHMvRCtnTFFCcEE2K3p2VFhuWjZsaHdTWnk0Q1dOOGdy?= =?utf-8?B?WWp6dWxHWjFKQlA3L0xiTlNoc2NxU1JDNi9HNXlJK015SnlVNFhGMmVEckFV?= =?utf-8?B?N0FweGg0Z2hPYlJyVlVpNWxJeTZLdGhHUVRYc0pvR21TQjVkWFZ0OXZhT1A5?= =?utf-8?B?cmdiSzJTU1lVYkxyU1NUWEEvbnZKZzB0bnI4djRLUWNuV2VFM2JaZ1o1UmQ0?= =?utf-8?B?Mk1HZUwyaDlXQnNvT0Vwd0NqbURWeTcwc0JzZnlyWHdFVEJWS2dxQ3JtdmVz?= =?utf-8?B?b2VmeENudlBhejVIdFBLM3R5cEtvWlQySFBvVVlTRmtLb2xlWkRVOFJkSHY3?= =?utf-8?B?Qk1jUXNsbElHdUdUMDRxNy9NYTdtRVVqUHZrY0tPeDBzZ00yY2pIRmZObnJ0?= =?utf-8?B?U2UxNktIdGJYZmpYQ2ltTEUrd3pXWGpsYlh5eGFsWi9YalM1cFloZXB0ckx6?= =?utf-8?B?dS9IMmVGR3pNbGhvaVlGaUdSUVprcmhZdzhlbmdsclJXanEzNnB1Nm5OLzBQ?= =?utf-8?B?S1BkLyt5ZjVoUC9Od0I4bTdDZ2VFM20wMUErMk8vMkx2MElQejMweTZVUGtC?= =?utf-8?B?UzJEK1lwT1F3alRkcHNPRUNZeTBqVG90Y2lhbTZqZXU5R1d1TGxJU3FPNDJK?= =?utf-8?B?cXNJMEluOHM0VjdqM2Myc0ZOWXRFOWtCbjREVG93Y3pMSXNoUUdReG95c201?= =?utf-8?B?OXpBaVlCaEhhSUJaMmtzMVI3NG5uWHNPSlgxRUZRdGU2M3ZIOGdjL0p4cU1Y?= =?utf-8?B?UlllZEk2VnAyUUxDbG9SUGF2YUg1MGtEM1M0R1FMaW80a01vdDF1a0FKQkJu?= =?utf-8?B?NjBST1p5T3NGS0plalZxK0J5Y1ViVUNRZ21JOVZqZGRkZkZXZTdsOU1WUXBp?= =?utf-8?B?RktGeGsvdy8xMGNMQTdGUGlEd0cwZUpYSnV6ZzcrREZLcmdFWDNUUlVPeGM0?= =?utf-8?B?dWxNUk1TRmtkbHdDRHRqRSttL0UyV2ZZc0N2Q215eDc0MDY3a2o3cVhHaG5o?= =?utf-8?B?UWlQUnJ4T2NhcFhQbXh6Q3NIQk5EbElUWjBSY1ZaampvNzZjUUtqdG5sWlNW?= =?utf-8?B?UDhIVDFBSUFiNjdGNjhJWFVhOUNPSVUzTnhYVnF4K1l2anhmT1ZMNjBkejUy?= =?utf-8?B?MVd5V09vbkYrT3grU0djcis2bm1qRVE0UVh0MlNDcHoyY0NyUzlXbGhKK28z?= =?utf-8?B?eW1ScWlqam9PZlJLa2xqVkg2cCs0TmpyRmNiZ25pNlNMTnJoR0ZMRkJmenl0?= =?utf-8?B?R01UYXpJOTRDTG5tOFlGdXlXVytiZGQvUUNEd0N6akdFZjNpZDBsMzh5THZt?= =?utf-8?B?YzZkM1Zhdkw4ZWZ4K3Y2TmhxOExDUWxrWmRhNU9MVVBJS2h2ejBXdzBrTzhs?= =?utf-8?Q?d6HSf+ER5fDTHjpY8Gt1BF8=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <4EDBCDFE9D144049AC1D27C8AAE6555E@apcprd04.prod.outlook.com> 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: ae24f2c3-13dd-4c73-5e84-08db51e6b3bc X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2023 06:12:30.2687 (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: Lcz6C/atQUv4+VLa5rrXetoTuqilWP1EIlrn/JPBRbV95C/cpR+0rLV3SzO1ELNnveq1CxIG/DhOa85MqDCqoyfwcEDzx8k2fpVuSLNdJoI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYUPR04MB6931 X-Spam-Status: No, score=-11.2 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 Yy9zeXMveHRlbnNhL3N5cy9maWxlLmg6IExpa2V3aXNlLg0KDQotLS0NCiBuZXdsaWIvbGliYy9z eXMvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsNCiBuZXdsaWIvbGliYy9z eXMveHRlbnNhL01ha2VmaWxlLmFtICAgICAgICAgICAgfCAgIDE0ICsNCiBuZXdsaWIvbGliYy9z eXMveHRlbnNhL01ha2VmaWxlLmluICAgICAgICAgICAgfCAgMzg4ICsrDQogbmV3bGliL2xpYmMv c3lzL3h0ZW5zYS9fYXRleGl0LmMgICAgICAgICAgICAgIHwgICA1MyArDQogbmV3bGliL2xpYmMv c3lzL3h0ZW5zYS9hY2xvY2FsLm00ICAgICAgICAgICAgIHwgIDg4MCArKysrDQogbmV3bGliL2xp YmMvc3lzL3h0ZW5zYS9jbGlicmFyeV9pbml0LmMgICAgICAgIHwgICA0MiArDQogbmV3bGliL2xp YmMvc3lzL3h0ZW5zYS9jb25maWd1cmUgICAgICAgICAgICAgIHwgNDYyMyArKysrKysrKysrKysr KysrKw0KIG5ld2xpYi9saWJjL3N5cy94dGVuc2EvY29uZmlndXJlLmluICAgICAgICAgICB8ICAg MTQgKw0KIG5ld2xpYi9saWJjL3N5cy94dGVuc2EvY3JlYXQuYyAgICAgICAgICAgICAgICB8ICAg IDkgKw0KIG5ld2xpYi9saWJjL3N5cy94dGVuc2EvY3J0MC5jICAgICAgICAgICAgICAgICB8ICAg MTYgKw0KIG5ld2xpYi9saWJjL3N5cy94dGVuc2EvaW5jbHVkZS9mZW52LmggICAgICAgICB8ICAg ODggKw0KIG5ld2xpYi9saWJjL3N5cy94dGVuc2EvaW5jbHVkZS91bmlzdGQuaCAgICAgICB8ICAg MTMgKw0KIC4uLi94dGVuc2EvaW5jbHVkZS94dGVuc2EvY29uZmlnL2NvcmUtaXNhLmggICB8ICA2 NTUgKysrDQogbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9pc2F0dHkuYyAgICAgICAgICAgICAgIHwg ICAxOCArDQogbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9zeXMvZmlsZS5oICAgICAgICAgICAgIHwg ICAzMyArDQogMTUgZmlsZXMgY2hhbmdlZCwgNjg0OSBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1v ZGUgMTAwNjQ0IG5ld2xpYi9saWJjL3N5cy94dGVuc2EvTWFrZWZpbGUuYW0NCiBjcmVhdGUgbW9k ZSAxMDA2NDQgbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9NYWtlZmlsZS5pbg0KIGNyZWF0ZSBtb2Rl IDEwMDY0NCBuZXdsaWIvbGliYy9zeXMveHRlbnNhL19hdGV4aXQuYw0KIGNyZWF0ZSBtb2RlIDEw MDY0NCBuZXdsaWIvbGliYy9zeXMveHRlbnNhL2FjbG9jYWwubTQNCiBjcmVhdGUgbW9kZSAxMDA2 NDQgbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9jbGlicmFyeV9pbml0LmMNCiBjcmVhdGUgbW9kZSAx MDA3NTUgbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9jb25maWd1cmUNCiBjcmVhdGUgbW9kZSAxMDA2 NDQgbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9jb25maWd1cmUuaW4NCiBjcmVhdGUgbW9kZSAxMDA2 NDQgbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9jcmVhdC5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5l d2xpYi9saWJjL3N5cy94dGVuc2EvY3J0MC5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9s aWJjL3N5cy94dGVuc2EvaW5jbHVkZS9mZW52LmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbmV3bGli L2xpYmMvc3lzL3h0ZW5zYS9pbmNsdWRlL3VuaXN0ZC5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5l d2xpYi9saWJjL3N5cy94dGVuc2EvaW5jbHVkZS94dGVuc2EvY29uZmlnL2NvcmUtDQppc2EuaA0K IGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGliYy9zeXMveHRlbnNhL2lzYXR0eS5jDQogY3Jl YXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJjL3N5cy94dGVuc2Evc3lzL2ZpbGUuaA0KDQpkaWZm IC0tZ2l0IGEvbmV3bGliL2xpYmMvc3lzL2NvbmZpZ3VyZSBiL25ld2xpYi9saWJjL3N5cy9jb25m aWd1cmUNCmluZGV4IGU0MWYxY2RlMS4uODI1MDRiMDA1IDEwMDc1NQ0KLS0tIGEvbmV3bGliL2xp YmMvc3lzL2NvbmZpZ3VyZQ0KKysrIGIvbmV3bGliL2xpYmMvc3lzL2NvbmZpZ3VyZQ0KQEAgLTgx Myw2ICs4MTMsNyBAQCBzeXN2bmVjdjcwDQogdGljODANCiB0aXJ0b3MNCiB3NjUNCit4dGVuc2EN CiB6OGtzaW0nDQogDQogIyBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzIHNldCBieSBvcHRpb25z Lg0KQEAgLTExODc3LDYgKzExODc4LDggQEAgc3ViZGlycz0iJHN1YmRpcnMgYTI5a2hpZiINCiAJ dGlydG9zKSBzdWJkaXJzPSIkc3ViZGlycyB0aXJ0b3MiDQogIDs7DQogCXc2NSkgc3ViZGlycz0i JHN1YmRpcnMgdzY1Ig0KKyA7Ow0KKwl4dGVuc2EpIHN1YmRpcnM9IiRzdWJkaXJzIHh0ZW5zYSIN CiAgOzsNCiAJejhrc2ltKSBzdWJkaXJzPSIkc3ViZGlycyB6OGtzaW0iDQogIDs7DQpkaWZmIC0t Z2l0IGEvbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9NYWtlZmlsZS5hbQ0KYi9uZXdsaWIvbGliYy9z eXMveHRlbnNhL01ha2VmaWxlLmFtDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw MDAwLi5hMDczNmEyNDYNCi0tLSAvZGV2L251bGwNCisrKyBiL25ld2xpYi9saWJjL3N5cy94dGVu c2EvTWFrZWZpbGUuYW0NCkBAIC0wLDAgKzEsMTQgQEANCisjIyBQcm9jZXNzIHRoaXMgZmlsZSB3 aXRoIGF1dG9tYWtlIHRvIGdlbmVyYXRlIE1ha2VmaWxlLmluDQorDQorQVVUT01BS0VfT1BUSU9O UyA9IGN5Z251cw0KKw0KK0lOQ0xVREVTID0gJChORVdMSUJfQ0ZMQUdTKSAkKENST1NTX0NGTEFH UykgJChUQVJHRVRfQ0ZMQUdTKQ0KKw0KK25vaW5zdF9MSUJSQVJJRVMgPSBsaWIuYQ0KKw0KK2xp Yl9hX1NPVVJDRVMgPSBfYXRleGl0LmMgY3JlYXQuYyBpc2F0dHkuYyBjbGlicmFyeV9pbml0LmMN CisNCithbGw6IGNydDAubw0KKw0KK0FDTE9DQUxfQU1GTEFHUyA9IC1JIC4uLy4uLy4uDQorQ09O RklHX1NUQVRVU19ERVBFTkRFTkNJRVMgPSAkKG5ld2xpYl9iYXNlZGlyKS9jb25maWd1cmUuaG9z dA0KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJjL3N5cy94dGVuc2EvTWFrZWZpbGUuaW4NCmIvbmV3 bGliL2xpYmMvc3lzL3h0ZW5zYS9NYWtlZmlsZS5pbg0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu ZGV4IDAwMDAwMDAwMC4uZmNjYmNkZGMxDQotLS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGli Yy9zeXMveHRlbnNhL01ha2VmaWxlLmluDQpAQCAtMCwwICsxLDM4OCBAQA0KKyMgTWFrZWZpbGUu aW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuOS41IGZyb20gTWFrZWZpbGUuYW0uDQorIyBAY29u ZmlndXJlX2lucHV0QA0KKw0KKyMgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3 LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLA0KKyMgMjAwMywgMjAwNCwgMjAwNSAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUg c29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRl ZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdp dGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQu DQorDQorIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwNCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWSwgdG8gdGhlIGV4dGVu dCBwZXJtaXR0ZWQgYnkgbGF3OyB3aXRob3V0DQorIyBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQorIyBQQVJUSUNVTEFSIFBVUlBP U0UuDQorDQorQFNFVF9NQUtFQA0KKw0KK1NPVVJDRVMgPSAkKGxpYl9hX1NPVVJDRVMpDQorDQor c3JjZGlyID0gQHNyY2RpckANCit0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJADQorVlBBVEggPSBA c3JjZGlyQA0KK3BrZ2RhdGFkaXIgPSAkKGRhdGFkaXIpL0BQQUNLQUdFQA0KK3BrZ2xpYmRpciA9 ICQobGliZGlyKS9AUEFDS0FHRUANCitwa2dpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9AUEFD S0FHRUANCit0b3BfYnVpbGRkaXIgPSAuDQorYW1fX2NkID0gQ0RQQVRIPSIkJHtaU0hfVkVSU0lP TisufSQoUEFUSF9TRVBBUkFUT1IpIiAmJiBjZA0KK0lOU1RBTEwgPSBASU5TVEFMTEANCitpbnN0 YWxsX3NoX0RBVEEgPSAkKGluc3RhbGxfc2gpIC1jIC1tIDY0NA0KK2luc3RhbGxfc2hfUFJPR1JB TSA9ICQoaW5zdGFsbF9zaCkgLWMNCitpbnN0YWxsX3NoX1NDUklQVCA9ICQoaW5zdGFsbF9zaCkg LWMNCitJTlNUQUxMX0hFQURFUiA9ICQoSU5TVEFMTF9EQVRBKQ0KK3RyYW5zZm9ybSA9ICQocHJv Z3JhbV90cmFuc2Zvcm1fbmFtZSkNCitOT1JNQUxfSU5TVEFMTCA9IDoNCitQUkVfSU5TVEFMTCA9 IDoNCitQT1NUX0lOU1RBTEwgPSA6DQorTk9STUFMX1VOSU5TVEFMTCA9IDoNCitQUkVfVU5JTlNU QUxMID0gOg0KK1BPU1RfVU5JTlNUQUxMID0gOg0KK2J1aWxkX3RyaXBsZXQgPSBAYnVpbGRADQor aG9zdF90cmlwbGV0ID0gQGhvc3RADQorRElTVF9DT01NT04gPSAkKHNyY2RpcikvLi4vLi4vLi4v Li4vY29uZmlnLmd1ZXNzIFwNCisJJChzcmNkaXIpLy4uLy4uLy4uLy4uL2NvbmZpZy5zdWIgJChz cmNkaXIpL01ha2VmaWxlLmluIFwNCisJJChzcmNkaXIpL01ha2VmaWxlLmFtICQodG9wX3NyY2Rp cikvY29uZmlndXJlIFwNCisJJChhbV9fY29uZmlndXJlX2RlcHMpICQoc3JjZGlyKS8uLi8uLi8u Li8uLi9ta2luc3RhbGxkaXJzDQorc3ViZGlyID0gLg0KK0FDTE9DQUxfTTQgPSAkKHRvcF9zcmNk aXIpL2FjbG9jYWwubTQNCithbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS8uLi8u Li8uLi9hY2luY2x1ZGUubTQgXA0KKwkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5pbg0KK2FtX19j b25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5E RU5DSUVTKQ0KXA0KKwkkKEFDTE9DQUxfTTQpDQorYW1fX0NPTkZJR19ESVNUQ0xFQU5fRklMRVMg PSBjb25maWcuc3RhdHVzIGNvbmZpZy5jYWNoZSBjb25maWcubG9nIFwNCisgY29uZmlndXJlLmxp bmVubyBjb25maWd1cmUuc3RhdHVzLmxpbmVubw0KK21raW5zdGFsbGRpcnMgPSAkKFNIRUxMKSAk KHRvcF9zcmNkaXIpLy4uLy4uLy4uLy4uL21raW5zdGFsbGRpcnMNCitDT05GSUdfQ0xFQU5fRklM RVMgPQ0KK0xJQlJBUklFUyA9ICQobm9pbnN0X0xJQlJBUklFUykNCitBUkZMQUdTID0gY3J1DQor bGliX2FfQVIgPSAkKEFSKSAkKEFSRkxBR1MpDQorbGliX2FfTElCQUREID0NCithbV9saWJfYV9P QkpFQ1RTID0gX2F0ZXhpdC4kKE9CSkVYVCkgY3JlYXQuJChPQkpFWFQpIGlzYXR0eS4kKE9CSkVY VCkNClwNCisJY2xpYnJhcnlfaW5pdC4kKE9CSkVYVCkNCitsaWJfYV9PQkpFQ1RTID0gJChhbV9s aWJfYV9PQkpFQ1RTKQ0KK0RFRkFVTFRfSU5DTFVERVMgPSAtSS4gLUkkKHNyY2RpcikNCitkZXBj b21wID0NCithbV9fZGVwZmlsZXNfbWF5YmUgPQ0KK0NPTVBJTEUgPSAkKENDKSAkKERFRlMpICQo REVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykNClwNCisJJChDUFBG TEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKQ0KK0NDTEQgPSAkKENDKQ0KK0xJTksgPSAkKEND TEQpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRA DQorU09VUkNFUyA9ICQobGliX2FfU09VUkNFUykNCitFVEFHUyA9IGV0YWdzDQorQ1RBR1MgPSBj dGFncw0KK0FDTE9DQUwgPSBAQUNMT0NBTEANCitBTURFUF9GQUxTRSA9IEBBTURFUF9GQUxTRUAN CitBTURFUF9UUlVFID0gQEFNREVQX1RSVUVADQorQU1UQVIgPSBAQU1UQVJADQorQVIgPSBAQVJA DQorQVMgPSBAQVNADQorQVVUT0NPTkYgPSBAQVVUT0NPTkZADQorQVVUT0hFQURFUiA9IEBBVVRP SEVBREVSQA0KK0FVVE9NQUtFID0gQEFVVE9NQUtFQA0KK0FXSyA9IEBBV0tADQorQ0MgPSBAQ0NA DQorQ0NBUyA9IEBDQ0FTQA0KK0NDQVNGTEFHUyA9IEBDQ0FTRkxBR1NADQorQ0NERVBNT0RFID0g QENDREVQTU9ERUANCitDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQA0KK0RFRlMgPSBAREVGU0ANCitE RVBESVIgPSBAREVQRElSQA0KK0VDSE9fQyA9IEBFQ0hPX0NADQorRUNIT19OID0gQEVDSE9fTkAN CitFQ0hPX1QgPSBARUNIT19UQA0KK0VMSVhfTEVWRUxfMF9GQUxTRSA9IEBFTElYX0xFVkVMXzBf RkFMU0VADQorRUxJWF9MRVZFTF8wX1RSVUUgPSBARUxJWF9MRVZFTF8wX1RSVUVADQorRUxJWF9M RVZFTF8xX0ZBTFNFID0gQEVMSVhfTEVWRUxfMV9GQUxTRUANCitFTElYX0xFVkVMXzFfVFJVRSA9 IEBFTElYX0xFVkVMXzFfVFJVRUANCitFTElYX0xFVkVMXzJfRkFMU0UgPSBARUxJWF9MRVZFTF8y X0ZBTFNFQA0KK0VMSVhfTEVWRUxfMl9UUlVFID0gQEVMSVhfTEVWRUxfMl9UUlVFQA0KK0VMSVhf TEVWRUxfM19GQUxTRSA9IEBFTElYX0xFVkVMXzNfRkFMU0VADQorRUxJWF9MRVZFTF8zX1RSVUUg PSBARUxJWF9MRVZFTF8zX1RSVUVADQorRUxJWF9MRVZFTF80X0ZBTFNFID0gQEVMSVhfTEVWRUxf NF9GQUxTRUANCitFTElYX0xFVkVMXzRfVFJVRSA9IEBFTElYX0xFVkVMXzRfVFJVRUANCitJTlNU QUxMX0RBVEEgPSBASU5TVEFMTF9EQVRBQA0KK0lOU1RBTExfUFJPR1JBTSA9IEBJTlNUQUxMX1BS T0dSQU1ADQorSU5TVEFMTF9TQ1JJUFQgPSBASU5TVEFMTF9TQ1JJUFRADQorSU5TVEFMTF9TVFJJ UF9QUk9HUkFNID0gQElOU1RBTExfU1RSSVBfUFJPR1JBTUANCitMREZMQUdTID0gQExERkxBR1NA DQorTElCT0JKUyA9IEBMSUJPQkpTQA0KK0xJQlMgPSBATElCU0ANCitMVExJQk9CSlMgPSBATFRM SUJPQkpTQA0KK01BSU5UID0gQE1BSU5UQA0KK01BSU5UQUlORVJfTU9ERV9GQUxTRSA9IEBNQUlO VEFJTkVSX01PREVfRkFMU0VADQorTUFJTlRBSU5FUl9NT0RFX1RSVUUgPSBATUFJTlRBSU5FUl9N T0RFX1RSVUVADQorTUFLRUlORk8gPSBATUFLRUlORk9ADQorTUFZX1NVUFBMWV9TWVNDQUxMU19G QUxTRSA9IEBNQVlfU1VQUExZX1NZU0NBTExTX0ZBTFNFQA0KK01BWV9TVVBQTFlfU1lTQ0FMTFNf VFJVRSA9IEBNQVlfU1VQUExZX1NZU0NBTExTX1RSVUVADQorTkVXTElCX0NGTEFHUyA9IEBORVdM SUJfQ0ZMQUdTQA0KK05PX0lOQ0xVREVfTElTVCA9IEBOT19JTkNMVURFX0xJU1RADQorT0JKRVhU ID0gQE9CSkVYVEANCitQQUNLQUdFID0gQFBBQ0tBR0VADQorUEFDS0FHRV9CVUdSRVBPUlQgPSBA UEFDS0FHRV9CVUdSRVBPUlRADQorUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUANCitQQUNL QUdFX1NUUklORyA9IEBQQUNLQUdFX1NUUklOR0ANCitQQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FH RV9UQVJOQU1FQA0KK1BBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQA0KK1BBQ0tBR0VfVkVSU0lP TiA9IEBQQUNLQUdFX1ZFUlNJT05ADQorUEFUSF9TRVBBUkFUT1IgPSBAUEFUSF9TRVBBUkFUT1JA DQorUkFOTElCID0gQFJBTkxJQkANCitSRUFERUxGID0gQFJFQURFTEZADQorU0VUX01BS0UgPSBA U0VUX01BS0VADQorU0hFTEwgPSBAU0hFTExADQorU1RSSVAgPSBAU1RSSVBADQorVVNFX0xJQlRP T0xfRkFMU0UgPSBAVVNFX0xJQlRPT0xfRkFMU0VADQorVVNFX0xJQlRPT0xfVFJVRSA9IEBVU0Vf TElCVE9PTF9UUlVFQA0KK1ZFUlNJT04gPSBAVkVSU0lPTkANCithZXh0ID0gQGFleHRADQorYW1f X2Zhc3RkZXBDQ19GQUxTRSA9IEBhbV9fZmFzdGRlcENDX0ZBTFNFQA0KK2FtX19mYXN0ZGVwQ0Nf VFJVRSA9IEBhbV9fZmFzdGRlcENDX1RSVUVADQorYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVA DQorYW1fX2xlYWRpbmdfZG90ID0gQGFtX19sZWFkaW5nX2RvdEANCithbV9fcXVvdGUgPSBAYW1f X3F1b3RlQA0KK2FtX190YXIgPSBAYW1fX3RhckANCithbV9fdW50YXIgPSBAYW1fX3VudGFyQA0K K2JpbmRpciA9IEBiaW5kaXJADQorYnVpbGQgPSBAYnVpbGRADQorYnVpbGRfYWxpYXMgPSBAYnVp bGRfYWxpYXNADQorYnVpbGRfY3B1ID0gQGJ1aWxkX2NwdUANCitidWlsZF9vcyA9IEBidWlsZF9v c0ANCitidWlsZF92ZW5kb3IgPSBAYnVpbGRfdmVuZG9yQA0KK2RhdGFkaXIgPSBAZGF0YWRpckAN CitkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckANCitkb2NkaXIgPSBAZG9jZGlyQA0KK2R2aWRp ciA9IEBkdmlkaXJADQorZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhADQoraG9zdCA9IEBob3N0 QA0KK2hvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0ANCitob3N0X2NwdSA9IEBob3N0X2NwdUANCito b3N0X29zID0gQGhvc3Rfb3NADQoraG9zdF92ZW5kb3IgPSBAaG9zdF92ZW5kb3JADQoraHRtbGRp ciA9IEBodG1sZGlyQA0KK2luY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckANCitpbmZvZGlyID0gQGlu Zm9kaXJADQoraW5zdGFsbF9zaCA9IEBpbnN0YWxsX3NoQA0KK2xpYmRpciA9IEBsaWJkaXJADQor bGliZXhlY2RpciA9IEBsaWJleGVjZGlyQA0KK2xpYm1fbWFjaGluZV9kaXIgPSBAbGlibV9tYWNo aW5lX2RpckANCitsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQA0KK2xvY2Fsc3RhdGVkaXIgPSBAbG9j YWxzdGF0ZWRpckANCitscGZ4ID0gQGxwZnhADQorbWFjaGluZV9kaXIgPSBAbWFjaGluZV9kaXJA DQorbWFuZGlyID0gQG1hbmRpckANCitta2Rpcl9wID0gQG1rZGlyX3BADQorbmV3bGliX2Jhc2Vk aXIgPSBAbmV3bGliX2Jhc2VkaXJADQorb2V4dCA9IEBvZXh0QA0KK29sZGluY2x1ZGVkaXIgPSBA b2xkaW5jbHVkZWRpckANCitwZGZkaXIgPSBAcGRmZGlyQA0KK3ByZWZpeCA9IEBwcmVmaXhADQor cHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA9IEBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQA0KK3BzZGly ID0gQHBzZGlyQA0KK3NiaW5kaXIgPSBAc2JpbmRpckANCitzaGFyZWRzdGF0ZWRpciA9IEBzaGFy ZWRzdGF0ZWRpckANCitzeXNfZGlyID0gQHN5c19kaXJADQorc3lzY29uZmRpciA9IEBzeXNjb25m ZGlyQA0KK3RhcmdldF9hbGlhcyA9IEB0YXJnZXRfYWxpYXNADQorQVVUT01BS0VfT1BUSU9OUyA9 IGN5Z251cw0KK0lOQ0xVREVTID0gJChORVdMSUJfQ0ZMQUdTKSAkKENST1NTX0NGTEFHUykgJChU QVJHRVRfQ0ZMQUdTKQ0KK25vaW5zdF9MSUJSQVJJRVMgPSBsaWIuYQ0KK2xpYl9hX1NPVVJDRVMg PSBfYXRleGl0LmMgY3JlYXQuYyBpc2F0dHkuYyBjbGlicmFyeV9pbml0LmMNCitBQ0xPQ0FMX0FN RkxBR1MgPSAtSSAuLi8uLi8uLg0KK0NPTkZJR19TVEFUVVNfREVQRU5ERU5DSUVTID0gJChuZXds aWJfYmFzZWRpcikvY29uZmlndXJlLmhvc3QNCithbGw6IGFsbC1hbQ0KKw0KKy5TVUZGSVhFUzoN CisuU1VGRklYRVM6IC5jIC5vIC5vYmoNCithbS0tcmVmcmVzaDoNCisJQDoNCiskKHNyY2Rpcikv TWFrZWZpbGUuaW46IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChzcmNkaXIpL01ha2VmaWxlLmFt IA0KJChhbV9fY29uZmlndXJlX2RlcHMpDQorCUBmb3IgZGVwIGluICQ/OyBkbyBcDQorCSAgY2Fz ZSAnJChhbV9fY29uZmlndXJlX2RlcHMpJyBpbiBcDQorCSAgICAqJCRkZXAqKSBcDQorCSAgICAg IGVjaG8gJyBjZCAkKHNyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1jeWdudXMgJzsgXA0KKwkgICAg ICBjZCAkKHNyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1jeWdudXMgIFwNCisJCSYmIGV4aXQgMDsg XA0KKwkgICAgICBleGl0IDE7OyBcDQorCSAgZXNhYzsgXA0KKwlkb25lOyBcDQorCWVjaG8gJyBj ZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tY3lnbnVzICBNYWtlZmlsZSc7IFwNCisJ Y2QgJCh0b3Bfc3JjZGlyKSAmJiBcDQorCSAgJChBVVRPTUFLRSkgLS1jeWdudXMgIE1ha2VmaWxl DQorLlBSRUNJT1VTOiBNYWtlZmlsZQ0KK01ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4g JCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMNCisJQGNhc2UgJyQ/JyBpbiBcDQorCSAgKmNv bmZpZy5zdGF0dXMqKSBcDQorCSAgICBlY2hvICcgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzJzsg XA0KKwkgICAgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzOzsgXA0KKwkgICopIFwNCisJICAgIGVj aG8gJyBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICRADQok KGFtX19kZXBmaWxlc19tYXliZSknOyBcDQorCSAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChT SEVMTCkgLi9jb25maWcuc3RhdHVzICRADQokKGFtX19kZXBmaWxlc19tYXliZSk7OyBcDQorCWVz YWM7DQorDQorJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXM6ICQodG9wX3NyY2RpcikvY29u ZmlndXJlDQokKENPTkZJR19TVEFUVVNfREVQRU5ERU5DSUVTKQ0KKwkkKFNIRUxMKSAuL2NvbmZp Zy5zdGF0dXMgLS1yZWNoZWNrDQorDQorJCh0b3Bfc3JjZGlyKS9jb25maWd1cmU6IEBNQUlOVEFJ TkVSX01PREVfVFJVRUAgJChhbV9fY29uZmlndXJlX2RlcHMpDQorCWNkICQoc3JjZGlyKSAmJiAk KEFVVE9DT05GKQ0KKyQoQUNMT0NBTF9NNCk6IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChhbV9f YWNsb2NhbF9tNF9kZXBzKQ0KKwljZCAkKHNyY2RpcikgJiYgJChBQ0xPQ0FMKSAkKEFDTE9DQUxf QU1GTEFHUykNCisNCitjbGVhbi1ub2luc3RMSUJSQVJJRVM6DQorCS10ZXN0IC16ICIkKG5vaW5z dF9MSUJSQVJJRVMpIiB8fCBybSAtZiAkKG5vaW5zdF9MSUJSQVJJRVMpDQorbGliLmE6ICQobGli X2FfT0JKRUNUUykgJChsaWJfYV9ERVBFTkRFTkNJRVMpIA0KKwktcm0gLWYgbGliLmENCisJJChs aWJfYV9BUikgbGliLmEgJChsaWJfYV9PQkpFQ1RTKSAkKGxpYl9hX0xJQkFERCkNCisJJChSQU5M SUIpIGxpYi5hDQorDQorbW9zdGx5Y2xlYW4tY29tcGlsZToNCisJLXJtIC1mICouJChPQkpFWFQp DQorDQorZGlzdGNsZWFuLWNvbXBpbGU6DQorCS1ybSAtZiAqLnRhYi5jDQorDQorLmMubzoNCisJ JChDT01QSUxFKSAtYyAkPA0KKw0KKy5jLm9iajoNCisJJChDT01QSUxFKSAtYyBgJChDWUdQQVRI X1cpICckPCdgDQordW5pbnN0YWxsLWluZm8tYW06DQorDQorSUQ6ICQoSEVBREVSUykgJChTT1VS Q0VTKSAkKExJU1ApICQoVEFHU19GSUxFUykNCisJbGlzdD0nJChTT1VSQ0VTKSAkKEhFQURFUlMp ICQoTElTUCkgJChUQUdTX0ZJTEVTKSc7IFwNCisJdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRv IFwNCisJICAgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNy Y2RpcikvJCRpOw0KZmk7IFwNCisJICBkb25lIHwgXA0KKwkgICQoQVdLKSAnICAgIHsgZmlsZXNb JCQwXSA9IDE7IH0gXA0KKwkgICAgICAgRU5EIHsgZm9yIChpIGluIGZpbGVzKSBwcmludCBpOyB9 J2A7IFwNCisJbWtpZCAtZklEICQkdW5pcXVlDQordGFnczogVEFHUw0KKw0KK1RBR1M6ICAkKEhF QURFUlMpICQoU09VUkNFUykgICQoVEFHU19ERVBFTkRFTkNJRVMpIFwNCisJCSQoVEFHU19GSUxF UykgJChMSVNQKQ0KKwl0YWdzPTsgXA0KKwloZXJlPWBwd2RgOyBcDQorCWxpc3Q9JyQoU09VUkNF UykgJChIRUFERVJTKSAgJChMSVNQKSAkKFRBR1NfRklMRVMpJzsgXA0KKwl1bmlxdWU9YGZvciBp IGluICQkbGlzdDsgZG8gXA0KKwkgICAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBlY2hvICQkaTsg ZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7DQpmaTsgXA0KKwkgIGRvbmUgfCBcDQorCSAgJChBV0sp ICcgICAgeyBmaWxlc1skJDBdID0gMTsgfSBcDQorCSAgICAgICBFTkQgeyBmb3IgKGkgaW4gZmls ZXMpIHByaW50IGk7IH0nYDsgXA0KKwlpZiB0ZXN0IC16ICIkKEVUQUdTX0FSR1MpJCR0YWdzJCR1 bmlxdWUiOyB0aGVuIDo7IGVsc2UgXA0KKwkgIHRlc3QgLW4gIiQkdW5pcXVlIiB8fCB1bmlxdWU9 JCRlbXB0eV9maXg7IFwNCisJICAkKEVUQUdTKSAkKEVUQUdTRkxBR1MpICQoQU1fRVRBR1NGTEFH UykgJChFVEFHU19BUkdTKSBcDQorCSAgICAkJHRhZ3MgJCR1bmlxdWU7IFwNCisJZmkNCitjdGFn czogQ1RBR1MNCitDVEFHUzogICQoSEVBREVSUykgJChTT1VSQ0VTKSAgJChUQUdTX0RFUEVOREVO Q0lFUykgXA0KKwkJJChUQUdTX0ZJTEVTKSAkKExJU1ApDQorCXRhZ3M9OyBcDQorCWhlcmU9YHB3 ZGA7IFwNCisJbGlzdD0nJChTT1VSQ0VTKSAkKEhFQURFUlMpICAkKExJU1ApICQoVEFHU19GSUxF UyknOyBcDQorCXVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBcDQorCSAgICBpZiB0ZXN0IC1m ICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsNCmZpOyBcDQor CSAgZG9uZSB8IFwNCisJICAkKEFXSykgJyAgICB7IGZpbGVzWyQkMF0gPSAxOyB9IFwNCisJICAg ICAgIEVORCB7IGZvciAoaSBpbiBmaWxlcykgcHJpbnQgaTsgfSdgOyBcDQorCXRlc3QgLXogIiQo Q1RBR1NfQVJHUykkJHRhZ3MkJHVuaXF1ZSIgXA0KKwkgIHx8ICQoQ1RBR1MpICQoQ1RBR1NGTEFH UykgJChBTV9DVEFHU0ZMQUdTKSAkKENUQUdTX0FSR1MpIFwNCisJICAgICAkJHRhZ3MgJCR1bmlx dWUNCisNCitHVEFHUzoNCisJaGVyZT1gJChhbV9fY2QpICQodG9wX2J1aWxkZGlyKSAmJiBwd2Rg IFwNCisJICAmJiBjZCAkKHRvcF9zcmNkaXIpIFwNCisJICAmJiBndGFncyAtaSAkKEdUQUdTX0FS R1MpICQkaGVyZQ0KKw0KK2Rpc3RjbGVhbi10YWdzOg0KKwktcm0gLWYgVEFHUyBJRCBHVEFHUyBH UlRBR1MgR1NZTVMgR1BBVEggdGFncw0KK2NoZWNrLWFtOg0KK2NoZWNrOiBjaGVjay1hbQ0KK2Fs bC1hbTogTWFrZWZpbGUgJChMSUJSQVJJRVMpDQoraW5zdGFsbGRpcnM6DQoraW5zdGFsbDogaW5z dGFsbC1hbQ0KK2luc3RhbGwtZXhlYzogaW5zdGFsbC1leGVjLWFtDQoraW5zdGFsbC1kYXRhOiBp bnN0YWxsLWRhdGEtYW0NCit1bmluc3RhbGw6IHVuaW5zdGFsbC1hbQ0KKw0KK2luc3RhbGwtYW06 IGFsbC1hbQ0KKwlAJChNQUtFKSAkKEFNX01BS0VGTEFHUykgaW5zdGFsbC1leGVjLWFtIGluc3Rh bGwtZGF0YS1hbQ0KKw0KK2luc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLWFtDQoraW5zdGFsbC1z dHJpcDoNCisJJChNQUtFKSAkKEFNX01BS0VGTEFHUykNCklOU1RBTExfUFJPR1JBTT0iJChJTlNU QUxMX1NUUklQX1BST0dSQU0pIiBcDQorCSAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExf U1RSSVBfUFJPR1JBTSkiDQpJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXA0KKwkgIGB0ZXN0IC16ICck KFNUUklQKScgfHwgXA0KKwkgICAgZWNobyAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9 JyQoU1RSSVApJyJgIGluc3RhbGwNCittb3N0bHljbGVhbi1nZW5lcmljOg0KKw0KK2NsZWFuLWdl bmVyaWM6DQorDQorZGlzdGNsZWFuLWdlbmVyaWM6DQorCS10ZXN0IC16ICIkKENPTkZJR19DTEVB Tl9GSUxFUykiIHx8IHJtIC1mDQokKENPTkZJR19DTEVBTl9GSUxFUykNCisNCittYWludGFpbmVy LWNsZWFuLWdlbmVyaWM6DQorCUBlY2hvICJUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1h aW50YWluZXJzIHRvIHVzZSINCisJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVx dWlyZSBzcGVjaWFsIHRvb2xzIHRvDQpyZWJ1aWxkLiINCitjbGVhbjogY2xlYW4tYW0NCisNCitj bGVhbi1hbTogY2xlYW4tZ2VuZXJpYyBjbGVhbi1ub2luc3RMSUJSQVJJRVMgbW9zdGx5Y2xlYW4t YW0NCisNCitkaXN0Y2xlYW46IGRpc3RjbGVhbi1hbQ0KKwktcm0gLWYgJChhbV9fQ09ORklHX0RJ U1RDTEVBTl9GSUxFUykNCisJLXJtIC1mIE1ha2VmaWxlDQorZGlzdGNsZWFuLWFtOiBjbGVhbi1h bSBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcDQorCWRpc3RjbGVhbi10YWdz DQorDQorZHZpOiBkdmktYW0NCisNCitkdmktYW06DQorDQoraHRtbDogaHRtbC1hbQ0KKw0KK2lu Zm86IGluZm8tYW0NCisNCitpbmZvLWFtOg0KKw0KK2luc3RhbGwtZGF0YS1hbToNCisNCitpbnN0 YWxsLWV4ZWMtYW06DQorDQoraW5zdGFsbC1pbmZvOiBpbnN0YWxsLWluZm8tYW0NCisNCitpbnN0 YWxsLW1hbjoNCisNCitpbnN0YWxsY2hlY2stYW06DQorDQorbWFpbnRhaW5lci1jbGVhbjogbWFp bnRhaW5lci1jbGVhbi1hbQ0KKwktcm0gLWYgJChhbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUykN CisJLXJtIC1yZiAkKHRvcF9zcmNkaXIpL2F1dG9tNHRlLmNhY2hlDQorCS1ybSAtZiBNYWtlZmls ZQ0KK21haW50YWluZXItY2xlYW4tYW06IGRpc3RjbGVhbi1hbSBtYWludGFpbmVyLWNsZWFuLWdl bmVyaWMNCisNCittb3N0bHljbGVhbjogbW9zdGx5Y2xlYW4tYW0NCisNCittb3N0bHljbGVhbi1h bTogbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljDQorDQorcGRmOiBwZGYt YW0NCisNCitwZGYtYW06DQorDQorcHM6IHBzLWFtDQorDQorcHMtYW06DQorDQordW5pbnN0YWxs LWFtOg0KKw0KKy5QSE9OWTogQ1RBR1MgR1RBR1MgYWxsIGFsbC1hbSBhbS0tcmVmcmVzaCBjaGVj ayBjaGVjay1hbSBjbGVhbiBcDQorCWNsZWFuLWdlbmVyaWMgY2xlYW4tbm9pbnN0TElCUkFSSUVT IGN0YWdzIGRpc3RjbGVhbiBcDQorCWRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmlj IGRpc3RjbGVhbi10YWdzIGR2aSBkdmktYW0NClwNCisJaHRtbCBodG1sLWFtIGluZm8gaW5mby1h bSBpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIFwNCisJaW5zdGFsbC1kYXRhLWFtIGlu c3RhbGwtZXhlYyBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1pbmZvIFwNCisJaW5zdGFsbC1pbmZv LWFtIGluc3RhbGwtbWFuIGluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIFwNCisJaW5zdGFsbGNo ZWNrLWFtIGluc3RhbGxkaXJzIG1haW50YWluZXItY2xlYW4gXA0KKwltYWludGFpbmVyLWNsZWFu LWdlbmVyaWMgbW9zdGx5Y2xlYW4gbW9zdGx5Y2xlYW4tY29tcGlsZSBcDQorCW1vc3RseWNsZWFu LWdlbmVyaWMgcGRmIHBkZi1hbSBwcyBwcy1hbSB0YWdzIHVuaW5zdGFsbCBcDQorCXVuaW5zdGFs bC1hbSB1bmluc3RhbGwtaW5mby1hbQ0KKw0KKw0KK2FsbDogY3J0MC5vDQorIyBUZWxsIHZlcnNp b25zIFszLjU5LDMuNjMpIG9mIEdOVSBtYWtlIHRvIG5vdCBleHBvcnQgYWxsIHZhcmlhYmxlcy4N CisjIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBl eGNlZWRlZC4NCisuTk9FWFBPUlQ6DQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvc3lzL3h0ZW5z YS9fYXRleGl0LmMNCmIvbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9fYXRleGl0LmMNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjRkZjZhZjdkNw0KLS0tIC9kZXYvbnVsbA0K KysrIGIvbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9fYXRleGl0LmMNCkBAIC0wLDAgKzEsNTMgQEAN CisvKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiBUZW5zaWxpY2EgSW5jLiAgQUxMIFJJR0hUUyBS RVNFUlZFRC4NCisNCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0 ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCmFyZSBtZXQ6DQorDQor ICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92 ZSBjb3B5cmlnaHQNCisgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorDQorICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KY29weXJpZ2h0DQorICAgICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy IGluDQp0aGUNCisgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQgd2l0aCB0aGUNCmRpc3RyaWJ1dGlvbi4NCisNCisgICBUSElTIFNPRlRXQVJFIElTIFBS T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQoiQVMNCisg ICBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC VVQgTk9UDQpMSU1JVEVEDQorICAgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBDQorICAgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEVOU0lMSUNBDQorICAgSU5DT1JQT1JBVEVE IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQpTUEVDSUFM LA0KKyAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywNCisgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1INCisgICBQUk9GSVRTOyBPUiBCVVNJTkVT UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZDQpPRg0KKyAg IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S VA0KKElOQ0xVRElORw0KKyAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUw0KKyAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAgKi8NCisNCisvKiBfYXRleGl0 OiBUaGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIHRoZSBzdGFuZGFyZCBhdGV4aXQNCmZ1 bmN0aW9uLg0KKyAgIEl0IGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSBjcnQwIHRvIHJl Z2lzdGVyIHRoZSBfZmluaQ0KZnVuY3Rpb24NCisgICBmb3IgY29kZSBpbiB0aGUgRUxGIGZpbmFs aXphdGlvbiBzZWN0aW9uLiAgVXNpbmcgdGhlIHN0YW5kYXJkDQp2ZXJzaW9uDQorICAgcmVxdWly ZXMgdGhhdCBhbGwgcHJvZ3JhbXMgbGluayBpbiBtYWxsb2MsIGxlYWRpbmcgdG8gYSBzaWduaWZp Y2FudA0KKyAgIGluY3JlYXNlIGluIGNvZGUgc2l6ZSBmb3IgcHJvZ3JhbXMgdGhhdCB3b3VsZCBv dGhlcndpc2Ugbm90IG5lZWQNCm1hbGxvYy4gICovDQorDQorI2luY2x1ZGUgPHN0ZGRlZi5oPg0K KyNpbmNsdWRlIDxzdGRsaWIuaD4NCisjaW5jbHVkZSA8cmVlbnQuaD4NCisNCisvKiBSZWdpc3Rl ciBhIGZ1bmN0aW9uIHRvIGJlIHBlcmZvcm1lZCBhdCBleGl0LiAgKi8NCisNCitpbnQNCitfYXRl eGl0KHZvaWQgKCpmbikodm9pZCkpDQorew0KKyAgcmVnaXN0ZXIgc3RydWN0IF9hdGV4aXQgKnA7 DQorDQorI2lmbmRlZiBfUkVFTlRfU01BTEwNCisgIGlmICgocCA9IF9SRUVOVC0+X2F0ZXhpdCkg PT0gTlVMTCkNCisgICAgX1JFRU5ULT5fYXRleGl0ID0gcCA9ICZfUkVFTlQtPl9hdGV4aXQwOw0K KyNlbHNlDQorICBwID0gJl9SRUVOVC0+X2F0ZXhpdDsNCisjZW5kaWYNCisgIGlmIChwLT5faW5k ID49IF9BVEVYSVRfU0laRSkNCisgICAgcmV0dXJuIC0xOw0KKyAgcC0+X2Zuc1twLT5faW5kKytd ID0gZm47DQorICByZXR1cm4gMDsNCit9DQorDQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvc3lz L3h0ZW5zYS9hY2xvY2FsLm00DQpiL25ld2xpYi9saWJjL3N5cy94dGVuc2EvYWNsb2NhbC5tNA0K bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uODdjMGU3OGJjDQotLS0gL2Rl di9udWxsDQorKysgYi9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2FjbG9jYWwubTQNCkBAIC0wLDAg KzEsODgwIEBADQorIyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBhY2xvY2FsIDEuOS41IC0q LSBBdXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5 OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwNCisjIDIwMDUgIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLg0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNv cHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9u cywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3 OyB3aXRob3V0DQorIyBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBDQorIyBQQVJUSUNVTEFSIFBVUlBPU0UuDQorDQorIyBDb3B5cmln aHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0K KyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0 cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMg dGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgQU1fQVVUT01BS0VfVkVSU0lPTihWRVJT SU9OKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQXV0b21ha2UgWC5ZIHRy YWNlcyB0aGlzIG1hY3JvIHRvIGVuc3VyZSBhY2xvY2FsLm00IGhhcyBiZWVuDQorIyBnZW5lcmF0 ZWQgZnJvbSB0aGUgbTQgZmlsZXMgYWNjb21wYW55aW5nIEF1dG9tYWtlIFguWS4NCitBQ19ERUZV TihbQU1fQVVUT01BS0VfVkVSU0lPTl0sIFthbV9fYXBpX3ZlcnNpb249IjEuOSJdKQ0KKw0KKyMg QU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTg0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KKyMgQ2FsbCBBTV9BVVRPTUFLRV9WRVJTSU9OIHNvIGl0IGNhbiBiZSB0cmFj ZWQuDQorIyBUaGlzIGZ1bmN0aW9uIGlzIEFDX1JFUVVJUkVkIGJ5IEFDX0lOSVRfQVVUT01BS0Uu DQorQUNfREVGVU4oW0FNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT05dLA0KKwkgW0FNX0FV VE9NQUtFX1ZFUlNJT04oWzEuOS41XSldKQ0KKw0KKyMgQU1fQVVYX0RJUl9FWFBBTkQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLQ0KQXV0b2NvbmYgLSotDQorDQor IyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFu ZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFz IGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgRm9yIHByb2plY3RzIHVz aW5nIEFDX0NPTkZJR19BVVhfRElSKFtmb29dKSwgQXV0b2NvbmYgc2V0cw0KKyMgJGFjX2F1eF9k aXIgdG8gYCRzcmNkaXIvZm9vJy4gIEluIG90aGVyIHByb2plY3RzLCBpdCBpcyBzZXQgdG8NCisj IGAkc3JjZGlyJywgYCRzcmNkaXIvLi4nLCBvciBgJHNyY2Rpci8uLi8uLicuDQorIw0KKyMgT2Yg Y291cnNlLCBBdXRvbWFrZSBtdXN0IGhvbm9yIHRoaXMgdmFyaWFibGUgd2hlbmV2ZXIgaXQgY2Fs bHMgYQ0KKyMgdG9vbCBmcm9tIHRoZSBhdXhpbGlhcnkgZGlyZWN0b3J5LiAgVGhlIHByb2JsZW0g aXMgdGhhdCAkc3JjZGlyIChhbmQNCisjIHRoZXJlZm9yZSAkYWNfYXV4X2RpciBhcyB3ZWxsKSBj YW4gYmUgZWl0aGVyIGFic29sdXRlIG9yIHJlbGF0aXZlLA0KKyMgZGVwZW5kaW5nIG9uIGhvdyBj b25maWd1cmUgaXMgcnVuLiAgVGhpcyBpcyBwcmV0dHkgYW5ub3lpbmcsIHNpbmNlDQorIyBpdCBt YWtlcyAkYWNfYXV4X2RpciBxdWl0ZSB1bnVzYWJsZSBpbiBzdWJkaXJlY3RvcmllczogaW4gdGhl IHRvcA0KKyMgc291cmNlIGRpcmVjdG9yeSwgYW55IGZvcm0gd2lsbCB3b3JrIGZpbmUsIGJ1dCBp biBzdWJkaXJlY3RvcmllcyBhDQorIyByZWxhdGl2ZSBwYXRoIG5lZWRzIHRvIGJlIGFkanVzdGVk IGZpcnN0Lg0KKyMNCisjICRhY19hdXhfZGlyL21pc3NpbmcNCisjICAgIGZhaWxzIHdoZW4gY2Fs bGVkIGZyb20gYSBzdWJkaXJlY3RvcnkgaWYgJGFjX2F1eF9kaXIgaXMgcmVsYXRpdmUNCisjICR0 b3Bfc3JjZGlyLyRhY19hdXhfZGlyL21pc3NpbmcNCisjICAgIGZhaWxzIGlmICRhY19hdXhfZGly IGlzIGFic29sdXRlLA0KKyMgICAgZmFpbHMgd2hlbiBjYWxsZWQgZnJvbSBhIHN1YmRpcmVjdG9y eSBpbiBhIFZQQVRIIGJ1aWxkIHdpdGgNCisjICAgICAgICAgIGEgcmVsYXRpdmUgJGFjX2F1eF9k aXINCisjDQorIyBUaGUgcmVhc29uIG9mIHRoZSBsYXR0ZXIgZmFpbHVyZSBpcyB0aGF0ICR0b3Bf c3JjZGlyIGFuZCAkYWNfYXV4X2Rpcg0KKyMgYXJlIGJvdGggcHJlZml4ZWQgYnkgJHNyY2Rpci4g IEluIGFuIGluLXNvdXJjZSBidWlsZCB0aGlzIGlzIHVzdWFsbHkNCisjIGhhcm1sZXNzIGJlY2F1 c2UgJHNyY2RpciBpcyBgLicsIGJ1dCB0aGluZ3Mgd2lsbCBicm9rZSB3aGVuIHlvdQ0KKyMgc3Rh cnQgYSBWUEFUSCBidWlsZCBvciB1c2UgYW4gYWJzb2x1dGUgJHNyY2Rpci4NCisjDQorIyBTbyB3 ZSBjb3VsZCB1c2Ugc29tZXRoaW5nIHNpbWlsYXIgdG8NCiR0b3Bfc3JjZGlyLyRhY19hdXhfZGly L21pc3NpbmcsDQorIyBpZmYgd2Ugc3RyaXAgdGhlIGxlYWRpbmcgJHNyY2RpciBmcm9tICRhY19h dXhfZGlyLiAgVGhhdCB3b3VsZCBiZToNCisjICAgYW1fYXV4X2Rpcj0nXCQodG9wX3NyY2Rpcikv J2BleHByICIkYWNfYXV4X2RpciIgOg0KIiRzcmNkaXIvLypcKC4qXCkiYA0KKyMgYW5kIHRoZW4g d2Ugd291bGQgZGVmaW5lICRNSVNTSU5HIGFzDQorIyAgIE1JU1NJTkc9Ilwke1NIRUxMfSAkYW1f YXV4X2Rpci9taXNzaW5nIg0KKyMgVGhpcyB3aWxsIHdvcmsgYXMgbG9uZyBhcyBNSVNTSU5HIGlz IG5vdCBjYWxsZWQgZnJvbSBjb25maWd1cmUsDQpiZWNhdXNlDQorIyB1bmZvcnR1bmF0ZWx5ICQo dG9wX3NyY2RpcikgaGFzIG5vIG1lYW5pbmcgaW4gY29uZmlndXJlLg0KKyMgSG93ZXZlciB0aGVy ZSBhcmUgb3RoZXIgdmFyaWFibGVzLCBsaWtlIENDLCB3aGljaCBhcmUgb2Z0ZW4gdXNlZCBpbg0K KyMgY29uZmlndXJlLCBhbmQgY291bGQgdGhlcmVmb3JlIG5vdCB1c2UgdGhpcyAiZml4ZWQiICRh Y19hdXhfZGlyLg0KKyMNCisjIEFub3RoZXIgc29sdXRpb24sIHVzZWQgaGVyZSwgaXMgdG8gYWx3 YXlzIGV4cGFuZCAkYWNfYXV4X2RpciB0byBhbg0KKyMgYWJzb2x1dGUgUEFUSC4gIFRoZSBkcmF3 YmFjayBpcyB0aGF0IHVzaW5nIGFic29sdXRlIHBhdGhzIHByZXZlbnQgYQ0KKyMgY29uZmlndXJl ZCB0cmVlIHRvIGJlIG1vdmVkIHdpdGhvdXQgcmVjb25maWd1cmF0aW9uLg0KKw0KK0FDX0RFRlVO KFtBTV9BVVhfRElSX0VYUEFORF0sDQorW2RubCBSZWx5IG9uIGF1dG9jb25mIHRvIHNldCB1cCBD RFBBVEggcHJvcGVybHkuDQorQUNfUFJFUkVRKFsyLjUwXSlkbmwNCisjIGV4cGFuZCAkYWNfYXV4 X2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoDQorYW1fYXV4X2Rpcj1gY2QgJGFjX2F1eF9kaXIgJiYg cHdkYA0KK10pDQorDQorIyBBTV9DT05ESVRJT05BTCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLSotDQpBdXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykg MTk5NywgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNQ0KKyMgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNv cHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9u cywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgNw0K Kw0KKyMgQU1fQ09ORElUSU9OQUwoTkFNRSwgU0hFTEwtQ09ORElUSU9OKQ0KKyMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgRGVmaW5lIGEgY29uZGl0aW9uYWwuDQor QUNfREVGVU4oW0FNX0NPTkRJVElPTkFMXSwNCitbQUNfUFJFUkVRKDIuNTIpZG5sDQorIGlmZWxz ZShbJDFdLCBbVFJVRV0sICBbQUNfRkFUQUwoWyQwOiBpbnZhbGlkIGNvbmRpdGlvbjogJDFdKV0s DQorCVskMV0sIFtGQUxTRV0sIFtBQ19GQVRBTChbJDA6IGludmFsaWQgY29uZGl0aW9uOiAkMV0p XSlkbmwNCitBQ19TVUJTVChbJDFfVFJVRV0pDQorQUNfU1VCU1QoWyQxX0ZBTFNFXSkNCitpZiAk MjsgdGhlbg0KKyAgJDFfVFJVRT0NCisgICQxX0ZBTFNFPScjJw0KK2Vsc2UNCisgICQxX1RSVUU9 JyMnDQorICAkMV9GQUxTRT0NCitmaQ0KK0FDX0NPTkZJR19DT01NQU5EU19QUkUoDQorW2lmIHRl c3QgLXogIiR7JDFfVFJVRX0iICYmIHRlc3QgLXogIiR7JDFfRkFMU0V9IjsgdGhlbg0KKyAgQUNf TVNHX0VSUk9SKFtbY29uZGl0aW9uYWwgIiQxIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitVc3VhbGx5 IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS5dXSkN CitmaV0pXSkNCisNCisNCisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwg MjAwMywgMjAwNCwgMjAwNQ0KKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0K KyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1 dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlz IG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgOA0KKw0KKyMgVGhlcmUgYXJlIGEg ZmV3IGRpcnR5IGhhY2tzIGJlbG93IHRvIGF2b2lkIGxldHRpbmcgYEFDX1BST0dfQ0MnIGJlDQor IyB3cml0dGVuIGluIGNsZWFyLCBpbiB3aGljaCBjYXNlIGF1dG9tYWtlLCB3aGVuIHJlYWRpbmcg YWNsb2NhbC5tNCwNCisjIHdpbGwgdGhpbmsgaXQgc2VlcyBhICp1c2UqLCBhbmQgdGhlcmVmb3Jl IHdpbGwgdHJpZ2dlciBhbGwgaXQncw0KKyMgQyBzdXBwb3J0IG1hY2hpbmVyeS4gIEFsc28gbm90 ZSB0aGF0IGl0IG1lYW5zIHRoYXQgYXV0b3NjYW4sIHNlZWluZw0KKyMgQ0MgZXRjLiBpbiB0aGUg TWFrZWZpbGUsIHdpbGwgYXNrIGZvciBhbiBBQ19QUk9HX0NDIHVzZS4uLg0KKw0KKw0KKyMgX0FN X0RFUEVOREVOQ0lFUyhOQU1FKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgU2VlIGhv dyB0aGUgY29tcGlsZXIgaW1wbGVtZW50cyBkZXBlbmRlbmN5IGNoZWNraW5nLg0KKyMgTkFNRSBp cyAiQ0MiLCAiQ1hYIiwgIkdDSiIsIG9yICJPQkpDIi4NCisjIFdlIHRyeSBhIGZldyB0ZWNobmlx dWVzIGFuZCB1c2UgdGhhdCB0byBzZXQgYSBzaW5nbGUgY2FjaGUgdmFyaWFibGUuDQorIw0KKyMg V2UgZG9uJ3QgQUNfUkVRVUlSRSB0aGUgY29ycmVzcG9uZGluZyBBQ19QUk9HX0NDIHNpbmNlIHRo ZSBsYXR0ZXINCndhcw0KKyMgbW9kaWZpZWQgdG8gaW52b2tlIF9BTV9ERVBFTkRFTkNJRVMoQ0Mp OyB3ZSB3b3VsZCBoYXZlIGEgY2lyY3VsYXINCisjIGRlcGVuZGVuY3ksIGFuZCBnaXZlbiB0aGF0 IHRoZSB1c2VyIGlzIG5vdCBleHBlY3RlZCB0byBydW4gdGhpcw0KbWFjcm8sDQorIyBqdXN0IHJl bHkgb24gQUNfUFJPR19DQy4NCitBQ19ERUZVTihbX0FNX0RFUEVOREVOQ0lFU10sDQorW0FDX1JF UVVJUkUoW0FNX1NFVF9ERVBESVJdKWRubA0KK0FDX1JFUVVJUkUoW0FNX09VVFBVVF9ERVBFTkRF TkNZX0NPTU1BTkRTXSlkbmwNCitBQ19SRVFVSVJFKFtBTV9NQUtFX0lOQ0xVREVdKWRubA0KK0FD X1JFUVVJUkUoW0FNX0RFUF9UUkFDS10pZG5sDQorDQoraWZlbHNlKFskMV0sIENDLCAgIFtkZXBj Yz0iJENDIiAgIGFtX2NvbXBpbGVyX2xpc3Q9XSwNCisgICAgICAgWyQxXSwgQ1hYLCAgW2RlcGNj PSIkQ1hYIiAgYW1fY29tcGlsZXJfbGlzdD1dLA0KKyAgICAgICBbJDFdLCBPQkpDLCBbZGVwY2M9 IiRPQkpDIiBhbV9jb21waWxlcl9saXN0PSdnY2MzIGdjYyddLA0KKyAgICAgICBbJDFdLCBHQ0os ICBbZGVwY2M9IiRHQ0oiICBhbV9jb21waWxlcl9saXN0PSdnY2MzIGdjYyddLA0KKyAgICAgICAg ICAgICAgICAgICBbZGVwY2M9IiQkMSIgICBhbV9jb21waWxlcl9saXN0PV0pDQorDQorQUNfQ0FD SEVfQ0hFQ0soW2RlcGVuZGVuY3kgc3R5bGUgb2YgJGRlcGNjXSwNCisgICAgICAgICAgICAgICBb YW1fY3ZfJDFfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGVdLA0KK1tpZiB0ZXN0IC16ICIkQU1E RVBfVFJVRSIgJiYgdGVzdCAtZiAiJGFtX2RlcGNvbXAiOyB0aGVuDQorICAjIFdlIG1ha2UgYSBz dWJkaXIgYW5kIGRvIHRoZSB0ZXN0cyB0aGVyZS4gIE90aGVyd2lzZSB3ZSBjYW4gZW5kIHVwDQor ICAjIG1ha2luZyBib2d1cyBmaWxlcyB0aGF0IHdlIGRvbid0IGtub3cgYWJvdXQgYW5kIG5ldmVy IHJlbW92ZS4gIEZvcg0KKyAgIyBpbnN0YW5jZSBpdCB3YXMgcmVwb3J0ZWQgdGhhdCBvbiBIUC1V WCB0aGUgZ2NjIHRlc3Qgd2lsbCBlbmQgdXANCisgICMgbWFraW5nIGEgZHVtbXkgZmlsZSBuYW1l ZCBgRCcgLS0gYmVjYXVzZSBgLU1EJyBtZWFucyBgcHV0IHRoZQ0Kb3V0cHV0DQorICAjIGluIEQn Lg0KKyAgbWtkaXIgY29uZnRlc3QuZGlyDQorICAjIENvcHkgZGVwY29tcCB0byBzdWJkaXIgYmVj YXVzZSBvdGhlcndpc2Ugd2Ugd29uJ3QgZmluZCBpdCBpZiB3ZSdyZQ0KKyAgIyB1c2luZyBhIHJl bGF0aXZlIGRpcmVjdG9yeS4NCisgIGNwICIkYW1fZGVwY29tcCIgY29uZnRlc3QuZGlyDQorICBj ZCBjb25mdGVzdC5kaXINCisgICMgV2Ugd2lsbCBidWlsZCBvYmplY3RzIGFuZCBkZXBlbmRlbmNp ZXMgaW4gYSBzdWJkaXJlY3RvcnkgYmVjYXVzZQ0KKyAgIyBpdCBoZWxwcyB0byBkZXRlY3QgaW5h cHBsaWNhYmxlIGRlcGVuZGVuY3kgbW9kZXMuICBGb3IgaW5zdGFuY2UNCisgICMgYm90aCBUcnU2 NCdzIGNjIGFuZCBJQ0Mgc3VwcG9ydCAtTUQgdG8gb3V0cHV0IGRlcGVuZGVuY2llcyBhcyBhDQor ICAjIHNpZGUgZWZmZWN0IG9mIGNvbXBpbGF0aW9uLCBidXQgSUNDIHdpbGwgcHV0IHRoZSBkZXBl bmRlbmNpZXMgaW4NCisgICMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdoaWxlIFRydTY0IHdpbGwg cHV0IHRoZW0gaW4gdGhlIG9iamVjdA0KKyAgIyBkaXJlY3RvcnkuDQorICBta2RpciBzdWINCisN CisgIGFtX2N2XyQxX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlPW5vbmUNCisgIGlmIHRlc3Qg IiRhbV9jb21waWxlcl9saXN0IiA9ICIiOyB0aGVuDQorICAgICBhbV9jb21waWxlcl9saXN0PWBz ZWQgLW4gWydzL14jKlwoW2EtekEtWjAtOV0qXCkpJC9cMS9wJ10gPA0KLi9kZXBjb21wYA0KKyAg ZmkNCisgIGZvciBkZXBtb2RlIGluICRhbV9jb21waWxlcl9saXN0OyBkbw0KKyAgICAjIFNldHVw IGEgc291cmNlIHdpdGggbWFueSBkZXBlbmRlbmNpZXMsIGJlY2F1c2Ugc29tZSBjb21waWxlcnMN CisgICAgIyBsaWtlIHRvIHdyYXAgbGFyZ2UgZGVwZW5kZW5jeSBsaXN0cyBvbiBjb2x1bW4gODAg KHdpdGggXCksIGFuZA0KKyAgICAjIHdlIHNob3VsZCBub3QgY2hvb3NlIGEgZGVwY29tcCBtb2Rl IHdoaWNoIGlzIGNvbmZ1c2VkIGJ5IHRoaXMuDQorICAgICMNCisgICAgIyBXZSBuZWVkIHRvIHJl Y3JlYXRlIHRoZXNlIGZpbGVzIGZvciBlYWNoIHRlc3QsIGFzIHRoZSBjb21waWxlcg0KbWF5DQor ICAgICMgb3ZlcndyaXRlIHNvbWUgb2YgdGhlbSB3aGVuIHRlc3Rpbmcgd2l0aCBvYnNjdXJlIGNv bW1hbmQgbGluZXMuDQorICAgICMgVGhpcyBoYXBwZW5zIGF0IGxlYXN0IHdpdGggdGhlIEFJWCBD IGNvbXBpbGVyLg0KKyAgICA6ID4gc3ViL2NvbmZ0ZXN0LmMNCisgICAgZm9yIGkgaW4gMSAyIDMg NCA1IDY7IGRvDQorICAgICAgZWNobyAnI2luY2x1ZGUgImNvbmZ0c3QnJGknLmgiJyA+PiBzdWIv Y29uZnRlc3QuYw0KKyAgICAgICMgVXNpbmcgYDogPiBzdWIvY29uZnRzdCRpLmgnIGNyZWF0ZXMg b25seSBzdWIvY29uZnRzdDEuaCB3aXRoDQorICAgICAgIyBTb2xhcmlzIDgncyB7L3Vzcix9L2Jp bi9zaC4NCisgICAgICB0b3VjaCBzdWIvY29uZnRzdCRpLmgNCisgICAgZG9uZQ0KKyAgICBlY2hv ICIke2FtX19pbmNsdWRlfSAke2FtX19xdW90ZX1zdWIvY29uZnRlc3QuUG8ke2FtX19xdW90ZX0i ID4NCmNvbmZtZg0KKw0KKyAgICBjYXNlICRkZXBtb2RlIGluDQorICAgIG5vc2lkZWVmZmVjdCkN CisgICAgICAjIGFmdGVyIHRoaXMgdGFnLCBtZWNoYW5pc21zIGFyZSBub3QgYnkgc2lkZS1lZmZl Y3QsIHNvIHRoZXknbGwNCisgICAgICAjIG9ubHkgYmUgdXNlZCB3aGVuIGV4cGxpY2l0bHkgcmVx dWVzdGVkDQorICAgICAgaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgPSB4 eWVzOyB0aGVuDQorCWNvbnRpbnVlDQorICAgICAgZWxzZQ0KKwlicmVhaw0KKyAgICAgIGZpDQor ICAgICAgOzsNCisgICAgbm9uZSkgYnJlYWsgOzsNCisgICAgZXNhYw0KKyAgICAjIFdlIGNoZWNr IHdpdGggYC1jJyBhbmQgYC1vJyBmb3IgdGhlIHNha2Ugb2YgdGhlICJkYXNobXN0ZG91dCINCisg ICAgIyBtb2RlLiAgSXQgdHVybnMgb3V0IHRoYXQgdGhlIFN1blBybyBDKysgY29tcGlsZXIgZG9l cyBub3QNCnByb3Blcmx5DQorICAgICMgaGFuZGxlIGAtTSAtbycsIGFuZCB3ZSBuZWVkIHRvIGRl dGVjdCB0aGlzLg0KKyAgICBpZiBkZXBtb2RlPSRkZXBtb2RlIFwNCisgICAgICAgc291cmNlPXN1 Yi9jb25mdGVzdC5jIG9iamVjdD1zdWIvY29uZnRlc3QuJHtPQkpFWFQtb30gXA0KKyAgICAgICBk ZXBmaWxlPXN1Yi9jb25mdGVzdC5QbyB0bXBkZXBmaWxlPXN1Yi9jb25mdGVzdC5UUG8gXA0KKyAg ICAgICAkU0hFTEwgLi9kZXBjb21wICRkZXBjYyAtYyAtbyBzdWIvY29uZnRlc3QuJHtPQkpFWFQt b30NCnN1Yi9jb25mdGVzdC5jIFwNCisgICAgICAgICA+L2Rldi9udWxsIDI+Y29uZnRlc3QuZXJy ICYmDQorICAgICAgIGdyZXAgc3ViL2NvbmZ0c3Q2Lmggc3ViL2NvbmZ0ZXN0LlBvID4gL2Rldi9u dWxsIDI+JjEgJiYNCisgICAgICAgZ3JlcCBzdWIvY29uZnRlc3QuJHtPQkpFWFQtb30gc3ViL2Nv bmZ0ZXN0LlBvID4gL2Rldi9udWxsIDI+JjENCiYmDQorICAgICAgICR7TUFLRS1tYWtlfSAtcyAt ZiBjb25mbWYgPiAvZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgICAgICMgaWNjIGRvZXNuJ3QgY2hv a2Ugb24gdW5rbm93biBvcHRpb25zLCBpdCB3aWxsIGp1c3QgaXNzdWUNCndhcm5pbmdzDQorICAg ICAgIyBvciByZW1hcmtzIChldmVuIHdpdGggLVdlcnJvcikuICBTbyB3ZSBncmVwIHN0ZGVyciBm b3IgYW55DQptZXNzYWdlDQorICAgICAgIyB0aGF0IHNheXMgYW4gb3B0aW9uIHdhcyBpZ25vcmVk IG9yIG5vdCBzdXBwb3J0ZWQuDQorICAgICAgIyBXaGVuIGdpdmVuIC1NUCwgaWNjIDcuMCBhbmQg Ny4xIGNvbXBsYWluIHRodXNseToNCisgICAgICAjICAgaWNjOiBDb21tYW5kIGxpbmUgd2Fybmlu ZzogaWdub3Jpbmcgb3B0aW9uICctTSc7IG5vIGFyZ3VtZW50DQpyZXF1aXJlZA0KKyAgICAgICMg VGhlIGRpYWdub3NpcyBjaGFuZ2VkIGluIGljYyA4LjA6DQorICAgICAgIyAgIGljYzogQ29tbWFu ZCBsaW5lIHJlbWFyazogb3B0aW9uICctTVAnIG5vdCBzdXBwb3J0ZWQNCisgICAgICBpZiAoZ3Jl cCAnaWdub3Jpbmcgb3B0aW9uJyBjb25mdGVzdC5lcnIgfHwNCisgICAgICAgICAgZ3JlcCAnbm90 IHN1cHBvcnRlZCcgY29uZnRlc3QuZXJyKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsNCmVsc2UN CisgICAgICAgIGFtX2N2XyQxX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlPSRkZXBtb2RlDQor ICAgICAgICBicmVhaw0KKyAgICAgIGZpDQorICAgIGZpDQorICBkb25lDQorDQorICBjZCAuLg0K KyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcg0KK2Vsc2UNCisgIGFtX2N2XyQxX2RlcGVuZGVuY2llc19j b21waWxlcl90eXBlPW5vbmUNCitmaQ0KK10pDQorQUNfU1VCU1QoWyQxREVQTU9ERV0sIFtkZXBt b2RlPSRhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZV0pDQorQU1fQ09ORElUSU9O QUwoW2FtX19mYXN0ZGVwJDFdLCBbDQorICB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNr aW5nIiAhPSB4bm8gXA0KKyAgJiYgdGVzdCAiJGFtX2N2XyQxX2RlcGVuZGVuY2llc19jb21waWxl cl90eXBlIiA9IGdjYzNdKQ0KK10pDQorDQorDQorIyBBTV9TRVRfREVQRElSDQorIyAtLS0tLS0t LS0tLS0tDQorIyBDaG9vc2UgYSBkaXJlY3RvcnkgbmFtZSBmb3IgZGVwZW5kZW5jeSBmaWxlcy4N CisjIFRoaXMgbWFjcm8gaXMgQUNfUkVRVUlSRWQgaW4gX0FNX0RFUEVOREVOQ0lFUw0KK0FDX0RF RlVOKFtBTV9TRVRfREVQRElSXSwNCitbQUNfUkVRVUlSRShbQU1fU0VUX0xFQURJTkdfRE9UXSlk bmwNCitBQ19TVUJTVChbREVQRElSXSwgWyIke2FtX19sZWFkaW5nX2RvdH1kZXBzIl0pZG5sDQor XSkNCisNCisNCisjIEFNX0RFUF9UUkFDSw0KKyMgLS0tLS0tLS0tLS0tDQorQUNfREVGVU4oW0FN X0RFUF9UUkFDS10sDQorW0FDX0FSR19FTkFCTEUoZGVwZW5kZW5jeS10cmFja2luZywNCitbICAt LWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyAgc3BlZWRzIHVwIG9uZS10aW1lIGJ1aWxkDQor ICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICAgZG8gbm90IHJlamVjdCBzbG93IGRlcGVu ZGVuY3kNCmV4dHJhY3RvcnNdKQ0KK2lmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tp bmciICE9IHhubzsgdGhlbg0KKyAgYW1fZGVwY29tcD0iJGFjX2F1eF9kaXIvZGVwY29tcCINCisg IEFNREVQQkFDS1NMQVNIPSdcJw0KK2ZpDQorQU1fQ09ORElUSU9OQUwoW0FNREVQXSwgW3Rlc3Qg IngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhub10pDQorQUNfU1VCU1QoW0FNREVQ QkFDS1NMQVNIXSkNCitdKQ0KKw0KKyMgR2VuZXJhdGUgY29kZSB0byBzZXQgdXAgZGVwZW5kZW5j eSB0cmFja2luZy4gICAgICAgICAgICAgIC0qLQ0KQXV0b2NvbmYgLSotDQorDQorIyBDb3B5cmln aHQgKEMpIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUNCisjIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3 YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVy bWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0 IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0K KyNzZXJpYWwgMw0KKw0KKyMgX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTDQorIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitBQ19ERUZVTihbX0FNX09VVFBVVF9ERVBFTkRF TkNZX0NPTU1BTkRTXSwNCitbZm9yIG1mIGluICRDT05GSUdfRklMRVM7IGRvDQorICAjIFN0cmlw IE1GIHNvIHdlIGVuZCB1cCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBmaWxlLg0KKyAgbWY9YGVjaG8g IiRtZiIgfCBzZWQgLWUgJ3MvOi4qJC8vJ2ANCisgICMgQ2hlY2sgd2hldGhlciB0aGlzIGlzIGFu IEF1dG9tYWtlIGdlbmVyYXRlZCBNYWtlZmlsZSBvciBub3QuDQorICAjIFdlIHVzZWQgdG8gbWF0 Y2ggb25seSB0aGUgZmlsZXMgbmFtZWQgYE1ha2VmaWxlLmluJywgYnV0DQorICAjIHNvbWUgcGVv cGxlIHJlbmFtZSB0aGVtOyBzbyBpbnN0ZWFkIHdlIGxvb2sgYXQgdGhlIGZpbGUgY29udGVudC4N CisgICMgR3JlcCdpbmcgdGhlIGZpcnN0IGxpbmUgaXMgbm90IGVub3VnaDogc29tZSBwZW9wbGUg cG9zdC1wcm9jZXNzDQorICAjIGVhY2ggTWFrZWZpbGUuaW4gYW5kIGFkZCBhIG5ldyBsaW5lIG9u IHRvcCBvZiBlYWNoIGZpbGUgdG8gc2F5IHNvLg0KKyAgIyBTbyBsZXQncyBncmVwIHdob2xlIGZp bGUuDQorICBpZiBncmVwICdeIy4qZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlJyAkbWYgPiAvZGV2L251 bGwgMj4mMTsgdGhlbg0KKyAgICBkaXJwYXJ0PWBBU19ESVJOQU1FKCIkbWYiKWANCisgIGVsc2UN CisgICAgY29udGludWUNCisgIGZpDQorICAjIEV4dHJhY3QgdGhlIGRlZmluaXRpb24gb2YgREVQ RElSLCBhbV9faW5jbHVkZSwgYW5kIGFtX19xdW90ZQ0KKyAgIyBmcm9tIHRoZSBNYWtlZmlsZSB3 aXRob3V0IHJ1bm5pbmcgYG1ha2UnLg0KKyAgREVQRElSPWBzZWQgLW4gJ3MvXkRFUERJUiA9IC8v cCcgPCAiJG1mImANCisgIHRlc3QgLXogIiRERVBESVIiICYmIGNvbnRpbnVlDQorICBhbV9faW5j bHVkZT1gc2VkIC1uICdzL15hbV9faW5jbHVkZSA9IC8vcCcgPCAiJG1mImANCisgIHRlc3QgLXog ImFtX19pbmNsdWRlIiAmJiBjb250aW51ZQ0KKyAgYW1fX3F1b3RlPWBzZWQgLW4gJ3MvXmFtX19x dW90ZSA9IC8vcCcgPCAiJG1mImANCisgICMgV2hlbiB1c2luZyBhbnNpMmtuciwgVSBtYXkgYmUg ZW1wdHkgb3IgYW4gdW5kZXJzY29yZTsgZXhwYW5kIGl0DQorICBVPWBzZWQgLW4gJ3MvXlUgPSAv L3AnIDwgIiRtZiJgDQorICAjIEZpbmQgYWxsIGRlcGVuZGVuY3kgb3V0cHV0IGZpbGVzLCB0aGV5 IGFyZSBpbmNsdWRlZCBmaWxlcyB3aXRoDQorICAjICQoREVQRElSKSBpbiB0aGVpciBuYW1lcy4g IFdlIGludm9rZSBzZWQgdHdpY2UgYmVjYXVzZSBpdCBpcyB0aGUNCisgICMgc2ltcGxlc3QgYXBw cm9hY2ggdG8gY2hhbmdpbmcgJChERVBESVIpIHRvIGl0cyBhY3R1YWwgdmFsdWUgaW4gdGhlDQor ICAjIGV4cGFuc2lvbi4NCisgIGZvciBmaWxlIGluIGBzZWQgLW4gIg0KKyAgICBzL14kYW1fX2lu Y2x1ZGUgJGFtX19xdW90ZVwoLiooREVQRElSKS4qXCkkYW1fX3F1b3RlIickL1wxL3AnDQo8IiRt ZiIgfCBcDQorICAgICAgIHNlZCAtZSAncy9cJChERVBESVIpLyciJERFUERJUiInL2cnIC1lICdz L1wkVS8nIiRVIicvZydgOyBkbw0KKyAgICAjIE1ha2Ugc3VyZSB0aGUgZGlyZWN0b3J5IGV4aXN0 cy4NCisgICAgdGVzdCAtZiAiJGRpcnBhcnQvJGZpbGUiICYmIGNvbnRpbnVlDQorICAgIGZkaXI9 YEFTX0RJUk5BTUUoWyIkZmlsZSJdKWANCisgICAgQVNfTUtESVJfUChbJGRpcnBhcnQvJGZkaXJd KQ0KKyAgICAjIGVjaG8gImNyZWF0aW5nICRkaXJwYXJ0LyRmaWxlIg0KKyAgICBlY2hvICcjIGR1 bW15JyA+ICIkZGlycGFydC8kZmlsZSINCisgIGRvbmUNCitkb25lDQorXSkjIF9BTV9PVVRQVVRf REVQRU5ERU5DWV9DT01NQU5EUw0KKw0KKw0KKyMgQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFO RFMNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBUaGlzIG1hY3JvIHNob3Vs ZCBvbmx5IGJlIGludm9rZWQgb25jZSAtLSB1c2UgdmlhIEFDX1JFUVVJUkUuDQorIw0KKyMgVGhp cyBjb2RlIGlzIG9ubHkgcmVxdWlyZWQgd2hlbiBhdXRvbWF0aWMgZGVwZW5kZW5jeSB0cmFja2lu Zw0KKyMgaXMgZW5hYmxlZC4gIEZJWE1FLiAgVGhpcyBjcmVhdGVzIGVhY2ggYC5QJyBmaWxlIHRo YXQgd2Ugd2lsbA0KKyMgbmVlZCBpbiBvcmRlciB0byBib290c3RyYXAgdGhlIGRlcGVuZGVuY3kg aGFuZGxpbmcgY29kZS4NCitBQ19ERUZVTihbQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFORFNd LA0KK1tBQ19DT05GSUdfQ09NTUFORFMoW2RlcGZpbGVzXSwNCisgICAgIFt0ZXN0IHgiJEFNREVQ X1RSVUUiICE9IHgiIiB8fCBfQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFORFNdLA0KKyAgICAg W0FNREVQX1RSVUU9IiRBTURFUF9UUlVFIiBhY19hdXhfZGlyPSIkYWNfYXV4X2RpciJdKQ0KK10p DQorDQorIyBEbyBhbGwgdGhlIHdvcmsgZm9yIEF1dG9tYWtlLiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLSotDQpBdXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5 NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwNCjIwMDUNCisjIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNv ZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQg cGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRo b3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0K Kw0KKyMgc2VyaWFsIDEyDQorDQorIyBUaGlzIG1hY3JvIGFjdHVhbGx5IGRvZXMgdG9vIG11Y2gu ICBTb21lIGNoZWNrcyBhcmUgb25seSBuZWVkZWQgaWYNCisjIHlvdXIgcGFja2FnZSBkb2VzIGNl cnRhaW4gdGhpbmdzLiAgQnV0IHRoaXMgaXNuJ3QgcmVhbGx5IGEgYmlnIGRlYWwuDQorDQorIyBB TV9JTklUX0FVVE9NQUtFKFBBQ0tBR0UsIFZFUlNJT04sIFtOTy1ERUZJTkVdKQ0KKyMgQU1fSU5J VF9BVVRPTUFLRShbT1BUSU9OU10pDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KKyMgVGhlIGNhbGwgd2l0aCBQQUNLQUdFIGFuZCBWRVJTSU9OIGFy Z3VtZW50cyBpcyB0aGUgb2xkIHN0eWxlDQorIyBjYWxsIChwcmUgYXV0b2NvbmYtMi41MCksIHdo aWNoIGlzIGJlaW5nIHBoYXNlZCBvdXQuICBQQUNLQUdFDQorIyBhbmQgVkVSU0lPTiBzaG91bGQg bm93IGJlIHBhc3NlZCB0byBBQ19JTklUIGFuZCByZW1vdmVkIGZyb20NCisjIHRoZSBjYWxsIHRv IEFNX0lOSVRfQVVUT01BS0UuDQorIyBXZSBzdXBwb3J0IGJvdGggY2FsbCBzdHlsZXMgZm9yIHRo ZSB0cmFuc2l0aW9uLiAgQWZ0ZXINCisjIHRoZSBuZXh0IEF1dG9tYWtlIHJlbGVhc2UsIEF1dG9j b25mIGNhbiBtYWtlIHRoZSBBQ19JTklUDQorIyBhcmd1bWVudHMgbWFuZGF0b3J5LCBhbmQgdGhl biB3ZSBjYW4gZGVwZW5kIG9uIGEgbmV3IEF1dG9jb25mDQorIyByZWxlYXNlIGFuZCBkcm9wIHRo ZSBvbGQgY2FsbCBzdXBwb3J0Lg0KK0FDX0RFRlVOKFtBTV9JTklUX0FVVE9NQUtFXSwNCitbQUNf UFJFUkVRKFsyLjU4XSlkbmwNCitkbmwgQXV0b2NvbmYgd2FudHMgdG8gZGlzYWxsb3cgQU1fIG5h bWVzLiAgV2UgZXhwbGljaXRseSBhbGxvdw0KK2RubCB0aGUgb25lcyB3ZSBjYXJlIGFib3V0Lg0K K200X3BhdHRlcm5fYWxsb3coW15BTV9bQS1aXStGTEFHUyRdKWRubA0KK0FDX1JFUVVJUkUoW0FN X1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT05dKWRubA0KK0FDX1JFUVVJUkUoW0FDX1BST0df SU5TVEFMTF0pZG5sDQorIyB0ZXN0IHRvIHNlZSBpZiBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVk DQoraWYgdGVzdCAiYGNkICRzcmNkaXIgJiYgcHdkYCIgIT0gImBwd2RgIiAmJg0KKyAgIHRlc3Qg LWYgJHNyY2Rpci9jb25maWcuc3RhdHVzOyB0aGVuDQorICBBQ19NU0dfRVJST1IoW3NvdXJjZSBk aXJlY3RvcnkgYWxyZWFkeSBjb25maWd1cmVkOyBydW4gIm1ha2UNCmRpc3RjbGVhbiIgdGhlcmUg Zmlyc3RdKQ0KK2ZpDQorDQorIyB0ZXN0IHdoZXRoZXIgd2UgaGF2ZSBjeWdwYXRoDQoraWYgdGVz dCAteiAiJENZR1BBVEhfVyI7IHRoZW4NCisgIGlmIChjeWdwYXRoIC0tdmVyc2lvbikgPi9kZXYv bnVsbCAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgICBDWUdQQVRIX1c9J2N5Z3BhdGggLXcnDQorICBl bHNlDQorICAgIENZR1BBVEhfVz1lY2hvDQorICBmaQ0KK2ZpDQorQUNfU1VCU1QoW0NZR1BBVEhf V10pDQorDQorIyBEZWZpbmUgdGhlIGlkZW50aXR5IG9mIHRoZSBwYWNrYWdlLg0KK2RubCBEaXN0 aW5ndWlzaCBiZXR3ZWVuIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlIGNhbGxzLg0KK200X2lmdmFs KFskMl0sDQorW200X2lmdmFsKFskM10sIFtfQU1fU0VUX09QVElPTihbbm8tZGVmaW5lXSldKWRu bA0KKyBBQ19TVUJTVChbUEFDS0FHRV0sIFskMV0pZG5sDQorIEFDX1NVQlNUKFtWRVJTSU9OXSwg WyQyXSldLA0KK1tfQU1fU0VUX09QVElPTlMoWyQxXSlkbmwNCisgQUNfU1VCU1QoW1BBQ0tBR0Vd LCBbJ0FDX1BBQ0tBR0VfVEFSTkFNRSddKWRubA0KKyBBQ19TVUJTVChbVkVSU0lPTl0sIFsnQUNf UEFDS0FHRV9WRVJTSU9OJ10pXSlkbmwNCisNCitfQU1fSUZfT1BUSU9OKFtuby1kZWZpbmVdLCwN CitbQUNfREVGSU5FX1VOUVVPVEVEKFBBQ0tBR0UsICIkUEFDS0FHRSIsIFtOYW1lIG9mIHBhY2th Z2VdKQ0KKyBBQ19ERUZJTkVfVU5RVU9URUQoVkVSU0lPTiwgIiRWRVJTSU9OIiwgW1ZlcnNpb24g bnVtYmVyIG9mDQpwYWNrYWdlXSldKWRubA0KKw0KKyMgU29tZSB0b29scyBBdXRvbWFrZSBuZWVk cy4NCitBQ19SRVFVSVJFKFtBTV9TQU5JVFlfQ0hFQ0tdKWRubA0KK0FDX1JFUVVJUkUoW0FDX0FS R19QUk9HUkFNXSlkbmwNCitBTV9NSVNTSU5HX1BST0coQUNMT0NBTCwgYWNsb2NhbC0ke2FtX19h cGlfdmVyc2lvbn0pDQorQU1fTUlTU0lOR19QUk9HKEFVVE9DT05GLCBhdXRvY29uZikNCitBTV9N SVNTSU5HX1BST0coQVVUT01BS0UsIGF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSkNCitBTV9N SVNTSU5HX1BST0coQVVUT0hFQURFUiwgYXV0b2hlYWRlcikNCitBTV9NSVNTSU5HX1BST0coTUFL RUlORk8sIG1ha2VpbmZvKQ0KK0FNX1BST0dfSU5TVEFMTF9TSA0KK0FNX1BST0dfSU5TVEFMTF9T VFJJUA0KK0FDX1JFUVVJUkUoW0FNX1BST0dfTUtESVJfUF0pZG5sDQorIyBXZSBuZWVkIGF3ayBm b3IgdGhlICJjaGVjayIgdGFyZ2V0LiAgVGhlIHN5c3RlbSAiYXdrIiBpcyBiYWQgb24NCisjIHNv bWUgcGxhdGZvcm1zLg0KK0FDX1JFUVVJUkUoW0FDX1BST0dfQVdLXSlkbmwNCitBQ19SRVFVSVJF KFtBQ19QUk9HX01BS0VfU0VUXSlkbmwNCitBQ19SRVFVSVJFKFtBTV9TRVRfTEVBRElOR19ET1Rd KWRubA0KK19BTV9JRl9PUFRJT04oW3Rhci11c3Rhcl0sIFtfQU1fUFJPR19UQVIoW3VzdGFyXSld LA0KKyAgICAgICAgICAgICAgW19BTV9JRl9PUFRJT04oW3Rhci1wYXhdLCBbX0FNX1BST0dfVEFS KFtwYXhdKV0sDQorCSAgICAgIAkJICAgICBbX0FNX1BST0dfVEFSKFt2N10pXSldKQ0KK19BTV9J Rl9PUFRJT04oW25vLWRlcGVuZGVuY2llc10sLA0KK1tBQ19QUk9WSURFX0lGRUxTRShbQUNfUFJP R19DQ10sDQorICAgICAgICAgICAgICAgICAgW19BTV9ERVBFTkRFTkNJRVMoQ0MpXSwNCisgICAg ICAgICAgICAgICAgICBbZGVmaW5lKFtBQ19QUk9HX0NDXSwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgDQpkZWZuKFtBQ19QUk9HX0NDXSlbX0FNX0RFUEVOREVOQ0lFUyhDQyldKV0pZG5sDQor QUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfQ1hYXSwNCisgICAgICAgICAgICAgICAgICBbX0FN X0RFUEVOREVOQ0lFUyhDWFgpXSwNCisgICAgICAgICAgICAgICAgICBbZGVmaW5lKFtBQ19QUk9H X0NYWF0sDQorICAgICAgICAgICAgICAgICAgICAgICAgIA0KZGVmbihbQUNfUFJPR19DWFhdKVtf QU1fREVQRU5ERU5DSUVTKENYWCldKV0pZG5sDQorXSkNCitdKQ0KKw0KKw0KKyMgV2hlbiBjb25m aWcuc3RhdHVzIGdlbmVyYXRlcyBhIGhlYWRlciwgd2UgbXVzdCB1cGRhdGUgdGhlIHN0YW1wLWgN CmZpbGUuDQorIyBUaGlzIGZpbGUgcmVzaWRlcyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhl IGNvbmZpZyBoZWFkZXINCisjIHRoYXQgaXMgZ2VuZXJhdGVkLiAgVGhlIHN0YW1wIGZpbGVzIGFy ZSBudW1iZXJlZCB0byBoYXZlIGRpZmZlcmVudA0KbmFtZXMuDQorDQorIyBBdXRvY29uZiBjYWxs cyBfQUNfQU1fQ09ORklHX0hFQURFUl9IT09LICh3aGVuIGRlZmluZWQpIGluIHRoZQ0KKyMgbG9v cCB3aGVyZSBjb25maWcuc3RhdHVzIGNyZWF0ZXMgdGhlIGhlYWRlcnMsIHNvIHdlIGNhbiBnZW5l cmF0ZQ0KKyMgb3VyIHN0YW1wIGZpbGVzIHRoZXJlLg0KK0FDX0RFRlVOKFtfQUNfQU1fQ09ORklH X0hFQURFUl9IT09LXSwNCitbIyBDb21wdXRlICQxJ3MgaW5kZXggaW4gJGNvbmZpZ19oZWFkZXJz Lg0KK19hbV9zdGFtcF9jb3VudD0xDQorZm9yIF9hbV9oZWFkZXIgaW4gJGNvbmZpZ19oZWFkZXJz IDo7IGRvDQorICBjYXNlICRfYW1faGVhZGVyIGluDQorICAgICQxIHwgJDE6KiApDQorICAgICAg YnJlYWsgOzsNCisgICAgKiApDQorICAgICAgX2FtX3N0YW1wX2NvdW50PWBleHByICRfYW1fc3Rh bXBfY291bnQgKyAxYCA7Ow0KKyAgZXNhYw0KK2RvbmUNCitlY2hvICJ0aW1lc3RhbXAgZm9yICQx IiA+YEFTX0RJUk5BTUUoWyQxXSlgL3N0YW1wLQ0KaFtdJF9hbV9zdGFtcF9jb3VudF0pDQorDQor IyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFu ZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFz IGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgQU1fUFJPR19JTlNUQUxM X1NIDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0NCisjIERlZmluZSAkaW5zdGFsbF9zaC4NCitBQ19E RUZVTihbQU1fUFJPR19JTlNUQUxMX1NIXSwNCitbQUNfUkVRVUlSRShbQU1fQVVYX0RJUl9FWFBB TkRdKWRubA0KK2luc3RhbGxfc2g9JHtpbnN0YWxsX3NoLSIkYW1fYXV4X2Rpci9pbnN0YWxsLXNo In0NCitBQ19TVUJTVChpbnN0YWxsX3NoKV0pDQorDQorIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw MDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBm cmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxp bWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBv ciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2Vy dmVkLg0KKw0KKyMgc2VyaWFsIDINCisNCisjIENoZWNrIHdoZXRoZXIgdGhlIHVuZGVybHlpbmcg ZmlsZS1zeXN0ZW0gc3VwcG9ydHMgZmlsZW5hbWVzDQorIyB3aXRoIGEgbGVhZGluZyBkb3QuICBG b3IgaW5zdGFuY2UgTVMtRE9TIGRvZXNuJ3QuDQorQUNfREVGVU4oW0FNX1NFVF9MRUFESU5HX0RP VF0sDQorW3JtIC1yZiAudHN0IDI+L2Rldi9udWxsDQorbWtkaXIgLnRzdCAyPi9kZXYvbnVsbA0K K2lmIHRlc3QgLWQgLnRzdDsgdGhlbg0KKyAgYW1fX2xlYWRpbmdfZG90PS4NCitlbHNlDQorICBh bV9fbGVhZGluZ19kb3Q9Xw0KK2ZpDQorcm1kaXIgLnRzdCAyPi9kZXYvbnVsbA0KK0FDX1NVQlNU KFthbV9fbGVhZGluZ19kb3RdKV0pDQorDQorIyBBZGQgLS1lbmFibGUtbWFpbnRhaW5lci1tb2Rl IG9wdGlvbiB0byBjb25maWd1cmUuICAgICAgICAgLSotDQpBdXRvY29uZiAtKi0NCisjIEZyb20g SmltIE1leWVyaW5nDQorDQorIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTgsIDIwMDAsIDIwMDEs IDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUNCisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j Lg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBk aXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcg YXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgc2VyaWFsIDQNCisNCitBQ19ERUZV TihbQU1fTUFJTlRBSU5FUl9NT0RFXSwNCitbQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVu YWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mDQpNYWtlZmlsZXNdKQ0KKyAgZG5s IG1haW50YWluZXItbW9kZSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0DQorICBBQ19BUkdfRU5BQkxF KG1haW50YWluZXItbW9kZSwNCitbICAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgIGVuYWJsZSBt YWtlIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgbm90DQp1c2VmdWwNCisJCQkgIChhbmQgc29tZXRp bWVzIGNvbmZ1c2luZykgdG8gdGhlIGNhc3VhbA0KaW5zdGFsbGVyXSwNCisgICAgICBVU0VfTUFJ TlRBSU5FUl9NT0RFPSRlbmFibGV2YWwsDQorICAgICAgVVNFX01BSU5UQUlORVJfTU9ERT1ubykN CisgIEFDX01TR19SRVNVTFQoWyRVU0VfTUFJTlRBSU5FUl9NT0RFXSkNCisgIEFNX0NPTkRJVElP TkFMKE1BSU5UQUlORVJfTU9ERSwgW3Rlc3QgJFVTRV9NQUlOVEFJTkVSX01PREUgPSB5ZXNdKQ0K KyAgTUFJTlQ9JE1BSU5UQUlORVJfTU9ERV9UUlVFDQorICBBQ19TVUJTVChNQUlOVClkbmwNCitd DQorKQ0KKw0KK0FVX0RFRlVOKFtqbV9NQUlOVEFJTkVSX01PREVdLCBbQU1fTUFJTlRBSU5FUl9N T0RFXSkNCisNCisjIENoZWNrIHRvIHNlZSBob3cgJ21ha2UnIHRyZWF0cyBpbmNsdWRlcy4JICAg ICAgICAgICAgLSotDQpBdXRvY29uZiAtKi0NCisNCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAw MiwgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMgVGhp cyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisj IGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQs DQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGlj ZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgMw0KKw0KKyMgQU1fTUFLRV9JTkNMVURFKCkN CisjIC0tLS0tLS0tLS0tLS0tLS0tDQorIyBDaGVjayB0byBzZWUgaG93IG1ha2UgdHJlYXRzIGlu Y2x1ZGVzLg0KK0FDX0RFRlVOKFtBTV9NQUtFX0lOQ0xVREVdLA0KK1thbV9tYWtlPSR7TUFLRS1t YWtlfQ0KK2NhdCA+IGNvbmZpbmMgPDwgJ0VORCcNCithbV9fZG9pdDoNCisJQGVjaG8gZG9uZQ0K Ky5QSE9OWTogYW1fX2RvaXQNCitFTkQNCisjIElmIHdlIGRvbid0IGZpbmQgYW4gaW5jbHVkZSBk aXJlY3RpdmUsIGp1c3QgY29tbWVudCBvdXQgdGhlIGNvZGUuDQorQUNfTVNHX0NIRUNLSU5HKFtm b3Igc3R5bGUgb2YgaW5jbHVkZSB1c2VkIGJ5ICRhbV9tYWtlXSkNCithbV9faW5jbHVkZT0iIyIN CithbV9fcXVvdGU9DQorX2FtX3Jlc3VsdD1ub25lDQorIyBGaXJzdCB0cnkgR05VIG1ha2Ugc3R5 bGUgaW5jbHVkZS4NCitlY2hvICJpbmNsdWRlIGNvbmZpbmMiID4gY29uZm1mDQorIyBXZSBncmVw IG91dCBgRW50ZXJpbmcgZGlyZWN0b3J5JyBhbmQgYExlYXZpbmcgZGlyZWN0b3J5Jw0KKyMgbWVz c2FnZXMgd2hpY2ggY2FuIG9jY3VyIGlmIGB3JyBlbmRzIHVwIGluIE1BS0VGTEFHUy4NCisjIElu IHBhcnRpY3VsYXIgd2UgZG9uJ3QgbG9vayBhdCBgXm1ha2U6JyBiZWNhdXNlIEdOVSBtYWtlIG1p Z2h0DQorIyBiZSBpbnZva2VkIHVuZGVyIHNvbWUgb3RoZXIgbmFtZSAodXN1YWxseSAiZ21ha2Ui KSwgaW4gd2hpY2gNCisjIGNhc2UgaXQgcHJpbnRzIGl0cyBuZXcgbmFtZSBpbnN0ZWFkIG9mIGBt YWtlJy4NCitpZiB0ZXN0ICJgJGFtX21ha2UgLXMgLWYgY29uZm1mIDI+IC9kZXYvbnVsbCB8IGdy ZXAgLXYgJ2luZw0KZGlyZWN0b3J5J2AiID0gImRvbmUiOyB0aGVuDQorICAgYW1fX2luY2x1ZGU9 aW5jbHVkZQ0KKyAgIGFtX19xdW90ZT0NCisgICBfYW1fcmVzdWx0PUdOVQ0KK2ZpDQorIyBOb3cg dHJ5IEJTRCBtYWtlIHN0eWxlIGluY2x1ZGUuDQoraWYgdGVzdCAiJGFtX19pbmNsdWRlIiA9ICIj IjsgdGhlbg0KKyAgIGVjaG8gJy5pbmNsdWRlICJjb25maW5jIicgPiBjb25mbWYNCisgICBpZiB0 ZXN0ICJgJGFtX21ha2UgLXMgLWYgY29uZm1mIDI+IC9kZXYvbnVsbGAiID0gImRvbmUiOyB0aGVu DQorICAgICAgYW1fX2luY2x1ZGU9LmluY2x1ZGUNCisgICAgICBhbV9fcXVvdGU9IlwiIg0KKyAg ICAgIF9hbV9yZXN1bHQ9QlNEDQorICAgZmkNCitmaQ0KK0FDX1NVQlNUKFthbV9faW5jbHVkZV0p DQorQUNfU1VCU1QoW2FtX19xdW90ZV0pDQorQUNfTVNHX1JFU1VMVChbJF9hbV9yZXN1bHRdKQ0K K3JtIC1mIGNvbmZpbmMgY29uZm1mDQorXSkNCisNCisjIEZha2UgdGhlIGV4aXN0ZW5jZSBvZiBw cm9ncmFtcyB0aGF0IEdOVSBtYWludGFpbmVycyB1c2UuICAtKi0NCkF1dG9jb25mIC0qLQ0KKw0K KyMgQ29weXJpZ2h0IChDKSAxOTk3LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA1DQorIyBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBz b2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVk IHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0 aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4N CisNCisjIHNlcmlhbCA0DQorDQorIyBBTV9NSVNTSU5HX1BST0coTkFNRSwgUFJPR1JBTSkNCisj IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0FDX0RFRlVOKFtBTV9NSVNTSU5HX1BS T0ddLA0KK1tBQ19SRVFVSVJFKFtBTV9NSVNTSU5HX0hBU19SVU5dKQ0KKyQxPSR7JDEtIiR7YW1f bWlzc2luZ19ydW59JDIifQ0KK0FDX1NVQlNUKCQxKV0pDQorDQorDQorIyBBTV9NSVNTSU5HX0hB U19SVU4NCisjIC0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgRGVmaW5lIE1JU1NJTkcgaWYgbm90IGRl ZmluZWQgc28gZmFyIGFuZCB0ZXN0IGlmIGl0IHN1cHBvcnRzIC0tcnVuLg0KKyMgSWYgaXQgZG9l cywgc2V0IGFtX21pc3NpbmdfcnVuIHRvIHVzZSBpdCwgb3RoZXJ3aXNlLCB0byBub3RoaW5nLg0K K0FDX0RFRlVOKFtBTV9NSVNTSU5HX0hBU19SVU5dLA0KK1tBQ19SRVFVSVJFKFtBTV9BVVhfRElS X0VYUEFORF0pZG5sDQordGVzdCB4IiR7TUlTU0lORytzZXR9IiA9IHhzZXQgfHwgTUlTU0lORz0i XCR7U0hFTEx9DQokYW1fYXV4X2Rpci9taXNzaW5nIg0KKyMgVXNlIGV2YWwgdG8gZXhwYW5kICRT SEVMTA0KK2lmIGV2YWwgIiRNSVNTSU5HIC0tcnVuIHRydWUiOyB0aGVuDQorICBhbV9taXNzaW5n X3J1bj0iJE1JU1NJTkcgLS1ydW4gIg0KK2Vsc2UNCisgIGFtX21pc3NpbmdfcnVuPQ0KKyAgQUNf TVNHX1dBUk4oW2BtaXNzaW5nJyBzY3JpcHQgaXMgdG9vIG9sZCBvciBtaXNzaW5nXSkNCitmaQ0K K10pDQorDQorIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUgIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0 byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNh dGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgQU1fUFJP R19NS0RJUl9QDQorIyAtLS0tLS0tLS0tLS0tLS0NCisjIENoZWNrIHdoZXRoZXIgYG1rZGlyIC1w JyBpcyBzdXBwb3J0ZWQsIGZhbGxiYWNrIHRvIG1raW5zdGFsbGRpcnMNCm90aGVyd2lzZS4NCisj DQorIyBBdXRvbWFrZSAxLjggdXNlZCBgbWtkaXIgLW0gMDc1NSAtcCAtLScgdG8gZW5zdXJlIHRo YXQgZGlyZWN0b3JpZXMNCisjIGNyZWF0ZWQgYnkgYG1ha2UgaW5zdGFsbCcgYXJlIGFsd2F5cyB3 b3JsZCByZWFkYWJsZSwgZXZlbiBpZiB0aGUNCisjIGluc3RhbGxlciBoYXBwZW5zIHRvIGhhdmUg YW4gb3Zlcmx5IHJlc3RyaWN0aXZlIHVtYXNrIChlLmcuIDA3NykuDQorIyBUaGlzIHdhcyBhIG1p c3Rha2UuICBUaGVyZSBhcmUgYXQgbGVhc3QgdHdvIHJlYXNvbnMgd2h5IHdlIG11c3Qgbm90DQor IyB1c2UgYC1tIDA3NTUnOg0KKyMgICAtIGl0IGNhdXNlcyBzcGVjaWFsIGJpdHMgbGlrZSBTR0lE IHRvIGJlIGlnbm9yZWQsDQorIyAgIC0gaXQgbWF5IGJlIHRvbyByZXN0cmljdGl2ZSAoc29tZSBz ZXR1cHMgZXhwZWN0IDc3NSBkaXJlY3RvcmllcykuDQorIw0KKyMgRG8gbm90IHVzZSAtbSAwNzU1 IGFuZCBsZXQgcGVvcGxlIGNob29zZSB3aGF0ZXZlciB0aGV5IGV4cGVjdCBieQ0KKyMgc2V0dGlu ZyB1bWFzay4NCisjDQorIyBXZSBjYW5ub3QgYWNjZXB0IGFueSBpbXBsZW1lbnRhdGlvbiBvZiBg bWtkaXInIHRoYXQgcmVjb2duaXplcyBgLXAnLg0KKyMgU29tZSBpbXBsZW1lbnRhdGlvbnMgKHN1 Y2ggYXMgU29sYXJpcyA4J3MpIGFyZSBub3QgdGhyZWFkLXNhZmU6IGlmIGENCisjIHBhcmFsbGVs IG1ha2UgdHJpZXMgdG8gcnVuIGBta2RpciAtcCBhL2InIGFuZCBgbWtkaXIgLXAgYS9jJw0KKyMg Y29uY3VycmVudGx5LCBib3RoIHZlcnNpb24gY2FuIGRldGVjdCB0aGF0IGEvIGlzIG1pc3Npbmcs IGJ1dCBvbmx5DQorIyBvbmUgY2FuIGNyZWF0ZSBpdCBhbmQgdGhlIG90aGVyIHdpbGwgZXJyb3Ig b3V0LiAgQ29uc2VxdWVudGx5IHdlDQorIyByZXN0cmljdCBvdXJzZWx2ZXMgdG8gR05VIG1ha2Ug KHVzaW5nIHRoZSAtLXZlcnNpb24gb3B0aW9uIGVuc3VyZXMNCisjIHRoaXMuKQ0KK0FDX0RFRlVO KFtBTV9QUk9HX01LRElSX1BdLA0KK1tpZiBta2RpciAtcCAtLXZlcnNpb24gLiA+L2Rldi9udWxs IDI+JjEgJiYgdGVzdCAhIC1kIC4vLS12ZXJzaW9uOw0KdGhlbg0KKyAgIyBXZSB1c2VkIHRvIGtl ZXBpbmcgdGhlIGAuJyBhcyBmaXJzdCBhcmd1bWVudCwgaW4gb3JkZXIgdG8NCisgICMgYWxsb3cg JChta2Rpcl9wKSB0byBiZSB1c2VkIHdpdGhvdXQgYXJndW1lbnQuICBBcyBpbg0KKyAgIyAgICQo bWtkaXJfcCkgJChzb21lZGlyKQ0KKyAgIyB3aGVyZSAkKHNvbWVkaXIpIGlzIGNvbmRpdGlvbmFs bHkgZGVmaW5lZC4gIEhvd2V2ZXIgdGhpcyBpcyB3cm9uZw0KKyAgIyBmb3IgdHdvIHJlYXNvbnM6 DQorICAjICAxLiBpZiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQgYnkgYSB1c2VyIHdobyBjYW5u b3Qgd3JpdGUgYC4nDQorICAjICAgICBtYWtlIGluc3RhbGwgd2lsbCBmYWlsLA0KKyAgIyAgMi4g dGhlIGFib3ZlIGNvbW1lbnQgc2hvdWxkIG1vc3QgY2VydGFpbmx5IHJlYWQNCisgICMgICAgICQo bWtkaXJfcCkgJChERVNURElSKSQoc29tZWRpcikNCisgICMgICAgIHNvIGl0IGRvZXMgbm90IHdv cmsgd2hlbiAkKHNvbWVkaXIpIGlzIHVuZGVmaW5lZCBhbmQNCisgICMgICAgICQoREVTVERJUikg aXMgbm90Lg0KKyAgIyAgVG8gc3VwcG9ydCB0aGUgbGF0dGVyIGNhc2UsIHdlIGhhdmUgdG8gd3Jp dGUNCisgICMgICAgIHRlc3QgLXogIiQoc29tZWRpcikiIHx8ICQobWtkaXJfcCkgJChERVNURElS KSQoc29tZWRpciksDQorICAjICBzbyB0aGUgYC4nIHRyaWNrIGlzIHBvaW50bGVzcy4NCisgIG1r ZGlyX3A9J21rZGlyIC1wIC0tJw0KK2Vsc2UNCisgICMgT24gTmV4dFN0ZXAgYW5kIE9wZW5TdGVw LCB0aGUgYG1rZGlyJyBjb21tYW5kIGRvZXMgbm90DQorICAjIHJlY29nbml6ZSBhbnkgb3B0aW9u LiAgSXQgd2lsbCBpbnRlcnByZXQgYWxsIG9wdGlvbnMgYXMNCisgICMgZGlyZWN0b3JpZXMgdG8g Y3JlYXRlLCBhbmQgdGhlbiBhYm9ydCBiZWNhdXNlIGAuJyBhbHJlYWR5DQorICAjIGV4aXN0cy4N CisgIGZvciBkIGluIC4vLXAgLi8tLXZlcnNpb247DQorICBkbw0KKyAgICB0ZXN0IC1kICRkICYm IHJtZGlyICRkDQorICBkb25lDQorICAjICQobWtpbnN0YWxsZGlycykgaXMgZGVmaW5lZCBieSBB dXRvbWFrZSBpZiBta2luc3RhbGxkaXJzIGV4aXN0cy4NCisgIGlmIHRlc3QgLWYgIiRhY19hdXhf ZGlyL21raW5zdGFsbGRpcnMiOyB0aGVuDQorICAgIG1rZGlyX3A9JyQobWtpbnN0YWxsZGlycykn DQorICBlbHNlDQorICAgIG1rZGlyX3A9JyQoaW5zdGFsbF9zaCkgLWQnDQorICBmaQ0KK2ZpDQor QUNfU1VCU1QoW21rZGlyX3BdKV0pDQorDQorIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBvcHRpb24g aGFuZGxpbmcuICAgICAgICAgICAgICAgICAgICAgLSotDQpBdXRvY29uZiAtKi0NCisNCisjIENv cHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuDQorIw0KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24NCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkg YW5kL29yIGRpc3RyaWJ1dGUgaXQsDQorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywg YXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuDQorDQorIyBzZXJpYWwgMw0KKw0K KyMgX0FNX01BTkdMRV9PUFRJT04oTkFNRSkNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor QUNfREVGVU4oW19BTV9NQU5HTEVfT1BUSU9OXSwNCitbW19BTV9PUFRJT05fXW00X2JwYXRzdWJz dCgkMSwgW1teYS16QS1aMC05X11dLCBbX10pXSkNCisNCisjIF9BTV9TRVRfT1BUSU9OKE5BTUUp DQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIFNldCBvcHRpb24gTkFNRS4g IFByZXNlbnRseSB0aGF0IG9ubHkgbWVhbnMgZGVmaW5pbmcgYSBmbGFnIGZvciB0aGlzDQpvcHRp b24uDQorQUNfREVGVU4oW19BTV9TRVRfT1BUSU9OXSwNCitbbTRfZGVmaW5lKF9BTV9NQU5HTEVf T1BUSU9OKFskMV0pLCAxKV0pDQorDQorIyBfQU1fU0VUX09QVElPTlMoT1BUSU9OUykNCisjIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIE9QVElPTlMgaXMgYSBzcGFjZS1z ZXBhcmF0ZWQgbGlzdCBvZiBBdXRvbWFrZSBvcHRpb25zLg0KK0FDX0RFRlVOKFtfQU1fU0VUX09Q VElPTlNdLA0KK1tBQ19GT1JFQUNIKFtfQU1fT3B0aW9uXSwgWyQxXSwgW19BTV9TRVRfT1BUSU9O KF9BTV9PcHRpb24pXSldKQ0KKw0KKyMgX0FNX0lGX09QVElPTihPUFRJT04sIElGLVNFVCwgW0lG LU5PVC1TRVRdKQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KKyMgRXhlY3V0ZSBJRi1TRVQgaWYgT1BUSU9OIGlzIHNldCwgSUYtTk9ULVNFVCBvdGhlcndp c2UuDQorQUNfREVGVU4oW19BTV9JRl9PUFRJT05dLA0KK1ttNF9pZnNldChfQU1fTUFOR0xFX09Q VElPTihbJDFdKSwgWyQyXSwgWyQzXSldKQ0KKw0KKyMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQg dGhlIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmUuICAgIC0qLQ0KQXV0b2NvbmYgLSotDQorDQor IyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDUNCisjIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNv ZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQg cGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRo b3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0K Kw0KKyMgc2VyaWFsIDQNCisNCisjIEFNX1NBTklUWV9DSEVDSw0KKyMgLS0tLS0tLS0tLS0tLS0t DQorQUNfREVGVU4oW0FNX1NBTklUWV9DSEVDS10sDQorW0FDX01TR19DSEVDS0lORyhbd2hldGhl ciBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lXSkNCisjIEp1c3QgaW4gY2FzZQ0KK3NsZWVwIDEN CitlY2hvIHRpbWVzdGFtcCA+IGNvbmZ0ZXN0LmZpbGUNCisjIERvIGBzZXQnIGluIGEgc3Vic2hl bGwgc28gd2UgZG9uJ3QgY2xvYmJlciB0aGUgY3VycmVudCBzaGVsbCdzDQorIyBhcmd1bWVudHMu ICBNdXN0IHRyeSAtTCBmaXJzdCBpbiBjYXNlIGNvbmZpZ3VyZSBpcyBhY3R1YWxseSBhDQorIyBz eW1saW5rOyBzb21lIHN5c3RlbXMgcGxheSB3ZWlyZCBnYW1lcyB3aXRoIHRoZSBtb2QgdGltZSBv ZiBzeW1saW5rcw0KKyMgKGVnIEZyZWVCU0QgcmV0dXJucyB0aGUgbW9kIHRpbWUgb2YgdGhlIHN5 bWxpbmsncyBjb250YWluaW5nDQorIyBkaXJlY3RvcnkpLg0KK2lmICgNCisgICBzZXQgWCBgbHMg LUx0ICRzcmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGUgMj4gL2Rldi9udWxsYA0KKyAgIGlm IHRlc3QgIiRbKl0iID0gIlgiOyB0aGVuDQorICAgICAgIyAtTCBkaWRuJ3Qgd29yay4NCisgICAg ICBzZXQgWCBgbHMgLXQgJHNyY2Rpci9jb25maWd1cmUgY29uZnRlc3QuZmlsZWANCisgICBmaQ0K KyAgIHJtIC1mIGNvbmZ0ZXN0LmZpbGUNCisgICBpZiB0ZXN0ICIkWypdIiAhPSAiWCAkc3JjZGly L2NvbmZpZ3VyZSBjb25mdGVzdC5maWxlIiBcDQorICAgICAgJiYgdGVzdCAiJFsqXSIgIT0gIlgg Y29uZnRlc3QuZmlsZSAkc3JjZGlyL2NvbmZpZ3VyZSI7IHRoZW4NCisNCisgICAgICAjIElmIG5l aXRoZXIgbWF0Y2hlZCwgdGhlbiB3ZSBoYXZlIGEgYnJva2VuIGxzLiAgVGhpcyBjYW4gaGFwcGVu DQorICAgICAgIyBpZiwgZm9yIGluc3RhbmNlLCBDT05GSUdfU0hFTEwgaXMgYmFzaCBhbmQgaXQg aW5oZXJpdHMgYQ0KKyAgICAgICMgYnJva2VuIGxzIGFsaWFzIGZyb20gdGhlIGVudmlyb25tZW50 LiAgVGhpcyBoYXMgYWN0dWFsbHkNCisgICAgICAjIGhhcHBlbmVkLiAgU3VjaCBhIHN5c3RlbSBj b3VsZCBub3QgYmUgY29uc2lkZXJlZCAic2FuZSIuDQorICAgICAgQUNfTVNHX0VSUk9SKFtscyAt dCBhcHBlYXJzIHRvIGZhaWwuICBNYWtlIHN1cmUgdGhlcmUgaXMgbm90IGENCmJyb2tlbg0KK2Fs aWFzIGluIHlvdXIgZW52aXJvbm1lbnRdKQ0KKyAgIGZpDQorDQorICAgdGVzdCAiJFsyXSIgPSBj b25mdGVzdC5maWxlDQorICAgKQ0KK3RoZW4NCisgICAjIE9rLg0KKyAgIDoNCitlbHNlDQorICAg QUNfTVNHX0VSUk9SKFtuZXdseSBjcmVhdGVkIGZpbGUgaXMgb2xkZXIgdGhhbiBkaXN0cmlidXRl ZCBmaWxlcyENCitDaGVjayB5b3VyIHN5c3RlbSBjbG9ja10pDQorZmkNCitBQ19NU0dfUkVTVUxU KHllcyldKQ0KKw0KKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Np b24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwNCisjIHdpdGggb3Igd2l0aG91dCBtb2Rp ZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4NCisNCisjIEFN X1BST0dfSU5TVEFMTF9TVFJJUA0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBPbmUgaXNz dWUgd2l0aCB2ZW5kb3IgYGluc3RhbGwnIChldmVuIEdOVSkgaXMgdGhhdCB5b3UgY2FuJ3QNCisj IHNwZWNpZnkgdGhlIHByb2dyYW0gdXNlZCB0byBzdHJpcCBiaW5hcmllcy4gIFRoaXMgaXMgZXNw ZWNpYWxseQ0KKyMgYW5ub3lpbmcgaW4gY3Jvc3MtY29tcGlsaW5nIGVudmlyb25tZW50cywgd2hl cmUgdGhlIGJ1aWxkJ3Mgc3RyaXANCisjIGlzIHVubGlrZWx5IHRvIGhhbmRsZSB0aGUgaG9zdCdz IGJpbmFyaWVzLg0KKyMgRm9ydHVuYXRlbHkgaW5zdGFsbC1zaCB3aWxsIGhvbm9yIGEgU1RSSVBQ Uk9HIHZhcmlhYmxlLCBzbyB3ZQ0KKyMgYWx3YXlzIHVzZSBpbnN0YWxsLXNoIGluIGBtYWtlIGlu c3RhbGwtc3RyaXAnLCBhbmQgaW5pdGlhbGl6ZQ0KKyMgU1RSSVBQUk9HIHdpdGggdGhlIHZhbHVl IG9mIHRoZSBTVFJJUCB2YXJpYWJsZSAoc2V0IGJ5IHRoZSB1c2VyKS4NCitBQ19ERUZVTihbQU1f UFJPR19JTlNUQUxMX1NUUklQXSwNCitbQUNfUkVRVUlSRShbQU1fUFJPR19JTlNUQUxMX1NIXSlk bmwNCisjIEluc3RhbGxlZCBiaW5hcmllcyBhcmUgdXN1YWxseSBzdHJpcHBlZCB1c2luZyBgc3Ry aXAnIHdoZW4gdGhlIHVzZXINCisjIHJ1biBgbWFrZSBpbnN0YWxsLXN0cmlwJy4gIEhvd2V2ZXIg YHN0cmlwJyBtaWdodCBub3QgYmUgdGhlIHJpZ2h0DQorIyB0b29sIHRvIHVzZSBpbiBjcm9zcy1j b21waWxhdGlvbiBlbnZpcm9ubWVudHMsIHRoZXJlZm9yZSBBdXRvbWFrZQ0KKyMgd2lsbCBob25v ciB0aGUgYFNUUklQJyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBvdmVycnVsZSB0aGlzDQpwcm9n cmFtLg0KK2RubCBEb24ndCB0ZXN0IGZvciAkY3Jvc3NfY29tcGlsaW5nID0geWVzLCBiZWNhdXNl IGl0IG1pZ2h0IGJlDQpgbWF5YmUnLg0KK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciICE9IG5v OyB0aGVuDQorICBBQ19DSEVDS19UT09MKFtTVFJJUF0sIFtzdHJpcF0sIDopDQorZmkNCitJTlNU QUxMX1NUUklQX1BST0dSQU09Ilwke1NIRUxMfSBcJChpbnN0YWxsX3NoKSAtYyAtcyINCitBQ19T VUJTVChbSU5TVEFMTF9TVFJJUF9QUk9HUkFNXSldKQ0KKw0KKyMgQ2hlY2sgaG93IHRvIGNyZWF0 ZSBhIHRhcmJhbGwuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLQ0KQXV0b2NvbmYgLSot DQorDQorIyBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uDQorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFu ZC9vciBkaXN0cmlidXRlIGl0LA0KKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFz IGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLg0KKw0KKyMgc2VyaWFsIDINCisNCisj IF9BTV9QUk9HX1RBUihGT1JNQVQpDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQ2hlY2sg aG93IHRvIGNyZWF0ZSBhIHRhcmJhbGwgaW4gZm9ybWF0IEZPUk1BVC4NCisjIEZPUk1BVCBzaG91 bGQgYmUgb25lIG9mIGB2NycsIGB1c3RhcicsIG9yIGBwYXgnLg0KKyMNCisjIFN1YnN0aXR1dGUg YSB2YXJpYWJsZSAkKGFtX190YXIpIHRoYXQgaXMgYSBjb21tYW5kDQorIyB3cml0aW5nIHRvIHN0 ZG91dCBhIEZPUk1BVC10YXJiYWxsIGNvbnRhaW5pbmcgdGhlIGRpcmVjdG9yeQ0KKyMgJHRhcmRp ci4NCisjICAgICB0YXJkaXI9ZGlyZWN0b3J5ICYmICQoYW1fX3RhcikgPiByZXN1bHQudGFyDQor Iw0KKyMgU3Vic3RpdHV0ZSBhIHZhcmlhYmxlICQoYW1fX3VudGFyKSB0aGF0IGV4dHJhY3Qgc3Vj aA0KKyMgYSB0YXJiYWxsIHJlYWQgZnJvbSBzdGRpbi4NCisjICAgICAkKGFtX191bnRhcikgPCBy ZXN1bHQudGFyDQorQUNfREVGVU4oW19BTV9QUk9HX1RBUl0sDQorWyMgQWx3YXlzIGRlZmluZSBB TVRBUiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4NCitBTV9NSVNTSU5HX1BST0coW0FNVEFS XSwgW3Rhcl0pDQorbTRfaWYoWyQxXSwgW3Y3XSwNCisgICAgIFthbV9fdGFyPScke0FNVEFSfSBj aG9mIC0gIiQkdGFyZGlyIic7IGFtX191bnRhcj0nJHtBTVRBUn0geGYgLQ0KJ10sDQorICAgICBb bTRfY2FzZShbJDFdLCBbdXN0YXJdLCwgW3BheF0sLA0KKyAgICAgICAgICAgICAgW200X2ZhdGFs KFtVbmtub3duIHRhciBmb3JtYXRdKV0pDQorQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY3JlYXRl IGEgJDEgdGFyIGFyY2hpdmVdKQ0KKyMgTG9vcCBvdmVyIGFsbCBrbm93biBtZXRob2RzIHRvIGNy ZWF0ZSBhIHRhciBhcmNoaXZlIHVudGlsIG9uZSB3b3Jrcy4NCitfYW1fdG9vbHM9J2dudXRhciBt NF9pZihbJDFdLCBbdXN0YXJdLCBbcGxhaW50YXJdKSBwYXggY3BpbyBub25lJw0KK19hbV90b29s cz0ke2FtX2N2X3Byb2dfdGFyXyQxLSRfYW1fdG9vbHN9DQorIyBEbyBub3QgZm9sZCB0aGUgYWJv dmUgdHdvIGxpbmUgaW50byBvbmUsIGJlY2F1c2UgVHJ1NjQgc2ggYW5kDQorIyBTb2xhcmlzIHNo IHdpbGwgbm90IGdyb2sgc3BhY2VzIGluIHRoZSByaHMgb2YgYC0nLg0KK2ZvciBfYW1fdG9vbCBp biAkX2FtX3Rvb2xzDQorZG8NCisgIGNhc2UgJF9hbV90b29sIGluDQorICBnbnV0YXIpDQorICAg IGZvciBfYW1fdGFyIGluIHRhciBnbnV0YXIgZ3RhcjsNCisgICAgZG8NCisgICAgICBBTV9SVU5f TE9HKFskX2FtX3RhciAtLXZlcnNpb25dKSAmJiBicmVhaw0KKyAgICBkb25lDQorICAgIGFtX190 YXI9IiRfYW1fdGFyIC0tZm9ybWF0PW00X2lmKFskMV0sIFtwYXhdLCBbcG9zaXhdLCBbJDFdKSAt Y2hmDQotICInIiQkdGFyZGlyIicNCisgICAgYW1fX3Rhcl89IiRfYW1fdGFyIC0tZm9ybWF0PW00 X2lmKFskMV0sIFtwYXhdLCBbcG9zaXhdLCBbJDFdKSAtY2hmDQotICInIiR0YXJkaXIiJw0KKyAg ICBhbV9fdW50YXI9IiRfYW1fdGFyIC14ZiAtIg0KKyAgICA7Ow0KKyAgcGxhaW50YXIpDQorICAg ICMgTXVzdCBza2lwIEdOVSB0YXI6IGlmIGl0IGRvZXMgbm90IHN1cHBvcnQgLS1mb3JtYXQ9IGl0 IGRvZXNuJ3QNCmNyZWF0ZQ0KKyAgICAjIHVzdGFyIHRhcmJhbGwgZWl0aGVyLg0KKyAgICAodGFy IC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxICYmIGNvbnRpbnVlDQorICAgIGFtX190YXI9J3Rh ciBjaGYgLSAiJCR0YXJkaXIiJw0KKyAgICBhbV9fdGFyXz0ndGFyIGNoZiAtICIkdGFyZGlyIicN CisgICAgYW1fX3VudGFyPSd0YXIgeGYgLScNCisgICAgOzsNCisgIHBheCkNCisgICAgYW1fX3Rh cj0ncGF4IC1MIC14ICQxIC13ICIkJHRhcmRpciInDQorICAgIGFtX190YXJfPSdwYXggLUwgLXgg JDEgLXcgIiR0YXJkaXIiJw0KKyAgICBhbV9fdW50YXI9J3BheCAtcicNCisgICAgOzsNCisgIGNw aW8pDQorICAgIGFtX190YXI9J2ZpbmQgIiQkdGFyZGlyIiAtcHJpbnQgfCBjcGlvIC1vIC1IICQx IC1MJw0KKyAgICBhbV9fdGFyXz0nZmluZCAiJHRhcmRpciIgLXByaW50IHwgY3BpbyAtbyAtSCAk MSAtTCcNCisgICAgYW1fX3VudGFyPSdjcGlvIC1pIC1IICQxIC1kJw0KKyAgICA7Ow0KKyAgbm9u ZSkNCisgICAgYW1fX3Rhcj1mYWxzZQ0KKyAgICBhbV9fdGFyXz1mYWxzZQ0KKyAgICBhbV9fdW50 YXI9ZmFsc2UNCisgICAgOzsNCisgIGVzYWMNCisNCisgICMgSWYgdGhlIHZhbHVlIHdhcyBjYWNo ZWQsIHN0b3Agbm93LiAgV2UganVzdCB3YW50ZWQgdG8gaGF2ZSBhbV9fdGFyDQorICAjIGFuZCBh bV9fdW50YXIgc2V0Lg0KKyAgdGVzdCAtbiAiJHthbV9jdl9wcm9nX3Rhcl8kMX0iICYmIGJyZWFr DQorDQorICAjIHRhci91bnRhciBhIGR1bW15IGRpcmVjdG9yeSwgYW5kIHN0b3AgaWYgdGhlIGNv bW1hbmQgd29ya3MNCisgIHJtIC1yZiBjb25mdGVzdC5kaXINCisgIG1rZGlyIGNvbmZ0ZXN0LmRp cg0KKyAgZWNobyBHcmVwTWUgPiBjb25mdGVzdC5kaXIvZmlsZQ0KKyAgQU1fUlVOX0xPRyhbdGFy ZGlyPWNvbmZ0ZXN0LmRpciAmJiBldmFsICRhbV9fdGFyXyA+Y29uZnRlc3QudGFyXSkNCisgIHJt IC1yZiBjb25mdGVzdC5kaXINCisgIGlmIHRlc3QgLXMgY29uZnRlc3QudGFyOyB0aGVuDQorICAg IEFNX1JVTl9MT0coWyRhbV9fdW50YXIgPGNvbmZ0ZXN0LnRhcl0pDQorICAgIGdyZXAgR3JlcE1l IGNvbmZ0ZXN0LmRpci9maWxlID4vZGV2L251bGwgMj4mMSAmJiBicmVhaw0KKyAgZmkNCitkb25l DQorcm0gLXJmIGNvbmZ0ZXN0LmRpcg0KKw0KK0FDX0NBQ0hFX1ZBTChbYW1fY3ZfcHJvZ190YXJf JDFdLCBbYW1fY3ZfcHJvZ190YXJfJDE9JF9hbV90b29sXSkNCitBQ19NU0dfUkVTVUxUKFskYW1f Y3ZfcHJvZ190YXJfJDFdKV0pDQorQUNfU1VCU1QoW2FtX190YXJdKQ0KK0FDX1NVQlNUKFthbV9f dW50YXJdKQ0KK10pICMgX0FNX1BST0dfVEFSDQorDQorbTRfaW5jbHVkZShbLi4vLi4vLi4vYWNp bmNsdWRlLm00XSkNCmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2NsaWJyYXJ5 X2luaXQuYw0KYi9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2NsaWJyYXJ5X2luaXQuYw0KbmV3IGZp bGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uOTc1OTgxYWM1DQotLS0gL2Rldi9udWxs DQorKysgYi9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2NsaWJyYXJ5X2luaXQuYw0KQEAgLTAsMCAr MSw0MiBAQA0KKy8qIENvcHlyaWdodCAoYykgMjAwMy0yMDA2IFRlbnNpbGljYSBJbmMuICBBTEwg UklHSFRTIFJFU0VSVkVELg0KKw0KKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAgIG1vZGlmaWNhdGlvbiwgYXJl IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KYXJlIG1l dDoNCisNCisgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGFib3ZlIGNvcHlyaWdodA0KKyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisNCisgICAyLiBSZWRpc3RyaWJ1dGlv bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQpjb3B5cmlnaHQNCisg ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIgaW4NCnRoZQ0KKyAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KZGlzdHJpYnV0aW9uLg0KKw0KKyAgIFRISVMgU09GVFdB UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMN CiJBUw0KKyAgIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM VURJTkcsIEJVVCBOT1QNCkxJTUlURUQNCisgICBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEENCisgICBQQVJUSUNVTEFSIFBVUlBP U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBURU5TSUxJQ0ENCisgICBJTkNP UlBPUkFURUQgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwN ClNQRUNJQUwsDQorICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KKyAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUg0KKyAgIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkN Ck9GDQorICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ LCBPUiBUT1JUDQooSU5DTFVESU5HDQorICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTDQorICAgU09GVFdBUkUsIEVWRU4g SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuICAqLw0KKw0KKyNp bmNsdWRlIDxzdGRsaWIuaD4NCisjaW5jbHVkZSA8dW5pc3RkLmg+DQorDQorY29uc3QgY2hhciAq IF9fcHJvZ25hbWUgPSAwOw0KKw0KK3ZvaWQNCitfX2NsaWJyYXJ5X2luaXQgKGludCBhcmdjLCBj aGFyICoqYXJndiwgY2hhciAqKmVudnAsDQorCQkgdm9pZCAoKmluaXQpKHZvaWQpLA0KKwkJIHZv aWQgKCpmaW5pKSh2b2lkKSkNCit7DQorICBpZiAoYXJndiAhPSAwKQ0KKyAgICBfX3Byb2duYW1l ID0gKmFyZ3Y7DQorICBlbnZpcm9uID0gZW52cDsNCisgIGlmIChpbml0KQ0KKyAgICBpbml0ICgp Ow0KKyAgaWYgKGZpbmkpDQorICAgIF9hdGV4aXQgKGZpbmkpOw0KK30NCmRpZmYgLS1naXQgYS9u ZXdsaWIvbGliYy9zeXMveHRlbnNhL2NvbmZpZ3VyZQ0KYi9uZXdsaWIvbGliYy9zeXMveHRlbnNh L2NvbmZpZ3VyZQ0KbmV3IGZpbGUgbW9kZSAxMDA3NTUNCmluZGV4IDAwMDAwMDAwMC4uNjYzMDcw NTgyDQotLS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2NvbmZpZ3Vy ZQ0KQEAgLTAsMCArMSw0NjIzIEBADQorIyEgL2Jpbi9zaA0KKyMgR3Vlc3MgdmFsdWVzIGZvciBz eXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4NCisjIEdlbmVy YXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NCBmb3IgbmV3bGliIDEuMTkuMC4NCisjDQorIyBDb3B5 cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTgsIDE5OTksIDIwMDAs IDIwMDEsDQorIyAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5 IEZyZWUgU29mdHdhcmUNCisjIEZvdW5kYXRpb24sIEluYy4NCisjDQorIyBUaGlzIGNvbmZpZ3Vy ZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0K KyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9k aWZ5IGl0Lg0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorIyMgTTRzaCBJbml0aWFsaXph dGlvbi4gIyMNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KKw0KKyMgQmUgbW9yZSBCb3Vy bmUgY29tcGF0aWJsZQ0KK0RVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gN CitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9u dWxsIDI+JjE7IHRoZW4NCjoNCisgIGVtdWxhdGUgc2gNCisgIE5VTExDTUQ9Og0KKyAgIyBQcmUt NC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiAkezErIiRAIn0sIHdoaWNo DQorICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLg0K KyAgYWxpYXMgLWcgJyR7MSsiJEAifSc9JyIkQCInDQorICBzZXRvcHQgTk9fR0xPQl9TVUJTVA0K K2Vsc2UNCisgIGNhc2UgYChzZXQgLW8pIDI+L2Rldi9udWxsYCBpbiAjKA0KKyAgKnBvc2l4Kikg Og0KKyAgICBzZXQgLW8gcG9zaXggOzsgIygNCisgICopIDoNCisgICAgIDs7DQorZXNhYw0KK2Zp DQorDQorDQorYXNfbmw9Jw0KKycNCitleHBvcnQgYXNfbmwNCisjIFByaW50aW5nIGEgbG9uZyBz dHJpbmcgY3Jhc2hlcyBTb2xhcmlzIDcgL3Vzci9iaW4vcHJpbnRmLg0KK2FzX2VjaG89J1xcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwN ClxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcNCithc19lY2hvPSRh c19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8NCithc19lY2hvPSRhc19lY2hv JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobw0KKyMgUHJlZmVyIGEga3No IHNoZWxsIGJ1aWx0aW4gb3ZlciBhbiBleHRlcm5hbCBwcmludGYgcHJvZ3JhbSBvbg0KU29sYXJp cywNCisjIGJ1dCB3aXRob3V0IHdhc3RpbmcgZm9ya3MgZm9yIGJhc2ggb3IgenNoLg0KK2lmIHRl c3QgLXogIiRCQVNIX1ZFUlNJT04kWlNIX1ZFUlNJT04iIFwNCisgICAgJiYgKHRlc3QgIlhgcHJp bnQgLXIgLS0gJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsNCnRoZW4NCisg IGFzX2VjaG89J3ByaW50IC1yIC0tJw0KKyAgYXNfZWNob19uPSdwcmludCAtcm4gLS0nDQorZWxp ZiAodGVzdCAiWGBwcmludGYgJXMgJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVs bDsgdGhlbg0KKyAgYXNfZWNobz0ncHJpbnRmICVzXG4nDQorICBhc19lY2hvX249J3ByaW50ZiAl cycNCitlbHNlDQorICBpZiB0ZXN0ICJYYCgvdXNyL3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAy Pi9kZXYvbnVsbGAiID0gIlgtbg0KJGFzX2VjaG8iOyB0aGVuDQorICAgIGFzX2VjaG9fYm9keT0n ZXZhbCAvdXNyL3VjYi9lY2hvIC1uICIkMSRhc19ubCInDQorICAgIGFzX2VjaG9fbj0nL3Vzci91 Y2IvZWNobyAtbicNCisgIGVsc2UNCisgICAgYXNfZWNob19ib2R5PSdldmFsIGV4cHIgIlgkMSIg OiAiWFxcKC4qXFwpIicNCisgICAgYXNfZWNob19uX2JvZHk9J2V2YWwNCisgICAgICBhcmc9JDE7 DQorICAgICAgY2FzZSAkYXJnIGluICMoDQorICAgICAgKiIkYXNfbmwiKikNCisJZXhwciAiWCRh cmciIDogIlhcXCguKlxcKSRhc19ubCI7DQorCWFyZz1gZXhwciAiWCRhcmciIDogIi4qJGFzX25s XFwoLipcXCkiYDs7DQorICAgICAgZXNhYzsNCisgICAgICBleHByICJYJGFyZyIgOiAiWFxcKC4q XFwpIiB8IHRyIC1kICIkYXNfbmwiDQorICAgICcNCisgICAgZXhwb3J0IGFzX2VjaG9fbl9ib2R5 DQorICAgIGFzX2VjaG9fbj0nc2ggLWMgJGFzX2VjaG9fbl9ib2R5IGFzX2VjaG8nDQorICBmaQ0K KyAgZXhwb3J0IGFzX2VjaG9fYm9keQ0KKyAgYXNfZWNobz0nc2ggLWMgJGFzX2VjaG9fYm9keSBh c19lY2hvJw0KK2ZpDQorDQorIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuDQoraWYgdGVzdCAi JHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4NCisgIFBBVEhfU0VQQVJBVE9SPToN CisgIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAy PiYxICYmIHsNCisgICAgKFBBVEg9Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+ L2Rldi9udWxsIDI+JjEgfHwNCisgICAgICBQQVRIX1NFUEFSQVRPUj0nOycNCisgIH0NCitmaQ0K Kw0KKw0KKyMgSUZTDQorIyBXZSBuZWVkIHNwYWNlLCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVj aXNlbHkgdGhhdCBvcmRlci4gIFF1b3RpbmcNCmlzDQorIyB0aGVyZSB0byBwcmV2ZW50IGVkaXRv cnMgZnJvbSBjb21wbGFpbmluZyBhYm91dCBzcGFjZS10YWIuDQorIyAoSWYgX0FTX1BBVEhfV0FM SyB3ZXJlIGNhbGxlZCB3aXRoIElGUyB1bnNldCwgaXQgd291bGQgZGlzYWJsZSB3b3JkDQorIyBz cGxpdHRpbmcgYnkgc2V0dGluZyBJRlMgdG8gZW1wdHkgdmFsdWUuKQ0KK0lGUz0iICIiCSRhc19u bCINCisNCisjIEZpbmQgd2hvIHdlIGFyZS4gIExvb2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFp biBubyBkaXJlY3RvcnkNCnNlcGFyYXRvci4NCitjYXNlICQwIGluICMoKA0KKyAgKltcXC9dKiAp IGFzX215c2VsZj0kMCA7Ow0KKyAgKikgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFS QVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAg dGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgdGVzdCAtciAiJGFzX2Rpci8kMCIg JiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJlYWsNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVf SUZTDQorDQorICAgICA7Ow0KK2VzYWMNCisjIFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMsIG1v c3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQnDQorIyBpbiB3aGljaCBjYXNl IHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4gdGhlIHBhdGguDQoraWYgdGVzdCAieCRhc19teXNl bGYiID0geDsgdGhlbg0KKyAgYXNfbXlzZWxmPSQwDQorZmkNCitpZiB0ZXN0ICEgLWYgIiRhc19t eXNlbGYiOyB0aGVuDQorICAkYXNfZWNobyAiJGFzX215c2VsZjogZXJyb3I6IGNhbm5vdCBmaW5k IG15c2VsZjsgcmVydW4gd2l0aCBhbg0KYWJzb2x1dGUgZmlsZSBuYW1lIiA+JjINCisgIGV4aXQg MQ0KK2ZpDQorDQorIyBVbnNldCB2YXJpYWJsZXMgdGhhdCB3ZSBkbyBub3QgbmVlZCBhbmQgd2hp Y2ggY2F1c2UgYnVncyAoZS5nLiBpbg0KKyMgcHJlLTMuMCBVV0lOIGtzaCkuICBCdXQgZG8gbm90 IGNhdXNlIGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8IGV4aXQNCjEiDQorIyBzdXBwcmVzc2Vz IGFueSAiU2VnbWVudGF0aW9uIGZhdWx0IiBtZXNzYWdlIHRoZXJlLiAgJygoJyBjb3VsZA0KKyMg dHJpZ2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQuDQorZm9yIGFzX3ZhciBpbiBCQVNIX0VOViBF TlYgTUFJTCBNQUlMUEFUSA0KK2RvIGV2YWwgdGVzdCB4XCR7JGFzX3ZhcitzZXR9ID0geHNldCBc DQorICAmJiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251bGwgMj4mMSAmJiB1 bnNldCAkYXNfdmFyIHx8DQo6DQorZG9uZQ0KK1BTMT0nJCAnDQorUFMyPSc+ICcNCitQUzQ9Jysg Jw0KKw0KKyMgTkxTIG51aXNhbmNlcy4NCitMQ19BTEw9Qw0KK2V4cG9ydCBMQ19BTEwNCitMQU5H VUFHRT1DDQorZXhwb3J0IExBTkdVQUdFDQorDQorIyBDRFBBVEguDQorKHVuc2V0IENEUEFUSCkg Pi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSA0KKw0KK2lmIHRlc3QgIngkQ09ORklHX1NI RUxMIiA9IHg7IHRoZW4NCisgIGFzX2JvdXJuZV9jb21wYXRpYmxlPSJpZiB0ZXN0IC1uIFwiXCR7 WlNIX1ZFUlNJT04rc2V0fVwiICYmIChlbXVsYXRlDQpzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVu IDoNCisgIGVtdWxhdGUgc2gNCisgIE5VTExDTUQ9Og0KKyAgIyBQcmUtNC4yIHZlcnNpb25zIG9m IFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiBcJHsxK1wiXCRAXCJ9LCB3aGljaA0KKyAgIyBpcyBj b250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4NCisgIGFsaWFzIC1n ICdcJHsxK1wiXCRAXCJ9Jz0nXCJcJEBcIicNCisgIHNldG9wdCBOT19HTE9CX1NVQlNUDQorZWxz ZQ0KKyAgY2FzZSBcYChzZXQgLW8pIDI+L2Rldi9udWxsXGAgaW4gIygNCisgICpwb3NpeCopIDoN CisgICAgc2V0IC1vIHBvc2l4IDs7ICMoDQorICAqKSA6DQorICAgICA7Ow0KK2VzYWMNCitmaQ0K KyINCisgIGFzX3JlcXVpcmVkPSJhc19mbl9yZXR1cm4gKCkgeyAoZXhpdCBcJDEpOyB9DQorYXNf Zm5fc3VjY2VzcyAoKSB7IGFzX2ZuX3JldHVybiAwOyB9DQorYXNfZm5fZmFpbHVyZSAoKSB7IGFz X2ZuX3JldHVybiAxOyB9DQorYXNfZm5fcmV0X3N1Y2Nlc3MgKCkgeyByZXR1cm4gMDsgfQ0KK2Fz X2ZuX3JldF9mYWlsdXJlICgpIHsgcmV0dXJuIDE7IH0NCisNCitleGl0Y29kZT0wDQorYXNfZm5f c3VjY2VzcyB8fCB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fc3VjY2VzcyBmYWlsZWQuOyB9DQor YXNfZm5fZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fZmFpbHVyZSBzdWNjZWVk ZWQuOyB9DQorYXNfZm5fcmV0X3N1Y2Nlc3MgfHwgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX3Jl dF9zdWNjZXNzIGZhaWxlZC47IH0NCithc19mbl9yZXRfZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7 IGVjaG8gYXNfZm5fcmV0X2ZhaWx1cmUgc3VjY2VlZGVkLjsNCn0NCitpZiAoIHNldCB4OyBhc19m bl9yZXRfc3VjY2VzcyB5ICYmIHRlc3QgeCA9IFwiXCQxXCIgKTsgdGhlbiA6DQorDQorZWxzZQ0K KyAgZXhpdGNvZGU9MTsgZWNobyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgd2VyZSBub3Qgc2F2ZWQu DQorZmkNCit0ZXN0IHhcJGV4aXRjb2RlID0geDAgfHwgZXhpdCAxIg0KKyAgYXNfc3VnZ2VzdGVk PSIgDQphc19saW5lbm9fMT0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19z dWdnZXN0ZWQ9JGFzX3N1Z2dlcw0KdGVkIiBhc19saW5lbm9fMWE9XCRMSU5FTk8NCisgDQphc19s aW5lbm9fMj0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9 JGFzX3N1Z2dlcw0KdGVkIiBhc19saW5lbm9fMmE9XCRMSU5FTk8NCisgIGV2YWwgJ3Rlc3QgXCJ4 XCRhc19saW5lbm9fMSdcJGFzX3J1bidcIiAhPQ0KXCJ4XCRhc19saW5lbm9fMidcJGFzX3J1bidc IiAmJg0KKyAgdGVzdCBcInhcYGV4cHIgXCRhc19saW5lbm9fMSdcJGFzX3J1bicgKyAxXGBcIiA9 DQpcInhcJGFzX2xpbmVub18yJ1wkYXNfcnVuJ1wiJyB8fCBleGl0IDEiDQorICBpZiAoZXZhbCAi JGFzX3JlcXVpcmVkIikgMj4vZGV2L251bGw7IHRoZW4gOg0KKyAgYXNfaGF2ZV9yZXF1aXJlZD15 ZXMNCitlbHNlDQorICBhc19oYXZlX3JlcXVpcmVkPW5vDQorZmkNCisgIGlmIHRlc3QgeCRhc19o YXZlX3JlcXVpcmVkID0geHllcyAmJiAoZXZhbCAiJGFzX3N1Z2dlc3RlZCIpDQoyPi9kZXYvbnVs bDsgdGhlbiA6DQorDQorZWxzZQ0KKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFS QVRPUg0KK2FzX2ZvdW5kPWZhbHNlDQorZm9yIGFzX2RpciBpbiAvYmluJFBBVEhfU0VQQVJBVE9S L3Vzci9iaW4kUEFUSF9TRVBBUkFUT1IkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQor ICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgYXNfZm91bmQ9Og0KKyAgY2FzZSAk YXNfZGlyIGluICMoDQorCSAvKikNCisJICAgZm9yIGFzX2Jhc2UgaW4gc2ggYmFzaCBrc2ggc2g1 OyBkbw0KKwkgICAgICMgVHJ5IG9ubHkgc2hlbGxzIHRoYXQgZXhpc3QsIHRvIHNhdmUgc2V2ZXJh bCBmb3Jrcy4NCisJICAgICBhc19zaGVsbD0kYXNfZGlyLyRhc19iYXNlDQorCSAgICAgaWYgeyB0 ZXN0IC1mICIkYXNfc2hlbGwiIHx8IHRlc3QgLWYgIiRhc19zaGVsbC5leGUiOyB9ICYmDQorCQkg ICAgeyAkYXNfZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVxdWlyZWQiIHwNCmFz X3J1bj1hICIkYXNfc2hlbGwiOyB9IDI+L2Rldi9udWxsOyB0aGVuIDoNCisgIENPTkZJR19TSEVM TD0kYXNfc2hlbGwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMNCisJCSAgIGlmIHsgJGFzX2VjaG8NCiIk YXNfYm91cm5lX2NvbXBhdGlibGUiIiRhc19zdWdnZXN0ZWQiIHwgYXNfcnVuPWEgIiRhc19zaGVs bCI7IH0NCjI+L2Rldi9udWxsOyB0aGVuIDoNCisgIGJyZWFrIDINCitmaQ0KK2ZpDQorCSAgIGRv bmU7Ow0KKyAgICAgICBlc2FjDQorICBhc19mb3VuZD1mYWxzZQ0KK2RvbmUNCiskYXNfZm91bmQg fHwgeyBpZiB7IHRlc3QgLWYgIiRTSEVMTCIgfHwgdGVzdCAtZiAiJFNIRUxMLmV4ZSI7IH0gJiYN CisJICAgICAgeyAkYXNfZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVxdWlyZWQi IHwNCmFzX3J1bj1hICIkU0hFTEwiOyB9IDI+L2Rldi9udWxsOyB0aGVuIDoNCisgIENPTkZJR19T SEVMTD0kU0hFTEwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMNCitmaTsgfQ0KK0lGUz0kYXNfc2F2ZV9J RlMNCisNCisNCisgICAgICBpZiB0ZXN0ICJ4JENPTkZJR19TSEVMTCIgIT0geDsgdGhlbiA6DQor ICAjIFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3ZSBoYXZlIHRvIHBy b3ZpZGUgYQ0KKwkjIG5ldXRyYWxpemF0aW9uIHZhbHVlIGZvciBzaGVsbHMgd2l0aG91dCB1bnNl dDsgYW5kIHRoaXMgYWxzbw0KKwkjIHdvcmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBjYW5ub3QgdW5z ZXQgbm9uZXhpc3RlbnQgdmFyaWFibGVzLg0KKwlCQVNIX0VOVj0vZGV2L251bGwNCisJRU5WPS9k ZXYvbnVsbA0KKwkodW5zZXQgQkFTSF9FTlYpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBCQVNI X0VOViBFTlYNCisJZXhwb3J0IENPTkZJR19TSEVMTA0KKwlleGVjICIkQ09ORklHX1NIRUxMIiAi JGFzX215c2VsZiIgJHsxKyIkQCJ9DQorZmkNCisNCisgICAgaWYgdGVzdCB4JGFzX2hhdmVfcmVx dWlyZWQgPSB4bm87IHRoZW4gOg0KKyAgJGFzX2VjaG8gIiQwOiBUaGlzIHNjcmlwdCByZXF1aXJl cyBhIHNoZWxsIG1vcmUgbW9kZXJuIHRoYW4gYWxsIg0KKyAgJGFzX2VjaG8gIiQwOiB0aGUgc2hl bGxzIHRoYXQgSSBmb3VuZCBvbiB5b3VyIHN5c3RlbS4iDQorICBpZiB0ZXN0IHgke1pTSF9WRVJT SU9OK3NldH0gPSB4c2V0IDsgdGhlbg0KKyAgICAkYXNfZWNobyAiJDA6IEluIHBhcnRpY3VsYXIs IHpzaCAkWlNIX1ZFUlNJT04gaGFzIGJ1Z3MgYW5kIHNob3VsZCINCisgICAgJGFzX2VjaG8gIiQw OiBiZSB1cGdyYWRlZCB0byB6c2ggNC4zLjQgb3IgbGF0ZXIuIg0KKyAgZWxzZQ0KKyAgICAkYXNf ZWNobyAiJDA6IFBsZWFzZSB0ZWxsIGJ1Zy1hdXRvY29uZkBnbnUub3JnIGFib3V0IHlvdXIgc3lz dGVtLA0KKyQwOiBpbmNsdWRpbmcgYW55IGVycm9yIHBvc3NpYmx5IG91dHB1dCBiZWZvcmUgdGhp cw0KKyQwOiBtZXNzYWdlLiBUaGVuIGluc3RhbGwgYSBtb2Rlcm4gc2hlbGwsIG9yIG1hbnVhbGx5 IHJ1bg0KKyQwOiB0aGUgc2NyaXB0IHVuZGVyIHN1Y2ggYSBzaGVsbCBpZiB5b3UgZG8gaGF2ZSBv bmUuIg0KKyAgZmkNCisgIGV4aXQgMQ0KK2ZpDQorZmkNCitmaQ0KK1NIRUxMPSR7Q09ORklHX1NI RUxMLS9iaW4vc2h9DQorZXhwb3J0IFNIRUxMDQorIyBVbnNldCBtb3JlIHZhcmlhYmxlcyBrbm93 biB0byBpbnRlcmZlcmUgd2l0aCBiZWhhdmlvciBvZiBjb21tb24NCnRvb2xzLg0KK0NMSUNPTE9S X0ZPUkNFPSBHUkVQX09QVElPTlM9DQordW5zZXQgQ0xJQ09MT1JfRk9SQ0UgR1JFUF9PUFRJT05T DQorDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorIyMgTTRzaCBTaGVsbCBGdW5jdGlv bnMuICMjDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorIyBhc19mbl91bnNldCBWQVIN CisjIC0tLS0tLS0tLS0tLS0tLQ0KKyMgUG9ydGFibHkgdW5zZXQgVkFSLg0KK2FzX2ZuX3Vuc2V0 ICgpDQorew0KKyAgeyBldmFsICQxPTsgdW5zZXQgJDE7fQ0KK30NCithc191bnNldD1hc19mbl91 bnNldA0KKw0KKyMgYXNfZm5fc2V0X3N0YXR1cyBTVEFUVVMNCisjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQorIyBTZXQgJD8gdG8gU1RBVFVTLCB3aXRob3V0IGZvcmtpbmcuDQorYXNfZm5fc2V0 X3N0YXR1cyAoKQ0KK3sNCisgIHJldHVybiAkMQ0KK30gIyBhc19mbl9zZXRfc3RhdHVzDQorDQor IyBhc19mbl9leGl0IFNUQVRVUw0KKyMgLS0tLS0tLS0tLS0tLS0tLS0NCisjIEV4aXQgdGhlIHNo ZWxsIHdpdGggU1RBVFVTLCBldmVuIGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4dC4N Cithc19mbl9leGl0ICgpDQorew0KKyAgc2V0ICtlDQorICBhc19mbl9zZXRfc3RhdHVzICQxDQor ICBleGl0ICQxDQorfSAjIGFzX2ZuX2V4aXQNCisNCisjIGFzX2ZuX21rZGlyX3ANCisjIC0tLS0t LS0tLS0tLS0NCisjIENyZWF0ZSAiJGFzX2RpciIgYXMgYSBkaXJlY3RvcnksIGluY2x1ZGluZyBw YXJlbnRzIGlmIG5lY2Vzc2FyeS4NCithc19mbl9ta2Rpcl9wICgpDQorew0KKw0KKyAgY2FzZSAk YXNfZGlyIGluICMoDQorICAtKikgYXNfZGlyPS4vJGFzX2Rpcjs7DQorICBlc2FjDQorICB0ZXN0 IC1kICIkYXNfZGlyIiB8fCBldmFsICRhc19ta2Rpcl9wIHx8IHsNCisgICAgYXNfZGlycz0NCisg ICAgd2hpbGUgOjsgZG8NCisgICAgICBjYXNlICRhc19kaXIgaW4gIygNCisgICAgICAqXCcqKSBh c19xZGlyPWAkYXNfZWNobyAiJGFzX2RpciIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7Ow0K IycoDQorICAgICAgKikgYXNfcWRpcj0kYXNfZGlyOzsNCisgICAgICBlc2FjDQorICAgICAgYXNf ZGlycz0iJyRhc19xZGlyJyAkYXNfZGlycyINCisgICAgICBhc19kaXI9YCRhc19kaXJuYW1lIC0t ICIkYXNfZGlyIiB8fA0KKyRhc19leHByIFgiJGFzX2RpciIgOiAnWFwoLipbXi9dXCkvLypbXi9d W14vXSovKiQnIFx8IFwNCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKVteL10nIFx8IFwNCisJIFgi JGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwNCisJIFgiJGFzX2RpciIgOiAnWFwoL1wpJyBcfCAu IDI+L2Rldi9udWxsIHx8DQorJGFzX2VjaG8gWCIkYXNfZGlyIiB8DQorICAgIHNlZCAnL15YXCgu KlteL11cKVwvXC8qW14vXVteL10qXC8qJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9 DQorCSAgL15YXChcL1wvXClbXi9dLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0K KwkgIC9eWFwoXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15Y XChcL1wpLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIHMvLiovLi87IHEn YA0KKyAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrDQorICAgIGRvbmUNCisgICAgdGVz dCAteiAiJGFzX2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIg0KKyAgfSB8fCB0ZXN0IC1k ICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkNCiRhc19k aXIiDQorDQorDQorfSAjIGFzX2ZuX21rZGlyX3ANCisjIGFzX2ZuX2FwcGVuZCBWQVIgVkFMVUUN CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIEFwcGVuZCB0aGUgdGV4dCBpbiBWQUxVRSB0 byB0aGUgZW5kIG9mIHRoZSBkZWZpbml0aW9uIGNvbnRhaW5lZCBpbg0KVkFSLiBUYWtlDQorIyBh ZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6ZWQg bGluZWFyDQpncm93dGggb3Zlcg0KKyMgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVhZCBvZiB0aGUg dHlwaWNhbCBxdWFkcmF0aWMgZ3Jvd3RoIHByZXNlbnQgaW4NCm5haXZlDQorIyBpbXBsZW1lbnRh dGlvbnMuDQoraWYgKGV2YWwgImFzX3Zhcj0xOyBhc192YXIrPTI7IHRlc3QgeFwkYXNfdmFyID0g eDEyIikgMj4vZGV2L251bGw7DQp0aGVuIDoNCisgIGV2YWwgJ2FzX2ZuX2FwcGVuZCAoKQ0KKyAg ew0KKyAgICBldmFsICQxKz1cJDINCisgIH0nDQorZWxzZQ0KKyAgYXNfZm5fYXBwZW5kICgpDQor ICB7DQorICAgIGV2YWwgJDE9XCQkMVwkMg0KKyAgfQ0KK2ZpICMgYXNfZm5fYXBwZW5kDQorDQor IyBhc19mbl9hcml0aCBBUkcuLi4NCisjIC0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgUGVyZm9ybSBh cml0aG1ldGljIGV2YWx1YXRpb24gb24gdGhlIEFSR3MsIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGlu DQp0aGUNCisjIGdsb2JhbCAkYXNfdmFsLiBUYWtlIGFkdmFudGFnZSBvZiBzaGVsbHMgdGhhdCBj YW4gYXZvaWQgZm9ya3MuIFRoZQ0KYXJndW1lbnRzDQorIyBtdXN0IGJlIHBvcnRhYmxlIGFjcm9z cyAkKCgpKSBhbmQgZXhwci4NCitpZiAoZXZhbCAidGVzdCBcJCgoIDEgKyAxICkpID0gMiIpIDI+ L2Rldi9udWxsOyB0aGVuIDoNCisgIGV2YWwgJ2FzX2ZuX2FyaXRoICgpDQorICB7DQorICAgIGFz X3ZhbD0kKCggJCogKSkNCisgIH0nDQorZWxzZQ0KKyAgYXNfZm5fYXJpdGggKCkNCisgIHsNCisg ICAgYXNfdmFsPWBleHByICIkQCIgfHwgdGVzdCAkPyAtZXEgMWANCisgIH0NCitmaSAjIGFzX2Zu X2FyaXRoDQorDQorDQorIyBhc19mbl9lcnJvciBFUlJPUiBbTElORU5PIExPR19GRF0NCisjIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgT3V0cHV0ICJgYmFzZW5hbWUgJDBg OiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci4gSWYgTElORU5PIGFuZCBMT0dfRkQNCmFyZQ0KKyMg cHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBlcnJvciB0byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJ TkVOTy4gVGhlbg0KZXhpdCB0aGUNCisjIHNjcmlwdCB3aXRoIHN0YXR1cyAkPywgdXNpbmcgMSBp ZiB0aGF0IHdhcyAwLg0KK2FzX2ZuX2Vycm9yICgpDQorew0KKyAgYXNfc3RhdHVzPSQ/OyB0ZXN0 ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTENCisgIGlmIHRlc3QgIiQzIjsgdGhlbg0K KyAgICBhc19saW5lbm89JHthc19saW5lbm8tIiQyIn0NCmFzX2xpbmVub19zdGFjaz1hc19saW5l bm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaw0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBlcnJvcjogJDEiID4mJDMNCisgIGZpDQorICAkYXNfZWNobyAiJGFzX21l OiBlcnJvcjogJDEiID4mMg0KKyAgYXNfZm5fZXhpdCAkYXNfc3RhdHVzDQorfSAjIGFzX2ZuX2Vy cm9yDQorDQoraWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjEgJiYNCisgICB0ZXN0 ICJYYGV4cHIgMDAwMDEgOiAnLipcKC4uLlwpJ2AiID0gWDAwMTsgdGhlbg0KKyAgYXNfZXhwcj1l eHByDQorZWxzZQ0KKyAgYXNfZXhwcj1mYWxzZQ0KK2ZpDQorDQoraWYgKGJhc2VuYW1lIC0tIC8p ID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0ICJYYGJhc2VuYW1lIC0tIC8gMj4mMWAiID0NCiJYLyI7 IHRoZW4NCisgIGFzX2Jhc2VuYW1lPWJhc2VuYW1lDQorZWxzZQ0KKyAgYXNfYmFzZW5hbWU9ZmFs c2UNCitmaQ0KKw0KK2lmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYgdGVzdCAiWCRhc19kaXIi ID0gWC8pID4vZGV2L251bGwgMj4mMTsNCnRoZW4NCisgIGFzX2Rpcm5hbWU9ZGlybmFtZQ0KK2Vs c2UNCisgIGFzX2Rpcm5hbWU9ZmFsc2UNCitmaQ0KKw0KK2FzX21lPWAkYXNfYmFzZW5hbWUgLS0g IiQwIiB8fA0KKyRhc19leHByIFgvIiQwIiA6ICcuKi9cKFteL11bXi9dKlwpLyokJyBcfCBcDQor CSBYIiQwIiA6ICdYXCgvL1wpJCcgXHwgXA0KKwkgWCIkMCIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rl di9udWxsIHx8DQorJGFzX2VjaG8gWC8iJDAiIHwNCisgICAgc2VkICcvXi4qXC9cKFteL11bXi9d KlwpXC8qJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXC9cKFwvXC9c KSQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwvXChcL1wpLiovew0K KwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIHMvLiovLi87IHEnYA0KKw0KKyMgQXZv aWQgZGVwZW5kaW5nIHVwb24gQ2hhcmFjdGVyIFJhbmdlcy4NCithc19jcl9sZXR0ZXJzPSdhYmNk ZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicNCithc19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9Q UVJTVFVWV1hZWicNCithc19jcl9MZXR0ZXJzPSRhc19jcl9sZXR0ZXJzJGFzX2NyX0xFVFRFUlMN Cithc19jcl9kaWdpdHM9JzAxMjM0NTY3ODknDQorYXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMk YXNfY3JfZGlnaXRzDQorDQorDQorICBhc19saW5lbm9fMT0kTElORU5PIGFzX2xpbmVub18xYT0k TElORU5PDQorICBhc19saW5lbm9fMj0kTElORU5PIGFzX2xpbmVub18yYT0kTElORU5PDQorICBl dmFsICd0ZXN0ICJ4JGFzX2xpbmVub18xJyRhc19ydW4nIiAhPSAieCRhc19saW5lbm9fMickYXNf cnVuJyIgJiYNCisgIHRlc3QgInhgZXhwciAkYXNfbGluZW5vXzEnJGFzX3J1bicgKyAxYCIgPSAi eCRhc19saW5lbm9fMickYXNfcnVuJyInDQp8fCB7DQorICAjIEJsYW1lIExlZSBFLiBNY01haG9u ICgxOTMxLTE5ODkpIGZvciBzZWQncyBzeW50YXguICA6LSkNCisgIHNlZCAtbiAnDQorICAgIHAN CisgICAgL1skXUxJTkVOTy89DQorICAnIDwkYXNfbXlzZWxmIHwNCisgICAgc2VkICcNCisgICAg ICBzL1skXUxJTkVOTy4qLyYtLw0KKyAgICAgIHQgbGluZW5vDQorICAgICAgYg0KKyAgICAgIDps aW5lbm8NCisgICAgICBODQorICAgICAgOmxvb3ANCisgICAgICBzL1skXUxJTkVOT1woW14nJGFz X2NyX2FsbnVtJ19dLipcblwpXCguKlwpL1wyXDFcMi8NCisgICAgICB0IGxvb3ANCisgICAgICBz Ly1cbi4qLy8NCisgICAgJyA+JGFzX21lLmxpbmVubyAmJg0KKyAgY2htb2QgK3ggIiRhc19tZS5s aW5lbm8iIHx8DQorICAgIHsgJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBjcmVhdGUg JGFzX21lLmxpbmVubzsgcmVydW4gd2l0aA0KYSBQT1NJWCBzaGVsbCIgPiYyOyBhc19mbl9leGl0 IDE7IH0NCisNCisgICMgRG9uJ3QgdHJ5IHRvIGV4ZWMgYXMgaXQgY2hhbmdlcyAkWzBdLCBjYXVz aW5nIGFsbCBzb3J0IG9mIHByb2JsZW1zDQorICAjICh0aGUgZGlybmFtZSBvZiAkWzBdIGlzIG5v dCB0aGUgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgZmluZCB0aGUNCisgICMgb3JpZ2luYWwgYW5kIHNv IG9uLiAgQXV0b2NvbmYgaXMgZXNwZWNpYWxseSBzZW5zaXRpdmUgdG8gdGhpcykuDQorICAuICIu LyRhc19tZS5saW5lbm8iDQorICAjIEV4aXQgc3RhdHVzIGlzIHRoYXQgb2YgdGhlIGxhc3QgY29t bWFuZC4NCisgIGV4aXQNCit9DQorDQorRUNIT19DPSBFQ0hPX049IEVDSE9fVD0NCitjYXNlIGBl Y2hvIC1uIHhgIGluICMoKCgoKA0KKy1uKikNCisgIGNhc2UgYGVjaG8gJ3h5XGMnYCBpbg0KKyAg KmMqKSBFQ0hPX1Q9JwknOzsJIyBFQ0hPX1QgaXMgc2luZ2xlIHRhYiBjaGFyYWN0ZXIuDQorICB4 eSkgIEVDSE9fQz0nXGMnOzsNCisgICopICAgZWNobyBgZWNobyBrc2g4OCBidWcgb24gQUlYIDYu MWAgPiAvZGV2L251bGwNCisgICAgICAgRUNIT19UPScJJzs7DQorICBlc2FjOzsNCisqKQ0KKyAg RUNIT19OPSctbic7Ow0KK2VzYWMNCisNCitybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQu ZmlsZQ0KK2lmIHRlc3QgLWQgY29uZiQkLmRpcjsgdGhlbg0KKyAgcm0gLWYgY29uZiQkLmRpci9j b25mJCQuZmlsZQ0KK2Vsc2UNCisgIHJtIC1mIGNvbmYkJC5kaXINCisgIG1rZGlyIGNvbmYkJC5k aXIgMj4vZGV2L251bGwNCitmaQ0KK2lmIChlY2hvID5jb25mJCQuZmlsZSkgMj4vZGV2L251bGw7 IHRoZW4NCisgIGlmIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbg0K KyAgICBhc19sbl9zPSdsbiAtcycNCisgICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hh czoNCisgICAgIyAxKSBPbiBNU1lTLCBib3RoIGBsbiAtcyBmaWxlIGRpcicgYW5kIGBsbiBmaWxl IGRpcicgZmFpbC4NCisgICAgIyAyKSBESkdQUCA8IDIuMDQgaGFzIG5vIHN5bWxpbmtzOyBgbG4g LXMnIGNyZWF0ZXMgYSB3cmFwcGVyDQpleGVjdXRhYmxlLg0KKyAgICAjIEluIGJvdGggY2FzZXMs IHdlIGhhdmUgdG8gZGVmYXVsdCB0byBgY3AgLXAnLg0KKyAgICBsbiAtcyBjb25mJCQuZmlsZSBj b25mJCQuZGlyIDI+L2Rldi9udWxsICYmIHRlc3QgISAtZiBjb25mJCQuZXhlDQp8fA0KKyAgICAg IGFzX2xuX3M9J2NwIC1wJw0KKyAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251 bGw7IHRoZW4NCisgICAgYXNfbG5fcz1sbg0KKyAgZWxzZQ0KKyAgICBhc19sbl9zPSdjcCAtcCcN CisgIGZpDQorZWxzZQ0KKyAgYXNfbG5fcz0nY3AgLXAnDQorZmkNCitybSAtZiBjb25mJCQgY29u ZiQkLmV4ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxlIGNvbmYkJC5maWxlDQorcm1kaXIgY29uZiQk LmRpciAyPi9kZXYvbnVsbA0KKw0KK2lmIG1rZGlyIC1wIC4gMj4vZGV2L251bGw7IHRoZW4NCisg IGFzX21rZGlyX3A9J21rZGlyIC1wICIkYXNfZGlyIicNCitlbHNlDQorICB0ZXN0IC1kIC4vLXAg JiYgcm1kaXIgLi8tcA0KKyAgYXNfbWtkaXJfcD1mYWxzZQ0KK2ZpDQorDQoraWYgdGVzdCAteCAv ID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgYXNfdGVzdF94PSd0ZXN0IC14Jw0KK2Vsc2UNCisg IGlmIGxzIC1kTCAvID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgICBhc19sc19MX29wdGlvbj1M DQorICBlbHNlDQorICAgIGFzX2xzX0xfb3B0aW9uPQ0KKyAgZmkNCisgIGFzX3Rlc3RfeD0nDQor ICAgIGV2YWwgc2ggLWMgJ1wnJw0KKyAgICAgIGlmIHRlc3QgLWQgIiQxIjsgdGhlbg0KKwl0ZXN0 IC1kICIkMS8uIjsNCisgICAgICBlbHNlDQorCWNhc2UgJDEgaW4gIygNCisJLSopc2V0ICIuLyQx Ijs7DQorCWVzYWM7DQorCWNhc2UgYGxzIC1sZCckYXNfbHNfTF9vcHRpb24nICIkMSIgMj4vZGV2 L251bGxgIGluICMoKA0KKwk/Pz9bc3hdKik6OzsqKWZhbHNlOztlc2FjO2ZpDQorICAgICdcJycg c2gNCisgICcNCitmaQ0KK2FzX2V4ZWN1dGFibGVfcD0kYXNfdGVzdF94DQorDQorIyBTZWQgZXhw cmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIENQUCBuYW1lLg0KK2FzX3RyX2Nw cD0iZXZhbCBzZWQNCid5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFz X2NyX2FsbnVtXSVfJWcnIg0KKw0KKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9u dG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLg0KK2FzX3RyX3NoPSJldmFsIHNlZCAneSUqKyVwcCU7 cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciDQorDQorDQorZXhlYyA3PCYwIDwvZGV2L251bGwgNj4m MQ0KKw0KKyMgTmFtZSBvZiB0aGUgaG9zdC4NCisjIGhvc3RuYW1lIG9uIHNvbWUgc3lzdGVtcyAo U1ZSMy4yLCBMaW51eCkgcmV0dXJucyBhIGJvZ3VzIGV4aXQNCnN0YXR1cywNCisjIHNvIHVuYW1l IGdldHMgcnVuIHRvby4NCithY19ob3N0bmFtZT1gKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9k ZXYvbnVsbCB8IHNlZCAxcWANCisNCisjDQorIyBJbml0aWFsaXphdGlvbnMuDQorIw0KK2FjX2Rl ZmF1bHRfcHJlZml4PS91c3IvbG9jYWwNCithY19jbGVhbl9maWxlcz0NCithY19jb25maWdfbGli b2JqX2Rpcj0uDQorTElCT0JKUz0NCitjcm9zc19jb21waWxpbmc9bm8NCitzdWJkaXJzPQ0KK01G TEFHUz0NCitNQUtFRkxBR1M9DQorDQorIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuDQorUEFD S0FHRV9OQU1FPSduZXdsaWInDQorUEFDS0FHRV9UQVJOQU1FPSduZXdsaWInDQorUEFDS0FHRV9W RVJTSU9OPScxLjE5LjAnDQorUEFDS0FHRV9TVFJJTkc9J25ld2xpYiAxLjE5LjAnDQorUEFDS0FH RV9CVUdSRVBPUlQ9JycNCitQQUNLQUdFX1VSTD0nJw0KKw0KK2FjX3VuaXF1ZV9maWxlPSJpc2F0 dHkuYyINCithY19zdWJzdF92YXJzPSdMVExJQk9CSlMNCitMSUJPQkpTDQorc3lzX2Rpcg0KK21h Y2hpbmVfZGlyDQorbGlibV9tYWNoaW5lX2Rpcg0KK2xwZngNCithZXh0DQorb2V4dA0KK09CSkVY VA0KK1VTRV9MSUJUT09MX0ZBTFNFDQorVVNFX0xJQlRPT0xfVFJVRQ0KK0VMSVhfTEVWRUxfNF9G QUxTRQ0KK0VMSVhfTEVWRUxfNF9UUlVFDQorRUxJWF9MRVZFTF8zX0ZBTFNFDQorRUxJWF9MRVZF TF8zX1RSVUUNCitFTElYX0xFVkVMXzJfRkFMU0UNCitFTElYX0xFVkVMXzJfVFJVRQ0KK0VMSVhf TEVWRUxfMV9GQUxTRQ0KK0VMSVhfTEVWRUxfMV9UUlVFDQorRUxJWF9MRVZFTF8wX0ZBTFNFDQor RUxJWF9MRVZFTF8wX1RSVUUNCitMREZMQUdTDQorTk9fSU5DTFVERV9MSVNUDQorTkVXTElCX0NG TEFHUw0KK0NDQVNGTEFHUw0KK0NDQVMNCitNQUlOVA0KK01BSU5UQUlORVJfTU9ERV9GQUxTRQ0K K01BSU5UQUlORVJfTU9ERV9UUlVFDQorUkVBREVMRg0KK1JBTkxJQg0KK0FSDQorQVMNCithbV9f ZmFzdGRlcENDX0ZBTFNFDQorYW1fX2Zhc3RkZXBDQ19UUlVFDQorQ0NERVBNT0RFDQorQU1ERVBC QUNLU0xBU0gNCitBTURFUF9GQUxTRQ0KK0FNREVQX1RSVUUNCithbV9fcXVvdGUNCithbV9faW5j bHVkZQ0KK0RFUERJUg0KK0NDDQorYW1fX3VudGFyDQorYW1fX3Rhcg0KK0FNVEFSDQorYW1fX2xl YWRpbmdfZG90DQorU0VUX01BS0UNCitBV0sNCitta2Rpcl9wDQorSU5TVEFMTF9TVFJJUF9QUk9H UkFNDQorU1RSSVANCitpbnN0YWxsX3NoDQorTUFLRUlORk8NCitBVVRPSEVBREVSDQorQVVUT01B S0UNCitBVVRPQ09ORg0KK0FDTE9DQUwNCitWRVJTSU9ODQorUEFDS0FHRQ0KK0NZR1BBVEhfVw0K K0lOU1RBTExfREFUQQ0KK0lOU1RBTExfU0NSSVBUDQorSU5TVEFMTF9QUk9HUkFNDQoraG9zdF9v cw0KK2hvc3RfdmVuZG9yDQoraG9zdF9jcHUNCitob3N0DQorYnVpbGRfb3MNCitidWlsZF92ZW5k b3INCitidWlsZF9jcHUNCitidWlsZA0KK25ld2xpYl9iYXNlZGlyDQorTUFZX1NVUFBMWV9TWVND QUxMU19GQUxTRQ0KK01BWV9TVVBQTFlfU1lTQ0FMTFNfVFJVRQ0KK3RhcmdldF9hbGlhcw0KK2hv c3RfYWxpYXMNCitidWlsZF9hbGlhcw0KK0xJQlMNCitFQ0hPX1QNCitFQ0hPX04NCitFQ0hPX0MN CitERUZTDQorbWFuZGlyDQorbG9jYWxlZGlyDQorbGliZGlyDQorcHNkaXINCitwZGZkaXINCitk dmlkaXINCitodG1sZGlyDQoraW5mb2Rpcg0KK2RvY2Rpcg0KK29sZGluY2x1ZGVkaXINCitpbmNs dWRlZGlyDQorbG9jYWxzdGF0ZWRpcg0KK3NoYXJlZHN0YXRlZGlyDQorc3lzY29uZmRpcg0KK2Rh dGFkaXINCitkYXRhcm9vdGRpcg0KK2xpYmV4ZWNkaXINCitzYmluZGlyDQorYmluZGlyDQorcHJv Z3JhbV90cmFuc2Zvcm1fbmFtZQ0KK3ByZWZpeA0KK2V4ZWNfcHJlZml4DQorUEFDS0FHRV9VUkwN CitQQUNLQUdFX0JVR1JFUE9SVA0KK1BBQ0tBR0VfU1RSSU5HDQorUEFDS0FHRV9WRVJTSU9ODQor UEFDS0FHRV9UQVJOQU1FDQorUEFDS0FHRV9OQU1FDQorUEFUSF9TRVBBUkFUT1INCitTSEVMTCcN CithY19zdWJzdF9maWxlcz0nJw0KK2FjX3VzZXJfb3B0cz0nDQorZW5hYmxlX29wdGlvbl9jaGVj a2luZw0KK2VuYWJsZV9tdWx0aWxpYg0KK2VuYWJsZV90YXJnZXRfb3B0c3BhY2UNCitlbmFibGVf bWFsbG9jX2RlYnVnZ2luZw0KK2VuYWJsZV9uZXdsaWJfbXVsdGl0aHJlYWQNCitlbmFibGVfbmV3 bGliX2ljb252DQorZW5hYmxlX25ld2xpYl9lbGl4X2xldmVsDQorZW5hYmxlX25ld2xpYl9pb19m bG9hdA0KK2VuYWJsZV9uZXdsaWJfc3VwcGxpZWRfc3lzY2FsbHMNCitlbmFibGVfZGVwZW5kZW5j eV90cmFja2luZw0KK2VuYWJsZV9tYWludGFpbmVyX21vZGUNCisnDQorICAgICAgYWNfcHJlY2lv dXNfdmFycz0nYnVpbGRfYWxpYXMNCitob3N0X2FsaWFzDQordGFyZ2V0X2FsaWFzDQorQ0NBUw0K K0NDQVNGTEFHUycNCisNCisNCisjIEluaXRpYWxpemUgc29tZSB2YXJpYWJsZXMgc2V0IGJ5IG9w dGlvbnMuDQorYWNfaW5pdF9oZWxwPQ0KK2FjX2luaXRfdmVyc2lvbj1mYWxzZQ0KK2FjX3VucmVj b2duaXplZF9vcHRzPQ0KK2FjX3VucmVjb2duaXplZF9zZXA9DQorIyBUaGUgdmFyaWFibGVzIGhh dmUgdGhlIHNhbWUgbmFtZXMgYXMgdGhlIG9wdGlvbnMsIHdpdGgNCisjIGRhc2hlcyBjaGFuZ2Vk IHRvIHVuZGVybGluZXMuDQorY2FjaGVfZmlsZT0vZGV2L251bGwNCitleGVjX3ByZWZpeD1OT05F DQorbm9fY3JlYXRlPQ0KK25vX3JlY3Vyc2lvbj0NCitwcmVmaXg9Tk9ORQ0KK3Byb2dyYW1fcHJl Zml4PU5PTkUNCitwcm9ncmFtX3N1ZmZpeD1OT05FDQorcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT1z LHgseCwNCitzaWxlbnQ9DQorc2l0ZT0NCitzcmNkaXI9DQordmVyYm9zZT0NCit4X2luY2x1ZGVz PU5PTkUNCit4X2xpYnJhcmllcz1OT05FDQorDQorIyBJbnN0YWxsYXRpb24gZGlyZWN0b3J5IG9w dGlvbnMuDQorIyBUaGVzZSBhcmUgbGVmdCB1bmV4cGFuZGVkIHNvIHVzZXJzIGNhbiAibWFrZSBp bnN0YWxsDQpleGVjX3ByZWZpeD0vZm9vIg0KKyMgYW5kIGFsbCB0aGUgdmFyaWFibGVzIHRoYXQg YXJlIHN1cHBvc2VkIHRvIGJlIGJhc2VkIG9uIGV4ZWNfcHJlZml4DQorIyBieSBkZWZhdWx0IHdp bGwgYWN0dWFsbHkgY2hhbmdlLg0KKyMgVXNlIGJyYWNlcyBpbnN0ZWFkIG9mIHBhcmVucyBiZWNh dXNlIHNoLCBwZXJsLCBldGMuIGFsc28gYWNjZXB0DQp0aGVtLg0KKyMgKFRoZSBsaXN0IGZvbGxv d3MgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIEdOVSBDb2RpbmcgU3RhbmRhcmRzLikNCitiaW5kaXI9 JyR7ZXhlY19wcmVmaXh9L2JpbicNCitzYmluZGlyPScke2V4ZWNfcHJlZml4fS9zYmluJw0KK2xp YmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMnDQorZGF0YXJvb3RkaXI9JyR7cHJlZml4 fS9zaGFyZScNCitkYXRhZGlyPScke2RhdGFyb290ZGlyfScNCitzeXNjb25mZGlyPScke3ByZWZp eH0vZXRjJw0KK3NoYXJlZHN0YXRlZGlyPScke3ByZWZpeH0vY29tJw0KK2xvY2Fsc3RhdGVkaXI9 JyR7cHJlZml4fS92YXInDQoraW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnDQorb2xkaW5j bHVkZWRpcj0nL3Vzci9pbmNsdWRlJw0KK2RvY2Rpcj0nJHtkYXRhcm9vdGRpcn0vZG9jLyR7UEFD S0FHRV9UQVJOQU1FfScNCitpbmZvZGlyPScke2RhdGFyb290ZGlyfS9pbmZvJw0KK2h0bWxkaXI9 JyR7ZG9jZGlyfScNCitkdmlkaXI9JyR7ZG9jZGlyfScNCitwZGZkaXI9JyR7ZG9jZGlyfScNCitw c2Rpcj0nJHtkb2NkaXJ9Jw0KK2xpYmRpcj0nJHtleGVjX3ByZWZpeH0vbGliJw0KK2xvY2FsZWRp cj0nJHtkYXRhcm9vdGRpcn0vbG9jYWxlJw0KK21hbmRpcj0nJHtkYXRhcm9vdGRpcn0vbWFuJw0K Kw0KK2FjX3ByZXY9DQorYWNfZGFzaGRhc2g9DQorZm9yIGFjX29wdGlvbg0KK2RvDQorICAjIElm IHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZHMgYW4gYXJndW1lbnQsIGFzc2lnbiBpdC4NCisgIGlm IHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbg0KKyAgICBldmFsICRhY19wcmV2PVwkYWNfb3B0aW9u DQorICAgIGFjX3ByZXY9DQorICAgIGNvbnRpbnVlDQorICBmaQ0KKw0KKyAgY2FzZSAkYWNfb3B0 aW9uIGluDQorICAqPSopCWFjX29wdGFyZz1gZXhwciAiWCRhY19vcHRpb24iIDogJ1tePV0qPVwo LipcKSdgIDs7DQorICAqKQlhY19vcHRhcmc9eWVzIDs7DQorICBlc2FjDQorDQorICAjIEFjY2Vw dCB0aGUgaW1wb3J0YW50IEN5Z251cyBjb25maWd1cmUgb3B0aW9ucywgc28gd2UgY2FuIGRpYWdu b3NlDQp0eXBvcy4NCisNCisgIGNhc2UgJGFjX2Rhc2hkYXNoJGFjX29wdGlvbiBpbg0KKyAgLS0p DQorICAgIGFjX2Rhc2hkYXNoPXllcyA7Ow0KKw0KKyAgLWJpbmRpciB8IC0tYmluZGlyIHwgLS1i aW5kaSB8IC0tYmluZCB8IC0tYmluIHwgLS1iaSkNCisgICAgYWNfcHJldj1iaW5kaXIgOzsNCisg IC1iaW5kaXI9KiB8IC0tYmluZGlyPSogfCAtLWJpbmRpPSogfCAtLWJpbmQ9KiB8IC0tYmluPSog fCAtLWJpPSopDQorICAgIGJpbmRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtYnVpbGQgfCAtLWJ1 aWxkIHwgLS1idWlsIHwgLS1idWkgfCAtLWJ1KQ0KKyAgICBhY19wcmV2PWJ1aWxkX2FsaWFzIDs7 DQorICAtYnVpbGQ9KiB8IC0tYnVpbGQ9KiB8IC0tYnVpbD0qIHwgLS1idWk9KiB8IC0tYnU9KikN CisgICAgYnVpbGRfYWxpYXM9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWNhY2hlLWZpbGUgfCAtLWNh Y2hlLWZpbGUgfCAtLWNhY2hlLWZpbCB8IC0tY2FjaGUtZmkgXA0KKyAgfCAtLWNhY2hlLWYgfCAt LWNhY2hlLSB8IC0tY2FjaGUgfCAtLWNhY2ggfCAtLWNhYyB8IC0tY2EgfCAtLWMpDQorICAgIGFj X3ByZXY9Y2FjaGVfZmlsZSA7Ow0KKyAgLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsZT0qIHwg LS1jYWNoZS1maWw9KiB8IC0tY2FjaGUtZmk9KiBcDQorICB8IC0tY2FjaGUtZj0qIHwgLS1jYWNo ZS09KiB8IC0tY2FjaGU9KiB8IC0tY2FjaD0qIHwgLS1jYWM9KiB8IC0tY2E9Kg0KfCAtLWM9KikN CisgICAgY2FjaGVfZmlsZT0kYWNfb3B0YXJnIDs7DQorDQorICAtLWNvbmZpZy1jYWNoZSB8IC1D KQ0KKyAgICBjYWNoZV9maWxlPWNvbmZpZy5jYWNoZSA7Ow0KKw0KKyAgLWRhdGFkaXIgfCAtLWRh dGFkaXIgfCAtLWRhdGFkaSB8IC0tZGF0YWQpDQorICAgIGFjX3ByZXY9ZGF0YWRpciA7Ow0KKyAg LWRhdGFkaXI9KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9KiB8IC0tZGF0YWQ9KikNCisgICAg ZGF0YWRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290ZGly IHwgLS1kYXRhcm9vdGRpIHwgLS1kYXRhcm9vdGQgfCAtLQ0KZGF0YXJvb3QgXA0KKyAgfCAtLWRh dGFyb28gfCAtLWRhdGFybyB8IC0tZGF0YXIpDQorICAgIGFjX3ByZXY9ZGF0YXJvb3RkaXIgOzsN CisgIC1kYXRhcm9vdGRpcj0qIHwgLS1kYXRhcm9vdGRpcj0qIHwgLS1kYXRhcm9vdGRpPSogfCAt LWRhdGFyb290ZD0qIFwNCisgIHwgLS1kYXRhcm9vdD0qIHwgLS1kYXRhcm9vPSogfCAtLWRhdGFy bz0qIHwgLS1kYXRhcj0qKQ0KKyAgICBkYXRhcm9vdGRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAt ZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSopDQorICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0 aW9uIiA6ICd4LSpkaXNhYmxlLVwoLipcKSdgDQorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJl IG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4NCisgICAgZXhwciAieCRhY191c2Vyb3B0 IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYNCisgICAgICBhc19mbl9l cnJvciAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0Ig0KKyAgICBhY191c2Vyb3B0 X29yaWc9JGFjX3VzZXJvcHQNCisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0 IiB8IHNlZCAncy9bLSsuXS9fL2cnYA0KKyAgICBjYXNlICRhY191c2VyX29wdHMgaW4NCisgICAg ICAqIg0KKyJlbmFibGVfJGFjX3VzZXJvcHQiDQorIiopIDs7DQorICAgICAgKikNCmFjX3VucmVj b2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0t DQpkaXNhYmxlLSRhY191c2Vyb3B0X29yaWciDQorCSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7 Ow0KKyAgICBlc2FjDQorICAgIGV2YWwgZW5hYmxlXyRhY191c2Vyb3B0PW5vIDs7DQorDQorICAt ZG9jZGlyIHwgLS1kb2NkaXIgfCAtLWRvY2RpIHwgLS1kb2MgfCAtLWRvKQ0KKyAgICBhY19wcmV2 PWRvY2RpciA7Ow0KKyAgLWRvY2Rpcj0qIHwgLS1kb2NkaXI9KiB8IC0tZG9jZGk9KiB8IC0tZG9j PSogfCAtLWRvPSopDQorICAgIGRvY2Rpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtZHZpZGlyIHwg LS1kdmlkaXIgfCAtLWR2aWRpIHwgLS1kdmlkIHwgLS1kdmkgfCAtLWR2KQ0KKyAgICBhY19wcmV2 PWR2aWRpciA7Ow0KKyAgLWR2aWRpcj0qIHwgLS1kdmlkaXI9KiB8IC0tZHZpZGk9KiB8IC0tZHZp ZD0qIHwgLS1kdmk9KiB8IC0tZHY9KikNCisgICAgZHZpZGlyPSRhY19vcHRhcmcgOzsNCisNCisg IC1lbmFibGUtKiB8IC0tZW5hYmxlLSopDQorICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0 aW9uIiA6ICd4LSplbmFibGUtXChbXj1dKlwpJ2ANCisgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBh cmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLg0KKyAgICBleHByICJ4JGFjX3VzZXJv cHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJg0KKyAgICAgIGFzX2Zu X2Vycm9yICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiDQorICAgIGFjX3VzZXJv cHRfb3JpZz0kYWNfdXNlcm9wdA0KKyAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJv cHQiIHwgc2VkICdzL1stKy5dL18vZydgDQorICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbg0KKyAg ICAgICoiDQorImVuYWJsZV8kYWNfdXNlcm9wdCINCisiKikgOzsNCisgICAgICAqKQ0KYWNfdW5y ZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2Vw LS0NCmVuYWJsZS0kYWNfdXNlcm9wdF9vcmlnIg0KKwkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAn OzsNCisgICAgZXNhYw0KKyAgICBldmFsIGVuYWJsZV8kYWNfdXNlcm9wdD1cJGFjX29wdGFyZyA7 Ow0KKw0KKyAgLWV4ZWMtcHJlZml4IHwgLS1leGVjX3ByZWZpeCB8IC0tZXhlYy1wcmVmaXggfCAt LWV4ZWMtcHJlZmkgXA0KKyAgfCAtLWV4ZWMtcHJlZiB8IC0tZXhlYy1wcmUgfCAtLWV4ZWMtcHIg fCAtLWV4ZWMtcCB8IC0tZXhlYy0gXA0KKyAgfCAtLWV4ZWMgfCAtLWV4ZSB8IC0tZXgpDQorICAg IGFjX3ByZXY9ZXhlY19wcmVmaXggOzsNCisgIC1leGVjLXByZWZpeD0qIHwgLS1leGVjX3ByZWZp eD0qIHwgLS1leGVjLXByZWZpeD0qIHwgLS1leGVjLXByZWZpPSoNClwNCisgIHwgLS1leGVjLXBy ZWY9KiB8IC0tZXhlYy1wcmU9KiB8IC0tZXhlYy1wcj0qIHwgLS1leGVjLXA9KiB8IC0tZXhlYy0N Cj0qIFwNCisgIHwgLS1leGVjPSogfCAtLWV4ZT0qIHwgLS1leD0qKQ0KKyAgICBleGVjX3ByZWZp eD0kYWNfb3B0YXJnIDs7DQorDQorICAtZ2FzIHwgLS1nYXMgfCAtLWdhIHwgLS1nKQ0KKyAgICAj IE9ic29sZXRlOyB1c2UgLS13aXRoLWdhcy4NCisgICAgd2l0aF9nYXM9eWVzIDs7DQorDQorICAt aGVscCB8IC0taGVscCB8IC0taGVsIHwgLS1oZSB8IC1oKQ0KKyAgICBhY19pbml0X2hlbHA9bG9u ZyA7Ow0KKyAgLWhlbHA9ciogfCAtLWhlbHA9ciogfCAtLWhlbD1yKiB8IC0taGU9ciogfCAtaHIq KQ0KKyAgICBhY19pbml0X2hlbHA9cmVjdXJzaXZlIDs7DQorICAtaGVscD1zKiB8IC0taGVscD1z KiB8IC0taGVsPXMqIHwgLS1oZT1zKiB8IC1ocyopDQorICAgIGFjX2luaXRfaGVscD1zaG9ydCA7 Ow0KKw0KKyAgLWhvc3QgfCAtLWhvc3QgfCAtLWhvcyB8IC0taG8pDQorICAgIGFjX3ByZXY9aG9z dF9hbGlhcyA7Ow0KKyAgLWhvc3Q9KiB8IC0taG9zdD0qIHwgLS1ob3M9KiB8IC0taG89KikNCisg ICAgaG9zdF9hbGlhcz0kYWNfb3B0YXJnIDs7DQorDQorICAtaHRtbGRpciB8IC0taHRtbGRpciB8 IC0taHRtbGRpIHwgLS1odG1sZCB8IC0taHRtbCB8IC0taHRtIHwgLS1odCkNCisgICAgYWNfcHJl dj1odG1sZGlyIDs7DQorICAtaHRtbGRpcj0qIHwgLS1odG1sZGlyPSogfCAtLWh0bWxkaT0qIHwg LS1odG1sZD0qIHwgLS1odG1sPSogfCAtLQ0KaHRtPSogXA0KKyAgfCAtLWh0PSopDQorICAgIGh0 bWxkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWluY2x1ZGVkaXIgfCAtLWluY2x1ZGVkaXIgfCAt LWluY2x1ZGVkaSB8IC0taW5jbHVkZWQgfCAtLWluY2x1ZGUgXA0KKyAgfCAtLWluY2x1ZCB8IC0t aW5jbHUgfCAtLWluY2wgfCAtLWluYykNCisgICAgYWNfcHJldj1pbmNsdWRlZGlyIDs7DQorICAt aW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGlyPSogfCAtLWluY2x1ZGVkaT0qIHwgLS1pbmNsdWRl ZD0qIHwgLS0NCmluY2x1ZGU9KiBcDQorICB8IC0taW5jbHVkPSogfCAtLWluY2x1PSogfCAtLWlu Y2w9KiB8IC0taW5jPSopDQorICAgIGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWlu Zm9kaXIgfCAtLWluZm9kaXIgfCAtLWluZm9kaSB8IC0taW5mb2QgfCAtLWluZm8gfCAtLWluZikN CisgICAgYWNfcHJldj1pbmZvZGlyIDs7DQorICAtaW5mb2Rpcj0qIHwgLS1pbmZvZGlyPSogfCAt LWluZm9kaT0qIHwgLS1pbmZvZD0qIHwgLS1pbmZvPSogfCAtLQ0KaW5mPSopDQorICAgIGluZm9k aXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWxpYmRpciB8IC0tbGliZGlyIHwgLS1saWJkaSB8IC0t bGliZCkNCisgICAgYWNfcHJldj1saWJkaXIgOzsNCisgIC1saWJkaXI9KiB8IC0tbGliZGlyPSog fCAtLWxpYmRpPSogfCAtLWxpYmQ9KikNCisgICAgbGliZGlyPSRhY19vcHRhcmcgOzsNCisNCisg IC1saWJleGVjZGlyIHwgLS1saWJleGVjZGlyIHwgLS1saWJleGVjZGkgfCAtLWxpYmV4ZWNkIHwg LS1saWJleGVjIFwNCisgIHwgLS1saWJleGUgfCAtLWxpYmV4IHwgLS1saWJlKQ0KKyAgICBhY19w cmV2PWxpYmV4ZWNkaXIgOzsNCisgIC1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaXI9KiB8IC0t bGliZXhlY2RpPSogfCAtLWxpYmV4ZWNkPSogfCAtLQ0KbGliZXhlYz0qIFwNCisgIHwgLS1saWJl eGU9KiB8IC0tbGliZXg9KiB8IC0tbGliZT0qKQ0KKyAgICBsaWJleGVjZGlyPSRhY19vcHRhcmcg OzsNCisNCisgIC1sb2NhbGVkaXIgfCAtLWxvY2FsZWRpciB8IC0tbG9jYWxlZGkgfCAtLWxvY2Fs ZWQgfCAtLWxvY2FsZSkNCisgICAgYWNfcHJldj1sb2NhbGVkaXIgOzsNCisgIC1sb2NhbGVkaXI9 KiB8IC0tbG9jYWxlZGlyPSogfCAtLWxvY2FsZWRpPSogfCAtLWxvY2FsZWQ9KiB8IC0tDQpsb2Nh bGU9KikNCisgICAgbG9jYWxlZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1sb2NhbHN0YXRlZGly IHwgLS1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGkgfCAtLWxvY2Fsc3RhdGVkIFwNCisg IHwgLS1sb2NhbHN0YXRlIHwgLS1sb2NhbHN0YXQgfCAtLWxvY2Fsc3RhIHwgLS1sb2NhbHN0IHwg LS1sb2NhbHMpDQorICAgIGFjX3ByZXY9bG9jYWxzdGF0ZWRpciA7Ow0KKyAgLWxvY2Fsc3RhdGVk aXI9KiB8IC0tbG9jYWxzdGF0ZWRpcj0qIHwgLS1sb2NhbHN0YXRlZGk9KiB8IC0tDQpsb2NhbHN0 YXRlZD0qIFwNCisgIHwgLS1sb2NhbHN0YXRlPSogfCAtLWxvY2Fsc3RhdD0qIHwgLS1sb2NhbHN0 YT0qIHwgLS1sb2NhbHN0PSogfCAtLQ0KbG9jYWxzPSopDQorICAgIGxvY2Fsc3RhdGVkaXI9JGFj X29wdGFyZyA7Ow0KKw0KKyAgLW1hbmRpciB8IC0tbWFuZGlyIHwgLS1tYW5kaSB8IC0tbWFuZCB8 IC0tbWFuIHwgLS1tYSB8IC0tbSkNCisgICAgYWNfcHJldj1tYW5kaXIgOzsNCisgIC1tYW5kaXI9 KiB8IC0tbWFuZGlyPSogfCAtLW1hbmRpPSogfCAtLW1hbmQ9KiB8IC0tbWFuPSogfCAtLW1hPSog fCAtDQotbT0qKQ0KKyAgICBtYW5kaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLW5mcCB8IC0tbmZw IHwgLS1uZikNCisgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aG91dC1mcC4NCisgICAgd2l0aF9m cD1ubyA7Ow0KKw0KKyAgLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXRlIHwgLS1uby1jcmVhdCB8IC0t bm8tY3JlYSB8IC0tbm8tY3JlIFwNCisgIHwgLS1uby1jciB8IC0tbm8tYyB8IC1uKQ0KKyAgICBu b19jcmVhdGU9eWVzIDs7DQorDQorICAtbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpb24gfCAt LW5vLXJlY3Vyc2lvIHwgLS1uby1yZWN1cnNpIFwNCisgIHwgLS1uby1yZWN1cnMgfCAtLW5vLXJl Y3VyIHwgLS1uby1yZWN1IHwgLS1uby1yZWMgfCAtLW5vLXJlIHwgLS1uby0NCnIpDQorICAgIG5v X3JlY3Vyc2lvbj15ZXMgOzsNCisNCisgIC1vbGRpbmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRlZGly IHwgLS1vbGRpbmNsdWRlZGkgfCAtLW9sZGluY2x1ZGVkIFwNCisgIHwgLS1vbGRpbmNsdWRlIHwg LS1vbGRpbmNsdWQgfCAtLW9sZGluY2x1IHwgLS1vbGRpbmNsIHwgLS1vbGRpbmMgXA0KKyAgfCAt LW9sZGluIHwgLS1vbGRpIHwgLS1vbGQgfCAtLW9sIHwgLS1vKQ0KKyAgICBhY19wcmV2PW9sZGlu Y2x1ZGVkaXIgOzsNCisgIC1vbGRpbmNsdWRlZGlyPSogfCAtLW9sZGluY2x1ZGVkaXI9KiB8IC0t b2xkaW5jbHVkZWRpPSogfCAtLQ0Kb2xkaW5jbHVkZWQ9KiBcDQorICB8IC0tb2xkaW5jbHVkZT0q IHwgLS1vbGRpbmNsdWQ9KiB8IC0tb2xkaW5jbHU9KiB8IC0tb2xkaW5jbD0qIHwgLS0NCm9sZGlu Yz0qIFwNCisgIHwgLS1vbGRpbj0qIHwgLS1vbGRpPSogfCAtLW9sZD0qIHwgLS1vbD0qIHwgLS1v PSopDQorICAgIG9sZGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXByZWZpeCB8IC0t cHJlZml4IHwgLS1wcmVmaSB8IC0tcHJlZiB8IC0tcHJlIHwgLS1wciB8IC0tcCkNCisgICAgYWNf cHJldj1wcmVmaXggOzsNCisgIC1wcmVmaXg9KiB8IC0tcHJlZml4PSogfCAtLXByZWZpPSogfCAt LXByZWY9KiB8IC0tcHJlPSogfCAtLXByPSogfCAtDQotcD0qKQ0KKyAgICBwcmVmaXg9JGFjX29w dGFyZyA7Ow0KKw0KKyAgLXByb2dyYW0tcHJlZml4IHwgLS1wcm9ncmFtLXByZWZpeCB8IC0tcHJv Z3JhbS1wcmVmaSB8IC0tcHJvZ3JhbS0NCnByZWYgXA0KKyAgfCAtLXByb2dyYW0tcHJlIHwgLS1w cm9ncmFtLXByIHwgLS1wcm9ncmFtLXApDQorICAgIGFjX3ByZXY9cHJvZ3JhbV9wcmVmaXggOzsN CisgIC1wcm9ncmFtLXByZWZpeD0qIHwgLS1wcm9ncmFtLXByZWZpeD0qIHwgLS1wcm9ncmFtLXBy ZWZpPSogXA0KKyAgfCAtLXByb2dyYW0tcHJlZj0qIHwgLS1wcm9ncmFtLXByZT0qIHwgLS1wcm9n cmFtLXByPSogfCAtLXByb2dyYW0tDQpwPSopDQorICAgIHByb2dyYW1fcHJlZml4PSRhY19vcHRh cmcgOzsNCisNCisgIC1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZmaXggfCAtLXByb2dy YW0tc3VmZmkgfCAtLXByb2dyYW0tDQpzdWZmIFwNCisgIHwgLS1wcm9ncmFtLXN1ZiB8IC0tcHJv Z3JhbS1zdSB8IC0tcHJvZ3JhbS1zKQ0KKyAgICBhY19wcmV2PXByb2dyYW1fc3VmZml4IDs7DQor ICAtcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZm aT0qIFwNCisgIHwgLS1wcm9ncmFtLXN1ZmY9KiB8IC0tcHJvZ3JhbS1zdWY9KiB8IC0tcHJvZ3Jh bS1zdT0qIHwgLS1wcm9ncmFtLQ0Kcz0qKQ0KKyAgICBwcm9ncmFtX3N1ZmZpeD0kYWNfb3B0YXJn IDs7DQorDQorICAtcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0t bmFtZSBcDQorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtIHwgLS1wcm9ncmFtLXRyYW5zZm9y bS1uYSBcDQorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0t IFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybSB8IC0tcHJvZ3JhbS10cmFuc2ZvciBcDQorICB8 IC0tcHJvZ3JhbS10cmFuc2ZvIHwgLS1wcm9ncmFtLXRyYW5zZiBcDQorICB8IC0tcHJvZ3JhbS10 cmFucyB8IC0tcHJvZ3JhbS10cmFuIFwNCisgIHwgLS1wcm9nci10cmEgfCAtLXByb2dyYW0tdHIg fCAtLXByb2dyYW0tdCkNCisgICAgYWNfcHJldj1wcm9ncmFtX3RyYW5zZm9ybV9uYW1lIDs7DQor ICAtcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPSog XA0KKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1u YT0qIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uPSogfCAtLXByb2dyYW0tdHJhbnNmb3Jt LT0qIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9yPSog XA0KKyAgfCAtLXByb2dyYW0tdHJhbnNmbz0qIHwgLS1wcm9ncmFtLXRyYW5zZj0qIFwNCisgIHwg LS1wcm9ncmFtLXRyYW5zPSogfCAtLXByb2dyYW0tdHJhbj0qIFwNCisgIHwgLS1wcm9nci10cmE9 KiB8IC0tcHJvZ3JhbS10cj0qIHwgLS1wcm9ncmFtLXQ9KikNCisgICAgcHJvZ3JhbV90cmFuc2Zv cm1fbmFtZT0kYWNfb3B0YXJnIDs7DQorDQorICAtcGRmZGlyIHwgLS1wZGZkaXIgfCAtLXBkZmRp IHwgLS1wZGZkIHwgLS1wZGYgfCAtLXBkKQ0KKyAgICBhY19wcmV2PXBkZmRpciA7Ow0KKyAgLXBk ZmRpcj0qIHwgLS1wZGZkaXI9KiB8IC0tcGRmZGk9KiB8IC0tcGRmZD0qIHwgLS1wZGY9KiB8IC0t cGQ9KikNCisgICAgcGRmZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1wc2RpciB8IC0tcHNkaXIg fCAtLXBzZGkgfCAtLXBzZCB8IC0tcHMpDQorICAgIGFjX3ByZXY9cHNkaXIgOzsNCisgIC1wc2Rp cj0qIHwgLS1wc2Rpcj0qIHwgLS1wc2RpPSogfCAtLXBzZD0qIHwgLS1wcz0qKQ0KKyAgICBwc2Rp cj0kYWNfb3B0YXJnIDs7DQorDQorICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUgfCAt LXF1aSB8IC0tcXUgfCAtLXEgXA0KKyAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwg LS1zaWxlIHwgLS1zaWwpDQorICAgIHNpbGVudD15ZXMgOzsNCisNCisgIC1zYmluZGlyIHwgLS1z YmluZGlyIHwgLS1zYmluZGkgfCAtLXNiaW5kIHwgLS1zYmluIHwgLS1zYmkgfCAtLXNiKQ0KKyAg ICBhY19wcmV2PXNiaW5kaXIgOzsNCisgIC1zYmluZGlyPSogfCAtLXNiaW5kaXI9KiB8IC0tc2Jp bmRpPSogfCAtLXNiaW5kPSogfCAtLXNiaW49KiBcDQorICB8IC0tc2JpPSogfCAtLXNiPSopDQor ICAgIHNiaW5kaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFy ZWRzdGF0ZWRpciB8IC0tc2hhcmVkc3RhdGVkaSBcDQorICB8IC0tc2hhcmVkc3RhdGVkIHwgLS1z aGFyZWRzdGF0ZSB8IC0tc2hhcmVkc3RhdCB8IC0tc2hhcmVkc3RhIFwNCisgIHwgLS1zaGFyZWRz dCB8IC0tc2hhcmVkcyB8IC0tc2hhcmVkIHwgLS1zaGFyZSB8IC0tc2hhciBcDQorICB8IC0tc2hh IHwgLS1zaCkNCisgICAgYWNfcHJldj1zaGFyZWRzdGF0ZWRpciA7Ow0KKyAgLXNoYXJlZHN0YXRl ZGlyPSogfCAtLXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGk9KiBcDQorICB8IC0t c2hhcmVkc3RhdGVkPSogfCAtLXNoYXJlZHN0YXRlPSogfCAtLXNoYXJlZHN0YXQ9KiB8IC0tDQpz aGFyZWRzdGE9KiBcDQorICB8IC0tc2hhcmVkc3Q9KiB8IC0tc2hhcmVkcz0qIHwgLS1zaGFyZWQ9 KiB8IC0tc2hhcmU9KiB8IC0tc2hhcj0qIFwNCisgIHwgLS1zaGE9KiB8IC0tc2g9KikNCisgICAg c2hhcmVkc3RhdGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXNpdGUgfCAtLXNpdGUgfCAtLXNp dCkNCisgICAgYWNfcHJldj1zaXRlIDs7DQorICAtc2l0ZT0qIHwgLS1zaXRlPSogfCAtLXNpdD0q KQ0KKyAgICBzaXRlPSRhY19vcHRhcmcgOzsNCisNCisgIC1zcmNkaXIgfCAtLXNyY2RpciB8IC0t c3JjZGkgfCAtLXNyY2QgfCAtLXNyYyB8IC0tc3IpDQorICAgIGFjX3ByZXY9c3JjZGlyIDs7DQor ICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0qIHwgLS1zcmNkaT0qIHwgLS1zcmNkPSogfCAtLXNyYz0q IHwgLS1zcj0qKQ0KKyAgICBzcmNkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXN5c2NvbmZkaXIg fCAtLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaSB8IC0tc3lzY29uZmQgfCAtLXN5c2NvbmYgXA0K KyAgfCAtLXN5c2NvbiB8IC0tc3lzY28gfCAtLXN5c2MgfCAtLXN5cyB8IC0tc3kpDQorICAgIGFj X3ByZXY9c3lzY29uZmRpciA7Ow0KKyAgLXN5c2NvbmZkaXI9KiB8IC0tc3lzY29uZmRpcj0qIHwg LS1zeXNjb25mZGk9KiB8IC0tc3lzY29uZmQ9KiB8IC0tDQpzeXNjb25mPSogXA0KKyAgfCAtLXN5 c2Nvbj0qIHwgLS1zeXNjbz0qIHwgLS1zeXNjPSogfCAtLXN5cz0qIHwgLS1zeT0qKQ0KKyAgICBz eXNjb25mZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC10YXJnZXQgfCAtLXRhcmdldCB8IC0tdGFy Z2UgfCAtLXRhcmcgfCAtLXRhciB8IC0tdGEgfCAtLXQpDQorICAgIGFjX3ByZXY9dGFyZ2V0X2Fs aWFzIDs7DQorICAtdGFyZ2V0PSogfCAtLXRhcmdldD0qIHwgLS10YXJnZT0qIHwgLS10YXJnPSog fCAtLXRhcj0qIHwgLS10YT0qIHwgLQ0KLXQ9KikNCisgICAgdGFyZ2V0X2FsaWFzPSRhY19vcHRh cmcgOzsNCisNCisgIC12IHwgLXZlcmJvc2UgfCAtLXZlcmJvc2UgfCAtLXZlcmJvcyB8IC0tdmVy Ym8gfCAtLXZlcmIpDQorICAgIHZlcmJvc2U9eWVzIDs7DQorDQorICAtdmVyc2lvbiB8IC0tdmVy c2lvbiB8IC0tdmVyc2lvIHwgLS12ZXJzaSB8IC0tdmVycyB8IC1WKQ0KKyAgICBhY19pbml0X3Zl cnNpb249OiA7Ow0KKw0KKyAgLXdpdGgtKiB8IC0td2l0aC0qKQ0KKyAgICBhY191c2Vyb3B0PWBl eHByICJ4JGFjX29wdGlvbiIgOiAneC0qd2l0aC1cKFtePV0qXCknYA0KKyAgICAjIFJlamVjdCBu YW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuDQorICAgIGV4cHIg IngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmDQor ICAgICAgYXNfZm5fZXJyb3IgImludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfdXNlcm9wdCINCisg ICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0DQorICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hv ICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2ANCisgICAgY2FzZSAkYWNfdXNlcl9v cHRzIGluDQorICAgICAgKiINCisid2l0aF8kYWNfdXNlcm9wdCINCisiKikgOzsNCisgICAgICAq KQ0KYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29n bml6ZWRfc2VwLS13aXRoLQ0KJGFjX3VzZXJvcHRfb3JpZyINCisJIGFjX3VucmVjb2duaXplZF9z ZXA9JywgJzs7DQorICAgIGVzYWMNCisgICAgZXZhbCB3aXRoXyRhY191c2Vyb3B0PVwkYWNfb3B0 YXJnIDs7DQorDQorICAtd2l0aG91dC0qIHwgLS13aXRob3V0LSopDQorICAgIGFjX3VzZXJvcHQ9 YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRob3V0LVwoLipcKSdgDQorICAgICMgUmVqZWN0 IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4NCisgICAgZXhw ciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYN CisgICAgICBhc19mbl9lcnJvciAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0Ig0K KyAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQNCisgICAgYWNfdXNlcm9wdD1gJGFzX2Vj aG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYA0KKyAgICBjYXNlICRhY191c2Vy X29wdHMgaW4NCisgICAgICAqIg0KKyJ3aXRoXyRhY191c2Vyb3B0Ig0KKyIqKSA7Ow0KKyAgICAg ICopDQphY191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVj b2duaXplZF9zZXAtLQ0Kd2l0aG91dC0kYWNfdXNlcm9wdF9vcmlnIg0KKwkgYWNfdW5yZWNvZ25p emVkX3NlcD0nLCAnOzsNCisgICAgZXNhYw0KKyAgICBldmFsIHdpdGhfJGFjX3VzZXJvcHQ9bm8g OzsNCisNCisgIC0teCkNCisgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aC14Lg0KKyAgICB3aXRo X3g9eWVzIDs7DQorDQorICAteC1pbmNsdWRlcyB8IC0teC1pbmNsdWRlcyB8IC0teC1pbmNsdWRl IHwgLS14LWluY2x1ZCB8IC0teC1pbmNsdSBcDQorICB8IC0teC1pbmNsIHwgLS14LWluYyB8IC0t eC1pbiB8IC0teC1pKQ0KKyAgICBhY19wcmV2PXhfaW5jbHVkZXMgOzsNCisgIC14LWluY2x1ZGVz PSogfCAtLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlPSogfCAtLXgtaW5jbHVkPSogfCAtLXgt DQppbmNsdT0qIFwNCisgIHwgLS14LWluY2w9KiB8IC0teC1pbmM9KiB8IC0teC1pbj0qIHwgLS14 LWk9KikNCisgICAgeF9pbmNsdWRlcz0kYWNfb3B0YXJnIDs7DQorDQorICAteC1saWJyYXJpZXMg fCAtLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllIHwgLS14LWxpYnJhcmkgXA0KKyAgfCAtLXgt bGlicmFyIHwgLS14LWxpYnJhIHwgLS14LWxpYnIgfCAtLXgtbGliIHwgLS14LWxpIHwgLS14LWwp DQorICAgIGFjX3ByZXY9eF9saWJyYXJpZXMgOzsNCisgIC14LWxpYnJhcmllcz0qIHwgLS14LWxp YnJhcmllcz0qIHwgLS14LWxpYnJhcmllPSogfCAtLXgtbGlicmFyaT0qIFwNCisgIHwgLS14LWxp YnJhcj0qIHwgLS14LWxpYnJhPSogfCAtLXgtbGlicj0qIHwgLS14LWxpYj0qIHwgLS14LWxpPSog fCAtDQoteC1sPSopDQorICAgIHhfbGlicmFyaWVzPSRhY19vcHRhcmcgOzsNCisNCisgIC0qKSBh c19mbl9lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbjogXGAkYWNfb3B0aW9uJw0KK1RyeSBcYCQw IC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIg0KKyAgICA7Ow0KKw0KKyAgKj0qKQ0KKyAg ICBhY19lbnZ2YXI9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4XChbXj1dKlwpPSdgDQorICAgICMg UmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4NCisg ICAgY2FzZSAkYWNfZW52dmFyIGluICMoDQorICAgICAgJycgfCBbMC05XSogfCAqWyFfJGFzX2Ny X2FsbnVtXSogKQ0KKyAgICAgIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHZhcmlhYmxlIG5hbWU6IFxg JGFjX2VudnZhciciIDs7DQorICAgIGVzYWMNCisgICAgZXZhbCAkYWNfZW52dmFyPVwkYWNfb3B0 YXJnDQorICAgIGV4cG9ydCAkYWNfZW52dmFyIDs7DQorDQorICAqKQ0KKyAgICAjIEZJWE1FOiBz aG91bGQgYmUgcmVtb3ZlZCBpbiBhdXRvY29uZiAzLjAuDQorICAgICRhc19lY2hvICIkYXNfbWU6 IFdBUk5JTkc6IHlvdSBzaG91bGQgdXNlIC0tYnVpbGQsIC0taG9zdCwgLS0NCnRhcmdldCIgPiYy DQorICAgIGV4cHIgIngkYWNfb3B0aW9uIiA6ICIuKlteLS5fJGFzX2NyX2FsbnVtXSIgPi9kZXYv bnVsbCAmJg0KKyAgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IGludmFsaWQgaG9zdCB0 eXBlOiAkYWNfb3B0aW9uIiA+JjINCisgICAgOiAke2J1aWxkX2FsaWFzPSRhY19vcHRpb259ICR7 aG9zdF9hbGlhcz0kYWNfb3B0aW9ufQ0KJHt0YXJnZXRfYWxpYXM9JGFjX29wdGlvbn0NCisgICAg OzsNCisNCisgIGVzYWMNCitkb25lDQorDQoraWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuDQor ICBhY19vcHRpb249LS1gZWNobyAkYWNfcHJldiB8IHNlZCAncy9fLy0vZydgDQorICBhc19mbl9l cnJvciAibWlzc2luZyBhcmd1bWVudCB0byAkYWNfb3B0aW9uIg0KK2ZpDQorDQoraWYgdGVzdCAt biAiJGFjX3VucmVjb2duaXplZF9vcHRzIjsgdGhlbg0KKyAgY2FzZSAkZW5hYmxlX29wdGlvbl9j aGVja2luZyBpbg0KKyAgICBubykgOzsNCisgICAgZmF0YWwpIGFzX2ZuX2Vycm9yICJ1bnJlY29n bml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIg0KOzsNCisgICAgKikgICAgICRh c19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOg0KJGFjX3VucmVj b2duaXplZF9vcHRzIiA+JjIgOzsNCisgIGVzYWMNCitmaQ0KKw0KKyMgQ2hlY2sgYWxsIGRpcmVj dG9yeSBhcmd1bWVudHMgZm9yIGNvbnNpc3RlbmN5Lg0KK2ZvciBhY192YXIgaW4JZXhlY19wcmVm aXggcHJlZml4IGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXINCmRhdGFyb290ZGlyIFwNCisJCWRh dGFkaXIgc3lzY29uZmRpciBzaGFyZWRzdGF0ZWRpciBsb2NhbHN0YXRlZGlyDQppbmNsdWRlZGly IFwNCisJCW9sZGluY2x1ZGVkaXIgZG9jZGlyIGluZm9kaXIgaHRtbGRpciBkdmlkaXIgcGRmZGly DQpwc2RpciBcDQorCQlsaWJkaXIgbG9jYWxlZGlyIG1hbmRpcg0KK2RvDQorICBldmFsIGFjX3Zh bD1cJCRhY192YXINCisgICMgUmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMuDQorICBjYXNlICRhY192 YWwgaW4NCisgICAgKi8gKQ0KKyAgICAgIGFjX3ZhbD1gZXhwciAiWCRhY192YWwiIDogJ1hcKC4q W14vXVwpJyBcfCAiWCRhY192YWwiIDoNCidYXCguKlwpJ2ANCisgICAgICBldmFsICRhY192YXI9 XCRhY192YWw7Ow0KKyAgZXNhYw0KKyAgIyBCZSBzdXJlIHRvIGhhdmUgYWJzb2x1dGUgZGlyZWN0 b3J5IG5hbWVzLg0KKyAgY2FzZSAkYWNfdmFsIGluDQorICAgIFtcXC8kXSogfCA/OltcXC9dKiAp ICBjb250aW51ZTs7DQorICAgIE5PTkUgfCAnJyApIGNhc2UgJGFjX3ZhciBpbiAqcHJlZml4ICkg Y29udGludWU7OyBlc2FjOzsNCisgIGVzYWMNCisgIGFzX2ZuX2Vycm9yICJleHBlY3RlZCBhbiBh YnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBmb3IgLS0kYWNfdmFyOg0KJGFjX3ZhbCINCitkb25lDQor DQorIyBUaGVyZSBtaWdodCBiZSBwZW9wbGUgd2hvIGRlcGVuZCBvbiB0aGUgb2xkIGJyb2tlbiBi ZWhhdmlvcjogYCRob3N0Jw0KKyMgdXNlZCB0byBob2xkIHRoZSBhcmd1bWVudCBvZiAtLWhvc3Qg ZXRjLg0KKyMgRklYTUU6IFRvIHJlbW92ZSBzb21lIGRheS4NCitidWlsZD0kYnVpbGRfYWxpYXMN Citob3N0PSRob3N0X2FsaWFzDQordGFyZ2V0PSR0YXJnZXRfYWxpYXMNCisNCisjIEZJWE1FOiBU byByZW1vdmUgc29tZSBkYXkuDQoraWYgdGVzdCAieCRob3N0X2FsaWFzIiAhPSB4OyB0aGVuDQor ICBpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiA9IHg7IHRoZW4NCisgICAgY3Jvc3NfY29tcGlsaW5n PW1heWJlDQorICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IElmIHlvdSB3YW50ZWQgdG8g c2V0IHRoZSAtLWJ1aWxkIHR5cGUsDQpkb24ndCB1c2UgLS1ob3N0Lg0KKyAgICBJZiBhIGNyb3Nz IGNvbXBpbGVyIGlzIGRldGVjdGVkIHRoZW4gY3Jvc3MgY29tcGlsZSBtb2RlIHdpbGwgYmUNCnVz ZWQuIiA+JjINCisgIGVsaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgIT0gIngkaG9zdF9hbGlhcyI7 IHRoZW4NCisgICAgY3Jvc3NfY29tcGlsaW5nPXllcw0KKyAgZmkNCitmaQ0KKw0KK2FjX3Rvb2xf cHJlZml4PQ0KK3Rlc3QgLW4gIiRob3N0X2FsaWFzIiAmJiBhY190b29sX3ByZWZpeD0kaG9zdF9h bGlhcy0NCisNCit0ZXN0ICIkc2lsZW50IiA9IHllcyAmJiBleGVjIDY+L2Rldi9udWxsDQorDQor DQorYWNfcHdkPWBwd2RgICYmIHRlc3QgLW4gIiRhY19wd2QiICYmDQorYWNfbHNfZGk9YGxzIC1k aSAuYCAmJg0KK2FjX3B3ZF9sc19kaT1gY2QgIiRhY19wd2QiICYmIGxzIC1kaSAuYCB8fA0KKyAg YXNfZm5fZXJyb3IgIndvcmtpbmcgZGlyZWN0b3J5IGNhbm5vdCBiZSBkZXRlcm1pbmVkIg0KK3Rl c3QgIlgkYWNfbHNfZGkiID0gIlgkYWNfcHdkX2xzX2RpIiB8fA0KKyAgYXNfZm5fZXJyb3IgInB3 ZCBkb2VzIG5vdCByZXBvcnQgbmFtZSBvZiB3b3JraW5nIGRpcmVjdG9yeSINCisNCisNCisjIEZp bmQgdGhlIHNvdXJjZSBmaWxlcywgaWYgbG9jYXRpb24gd2FzIG5vdCBzcGVjaWZpZWQuDQoraWYg dGVzdCAteiAiJHNyY2RpciI7IHRoZW4NCisgIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9eWVzDQorICAj IFRyeSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhpcyBzY3JpcHQsIHRoZW4gdGhlIHBhcmVu dA0KZGlyZWN0b3J5Lg0KKyAgYWNfY29uZmRpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19teXNlbGYi IHx8DQorJGFzX2V4cHIgWCIkYXNfbXlzZWxmIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8q JCcgXHwgXA0KKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvL1wpW14vXScgXHwgXA0KKwkgWCIkYXNf bXlzZWxmIiA6ICdYXCgvL1wpJCcgXHwgXA0KKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvXCknIFx8 IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYIiRhc19teXNlbGYiIHwNCisgICAgc2VkICcv XlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0K KwkgIH0NCisJICAvXlhcKFwvXC9cKVteL10uKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJ ICB9DQorCSAgL15YXChcL1wvXCkkL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJ ICAvXlhcKFwvXCkuKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8u LzsgcSdgDQorICBzcmNkaXI9JGFjX2NvbmZkaXINCisgIGlmIHRlc3QgISAtciAiJHNyY2Rpci8k YWNfdW5pcXVlX2ZpbGUiOyB0aGVuDQorICAgIHNyY2Rpcj0uLg0KKyAgZmkNCitlbHNlDQorICBh Y19zcmNkaXJfZGVmYXVsdGVkPW5vDQorZmkNCitpZiB0ZXN0ICEgLXIgIiRzcmNkaXIvJGFjX3Vu aXF1ZV9maWxlIjsgdGhlbg0KKyAgdGVzdCAiJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiID0geWVzICYm IHNyY2Rpcj0iJGFjX2NvbmZkaXIgb3IgLi4iDQorICBhc19mbl9lcnJvciAiY2Fubm90IGZpbmQg c291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkc3JjZGlyIg0KK2ZpDQorYWNfbXNnPSJzb3Vy Y2VzIGFyZSBpbiAkc3JjZGlyLCBidXQgXGBjZCAkc3JjZGlyJyBkb2VzIG5vdCB3b3JrIg0KK2Fj X2Fic19jb25mZGlyPWAoDQorCWNkICIkc3JjZGlyIiAmJiB0ZXN0IC1yICIuLyRhY191bmlxdWVf ZmlsZSIgfHwgYXNfZm5fZXJyb3INCiIkYWNfbXNnIg0KKwlwd2QpYA0KKyMgV2hlbiBidWlsZGlu ZyBpbiBwbGFjZSwgc2V0IHNyY2Rpcj0uDQoraWYgdGVzdCAiJGFjX2Fic19jb25mZGlyIiA9ICIk YWNfcHdkIjsgdGhlbg0KKyAgc3JjZGlyPS4NCitmaQ0KKyMgUmVtb3ZlIHVubmVjZXNzYXJ5IHRy YWlsaW5nIHNsYXNoZXMgZnJvbSBzcmNkaXIuDQorIyBEb3VibGUgc2xhc2hlcyBpbiBmaWxlIG5h bWVzIGluIG9iamVjdCBmaWxlIGRlYnVnZ2luZyBpbmZvDQorIyBtZXNzIHVwIE0teCBnZGIgaW4g RW1hY3MuDQorY2FzZSAkc3JjZGlyIGluDQorKi8pIHNyY2Rpcj1gZXhwciAiWCRzcmNkaXIiIDog J1hcKC4qW14vXVwpJyBcfCAiWCRzcmNkaXIiIDoNCidYXCguKlwpJ2A7Ow0KK2VzYWMNCitmb3Ig YWNfdmFyIGluICRhY19wcmVjaW91c192YXJzOyBkbw0KKyAgZXZhbCBhY19lbnZfJHthY192YXJ9 X3NldD1cJHske2FjX3Zhcn0rc2V0fQ0KKyAgZXZhbCBhY19lbnZfJHthY192YXJ9X3ZhbHVlPVwk JHthY192YXJ9DQorICBldmFsIGFjX2N2X2Vudl8ke2FjX3Zhcn1fc2V0PVwkeyR7YWNfdmFyfStz ZXR9DQorICBldmFsIGFjX2N2X2Vudl8ke2FjX3Zhcn1fdmFsdWU9XCQke2FjX3Zhcn0NCitkb25l DQorDQorIw0KKyMgUmVwb3J0IHRoZSAtLWhlbHAgbWVzc2FnZS4NCisjDQoraWYgdGVzdCAiJGFj X2luaXRfaGVscCIgPSAibG9uZyI7IHRoZW4NCisgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9i c29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzDQppbXBvc2luZy4NCisgICMgVGhp cyBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4N CisgIGNhdCA8PF9BQ0VPRg0KK1xgY29uZmlndXJlJyBjb25maWd1cmVzIG5ld2xpYiAxLjE5LjAg dG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZg0Kc3lzdGVtcy4NCisNCitVc2FnZTogJDAgW09QVElP Tl0uLi4gW1ZBUj1WQUxVRV0uLi4NCisNCitUbyBhc3NpZ24gZW52aXJvbm1lbnQgdmFyaWFibGVz IChlLmcuLCBDQywgQ0ZMQUdTLi4uKSwgc3BlY2lmeSB0aGVtIGFzDQorVkFSPVZBTFVFLiAgU2Vl IGJlbG93IGZvciBkZXNjcmlwdGlvbnMgb2Ygc29tZSBvZiB0aGUgdXNlZnVsDQp2YXJpYWJsZXMu DQorDQorRGVmYXVsdHMgZm9yIHRoZSBvcHRpb25zIGFyZSBzcGVjaWZpZWQgaW4gYnJhY2tldHMu DQorDQorQ29uZmlndXJhdGlvbjoNCisgIC1oLCAtLWhlbHAgICAgICAgICAgICAgIGRpc3BsYXkg dGhpcyBoZWxwIGFuZCBleGl0DQorICAgICAgLS1oZWxwPXNob3J0ICAgICAgICBkaXNwbGF5IG9w dGlvbnMgc3BlY2lmaWMgdG8gdGhpcyBwYWNrYWdlDQorICAgICAgLS1oZWxwPXJlY3Vyc2l2ZSAg ICBkaXNwbGF5IHRoZSBzaG9ydCBoZWxwIG9mIGFsbCB0aGUgaW5jbHVkZWQNCnBhY2thZ2VzDQor ICAtViwgLS12ZXJzaW9uICAgICAgICAgICBkaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5k IGV4aXQNCisgIC1xLCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5n Li4uJyBtZXNzYWdlcw0KKyAgICAgIC0tY2FjaGUtZmlsZT1GSUxFICAgY2FjaGUgdGVzdCByZXN1 bHRzIGluIEZJTEUgW2Rpc2FibGVkXQ0KKyAgLUMsIC0tY29uZmlnLWNhY2hlICAgICAgYWxpYXMg Zm9yIFxgLS1jYWNoZS1maWxlPWNvbmZpZy5jYWNoZScNCisgIC1uLCAtLW5vLWNyZWF0ZSAgICAg ICAgIGRvIG5vdCBjcmVhdGUgb3V0cHV0IGZpbGVzDQorICAgICAgLS1zcmNkaXI9RElSICAgICAg ICBmaW5kIHRoZSBzb3VyY2VzIGluIERJUiBbY29uZmlndXJlIGRpciBvcg0KXGAuLiddDQorDQor SW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOg0KKyAgLS1wcmVmaXg9UFJFRklYICAgICAgICAgaW5z dGFsbCBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZmlsZXMgaW4NClBSRUZJWA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0NCisgIC0tZXhlYy1wcmVmaXg9 RVBSRUZJWCAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyBpbg0KRVBSRUZJ WA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWF0NCisNCitCeSBkZWZhdWx0LCBc YG1ha2UgaW5zdGFsbCcgd2lsbCBpbnN0YWxsIGFsbCB0aGUgZmlsZXMgaW4NCitcYCRhY19kZWZh dWx0X3ByZWZpeC9iaW4nLCBcYCRhY19kZWZhdWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4N CnNwZWNpZnkNCithbiBpbnN0YWxsYXRpb24gcHJlZml4IG90aGVyIHRoYW4gXGAkYWNfZGVmYXVs dF9wcmVmaXgnIHVzaW5nIFxgLS0NCnByZWZpeCcsDQorZm9yIGluc3RhbmNlIFxgLS1wcmVmaXg9 XCRIT01FJy4NCisNCitGb3IgYmV0dGVyIGNvbnRyb2wsIHVzZSB0aGUgb3B0aW9ucyBiZWxvdy4N CisNCitGaW5lIHR1bmluZyBvZiB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOg0KKyAgLS1i aW5kaXI9RElSICAgICAgICAgICAgdXNlciBleGVjdXRhYmxlcyBbRVBSRUZJWC9iaW5dDQorICAt LXNiaW5kaXI9RElSICAgICAgICAgICBzeXN0ZW0gYWRtaW4gZXhlY3V0YWJsZXMgW0VQUkVGSVgv c2Jpbl0NCisgIC0tbGliZXhlY2Rpcj1ESVIgICAgICAgIHByb2dyYW0gZXhlY3V0YWJsZXMgW0VQ UkVGSVgvbGliZXhlY10NCisgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5n bGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvZXRjXQ0KKyAgLS1zaGFyZWRzdGF0ZWRpcj1ESVIgICAg bW9kaWZpYWJsZSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YQ0KW1BSRUZJWC9jb21dDQor ICAtLWxvY2Fsc3RhdGVkaXI9RElSICAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEg W1BSRUZJWC92YXJdDQorICAtLWxpYmRpcj1ESVIgICAgICAgICAgICBvYmplY3QgY29kZSBsaWJy YXJpZXMgW0VQUkVGSVgvbGliXQ0KKyAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIg ZmlsZXMgW1BSRUZJWC9pbmNsdWRlXQ0KKyAgLS1vbGRpbmNsdWRlZGlyPURJUiAgICAgQyBoZWFk ZXIgZmlsZXMgZm9yIG5vbi1nY2MgWy91c3IvaW5jbHVkZV0NCisgIC0tZGF0YXJvb3RkaXI9RElS ICAgICAgIHJlYWQtb25seSBhcmNoLi1pbmRlcGVuZGVudCBkYXRhIHJvb3QNCltQUkVGSVgvc2hh cmVdDQorICAtLWRhdGFkaXI9RElSICAgICAgICAgICByZWFkLW9ubHkgYXJjaGl0ZWN0dXJlLWlu ZGVwZW5kZW50IGRhdGENCltEQVRBUk9PVERJUl0NCisgIC0taW5mb2Rpcj1ESVIgICAgICAgICAg IGluZm8gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIvaW5mb10NCisgIC0tbG9jYWxlZGlyPURJ UiAgICAgICAgIGxvY2FsZS1kZXBlbmRlbnQgZGF0YSBbREFUQVJPT1RESVIvbG9jYWxlXQ0KKyAg LS1tYW5kaXI9RElSICAgICAgICAgICAgbWFuIGRvY3VtZW50YXRpb24gW0RBVEFST09URElSL21h bl0NCisgIC0tZG9jZGlyPURJUiAgICAgICAgICAgIGRvY3VtZW50YXRpb24gcm9vdCBbREFUQVJP T1RESVIvZG9jL25ld2xpYl0NCisgIC0taHRtbGRpcj1ESVIgICAgICAgICAgIGh0bWwgZG9jdW1l bnRhdGlvbiBbRE9DRElSXQ0KKyAgLS1kdmlkaXI9RElSICAgICAgICAgICAgZHZpIGRvY3VtZW50 YXRpb24gW0RPQ0RJUl0NCisgIC0tcGRmZGlyPURJUiAgICAgICAgICAgIHBkZiBkb2N1bWVudGF0 aW9uIFtET0NESVJdDQorICAtLXBzZGlyPURJUiAgICAgICAgICAgICBwcyBkb2N1bWVudGF0aW9u IFtET0NESVJdDQorX0FDRU9GDQorDQorICBjYXQgPDxcX0FDRU9GDQorDQorUHJvZ3JhbSBuYW1l czoNCisgIC0tcHJvZ3JhbS1wcmVmaXg9UFJFRklYICAgICAgICAgICAgcHJlcGVuZCBQUkVGSVgg dG8gaW5zdGFsbGVkDQpwcm9ncmFtIG5hbWVzDQorICAtLXByb2dyYW0tc3VmZml4PVNVRkZJWCAg ICAgICAgICAgIGFwcGVuZCBTVUZGSVggdG8gaW5zdGFsbGVkDQpwcm9ncmFtIG5hbWVzDQorICAt LXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9UFJPR1JBTSAgIHJ1biBzZWQgUFJPR1JBTSBvbiBpbnN0 YWxsZWQNCnByb2dyYW0gbmFtZXMNCisNCitTeXN0ZW0gdHlwZXM6DQorICAtLWJ1aWxkPUJVSUxE ICAgICBjb25maWd1cmUgZm9yIGJ1aWxkaW5nIG9uIEJVSUxEIFtndWVzc2VkXQ0KKyAgLS1ob3N0 PUhPU1QgICAgICAgY3Jvc3MtY29tcGlsZSB0byBidWlsZCBwcm9ncmFtcyB0byBydW4gb24gSE9T VA0KW0JVSUxEXQ0KK19BQ0VPRg0KK2ZpDQorDQoraWYgdGVzdCAtbiAiJGFjX2luaXRfaGVscCI7 IHRoZW4NCisgIGNhc2UgJGFjX2luaXRfaGVscCBpbg0KKyAgICAgc2hvcnQgfCByZWN1cnNpdmUg KSBlY2hvICJDb25maWd1cmF0aW9uIG9mIG5ld2xpYiAxLjE5LjA6Ijs7DQorICAgZXNhYw0KKyAg Y2F0IDw8XF9BQ0VPRg0KKw0KK09wdGlvbmFsIEZlYXR1cmVzOg0KKyAgLS1kaXNhYmxlLW9wdGlv bi1jaGVja2luZyAgaWdub3JlIHVucmVjb2duaXplZCAtLWVuYWJsZS8tLXdpdGgNCm9wdGlvbnMN CisgIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZFQVRVUkUgKHNhbWUg YXMgLS1lbmFibGUtDQpGRUFUVVJFPW5vKQ0KKyAgLS1lbmFibGUtRkVBVFVSRVs9QVJHXSAgaW5j bHVkZSBGRUFUVVJFIFtBUkc9eWVzXQ0KKyAgLS1lbmFibGUtbXVsdGlsaWIgICAgICAgICBidWls ZCBtYW55IGxpYnJhcnkgdmVyc2lvbnMgKGRlZmF1bHQpDQorICAtLWVuYWJsZS10YXJnZXQtb3B0 c3BhY2UgIG9wdGltaXplIGZvciBzcGFjZQ0KKyAgLS1lbmFibGUtbWFsbG9jLWRlYnVnZ2luZyBp bmRpY2F0ZSBtYWxsb2MgZGVidWdnaW5nIHJlcXVlc3RlZA0KKyAgLS1lbmFibGUtbmV3bGliLW11 bHRpdGhyZWFkICAgICAgICBlbmFibGUgc3VwcG9ydCBmb3IgbXVsdGlwbGUNCnRocmVhZHMNCisg IC0tZW5hYmxlLW5ld2xpYi1pY29udiAgICAgZW5hYmxlIGljb252IGxpYnJhcnkgc3VwcG9ydA0K KyAgLS1lbmFibGUtbmV3bGliLWVsaXgtbGV2ZWwgICAgICAgICBzdXBwbHkgZGVzaXJlZCBlbGl4 IGxpYnJhcnkgbGV2ZWwNCigxLTQpDQorICAtLWRpc2FibGUtbmV3bGliLWlvLWZsb2F0IGRpc2Fi bGUgcHJpbnRmL3NjYW5mIGZhbWlseSBmbG9hdCBzdXBwb3J0DQorICAtLWRpc2FibGUtbmV3bGli LXN1cHBsaWVkLXN5c2NhbGxzIGRpc2FibGUgbmV3bGliIGZyb20gc3VwcGx5aW5nDQpzeXNjYWxs cw0KKyAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgIHNwZWVkcyB1cCBvbmUtdGltZSBi dWlsZA0KKyAgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyAgIGRvIG5vdCByZWplY3Qgc2xv dyBkZXBlbmRlbmN5DQpleHRyYWN0b3JzDQorICAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgIGVu YWJsZSBtYWtlIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgbm90DQp1c2VmdWwNCisJCQkgIChhbmQg c29tZXRpbWVzIGNvbmZ1c2luZykgdG8gdGhlIGNhc3VhbA0KaW5zdGFsbGVyDQorDQorU29tZSBp bmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6DQorICBDQ0FTICAgICAgICBhc3NlbWJs ZXIgY29tcGlsZXIgY29tbWFuZCAoZGVmYXVsdHMgdG8gQ0MpDQorICBDQ0FTRkxBR1MgICBhc3Nl bWJsZXIgY29tcGlsZXIgZmxhZ3MgKGRlZmF1bHRzIHRvIENGTEFHUykNCisNCitVc2UgdGhlc2Ug dmFyaWFibGVzIHRvIG92ZXJyaWRlIHRoZSBjaG9pY2VzIG1hZGUgYnkgYGNvbmZpZ3VyZScgb3Ig dG8NCmhlbHANCitpdCB0byBmaW5kIGxpYnJhcmllcyBhbmQgcHJvZ3JhbXMgd2l0aCBub25zdGFu ZGFyZCBuYW1lcy9sb2NhdGlvbnMuDQorDQorUmVwb3J0IGJ1Z3MgdG8gdGhlIHBhY2thZ2UgcHJv dmlkZXIuDQorX0FDRU9GDQorYWNfc3RhdHVzPSQ/DQorZmkNCisNCitpZiB0ZXN0ICIkYWNfaW5p dF9oZWxwIiA9ICJyZWN1cnNpdmUiOyB0aGVuDQorICAjIElmIHRoZXJlIGFyZSBzdWJkaXJzLCBy ZXBvcnQgdGhlaXIgc3BlY2lmaWMgLS1oZWxwLg0KKyAgZm9yIGFjX2RpciBpbiA6ICRhY19zdWJk aXJzX2FsbDsgZG8gdGVzdCAieCRhY19kaXIiID0geDogJiYgY29udGludWUNCisgICAgdGVzdCAt ZCAiJGFjX2RpciIgfHwNCisgICAgICB7IGNkICIkc3JjZGlyIiAmJiBhY19wd2Q9YHB3ZGAgJiYg c3JjZGlyPS4gJiYgdGVzdCAtZCAiJGFjX2RpciI7DQp9IHx8DQorICAgICAgY29udGludWUNCisg ICAgYWNfYnVpbGRkaXI9Lg0KKw0KK2Nhc2UgIiRhY19kaXIiIGluDQorLikgYWNfZGlyX3N1ZmZp eD0gYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7DQorKikNCisg IGFjX2Rpcl9zdWZmaXg9L2AkYXNfZWNobyAiJGFjX2RpciIgfCBzZWQgJ3N8XlwuW1xcL118fCdg DQorICAjIEEgIi4uIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguDQorICBh Y190b3BfYnVpbGRkaXJfc3ViPWAkYXNfZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwgc2VkDQonc3wv W15cXC9dKnwvLi58ZztzfC98fCdgDQorICBjYXNlICRhY190b3BfYnVpbGRkaXJfc3ViIGluDQor ICAiIikgYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7DQorICAq KSAgYWNfdG9wX2J1aWxkX3ByZWZpeD0kYWNfdG9wX2J1aWxkZGlyX3N1Yi8gOzsNCisgIGVzYWMg OzsNCitlc2FjDQorYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfcHdkDQorYWNfYWJzX2J1aWxkZGly PSRhY19wd2QkYWNfZGlyX3N1ZmZpeA0KKyMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6DQor YWNfdG9wX2J1aWxkZGlyPSRhY190b3BfYnVpbGRfcHJlZml4DQorDQorY2FzZSAkc3JjZGlyIGlu DQorICAuKSAgIyBXZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuDQorICAgIGFjX3NyY2Rpcj0uDQor ICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZGRpcl9zdWINCisgICAgYWNfYWJzX3RvcF9z cmNkaXI9JGFjX3B3ZCA7Ow0KKyAgW1xcL10qIHwgPzpbXFwvXSogKSAgIyBBYnNvbHV0ZSBuYW1l Lg0KKyAgICBhY19zcmNkaXI9JHNyY2RpciRhY19kaXJfc3VmZml4Ow0KKyAgICBhY190b3Bfc3Jj ZGlyPSRzcmNkaXINCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9JHNyY2RpciA7Ow0KKyAgKikgIyBS ZWxhdGl2ZSBuYW1lLg0KKyAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGly JGFjX2Rpcl9zdWZmaXgNCisgICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRz cmNkaXINCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3B3ZC8kc3JjZGlyIDs7DQorZXNhYw0K K2FjX2Fic19zcmNkaXI9JGFjX2Fic190b3Bfc3JjZGlyJGFjX2Rpcl9zdWZmaXgNCisNCisgICAg Y2QgIiRhY19kaXIiIHx8IHsgYWNfc3RhdHVzPSQ/OyBjb250aW51ZTsgfQ0KKyAgICAjIENoZWNr IGZvciBndWVzdGVkIGNvbmZpZ3VyZS4NCisgICAgaWYgdGVzdCAtZiAiJGFjX3NyY2Rpci9jb25m aWd1cmUuZ251IjsgdGhlbg0KKyAgICAgIGVjaG8gJiYNCisgICAgICAkU0hFTEwgIiRhY19zcmNk aXIvY29uZmlndXJlLmdudSIgLS1oZWxwPXJlY3Vyc2l2ZQ0KKyAgICBlbGlmIHRlc3QgLWYgIiRh Y19zcmNkaXIvY29uZmlndXJlIjsgdGhlbg0KKyAgICAgIGVjaG8gJiYNCisgICAgICAkU0hFTEwg IiRhY19zcmNkaXIvY29uZmlndXJlIiAtLWhlbHA9cmVjdXJzaXZlDQorICAgIGVsc2UNCisgICAg ICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBubyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9u IGlzIGluDQokYWNfZGlyIiA+JjINCisgICAgZmkgfHwgYWNfc3RhdHVzPSQ/DQorICAgIGNkICIk YWNfcHdkIiB8fCB7IGFjX3N0YXR1cz0kPzsgYnJlYWs7IH0NCisgIGRvbmUNCitmaQ0KKw0KK3Rl c3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cw0KK2lmICRhY19pbml0X3Zl cnNpb247IHRoZW4NCisgIGNhdCA8PFxfQUNFT0YNCituZXdsaWIgY29uZmlndXJlIDEuMTkuMA0K K2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NA0KKw0KK0NvcHlyaWdodCAoQykgMjAwOSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCitUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMg ZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0KK2dpdmVzIHVubGlt aXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4NCitfQUNF T0YNCisgIGV4aXQNCitmaQ0KKw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KKyMj IEF1dG9jb25mIGluaXRpYWxpemF0aW9uLiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSAjIw0KKw0KKyMgYWNfZm5fY190cnlfY29tcGlsZSBMSU5FTk8NCisjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQorIyBUcnkgdG8gY29tcGlsZSBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0 dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuDQorYWNfZm5fY190cnlfY29tcGlsZSAoKQ0KK3sN CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifQ0KYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVu b19zdGFjaz0kYXNfbGluZW5vX3N0YWNrDQorICBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0DQor ICBpZiB7IHsgYWNfdHJ5PSIkYWNfY29tcGlsZSINCitjYXNlICIoKCRhY190cnkiIGluDQorICAq XCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsNCisgICopIGFjX3RyeV9l Y2hvPSRhY190cnk7Ow0KK2VzYWMNCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIg0KKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8i OyB9ID4mNQ0KKyAgKGV2YWwgIiRhY19jb21waWxlIikgMj5jb25mdGVzdC5lcnINCisgIGFjX3N0 YXR1cz0kPw0KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4NCisgICAgZ3JlcCAtdiAn XiAqKycgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjENCisgICAgY2F0IGNvbmZ0ZXN0LmVyMSA+ JjUNCisgICAgbXYgLWYgY29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycg0KKyAgZmkNCisgICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQ0K KyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB7DQorCSB0ZXN0IC16ICIkYWNfY193ZXJyb3Jf ZmxhZyIgfHwNCisJIHRlc3QgISAtcyBjb25mdGVzdC5lcnINCisgICAgICAgfSAmJiB0ZXN0IC1z IGNvbmZ0ZXN0LiRhY19vYmpleHQ7IHRoZW4gOg0KKyAgYWNfcmV0dmFsPTANCitlbHNlDQorICAk YXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUNCitzZWQgJ3MvXi98IC8n IGNvbmZ0ZXN0LiRhY19leHQgPiY1DQorDQorCWFjX3JldHZhbD0xDQorZmkNCisgIGV2YWwgJGFz X2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVu bz07DQp1bnNldCBhc19saW5lbm87fQ0KKyAgcmV0dXJuICRhY19yZXR2YWwNCisNCit9ICMgYWNf Zm5fY190cnlfY29tcGlsZQ0KK2NhdCA+Y29uZmlnLmxvZyA8PF9BQ0VPRg0KK1RoaXMgZmlsZSBj b250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlDQorcnVubmlu ZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFr ZS4NCisNCitJdCB3YXMgY3JlYXRlZCBieSBuZXdsaWIgJGFzX21lIDEuMTkuMCwgd2hpY2ggd2Fz DQorZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY0LiAgSW52b2NhdGlvbiBjb21tYW5kIGxp bmUgd2FzDQorDQorICAkICQwICRADQorDQorX0FDRU9GDQorZXhlYyA1Pj5jb25maWcubG9nDQor ew0KK2NhdCA8PF9BU1VOQU1FDQorIyMgLS0tLS0tLS0tICMjDQorIyMgUGxhdGZvcm0uICMjDQor IyMgLS0tLS0tLS0tICMjDQorDQoraG9zdG5hbWUgPSBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAy Pi9kZXYvbnVsbCB8IHNlZCAxcWANCit1bmFtZSAtbSA9IGAodW5hbWUgLW0pIDI+L2Rldi9udWxs IHx8IGVjaG8gdW5rbm93bmANCit1bmFtZSAtciA9IGAodW5hbWUgLXIpIDI+L2Rldi9udWxsIHx8 IGVjaG8gdW5rbm93bmANCit1bmFtZSAtcyA9IGAodW5hbWUgLXMpIDI+L2Rldi9udWxsIHx8IGVj aG8gdW5rbm93bmANCit1bmFtZSAtdiA9IGAodW5hbWUgLXYpIDI+L2Rldi9udWxsIHx8IGVjaG8g dW5rbm93bmANCisNCisvdXNyL2Jpbi91bmFtZSAtcCA9IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+ L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmANCisvYmluL3VuYW1lIC1YICAgICA9IGAoL2Jpbi91 bmFtZSAtWCkgMj4vZGV2L251bGwgICAgIHx8IGVjaG8gdW5rbm93bmANCisNCisvYmluL2FyY2gg ICAgICAgICAgICAgID0gYCgvYmluL2FyY2gpIDI+L2Rldi9udWxsICAgICAgICAgICAgICB8fCBl Y2hvDQp1bmtub3duYA0KKy91c3IvYmluL2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2gg LWspIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8NCnVua25vd25gDQorL3Vzci9jb252ZXgvZ2V0 c3lzaW5mbyA9IGAoL3Vzci9jb252ZXgvZ2V0c3lzaW5mbykgMj4vZGV2L251bGwgfHwgZWNobw0K dW5rbm93bmANCisvdXNyL2Jpbi9ob3N0aW5mbyAgICAgID0gYCgvdXNyL2Jpbi9ob3N0aW5mbykg Mj4vZGV2L251bGwgICAgICB8fCBlY2hvDQp1bmtub3duYA0KKy9iaW4vbWFjaGluZSAgICAgICAg ICAgPSBgKC9iaW4vbWFjaGluZSkgMj4vZGV2L251bGwgICAgICAgICAgIHx8IGVjaG8NCnVua25v d25gDQorL3Vzci9iaW4vb3NsZXZlbCAgICAgICA9IGAoL3Vzci9iaW4vb3NsZXZlbCkgMj4vZGV2 L251bGwgICAgICAgfHwgZWNobw0KdW5rbm93bmANCisvYmluL3VuaXZlcnNlICAgICAgICAgID0g YCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbCAgICAgICAgICB8fCBlY2hvDQp1bmtub3duYA0K Kw0KK19BU1VOQU1FDQorDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0K K2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAt eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgJGFzX2VjaG8gIlBBVEg6ICRhc19kaXIiDQor ICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK30gPiY1DQorDQorY2F0ID4mNSA8PF9BQ0VP Rg0KKw0KKw0KKyMjIC0tLS0tLS0tLS0tICMjDQorIyMgQ29yZSB0ZXN0cy4gIyMNCisjIyAtLS0t LS0tLS0tLSAjIw0KKw0KK19BQ0VPRg0KKw0KKw0KKyMgS2VlcCBhIHRyYWNlIG9mIHRoZSBjb21t YW5kIGxpbmUuDQorIyBTdHJpcCBvdXQgLS1uby1jcmVhdGUgYW5kIC0tbm8tcmVjdXJzaW9uIHNv IHRoZXkgZG8gbm90IHBpbGUgdXAuDQorIyBTdHJpcCBvdXQgLS1zaWxlbnQgYmVjYXVzZSB3ZSBk b24ndCB3YW50IHRvIHJlY29yZCBpdCBmb3IgZnV0dXJlDQpydW5zLg0KKyMgQWxzbyBxdW90ZSBh bnkgYXJncyBjb250YWluaW5nIHNoZWxsIG1ldGEtY2hhcmFjdGVycy4NCisjIE1ha2UgdHdvIHBh c3NlcyB0byBhbGxvdyBmb3IgcHJvcGVyIGR1cGxpY2F0ZS1hcmd1bWVudCBzdXBwcmVzc2lvbi4N CithY19jb25maWd1cmVfYXJncz0NCithY19jb25maWd1cmVfYXJnczA9DQorYWNfY29uZmlndXJl X2FyZ3MxPQ0KK2FjX211c3Rfa2VlcF9uZXh0PWZhbHNlDQorZm9yIGFjX3Bhc3MgaW4gMSAyDQor ZG8NCisgIGZvciBhY19hcmcNCisgIGRvDQorICAgIGNhc2UgJGFjX2FyZyBpbg0KKyAgICAtbm8t Y3JlYXRlIHwgLS1uby1jKiB8IC1uIHwgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tciopIGNvbnRpbnVl IDs7DQorICAgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8 IC0tcSBcDQorICAgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0t c2lsKQ0KKyAgICAgIGNvbnRpbnVlIDs7DQorICAgICpcJyopDQorICAgICAgYWNfYXJnPWAkYXNf ZWNobyAiJGFjX2FyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAgOzsNCisgICAgZXNhYw0K KyAgICBjYXNlICRhY19wYXNzIGluDQorICAgIDEpIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVf YXJnczAgIiAnJGFjX2FyZyciIDs7DQorICAgIDIpDQorICAgICAgYXNfZm5fYXBwZW5kIGFjX2Nv bmZpZ3VyZV9hcmdzMSAiICckYWNfYXJnJyINCisgICAgICBpZiB0ZXN0ICRhY19tdXN0X2tlZXBf bmV4dCA9IHRydWU7IHRoZW4NCisJYWNfbXVzdF9rZWVwX25leHQ9ZmFsc2UgIyBHb3QgdmFsdWUs IGJhY2sgdG8gbm9ybWFsLg0KKyAgICAgIGVsc2UNCisJY2FzZSAkYWNfYXJnIGluDQorCSAgKj0q IHwgLS1jb25maWctY2FjaGUgfCAtQyB8IC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKiBcDQorCSAg fCAtZW5hYmxlLSogfCAtLWVuYWJsZS0qIHwgLWdhcyB8IC0tZyogfCAtbmZwIHwgLS1uZiogXA0K KwkgIHwgLXEgfCAtcXVpZXQgfCAtLXEqIHwgLXNpbGVudCB8IC0tc2lsKiB8IC12IHwgLXZlcmIq IFwNCisJICB8IC13aXRoLSogfCAtLXdpdGgtKiB8IC13aXRob3V0LSogfCAtLXdpdGhvdXQtKiB8 IC0teCkNCisJICAgIGNhc2UgIiRhY19jb25maWd1cmVfYXJnczAgIiBpbg0KKwkgICAgICAiJGFj X2NvbmZpZ3VyZV9hcmdzMSIqIiAnJGFjX2FyZycgIiogKSBjb250aW51ZSA7Ow0KKwkgICAgZXNh Yw0KKwkgICAgOzsNCisJICAtKiApIGFjX211c3Rfa2VlcF9uZXh0PXRydWUgOzsNCisJZXNhYw0K KyAgICAgIGZpDQorICAgICAgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzICIgJyRhY19h cmcnIg0KKyAgICAgIDs7DQorICAgIGVzYWMNCisgIGRvbmUNCitkb25lDQoreyBhY19jb25maWd1 cmVfYXJnczA9OyB1bnNldCBhY19jb25maWd1cmVfYXJnczA7fQ0KK3sgYWNfY29uZmlndXJlX2Fy Z3MxPTsgdW5zZXQgYWNfY29uZmlndXJlX2FyZ3MxO30NCisNCisjIFdoZW4gaW50ZXJydXB0ZWQg b3IgZXhpdCdkLCBjbGVhbnVwIHRlbXBvcmFyeSBmaWxlcywgYW5kIGNvbXBsZXRlDQorIyBjb25m aWcubG9nLiAgV2UgcmVtb3ZlIGNvbW1lbnRzIGJlY2F1c2UgYW55d2F5IHRoZSBxdW90ZXMgaW4g dGhlcmUNCisjIHdvdWxkIGNhdXNlIHByb2JsZW1zIG9yIGxvb2sgdWdseS4NCisjIFdBUk5JTkc6 IFVzZSAnXCcnIHRvIHJlcHJlc2VudCBhbiBhcG9zdHJvcGhlIHdpdGhpbiB0aGUgdHJhcC4NCisj IFdBUk5JTkc6IERvIG5vdCBzdGFydCB0aGUgdHJhcCBjb2RlIHdpdGggYSBuZXdsaW5lLCBkdWUg dG8gYSBGcmVlQlNEDQo0LjAgYnVnLg0KK3RyYXAgJ2V4aXRfc3RhdHVzPSQ/DQorICAjIFNhdmUg aW50byBjb25maWcubG9nIHNvbWUgaW5mb3JtYXRpb24gdGhhdCBtaWdodCBoZWxwIGluDQpkZWJ1 Z2dpbmcuDQorICB7DQorICAgIGVjaG8NCisNCisgICAgY2F0IDw8XF9BU0JPWA0KKyMjIC0tLS0t LS0tLS0tLS0tLS0gIyMNCisjIyBDYWNoZSB2YXJpYWJsZXMuICMjDQorIyMgLS0tLS0tLS0tLS0t LS0tLSAjIw0KK19BU0JPWA0KKyAgICBlY2hvDQorICAgICMgVGhlIGZvbGxvd2luZyB3YXkgb2Yg d3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBpbg0KdmFsdWVzLA0KKygNCisg IGZvciBhY192YXIgaW4gYChzZXQpIDI+JjEgfCBzZWQgLW4gJ1wnJ3MvXlwoW2EtekEtWl9dW2Et ekEtWjAtDQo5X10qXCk9LiovXDEvcCdcJydgOyBkbw0KKyAgICBldmFsIGFjX3ZhbD1cJCRhY192 YXINCisgICAgY2FzZSAkYWNfdmFsIGluICMoDQorICAgICoke2FzX25sfSopDQorICAgICAgY2Fz ZSAkYWNfdmFyIGluICMoDQorICAgICAgKl9jdl8qKSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IFdBUk5JTkc6IGNhY2hlDQp2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5z IGEgbmV3bGluZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogY2FjaGUgdmFyaWFi bGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiDQo+JjI7fSA7Ow0KKyAgICAgIGVzYWMNCisg ICAgICBjYXNlICRhY192YXIgaW4gIygNCisgICAgICBfIHwgSUZTIHwgYXNfbmwpIDs7ICMoDQor ICAgICAgQkFTSF9BUkdWIHwgQkFTSF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0gOzsgIygNCisgICAg ICAqKSB7IGV2YWwgJGFjX3Zhcj07IHVuc2V0ICRhY192YXI7fSA7Ow0KKyAgICAgIGVzYWMgOzsN CisgICAgZXNhYw0KKyAgZG9uZQ0KKyAgKHNldCkgMj4mMSB8DQorICAgIGNhc2UgJGFzX25sYChh Y19zcGFjZT0nXCcnICdcJyc7IHNldCkgMj4mMWAgaW4gIygNCisgICAgKiR7YXNfbmx9YWNfc3Bh Y2U9XCAqKQ0KKyAgICAgIHNlZCAtbiBcDQorCSJzLydcJycvJ1wnJ1xcXFwnXCcnJ1wnJy9nOw0K KwkgDQpzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipc XCkvXFwxPSdcJydcXDInXCcnLw0KcCINCisgICAgICA7OyAjKA0KKyAgICAqKQ0KKyAgICAgIHNl ZCAtbiAiL15bXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiDQorICAgICAg OzsNCisgICAgZXNhYyB8DQorICAgIHNvcnQNCispDQorICAgIGVjaG8NCisNCisgICAgY2F0IDw8 XF9BU0JPWA0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjDQorIyMgT3V0cHV0IHZhcmlhYmxlcy4g IyMNCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIw0KK19BU0JPWA0KKyAgICBlY2hvDQorICAgIGZv ciBhY192YXIgaW4gJGFjX3N1YnN0X3ZhcnMNCisgICAgZG8NCisgICAgICBldmFsIGFjX3ZhbD1c JCRhY192YXINCisgICAgICBjYXNlICRhY192YWwgaW4NCisgICAgICAqXCdcJycqKSBhY192YWw9 YCRhc19lY2hvICIkYWNfdmFsIiB8IHNlZA0KInMvJ1wnJy8nXCcnXFxcXFxcXFwnXCcnJ1wnJy9n ImA7Ow0KKyAgICAgIGVzYWMNCisgICAgICAkYXNfZWNobyAiJGFjX3Zhcj0nXCcnJGFjX3ZhbCdc JyciDQorICAgIGRvbmUgfCBzb3J0DQorICAgIGVjaG8NCisNCisgICAgaWYgdGVzdCAtbiAiJGFj X3N1YnN0X2ZpbGVzIjsgdGhlbg0KKyAgICAgIGNhdCA8PFxfQVNCT1gNCisjIyAtLS0tLS0tLS0t LS0tLS0tLS0tICMjDQorIyMgRmlsZSBzdWJzdGl0dXRpb25zLiAjIw0KKyMjIC0tLS0tLS0tLS0t LS0tLS0tLS0gIyMNCitfQVNCT1gNCisgICAgICBlY2hvDQorICAgICAgZm9yIGFjX3ZhciBpbiAk YWNfc3Vic3RfZmlsZXMNCisgICAgICBkbw0KKwlldmFsIGFjX3ZhbD1cJCRhY192YXINCisJY2Fz ZSAkYWNfdmFsIGluDQorCSpcJ1wnJyopIGFjX3ZhbD1gJGFzX2VjaG8gIiRhY192YWwiIHwgc2Vk DQoicy8nXCcnLydcJydcXFxcXFxcXCdcJycnXCcnL2ciYDs7DQorCWVzYWMNCisJJGFzX2VjaG8g IiRhY192YXI9J1wnJyRhY192YWwnXCcnIg0KKyAgICAgIGRvbmUgfCBzb3J0DQorICAgICAgZWNo bw0KKyAgICBmaQ0KKw0KKyAgICBpZiB0ZXN0IC1zIGNvbmZkZWZzLmg7IHRoZW4NCisgICAgICBj YXQgPDxcX0FTQk9YDQorIyMgLS0tLS0tLS0tLS0gIyMNCisjIyBjb25mZGVmcy5oLiAjIw0KKyMj IC0tLS0tLS0tLS0tICMjDQorX0FTQk9YDQorICAgICAgZWNobw0KKyAgICAgIGNhdCBjb25mZGVm cy5oDQorICAgICAgZWNobw0KKyAgICBmaQ0KKyAgICB0ZXN0ICIkYWNfc2lnbmFsIiAhPSAwICYm DQorICAgICAgJGFzX2VjaG8gIiRhc19tZTogY2F1Z2h0IHNpZ25hbCAkYWNfc2lnbmFsIg0KKyAg ICAkYXNfZWNobyAiJGFzX21lOiBleGl0ICRleGl0X3N0YXR1cyINCisgIH0gPiY1DQorICBybSAt ZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogJiYNCisgICAgcm0gLWYgLXIgY29uZnRlc3Qq IGNvbmZkZWZzKiBjb25mJCQqICRhY19jbGVhbl9maWxlcyAmJg0KKyAgICBleGl0ICRleGl0X3N0 YXR1cw0KKycgMA0KK2ZvciBhY19zaWduYWwgaW4gMSAyIDEzIDE1OyBkbw0KKyAgdHJhcCAnYWNf c2lnbmFsPSckYWNfc2lnbmFsJzsgYXNfZm5fZXhpdCAxJyAkYWNfc2lnbmFsDQorZG9uZQ0KK2Fj X3NpZ25hbD0wDQorDQorIyBjb25mZGVmcy5oIGF2b2lkcyBPUyBjb21tYW5kIGxpbmUgbGVuZ3Ro IGxpbWl0cyB0aGF0IERFRlMgY2FuDQpleGNlZWQuDQorcm0gLWYgLXIgY29uZnRlc3QqIGNvbmZk ZWZzLmgNCisNCiskYXNfZWNobyAiLyogY29uZmRlZnMuaCAqLyIgPiBjb25mZGVmcy5oDQorDQor IyBQcmVkZWZpbmVkIHByZXByb2Nlc3NvciB2YXJpYWJsZXMuDQorDQorY2F0ID4+Y29uZmRlZnMu aCA8PF9BQ0VPRg0KKyNkZWZpbmUgUEFDS0FHRV9OQU1FICIkUEFDS0FHRV9OQU1FIg0KK19BQ0VP Rg0KKw0KK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YNCisjZGVmaW5lIFBBQ0tBR0VfVEFSTkFN RSAiJFBBQ0tBR0VfVEFSTkFNRSINCitfQUNFT0YNCisNCitjYXQgPj5jb25mZGVmcy5oIDw8X0FD RU9GDQorI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIiRQQUNLQUdFX1ZFUlNJT04iDQorX0FDRU9G DQorDQorY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRg0KKyNkZWZpbmUgUEFDS0FHRV9TVFJJTkcg IiRQQUNLQUdFX1NUUklORyINCitfQUNFT0YNCisNCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G DQorI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAiJFBBQ0tBR0VfQlVHUkVQT1JUIg0KK19BQ0VP Rg0KKw0KK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YNCisjZGVmaW5lIFBBQ0tBR0VfVVJMICIk UEFDS0FHRV9VUkwiDQorX0FDRU9GDQorDQorDQorIyBMZXQgdGhlIHNpdGUgZmlsZSBzZWxlY3Qg YW4gYWx0ZXJuYXRlIGNhY2hlIGZpbGUgaWYgaXQgd2FudHMgdG8uDQorIyBQcmVmZXIgYW4gZXhw bGljaXRseSBzZWxlY3RlZCBmaWxlIHRvIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgb25lcy4NCith Y19zaXRlX2ZpbGUxPU5PTkUNCithY19zaXRlX2ZpbGUyPU5PTkUNCitpZiB0ZXN0IC1uICIkQ09O RklHX1NJVEUiOyB0aGVuDQorICBhY19zaXRlX2ZpbGUxPSRDT05GSUdfU0lURQ0KK2VsaWYgdGVz dCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuDQorICBhY19zaXRlX2ZpbGUxPSRwcmVmaXgvc2hh cmUvY29uZmlnLnNpdGUNCisgIGFjX3NpdGVfZmlsZTI9JHByZWZpeC9ldGMvY29uZmlnLnNpdGUN CitlbHNlDQorICBhY19zaXRlX2ZpbGUxPSRhY19kZWZhdWx0X3ByZWZpeC9zaGFyZS9jb25maWcu c2l0ZQ0KKyAgYWNfc2l0ZV9maWxlMj0kYWNfZGVmYXVsdF9wcmVmaXgvZXRjL2NvbmZpZy5zaXRl DQorZmkNCitmb3IgYWNfc2l0ZV9maWxlIGluICIkYWNfc2l0ZV9maWxlMSIgIiRhY19zaXRlX2Zp bGUyIg0KK2RvDQorICB0ZXN0ICJ4JGFjX3NpdGVfZmlsZSIgPSB4Tk9ORSAmJiBjb250aW51ZQ0K KyAgaWYgdGVzdCAtciAiJGFjX3NpdGVfZmlsZSI7IHRoZW4NCisgICAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBsb2FkaW5nIHNpdGUgc2NyaXB0DQokYWNfc2l0ZV9m aWxlIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRl X2ZpbGUiID4mNjt9DQorICAgIHNlZCAncy9eL3wgLycgIiRhY19zaXRlX2ZpbGUiID4mNQ0KKyAg ICAuICIkYWNfc2l0ZV9maWxlIg0KKyAgZmkNCitkb25lDQorDQoraWYgdGVzdCAtciAiJGNhY2hl X2ZpbGUiOyB0aGVuDQorICAjIFNvbWUgdmVyc2lvbnMgb2YgYmFzaCB3aWxsIGZhaWwgdG8gc291 cmNlIC9kZXYvbnVsbCAoc3BlY2lhbA0KKyAgIyBmaWxlcyBhY3R1YWxseSksIHNvIHdlIGF2b2lk IGRvaW5nIHRoYXQuDQorICBpZiB0ZXN0IC1mICIkY2FjaGVfZmlsZSI7IHRoZW4NCisgICAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBsb2FkaW5nIGNhY2hlDQokY2Fj aGVfZmlsZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogbG9hZGluZyBjYWNoZSAkY2FjaGVfZmls ZSIgPiY2O30NCisgICAgY2FzZSAkY2FjaGVfZmlsZSBpbg0KKyAgICAgIFtcXC9dKiB8ID86W1xc L10qICkgLiAiJGNhY2hlX2ZpbGUiOzsNCisgICAgICAqKSAgICAgICAgICAgICAgICAgICAgICAu ICIuLyRjYWNoZV9maWxlIjs7DQorICAgIGVzYWMNCisgIGZpDQorZWxzZQ0KKyAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmls ZSINCj4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGNyZWF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+ JjY7fQ0KKyAgPiRjYWNoZV9maWxlDQorZmkNCisNCisjIENoZWNrIHRoYXQgdGhlIHByZWNpb3Vz IHZhcmlhYmxlcyBzYXZlZCBpbiB0aGUgY2FjaGUgaGF2ZSBrZXB0IHRoZQ0Kc2FtZQ0KKyMgdmFs dWUuDQorYWNfY2FjaGVfY29ycnVwdGVkPWZhbHNlDQorZm9yIGFjX3ZhciBpbiAkYWNfcHJlY2lv dXNfdmFyczsgZG8NCisgIGV2YWwgYWNfb2xkX3NldD1cJGFjX2N2X2Vudl8ke2FjX3Zhcn1fc2V0 DQorICBldmFsIGFjX25ld19zZXQ9XCRhY19lbnZfJHthY192YXJ9X3NldA0KKyAgZXZhbCBhY19v bGRfdmFsPVwkYWNfY3ZfZW52XyR7YWNfdmFyfV92YWx1ZQ0KKyAgZXZhbCBhY19uZXdfdmFsPVwk YWNfZW52XyR7YWNfdmFyfV92YWx1ZQ0KKyAgY2FzZSAkYWNfb2xkX3NldCwkYWNfbmV3X3NldCBp bg0KKyAgICBzZXQsKQ0KKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzDQpzZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4gdGhl IHByZXZpb3VzIHJ1biIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicg d2FzIHNldCB0byBcYCRhY19vbGRfdmFsJyBpbiB0aGUNCnByZXZpb3VzIHJ1biIgPiYyO30NCisg ICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OiA7Ow0KKyAgICAsc2V0KQ0KKyAgICAgIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzDQpu b3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGVycm9y OiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iDQo+JjI7fQ0KKyAg ICAgIGFjX2NhY2hlX2NvcnJ1cHRlZD06IDs7DQorICAgICwpOzsNCisgICAgKikNCisgICAgICBp ZiB0ZXN0ICJ4JGFjX29sZF92YWwiICE9ICJ4JGFjX25ld192YWwiOyB0aGVuDQorCSMgZGlmZmVy ZW5jZXMgaW4gd2hpdGVzcGFjZSBkbyBub3QgbGVhZCB0byBmYWlsdXJlLg0KKwlhY19vbGRfdmFs X3c9YGVjaG8geCAkYWNfb2xkX3ZhbGANCisJYWNfbmV3X3ZhbF93PWBlY2hvIHggJGFjX25ld192 YWxgDQorCWlmIHRlc3QgIiRhY19vbGRfdmFsX3ciICE9ICIkYWNfbmV3X3ZhbF93IjsgdGhlbg0K KwkgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IFxgJGFj X3ZhcicNCmhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjUNCiskYXNfZWNo byAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlv dXMNCnJ1bjoiID4mMjt9DQorCSAgYWNfY2FjaGVfY29ycnVwdGVkPToNCisJZWxzZQ0KKwkgIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogd2FybmluZzogaWdub3JpbmcN CndoaXRlc3BhY2UgY2hhbmdlcyBpbiBcYCRhY192YXInIHNpbmNlIHRoZSBwcmV2aW91cyBydW46 IiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiB3YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNo YW5nZXMgaW4gXGAkYWNfdmFyJw0Kc2luY2UgdGhlIHByZXZpb3VzIHJ1bjoiID4mMjt9DQorCSAg ZXZhbCAkYWNfdmFyPVwkYWNfb2xkX3ZhbA0KKwlmaQ0KKwl7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306ICAgZm9ybWVyIHZhbHVlOiANClxgJGFjX29sZF92YWwnIiA+JjUN CiskYXNfZWNobyAiJGFzX21lOiAgIGZvcm1lciB2YWx1ZTogIFxgJGFjX29sZF92YWwnIiA+JjI7 fQ0KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICAgY3VycmVudCB2 YWx1ZToNClxgJGFjX25ld192YWwnIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiAgIGN1cnJlbnQg dmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjI7fQ0KKyAgICAgIGZpOzsNCisgIGVzYWMNCisgICMg UGFzcyBwcmVjaW91cyB2YXJpYWJsZXMgdG8gY29uZmlnLnN0YXR1cy4NCisgIGlmIHRlc3QgIiRh Y19uZXdfc2V0IiA9IHNldDsgdGhlbg0KKyAgICBjYXNlICRhY19uZXdfdmFsIGluDQorICAgICpc JyopIGFjX2FyZz0kYWNfdmFyPWAkYXNfZWNobyAiJGFjX25ld192YWwiIHwgc2VkDQoicy8nLydc XFxcXFxcXCcnL2ciYCA7Ow0KKyAgICAqKSBhY19hcmc9JGFjX3Zhcj0kYWNfbmV3X3ZhbCA7Ow0K KyAgICBlc2FjDQorICAgIGNhc2UgIiAkYWNfY29uZmlndXJlX2FyZ3MgIiBpbg0KKyAgICAgICoi ICckYWNfYXJnJyAiKikgOzsgIyBBdm9pZCBkdXBzLiAgVXNlIG9mIHF1b3RlcyBlbnN1cmVzDQph Y2N1cmFjeS4NCisgICAgICAqKSBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3MgIiAnJGFj X2FyZyciIDs7DQorICAgIGVzYWMNCisgIGZpDQorZG9uZQ0KK2lmICRhY19jYWNoZV9jb3JydXB0 ZWQ7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJy b3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAk YWNfcHdkJzoiID4mMjt9DQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGVycm9yOiBjaGFuZ2VzIGluIHRoZQ0KZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhl IGJ1aWxkIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52 aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhlDQpidWlsZCIgPiYyO30NCisgIGFzX2ZuX2Vycm9y ICJydW4gXGBtYWtlIGRpc3RjbGVhbicgYW5kL29yIFxgcm0gJGNhY2hlX2ZpbGUnIGFuZA0Kc3Rh cnQgb3ZlciIgIiRMSU5FTk8iIDUNCitmaQ0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQor IyMgTWFpbiBib2R5IG9mIHNjcmlwdC4gIyMNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0K Kw0KK2FjX2V4dD1jDQorYWNfY3BwPSckQ1BQICRDUFBGTEFHUycNCithY19jb21waWxlPSckQ0Mg LWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnDQorYWNfbGluaz0nJEND IC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUw0KY29uZnRl c3QuJGFjX2V4dCAkTElCUyA+JjUnDQorYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVy X2dudQ0KKw0KKw0KKw0KKw0KK2FjX2F1eF9kaXI9DQorZm9yIGFjX2RpciBpbiAuLi8uLi8uLi8u LiAiJHNyY2RpciIvLi4vLi4vLi4vLi47IGRvDQorICBmb3IgYWNfdCBpbiBpbnN0YWxsLXNoIGlu c3RhbGwuc2ggc2h0b29sOyBkbw0KKyAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY190IjsgdGhl bg0KKyAgICAgIGFjX2F1eF9kaXI9JGFjX2Rpcg0KKyAgICAgIGFjX2luc3RhbGxfc2g9IiRhY19h dXhfZGlyLyRhY190IC1jIg0KKyAgICAgIGJyZWFrIDINCisgICAgZmkNCisgIGRvbmUNCitkb25l DQoraWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuDQorICBhc19mbl9lcnJvciAiY2Fubm90 IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluDQouLi8uLi8uLi8uLiBc IiRzcmNkaXJcIi8uLi8uLi8uLi8uLiIgIiRMSU5FTk8iIDUNCitmaQ0KKw0KKyMgVGhlc2UgdGhy ZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3VwcG9ydGVkLA0KKyMgYW5kIGFy ZSBpbnRlbmRlZCB0byBiZSB3aXRoZHJhd24gaW4gYSBmdXR1cmUgQXV0b2NvbmYgcmVsZWFzZS4N CisjIFRoZXkgY2FuIGNhdXNlIHNlcmlvdXMgcHJvYmxlbXMgaWYgYSBidWlsZGVyJ3Mgc291cmNl IHRyZWUgaXMgaW4gYQ0KZGlyZWN0b3J5DQorIyB3aG9zZSBmdWxsIG5hbWUgY29udGFpbnMgdW51 c3VhbCBjaGFyYWN0ZXJzLg0KK2FjX2NvbmZpZ19ndWVzcz0iJFNIRUxMICRhY19hdXhfZGlyL2Nv bmZpZy5ndWVzcyIgICMgUGxlYXNlIGRvbid0IHVzZQ0KdGhpcyB2YXIuDQorYWNfY29uZmlnX3N1 Yj0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhp cw0KdmFyLg0KK2FjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZ3VyZSIgICMg UGxlYXNlIGRvbid0IHVzZSB0aGlzDQp2YXIuDQorDQorDQorDQorDQorIyBNYWtlIHN1cmUgd2Ug Y2FuIHJ1biBjb25maWcuc3ViLg0KKyRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgc3Vu NCA+L2Rldi9udWxsIDI+JjEgfHwNCisgIGFzX2ZuX2Vycm9yICJjYW5ub3QgcnVuICRTSEVMTCAk YWNfYXV4X2Rpci9jb25maWcuc3ViIiAiJExJTkVOTyIgNQ0KKw0KK3sgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiDQo+JjUN CiskYXNfZWNob19uICJjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQ0KK2lm IHRlc3QgIiR7YWNfY3ZfYnVpbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAi KGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBhY19idWlsZF9hbGlhcz0kYnVpbGRfYWxpYXMNCit0 ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9IHggJiYNCisgIGFjX2J1aWxkX2FsaWFzPWAkU0hFTEwg IiRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyJgDQordGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4 ICYmDQorICBhc19mbl9lcnJvciAiY2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7IHlvdSBtdXN0IHNw ZWNpZnkgb25lIg0KIiRMSU5FTk8iIDUNCithY19jdl9idWlsZD1gJFNIRUxMICIkYWNfYXV4X2Rp ci9jb25maWcuc3ViIiAkYWNfYnVpbGRfYWxpYXNgIHx8DQorICBhc19mbl9lcnJvciAiJFNIRUxM ICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGFjX2J1aWxkX2FsaWFzIGZhaWxlZCINCiIkTElORU5P IiA1DQorDQorZmkNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJGFjX2N2X2J1aWxkIiA+JjUNCiskYXNfZWNobyAiJGFjX2N2X2J1aWxkIiA+JjY7IH0N CitjYXNlICRhY19jdl9idWlsZCBpbg0KKyotKi0qKSA7Ow0KKyopIGFzX2ZuX2Vycm9yICJpbnZh bGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBidWlsZCIgIiRMSU5FTk8iIDU7Ow0KK2VzYWMNCitidWls ZD0kYWNfY3ZfYnVpbGQNCithY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nDQorc2V0IHggJGFjX2N2 X2J1aWxkDQorc2hpZnQNCitidWlsZF9jcHU9JDENCitidWlsZF92ZW5kb3I9JDINCitzaGlmdDsg c2hpZnQNCisjIFJlbWVtYmVyLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRv IGNyZWF0ZSAkKiwNCisjIGV4Y2VwdCB3aXRoIG9sZCBzaGVsbHM6DQorYnVpbGRfb3M9JCoNCitJ RlM9JGFjX3NhdmVfSUZTDQorY2FzZSAkYnVpbGRfb3MgaW4gKlwgKikgYnVpbGRfb3M9YGVjaG8g IiRidWlsZF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7DQplc2FjDQorDQorDQoreyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIg0K PiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQ0K K2lmIHRlc3QgIiR7YWNfY3ZfaG9zdCtzZXR9IiA9IHNldDsgdGhlbiA6DQorICAkYXNfZWNob19u ICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgIngkaG9zdF9hbGlhcyIgPSB4OyB0 aGVuDQorICBhY19jdl9ob3N0PSRhY19jdl9idWlsZA0KK2Vsc2UNCisgIGFjX2N2X2hvc3Q9YCRT SEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJGhvc3RfYWxpYXNgIHx8DQorICAgIGFzX2Zu X2Vycm9yICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkaG9zdF9hbGlhcyBmYWlsZWQi DQoiJExJTkVOTyIgNQ0KK2ZpDQorDQorZmkNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hvc3QiID4mNQ0KKyRhc19lY2hvICIkYWNfY3Zf aG9zdCIgPiY2OyB9DQorY2FzZSAkYWNfY3ZfaG9zdCBpbg0KKyotKi0qKSA7Ow0KKyopIGFzX2Zu X2Vycm9yICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBob3N0IiAiJExJTkVOTyIgNTs7DQor ZXNhYw0KK2hvc3Q9JGFjX2N2X2hvc3QNCithY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nDQorc2V0 IHggJGFjX2N2X2hvc3QNCitzaGlmdA0KK2hvc3RfY3B1PSQxDQoraG9zdF92ZW5kb3I9JDINCitz aGlmdDsgc2hpZnQNCisjIFJlbWVtYmVyLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1 c2VkIHRvIGNyZWF0ZSAkKiwNCisjIGV4Y2VwdCB3aXRoIG9sZCBzaGVsbHM6DQoraG9zdF9vcz0k Kg0KK0lGUz0kYWNfc2F2ZV9JRlMNCitjYXNlICRob3N0X29zIGluICpcICopIGhvc3Rfb3M9YGVj aG8gIiRob3N0X29zIiB8IHNlZCAncy8gLy0vZydgOzsNCmVzYWMNCisNCisNCithbV9fYXBpX3Zl cnNpb249IjEuOSINCisjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBh IEMgcHJvZ3JhbSAoZmFzdGVyKSwNCisjIHNvIG9uZSBzY3JpcHQgaXMgYXMgZ29vZCBhcyBhbm90 aGVyLiAgQnV0IGF2b2lkIHRoZSBicm9rZW4gb3INCisjIGluY29tcGF0aWJsZSB2ZXJzaW9uczoN CisjIFN5c1YgL2V0Yy9pbnN0YWxsLCAvdXNyL3NiaW4vaW5zdGFsbA0KKyMgU3VuT1MgL3Vzci9l dGMvaW5zdGFsbA0KKyMgSVJJWCAvc2Jpbi9pbnN0YWxsDQorIyBBSVggL2Jpbi9pbnN0YWxsDQor IyBBbWlnYU9TIC9DL2luc3RhbGwsIHdoaWNoIGluc3RhbGxzIGJvb3RibG9ja3Mgb24gZmxvcHB5 IGRpc2NzDQorIyBBSVggNCAvdXNyL2Jpbi9pbnN0YWxsYnNkLCB3aGljaCBkb2Vzbid0IHdvcmsg d2l0aG91dCBhIC1nIGZsYWcNCisjIEFGUyAvdXNyL2Fmc3dzL2Jpbi9pbnN0YWxsLCB3aGljaCBt aXNoYW5kbGVzIG5vbmV4aXN0ZW50IGFyZ3MNCisjIFNWUjQgL3Vzci91Y2IvaW5zdGFsbCwgd2hp Y2ggdHJpZXMgdG8gdXNlIHRoZSBub25leGlzdGVudCBncm91cA0KInN0YWZmIg0KKyMgT1MvMidz IHN5c3RlbSBpbnN0YWxsLCB3aGljaCBoYXMgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBzZW1hbnRp Yw0KKyMgLi9pbnN0YWxsLCB3aGljaCBjYW4gYmUgZXJyb25lb3VzbHkgY3JlYXRlZCBieSBtYWtl IGZyb20NCi4vaW5zdGFsbC5zaC4NCisjIFJlamVjdCBpbnN0YWxsIHByb2dyYW1zIHRoYXQgY2Fu bm90IGluc3RhbGwgbXVsdGlwbGUgZmlsZXMuDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZQ0KaW5zdGFsbCIgPiY1 DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbC4uLiAi ID4mNjsgfQ0KK2lmIHRlc3QgLXogIiRJTlNUQUxMIjsgdGhlbg0KK2lmIHRlc3QgIiR7YWNfY3Zf cGF0aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQp ICIgPiY2DQorZWxzZQ0KKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0K K2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAt eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgIyBBY2NvdW50IGZvciBwZW9wbGUgd2hvIHB1 dCB0cmFpbGluZyBzbGFzaGVzIGluIFBBVEggZWxlbWVudHMuDQorY2FzZSAkYXNfZGlyLyBpbiAj KCgNCisgIC4vIHwgLi8vIHwgL1tjQ10vKiB8IFwNCisgIC9ldGMvKiB8IC91c3Ivc2Jpbi8qIHwg L3Vzci9ldGMvKiB8IC9zYmluLyogfCAvdXNyL2Fmc3dzL2Jpbi8qIHwgXA0KKyAgPzpbXFwvXW9z MltcXC9daW5zdGFsbFtcXC9dKiB8ID86W1xcL11PUzJbXFwvXUlOU1RBTExbXFwvXSogfCBcDQor ICAvdXNyL3VjYi8qICkgOzsNCisgICopDQorICAgICMgT1NGMSBhbmQgU0NPIE9EVCAzLjAgaGF2 ZSB0aGVpciBvd24gbmFtZXMgZm9yIGluc3RhbGwuDQorICAgICMgRG9uJ3QgdXNlIGluc3RhbGxi c2QgZnJvbSBPU0Ygc2luY2UgaXQgaW5zdGFsbHMgc3R1ZmYgYXMgcm9vdA0KKyAgICAjIGJ5IGRl ZmF1bHQuDQorICAgIGZvciBhY19wcm9nIGluIGdpbnN0YWxsIHNjb2luc3QgaW5zdGFsbDsgZG8N CisgICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsg ZG8NCisJaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiAmJiAkYXNf dGVzdF94DQoiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCI7IH07IHRoZW4NCisJICBpZiB0 ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJg0KKwkgICAgZ3JlcCBkc3Btc2cgIiRhc19kaXIvJGFj X3Byb2ckYWNfZXhlY19leHQiID4vZGV2L251bGwNCjI+JjE7IHRoZW4NCisJICAgICMgQUlYIGlu c3RhbGwuICBJdCBoYXMgYW4gaW5jb21wYXRpYmxlIGNhbGxpbmcgY29udmVudGlvbi4NCisJICAg IDoNCisJICBlbGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmDQorCSAgICBncmVwIHB3cGx1 cyAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgPi9kZXYvbnVsbA0KMj4mMTsgdGhlbg0K KwkgICAgIyBwcm9ncmFtLXNwZWNpZmljIGluc3RhbGwgc2NyaXB0IHVzZWQgYnkgSFAgcHdwbHVz LS1kb24ndA0KdXNlLg0KKwkgICAgOg0KKwkgIGVsc2UNCisJICAgIHJtIC1yZiBjb25mdGVzdC5v bmUgY29uZnRlc3QudHdvIGNvbmZ0ZXN0LmRpcg0KKwkgICAgZWNobyBvbmUgPiBjb25mdGVzdC5v bmUNCisJICAgIGVjaG8gdHdvID4gY29uZnRlc3QudHdvDQorCSAgICBta2RpciBjb25mdGVzdC5k aXINCisJICAgIGlmICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiAtYyBjb25mdGVzdC5v bmUNCmNvbmZ0ZXN0LnR3byAiYHB3ZGAvY29uZnRlc3QuZGlyIiAmJg0KKwkgICAgICB0ZXN0IC1z IGNvbmZ0ZXN0Lm9uZSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0LnR3byAmJg0KKwkgICAgICB0ZXN0IC1z IGNvbmZ0ZXN0LmRpci9jb25mdGVzdC5vbmUgJiYNCisJICAgICAgdGVzdCAtcyBjb25mdGVzdC5k aXIvY29uZnRlc3QudHdvDQorCSAgICB0aGVuDQorCSAgICAgIGFjX2N2X3BhdGhfaW5zdGFsbD0i JGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCAtYyINCisJICAgICAgYnJlYWsgMw0KKwkgICAg ZmkNCisJICBmaQ0KKwlmaQ0KKyAgICAgIGRvbmUNCisgICAgZG9uZQ0KKyAgICA7Ow0KK2VzYWMN CisNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorcm0gLXJmIGNvbmZ0ZXN0Lm9uZSBj b25mdGVzdC50d28gY29uZnRlc3QuZGlyDQorDQorZmkNCisgIGlmIHRlc3QgIiR7YWNfY3ZfcGF0 aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuDQorICAgIElOU1RBTEw9JGFjX2N2X3BhdGhfaW5z dGFsbA0KKyAgZWxzZQ0KKyAgICAjIEFzIGEgbGFzdCByZXNvcnQsIHVzZSB0aGUgc2xvdyBzaGVs bCBzY3JpcHQuICBEb24ndCBjYWNoZSBhDQorICAgICMgdmFsdWUgZm9yIElOU1RBTEwgd2l0aGlu IGEgc291cmNlIGRpcmVjdG9yeSwgYmVjYXVzZSB0aGF0IHdpbGwNCisgICAgIyBicmVhayBvdGhl ciBwYWNrYWdlcyB1c2luZyB0aGUgY2FjaGUgaWYgdGhhdCBkaXJlY3RvcnkgaXMNCisgICAgIyBy ZW1vdmVkLCBvciBpZiB0aGUgdmFsdWUgaXMgYSByZWxhdGl2ZSBuYW1lLg0KKyAgICBJTlNUQUxM PSRhY19pbnN0YWxsX3NoDQorICBmaQ0KK2ZpDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRJTlNUQUxMIiA+JjUNCiskYXNfZWNobyAiJElOU1RBTEwi ID4mNjsgfQ0KKw0KKyMgVXNlIHRlc3QgLXogYmVjYXVzZSBTdW5PUzQgc2ggbWlzaGFuZGxlcyBi cmFjZXMgaW4gJHt2YXItdmFsfS4NCisjIEl0IHRoaW5rcyB0aGUgZmlyc3QgY2xvc2UgYnJhY2Ug ZW5kcyB0aGUgdmFyaWFibGUgc3Vic3RpdHV0aW9uLg0KK3Rlc3QgLXogIiRJTlNUQUxMX1BST0dS QU0iICYmIElOU1RBTExfUFJPR1JBTT0nJHtJTlNUQUxMfScNCisNCit0ZXN0IC16ICIkSU5TVEFM TF9TQ1JJUFQiICYmIElOU1RBTExfU0NSSVBUPScke0lOU1RBTEx9Jw0KKw0KK3Rlc3QgLXogIiRJ TlNUQUxMX0RBVEEiICYmIElOU1RBTExfREFUQT0nJHtJTlNUQUxMfSAtbSA2NDQnDQorDQoreyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGJ1 aWxkDQplbnZpcm9ubWVudCBpcyBzYW5lIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyB3aGV0 aGVyIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmUuLi4gIiA+JjY7IH0NCisjIEp1c3QgaW4gY2Fz ZQ0KK3NsZWVwIDENCitlY2hvIHRpbWVzdGFtcCA+IGNvbmZ0ZXN0LmZpbGUNCisjIERvIGBzZXQn IGluIGEgc3Vic2hlbGwgc28gd2UgZG9uJ3QgY2xvYmJlciB0aGUgY3VycmVudCBzaGVsbCdzDQor IyBhcmd1bWVudHMuICBNdXN0IHRyeSAtTCBmaXJzdCBpbiBjYXNlIGNvbmZpZ3VyZSBpcyBhY3R1 YWxseSBhDQorIyBzeW1saW5rOyBzb21lIHN5c3RlbXMgcGxheSB3ZWlyZCBnYW1lcyB3aXRoIHRo ZSBtb2QgdGltZSBvZiBzeW1saW5rcw0KKyMgKGVnIEZyZWVCU0QgcmV0dXJucyB0aGUgbW9kIHRp bWUgb2YgdGhlIHN5bWxpbmsncyBjb250YWluaW5nDQorIyBkaXJlY3RvcnkpLg0KK2lmICgNCisg ICBzZXQgWCBgbHMgLUx0ICRzcmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGUgMj4gL2Rldi9u dWxsYA0KKyAgIGlmIHRlc3QgIiQqIiA9ICJYIjsgdGhlbg0KKyAgICAgICMgLUwgZGlkbid0IHdv cmsuDQorICAgICAgc2V0IFggYGxzIC10ICRzcmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGVg DQorICAgZmkNCisgICBybSAtZiBjb25mdGVzdC5maWxlDQorICAgaWYgdGVzdCAiJCoiICE9ICJY ICRzcmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGUiIFwNCisgICAgICAmJiB0ZXN0ICIkKiIg IT0gIlggY29uZnRlc3QuZmlsZSAkc3JjZGlyL2NvbmZpZ3VyZSI7IHRoZW4NCisNCisgICAgICAj IElmIG5laXRoZXIgbWF0Y2hlZCwgdGhlbiB3ZSBoYXZlIGEgYnJva2VuIGxzLiAgVGhpcyBjYW4g aGFwcGVuDQorICAgICAgIyBpZiwgZm9yIGluc3RhbmNlLCBDT05GSUdfU0hFTEwgaXMgYmFzaCBh bmQgaXQgaW5oZXJpdHMgYQ0KKyAgICAgICMgYnJva2VuIGxzIGFsaWFzIGZyb20gdGhlIGVudmly b25tZW50LiAgVGhpcyBoYXMgYWN0dWFsbHkNCisgICAgICAjIGhhcHBlbmVkLiAgU3VjaCBhIHN5 c3RlbSBjb3VsZCBub3QgYmUgY29uc2lkZXJlZCAic2FuZSIuDQorICAgICAgYXNfZm5fZXJyb3Ig ImxzIC10IGFwcGVhcnMgdG8gZmFpbC4gIE1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYQ0KYnJva2Vu DQorYWxpYXMgaW4geW91ciBlbnZpcm9ubWVudCIgIiRMSU5FTk8iIDUNCisgICBmaQ0KKw0KKyAg IHRlc3QgIiQyIiA9IGNvbmZ0ZXN0LmZpbGUNCisgICApDQordGhlbg0KKyAgICMgT2suDQorICAg Og0KK2Vsc2UNCisgICBhc19mbl9lcnJvciAibmV3bHkgY3JlYXRlZCBmaWxlIGlzIG9sZGVyIHRo YW4gZGlzdHJpYnV0ZWQgZmlsZXMhDQorQ2hlY2sgeW91ciBzeXN0ZW0gY2xvY2siICIkTElORU5P IiA1DQorZmkNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogeWVzIiA+JjUNCiskYXNfZWNobyAieWVzIiA+JjY7IH0NCit0ZXN0ICIkcHJvZ3JhbV9wcmVm aXgiICE9IE5PTkUgJiYNCisgDQpwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSJzJl4mJHByb2dyYW1f cHJlZml4JjskcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSINCisjIFVzZSBhIGRvdWJsZSAkIHNvIG1h a2UgaWdub3JlcyBpdC4NCit0ZXN0ICIkcHJvZ3JhbV9zdWZmaXgiICE9IE5PTkUgJiYNCisgDQpw cm9ncmFtX3RyYW5zZm9ybV9uYW1lPSJzJlwkJiRwcm9ncmFtX3N1ZmZpeCY7JHByb2dyYW1fdHJh bnNmb3JtX25hbWUiDQorIyBEb3VibGUgYW55IFwgb3IgJC4NCisjIEJ5IGRlZmF1bHQgd2FzIGBz LHgseCcsIHJlbW92ZSBpdCBpZiB1c2VsZXNzLg0KK2FjX3NjcmlwdD0ncy9bXFwkXS8mJi9nO3Mv O3MseCx4LCQvLycNCitwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPWAkYXNfZWNobyAiJHByb2dyYW1f dHJhbnNmb3JtX25hbWUiIHwgc2VkDQoiJGFjX3NjcmlwdCJgDQorDQorIyBleHBhbmQgJGFjX2F1 eF9kaXIgdG8gYW4gYWJzb2x1dGUgcGF0aA0KK2FtX2F1eF9kaXI9YGNkICRhY19hdXhfZGlyICYm IHB3ZGANCisNCit0ZXN0IHgiJHtNSVNTSU5HK3NldH0iID0geHNldCB8fCBNSVNTSU5HPSJcJHtT SEVMTH0NCiRhbV9hdXhfZGlyL21pc3NpbmciDQorIyBVc2UgZXZhbCB0byBleHBhbmQgJFNIRUxM DQoraWYgZXZhbCAiJE1JU1NJTkcgLS1ydW4gdHJ1ZSI7IHRoZW4NCisgIGFtX21pc3NpbmdfcnVu PSIkTUlTU0lORyAtLXJ1biAiDQorZWxzZQ0KKyAgYW1fbWlzc2luZ19ydW49DQorICB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFxgbWlzc2luZycgc2Ny aXB0DQppcyB0b28gb2xkIG9yIG1pc3NpbmciID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdBUk5J Tkc6IFxgbWlzc2luZycgc2NyaXB0IGlzIHRvbyBvbGQgb3IgbWlzc2luZyINCj4mMjt9DQorZmkN CisNCitpZiBta2RpciAtcCAtLXZlcnNpb24gLiA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAhIC1k IC4vLS12ZXJzaW9uOyB0aGVuDQorICAjIFdlIHVzZWQgdG8ga2VlcGluZyB0aGUgYC4nIGFzIGZp cnN0IGFyZ3VtZW50LCBpbiBvcmRlciB0bw0KKyAgIyBhbGxvdyAkKG1rZGlyX3ApIHRvIGJlIHVz ZWQgd2l0aG91dCBhcmd1bWVudC4gIEFzIGluDQorICAjICAgJChta2Rpcl9wKSAkKHNvbWVkaXIp DQorICAjIHdoZXJlICQoc29tZWRpcikgaXMgY29uZGl0aW9uYWxseSBkZWZpbmVkLiAgSG93ZXZl ciB0aGlzIGlzIHdyb25nDQorICAjIGZvciB0d28gcmVhc29uczoNCisgICMgIDEuIGlmIHRoZSBw YWNrYWdlIGlzIGluc3RhbGxlZCBieSBhIHVzZXIgd2hvIGNhbm5vdCB3cml0ZSBgLicNCisgICMg ICAgIG1ha2UgaW5zdGFsbCB3aWxsIGZhaWwsDQorICAjICAyLiB0aGUgYWJvdmUgY29tbWVudCBz aG91bGQgbW9zdCBjZXJ0YWlubHkgcmVhZA0KKyAgIyAgICAgJChta2Rpcl9wKSAkKERFU1RESVIp JChzb21lZGlyKQ0KKyAgIyAgICAgc28gaXQgZG9lcyBub3Qgd29yayB3aGVuICQoc29tZWRpcikg aXMgdW5kZWZpbmVkIGFuZA0KKyAgIyAgICAgJChERVNURElSKSBpcyBub3QuDQorICAjICBUbyBz dXBwb3J0IHRoZSBsYXR0ZXIgY2FzZSwgd2UgaGF2ZSB0byB3cml0ZQ0KKyAgIyAgICAgdGVzdCAt eiAiJChzb21lZGlyKSIgfHwgJChta2Rpcl9wKSAkKERFU1RESVIpJChzb21lZGlyKSwNCisgICMg IHNvIHRoZSBgLicgdHJpY2sgaXMgcG9pbnRsZXNzLg0KKyAgbWtkaXJfcD0nbWtkaXIgLXAgLS0n DQorZWxzZQ0KKyAgIyBPbiBOZXh0U3RlcCBhbmQgT3BlblN0ZXAsIHRoZSBgbWtkaXInIGNvbW1h bmQgZG9lcyBub3QNCisgICMgcmVjb2duaXplIGFueSBvcHRpb24uICBJdCB3aWxsIGludGVycHJl dCBhbGwgb3B0aW9ucyBhcw0KKyAgIyBkaXJlY3RvcmllcyB0byBjcmVhdGUsIGFuZCB0aGVuIGFi b3J0IGJlY2F1c2UgYC4nIGFscmVhZHkNCisgICMgZXhpc3RzLg0KKyAgZm9yIGQgaW4gLi8tcCAu Ly0tdmVyc2lvbjsNCisgIGRvDQorICAgIHRlc3QgLWQgJGQgJiYgcm1kaXIgJGQNCisgIGRvbmUN CisgICMgJChta2luc3RhbGxkaXJzKSBpcyBkZWZpbmVkIGJ5IEF1dG9tYWtlIGlmIG1raW5zdGFs bGRpcnMgZXhpc3RzLg0KKyAgaWYgdGVzdCAtZiAiJGFjX2F1eF9kaXIvbWtpbnN0YWxsZGlycyI7 IHRoZW4NCisgICAgbWtkaXJfcD0nJChta2luc3RhbGxkaXJzKScNCisgIGVsc2UNCisgICAgbWtk aXJfcD0nJChpbnN0YWxsX3NoKSAtZCcNCisgIGZpDQorZmkNCisNCitmb3IgYWNfcHJvZyBpbiBn YXdrIG1hd2sgbmF3ayBhd2sNCitkbw0KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIk YWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZQ0Kd2l0aCBhcmdzLg0KK3NldCBk dW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVj a2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVdL K3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxz ZQ0KKyAgaWYgdGVzdCAtbiAiJEFXSyI7IHRoZW4NCisgIGFjX2N2X3Byb2dfQVdLPSIkQVdLIiAj IExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElG UzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZT PSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9y IGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7 IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3gNCiIk YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX0FX Sz0iJGFjX3Byb2ciDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGZvdW5kDQokYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0K KyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCitB V0s9JGFjX2N2X3Byb2dfQVdLDQoraWYgdGVzdCAtbiAiJEFXSyI7IHRoZW4NCisgIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQVdLIiA+JjUNCiskYXNf ZWNobyAiJEFXSyIgPiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2Zp DQorDQorDQorICB0ZXN0IC1uICIkQVdLIiAmJiBicmVhaw0KK2RvbmUNCisNCit7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1h a2V9DQpzZXRzIFwkKE1BS0UpIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICR7 TUFLRS1tYWtlfSBzZXRzIFwkKE1BS0UpLi4uICIgPiY2OyB9DQorc2V0IHggJHtNQUtFLW1ha2V9 DQorYWNfbWFrZT1gJGFzX2VjaG8gIiQyIiB8IHNlZCAncy8rL3AvZzsgcy9bXmEtekEtWjAtOV9d L18vZydgDQoraWYgeyBhc192YXI9YWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0OyBldmFs ICJ0ZXN0DQpcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6DQorICAkYXNfZWNo b19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGNhdCA+Y29uZnRlc3QubWFrZSA8PFxfQUNF T0YNCitTSEVMTCA9IC9iaW4vc2gNCithbGw6DQorCUBlY2hvICdAQEAlJSU9JChNQUtFKT1AQEAl JSUnDQorX0FDRU9GDQorIyBHTlUgbWFrZSBzb21ldGltZXMgcHJpbnRzICJtYWtlWzFdOiBFbnRl cmluZy4uLiIsIHdoaWNoIHdvdWxkDQpjb25mdXNlIHVzLg0KK2Nhc2UgYCR7TUFLRS1tYWtlfSAt ZiBjb25mdGVzdC5tYWtlIDI+L2Rldi9udWxsYCBpbg0KKyAgKkBAQCUlJT0/Kj1AQEAlJSUqKQ0K KyAgICBldmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldD15ZXM7Ow0KKyAgKikNCisg ICAgZXZhbCBhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ9bm87Ow0KK2VzYWMNCitybSAt ZiBjb25mdGVzdC5tYWtlDQorZmkNCitpZiBldmFsIHRlc3QgXCRhY19jdl9wcm9nX21ha2VfJHth Y19tYWtlfV9zZXQgPSB5ZXM7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQ0KKyRhc19lY2hvICJ5ZXMiID4mNjsgfQ0KKyAg U0VUX01BS0U9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KKyAgU0VUX01BS0U9 Ik1BS0U9JHtNQUtFLW1ha2V9Ig0KK2ZpDQorDQorcm0gLXJmIC50c3QgMj4vZGV2L251bGwNCitt a2RpciAudHN0IDI+L2Rldi9udWxsDQoraWYgdGVzdCAtZCAudHN0OyB0aGVuDQorICBhbV9fbGVh ZGluZ19kb3Q9Lg0KK2Vsc2UNCisgIGFtX19sZWFkaW5nX2RvdD1fDQorZmkNCitybWRpciAudHN0 IDI+L2Rldi9udWxsDQorDQorREVQRElSPSIke2FtX19sZWFkaW5nX2RvdH1kZXBzIg0KKw0KK2Fj X2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyBkZXBmaWxlcyINCisNCisNCith bV9tYWtlPSR7TUFLRS1tYWtlfQ0KK2NhdCA+IGNvbmZpbmMgPDwgJ0VORCcNCithbV9fZG9pdDoN CisJQGVjaG8gZG9uZQ0KKy5QSE9OWTogYW1fX2RvaXQNCitFTkQNCisjIElmIHdlIGRvbid0IGZp bmQgYW4gaW5jbHVkZSBkaXJlY3RpdmUsIGp1c3QgY29tbWVudCBvdXQgdGhlIGNvZGUuDQoreyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3R5bGUg b2YgaW5jbHVkZQ0KdXNlZCBieSAkYW1fbWFrZSIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg Zm9yIHN0eWxlIG9mIGluY2x1ZGUgdXNlZCBieSAkYW1fbWFrZS4uLiAiID4mNjsgfQ0KK2FtX19p bmNsdWRlPSIjIg0KK2FtX19xdW90ZT0NCitfYW1fcmVzdWx0PW5vbmUNCisjIEZpcnN0IHRyeSBH TlUgbWFrZSBzdHlsZSBpbmNsdWRlLg0KK2VjaG8gImluY2x1ZGUgY29uZmluYyIgPiBjb25mbWYN CisjIFdlIGdyZXAgb3V0IGBFbnRlcmluZyBkaXJlY3RvcnknIGFuZCBgTGVhdmluZyBkaXJlY3Rv cnknDQorIyBtZXNzYWdlcyB3aGljaCBjYW4gb2NjdXIgaWYgYHcnIGVuZHMgdXAgaW4gTUFLRUZM QUdTLg0KKyMgSW4gcGFydGljdWxhciB3ZSBkb24ndCBsb29rIGF0IGBebWFrZTonIGJlY2F1c2Ug R05VIG1ha2UgbWlnaHQNCisjIGJlIGludm9rZWQgdW5kZXIgc29tZSBvdGhlciBuYW1lICh1c3Vh bGx5ICJnbWFrZSIpLCBpbiB3aGljaA0KKyMgY2FzZSBpdCBwcmludHMgaXRzIG5ldyBuYW1lIGlu c3RlYWQgb2YgYG1ha2UnLg0KK2lmIHRlc3QgImAkYW1fbWFrZSAtcyAtZiBjb25mbWYgMj4gL2Rl di9udWxsIHwgZ3JlcCAtdiAnaW5nDQpkaXJlY3RvcnknYCIgPSAiZG9uZSI7IHRoZW4NCisgICBh bV9faW5jbHVkZT1pbmNsdWRlDQorICAgYW1fX3F1b3RlPQ0KKyAgIF9hbV9yZXN1bHQ9R05VDQor ZmkNCisjIE5vdyB0cnkgQlNEIG1ha2Ugc3R5bGUgaW5jbHVkZS4NCitpZiB0ZXN0ICIkYW1fX2lu Y2x1ZGUiID0gIiMiOyB0aGVuDQorICAgZWNobyAnLmluY2x1ZGUgImNvbmZpbmMiJyA+IGNvbmZt Zg0KKyAgIGlmIHRlc3QgImAkYW1fbWFrZSAtcyAtZiBjb25mbWYgMj4gL2Rldi9udWxsYCIgPSAi ZG9uZSI7IHRoZW4NCisgICAgICBhbV9faW5jbHVkZT0uaW5jbHVkZQ0KKyAgICAgIGFtX19xdW90 ZT0iXCIiDQorICAgICAgX2FtX3Jlc3VsdD1CU0QNCisgICBmaQ0KK2ZpDQorDQorDQoreyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRfYW1fcmVzdWx0IiA+ JjUNCiskYXNfZWNobyAiJF9hbV9yZXN1bHQiID4mNjsgfQ0KK3JtIC1mIGNvbmZpbmMgY29uZm1m DQorDQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgd2FzIGdp dmVuLg0KK2lmIHRlc3QgIiR7ZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcrc2V0fSIgPSBzZXQ7 IHRoZW4gOg0KKyAgZW5hYmxldmFsPSRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZzsNCitmaQ0K Kw0KK2lmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubzsgdGhlbg0K KyAgYW1fZGVwY29tcD0iJGFjX2F1eF9kaXIvZGVwY29tcCINCisgIEFNREVQQkFDS1NMQVNIPSdc Jw0KK2ZpDQorDQorDQoraWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0g eG5vOyB0aGVuDQorICBBTURFUF9UUlVFPQ0KKyAgQU1ERVBfRkFMU0U9JyMnDQorZWxzZQ0KKyAg QU1ERVBfVFJVRT0nIycNCisgIEFNREVQX0ZBTFNFPQ0KK2ZpDQorDQorDQorDQorDQorIyBDaGVj ayB3aGV0aGVyIC0tZW5hYmxlLW11bHRpbGliIHdhcyBnaXZlbi4NCitpZiB0ZXN0ICIke2VuYWJs ZV9tdWx0aWxpYitzZXR9IiA9IHNldDsgdGhlbiA6DQorICBlbmFibGV2YWw9JGVuYWJsZV9tdWx0 aWxpYjsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbg0KKyAgeWVzKSBtdWx0aWxpYj15ZXMgOzsNCisg IG5vKSAgbXVsdGlsaWI9bm8gOzsNCisgICopICAgYXNfZm5fZXJyb3IgImJhZCB2YWx1ZSAke2Vu YWJsZXZhbH0gZm9yIG11bHRpbGliIG9wdGlvbiINCiIkTElORU5PIiA1IDs7DQorIGVzYWMNCitl bHNlDQorICBtdWx0aWxpYj15ZXMNCitmaQ0KKw0KKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS10 YXJnZXQtb3B0c3BhY2Ugd2FzIGdpdmVuLg0KK2lmIHRlc3QgIiR7ZW5hYmxlX3RhcmdldF9vcHRz cGFjZStzZXR9IiA9IHNldDsgdGhlbiA6DQorICBlbmFibGV2YWw9JGVuYWJsZV90YXJnZXRfb3B0 c3BhY2U7IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4NCisgIHllcykgdGFyZ2V0X29wdHNwYWNlPXll cyA7Ow0KKyAgbm8pICB0YXJnZXRfb3B0c3BhY2U9bm8gOzsNCisgICopICAgYXNfZm5fZXJyb3Ig ImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIHRhcmdldC1vcHRzcGFjZSBvcHRpb24iDQoiJExJ TkVOTyIgNSA7Ow0KKyBlc2FjDQorZWxzZQ0KKyAgdGFyZ2V0X29wdHNwYWNlPQ0KK2ZpDQorDQor IyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW1hbGxvYy1kZWJ1Z2dpbmcgd2FzIGdpdmVuLg0KK2lm IHRlc3QgIiR7ZW5hYmxlX21hbGxvY19kZWJ1Z2dpbmcrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAg ZW5hYmxldmFsPSRlbmFibGVfbWFsbG9jX2RlYnVnZ2luZzsgY2FzZSAiJHtlbmFibGV2YWx9IiBp bg0KKyAgeWVzKSBtYWxsb2NfZGVidWdnaW5nPXllcyA7Ow0KKyAgbm8pICBtYWxsb2NfZGVidWdn aW5nPW5vIDs7DQorICAqKSAgIGFzX2ZuX2Vycm9yICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZv ciBtYWxsb2MtZGVidWdnaW5nDQpvcHRpb24iICIkTElORU5PIiA1IDs7DQorIGVzYWMNCitlbHNl DQorICBtYWxsb2NfZGVidWdnaW5nPQ0KK2ZpDQorDQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxl LW5ld2xpYi1tdWx0aXRocmVhZCB3YXMgZ2l2ZW4uDQoraWYgdGVzdCAiJHtlbmFibGVfbmV3bGli X211bHRpdGhyZWFkK3NldH0iID0gc2V0OyB0aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX25l d2xpYl9tdWx0aXRocmVhZDsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbg0KKyAgeWVzKSBuZXdsaWJf bXVsdGl0aHJlYWQ9eWVzIDs7DQorICBubykgIG5ld2xpYl9tdWx0aXRocmVhZD1ubyA7Ow0KKyAg KikgICBhc19mbl9lcnJvciAiYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgbmV3bGliLW11bHRp dGhyZWFkDQpvcHRpb24iICIkTElORU5PIiA1IDs7DQorIGVzYWMNCitlbHNlDQorICBuZXdsaWJf bXVsdGl0aHJlYWQ9eWVzDQorZmkNCisNCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbmV3bGli LWljb252IHdhcyBnaXZlbi4NCitpZiB0ZXN0ICIke2VuYWJsZV9uZXdsaWJfaWNvbnYrc2V0fSIg PSBzZXQ7IHRoZW4gOg0KKyAgZW5hYmxldmFsPSRlbmFibGVfbmV3bGliX2ljb252OyBpZiB0ZXN0 ICIke25ld2xpYl9pY29uditzZXR9IiAhPQ0Kc2V0OyB0aGVuDQorICAgY2FzZSAiJHtlbmFibGV2 YWx9IiBpbg0KKyAgICAgeWVzKSBuZXdsaWJfaWNvbnY9eWVzIDs7DQorICAgICBubykgIG5ld2xp Yl9pY29udj1ubyA7Ow0KKyAgICAgKikgICBhc19mbl9lcnJvciAiYmFkIHZhbHVlICR7ZW5hYmxl dmFsfSBmb3IgbmV3bGliLWljb252IG9wdGlvbiINCiIkTElORU5PIiA1IDs7DQorICAgZXNhYw0K KyBmaQ0KK2Vsc2UNCisgIG5ld2xpYl9pY29udj0ke25ld2xpYl9pY29udn0NCitmaQ0KKw0KKyMg Q2hlY2sgd2hldGhlciAtLWVuYWJsZS1uZXdsaWItZWxpeC1sZXZlbCB3YXMgZ2l2ZW4uDQoraWYg dGVzdCAiJHtlbmFibGVfbmV3bGliX2VsaXhfbGV2ZWwrc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAg ZW5hYmxldmFsPSRlbmFibGVfbmV3bGliX2VsaXhfbGV2ZWw7IGNhc2UgIiR7ZW5hYmxldmFsfSIg aW4NCisgIDApICAgbmV3bGliX2VsaXhfbGV2ZWw9MCA7Ow0KKyAgMSkgICBuZXdsaWJfZWxpeF9s ZXZlbD0xIDs7DQorICAyKSAgIG5ld2xpYl9lbGl4X2xldmVsPTIgOzsNCisgIDMpICAgbmV3bGli X2VsaXhfbGV2ZWw9MyA7Ow0KKyAgNCkgICBuZXdsaWJfZWxpeF9sZXZlbD00IDs7DQorICAqKSAg IGFzX2ZuX2Vycm9yICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciBuZXdsaWItZWxpeC1sZXZl bA0Kb3B0aW9uIiAiJExJTkVOTyIgNSA7Ow0KKyBlc2FjDQorZWxzZQ0KKyAgbmV3bGliX2VsaXhf bGV2ZWw9MA0KK2ZpDQorDQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW5ld2xpYi1pby1mbG9h dCB3YXMgZ2l2ZW4uDQoraWYgdGVzdCAiJHtlbmFibGVfbmV3bGliX2lvX2Zsb2F0K3NldH0iID0g c2V0OyB0aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX25ld2xpYl9pb19mbG9hdDsgY2FzZSAi JHtlbmFibGV2YWx9IiBpbg0KKyAgeWVzKSBuZXdsaWJfaW9fZmxvYXQ9eWVzIDs7DQorICBubykg IG5ld2xpYl9pb19mbG9hdD1ubyA7Ow0KKyAgKikgICBhc19mbl9lcnJvciAiYmFkIHZhbHVlICR7 ZW5hYmxldmFsfSBmb3IgbmV3bGliLWlvLWZsb2F0IG9wdGlvbiINCiIkTElORU5PIiA1IDs7DQor IGVzYWMNCitlbHNlDQorICBuZXdsaWJfaW9fZmxvYXQ9eWVzDQorZmkNCisNCisjIENoZWNrIHdo ZXRoZXIgLS1lbmFibGUtbmV3bGliLXN1cHBsaWVkLXN5c2NhbGxzIHdhcyBnaXZlbi4NCitpZiB0 ZXN0ICIke2VuYWJsZV9uZXdsaWJfc3VwcGxpZWRfc3lzY2FsbHMrc2V0fSIgPSBzZXQ7IHRoZW4g Og0KKyAgZW5hYmxldmFsPSRlbmFibGVfbmV3bGliX3N1cHBsaWVkX3N5c2NhbGxzOyBjYXNlICIk e2VuYWJsZXZhbH0iIGluDQorICB5ZXMpIG5ld2xpYl9tYXlfc3VwcGx5X3N5c2NhbGxzPXllcyA7 Ow0KKyAgbm8pICBuZXdsaWJfbWF5X3N1cHBseV9zeXNjYWxscz1ubyA7Ow0KKyAgKikgICBhc19m bl9lcnJvciAiYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgbmV3bGliLXN1cHBsaWVkLQ0Kc3lz Y2FsbHMgb3B0aW9uIiAiJExJTkVOTyIgNSA7Ow0KKyBlc2FjDQorZWxzZQ0KKyAgbmV3bGliX21h eV9zdXBwbHlfc3lzY2FsbHM9eWVzDQorZmkNCisNCisNCisNCitpZiB0ZXN0IHgke25ld2xpYl9t YXlfc3VwcGx5X3N5c2NhbGxzfSA9IHh5ZXM7IHRoZW4NCisgIE1BWV9TVVBQTFlfU1lTQ0FMTFNf VFJVRT0NCisgIE1BWV9TVVBQTFlfU1lTQ0FMTFNfRkFMU0U9JyMnDQorZWxzZQ0KKyAgTUFZX1NV UFBMWV9TWVNDQUxMU19UUlVFPScjJw0KKyAgTUFZX1NVUFBMWV9TWVNDQUxMU19GQUxTRT0NCitm aQ0KKw0KKw0KKw0KK3Rlc3QgLXogIiR7d2l0aF90YXJnZXRfc3ViZGlyfSIgJiYgd2l0aF90YXJn ZXRfc3ViZGlyPS4NCisNCitpZiB0ZXN0ICIke3NyY2Rpcn0iID0gIi4iOyB0aGVuDQorICBpZiB0 ZXN0ICIke3dpdGhfdGFyZ2V0X3N1YmRpcn0iICE9ICIuIjsgdGhlbg0KKyAgICBuZXdsaWJfYmFz ZWRpcj0iJHtzcmNkaXJ9LyR7d2l0aF9tdWx0aXNyY3RvcH0uLi8uLi8uLi8uLiINCisgIGVsc2UN CisgICAgbmV3bGliX2Jhc2VkaXI9IiR7c3JjZGlyfS8ke3dpdGhfbXVsdGlzcmN0b3B9Li4vLi4v Li4iDQorICBmaQ0KK2Vsc2UNCisgIG5ld2xpYl9iYXNlZGlyPSIke3NyY2Rpcn0vLi4vLi4vLi4i DQorZmkNCisNCisNCisNCisNCisjIHRlc3QgdG8gc2VlIGlmIHNyY2RpciBhbHJlYWR5IGNvbmZp Z3VyZWQNCitpZiB0ZXN0ICJgY2QgJHNyY2RpciAmJiBwd2RgIiAhPSAiYHB3ZGAiICYmDQorICAg dGVzdCAtZiAkc3JjZGlyL2NvbmZpZy5zdGF0dXM7IHRoZW4NCisgIGFzX2ZuX2Vycm9yICJzb3Vy Y2UgZGlyZWN0b3J5IGFscmVhZHkgY29uZmlndXJlZDsgcnVuIFwibWFrZQ0KZGlzdGNsZWFuXCIg dGhlcmUgZmlyc3QiICIkTElORU5PIiA1DQorZmkNCisNCisjIHRlc3Qgd2hldGhlciB3ZSBoYXZl IGN5Z3BhdGgNCitpZiB0ZXN0IC16ICIkQ1lHUEFUSF9XIjsgdGhlbg0KKyAgaWYgKGN5Z3BhdGgg LS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuDQorICAgIENZR1BBVEhfVz0n Y3lncGF0aCAtdycNCisgIGVsc2UNCisgICAgQ1lHUEFUSF9XPWVjaG8NCisgIGZpDQorZmkNCisN CisNCisjIERlZmluZSB0aGUgaWRlbnRpdHkgb2YgdGhlIHBhY2thZ2UuDQorIFBBQ0tBR0U9J25l d2xpYicNCisgVkVSU0lPTj0nMS4xOS4wJw0KKw0KKw0KKyMgU29tZSB0b29scyBBdXRvbWFrZSBu ZWVkcy4NCisNCitBQ0xPQ0FMPSR7QUNMT0NBTC0iJHthbV9taXNzaW5nX3J1bn1hY2xvY2FsLSR7 YW1fX2FwaV92ZXJzaW9ufSJ9DQorDQorDQorQVVUT0NPTkY9JHtBVVRPQ09ORi0iJHthbV9taXNz aW5nX3J1bn1hdXRvY29uZiJ9DQorDQorDQorQVVUT01BS0U9JHtBVVRPTUFLRS0iJHthbV9taXNz aW5nX3J1bn1hdXRvbWFrZS0ke2FtX19hcGlfdmVyc2lvbn0ifQ0KKw0KKw0KK0FVVE9IRUFERVI9 JHtBVVRPSEVBREVSLSIke2FtX21pc3NpbmdfcnVufWF1dG9oZWFkZXIifQ0KKw0KKw0KK01BS0VJ TkZPPSR7TUFLRUlORk8tIiR7YW1fbWlzc2luZ19ydW59bWFrZWluZm8ifQ0KKw0KK2luc3RhbGxf c2g9JHtpbnN0YWxsX3NoLSIkYW1fYXV4X2Rpci9pbnN0YWxsLXNoIn0NCisNCisjIEluc3RhbGxl ZCBiaW5hcmllcyBhcmUgdXN1YWxseSBzdHJpcHBlZCB1c2luZyBgc3RyaXAnIHdoZW4gdGhlIHVz ZXINCisjIHJ1biBgbWFrZSBpbnN0YWxsLXN0cmlwJy4gIEhvd2V2ZXIgYHN0cmlwJyBtaWdodCBu b3QgYmUgdGhlIHJpZ2h0DQorIyB0b29sIHRvIHVzZSBpbiBjcm9zcy1jb21waWxhdGlvbiBlbnZp cm9ubWVudHMsIHRoZXJlZm9yZSBBdXRvbWFrZQ0KKyMgd2lsbCBob25vciB0aGUgYFNUUklQJyBl bnZpcm9ubWVudCB2YXJpYWJsZSB0byBvdmVycnVsZSB0aGlzDQpwcm9ncmFtLg0KK2lmIHRlc3Qg IiRjcm9zc19jb21waWxpbmciICE9IG5vOyB0aGVuDQorICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9w cmVmaXgiOyB0aGVuDQorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9w cmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYQ0KcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitz ZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMg0KK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUN CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitpZiB0ZXN0 ICIke2FjX2N2X3Byb2dfU1RSSVArc2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAi KGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1uICIkU1RSSVAiOyB0aGVuDQorICBh Y19jdl9wcm9nX1NUUklQPSIkU1RSSVAiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0 Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFz X2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNf ZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFi bGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19l eGVjX2V4dCIgJiYgJGFzX3Rlc3RfeA0KIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9 OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfU1RSSVA9IiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiDQor ICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kDQokYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQor ICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCitTVFJJUD0kYWNfY3ZfcHJv Z19TVFJJUA0KK2lmIHRlc3QgLW4gIiRTVFJJUCI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkU1RSSVAiID4mNQ0KKyRhc19lY2hvICIk U1RSSVAiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0K Kw0KK2ZpDQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfU1RSSVAiOyB0aGVuDQorICBhY19jdF9T VFJJUD0kU1RSSVANCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAic3RyaXAiLCBzbyBp dCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUNCndpdGggYXJncy4NCitzZXQgZHVtbXkgc3RyaXA7IGFj X3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3Jk Li4uICIgPiY2OyB9DQoraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X1NUUklQK3NldH0iID0g c2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYg dGVzdCAtbiAiJGFjX2N0X1NUUklQIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19hY19jdF9TVFJJUD0i JGFjX2N0X1NUUklQIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUNCnRlc3QuDQorZWxzZQ0K K2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQ QVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFz X2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNp b25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAm JiAkYXNfdGVzdF94DQoiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisg ICAgYWNfY3ZfcHJvZ19hY19jdF9TVFJJUD0ic3RyaXAiDQorICAgICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kDQokYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0 IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19zYXZl X0lGUw0KKw0KK2ZpDQorZmkNCithY19jdF9TVFJJUD0kYWNfY3ZfcHJvZ19hY19jdF9TVFJJUA0K K2lmIHRlc3QgLW4gIiRhY19jdF9TVFJJUCI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfU1RSSVAiID4mNQ0KKyRhc19lY2hv ICIkYWNfY3RfU1RSSVAiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0N CitmaQ0KKw0KKyAgaWYgdGVzdCAieCRhY19jdF9TVFJJUCIgPSB4OyB0aGVuDQorICAgIFNUUklQ PSI6Ig0KKyAgZWxzZQ0KKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVk IGluDQoreWVzOikNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdB Uk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzDQpub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQi ID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBw cmVmaXhlZCB3aXRoIGhvc3QNCnRyaXBsZXQiID4mMjt9DQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7 DQorZXNhYw0KKyAgICBTVFJJUD0kYWNfY3RfU1RSSVANCisgIGZpDQorZWxzZQ0KKyAgU1RSSVA9 IiRhY19jdl9wcm9nX1NUUklQIg0KK2ZpDQorDQorZmkNCitJTlNUQUxMX1NUUklQX1BST0dSQU09 Ilwke1NIRUxMfSBcJChpbnN0YWxsX3NoKSAtYyAtcyINCisNCisjIFdlIG5lZWQgYXdrIGZvciB0 aGUgImNoZWNrIiB0YXJnZXQuICBUaGUgc3lzdGVtICJhd2siIGlzIGJhZCBvbg0KKyMgc29tZSBw bGF0Zm9ybXMuDQorIyBBbHdheXMgZGVmaW5lIEFNVEFSIGZvciBiYWNrd2FyZCBjb21wYXRpYmls aXR5Lg0KKw0KK0FNVEFSPSR7QU1UQVItIiR7YW1fbWlzc2luZ19ydW59dGFyIn0NCisNCithbV9f dGFyPScke0FNVEFSfSBjaG9mIC0gIiQkdGFyZGlyIic7IGFtX191bnRhcj0nJHtBTVRBUn0geGYg LScNCisNCisNCisNCisNCisNCisNCisjIEZJWE1FOiBXZSB0ZW1wb3JhcmlseSBkZWZpbmUgb3Vy IG93biB2ZXJzaW9uIG9mIEFDX1BST0dfQ0MuICBUaGlzIGlzDQorIyBjb3BpZWQgZnJvbSBhdXRv Y29uZiAyLjEyLCBidXQgZG9lcyBub3QgY2FsbCBBQ19QUk9HX0NDX1dPUktTLiAgV2UNCisjIGFy ZSBwcm9iYWJseSB1c2luZyBhIGNyb3NzIGNvbXBpbGVyLCB3aGljaCB3aWxsIG5vdCBiZSBhYmxl IHRvIGZ1bGx5DQorIyBsaW5rIGFuIGV4ZWN1dGFibGUuICBUaGlzIHNob3VsZCByZWFsbHkgYmUg Zml4ZWQgaW4gYXV0b2NvbmYNCisjIGl0c2VsZi4NCisNCisNCisNCisNCisNCisNCisNCisjIEV4 dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt ZSB3aXRoDQphcmdzLg0KK3NldCBkdW1teSBnY2M7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQor JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgdGVzdCAi JHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNo ZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbg0KKyAgYWNfY3ZfcHJv Z19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNf c2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgN Citkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly PS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7 IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRh c190ZXN0X3gNCiIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBh Y19jdl9wcm9nX0NDPSJnY2MiDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGZvdW5kDQokYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJl YWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQor ZmkNCitDQz0kYWNfY3ZfcHJvZ19DQw0KK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4NCisgIHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQ0KKyRh c19lY2hvICIkQ0MiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitm aQ0KKw0KKw0KKw0KK2RlcGNjPSIkQ0MiICAgYW1fY29tcGlsZXJfbGlzdD0NCisNCit7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGRlcGVuZGVuY3kgc3R5 bGUgb2YNCiRkZXBjYyIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHls ZSBvZiAkZGVwY2MuLi4gIiA+JjY7IH0NCitpZiB0ZXN0ICIke2FtX2N2X0NDX2RlcGVuZGVuY2ll c19jb21waWxlcl90eXBlK3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNo ZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAteiAiJEFNREVQX1RSVUUiICYmIHRlc3QgLWYg IiRhbV9kZXBjb21wIjsgdGhlbg0KKyAgIyBXZSBtYWtlIGEgc3ViZGlyIGFuZCBkbyB0aGUgdGVz dHMgdGhlcmUuICBPdGhlcndpc2Ugd2UgY2FuIGVuZCB1cA0KKyAgIyBtYWtpbmcgYm9ndXMgZmls ZXMgdGhhdCB3ZSBkb24ndCBrbm93IGFib3V0IGFuZCBuZXZlciByZW1vdmUuICBGb3INCisgICMg aW5zdGFuY2UgaXQgd2FzIHJlcG9ydGVkIHRoYXQgb24gSFAtVVggdGhlIGdjYyB0ZXN0IHdpbGwg ZW5kIHVwDQorICAjIG1ha2luZyBhIGR1bW15IGZpbGUgbmFtZWQgYEQnIC0tIGJlY2F1c2UgYC1N RCcgbWVhbnMgYHB1dCB0aGUNCm91dHB1dA0KKyAgIyBpbiBEJy4NCisgIG1rZGlyIGNvbmZ0ZXN0 LmRpcg0KKyAgIyBDb3B5IGRlcGNvbXAgdG8gc3ViZGlyIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdv bid0IGZpbmQgaXQgaWYgd2UncmUNCisgICMgdXNpbmcgYSByZWxhdGl2ZSBkaXJlY3RvcnkuDQor ICBjcCAiJGFtX2RlcGNvbXAiIGNvbmZ0ZXN0LmRpcg0KKyAgY2QgY29uZnRlc3QuZGlyDQorICAj IFdlIHdpbGwgYnVpbGQgb2JqZWN0cyBhbmQgZGVwZW5kZW5jaWVzIGluIGEgc3ViZGlyZWN0b3J5 IGJlY2F1c2UNCisgICMgaXQgaGVscHMgdG8gZGV0ZWN0IGluYXBwbGljYWJsZSBkZXBlbmRlbmN5 IG1vZGVzLiAgRm9yIGluc3RhbmNlDQorICAjIGJvdGggVHJ1NjQncyBjYyBhbmQgSUNDIHN1cHBv cnQgLU1EIHRvIG91dHB1dCBkZXBlbmRlbmNpZXMgYXMgYQ0KKyAgIyBzaWRlIGVmZmVjdCBvZiBj b21waWxhdGlvbiwgYnV0IElDQyB3aWxsIHB1dCB0aGUgZGVwZW5kZW5jaWVzIGluDQorICAjIHRo ZSBjdXJyZW50IGRpcmVjdG9yeSB3aGlsZSBUcnU2NCB3aWxsIHB1dCB0aGVtIGluIHRoZSBvYmpl Y3QNCisgICMgZGlyZWN0b3J5Lg0KKyAgbWtkaXIgc3ViDQorDQorICBhbV9jdl9DQ19kZXBlbmRl bmNpZXNfY29tcGlsZXJfdHlwZT1ub25lDQorICBpZiB0ZXN0ICIkYW1fY29tcGlsZXJfbGlzdCIg PSAiIjsgdGhlbg0KKyAgICAgYW1fY29tcGlsZXJfbGlzdD1gc2VkIC1uICdzL14jKlwoW2EtekEt WjAtOV0qXCkpJC9cMS9wJyA8DQouL2RlcGNvbXBgDQorICBmaQ0KKyAgZm9yIGRlcG1vZGUgaW4g JGFtX2NvbXBpbGVyX2xpc3Q7IGRvDQorICAgICMgU2V0dXAgYSBzb3VyY2Ugd2l0aCBtYW55IGRl cGVuZGVuY2llcywgYmVjYXVzZSBzb21lIGNvbXBpbGVycw0KKyAgICAjIGxpa2UgdG8gd3JhcCBs YXJnZSBkZXBlbmRlbmN5IGxpc3RzIG9uIGNvbHVtbiA4MCAod2l0aCBcKSwgYW5kDQorICAgICMg d2Ugc2hvdWxkIG5vdCBjaG9vc2UgYSBkZXBjb21wIG1vZGUgd2hpY2ggaXMgY29uZnVzZWQgYnkg dGhpcy4NCisgICAgIw0KKyAgICAjIFdlIG5lZWQgdG8gcmVjcmVhdGUgdGhlc2UgZmlsZXMgZm9y IGVhY2ggdGVzdCwgYXMgdGhlIGNvbXBpbGVyDQptYXkNCisgICAgIyBvdmVyd3JpdGUgc29tZSBv ZiB0aGVtIHdoZW4gdGVzdGluZyB3aXRoIG9ic2N1cmUgY29tbWFuZCBsaW5lcy4NCisgICAgIyBU aGlzIGhhcHBlbnMgYXQgbGVhc3Qgd2l0aCB0aGUgQUlYIEMgY29tcGlsZXIuDQorICAgIDogPiBz dWIvY29uZnRlc3QuYw0KKyAgICBmb3IgaSBpbiAxIDIgMyA0IDUgNjsgZG8NCisgICAgICBlY2hv ICcjaW5jbHVkZSAiY29uZnRzdCckaScuaCInID4+IHN1Yi9jb25mdGVzdC5jDQorICAgICAgIyBV c2luZyBgOiA+IHN1Yi9jb25mdHN0JGkuaCcgY3JlYXRlcyBvbmx5IHN1Yi9jb25mdHN0MS5oIHdp dGgNCisgICAgICAjIFNvbGFyaXMgOCdzIHsvdXNyLH0vYmluL3NoLg0KKyAgICAgIHRvdWNoIHN1 Yi9jb25mdHN0JGkuaA0KKyAgICBkb25lDQorICAgIGVjaG8gIiR7YW1fX2luY2x1ZGV9ICR7YW1f X3F1b3RlfXN1Yi9jb25mdGVzdC5QbyR7YW1fX3F1b3RlfSIgPg0KY29uZm1mDQorDQorICAgIGNh c2UgJGRlcG1vZGUgaW4NCisgICAgbm9zaWRlZWZmZWN0KQ0KKyAgICAgICMgYWZ0ZXIgdGhpcyB0 YWcsIG1lY2hhbmlzbXMgYXJlIG5vdCBieSBzaWRlLWVmZmVjdCwgc28gdGhleSdsbA0KKyAgICAg ICMgb25seSBiZSB1c2VkIHdoZW4gZXhwbGljaXRseSByZXF1ZXN0ZWQNCisgICAgICBpZiB0ZXN0 ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiA9IHh5ZXM7IHRoZW4NCisJY29udGludWUN CisgICAgICBlbHNlDQorCWJyZWFrDQorICAgICAgZmkNCisgICAgICA7Ow0KKyAgICBub25lKSBi cmVhayA7Ow0KKyAgICBlc2FjDQorICAgICMgV2UgY2hlY2sgd2l0aCBgLWMnIGFuZCBgLW8nIGZv ciB0aGUgc2FrZSBvZiB0aGUgImRhc2htc3Rkb3V0Ig0KKyAgICAjIG1vZGUuICBJdCB0dXJucyBv dXQgdGhhdCB0aGUgU3VuUHJvIEMrKyBjb21waWxlciBkb2VzIG5vdA0KcHJvcGVybHkNCisgICAg IyBoYW5kbGUgYC1NIC1vJywgYW5kIHdlIG5lZWQgdG8gZGV0ZWN0IHRoaXMuDQorICAgIGlmIGRl cG1vZGU9JGRlcG1vZGUgXA0KKyAgICAgICBzb3VyY2U9c3ViL2NvbmZ0ZXN0LmMgb2JqZWN0PXN1 Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBcDQorICAgICAgIGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlBv IHRtcGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlRQbyBcDQorICAgICAgICRTSEVMTCAuL2RlcGNvbXAg JGRlcGNjIC1jIC1vIHN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfQ0Kc3ViL2NvbmZ0ZXN0LmMgXA0K KyAgICAgICAgID4vZGV2L251bGwgMj5jb25mdGVzdC5lcnIgJiYNCisgICAgICAgZ3JlcCBzdWIv Y29uZnRzdDYuaCBzdWIvY29uZnRlc3QuUG8gPiAvZGV2L251bGwgMj4mMSAmJg0KKyAgICAgICBn cmVwIHN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBzdWIvY29uZnRlc3QuUG8gPiAvZGV2L251bGwg Mj4mMQ0KJiYNCisgICAgICAgJHtNQUtFLW1ha2V9IC1zIC1mIGNvbmZtZiA+IC9kZXYvbnVsbCAy PiYxOyB0aGVuDQorICAgICAgIyBpY2MgZG9lc24ndCBjaG9rZSBvbiB1bmtub3duIG9wdGlvbnMs IGl0IHdpbGwganVzdCBpc3N1ZQ0Kd2FybmluZ3MNCisgICAgICAjIG9yIHJlbWFya3MgKGV2ZW4g d2l0aCAtV2Vycm9yKS4gIFNvIHdlIGdyZXAgc3RkZXJyIGZvciBhbnkNCm1lc3NhZ2UNCisgICAg ICAjIHRoYXQgc2F5cyBhbiBvcHRpb24gd2FzIGlnbm9yZWQgb3Igbm90IHN1cHBvcnRlZC4NCisg ICAgICAjIFdoZW4gZ2l2ZW4gLU1QLCBpY2MgNy4wIGFuZCA3LjEgY29tcGxhaW4gdGh1c2x5Og0K KyAgICAgICMgICBpY2M6IENvbW1hbmQgbGluZSB3YXJuaW5nOiBpZ25vcmluZyBvcHRpb24gJy1N Jzsgbm8gYXJndW1lbnQNCnJlcXVpcmVkDQorICAgICAgIyBUaGUgZGlhZ25vc2lzIGNoYW5nZWQg aW4gaWNjIDguMDoNCisgICAgICAjICAgaWNjOiBDb21tYW5kIGxpbmUgcmVtYXJrOiBvcHRpb24g Jy1NUCcgbm90IHN1cHBvcnRlZA0KKyAgICAgIGlmIChncmVwICdpZ25vcmluZyBvcHRpb24nIGNv bmZ0ZXN0LmVyciB8fA0KKyAgICAgICAgICBncmVwICdub3Qgc3VwcG9ydGVkJyBjb25mdGVzdC5l cnIpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ow0KZWxzZQ0KKyAgICAgICAgYW1fY3ZfQ0NfZGVw ZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9JGRlcG1vZGUNCisgICAgICAgIGJyZWFrDQorICAgICAg ZmkNCisgICAgZmkNCisgIGRvbmUNCisNCisgIGNkIC4uDQorICBybSAtcmYgY29uZnRlc3QuZGly DQorZWxzZQ0KKyAgYW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9bm9uZQ0KK2Zp DQorDQorZmkNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDoNCiRhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSIgPiY1DQorJGFzX2VjaG8g IiRhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSIgPiY2OyB9DQorQ0NERVBNT0RF PWRlcG1vZGU9JGFtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlDQorDQorDQorDQor aWYNCisgIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubyBcDQorICAm JiB0ZXN0ICIkYW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUiID0gZ2NjMzsgdGhl bg0KKyAgYW1fX2Zhc3RkZXBDQ19UUlVFPQ0KKyAgYW1fX2Zhc3RkZXBDQ19GQUxTRT0nIycNCitl bHNlDQorICBhbV9fZmFzdGRlcENDX1RSVUU9JyMnDQorICBhbV9fZmFzdGRlcENDX0ZBTFNFPQ0K K2ZpDQorDQorDQoraWYgdGVzdCAteiAiJENDIjsgdGhlbg0KKyAgIyBFeHRyYWN0IHRoZSBmaXJz dCB3b3JkIG9mICJjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoDQphcmdzLg0K K3NldCBkdW1teSBjYzsgYWNfd29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVj a2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mr c2V0fSIgPSBzZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNl DQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuDQorICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0 IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCisgIGFjX3Byb2dfcmVqZWN0ZWQ9 bm8NCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBp biAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAm JiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0 ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCIgJiYgJGFzX3Rlc3RfeA0KIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVu DQorICAgIGlmIHRlc3QgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID0gIi91c3IvdWNi L2NjIjsgdGhlbg0KKyAgICAgICBhY19wcm9nX3JlamVjdGVkPXllcw0KKyAgICAgICBjb250aW51 ZQ0KKyAgICAgZmkNCisgICAgYWNfY3ZfcHJvZ19DQz0iY2MiDQorICAgICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kDQokYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf ZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19z YXZlX0lGUw0KKw0KK2lmIHRlc3QgJGFjX3Byb2dfcmVqZWN0ZWQgPSB5ZXM7IHRoZW4NCisgICMg V2UgZm91bmQgYSBib2dvbiBpbiB0aGUgcGF0aCwgc28gbWFrZSBzdXJlIHdlIG5ldmVyIHVzZSBp dC4NCisgIHNldCBkdW1teSAkYWNfY3ZfcHJvZ19DQw0KKyAgc2hpZnQNCisgIGlmIHRlc3QgJCMg IT0gMDsgdGhlbg0KKyAgICAjIFdlIGNob3NlIGEgZGlmZmVyZW50IGNvbXBpbGVyIGZyb20gdGhl IGJvZ3VzIG9uZS4NCisgICAgIyBIb3dldmVyLCBpdCBoYXMgdGhlIHNhbWUgYmFzZW5hbWUsIHNv IHRoZSBib2dvbiB3aWxsIGJlIGNob3Nlbg0KKyAgICAjIGZpcnN0IGlmIHdlIHNldCBDQyB0byBq dXN0IHRoZSBiYXNlbmFtZTsgdXNlIHRoZSBmdWxsIGZpbGUgbmFtZS4NCisgICAgc2hpZnQNCisg ICAgYWNfY3ZfcHJvZ19DQz0iJGFzX2Rpci8kYWNfd29yZCR7MSsnICd9JEAiDQorICBmaQ0KK2Zp DQorZmkNCitmaQ0KK0NDPSRhY19jdl9wcm9nX0NDDQoraWYgdGVzdCAtbiAiJENDIjsgdGhlbg0K KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIg PiY1DQorJGFzX2VjaG8gIiRDQyIgPiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4m NjsgfQ0KK2ZpDQorDQorDQorICB0ZXN0IC16ICIkQ0MiICYmIGFzX2ZuX2Vycm9yICJubyBhY2Nl cHRhYmxlIGNjIGZvdW5kIGluIFwkUEFUSCINCiIkTElORU5PIiA1DQorZmkNCisNCit7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJl IHVzaW5nDQpHTlUgQyIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUg dXNpbmcgR05VIEMuLi4gIiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X2NfY29tcGlsZXJfZ251 K3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxz ZQ0KKyAgY2F0ID4gY29uZnRlc3QuYyA8PEVPRg0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgeWVzOw0K KyNlbmRpZg0KK0VPRg0KK2lmIHsgYWNfdHJ5PScke0NDLWNjfSAtRSBjb25mdGVzdC5jJw0KKyAg eyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX3Ry eVwiIjsgfSA+JjUNCisgIChldmFsICRhY190cnkpIDI+JjUNCisgIGFjX3N0YXR1cz0kPw0KKyAg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIg PiY1DQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB9IHwgZWdyZXAgeWVzID4vZGV2L251bGwg Mj4mMTsgdGhlbg0KKyAgYWNfY3ZfY19jb21waWxlcl9nbnU9eWVzDQorZWxzZQ0KKyAgYWNfY3Zf Y19jb21waWxlcl9nbnU9bm8NCitmaQ0KK2ZpDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6DQokYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNQ0KKyRhc19l Y2hvICIkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNjsgfQ0KKw0KK2lmIHRlc3QgJGFjX2N2X2Nf Y29tcGlsZXJfZ251ID0geWVzOyB0aGVuDQorICBHQ0M9eWVzDQorICBhY190ZXN0X0NGTEFHUz0i JHtDRkxBR1Mrc2V0fSINCisgIGFjX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIg0KKyAgYWNfdGVzdF9D RkxBR1M9JHtDRkxBR1Mrc2V0fQ0KK2FjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MNCit7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2Vw dHMNCi1nIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1n Li4uICIgPiY2OyB9DQoraWYgdGVzdCAiJHthY19jdl9wcm9nX2NjX2crc2V0fSIgPSBzZXQ7IHRo ZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBhY19zYXZlX2Nf d2Vycm9yX2ZsYWc9JGFjX2Nfd2Vycm9yX2ZsYWcNCisgICBhY19jX3dlcnJvcl9mbGFnPXllcw0K KyAgIGFjX2N2X3Byb2dfY2NfZz1ubw0KKyAgIENGTEFHUz0iLWciDQorICAgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dA0KKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8N CisNCitpbnQNCittYWluICgpDQorew0KKw0KKyAgOw0KKyAgcmV0dXJuIDA7DQorfQ0KK19BQ0VP Rg0KK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoNCisgIGFjX2N2X3By b2dfY2NfZz15ZXMNCitlbHNlDQorICBDRkxBR1M9IiINCisgICAgICBjYXQgY29uZmRlZnMuaCAt IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0DQorLyogZW5kIGNvbmZkZWZzLmguICAqLw0KKw0K K2ludA0KK21haW4gKCkNCit7DQorDQorICA7DQorICByZXR1cm4gMDsNCit9DQorX0FDRU9GDQor aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOg0KKw0KK2Vsc2UNCisgIGFj X2Nfd2Vycm9yX2ZsYWc9JGFjX3NhdmVfY193ZXJyb3JfZmxhZw0KKwkgQ0ZMQUdTPSItZyINCisJ IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQNCisvKiBlbmQgY29u ZmRlZnMuaC4gICovDQorDQoraW50DQorbWFpbiAoKQ0KK3sNCisNCisgIDsNCisgIHJldHVybiAw Ow0KK30NCitfQUNFT0YNCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6 DQorICBhY19jdl9wcm9nX2NjX2c9eWVzDQorZmkNCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBj b25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQNCitmaQ0KK3JtIC1mIGNvcmUgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dA0KK2ZpDQorcm0g LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0 DQorICAgYWNfY193ZXJyb3JfZmxhZz0kYWNfc2F2ZV9jX3dlcnJvcl9mbGFnDQorZmkNCit7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3Byb2df Y2NfZyIgPiY1DQorJGFzX2VjaG8gIiRhY19jdl9wcm9nX2NjX2ciID4mNjsgfQ0KK2lmIHRlc3Qg IiRhY190ZXN0X0NGTEFHUyIgPSBzZXQ7IHRoZW4NCisgIENGTEFHUz0kYWNfc2F2ZV9DRkxBR1MN CitlbGlmIHRlc3QgJGFjX2N2X3Byb2dfY2NfZyA9IHllczsgdGhlbg0KKyAgaWYgdGVzdCAiJEdD QyIgPSB5ZXM7IHRoZW4NCisgICAgQ0ZMQUdTPSItZyAtTzIiDQorICBlbHNlDQorICAgIENGTEFH Uz0iLWciDQorICBmaQ0KK2Vsc2UNCisgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuDQorICAg IENGTEFHUz0iLU8yIg0KKyAgZWxzZQ0KKyAgICBDRkxBR1M9DQorICBmaQ0KK2ZpDQorICBpZiB0 ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuDQorICAgIENGTEFHUz0iJGFjX3NhdmVf Q0ZMQUdTIg0KKyAgZWxpZiB0ZXN0ICRhY19jdl9wcm9nX2NjX2cgPSB5ZXM7IHRoZW4NCisgICAg Q0ZMQUdTPSItZyAtTzIiDQorICBlbHNlDQorICAgIENGTEFHUz0iLU8yIg0KKyAgZmkNCitlbHNl DQorICBHQ0M9DQorICB0ZXN0ICIke0NGTEFHUytzZXR9IiA9IHNldCB8fCBDRkxBR1M9Ii1nIg0K K2ZpDQorDQorDQoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbg0KKyAgIyBFeHRy YWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFzIiwgc28gaXQgY2FuIGJl IGENCnByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9 YXM7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRh Y193b3JkLi4uICIgPiY2OyB9DQoraWYgdGVzdCAiJHthY19jdl9wcm9nX0FTK3NldH0iID0gc2V0 OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVz dCAtbiAiJEFTIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19BUz0iJEFTIiAjIExldCB0aGUgdXNlciBv dmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NF UEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0K KyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGlu ICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3gNCiIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX0FTPSIke2FjX3Rvb2xfcHJl Zml4fWFzIg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3Vu ZA0KJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZp DQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitmaQ0KK2ZpDQorQVM9JGFj X2N2X3Byb2dfQVMNCitpZiB0ZXN0IC1uICIkQVMiOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEFTIiA+JjUNCiskYXNfZWNobyAiJEFT IiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQorZmkNCisNCisNCitm aQ0KK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FTIjsgdGhlbg0KKyAgYWNfY3RfQVM9JEFTDQor ICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFzIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3Jh bSBuYW1lIHdpdGgNCmFyZ3MuDQorc2V0IGR1bW15IGFzOyBhY193b3JkPSQyDQoreyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4m NQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmIHRl c3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUytzZXR9IiA9IHNldDsgdGhlbiA6DQorICAkYXNfZWNo b19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRhY19jdF9BUyI7IHRo ZW4NCisgIGFjX2N2X3Byb2dfYWNfY3RfQVM9IiRhY19jdF9BUyIgIyBMZXQgdGhlIHVzZXIgb3Zl cnJpZGUgdGhlIHRlc3QuDQorZWxzZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBB UkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisg IHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4dCBpbiAn JyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94DQoiJGFzX2Rpci8kYWNfd29yZCRh Y19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19hY19jdF9BUz0iYXMiDQorICAg ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kDQokYXNfZGlyLyRh Y193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBk b25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCithY19jdF9BUz0kYWNfY3ZfcHJv Z19hY19jdF9BUw0KK2lmIHRlc3QgLW4gIiRhY19jdF9BUyI7IHRoZW4NCisgIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQVMiID4mNQ0KKyRh c19lY2hvICIkYWNfY3RfQVMiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7 IH0NCitmaQ0KKw0KKyAgaWYgdGVzdCAieCRhY19jdF9BUyIgPSB4OyB0aGVuDQorICAgIEFTPSIi DQorICBlbHNlDQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4N Cit5ZXM6KQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklO RzogdXNpbmcgY3Jvc3MgdG9vbHMNCm5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1 DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZp eGVkIHdpdGggaG9zdA0KdHJpcGxldCIgPiYyO30NCithY190b29sX3dhcm5lZD15ZXMgOzsNCitl c2FjDQorICAgIEFTPSRhY19jdF9BUw0KKyAgZmkNCitlbHNlDQorICBBUz0iJGFjX2N2X3Byb2df QVMiDQorZmkNCisNCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuDQorICAjIEV4 dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4g YmUgYQ0KcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZp eH1hcjsgYWNfd29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig JGFjX3dvcmQuLi4gIiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBz ZXQ7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0 ZXN0IC1uICIkQVIiOyB0aGVuDQorICBhY19jdl9wcm9nX0FSPSIkQVIiICMgTGV0IHRoZSB1c2Vy IG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf U0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZT DQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQg aW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFz X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeA0KIiRhc19kaXIvJGFjX3dv cmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9w cmVmaXh9YXIiDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZv dW5kDQokYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAg ZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCitBUj0k YWNfY3ZfcHJvZ19BUg0KK2lmIHRlc3QgLW4gIiRBUiI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQVIiID4mNQ0KKyRhc19lY2hvICIk QVIiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKw0K K2ZpDQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuDQorICBhY19jdF9BUj0kQVIN CisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9n cmFtIG5hbWUgd2l0aA0KYXJncy4NCitzZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDINCit7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIg PiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYg dGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoNCisgICRhc19l Y2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsg dGhlbg0KKyAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX2N0X0FSIiAjIExldCB0aGUgdXNlciBv dmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NF UEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0K KyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGlu ICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3gNCiIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciINCisg ICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQNCiRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisg IGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQorZmkNCitmaQ0KK2FjX2N0X0FSPSRhY19jdl9w cm9nX2FjX2N0X0FSDQoraWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbg0KKyAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9BUiIgPiY1DQor JGFzX2VjaG8gIiRhY19jdF9BUiIgPiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4m NjsgfQ0KK2ZpDQorDQorICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4NCisgICAgQVI9 IiINCisgIGVsc2UNCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBp bg0KK3llczopDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJO SU5HOiB1c2luZyBjcm9zcyB0b29scw0Kbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+ JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJl Zml4ZWQgd2l0aCBob3N0DQp0cmlwbGV0IiA+JjI7fQ0KK2FjX3Rvb2xfd2FybmVkPXllcyA7Ow0K K2VzYWMNCisgICAgQVI9JGFjX2N0X0FSDQorICBmaQ0KK2Vsc2UNCisgIEFSPSIkYWNfY3ZfcHJv Z19BUiINCitmaQ0KKw0KK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4NCisgICMg RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1yYW5saWIiLCBzbyBp dCBjYW4gYmUNCmEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitzZXQgZHVtbXkgJHthY190b29s X3ByZWZpeH1yYW5saWI7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hl Y2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgdGVzdCAiJHthY19jdl9wcm9nX1JB TkxJQitzZXR9IiA9IHNldDsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNg0K K2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuDQorICBhY19jdl9wcm9nX1JBTkxJ Qj0iJFJBTkxJQiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuDQorZWxzZQ0KK2Fz X3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRI DQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rp cj0uDQorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25z OyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAk YXNfdGVzdF94DQoiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAg YWNfY3ZfcHJvZ19SQU5MSUI9IiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIg0KKyAgICAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZA0KJGFzX2Rpci8kYWNfd29yZCRh Y19leGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lG Uz0kYXNfc2F2ZV9JRlMNCisNCitmaQ0KK2ZpDQorUkFOTElCPSRhY19jdl9wcm9nX1JBTkxJQg0K K2lmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogJFJBTkxJQiIgPiY1DQorJGFzX2VjaG8gIiRSQU5MSUIi ID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKw0KK2Zp DQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfUkFOTElCIjsgdGhlbg0KKyAgYWNfY3RfUkFOTElC PSRSQU5MSUINCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicmFubGliIiwgc28gaXQg Y2FuIGJlIGEgcHJvZ3JhbSBuYW1lDQp3aXRoIGFyZ3MuDQorc2V0IGR1bW15IHJhbmxpYjsgYWNf d29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQu Li4gIiA+JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfUkFOTElCK3NldH0iID0g c2V0OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYg dGVzdCAtbiAiJGFjX2N0X1JBTkxJQiI7IHRoZW4NCisgIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElC PSIkYWNfY3RfUkFOTElCIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUNCnRlc3QuDQorZWxz ZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGlu ICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYm IGFzX2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRl bnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0 IiAmJiAkYXNfdGVzdF94DQoiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4N CisgICAgYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9InJhbmxpYiINCisgICAgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQNCiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl Y19leHQiID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFz X3NhdmVfSUZTDQorDQorZmkNCitmaQ0KK2FjX2N0X1JBTkxJQj0kYWNfY3ZfcHJvZ19hY19jdF9S QU5MSUINCitpZiB0ZXN0IC1uICIkYWNfY3RfUkFOTElCIjsgdGhlbg0KKyAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9SQU5MSUIiID4mNQ0K KyRhc19lY2hvICIkYWNfY3RfUkFOTElCIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJu byIgPiY2OyB9DQorZmkNCisNCisgIGlmIHRlc3QgIngkYWNfY3RfUkFOTElCIiA9IHg7IHRoZW4N CisgICAgUkFOTElCPSI6Ig0KKyAgZWxzZQ0KKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFj X3Rvb2xfd2FybmVkIGluDQoreWVzOikNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzDQpub3QgcHJlZml4ZWQgd2l0aCBo b3N0IHRyaXBsZXQiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3Nz IHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QNCnRyaXBsZXQiID4mMjt9DQorYWNfdG9vbF93 YXJuZWQ9eWVzIDs7DQorZXNhYw0KKyAgICBSQU5MSUI9JGFjX2N0X1JBTkxJQg0KKyAgZmkNCitl bHNlDQorICBSQU5MSUI9IiRhY19jdl9wcm9nX1JBTkxJQiINCitmaQ0KKw0KK2lmIHRlc3QgLW4g IiRhY190b29sX3ByZWZpeCI7IHRoZW4NCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAi JHthY190b29sX3ByZWZpeH1yZWFkZWxmIiwgc28gaXQgY2FuIGJlDQphIHByb2dyYW0gbmFtZSB3 aXRoIGFyZ3MuDQorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9cmVhZGVsZjsgYWNfd29yZD0k Mg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y ICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+ JjY7IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfUkVBREVMRitzZXR9IiA9IHNldDsgdGhlbiA6 DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRS RUFERUxGIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19SRUFERUxGPSIkUkVBREVMRiIgIyBMZXQgdGhl IHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuDQorZWxzZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0k UEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2 ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgIGZvciBhY19leGVj X2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1m ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94DQoiJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19SRUFERUxGPSIk e2FjX3Rvb2xfcHJlZml4fXJlYWRlbGYiDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGZvdW5kDQokYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisg ICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0K K2ZpDQorZmkNCitSRUFERUxGPSRhY19jdl9wcm9nX1JFQURFTEYNCitpZiB0ZXN0IC1uICIkUkVB REVMRiI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkUkVBREVMRiIgPiY1DQorJGFzX2VjaG8gIiRSRUFERUxGIiA+JjY7IH0NCitlbHNl DQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8i ID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQorZmkNCisNCisNCitmaQ0KK2lmIHRlc3QgLXog IiRhY19jdl9wcm9nX1JFQURFTEYiOyB0aGVuDQorICBhY19jdF9SRUFERUxGPSRSRUFERUxGDQor ICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInJlYWRlbGYiLCBzbyBpdCBjYW4gYmUgYSBw cm9ncmFtIG5hbWUNCndpdGggYXJncy4NCitzZXQgZHVtbXkgcmVhZGVsZjsgYWNfd29yZD0kMg0K K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRh Y193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7 IH0NCitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfUkVBREVMRitzZXR9IiA9IHNldDsgdGhl biA6DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4g IiRhY19jdF9SRUFERUxGIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19hY19jdF9SRUFERUxGPSIkYWNf Y3RfUkVBREVMRiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUNCnRoZSB0ZXN0Lg0KK2Vsc2UNCith c19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFU SA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19k aXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9u czsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYg JGFzX3Rlc3RfeA0KIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAg IGFjX2N2X3Byb2dfYWNfY3RfUkVBREVMRj0icmVhZGVsZiINCisgICAgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQNCiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l eHQiID4mNQ0KKyAgICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3Nh dmVfSUZTDQorDQorZmkNCitmaQ0KK2FjX2N0X1JFQURFTEY9JGFjX2N2X3Byb2dfYWNfY3RfUkVB REVMRg0KK2lmIHRlc3QgLW4gIiRhY19jdF9SRUFERUxGIjsgdGhlbg0KKyAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9SRUFERUxGIiA+JjUN CiskYXNfZWNobyAiJGFjX2N0X1JFQURFTEYiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8g Im5vIiA+JjY7IH0NCitmaQ0KKw0KKyAgaWYgdGVzdCAieCRhY19jdF9SRUFERUxGIiA9IHg7IHRo ZW4NCisgICAgUkVBREVMRj0iOiINCisgIGVsc2UNCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5n OiRhY190b29sX3dhcm5lZCBpbg0KK3llczopDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scw0Kbm90IHByZWZpeGVkIHdp dGggaG9zdCB0cmlwbGV0IiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBj cm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0DQp0cmlwbGV0IiA+JjI7fQ0KK2FjX3Rv b2xfd2FybmVkPXllcyA7Ow0KK2VzYWMNCisgICAgUkVBREVMRj0kYWNfY3RfUkVBREVMRg0KKyAg ZmkNCitlbHNlDQorICBSRUFERUxGPSIkYWNfY3ZfcHJvZ19SRUFERUxGIg0KK2ZpDQorDQorDQor DQorDQorIyBIYWNrIHRvIGVuc3VyZSB0aGF0IElOU1RBTEwgd29uJ3QgYmUgc2V0IHRvICIuLi8i IHdpdGggYXV0b2NvbmYNCjIuMTMuICAqLw0KK2FjX2dpdmVuX0lOU1RBTEw9JElOU1RBTEwNCisN Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRo ZXIgdG8gZW5hYmxlDQptYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1ha2VmaWxlcyIg PiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5lci1z cGVjaWZpYyBwb3J0aW9ucyBvZg0KTWFrZWZpbGVzLi4uICIgPiY2OyB9DQorICAgICMgQ2hlY2sg d2hldGhlciAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgd2FzIGdpdmVuLg0KK2lmIHRlc3QgIiR7 ZW5hYmxlX21haW50YWluZXJfbW9kZStzZXR9IiA9IHNldDsgdGhlbiA6DQorICBlbmFibGV2YWw9 JGVuYWJsZV9tYWludGFpbmVyX21vZGU7IFVTRV9NQUlOVEFJTkVSX01PREU9JGVuYWJsZXZhbA0K K2Vsc2UNCisgIFVTRV9NQUlOVEFJTkVSX01PREU9bm8NCitmaQ0KKw0KKyAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6DQokVVNFX01BSU5UQUlORVJfTU9E RSIgPiY1DQorJGFzX2VjaG8gIiRVU0VfTUFJTlRBSU5FUl9NT0RFIiA+JjY7IH0NCisNCisNCitp ZiB0ZXN0ICRVU0VfTUFJTlRBSU5FUl9NT0RFID0geWVzOyB0aGVuDQorICBNQUlOVEFJTkVSX01P REVfVFJVRT0NCisgIE1BSU5UQUlORVJfTU9ERV9GQUxTRT0nIycNCitlbHNlDQorICBNQUlOVEFJ TkVSX01PREVfVFJVRT0nIycNCisgIE1BSU5UQUlORVJfTU9ERV9GQUxTRT0NCitmaQ0KKw0KKyAg TUFJTlQ9JE1BSU5UQUlORVJfTU9ERV9UUlVFDQorDQorDQorIyBCeSBkZWZhdWx0IHdlIHNpbXBs eSB1c2UgdGhlIEMgY29tcGlsZXIgdG8gYnVpbGQgYXNzZW1ibHkgY29kZS4NCisNCit0ZXN0ICIk e0NDQVMrc2V0fSIgPSBzZXQgfHwgQ0NBUz0kQ0MNCit0ZXN0ICIke0NDQVNGTEFHUytzZXR9IiA9 IHNldCB8fCBDQ0FTRkxBR1M9JENGTEFHUw0KKw0KKw0KKw0KKw0KKyMgV2UgbmVlZCBBQ19FWEVF WFQgdG8ga2VlcCBhdXRvbWFrZSBoYXBweSBpbiBjeWdudXMgbW9kZS4gIEhvd2V2ZXIsDQorIyBh dCBsZWFzdCBjdXJyZW50bHksIHdlIG5ldmVyIGFjdHVhbGx5IGJ1aWxkIGEgcHJvZ3JhbSwgc28g d2UgbmV2ZXINCisjIG5lZWQgdG8gdXNlICQoRVhFRVhUKS4gIE1vcmVvdmVyLCB0aGUgdGVzdCBm b3IgRVhFRVhUIG5vcm1hbGx5DQorIyBmYWlscywgYmVjYXVzZSB3ZSBhcmUgcHJvYmFibHkgY29u ZmlndXJpbmcgd2l0aCBhIGNyb3NzIGNvbXBpbGVyDQorIyB3aGljaCBjYW4ndCBjcmVhdGUgZXhl Y3V0YWJsZXMuICBTbyB3ZSBpbmNsdWRlIEFDX0VYRUVYVCB0byBrZWVwDQorIyBhdXRvbWFrZSBo YXBweSwgYnV0IHdlIGRvbid0IGV4ZWN1dGUgaXQsIHNpbmNlIHdlIGRvbid0IGNhcmUgYWJvdXQN CisjIHRoZSByZXN1bHQuDQoraWYgZmFsc2U7IHRoZW4NCisNCisgIGR1bW15X3Zhcj0xDQorZmkN CisNCisuICR7bmV3bGliX2Jhc2VkaXJ9L2NvbmZpZ3VyZS5ob3N0DQorDQorbmV3bGliX2NmbGFn cz0iJHtuZXdsaWJfY2ZsYWdzfSAtZm5vLWJ1aWx0aW4iDQorDQorTkVXTElCX0NGTEFHUz0ke25l d2xpYl9jZmxhZ3N9DQorDQorDQorTk9fSU5DTFVERV9MSVNUPSR7bm9pbmNsdWRlfQ0KKw0KKw0K K0xERkxBR1M9JHtsZGZsYWdzfQ0KKw0KKw0KKw0KKw0KK2lmIHRlc3QgeCR7bmV3bGliX2VsaXhf bGV2ZWx9ID0geDA7IHRoZW4NCisgIEVMSVhfTEVWRUxfMF9UUlVFPQ0KKyAgRUxJWF9MRVZFTF8w X0ZBTFNFPScjJw0KK2Vsc2UNCisgIEVMSVhfTEVWRUxfMF9UUlVFPScjJw0KKyAgRUxJWF9MRVZF TF8wX0ZBTFNFPQ0KK2ZpDQorDQorDQorDQoraWYgdGVzdCB4JHtuZXdsaWJfZWxpeF9sZXZlbH0g PSB4MTsgdGhlbg0KKyAgRUxJWF9MRVZFTF8xX1RSVUU9DQorICBFTElYX0xFVkVMXzFfRkFMU0U9 JyMnDQorZWxzZQ0KKyAgRUxJWF9MRVZFTF8xX1RSVUU9JyMnDQorICBFTElYX0xFVkVMXzFfRkFM U0U9DQorZmkNCisNCisNCisNCitpZiB0ZXN0IHgke25ld2xpYl9lbGl4X2xldmVsfSA9IHgyOyB0 aGVuDQorICBFTElYX0xFVkVMXzJfVFJVRT0NCisgIEVMSVhfTEVWRUxfMl9GQUxTRT0nIycNCitl bHNlDQorICBFTElYX0xFVkVMXzJfVFJVRT0nIycNCisgIEVMSVhfTEVWRUxfMl9GQUxTRT0NCitm aQ0KKw0KKw0KKw0KK2lmIHRlc3QgeCR7bmV3bGliX2VsaXhfbGV2ZWx9ID0geDM7IHRoZW4NCisg IEVMSVhfTEVWRUxfM19UUlVFPQ0KKyAgRUxJWF9MRVZFTF8zX0ZBTFNFPScjJw0KK2Vsc2UNCisg IEVMSVhfTEVWRUxfM19UUlVFPScjJw0KKyAgRUxJWF9MRVZFTF8zX0ZBTFNFPQ0KK2ZpDQorDQor DQorDQoraWYgdGVzdCB4JHtuZXdsaWJfZWxpeF9sZXZlbH0gPSB4NDsgdGhlbg0KKyAgRUxJWF9M RVZFTF80X1RSVUU9DQorICBFTElYX0xFVkVMXzRfRkFMU0U9JyMnDQorZWxzZQ0KKyAgRUxJWF9M RVZFTF80X1RSVUU9JyMnDQorICBFTElYX0xFVkVMXzRfRkFMU0U9DQorZmkNCisNCisNCisNCisN CitpZiB0ZXN0IHgke3VzZV9saWJ0b29sfSA9IHh5ZXM7IHRoZW4NCisgIFVTRV9MSUJUT09MX1RS VUU9DQorICBVU0VfTElCVE9PTF9GQUxTRT0nIycNCitlbHNlDQorICBVU0VfTElCVE9PTF9UUlVF PScjJw0KKyAgVVNFX0xJQlRPT0xfRkFMU0U9DQorZmkNCisNCisNCisjIEhhcmQtY29kZSBPQkpF WFQuICBOb3JtYWxseSBpdCBpcyBzZXQgYnkgQUNfT0JKRVhULCBidXQgd2UNCisjIHVzZSBvZXh0 LCB3aGljaCBpcyBzZXQgaW4gY29uZmlndXJlLmhvc3QgYmFzZWQgb24gdGhlIHRhcmdldA0KcGxh dGZvcm0uDQorT0JKRVhUPSR7b2V4dH0NCisNCisNCisNCisNCisNCisNCisNCisNCisNCisNCisN CithY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUiDQorDQorY2F0ID5j b25mY2FjaGUgPDxcX0FDRU9GDQorIyBUaGlzIGZpbGUgaXMgYSBzaGVsbCBzY3JpcHQgdGhhdCBj YWNoZXMgdGhlIHJlc3VsdHMgb2YgY29uZmlndXJlDQorIyB0ZXN0cyBydW4gb24gdGhpcyBzeXN0 ZW0gc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gY29uZmlndXJlDQorIyBzY3JpcHRzIGFu ZCBjb25maWd1cmUgcnVucywgc2VlIGNvbmZpZ3VyZSdzIG9wdGlvbiAtLWNvbmZpZy1jYWNoZS4N CisjIEl0IGlzIG5vdCB1c2VmdWwgb24gb3RoZXIgc3lzdGVtcy4gIElmIGl0IGNvbnRhaW5zIHJl c3VsdHMgeW91IGRvbid0DQorIyB3YW50IHRvIGtlZXAsIHlvdSBtYXkgcmVtb3ZlIG9yIGVkaXQg aXQuDQorIw0KKyMgY29uZmlnLnN0YXR1cyBvbmx5IHBheXMgYXR0ZW50aW9uIHRvIHRoZSBjYWNo ZSBmaWxlIGlmIHlvdSBnaXZlIGl0DQorIyB0aGUgLS1yZWNoZWNrIG9wdGlvbiB0byByZXJ1biBj b25maWd1cmUuDQorIw0KKyMgYGFjX2N2X2Vudl9mb28nIHZhcmlhYmxlcyAoc2V0IG9yIHVuc2V0 KSB3aWxsIGJlIG92ZXJyaWRkZW4gd2hlbg0KKyMgbG9hZGluZyB0aGlzIGZpbGUsIG90aGVyICp1 bnNldCogYGFjX2N2X2Zvbycgd2lsbCBiZSBhc3NpZ25lZCB0aGUNCisjIGZvbGxvd2luZyB2YWx1 ZXMuDQorDQorX0FDRU9GDQorDQorIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBj YWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluDQp2YWx1ZXMsDQorIyBidXQgd2Uga25vdyBvZiBu byB3b3JrYXJvdW5kIHRoYXQgaXMgc2ltcGxlLCBwb3J0YWJsZSwgYW5kDQplZmZpY2llbnQuDQor IyBTbywgd2Uga2lsbCB2YXJpYWJsZXMgY29udGFpbmluZyBuZXdsaW5lcy4NCisjIFVsdHJpeCBz aCBzZXQgd3JpdGVzIHRvIHN0ZGVyciBhbmQgY2FuJ3QgYmUgcmVkaXJlY3RlZCBkaXJlY3RseSwN CisjIGFuZCBzZXRzIHRoZSBoaWdoIGJpdCBpbiB0aGUgY2FjaGUgZmlsZSB1bmxlc3Mgd2UgYXNz aWduIHRvIHRoZQ0KdmFycy4NCisoDQorICBmb3IgYWNfdmFyIGluIGAoc2V0KSAyPiYxIHwgc2Vk IC1uICdzL15cKFthLXpBLVpfXVthLXpBLVowLQ0KOV9dKlwpPS4qL1wxL3AnYDsgZG8NCisgICAg ZXZhbCBhY192YWw9XCQkYWNfdmFyDQorICAgIGNhc2UgJGFjX3ZhbCBpbiAjKA0KKyAgICAqJHth c19ubH0qKQ0KKyAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKA0KKyAgICAgICpfY3ZfKikgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYWNoZQ0KdmFyaWFi bGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdB Uk5JTkc6IGNhY2hlIHZhcmlhYmxlICRhY192YXIgY29udGFpbnMgYSBuZXdsaW5lIg0KPiYyO30g OzsNCisgICAgICBlc2FjDQorICAgICAgY2FzZSAkYWNfdmFyIGluICMoDQorICAgICAgXyB8IElG UyB8IGFzX25sKSA7OyAjKA0KKyAgICAgIEJBU0hfQVJHViB8IEJBU0hfU09VUkNFKSBldmFsICRh Y192YXI9IDs7ICMoDQorICAgICAgKikgeyBldmFsICRhY192YXI9OyB1bnNldCAkYWNfdmFyO30g OzsNCisgICAgICBlc2FjIDs7DQorICAgIGVzYWMNCisgIGRvbmUNCisNCisgIChzZXQpIDI+JjEg fA0KKyAgICBjYXNlICRhc19ubGAoYWNfc3BhY2U9JyAnOyBzZXQpIDI+JjFgIGluICMoDQorICAg ICoke2FzX25sfWFjX3NwYWNlPVwgKikNCisgICAgICAjIGBzZXQnIGRvZXMgbm90IHF1b3RlIGNv cnJlY3RseSwgc28gYWRkIHF1b3RlczogZG91YmxlLXF1b3RlDQorICAgICAgIyBzdWJzdGl0dXRp b24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgc2VkIHR1cm5zIFxcIGludG8gXC4NCisgICAgICBz ZWQgLW4gXA0KKwkicy8nLydcXFxcJycvZzsNCisJIA0Kcy9eXFwoW18kYXNfY3JfYWxudW1dKl9j dl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT0nXFwyJy9wIg0KKyAgICAgIDs7ICMo DQorICAgICopDQorICAgICAgIyBgc2V0JyBxdW90ZXMgY29ycmVjdGx5IGFzIHJlcXVpcmVkIGJ5 IFBPU0lYLCBzbyBkbyBub3QgYWRkDQpxdW90ZXMuDQorICAgICAgc2VkIC1uICIvXltfJGFzX2Ny X2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0vcCINCisgICAgICA7Ow0KKyAgICBlc2FjIHwN CisgICAgc29ydA0KKykgfA0KKyAgc2VkICcNCisgICAgIC9eYWNfY3ZfZW52Xy9iIGVuZA0KKyAg ICAgdCBjbGVhcg0KKyAgICAgOmNsZWFyDQorICAgICBzL15cKFtePV0qXCk9XCguKlt7fV0uKlwp JC90ZXN0ICIke1wxK3NldH0iID0gc2V0IHx8ICYvDQorICAgICB0IGVuZA0KKyAgICAgcy9eXChb Xj1dKlwpPVwoLipcKSQvXDE9JHtcMT1cMn0vDQorICAgICA6ZW5kJyA+PmNvbmZjYWNoZQ0KK2lm IGRpZmYgIiRjYWNoZV9maWxlIiBjb25mY2FjaGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDo7IGVs c2UNCisgIGlmIHRlc3QgLXcgIiRjYWNoZV9maWxlIjsgdGhlbg0KKyAgICB0ZXN0ICJ4JGNhY2hl X2ZpbGUiICE9ICJ4L2Rldi9udWxsIiAmJg0KKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogdXBkYXRpbmcgY2FjaGUNCiRjYWNoZV9maWxlIiA+JjUNCiskYXNf ZWNobyAiJGFzX21lOiB1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30NCisgICAgY2F0 IGNvbmZjYWNoZSA+JGNhY2hlX2ZpbGUNCisgIGVsc2UNCisgICAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBub3QgdXBkYXRpbmcgdW53cml0YWJsZQ0KY2FjaGUgJGNh Y2hlX2ZpbGUiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IG5vdCB1cGRhdGluZyB1bndyaXRhYmxl IGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQ0KKyAgZmkNCitmaQ0KK3JtIC1mIGNvbmZjYWNoZQ0K Kw0KK3Rlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0kYWNfZGVmYXVsdF9wcmVmaXgN CisjIExldCBtYWtlIGV4cGFuZCBleGVjX3ByZWZpeC4NCit0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9 IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nDQorDQorIyBUcmFuc2Zvcm0gY29uZmRl ZnMuaCBpbnRvIERFRlMuDQorIyBQcm90ZWN0IGFnYWluc3Qgc2hlbGwgZXhwYW5zaW9uIHdoaWxl IGV4ZWN1dGluZyBNYWtlZmlsZSBydWxlcy4NCisjIFByb3RlY3QgYWdhaW5zdCBNYWtlZmlsZSBt YWNybyBleHBhbnNpb24uDQorIw0KKyMgSWYgdGhlIGZpcnN0IHNlZCBzdWJzdGl0dXRpb24gaXMg ZXhlY3V0ZWQgKHdoaWNoIGxvb2tzIGZvciBtYWNyb3MNCnRoYXQNCisjIHRha2UgYXJndW1lbnRz KSwgdGhlbiBicmFuY2ggdG8gdGhlIHF1b3RlIHNlY3Rpb24uICBPdGhlcndpc2UsDQorIyBsb29r IGZvciBhIG1hY3JvIHRoYXQgZG9lc24ndCB0YWtlIGFyZ3VtZW50cy4NCithY19zY3JpcHQ9Jw0K KzptbGluZQ0KKy9cXCQvew0KKyBODQorIHMsXFxcbiwsDQorIGIgbWxpbmUNCit9DQordCBjbGVh cg0KKzpjbGVhcg0KK3MvXlsJIF0qI1sJIF0qZGVmaW5lWwkgXVsJIF0qXChbXgkgKF1bXgkNCihd KihbXildKilcKVsJIF0qXCguKlwpLy1EXDE9XDIvZw0KK3QgcXVvdGUNCitzL15bCSBdKiNbCSBd KmRlZmluZVsJIF1bCSBdKlwoW14JIF1bXgkNCl0qXClbCSBdKlwoLipcKS8tRFwxPVwyL2cNCit0 IHF1b3RlDQorYiBhbnkNCis6cXVvdGUNCitzL1sJIGB+IyReJiooKXt9XFx8OydcJyciPD4/XS9c XCYvZw0KK3MvXFsvXFwmL2cNCitzL1xdL1xcJi9nDQorcy9cJC8kJC9nDQorSA0KKzphbnkNCisk ew0KKwlnDQorCXMvXlxuLy8NCisJcy9cbi8gL2cNCisJcA0KK30NCisnDQorREVGUz1gc2VkIC1u ICIkYWNfc2NyaXB0IiBjb25mZGVmcy5oYA0KKw0KKw0KK2FjX2xpYm9ianM9DQorYWNfbHRsaWJv YmpzPQ0KK2ZvciBhY19pIGluIDogJExJQk9CSlM7IGRvIHRlc3QgIngkYWNfaSIgPSB4OiAmJiBj b250aW51ZQ0KKyAgIyAxLiBSZW1vdmUgdGhlIGV4dGVuc2lvbiwgYW5kICRVIGlmIGFscmVhZHkg aW5zdGFsbGVkLg0KKyAgYWNfc2NyaXB0PSdzL1wkVVwuLy4vO3MvXC5vJC8vO3MvXC5vYmokLy8n DQorICBhY19pPWAkYXNfZWNobyAiJGFjX2kiIHwgc2VkICIkYWNfc2NyaXB0ImANCisgICMgMi4g UHJlcGVuZCBMSUJPQkpESVIuICBXaGVuIHVzZWQgd2l0aCBhdXRvbWFrZT49MS4xMCBMSUJPQkpE SVINCisgICMgICAgd2lsbCBiZSBzZXQgdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSBMSUJPQkpTIG9i amVjdHMgYXJlIGJ1aWx0Lg0KKyAgYXNfZm5fYXBwZW5kIGFjX2xpYm9ianMgIiBcJHtMSUJPQkpE SVJ9JGFjX2lcJFUuJGFjX29iamV4dCINCisgIGFzX2ZuX2FwcGVuZCBhY19sdGxpYm9ianMgIiBc JHtMSUJPQkpESVJ9JGFjX2kiJyRVLmxvJw0KK2RvbmUNCitMSUJPQkpTPSRhY19saWJvYmpzDQor DQorTFRMSUJPQkpTPSRhY19sdGxpYm9ianMNCisNCisNCitpZiB0ZXN0IC16ICIke01BWV9TVVBQ TFlfU1lTQ0FMTFNfVFJVRX0iICYmIHRlc3QgLXoNCiIke01BWV9TVVBQTFlfU1lTQ0FMTFNfRkFM U0V9IjsgdGhlbg0KKyAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiTUFZX1NVUFBMWV9TWVND QUxMU1wiIHdhcyBuZXZlciBkZWZpbmVkLg0KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8g d2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiINCiIkTElORU5PIiA1DQorZmkNCitpZiB0 ZXN0IC16ICIke0FNREVQX1RSVUV9IiAmJiB0ZXN0IC16ICIke0FNREVQX0ZBTFNFfSI7IHRoZW4N CisgIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkFNREVQXCIgd2FzIG5ldmVyIGRlZmluZWQu DQorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlv bmFsbHkuIg0KIiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7YW1fX2Zhc3RkZXBDQ19U UlVFfSIgJiYgdGVzdCAteg0KIiR7YW1fX2Zhc3RkZXBDQ19GQUxTRX0iOyB0aGVuDQorICBhc19m bl9lcnJvciAiY29uZGl0aW9uYWwgXCJhbV9fZmFzdGRlcENDXCIgd2FzIG5ldmVyIGRlZmluZWQu DQorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlv bmFsbHkuIg0KIiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7TUFJTlRBSU5FUl9NT0RF X1RSVUV9IiAmJiB0ZXN0IC16DQoiJHtNQUlOVEFJTkVSX01PREVfRkFMU0V9IjsgdGhlbg0KKyAg YXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiTUFJTlRBSU5FUl9NT0RFXCIgd2FzIG5ldmVyIGRl ZmluZWQuDQorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNv bmRpdGlvbmFsbHkuIg0KIiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7RUxJWF9MRVZF TF8wX1RSVUV9IiAmJiB0ZXN0IC16ICIke0VMSVhfTEVWRUxfMF9GQUxTRX0iOw0KdGhlbg0KKyAg YXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiRUxJWF9MRVZFTF8wXCIgd2FzIG5ldmVyIGRlZmlu ZWQuDQorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRp dGlvbmFsbHkuIg0KIiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7RUxJWF9MRVZFTF8x X1RSVUV9IiAmJiB0ZXN0IC16ICIke0VMSVhfTEVWRUxfMV9GQUxTRX0iOw0KdGhlbg0KKyAgYXNf Zm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiRUxJWF9MRVZFTF8xXCIgd2FzIG5ldmVyIGRlZmluZWQu DQorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlv bmFsbHkuIg0KIiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7RUxJWF9MRVZFTF8yX1RS VUV9IiAmJiB0ZXN0IC16ICIke0VMSVhfTEVWRUxfMl9GQUxTRX0iOw0KdGhlbg0KKyAgYXNfZm5f ZXJyb3IgImNvbmRpdGlvbmFsIFwiRUxJWF9MRVZFTF8yXCIgd2FzIG5ldmVyIGRlZmluZWQuDQor VXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFs bHkuIg0KIiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7RUxJWF9MRVZFTF8zX1RSVUV9 IiAmJiB0ZXN0IC16ICIke0VMSVhfTEVWRUxfM19GQUxTRX0iOw0KdGhlbg0KKyAgYXNfZm5fZXJy b3IgImNvbmRpdGlvbmFsIFwiRUxJWF9MRVZFTF8zXCIgd2FzIG5ldmVyIGRlZmluZWQuDQorVXN1 YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHku Ig0KIiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7RUxJWF9MRVZFTF80X1RSVUV9IiAm JiB0ZXN0IC16ICIke0VMSVhfTEVWRUxfNF9GQUxTRX0iOw0KdGhlbg0KKyAgYXNfZm5fZXJyb3Ig ImNvbmRpdGlvbmFsIFwiRUxJWF9MRVZFTF80XCIgd2FzIG5ldmVyIGRlZmluZWQuDQorVXN1YWxs eSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIg0K IiRMSU5FTk8iIDUNCitmaQ0KK2lmIHRlc3QgLXogIiR7VVNFX0xJQlRPT0xfVFJVRX0iICYmIHRl c3QgLXogIiR7VVNFX0xJQlRPT0xfRkFMU0V9IjsNCnRoZW4NCisgIGFzX2ZuX2Vycm9yICJjb25k aXRpb25hbCBcIlVTRV9MSUJUT09MXCIgd2FzIG5ldmVyIGRlZmluZWQuDQorVXN1YWxseSB0aGlz IG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIg0KIiRMSU5F Tk8iIDUNCitmaQ0KKw0KKzogJHtDT05GSUdfU1RBVFVTPS4vY29uZmlnLnN0YXR1c30NCithY193 cml0ZV9mYWlsPTANCithY19jbGVhbl9maWxlc19zYXZlPSRhY19jbGVhbl9maWxlcw0KK2FjX2Ns ZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgJENPTkZJR19TVEFUVVMiDQoreyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgPiY1 DQorJGFzX2VjaG8gIiRhc19tZTogY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiID4mNjt9DQorYXNf d3JpdGVfZmFpbD0wDQorY2F0ID4kQ09ORklHX1NUQVRVUyA8PF9BU0VPRiB8fCBhc193cml0ZV9m YWlsPTENCisjISAkU0hFTEwNCisjIEdlbmVyYXRlZCBieSAkYXNfbWUuDQorIyBSdW4gdGhpcyBm aWxlIHRvIHJlY3JlYXRlIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uDQorIyBDb21waWxlciBv dXRwdXQgcHJvZHVjZWQgYnkgY29uZmlndXJlLCB1c2VmdWwgZm9yIGRlYnVnZ2luZw0KKyMgY29u ZmlndXJlLCBpcyBpbiBjb25maWcubG9nIGlmIGl0IGV4aXN0cy4NCisNCitkZWJ1Zz1mYWxzZQ0K K2FjX2NzX3JlY2hlY2s9ZmFsc2UNCithY19jc19zaWxlbnQ9ZmFsc2UNCisNCitTSEVMTD1cJHtD T05GSUdfU0hFTEwtJFNIRUxMfQ0KK2V4cG9ydCBTSEVMTA0KK19BU0VPRg0KK2NhdCA+PiRDT05G SUdfU1RBVFVTIDw8XF9BU0VPRiB8fCBhc193cml0ZV9mYWlsPTENCisjIyAtLS0tLS0tLS0tLS0t LS0tLS0tLSAjIw0KKyMjIE00c2ggSW5pdGlhbGl6YXRpb24uICMjDQorIyMgLS0tLS0tLS0tLS0t LS0tLS0tLS0gIyMNCisNCisjIEJlIG1vcmUgQm91cm5lIGNvbXBhdGlibGUNCitEVUFMQ0FTRT0x OyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNoDQoraWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lP TitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuDQo6DQorICBlbXVs YXRlIHNoDQorICBOVUxMQ01EPToNCisgICMgUHJlLTQuMiB2ZXJzaW9ucyBvZiBac2ggZG8gd29y ZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaA0KKyAgIyBpcyBjb250cmFyeSB0byBvdXIg dXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4NCisgIGFsaWFzIC1nICckezErIiRAIn0nPSci JEAiJw0KKyAgc2V0b3B0IE5PX0dMT0JfU1VCU1QNCitlbHNlDQorICBjYXNlIGAoc2V0IC1vKSAy Pi9kZXYvbnVsbGAgaW4gIygNCisgICpwb3NpeCopIDoNCisgICAgc2V0IC1vIHBvc2l4IDs7ICMo DQorICAqKSA6DQorICAgICA7Ow0KK2VzYWMNCitmaQ0KKw0KKw0KK2FzX25sPScNCisnDQorZXhw b3J0IGFzX25sDQorIyBQcmludGluZyBhIGxvbmcgc3RyaW5nIGNyYXNoZXMgU29sYXJpcyA3IC91 c3IvYmluL3ByaW50Zi4NCithc19lY2hvPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcDQpcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFwnDQorYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNf ZWNobyRhc19lY2hvDQorYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRh c19lY2hvJGFzX2VjaG8NCisjIFByZWZlciBhIGtzaCBzaGVsbCBidWlsdGluIG92ZXIgYW4gZXh0 ZXJuYWwgcHJpbnRmIHByb2dyYW0gb24NClNvbGFyaXMsDQorIyBidXQgd2l0aG91dCB3YXN0aW5n IGZvcmtzIGZvciBiYXNoIG9yIHpzaC4NCitpZiB0ZXN0IC16ICIkQkFTSF9WRVJTSU9OJFpTSF9W RVJTSU9OIiBcDQorICAgICYmICh0ZXN0ICJYYHByaW50IC1yIC0tICRhc19lY2hvYCIgPSAiWCRh c19lY2hvIikgMj4vZGV2L251bGw7DQp0aGVuDQorICBhc19lY2hvPSdwcmludCAtciAtLScNCisg IGFzX2VjaG9fbj0ncHJpbnQgLXJuIC0tJw0KK2VsaWYgKHRlc3QgIlhgcHJpbnRmICVzICRhc19l Y2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRoZW4NCisgIGFzX2VjaG89J3ByaW50 ZiAlc1xuJw0KKyAgYXNfZWNob19uPSdwcmludGYgJXMnDQorZWxzZQ0KKyAgaWYgdGVzdCAiWGAo L3Vzci91Y2IvZWNobyAtbiAtbiAkYXNfZWNobykgMj4vZGV2L251bGxgIiA9ICJYLW4NCiRhc19l Y2hvIjsgdGhlbg0KKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgL3Vzci91Y2IvZWNobyAtbiAiJDEk YXNfbmwiJw0KKyAgICBhc19lY2hvX249Jy91c3IvdWNiL2VjaG8gLW4nDQorICBlbHNlDQorICAg IGFzX2VjaG9fYm9keT0nZXZhbCBleHByICJYJDEiIDogIlhcXCguKlxcKSInDQorICAgIGFzX2Vj aG9fbl9ib2R5PSdldmFsDQorICAgICAgYXJnPSQxOw0KKyAgICAgIGNhc2UgJGFyZyBpbiAjKA0K KyAgICAgICoiJGFzX25sIiopDQorCWV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkkYXNfbmwiOw0K Kwlhcmc9YGV4cHIgIlgkYXJnIiA6ICIuKiRhc19ubFxcKC4qXFwpImA7Ow0KKyAgICAgIGVzYWM7 DQorICAgICAgZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSIgfCB0ciAtZCAiJGFzX25sIg0KKyAg ICAnDQorICAgIGV4cG9ydCBhc19lY2hvX25fYm9keQ0KKyAgICBhc19lY2hvX249J3NoIC1jICRh c19lY2hvX25fYm9keSBhc19lY2hvJw0KKyAgZmkNCisgIGV4cG9ydCBhc19lY2hvX2JvZHkNCisg IGFzX2VjaG89J3NoIC1jICRhc19lY2hvX2JvZHkgYXNfZWNobycNCitmaQ0KKw0KKyMgVGhlIHVz ZXIgaXMgYWx3YXlzIHJpZ2h0Lg0KK2lmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0g c2V0OyB0aGVuDQorICBQQVRIX1NFUEFSQVRPUj06DQorICAoUEFUSD0nL2JpbjsvYmluJzsgRlBB VEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSAmJiB7DQorICAgIChQQVRIPScvYmlu Oi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIHx8DQorICAgICAg UEFUSF9TRVBBUkFUT1I9JzsnDQorICB9DQorZmkNCisNCisNCisjIElGUw0KKyMgV2UgbmVlZCBz cGFjZSwgdGFiIGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5IHRoYXQgb3JkZXIuICBRdW90aW5n DQppcw0KKyMgdGhlcmUgdG8gcHJldmVudCBlZGl0b3JzIGZyb20gY29tcGxhaW5pbmcgYWJvdXQg c3BhY2UtdGFiLg0KKyMgKElmIF9BU19QQVRIX1dBTEsgd2VyZSBjYWxsZWQgd2l0aCBJRlMgdW5z ZXQsIGl0IHdvdWxkIGRpc2FibGUgd29yZA0KKyMgc3BsaXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRv IGVtcHR5IHZhbHVlLikNCitJRlM9IiAiIgkkYXNfbmwiDQorDQorIyBGaW5kIHdobyB3ZSBhcmUu ICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gZGlyZWN0b3J5DQpzZXBhcmF0b3Iu DQorY2FzZSAkMCBpbiAjKCgNCisgICpbXFwvXSogKSBhc19teXNlbGY9JDAgOzsNCisgICopIGFz X3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRI DQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rp cj0uDQorICAgIHRlc3QgLXIgIiRhc19kaXIvJDAiICYmIGFzX215c2VsZj0kYXNfZGlyLyQwICYm IGJyZWFrDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KKyAgICAgOzsNCitlc2FjDQor IyBXZSBkaWQgbm90IGZpbmQgb3Vyc2VsdmVzLCBtb3N0IHByb2JhYmx5IHdlIHdlcmUgcnVuIGFz IGBzaCBDT01NQU5EJw0KKyMgaW4gd2hpY2ggY2FzZSB3ZSBhcmUgbm90IHRvIGJlIGZvdW5kIGlu IHRoZSBwYXRoLg0KK2lmIHRlc3QgIngkYXNfbXlzZWxmIiA9IHg7IHRoZW4NCisgIGFzX215c2Vs Zj0kMA0KK2ZpDQoraWYgdGVzdCAhIC1mICIkYXNfbXlzZWxmIjsgdGhlbg0KKyAgJGFzX2VjaG8g IiRhc19teXNlbGY6IGVycm9yOiBjYW5ub3QgZmluZCBteXNlbGY7IHJlcnVuIHdpdGggYW4NCmFi c29sdXRlIGZpbGUgbmFtZSIgPiYyDQorICBleGl0IDENCitmaQ0KKw0KKyMgVW5zZXQgdmFyaWFi bGVzIHRoYXQgd2UgZG8gbm90IG5lZWQgYW5kIHdoaWNoIGNhdXNlIGJ1Z3MgKGUuZy4gaW4NCisj IHByZS0zLjAgVVdJTiBrc2gpLiAgQnV0IGRvIG5vdCBjYXVzZSBidWdzIGluIGJhc2ggMi4wMTsg dGhlICJ8fCBleGl0DQoxIg0KKyMgc3VwcHJlc3NlcyBhbnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIg bWVzc2FnZSB0aGVyZS4gICcoKCcgY291bGQNCisjIHRyaWdnZXIgYSBidWcgaW4gcGRrc2ggNS4y LjE0Lg0KK2ZvciBhc192YXIgaW4gQkFTSF9FTlYgRU5WIE1BSUwgTUFJTFBBVEgNCitkbyBldmFs IHRlc3QgeFwkeyRhc192YXIrc2V0fSA9IHhzZXQgXA0KKyAgJiYgKCAodW5zZXQgJGFzX3Zhcikg fHwgZXhpdCAxKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgJGFzX3ZhciB8fA0KOg0KK2RvbmUN CitQUzE9JyQgJw0KK1BTMj0nPiAnDQorUFM0PScrICcNCisNCisjIE5MUyBudWlzYW5jZXMuDQor TENfQUxMPUMNCitleHBvcnQgTENfQUxMDQorTEFOR1VBR0U9Qw0KK2V4cG9ydCBMQU5HVUFHRQ0K Kw0KKyMgQ0RQQVRILg0KKyh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBD RFBBVEgNCisNCisNCisjIGFzX2ZuX2Vycm9yIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQ0KKyMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBPdXRwdXQgImBiYXNlbmFtZSAkMGA6 IGVycm9yOiBFUlJPUiIgdG8gc3RkZXJyLiBJZiBMSU5FTk8gYW5kIExPR19GRA0KYXJlDQorIyBw cm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElO RU5PLiBUaGVuDQpleGl0IHRoZQ0KKyMgc2NyaXB0IHdpdGggc3RhdHVzICQ/LCB1c2luZyAxIGlm IHRoYXQgd2FzIDAuDQorYXNfZm5fZXJyb3IgKCkNCit7DQorICBhc19zdGF0dXM9JD87IHRlc3Qg JGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQ0KKyAgaWYgdGVzdCAiJDMiOyB0aGVuDQor ICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDIifQ0KYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVu b19zdGFjaz0kYXNfbGluZW5vX3N0YWNrDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGVycm9yOiAkMSIgPiYkMw0KKyAgZmkNCisgICRhc19lY2hvICIkYXNfbWU6 IGVycm9yOiAkMSIgPiYyDQorICBhc19mbl9leGl0ICRhc19zdGF0dXMNCit9ICMgYXNfZm5fZXJy b3INCisNCisNCisjIGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTDQorIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KKyMgU2V0ICQ/IHRvIFNUQVRVUywgd2l0aG91dCBmb3JraW5nLg0KK2FzX2ZuX3Nl dF9zdGF0dXMgKCkNCit7DQorICByZXR1cm4gJDENCit9ICMgYXNfZm5fc2V0X3N0YXR1cw0KKw0K KyMgYXNfZm5fZXhpdCBTVEFUVVMNCisjIC0tLS0tLS0tLS0tLS0tLS0tDQorIyBFeGl0IHRoZSBz aGVsbCB3aXRoIFNUQVRVUywgZXZlbiBpbiBhICJ0cmFwIDAiIG9yICJzZXQgLWUiIGNvbnRleHQu DQorYXNfZm5fZXhpdCAoKQ0KK3sNCisgIHNldCArZQ0KKyAgYXNfZm5fc2V0X3N0YXR1cyAkMQ0K KyAgZXhpdCAkMQ0KK30gIyBhc19mbl9leGl0DQorDQorIyBhc19mbl91bnNldCBWQVINCisjIC0t LS0tLS0tLS0tLS0tLQ0KKyMgUG9ydGFibHkgdW5zZXQgVkFSLg0KK2FzX2ZuX3Vuc2V0ICgpDQor ew0KKyAgeyBldmFsICQxPTsgdW5zZXQgJDE7fQ0KK30NCithc191bnNldD1hc19mbl91bnNldA0K KyMgYXNfZm5fYXBwZW5kIFZBUiBWQUxVRQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMg QXBwZW5kIHRoZSB0ZXh0IGluIFZBTFVFIHRvIHRoZSBlbmQgb2YgdGhlIGRlZmluaXRpb24gY29u dGFpbmVkIGluDQpWQVIuIFRha2UNCisjIGFkdmFudGFnZSBvZiBhbnkgc2hlbGwgb3B0aW1pemF0 aW9ucyB0aGF0IGFsbG93IGFtb3J0aXplZCBsaW5lYXINCmdyb3d0aCBvdmVyDQorIyByZXBlYXRl ZCBhcHBlbmRzLCBpbnN0ZWFkIG9mIHRoZSB0eXBpY2FsIHF1YWRyYXRpYyBncm93dGggcHJlc2Vu dCBpbg0KbmFpdmUNCisjIGltcGxlbWVudGF0aW9ucy4NCitpZiAoZXZhbCAiYXNfdmFyPTE7IGFz X3Zhcis9MjsgdGVzdCB4XCRhc192YXIgPSB4MTIiKSAyPi9kZXYvbnVsbDsNCnRoZW4gOg0KKyAg ZXZhbCAnYXNfZm5fYXBwZW5kICgpDQorICB7DQorICAgIGV2YWwgJDErPVwkMg0KKyAgfScNCitl bHNlDQorICBhc19mbl9hcHBlbmQgKCkNCisgIHsNCisgICAgZXZhbCAkMT1cJCQxXCQyDQorICB9 DQorZmkgIyBhc19mbl9hcHBlbmQNCisNCisjIGFzX2ZuX2FyaXRoIEFSRy4uLg0KKyMgLS0tLS0t LS0tLS0tLS0tLS0tDQorIyBQZXJmb3JtIGFyaXRobWV0aWMgZXZhbHVhdGlvbiBvbiB0aGUgQVJH cywgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4NCnRoZQ0KKyMgZ2xvYmFsICRhc192YWwuIFRha2Ug YWR2YW50YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhlDQphcmd1bWVudHMN CisjIG11c3QgYmUgcG9ydGFibGUgYWNyb3NzICQoKCkpIGFuZCBleHByLg0KK2lmIChldmFsICJ0 ZXN0IFwkKCggMSArIDEgKSkgPSAyIikgMj4vZGV2L251bGw7IHRoZW4gOg0KKyAgZXZhbCAnYXNf Zm5fYXJpdGggKCkNCisgIHsNCisgICAgYXNfdmFsPSQoKCAkKiApKQ0KKyAgfScNCitlbHNlDQor ICBhc19mbl9hcml0aCAoKQ0KKyAgew0KKyAgICBhc192YWw9YGV4cHIgIiRAIiB8fCB0ZXN0ICQ/ IC1lcSAxYA0KKyAgfQ0KK2ZpICMgYXNfZm5fYXJpdGgNCisNCisNCitpZiBleHByIGEgOiAnXChh XCknID4vZGV2L251bGwgMj4mMSAmJg0KKyAgIHRlc3QgIlhgZXhwciAwMDAwMSA6ICcuKlwoLi4u XCknYCIgPSBYMDAxOyB0aGVuDQorICBhc19leHByPWV4cHINCitlbHNlDQorICBhc19leHByPWZh bHNlDQorZmkNCisNCitpZiAoYmFzZW5hbWUgLS0gLykgPi9kZXYvbnVsbCAyPiYxICYmIHRlc3Qg IlhgYmFzZW5hbWUgLS0gLyAyPiYxYCIgPQ0KIlgvIjsgdGhlbg0KKyAgYXNfYmFzZW5hbWU9YmFz ZW5hbWUNCitlbHNlDQorICBhc19iYXNlbmFtZT1mYWxzZQ0KK2ZpDQorDQoraWYgKGFzX2Rpcj1g ZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJYJGFzX2RpciIgPSBYLykgPi9kZXYvbnVsbCAyPiYxOw0K dGhlbg0KKyAgYXNfZGlybmFtZT1kaXJuYW1lDQorZWxzZQ0KKyAgYXNfZGlybmFtZT1mYWxzZQ0K K2ZpDQorDQorYXNfbWU9YCRhc19iYXNlbmFtZSAtLSAiJDAiIHx8DQorJGFzX2V4cHIgWC8iJDAi IDogJy4qL1woW14vXVteL10qXCkvKiQnIFx8IFwNCisJIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBc DQorCSBYIiQwIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYLyIk MCIgfA0KKyAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClcLyokL3sNCisJICAgIHMvL1wxLw0K KwkgICAgcQ0KKwkgIH0NCisJICAvXlhcL1woXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJICAg IHENCisJICB9DQorCSAgL15YXC9cKFwvXCkuKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJ ICB9DQorCSAgcy8uKi8uLzsgcSdgDQorDQorIyBBdm9pZCBkZXBlbmRpbmcgdXBvbiBDaGFyYWN0 ZXIgUmFuZ2VzLg0KK2FzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Jw0K K2FzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJw0KK2FzX2NyX0xldHRl cnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUw0KK2FzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4 OScNCithc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMNCisNCitFQ0hPX0M9 IEVDSE9fTj0gRUNIT19UPQ0KK2Nhc2UgYGVjaG8gLW4geGAgaW4gIygoKCgoDQorLW4qKQ0KKyAg Y2FzZSBgZWNobyAneHlcYydgIGluDQorICAqYyopIEVDSE9fVD0nCSc7OwkjIEVDSE9fVCBpcyBz aW5nbGUgdGFiIGNoYXJhY3Rlci4NCisgIHh5KSAgRUNIT19DPSdcYyc7Ow0KKyAgKikgICBlY2hv IGBlY2hvIGtzaDg4IGJ1ZyBvbiBBSVggNi4xYCA+IC9kZXYvbnVsbA0KKyAgICAgICBFQ0hPX1Q9 JwknOzsNCisgIGVzYWM7Ow0KKyopDQorICBFQ0hPX049Jy1uJzs7DQorZXNhYw0KKw0KK3JtIC1m IGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlDQoraWYgdGVzdCAtZCBjb25mJCQuZGlyOyB0 aGVuDQorICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5maWxlDQorZWxzZQ0KKyAgcm0gLWYgY29u ZiQkLmRpcg0KKyAgbWtkaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbA0KK2ZpDQoraWYgKGVjaG8g PmNvbmYkJC5maWxlKSAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgaWYgbG4gLXMgY29uZiQkLmZpbGUg Y29uZiQkIDI+L2Rldi9udWxsOyB0aGVuDQorICAgIGFzX2xuX3M9J2xuIC1zJw0KKyAgICAjIC4u LiBidXQgdGhlcmUgYXJlIHR3byBnb3RjaGFzOg0KKyAgICAjIDEpIE9uIE1TWVMsIGJvdGggYGxu IC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWlsLg0KKyAgICAjIDIpIERKR1BQIDwg Mi4wNCBoYXMgbm8gc3ltbGlua3M7IGBsbiAtcycgY3JlYXRlcyBhIHdyYXBwZXINCmV4ZWN1dGFi bGUuDQorICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcCcu DQorICAgIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJC5kaXIgMj4vZGV2L251bGwgJiYgdGVzdCAh IC1mIGNvbmYkJC5leGUNCnx8DQorICAgICAgYXNfbG5fcz0nY3AgLXAnDQorICBlbGlmIGxuIGNv bmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgICBhc19sbl9zPWxuDQorICBl bHNlDQorICAgIGFzX2xuX3M9J2NwIC1wJw0KKyAgZmkNCitlbHNlDQorICBhc19sbl9zPSdjcCAt cCcNCitmaQ0KK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUg Y29uZiQkLmZpbGUNCitybWRpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsDQorDQorDQorIyBhc19m bl9ta2Rpcl9wDQorIyAtLS0tLS0tLS0tLS0tDQorIyBDcmVhdGUgIiRhc19kaXIiIGFzIGEgZGly ZWN0b3J5LCBpbmNsdWRpbmcgcGFyZW50cyBpZiBuZWNlc3NhcnkuDQorYXNfZm5fbWtkaXJfcCAo KQ0KK3sNCisNCisgIGNhc2UgJGFzX2RpciBpbiAjKA0KKyAgLSopIGFzX2Rpcj0uLyRhc19kaXI7 Ow0KKyAgZXNhYw0KKyAgdGVzdCAtZCAiJGFzX2RpciIgfHwgZXZhbCAkYXNfbWtkaXJfcCB8fCB7 DQorICAgIGFzX2RpcnM9DQorICAgIHdoaWxlIDo7IGRvDQorICAgICAgY2FzZSAkYXNfZGlyIGlu ICMoDQorICAgICAgKlwnKikgYXNfcWRpcj1gJGFzX2VjaG8gIiRhc19kaXIiIHwgc2VkICJzLycv J1xcXFxcXFxcJycvZyJgOzsNCiMnKA0KKyAgICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7DQorICAg ICAgZXNhYw0KKyAgICAgIGFzX2RpcnM9IickYXNfcWRpcicgJGFzX2RpcnMiDQorICAgICAgYXNf ZGlyPWAkYXNfZGlybmFtZSAtLSAiJGFzX2RpciIgfHwNCiskYXNfZXhwciBYIiRhc19kaXIiIDog J1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcDQorCSBYIiRhc19kaXIiIDogJ1hcKC8v XClbXi9dJyBcfCBcDQorCSBYIiRhc19kaXIiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBYIiRhc19k aXIiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fA0KKyRhc19lY2hvIFgiJGFzX2RpciIg fA0KKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvew0KKwkgICAgcy8v XDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sNCisJICAgIHMvL1wx Lw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKSQvew0KKwkgICAgcy8vXDEvDQorCSAg ICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cKS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkg IH0NCisJICBzLy4qLy4vOyBxJ2ANCisgICAgICB0ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhaw0K KyAgICBkb25lDQorICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGly cyINCisgIH0gfHwgdGVzdCAtZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3IgImNhbm5vdCBjcmVh dGUgZGlyZWN0b3J5DQokYXNfZGlyIg0KKw0KKw0KK30gIyBhc19mbl9ta2Rpcl9wDQoraWYgbWtk aXIgLXAgLiAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgYXNfbWtkaXJfcD0nbWtkaXIgLXAgIiRhc19k aXIiJw0KK2Vsc2UNCisgIHRlc3QgLWQgLi8tcCAmJiBybWRpciAuLy1wDQorICBhc19ta2Rpcl9w PWZhbHNlDQorZmkNCisNCitpZiB0ZXN0IC14IC8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICBh c190ZXN0X3g9J3Rlc3QgLXgnDQorZWxzZQ0KKyAgaWYgbHMgLWRMIC8gPi9kZXYvbnVsbCAyPiYx OyB0aGVuDQorICAgIGFzX2xzX0xfb3B0aW9uPUwNCisgIGVsc2UNCisgICAgYXNfbHNfTF9vcHRp b249DQorICBmaQ0KKyAgYXNfdGVzdF94PScNCisgICAgZXZhbCBzaCAtYyAnXCcnDQorICAgICAg aWYgdGVzdCAtZCAiJDEiOyB0aGVuDQorCXRlc3QgLWQgIiQxLy4iOw0KKyAgICAgIGVsc2UNCisJ Y2FzZSAkMSBpbiAjKA0KKwktKilzZXQgIi4vJDEiOzsNCisJZXNhYzsNCisJY2FzZSBgbHMgLWxk JyRhc19sc19MX29wdGlvbicgIiQxIiAyPi9kZXYvbnVsbGAgaW4gIygoDQorCT8/P1tzeF0qKTo7 OyopZmFsc2U7O2VzYWM7ZmkNCisgICAgJ1wnJyBzaA0KKyAgJw0KK2ZpDQorYXNfZXhlY3V0YWJs ZV9wPSRhc190ZXN0X3gNCisNCisjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRv IGEgdmFsaWQgQ1BQIG5hbWUuDQorYXNfdHJfY3BwPSJldmFsIHNlZA0KJ3klKiRhc19jcl9sZXR0 ZXJzJVAkYXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciDQorDQorIyBTZWQg ZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuDQor YXNfdHJfc2g9ImV2YWwgc2VkICd5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyINCisN CisNCitleGVjIDY+JjENCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAj Iw0KKyMjIE1haW4gYm9keSBvZiAkQ09ORklHX1NUQVRVUyBzY3JpcHQuICMjDQorIyMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCitfQVNFT0YNCit0ZXN0ICRhc193cml0 ZV9mYWlsID0gMCAmJiBjaG1vZCAreCAkQ09ORklHX1NUQVRVUyB8fCBhY193cml0ZV9mYWlsPTEN CisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQor IyBTYXZlIHRoZSBsb2cgbWVzc2FnZSwgdG8ga2VlcCAkMCBhbmQgc28gb24gbWVhbmluZ2Z1bCwg YW5kIHRvDQorIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRj LiBpbnN0ZWFkIG9mIHRoZWlyDQorIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4NCith Y19sb2c9Ig0KK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgbmV3bGliICRhc19tZSAxLjE5LjAs IHdoaWNoIHdhcw0KK2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NC4gIEludm9jYXRpb24g Y29tbWFuZCBsaW5lIHdhcw0KKw0KKyAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUw0K KyAgQ09ORklHX0hFQURFUlMgID0gJENPTkZJR19IRUFERVJTDQorICBDT05GSUdfTElOS1MgICAg PSAkQ09ORklHX0xJTktTDQorICBDT05GSUdfQ09NTUFORFMgPSAkQ09ORklHX0NPTU1BTkRTDQor ICAkICQwICRADQorDQorb24gYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBz ZWQgMXFgDQorIg0KKw0KK19BQ0VPRg0KKw0KK2Nhc2UgJGFjX2NvbmZpZ19maWxlcyBpbiAqIg0K KyIqKSBzZXQgeCAkYWNfY29uZmlnX2ZpbGVzOyBzaGlmdDsgYWNfY29uZmlnX2ZpbGVzPSQqOzsN Citlc2FjDQorDQorDQorDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3Jp dGVfZmFpbD0xDQorIyBGaWxlcyB0aGF0IGNvbmZpZy5zdGF0dXMgd2FzIG1hZGUgZm9yLg0KK2Nv bmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyINCitjb25maWdfY29tbWFuZHM9IiRhY19jb25m aWdfY29tbWFuZHMiDQorDQorX0FDRU9GDQorDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FD RU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KK2FjX2NzX3VzYWdlPSJcDQorXGAkYXNfbWUnIGluc3Rh bnRpYXRlcyBmaWxlcyBhbmQgb3RoZXIgY29uZmlndXJhdGlvbiBhY3Rpb25zDQorZnJvbSB0ZW1w bGF0ZXMgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uICBVbmxlc3MgdGhl DQpmaWxlcw0KK2FuZCBhY3Rpb25zIGFyZSBzcGVjaWZpZWQgYXMgVEFHcywgYWxsIGFyZSBpbnN0 YW50aWF0ZWQgYnkgZGVmYXVsdC4NCisNCitVc2FnZTogJDAgW09QVElPTl0uLi4gW1RBR10uLi4N CisNCisgIC1oLCAtLWhlbHAgICAgICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQNCisgIC1W LCAtLXZlcnNpb24gICAgcHJpbnQgdmVyc2lvbiBudW1iZXIgYW5kIGNvbmZpZ3VyYXRpb24gc2V0 dGluZ3MsDQp0aGVuIGV4aXQNCisgIC1xLCAtLXF1aWV0LCAtLXNpbGVudA0KKyAgICAgICAgICAg ICAgICAgICBkbyBub3QgcHJpbnQgcHJvZ3Jlc3MgbWVzc2FnZXMNCisgIC1kLCAtLWRlYnVnICAg ICAgZG9uJ3QgcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcw0KKyAgICAgIC0tcmVjaGVjayAgICB1cGRh dGUgJGFzX21lIGJ5IHJlY29uZmlndXJpbmcgaW4gdGhlIHNhbWUNCmNvbmRpdGlvbnMNCisgICAg ICAtLWZpbGU9RklMRVs6VEVNUExBVEVdDQorICAgICAgICAgICAgICAgICAgIGluc3RhbnRpYXRl IHRoZSBjb25maWd1cmF0aW9uIGZpbGUgRklMRQ0KKw0KK0NvbmZpZ3VyYXRpb24gZmlsZXM6DQor JGNvbmZpZ19maWxlcw0KKw0KK0NvbmZpZ3VyYXRpb24gY29tbWFuZHM6DQorJGNvbmZpZ19jb21t YW5kcw0KKw0KK1JlcG9ydCBidWdzIHRvIHRoZSBwYWNrYWdlIHByb3ZpZGVyLiINCisNCitfQUNF T0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCith Y19jc192ZXJzaW9uPSJcXA0KK25ld2xpYiBjb25maWcuc3RhdHVzIDEuMTkuMA0KK2NvbmZpZ3Vy ZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NCwNCisgIHdpdGggb3B0aW9u cyBcXCJgJGFzX2VjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsNCnMvW1xc IiJcYFwkXS9cXFxcJi9nJ2BcXCINCisNCitDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuDQorVGhpcyBjb25maWcuc3RhdHVzIHNjcmlwdCBpcyBmcmVlIHNv ZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZQ0KRm91bmRhdGlvbg0KK2dpdmVzIHVubGltaXRlZCBw ZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iDQorDQorYWNfcHdk PSckYWNfcHdkJw0KK3NyY2Rpcj0nJHNyY2RpcicNCitJTlNUQUxMPSckSU5TVEFMTCcNCitBV0s9 JyRBV0snDQordGVzdCAtbiAiXCRBV0siIHx8IEFXSz1hd2sNCitfQUNFT0YNCisNCitjYXQgPj4k Q09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorIyBUaGUgZGVmYXVs dCBsaXN0cyBhcHBseSBpZiB0aGUgdXNlciBkb2VzIG5vdCBzcGVjaWZ5IGFueSBmaWxlLg0KK2Fj X25lZWRfZGVmYXVsdHM9Og0KK3doaWxlIHRlc3QgJCMgIT0gMA0KK2RvDQorICBjYXNlICQxIGlu DQorICAtLSo9KikNCisgICAgYWNfb3B0aW9uPWBleHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2AN CisgICAgYWNfb3B0YXJnPWBleHByICJYJDEiIDogJ1hbXj1dKj1cKC4qXCknYA0KKyAgICBhY19z aGlmdD06DQorICAgIDs7DQorICAqKQ0KKyAgICBhY19vcHRpb249JDENCisgICAgYWNfb3B0YXJn PSQyDQorICAgIGFjX3NoaWZ0PXNoaWZ0DQorICAgIDs7DQorICBlc2FjDQorDQorICBjYXNlICRh Y19vcHRpb24gaW4NCisgICMgSGFuZGxpbmcgb2YgdGhlIG9wdGlvbnMuDQorICAtcmVjaGVjayB8 IC0tcmVjaGVjayB8IC0tcmVjaGVjIHwgLS1yZWNoZSB8IC0tcmVjaCB8IC0tcmVjIHwgLS1yZSB8 DQotLXIpDQorICAgIGFjX2NzX3JlY2hlY2s9OiA7Ow0KKyAgLS12ZXJzaW9uIHwgLS12ZXJzaW8g fCAtLXZlcnNpIHwgLS12ZXJzIHwgLS12ZXIgfCAtLXZlIHwgLS12IHwgLVYgKQ0KKyAgICAkYXNf ZWNobyAiJGFjX2NzX3ZlcnNpb24iOyBleGl0IDs7DQorICAtLWRlYnVnIHwgLS1kZWJ1IHwgLS1k ZWIgfCAtLWRlIHwgLS1kIHwgLWQgKQ0KKyAgICBkZWJ1Zz06IDs7DQorICAtLWZpbGUgfCAtLWZp bCB8IC0tZmkgfCAtLWYgKQ0KKyAgICAkYWNfc2hpZnQNCisgICAgY2FzZSAkYWNfb3B0YXJnIGlu DQorICAgICpcJyopIGFjX29wdGFyZz1gJGFzX2VjaG8gIiRhY19vcHRhcmciIHwgc2VkICJzLycv J1xcXFxcXFxcJycvZyJgDQo7Ow0KKyAgICBlc2FjDQorICAgIGFzX2ZuX2FwcGVuZCBDT05GSUdf RklMRVMgIiAnJGFjX29wdGFyZyciDQorICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7Ow0KKyAg LS1oZSB8IC0taCB8ICAtLWhlbHAgfCAtLWhlbCB8IC1oICkNCisgICAgJGFzX2VjaG8gIiRhY19j c191c2FnZSI7IGV4aXQgOzsNCisgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0t cXVpIHwgLS1xdSB8IC0tcSBcDQorICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAt LXNpbGUgfCAtLXNpbCB8IC0tc2kgfCAtLXMpDQorICAgIGFjX2NzX3NpbGVudD06IDs7DQorDQor ICAjIFRoaXMgaXMgYW4gZXJyb3IuDQorICAtKikgYXNfZm5fZXJyb3IgInVucmVjb2duaXplZCBv cHRpb246IFxgJDEnDQorVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDs7 DQorDQorICAqKSBhc19mbl9hcHBlbmQgYWNfY29uZmlnX3RhcmdldHMgIiAkMSINCisgICAgIGFj X25lZWRfZGVmYXVsdHM9ZmFsc2UgOzsNCisNCisgIGVzYWMNCisgIHNoaWZ0DQorZG9uZQ0KKw0K K2FjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPQ0KKw0KK2lmICRhY19jc19zaWxlbnQ7IHRoZW4NCisg IGV4ZWMgNj4vZGV2L251bGwNCisgIGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPSIkYWNfY29uZmln dXJlX2V4dHJhX2FyZ3MgLS1zaWxlbnQiDQorZmkNCisNCitfQUNFT0YNCitjYXQgPj4kQ09ORklH X1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCitpZiBcJGFjX2NzX3JlY2hlY2s7 IHRoZW4NCisgIHNldCBYICckU0hFTEwnICckMCcgJGFjX2NvbmZpZ3VyZV9hcmdzIFwkYWNfY29u ZmlndXJlX2V4dHJhX2FyZ3MgLS0NCm5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbg0KKyAgc2hpZnQN CisgIFwkYXNfZWNobyAicnVubmluZyBDT05GSUdfU0hFTEw9JFNIRUxMIFwkKiIgPiY2DQorICBD T05GSUdfU0hFTEw9JyRTSEVMTCcNCisgIGV4cG9ydCBDT05GSUdfU0hFTEwNCisgIGV4ZWMgIlwk QCINCitmaQ0KKw0KK19BQ0VPRg0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBh Y193cml0ZV9mYWlsPTENCitleGVjIDU+PmNvbmZpZy5sb2cNCit7DQorICBlY2hvDQorICBzZWQg J2g7cy8uLy0vZztzL14uLi4vIyMgLztzLy4uLiQvICMjLztwO3g7cDt4JyA8PF9BU0JPWA0KKyMj IFJ1bm5pbmcgJGFzX21lLiAjIw0KK19BU0JPWA0KKyAgJGFzX2VjaG8gIiRhY19sb2ciDQorfSA+ JjUNCisNCitfQUNFT0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0 ZV9mYWlsPTENCisjDQorIyBJTklULUNPTU1BTkRTDQorIw0KK0FNREVQX1RSVUU9IiRBTURFUF9U UlVFIiBhY19hdXhfZGlyPSIkYWNfYXV4X2RpciINCisNCitfQUNFT0YNCisNCitjYXQgPj4kQ09O RklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorDQorIyBIYW5kbGluZyBv ZiBhcmd1bWVudHMuDQorZm9yIGFjX2NvbmZpZ190YXJnZXQgaW4gJGFjX2NvbmZpZ190YXJnZXRz DQorZG8NCisgIGNhc2UgJGFjX2NvbmZpZ190YXJnZXQgaW4NCisgICAgImRlcGZpbGVzIikgQ09O RklHX0NPTU1BTkRTPSIkQ09ORklHX0NPTU1BTkRTIGRlcGZpbGVzIiA7Ow0KKyAgICAiTWFrZWZp bGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7DQorDQorICAqKSBh c19mbl9lcnJvciAiaW52YWxpZCBhcmd1bWVudDogXGAkYWNfY29uZmlnX3RhcmdldCciICIkTElO RU5PIg0KNTs7DQorICBlc2FjDQorZG9uZQ0KKw0KKw0KKyMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1 c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVjaWZ5IHRoZSBpdGVtcyB0bw0KaW5zdGFudGlhdGUsDQor IyB0aGVuIHRoZSBlbnZ2YXIgaW50ZXJmYWNlIGlzIHVzZWQuICBTZXQgb25seSB0aG9zZSB0aGF0 IGFyZSBub3QuDQorIyBXZSB1c2UgdGhlIGxvbmcgZm9ybSBmb3IgdGhlIGRlZmF1bHQgYXNzaWdu bWVudCBiZWNhdXNlIG9mIGFuDQpleHRyZW1lbHkNCisjIGJpemFycmUgYnVnIG9uIFN1bk9TIDQu MS4zLg0KK2lmICRhY19uZWVkX2RlZmF1bHRzOyB0aGVuDQorICB0ZXN0ICIke0NPTkZJR19GSUxF UytzZXR9IiA9IHNldCB8fCBDT05GSUdfRklMRVM9JGNvbmZpZ19maWxlcw0KKyAgdGVzdCAiJHtD T05GSUdfQ09NTUFORFMrc2V0fSIgPSBzZXQgfHwNCkNPTkZJR19DT01NQU5EUz0kY29uZmlnX2Nv bW1hbmRzDQorZmkNCisNCisjIEhhdmUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBjb252ZW5p ZW5jZS4gIE1ha2UgaXQgaW4gdGhlIGJ1aWxkDQp0cmVlDQorIyBzaW1wbHkgYmVjYXVzZSB0aGVy ZSBpcyBubyByZWFzb24gYWdhaW5zdCBoYXZpbmcgaXQgaGVyZSwgYW5kIGluDQphZGRpdGlvbiwN CisjIGNyZWF0aW5nIGFuZCBtb3ZpbmcgZmlsZXMgZnJvbSAvdG1wIGNhbiBzb21ldGltZXMgY2F1 c2UgcHJvYmxlbXMuDQorIyBIb29rIGZvciBpdHMgcmVtb3ZhbCB1bmxlc3MgZGVidWdnaW5nLg0K KyMgTm90ZSB0aGF0IHRoZXJlIGlzIGEgc21hbGwgd2luZG93IGluIHdoaWNoIHRoZSBkaXJlY3Rv cnkgd2lsbCBub3QgYmUNCmNsZWFuZWQ6DQorIyBhZnRlciBpdHMgY3JlYXRpb24gYnV0IGJlZm9y ZSBpdHMgbmFtZSBoYXMgYmVlbiBhc3NpZ25lZCB0byBgJHRtcCcuDQorJGRlYnVnIHx8DQorew0K KyAgdG1wPQ0KKyAgdHJhcCAnZXhpdF9zdGF0dXM9JD8NCisgIHsgdGVzdCAteiAiJHRtcCIgfHwg dGVzdCAhIC1kICIkdG1wIiB8fCBybSAtZnIgIiR0bXAiOyB9ICYmIGV4aXQNCiRleGl0X3N0YXR1 cw0KKycgMA0KKyAgdHJhcCAnYXNfZm5fZXhpdCAxJyAxIDIgMTMgMTUNCit9DQorIyBDcmVhdGUg YSAoc2VjdXJlKSB0bXAgZGlyZWN0b3J5IGZvciB0bXAgZmlsZXMuDQorDQorew0KKyAgdG1wPWAo dW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAiLi9jb25mWFhYWFhYIikgMj4vZGV2L251bGxgICYmDQor ICB0ZXN0IC1uICIkdG1wIiAmJiB0ZXN0IC1kICIkdG1wIg0KK30gIHx8DQorew0KKyAgdG1wPS4v Y29uZiQkLSRSQU5ET00NCisgICh1bWFzayAwNzcgJiYgbWtkaXIgIiR0bXAiKQ0KK30gfHwgYXNf Zm5fZXJyb3IgImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIC4iICIkTElO RU5PIg0KNQ0KKw0KKyMgU2V0IHVwIHRoZSBzY3JpcHRzIGZvciBDT05GSUdfRklMRVMgc2VjdGlv bi4NCisjIE5vIG5lZWQgdG8gZ2VuZXJhdGUgdGhlbSBpZiB0aGVyZSBhcmUgbm8gQ09ORklHX0ZJ TEVTLg0KKyMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3aXRoIGAuL2NvbmZpZy5zdGF0dXMg Y29uZmlnLmgnLg0KK2lmIHRlc3QgLW4gIiRDT05GSUdfRklMRVMiOyB0aGVuDQorDQorDQorYWNf Y3I9YGVjaG8gWCB8IHRyIFggJ1wwMTUnYA0KKyMgT24gY3lnd2luLCBiYXNoIGNhbiBlYXQgXHIg aW5zaWRlIGBgIGlmIHRoZSB1c2VyIHJlcXVlc3RlZCBpZ25jci4NCisjIEJ1dCB3ZSBrbm93IG9m IG5vIG90aGVyIHNoZWxsIHdoZXJlIGFjX2NyIHdvdWxkIGJlIGVtcHR5IGF0IHRoaXMNCisjIHBv aW50LCBzbyB3ZSBjYW4gdXNlIGEgYmFzaGlzbSBhcyBhIGZhbGxiYWNrLg0KK2lmIHRlc3QgIngk YWNfY3IiID0geDsgdGhlbg0KKyAgZXZhbCBhY19jcj1cJFwnXFxyXCcNCitmaQ0KK2FjX2NzX2F3 a19jcj1gJEFXSyAnQkVHSU4geyBwcmludCAiYVxyYiIgfScgPC9kZXYvbnVsbCAyPi9kZXYvbnVs bGANCitpZiB0ZXN0ICIkYWNfY3NfYXdrX2NyIiA9ICJhJHthY19jcn1iIjsgdGhlbg0KKyAgYWNf Y3NfYXdrX2NyPSdccicNCitlbHNlDQorICBhY19jc19hd2tfY3I9JGFjX2NyDQorZmkNCisNCitl Y2hvICdCRUdJTiB7JyA+IiR0bXAvc3ViczEuYXdrIiAmJg0KK19BQ0VPRg0KKw0KKw0KK3sNCisg IGVjaG8gImNhdCA+Y29uZiQkc3Vicy5hd2sgPDxfQUNFT0YiICYmDQorICBlY2hvICIkYWNfc3Vi c3RfdmFycyIgfCBzZWQgJ3MvLiovJiEkJiRhY19kZWxpbS8nICYmDQorICBlY2hvICJfQUNFT0Yi DQorfSA+Y29uZiQkc3Vicy5zaCB8fA0KKyAgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBtYWtlICRD T05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQ0KK2FjX2RlbGltX251bT1gZWNobyAiJGFjX3N1YnN0 X3ZhcnMiIHwgZ3JlcCAtYyAnJCdgDQorYWNfZGVsaW09JyUhXyEjICcNCitmb3IgYWNfbGFzdF90 cnkgaW4gZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgOjsgZG8NCisgIC4gLi9jb25mJCRz dWJzLnNoIHx8DQorICAgIGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRV UyIgIiRMSU5FTk8iIDUNCisNCisgIGFjX2RlbGltX249YHNlZCAtbiAicy8uKiRhY19kZWxpbVwk L1gvcCIgY29uZiQkc3Vicy5hd2sgfCBncmVwIC1jIFhgDQorICBpZiB0ZXN0ICRhY19kZWxpbV9u ID0gJGFjX2RlbGltX251bTsgdGhlbg0KKyAgICBicmVhaw0KKyAgZWxpZiAkYWNfbGFzdF90cnk7 IHRoZW4NCisgICAgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAi JExJTkVOTyIgNQ0KKyAgZWxzZQ0KKyAgICBhY19kZWxpbT0iJGFjX2RlbGltISRhY19kZWxpbSBf JGFjX2RlbGltISEgIg0KKyAgZmkNCitkb25lDQorcm0gLWYgY29uZiQkc3Vicy5zaA0KKw0KK2Nh dCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KK2NhdCA+PiJc JHRtcC9zdWJzMS5hd2siIDw8XFxfQUNBV0sgJiYNCitfQUNFT0YNCitzZWQgLW4gJw0KK2gNCitz L14vU1siLzsgcy8hLiovIl09Lw0KK3ANCitnDQorcy9eW14hXSohLy8NCis6cmVwbA0KK3QgcmVw bA0KK3MvJyIkYWNfZGVsaW0iJyQvLw0KK3QgZGVsaW0NCis6bmwNCitoDQorcy9cKC5cezE0OFx9 XCkuKi9cMS8NCit0IG1vcmUxDQorcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvXFxuIlxcLw0K K3ANCituDQorYiByZXBsDQorOm1vcmUxDQorcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvIlxc Lw0KK3ANCitnDQorcy8uXHsxNDhcfS8vDQordCBubA0KKzpkZWxpbQ0KK2gNCitzL1woLlx7MTQ4 XH1cKS4qL1wxLw0KK3QgbW9yZTINCitzL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC8iLw0KK3AN CitiDQorOm1vcmUyDQorcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvIlxcLw0KK3ANCitnDQor cy8uXHsxNDhcfS8vDQordCBkZWxpbQ0KKycgPGNvbmYkJHN1YnMuYXdrIHwgc2VkICcNCisvXlte IiJdL3sNCisgIE4NCisgIHMvXG4vLw0KK30NCisnID4+JENPTkZJR19TVEFUVVMgfHwgYWNfd3Jp dGVfZmFpbD0xDQorcm0gLWYgY29uZiQkc3Vicy5hd2sNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8 PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCitfQUNBV0sNCitjYXQgPj4iXCR0bXAvc3ViczEu YXdrIiA8PF9BQ0FXSyAmJg0KKyAgZm9yIChrZXkgaW4gUykgU19pc19zZXRba2V5XSA9IDENCisg IEZTID0gIgciDQorDQorfQ0KK3sNCisgIGxpbmUgPSAkIDANCisgIG5maWVsZHMgPSBzcGxpdChs aW5lLCBmaWVsZCwgIkAiKQ0KKyAgc3Vic3RlZCA9IDANCisgIGxlbiA9IGxlbmd0aChmaWVsZFsx XSkNCisgIGZvciAoaSA9IDI7IGkgPCBuZmllbGRzOyBpKyspIHsNCisgICAga2V5ID0gZmllbGRb aV0NCisgICAga2V5bGVuID0gbGVuZ3RoKGtleSkNCisgICAgaWYgKFNfaXNfc2V0W2tleV0pIHsN CisgICAgICB2YWx1ZSA9IFNba2V5XQ0KKyAgICAgIGxpbmUgPSBzdWJzdHIobGluZSwgMSwgbGVu KSAiIiB2YWx1ZSAiIiBzdWJzdHIobGluZSwgbGVuICsNCmtleWxlbiArIDMpDQorICAgICAgbGVu ICs9IGxlbmd0aCh2YWx1ZSkgKyBsZW5ndGgoZmllbGRbKytpXSkNCisgICAgICBzdWJzdGVkID0g MQ0KKyAgICB9IGVsc2UNCisgICAgICBsZW4gKz0gMSArIGtleWxlbg0KKyAgfQ0KKw0KKyAgcHJp bnQgbGluZQ0KK30NCisNCitfQUNBV0sNCitfQUNFT0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8 PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQoraWYgc2VkICJzLyRhY19jci8vIiA8IC9kZXYv bnVsbCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICBzZWQgInMvJGFjX2NyXCQvLzsgcy8kYWNf Y3IvJGFjX2NzX2F3a19jci9nIg0KK2Vsc2UNCisgIGNhdA0KK2ZpIDwgIiR0bXAvc3ViczEuYXdr IiA+ICIkdG1wL3N1YnMuYXdrIiBcDQorICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IHNldHVw IGNvbmZpZyBmaWxlcyBtYWNoaW5lcnkiICIkTElORU5PIiA1DQorX0FDRU9GDQorDQorIyBWUEFU SCBtYXkgY2F1c2UgdHJvdWJsZSB3aXRoIHNvbWUgbWFrZXMsIHNvIHdlIHJlbW92ZSAkKHNyY2Rp ciksDQorIyAke3NyY2Rpcn0gYW5kIEBzcmNkaXJAIGZyb20gVlBBVEggaWYgc3JjZGlyIGlzICIu Iiwgc3RyaXAgbGVhZGluZw0KYW5kDQorIyB0cmFpbGluZyBjb2xvbnMgYW5kIHRoZW4gcmVtb3Zl IHRoZSB3aG9sZSBsaW5lIGlmIFZQQVRIIGJlY29tZXMNCmVtcHR5DQorIyAoYWN0dWFsbHkgd2Ug bGVhdmUgYW4gZW1wdHkgbGluZSB0byBwcmVzZXJ2ZSBsaW5lIG51bWJlcnMpLg0KK2lmIHRlc3Qg Ingkc3JjZGlyIiA9IHguOyB0aGVuDQorICBhY192cHN1Yj0nL15bCSBdKlZQQVRIWwkgXSo9L3sN CitzLzoqXCQoc3JjZGlyKToqLzovDQorcy86Klwke3NyY2Rpcn06Ki86Lw0KK3MvOipAc3JjZGly QDoqLzovDQorcy9eXChbXj1dKj1bCSBdKlwpOiovXDEvDQorcy86KiQvLw0KK3MvXltePV0qPVsJ IF0qJC8vDQorfScNCitmaQ0KKw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBh Y193cml0ZV9mYWlsPTENCitmaSAjIHRlc3QgLW4gIiRDT05GSUdfRklMRVMiDQorDQorDQorZXZh bCBzZXQgWCAiICA6RiAkQ09ORklHX0ZJTEVTICAgICAgOkMgJENPTkZJR19DT01NQU5EUyINCitz aGlmdA0KK2ZvciBhY190YWcNCitkbw0KKyAgY2FzZSAkYWNfdGFnIGluDQorICA6W0ZITENdKSBh Y19tb2RlPSRhY190YWc7IGNvbnRpbnVlOzsNCisgIGVzYWMNCisgIGNhc2UgJGFjX21vZGUkYWNf dGFnIGluDQorICA6W0ZITF0qOiopOzsNCisgIDpMKiB8IDpDKjoqKSBhc19mbl9lcnJvciAiaW52 YWxpZCB0YWcgXGAkYWNfdGFnJyIgIiRMSU5FTk8iIDU7Ow0KKyAgOltGSF0tKSBhY190YWc9LTot OzsNCisgIDpbRkhdKikgYWNfdGFnPSRhY190YWc6JGFjX3RhZy5pbjs7DQorICBlc2FjDQorICBh Y19zYXZlX0lGUz0kSUZTDQorICBJRlM9Og0KKyAgc2V0IHggJGFjX3RhZw0KKyAgSUZTPSRhY19z YXZlX0lGUw0KKyAgc2hpZnQNCisgIGFjX2ZpbGU9JDENCisgIHNoaWZ0DQorDQorICBjYXNlICRh Y19tb2RlIGluDQorICA6TCkgYWNfc291cmNlPSQxOzsNCisgIDpbRkhdKQ0KKyAgICBhY19maWxl X2lucHV0cz0NCisgICAgZm9yIGFjX2YNCisgICAgZG8NCisgICAgICBjYXNlICRhY19mIGluDQor ICAgICAgLSkgYWNfZj0iJHRtcC9zdGRpbiI7Ow0KKyAgICAgICopICMgTG9vayBmb3IgdGhlIGZp bGUgZmlyc3QgaW4gdGhlIGJ1aWxkIHRyZWUsIHRoZW4gaW4gdGhlDQpzb3VyY2UgdHJlZQ0KKwkg IyAoaWYgdGhlIHBhdGggaXMgbm90IGFic29sdXRlKS4gIFRoZSBhYnNvbHV0ZSBwYXRoIGNhbm5v dCBiZQ0KRE9TLXN0eWxlLA0KKwkgIyBiZWNhdXNlICRhY19mIGNhbm5vdCBjb250YWluIGA6Jy4N CisJIHRlc3QgLWYgIiRhY19mIiB8fA0KKwkgICBjYXNlICRhY19mIGluDQorCSAgIFtcXC8kXSop IGZhbHNlOzsNCisJICAgKikgdGVzdCAtZiAiJHNyY2Rpci8kYWNfZiIgJiYgYWNfZj0iJHNyY2Rp ci8kYWNfZiI7Ow0KKwkgICBlc2FjIHx8DQorCSAgIGFzX2ZuX2Vycm9yICJjYW5ub3QgZmluZCBp bnB1dCBmaWxlOiBcYCRhY19mJyIgIiRMSU5FTk8iDQo1OzsNCisgICAgICBlc2FjDQorICAgICAg Y2FzZSAkYWNfZiBpbiAqXCcqKSBhY19mPWAkYXNfZWNobyAiJGFjX2YiIHwgc2VkDQoicy8nLydc XFxcXFxcXCcnL2ciYDs7IGVzYWMNCisgICAgICBhc19mbl9hcHBlbmQgYWNfZmlsZV9pbnB1dHMg IiAnJGFjX2YnIg0KKyAgICBkb25lDQorDQorICAgICMgTGV0J3Mgc3RpbGwgcHJldGVuZCBpdCBp cyBgY29uZmlndXJlJyB3aGljaCBpbnN0YW50aWF0ZXMgKGkuZS4sDQpkb24ndA0KKyAgICAjIHVz ZSAkYXNfbWUpLCBwZW9wbGUgd291bGQgYmUgc3VycHJpc2VkIHRvIHJlYWQ6DQorICAgICMgICAg LyogY29uZmlnLmguICBHZW5lcmF0ZWQgYnkgY29uZmlnLnN0YXR1cy4gICovDQorICAgIGNvbmZp Z3VyZV9pbnB1dD0nR2VuZXJhdGVkIGZyb20gJ2ANCisJICAkYXNfZWNobyAiJCoiIHwgc2VkICdz fF5bXjpdKi98fDtzfDpbXjpdKi98LCB8ZycNCisJYCcgYnkgY29uZmlndXJlLicNCisgICAgaWYg dGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbg0KKyAgICAgIGNvbmZpZ3VyZV9pbnB1dD0iJGFj X2ZpbGUuICAkY29uZmlndXJlX2lucHV0Ig0KKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQ0KKyRhc19lY2hvICIkYXNf bWU6IGNyZWF0aW5nICRhY19maWxlIiA+JjY7fQ0KKyAgICBmaQ0KKyAgICAjIE5ldXRyYWxpemUg c3BlY2lhbCBjaGFyYWN0ZXJzIGludGVycHJldGVkIGJ5IHNlZCBpbiByZXBsYWNlbWVudA0Kc3Ry aW5ncy4NCisgICAgY2FzZSAkY29uZmlndXJlX2lucHV0IGluICMoDQorICAgICpcJiogfCAqXHwq IHwgKlxcKiApDQorICAgICAgIGFjX3NlZF9jb25mX2lucHV0PWAkYXNfZWNobyAiJGNvbmZpZ3Vy ZV9pbnB1dCIgfA0KKyAgICAgICBzZWQgJ3MvW1xcXFwmfF0vXFxcXCYvZydgOzsgIygNCisgICAg KikgYWNfc2VkX2NvbmZfaW5wdXQ9JGNvbmZpZ3VyZV9pbnB1dDs7DQorICAgIGVzYWMNCisNCisg ICAgY2FzZSAkYWNfdGFnIGluDQorICAgICo6LToqIHwgKjotKSBjYXQgPiIkdG1wL3N0ZGluIiBc DQorICAgICAgfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElO RU5PIiA1IDs7DQorICAgIGVzYWMNCisgICAgOzsNCisgIGVzYWMNCisNCisgIGFjX2Rpcj1gJGFz X2Rpcm5hbWUgLS0gIiRhY19maWxlIiB8fA0KKyRhc19leHByIFgiJGFjX2ZpbGUiIDogJ1hcKC4q W14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcDQorCSBYIiRhY19maWxlIiA6ICdYXCgvL1wpW14v XScgXHwgXA0KKwkgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwNCisJIFgiJGFjX2ZpbGUi IDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fA0KKyRhc19lY2hvIFgiJGFjX2ZpbGUiIHwN CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sNCisJICAgIHMvL1wx Lw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKVteL10uKi97DQorCSAgICBzLy9cMS8N CisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXCkkL3sNCisJICAgIHMvL1wxLw0KKwkgICAg cQ0KKwkgIH0NCisJICAvXlhcKFwvXCkuKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9 DQorCSAgcy8uKi8uLzsgcSdgDQorICBhc19kaXI9IiRhY19kaXIiOyBhc19mbl9ta2Rpcl9wDQor ICBhY19idWlsZGRpcj0uDQorDQorY2FzZSAiJGFjX2RpciIgaW4NCisuKSBhY19kaXJfc3VmZml4 PSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsNCisqKQ0KKyAg YWNfZGlyX3N1ZmZpeD0vYCRhc19lY2hvICIkYWNfZGlyIiB8IHNlZCAnc3xeXC5bXFwvXXx8J2AN CisgICMgQSAiLi4iIGZvciBlYWNoIGRpcmVjdG9yeSBpbiAkYWNfZGlyX3N1ZmZpeC4NCisgIGFj X3RvcF9idWlsZGRpcl9zdWI9YCRhc19lY2hvICIkYWNfZGlyX3N1ZmZpeCIgfCBzZWQNCidzfC9b XlxcL10qfC8uLnxnO3N8L3x8J2ANCisgIGNhc2UgJGFjX3RvcF9idWlsZGRpcl9zdWIgaW4NCisg ICIiKSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsNCisgICop ICBhY190b3BfYnVpbGRfcHJlZml4PSRhY190b3BfYnVpbGRkaXJfc3ViLyA7Ow0KKyAgZXNhYyA7 Ow0KK2VzYWMNCithY19hYnNfdG9wX2J1aWxkZGlyPSRhY19wd2QNCithY19hYnNfYnVpbGRkaXI9 JGFjX3B3ZCRhY19kaXJfc3VmZml4DQorIyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eToNCith Y190b3BfYnVpbGRkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgNCisNCitjYXNlICRzcmNkaXIgaW4N CisgIC4pICAjIFdlIGFyZSBidWlsZGluZyBpbiBwbGFjZS4NCisgICAgYWNfc3JjZGlyPS4NCisg ICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkZGlyX3N1Yg0KKyAgICBhY19hYnNfdG9wX3Ny Y2Rpcj0kYWNfcHdkIDs7DQorICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIG5hbWUu DQorICAgIGFjX3NyY2Rpcj0kc3JjZGlyJGFjX2Rpcl9zdWZmaXg7DQorICAgIGFjX3RvcF9zcmNk aXI9JHNyY2Rpcg0KKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7DQorICAqKSAjIFJl bGF0aXZlIG5hbWUuDQorICAgIGFjX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIk YWNfZGlyX3N1ZmZpeA0KKyAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNy Y2Rpcg0KKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkLyRzcmNkaXIgOzsNCitlc2FjDQor YWNfYWJzX3NyY2Rpcj0kYWNfYWJzX3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeA0KKw0KKw0KKyAg Y2FzZSAkYWNfbW9kZSBpbg0KKyAgOkYpDQorICAjDQorICAjIENPTkZJR19GSUxFDQorICAjDQor DQorICBjYXNlICRJTlNUQUxMIGluDQorICBbXFwvJF0qIHwgPzpbXFwvXSogKSBhY19JTlNUQUxM PSRJTlNUQUxMIDs7DQorICAqKSBhY19JTlNUQUxMPSRhY190b3BfYnVpbGRfcHJlZml4JElOU1RB TEwgOzsNCisgIGVzYWMNCitfQUNFT0YNCisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNF T0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorIyBJZiB0aGUgdGVtcGxhdGUgZG9lcyBub3Qga25vdyBh Ym91dCBkYXRhcm9vdGRpciwgZXhwYW5kIGl0Lg0KKyMgRklYTUU6IFRoaXMgaGFjayBzaG91bGQg YmUgcmVtb3ZlZCBhIGZldyB5ZWFycyBhZnRlciAyLjYwLg0KK2FjX2RhdGFyb290ZGlyX2hhY2s9 OyBhY19kYXRhcm9vdGRpcl9zZWVuPQ0KK2FjX3NlZF9kYXRhcm9vdD0nDQorL2RhdGFyb290ZGly LyB7DQorICBwDQorICBxDQorfQ0KKy9AZGF0YWRpckAvcA0KKy9AZG9jZGlyQC9wDQorL0BpbmZv ZGlyQC9wDQorL0Bsb2NhbGVkaXJAL3ANCisvQG1hbmRpckAvcCcNCitjYXNlIGBldmFsICJzZWQg LW4gXCJcJGFjX3NlZF9kYXRhcm9vdFwiICRhY19maWxlX2lucHV0cyJgIGluDQorKmRhdGFyb290 ZGlyKikgYWNfZGF0YXJvb3RkaXJfc2Vlbj15ZXM7Ow0KKypAZGF0YWRpckAqfCpAZG9jZGlyQCp8 KkBpbmZvZGlyQCp8KkBsb2NhbGVkaXJAKnwqQG1hbmRpckAqKQ0KKyAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkYWNfZmlsZV9pbnB1dHMNCnNlZW1z IHRvIGlnbm9yZSB0aGUgLS1kYXRhcm9vdGRpciBzZXR0aW5nIiA+JjUNCiskYXNfZWNobyAiJGFz X21lOiBXQVJOSU5HOiAkYWNfZmlsZV9pbnB1dHMgc2VlbXMgdG8gaWdub3JlIHRoZSAtLQ0KZGF0 YXJvb3RkaXIgc2V0dGluZyIgPiYyO30NCitfQUNFT0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8 PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCisgIGFjX2RhdGFyb290ZGlyX2hhY2s9Jw0KKyAg cyZAZGF0YWRpckAmJGRhdGFkaXImZw0KKyAgcyZAZG9jZGlyQCYkZG9jZGlyJmcNCisgIHMmQGlu Zm9kaXJAJiRpbmZvZGlyJmcNCisgIHMmQGxvY2FsZWRpckAmJGxvY2FsZWRpciZnDQorICBzJkBt YW5kaXJAJiRtYW5kaXImZw0KKyAgcyZcXFwke2RhdGFyb290ZGlyfSYkZGF0YXJvb3RkaXImZycg OzsNCitlc2FjDQorX0FDRU9GDQorDQorIyBOZXV0cmFsaXplIFZQQVRIIHdoZW4gYCRzcmNkaXIn ID0gYC4nLg0KKyMgU2hlbGwgY29kZSBpbiBjb25maWd1cmUuYWMgbWlnaHQgc2V0IGV4dHJhc3Vi Lg0KKyMgRklYTUU6IGRvIHdlIHJlYWxseSB3YW50IHRvIG1haW50YWluIHRoaXMgZmVhdHVyZT8N CitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCithY19z ZWRfZXh0cmE9IiRhY192cHN1Yg0KKyRleHRyYXN1Yg0KK19BQ0VPRg0KK2NhdCA+PiRDT05GSUdf U1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCis6dA0KKy9AW2EtekEtWl9dW2Et ekEtWl8wLTldKkAvIWINCitzfEBjb25maWd1cmVfaW5wdXRAfCRhY19zZWRfY29uZl9pbnB1dHw7 dCB0DQorcyZAdG9wX2J1aWxkZGlyQCYkYWNfdG9wX2J1aWxkZGlyX3N1YiY7dCB0DQorcyZAdG9w X2J1aWxkX3ByZWZpeEAmJGFjX3RvcF9idWlsZF9wcmVmaXgmO3QgdA0KK3MmQHNyY2RpckAmJGFj X3NyY2RpciY7dCB0DQorcyZAYWJzX3NyY2RpckAmJGFjX2Fic19zcmNkaXImO3QgdA0KK3MmQHRv cF9zcmNkaXJAJiRhY190b3Bfc3JjZGlyJjt0IHQNCitzJkBhYnNfdG9wX3NyY2RpckAmJGFjX2Fi c190b3Bfc3JjZGlyJjt0IHQNCitzJkBidWlsZGRpckAmJGFjX2J1aWxkZGlyJjt0IHQNCitzJkBh YnNfYnVpbGRkaXJAJiRhY19hYnNfYnVpbGRkaXImO3QgdA0KK3MmQGFic190b3BfYnVpbGRkaXJA JiRhY19hYnNfdG9wX2J1aWxkZGlyJjt0IHQNCitzJkBJTlNUQUxMQCYkYWNfSU5TVEFMTCY7dCB0 DQorJGFjX2RhdGFyb290ZGlyX2hhY2sNCisiDQorZXZhbCBzZWQgXCJcJGFjX3NlZF9leHRyYVwi ICIkYWNfZmlsZV9pbnB1dHMiIHwgJEFXSyAtZg0KIiR0bXAvc3Vicy5hd2siID4kdG1wL291dCBc DQorICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8i IDUNCisNCit0ZXN0IC16ICIkYWNfZGF0YXJvb3RkaXJfaGFjayRhY19kYXRhcm9vdGRpcl9zZWVu IiAmJg0KKyAgeyBhY19vdXQ9YHNlZCAtbiAnL1wke2RhdGFyb290ZGlyfS9wJyAiJHRtcC9vdXQi YDsgdGVzdCAtbg0KIiRhY19vdXQiOyB9ICYmDQorICB7IGFjX291dD1gc2VkIC1uICcvXlsJIF0q ZGF0YXJvb3RkaXJbCSBdKjoqPS9wJw0KIiR0bXAvb3V0ImA7IHRlc3QgLXogIiRhY19vdXQiOyB9 ICYmDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6 ICRhY19maWxlIGNvbnRhaW5zDQphIHJlZmVyZW5jZSB0byB0aGUgdmFyaWFibGUgXGBkYXRhcm9v dGRpcicNCit3aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0 IGlzIGRlZmluZWQuIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfZmlsZSBj b250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUNCnZhcmlhYmxlIFxgZGF0YXJvb3RkaXInDQord2hp Y2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVk LiIgPiYyO30NCisNCisgIHJtIC1mICIkdG1wL3N0ZGluIg0KKyAgY2FzZSAkYWNfZmlsZSBpbg0K KyAgLSkgY2F0ICIkdG1wL291dCIgJiYgcm0gLWYgIiR0bXAvb3V0Ijs7DQorICAqKSBybSAtZiAi JGFjX2ZpbGUiICYmIG12ICIkdG1wL291dCIgIiRhY19maWxlIjs7DQorICBlc2FjIFwNCisgIHx8 IGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQ0KKyA7 Ow0KKw0KKw0KKyAgOkMpICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGV4ZWN1dGluZyAkYWNfZmlsZQ0KY29tbWFuZHMiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGV4 ZWN1dGluZyAkYWNfZmlsZSBjb21tYW5kcyIgPiY2O30NCisgOzsNCisgIGVzYWMNCisNCisNCisg IGNhc2UgJGFjX2ZpbGUkYWNfbW9kZSBpbg0KKyAgICAiZGVwZmlsZXMiOkMpIHRlc3QgeCIkQU1E RVBfVFJVRSIgIT0geCIiIHx8IGZvciBtZiBpbg0KJENPTkZJR19GSUxFUzsgZG8NCisgICMgU3Ry aXAgTUYgc28gd2UgZW5kIHVwIHdpdGggdGhlIG5hbWUgb2YgdGhlIGZpbGUuDQorICBtZj1gZWNo byAiJG1mIiB8IHNlZCAtZSAncy86LiokLy8nYA0KKyAgIyBDaGVjayB3aGV0aGVyIHRoaXMgaXMg YW4gQXV0b21ha2UgZ2VuZXJhdGVkIE1ha2VmaWxlIG9yIG5vdC4NCisgICMgV2UgdXNlZCB0byBt YXRjaCBvbmx5IHRoZSBmaWxlcyBuYW1lZCBgTWFrZWZpbGUuaW4nLCBidXQNCisgICMgc29tZSBw ZW9wbGUgcmVuYW1lIHRoZW07IHNvIGluc3RlYWQgd2UgbG9vayBhdCB0aGUgZmlsZSBjb250ZW50 Lg0KKyAgIyBHcmVwJ2luZyB0aGUgZmlyc3QgbGluZSBpcyBub3QgZW5vdWdoOiBzb21lIHBlb3Bs ZSBwb3N0LXByb2Nlc3MNCisgICMgZWFjaCBNYWtlZmlsZS5pbiBhbmQgYWRkIGEgbmV3IGxpbmUg b24gdG9wIG9mIGVhY2ggZmlsZSB0byBzYXkgc28uDQorICAjIFNvIGxldCdzIGdyZXAgd2hvbGUg ZmlsZS4NCisgIGlmIGdyZXAgJ14jLipnZW5lcmF0ZWQgYnkgYXV0b21ha2UnICRtZiA+IC9kZXYv bnVsbCAyPiYxOyB0aGVuDQorICAgIGRpcnBhcnQ9YCRhc19kaXJuYW1lIC0tICIkbWYiIHx8DQor JGFzX2V4cHIgWCIkbWYiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcDQorCSBY IiRtZiIgOiAnWFwoLy9cKVteL10nIFx8IFwNCisJIFgiJG1mIiA6ICdYXCgvL1wpJCcgXHwgXA0K KwkgWCIkbWYiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fA0KKyRhc19lY2hvIFgiJG1m IiB8DQorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97DQorCSAgICBz Ly9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXClbXi9dLiovew0KKwkgICAgcy8v XDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJ ICAgIHENCisJICB9DQorCSAgL15YXChcL1wpLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQor CSAgfQ0KKwkgIHMvLiovLi87IHEnYA0KKyAgZWxzZQ0KKyAgICBjb250aW51ZQ0KKyAgZmkNCisg ICMgRXh0cmFjdCB0aGUgZGVmaW5pdGlvbiBvZiBERVBESVIsIGFtX19pbmNsdWRlLCBhbmQgYW1f X3F1b3RlDQorICAjIGZyb20gdGhlIE1ha2VmaWxlIHdpdGhvdXQgcnVubmluZyBgbWFrZScuDQor ICBERVBESVI9YHNlZCAtbiAncy9eREVQRElSID0gLy9wJyA8ICIkbWYiYA0KKyAgdGVzdCAteiAi JERFUERJUiIgJiYgY29udGludWUNCisgIGFtX19pbmNsdWRlPWBzZWQgLW4gJ3MvXmFtX19pbmNs dWRlID0gLy9wJyA8ICIkbWYiYA0KKyAgdGVzdCAteiAiYW1fX2luY2x1ZGUiICYmIGNvbnRpbnVl DQorICBhbV9fcXVvdGU9YHNlZCAtbiAncy9eYW1fX3F1b3RlID0gLy9wJyA8ICIkbWYiYA0KKyAg IyBXaGVuIHVzaW5nIGFuc2kya25yLCBVIG1heSBiZSBlbXB0eSBvciBhbiB1bmRlcnNjb3JlOyBl eHBhbmQgaXQNCisgIFU9YHNlZCAtbiAncy9eVSA9IC8vcCcgPCAiJG1mImANCisgICMgRmluZCBh bGwgZGVwZW5kZW5jeSBvdXRwdXQgZmlsZXMsIHRoZXkgYXJlIGluY2x1ZGVkIGZpbGVzIHdpdGgN CisgICMgJChERVBESVIpIGluIHRoZWlyIG5hbWVzLiAgV2UgaW52b2tlIHNlZCB0d2ljZSBiZWNh dXNlIGl0IGlzIHRoZQ0KKyAgIyBzaW1wbGVzdCBhcHByb2FjaCB0byBjaGFuZ2luZyAkKERFUERJ UikgdG8gaXRzIGFjdHVhbCB2YWx1ZSBpbiB0aGUNCisgICMgZXhwYW5zaW9uLg0KKyAgZm9yIGZp bGUgaW4gYHNlZCAtbiAiDQorICAgIHMvXiRhbV9faW5jbHVkZSAkYW1fX3F1b3RlXCguKihERVBE SVIpLipcKSRhbV9fcXVvdGUiJyQvXDEvcCcNCjwiJG1mIiB8IFwNCisgICAgICAgc2VkIC1lICdz L1wkKERFUERJUikvJyIkREVQRElSIicvZycgLWUgJ3MvXCRVLyciJFUiJy9nJ2A7IGRvDQorICAg ICMgTWFrZSBzdXJlIHRoZSBkaXJlY3RvcnkgZXhpc3RzLg0KKyAgICB0ZXN0IC1mICIkZGlycGFy dC8kZmlsZSIgJiYgY29udGludWUNCisgICAgZmRpcj1gJGFzX2Rpcm5hbWUgLS0gIiRmaWxlIiB8 fA0KKyRhc19leHByIFgiJGZpbGUiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBc DQorCSBYIiRmaWxlIiA6ICdYXCgvL1wpW14vXScgXHwgXA0KKwkgWCIkZmlsZSIgOiAnWFwoLy9c KSQnIFx8IFwNCisJIFgiJGZpbGUiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fA0KKyRh c19lY2hvIFgiJGZpbGUiIHwNCisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpc LyokL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKVteL10u Ki97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXCkkL3sNCisJ ICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXCkuKi97DQorCSAgICBzLy9c MS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8uLzsgcSdgDQorICAgIGFzX2Rpcj0kZGlycGFy dC8kZmRpcjsgYXNfZm5fbWtkaXJfcA0KKyAgICAjIGVjaG8gImNyZWF0aW5nICRkaXJwYXJ0LyRm aWxlIg0KKyAgICBlY2hvICcjIGR1bW15JyA+ICIkZGlycGFydC8kZmlsZSINCisgIGRvbmUNCitk b25lDQorIDs7DQorDQorICBlc2FjDQorZG9uZSAjIGZvciBhY190YWcNCisNCisNCithc19mbl9l eGl0IDANCitfQUNFT0YNCithY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQ0KKw0K K3Rlc3QgJGFjX3dyaXRlX2ZhaWwgPSAwIHx8DQorICBhc19mbl9lcnJvciAid3JpdGUgZmFpbHVy ZSBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUNCisNCisNCisjIGNvbmZpZ3Vy ZSBpcyB3cml0aW5nIHRvIGNvbmZpZy5sb2csIGFuZCB0aGVuIGNhbGxzIGNvbmZpZy5zdGF0dXMu DQorIyBjb25maWcuc3RhdHVzIGRvZXMgaXRzIG93biByZWRpcmVjdGlvbiwgYXBwZW5kaW5nIHRv IGNvbmZpZy5sb2cuDQorIyBVbmZvcnR1bmF0ZWx5LCBvbiBET1MgdGhpcyBmYWlscywgYXMgY29u ZmlnLmxvZyBpcyBzdGlsbCBrZXB0IG9wZW4NCisjIGJ5IGNvbmZpZ3VyZSwgc28gY29uZmlnLnN0 YXR1cyB3b24ndCBiZSBhYmxlIHRvIHdyaXRlIHRvIGl0OyBpdHMNCisjIG91dHB1dCBpcyBzaW1w bHkgZGlzY2FyZGVkLiAgU28gd2UgZXhlYyB0aGUgRkQgdG8gL2Rldi9udWxsLA0KKyMgZWZmZWN0 aXZlbHkgY2xvc2luZyBjb25maWcubG9nLCBzbyBpdCBjYW4gYmUgcHJvcGVybHkgKHJlKW9wZW5l ZCBhbmQNCisjIGFwcGVuZGVkIHRvIGJ5IGNvbmZpZy5zdGF0dXMuICBXaGVuIGNvbWluZyBiYWNr IHRvIGNvbmZpZ3VyZSwgd2UNCisjIG5lZWQgdG8gbWFrZSB0aGUgRkQgYXZhaWxhYmxlIGFnYWlu Lg0KK2lmIHRlc3QgIiRub19jcmVhdGUiICE9IHllczsgdGhlbg0KKyAgYWNfY3Nfc3VjY2Vzcz06 DQorICBhY19jb25maWdfc3RhdHVzX2FyZ3M9DQorICB0ZXN0ICIkc2lsZW50IiA9IHllcyAmJg0K KyAgICBhY19jb25maWdfc3RhdHVzX2FyZ3M9IiRhY19jb25maWdfc3RhdHVzX2FyZ3MgLS1xdWll dCINCisgIGV4ZWMgNT4vZGV2L251bGwNCisgICRTSEVMTCAkQ09ORklHX1NUQVRVUyAkYWNfY29u ZmlnX3N0YXR1c19hcmdzIHx8IGFjX2NzX3N1Y2Nlc3M9ZmFsc2UNCisgIGV4ZWMgNT4+Y29uZmln LmxvZw0KKyAgIyBVc2UgfHwsIG5vdCAmJiwgdG8gYXZvaWQgZXhpdGluZyBmcm9tIHRoZSBpZiB3 aXRoICQ/ID0gMSwgd2hpY2gNCisgICMgd291bGQgbWFrZSBjb25maWd1cmUgZmFpbCBpZiB0aGlz IGlzIHRoZSBsYXN0IGluc3RydWN0aW9uLg0KKyAgJGFjX2NzX3N1Y2Nlc3MgfHwgYXNfZm5fZXhp dCAkPw0KK2ZpDQoraWYgdGVzdCAtbiAiJGFjX3VucmVjb2duaXplZF9vcHRzIiAmJiB0ZXN0ICIk ZW5hYmxlX29wdGlvbl9jaGVja2luZyINCiE9IG5vOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVucmVjb2duaXplZA0Kb3B0aW9uczog JGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1 bnJlY29nbml6ZWQgb3B0aW9uczoNCiRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYyO30NCitmaQ0K Kw0KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJjL3N5cy94dGVuc2EvY29uZmlndXJlLmluDQpiL25l d2xpYi9saWJjL3N5cy94dGVuc2EvY29uZmlndXJlLmluDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K aW5kZXggMDAwMDAwMDAwLi4yOWJiYTJlN2QNCi0tLSAvZGV2L251bGwNCisrKyBiL25ld2xpYi9s aWJjL3N5cy94dGVuc2EvY29uZmlndXJlLmluDQpAQCAtMCwwICsxLDE0IEBADQorZG5sIFRoaXMg aXMgdGhlIG5ld2xpYi9saWJjL3N5cy94dGVuc2EgY29uZmlndXJlLmluIGZpbGUuDQorZG5sIFBy b2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3Jp cHQuDQorDQorQUNfUFJFUkVRKDIuNTkpDQorQUNfSU5JVChbbmV3bGliXSxbTkVXTElCX1ZFUlNJ T05dKQ0KK0FDX0NPTkZJR19TUkNESVIoW2lzYXR0eS5jXSkNCisNCitkbmwgQ2FuJ3QgYmUgZG9u ZSBpbiBORVdMSUJfQ09ORklHVVJFIGJlY2F1c2UgdGhhdCBjb25mdXNlcyBhdXRvbWFrZS4NCitB Q19DT05GSUdfQVVYX0RJUiguLi8uLi8uLi8uLikNCisNCitORVdMSUJfQ09ORklHVVJFKC4uLy4u Ly4uKQ0KKw0KK0FDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQ0KK0FDX09VVFBVVA0KZGlmZiAt LWdpdCBhL25ld2xpYi9saWJjL3N5cy94dGVuc2EvY3JlYXQuYw0KYi9uZXdsaWIvbGliYy9zeXMv eHRlbnNhL2NyZWF0LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjIx ZTZhMTg3NA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9jcmVh dC5jDQpAQCAtMCwwICsxLDkgQEANCisvKiBjcmVhdCgpICJzeXN0ZW0gY2FsbCIgKGNvcGllZCBm cm9tIGxpYmMvcG9zaXgvY3JlYXQuYykgKi8NCisNCisjaW5jbHVkZSA8ZmNudGwuaD4NCisNCitp bnQNCitjcmVhdCAoY29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpDQorew0KKyAgcmV0dXJu IG9wZW4gKHBhdGgsIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMsIG1vZGUpOw0KK30NCmRp ZmYgLS1naXQgYS9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2NydDAuYw0KYi9uZXdsaWIvbGliYy9z eXMveHRlbnNhL2NydDAuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4u MTE3MjVkY2E1DQotLS0gL2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2Ny dDAuYw0KQEAgLTAsMCArMSwxNiBAQA0KKy8qIER1bW15IGNydDAgY29kZS4gICovDQorDQorLyog Q29weXJpZ2h0IChjKSAyMDAzIGJ5IFRlbnNpbGljYSBJbmMuICBBTEwgUklHSFRTIFJFU0VSVkVE Lg0KKyAgIFRoZXNlIGNvZGVkIGluc3RydWN0aW9ucywgc3RhdGVtZW50cywgYW5kIGNvbXB1dGVy IHByb2dyYW1zIGFyZSB0aGUNCisgICBjb3B5cmlnaHRlZCB3b3JrcyBhbmQgY29uZmlkZW50aWFs IHByb3ByaWV0YXJ5IGluZm9ybWF0aW9uIG9mDQpUZW5zaWxpY2EgSW5jLg0KKyAgIFRoZXkgbWF5 IG5vdCBiZSBtb2RpZmllZCwgY29waWVkLCByZXByb2R1Y2VkLCBkaXN0cmlidXRlZCwgb3INCmRp c2Nsb3NlZCB0bw0KKyAgIHRoaXJkIHBhcnRpZXMgaW4gYW55IG1hbm5lciwgbWVkaXVtLCBvciBm b3JtLCBpbiB3aG9sZSBvciBpbiBwYXJ0LA0Kd2l0aG91dA0KKyAgIHRoZSBwcmlvciB3cml0dGVu IGNvbnNlbnQgb2YgVGVuc2lsaWNhIEluYy4gICovDQorDQorLyogWHRlbnNhIHN5c3RlbXMgbm9y bWFsbHkgdXNlIGEgY3J0MSBmaWxlIGFzc29jaWF0ZWQgd2l0aCBhDQpwYXJ0aWN1bGFyDQorICAg bGlua2VyIHN1cHBvcnQgcGFja2FnZSAoTFNQKS4gIFRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoaXMg Y3J0MCBmaWxlLA0KKyAgIGV4Y2VwdCB0aGF0IHRoZSBuZXdsaWIgbWFrZWZpbGVzIHJlcXVpcmUg aXQgdG8gZXhpc3QgaWYgdGhlcmUgaXMgYQ0KKyAgIHN5cy94dGVuc2EgZGlyZWN0b3J5LiAgVGhl IGRpcmVjdG9yeSBleGlzdHMgb25seSB0byBob2xkIHRoZSBoZWFkZXINCisgICBmaWxlcyBmb3Ig dGhlIFh0ZW5zYSBJU1Mgc2VtaWhvc3RpbmcgInBsYXRmb3JtIi4gICovDQorDQordm9pZCBjcnQw X3VudXNlZCAodm9pZCkge30NCmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2lu Y2x1ZGUvZmVudi5oDQpiL25ld2xpYi9saWJjL3N5cy94dGVuc2EvaW5jbHVkZS9mZW52LmgNCm5l dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjJmYTc2Zjc1OA0KLS0tIC9kZXYv bnVsbA0KKysrIGIvbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9pbmNsdWRlL2ZlbnYuaA0KQEAgLTAs MCArMSw4OCBAQA0KKy8qIENvcHlyaWdodCAoYykgMjAxMSBUZW5zaWxpY2EgSW5jLiAgQUxMIFJJ R0hUUyBSRVNFUlZFRC4NCisNCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgICBtb2RpZmljYXRpb24sIGFyZSBw ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgICBhcmUg bWV0Og0KKw0KKyAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp biB0aGUgYWJvdmUgY29weXJpZ2h0DQorICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKw0KKyAgIDIuIFJlZGlzdHJpYnV0 aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCisgICAgICBjb3B5 cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZw0K KyAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZA0KKyAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisNCisgICBUSElT IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ QlVUT1JTDQorICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QNCisgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUw0KKyAgIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMDQorICAgVEVOU0lMSUNB IElOQ09SUE9SQVRFRCBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KKyAgIElO Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTDQor ICAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU VVRFIEdPT0RTIE9SDQorICAgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQorICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULA0KKyAgIFNUUklDVCBM SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisg ICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF TiBJRiBBRFZJU0VEDQorICAgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAgKi8N CisNCisNCisjaWZuZGVmIF9GRU5WX0gNCisjZGVmaW5lIF9GRU5WX0gNCisNCisjaWZkZWYgX19j cGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCit0eXBlZGVmIHVuc2lnbmVkIGxv bmcgZmVudl90Ow0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBmZXhjZXB0X3Q7DQorDQorI2RlZmlu ZSBGRV9ESVZCWVpFUk8gICAweDA4DQorI2RlZmluZSBGRV9JTkVYQUNUICAgICAweDAxDQorI2Rl ZmluZSBGRV9JTlZBTElEICAgICAweDEwDQorI2RlZmluZSBGRV9PVkVSRkxPVyAgICAweDA0DQor I2RlZmluZSBGRV9VTkRFUkZMT1cgICAweDAyDQorDQorI2RlZmluZSBGRV9BTExfRVhDRVBUIFwN CisgIChGRV9ESVZCWVpFUk8gIHwJCSAgICAgIFwNCisgICBGRV9JTkVYQUNUICAgIHwJCSAgICAg IFwNCisgICBGRV9JTlZBTElEICAgIHwJCSAgICAgIFwNCisgICBGRV9PVkVSRkxPVyAgIHwJCSAg ICAgIFwNCisgICBGRV9VTkRFUkZMT1cpDQorDQorI2RlZmluZSBGRV9ET1dOV0FSRCAgIDB4Mw0K KyNkZWZpbmUgRkVfVE9ORUFSRVNUICAweDANCisjZGVmaW5lIEZFX1RPV0FSRFpFUk8gMHgxDQor I2RlZmluZSBGRV9VUFdBUkQgICAgIDB4Mg0KKw0KKyNkZWZpbmUgRkVfREZMX0VOViAoKGNvbnN0 IGZlbnZfdCAqKSAwKQ0KKw0KK2ludCAgZmVjbGVhcmV4Y2VwdChpbnQpOw0KK2ludCAgZmVnZXRl eGNlcHRmbGFnKGZleGNlcHRfdCAqLCBpbnQpOw0KK2ludCAgZmVyYWlzZWV4Y2VwdChpbnQpOw0K K2ludCAgZmVzZXRleGNlcHRmbGFnKGNvbnN0IGZleGNlcHRfdCAqLCBpbnQpOw0KK2ludCAgZmV0 ZXN0ZXhjZXB0KGludCk7DQoraW50ICBmZWdldHJvdW5kKHZvaWQpOw0KK2ludCAgZmVzZXRyb3Vu ZChpbnQpOw0KK2ludCAgZmVnZXRlbnYoZmVudl90ICopOw0KK2ludCAgZmVob2xkZXhjZXB0KGZl bnZfdCAqKTsNCitpbnQgIGZlc2V0ZW52KGNvbnN0IGZlbnZfdCAqKTsNCitpbnQgIGZldXBkYXRl ZW52KGNvbnN0IGZlbnZfdCAqKTsNCisNCisvKiBnbGliYyBleHRlbnNpb25zICAqLw0KK2ludCBm ZWVuYWJsZWV4Y2VwdChpbnQgZXhjZXB0cyk7DQoraW50IGZlZGlzYWJsZWV4Y2VwdChpbnQgZXhj ZXB0cyk7DQoraW50IGZlZ2V0ZXhjZXB0KHZvaWQpOw0KKw0KKyNkZWZpbmUgX0ZFX0VYQ0VQVElP Tl9GTEFHU19PRkZTRVQgNw0KKyNkZWZpbmUgX0ZFX0VYQ0VQVElPTl9GTEFHX01BU0sgKEZFX0FM TF9FWENFUFQgPDwNCl9GRV9FWENFUFRJT05fRkxBR1NfT0ZGU0VUKQ0KKyNkZWZpbmUgX0ZFX0VY Q0VQVElPTl9FTkFCTEVfT0ZGU0VUIDINCisjZGVmaW5lIF9GRV9FWENFUFRJT05fRU5BQkxFX01B U0sgKEZFX0FMTF9FWENFUFQgPDwNCl9GRV9FWENFUFRJT05fRU5BQkxFX09GRlNFVCkNCisjZGVm aW5lIF9GRV9ST1VORF9NT0RFX09GRlNFVCAwDQorI2RlZmluZSBfRkVfUk9VTkRfTU9ERV9NQVNL ICgweDMgPDwgX0ZFX1JPVU5EX01PREVfT0ZGU0VUKQ0KKyNkZWZpbmUgX0ZFX0ZMT0FUSU5HX0VO Vl9NQVNLIChfRkVfRVhDRVBUSU9OX0ZMQUdfTUFTSyB8DQpfRkVfRVhDRVBUSU9OX0VOQUJMRV9N QVNLIHwgX0ZFX1JPVU5EX01PREVfTUFTSykNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQor I2VuZGlmDQorDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9p bmNsdWRlL3VuaXN0ZC5oDQpiL25ld2xpYi9saWJjL3N5cy94dGVuc2EvaW5jbHVkZS91bmlzdGQu aA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uNGY2ZmQyOWE0DQotLS0g L2Rldi9udWxsDQorKysgYi9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2luY2x1ZGUvdW5pc3RkLmgN CkBAIC0wLDAgKzEsMTMgQEANCisjaWZuZGVmIF9VTklTVERfSF8NCisjZGVmaW5lIF9VTklTVERf SF8NCisNCisjIGluY2x1ZGUgPHN5cy91bmlzdGQuaD4NCisNCisjaWZuZGVmIExfU0VUDQorLyog T2xkIEJTRCBuYW1lcyBmb3IgdGhlIHNhbWUgY29uc3RhbnRzOyBqdXN0IGZvciBjb21wYXRpYmls aXR5LiAgKi8NCisjZGVmaW5lCQlMX1NFVAkJU0VFS19TRVQNCisjZGVmaW5lCQlMX0lOQ1IJCVNF RUtfQ1VSDQorI2RlZmluZQkJTF9YVE5ECQlTRUVLX0VORA0KKyNlbmRpZg0KKw0KKyNlbmRpZiAv KiBfVU5JU1REX0hfICovDQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9pbmNs dWRlL3h0ZW5zYS9jb25maWcvY29yZS1pc2EuaA0KYi9uZXdsaWIvbGliYy9zeXMveHRlbnNhL2lu Y2x1ZGUveHRlbnNhL2NvbmZpZy9jb3JlLWlzYS5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5k ZXggMDAwMDAwMDAwLi4wMjVlNDI3MjQNCi0tLSAvZGV2L251bGwNCisrKyBiL25ld2xpYi9saWJj L3N5cy94dGVuc2EvaW5jbHVkZS94dGVuc2EvY29uZmlnL2NvcmUtaXNhLmgNCkBAIC0wLDAgKzEs NjU1IEBADQorLyoNCisgKiB4dGVuc2EvY29uZmlnL2NvcmUtaXNhLmggLS0gSEFMIGRlZmluaXRp b25zIHRoYXQgYXJlIGRlcGVuZGVudCBvbg0KWHRlbnNhDQorICoJCQkJcHJvY2Vzc29yIENPUkUg Y29uZmlndXJhdGlvbg0KKyAqDQorICogIFNlZSA8eHRlbnNhL2NvbmZpZy9jb3JlLmg+LCB3aGlj aCBpbmNsdWRlcyB0aGlzIGZpbGUsIGZvciBtb3JlDQpkZXRhaWxzLg0KKyAqLw0KKw0KKy8qIFh0 ZW5zYSBwcm9jZXNzb3IgY29yZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLg0KKw0KKyAgIENv cHlyaWdodCAoYykgMTk5OS0yMDE2IFRlbnNpbGljYSBJbmMuDQorDQorICAgUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24NCm9idGFpbmlu Zw0KKyAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp b24gZmlsZXMgKHRoZQ0KKyAgICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcNCisgICB3aXRob3V0IGxpbWl0YXRpb24gdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsDQorICAgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvDQorICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0DQp0bw0KKyAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisN CisgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSBzaGFsbCBiZQ0KaW5jbHVkZWQNCisgICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisNCisgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwNCisgICBFWFBSRVNTIE9SIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YNCisg ICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORA0K Tk9OSU5GUklOR0VNRU5ULg0KKyAgIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1INCkFOWQ0KKyAgIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YNCkNPTlRSQUNULA0KKyAg IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFDQorICAgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBU SEUgU09GVFdBUkUuICAqLw0KKw0KKyNpZm5kZWYgX1hURU5TQV9DT1JFX0NPTkZJR1VSQVRJT05f SA0KKyNkZWZpbmUgX1hURU5TQV9DT1JFX0NPTkZJR1VSQVRJT05fSA0KKw0KKw0KKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioNCioqKioqKioNCisJICAgIFBhcmFtZXRlcnMgVXNlZnVsIGZvciBBbnkgQ29kZSwgVVNF UiBvciBQUklWSUxFR0VEDQorDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKioqKiovDQorDQorLyoNCisgKiAg Tm90ZTogIE1hY3JvcyBvZiB0aGUgZm9ybSBYQ0hBTF9IQVZFXyoqKiBoYXZlIGEgdmFsdWUgb2Yg MSBpZiB0aGUNCm9wdGlvbiBpcw0KKyAqICBjb25maWd1cmVkLCBhbmQgYSB2YWx1ZSBvZiAwIG90 aGVyd2lzZS4gIFRoZXNlIG1hY3JvcyBhcmUgYWx3YXlzDQpkZWZpbmVkLg0KKyAqLw0KKw0KKw0K Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCi0tDQorCQkJCUlTQQ0KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tKi8NCisNCisj ZGVmaW5lIFhDSEFMX0hBVkVfQkUJCQkwCS8qIGJpZy1lbmRpYW4gYnl0ZQ0Kb3JkZXJpbmcgKi8N CisjZGVmaW5lIFhDSEFMX0hBVkVfV0lORE9XRUQJCTEJLyogd2luZG93ZWQgcmVnaXN0ZXJzDQpv cHRpb24gKi8NCisjZGVmaW5lIFhDSEFMX05VTV9BUkVHUwkJCTY0CS8qIG51bSBvZg0KcGh5c2lj YWwgYWRkciByZWdzICovDQorI2RlZmluZSBYQ0hBTF9OVU1fQVJFR1NfTE9HMgkJNgkvKg0KbG9n MihYQ0hBTF9OVU1fQVJFR1MpICovDQorI2RlZmluZSBYQ0hBTF9NQVhfSU5TVFJVQ1RJT05fU0la RQkzCS8qIG1heCBpbnN0ciBieXRlcw0KKDMuLjgpICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0RF QlVHCQkxCS8qIGRlYnVnIG9wdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9ERU5TSVRZCQkx CS8qIDE2LWJpdCBpbnN0cnVjdGlvbnMNCiovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0xPT1BTCQkx CS8qIHplcm8tb3ZlcmhlYWQgbG9vcHMNCiovDQorI2RlZmluZSBYQ0hBTF9MT09QX0JVRkZFUl9T SVpFCQkyNTYJLyogemVyby1vdi4gbG9vcCBpbnN0cg0KYnVmZmVyIHNpemUgKi8NCisjZGVmaW5l IFhDSEFMX0hBVkVfTlNBCQkJMQkvKiBOU0EvTlNBVQ0KaW5zdHJ1Y3Rpb25zICovDQorI2RlZmlu ZSBYQ0hBTF9IQVZFX01JTk1BWAkJMQkvKiBNSU4vTUFYDQppbnN0cnVjdGlvbnMgKi8NCisjZGVm aW5lIFhDSEFMX0hBVkVfU0VYVAkJCTEJLyogU0VYVA0KaW5zdHJ1Y3Rpb24gKi8NCisjZGVmaW5l IFhDSEFMX0hBVkVfREVQQklUUwkJMAkvKiBERVBCSVRTIGluc3RydWN0aW9uDQoqLw0KKyNkZWZp bmUgWENIQUxfSEFWRV9DTEFNUFMJCTEJLyogQ0xBTVBTIGluc3RydWN0aW9uDQoqLw0KKyNkZWZp bmUgWENIQUxfSEFWRV9NVUwxNgkJMQkvKiBNVUwxNlMvTVVMMTZVDQppbnN0cnVjdGlvbnMgKi8N CisjZGVmaW5lIFhDSEFMX0hBVkVfTVVMMzIJCTEJLyogTVVMTCBpbnN0cnVjdGlvbiAqLw0KKyNk ZWZpbmUgWENIQUxfSEFWRV9NVUwzMl9ISUdICQkxCS8qIE1VTFVIL01VTFNIDQppbnN0cnVjdGlv bnMgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfRElWMzIJCTEJLyogUVVPUy9RVU9VL1JFTVMvUkVN VQ0KaW5zdHJ1Y3Rpb25zICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0wzMlIJCQkxCS8qIEwzMlIN Cmluc3RydWN0aW9uICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0FCU09MVVRFX0xJVEVSQUxTCTAJ Lyogbm9uLVBDLXJlbA0KKGV4dGVuZGVkKSBMMzJSICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0NP TlNUMTYJCTAJLyogQ09OU1QxNiBpbnN0cnVjdGlvbg0KKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVf QUREWAkJCTEJLyogQUREWCMvU1VCWCMNCmluc3RydWN0aW9ucyAqLw0KKyNkZWZpbmUgWENIQUxf SEFWRV9XSURFX0JSQU5DSEVTCTAJLyogQiouVzE4IG9yIEIqLlcxNQ0KaW5zdHIncyAqLw0KKyNk ZWZpbmUgWENIQUxfSEFWRV9QUkVESUNURURfQlJBTkNIRVMJMAkvKiBCW0VRL0VRWi9ORS9ORVpd VA0KaW5zdHIncyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9DQUxMNEFORDEyCQkxCS8qIChvYnNv bGV0ZSBvcHRpb24pDQoqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9BQlMJCQkxCS8qIEFCUyBpbnN0 cnVjdGlvbiAqLw0KKy8qI2RlZmluZSBYQ0hBTF9IQVZFX1BPUEMJCTAqLwkvKiBQT1BDIGluc3Ry dWN0aW9uICovDQorLyojZGVmaW5lIFhDSEFMX0hBVkVfQ1JDCQkwKi8JLyogQ1JDIGluc3RydWN0 aW9uICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1JFTEVBU0VfU1lOQwkJMQkvKiBMMzJBSS9TMzJS SQ0KaW5zdHJ1Y3Rpb25zICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1MzMkMxSQkJMQkvKiBTMzJD MUkgaW5zdHJ1Y3Rpb24NCiovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1NQRUNVTEFUSU9OCQkwCS8q IHNwZWN1bGF0aW9uICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0ZVTExfUkVTRVQJCTEJLyogYWxs IHJlZ3Mvc3RhdGUNCnJlc2V0ICovDQorI2RlZmluZSBYQ0hBTF9OVU1fQ09OVEVYVFMJCTEJLyog Ki8NCisjZGVmaW5lIFhDSEFMX05VTV9NSVNDX1JFR1MJCTQJLyogbnVtIG9mIHNjcmF0Y2ggcmVn cw0KKDAuLjQpICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1RBUF9NQVNURVIJCTAJLyogSlRBRyBU QVAgY29udHJvbA0KaW5zdHIncyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9QUklECQkJMQkvKiBw cm9jZXNzb3INCklEIHJlZ2lzdGVyICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0VYVEVSTl9SRUdT CQkxCS8qIFdFUi9SRVINCmluc3RydWN0aW9ucyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9NWAkJ CTAJLyogTVggY29yZSAoVGVuc2lsaWNhDQppbnRlcm5hbCkgKi8NCisjZGVmaW5lIFhDSEFMX0hB VkVfTVBfSU5URVJSVVBUUwkwCS8qIGludGVycnVwdA0KZGlzdHJpYnV0b3IgcG9ydCAqLw0KKyNk ZWZpbmUgWENIQUxfSEFWRV9NUF9SVU5TVEFMTAkJMAkvKiBjb3JlIFJ1blN0YWxsDQpjb250cm9s IHBvcnQgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfUFNPCQkJMAkvKiBQb3dlciBTaHV0LU9mZiAq Lw0KKyNkZWZpbmUgWENIQUxfSEFWRV9QU09fQ0RNCQkwCS8qIGNvcmUvZGVidWcvbWVtIHB3cg0K ZG9tYWlucyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9QU09fRlVMTF9SRVRFTlRJT04JMAkvKiBh bGwgcmVncyBwcmVzZXJ2ZWQNCm9uIFBTTyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9USFJFQURQ VFIJCTEJLyogVEhSRUFEUFRSIHJlZ2lzdGVyDQoqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9CT09M RUFOUwkJMQkvKiBib29sZWFuIHJlZ2lzdGVycw0KKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfQ1AJ CQkxCS8qIENQRU5BQkxFIHJlZw0KKGNvcHJvY2Vzc29yKSAqLw0KKyNkZWZpbmUgWENIQUxfQ1Bf TUFYQ0ZHCQkJOAkvKiBtYXggYWxsb3dlZA0KY3AgaWQgcGx1cyBvbmUgKi8NCisjZGVmaW5lIFhD SEFMX0hBVkVfTUFDMTYJCTEJLyogTUFDMTYgcGFja2FnZSAqLw0KKw0KKyNkZWZpbmUgWENIQUxf SEFWRV9GVVNJT04JCSAwCS8qIEZ1c2lvbiovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0ZVU0lPTl9G UAkgMAkgICAgICAgIC8qIEZ1c2lvbiBGUCBvcHRpb24gKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVf RlVTSU9OX0xPV19QT1dFUiAwCS8qIEZ1c2lvbiBMb3cgUG93ZXIgb3B0aW9uICovDQorI2RlZmlu ZSBYQ0hBTF9IQVZFX0ZVU0lPTl9BRVMJIDAJICAgICAgICAvKiBGdXNpb24gQkxFL1dpZmkNCkFF Uy0xMjggQ0NNIG9wdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9GVVNJT05fQ09OVkVOQwkg MCAgICAgICAvKiBGdXNpb24gQ29udiBFbmNvZGUNCm9wdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxf SEFWRV9GVVNJT05fTEZTUl9DUkMJIDAJLyogRnVzaW9uIExGU1ItQ1JDDQpvcHRpb24gKi8NCisj ZGVmaW5lIFhDSEFMX0hBVkVfRlVTSU9OX0JJVE9QUwkgMAkvKiBGdXNpb24gQml0DQpPcGVyYXRp b25zIFN1cHBvcnQgb3B0aW9uICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0ZVU0lPTl9BVlMJIDAJ LyogRnVzaW9uIEFWUyBvcHRpb24gKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfRlVTSU9OXzE2QklU X0JBU0VCQU5ECSAwCS8qIEZ1c2lvbiAxNi0NCmJpdCBCYXNlYmFuZCBvcHRpb24gKi8NCisjZGVm aW5lIFhDSEFMX0hBVkVfRlVTSU9OX1ZJVEVSQkkgICAgICAgIDAgICAgIC8qIEZ1c2lvbiBWaXRl cmJpDQpvcHRpb24gKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfRlVTSU9OX1NPRlRERU1BUCAgICAg IDAgICAvKiBGdXNpb24gU29mdCBCaXQgRGVtYXANCm9wdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxf SEFWRV9ISUZJUFJPCQkwCS8qIEhpRmlQcm8gQXVkaW8NCkVuZ2luZSBwa2cgKi8NCisjZGVmaW5l IFhDSEFMX0hBVkVfSElGSTQJCTAJLyogSGlGaTQgQXVkaW8gRW5naW5lDQpwa2cgKi8NCisjZGVm aW5lIFhDSEFMX0hBVkVfSElGSTRfVkZQVQkJMAkvKiBIaUZpNCBBdWRpbyBFbmdpbmUNClZGUFUg b3B0aW9uICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0hJRkkzCQkwCS8qIEhpRmkzIEF1ZGlvIEVu Z2luZQ0KcGtnICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0hJRkkzX1ZGUFUJCTAJLyogSGlGaTMg QXVkaW8gRW5naW5lDQpWRlBVIG9wdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9ISUZJMgkJ MAkvKiBIaUZpMiBBdWRpbyBFbmdpbmUNCnBrZyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9ISUZJ MkVQCQkwCS8qIEhpRmkyRVAgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfSElGSV9NSU5JCQkwDQor DQorDQorI2RlZmluZSBYQ0hBTF9IQVZFX1ZFQ1RPUkZQVTIwMDUJMAkvKiB2ZWN0b3Igb3IgdXNl cg0KZmxvYXRpbmctcG9pbnQgcGtnICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1VTRVJfRFBGUFUg ICAgICAgICAwICAgICAgIC8qIHVzZXIgRFAgZmxvYXRpbmctDQpwb2ludCBwa2cgKi8NCisjZGVm aW5lIFhDSEFMX0hBVkVfVVNFUl9TUEZQVSAgICAgICAgIDAgICAgICAgLyogdXNlciBEUCBmbG9h dGluZy0NCnBvaW50IHBrZyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9GUCAgICAgICAgICAgICAg ICAgMSAgICAgIC8qIHNpbmdsZSBwcmVjIGZsb2F0aW5nDQpwb2ludCAqLw0KKyNkZWZpbmUgWENI QUxfSEFWRV9GUF9ESVYgICAgICAgICAgICAgMSAgLyogRlAgd2l0aCBESVYgaW5zdHJ1Y3Rpb25z DQoqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9GUF9SRUNJUCAgICAgICAgICAgMSAgICAgICAgLyog RlAgd2l0aCBSRUNJUA0KaW5zdHJ1Y3Rpb25zICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0ZQX1NR UlQgICAgICAgICAgICAxIC8qIEZQIHdpdGggU1FSVCBpbnN0cnVjdGlvbnMNCiovDQorI2RlZmlu ZSBYQ0hBTF9IQVZFX0ZQX1JTUVJUICAgICAgICAgICAxICAgICAgICAvKiBGUCB3aXRoIFJTUVJU DQppbnN0cnVjdGlvbnMgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfREZQICAgICAgICAgICAgICAg ICAgICAgICAgMCAgICAgLyogZG91YmxlDQpwcmVjaXNpb24gRlAgcGtnICovDQorI2RlZmluZSBY Q0hBTF9IQVZFX0RGUF9ESVYgICAgICAgICAgICAwIC8qIERGUCB3aXRoIERJViBpbnN0cnVjdGlv bnMNCiovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0RGUF9SRUNJUCAgICAgICAgICAwICAgICAgIC8q IERGUCB3aXRoIFJFQ0lQDQppbnN0cnVjdGlvbnMqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9ERlBf U1FSVCAgICAgICAgICAgMCAgICAgICAgLyogREZQIHdpdGggU1FSVA0KaW5zdHJ1Y3Rpb25zICov DQorI2RlZmluZSBYQ0hBTF9IQVZFX0RGUF9SU1FSVCAgICAgICAgICAwICAgICAgIC8qIERGUCB3 aXRoIFJTUVJUDQppbnN0cnVjdGlvbnMqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9ERlBfQUNDRUwJ CTEJLyogZG91YmxlIHByZWNpc2lvbiBGUA0KYWNjZWxlcmF0aW9uIHBrZyAqLw0KKyNkZWZpbmUN ClhDSEFMX0hBVkVfREZQX2FjY2VsCQlYQ0hBTF9IQVZFX0RGUF9BQ0NFTAkJCQkvKiBmb3IgYmFj a3dhcmQgY29tcGF0aWJpbGl0eSovDQorDQorI2RlZmluZSBYQ0hBTF9IQVZFX0RGUFVfU0lOR0xF X09OTFkgICAgMSAgICAgICAgICAgICAgICAgCS8qDQpERlBVIENvcHJvY2Vzc29yLCBzaW5nbGUg cHJlY2lzaW9uIG9ubHkgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfREZQVV9TSU5HTEVfRE9VQkxF ICAwICAgICAgICAgICAgICAgCS8qDQpERlBVIENvcHJvY2Vzc29yLCBzaW5nbGUgYW5kIGRvdWJs ZSBwcmVjaXNpb24gKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfVkVDVFJBMQkJMAkvKiBWZWN0cmEg SSAgcGtnICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1ZFQ1RSQUxYCQkwCS8qIFZlY3RyYSBMWCBw a2cgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfUERYNAkJICAgICAgICAwCS8qIFBEWDQgKi8NCisj ZGVmaW5lIFhDSEFMX0hBVkVfQ09OTlhEMgkJMAkvKiBDb25uWCBEMiBwa2cgKi8NCisjZGVmaW5l IFhDSEFMX0hBVkVfQ09OTlhEMl9EVUFMTFNGTElYICAgMAkvKiBDb25uWCBEMiAmIER1YWwNCkxv YWRTdG9yZSBGbGl4ICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0JCRTE2CQkwCS8qIENvbm5YIEJC RTE2IHBrZyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9CQkUxNl9SU1FSVAkJMAkvKiBCQkUxNiAm IHZlY3Rvcg0KcmVjaXAgc3FydCAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9CQkUxNl9WRUNESVYJ CTAJLyogQkJFMTYgJg0KdmVjdG9yIGRpdmlkZSAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9CQkUx Nl9ERVNQUkVBRAkwCS8qIEJCRTE2ICYgZGVzcHJlYWQgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVf QkJFTkVQCQkwCS8qIENvbm5YIEJCRU5FUCBwa2dzDQoqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9C U1AzCQkJMAkvKiBDb25uWCBCU1AzDQpwa2cgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfQlNQM19U UkFOU1BPU0UJMAkvKiBCU1AzICYNCnRyYW5zcG9zZTMyeDMyICovDQorI2RlZmluZSBYQ0hBTF9I QVZFX1NTUDE2CQkwCS8qIENvbm5YIFNTUDE2IHBrZyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9T U1AxNl9WSVRFUkJJCTAJLyogU1NQMTYgJiB2aXRlcmJpICovDQorI2RlZmluZSBYQ0hBTF9IQVZF X1RVUkJPMTYJCTAJLyogQ29ublggVHVyYm8xNiBwa2cNCiovDQorI2RlZmluZSBYQ0hBTF9IQVZF X0JCUDE2CQkwCS8qIENvbm5YIEJCUDE2IHBrZyAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9GTElY MwkJMAkvKiBiYXNpYyAzLXdheSBGTElYDQpvcHRpb24gKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVf R1JJVlBFUCAgICAgICAgICAgICAgMCAgIC8qICBHUklWUEVQIGlzIEdlbmVyYWwNClJlbGVhc2Ug b2YgSVZQRVAgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfR1JJVlBFUF9ISVNUT0dSQU0gICAgMCAg IC8qIEhpc3RvZ3JhbSBvcHRpb24gb24NCkdSSVZQRVAgKi8NCisNCisNCisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQotLQ0KKwkJCQlNSVNDDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0qLw0KKw0KKyNkZWZpbmUgWENIQUxf TlVNX0xPQURTVE9SRV9VTklUUwkxCS8qIGxvYWQvc3RvcmUgdW5pdHMgKi8NCisjZGVmaW5lIFhD SEFMX05VTV9XUklURUJVRkZFUl9FTlRSSUVTCTQJLyogc2l6ZSBvZiB3cml0ZQ0KYnVmZmVyICov DQorI2RlZmluZSBYQ0hBTF9JTlNUX0ZFVENIX1dJRFRICQk0CS8qIGluc3RyLWZldGNoIHdpZHRo DQppbiBieXRlcyAqLw0KKyNkZWZpbmUgWENIQUxfREFUQV9XSURUSAkJNAkvKiBkYXRhIHdpZHRo IGluIGJ5dGVzDQoqLw0KKyNkZWZpbmUgWENIQUxfREFUQV9QSVBFX0RFTEFZCQkyCS8qIGQtc2lk ZSBwaXBlbGluZQ0KZGVsYXkNCisJCQkJCQkgICAoMSA9IDUtc3RhZ2UsIDIgPQ0KNy1zdGFnZSkg Ki8NCisjZGVmaW5lIFhDSEFMX0NMT0NLX0dBVElOR19HTE9CQUwJMQkvKiBnbG9iYWwgY2xvY2sg Z2F0aW5nDQoqLw0KKyNkZWZpbmUgWENIQUxfQ0xPQ0tfR0FUSU5HX0ZVTkNVTklUCTEJLyogZnVu Y3QuIHVuaXQgY2xvY2sNCmdhdGluZyAqLw0KKy8qICBJbiBUMTA1MCwgYXBwbGllcyB0byBzZWxl Y3RlZCBjb3JlIGxvYWQgYW5kIHN0b3JlIGluc3RydWN0aW9ucw0KKHNlZSBJU0EpOiAqLw0KKyNk ZWZpbmUgWENIQUxfVU5BTElHTkVEX0xPQURfRVhDRVBUSU9OCTAJLyogdW5hbGlnbmVkIGxvYWRz DQpjYXVzZSBleGMuICovDQorI2RlZmluZSBYQ0hBTF9VTkFMSUdORURfU1RPUkVfRVhDRVBUSU9O CTAJLyogdW5hbGlnbmVkDQpzdG9yZXMgY2F1c2UgZXhjLiovDQorI2RlZmluZSBYQ0hBTF9VTkFM SUdORURfTE9BRF9IVwkJMQkvKiB1bmFsaWduZWQNCmxvYWRzIHdvcmsgaW4gaHcgKi8NCisjZGVm aW5lIFhDSEFMX1VOQUxJR05FRF9TVE9SRV9IVwkxCS8qIHVuYWxpZ25lZCBzdG9yZXMNCndvcmsg aW4gaHcqLw0KKw0KKyNkZWZpbmUgWENIQUxfU1dfVkVSU0lPTgkJMTEwMDAwMwkvKiBzdyB2ZXJz aW9uDQpvZiB0aGlzIGhlYWRlciAqLw0KKw0KKyNkZWZpbmUgWENIQUxfQ09SRV9JRAkJCSJlc3Az Ml92M180OV9wcm9kIgkvKg0KYWxwaGFudW0gY29yZSBuYW1lDQorCQkJCQkJICAgKENvcmVJRCkg c2V0IGluIHRoZQ0KWHRlbnNhDQorCQkJCQkJICAgUHJvY2Vzc29yIEdlbmVyYXRvcg0KKi8NCisN CisjZGVmaW5lIFhDSEFMX0JVSUxEX1VOSVFVRV9JRAkJMHgwMDA1RkU5NgkvKiAyMi1iaXQgc3cN CmJ1aWxkIElEICovDQorDQorLyoNCisgKiAgVGhlc2UgZGVmaW5pdGlvbnMgZGVzY3JpYmUgdGhl IGhhcmR3YXJlIHRhcmdldGVkIGJ5IHRoaXMgc29mdHdhcmUuDQorICovDQorI2RlZmluZSBYQ0hB TF9IV19DT05GSUdJRDAJCTB4QzJCQ0ZGRkUJLyogQ29uZmlnSUQgaGkNCjMyIGJpdHMqLw0KKyNk ZWZpbmUgWENIQUxfSFdfQ09ORklHSUQxCQkweDFDQzVGRTk2CS8qIENvbmZpZ0lEIGxvDQozMiBi aXRzKi8NCisjZGVmaW5lIFhDSEFMX0hXX1ZFUlNJT05fTkFNRQkJIkxYNi4wLjMiCS8qIGZ1bGwN CnZlcnNpb24gbmFtZSAqLw0KKyNkZWZpbmUgWENIQUxfSFdfVkVSU0lPTl9NQUpPUgkJMjYwMAkv KiBtYWpvciB2ZXIjIG9mDQp0YXJnZXRlZCBodyAqLw0KKyNkZWZpbmUgWENIQUxfSFdfVkVSU0lP Tl9NSU5PUgkJMwkvKiBtaW5vciB2ZXIjIG9mDQp0YXJnZXRlZCBodyAqLw0KKyNkZWZpbmUgWENI QUxfSFdfVkVSU0lPTgkJMjYwMDAzCS8qIG1ham9yKjEwMCttaW5vciAqLw0KKyNkZWZpbmUgWENI QUxfSFdfUkVMX0xYNgkJMQ0KKyNkZWZpbmUgWENIQUxfSFdfUkVMX0xYNl8wCQkxDQorI2RlZmlu ZSBYQ0hBTF9IV19SRUxfTFg2XzBfMwkJMQ0KKyNkZWZpbmUgWENIQUxfSFdfQ09ORklHSURfUkVM SUFCTEUJMQ0KKy8qICBJZiBzb2Z0d2FyZSB0YXJnZXRzIGEgKnJhbmdlKiBvZiBoYXJkd2FyZSB2 ZXJzaW9ucywgdGhlc2UgYXJlIHRoZQ0KYm91bmRzOiAqLw0KKyNkZWZpbmUgWENIQUxfSFdfTUlO X1ZFUlNJT05fTUFKT1IJMjYwMAkvKiBtYWpvciB2IG9mIGVhcmxpZXN0DQp0Z3QgaHcgKi8NCisj ZGVmaW5lIFhDSEFMX0hXX01JTl9WRVJTSU9OX01JTk9SCTMJLyogbWlub3IgdiBvZiBlYXJsaWVz dA0KdGd0IGh3ICovDQorI2RlZmluZSBYQ0hBTF9IV19NSU5fVkVSU0lPTgkJMjYwMDAzCS8qIGVh cmxpZXN0IHRhcmdldGVkDQpodyAqLw0KKyNkZWZpbmUgWENIQUxfSFdfTUFYX1ZFUlNJT05fTUFK T1IJMjYwMAkvKiBtYWpvciB2IG9mIGxhdGVzdA0KdGd0IGh3ICovDQorI2RlZmluZSBYQ0hBTF9I V19NQVhfVkVSU0lPTl9NSU5PUgkzCS8qIG1pbm9yIHYgb2YgbGF0ZXN0DQp0Z3QgaHcgKi8NCisj ZGVmaW5lIFhDSEFMX0hXX01BWF9WRVJTSU9OCQkyNjAwMDMJLyogbGF0ZXN0IHRhcmdldGVkIGh3 DQoqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tDQorCQkJCUNBQ0hFDQorICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KLS0qLw0KKw0KKyNkZWZpbmUgWENIQUxfSUNBQ0hFX0xJTkVTSVpFCQk0CS8qIEktY2FjaGUg bGluZSBzaXplDQppbiBieXRlcyAqLw0KKyNkZWZpbmUgWENIQUxfRENBQ0hFX0xJTkVTSVpFCQk0 CS8qIEQtY2FjaGUgbGluZSBzaXplDQppbiBieXRlcyAqLw0KKyNkZWZpbmUgWENIQUxfSUNBQ0hF X0xJTkVXSURUSAkJMgkvKiBsb2cyKEkgbGluZSBzaXplIGluDQpieXRlcykgKi8NCisjZGVmaW5l IFhDSEFMX0RDQUNIRV9MSU5FV0lEVEgJCTIJLyogbG9nMihEIGxpbmUgc2l6ZSBpbg0KYnl0ZXMp ICovDQorDQorI2RlZmluZSBYQ0hBTF9JQ0FDSEVfU0laRQkJMAkvKiBJLWNhY2hlIHNpemUgaW4N CmJ5dGVzIG9yIDAgKi8NCisjZGVmaW5lIFhDSEFMX0RDQUNIRV9TSVpFCQkwCS8qIEQtY2FjaGUg c2l6ZSBpbg0KYnl0ZXMgb3IgMCAqLw0KKw0KKyNkZWZpbmUgWENIQUxfRENBQ0hFX0lTX1dSSVRF QkFDSwkwCS8qIHdyaXRlYmFjayBmZWF0dXJlDQoqLw0KKyNkZWZpbmUgWENIQUxfRENBQ0hFX0lT X0NPSEVSRU5UCTAJLyogTVAgY29oZXJlbmNlDQpmZWF0dXJlICovDQorDQorI2RlZmluZSBYQ0hB TF9IQVZFX1BSRUZFVENICQkwCS8qIFBSRUZDVEwgcmVnaXN0ZXIgKi8NCisjZGVmaW5lIFhDSEFM X0hBVkVfUFJFRkVUQ0hfTDEJCTAJLyogcHJlZmV0Y2ggdG8gTDENCmRjYWNoZSAqLw0KKyNkZWZp bmUgWENIQUxfUFJFRkVUQ0hfQ0FTVE9VVF9MSU5FUwkwCS8qIGRjYWNoZSBwcmVmLg0KY2FzdG91 dCBidWZzeiAqLw0KKyNkZWZpbmUgWENIQUxfUFJFRkVUQ0hfRU5UUklFUwkJMAkvKiBjYWNoZSBw cmVmZXRjaA0KZW50cmllcyAqLw0KKyNkZWZpbmUgWENIQUxfUFJFRkVUQ0hfQkxPQ0tfRU5UUklF UwkwCS8qIHByZWZldGNoIGJsb2NrDQpzdHJlYW1zICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0NB Q0hFX0JMT0NLT1BTCTAJLyogYmxvY2sgcHJlZmV0Y2ggZm9yDQpjYWNoZXMgKi8NCisjZGVmaW5l IFhDSEFMX0hBVkVfSUNBQ0hFX1RFU1QJCTAJLyogSWNhY2hlIHRlc3QNCmluc3RydWN0aW9ucyAq Lw0KKyNkZWZpbmUgWENIQUxfSEFWRV9EQ0FDSEVfVEVTVAkJMAkvKiBEY2FjaGUgdGVzdA0KaW5z dHJ1Y3Rpb25zICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0lDQUNIRV9EWU5fV0FZUwkwCS8qIElj YWNoZSBkeW5hbWljIHdheQ0Kc3VwcG9ydCAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9EQ0FDSEVf RFlOX1dBWVMJMAkvKiBEY2FjaGUgZHluYW1pYyB3YXkNCnN1cHBvcnQgKi8NCisNCisNCisNCisN CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqDQoqKioqKioqDQorICAgIFBhcmFtZXRlcnMgVXNlZnVsIGZvciBQUklW SUxFR0VEIChTdXBlcnZpc29yeSBvciBOb24tVmlydHVhbGl6ZWQpDQpDb2RlDQorDQoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKg0KKioqKiovDQorDQorDQorI2lmbmRlZiBYVEVOU0FfSEFMX05PTl9QUklWSUxFR0VE X09OTFkNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLQ0KKwkJCQlDQUNIRQ0KKyAgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Ci0tKi8NCisNCisjZGVmaW5lIFhDSEFMX0hBVkVfUElGCQkJMQkvKiBhbnkgb3V0Ym91bmQgUElG DQpwcmVzZW50ICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0FYSQkJCTAJLyogQVhJIGJ1cyAqLw0K Kw0KKyNkZWZpbmUgWENIQUxfSEFWRV9QSUZfV1JfUkVTUAkJCTAJLyogcGlmIHdyaXRlDQpyZXNw b25zZSAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9QSUZfUkVRX0FUVFIJCQkwCS8qIHBpZg0KYXR0 cmlidXRlICovDQorDQorLyogIElmIHByZXNlbnQsIGNhY2hlIHNpemUgaW4gYnl0ZXMgPT0gKHdh eXMgKiAyXihsaW5ld2lkdGggKw0Kc2V0d2lkdGgpKS4gICovDQorDQorLyogIE51bWJlciBvZiBj YWNoZSBzZXRzIGluIGxvZzIobGluZXMgcGVyIHdheSk6ICAqLw0KKyNkZWZpbmUgWENIQUxfSUNB Q0hFX1NFVFdJRFRICQkwDQorI2RlZmluZSBYQ0hBTF9EQ0FDSEVfU0VUV0lEVEgJCTANCisNCisv KiAgQ2FjaGUgc2V0IGFzc29jaWF0aXZpdHkgKG51bWJlciBvZiB3YXlzKTogICovDQorI2RlZmlu ZSBYQ0hBTF9JQ0FDSEVfV0FZUwkJMQ0KKyNkZWZpbmUgWENIQUxfRENBQ0hFX1dBWVMJCTENCisN CisvKiAgQ2FjaGUgZmVhdHVyZXM6ICAqLw0KKyNkZWZpbmUgWENIQUxfSUNBQ0hFX0xJTkVfTE9D S0FCTEUJMA0KKyNkZWZpbmUgWENIQUxfRENBQ0hFX0xJTkVfTE9DS0FCTEUJMA0KKyNkZWZpbmUg WENIQUxfSUNBQ0hFX0VDQ19QQVJJVFkJCTANCisjZGVmaW5lIFhDSEFMX0RDQUNIRV9FQ0NfUEFS SVRZCQkwDQorDQorLyogIENhY2hlIGFjY2VzcyBzaXplIGluIGJ5dGVzIChhZmZlY3RzIG9wZXJh dGlvbiBvZiBTSUNXDQppbnN0cnVjdGlvbik6ICAqLw0KKyNkZWZpbmUgWENIQUxfSUNBQ0hFX0FD Q0VTU19TSVpFCTENCisjZGVmaW5lIFhDSEFMX0RDQUNIRV9BQ0NFU1NfU0laRQkxDQorDQorI2Rl ZmluZSBYQ0hBTF9EQ0FDSEVfQkFOS1MJCTAJLyogbnVtYmVyIG9mIGJhbmtzICovDQorDQorLyog IE51bWJlciBvZiBlbmNvZGVkIGNhY2hlIGF0dHIgYml0cyAoc2VlIDx4dGVuc2EvaGFsLmg+IGZv ciBkZWNvZGVkDQpiaXRzKTogICovDQorI2RlZmluZSBYQ0hBTF9DQV9CSVRTCQkJNA0KKw0KKw0K Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCi0tDQorCQkJSU5URVJOQUwgSS9EIFJBTS9ST01zIGFuZCBYTE1JDQor ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KLS0qLw0KKw0KKyNkZWZpbmUgWENIQUxfTlVNX0lOU1RST00JCTEJLyog bnVtYmVyIG9mIGNvcmUNCmluc3RyLiBST01zICovDQorI2RlZmluZSBYQ0hBTF9OVU1fSU5TVFJB TQkJMgkvKiBudW1iZXIgb2YgY29yZQ0KaW5zdHIuIFJBTXMgKi8NCisjZGVmaW5lIFhDSEFMX05V TV9EQVRBUk9NCQkxCS8qIG51bWJlciBvZiBjb3JlIGRhdGENClJPTXMgKi8NCisjZGVmaW5lIFhD SEFMX05VTV9EQVRBUkFNCQkyCS8qIG51bWJlciBvZiBjb3JlIGRhdGENClJBTXMgKi8NCisjZGVm aW5lIFhDSEFMX05VTV9VUkFNCQkJMAkvKiBudW1iZXIgb2YgY29yZQ0KdW5pZmllZCBSQU1zKi8N CisjZGVmaW5lIFhDSEFMX05VTV9YTE1JCQkJMQkvKiBudW1iZXIgb2YgY29yZSBYTE1JDQpwb3J0 cyAqLw0KKw0KKy8qICBJbnN0cnVjdGlvbiBST00gMDogICovDQorI2RlZmluZSBYQ0hBTF9JTlNU Uk9NMF9WQUREUgkJMHg0MDgwMDAwMAkvKiB2aXJ0dWFsDQphZGRyZXNzICovDQorI2RlZmluZSBY Q0hBTF9JTlNUUk9NMF9QQUREUgkJMHg0MDgwMDAwMAkvKiBwaHlzaWNhbA0KYWRkcmVzcyAqLw0K KyNkZWZpbmUgWENIQUxfSU5TVFJPTTBfU0laRQkJNDE5NDMwNAkvKiBzaXplIGluDQpieXRlcyAq Lw0KKyNkZWZpbmUgWENIQUxfSU5TVFJPTTBfRUNDX1BBUklUWQkwCS8qIEVDQy9wYXJpdHkgdHlw ZSwNCjA9bm9uZSAqLw0KKw0KKy8qICBJbnN0cnVjdGlvbiBSQU0gMDogICovDQorI2RlZmluZSBY Q0hBTF9JTlNUUkFNMF9WQUREUgkJMHg0MDAwMDAwMAkvKiB2aXJ0dWFsDQphZGRyZXNzICovDQor I2RlZmluZSBYQ0hBTF9JTlNUUkFNMF9QQUREUgkJMHg0MDAwMDAwMAkvKiBwaHlzaWNhbA0KYWRk cmVzcyAqLw0KKyNkZWZpbmUgWENIQUxfSU5TVFJBTTBfU0laRQkJNDE5NDMwNAkvKiBzaXplIGlu DQpieXRlcyAqLw0KKyNkZWZpbmUgWENIQUxfSU5TVFJBTTBfRUNDX1BBUklUWQkwCS8qIEVDQy9w YXJpdHkgdHlwZSwNCjA9bm9uZSAqLw0KKw0KKy8qICBJbnN0cnVjdGlvbiBSQU0gMTogICovDQor I2RlZmluZSBYQ0hBTF9JTlNUUkFNMV9WQUREUgkJMHg0MDQwMDAwMAkvKiB2aXJ0dWFsDQphZGRy ZXNzICovDQorI2RlZmluZSBYQ0hBTF9JTlNUUkFNMV9QQUREUgkJMHg0MDQwMDAwMAkvKiBwaHlz aWNhbA0KYWRkcmVzcyAqLw0KKyNkZWZpbmUgWENIQUxfSU5TVFJBTTFfU0laRQkJNDE5NDMwNAkv KiBzaXplIGluDQpieXRlcyAqLw0KKyNkZWZpbmUgWENIQUxfSU5TVFJBTTFfRUNDX1BBUklUWQkw CS8qIEVDQy9wYXJpdHkgdHlwZSwNCjA9bm9uZSAqLw0KKw0KKy8qICBEYXRhIFJPTSAwOiAgKi8N CisjZGVmaW5lIFhDSEFMX0RBVEFST00wX1ZBRERSCQkweDNGNDAwMDAwCS8qIHZpcnR1YWwNCmFk ZHJlc3MgKi8NCisjZGVmaW5lIFhDSEFMX0RBVEFST00wX1BBRERSCQkweDNGNDAwMDAwCS8qIHBo eXNpY2FsDQphZGRyZXNzICovDQorI2RlZmluZSBYQ0hBTF9EQVRBUk9NMF9TSVpFCQk0MTk0MzA0 CS8qIHNpemUgaW4NCmJ5dGVzICovDQorI2RlZmluZSBYQ0hBTF9EQVRBUk9NMF9FQ0NfUEFSSVRZ CTAJLyogRUNDL3Bhcml0eSB0eXBlLA0KMD1ub25lICovDQorI2RlZmluZSBYQ0hBTF9EQVRBUk9N MF9CQU5LUwkJMQkvKiBudW1iZXIgb2YgYmFua3MgKi8NCisNCisvKiAgRGF0YSBSQU0gMDogICov DQorI2RlZmluZSBYQ0hBTF9EQVRBUkFNMF9WQUREUgkJMHgzRkY4MDAwMAkvKiB2aXJ0dWFsDQph ZGRyZXNzICovDQorI2RlZmluZSBYQ0hBTF9EQVRBUkFNMF9QQUREUgkJMHgzRkY4MDAwMAkvKiBw aHlzaWNhbA0KYWRkcmVzcyAqLw0KKyNkZWZpbmUgWENIQUxfREFUQVJBTTBfU0laRQkJNTI0Mjg4 CS8qIHNpemUgaW4gYnl0ZXMgKi8NCisjZGVmaW5lIFhDSEFMX0RBVEFSQU0wX0VDQ19QQVJJVFkJ MAkvKiBFQ0MvcGFyaXR5IHR5cGUsDQowPW5vbmUgKi8NCisjZGVmaW5lIFhDSEFMX0RBVEFSQU0w X0JBTktTCQkxCS8qIG51bWJlciBvZiBiYW5rcyAqLw0KKw0KKy8qICBEYXRhIFJBTSAxOiAgKi8N CisjZGVmaW5lIFhDSEFMX0RBVEFSQU0xX1ZBRERSCQkweDNGODAwMDAwCS8qIHZpcnR1YWwNCmFk ZHJlc3MgKi8NCisjZGVmaW5lIFhDSEFMX0RBVEFSQU0xX1BBRERSCQkweDNGODAwMDAwCS8qIHBo eXNpY2FsDQphZGRyZXNzICovDQorI2RlZmluZSBYQ0hBTF9EQVRBUkFNMV9TSVpFCQk0MTk0MzA0 CS8qIHNpemUgaW4NCmJ5dGVzICovDQorI2RlZmluZSBYQ0hBTF9EQVRBUkFNMV9FQ0NfUEFSSVRZ CTAJLyogRUNDL3Bhcml0eSB0eXBlLA0KMD1ub25lICovDQorI2RlZmluZSBYQ0hBTF9EQVRBUkFN MV9CQU5LUwkJMQkvKiBudW1iZXIgb2YgYmFua3MgKi8NCisNCisvKiAgWExNSSBQb3J0IDA6ICAq Lw0KKyNkZWZpbmUgWENIQUxfWExNSTBfVkFERFIJCTB4M0ZGMDAwMDAJLyogdmlydHVhbA0KYWRk cmVzcyAqLw0KKyNkZWZpbmUgWENIQUxfWExNSTBfUEFERFIJCTB4M0ZGMDAwMDAJLyogcGh5c2lj YWwNCmFkZHJlc3MgKi8NCisjZGVmaW5lIFhDSEFMX1hMTUkwX1NJWkUJCTUyNDI4OAkvKiBzaXpl IGluIGJ5dGVzICovDQorI2RlZmluZSBYQ0hBTF9YTE1JMF9FQ0NfUEFSSVRZCTAJLyogRUNDL3Bh cml0eSB0eXBlLCAwPW5vbmUgKi8NCisNCisjZGVmaW5lIFhDSEFMX0hBVkVfSU1FTV9MT0FEU1RP UkUJMQkvKiBjYW4gbG9hZC9zdG9yZSB0bw0KSVJPTS9JUkFNKi8NCisNCisNCisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQotLQ0KKwkJCUlOVEVSUlVQVFMgYW5kIFRJTUVSUw0KKyAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tKi8N CisNCisjZGVmaW5lIFhDSEFMX0hBVkVfSU5URVJSVVBUUwkJMQkvKiBpbnRlcnJ1cHQgb3B0aW9u ICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0hJR0hQUklfSU5URVJSVVBUUwkxCS8qIG1lZC9oaWdo LXByaS4NCmludGVycnVwdHMgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfTk1JCQkJMQkvKiBub24t bWFza2FibGUNCmludGVycnVwdCAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9DQ09VTlQJCTEJLyog Q0NPVU5UIHJlZy4gKHRpbWVyDQpvcHRpb24pICovDQorI2RlZmluZSBYQ0hBTF9OVU1fVElNRVJT CQkzCS8qIG51bWJlciBvZiBDQ09NUEFSRW4NCnJlZ3MgKi8NCisjZGVmaW5lIFhDSEFMX05VTV9J TlRFUlJVUFRTCQkzMgkvKiBudW1iZXIgb2YNCmludGVycnVwdHMgKi8NCisjZGVmaW5lIFhDSEFM X05VTV9JTlRFUlJVUFRTX0xPRzIJNQkvKg0KY2VpbChsb2cyKE5VTV9JTlRFUlJVUFRTKSkgKi8N CisjZGVmaW5lIFhDSEFMX05VTV9FWFRJTlRFUlJVUFRTCQkyNgkvKiBudW0gb2YNCmV4dGVybmFs IGludGVycnVwdHMgKi8NCisjZGVmaW5lIFhDSEFMX05VTV9JTlRMRVZFTFMJCTYJLyogbnVtYmVy IG9mIGludGVycnVwdA0KbGV2ZWxzDQorCQkJCQkJICAgKG5vdCBpbmNsdWRpbmcNCmxldmVsIHpl cm8pICovDQorI2RlZmluZSBYQ0hBTF9FWENNX0xFVkVMCQkzCS8qIGxldmVsIG1hc2tlZCBieQ0K UFMuRVhDTSAqLw0KKwkvKiAoYWx3YXlzIDEgaW4gWEVBMTsgbGV2ZWxzIDIgLi4gRVhDTV9MRVZF TCBhcmUgIm1lZGl1bQ0KcHJpb3JpdHkiKSAqLw0KKw0KKy8qICBNYXNrcyBvZiBpbnRlcnJ1cHRz IGF0IGVhY2ggaW50ZXJydXB0IGxldmVsOiAgKi8NCisjZGVmaW5lIFhDSEFMX0lOVExFVkVMMV9N QVNLCQkweDAwMDYzN0ZGDQorI2RlZmluZSBYQ0hBTF9JTlRMRVZFTDJfTUFTSwkJMHgwMDM4MDAw MA0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUwzX01BU0sJCTB4MjhDMDg4MDANCisjZGVmaW5lIFhD SEFMX0lOVExFVkVMNF9NQVNLCQkweDUzMDAwMDAwDQorI2RlZmluZSBYQ0hBTF9JTlRMRVZFTDVf TUFTSwkJMHg4NDAxMDAwMA0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUw2X01BU0sJCTB4MDAwMDAw MDANCisjZGVmaW5lIFhDSEFMX0lOVExFVkVMN19NQVNLCQkweDAwMDA0MDAwDQorDQorLyogIE1h c2tzIG9mIGludGVycnVwdHMgYXQgZWFjaCByYW5nZSAxLi5uIG9mIGludGVycnVwdCBsZXZlbHM6 ICAqLw0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUwxX0FOREJFTE9XX01BU0sJMHgwMDA2MzdGRg0K KyNkZWZpbmUgWENIQUxfSU5UTEVWRUwyX0FOREJFTE9XX01BU0sJMHgwMDNFMzdGRg0KKyNkZWZp bmUgWENIQUxfSU5UTEVWRUwzX0FOREJFTE9XX01BU0sJMHgyOEZFQkZGRg0KKyNkZWZpbmUgWENI QUxfSU5UTEVWRUw0X0FOREJFTE9XX01BU0sJMHg3QkZFQkZGRg0KKyNkZWZpbmUgWENIQUxfSU5U TEVWRUw1X0FOREJFTE9XX01BU0sJMHhGRkZGQkZGRg0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUw2 X0FOREJFTE9XX01BU0sJMHhGRkZGQkZGRg0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUw3X0FOREJF TE9XX01BU0sJMHhGRkZGRkZGRg0KKw0KKy8qICBMZXZlbCBvZiBlYWNoIGludGVycnVwdDogICov DQorI2RlZmluZSBYQ0hBTF9JTlQwX0xFVkVMCQkxDQorI2RlZmluZSBYQ0hBTF9JTlQxX0xFVkVM CQkxDQorI2RlZmluZSBYQ0hBTF9JTlQyX0xFVkVMCQkxDQorI2RlZmluZSBYQ0hBTF9JTlQzX0xF VkVMCQkxDQorI2RlZmluZSBYQ0hBTF9JTlQ0X0xFVkVMCQkxDQorI2RlZmluZSBYQ0hBTF9JTlQ1 X0xFVkVMCQkxDQorI2RlZmluZSBYQ0hBTF9JTlQ2X0xFVkVMCQkxDQorI2RlZmluZSBYQ0hBTF9J TlQ3X0xFVkVMCQkxDQorI2RlZmluZSBYQ0hBTF9JTlQ4X0xFVkVMCQkxDQorI2RlZmluZSBYQ0hB TF9JTlQ5X0xFVkVMCQkxDQorI2RlZmluZSBYQ0hBTF9JTlQxMF9MRVZFTAkJMQ0KKyNkZWZpbmUg WENIQUxfSU5UMTFfTEVWRUwJCTMNCisjZGVmaW5lIFhDSEFMX0lOVDEyX0xFVkVMCQkxDQorI2Rl ZmluZSBYQ0hBTF9JTlQxM19MRVZFTAkJMQ0KKyNkZWZpbmUgWENIQUxfSU5UMTRfTEVWRUwJCTcN CisjZGVmaW5lIFhDSEFMX0lOVDE1X0xFVkVMCQkzDQorI2RlZmluZSBYQ0hBTF9JTlQxNl9MRVZF TAkJNQ0KKyNkZWZpbmUgWENIQUxfSU5UMTdfTEVWRUwJCTENCisjZGVmaW5lIFhDSEFMX0lOVDE4 X0xFVkVMCQkxDQorI2RlZmluZSBYQ0hBTF9JTlQxOV9MRVZFTAkJMg0KKyNkZWZpbmUgWENIQUxf SU5UMjBfTEVWRUwJCTINCisjZGVmaW5lIFhDSEFMX0lOVDIxX0xFVkVMCQkyDQorI2RlZmluZSBY Q0hBTF9JTlQyMl9MRVZFTAkJMw0KKyNkZWZpbmUgWENIQUxfSU5UMjNfTEVWRUwJCTMNCisjZGVm aW5lIFhDSEFMX0lOVDI0X0xFVkVMCQk0DQorI2RlZmluZSBYQ0hBTF9JTlQyNV9MRVZFTAkJNA0K KyNkZWZpbmUgWENIQUxfSU5UMjZfTEVWRUwJCTUNCisjZGVmaW5lIFhDSEFMX0lOVDI3X0xFVkVM CQkzDQorI2RlZmluZSBYQ0hBTF9JTlQyOF9MRVZFTAkJNA0KKyNkZWZpbmUgWENIQUxfSU5UMjlf TEVWRUwJCTMNCisjZGVmaW5lIFhDSEFMX0lOVDMwX0xFVkVMCQk0DQorI2RlZmluZSBYQ0hBTF9J TlQzMV9MRVZFTAkJNQ0KKyNkZWZpbmUgWENIQUxfREVCVUdMRVZFTAkJNgkvKiBkZWJ1ZyBpbnRl cnJ1cHQNCmxldmVsICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0RFQlVHX0VYVEVSTl9JTlQJMQkv KiBPQ0QgZXh0ZXJuYWwgZGINCmludGVycnVwdCAqLw0KKyNkZWZpbmUgWENIQUxfTk1JTEVWRUwJ CQk3CS8qIE5NSSAibGV2ZWwiIChmb3INCnVzZSB3aXRoDQorCQkJCQkJICAgRVhDU0FWRS9FUFMv RVBDX24sDQpSRkkgbikgKi8NCisNCisvKiAgVHlwZSBvZiBlYWNoIGludGVycnVwdDogICovDQor I2RlZmluZSBYQ0hBTF9JTlQwX1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2Rl ZmluZSBYQ0hBTF9JTlQxX1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmlu ZSBYQ0hBTF9JTlQyX1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmluZSBY Q0hBTF9JTlQzX1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmluZSBYQ0hB TF9JTlQ0X1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmluZSBYQ0hBTF9J TlQ1X1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmluZSBYQ0hBTF9JTlQ2 X1RZUEUgCVhUSEFMX0lOVFRZUEVfVElNRVINCisjZGVmaW5lIFhDSEFMX0lOVDdfVFlQRSAJWFRI QUxfSU5UVFlQRV9TT0ZUV0FSRQ0KKyNkZWZpbmUgWENIQUxfSU5UOF9UWVBFIAlYVEhBTF9JTlRU WVBFX0VYVEVSTl9MRVZFTA0KKyNkZWZpbmUgWENIQUxfSU5UOV9UWVBFIAlYVEhBTF9JTlRUWVBF X0VYVEVSTl9MRVZFTA0KKyNkZWZpbmUgWENIQUxfSU5UMTBfVFlQRSAJWFRIQUxfSU5UVFlQRV9F WFRFUk5fRURHRQ0KKyNkZWZpbmUgWENIQUxfSU5UMTFfVFlQRSAJWFRIQUxfSU5UVFlQRV9QUk9G SUxJTkcNCisjZGVmaW5lIFhDSEFMX0lOVDEyX1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJOX0xF VkVMDQorI2RlZmluZSBYQ0hBTF9JTlQxM19UWVBFIAlYVEhBTF9JTlRUWVBFX0VYVEVSTl9MRVZF TA0KKyNkZWZpbmUgWENIQUxfSU5UMTRfVFlQRSAJWFRIQUxfSU5UVFlQRV9OTUkNCisjZGVmaW5l IFhDSEFMX0lOVDE1X1RZUEUgCVhUSEFMX0lOVFRZUEVfVElNRVINCisjZGVmaW5lIFhDSEFMX0lO VDE2X1RZUEUgCVhUSEFMX0lOVFRZUEVfVElNRVINCisjZGVmaW5lIFhDSEFMX0lOVDE3X1RZUEUg CVhUSEFMX0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmluZSBYQ0hBTF9JTlQxOF9UWVBFIAlY VEhBTF9JTlRUWVBFX0VYVEVSTl9MRVZFTA0KKyNkZWZpbmUgWENIQUxfSU5UMTlfVFlQRSAJWFRI QUxfSU5UVFlQRV9FWFRFUk5fTEVWRUwNCisjZGVmaW5lIFhDSEFMX0lOVDIwX1RZUEUgCVhUSEFM X0lOVFRZUEVfRVhURVJOX0xFVkVMDQorI2RlZmluZSBYQ0hBTF9JTlQyMV9UWVBFIAlYVEhBTF9J TlRUWVBFX0VYVEVSTl9MRVZFTA0KKyNkZWZpbmUgWENIQUxfSU5UMjJfVFlQRSAJWFRIQUxfSU5U VFlQRV9FWFRFUk5fRURHRQ0KKyNkZWZpbmUgWENIQUxfSU5UMjNfVFlQRSAJWFRIQUxfSU5UVFlQ RV9FWFRFUk5fTEVWRUwNCisjZGVmaW5lIFhDSEFMX0lOVDI0X1RZUEUgCVhUSEFMX0lOVFRZUEVf RVhURVJOX0xFVkVMDQorI2RlZmluZSBYQ0hBTF9JTlQyNV9UWVBFIAlYVEhBTF9JTlRUWVBFX0VY VEVSTl9MRVZFTA0KKyNkZWZpbmUgWENIQUxfSU5UMjZfVFlQRSAJWFRIQUxfSU5UVFlQRV9FWFRF Uk5fTEVWRUwNCisjZGVmaW5lIFhDSEFMX0lOVDI3X1RZUEUgCVhUSEFMX0lOVFRZUEVfRVhURVJO X0xFVkVMDQorI2RlZmluZSBYQ0hBTF9JTlQyOF9UWVBFIAlYVEhBTF9JTlRUWVBFX0VYVEVSTl9F REdFDQorI2RlZmluZSBYQ0hBTF9JTlQyOV9UWVBFIAlYVEhBTF9JTlRUWVBFX1NPRlRXQVJFDQor I2RlZmluZSBYQ0hBTF9JTlQzMF9UWVBFIAlYVEhBTF9JTlRUWVBFX0VYVEVSTl9FREdFDQorI2Rl ZmluZSBYQ0hBTF9JTlQzMV9UWVBFIAlYVEhBTF9JTlRUWVBFX0VYVEVSTl9MRVZFTA0KKw0KKy8q ICBNYXNrcyBvZiBpbnRlcnJ1cHRzIGZvciBlYWNoIHR5cGUgb2YgaW50ZXJydXB0OiAgKi8NCisj ZGVmaW5lIFhDSEFMX0lOVFRZUEVfTUFTS19VTkNPTkZJR1VSRUQJMHgwMDAwMDAwMA0KKyNkZWZp bmUgWENIQUxfSU5UVFlQRV9NQVNLX1NPRlRXQVJFCTB4MjAwMDAwODANCisjZGVmaW5lIFhDSEFM X0lOVFRZUEVfTUFTS19FWFRFUk5fRURHRQkweDUwNDAwNDAwDQorI2RlZmluZSBYQ0hBTF9JTlRU WVBFX01BU0tfRVhURVJOX0xFVkVMCTB4OEZCRTMzM0YNCisjZGVmaW5lIFhDSEFMX0lOVFRZUEVf TUFTS19USU1FUgkweDAwMDE4MDQwDQorI2RlZmluZSBYQ0hBTF9JTlRUWVBFX01BU0tfTk1JCQkw eDAwMDA0MDAwDQorI2RlZmluZSBYQ0hBTF9JTlRUWVBFX01BU0tfV1JJVEVfRVJST1IJMHgwMDAw MDAwMA0KKyNkZWZpbmUgWENIQUxfSU5UVFlQRV9NQVNLX1BST0ZJTElORwkweDAwMDAwODAwDQor DQorLyogIEludGVycnVwdCBudW1iZXJzIGFzc2lnbmVkIHRvIHNwZWNpZmljIGludGVycnVwdCBz b3VyY2VzOiAgKi8NCisjZGVmaW5lIFhDSEFMX1RJTUVSMF9JTlRFUlJVUFQJCTYJLyogQ0NPTVBB UkUwICovDQorI2RlZmluZSBYQ0hBTF9USU1FUjFfSU5URVJSVVBUCQkxNQkvKiBDQ09NUEFSRTEg Ki8NCisjZGVmaW5lIFhDSEFMX1RJTUVSMl9JTlRFUlJVUFQJCTE2CS8qIENDT01QQVJFMiAqLw0K KyNkZWZpbmUgWENIQUxfVElNRVIzX0lOVEVSUlVQVAkJWFRIQUxfVElNRVJfVU5DT05GSUdVUkVE DQorI2RlZmluZSBYQ0hBTF9OTUlfSU5URVJSVVBUCQkxNAkvKiBub24tbWFza2FibGUNCmludGVy cnVwdCAqLw0KKyNkZWZpbmUgWENIQUxfUFJPRklMSU5HX0lOVEVSUlVQVAkxMQkvKiBwcm9maWxp bmcgaW50ZXJydXB0DQoqLw0KKw0KKy8qICBJbnRlcnJ1cHQgbnVtYmVycyBmb3IgbGV2ZWxzIGF0 IHdoaWNoIG9ubHkgb25lIGludGVycnVwdCBpcw0KY29uZmlndXJlZDogICovDQorI2RlZmluZSBY Q0hBTF9JTlRMRVZFTDdfTlVNCQkxNA0KKy8qICAoVGhlcmUgYXJlIG1hbnkgaW50ZXJydXB0cyBl YWNoIGF0IGxldmVsKHMpIDEsIDIsIDMsIDQsIDUuKSAgKi8NCisNCisNCisvKg0KKyAqICBFeHRl cm5hbCBpbnRlcnJ1cHQgbWFwcGluZy4NCisgKiAgVGhlc2UgbWFjcm9zIGRlc2NyaWJlIGhvdyBY dGVuc2EgcHJvY2Vzc29yIGludGVycnVwdCBudW1iZXJzDQorICogIChhcyBudW1iZXJlZCBpbnRl cm5hbGx5LCBlZy4gaW4gSU5URVJSVVBUIGFuZCBJTlRFTkFCTEUgcmVnaXN0ZXJzKQ0KKyAqICBt YXAgdG8gZXh0ZXJuYWwgQkludGVycnVwdDxuPiBwaW5zLCBmb3IgdGhvc2UgaW50ZXJydXB0cw0K KyAqICBjb25maWd1cmVkIGFzIGV4dGVybmFsIChsZXZlbC10cmlnZ2VyZWQsIGVkZ2UtdHJpZ2dl cmVkLCBvciBOTUkpLg0KKyAqICBTZWUgdGhlIFh0ZW5zYSBwcm9jZXNzb3IgZGF0YWJvb2sgZm9y IG1vcmUgZGV0YWlscy4NCisgKi8NCisNCisvKiAgQ29yZSBpbnRlcnJ1cHQgbnVtYmVycyBtYXBw ZWQgdG8gZWFjaCBFWFRFUk5BTCBCSW50ZXJydXB0IHBpbg0KbnVtYmVyOiAgKi8NCisjZGVmaW5l IFhDSEFMX0VYVElOVDBfTlVNCQkwCS8qIChpbnRsZXZlbCAxKSAqLw0KKyNkZWZpbmUgWENIQUxf RVhUSU5UMV9OVU0JCTEJLyogKGludGxldmVsIDEpICovDQorI2RlZmluZSBYQ0hBTF9FWFRJTlQy X05VTQkJMgkvKiAoaW50bGV2ZWwgMSkgKi8NCisjZGVmaW5lIFhDSEFMX0VYVElOVDNfTlVNCQkz CS8qIChpbnRsZXZlbCAxKSAqLw0KKyNkZWZpbmUgWENIQUxfRVhUSU5UNF9OVU0JCTQJLyogKGlu dGxldmVsIDEpICovDQorI2RlZmluZSBYQ0hBTF9FWFRJTlQ1X05VTQkJNQkvKiAoaW50bGV2ZWwg MSkgKi8NCisjZGVmaW5lIFhDSEFMX0VYVElOVDZfTlVNCQk4CS8qIChpbnRsZXZlbCAxKSAqLw0K KyNkZWZpbmUgWENIQUxfRVhUSU5UN19OVU0JCTkJLyogKGludGxldmVsIDEpICovDQorI2RlZmlu ZSBYQ0hBTF9FWFRJTlQ4X05VTQkJMTAJLyogKGludGxldmVsIDEpICovDQorI2RlZmluZSBYQ0hB TF9FWFRJTlQ5X05VTQkJMTIJLyogKGludGxldmVsIDEpICovDQorI2RlZmluZSBYQ0hBTF9FWFRJ TlQxMF9OVU0JCTEzCS8qIChpbnRsZXZlbCAxKSAqLw0KKyNkZWZpbmUgWENIQUxfRVhUSU5UMTFf TlVNCQkxNAkvKiAoaW50bGV2ZWwgNykgKi8NCisjZGVmaW5lIFhDSEFMX0VYVElOVDEyX05VTQkJ MTcJLyogKGludGxldmVsIDEpICovDQorI2RlZmluZSBYQ0hBTF9FWFRJTlQxM19OVU0JCTE4CS8q IChpbnRsZXZlbCAxKSAqLw0KKyNkZWZpbmUgWENIQUxfRVhUSU5UMTRfTlVNCQkxOQkvKiAoaW50 bGV2ZWwgMikgKi8NCisjZGVmaW5lIFhDSEFMX0VYVElOVDE1X05VTQkJMjAJLyogKGludGxldmVs IDIpICovDQorI2RlZmluZSBYQ0hBTF9FWFRJTlQxNl9OVU0JCTIxCS8qIChpbnRsZXZlbCAyKSAq Lw0KKyNkZWZpbmUgWENIQUxfRVhUSU5UMTdfTlVNCQkyMgkvKiAoaW50bGV2ZWwgMykgKi8NCisj ZGVmaW5lIFhDSEFMX0VYVElOVDE4X05VTQkJMjMJLyogKGludGxldmVsIDMpICovDQorI2RlZmlu ZSBYQ0hBTF9FWFRJTlQxOV9OVU0JCTI0CS8qIChpbnRsZXZlbCA0KSAqLw0KKyNkZWZpbmUgWENI QUxfRVhUSU5UMjBfTlVNCQkyNQkvKiAoaW50bGV2ZWwgNCkgKi8NCisjZGVmaW5lIFhDSEFMX0VY VElOVDIxX05VTQkJMjYJLyogKGludGxldmVsIDUpICovDQorI2RlZmluZSBYQ0hBTF9FWFRJTlQy Ml9OVU0JCTI3CS8qIChpbnRsZXZlbCAzKSAqLw0KKyNkZWZpbmUgWENIQUxfRVhUSU5UMjNfTlVN CQkyOAkvKiAoaW50bGV2ZWwgNCkgKi8NCisjZGVmaW5lIFhDSEFMX0VYVElOVDI0X05VTQkJMzAJ LyogKGludGxldmVsIDQpICovDQorI2RlZmluZSBYQ0hBTF9FWFRJTlQyNV9OVU0JCTMxCS8qIChp bnRsZXZlbCA1KSAqLw0KKy8qICBFWFRFUk5BTCBCSW50ZXJydXB0IHBpbiBudW1iZXJzIG1hcHBl ZCB0byBlYWNoIGNvcmUgaW50ZXJydXB0DQpudW1iZXI6ICAqLw0KKyNkZWZpbmUgWENIQUxfSU5U MF9FWFROVU0JCTAJLyogKGludGxldmVsIDEpICovDQorI2RlZmluZSBYQ0hBTF9JTlQxX0VYVE5V TQkJMQkvKiAoaW50bGV2ZWwgMSkgKi8NCisjZGVmaW5lIFhDSEFMX0lOVDJfRVhUTlVNCQkyCS8q IChpbnRsZXZlbCAxKSAqLw0KKyNkZWZpbmUgWENIQUxfSU5UM19FWFROVU0JCTMJLyogKGludGxl dmVsIDEpICovDQorI2RlZmluZSBYQ0hBTF9JTlQ0X0VYVE5VTQkJNAkvKiAoaW50bGV2ZWwgMSkg Ki8NCisjZGVmaW5lIFhDSEFMX0lOVDVfRVhUTlVNCQk1CS8qIChpbnRsZXZlbCAxKSAqLw0KKyNk ZWZpbmUgWENIQUxfSU5UOF9FWFROVU0JCTYJLyogKGludGxldmVsIDEpICovDQorI2RlZmluZSBY Q0hBTF9JTlQ5X0VYVE5VTQkJNwkvKiAoaW50bGV2ZWwgMSkgKi8NCisjZGVmaW5lIFhDSEFMX0lO VDEwX0VYVE5VTQkJOAkvKiAoaW50bGV2ZWwgMSkgKi8NCisjZGVmaW5lIFhDSEFMX0lOVDEyX0VY VE5VTQkJOQkvKiAoaW50bGV2ZWwgMSkgKi8NCisjZGVmaW5lIFhDSEFMX0lOVDEzX0VYVE5VTQkJ MTAJLyogKGludGxldmVsIDEpICovDQorI2RlZmluZSBYQ0hBTF9JTlQxNF9FWFROVU0JCTExCS8q IChpbnRsZXZlbCA3KSAqLw0KKyNkZWZpbmUgWENIQUxfSU5UMTdfRVhUTlVNCQkxMgkvKiAoaW50 bGV2ZWwgMSkgKi8NCisjZGVmaW5lIFhDSEFMX0lOVDE4X0VYVE5VTQkJMTMJLyogKGludGxldmVs IDEpICovDQorI2RlZmluZSBYQ0hBTF9JTlQxOV9FWFROVU0JCTE0CS8qIChpbnRsZXZlbCAyKSAq Lw0KKyNkZWZpbmUgWENIQUxfSU5UMjBfRVhUTlVNCQkxNQkvKiAoaW50bGV2ZWwgMikgKi8NCisj ZGVmaW5lIFhDSEFMX0lOVDIxX0VYVE5VTQkJMTYJLyogKGludGxldmVsIDIpICovDQorI2RlZmlu ZSBYQ0hBTF9JTlQyMl9FWFROVU0JCTE3CS8qIChpbnRsZXZlbCAzKSAqLw0KKyNkZWZpbmUgWENI QUxfSU5UMjNfRVhUTlVNCQkxOAkvKiAoaW50bGV2ZWwgMykgKi8NCisjZGVmaW5lIFhDSEFMX0lO VDI0X0VYVE5VTQkJMTkJLyogKGludGxldmVsIDQpICovDQorI2RlZmluZSBYQ0hBTF9JTlQyNV9F WFROVU0JCTIwCS8qIChpbnRsZXZlbCA0KSAqLw0KKyNkZWZpbmUgWENIQUxfSU5UMjZfRVhUTlVN CQkyMQkvKiAoaW50bGV2ZWwgNSkgKi8NCisjZGVmaW5lIFhDSEFMX0lOVDI3X0VYVE5VTQkJMjIJ LyogKGludGxldmVsIDMpICovDQorI2RlZmluZSBYQ0hBTF9JTlQyOF9FWFROVU0JCTIzCS8qIChp bnRsZXZlbCA0KSAqLw0KKyNkZWZpbmUgWENIQUxfSU5UMzBfRVhUTlVNCQkyNAkvKiAoaW50bGV2 ZWwgNCkgKi8NCisjZGVmaW5lIFhDSEFMX0lOVDMxX0VYVE5VTQkJMjUJLyogKGludGxldmVsIDUp ICovDQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0NCisJCQlFWENFUFRJT05TIGFuZCBWRUNUT1JT DQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KLS0qLw0KKw0KKyNkZWZpbmUgWENIQUxfWEVBX1ZFUlNJT04JCTIJ LyogWHRlbnNhIEV4Y2VwdGlvbg0KQXJjaGl0ZWN0dXJlDQorCQkJCQkJICAgbnVtYmVyOiAxID09 IFhFQTENCihvbGQpDQorCQkJCQkJCSAgIDIgPT0gWEVBMg0KKG5ldykNCisJCQkJCQkJICAgMCA9 PSBYRUFYDQooZXh0ZXJuKSBvciBUWCAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9YRUExCQkJMAkv KiBFeGNlcHRpb24NCkFyY2hpdGVjdHVyZSAxICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1hFQTIJ CQkxCS8qIEV4Y2VwdGlvbg0KQXJjaGl0ZWN0dXJlIDIgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVf WEVBWAkJCTAJLyogRXh0ZXJuYWwNCkV4Y2VwdGlvbiBBcmNoLiAqLw0KKyNkZWZpbmUgWENIQUxf SEFWRV9FWENFUFRJT05TCQkxCS8qIGV4Y2VwdGlvbiBvcHRpb24gKi8NCisjZGVmaW5lIFhDSEFM X0hBVkVfSEFMVAkJCTAJLyogaGFsdA0KYXJjaGl0ZWN0dXJlIG9wdGlvbiAqLw0KKyNkZWZpbmUg WENIQUxfSEFWRV9CT09UTE9BREVSCQkwCS8qIGJvb3QgbG9hZGVyIChmb3INClRYKSAqLw0KKyNk ZWZpbmUgWENIQUxfSEFWRV9NRU1fRUNDX1BBUklUWQkwCS8qIGxvY2FsIG1lbW9yeQ0KRUNDL3Bh cml0eSAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9WRUNUT1JfU0VMRUNUCTEJLyogcmVsb2NhdGFi bGUgdmVjdG9ycw0KKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfVkVDQkFTRQkJMQkvKiByZWxvY2F0 YWJsZSB2ZWN0b3JzDQoqLw0KKyNkZWZpbmUgWENIQUxfVkVDQkFTRV9SRVNFVF9WQUREUgkweDQw MDAwMDAwICAvKiBWRUNCQVNFIHJlc2V0DQp2YWx1ZSAqLw0KKyNkZWZpbmUgWENIQUxfVkVDQkFT RV9SRVNFVF9QQUREUgkweDQwMDAwMDAwDQorI2RlZmluZSBYQ0hBTF9SRVNFVF9WRUNCQVNFX09W RVJMQVAJMA0KKw0KKyNkZWZpbmUgWENIQUxfUkVTRVRfVkVDVE9SMF9WQUREUgkweDUwMDAwMDAw DQorI2RlZmluZSBYQ0hBTF9SRVNFVF9WRUNUT1IwX1BBRERSCTB4NTAwMDAwMDANCisjZGVmaW5l IFhDSEFMX1JFU0VUX1ZFQ1RPUjFfVkFERFIJMHg0MDAwMDQwMA0KKyNkZWZpbmUgWENIQUxfUkVT RVRfVkVDVE9SMV9QQUREUgkweDQwMDAwNDAwDQorI2RlZmluZSBYQ0hBTF9SRVNFVF9WRUNUT1Jf VkFERFIJMHg0MDAwMDQwMA0KKyNkZWZpbmUgWENIQUxfUkVTRVRfVkVDVE9SX1BBRERSCTB4NDAw MDA0MDANCisjZGVmaW5lIFhDSEFMX1VTRVJfVkVDT0ZTCQkweDAwMDAwMzQwDQorI2RlZmluZSBY Q0hBTF9VU0VSX1ZFQ1RPUl9WQUREUgkJMHg0MDAwMDM0MA0KKyNkZWZpbmUgWENIQUxfVVNFUl9W RUNUT1JfUEFERFIJCTB4NDAwMDAzNDANCisjZGVmaW5lIFhDSEFMX0tFUk5FTF9WRUNPRlMJCTB4 MDAwMDAzMDANCisjZGVmaW5lIFhDSEFMX0tFUk5FTF9WRUNUT1JfVkFERFIJMHg0MDAwMDMwMA0K KyNkZWZpbmUgWENIQUxfS0VSTkVMX1ZFQ1RPUl9QQUREUgkweDQwMDAwMzAwDQorI2RlZmluZSBY Q0hBTF9ET1VCTEVFWENfVkVDT0ZTCQkweDAwMDAwM0MwDQorI2RlZmluZSBYQ0hBTF9ET1VCTEVF WENfVkVDVE9SX1ZBRERSCTB4NDAwMDAzQzANCisjZGVmaW5lIFhDSEFMX0RPVUJMRUVYQ19WRUNU T1JfUEFERFIJMHg0MDAwMDNDMA0KKyNkZWZpbmUgWENIQUxfV0lORE9XX09GNF9WRUNPRlMJCTB4 MDAwMDAwMDANCisjZGVmaW5lIFhDSEFMX1dJTkRPV19VRjRfVkVDT0ZTCQkweDAwMDAwMDQwDQor I2RlZmluZSBYQ0hBTF9XSU5ET1dfT0Y4X1ZFQ09GUwkJMHgwMDAwMDA4MA0KKyNkZWZpbmUgWENI QUxfV0lORE9XX1VGOF9WRUNPRlMJCTB4MDAwMDAwQzANCisjZGVmaW5lIFhDSEFMX1dJTkRPV19P RjEyX1ZFQ09GUwkweDAwMDAwMTAwDQorI2RlZmluZSBYQ0hBTF9XSU5ET1dfVUYxMl9WRUNPRlMJ MHgwMDAwMDE0MA0KKyNkZWZpbmUgWENIQUxfV0lORE9XX1ZFQ1RPUlNfVkFERFIJMHg0MDAwMDAw MA0KKyNkZWZpbmUgWENIQUxfV0lORE9XX1ZFQ1RPUlNfUEFERFIJMHg0MDAwMDAwMA0KKyNkZWZp bmUgWENIQUxfSU5UTEVWRUwyX1ZFQ09GUwkJMHgwMDAwMDE4MA0KKyNkZWZpbmUgWENIQUxfSU5U TEVWRUwyX1ZFQ1RPUl9WQUREUgkweDQwMDAwMTgwDQorI2RlZmluZSBYQ0hBTF9JTlRMRVZFTDJf VkVDVE9SX1BBRERSCTB4NDAwMDAxODANCisjZGVmaW5lIFhDSEFMX0lOVExFVkVMM19WRUNPRlMJ CTB4MDAwMDAxQzANCisjZGVmaW5lIFhDSEFMX0lOVExFVkVMM19WRUNUT1JfVkFERFIJMHg0MDAw MDFDMA0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUwzX1ZFQ1RPUl9QQUREUgkweDQwMDAwMUMwDQor I2RlZmluZSBYQ0hBTF9JTlRMRVZFTDRfVkVDT0ZTCQkweDAwMDAwMjAwDQorI2RlZmluZSBYQ0hB TF9JTlRMRVZFTDRfVkVDVE9SX1ZBRERSCTB4NDAwMDAyMDANCisjZGVmaW5lIFhDSEFMX0lOVExF VkVMNF9WRUNUT1JfUEFERFIJMHg0MDAwMDIwMA0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUw1X1ZF Q09GUwkJMHgwMDAwMDI0MA0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUw1X1ZFQ1RPUl9WQUREUgkw eDQwMDAwMjQwDQorI2RlZmluZSBYQ0hBTF9JTlRMRVZFTDVfVkVDVE9SX1BBRERSCTB4NDAwMDAy NDANCisjZGVmaW5lIFhDSEFMX0lOVExFVkVMNl9WRUNPRlMJCTB4MDAwMDAyODANCisjZGVmaW5l IFhDSEFMX0lOVExFVkVMNl9WRUNUT1JfVkFERFIJMHg0MDAwMDI4MA0KKyNkZWZpbmUgWENIQUxf SU5UTEVWRUw2X1ZFQ1RPUl9QQUREUgkweDQwMDAwMjgwDQorI2RlZmluZSBYQ0hBTF9ERUJVR19W RUNPRlMJCVhDSEFMX0lOVExFVkVMNl9WRUNPRlMNCisjZGVmaW5lIFhDSEFMX0RFQlVHX1ZFQ1RP Ul9WQUREUglYQ0hBTF9JTlRMRVZFTDZfVkVDVE9SX1ZBRERSDQorI2RlZmluZSBYQ0hBTF9ERUJV R19WRUNUT1JfUEFERFIJWENIQUxfSU5UTEVWRUw2X1ZFQ1RPUl9QQUREUg0KKyNkZWZpbmUgWENI QUxfTk1JX1ZFQ09GUwkJMHgwMDAwMDJDMA0KKyNkZWZpbmUgWENIQUxfTk1JX1ZFQ1RPUl9WQURE UgkJMHg0MDAwMDJDMA0KKyNkZWZpbmUgWENIQUxfTk1JX1ZFQ1RPUl9QQUREUgkJMHg0MDAwMDJD MA0KKyNkZWZpbmUgWENIQUxfSU5UTEVWRUw3X1ZFQ09GUwkJWENIQUxfTk1JX1ZFQ09GUw0KKyNk ZWZpbmUgWENIQUxfSU5UTEVWRUw3X1ZFQ1RPUl9WQUREUglYQ0hBTF9OTUlfVkVDVE9SX1ZBRERS DQorI2RlZmluZSBYQ0hBTF9JTlRMRVZFTDdfVkVDVE9SX1BBRERSCVhDSEFMX05NSV9WRUNUT1Jf UEFERFINCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLQ0KKwkJCQlERUJVRyBNT0RVTEUNCisgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQotLSovDQorDQorLyogIE1pc2MgICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX0RF QlVHX0VSSQkJMQkvKiBFUkkgdG8gZGVidWcgbW9kdWxlDQoqLw0KKyNkZWZpbmUgWENIQUxfSEFW RV9ERUJVR19BUEIJCTEJLyogQVBCIHRvIGRlYnVnIG1vZHVsZQ0KKi8NCisjZGVmaW5lIFhDSEFM X0hBVkVfREVCVUdfSlRBRwkJMQkvKiBKVEFHIHRvIGRlYnVnDQptb2R1bGUgKi8NCisNCisvKiAg T24tQ2hpcCBEZWJ1ZyAoT0NEKSAgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfT0NECQkJMQkvKiBP bkNoaXBEZWJ1ZyBvcHRpb24NCiovDQorI2RlZmluZSBYQ0hBTF9OVU1fSUJSRUFLCQkyCS8qIG51 bWJlciBvZiBJQlJFQUtuDQpyZWdzICovDQorI2RlZmluZSBYQ0hBTF9OVU1fREJSRUFLCQkyCS8q IG51bWJlciBvZiBEQlJFQUtuDQpyZWdzICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX09DRF9ESVJf QVJSQVkJMAkvKiBmYXN0ZXIgT0NEIG9wdGlvbg0KKHRvIExYNCkgKi8NCisjZGVmaW5lIFhDSEFM X0hBVkVfT0NEX0xTMzJERFIJCTEJLyogTDMyRERSL1MzMkREUg0KKGZhc3RlciBPQ0QpICovDQor DQorLyogIFRSQVggKGluIGNvcmUpICAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9UUkFYCQkJMQkv KiBUUkFYIGluDQpkZWJ1ZyBtb2R1bGUgKi8NCisjZGVmaW5lIFhDSEFMX1RSQVhfTUVNX1NJWkUJ CTE2Mzg0CS8qIFRSQVggbWVtb3J5IHNpemUgaW4NCmJ5dGVzICovDQorI2RlZmluZSBYQ0hBTF9U UkFYX01FTV9TSEFSRUFCTEUJMQkvKiBzdGFydC9lbmQgcmVnczsNCnJlYWR5IHNpZy4gKi8NCisj ZGVmaW5lIFhDSEFMX1RSQVhfQVRCX1dJRFRICQkzMgkvKiBBVEIgd2lkdGggKGJpdHMpLA0KMD1u byBBVEIgKi8NCisjZGVmaW5lIFhDSEFMX1RSQVhfVElNRV9XSURUSAkJMAkvKiB0aW1lc3RhbXAg Yml0d2lkdGgsDQowPW5vbmUgKi8NCisNCisvKiAgUGVyZiBjb3VudGVycyAgKi8NCisjZGVmaW5l IFhDSEFMX05VTV9QRVJGX0NPVU5URVJTCQkyCS8qIHBlcmZvcm1hbmNlDQpjb3VudGVycyAqLw0K Kw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tDQorCQkJCU1NVQ0KKyAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tKi8N CisNCisvKiAgU2VlIGNvcmUtbWF0bWFwLmggaGVhZGVyIGZpbGUgZm9yIG1vcmUgZGV0YWlscy4g ICovDQorDQorI2RlZmluZSBYQ0hBTF9IQVZFX1RMQlMJCQkxCS8qIGludmVyc2Ugb2YNCkhBVkVf Q0FDSEVBVFRSICovDQorI2RlZmluZSBYQ0hBTF9IQVZFX1NQQU5OSU5HX1dBWQkJMQkvKiBvbmUg d2F5DQptYXBzIEkrRCA0R0IgdmFkZHIgKi8NCisjZGVmaW5lIFhDSEFMX1NQQU5OSU5HX1dBWQkJ MAkvKiBUTEIgc3Bhbm5pbmcgd2F5DQpudW1iZXIgKi8NCisjZGVmaW5lIFhDSEFMX0hBVkVfSURF TlRJVFlfTUFQCQkxCS8qIHZhZGRyID09DQpwYWRkciBhbHdheXMgKi8NCisjZGVmaW5lIFhDSEFM X0hBVkVfQ0FDSEVBVFRSCQkwCS8qIENBQ0hFQVRUUiByZWdpc3Rlcg0KcHJlc2VudCAqLw0KKyNk ZWZpbmUgWENIQUxfSEFWRV9NSU1JQ19DQUNIRUFUVFIJMQkvKiByZWdpb24gcHJvdGVjdGlvbg0K Ki8NCisjZGVmaW5lIFhDSEFMX0hBVkVfWExUX0NBQ0hFQVRUUgkwCS8qIHJlZ2lvbiBwcm90Lg0K dy90cmFuc2xhdGlvbiAqLw0KKyNkZWZpbmUgWENIQUxfSEFWRV9QVFBfTU1VCQkwCS8qIGZ1bGwg TU1VICh3aXRoIHBhZ2UNCnRhYmxlDQorCQkJCQkJICAgW2F1dG9yZWZpbGxdIGFuZA0KcHJvdGVj dGlvbikNCisJCQkJCQkgICB1c2FibGUgZm9yIGFuIE1NVS0NCmJhc2VkIE9TICovDQorLyogIElm IG5vbmUgb2YgdGhlIGFib3ZlIGxhc3QgNCBhcmUgc2V0LCBpdCdzIGEgY3VzdG9tIFRMQg0KY29u ZmlndXJhdGlvbi4gICovDQorDQorI2RlZmluZSBYQ0hBTF9NTVVfQVNJRF9CSVRTCQkwCS8qIG51 bWJlciBvZiBiaXRzIGluDQpBU0lEcyAqLw0KKyNkZWZpbmUgWENIQUxfTU1VX1JJTkdTCQkJMQkv KiBudW1iZXIgb2YNCnJpbmdzICgxLi40KSAqLw0KKyNkZWZpbmUgWENIQUxfTU1VX1JJTkdfQklU UwkJMAkvKiBudW0gb2YgYml0cyBpbiBSSU5HDQpmaWVsZCAqLw0KKw0KKyNlbmRpZiAvKiAhWFRF TlNBX0hBTF9OT05fUFJJVklMRUdFRF9PTkxZICovDQorDQorDQorI2VuZGlmIC8qIF9YVEVOU0Ff Q09SRV9DT05GSUdVUkFUSU9OX0ggKi8NCisNCmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9zeXMv eHRlbnNhL2lzYXR0eS5jDQpiL25ld2xpYi9saWJjL3N5cy94dGVuc2EvaXNhdHR5LmMNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLmZlNjQyMDliOQ0KLS0tIC9kZXYvbnVs bA0KKysrIGIvbmV3bGliL2xpYmMvc3lzL3h0ZW5zYS9pc2F0dHkuYw0KQEAgLTAsMCArMSwxOCBA QA0KKy8qIGlzYXR0eS5jICovDQorDQorLyogRHVtYiBpbXBsZW1lbnRhdGlvbiBzbyBwcm9ncmFt cyB3aWxsIGF0IGxlYXN0IHJ1bi4gICovDQorDQorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+DQorI2lu Y2x1ZGUgPHJlZW50Lmg+DQorDQoraW50DQorX2lzYXR0eV9yIChzdHJ1Y3QgX3JlZW50ICpwdHIs IGludCBmZCkNCit7DQorICBzdHJ1Y3Qgc3RhdCBidWY7DQorDQorICBpZiAoX2ZzdGF0X3IgKHB0 ciwgZmQsICZidWYpIDwgMCkNCisgICAgcmV0dXJuIDA7DQorICBpZiAoU19JU0NIUiAoYnVmLnN0 X21vZGUpKQ0KKyAgICByZXR1cm4gMTsNCisgIHJldHVybiAwOw0KK30NCmRpZmYgLS1naXQgYS9u ZXdsaWIvbGliYy9zeXMveHRlbnNhL3N5cy9maWxlLmgNCmIvbmV3bGliL2xpYmMvc3lzL3h0ZW5z YS9zeXMvZmlsZS5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi40OGEy Y2EwNmQNCi0tLSAvZGV2L251bGwNCisrKyBiL25ld2xpYi9saWJjL3N5cy94dGVuc2Evc3lzL2Zp bGUuaA0KQEAgLTAsMCArMSwzMyBAQA0KKy8qIENvcHlyaWdodCAoYykgMjAwNS0yMDA2IFRlbnNp bGljYSBJbmMuICBBTEwgUklHSFRTIFJFU0VSVkVELg0KKw0KKyAgIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAgIG1v ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9ucw0KYXJlIG1ldDoNCisNCisgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAgICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisNCisgICAy LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl DQpjb3B5cmlnaHQNCisgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCnRoZQ0KKyAgICAgIGRvY3VtZW50YXRpb24gYW5k L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KZGlzdHJpYnV0aW9uLg0KKw0K KyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO RCBDT05UUklCVVRPUlMNCiJBUw0KKyAgIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCkxJTUlURUQNCisgICBUTywgVEhFIElNUExJ RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEENCisgICBQ QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBURU5T SUxJQ0ENCisgICBJTkNPUlBPUkFURUQgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD VCwgSU5DSURFTlRBTCwNClNQRUNJQUwsDQorICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KKyAgIFBST0NVUkVNRU5U IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUg0K KyAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E IE9OIEFOWSBUSEVPUlkNCk9GDQorICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQooSU5DTFVESU5HDQorICAgTkVHTElHRU5DRSBPUiBP VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTDQorICAg U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B R0UuICAqLw0KKw0KKyNpbmNsdWRlIDxzeXMvZmNudGwuaD4NCisNCisvKiBBbHRlcm5hdGUgbmFt ZXMgZm9yIHZhbHVlcyBmb3IgdGhlIFdIRU5DRSBhcmd1bWVudCB0byBgbHNlZWsnLg0KKyAgIFRo ZXNlIGFyZSB0aGUgc2FtZSBhcyBTRUVLX1NFVCwgU0VFS19DVVIsIGFuZCBTRUVLX0VORCwNCnJl c3BlY3RpdmVseS4gKi8NCisjaWZuZGVmIExfU0VUDQorI2RlZmluZSBMX1NFVCAgIDAgICAgICAg LyogU2VlayBmcm9tIGJlZ2lubmluZyBvZiBmaWxlLiAgKi8NCisjZGVmaW5lIExfSU5DUiAgMSAg ICAgICAvKiBTZWVrIGZyb20gY3VycmVudCBwb3NpdGlvbi4gICovDQorI2RlZmluZSBMX1hUTkQg IDIgICAgICAgLyogU2VlayBmcm9tIGVuZCBvZiBmaWxlLiAgKi8NCisjZW5kaWYNCi0tIA0KMi4z NC4xDQoNCg==