From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10065.outbound.protection.outlook.com [40.107.1.65]) by sourceware.org (Postfix) with ESMTPS id 02E7F3858C74 for ; Fri, 26 Aug 2022 13:29:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 02E7F3858C74 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=f9+4vTu88rbaQiAckjj0NHjyR0TzMsw7hAWfC1ds9qlhpqF6NJGpwIjnyp4V0fY1t0tvyqyRSWioJStPUkKDSWNkv0ymXOS0+82RlTwrGFQKDYcTWPwMsL5wZDGw2XmF4GaRvbKxjGXg9aoAbKkJ538KQ44WfebJh4RizzaPxBq97OFWHPjX4gSPfNu9Smtvf79Du74KTu5PaYIJoyudYSgpG1JUPDPg6iqvjLn+dqDJ2O7OKqBNFYJmXbZdKCrVLBK8US+0vO9vKcQODdMSMvvW4A+ZNKDOfplCY9Gs7PcK3WVgN/ZS+SFH++N1wYYrdlGgF1FV9LobylPk5Cv/IQ== ARC-Message-Signature: i=2; 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=7mwc7cqiSoHTSKwPk9qyOvzR772v9WzXWOWXnV0by/o=; b=kvcJpSdNshZVfNObTxybd/HF2iB5lVqV/s56dRcJtfsymHMMPTDxMlpa6bgudXSZD0M/hO9236pImKDlTxSEizqSsK6OrT2OCGdgMN+z9rAjufC5bdSR2gYHDRI2+hqkow3ZRH/bFfg6pMMcXzmHJYa86I+Gz7m9utxRW85lNRtee2Mh1hwA+5rWL2rc/kQ6v2T5/GWN1L7o3xO+/GgIgwY5XtNK4Kc5zBAawobD7qm8PG9U5j6B5FKZ9lceYCFOdMqH9hSKn1Be2ORScWrYnhquHzOBLtr3UcMTYpDjrLwJVQE0TJZbI9iQBOASrSDOyXMaqtPFwPq7vIIrv5Pu0A== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7mwc7cqiSoHTSKwPk9qyOvzR772v9WzXWOWXnV0by/o=; b=PWOZdMMqEpvPLdIfhMDQy4M9UNDhWxCRlLAFLyT9QEuHT2Ew7JKK9gGB0kt8DKZ3g3LMVQuoqL/BVvoESg+VOWjJ4z07ftqBqOfy4B/uStSGPjWvFANtxz3xvW4v6eeNg6HCJUxLXHGKu4tWze6y0cLgG5P3Y7oK7NeqDBKVIDA= Received: from DB8PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:10:110::17) by DB9PR08MB6474.eurprd08.prod.outlook.com (2603:10a6:10:255::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Fri, 26 Aug 2022 13:29:22 +0000 Received: from DBAEUR03FT053.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:110:cafe::45) by DB8PR04CA0007.outlook.office365.com (2603:10a6:10:110::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15 via Frontend Transport; Fri, 26 Aug 2022 13:29:22 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT053.mail.protection.outlook.com (100.127.142.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15 via Frontend Transport; Fri, 26 Aug 2022 13:29:22 +0000 Received: ("Tessian outbound fa99bf31ee7d:v123"); Fri, 26 Aug 2022 13:29:22 +0000 X-CR-MTA-TID: 64aa7808 Received: from bb716e360c69.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 88955FBC-3380-483B-B4BA-73149B1DC781.1; Fri, 26 Aug 2022 13:29:17 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id bb716e360c69.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 26 Aug 2022 13:29:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nv7duEA7BWiPGNLWCLA5ZbZpZqQhInchPZyUJYzadmAqYO+w+hO36vpFcDGQs8bFvAu7hvamb2OkR51Itl8lpWkd4xnCqHRONjhshOvbeiIDIY3Kebs1NOHw2V3KGMIcNBe3dx8cfKlJdYAiSkbTOJxt/ktLv6Q3EJ2DXXo/0nIUcomgDy028I2dnvrVWxKlh75KW75K6RUjhT3njyNgcf6nbESHHZJXAqIgn/qXlCaVB6ofgkfgK7HKIayEfUjGjFFChND/MbgjNED3D9Lh09U6zolL4X5HvMom8Ag8iDklzkDHejVov4oGTMF9JyBZQvKzuKt93TM8j2cG2uwjTQ== 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=7mwc7cqiSoHTSKwPk9qyOvzR772v9WzXWOWXnV0by/o=; b=dci7C+CrX9SLswAFcbnbXDBEMriw8cPtsX0vYJVfNISP2olNUJFtKW7cEiZvxzeixr8GWIhryYvNLQeOIdTOpUHIeMBnfLRlhoOSHY3Xaz3ISYQrUD3eislelVQNXC+vmlAdWKXorfWzRUA/3AeKocAv6QtHooqU66OP+/fottN3YygV/zQiPu01g45LQNJDJfMTi8tgdJ47cghnZiB57ldMbcj/Cl60tgHxEiP9rBMYH6dZYTty0mAL75NA417GeDjaV5HASaC7iWt9roAjjOWFrK08KL+EIoReXoMiHxhUysqzz5wW3fGOkF8fM1F8DX11XaFGqIdM20eTKnrFaQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7mwc7cqiSoHTSKwPk9qyOvzR772v9WzXWOWXnV0by/o=; b=PWOZdMMqEpvPLdIfhMDQy4M9UNDhWxCRlLAFLyT9QEuHT2Ew7JKK9gGB0kt8DKZ3g3LMVQuoqL/BVvoESg+VOWjJ4z07ftqBqOfy4B/uStSGPjWvFANtxz3xvW4v6eeNg6HCJUxLXHGKu4tWze6y0cLgG5P3Y7oK7NeqDBKVIDA= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by AM0PR08MB5537.eurprd08.prod.outlook.com (2603:10a6:208:148::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Fri, 26 Aug 2022 13:29:14 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::6529:66e5:e7d4:1a40]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::6529:66e5:e7d4:1a40%4]) with mapi id 15.20.5566.015; Fri, 26 Aug 2022 13:29:13 +0000 From: Tamar Christina To: Richard Biener , mtsamis CC: GCC Patches , "jiangning.liu@amperecomputing.com" , Philipp Tomsich Subject: RE: [PATCH] Add pattern to convert vector shift + bitwise and + multiply to vector compare in some cases. Thread-Topic: [PATCH] Add pattern to convert vector shift + bitwise and + multiply to vector compare in some cases. Thread-Index: AQHYrvtczde7mPnYek6BnngnKanPM63A+M2AgABIJzA= Date: Fri, 26 Aug 2022 13:29:13 +0000 Message-ID: References: <20220813095843.1452308-1-manolis.tsamis@vrull.eu> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 2AC39C610FC9474C92A6A763877D9F38.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-MS-Office365-Filtering-Correlation-Id: 85ffcf3d-1f15-4dc6-91f4-08da8766fcde x-ms-traffictypediagnostic: AM0PR08MB5537:EE_|DBAEUR03FT053:EE_|DB9PR08MB6474:EE_ x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: AmJPVt+5LFZNlZQqrJ38xgUEW4kfj7FbRqtYstpwvvlgDmU+BK0dGaNTftelbpfJYl1ShMWQoo4x5DeTy75Da3lzdwCnABA6k8oJN9I3q3bWY3pN6QvmPaENTbBkQMu1YhPij0UAsIGIH9/MvLfENNIQtbts+lxgQoCLOjD4270Z1Qqvh3kVtJU7J6hDgg6nOYficjNjpSzzQrrG1FCDYsBMJaSUXeU/AyzcZzq5qfatOBsTzVRdkghddq5iGezPf3dMYLX22rKdPy6WahzMyC92DTDzbjO5NMLYux4H3HEkWsb8K810S/naWVuS5FLBMQ2obCp6lrg5ga0qby6nmA4aPxPNz+jHok7mDP1uGWohaXAB4Q91qLu39SaOLxd5gbLblGnfAjRuLDf/uxfLwdbQ7bVgMSZIKXq7Je+4QxeaVWn/bgJfxDodd2lsebonV72Fqb++4CQKrvnYjF/jy/pnt+kQUUulbkGYr8VhHcPotF0a43AJJtBpHcu4GpEZumvZcIFkSPh6CxpcfGWmaPzd/Aa7fKzQ1VNjOLfhVNarOQdP1Et53hfyG1WvsqXAWzHXh0yWg8TAHOwGZneRYhvhbbpMmbvXO+9zyBM/E40uHEmQCZi5EpRqEX32IIlBScfqI4H3XjfxwkpbiFU5wdEr1b3DdS2ftnwDE69+M7WKgr5olKlK8cxIirnzEKtOzOO/tglCg0UgnL8DvsMgCGRjm+G5u4RrwN1dvIS+YERZuy6mLZf+cc6/xsQTjVI9MO46+zuaLDd3pIR2Hh+PV6GxoEcuMDkP8bAFXFFMgc0= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(346002)(376002)(396003)(39860400002)(366004)(136003)(9686003)(2906002)(7696005)(6506007)(53546011)(83380400001)(26005)(33656002)(186003)(38070700005)(86362001)(66476007)(38100700002)(55016003)(5660300002)(8936002)(66446008)(122000001)(84970400001)(8676002)(76116006)(64756008)(66556008)(41300700001)(4326008)(110136005)(52536014)(316002)(478600001)(66946007)(71200400001)(54906003);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5537 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT053.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 671eeff0-1e0e-43ed-715e-08da8766f75b X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SFu9p8DqwlcSv66Ra+zLqzE6XkHYGeSvgDUrZKEXrfMhEAsTqkdXSGPX18nbHbF5G4tCSr3Tw1x6gcBUntfzVeIwPiBN8Z1Sn2hFnS5ZZq5X1B2SCSt95zXCVsTGy/34zj4BaXOJzSSkJxtT/QCuDYOIICTZIIjn9Gx6fgW4I7jpzgiU7tcgLwn9ceHrZN2kl/bgsrcK5z+voEW2A3pEN41B89tG/YTRqlcXWSGfjblIldern2TXMBhOTIT2WXh1UC19/dEmWZNTFwetWsPNLnThHMmc5VnOJfLkUvS+gUZUrNo3HHu7Pp0Ngk0fqStQJL8sMALJQlHMV7/l2eyK/URWI5Ic1niXN0Bbj5NToMeXsz7aPfN4rDVZTZcwoveoYbYnHUzqmkMTtekiUeMWFNAxLoRnfbV14cwMWsFwSMRnaIYBreyB+3ajZQQLbJVrzRgPGiJdwY8pCaxD1zS/a7ehzG/g9SlXJEKCvPuYppTuCny6mKwm025K9/veQUGZvvEiAYAkGNcxTRaIWqPNPGLV0pyQzbEyAEUWU0mVpgBNB8rV5PPZ6at5m4jxaDDRxSBjZB4FK23JXGl4dW6N5N9bUwPLtJqVDCHt7jH/cjHGA8EvDOJTZkhYYq9hHViMxY2LfsoXcWTsWbd4DPbiJNMQgcpPVp/xiHvmc1is1NR7/1P1n1SgKIExk4fYhKuhAZY7j4xiPlU/LCwyVYHG+p8mcufluvUZ09laADgtRM1+Upq+xVdSIYoJDwCyByFYFwUcCMoPqwDzx60eKW7h/LruhpzrmB4257KCT15yYuE= X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230016)(4636009)(39860400002)(136003)(376002)(346002)(396003)(40470700004)(36840700001)(46966006)(40480700001)(478600001)(6506007)(53546011)(107886003)(336012)(83380400001)(9686003)(7696005)(26005)(186003)(8936002)(52536014)(2906002)(55016003)(54906003)(316002)(82310400005)(5660300002)(40460700003)(70206006)(8676002)(110136005)(4326008)(70586007)(41300700001)(47076005)(82740400003)(33656002)(86362001)(81166007)(356005)(36860700001)(84970400001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Aug 2022 13:29:22.5205 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 85ffcf3d-1f15-4dc6-91f4-08da8766fcde X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT053.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6474 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY 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: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBHY2MtcGF0Y2hlcyA8Z2NjLXBh dGNoZXMtDQo+IGJvdW5jZXMrdGFtYXIuY2hyaXN0aW5hPWFybS5jb21AZ2NjLmdudS5vcmc+IE9u IEJlaGFsZiBPZiBSaWNoYXJkDQo+IEJpZW5lciB2aWEgR2NjLXBhdGNoZXMNCj4gU2VudDogRnJp ZGF5LCBBdWd1c3QgMjYsIDIwMjIgMTA6MDggQU0NCj4gVG86IG10c2FtaXMgPG1hbm9saXMudHNh bWlzQHZydWxsLmV1Pg0KPiBDYzogR0NDIFBhdGNoZXMgPGdjYy1wYXRjaGVzQGdjYy5nbnUub3Jn PjsNCj4gamlhbmduaW5nLmxpdUBhbXBlcmVjb21wdXRpbmcuY29tOyBQaGlsaXBwIFRvbXNpY2gN Cj4gPHBoaWxpcHAudG9tc2ljaEB2cnVsbC5ldT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSF0gQWRk IHBhdHRlcm4gdG8gY29udmVydCB2ZWN0b3Igc2hpZnQgKyBiaXR3aXNlIGFuZCArDQo+IG11bHRp cGx5IHRvIHZlY3RvciBjb21wYXJlIGluIHNvbWUgY2FzZXMuDQo+IA0KPiBPbiBTYXQsIEF1ZyAx MywgMjAyMiBhdCAxMTo1OSBBTSBtdHNhbWlzIDxtYW5vbGlzLnRzYW1pc0B2cnVsbC5ldT4gd3Jv dGU6DQo+ID4NCj4gPiBXaGVuIHVzaW5nIFNXQVIgKFNJTUQgaW4gYSByZWdpc3RlcikgdGVjaG5p cXVlcyBhIGNvbXBhcmlzb24gb3BlcmF0aW9uDQo+ID4gd2l0aGluIHN1Y2ggYSByZWdpc3RlciBj YW4gYmUgbWFkZSBieSB1c2luZyBhIGNvbWJpbmF0aW9uIG9mIHNoaWZ0cywNCj4gPiBiaXR3aXNl IGFuZCBhbmQgbXVsdGlwbGljYXRpb24uIElmIGNvZGUgdXNpbmcgdGhpcyBzY2hlbWUgaXMNCj4g PiB2ZWN0b3JpemVkIHRoZW4gdGhlcmUgaXMgcG90ZW50aWFsIHRvIHJlcGxhY2UgYWxsIHRoZXNl IG9wZXJhdGlvbnMNCj4gPiB3aXRoIGEgc2luZ2xlIHZlY3RvciBjb21wYXJpc29uLCBieSByZWlu dGVycHJldGluZyB0aGUgdmVjdG9yIHR5cGVzIHRvDQo+IG1hdGNoIHRoZSB3aWR0aCBvZiB0aGUg U1dBUiByZWdpc3Rlci4NCj4gPg0KPiA+IEZvciBleGFtcGxlLCBmb3IgdGhlIHRlc3QgZnVuY3Rp b24gcGFja2VkX2NtcF8xNl8zMiwgdGhlIG9yaWdpbmFsDQo+IGdlbmVyYXRlZCBjb2RlIGlzOg0K PiA+DQo+ID4gICAgICAgICBsZHIgICAgIHEwLCBbeDBdDQo+ID4gICAgICAgICBhZGQgICAgIHcx LCB3MSwgMQ0KPiA+ICAgICAgICAgdXNociAgICB2MC40cywgdjAuNHMsIDE1DQo+ID4gICAgICAg ICBhbmQgICAgIHYwLjE2YiwgdjAuMTZiLCB2Mi4xNmINCj4gPiAgICAgICAgIHNobCAgICAgdjEu NHMsIHYwLjRzLCAxNg0KPiA+ICAgICAgICAgc3ViICAgICB2MC40cywgdjEuNHMsIHYwLjRzDQo+ ID4gICAgICAgICBzdHIgICAgIHEwLCBbeDBdLCAxNg0KPiA+ICAgICAgICAgY21wICAgICB3Miwg dzENCj4gPiAgICAgICAgIGJoaSAgICAgLkwyMA0KPiA+DQo+ID4gd2l0aCB0aGlzIHBhdHRlcm4g dGhlIGFib3ZlIGNhbiBiZSBvcHRpbWl6ZWQgdG86DQo+ID4NCj4gPiAgICAgICAgIGxkciAgICAg cTAsIFt4MF0NCj4gPiAgICAgICAgIGFkZCAgICAgdzEsIHcxLCAxDQo+ID4gICAgICAgICBjbWx0 ICAgIHYwLjhoLCB2MC44aCwgIzANCj4gPiAgICAgICAgIHN0ciAgICAgcTAsIFt4MF0sIDE2DQo+ ID4gICAgICAgICBjbXAgICAgIHcyLCB3MQ0KPiA+ICAgICAgICAgYmhpICAgICAuTDIwDQo+ID4N Cj4gPiBUaGUgZWZmZWN0IGlzIHNpbWlsYXIgZm9yIHg4Ni02NC4NCj4gPg0KPiA+IGdjYy9DaGFu Z2VMb2c6DQo+ID4NCj4gPiAgICAgICAgICogbWF0Y2gucGQ6IFNpbXBsaWZ5IHZlY3RvciBzaGlm dCArIGJpdF9hbmQgKyBtdWx0aXBseSBpbiBzb21lIGNhc2VzLg0KPiA+DQo+ID4gZ2NjL3Rlc3Rz dWl0ZS9DaGFuZ2VMb2c6DQo+ID4NCj4gPiAgICAgICAgICogZ2NjLnRhcmdldC9hYXJjaDY0L3N3 YXJfdG9fdmVjX2NtcC5jOiBOZXcgdGVzdC4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IG10c2Ft aXMgPG1hbm9saXMudHNhbWlzQHZydWxsLmV1Pg0KPiA+IC0tLQ0KPiA+ICBnY2MvbWF0Y2gucGQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1NyArKysrKysrKysrKysrKysNCj4g PiAgLi4uL2djYy50YXJnZXQvYWFyY2g2NC9zd2FyX3RvX3ZlY19jbXAuYyAgICAgIHwgNzINCj4g KysrKysrKysrKysrKysrKysrKw0KPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDEyOSBpbnNlcnRpb25z KCspDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9zd2FyX3RvX3ZlY19jbXAuYw0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2djYy9tYXRjaC5w ZCBiL2djYy9tYXRjaC5wZCBpbmRleA0KPiA+IDhiYmMwZGJkNWNkLi41Yzc2OGE5NDg0NiAxMDA2 NDQNCj4gPiAtLS0gYS9nY2MvbWF0Y2gucGQNCj4gPiArKysgYi9nY2MvbWF0Y2gucGQNCj4gPiBA QCAtMzAxLDYgKzMwMSw2MyBAQCBERUZJTkVfSU5UX0FORF9GTE9BVF9ST1VORF9GTiAoUklOVCkN Cj4gPiAgICAgICh2aWV3X2NvbnZlcnQgKGJpdF9hbmQ6aXR5cGUgKHZpZXdfY29udmVydCBAMCkN Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmUgQDEgeyBidWlsZF96ZXJv X2NzdCAodHlwZSk7DQo+ID4gfSkpKSkpKSkNCj4gPg0KPiA+ICsvKiBJbiBTV0FSIChTSU1EIGlu IGEgcmVnaXN0ZXIpIGNvZGUgYSBjb21wYXJpc29uIG9mIHBhY2tlZCBkYXRhIGNhbg0KPiA+ICsg ICBiZSBjb25zdHVyY3RlZCB3aXRoIGEgcGFydGljdWxhciBjb21iaW5hdGlvbiBvZiBzaGlmdCwg Yml0d2lzZSBhbmQsDQo+ID4gKyAgIGFuZCBtdWx0aXBsaWNhdGlvbiBieSBjb25zdGFudHMuICBJ ZiB0aGF0IGNvZGUgaXMgdmVjdG9yaXplZCB3ZSBjYW4NCj4gPiArICAgY29udmVydCB0aGlzIHBh dHRlcm4gaW50byBhIG1vcmUgZWZmaWNpZW50IHZlY3RvciBjb21wYXJpc29uLiAgKi8NCj4gPiAr KHNpbXBsaWZ5ICAobXVsdCAoYml0X2FuZCAocnNoaWZ0IEAwIEAxKSBAMikgQDMpDQo+IA0KPiBZ b3Ugc2hvdWxkIHJlc3RyaWN0IHRoZSBwYXR0ZXJuIGEgYml0IG1vcmUsIGJlbG93IHlvdSB1c2UN Cj4gdW5pZm9ybV9pbnRlZ2VyX2NzdF9wIGFuZCBhbHNvIHJlcXVpcmUgYSB2ZWN0b3IgdHlwZSB0 aHVzDQo+IA0KPiAgIChzaW1wbGlmeQ0KPiAgICAobXVsdCAoYml0X2FuZCAocnNoaWZ0IEAwIFZF Q1RPUl9DU1RAMSkgVkVDVE9SX0NTVEAyKQ0KPiBWRUNUT1JfQ1NUQDMpDQo+IA0KPiANCj4gPiAr ICh3aXRoIHsNCj4gPiArICAgdHJlZSBvcF90eXBlID0gVFJFRV9UWVBFIChAMCk7DQo+IA0KPiB0 aGF0J3MgdGhlIHNhbWUgYXMgJ3R5cGUnIHdoaWNoIGlzIGFscmVhZHkgYXZhaWxhYmxlLg0KPiAN Cj4gPiArICAgdHJlZSByc2hpZnRfY3N0ID0gTlVMTF9UUkVFOw0KPiA+ICsgICB0cmVlIGJpdF9h bmRfY3N0ID0gTlVMTF9UUkVFOw0KPiA+ICsgICB0cmVlIG11bHRfY3N0ID0gTlVMTF9UUkVFOw0K PiA+ICsgIH0NCj4gPiArICAvKiBNYWtlIHN1cmUgd2UncmUgd29ya2luZyB3aXRoIHZlY3RvcnMg YW5kIHVuaWZvcm0gdmVjdG9yDQo+ID4gKyBjb25zdGFudHMuICAqLyAgKGlmIChWRUNUT1JfVFlQ RV9QIChvcF90eXBlKQ0KPiA+ICsgICAgICAgJiYgKHJzaGlmdF9jc3QgPSB1bmlmb3JtX2ludGVn ZXJfY3N0X3AgKEAxKSkNCj4gPiArICAgICAgICYmIChiaXRfYW5kX2NzdCA9IHVuaWZvcm1faW50 ZWdlcl9jc3RfcCAoQDIpKQ0KPiA+ICsgICAgICAgJiYgKG11bHRfY3N0ID0gdW5pZm9ybV9pbnRl Z2VyX2NzdF9wIChAMykpKQ0KPiA+ICsgICAvKiBDb21wdXRlIHdoYXQgY29uc3RhbnRzIHdvdWxk IGJlIG5lZWRlZCBmb3IgdGhpcyB0byByZXByZXNlbnQgYQ0KPiBwYWNrZWQNCj4gPiArICAgICAg Y29tcGFyaXNvbiBiYXNlZCBvbiB0aGUgc2hpZnQgYW1vdW50IGRlbm90ZWQgYnkgUlNISUZUX0NT VC4gICovDQo+ID4gKyAgICh3aXRoIHsNCj4gPiArICAgICBIT1NUX1dJREVfSU5UIHZlY19lbGVt X2JpdHMgPSB2ZWN0b3JfZWxlbWVudF9iaXRzIChvcF90eXBlKTsNCj4gPiArICAgICBIT1NUX1dJ REVfSU5UIHZlY19uZWx0cyA9IFRZUEVfVkVDVE9SX1NVQlBBUlRTDQo+ID4gKyAob3BfdHlwZSku dG9fY29uc3RhbnQgKCk7DQo+IA0KPiB5b3UgbmVlZCB0byBjaGVjayB0aGF0IHRoaXMgaXNuJ3Qg YSBWTEEgdmVjdG9yIG9wZXJhdGlvbi4NCg0KU2VlbXMgbGlrZSB0aGlzIHBhdHRlcm4gc2hvdWxk IGJlIGFwcGxpY2FibGUgdG8gVkxBIGFzIHdlbGwgbm8/DQpTbyBjb3VsZCB3ZSBub3Qga2VlcCB2 ZWNfbmVsdHMgYXMgYSBwb2x5IGFuZCBqdXN0IHVzZSBleGFjdF9kaXYNCkJlbG93IGluIHRoZSBk aXZpc2lvbj8gVGhlIHBhdHRlcm4gaXMgb25seSB2YWxpZCBpZiBjbXBfYml0c19pIGlzIGENCm11 bHRpcGxlIG9mIHZlY19lbGVtX2JpdHMgYW55d2F5LiAgVGhlIGJ1aWxkX3ZlY3Rvcl8qIHNob3Vs ZCB0aGVuDQpkbyB0aGUgcmlnaHQgdGhpbmcuDQoNClJlZ2FyZHMsDQpUYW1hcg0KDQo+IA0KPiA+ ICsgICAgIEhPU1RfV0lERV9JTlQgdmVjX2JpdHMgPSB2ZWNfZWxlbV9iaXRzICogdmVjX25lbHRz Ow0KPiA+ICsNCj4gPiArICAgICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIGNtcF9iaXRzX2ksIGJp dF9hbmRfaSwgbXVsdF9pOw0KPiA+ICsgICAgIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgdGFyZ2V0 X211bHRfaSwgdGFyZ2V0X2JpdF9hbmRfaTsNCj4gPiArICAgICBjbXBfYml0c19pID0gdHJlZV90 b191aHdpIChyc2hpZnRfY3N0KSArIDE7DQo+IA0KPiBhbmQgdGhhdCB0aGUgcnNoaWZ0X2NzdCBh bmQgb3RoZXJzIGFjdHVhbGx5IGZpdCBhbiB1aHdpLg0KPiANCj4gPiArICAgICB0YXJnZXRfbXVs dF9pID0gKEhPU1RfV0lERV9JTlRfMVUgPDwgY21wX2JpdHNfaSkgLSAxOw0KPiA+ICsNCj4gPiAr ICAgICBtdWx0X2kgPSB0cmVlX3RvX3Vod2kgKG11bHRfY3N0KTsNCj4gPiArICAgICBiaXRfYW5k X2kgPSB0cmVlX3RvX3Vod2kgKGJpdF9hbmRfY3N0KTsNCj4gPiArICAgICB0YXJnZXRfYml0X2Fu ZF9pID0gMDsNCj4gPiArDQo+ID4gKyAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlY19l bGVtX2JpdHMgLyBjbXBfYml0c19pOyBpKyspDQo+ID4gKyAgICAgICB0YXJnZXRfYml0X2FuZF9p ID0gKHRhcmdldF9iaXRfYW5kX2kgPDwgY21wX2JpdHNfaSkgfCAxVTsNCj4gDQo+IGl0IHdvdWxk IGJlIG5pY2UgdG8gaGF2ZSBhIGNvbW1lbnQgb24gd2hhdCB0aGlzIGFjdHVhbGx5IGRvZXMgLi4u DQo+IA0KPiA+ICsgICAgfQ0KPiA+ICsgICAgKGlmICgoZXhhY3RfbG9nMiAoY21wX2JpdHNfaSkp ID49IDANCj4gPiArICAgICAgICAmJiBjbXBfYml0c19pIDwgSE9TVF9CSVRTX1BFUl9XSURFX0lO VA0KPiA+ICsgICAgICAgICYmIHZlY19lbGVtX2JpdHMgPD0gSE9TVF9CSVRTX1BFUl9XSURFX0lO VA0KPiA+ICsgICAgICAgICYmIHRyZWVfZml0c191aHdpX3AgKHJzaGlmdF9jc3QpDQo+ID4gKyAg ICAgICAgJiYgdHJlZV9maXRzX3Vod2lfcCAobXVsdF9jc3QpDQo+ID4gKyAgICAgICAgJiYgdHJl ZV9maXRzX3Vod2lfcCAoYml0X2FuZF9jc3QpDQo+ID4gKyAgICAgICAgJiYgdGFyZ2V0X211bHRf aSA9PSBtdWx0X2kNCj4gPiArICAgICAgICAmJiB0YXJnZXRfYml0X2FuZF9pID09IGJpdF9hbmRf aSkNCj4gPiArICAgICAvKiBDb21wdXRlIHRoZSB2ZWN0b3Igc2hhcGUgZm9yIHRoZSBjb21wYXJp c29uIGFuZCBjaGVjayBpZiB0aGUNCj4gdGFyZ2V0IGlzDQo+ID4gKyAgICAgICBhYmxlIHRvIGV4 cGFuZCB0aGUgY29tcGFyaXNvbiB3aXRoIHRoYXQgdHlwZS4gICovDQo+ID4gKyAgICAgKHdpdGgg ew0KPiA+ICsgICAgICAgdHJlZSBib29sX3R5cGUgPSBidWlsZF9ub25zdGFuZGFyZF9ib29sZWFu X3R5cGUgKGNtcF9iaXRzX2kpOw0KPiA+ICsgICAgICAgaW50IHZlY3Rvcl90eXBlX25lbHRzID0g dmVjX2JpdHMgLyBjbXBfYml0c19pOw0KPiA+ICsgICAgICAgdHJlZSB2ZWN0b3JfdHlwZSA9IGJ1 aWxkX3ZlY3Rvcl90eXBlIChib29sX3R5cGUsDQo+ID4gKyB2ZWN0b3JfdHlwZV9uZWx0cyk7DQo+ IA0KPiB3aHkgZG8geW91IGJ1aWxkIGEgYm9vbCB2ZWN0b3IgdHlwZSBoZXJlIGFuZCB0aGVuIC4u Lg0KPiANCj4gPiArICAgICAgIHRyZWUgemVyb3MgPSBidWlsZF96ZXJvX2NzdCAodmVjdG9yX3R5 cGUpOw0KPiA+ICsgICAgICAgdHJlZSBtYXNrX3R5cGUgPSB0cnV0aF90eXBlX2ZvciAodmVjdG9y X3R5cGUpOw0KPiANCj4gLi4uIGl0cyB0cnV0aCB0eXBlPyAgTm90ZSBib3RoIG1pZ2h0IG5vdCBi ZSBhY3R1YWxseSBzdXBwb3J0ZWQgYnkgdGhlIHRhcmdldA0KPiBhbmQgdGh1cyByZWNlaXZlIEJM S21vZGUgb3IgYW4gaW50ZWdlciBtb2RlLiAgVGhlIGxhdHRlciBpcyBhIHByb2JsZW0gZm9yDQo+ IGV4cGFuZF92ZWNfY21wX2V4cHJfcCBhcyB0aGF0IG1pZ2h0IHBpY2sgdXAgYSBwYXR0ZXJuIG5v dCBzdWl0YWJsZQ0KPiBoZXJlLiAgIEFsc28gbm90ZSB0aGF0IHRydXRoX3R5cGVfZm9yIGNhbiBy ZXN1bHQgaW4gYSBtYXNrIG1vZGUsIGFrYQ0KPiBRSW1vZGUgd2l0aCBBVlg1MTIgb3Igc29tZSBW bkJJbW9kZSBvbiBvdGhlciBhcmNocyAtIHRob3NlIGFyZSBub3QgT0sNCj4gdG8gYmUgc2ltcGx5 IHZpZXdfY29udmVydGVkIGJhY2sgdG8gb3BfdHlwZS4gIEluIGdlbmVyYWwgYSB2ZWN0b3IgY29t cGFyZQ0KPiBvcGVyYXRpb24geWllbGRzIGEgbWFzayBhbmQgeW91IGNhbiBjb252ZXJ0IHRoYXQg dG8gYSAtMS8wIHZhbHVlIHVzaW5nIGENCj4gdmVjX2NvbmRfZXhwci4gIEkgdGhpbmsgd2UgaGF2 ZSBhIHBhdHRlcm4gdGhhdCBjYW4gdGhlbiBwcm9wZXJseSBzaW1wbGlmeSB0aGUNCj4gY2FzZSB3 aGVyZSB0aGlzIGNhbiBiZSBleHByZXNzZWQgYXMgYSB2aWV3X2NvbnZlcnQsIGJ1dCBvZiBjb3Vy c2UgeW91IHRoZW4NCj4gYWxzbyBuZWVkIHRvIGNoZWNrIGZvciB2ZWNfY29uZF9leHByIHN1cHBv cnQuDQo+IA0KPiBJIHdvdWxkIHN1Z2dlc3QgeW91IG1ha2UgJ3ZlY3Rvcl90eXBlJyBhbiBpbnRl Z2VyIGVsZW1lbnQgdHlwZSAodGhhdCBhbHNvDQo+IHByb3Blcmx5IHNwZWNpZmllcyB0aGUgc2ln biBvZiB0aGUgY29tcGFyaXNvbiEpIGFuZCBjaGVjayB5b3UgZW5kIHVwIHdpdGggYQ0KPiB2ZWN0 b3IgbW9kZSBhbmQgdGhlIG1vZGUgb2YgdGhlIG1hc2tfdHlwZSBhZ3JlZXMgd2l0aCB0aGF0IGlm IHlvdSBkb24ndA0KPiB3YW50IHRvIGdvIHRoZSB2ZWNfY29uZF9leHByIHJvdXRlLg0KPiANCj4g DQo+ID4gKyAgICAgIH0NCj4gPiArICAgICAgKGlmIChleHBhbmRfdmVjX2NtcF9leHByX3AgKHZl Y3Rvcl90eXBlLCBtYXNrX3R5cGUsIExUX0VYUFIpKQ0KPiA+ICsgICAgICAgKHZpZXdfY29udmVy dDpvcF90eXBlIChsdDptYXNrX3R5cGUgKHZpZXdfY29udmVydDp2ZWN0b3JfdHlwZQ0KPiBAMCkN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB6ZXJvczsg fSkpKSkpKSkpKQ0KPiA+ICsNCj4gPiAgKGZvciBjbXAgKGd0IGdlIGx0IGxlKQ0KPiA+ICAgICAg IG91dHAgKGNvbnZlcnQgY29udmVydCBuZWdhdGUgbmVnYXRlKQ0KPiA+ICAgICAgIG91dG4gKG5l Z2F0ZSBuZWdhdGUgY29udmVydCBjb252ZXJ0KSBkaWZmIC0tZ2l0DQo+ID4gYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zd2FyX3RvX3ZlY19jbXAuYw0KPiA+IGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3dhcl90b192ZWNfY21wLmMNCj4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwLi4yNmY5YWQ5ZWYyOA0KPiA+IC0tLSAv ZGV2L251bGwNCj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zd2Fy X3RvX3ZlY19jbXAuYw0KPiA+IEBAIC0wLDAgKzEsNzIgQEANCj4gPiArLyogeyBkZy1kbyBjb21w aWxlIH0gKi8NCj4gPiArLyogeyBkZy1vcHRpb25zICItTzIgLWZ0cmVlLXZlY3Rvcml6ZSIgfSAq Lw0KPiA+ICsNCj4gPiArdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7DQo+ID4gK3R5cGVk ZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7DQo+ID4gK3R5cGVkZWYgdW5zaWduZWQgaW50IHVp bnQzMl90Ow0KPiA+ICsNCj4gPiArLyogOC1iaXQgU1dBUiB0ZXN0cy4gICovDQo+ID4gKw0KPiA+ ICtzdGF0aWMgdWludDhfdCBwYWNrZWRfY21wXzhfOCh1aW50OF90IGEpIHsNCj4gPiArICByZXR1 cm4gKChhID4+IDcpICYgMHgxVSkgKiAweGZmVTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyogMTYt Yml0IFNXQVIgdGVzdHMuICAqLw0KPiA+ICsNCj4gPiArc3RhdGljIHVpbnQxNl90IHBhY2tlZF9j bXBfOF8xNih1aW50MTZfdCBhKSB7DQo+ID4gKyAgcmV0dXJuICgoYSA+PiA3KSAmIDB4MTAxVSkg KiAweGZmVTsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIHVpbnQxNl90IHBhY2tlZF9jbXBfMTZfMTYo dWludDE2X3QgYSkgew0KPiA+ICsgIHJldHVybiAoKGEgPj4gMTUpICYgMHgxVSkgKiAweGZmZmZV OyB9DQo+ID4gKw0KPiA+ICsvKiAzMi1iaXQgU1dBUiB0ZXN0cy4gICovDQo+ID4gKw0KPiA+ICtz dGF0aWMgdWludDMyX3QgcGFja2VkX2NtcF84XzMyKHVpbnQzMl90IGEpIHsNCj4gPiArICByZXR1 cm4gKChhID4+IDcpICYgMHgxMDEwMTAxVSkgKiAweGZmVTsgfQ0KPiA+ICsNCj4gPiArc3RhdGlj IHVpbnQzMl90IHBhY2tlZF9jbXBfMTZfMzIodWludDMyX3QgYSkgew0KPiA+ICsgIHJldHVybiAo KGEgPj4gMTUpICYgMHgxMDAwMVUpICogMHhmZmZmVTsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIHVp bnQzMl90IHBhY2tlZF9jbXBfMzJfMzIodWludDMyX3QgYSkgew0KPiA+ICsgIHJldHVybiAoKGEg Pj4gMzEpICYgMHgxVSkgKiAweGZmZmZmZmZmVTsgfQ0KPiA+ICsNCj4gPiArLyogRHJpdmVyIGZ1 bmN0aW9uIHRvIHRlc3QgdGhlIHZlY3Rvcml6ZWQgY29kZSBnZW5lcmF0ZWQgZm9yIHRoZSBkaWZm ZXJlbnQNCj4gPiArICAgcGFja2VkX2NtcCB2YXJpYW50cy4gICovDQo+ID4gKw0KPiA+ICsjZGVm aW5lIFZFQ1RPUklaRURfUEFDS0VEX0NNUChULCBGVU5DKSAgICAgICAgIFwNCj4gPiArICB2b2lk IHZlY3Rvcml6ZWRfY21wXyMjRlVOQyhUKiBhLCBpbnQgbikgICAgICBcDQo+ID4gKyAgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICsgICAgbiA9IChu IC8gMzIpICogMzI7ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gPiArICAgIGZvcihpbnQg aSA9IDA7IGkgPCBuOyBpICs9IDQpICAgICAgICAgICAgICBcDQo+ID4gKyAgICB7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICsgICAgICBhW2kgKyAwXSA9 IEZVTkMoYVtpICsgMF0pOyAgICAgICAgICAgICAgIFwNCj4gPiArICAgICAgYVtpICsgMV0gPSBG VU5DKGFbaSArIDFdKTsgICAgICAgICAgICAgICBcDQo+ID4gKyAgICAgIGFbaSArIDJdID0gRlVO QyhhW2kgKyAyXSk7ICAgICAgICAgICAgICAgXA0KPiA+ICsgICAgICBhW2kgKyAzXSA9IEZVTkMo YVtpICsgM10pOyAgICAgICAgICAgICAgIFwNCj4gPiArICAgIH0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArVkVDVE9SSVpF RF9QQUNLRURfQ01QKHVpbnQ4X3QsIHBhY2tlZF9jbXBfOF84KTsNCj4gPiArDQo+ID4gK1ZFQ1RP UklaRURfUEFDS0VEX0NNUCh1aW50MTZfdCwgcGFja2VkX2NtcF84XzE2KTsNCj4gPiArVkVDVE9S SVpFRF9QQUNLRURfQ01QKHVpbnQxNl90LCBwYWNrZWRfY21wXzE2XzE2KTsNCj4gPiArDQo+ID4g K1ZFQ1RPUklaRURfUEFDS0VEX0NNUCh1aW50MzJfdCwgcGFja2VkX2NtcF84XzMyKTsNCj4gPiAr VkVDVE9SSVpFRF9QQUNLRURfQ01QKHVpbnQzMl90LCBwYWNrZWRfY21wXzE2XzMyKTsNCj4gPiAr VkVDVE9SSVpFRF9QQUNLRURfQ01QKHVpbnQzMl90LCBwYWNrZWRfY21wXzMyXzMyKTsNCj4gPiAr DQo+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRjbWx0XHR9IH0gfSAqLw0K PiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdHVzaHJcdH0gfSB9ICov DQo+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0c2hsXHR9IH0gfSAq Lw0KPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdG11bFx0fSB9IH0g Ki8NCj4gPiAtLQ0KPiA+IDIuMzQuMQ0KPiA+DQo=