From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by sourceware.org (Postfix) with ESMTPS id 698773838024 for ; Tue, 10 May 2022 05:16:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 698773838024 X-IronPort-AV: E=McAfee;i="6400,9594,10342"; a="268929356" X-IronPort-AV: E=Sophos;i="5.91,213,1647327600"; d="scan'208";a="268929356" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 May 2022 22:16:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,213,1647327600"; d="scan'208";a="738509845" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga005.jf.intel.com with ESMTP; 09 May 2022 22:16:25 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 9 May 2022 22:16:24 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Mon, 9 May 2022 22:16:24 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.175) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Mon, 9 May 2022 22:16:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AVhb9Suzs+jAXxzoM13jn1RXNAk/EbhLNWBjy/5ptTlv4iSwMUuq1SaGWb9WzKQJo5OPxFdE+uO+L0kgp40s3ivSWoIwxzBMEsz442y8oKMqiVVmbaF9UeqiMK+RsqFCLBOof41iX0fe8xenwcGYtjvOgyqvUfMwQNMIlN1tTUnR/P0CUmuMdRLt8lfNkuGr1tW6vaZw6WoPP3z7PrDUwaNaIK4Yg8V61akzXRgLlAiX0ActGxjidF6BnSZ3viDsORxKyF6UFm+xTcYu+5nJgdPraErENCnFHdY2QJvR4zw+qjjbX/LT1miadrNGghCuCbhQR1v6fvl1NMHfmmY1dg== 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=4EmNKnzDBtd9tPMsaJlDf1BYalelq1zjnje1mmXypoE=; b=P5hnmt4GaQMWEZwfzNQjGXPcpATy6H7fdV4u8Ht4PbY0s5OlLKddWPT1zvEdWXz92mLS6Ci+Xx2mzy760ZeP0DS82/uP7zD1yIKwi2AMAq9ZGTWs6aGMNK8Y3wjRYr+HzghWggHd+4APaJFIUlb/kdlPJNK539T/LhlxRrRkQrmZglkKhb25Z4tRqG2Xzyi2x3/Ma+XChQfk+Emzey4zBEoFmCZr4Cp+4uDSD1NuVIUSqgPKXDP5pWnjZHcExLIgPutUxboSJdzVSL9Zej6K8fnuViZDVYJV5yrCiqDZOMkh+e9L+GLnFNU1XLozJMupIewDBJZhWLvcyhYsWJeV+w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MN2PR11MB3678.namprd11.prod.outlook.com (2603:10b6:208:f8::11) by SJ0PR11MB5024.namprd11.prod.outlook.com (2603:10b6:a03:2dd::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.20; Tue, 10 May 2022 05:16:21 +0000 Received: from MN2PR11MB3678.namprd11.prod.outlook.com ([fe80::8bd:9b56:630b:aec0]) by MN2PR11MB3678.namprd11.prod.outlook.com ([fe80::8bd:9b56:630b:aec0%6]) with mapi id 15.20.5227.023; Tue, 10 May 2022 05:16:21 +0000 From: "Jiang, Haochen" To: Uros Bizjak CC: Hongyu Wang , "Liu, Hongtao" , "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH] Reconstruct i386 testsuite with __builtin_cpu_supports Thread-Topic: [PATCH] Reconstruct i386 testsuite with __builtin_cpu_supports Thread-Index: AQHYYSMUmd/zVdx2kk2uKrWtoCaiya0RjSOAgAAEvACAAQq6oIAAhAmAgAR3GEA= Date: Tue, 10 May 2022 05:16:21 +0000 Message-ID: References: <20220506075708.84250-1-haochen.jiang@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.401.20 dlp-reaction: no-action x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5d6629f3-b791-4672-2e8f-08da324438b6 x-ms-traffictypediagnostic: SJ0PR11MB5024:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: K5UOBghAmEonQ2yAAEA5gvtNlNw/z8onecixYMF51zatYs4lDtcmPTzUXbWnJJeDncArF+wOOG4uoD2F+HGYLmhCc8OwAS9qBj7B/KKFGQuZ3pR9L3XD8T0gSYSWDZAcVvYtFtoUZrjGWctWg2QJ2ohPKAlOINPu78cIHNZkykLT0Z8BHJrFS6NjMLz8EB5WGaYaXm8bkRoVXNzjEivT+Ya44QAzQ1HSEhKThPZ131ycnyiT204zVhHshh6OUA2gSzjCw8Yt9DfMh2s43UTGnhihT54+UuPFtkJ46LqyGsI6GXmp/KoGFN5vlKgZC17OGq8VUjjaiard+x1xytpq++KwG57eOI5PLRA/tVHbKMostlaZytP/qDzk9uwXBww6SLcESJa3wKpdF7OO0rE+WgyC8+wdyQRVjJ+FXRXWJrV/6p5q0iqOYCMxa7kIE5LVDsAUE8DiL3QMrB8BEldpKxAt6Yz5ivGGgzEAqynUdak2FA9cInxGHWeuNGaqqlBsuiuFMtQRE7l3SHqFdFvfWjHmhciXP53XApf0OWDZ4rEFnfaUaUc/ADut2lQBrif0ln+hga6jVLv0N1wGqd/53QR12IMWQW0ODmL0orw/CkEKUcM3K0cWdnW5gNYNUODRKNyLwAK9VGtLOWVzICuwAKtoL0lOun/VKhW9n9LpTZNTAbgTpesx1pQmQSpZIbB+XUBu7WF+C8EfIoBcTCQYZhhEDI2nFQ3FmMqxWpqFvIooO76ErcTBKDBsvwZGj2uyrZSixJdFS2nvzxcwxqcSJT6m8W04Gn00L6alvxEU3pg= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR11MB3678.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(33656002)(86362001)(38100700002)(122000001)(53546011)(5660300002)(6506007)(83380400001)(38070700005)(52536014)(8936002)(30864003)(316002)(66946007)(64756008)(66556008)(66446008)(55016003)(9686003)(508600001)(66476007)(76116006)(82960400001)(4326008)(54906003)(8676002)(84970400001)(6916009)(71200400001)(2906002)(186003)(7696005)(26005)(559001)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z0NTQ2FRTXVBeEt3TFNYOWFSWW1BaGh1QTRaK1M1SENKMlJoMFdQU1dvdVpw?= =?utf-8?B?bGd6UFE3K29FcEZ2Nk5KSUZzUW12QzBBb09RN2R1c1pmVnJxNVU1ZHNUcFlt?= =?utf-8?B?L28va0ZhMG1UUEMwcHNIcC84cDlISmM0VmNXUVhZdStjcHZDZjcyN08xZHJ0?= =?utf-8?B?UDF2SlNtVDdLMUFmQU1XNHNwZWtFVEFrNHJRcUJtVEpkY3hNanVLQ0xZYVFk?= =?utf-8?B?YWVLeEk3bnZMR2xXVVVFTFRwT0pBalgrbE40cjVDT2FnQWFXODI3c0QyQW9M?= =?utf-8?B?YjNHVkdmVUUrYWdiRVBsTHk0dnVqVkF5S2g5R2lvZU9aclhuZXFWR3lBQ2FX?= =?utf-8?B?aC93WVMvVmw4L3c4TW5wTVgrS2hvZnFUa3ZzUlVzbkg3L2N4Q2IxM1A4d1lw?= =?utf-8?B?R2NIajBFUlNERFk3d3FEMzhBZmpoRlRva09maGpwc3JFa1Q5c09vNGdNTFdU?= =?utf-8?B?eDFFNkNlUTQrR1BGQ0poVXdYWWk5clZnMm8zREFUMk5KOEY1anlZblhRalZm?= =?utf-8?B?UHFWaFFzSWNjZzhteDUvSjY2OGU2bHRlUWJZRDlUV2FLWklYL01vYWowaGto?= =?utf-8?B?YW81T1FUcFhwa3doajB5YVFXVk9QVFZ6WTNjNGFNWU5qNmd4WVZKK05Yc1R0?= =?utf-8?B?Y3NLQU1TNVUxZEVaeWREWkxtWFlnb1phSFJTTkdzK0N1QWRVOUpkK25sZk5u?= =?utf-8?B?dTNyKzhRSlNjRjNxekNLd1Y0RW1CdlhOa2tQNDNnYWNwSGtZOGY3NmVoSkhj?= =?utf-8?B?SWdtWHYvSGxOSlFlaXJqTk15dzdFdEFVOGg4WjF4OWVUZEQyN0V4QVltbHdt?= =?utf-8?B?bFhaOFgwa0hQNC9qMmFBem96blZVYkNid05vTk51MXhER25EcDFUVW15S0RG?= =?utf-8?B?U3RLWnhFQ0MzdFc4NkI2VFMvZ21kejlLYXcxbUdEUURiOWdaOXRCdHk4cTNV?= =?utf-8?B?dEdzMW5HQk4zYVRIN0ZhUFR5RUU0TmhTcnlNNUJ1NXFva1Y0TGVrcjVzMnpv?= =?utf-8?B?U25ITGJ5S2R2dk5SYzdEKytpcDdiKzcwZzNTdm1tcGlIejA5YjFrcDlhTFBR?= =?utf-8?B?V3ZnMHNnc2ZGTEd4elZFdXZMM2Y0TGNNZXJjdnNhUnh1dDhlMUhKbVZ4eG56?= =?utf-8?B?TSs0VVlEVGlJNDhDQzhiQ1owMUU0aE9XWk1ldlMwVmx5dHhJQzlJb2dtWEVu?= =?utf-8?B?UlYzeFYzT0REU3BGQlM4RGJ4bisxa1N1akhOa1hHZlFjaVNpdis1aUpjaEcv?= =?utf-8?B?S3pERDR6eFVHY3BtaHBpR2FtMFp0dXlYcExSVUMxazRPOVVhVXN1WnNSYmNy?= =?utf-8?B?dXpJR2QvRS9qL1dhTjN5UW41V0tVR2V3N05sZVY5bEZtT05xcG9Xd3BzUHJj?= =?utf-8?B?b3dWdXRsTlViUE5La1FNV09jejVWYUx3MnlhMDNNcmFqdGhmL1RYc0hWUEpP?= =?utf-8?B?eWlDaWdjV0VMVEJ4Q0NDUkJQWm5na2cvTUNvbEpkbG5EMFhiRFhNU1h0aUZQ?= =?utf-8?B?K09KRHJBQ2luelBoOEJpQ3M3cXBqNTBDeHlnYnlTbGprZ2RHWWJsblROSEhY?= =?utf-8?B?M0ZIWEFVS3NSanJFRnlzekUyU1hkUW9ZUHhicmxRaS95a2lrVjZsdTcxdUhF?= =?utf-8?B?bTBCTlYxeU9xSWRHRENWMjV5NHpsYWtoYkhJaExtaUdxNGU5UzE5bFpCYTV2?= =?utf-8?B?RTdFYlMzM3orTE92eFFvOWN5cUJ4QVZ0M2dzK250Nk9ZeXJHeXpNVVJpbkFP?= =?utf-8?B?TDI2REwxV214eXdaNjQ5dlNaZ0lBNllNTXFGQk9TakV5SXJESCs5a0FGWUhn?= =?utf-8?B?NTduOFNyY3E5QWlSMjM1YmJGTnVyMHdCanhmNDMwMEd1ejlvbWRMUm81bWZj?= =?utf-8?B?OFJPVnpNQlg3N21MSmIyaHU3WGRpTkRwV01JOGNVSEZUM2d0M0dyNTlqOURk?= =?utf-8?B?bWFsYm0xc2FBdHkzVVZBZ1JWTHlBczArZno3VWl1Y3FjV2FiMUZvb3JGZ1lj?= =?utf-8?B?SllhR1FFVWFHTTh6ZkFjRlZ1REd5Mm9qOER0UTBvVjc2R3BuTVZ1aTRFL09n?= =?utf-8?B?QnZOQVpCQllSRFh4K041UUV0OW1IV0JWUTNXZHRYdkFGRzk5NjBkZURveTd0?= =?utf-8?B?UEEyWEh5L0RMc1NCN2FSV2NHd2VscmlwM0kreWUrVXF6ckNrQ1NCOXdBSzBB?= =?utf-8?B?YUlIZm1DS241QUU0MmRYd0NqVGtKTGNRMU04U0FIbXVlbksvTnJYQWJXSkM1?= =?utf-8?B?NlVqOW9KYVNnbVNQZ2lualJmR00xVm1rT2liRnp6YVN6ZFBjMTVMaG8yYndj?= =?utf-8?B?UnVOS25Hbm84YmtxeXF4cHI1bi9hbEVTTHI0M3V4VzcxSmQwcUhUdz09?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB3678.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d6629f3-b791-4672-2e8f-08da324438b6 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 May 2022 05:16:21.6662 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qQ5GDSVoS69asEzhpIjtnoIwLXQOH2Own2y9+CXUkBSpfZq/6GCJTStOB4xuL/nPE6rP3HLsqKYU1jIlB/sh5w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5024 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, BODY_8BITS, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 May 2022 05:16:32 -0000 VGhhdCBtYWtlIHNlbnNlIHRvIG1lLiBUaHghDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gRnJvbTogVXJvcyBCaXpqYWsgPHViaXpqYWtAZ21haWwuY29tPg0KPiBTZW50OiBTYXR1 cmRheSwgTWF5IDcsIDIwMjIgNTowNCBQTQ0KPiBUbzogSmlhbmcsIEhhb2NoZW4gPGhhb2NoZW4u amlhbmdAaW50ZWwuY29tPg0KPiBDYzogSG9uZ3l1IFdhbmcgPHd3d2hoaHl5eTMzM0BnbWFpbC5j b20+OyBMaXUsIEhvbmd0YW8NCj4gPGhvbmd0YW8ubGl1QGludGVsLmNvbT47IGdjYy1wYXRjaGVz QGdjYy5nbnUub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIFJlY29uc3RydWN0IGkzODYgdGVz dHN1aXRlIHdpdGggX19idWlsdGluX2NwdV9zdXBwb3J0cw0KPiANCj4gT24gU2F0LCBNYXkgNywg MjAyMiBhdCAzOjIwIEFNIEppYW5nLCBIYW9jaGVuIDxoYW9jaGVuLmppYW5nQGludGVsLmNvbT4N Cj4gd3JvdGU6DQo+ID4NCj4gPiBIaSBVcm9zLA0KPiA+DQo+ID4gSSB1bmRlcnN0YW5kIHRoYXQg d2UgYWx3YXlzIGtlZXAgdGhlIG9sZCB0ZXN0Y2FzZXMgdGhlcmUuIEl0IGlzIGFsd2F5cyBzYWZl IHRvDQo+IGRvIHRoYXQuDQo+ID4NCj4gPiBCdXQgSSBoYXZlIGFub3RoZXIgcXVlc3Rpb24sIGlm IHdlIGFkZCBzb21ldGhpbmcgbmV3IGluIG9uZSBvZiB0aGUNCj4gPiBleGlzdGluZyBmaWxlcyBp biB0aGUgZnV0dXJlLCBzaG91bGQgd2UgdXNlIF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgdG8ga2Vl cCB0aGUNCj4gY29kZSBjbGVhcmVyIG9yIHN0aWNrIHRvIGNwdWlkcz8NCj4gDQo+IFdlIHNob3Vs ZCB1c2UgX19idWlsdGluX2NwdV9zdXBwb3J0cy4NCj4gDQo+ID4gSSBiZWxpZXZlIF9fYnVpbHRp bl9jcHVfc3VwcG9ydHMgd2lsbCBiZSBhIGNsZWFyZXIgd2F5IGZvciBhIGNvZGVyIHRvDQo+IHVu ZGVyc3RhbmQgdW5kZXIgY3VycmVudCBjaXJjdW1zdGFuY2UuDQo+ID4gU28gaWYgd2UgdXNlIHRo YXQgaW4gZnV0dXJlIHVzZSwgd2h5IGRvbid0IHdlIGNoYW5nZSBldmVyeXRoaW5nIHRvIHRoZSBz YW1lDQo+IHdheT8NCj4gDQo+IEJlY2F1c2Ugd2UgdGVzdCB0aGUgb2xkIGFuZCB0aGUgbmV3IGFw cHJvYWNoIHRoaXMgd2F5Lg0KPiANCj4gVXJvcy4NCj4gDQo+ID4gQlJzLA0KPiA+IEhhb2NoZW4N Cj4gPg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogVXJvcyBCaXpq YWsgPHViaXpqYWtAZ21haWwuY29tPg0KPiA+IFNlbnQ6IEZyaWRheSwgTWF5IDYsIDIwMjIgNTox NyBQTQ0KPiA+IFRvOiBIb25neXUgV2FuZyA8d3d3aGhoeXl5MzMzQGdtYWlsLmNvbT4NCj4gPiBD YzogSmlhbmcsIEhhb2NoZW4gPGhhb2NoZW4uamlhbmdAaW50ZWwuY29tPjsgTGl1LCBIb25ndGFv DQo+ID4gPGhvbmd0YW8ubGl1QGludGVsLmNvbT47IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnDQo+ ID4gU3ViamVjdDogUmU6IFtQQVRDSF0gUmVjb25zdHJ1Y3QgaTM4NiB0ZXN0c3VpdGUgd2l0aA0K PiA+IF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMNCj4gPg0KPiA+IE9uIEZyaSwgTWF5IDYsIDIwMjIg YXQgMTE6MDAgQU0gSG9uZ3l1IFdhbmcgPHd3d2hoaHl5eTMzM0BnbWFpbC5jb20+DQo+IHdyb3Rl Og0KPiA+ID4NCj4gPiA+ID4gSSBkb24ndCB0aGluayAqX29zX3N1cHBvcnQgY2FsbHMgc2hvdWxk IGJlIHJlbW92ZWQuIElJUkMsDQo+ID4gPiA+IF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgZnVuY3Rp b24gY2hlY2tzIGlmIHRoZSBmZWF0dXJlIGlzIHN1cHBvcnRlZA0KPiA+ID4gPiBieSBDUFUsIHdo ZXJlYXMgKl9vc19zdXBwb3J0cyBjYWxscyBjaGVjayB2aWEgeGdldGJ2IGlmIE9TDQo+ID4gPiA+ IHN1cHBvcnRzIGhhbmRsaW5nIG9mIG5ldyByZWdpc3RlcnMuDQo+ID4gPg0KPiA+ID4gYXZ4X29z X3N1cHBvcnQgaXMgbGlrZQ0KPiA+ID4NCj4gPiA+IGF2eF9vc19zdXBwb3J0ICh2b2lkKQ0KPiA+ ID4gew0KPiA+ID4gICB1bnNpZ25lZCBpbnQgZWF4LCBlZHg7DQo+ID4gPiAgIHVuc2lnbmVkIGlu dCBlY3ggPSBYQ1JfWEZFQVRVUkVfRU5BQkxFRF9NQVNLOw0KPiA+ID4NCj4gPiA+ICAgX19hc21f XyAoInhnZXRidiIgOiAiPWEiIChlYXgpLCAiPWQiIChlZHgpIDogImMiIChlY3gpKTsNCj4gPiA+ DQo+ID4gPiAgIHJldHVybiAoZWF4ICYgKFhTVEFURV9TU0UgfCBYU1RBVEVfWU1NKSkgPT0gKFhT VEFURV9TU0UgfA0KPiA+ID4gWFNUQVRFX1lNTSk7IH0NCj4gPiA+DQo+ID4gPiBXaGlsZSBpbiBn ZXRfYXZhbGlhYmxlX2ZlYXR1cmVzIHdlIGhhdmUNCj4gPiA+DQo+ID4gPiAjZGVmaW5lIFhDUl9B VlhfRU5BQkxFRF9NQVNLIFwNCj4gPiA+ICAgKFhTVEFURV9TU0UgfCBYU1RBVEVfWU1NKQ0KPiA+ ID4gICBpZiAoKGVjeCAmIGJpdF9PU1hTQVZFKSkNCj4gPiA+ICAgICB7DQo+ID4gPiAgICAgICAv KiBDaGVjayBpZiBYTU0sIFlNTSwgT1BNQVNLLCB1cHBlciAyNTYgYml0cyBvZiBaTU0wLVpNTTE1 IGFuZA0KPiA+ID4gWk1NMTYtWk1NMzEgc3RhdGVzIGFyZSBzdXBwb3J0ZWQgYnkgT1NYU0FWRS4g ICovDQo+ID4gPiAgICAgICB1bnNpZ25lZCBpbnQgeGNybG93Ow0KPiA+ID4gICAgICAgdW5zaWdu ZWQgaW50IHhjcmhpZ2g7DQo+ID4gPiAgICAgICBfX2FzbV9fICgiLmJ5dGUgMHgwZiwgMHgwMSwg MHhkMCIgLyogeGdldGJ2ICAqLw0KPiA+ID4gICAgICAgIDogIj1hIiAoeGNybG93KSwgIj1kIiAo eGNyaGlnaCkNCj4gPiA+ICAgICAgICA6ICJjIiAoWENSX1hGRUFUVVJFX0VOQUJMRURfTUFTSykp Ow0KPiA+ID4gICAgICAgaWYgKCh4Y3Jsb3cgJiBYQ1JfQVZYX0VOQUJMRURfTUFTSykgPT0gWENS X0FWWF9FTkFCTEVEX01BU0spIHsNCj4gPiA+ICAgYXZ4X3VzYWJsZSA9IDE7DQo+ID4gPg0KPiA+ ID4gU28gX19idWlsdGluX2NwdV9zdXBwb3J0cyBhbHJlYWR5IGluaGVyaXRzIHNhbWUgY2hlY2sN Cj4gPg0KPiA+IEluZGVlZCwgdGhhbmtzIGZvciB0aGUgZXhwbGFuYXRpb24uDQo+ID4NCj4gPiBP VE9ILCB3ZSBkb24ndCBjaGFuZ2UgdGhlIGV4aXN0aW5nIHRlc3RzIChwZXJoYXBzIG9ubHkgZGct IGRpcmVjdGl2ZXMNCj4gPiB3aGVuIGluZnJhc3RydWN0dXJlIGltcHJvdmVzKSwgc28gSSB3b3Vs ZCBsZWF2ZSB0aGUgZXhpc3RpbmcgdGVzdGNhc2VzDQo+ID4gYXMgdGhleSBhcmUuIEluIGZ1dHVy ZSwgbmV3IGhlbHBlciBmdW5jdGlvbnMgc2hvdWxkIGJlIGltcGxlbWVudGVkDQo+ID4gd2l0aCBf X2J1aWx0aW5fY3B1X3N1cHBvcnRzLCBidXQgbGV0J3MgbGVhdmUgZXhpc3Rpbmcgb25lcyBhcyB0 aGV5DQo+ID4gYXJlLg0KPiA+DQo+ID4gVXJvcy4NCj4gPg0KPiA+ID4gVXJvcyBCaXpqYWsgdmlh IEdjYy1wYXRjaGVzIDxnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZz4g5LqOMjAyMuW5tDXmnIg2DQo+ IOaXpeWRqOS6lA0KPiA+ID4gMTY6MjflhpnpgZPvvJoNCj4gPiA+ID4NCj4gPiA+ID4gT24gRnJp LCBNYXkgNiwgMjAyMiBhdCA5OjU3IEFNIEhhb2NoZW4gSmlhbmcgPGhhb2NoZW4uamlhbmdAaW50 ZWwuY29tPg0KPiB3cm90ZToNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEhpIGFsbCwNCj4gPiA+ID4g Pg0KPiA+ID4gPiA+IFRoZXJlIGFyZSBzb21lIGNoZWNrIGZpbGVzIGluIGkzODYgdGVzdHN1aXRl IGFyZSB3cml0dGVuIGJlZm9yZSB0aGUNCj4gZnVuY3Rpb24gX19idWlsdGluX2NwdV9zdXBwb3J0 cyBpcyBpbnRyb2R1Y2VkLiBBbGwgb2YgdGhlbSBhcmUgdXNpbmcNCj4gX19nZXRfY3B1aWRfY291 bnQuIFRoaXMgcGF0Y2ggYWltcyB0byByZWNvbnN0cnVjdCB0aGUgaTM4NiB0ZXN0c3VpdGUgd2l0 aA0KPiBfX2J1aWx0aW5fY3B1X3N1cHBvcnRzIHNvIHRoYXQgd2UgY2FuIGhhdmUgYSBtdWNoIGNs ZWFyZXIgY29kZS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFJlZ3Rlc3RlZCBvbiB4ODZfNjQtcGMt bGludXgtZ251LiBPayBmb3IgdHJ1bms/DQo+ID4gPiA+DQo+ID4gPiA+IEkgZG9uJ3QgdGhpbmsg Kl9vc19zdXBwb3J0IGNhbGxzIHNob3VsZCBiZSByZW1vdmVkLiBJSVJDLA0KPiA+ID4gPiBfX2J1 aWx0aW5fY3B1X3N1cHBvcnRzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgZmVhdHVyZSBpcyBzdXBw b3J0ZWQNCj4gPiA+ID4gYnkgQ1BVLCB3aGVyZWFzICpfb3Nfc3VwcG9ydHMgY2FsbHMgY2hlY2sg dmlhIHhnZXRidiBpZiBPUw0KPiA+ID4gPiBzdXBwb3J0cyBoYW5kbGluZyBvZiBuZXcgcmVnaXN0 ZXJzLg0KPiA+ID4gPg0KPiA+ID4gPiBVcm9zLg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gQWxzbyB3aGVuIHdyaXR0aW5nIHRoaXMgcGF0Y2gsIEkgYWxzbyBmaW5kIHNvbWUgZmlsZXMg aW4gdGVzdHN1aXRlIHRoYXQgbWlnaHQNCj4gYmUgdXNlbGVzcyBjdXJyZW50bHkuIEZvciBleGFt cGxlLCBpbiB0aGUgZmlsZSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtDQo+IG9z LXN1cHBvcnQuaCwgaXQgYWx3YXlzIHJldHVybiAxLiBBbmQgdGhlcmUgYXJlIGFsc28gc29tZSBm aWxlcyB3aWxsIG5vIGxvbmdlciBiZQ0KPiBpbmNsdWRlZCBhdCBhbGwgd2l0aCB0aGlzIHBhdGNo LiBTaG91bGQgd2UgcmVtb3ZlIHRob3NlIGZpbGVzIHdoZW4gd2UgaGF2ZSB0aW1lPw0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gQlJzLA0KPiA+ID4gPiA+IEhhb2NoZW4NCj4gPiA+ID4gPg0KPiA+ID4g PiA+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgICAg ICAqIGdjYy50YXJnZXQvaTM4Ni9hZHgtY2hlY2suaDogQ2hhbmdlIGJpdCBjaGVjayB0bw0KPiA+ ID4gPiA+ICAgICAgICAgX19idWlsdGluX2NwdV9zdXBwb3J0cy4NCj4gPiA+ID4gPiAgICAgICAg ICogZ2NjLnRhcmdldC9pMzg2L2Flcy1hdngtY2hlY2suaDogRGl0dG8uDQo+ID4gPiA+ID4gICAg ICAgICAqIGdjYy50YXJnZXQvaTM4Ni9hZXMtY2hlY2suaDogRGl0dG8uDQo+ID4gPiA+ID4gICAg ICAgICAqIGdjYy50YXJnZXQvaTM4Ni9hdngtY2hlY2suaDogRGl0dG8uDQo+ID4gPiA+ID4gICAg ICAgICAqIGdjYy50YXJnZXQvaTM4Ni9hdngyLWNoZWNrLmg6IERpdHRvLg0KPiA+ID4gPiA+ICAg ICAgICAgKiBnY2MudGFyZ2V0L2kzODYvYXZ4NTEyLWNoZWNrLmg6IERpdHRvLg0KPiA+ID4gPiA+ ICAgICAgICAgKiBnY2MudGFyZ2V0L2kzODYvYm1pLWNoZWNrLmg6IERpdHRvLg0KPiA+ID4gPiA+ ICAgICAgICAgKiBnY2MudGFyZ2V0L2kzODYvYm1pMi1jaGVjay5oOiBEaXR0by4NCj4gPiA+ID4g PiAgICAgICAgICogZ2NjLnRhcmdldC9pMzg2L2YxNmMtY2hlY2suaDogRGl0dG8uDQo+ID4gPiA+ ID4gICAgICAgICAqIGdjYy50YXJnZXQvaTM4Ni9mbWEtY2hlY2suaDogRGl0dG8uDQo+ID4gPiA+ ID4gICAgICAgICAqIGdjYy50YXJnZXQvaTM4Ni9mbWE0LWNoZWNrLmg6IERpdHRvLg0KPiA+ID4g PiA+ICAgICAgICAgKiBnY2MudGFyZ2V0L2kzODYvbHpjbnQtY2hlY2suaDogRGl0dG8uDQo+ID4g PiA+ID4gICAgICAgICAqIGdjYy50YXJnZXQvaTM4Ni9tbXgtM2Rub3ctY2hlY2suaDogRGl0dG8u DQo+ID4gPiA+ID4gICAgICAgICAqIGdjYy50YXJnZXQvaTM4Ni9tbXgtY2hlY2suaDogRGl0dG8u DQo+ID4gPiA+ID4gICAgICAgICAqIGdjYy50YXJnZXQvaTM4Ni9wY2xtdWwtYXZ4LWNoZWNrLmg6 IERpdHRvLg0KPiA+ID4gPiA+ICAgICAgICAgKiBnY2MudGFyZ2V0L2kzODYvcGNsbXVsLWNoZWNr Lmg6IERpdHRvLg0KPiA+ID4gPiA+ICAgICAgICAgKiBnY2MudGFyZ2V0L2kzODYvcnRtLWNoZWNr Lmg6IERpdHRvLg0KPiA+ID4gPiA+ICAgICAgICAgKiBnY2MudGFyZ2V0L2kzODYvc2hhLWNoZWNr Lmg6IERpdHRvLg0KPiA+ID4gPiA+ICAgICAgICAgKiBnY2MudGFyZ2V0L2kzODYvc3NlLWNoZWNr Lmg6IERpdHRvLg0KPiA+ID4gPiA+ICAgICAgICAgKiBnY2MudGFyZ2V0L2kzODYvc3NlMi1jaGVj ay5oOiBEaXR0by4NCj4gPiA+ID4gPiAgICAgICAgICogZ2NjLnRhcmdldC9pMzg2L3NzZTMtY2hl Y2suaDogRGl0dG8uDQo+ID4gPiA+ID4gICAgICAgICAqIGdjYy50YXJnZXQvaTM4Ni9zc2U0XzEt Y2hlY2suaDogRGl0dG8uDQo+ID4gPiA+ID4gICAgICAgICAqIGdjYy50YXJnZXQvaTM4Ni9zc2U0 XzItY2hlY2suaDogRGl0dG8uDQo+ID4gPiA+ID4gICAgICAgICAqIGdjYy50YXJnZXQvaTM4Ni9z c2U0YS1jaGVjay5oOiBEaXR0by4NCj4gPiA+ID4gPiAgICAgICAgICogZ2NjLnRhcmdldC9pMzg2 L3Nzc2UzLWNoZWNrLmg6IERpdHRvLg0KPiA+ID4gPiA+ICAgICAgICAgKiBnY2MudGFyZ2V0L2kz ODYveG9wLWNoZWNrLmg6IERpdHRvLg0KPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ICBnY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hZHgtY2hlY2suaCAgICAgfCAxMCArLS0tDQo+ID4gPiA+ ID4gIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Flcy1hdngtY2hlY2suaCB8IDE0ICst LS0tDQo+ID4gPiA+ID4gIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Flcy1jaGVjay5o ICAgICB8IDExICstLS0NCj4gPiA+ID4gPiAgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv YXZ4LWNoZWNrLmggICAgIHwgMTIgKy0tLQ0KPiA+ID4gPiA+ICBnY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hdngyLWNoZWNrLmggICAgfCAyMCArLS0tLS0tDQo+ID4gPiA+ID4gIGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMi1jaGVjay5oICB8IDU5ICsrKysrKystLS0t LS0tLS0tLS0NCj4gPiA+ID4gPiAgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYm1pLWNo ZWNrLmggICAgIHwgMTEgKy0tLQ0KPiA+ID4gPiA+ICBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9ibWkyLWNoZWNrLmggICAgfCAxMCArLS0tDQo+ID4gPiA+ID4gIGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2YxNmMtY2hlY2suaCAgICB8IDEwICstLS0NCj4gPiA+ID4gPiAgZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLWNoZWNrLmggICAgIHwgMTEgKy0tLQ0KPiA+ ID4gPiA+ICBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWE0LWNoZWNrLmggICAgfCAx MSArLS0tDQo+ID4gPiA+ID4gIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2x6Y250LWNo ZWNrLmggICB8IDExICstLS0NCj4gPiA+ID4gPiAgLi4uL2djYy50YXJnZXQvaTM4Ni9tbXgtM2Ru b3ctY2hlY2suaCAgICAgICAgIHwgMTEgKy0tLQ0KPiA+ID4gPiA+ICBnY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9tbXgtY2hlY2suaCAgICAgfCAxMSArLS0tDQo+ID4gPiA+ID4gIC4uLi9n Y2MudGFyZ2V0L2kzODYvcGNsbXVsLWF2eC1jaGVjay5oICAgICAgICB8IDE0ICstLS0tDQo+ID4g PiA+ID4gIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3BjbG11bC1jaGVjay5oICB8IDEx ICstLS0NCj4gPiA+ID4gPiAgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcnRtLWNoZWNr LmggICAgIHwgMTAgKy0tLQ0KPiA+ID4gPiA+ICBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9zaGEtY2hlY2suaCAgICAgfCAxMCArLS0tDQo+ID4gPiA+ID4gIGdjYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L3NzZS1jaGVjay5oICAgICB8IDExICstLS0NCj4gPiA+ID4gPiAgZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlMi1jaGVjay5oICAgIHwgMTEgKy0tLQ0KPiA+ID4g PiA+ICBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UzLWNoZWNrLmggICAgfCAxMSAr LS0tDQo+ID4gPiA+ID4gIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZTRfMS1jaGVj ay5oICB8IDExICstLS0NCj4gPiA+ID4gPiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9z c2U0XzItY2hlY2suaCAgfCAxMSArLS0tDQo+ID4gPiA+ID4gIGdjYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L3NzZTRhLWNoZWNrLmggICB8IDExICstLS0NCj4gPiA+ID4gPiAgZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NzZTMtY2hlY2suaCAgIHwgMTEgKy0tLQ0KPiA+ID4gPiA+ ICBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni94b3AtY2hlY2suaCAgICAgfCAxMSArLS0t DQo+ID4gPiA+ID4gIDI2IGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyksIDI3MiBkZWxl dGlvbnMoLSkNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9hZHgtY2hlY2suaA0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYWR4LWNoZWNrLmgNCj4gPiA+ID4gPiBpbmRleCBjZmVkMWEzODQ4My4u YmVkNWRjY2EzODUgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvYWR4LWNoZWNrLmgNCj4gPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hZHgtY2hlY2suaA0KPiA+ID4gPiA+IEBAIC0xLDUgKzEsNCBAQA0KPiA+ID4g PiA+ICAjaW5jbHVkZSA8c3RkbGliLmg+DQo+ID4gPiA+ID4gLSNpbmNsdWRlICJjcHVpZC5oIg0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gIHN0YXRpYyB2b2lkIGFkeF90ZXN0ICh2b2lkKTsNCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IEBAIC0xMSwxMyArMTAsOCBAQCBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0 ZV9fICgobm9pbmxpbmUpKQ0KPiA+ID4gPiA+IGRvX3Rlc3QgKHZvaWQpICBpbnQgIG1haW4gKCkg IHsNCj4gPiA+ID4gPiAtICB1bnNpZ25lZCBpbnQgZWF4LCBlYngsIGVjeCwgZWR4Ow0KPiA+ID4g PiA+IC0NCj4gPiA+ID4gPiAtICBpZiAoIV9fZ2V0X2NwdWlkX2NvdW50ICg3LCAwLCAmZWF4LCAm ZWJ4LCAmZWN4LCAmZWR4KSkNCj4gPiA+ID4gPiAtICAgIHJldHVybiAwOw0KPiA+ID4gPiA+IC0N Cj4gPiA+ID4gPiAtICAvKiBSdW4gQURYIHRlc3Qgb25seSBpZiBob3N0IGhhcyBBRFggc3VwcG9y dC4gICovDQo+ID4gPiA+ID4gLSAgaWYgKGVieCAmIGJpdF9BRFgpDQo+ID4gPiA+ID4gKyAgLyog Q2hlY2sgY3B1IHN1cHBvcnQgZm9yIEFEWC4gICovICBpZiAoX19idWlsdGluX2NwdV9zdXBwb3J0 cw0KPiA+ID4gPiA+ICsgKCJhZHgiKSkNCj4gPiA+ID4gPiAgICAgIHsNCj4gPiA+ID4gPiAgICAg ICAgZG9fdGVzdCAoKTsNCj4gPiA+ID4gPiAgI2lmZGVmIERFQlVHDQo+ID4gPiA+ID4gZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Flcy1hdngtY2hlY2suaA0KPiA+ ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYWVzLWF2eC1jaGVjay5oDQo+ ID4gPiA+ID4gaW5kZXggZjJhNGVhZDQwMTQuLjc0YmY1OTdlYWQ0IDEwMDY0NA0KPiA+ID4gPiA+ IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Flcy1hdngtY2hlY2suaA0KPiA+ ID4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Flcy1hdngtY2hlY2su aA0KPiA+ID4gPiA+IEBAIC0yLDggKzIsNiBAQA0KPiA+ID4gPiA+ICAjaW5jbHVkZSA8c3RkaW8u aD4NCj4gPiA+ID4gPiAgI2VuZGlmDQo+ID4gPiA+ID4gICNpbmNsdWRlIDxzdGRsaWIuaD4NCj4g PiA+ID4gPiAtI2luY2x1ZGUgImNwdWlkLmgiDQo+ID4gPiA+ID4gLSNpbmNsdWRlICJhdngtb3Mt c3VwcG9ydC5oIg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIHN0YXRpYyB2b2lkIGFlc19hdnhfdGVz dCAodm9pZCk7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBAQCAtMTcsMTUgKzE1LDkgQEAgZG9fdGVz dCAodm9pZCkgIGludCAgbWFpbiAoKSAgew0KPiA+ID4gPiA+IC0gIHVuc2lnbmVkIGludCBlYXgs IGVieCwgZWN4LCBlZHg7DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0gIGlmICghX19nZXRfY3B1 aWQgKDEsICZlYXgsICZlYngsICZlY3gsICZlZHgpKQ0KPiA+ID4gPiA+IC0gICAgcmV0dXJuIDA7 DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0gIC8qIFJ1biBBRVMgKyBBVlggdGVzdCBvbmx5IGlm IGhvc3QgaGFzIEFFUyArIEFWWCBzdXBwb3J0LiAgKi8NCj4gPiA+ID4gPiAtICBpZiAoKChlY3gg JiAoYml0X0FWWCB8IGJpdF9PU1hTQVZFIHwgYml0X0FFUykpDQo+ID4gPiA+ID4gLSAgICAgICA9 PSAoYml0X0FWWCB8IGJpdF9PU1hTQVZFIHwgYml0X0FFUykpDQo+ID4gPiA+ID4gLSAgICAgICYm IGF2eF9vc19zdXBwb3J0ICgpKQ0KPiA+ID4gPiA+ICsgIC8qIENoZWNrIGNwdSBzdXBwb3J0IGZv ciBBRVMgYW5kIEFWWC4gICovICBpZg0KPiA+ID4gPiA+ICsgKF9fYnVpbHRpbl9jcHVfc3VwcG9y dHMgKCJhdngiKQ0KPiA+ID4gPiA+ICsgICAgICAmJiBfX2J1aWx0aW5fY3B1X3N1cHBvcnRzICgi YWVzIikpDQo+ID4gPiA+ID4gICAgICB7DQo+ID4gPiA+ID4gICAgICAgIGRvX3Rlc3QgKCk7DQo+ ID4gPiA+ID4gICNpZmRlZiBERUJVRw0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9hZXMtY2hlY2suaA0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYWVzLWNoZWNrLmgNCj4gPiA+ID4gPiBpbmRleCA3ZTc5NDQyM2U0 Ny4uN2MzYTNiMzI0YTcgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvYWVzLWNoZWNrLmgNCj4gPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9hZXMtY2hlY2suaA0KPiA+ID4gPiA+IEBAIC0xLDggKzEsNiBAQA0KPiA+ ID4gPiA+ICAjaW5jbHVkZSA8c3RkaW8uaD4NCj4gPiA+ID4gPiAgI2luY2x1ZGUgPHN0ZGxpYi5o Pg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLSNpbmNsdWRlICJjcHVpZC5oIg0KPiA+ID4gPiA+IC0N Cj4gPiA+ID4gPiAgc3RhdGljIHZvaWQgYWVzX3Rlc3QgKHZvaWQpOw0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gIHN0YXRpYyB2b2lkDQo+ID4gPiA+ID4gQEAgLTE1LDEzICsxMyw4IEBAIGRvX3Rlc3Qg KHZvaWQpICBpbnQgIG1haW4gKCkgIHsNCj4gPiA+ID4gPiAtICB1bnNpZ25lZCBpbnQgZWF4LCBl YngsIGVjeCwgZWR4Ow0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtICBpZiAoIV9fZ2V0X2NwdWlk ICgxLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KSkNCj4gPiA+ID4gPiAtICAgIHJldHVybiAwOw0K PiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtICAvKiBSdW4gQUVTIHRlc3Qgb25seSBpZiBob3N0IGhh cyBBRVMgc3VwcG9ydC4gICovDQo+ID4gPiA+ID4gLSAgaWYgKGVjeCAmIGJpdF9BRVMpDQo+ID4g PiA+ID4gKyAgLyogQ2hlY2sgY3B1IHN1cHBvcnQgZm9yIEFFUy4gICovICBpZiAoX19idWlsdGlu X2NwdV9zdXBwb3J0cw0KPiA+ID4gPiA+ICsgKCJhZXMiKSkNCj4gPiA+ID4gPiAgICAgIHsNCj4g PiA+ID4gPiAgICAgICAgZG9fdGVzdCAoKTsNCj4gPiA+ID4gPiAgI2lmZGVmIERFQlVHDQo+ID4g PiA+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eC1jaGVj ay5oDQo+ID4gPiA+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdngtY2hlY2su aA0KPiA+ID4gPiA+IGluZGV4IDdkZGNhOWQ3YjgwLi40YTNkYmMyNTdiYyAxMDA2NDQNCj4gPiA+ ID4gPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdngtY2hlY2suaA0KPiA+ ID4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eC1jaGVjay5oDQo+ ID4gPiA+ID4gQEAgLTEsNyArMSw1IEBADQo+ID4gPiA+ID4gICNpbmNsdWRlIDxzdGRsaWIuaD4N Cj4gPiA+ID4gPiAtI2luY2x1ZGUgImNwdWlkLmgiDQo+ID4gPiA+ID4gICNpbmNsdWRlICJtMjU2 LWNoZWNrLmgiDQo+ID4gPiA+ID4gLSNpbmNsdWRlICJhdngtb3Mtc3VwcG9ydC5oIg0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gIHN0YXRpYyB2b2lkIGF2eF90ZXN0ICh2b2lkKTsNCj4gPiA+ID4gPg0K PiA+ID4gPiA+IEBAIC0xNSwxNCArMTMsOCBAQCBkb190ZXN0ICh2b2lkKSAgaW50ICBtYWluICgp ICB7DQo+ID4gPiA+ID4gLSAgdW5zaWduZWQgaW50IGVheCwgZWJ4LCBlY3gsIGVkeDsNCj4gPiA+ ID4gPiAtDQo+ID4gPiA+ID4gLSAgaWYgKCFfX2dldF9jcHVpZCAoMSwgJmVheCwgJmVieCwgJmVj eCwgJmVkeCkpDQo+ID4gPiA+ID4gLSAgICByZXR1cm4gMDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ ID4gLSAgLyogUnVuIEFWWCB0ZXN0IG9ubHkgaWYgaG9zdCBoYXMgQVZYIHN1cHBvcnQuICAqLw0K PiA+ID4gPiA+IC0gIGlmICgoKGVjeCAmIChiaXRfQVZYIHwgYml0X09TWFNBVkUpKSA9PSAoYml0 X0FWWCB8IGJpdF9PU1hTQVZFKSkNCj4gPiA+ID4gPiAtICAgICAgJiYgYXZ4X29zX3N1cHBvcnQg KCkpDQo+ID4gPiA+ID4gKyAgLyogQ2hlY2sgY3B1IHN1cHBvcnQgZm9yIEFWWC4gICovICBpZiAo X19idWlsdGluX2NwdV9zdXBwb3J0cw0KPiA+ID4gPiA+ICsgKCJhdngiKSkNCj4gPiA+ID4gPiAg ICAgIHsNCj4gPiA+ID4gPiAgICAgICAgZG9fdGVzdCAoKTsNCj4gPiA+ID4gPiAgI2lmZGVmIERF QlVHDQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2F2eDItY2hlY2suaA0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv YXZ4Mi1jaGVjay5oDQo+ID4gPiA+ID4gaW5kZXggMjViZWQ1ZTBkYTYuLjJiYzNjNDQyNWJiIDEw MDY0NA0KPiA+ID4gPiA+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDIt Y2hlY2suaA0KPiA+ID4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2 eDItY2hlY2suaA0KPiA+ID4gPiA+IEBAIC0xLDcgKzEsNSBAQA0KPiA+ID4gPiA+ICAjaW5jbHVk ZSA8c3RkbGliLmg+DQo+ID4gPiA+ID4gLSNpbmNsdWRlICJjcHVpZC5oIg0KPiA+ID4gPiA+ICAj aW5jbHVkZSAibTI1Ni1jaGVjay5oIg0KPiA+ID4gPiA+IC0jaW5jbHVkZSAiYXZ4LW9zLXN1cHBv cnQuaCINCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICBzdGF0aWMgdm9pZCBhdngyX3Rlc3QgKHZvaWQp Ow0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQEAgLTEwLDI1ICs4LDExIEBAIHN0YXRpYyB2b2lkIF9f YXR0cmlidXRlX18gKChub2lubGluZSkpIGRvX3Rlc3QgKHZvaWQpDQo+ID4gPiA+ID4gICAgYXZ4 Ml90ZXN0ICgpOw0KPiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAtc3RhdGljIGlu dA0KPiA+ID4gPiA+IC1jaGVja19vc3hzYXZlICh2b2lkKQ0KPiA+ID4gPiA+IC17DQo+ID4gPiA+ ID4gLSAgdW5zaWduZWQgaW50IGVheCwgZWJ4LCBlY3gsIGVkeDsNCj4gPiA+ID4gPiAtDQo+ID4g PiA+ID4gLSAgX19jcHVpZCAoMSwgZWF4LCBlYngsIGVjeCwgZWR4KTsNCj4gPiA+ID4gPiAtICBy ZXR1cm4gKGVjeCAmIGJpdF9PU1hTQVZFKSAhPSAwOyAtfQ0KPiA+ID4gPiA+IC0NCj4gPiA+ID4g PiAgaW50DQo+ID4gPiA+ID4gIG1haW4gKCkNCj4gPiA+ID4gPiAgew0KPiA+ID4gPiA+IC0gIHVu c2lnbmVkIGludCBlYXgsIGVieCwgZWN4LCBlZHg7DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0g IGlmICghX19nZXRfY3B1aWRfY291bnQgKDcsIDAsICZlYXgsICZlYngsICZlY3gsICZlZHgpKQ0K PiA+ID4gPiA+IC0gICAgcmV0dXJuIDA7DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0gIC8qIFJ1 biBBVlgyIHRlc3Qgb25seSBpZiBob3N0IGhhcyBBVlgyIHN1cHBvcnQuICAqLw0KPiA+ID4gPiA+ IC0gIGlmIChjaGVja19vc3hzYXZlICgpICYmIChlYnggJiBiaXRfQVZYMikgJiYgYXZ4X29zX3N1 cHBvcnQNCj4gPiA+ID4gPiAoKSkNCj4gPiA+ID4gPiArICAvKiBDaGVjayBjcHUgc3VwcG9ydCBm b3IgQVZYMi4gICovICBpZg0KPiA+ID4gPiA+ICsgKF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJh dngyIikpDQo+ID4gPiA+ID4gICAgICB7DQo+ID4gPiA+ID4gICAgICAgIGRvX3Rlc3QgKCk7DQo+ ID4gPiA+ID4gICNpZmRlZiBERUJVRw0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1MTItY2hlY2suaA0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4NTEyLWNoZWNrLmgNCj4gPiA+ID4gPiBpbmRleCAwYWQ5 MDY0ZjYzNy4uMzM5Yzc5MDcwYzkgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYXZ4NTEyLWNoZWNrLmgNCj4gPiA+ID4gPiArKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1MTItY2hlY2suaA0KPiA+ID4gPiA+IEBAIC0xLDcg KzEsNSBAQA0KPiA+ID4gPiA+ICAjaW5jbHVkZSA8c3RkbGliLmg+DQo+ID4gPiA+ID4gLSNpbmNs dWRlICJjcHVpZC5oIg0KPiA+ID4gPiA+ICAjaW5jbHVkZSAibTUxMi1jaGVjay5oIg0KPiA+ID4g PiA+IC0jaW5jbHVkZSAiYXZ4NTEyZi1vcy1zdXBwb3J0LmgiDQo+ID4gPiA+ID4NCj4gPiA+ID4g PiAgI2lmbmRlZiBET19URVNUDQo+ID4gPiA+ID4gICNkZWZpbmUgRE9fVEVTVCBkb190ZXN0DQo+ ID4gPiA+ID4gQEAgLTI1LDgxICsyMyw2NiBAQCBkb190ZXN0ICh2b2lkKSAgfSAgI2VuZGlmDQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiAtc3RhdGljIGludA0KPiA+ID4gPiA+IC1jaGVja19vc3hzYXZl ICh2b2lkKQ0KPiA+ID4gPiA+IC17DQo+ID4gPiA+ID4gLSAgdW5zaWduZWQgaW50IGVheCwgZWJ4 LCBlY3gsIGVkeDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgX19jcHVpZCAoMSwgZWF4LCBl YngsIGVjeCwgZWR4KTsNCj4gPiA+ID4gPiAtICByZXR1cm4gKGVjeCAmIGJpdF9PU1hTQVZFKSAh PSAwOyAtfQ0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAgaW50DQo+ID4gPiA+ID4gIG1haW4gKCkN Cj4gPiA+ID4gPiAgew0KPiA+ID4gPiA+IC0gIHVuc2lnbmVkIGludCBlYXgsIGVieCwgZWN4LCBl ZHg7DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0gIGlmICghX19nZXRfY3B1aWRfY291bnQgKDcs IDAsICZlYXgsICZlYngsICZlY3gsICZlZHgpKQ0KPiA+ID4gPiA+IC0gICAgcmV0dXJuIDA7DQo+ ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0gIC8qIFJ1biBBVlg1MTIgdGVzdCBvbmx5IGlmIGhvc3Qg aGFzIElTQSBzdXBwb3J0LiAgKi8NCj4gPiA+ID4gPiAtICBpZiAoY2hlY2tfb3N4c2F2ZSAoKQ0K PiA+ID4gPiA+IC0gICAgICAmJiAoZWJ4ICYgYml0X0FWWDUxMkYpDQo+ID4gPiA+ID4gKyAgLyog Q2hlY2sgY3B1IHN1cHBvcnQgZm9yIEFWWDUxMi4gICovICBpZg0KPiA+ID4gPiA+ICsgKF9fYnVp bHRpbl9jcHVfc3VwcG9ydHMgKCJhdng1MTJmIikNCj4gPiA+ID4gPiAgI2lmZGVmIEFWWDUxMlZM DQo+ID4gPiA+ID4gLSAgICAgICYmIChlYnggJiBiaXRfQVZYNTEyVkwpDQo+ID4gPiA+ID4gKyAg ICAgICYmIF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJhdng1MTJ2bCIpDQo+ID4gPiA+ID4gICNl bmRpZg0KPiA+ID4gPiA+ICAjaWZkZWYgQVZYNTEyRVINCj4gPiA+ID4gPiAtICAgICAgJiYgKGVi eCAmIGJpdF9BVlg1MTJFUikNCj4gPiA+ID4gPiArICAgICAgJiYgX19idWlsdGluX2NwdV9zdXBw b3J0cyAoImF2eDUxMmVyIikNCj4gPiA+ID4gPiAgI2VuZGlmDQo+ID4gPiA+ID4gICNpZmRlZiBB Vlg1MTJDRA0KPiA+ID4gPiA+IC0gICAgICAmJiAoZWJ4ICYgYml0X0FWWDUxMkNEKQ0KPiA+ID4g PiA+ICsgICAgICAmJiBfX2J1aWx0aW5fY3B1X3N1cHBvcnRzICgiYXZ4NTEyY2QiKQ0KPiA+ID4g PiA+ICAjZW5kaWYNCj4gPiA+ID4gPiAgI2lmZGVmIEFWWDUxMkRRDQo+ID4gPiA+ID4gLSAgICAg ICYmIChlYnggJiBiaXRfQVZYNTEyRFEpDQo+ID4gPiA+ID4gKyAgICAgICYmIF9fYnVpbHRpbl9j cHVfc3VwcG9ydHMgKCJhdng1MTJkcSIpDQo+ID4gPiA+ID4gICNlbmRpZg0KPiA+ID4gPiA+ICAj aWZkZWYgQVZYNTEyQlcNCj4gPiA+ID4gPiAtICAgICAgJiYgKGVieCAmIGJpdF9BVlg1MTJCVykN Cj4gPiA+ID4gPiArICAgICAgJiYgX19idWlsdGluX2NwdV9zdXBwb3J0cyAoImF2eDUxMmJ3IikN Cj4gPiA+ID4gPiAgI2VuZGlmDQo+ID4gPiA+ID4gICNpZmRlZiBBVlg1MTJJRk1BDQo+ID4gPiA+ ID4gLSAgICAgICYmIChlYnggJiBiaXRfQVZYNTEySUZNQSkNCj4gPiA+ID4gPiArICAgICAgJiYg X19idWlsdGluX2NwdV9zdXBwb3J0cyAoImF2eDUxMmlmbWEiKQ0KPiA+ID4gPiA+ICAjZW5kaWYN Cj4gPiA+ID4gPiAgI2lmZGVmIEFWWDUxMlZCTUkNCj4gPiA+ID4gPiAtICAgICAgJiYgKGVjeCAm IGJpdF9BVlg1MTJWQk1JKQ0KPiA+ID4gPiA+ICsgICAgICAmJiBfX2J1aWx0aW5fY3B1X3N1cHBv cnRzICgiYXZ4NTEydmJtaSIpDQo+ID4gPiA+ID4gICNlbmRpZg0KPiA+ID4gPiA+ICAjaWZkZWYg QVZYNTEyNEZNQVBTDQo+ID4gPiA+ID4gLSAgICAgICYmIChlZHggJiBiaXRfQVZYNTEyNEZNQVBT KQ0KPiA+ID4gPiA+ICsgICAgICAmJiBfX2J1aWx0aW5fY3B1X3N1cHBvcnRzICgiYXZ4NTEyNGZt YXBzIikNCj4gPiA+ID4gPiAgI2VuZGlmDQo+ID4gPiA+ID4gICNpZmRlZiBBVlg1MTI0Vk5OSVcN Cj4gPiA+ID4gPiAtICAgICAgJiYgKGVkeCAmIGJpdF9BVlg1MTI0Vk5OSVcpDQo+ID4gPiA+ID4g KyAgICAgICYmIF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJhdng1MTI0dm5uaXciKQ0KPiA+ID4g PiA+ICAjZW5kaWYNCj4gPiA+ID4gPiAgI2lmZGVmIEFWWDUxMlZQT1BDTlREUQ0KPiA+ID4gPiA+ IC0gICAgICAmJiAoZWN4ICYgYml0X0FWWDUxMlZQT1BDTlREUSkNCj4gPiA+ID4gPiArICAgICAg JiYgX19idWlsdGluX2NwdV9zdXBwb3J0cyAoImF2eDUxMnZwb3BjbnRkcSIpDQo+ID4gPiA+ID4g ICNlbmRpZg0KPiA+ID4gPiA+ICAjaWZkZWYgQVZYNTEyQklUQUxHDQo+ID4gPiA+ID4gLSAgICAg ICYmIChlY3ggJiBiaXRfQVZYNTEyQklUQUxHKQ0KPiA+ID4gPiA+ICsgICAgICAmJiBfX2J1aWx0 aW5fY3B1X3N1cHBvcnRzICgiYXZ4NTEyYml0YWxnIikNCj4gPiA+ID4gPiAgI2VuZGlmDQo+ID4g PiA+ID4gICNpZmRlZiBHRk5JDQo+ID4gPiA+ID4gLSAgICAgICYmIChlY3ggJiBiaXRfR0ZOSSkN Cj4gPiA+ID4gPiArICAgICAgJiYgX19idWlsdGluX2NwdV9zdXBwb3J0cyAoImdmbmkiKQ0KPiA+ ID4gPiA+ICAjZW5kaWYNCj4gPiA+ID4gPiAgI2lmZGVmIEFWWDUxMlZCTUkyDQo+ID4gPiA+ID4g LSAgICAgICYmIChlY3ggJiBiaXRfQVZYNTEyVkJNSTIpDQo+ID4gPiA+ID4gKyAgICAgICYmIF9f YnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJhdng1MTJ2Ym1pMiIpDQo+ID4gPiA+ID4gICNlbmRpZg0K PiA+ID4gPiA+ICAjaWZkZWYgQVZYNTEyVk5OSQ0KPiA+ID4gPiA+IC0gICAgICAmJiAoZWN4ICYg Yml0X0FWWDUxMlZOTkkpDQo+ID4gPiA+ID4gKyAgICAgICYmIF9fYnVpbHRpbl9jcHVfc3VwcG9y dHMgKCJhdng1MTJ2bm5pIikNCj4gPiA+ID4gPiAgI2VuZGlmDQo+ID4gPiA+ID4gICNpZmRlZiBB Vlg1MTJGUDE2DQo+ID4gPiA+ID4gLSAgICAgICYmIChlZHggJiBiaXRfQVZYNTEyRlAxNikNCj4g PiA+ID4gPiArICAgICAgJiYgX19idWlsdGluX2NwdV9zdXBwb3J0cyAoImF2eDUxMmZwMTYiKQ0K PiA+ID4gPiA+ICAjZW5kaWYNCj4gPiA+ID4gPiAgI2lmZGVmIFZBRVMNCj4gPiA+ID4gPiAtICAg ICAgJiYgKGVjeCAmIGJpdF9WQUVTKQ0KPiA+ID4gPiA+ICsgICAgICAmJiBfX2J1aWx0aW5fY3B1 X3N1cHBvcnRzICgidmFlcyIpDQo+ID4gPiA+ID4gICNlbmRpZg0KPiA+ID4gPiA+ICAjaWZkZWYg VlBDTE1VTFFEUQ0KPiA+ID4gPiA+IC0gICAgICAmJiAoZWN4ICYgYml0X1ZQQ0xNVUxRRFEpDQo+ ID4gPiA+ID4gKyAgICAgICYmIF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJ2cGNsbXVscWRxIikN Cj4gPiA+ID4gPiAgI2VuZGlmDQo+ID4gPiA+ID4gICNpZmRlZiBBVlg1MTJWUDJJTlRFUlNFQ1QN Cj4gPiA+ID4gPiAtICAgICAgJiYgKGVkeCAmIGJpdF9BVlg1MTJWUDJJTlRFUlNFQ1QpDQo+ID4g PiA+ID4gKyAgICAgICYmIF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJhdng1MTJ2cDJpbnRlcnNl Y3QiKQ0KPiA+ID4gPiA+ICAjZW5kaWYNCj4gPiA+ID4gPiAtICAgICAgJiYgYXZ4NTEyZl9vc19z dXBwb3J0ICgpKQ0KPiA+ID4gPiA+ICsgICAgICApDQo+ID4gPiA+ID4gICAgICB7DQo+ID4gPiA+ ID4gICAgICAgIERPX1RFU1QgKCk7DQo+ID4gPiA+ID4gICNpZmRlZiBERUJVRw0KPiA+ID4gPiA+ IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9ibWktY2hlY2suaA0K PiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYm1pLWNoZWNrLmgNCj4g PiA+ID4gPiBpbmRleCAxOTczZjNiNjQ2OC4uNmFmMDI5MWE5NDcgMTAwNjQ0DQo+ID4gPiA+ID4g LS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYm1pLWNoZWNrLmgNCj4gPiA+ID4g PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9ibWktY2hlY2suaA0KPiA+ID4g PiA+IEBAIC0xLDggKzEsNiBAQA0KPiA+ID4gPiA+ICAjaW5jbHVkZSA8c3RkaW8uaD4NCj4gPiA+ ID4gPiAgI2luY2x1ZGUgPHN0ZGxpYi5oPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLSNpbmNsdWRl ICJjcHVpZC5oIg0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAgc3RhdGljIHZvaWQgYm1pX3Rlc3Qg KHZvaWQpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIHN0YXRpYyB2b2lkDQo+ID4gPiA+ID4gQEAg LTE1LDEzICsxMyw4IEBAIGRvX3Rlc3QgKHZvaWQpICBpbnQgIG1haW4gKCkgIHsNCj4gPiA+ID4g PiAtICB1bnNpZ25lZCBpbnQgZWF4LCBlYngsIGVjeCwgZWR4Ow0KPiA+ID4gPiA+IC0NCj4gPiA+ ID4gPiAtICBpZiAoIV9fZ2V0X2NwdWlkX2NvdW50ICg3LCAwLCAmZWF4LCAmZWJ4LCAmZWN4LCAm ZWR4KSkNCj4gPiA+ID4gPiAtICAgIHJldHVybiAwOw0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAt ICAvKiBSdW4gQk1JIHRlc3Qgb25seSBpZiBob3N0IGhhcyBCTUkgc3VwcG9ydC4gICovDQo+ID4g PiA+ID4gLSAgaWYgKGVieCAmIGJpdF9CTUkpDQo+ID4gPiA+ID4gKyAgLyogQ2hlY2sgY3B1IHN1 cHBvcnQgZm9yIEJNSS4gICovICBpZiAoX19idWlsdGluX2NwdV9zdXBwb3J0cw0KPiA+ID4gPiA+ ICsgKCJibWkiKSkNCj4gPiA+ID4gPiAgICAgIHsNCj4gPiA+ID4gPiAgICAgICAgZG9fdGVzdCAo KTsNCj4gPiA+ID4gPiAgI2lmZGVmIERFQlVHDQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2JtaTItY2hlY2suaA0KPiA+ID4gPiA+IGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYm1pMi1jaGVjay5oDQo+ID4gPiA+ID4gaW5kZXggYmE5 MWVmOWI3ODAuLjc1YzRkOGQ5NjE2IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2JtaTItY2hlY2suaA0KPiA+ID4gPiA+ICsrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2JtaTItY2hlY2suaA0KPiA+ID4gPiA+IEBAIC0xLDYgKzEs NSBAQA0KPiA+ID4gPiA+ICAjaW5jbHVkZSA8c3RkaW8uaD4NCj4gPiA+ID4gPiAgI2luY2x1ZGUg PHN0ZGxpYi5oPg0KPiA+ID4gPiA+IC0jaW5jbHVkZSAiY3B1aWQuaCINCj4gPiA+ID4gPg0KPiA+ ID4gPiA+ICBzdGF0aWMgdm9pZCBibWkyX3Rlc3QgKHZvaWQpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gQEAgLTE0LDEzICsxMyw4IEBAIGRvX3Rlc3QgKHZvaWQpICBpbnQgIG1haW4gKCkgIHsNCj4g PiA+ID4gPiAtICB1bnNpZ25lZCBpbnQgZWF4LCBlYngsIGVjeCwgZWR4Ow0KPiA+ID4gPiA+IC0N Cj4gPiA+ID4gPiAtICBpZiAoIV9fZ2V0X2NwdWlkX2NvdW50ICg3LCAwLCAmZWF4LCAmZWJ4LCAm ZWN4LCAmZWR4KSkNCj4gPiA+ID4gPiAtICAgIHJldHVybiAwOw0KPiA+ID4gPiA+IC0NCj4gPiA+ ID4gPiAtICAvKiBSdW4gQk1JMiB0ZXN0IG9ubHkgaWYgaG9zdCBoYXMgQk1JMiBzdXBwb3J0LiAg Ki8NCj4gPiA+ID4gPiAtICBpZiAoZWJ4ICYgYml0X0JNSTIpDQo+ID4gPiA+ID4gKyAgLyogQ2hl Y2sgY3B1IHN1cHBvcnQgZm9yIEJNSTIuICAqLyAgaWYNCj4gPiA+ID4gPiArIChfX2J1aWx0aW5f Y3B1X3N1cHBvcnRzICgiYm1pMiIpKQ0KPiA+ID4gPiA+ICAgICAgew0KPiA+ID4gPiA+ICAgICAg ICBkb190ZXN0ICgpOw0KPiA+ID4gPiA+ICAjaWZkZWYgREVCVUcNCj4gPiA+ID4gPiBkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZjE2Yy1jaGVjay5oDQo+ID4gPiA+ ID4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mMTZjLWNoZWNrLmgNCj4gPiA+ID4g PiBpbmRleCBhZjdmMzJjNWY0Zi4uMmNiZjM0YWI1MTYgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZjE2Yy1jaGVjay5oDQo+ID4gPiA+ID4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZjE2Yy1jaGVjay5oDQo+ID4gPiA+ID4g QEAgLTEsNiArMSw1IEBADQo+ID4gPiA+ID4gICNpbmNsdWRlIDxzdGRsaWIuaD4NCj4gPiA+ID4g PiAgI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ID4gPiA+ID4gLSNpbmNsdWRlICJjcHVpZC5oIg0KPiA+ ID4gPiA+ICAjaW5jbHVkZSAibTI1Ni1jaGVjay5oIg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIHN0 YXRpYyB2b2lkIGYxNmNfdGVzdCAodm9pZCk7DQo+ID4gPiA+ID4gQEAgLTgsMTMgKzcsOCBAQCBz dGF0aWMgdm9pZCBmMTZjX3Rlc3QgKHZvaWQpOyAgaW50ICBtYWluICgpICB7DQo+ID4gPiA+ID4g LSAgdW5zaWduZWQgaW50IGVheCwgZWJ4LCBlY3gsIGVkeDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ ID4gLSAgaWYgKCFfX2dldF9jcHVpZCAoMSwgJmVheCwgJmVieCwgJmVjeCwgJmVkeCkpDQo+ID4g PiA+ID4gLSAgICByZXR1cm4gMDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgLyogUnVuIEYx NkMgdGVzdCBvbmx5IGlmIGhvc3QgaGFzIEYxNkMgc3VwcG9ydC4gICovDQo+ID4gPiA+ID4gLSAg aWYgKGVjeCAmIGJpdF9GMTZDKQ0KPiA+ID4gPiA+ICsgIC8qIENoZWNrIGNwdSBzdXBwb3J0IGZv ciBGMTZDLiAgKi8gIGlmDQo+ID4gPiA+ID4gKyAoX19idWlsdGluX2NwdV9zdXBwb3J0cyAoImYx NmMiKSkNCj4gPiA+ID4gPiAgICAgIHsNCj4gPiA+ID4gPiAgICAgICAgZjE2Y190ZXN0ICgpOw0K PiA+ID4gPiA+ICAjaWZkZWYgREVCVUcNCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLWNoZWNrLmgNCj4gPiA+ID4gPiBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2ZtYS1jaGVjay5oDQo+ID4gPiA+ID4gaW5kZXggODM5MGY1MDg4 YmQuLjZjMWQzMzcyMjE4IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2ZtYS1jaGVjay5oDQo+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvZm1hLWNoZWNrLmgNCj4gPiA+ID4gPiBAQCAtMSw3ICsxLDUgQEANCj4g PiA+ID4gPiAgI2luY2x1ZGUgPHN0ZGxpYi5oPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLSNpbmNs dWRlICJjcHVpZC5oIg0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAgc3RhdGljIHZvaWQgZm1hX3Rl c3QgKHZvaWQpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIHN0YXRpYyB2b2lkIF9fYXR0cmlidXRl X18gKChub2lubGluZSkpIGRvX3Rlc3QgKHZvaWQpIEBAIC0xMiwxMw0KPiA+ID4gPiA+ICsxMCw4 IEBAIHN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpIGRvX3Rlc3QgKHZvaWQp DQo+ID4gPiA+ID4gaW50ICBtYWluICgpICB7DQo+ID4gPiA+ID4gLSAgdW5zaWduZWQgaW50IGVh eCwgZWJ4LCBlY3gsIGVkeDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgaWYgKCFfX2dldF9j cHVpZCAoMSwgJmVheCwgJmVieCwgJmVjeCwgJmVkeCkpDQo+ID4gPiA+ID4gLSAgICByZXR1cm4g MDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgLyogUnVuIEZNQSB0ZXN0IG9ubHkgaWYgaG9z dCBoYXMgRk1BIHN1cHBvcnQuICAqLw0KPiA+ID4gPiA+IC0gIGlmIChlY3ggJiBiaXRfRk1BKQ0K PiA+ID4gPiA+ICsgIC8qIENoZWNrIGNwdSBzdXBwb3J0IGZvciBGTUEuICAqLyAgaWYgKF9fYnVp bHRpbl9jcHVfc3VwcG9ydHMNCj4gPiA+ID4gPiArICgiZm1hIikpDQo+ID4gPiA+ID4gICAgICBk b190ZXN0ICgpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgcmV0dXJuIDA7DQo+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ZtYTQtY2hlY2suaA0K PiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hNC1jaGVjay5oDQo+ ID4gPiA+ID4gaW5kZXggMzNjZDk2MjhjMDQuLjJkMmMyNzE4MDI5IDEwMDY0NA0KPiA+ID4gPiA+ IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ZtYTQtY2hlY2suaA0KPiA+ID4g PiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ZtYTQtY2hlY2suaA0KPiA+ ID4gPiA+IEBAIC0xLDcgKzEsNSBAQA0KPiA+ID4gPiA+ICAjaW5jbHVkZSA8c3RkbGliLmg+DQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiAtI2luY2x1ZGUgImNwdWlkLmgiDQo+ID4gPiA+ID4gLQ0KPiA+ ID4gPiA+ICBzdGF0aWMgdm9pZCBmbWE0X3Rlc3QgKHZvaWQpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gIHN0YXRpYyB2b2lkDQo+ID4gPiA+ID4gQEAgLTE0LDEzICsxMiw4IEBAIGRvX3Rlc3QgKHZv aWQpICBpbnQgIG1haW4gKCkgIHsNCj4gPiA+ID4gPiAtICB1bnNpZ25lZCBpbnQgZWF4LCBlYngs IGVjeCwgZWR4Ow0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtICBpZiAoIV9fZ2V0X2NwdWlkICgw eDgwMDAwMDAxLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KSkNCj4gPiA+ID4gPiAtICAgIHJldHVy biAwOw0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtICAvKiBSdW4gRk1BNCB0ZXN0IG9ubHkgaWYg aG9zdCBoYXMgRk1BNCBzdXBwb3J0LiAgKi8NCj4gPiA+ID4gPiAtICBpZiAoZWN4ICYgYml0X0ZN QTQpDQo+ID4gPiA+ID4gKyAgLyogQ2hlY2sgY3B1IHN1cHBvcnQgZm9lIEZNQTQuICAqLyAgaWYN Cj4gPiA+ID4gPiArIChfX2J1aWx0aW5fY3B1X3N1cHBvcnRzICgiZm1hNCIpKQ0KPiA+ID4gPiA+ ICAgICAgZG9fdGVzdCAoKTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAgIHJldHVybiAwOw0KPiA+ ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9semNudC1j aGVjay5oDQo+ID4gPiA+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9semNudC1j aGVjay5oDQo+ID4gPiA+ID4gaW5kZXggOGFhZDgzNGQ2YWYuLjgyNGYxYTNiNTEzIDEwMDY0NA0K PiA+ID4gPiA+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2x6Y250LWNoZWNr LmgNCj4gPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9semNudC1j aGVjay5oDQo+ID4gPiA+ID4gQEAgLTEsOCArMSw2IEBADQo+ID4gPiA+ID4gICNpbmNsdWRlIDxz dGRpby5oPg0KPiA+ID4gPiA+ICAjaW5jbHVkZSA8c3RkbGliLmg+DQo+ID4gPiA+ID4NCj4gPiA+ ID4gPiAtI2luY2x1ZGUgImNwdWlkLmgiDQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+ICBzdGF0aWMg dm9pZCBsemNudF90ZXN0ICh2b2lkKTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICBzdGF0aWMgdm9p ZA0KPiA+ID4gPiA+IEBAIC0xNSwxMyArMTMsOCBAQCBkb190ZXN0ICh2b2lkKSAgaW50ICBtYWlu ICgpICB7DQo+ID4gPiA+ID4gLSAgdW5zaWduZWQgaW50IGVheCwgZWJ4LCBlY3gsIGVkeDsNCj4g PiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgaWYgKCFfX2dldF9jcHVpZCAoMHg4MDAwMDAwMSwgJmVh eCwgJmVieCwgJmVjeCwgJmVkeCkpDQo+ID4gPiA+ID4gLSAgICByZXR1cm4gMDsNCj4gPiA+ID4g PiAtDQo+ID4gPiA+ID4gLSAgLyogUnVuIExaQ05UIHRlc3Qgb25seSBpZiBob3N0IGhhcyBMWkNO VCBzdXBwb3J0LiAgKi8NCj4gPiA+ID4gPiAtICBpZiAoZWN4ICYgYml0X0xaQ05UKQ0KPiA+ID4g PiA+ICsgIC8qIENoZWNrIGNwdSBzdXBwb3J0IGZvciBMWkNOVC4gICovICBpZg0KPiA+ID4gPiA+ ICsgKF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJsemNudCIpKQ0KPiA+ID4gPiA+ICAgICAgew0K PiA+ID4gPiA+ICAgICAgICBkb190ZXN0ICgpOw0KPiA+ID4gPiA+ICAjaWZkZWYgREVCVUcNCj4g PiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvbW14LTNk bm93LWNoZWNrLmgNCj4gPiA+ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L21t eC0zZG5vdy1jaGVjay5oDQo+ID4gPiA+ID4gaW5kZXggNGYyZjdmM2FjNDAuLjBlYzJkY2EyZTE5 IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L21t eC0zZG5vdy1jaGVjay5oDQo+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvbW14LTNkbm93LWNoZWNrLmgNCj4gPiA+ID4gPiBAQCAtMSw4ICsxLDYgQEANCj4gPiA+ ID4gPiAgI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ID4gPiA+ID4gICNpbmNsdWRlIDxzdGRsaWIuaD4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IC0jaW5jbHVkZSAiY3B1aWQuaCINCj4gPiA+ID4gPiAtDQo+ ID4gPiA+ID4gIHN0YXRpYyB2b2lkIG1teF8zZG5vd190ZXN0ICh2b2lkKTsNCj4gPiA+ID4gPg0K PiA+ID4gPiA+ICBzdGF0aWMgdm9pZA0KPiA+ID4gPiA+IEBAIC0xNSwxMyArMTMsOCBAQCBkb190 ZXN0ICh2b2lkKSAgaW50ICBtYWluICgpICB7DQo+ID4gPiA+ID4gLSAgdW5zaWduZWQgaW50IGVh eCwgZWJ4LCBlY3gsIGVkeDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgaWYgKCFfX2dldF9j cHVpZCAoMHg4MDAwMDAwMSwgJmVheCwgJmVieCwgJmVjeCwgJmVkeCkpDQo+ID4gPiA+ID4gLSAg ICByZXR1cm4gMDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgLyogUnVuIDNETm93ISB0ZXN0 IG9ubHkgaWYgaG9zdCBoYXMgM0ROb3chIHN1cHBvcnQuICAqLw0KPiA+ID4gPiA+IC0gIGlmIChl ZHggJiBiaXRfM0ROT1cpDQo+ID4gPiA+ID4gKyAgLyogQ2hlY2sgY3B1IHN1cHBvcnQgZm9yIDNE Tm93IS4gICovICBpZg0KPiA+ID4gPiA+ICsgKF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCIzZG5v dyIpKQ0KPiA+ID4gPiA+ICAgICAgZG9fdGVzdCAoKTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAg IHJldHVybiAwOw0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9tbXgtY2hlY2suaA0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvbW14LWNoZWNrLmgNCj4gPiA+ID4gPiBpbmRleCBmYWY5Yjg3NmYzOC4uMmFmZTUxODNi YTIgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv bW14LWNoZWNrLmgNCj4gPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9tbXgtY2hlY2suaA0KPiA+ID4gPiA+IEBAIC0xLDggKzEsNiBAQA0KPiA+ID4gPiA+ICAjaW5j bHVkZSA8c3RkaW8uaD4NCj4gPiA+ID4gPiAgI2luY2x1ZGUgPHN0ZGxpYi5oPg0KPiA+ID4gPiA+ DQo+ID4gPiA+ID4gLSNpbmNsdWRlICJjcHVpZC5oIg0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAg c3RhdGljIHZvaWQgbW14X3Rlc3QgKHZvaWQpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIHN0YXRp YyB2b2lkDQo+ID4gPiA+ID4gQEAgLTE1LDEzICsxMyw4IEBAIGRvX3Rlc3QgKHZvaWQpICBpbnQg IG1haW4gKCkgIHsNCj4gPiA+ID4gPiAtICB1bnNpZ25lZCBpbnQgZWF4LCBlYngsIGVjeCwgZWR4 Ow0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtICBpZiAoIV9fZ2V0X2NwdWlkICgxLCAmZWF4LCAm ZWJ4LCAmZWN4LCAmZWR4KSkNCj4gPiA+ID4gPiAtICAgIHJldHVybiAwOw0KPiA+ID4gPiA+IC0N Cj4gPiA+ID4gPiAtICAvKiBSdW4gTU1YIHRlc3Qgb25seSBpZiBob3N0IGhhcyBNTVggc3VwcG9y dC4gICovDQo+ID4gPiA+ID4gLSAgaWYgKGVkeCAmIGJpdF9NTVgpDQo+ID4gPiA+ID4gKyAgLyog Q2hlY2sgY3B1IHN1cHBvcnQgZm9yIE1NWC4gICovICBpZiAoX19idWlsdGluX2NwdV9zdXBwb3J0 cw0KPiA+ID4gPiA+ICsgKCJtbXgiKSkNCj4gPiA+ID4gPiAgICAgIGRvX3Rlc3QgKCk7DQo+ID4g PiA+ID4NCj4gPiA+ID4gPiAgICByZXR1cm4gMDsNCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcGNsbXVsLWF2eC1jaGVjay5oDQo+ID4gPiA+ID4g Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wY2xtdWwtYXZ4LWNoZWNrLmgNCj4gPiA+ ID4gPiBpbmRleCA1ZWVkMmUyMjAzYy4uYjUwNmIzMzA2ZTYgMTAwNjQ0DQo+ID4gPiA+ID4gLS0t IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcGNsbXVsLWF2eC1jaGVjay5oDQo+ID4g PiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcGNsbXVsLWF2eC1jaGVj ay5oDQo+ID4gPiA+ID4gQEAgLTIsOCArMiw2IEBADQo+ID4gPiA+ID4gICNpbmNsdWRlIDxzdGRp by5oPg0KPiA+ID4gPiA+ICAjZW5kaWYNCj4gPiA+ID4gPiAgI2luY2x1ZGUgPHN0ZGxpYi5oPg0K PiA+ID4gPiA+IC0jaW5jbHVkZSAiY3B1aWQuaCINCj4gPiA+ID4gPiAtI2luY2x1ZGUgImF2eC1v cy1zdXBwb3J0LmgiDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgc3RhdGljIHZvaWQgcGNsbXVsX2F2 eF90ZXN0ICh2b2lkKTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEBAIC0xNywxNSArMTUsOSBAQCBk b190ZXN0ICh2b2lkKSAgaW50ICBtYWluICgpICB7DQo+ID4gPiA+ID4gLSAgdW5zaWduZWQgaW50 IGVheCwgZWJ4LCBlY3gsIGVkeDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgaWYgKCFfX2dl dF9jcHVpZCAoMSwgJmVheCwgJmVieCwgJmVjeCwgJmVkeCkpDQo+ID4gPiA+ID4gLSAgICByZXR1 cm4gMDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgLyogUnVuIFBDTE1VTCArIEFWWCB0ZXN0 IG9ubHkgaWYgaG9zdCBoYXMgUENMTVVMICsgQVZYDQo+ID4gPiA+ID4gc3VwcG9ydC4gICovDQo+ ID4gPiA+ID4gLSAgaWYgKCgoZWN4ICYgKGJpdF9BVlggfCBiaXRfT1NYU0FWRSB8IGJpdF9QQ0xN VUwpKQ0KPiA+ID4gPiA+IC0gICAgICAgPT0gKGJpdF9BVlggfCBiaXRfT1NYU0FWRSB8IGJpdF9Q Q0xNVUwpKQ0KPiA+ID4gPiA+IC0gICAgICAmJiBhdnhfb3Nfc3VwcG9ydCAoKSkNCj4gPiA+ID4g PiArICAvKiBDaGVjayBjcHUgc3VwcG9ydCBmb3IgUENMTVVMIGFuZCBBVlguICAqLyAgaWYNCj4g PiA+ID4gPiArIChfX2J1aWx0aW5fY3B1X3N1cHBvcnRzICgicGNsbXVsIikNCj4gPiA+ID4gPiAr ICAgICAgJiYgX19idWlsdGluX2NwdV9zdXBwb3J0cyAoImF2eCIpKQ0KPiA+ID4gPiA+ICAgICAg ew0KPiA+ID4gPiA+ICAgICAgICBkb190ZXN0ICgpOw0KPiA+ID4gPiA+ICAjaWZkZWYgREVCVUcN Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcGNs bXVsLWNoZWNrLmgNCj4gPiA+ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3Bj bG11bC1jaGVjay5oDQo+ID4gPiA+ID4gaW5kZXggNzUyNmNiZTJkZGYuLjNlZDFhMDQ0NjI3IDEw MDY0NA0KPiA+ID4gPiA+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3BjbG11 bC1jaGVjay5oDQo+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv cGNsbXVsLWNoZWNrLmgNCj4gPiA+ID4gPiBAQCAtMSw4ICsxLDYgQEANCj4gPiA+ID4gPiAgI2lu Y2x1ZGUgPHN0ZGlvLmg+DQo+ID4gPiA+ID4gICNpbmNsdWRlIDxzdGRsaWIuaD4NCj4gPiA+ID4g Pg0KPiA+ID4gPiA+IC0jaW5jbHVkZSAiY3B1aWQuaCINCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4g IHN0YXRpYyB2b2lkIHBjbG11bF90ZXN0ICh2b2lkKTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICBz dGF0aWMgdm9pZA0KPiA+ID4gPiA+IEBAIC0xNSwxMyArMTMsOCBAQCBkb190ZXN0ICh2b2lkKSAg aW50ICBtYWluICgpICB7DQo+ID4gPiA+ID4gLSAgdW5zaWduZWQgaW50IGVheCwgZWJ4LCBlY3gs IGVkeDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgaWYgKCFfX2dldF9jcHVpZCAoMSwgJmVh eCwgJmVieCwgJmVjeCwgJmVkeCkpDQo+ID4gPiA+ID4gLSAgICByZXR1cm4gMDsNCj4gPiA+ID4g PiAtDQo+ID4gPiA+ID4gLSAgLyogUnVuIFBDTE1VTFFEUSB0ZXN0IG9ubHkgaWYgaG9zdCBoYXMg UENMTVVMUURRIHN1cHBvcnQuICAqLw0KPiA+ID4gPiA+IC0gIGlmIChlY3ggJiBiaXRfUENMTVVM KQ0KPiA+ID4gPiA+ICsgIC8qIENoZWNrIGNwdSBzdXBwb3J0IGZvciBQQ0xNVUwuICAqLyAgaWYN Cj4gPiA+ID4gPiArIChfX2J1aWx0aW5fY3B1X3N1cHBvcnRzICgicGNsbXVsIikpDQo+ID4gPiA+ ID4gICAgICB7DQo+ID4gPiA+ID4gICAgICAgIGRvX3Rlc3QgKCk7DQo+ID4gPiA+ID4gICNpZmRl ZiBERUJVRw0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9ydG0tY2hlY2suaA0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvcnRtLWNoZWNrLmgNCj4gPiA+ID4gPiBpbmRleCBiZGI1YTZkYzBiZi4uNDEyMWU2MDJhN2Yg MTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcnRt LWNoZWNrLmgNCj4gPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9y dG0tY2hlY2suaA0KPiA+ID4gPiA+IEBAIC0xLDUgKzEsNCBAQA0KPiA+ID4gPiA+ICAjaW5jbHVk ZSA8c3RkbGliLmg+DQo+ID4gPiA+ID4gLSNpbmNsdWRlICJjcHVpZC5oIg0KPiA+ID4gPiA+DQo+ ID4gPiA+ID4gIHN0YXRpYyB2b2lkIHJ0bV90ZXN0ICh2b2lkKTsNCj4gPiA+ID4gPg0KPiA+ID4g PiA+IEBAIC0xMSwxMyArMTAsOCBAQCBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pbmxp bmUpKQ0KPiA+ID4gPiA+IGRvX3Rlc3QgKHZvaWQpICBpbnQgIG1haW4gKCkgIHsNCj4gPiA+ID4g PiAtICB1bnNpZ25lZCBpbnQgZWF4LCBlYngsIGVjeCwgZWR4Ow0KPiA+ID4gPiA+IC0NCj4gPiA+ ID4gPiAtICBpZiAoIV9fZ2V0X2NwdWlkX2NvdW50ICg3LCAwLCAmZWF4LCAmZWJ4LCAmZWN4LCAm ZWR4KSkNCj4gPiA+ID4gPiAtICAgIHJldHVybiAwOw0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAt ICAvKiBSdW4gUlRNIHRlc3Qgb25seSBpZiBob3N0IGhhcyBSVE0gc3VwcG9ydC4gICovDQo+ID4g PiA+ID4gLSAgaWYgKGVieCAmIGJpdF9SVE0pDQo+ID4gPiA+ID4gKyAgLyogQ2hlY2sgY3B1IHN1 cHBvcnQgZm9yIFJUTS4gICovICBpZiAoX19idWlsdGluX2NwdV9zdXBwb3J0cw0KPiA+ID4gPiA+ ICsgKCJydG0iKSkNCj4gPiA+ID4gPiAgICAgIHsNCj4gPiA+ID4gPiAgICAgICAgZG9fdGVzdCAo KTsNCj4gPiA+ID4gPiAgI2lmZGVmIERFQlVHDQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NoYS1jaGVjay5oDQo+ID4gPiA+ID4gYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zaGEtY2hlY2suaA0KPiA+ID4gPiA+IGluZGV4IDViYzVh NTlhYjgwLi42MWNlNDMwNTNmOSAxMDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9zaGEtY2hlY2suaA0KPiA+ID4gPiA+ICsrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L3NoYS1jaGVjay5oDQo+ID4gPiA+ID4gQEAgLTEsNSArMSw0IEBA DQo+ID4gPiA+ID4gICNpbmNsdWRlIDxzdGRsaWIuaD4NCj4gPiA+ID4gPiAtI2luY2x1ZGUgImNw dWlkLmgiDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgc3RhdGljIHZvaWQgc2hhX3Rlc3QgKHZvaWQp Ow0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQEAgLTEzLDEzICsxMiw4IEBAIGRvX3Rlc3QgKHZvaWQp ICBpbnQgIG1haW4gKCkgIHsNCj4gPiA+ID4gPiAtICB1bnNpZ25lZCBpbnQgZWF4LCBlYngsIGVj eCwgZWR4Ow0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtICBpZiAoIV9fZ2V0X2NwdWlkX2NvdW50 ICg3LCAwLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KSkNCj4gPiA+ID4gPiAtICAgIHJldHVybiAw Ow0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtICAvKiBSdW4gU0hBIHRlc3Qgb25seSBpZiBob3N0 IGhhcyBTSEEgc3VwcG9ydC4gICovDQo+ID4gPiA+ID4gLSAgaWYgKGVieCAmIGJpdF9TSEEpDQo+ ID4gPiA+ID4gKyAgLyogQ2hlY2sgY3B1IHN1cHBvcnQgZm9yIFNIQS4gICovICBpZiAoX19idWls dGluX2NwdV9zdXBwb3J0cw0KPiA+ID4gPiA+ICsgKCJzaGEiKSkNCj4gPiA+ID4gPiAgICAgIHsN Cj4gPiA+ID4gPiAgICAgICAgZG9fdGVzdCAoKTsNCj4gPiA+ID4gPiAgI2lmZGVmIERFQlVHDQo+ ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZS1j aGVjay5oDQo+ID4gPiA+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtY2hl Y2suaA0KPiA+ID4gPiA+IGluZGV4IDExYjcxYmMzZTk3Li41OGJjODhjNTU5OCAxMDA2NDQNCj4g PiA+ID4gPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtY2hlY2suaA0K PiA+ID4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZS1jaGVjay5o DQo+ID4gPiA+ID4gQEAgLTEsNyArMSw1IEBADQo+ID4gPiA+ID4gICNpbmNsdWRlIDxzdGRsaWIu aD4NCj4gPiA+ID4gPiAgI2luY2x1ZGUgIm0xMjgtY2hlY2suaCINCj4gPiA+ID4gPiAtI2luY2x1 ZGUgImNwdWlkLmgiDQo+ID4gPiA+ID4gLSNpbmNsdWRlICJzc2Utb3Mtc3VwcG9ydC5oIg0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gIHN0YXRpYyB2b2lkIHNzZV90ZXN0ICh2b2lkKTsNCj4gPiA+ID4g Pg0KPiA+ID4gPiA+IEBAIC0xNSwxMyArMTMsOCBAQCBkb190ZXN0ICh2b2lkKSAgaW50ICBtYWlu ICgpICB7DQo+ID4gPiA+ID4gLSAgdW5zaWduZWQgaW50IGVheCwgZWJ4LCBlY3gsIGVkeDsNCj4g PiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgaWYgKCFfX2dldF9jcHVpZCAoMSwgJmVheCwgJmVieCwg JmVjeCwgJmVkeCkpDQo+ID4gPiA+ID4gLSAgICByZXR1cm4gMDsNCj4gPiA+ID4gPiAtDQo+ID4g PiA+ID4gLSAgLyogUnVuIFNTRSB0ZXN0IG9ubHkgaWYgaG9zdCBoYXMgU1NFIHN1cHBvcnQuICAq Lw0KPiA+ID4gPiA+IC0gIGlmICgoZWR4ICYgYml0X1NTRSkgJiYgc3NlX29zX3N1cHBvcnQgKCkp DQo+ID4gPiA+ID4gKyAgLyogQ2hlY2sgY3B1IHN1cHBvcnQgZm9yIFNTRS4gICovICBpZiAoX19i dWlsdGluX2NwdV9zdXBwb3J0cw0KPiA+ID4gPiA+ICsgKCJzc2UiKSkNCj4gPiA+ID4gPiAgICAg IGRvX3Rlc3QgKCk7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgICByZXR1cm4gMDsNCj4gPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlMi1jaGVjay5o DQo+ID4gPiA+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UyLWNoZWNrLmgN Cj4gPiA+ID4gPiBpbmRleCBmZDRhNmNlMWRiZi4uNDk3NmEyNzAyMmQgMTAwNjQ0DQo+ID4gPiA+ ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlMi1jaGVjay5oDQo+ID4g PiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlMi1jaGVjay5oDQo+ ID4gPiA+ID4gQEAgLTEsNyArMSw1IEBADQo+ID4gPiA+ID4gICNpbmNsdWRlIDxzdGRsaWIuaD4N Cj4gPiA+ID4gPiAtI2luY2x1ZGUgImNwdWlkLmgiDQo+ID4gPiA+ID4gICNpbmNsdWRlICJtMTI4 LWNoZWNrLmgiDQo+ID4gPiA+ID4gLSNpbmNsdWRlICJzc2Utb3Mtc3VwcG9ydC5oIg0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gIHN0YXRpYyB2b2lkIHNzZTJfdGVzdCAodm9pZCk7DQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiBAQCAtMTUsMTMgKzEzLDggQEAgZG9fdGVzdCAodm9pZCkgIGludCAgbWFpbiAo KSAgew0KPiA+ID4gPiA+IC0gIHVuc2lnbmVkIGludCBlYXgsIGVieCwgZWN4LCBlZHg7DQo+ID4g PiA+ID4gLQ0KPiA+ID4gPiA+IC0gIGlmICghX19nZXRfY3B1aWQgKDEsICZlYXgsICZlYngsICZl Y3gsICZlZHgpKQ0KPiA+ID4gPiA+IC0gICAgcmV0dXJuIDA7DQo+ID4gPiA+ID4gLQ0KPiA+ID4g PiA+IC0gIC8qIFJ1biBTU0UyIHRlc3Qgb25seSBpZiBob3N0IGhhcyBTU0UyIHN1cHBvcnQuICAq Lw0KPiA+ID4gPiA+IC0gIGlmICgoZWR4ICYgYml0X1NTRTIpICYmIHNzZV9vc19zdXBwb3J0ICgp KQ0KPiA+ID4gPiA+ICsgIC8qIENoZWNrIGNwdSBzdXBwb3J0IGZvciBTU0UyLiAgKi8gIGlmDQo+ ID4gPiA+ID4gKyAoX19idWlsdGluX2NwdV9zdXBwb3J0cyAoInNzZTIiKSkNCj4gPiA+ID4gPiAg ICAgIGRvX3Rlc3QgKCk7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgICByZXR1cm4gMDsNCj4gPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlMy1jaGVj ay5oDQo+ID4gPiA+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UzLWNoZWNr LmgNCj4gPiA+ID4gPiBpbmRleCA1YTBhMGIxYTAyZS4uM2M1ODM2MWU5MjUgMTAwNjQ0DQo+ID4g PiA+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlMy1jaGVjay5oDQo+ ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlMy1jaGVjay5o DQo+ID4gPiA+ID4gQEAgLTEsNyArMSw1IEBADQo+ID4gPiA+ID4gICNpbmNsdWRlIDxzdGRpby5o Pg0KPiA+ID4gPiA+ICAjaW5jbHVkZSA8c3RkbGliLmg+DQo+ID4gPiA+ID4gLSNpbmNsdWRlICJj cHVpZC5oIg0KPiA+ID4gPiA+IC0jaW5jbHVkZSAic3NlLW9zLXN1cHBvcnQuaCINCj4gPiA+ID4g Pg0KPiA+ID4gPiA+ICBzdGF0aWMgdm9pZCBzc2UzX3Rlc3QgKHZvaWQpOw0KPiA+ID4gPiA+DQo+ ID4gPiA+ID4gQEAgLTE1LDEzICsxMyw4IEBAIGRvX3Rlc3QgKHZvaWQpICBpbnQgIG1haW4gKCkg IHsNCj4gPiA+ID4gPiAtICB1bnNpZ25lZCBpbnQgZWF4LCBlYngsIGVjeCwgZWR4Ow0KPiA+ID4g PiA+IC0NCj4gPiA+ID4gPiAtICBpZiAoIV9fZ2V0X2NwdWlkICgxLCAmZWF4LCAmZWJ4LCAmZWN4 LCAmZWR4KSkNCj4gPiA+ID4gPiAtICAgIHJldHVybiAwOw0KPiA+ID4gPiA+IC0NCj4gPiA+ID4g PiAtICAvKiBSdW4gU1NFMyB0ZXN0IG9ubHkgaWYgaG9zdCBoYXMgU1NFMyBzdXBwb3J0LiAgKi8N Cj4gPiA+ID4gPiAtICBpZiAoKGVjeCAmIGJpdF9TU0UzKSAmJiBzc2Vfb3Nfc3VwcG9ydCAoKSkN Cj4gPiA+ID4gPiArICAvKiBDaGVjayBjcHUgc3VwcG9ydCBmb3IgU1NFMy4gICovICBpZg0KPiA+ ID4gPiA+ICsgKF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJzc2UzIikpDQo+ID4gPiA+ID4gICAg ICBkb190ZXN0ICgpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgcmV0dXJuIDA7DQo+ID4gPiA+ ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZTRfMS1jaGVj ay5oDQo+ID4gPiA+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2U0XzEtY2hl Y2suaA0KPiA+ID4gPiA+IGluZGV4IDc4OGY2NWQ2MWNiLi42MWQwZDAyODRhOCAxMDA2NDQNCj4g PiA+ID4gPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2U0XzEtY2hlY2su aA0KPiA+ID4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZTRfMS1j aGVjay5oDQo+ID4gPiA+ID4gQEAgLTEsNiArMSw0IEBADQo+ID4gPiA+ID4gICNpbmNsdWRlIDxz dGRsaWIuaD4NCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSNpbmNsdWRlICJjcHVpZC5oIg0KPiA+ ID4gPiA+ICAjaW5jbHVkZSAibTEyOC1jaGVjay5oIg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIHN0 YXRpYyB2b2lkIHNzZTRfMV90ZXN0ICh2b2lkKTsgQEAgLTE3LDEzICsxNSw4IEBAIGRvX3Rlc3QN Cj4gPiA+ID4gPiAodm9pZCkgIGludCAgbWFpbiAoKSAgew0KPiA+ID4gPiA+IC0gIHVuc2lnbmVk IGludCBlYXgsIGVieCwgZWN4LCBlZHg7DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0gIGlmICgh X19nZXRfY3B1aWQgKDEsICZlYXgsICZlYngsICZlY3gsICZlZHgpKQ0KPiA+ID4gPiA+IC0gICAg cmV0dXJuIDA7DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0gIC8qIFJ1biBTU0U0LjEgdGVzdCBv bmx5IGlmIGhvc3QgaGFzIFNTRTQuMSBzdXBwb3J0LiAgKi8NCj4gPiA+ID4gPiAtICBpZiAoZWN4 ICYgYml0X1NTRTRfMSkNCj4gPiA+ID4gPiArICAvKiBDaGVjayBjcHUgc3VwcG9ydCBmb3IgU1NF NC4xLiAgKi8gIGlmDQo+ID4gPiA+ID4gKyAoX19idWlsdGluX2NwdV9zdXBwb3J0cyAoInNzZTQu MSIpKQ0KPiA+ID4gPiA+ICAgICAgZG9fdGVzdCAoKTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAg IHJldHVybiAwOw0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9zc2U0XzItY2hlY2suaA0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvc3NlNF8yLWNoZWNrLmgNCj4gPiA+ID4gPiBpbmRleCBjMzNjZDFiNDk4Ni4uNmM5 MjFhYzUyYzcgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvc3NlNF8yLWNoZWNrLmgNCj4gPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9zc2U0XzItY2hlY2suaA0KPiA+ID4gPiA+IEBAIC0xLDggKzEsNiBAQA0KPiA+ ID4gPiA+ICAjaW5jbHVkZSA8c3RkaW8uaD4NCj4gPiA+ID4gPiAgI2luY2x1ZGUgPHN0ZGxpYi5o Pg0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAgI2luY2x1ZGUgIm0xMjgtY2hlY2suaCINCj4gPiA+ ID4gPiAtI2luY2x1ZGUgImNwdWlkLmgiDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgc3RhdGljIHZv aWQgc3NlNF8yX3Rlc3QgKHZvaWQpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQEAgLTE2LDEzICsx NCw4IEBAIGRvX3Rlc3QgKHZvaWQpICBpbnQgIG1haW4gKCkgIHsNCj4gPiA+ID4gPiAtICB1bnNp Z25lZCBpbnQgZWF4LCBlYngsIGVjeCwgZWR4Ow0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtICBp ZiAoIV9fZ2V0X2NwdWlkICgxLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KSkNCj4gPiA+ID4gPiAt ICAgIHJldHVybiAwOw0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtICAvKiBSdW4gU1NFNC4yIHRl c3Qgb25seSBpZiBob3N0IGhhcyBTU0U0LjIgc3VwcG9ydC4gICovDQo+ID4gPiA+ID4gLSAgaWYg KGVjeCAmIGJpdF9TU0U0XzIpDQo+ID4gPiA+ID4gKyAgLyogQ2hlY2sgY3B1IHN1cHBvcnQgZm9y IFNTRTQuMi4gICovICBpZg0KPiA+ID4gPiA+ICsgKF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJz c2U0LjIiKSkNCj4gPiA+ID4gPiAgICAgIGRvX3Rlc3QgKCk7DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiAgICByZXR1cm4gMDsNCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvc3NlNGEtY2hlY2suaA0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvc3NlNGEtY2hlY2suaA0KPiA+ID4gPiA+IGluZGV4IGQ0M2I0YjIyMmIxLi5h ZTcwZmYwYTI2OCAxMDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9zc2U0YS1jaGVjay5oDQo+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvc3NlNGEtY2hlY2suaA0KPiA+ID4gPiA+IEBAIC0xLDggKzEsNiBAQA0KPiA+ ID4gPiA+ICAjaW5jbHVkZSA8c3RkaW8uaD4NCj4gPiA+ID4gPiAgI2luY2x1ZGUgPHN0ZGxpYi5o Pg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLSNpbmNsdWRlICJjcHVpZC5oIg0KPiA+ID4gPiA+IC0N Cj4gPiA+ID4gPiAgc3RhdGljIHZvaWQgc3NlNGFfdGVzdCAodm9pZCk7DQo+ID4gPiA+ID4NCj4g PiA+ID4gPiAgc3RhdGljIHZvaWQNCj4gPiA+ID4gPiBAQCAtMTUsMTMgKzEzLDggQEAgZG9fdGVz dCAodm9pZCkgIGludCAgbWFpbiAoKSAgew0KPiA+ID4gPiA+IC0gIHVuc2lnbmVkIGludCBlYXgs IGVieCwgZWN4LCBlZHg7DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0gIGlmICghX19nZXRfY3B1 aWQgKDB4ODAwMDAwMDEsICZlYXgsICZlYngsICZlY3gsICZlZHgpKQ0KPiA+ID4gPiA+IC0gICAg cmV0dXJuIDA7DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0gIC8qIFJ1biBTU0U0YSB0ZXN0IG9u bHkgaWYgaG9zdCBoYXMgU1NFNGEgc3VwcG9ydC4gICovDQo+ID4gPiA+ID4gLSAgaWYgKGVjeCAm IGJpdF9TU0U0YSkNCj4gPiA+ID4gPiArICAvKiBDaGVjayBjcHUgc3VwcG9ydCBmb3IgU1NFNGEu ICAqLyAgaWYNCj4gPiA+ID4gPiArIChfX2J1aWx0aW5fY3B1X3N1cHBvcnRzICgic3NlNGEiKSkN Cj4gPiA+ID4gPiAgICAgIGRvX3Rlc3QgKCk7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgICByZXR1 cm4gMDsNCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvc3NzZTMtY2hlY2suaA0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvc3NzZTMtY2hlY2suaA0KPiA+ID4gPiA+IGluZGV4IDNjYTc5MzMzYzdmLi4zZTgzNDgxMWYy ZCAxMDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9z c3NlMy1jaGVjay5oDQo+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvc3NzZTMtY2hlY2suaA0KPiA+ID4gPiA+IEBAIC0xLDggKzEsNiBAQA0KPiA+ID4gPiA+ICAj aW5jbHVkZSA8c3RkaW8uaD4NCj4gPiA+ID4gPiAgI2luY2x1ZGUgPHN0ZGxpYi5oPg0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gLSNpbmNsdWRlICJjcHVpZC5oIg0KPiA+ID4gPiA+IC0NCj4gPiA+ID4g PiAgc3RhdGljIHZvaWQgc3NzZTNfdGVzdCAodm9pZCk7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAg c3RhdGljIHZvaWQNCj4gPiA+ID4gPiBAQCAtMTUsMTMgKzEzLDggQEAgZG9fdGVzdCAodm9pZCkg IGludCAgbWFpbiAoKSAgew0KPiA+ID4gPiA+IC0gIHVuc2lnbmVkIGludCBlYXgsIGVieCwgZWN4 LCBlZHg7DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0gIGlmICghX19nZXRfY3B1aWQgKDEsICZl YXgsICZlYngsICZlY3gsICZlZHgpKQ0KPiA+ID4gPiA+IC0gICAgcmV0dXJuIDA7DQo+ID4gPiA+ ID4gLQ0KPiA+ID4gPiA+IC0gIC8qIFJ1biBTU1NFMyB0ZXN0IG9ubHkgaWYgaG9zdCBoYXMgU1NT RTMgc3VwcG9ydC4gICovDQo+ID4gPiA+ID4gLSAgaWYgKGVjeCAmIGJpdF9TU1NFMykNCj4gPiA+ ID4gPiArICAvKiBDaGVjayBjcHUgc3VwcG9ydCBmb3IgU1NTRTMuICAqLyAgaWYNCj4gPiA+ID4g PiArIChfX2J1aWx0aW5fY3B1X3N1cHBvcnRzICgic3NzZTMiKSkNCj4gPiA+ID4gPiAgICAgIGRv X3Rlc3QgKCk7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgICByZXR1cm4gMDsNCj4gPiA+ID4gPiBk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYveG9wLWNoZWNrLmgNCj4g PiA+ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3hvcC1jaGVjay5oDQo+ID4g PiA+ID4gaW5kZXggMzk1YWJlODc2NmQuLmUxZWYxMjczMTExIDEwMDY0NA0KPiA+ID4gPiA+IC0t LSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3hvcC1jaGVjay5oDQo+ID4gPiA+ID4g KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYveG9wLWNoZWNrLmgNCj4gPiA+ID4g PiBAQCAtMSw2ICsxLDQgQEANCj4gPiA+ID4gPiAgI2luY2x1ZGUgPHN0ZGxpYi5oPg0KPiA+ID4g PiA+IC0NCj4gPiA+ID4gPiAtI2luY2x1ZGUgImNwdWlkLmgiDQo+ID4gPiA+ID4gICNpbmNsdWRl ICJtMjU2LWNoZWNrLmgiDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgc3RhdGljIHZvaWQgeG9wX3Rl c3QgKHZvaWQpOw0KPiA+ID4gPiA+IEBAIC0xNSwxMyArMTMsOCBAQCBkb190ZXN0ICh2b2lkKSAg aW50ICBtYWluICgpICB7DQo+ID4gPiA+ID4gLSAgdW5zaWduZWQgaW50IGVheCwgZWJ4LCBlY3gs IGVkeDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgaWYgKCFfX2dldF9jcHVpZCAoMHg4MDAw MDAwMSwgJmVheCwgJmVieCwgJmVjeCwgJmVkeCkpDQo+ID4gPiA+ID4gLSAgICByZXR1cm4gMDsN Cj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgLyogUnVuIFhPUCB0ZXN0IG9ubHkgaWYgaG9zdCBo YXMgWE9QIHN1cHBvcnQuICAqLw0KPiA+ID4gPiA+IC0gIGlmIChlY3ggJiBiaXRfWE9QKQ0KPiA+ ID4gPiA+ICsgIC8qIENoZWNrIGNwdSBzdXBwb3J0IGZvciBYT1AuICAqLyAgaWYgKF9fYnVpbHRp bl9jcHVfc3VwcG9ydHMNCj4gPiA+ID4gPiArICgieG9wIikpDQo+ID4gPiA+ID4gICAgICBkb190 ZXN0ICgpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgcmV0dXJuIDA7DQo+ID4gPiA+ID4gLS0N Cj4gPiA+ID4gPiAyLjE4LjENCj4gPiA+ID4gPg0K