From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80084.outbound.protection.outlook.com [40.107.8.84]) by sourceware.org (Postfix) with ESMTPS id 69200395BC46 for ; Wed, 16 Nov 2022 15:34:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 69200395BC46 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=S1NiTXhnWM6Ug6NomQjEXvN8Y6UKJNCrP5D8SZ3yU4byNjyi9E62Oh0Q3OnIHnnp+FJlWaOFGsm0kz83vkhEKYsn2uJCeCJrk39d7RykcfWHx9Kxu6muFBuahgB8RYhNyF9AfNkyf9AtlR6I6iYuv70XdiaxeB6wLBhAO+OyPdbdyH+QunHPqFLBXw42o0yC/ovxF1A5xFckmfAmMFivngqDL5oraAZp8IJyT/daC1srCD/KLZfGk9OwKi4bxi9Yk9aXXuSwRiJfDRHtNAZRkHi81ifgcM/4IEfcFr09My6Gi+8YLOB2HfjA46Xz4oacn4/zH9hJq4EUrQZntFHzTA== 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=Ca4WJOyy7PopAgITWqQrew4y00xgGY6gXhx+EGleph0=; b=QGHRpjOMUhD7xPzYAHnY4R+ju+u8ioKaqpnVRcKZEpSUd8KSXaIBX4jE8dD4U7r5OCRqsV5hk6IhU3JwO41BkWpZuKECgHAHpnDqOsDaYdwEpDl8JgWr9lW7CYtU8Q9Mi6Qu9ZBdH3RxdaNTVbUT/FoUyBwrE4LgXeqbeSnCUoAt6ynpuk4smVmxddg9gtYtpwy0oUrSwgHB2g5qE1+aHJ7rRoAFpXrZ+uOTbIAdjkHLVcz9TSh5pNfJexUdol4baeI8XFkFpbqLeVkkMXIBzsJIaE4QGXPjG+oIlppe/ZLDrVOhn4wMedUs8DwZmZIHiRjLPAdWBRhlra1mWqduAA== 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=Ca4WJOyy7PopAgITWqQrew4y00xgGY6gXhx+EGleph0=; b=Zi24D4qSAmIOAk3zD8+Y1hKWCVquUW7bA1tBKYooS+ptXexJaAEeN4usenphp2sEMfd4xkRYBunFeDEWPdX6gfJScWq+/RHNFi5wwnzTliVvt2+3LaGwnGAJp+F1YF3cKTBDOFcBwg0LwA/yJ/FOiRUwJUYzLCEKgUvZyAJ/hkg= Received: from AS9PR0301CA0052.eurprd03.prod.outlook.com (2603:10a6:20b:469::7) by PR3PR08MB5692.eurprd08.prod.outlook.com (2603:10a6:102:8a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.6; Wed, 16 Nov 2022 15:34:41 +0000 Received: from AM7EUR03FT044.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:469:cafe::5b) by AS9PR0301CA0052.outlook.office365.com (2603:10a6:20b:469::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.13 via Frontend Transport; Wed, 16 Nov 2022 15:34:41 +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 AM7EUR03FT044.mail.protection.outlook.com (100.127.140.169) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.8 via Frontend Transport; Wed, 16 Nov 2022 15:34:41 +0000 Received: ("Tessian outbound aeae1c7b66fd:v130"); Wed, 16 Nov 2022 15:34:41 +0000 X-CR-MTA-TID: 64aa7808 Received: from fb88e8da513e.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id BAD82468-C925-4F11-8DEB-46430D34C528.1; Wed, 16 Nov 2022 15:34:35 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id fb88e8da513e.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 16 Nov 2022 15:34:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LHjfeqYD8MimQLnTm28yY2C1DwnTXXXdg4nT8upNa2m93thFW5eZ+65CJb+aLWVXLzAHOcOHssfRhw64k3VWsukSTjVymFdoU1FgfstEeBByb0qbwAQcZgo0a9XhrF9693YLQ0FVcGeH5jfIyoux0ybJcvrkor0nj5Yeu19Tk27T+Qe/LsUJZqGjExzuHepZqPaeGqO1iNXhyIN6pV8h2htcbJU0NJk8eiqyJQQcc7zvKlI1ZxZiCISnlIB25hDM2TRe8HON4UgeC+lGqGzrTtGtoi2G2AoiDC5CQODz+HhkIbBzmeqtlgphCQm8E55FkCn7u4vO1KQZpSh3++7iOQ== 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=Ca4WJOyy7PopAgITWqQrew4y00xgGY6gXhx+EGleph0=; b=oR4o8563YS+ld3DvEoU9cn3Ju8r6AV3VGxXQschvOkmvwVpTji+zXF4Krh5ujOp2fLAe2OFhn9297ULZUkeeoPhKfSh3sPTo6d/1v6ASLkZsPEFy0aSmgP3NmSmfvnGIEKE8TOP4AuLE/paGegnSVgRhdRJkI5mQEuxIfWdhI7lBWV5exFmq8iDFJiXwxhbc04FVQXpNjf+W87Pu40X4yt5i1TLWCP5TM8urOYxKM4MLPB6jI9IZ+lcoHBsAmQrJ3kZhGqBYmtKtAHGR30KXfLVXCx4Qt5WXiK7K8btvR3PNBtnQo22lwIQggn0sRjorokundnFQotcpr7HtLDNJ6g== 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=Ca4WJOyy7PopAgITWqQrew4y00xgGY6gXhx+EGleph0=; b=Zi24D4qSAmIOAk3zD8+Y1hKWCVquUW7bA1tBKYooS+ptXexJaAEeN4usenphp2sEMfd4xkRYBunFeDEWPdX6gfJScWq+/RHNFi5wwnzTliVvt2+3LaGwnGAJp+F1YF3cKTBDOFcBwg0LwA/yJ/FOiRUwJUYzLCEKgUvZyAJ/hkg= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by AS8PR08MB6597.eurprd08.prod.outlook.com (2603:10a6:20b:334::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.6; Wed, 16 Nov 2022 15:34:32 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd2a:aff9:b1a0:2fc7]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd2a:aff9:b1a0:2fc7%4]) with mapi id 15.20.5834.008; Wed, 16 Nov 2022 15:34:32 +0000 From: Tamar Christina To: Richard Biener CC: Hongyu Wang , Prathamesh Kulkarni , Richard Sandiford , Hongyu Wang , "hongtao.liu@intel.com" , "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH] Optimize VEC_PERM_EXPR with same permutation index and operation [PR98167] Thread-Topic: [PATCH] Optimize VEC_PERM_EXPR with same permutation index and operation [PR98167] Thread-Index: AQHY7+FlA03TlbsWBUONfhHXCiBZDK4uUZwAgAbN6gCAAldOgIAAbgUAgABcdYCABlChgIADKriQgAAEFoCAAAAbAIAAAQZw Date: Wed, 16 Nov 2022 15:34:32 +0000 Message-ID: References: <20221104000432.15254-1-hongyu.wang@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 6338EC9CAA2E7E429299227B61580F4A.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-traffictypediagnostic: VI1PR08MB5325:EE_|AS8PR08MB6597:EE_|AM7EUR03FT044:EE_|PR3PR08MB5692:EE_ X-MS-Office365-Filtering-Correlation-Id: b71bc64f-fd90-4d67-669e-08dac7e8147d 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: MAieSycsUn+vam9fS+INahmkVXhGgTwUvneaueX0ZjCCeHgPPkCT/W3KLHsS6V/FhB0xDaToBsA57cZJM/rVcRx05BOhbGHP52RJh6y5BawJXQqutsS5oTIsdoR90VEtdZDSBgBQQIR9LTxn0JuB7FAMC/ssapGU4HaEZY0uSzM+7KaTt4OJC+GXaMKsvqk+fBktKtfT0EgQq/ayyrqJKA3FGddXs++H8WDCqJFahHAKUj7BgW3DJprMcUjumJ4mNGsv0X/tRZ5tvKCFqJMPuvp0T0J0yInSusRlNmUmvtQNxWvX/Wap3j4suu0jjhgxOF8hhbI3dCXg2sgc9Q2XVLnUOVzp1xGFi9JoIkLDS1m1W8v+JJwN0pb1KEqh7Th6/03XC4YtjzxNWQWZOmuZh3oLAZ1tDthU76elZZROTMjBeQ/hlS5RfQ9/kiuJmoLDolD3H151zfu7zlC5oTAW0MjHU4UD9LGaJbISnXURdHTE5ZancwXA/ehj2LgTabTPfIagqdMm/uaK4hvz911SYLyZYpHYpWJ5wOjpgaSXlC2ZEWMNuSiGmIfQ5d+ElW1xPVrgM7cRwMS5J01l9Lv7u7yM3CVDm6yfG2mekNkqnB/d5VpIzFasPXqbspMquy/L6D+YIoLdMnvsTmjVeR9Wb8NJjoXncpy7xtlLUe7BqRZIkUpy4WFnvsS95E7HD/DQxMeDqUpR+tb+LDUkFn7JKrh00sMFpswyQPQjNIv/6OwelTvxSKPTYNf180D+wgBD7C2l05kJFZTqSUaZQAlm8H0MKWQSqNdoPXBfX0VWPHIN979/p3gz3JldvFmJbQmT93Nii3zdfd4tOtbJwyWjgg== 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:(13230022)(4636009)(346002)(39860400002)(366004)(396003)(136003)(376002)(451199015)(66446008)(83380400001)(66476007)(76116006)(84970400001)(8936002)(38100700002)(66556008)(122000001)(5660300002)(2906002)(64756008)(41300700001)(38070700005)(4326008)(66946007)(30864003)(8676002)(71200400001)(66899015)(52536014)(478600001)(53546011)(33656002)(9686003)(6506007)(7696005)(26005)(316002)(186003)(86362001)(966005)(55016003)(54906003)(6916009);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6597 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: AM7EUR03FT044.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 0edcb294-ea2f-40c9-7b14-08dac7e80f1f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Z42IMCYhbsqh3ZVgZZ918EvTQ0aqM5izxeTcRp/vF25lXs88E/GeQYrkG4BPIa9F3CFIso5f8zB8bpHlgdxREWpL714AlhILX6GcJFf0IIJM130RrRR4gdoRpXpeeh8kvKq/6lGYyy19J+Y/ZgzbIErbblEVMRkIkwrY143vAhh4FK92Vs2yQjzmgmkC4ixwQZR85R7cFNgyyl5KKaoavCmpvFuooePEBxrcsty+yZieVTU0KSpFbZimbeWQ0R6jEgocQzs+Ffaei7k5fCh1vxBpYQkW4X6B+/3hUvj0UMA8HzmZztQ4kapnDQVR+2TdlHCm4wuO4PIeQ6D9XJqiQbczXmegwrGqbmBOMZt4aSeW1OBUbxMp6RajUaTRklpjCc3umCkjkblwCnIi6BfyKVNyMZg5Zdx21+1pVk1zQteKmQCNRn3We8iOY5JvPyUuve+RcfTy745HHjBnOuexJbhm5wertYDbTmY8Ia1MOgA7XEkLQsyug2iZ7zdVbyVaZwarE976+LvQnsSXV2MVf15TUEAnfJfmhPzzVVoT2AIeNswDkvS6gmp+aJUesyZlRRY3SIDFN5Elx9hLfKK4PFu0o2vcgk+KJThi6ij8mV8vpclPbGMY2V4QTw1y7yJvR3fzrMBRrHW66MEBMtIznEsEnc/4UC8excF1us/fX+TmklorBiLFKpDa0V3LMcf81qQQTJv5RpGK9CdU+h4H2h0OW1Ihgz323GavOQm+3j+Ynf58qgtRiCJNIyH5RCk8/8TqZvLao13vDApiSwPgJzvOtfZ8F+GefLVlvok7gYchdvjehWlleFLf8YrCz65gIxgRPnTArruzjBYJCVMVsA== 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:(13230022)(4636009)(39860400002)(346002)(396003)(376002)(136003)(451199015)(40470700004)(46966006)(36840700001)(966005)(478600001)(54906003)(66899015)(186003)(336012)(316002)(47076005)(84970400001)(7696005)(6506007)(26005)(53546011)(9686003)(41300700001)(70586007)(4326008)(52536014)(8676002)(30864003)(70206006)(2906002)(83380400001)(36860700001)(86362001)(82740400003)(81166007)(356005)(82310400005)(8936002)(40460700003)(6862004)(33656002)(55016003)(5660300002)(40480700001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Nov 2022 15:34:41.5667 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b71bc64f-fd90-4d67-669e-08dac7e8147d 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: AM7EUR03FT044.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5692 X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00,BODY_8BITS,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,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: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmlj aGFyZC5ndWVudGhlckBnbWFpbC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgTm92ZW1iZXIgMTYs IDIwMjIgMzozMCBQTQ0KPiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJt LmNvbT4NCj4gQ2M6IEhvbmd5dSBXYW5nIDx3d3doaGh5eXkzMzNAZ21haWwuY29tPjsgUHJhdGhh bWVzaCBLdWxrYXJuaQ0KPiA8cHJhdGhhbWVzaC5rdWxrYXJuaUBsaW5hcm8ub3JnPjsgUmljaGFy ZCBTYW5kaWZvcmQNCj4gPFJpY2hhcmQuU2FuZGlmb3JkQGFybS5jb20+OyBIb25neXUgV2FuZyA8 aG9uZ3l1LndhbmdAaW50ZWwuY29tPjsNCj4gaG9uZ3Rhby5saXVAaW50ZWwuY29tOyBnY2MtcGF0 Y2hlc0BnY2MuZ251Lm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIXSBPcHRpbWl6ZSBWRUNfUEVS TV9FWFBSIHdpdGggc2FtZSBwZXJtdXRhdGlvbg0KPiBpbmRleCBhbmQgb3BlcmF0aW9uIFtQUjk4 MTY3XQ0KPiANCj4gT24gV2VkLCBOb3YgMTYsIDIwMjIgYXQgNDoyOSBQTSBSaWNoYXJkIEJpZW5l cg0KPiA8cmljaGFyZC5ndWVudGhlckBnbWFpbC5jb20+IHdyb3RlOg0KPiA+DQo+ID4gT24gV2Vk LCBOb3YgMTYsIDIwMjIgYXQgNDoyNSBQTSBUYW1hciBDaHJpc3RpbmENCj4gPFRhbWFyLkNocmlz dGluYUBhcm0uY29tPiB3cm90ZToNCj4gPiA+DQo+ID4gPiBIaSwNCj4gPiA+DQo+ID4gPiBUaGlz IHBhdGNoIGlzIGNhdXNpbmcgc2V2ZXJhbCBJQ0VzIGJlY2F1c2UgaXQgY2hhbmdlcyB0aGUgcGVy bXV0ZXMNCj4gPiA+IGZyb20gYSBzaW5nbGUgcmVnaXN0ZXIgcGVybXV0ZSB0byBhIG11bHRpIHJl Z2lzdGVyIGR1ZSB0byB0aGUgbG93ZXJpbmcgb2YNCj4gdGhlIGV4cHJlc3Npb25zIHRvIGRpZmZl cmVudCBTU0EgbmFtZXMuDQo+ID4gPg0KPiA+ID4gU2VlIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVn emlsbGEvc2hvd19idWcuY2dpP2lkPTEwNzcxNw0KPiA+ID4NCj4gPiA+IEkgaGF2ZSBhIHByb3Rv dHlwZSBmaXggd2hpY2ggYWRkcyBhIG5ldyBydWxlIHRvIENTRSB0aGlzIGJhY2sgdG8gYQ0KPiA+ ID4gc2luZ2xlIHJlZ2lzdGVyIHBlcm11dGUsIGJ1dCB3b3VsZCB0aGlzIGJlIHRoZSByaWdodCBz b2x1dGlvbj8gSXQNCj4gPiA+IHNlZW1zIGhhcmQgdG8gbGF0ZXIgb24gZHVyaW5nIGV4cGFuZCBy ZWFsaXplIHRoYXQgdGhlIHR3byBvcGVyYW5kcyBhcmUNCj4gdGhlIHNhbWUuDQo+ID4gPg0KPiA+ ID4gSXQncyBwcm9iYWJseSBhbHNvIG9rIHRvIGp1c3QgYmxvY2sgdGhpcyBmcm9tIGhhcHBlbmlu ZyBhZnRlcg0KPiA+ID4gdmVjX2xvd2VyLCBob3dldmVyIEknbSB3b3JyaWVkIHRoYXQgSWYgaXQg d2Fzbid0IENTRSdkIGJlZm9yZSB2ZWNfbG93ZXINCj4gaXQnbGwgbG93ZXIgaXQgc28gc29tZXRo aW5nIG11Y2ggbGVzcyBlZmZpY2llbnQuDQo+ID4NCj4gPiBZb3UgY2FuIHVzZQ0KPiA+DQo+ID4g ICh2ZWNfcGVybSAob3BANyBAMCBAMSkgQDMpDQo+IA0KPiBFcnIsICh2ZWNfcGVybSAob3BANyBA MCBAMSkgQDcpIG9idmlvdXNseS4NCg0KT2ggd293LCBJIGhhZCBubyBpZGVhIHlvdSBjb3VsZCBj YXB0dXJlIGR1cmluZyByZXdyaXRlIQ0KDQpUaGF0J3MgbmlmdHkgYW5kIGdvb2QgdG8ga25vdy4N Cg0KSSdsbCByZWd0ZXN0IGFuZCBzdWJtaXQgcGF0Y2guDQoNClRoYW5rcywNClRhbWFyDQoNCj4g DQo+ID4gdG8gYXZvaWQgdGhpcyBpc3N1ZS4NCj4gPg0KPiA+ID4gVGhhbmtzLA0KPiA+ID4gVGFt YXINCj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZy b206IEdjYy1wYXRjaGVzIDxnY2MtcGF0Y2hlcy0NCj4gPiA+ID4gYm91bmNlcyt0YW1hci5jaHJp c3RpbmE9YXJtLmNvbUBnY2MuZ251Lm9yZz4gT24gQmVoYWxmIE9mIFJpY2hhcmQNCj4gPiA+ID4g QmllbmVyIHZpYSBHY2MtcGF0Y2hlcw0KPiA+ID4gPiBTZW50OiBNb25kYXksIE5vdmVtYmVyIDE0 LCAyMDIyIDI6NTMgUE0NCj4gPiA+ID4gVG86IEhvbmd5dSBXYW5nIDx3d3doaGh5eXkzMzNAZ21h aWwuY29tPg0KPiA+ID4gPiBDYzogUHJhdGhhbWVzaCBLdWxrYXJuaSA8cHJhdGhhbWVzaC5rdWxr YXJuaUBsaW5hcm8ub3JnPjsgUmljaGFyZA0KPiA+ID4gPiBTYW5kaWZvcmQgPFJpY2hhcmQuU2Fu ZGlmb3JkQGFybS5jb20+OyBIb25neXUgV2FuZw0KPiA+ID4gPiA8aG9uZ3l1LndhbmdAaW50ZWwu Y29tPjsgaG9uZ3Rhby5saXVAaW50ZWwuY29tOyBnY2MtDQo+ID4gPiA+IHBhdGNoZXNAZ2NjLmdu dS5vcmcNCj4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSF0gT3B0aW1pemUgVkVDX1BFUk1fRVhQ UiB3aXRoIHNhbWUNCj4gcGVybXV0YXRpb24NCj4gPiA+ID4gaW5kZXggYW5kIG9wZXJhdGlvbiBb UFI5ODE2N10NCj4gPiA+ID4NCj4gPiA+ID4gT24gVGh1LCBOb3YgMTAsIDIwMjIgYXQgMzoyNyBQ TSBIb25neXUgV2FuZw0KPiA+ID4gPiA8d3d3aGhoeXl5MzMzQGdtYWlsLmNvbT4gd3JvdGU6DQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFdlbGwsIHdpdGggQVZYNTEyIHY2NHFpIHRoYXQncyA2NCo2 NCA9PSA0MDk2IGNhc2VzIHRvIGNoZWNrLg0KPiA+ID4gPiA+ID4gSSB0aGluayBhIGxhbWJkYSBm dW5jdGlvbiBpcyBmaW5lIHRvIHVzZS4gIFRoZSBhbHRlcm5hdGl2ZQ0KPiA+ID4gPiA+ID4gKHVz ZWQgYnkgdGhlIHZlY3Rvcml6ZXIgaW4gc29tZSBwbGFjZXMpIGlzIHRvIHVzZSBzdGggbGlrZQ0K PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICBhdXRvX3NiaXRtYXAgc2VlbiAobmVsdHMpOw0KPiA+ ID4gPiA+ID4gIGZvciAoaSA9IDA7IGkgPCBuZWx0czsgaSsrKQ0KPiA+ID4gPiA+ID4gICAgew0K PiA+ID4gPiA+ID4gICAgICBpZiAoIWJpdG1hcF9zZXRfYml0IChzZWVuLCBpKSkNCj4gPiA+ID4g PiA+ICAgICAgICBicmVhazsNCj4gPiA+ID4gPiA+ICAgICAgY291bnQrKzsNCj4gPiA+ID4gPiA+ ICAgIH0NCj4gPiA+ID4gPiA+ICBmdWxsX3Blcm1fcCA9IGNvdW50ID09IG5lbHRzOw0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IEknbGwgbm90ZSB0aGF0IHlvdSBzaG91bGQgc3RpbGwgY2hlY2sg LmVuY29kaW5nDQo+ID4gPiA+ID4gPiAoKS5lbmNvZGVkX2Z1bGxfdmVjdG9yX3AgKCkgYW5kIG9u bHkgYm90aGVyIHRvIGNoZWNrIHRoYXQNCj4gPiA+ID4gPiA+IGNhc2UsIHRoYXQncyBhDQo+ID4g PiA+IHZlcnkgc2ltcGxlIGNoZWNrLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhhbmtzIGZvciB0 aGUgZ29vZCBleGFtcGxlISBXZSBhbHNvIHRyaWVkIHVzaW5nIHdpZGVfaW50IGFzIGENCj4gPiA+ ID4gPiBiaXRtYXNrIGJ1dCB5b3VyIGNvZGUgbG9va3MgbW9yZSBzaW1wbGUgYW5kIHJlYXNvbmFi bGUuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBVcGRhdGVkIHRoZSBwYXRjaCBhY2NvcmRpbmdseS4N Cj4gPiA+ID4NCj4gPiA+ID4gT0suDQo+ID4gPiA+DQo+ID4gPiA+IFRoYW5rcywNCj4gPiA+ID4g UmljaGFyZC4NCj4gPiA+ID4NCj4gPiA+ID4gPiBSaWNoYXJkIEJpZW5lciA8cmljaGFyZC5ndWVu dGhlckBnbWFpbC5jb20+IOS6jjIwMjLlubQxMeaciDEw5pel5ZGoDQo+IOWbmw0KPiA+ID4gPiAx Njo1NuWGmemBk++8mg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiBPbiBUaHUsIE5vdiAxMCwgMjAyMiBhdCAzOjI3IEFNIEhvbmd5dSBXYW5nDQo+ID4gPiA+ IDx3d3doaGh5eXkzMzNAZ21haWwuY29tPiB3cm90ZToNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gSGkgUHJhdGhhbWVzaCBhbmQgUmljaGFyZCwNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gVGhhbmtzIGZvciB0aGUgcmV2aWV3IGFuZCBuaWNlIHN1Z2dlc3Rpb25zIQ0KPiA+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gSSBndWVzcyB0aGUgdHJhbnNmb3JtIHNob3VsZCB3 b3JrIGFzIGxvbmcgYXMgbWFzayBpcw0KPiA+ID4gPiA+ID4gPiA+ID4gc2FtZSBmb3IgYm90aCB2 ZWN0b3JzIGV2ZW4gaWYgaXQncyBub3QgY29uc3RhbnQgPw0KPiA+ID4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiA+ID4gWWVzLCBwbGVhc2UgY2hhbmdlIGFjY29yZGluZ2x5IChhbmQgbWF5YmUgcHVz aCBzZXBhcmF0ZWx5KS4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiBSZW1vdmVkIFZFQ1RPUl9DU1QgZm9yIGludGVnZXIgb3BzLg0KPiA+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiA+ID4gSWYgdGhpcyB0cmFuc2Zvcm0gaXMgbWVhbnQgb25seSBmb3IgVkxT IHZlY3RvcnMsIEkgZ3Vlc3MNCj4gPiA+ID4gPiA+ID4gPiA+IHlvdSBzaG91bGQgYmFpbCBvdXQg aWYgVFlQRV9WRUNUT1JfU1VCUEFSVFMgaXMgbm90DQo+ID4gPiA+ID4gPiA+ID4gPiBjb25zdGFu dCwgb3RoZXJ3aXNlIGl0IHdpbGwgY3Jhc2ggZm9yIFZMQSB2ZWN0b3JzLg0KPiA+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gSSBzdXBwb3NlIGl0J3MgZGlmZmljdWx0IHRvIGNyZWF0ZSBh IFZMQSBwZXJtdXRlIHRoYXQNCj4gPiA+ID4gPiA+ID4gPiBjb3ZlcnMgYWxsIGVsZW1lbnRzIGFu ZCB0aGF0IGlzIG5vdCB0cml2aWFsIHRob3VnaC4gIEJ1dA0KPiA+ID4gPiA+ID4gPiA+IGluZGVl ZCBhZGQgKCkuaXNfY29uc3RhbnQgdG8gdGhlIFZFQ1RPUl9GTE9BVF9UWVBFX1AgZ3VhcmQuDQo+ ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEFkZGVkLg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gPiA+IE1laCwgdGhhdCdzIHF1YWRyYXRpYyEgIEkgc3VnZ2VzdCB0byBjaGVjayAuZW5j b2RpbmcNCj4gPiA+ID4gPiA+ID4gPiAoKS5lbmNvZGVkX2Z1bGxfdmVjdG9yX3AgKCkgKGFzIHNh aWQgSSBjYW4ndCB0aGluayBvZiBhDQo+ID4gPiA+ID4gPiA+ID4gbm9uLWZ1bGwgZW5jb2Rpbmcg dGhhdCBpc24ndCB0cml2aWFsIGJ1dCBjb3ZlcnMgYWxsDQo+ID4gPiA+ID4gPiA+ID4gZWxlbWVu dHMpIGFuZCB0aGVuIHNpbXBseSAucXNvcnQgKCkgdGhlIHZlY3Rvcl9idWlsZGVyIChpdA0KPiA+ ID4gPiA+ID4gPiA+IGRlcml2ZXMgZnJvbSB2ZWM8Pikgc28gdGhlIHNjYW4gaXMgTyhuIGxvZyBu KS4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gVGhlIC5xc29ydCAoKSBhcHByb2FjaCBy ZXF1aXJlcyBhbiBleHRyYSBjbXBfZnVuYyB0aGF0IElNTw0KPiA+ID4gPiA+ID4gPiB3b3VsZCBu b3QgYmUgZmVhc2libGUgdG8gYmUgaW1wbGVtZW50ZWQgaW4gbWF0Y2gucGQgKEkNCj4gPiA+ID4g PiA+ID4gc3VwcG9zZSBsYW1iZGEgZnVuY3Rpb24gd291bGQgbm90IGJlIGEgZ29vZCBpZGVhIGVp dGhlcikuDQo+ID4gPiA+ID4gPiA+IEFub3RoZXIgc29sdXRpb24gd291bGQgYmUgdXNpbmcgaGFz aF9zZXQgYnV0IGl0IGRvZXMgbm90DQo+ID4gPiA+ID4gPiA+IHdvcmsgaGVyZSBmb3IgaW50NjRf dCBvciBwb2x5X2ludDY0IHR5cGUuDQo+ID4gPiA+ID4gPiA+IFNvIEkga2VwdCBjdXJyZW50IE8o bl4yKSBzaW1wbGUgY29kZSBoZXJlLCBhbmQgSSBzdXBwb3NlDQo+ID4gPiA+ID4gPiA+IHVzdWFs bHkgdGhlIHBlcm11dGF0aW9uIGluZGljZXMgd291bGQgYmUgYSBzbWFsbCBudW1iZXIgZXZlbg0K PiA+ID4gPiA+ID4gPiBmb3IgTyhuXjIpIGNvbXBsZXhpdHkuDQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gV2VsbCwgd2l0aCBBVlg1MTIgdjY0cWkgdGhhdCdzIDY0KjY0ID09IDQwOTYgY2FzZXMg dG8gY2hlY2suDQo+ID4gPiA+ID4gPiBJIHRoaW5rIGEgbGFtYmRhIGZ1bmN0aW9uIGlzIGZpbmUg dG8gdXNlLiAgVGhlIGFsdGVybmF0aXZlDQo+ID4gPiA+ID4gPiAodXNlZCBieSB0aGUgdmVjdG9y aXplciBpbiBzb21lIHBsYWNlcykgaXMgdG8gdXNlIHN0aCBsaWtlDQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gIGF1dG9fc2JpdG1hcCBzZWVuIChuZWx0cyk7DQo+ID4gPiA+ID4gPiAgZm9yIChp ID0gMDsgaSA8IG5lbHRzOyBpKyspDQo+ID4gPiA+ID4gPiAgICB7DQo+ID4gPiA+ID4gPiAgICAg IGlmICghYml0bWFwX3NldF9iaXQgKHNlZW4sIGkpKQ0KPiA+ID4gPiA+ID4gICAgICAgIGJyZWFr Ow0KPiA+ID4gPiA+ID4gICAgICBjb3VudCsrOw0KPiA+ID4gPiA+ID4gICAgfQ0KPiA+ID4gPiA+ ID4gIGZ1bGxfcGVybV9wID0gY291bnQgPT0gbmVsdHM7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gSSdsbCBub3RlIHRoYXQgeW91IHNob3VsZCBzdGlsbCBjaGVjayAuZW5jb2RpbmcNCj4gPiA+ ID4gPiA+ICgpLmVuY29kZWRfZnVsbF92ZWN0b3JfcCAoKSBhbmQgb25seSBib3RoZXIgdG8gY2hl Y2sgdGhhdA0KPiA+ID4gPiA+ID4gY2FzZSwgdGhhdCdzIGENCj4gPiA+ID4gdmVyeSBzaW1wbGUg Y2hlY2suDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBBdHRhY2hl ZCB1cGRhdGVkIHBhdGNoLg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBSaWNoYXJkIEJp ZW5lciB2aWEgR2NjLXBhdGNoZXMgPGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnPg0KPiA+ID4gPiA+ ID4gPiDkuo4yMDIy5bm0MTHmnIg45pel5ZGo5LqMIDIyOjM45YaZ6YGT77yaDQo+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBPbiBG cmksIE5vdiA0LCAyMDIyIGF0IDc6NDQgQU0gUHJhdGhhbWVzaCBLdWxrYXJuaSB2aWENCj4gPiA+ ID4gPiA+ID4gPiBHY2MtcGF0Y2hlcyA8Z2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc+IHdyb3RlOg0K PiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IE9uIEZyaSwgNCBOb3YgMjAyMiBh dCAwNTozNiwgSG9uZ3l1IFdhbmcgdmlhIEdjYy1wYXRjaGVzDQo+ID4gPiA+ID4gPiA+ID4gPiA8 Z2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc+IHdyb3RlOg0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPiA+ID4gPiBIaSwNCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g PiA+ID4gVGhpcyBpcyBhIGZvbGxvdy11cCBwYXRjaCBmb3IgUFI5ODE2Nw0KPiA+ID4gPiA+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBUaGUgc2VxdWVuY2UNCj4gPiA+ID4gPiA+ID4g PiA+ID4gICAgICBjMSA9IFZFQ19QRVJNX0VYUFIgKGEsIGEsIG1hc2spDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ICAgICAgYzIgPSBWRUNfUEVSTV9FWFBSIChiLCBiLCBtYXNrKQ0KPiA+ID4gPiA+ID4g PiA+ID4gPiAgICAgIGMzID0gYzEgb3AgYzINCj4gPiA+ID4gPiA+ID4gPiA+ID4gY2FuIGJlIG9w dGltaXplZCB0bw0KPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgIGMgPSBhIG9wIGINCj4gPiA+ID4g PiA+ID4gPiA+ID4gICAgICBjMyA9IFZFQ19QRVJNX0VYUFIgKGMsIGMsIG1hc2spIGZvciBhbGwg aW50ZWdlcg0KPiA+ID4gPiA+ID4gPiA+ID4gPiB2ZWN0b3Igb3BlcmF0aW9uLCBhbmQgZmxvYXQg b3BlcmF0aW9uIHdpdGggZnVsbCBwZXJtdXRhdGlvbi4NCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gPiA+ID4gQm9vdHN0cmFwcGVkICYgcmVncnRlc3RlZCBvbiB4ODZfNjQtcGMt bGludXgtZ251Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBPayBm b3IgdHJ1bms/DQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+IGdjYy9D aGFuZ2VMb2c6DQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAg ICAgUFIgdGFyZ2V0Lzk4MTY3DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgKiBtYXRjaC5w ZDogTmV3IHBlcm0gKyB2ZWN0b3Igb3AgcGF0dGVybnMgZm9yDQo+ID4gPiA+ID4gPiA+ID4gPiA+ IGludCBhbmQgZnANCj4gPiA+ID4gdmVjdG9yLg0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gPiA+ID4gPiBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoNCj4gPiA+ID4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICBQUiB0YXJnZXQvOTgxNjcNCj4gPiA+ID4g PiA+ID4gPiA+ID4gICAgICAgICAqIGdjYy50YXJnZXQvaTM4Ni9wcjk4MTY3LmM6IE5ldyB0ZXN0 Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gIGdjYy9tYXRj aC5wZCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQ5DQo+ICsrKysrKysrKysrKysrKysr KysrKysrKysNCj4gPiA+ID4gPiA+ID4gPiA+ID4gIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L3ByOTgxNjcuYyB8IDQ0DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsrKysrKysrKysrKysrKysr KysrKysNCj4gPiA+ID4gPiA+ID4gPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgOTMgaW5zZXJ0aW9u cygrKSAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gPiA+ID4gPiA+IGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L3ByOTgxNjcuYw0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL21hdGNoLnBkIGIvZ2NjL21hdGNoLnBkIGlu ZGV4DQo+ID4gPiA+ID4gPiA+ID4gPiA+IDE5NGJhOGY1MTg4Li5iODVhZDM0ZjYwOSAxMDA2NDQN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gLS0tIGEvZ2NjL21hdGNoLnBkDQo+ID4gPiA+ID4gPiA+ID4g PiA+ICsrKyBiL2djYy9tYXRjaC5wZA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtODE4OSwzICs4 MTg5LDUyIEBAIGFuZCwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAoYml0X2FuZCAobmVnYXRlIEAw KSBpbnRlZ2VyX29uZXBAMSkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAoaWYgKCFUWVBFX09WRVJG TE9XX1NBTklUSVpFRCAodHlwZSkpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgIChiaXRfYW5kIEAw IEAxKSkpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKy8qIE9w dGltaXplDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICBjMSA9IFZFQ19QRVJNX0VYUFIgKGEsIGEs IG1hc2spDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICBjMiA9IFZFQ19QRVJNX0VYUFIgKGIsIGIs IG1hc2spDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICBjMyA9IGMxIG9wIGMyDQo+ID4gPiA+ID4g PiA+ID4gPiA+ICsgICAtLT4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgIGMgPSBhIG9wIGINCj4g PiA+ID4gPiA+ID4gPiA+ID4gKyAgIGMzID0gVkVDX1BFUk1fRVhQUiAoYywgYywgbWFzaykNCj4g PiA+ID4gPiA+ID4gPiA+ID4gKyAgIEZvciBhbGwgaW50ZWdlciBub24tZGl2IG9wZXJhdGlvbnMu ICAqLyAoZm9yIG9wDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsocGx1cyBtaW51cyBtdWx0IGJpdF9h bmQgYml0X2lvciBiaXRfeG9yDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgIGxzaGlmdCBy c2hpZnQpICAoc2ltcGxpZnkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgKG9wICh2ZWNfcGVybSBA MCBAMCBWRUNUT1JfQ1NUQDIpICh2ZWNfcGVybSBAMQ0KPiBAMQ0KPiA+ID4gPiBWRUNUT1JfQ1NU QDIpKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgIChpZiAoVkVDVE9SX0lOVEVHRVJfVFlQRV9Q ICh0eXBlKSkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgKHZlY19wZXJtIChvcCBAMCBAMSkg KG9wIEAwIEAxKSBAMikpKSkNCj4gPiA+ID4gPiA+ID4gPiA+IEp1c3Qgd29uZGVyaW5nLCB3aHkg c2hvdWxkIG1hc2sgYmUgQ1NUIGhlcmUgPw0KPiA+ID4gPiA+ID4gPiA+ID4gSSBndWVzcyB0aGUg dHJhbnNmb3JtIHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgbWFzayBpcw0KPiA+ID4gPiA+ID4gPiA+ ID4gc2FtZSBmb3IgYm90aCB2ZWN0b3JzIGV2ZW4gaWYgaXQncyBub3QgY29uc3RhbnQgPw0KPiA+ ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gWWVzLCBwbGVhc2UgY2hhbmdlIGFjY29yZGlu Z2x5IChhbmQgbWF5YmUgcHVzaCBzZXBhcmF0ZWx5KS4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsvKiBTaW1pbGFyIGZvciBmbG9h dCBhcml0aG1ldGljIHdoZW4gcGVybXV0YXRpb24gY29uc3RhbnQNCj4gY292ZXJzDQo+ID4gPiA+ ID4gPiA+ID4gPiA+ICsgICBhbGwgdmVjdG9yIGVsZW1lbnRzLiAgKi8gKGZvciBvcCAocGx1cyBt aW51cyBtdWx0KQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiArKHNpbXBsaWZ5DQo+ID4gPiA+ID4gPiA+ ID4gPiA+ICsgIChvcCAodmVjX3Blcm0gQDAgQDAgVkVDVE9SX0NTVEAyKSAodmVjX3Blcm0gQDEN Cj4gQDENCj4gPiA+ID4gVkVDVE9SX0NTVEAyKSkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAo aWYgKFZFQ1RPUl9GTE9BVF9UWVBFX1AgKHR5cGUpKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICAg ICAod2l0aA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgew0KPiA+ID4gPiA+ID4gPiA+ID4g PiArICAgICAgIHRyZWUgcGVybV9jc3QgPSBAMjsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAg ICB2ZWNfcGVybV9idWlsZGVyIGJ1aWxkZXI7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAg Ym9vbCBmdWxsX3Blcm1fcCA9IGZhbHNlOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIGlm ICh0cmVlX3RvX3ZlY19wZXJtX2J1aWxkZXIgKCZidWlsZGVyLCBwZXJtX2NzdCkpDQo+ID4gPiA+ ID4gPiA+ID4gPiA+ICsgICAgICAgICB7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAg IC8qIENyZWF0ZSBhIHZlY19wZXJtX2luZGljZXMgZm9yIHRoZSBpbnRlZ2VyIHZlY3Rvci4NCj4g Ki8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgaW50IG5lbHRzID0gVFlQRV9WRUNU T1JfU1VCUEFSVFMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyh0eXBlKS50b19jb25zdGFudCAoKTsN Cj4gPiA+ID4gPiA+ID4gPiA+IElmIHRoaXMgdHJhbnNmb3JtIGlzIG1lYW50IG9ubHkgZm9yIFZM UyB2ZWN0b3JzLCBJIGd1ZXNzDQo+ID4gPiA+ID4gPiA+ID4gPiB5b3Ugc2hvdWxkIGJhaWwgb3V0 IGlmIFRZUEVfVkVDVE9SX1NVQlBBUlRTIGlzIG5vdA0KPiA+ID4gPiA+ID4gPiA+ID4gY29uc3Rh bnQsIG90aGVyd2lzZSBpdCB3aWxsIGNyYXNoIGZvciBWTEEgdmVjdG9ycy4NCj4gPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiA+IEkgc3VwcG9zZSBpdCdzIGRpZmZpY3VsdCB0byBjcmVhdGUg YSBWTEEgcGVybXV0ZSB0aGF0DQo+ID4gPiA+ID4gPiA+ID4gY292ZXJzIGFsbCBlbGVtZW50cyBh bmQgdGhhdCBpcyBub3QgdHJpdmlhbCB0aG91Z2guICBCdXQNCj4gPiA+ID4gPiA+ID4gPiBpbmRl ZWQgYWRkICgpLmlzX2NvbnN0YW50IHRvIHRoZSBWRUNUT1JfRkxPQVRfVFlQRV9QIGd1YXJkLg0K PiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gVGhh bmtzLA0KPiA+ID4gPiA+ID4gPiA+ID4gUHJhdGhhbWVzaA0KPiA+ID4gPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICB2ZWNfcGVybV9pbmRpY2VzIHNlbCAoYnVpbGRlciwgMSwgbmVsdHMpOw0KPiA+ ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIC8qIENo ZWNrIGlmIHBlcm0gaW5kaWNlcyBjb3ZlcnMgYWxsIHZlY3RvciBlbGVtZW50cy4NCj4gKi8NCj4g PiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgaW50IGNvdW50ID0gMCwgaSwgajsNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5lbHRzOyBpKyspDQo+ ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG5lbHRzOyBq KyspDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBNZWgsIHRoYXQncyBxdWFkcmF0 aWMhICBJIHN1Z2dlc3QgdG8gY2hlY2sgLmVuY29kaW5nDQo+ID4gPiA+ID4gPiA+ID4gKCkuZW5j b2RlZF9mdWxsX3ZlY3Rvcl9wICgpIChhcyBzYWlkIEkgY2FuJ3QgdGhpbmsgb2YgYQ0KPiA+ID4g PiA+ID4gPiA+IG5vbi1mdWxsIGVuY29kaW5nIHRoYXQgaXNuJ3QgdHJpdmlhbCBidXQgY292ZXJz IGFsbA0KPiA+ID4gPiA+ID4gPiA+IGVsZW1lbnRzKSBhbmQgdGhlbiBzaW1wbHkgLnFzb3J0ICgp IHRoZSB2ZWN0b3JfYnVpbGRlciAoaXQNCj4gPiA+ID4gPiA+ID4gPiBkZXJpdmVzIGZyb20gdmVj PD4pIHNvIHRoZSBzY2FuIGlzIE8obiBsb2cgbikuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gPiBNYXliZSBSaWNoYXJkIGhhcyBhIGJldHRlciBpZGVhIGhlcmUgdGhvdWdoLg0KPiA+ ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gT3RoZXJ3aXNlIGxvb2tzIE9LLCB0aG91Z2gg d2l0aCB0aGVzZSBraW5kIG9mICgqIChvcCAuLikNCj4gPiA+ID4gPiA+ID4gPiAob3ANCj4gPiA+ ID4gPiA+ID4gPiAuLikpIHBhdHRlcm5zIGl0J3MgYWx3YXlzIHRoYXQgdGhleSBleHBsb2RlIHRo ZSBtYXRjaA0KPiA+ID4gPiA+ID4gPiA+IGRlY2lzaW9uIHRyZWUsIHdlJ2QgaWRlYWxseSBoYXZl IGEgd2F5IHRvIG1hdGNoIHRob3NlIHdpdGgNCj4gPiA+ID4gPiA+ID4gPiAob3AgLi4pIChvcA0K PiA+ID4gPiA+ID4gPiA+IC4uKSBmaXJzdCB0byBiZSBhYmxlIHRvIHNoYXJlIG1vcmUgb2YgdGhl IG1hdGNoaW5nIGNvZGUuDQo+ID4gPiA+ID4gPiA+ID4gVGhhdCBzYWlkLCBtYXRjaC5wZCBpcyBh IGxlc3MgdGhhbiBpZGVhbCBwbGFjZSBmb3IgdGhlc2UNCj4gPiA+ID4gPiA+ID4gPiAoYnV0IG1v c3RseSBiZWNhdXNlIG9mIHRoZSB3YXkgd2UgY29kZSBnZW5lcmF0ZQ0KPiA+ID4gPiA+ID4gPiA+ ICotbWF0Y2guY2MpDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBSaWNoYXJkLg0K PiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICB7DQo+ ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgIGlmIChzZWxbal0udG9fY29uc3Rh bnQgKCkgPT0gaSkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICB7DQo+ ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOw0KPiA+ID4g PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gPiA+ID4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgfQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAg ICAgICAgICAgfQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBmdWxsX3Blcm1fcCA9 IGNvdW50ID09IG5lbHRzOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgfQ0KPiA+ID4g PiA+ID4gPiA+ID4gPiArICAgICAgIH0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAoaWYg KGZ1bGxfcGVybV9wKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICh2ZWNfcGVybSAob3Ag QDAgQDEpIChvcCBAMCBAMSkgQDIpKSkpKSkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByOTgxNjcuYw0KPiA+ID4gPiA+ID4g PiA+ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByOTgxNjcuYw0KPiA+ID4g PiA+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBp bmRleCAwMDAwMDAwMDAwMC4uNDBlMGFjMTEzMzINCj4gPiA+ID4gPiA+ID4gPiA+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9wcjk4MTY3LmMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTAsMCArMSw0NCBAQA0K PiA+ID4gPiA+ID4gPiA+ID4gPiArLyogUFIgdGFyZ2V0Lzk4MTY3ICovDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiA+ID4gPiA+ID4gPiA+ID4gPiArLyog eyBkZy1vcHRpb25zICItTzIgLW1hdngyIiB9ICovDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ID4gPiA+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAi dnBzaHVmZFx0IiA4IH0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gK30gKi8NCj4gPiA+ID4gPiA+ID4g PiA+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidnBlcm1pbHBzXHQi IDMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gK30gfSAqLw0KPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIFZFQ19QRVJNXzQgXA0KPiA+ID4gPiA+ID4gPiA+ ID4gPiArICAyLCAzLCAxLCAwDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIFZFQ19QRVJN XzggXA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICA0LCA1LCA2LCA3LCAzLCAyLCAxLCAwICNkZWZp bmUgVkVDX1BFUk1fMTYgXA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICA4LCA5LCAxMCwgMTEsIDEy LCAxMywgMTQsIDE1LCA3LCA2LCA1LCA0LCAzLCAyLCAxLA0KPiA+ID4gPiA+ID4gPiA+ID4gPiAr MA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIFRZ UEVfUEVSTV9PUCh0eXBlLCBzaXplLCBvcCwgbmFtZSkgXA0KPiA+ID4gPiA+ID4gPiA+ID4gPiAr ICB0eXBlZGVmIHR5cGUgdiMjc2l6ZSMjcyMjdHlwZSBfX2F0dHJpYnV0ZV9fDQo+ID4gPiA+ID4g PiA+ID4gPiA+ICsoKHZlY3Rvcl9zaXplKDQqc2l6ZSkpKTsgXA0KPiA+ID4gPiA+ID4gPiA+ID4g PiArICB2IyNzaXplIyNzIyN0eXBlIHR5cGUjI2ZvbyMjc2l6ZSMjaV8jI25hbWUNCj4gPiA+ID4g KHYjI3NpemUjI3MjI3R5cGUgYSwgXA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiA+ID4gPiA+ICt2IyNzaXplIyNzIyN0eXBlIGIpIFwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAg eyBcDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgdiMjc2l6ZSMjcyMjdHlwZSBhMSA9IF9fYnVp bHRpbl9zaHVmZmxldmVjdG9yIChhLCBhLCBcDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFQ19QRVJNXyMjc2l6 ZSk7IFwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICB2IyNzaXplIyNzIyN0eXBlIGIxID0gX19i dWlsdGluX3NodWZmbGV2ZWN0b3IgKGIsIGIsIFwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVDX1BFUk1fIyNz aXplKTsgXA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgIHJldHVybiBhMSBvcCBiMTsgXA0KPiA+ ID4gPiA+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gKyNkZWZpbmUgSU5UX1BFUk1TKG9wLCBuYW1lKSBcDQo+ID4gPiA+ID4gPiA+ID4g PiA+ICsgIFRZUEVfUEVSTV9PUCAoaW50LCA0LCBvcCwgbmFtZSkgXA0KPiA+ID4gPiA+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIEZQX1BFUk1TKG9wLCBuYW1lKSBc DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgIFRZUEVfUEVSTV9PUCAoZmxvYXQsIDQsIG9wLCBuYW1l KSBcDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gK0lOVF9QRVJN UyAoKywgYWRkKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiArSU5UX1BFUk1TICgtLCBzdWIpDQo+ID4g PiA+ID4gPiA+ID4gPiA+ICtJTlRfUEVSTVMgKCosIG11bCkNCj4gPiA+ID4gPiA+ID4gPiA+ID4g K0lOVF9QRVJNUyAofCwgaW9yKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiArSU5UX1BFUk1TICheLCB4 b3IpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICtJTlRfUEVSTVMgKCYsIGFuZCkNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gK0lOVF9QRVJNUyAoPDwsIHNobCkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gK0lOVF9Q RVJNUyAoPj4sIHNocikNCj4gPiA+ID4gPiA+ID4gPiA+ID4gK0ZQX1BFUk1TICgrLCBhZGQpDQo+ ID4gPiA+ID4gPiA+ID4gPiA+ICtGUF9QRVJNUyAoLSwgc3ViKQ0KPiA+ID4gPiA+ID4gPiA+ID4g PiArRlBfUEVSTVMgKCosIG11bCkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g PiA+ID4gPiAtLQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiAyLjE4LjENCj4gPiA+ID4gPiA+ID4gPiA+ ID4NCg==