From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2053.outbound.protection.outlook.com [40.107.21.53]) by sourceware.org (Postfix) with ESMTPS id 45A02395B408 for ; Wed, 16 Nov 2022 15:25:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 45A02395B408 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=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=3pJH3mt/mdZzL8556pXAiuxG6NWdvKMOWnLbN61ObKA=; b=Mm5X74QTQpk9AAjoDZ4xFYHAbhGuhUL11JnzMOZGvIHg82uZnP+Mg1mSawEWsG+o3I1/2quEkZaBQdNxVH8vAMGU3jqUOXe7JI+/pt/ThgLpNsWxHzil0fsX57RQMpz+yq5O1Ufno4i05zCdbVRHkH7RbrLXySxJwFXpZ79VcV0= Received: from AM5PR0701CA0011.eurprd07.prod.outlook.com (2603:10a6:203:51::21) by AS4PR08MB8165.eurprd08.prod.outlook.com (2603:10a6:20b:58c::10) 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:25:24 +0000 Received: from AM7EUR03FT046.eop-EUR03.prod.protection.outlook.com (2603:10a6:203:51:cafe::57) by AM5PR0701CA0011.outlook.office365.com (2603:10a6:203:51::21) 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:25:24 +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 AM7EUR03FT046.mail.protection.outlook.com (100.127.140.78) 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:25:23 +0000 Received: ("Tessian outbound 0800d254cb3b:v130"); Wed, 16 Nov 2022 15:25:23 +0000 X-CR-MTA-TID: 64aa7808 Received: from bd3445c0af09.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 5591A4AA-22E4-4E8B-8121-4625B510E254.1; Wed, 16 Nov 2022 15:25:12 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id bd3445c0af09.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 16 Nov 2022 15:25:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WynAejYiFx9X+M1I6a4t98ZaZsoebN15n8XDxxSoA8Mwb0FuMqmU423fRAxExh7kBGBYyonOlQ2OQS8tltL5IpQydcBitivalpluqSEllaPcaB3NwmVuglEmtyxpUFwifQDs7TSGcCtndTNVZruNbP9tXaPIUZeGP85gi8aOO1hVKAab4Y8SDnSwU+6CBPlB6ZsdDUbi9n/sPjaik0SnxdjgNISZ3vcrWu1B7vb46RCrGefcmmF3JiYKl4Z3r4UW+uCtJAwFCiruMrGCyAEnD9x1jL2jCb9IJnbH2QgQvoPijkk85LGegp/Ey1psMDWsc9hk+QXbdyNvK6YrZ5okhA== 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=3pJH3mt/mdZzL8556pXAiuxG6NWdvKMOWnLbN61ObKA=; b=Th5VeSGAdHinun7nxytVOBnyJA1Ejw/zSTUjff834B8Y3YPLES5/7Moj/9Q6FIxNb0RGHRSRwfIKENkc1AwRJPMZSgfhWko9kgxWRMCvYkwPzUhycWR/FjPYoGArW2CPu1KEwLrEONsOm6n/OSMS0DF4Y4flbNWimgqA5lGfzioKyPoJOSRUucjnb2fIONSjNLc3+lCZ6t8cA9mK/NEYjFPUUKHrYU9cGCRzN6IlFedUmvTsAMfTpESHt0HttoJwjIp1NSYSNg+qDkEIuiWJKvc8fBmEApRpZXhOgymmoismwZ1vp4v6RI5EEje9GH6v+VM88N8wu9DkbHaj4VBDqQ== 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=3pJH3mt/mdZzL8556pXAiuxG6NWdvKMOWnLbN61ObKA=; b=Mm5X74QTQpk9AAjoDZ4xFYHAbhGuhUL11JnzMOZGvIHg82uZnP+Mg1mSawEWsG+o3I1/2quEkZaBQdNxVH8vAMGU3jqUOXe7JI+/pt/ThgLpNsWxHzil0fsX57RQMpz+yq5O1Ufno4i05zCdbVRHkH7RbrLXySxJwFXpZ79VcV0= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by DB4PR08MB9143.eurprd08.prod.outlook.com (2603:10a6:10:3fd::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.8; Wed, 16 Nov 2022 15:25:10 +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:25:09 +0000 From: Tamar Christina To: Richard Biener , Hongyu Wang CC: 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+FlA03TlbsWBUONfhHXCiBZDK4uUZwAgAbN6gCAAldOgIAAbgUAgABcdYCABlChgIADKriQ Date: Wed, 16 Nov 2022 15:25:08 +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: 31E8AA0C12295C4C93D72AF8C3E1A4AD.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_|DB4PR08MB9143:EE_|AM7EUR03FT046:EE_|AS4PR08MB8165:EE_ X-MS-Office365-Filtering-Correlation-Id: 9e37f2e7-0360-4928-00a4-08dac7e6c80f 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: vCVm4Xdp/DKUWCUrVV9llDboA8fYZWGjzMuFwgaToE1Dznn9Dt5I1zgSlu1PsqC720b5krHeE8zAUsJf6RqL/XjnsWlYei7E+HaWc0WU/x/3QCwoZSmFap454Z1te9HJVB9mUPQE1tljqtBX5PrNXuMg0NmaQWXcu3aMggatykxcAzF/aGjf1eBxKFvScVVmDAQ7+nThRY8wa8vA63s3VumGMJ5zudnvUUg661TixIAo8qMCSiuFnjaoTHk/lcMHUgu7DrFTlOfCMF4s0rfXWDPGFOynm994DdvFKCz134dEFnUVJaOCtxUILEXspJOxZYUP1A8tMDHy7RKkxBQ0uoOxBgHiGdh4pnWJIXt5joderENOjumhj7/n+V3PTTF4Kmiv9K6ZfL42c4Z6a6VpqFj/U35A7Tuh3C5KXJvJ3qqfh5vbB8Dqx0/8yHftAL8aSClM47HE3mhLDK3jIYX1Ai5xpo8wLufq2z7LYih5m8H48Me912vZQSl91viJlojGjeDaoKpeLyUszQ8d9nyw+1XKvyb79nQ26QksP0MB1GlB+O+XffONfcH00goIJouIfytRR0Oq4GWpypIQPbccQGXVFKirsxsrD7kVkP8Ad8l1ha+UcF2Mh/Owc9SoP+0Np1dZshZfrUKhNpYGCkyJUbAFS7m2gH3D/hzmDdOK+j9ho8Z75ZA/9VM+qFsfodloJvCDGp928lsMPHEjSGSoF60qHd0aJ7j2s2J40Ux8lsDMIj1zHfGtlXu5XaNPNQWjY0wg9hDdp0yBordPxNBO4msMdGC3lvClp5lEObiD9octcmffQpSaV5aAao4knUlQmpuE5jx5Vq79xENsMWRLrQ== 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)(39860400002)(346002)(366004)(376002)(396003)(136003)(451199015)(71200400001)(86362001)(26005)(53546011)(7696005)(6506007)(9686003)(316002)(110136005)(54906003)(33656002)(38070700005)(38100700002)(66946007)(55016003)(76116006)(8676002)(66556008)(66446008)(64756008)(66476007)(83380400001)(84970400001)(30864003)(122000001)(966005)(66899015)(5660300002)(478600001)(8936002)(52536014)(41300700001)(2906002)(4326008)(186003);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB9143 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: AM7EUR03FT046.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 24dcf71d-1ecf-413b-bb08-08dac7e6bf1e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EcwSA77HByY/BPlIRBZUStSuaqCVdmvSc0NdtZG5e9E5zmqXUSniELEY76vBQg538NGqptuAUJel+R85LFxLgSiMBWNNvfAZXw/DvWKRl2YDzySt8SUt10JSV7QsfFDIiA0et3UyA7Sx/4GvNuU1S9juaUOUflFsBBCO+GfcS+vfGfZ6VSzIZHity6B4R6ZbG4AXItQWaKIUvj0LKnLFE/bQvz/Oe2hEmzDMdTDUOV9pwOW//XZKh9cf2fE6vR1E2bQlNtqx+PvrWZ46mHVpoNIsgp5JmwCrzN32IrlgD+SPki3yTlmxcvZzNx0I6dcyXcHAJfEd3euYgU+3qqzWRH3Nej1CvvjyXU00Ymw9ZnGygUq8GbuMmxtvXv7MyfjSOiVS+GTXu6DWdXpmelyjQHeVftavY7SdXPxs3k6KhHSlnAw/2l4M+LHhVlgKXUMFxyrQj55POitBy78e86DsCTwrgaspb7vqJgVZxf98CLMISd3ox7yI2o3eWOqu1e/CmZ3Bhmw+QYUQ19NDAF8BqlnWCGv/XLgnmtN17+k51km107wB022h2AL5seacmp6bLWaKJXJ65tp6ChFDjll8WbNWpXIuWQvze+bzlI5bZvhbMhdjdtGsBVFLzMQ+oJyaAkkkKWV6FLr3qFZx70wJjLIW6MnyzdDnnZBWX8JFZAQXRg9PkpsFLRWE9pBb+uHS2S6tOCzf1ON9wZRDeVJAb8c3b9wQ3AeD1yO8tSd2LTl4AbH1xHC2H4RAuRAk5tUhYtKUCs5XmI/NWCY1PMMjrwDWo99GO8Sh8Ns3SUv2esNXnyJLVdoDwKy5M5UIZTg78CJ6Ea17ds0x8UOdBM3upg== 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)(376002)(346002)(136003)(39860400002)(396003)(451199015)(40470700004)(36840700001)(46966006)(53546011)(66899015)(84970400001)(82310400005)(52536014)(30864003)(2906002)(8936002)(5660300002)(966005)(70206006)(36860700001)(8676002)(70586007)(54906003)(316002)(6506007)(110136005)(33656002)(81166007)(55016003)(7696005)(41300700001)(40480700001)(26005)(9686003)(186003)(86362001)(4326008)(336012)(82740400003)(83380400001)(356005)(40460700003)(478600001)(47076005);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Nov 2022 15:25:23.5741 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9e37f2e7-0360-4928-00a4-08dac7e6c80f 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: AM7EUR03FT046.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB8165 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: SGksDQoNClRoaXMgcGF0Y2ggaXMgY2F1c2luZyBzZXZlcmFsIElDRXMgYmVjYXVzZSBpdCBjaGFu Z2VzIHRoZSBwZXJtdXRlcyBmcm9tIGEgc2luZ2xlIHJlZ2lzdGVyDQpwZXJtdXRlIHRvIGEgbXVs dGkgcmVnaXN0ZXIgZHVlIHRvIHRoZSBsb3dlcmluZyBvZiB0aGUgZXhwcmVzc2lvbnMgdG8gZGlm ZmVyZW50IFNTQSBuYW1lcy4NCg0KU2VlIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hv d19idWcuY2dpP2lkPTEwNzcxNw0KDQpJIGhhdmUgYSBwcm90b3R5cGUgZml4IHdoaWNoIGFkZHMg YSBuZXcgcnVsZSB0byBDU0UgdGhpcyBiYWNrIHRvIGEgc2luZ2xlIHJlZ2lzdGVyIHBlcm11dGUs DQpidXQgd291bGQgdGhpcyBiZSB0aGUgcmlnaHQgc29sdXRpb24/IEl0IHNlZW1zIGhhcmQgdG8g bGF0ZXIgb24gZHVyaW5nIGV4cGFuZCByZWFsaXplIHRoYXQNCnRoZSB0d28gb3BlcmFuZHMgYXJl IHRoZSBzYW1lLg0KDQpJdCdzIHByb2JhYmx5IGFsc28gb2sgdG8ganVzdCBibG9jayB0aGlzIGZy b20gaGFwcGVuaW5nIGFmdGVyIHZlY19sb3dlciwgaG93ZXZlciBJJ20gd29ycmllZCB0aGF0DQpJ ZiBpdCB3YXNuJ3QgQ1NFJ2QgYmVmb3JlIHZlY19sb3dlciBpdCdsbCBsb3dlciBpdCBzbyBzb21l dGhpbmcgbXVjaCBsZXNzIGVmZmljaWVudC4NCg0KVGhhbmtzLA0KVGFtYXINCg0KPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBHY2MtcGF0Y2hlcyA8Z2NjLXBhdGNoZXMtDQo+ IGJvdW5jZXMrdGFtYXIuY2hyaXN0aW5hPWFybS5jb21AZ2NjLmdudS5vcmc+IE9uIEJlaGFsZiBP ZiBSaWNoYXJkDQo+IEJpZW5lciB2aWEgR2NjLXBhdGNoZXMNCj4gU2VudDogTW9uZGF5LCBOb3Zl bWJlciAxNCwgMjAyMiAyOjUzIFBNDQo+IFRvOiBIb25neXUgV2FuZyA8d3d3aGhoeXl5MzMzQGdt YWlsLmNvbT4NCj4gQ2M6IFByYXRoYW1lc2ggS3Vsa2FybmkgPHByYXRoYW1lc2gua3Vsa2FybmlA bGluYXJvLm9yZz47IFJpY2hhcmQNCj4gU2FuZGlmb3JkIDxSaWNoYXJkLlNhbmRpZm9yZEBhcm0u Y29tPjsgSG9uZ3l1IFdhbmcNCj4gPGhvbmd5dS53YW5nQGludGVsLmNvbT47IGhvbmd0YW8ubGl1 QGludGVsLmNvbTsgZ2NjLQ0KPiBwYXRjaGVzQGdjYy5nbnUub3JnDQo+IFN1YmplY3Q6IFJlOiBb UEFUQ0hdIE9wdGltaXplIFZFQ19QRVJNX0VYUFIgd2l0aCBzYW1lIHBlcm11dGF0aW9uDQo+IGlu ZGV4IGFuZCBvcGVyYXRpb24gW1BSOTgxNjddDQo+IA0KPiBPbiBUaHUsIE5vdiAxMCwgMjAyMiBh dCAzOjI3IFBNIEhvbmd5dSBXYW5nDQo+IDx3d3doaGh5eXkzMzNAZ21haWwuY29tPiB3cm90ZToN Cj4gPg0KPiA+ID4gV2VsbCwgd2l0aCBBVlg1MTIgdjY0cWkgdGhhdCdzIDY0KjY0ID09IDQwOTYg Y2FzZXMgdG8gY2hlY2suICBJDQo+ID4gPiB0aGluayBhIGxhbWJkYSBmdW5jdGlvbiBpcyBmaW5l IHRvIHVzZS4gIFRoZSBhbHRlcm5hdGl2ZSAodXNlZCBieQ0KPiA+ID4gdGhlIHZlY3Rvcml6ZXIg aW4gc29tZSBwbGFjZXMpIGlzIHRvIHVzZSBzdGggbGlrZQ0KPiA+ID4NCj4gPiA+ICBhdXRvX3Ni aXRtYXAgc2VlbiAobmVsdHMpOw0KPiA+ID4gIGZvciAoaSA9IDA7IGkgPCBuZWx0czsgaSsrKQ0K PiA+ID4gICAgew0KPiA+ID4gICAgICBpZiAoIWJpdG1hcF9zZXRfYml0IChzZWVuLCBpKSkNCj4g PiA+ICAgICAgICBicmVhazsNCj4gPiA+ICAgICAgY291bnQrKzsNCj4gPiA+ICAgIH0NCj4gPiA+ ICBmdWxsX3Blcm1fcCA9IGNvdW50ID09IG5lbHRzOw0KPiA+ID4NCj4gPiA+IEknbGwgbm90ZSB0 aGF0IHlvdSBzaG91bGQgc3RpbGwgY2hlY2sgLmVuY29kaW5nDQo+ID4gPiAoKS5lbmNvZGVkX2Z1 bGxfdmVjdG9yX3AgKCkgYW5kIG9ubHkgYm90aGVyIHRvIGNoZWNrIHRoYXQgY2FzZSwgdGhhdCdz IGENCj4gdmVyeSBzaW1wbGUgY2hlY2suDQo+ID4NCj4gPiBUaGFua3MgZm9yIHRoZSBnb29kIGV4 YW1wbGUhIFdlIGFsc28gdHJpZWQgdXNpbmcgd2lkZV9pbnQgYXMgYSBiaXRtYXNrDQo+ID4gYnV0 IHlvdXIgY29kZSBsb29rcyBtb3JlIHNpbXBsZSBhbmQgcmVhc29uYWJsZS4NCj4gPg0KPiA+IFVw ZGF0ZWQgdGhlIHBhdGNoIGFjY29yZGluZ2x5Lg0KPiANCj4gT0suDQo+IA0KPiBUaGFua3MsDQo+ IFJpY2hhcmQuDQo+IA0KPiA+IFJpY2hhcmQgQmllbmVyIDxyaWNoYXJkLmd1ZW50aGVyQGdtYWls LmNvbT4g5LqOMjAyMuW5tDEx5pyIMTDml6Xlkajlm5sNCj4gMTY6NTblhpnpgZPvvJoNCj4gPg0K PiA+DQo+ID4gPg0KPiA+ID4gT24gVGh1LCBOb3YgMTAsIDIwMjIgYXQgMzoyNyBBTSBIb25neXUg V2FuZw0KPiA8d3d3aGhoeXl5MzMzQGdtYWlsLmNvbT4gd3JvdGU6DQo+ID4gPiA+DQo+ID4gPiA+ IEhpIFByYXRoYW1lc2ggYW5kIFJpY2hhcmQsDQo+ID4gPiA+DQo+ID4gPiA+IFRoYW5rcyBmb3Ig dGhlIHJldmlldyBhbmQgbmljZSBzdWdnZXN0aW9ucyENCj4gPiA+ID4NCj4gPiA+ID4gPiA+IEkg Z3Vlc3MgdGhlIHRyYW5zZm9ybSBzaG91bGQgd29yayBhcyBsb25nIGFzIG1hc2sgaXMgc2FtZSBm b3INCj4gPiA+ID4gPiA+IGJvdGggdmVjdG9ycyBldmVuIGlmIGl0J3Mgbm90IGNvbnN0YW50ID8N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IFllcywgcGxlYXNlIGNoYW5nZSBhY2NvcmRpbmdseSAoYW5k IG1heWJlIHB1c2ggc2VwYXJhdGVseSkuDQo+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gUmVt b3ZlZCBWRUNUT1JfQ1NUIGZvciBpbnRlZ2VyIG9wcy4NCj4gPiA+ID4NCj4gPiA+ID4gPiA+IElm IHRoaXMgdHJhbnNmb3JtIGlzIG1lYW50IG9ubHkgZm9yIFZMUyB2ZWN0b3JzLCBJIGd1ZXNzIHlv dQ0KPiA+ID4gPiA+ID4gc2hvdWxkIGJhaWwgb3V0IGlmIFRZUEVfVkVDVE9SX1NVQlBBUlRTIGlz IG5vdCBjb25zdGFudCwNCj4gPiA+ID4gPiA+IG90aGVyd2lzZSBpdCB3aWxsIGNyYXNoIGZvciBW TEEgdmVjdG9ycy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEkgc3VwcG9zZSBpdCdzIGRpZmZpY3Vs dCB0byBjcmVhdGUgYSBWTEEgcGVybXV0ZSB0aGF0IGNvdmVycyBhbGwNCj4gPiA+ID4gPiBlbGVt ZW50cyBhbmQgdGhhdCBpcyBub3QgdHJpdmlhbCB0aG91Z2guICBCdXQgaW5kZWVkIGFkZA0KPiA+ ID4gPiA+ICgpLmlzX2NvbnN0YW50IHRvIHRoZSBWRUNUT1JfRkxPQVRfVFlQRV9QIGd1YXJkLg0K PiA+ID4gPg0KPiA+ID4gPiBBZGRlZC4NCj4gPiA+ID4NCj4gPiA+ID4gPiBNZWgsIHRoYXQncyBx dWFkcmF0aWMhICBJIHN1Z2dlc3QgdG8gY2hlY2sgLmVuY29kaW5nDQo+ID4gPiA+ID4gKCkuZW5j b2RlZF9mdWxsX3ZlY3Rvcl9wICgpIChhcyBzYWlkIEkgY2FuJ3QgdGhpbmsgb2YgYSBub24tZnVs bA0KPiA+ID4gPiA+IGVuY29kaW5nIHRoYXQgaXNuJ3QgdHJpdmlhbCBidXQgY292ZXJzIGFsbCBl bGVtZW50cykgYW5kIHRoZW4NCj4gPiA+ID4gPiBzaW1wbHkgLnFzb3J0ICgpIHRoZSB2ZWN0b3Jf YnVpbGRlciAoaXQgZGVyaXZlcyBmcm9tIHZlYzw+KSBzbw0KPiA+ID4gPiA+IHRoZSBzY2FuIGlz IE8obiBsb2cgbikuDQo+ID4gPiA+DQo+ID4gPiA+IFRoZSAucXNvcnQgKCkgYXBwcm9hY2ggcmVx dWlyZXMgYW4gZXh0cmEgY21wX2Z1bmMgdGhhdCBJTU8gd291bGQNCj4gPiA+ID4gbm90IGJlIGZl YXNpYmxlIHRvIGJlIGltcGxlbWVudGVkIGluIG1hdGNoLnBkIChJIHN1cHBvc2UgbGFtYmRhDQo+ ID4gPiA+IGZ1bmN0aW9uIHdvdWxkIG5vdCBiZSBhIGdvb2QgaWRlYSBlaXRoZXIpLg0KPiA+ID4g PiBBbm90aGVyIHNvbHV0aW9uIHdvdWxkIGJlIHVzaW5nIGhhc2hfc2V0IGJ1dCBpdCBkb2VzIG5v dCB3b3JrIGhlcmUNCj4gPiA+ID4gZm9yIGludDY0X3Qgb3IgcG9seV9pbnQ2NCB0eXBlLg0KPiA+ ID4gPiBTbyBJIGtlcHQgY3VycmVudCBPKG5eMikgc2ltcGxlIGNvZGUgaGVyZSwgYW5kIEkgc3Vw cG9zZSB1c3VhbGx5DQo+ID4gPiA+IHRoZSBwZXJtdXRhdGlvbiBpbmRpY2VzIHdvdWxkIGJlIGEg c21hbGwgbnVtYmVyIGV2ZW4gZm9yIE8obl4yKQ0KPiA+ID4gPiBjb21wbGV4aXR5Lg0KPiA+ID4N Cj4gPiA+IFdlbGwsIHdpdGggQVZYNTEyIHY2NHFpIHRoYXQncyA2NCo2NCA9PSA0MDk2IGNhc2Vz IHRvIGNoZWNrLiAgSQ0KPiA+ID4gdGhpbmsgYSBsYW1iZGEgZnVuY3Rpb24gaXMgZmluZSB0byB1 c2UuICBUaGUgYWx0ZXJuYXRpdmUgKHVzZWQgYnkNCj4gPiA+IHRoZSB2ZWN0b3JpemVyIGluIHNv bWUgcGxhY2VzKSBpcyB0byB1c2Ugc3RoIGxpa2UNCj4gPiA+DQo+ID4gPiAgYXV0b19zYml0bWFw IHNlZW4gKG5lbHRzKTsNCj4gPiA+ICBmb3IgKGkgPSAwOyBpIDwgbmVsdHM7IGkrKykNCj4gPiA+ ICAgIHsNCj4gPiA+ICAgICAgaWYgKCFiaXRtYXBfc2V0X2JpdCAoc2VlbiwgaSkpDQo+ID4gPiAg ICAgICAgYnJlYWs7DQo+ID4gPiAgICAgIGNvdW50Kys7DQo+ID4gPiAgICB9DQo+ID4gPiAgZnVs bF9wZXJtX3AgPSBjb3VudCA9PSBuZWx0czsNCj4gPiA+DQo+ID4gPiBJJ2xsIG5vdGUgdGhhdCB5 b3Ugc2hvdWxkIHN0aWxsIGNoZWNrIC5lbmNvZGluZw0KPiA+ID4gKCkuZW5jb2RlZF9mdWxsX3Zl Y3Rvcl9wICgpIGFuZCBvbmx5IGJvdGhlciB0byBjaGVjayB0aGF0IGNhc2UsIHRoYXQncyBhDQo+ IHZlcnkgc2ltcGxlIGNoZWNrLg0KPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gQXR0YWNoZWQgdXBk YXRlZCBwYXRjaC4NCj4gPiA+ID4NCj4gPiA+ID4gUmljaGFyZCBCaWVuZXIgdmlhIEdjYy1wYXRj aGVzIDxnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZz4NCj4gPiA+ID4g5LqOMjAyMuW5tDEx5pyIOOaX peWRqOS6jCAyMjozOOWGmemBk++8mg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gT24gRnJpLCBOb3YgNCwgMjAyMiBhdCA3OjQ0IEFNIFByYXRoYW1lc2ggS3Vsa2Fybmkg dmlhDQo+ID4gPiA+ID4gR2NjLXBhdGNoZXMgPGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnPiB3cm90 ZToNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBPbiBGcmksIDQgTm92IDIwMjIgYXQgMDU6MzYs IEhvbmd5dSBXYW5nIHZpYSBHY2MtcGF0Y2hlcw0KPiA+ID4gPiA+ID4gPGdjYy1wYXRjaGVzQGdj Yy5nbnUub3JnPiB3cm90ZToNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gSGksDQo+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFRoaXMgaXMgYSBmb2xsb3ctdXAgcGF0Y2ggZm9yIFBS OTgxNjcNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gVGhlIHNlcXVlbmNlDQo+ID4gPiA+ ID4gPiA+ICAgICAgYzEgPSBWRUNfUEVSTV9FWFBSIChhLCBhLCBtYXNrKQ0KPiA+ID4gPiA+ID4g PiAgICAgIGMyID0gVkVDX1BFUk1fRVhQUiAoYiwgYiwgbWFzaykNCj4gPiA+ID4gPiA+ID4gICAg ICBjMyA9IGMxIG9wIGMyDQo+ID4gPiA+ID4gPiA+IGNhbiBiZSBvcHRpbWl6ZWQgdG8NCj4gPiA+ ID4gPiA+ID4gICAgICBjID0gYSBvcCBiDQo+ID4gPiA+ID4gPiA+ICAgICAgYzMgPSBWRUNfUEVS TV9FWFBSIChjLCBjLCBtYXNrKSBmb3IgYWxsIGludGVnZXIgdmVjdG9yDQo+ID4gPiA+ID4gPiA+ IG9wZXJhdGlvbiwgYW5kIGZsb2F0IG9wZXJhdGlvbiB3aXRoIGZ1bGwgcGVybXV0YXRpb24uDQo+ ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEJvb3RzdHJhcHBlZCAmIHJlZ3J0ZXN0ZWQgb24g eDg2XzY0LXBjLWxpbnV4LWdudS4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gT2sgZm9y IHRydW5rPw0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBnY2MvQ2hhbmdlTG9nOg0KPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiAgICAgICAgIFBSIHRhcmdldC85ODE2Nw0KPiA+ID4g PiA+ID4gPiAgICAgICAgICogbWF0Y2gucGQ6IE5ldyBwZXJtICsgdmVjdG9yIG9wIHBhdHRlcm5z IGZvciBpbnQgYW5kIGZwDQo+IHZlY3Rvci4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g Z2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ICAg ICAgICAgUFIgdGFyZ2V0Lzk4MTY3DQo+ID4gPiA+ID4gPiA+ICAgICAgICAgKiBnY2MudGFyZ2V0 L2kzODYvcHI5ODE2Ny5jOiBOZXcgdGVzdC4NCj4gPiA+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4g PiA+ICBnY2MvbWF0Y2gucGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0OSArKysrKysr KysrKysrKysrKysrKysrKysrDQo+ID4gPiA+ID4gPiA+ICBnY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9wcjk4MTY3LmMgfCA0NA0KPiA+ID4gPiA+ID4gPiArKysrKysrKysrKysrKysrKysr KysrDQo+ID4gPiA+ID4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKykgIGNy ZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9wcjk4MTY3LmMNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBh L2djYy9tYXRjaC5wZCBiL2djYy9tYXRjaC5wZCBpbmRleA0KPiA+ID4gPiA+ID4gPiAxOTRiYThm NTE4OC4uYjg1YWQzNGY2MDkgMTAwNjQ0DQo+ID4gPiA+ID4gPiA+IC0tLSBhL2djYy9tYXRjaC5w ZA0KPiA+ID4gPiA+ID4gPiArKysgYi9nY2MvbWF0Y2gucGQNCj4gPiA+ID4gPiA+ID4gQEAgLTgx ODksMyArODE4OSw1MiBAQCBhbmQsDQo+ID4gPiA+ID4gPiA+ICAgKGJpdF9hbmQgKG5lZ2F0ZSBA MCkgaW50ZWdlcl9vbmVwQDEpDQo+ID4gPiA+ID4gPiA+ICAgKGlmICghVFlQRV9PVkVSRkxPV19T QU5JVElaRUQgKHR5cGUpKQ0KPiA+ID4gPiA+ID4gPiAgICAoYml0X2FuZCBAMCBAMSkpKQ0KPiA+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsvKiBPcHRpbWl6ZQ0KPiA+ID4gPiA+ID4gPiAr ICAgYzEgPSBWRUNfUEVSTV9FWFBSIChhLCBhLCBtYXNrKQ0KPiA+ID4gPiA+ID4gPiArICAgYzIg PSBWRUNfUEVSTV9FWFBSIChiLCBiLCBtYXNrKQ0KPiA+ID4gPiA+ID4gPiArICAgYzMgPSBjMSBv cCBjMg0KPiA+ID4gPiA+ID4gPiArICAgLS0+DQo+ID4gPiA+ID4gPiA+ICsgICBjID0gYSBvcCBi DQo+ID4gPiA+ID4gPiA+ICsgICBjMyA9IFZFQ19QRVJNX0VYUFIgKGMsIGMsIG1hc2spDQo+ID4g PiA+ID4gPiA+ICsgICBGb3IgYWxsIGludGVnZXIgbm9uLWRpdiBvcGVyYXRpb25zLiAgKi8gKGZv ciBvcCAocGx1cw0KPiA+ID4gPiA+ID4gPiArbWludXMgbXVsdCBiaXRfYW5kIGJpdF9pb3IgYml0 X3hvcg0KPiA+ID4gPiA+ID4gPiArICAgICAgICBsc2hpZnQgcnNoaWZ0KQ0KPiA+ID4gPiA+ID4g PiArIChzaW1wbGlmeQ0KPiA+ID4gPiA+ID4gPiArICAob3AgKHZlY19wZXJtIEAwIEAwIFZFQ1RP Ul9DU1RAMikgKHZlY19wZXJtIEAxIEAxDQo+IFZFQ1RPUl9DU1RAMikpDQo+ID4gPiA+ID4gPiA+ ICsgICAgKGlmIChWRUNUT1JfSU5URUdFUl9UWVBFX1AgKHR5cGUpKQ0KPiA+ID4gPiA+ID4gPiAr ICAgICAodmVjX3Blcm0gKG9wIEAwIEAxKSAob3AgQDAgQDEpIEAyKSkpKQ0KPiA+ID4gPiA+ID4g SnVzdCB3b25kZXJpbmcsIHdoeSBzaG91bGQgbWFzayBiZSBDU1QgaGVyZSA/DQo+ID4gPiA+ID4g PiBJIGd1ZXNzIHRoZSB0cmFuc2Zvcm0gc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyBtYXNrIGlzIHNh bWUgZm9yDQo+ID4gPiA+ID4gPiBib3RoIHZlY3RvcnMgZXZlbiBpZiBpdCdzIG5vdCBjb25zdGFu dCA/DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBZZXMsIHBsZWFzZSBjaGFuZ2UgYWNjb3JkaW5nbHkg KGFuZCBtYXliZSBwdXNoIHNlcGFyYXRlbHkpLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gKy8qIFNpbWlsYXIgZm9yIGZsb2F0IGFyaXRobWV0aWMgd2hlbiBwZXJt dXRhdGlvbiBjb25zdGFudCBjb3ZlcnMNCj4gPiA+ID4gPiA+ID4gKyAgIGFsbCB2ZWN0b3IgZWxl bWVudHMuICAqLyAoZm9yIG9wIChwbHVzIG1pbnVzIG11bHQpDQo+ID4gPiA+ID4gPiA+ICsoc2lt cGxpZnkNCj4gPiA+ID4gPiA+ID4gKyAgKG9wICh2ZWNfcGVybSBAMCBAMCBWRUNUT1JfQ1NUQDIp ICh2ZWNfcGVybSBAMSBAMQ0KPiBWRUNUT1JfQ1NUQDIpKQ0KPiA+ID4gPiA+ID4gPiArICAgIChp ZiAoVkVDVE9SX0ZMT0FUX1RZUEVfUCAodHlwZSkpDQo+ID4gPiA+ID4gPiA+ICsgICAgICh3aXRo DQo+ID4gPiA+ID4gPiA+ICsgICAgICB7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgdHJlZSBwZXJt X2NzdCA9IEAyOw0KPiA+ID4gPiA+ID4gPiArICAgICAgIHZlY19wZXJtX2J1aWxkZXIgYnVpbGRl cjsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICBib29sIGZ1bGxfcGVybV9wID0gZmFsc2U7DQo+ID4g PiA+ID4gPiA+ICsgICAgICAgaWYgKHRyZWVfdG9fdmVjX3Blcm1fYnVpbGRlciAoJmJ1aWxkZXIs IHBlcm1fY3N0KSkNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgIHsNCj4gPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgLyogQ3JlYXRlIGEgdmVjX3Blcm1faW5kaWNlcyBmb3IgdGhlIGludGVnZXIgdmVj dG9yLiAgKi8NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgaW50IG5lbHRzID0gVFlQRV9WRUNU T1JfU1VCUEFSVFMNCj4gPiA+ID4gPiA+ID4gKyh0eXBlKS50b19jb25zdGFudCAoKTsNCj4gPiA+ ID4gPiA+IElmIHRoaXMgdHJhbnNmb3JtIGlzIG1lYW50IG9ubHkgZm9yIFZMUyB2ZWN0b3JzLCBJ IGd1ZXNzIHlvdQ0KPiA+ID4gPiA+ID4gc2hvdWxkIGJhaWwgb3V0IGlmIFRZUEVfVkVDVE9SX1NV QlBBUlRTIGlzIG5vdCBjb25zdGFudCwNCj4gPiA+ID4gPiA+IG90aGVyd2lzZSBpdCB3aWxsIGNy YXNoIGZvciBWTEEgdmVjdG9ycy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEkgc3VwcG9zZSBpdCdz IGRpZmZpY3VsdCB0byBjcmVhdGUgYSBWTEEgcGVybXV0ZSB0aGF0IGNvdmVycyBhbGwNCj4gPiA+ ID4gPiBlbGVtZW50cyBhbmQgdGhhdCBpcyBub3QgdHJpdmlhbCB0aG91Z2guICBCdXQgaW5kZWVk IGFkZA0KPiA+ID4gPiA+ICgpLmlzX2NvbnN0YW50IHRvIHRoZSBWRUNUT1JfRkxPQVRfVFlQRV9Q IGd1YXJkLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gVGhhbmtzLA0KPiA+ ID4gPiA+ID4gUHJhdGhhbWVzaA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICB2ZWNfcGVybV9p bmRpY2VzIHNlbCAoYnVpbGRlciwgMSwgbmVsdHMpOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiA+ICsgICAgICAgICAgIC8qIENoZWNrIGlmIHBlcm0gaW5kaWNlcyBjb3ZlcnMgYWxsIHZl Y3RvciBlbGVtZW50cy4gICovDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGludCBjb3VudCA9 IDAsIGksIGo7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0 czsgaSsrKQ0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBuZWx0 czsgaisrKQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gTWVoLCB0aGF0J3MgcXVhZHJhdGljISAgSSBz dWdnZXN0IHRvIGNoZWNrIC5lbmNvZGluZw0KPiA+ID4gPiA+ICgpLmVuY29kZWRfZnVsbF92ZWN0 b3JfcCAoKSAoYXMgc2FpZCBJIGNhbid0IHRoaW5rIG9mIGEgbm9uLWZ1bGwNCj4gPiA+ID4gPiBl bmNvZGluZyB0aGF0IGlzbid0IHRyaXZpYWwgYnV0IGNvdmVycyBhbGwgZWxlbWVudHMpIGFuZCB0 aGVuDQo+ID4gPiA+ID4gc2ltcGx5IC5xc29ydCAoKSB0aGUgdmVjdG9yX2J1aWxkZXIgKGl0IGRl cml2ZXMgZnJvbSB2ZWM8Pikgc28NCj4gPiA+ID4gPiB0aGUgc2NhbiBpcyBPKG4gbG9nIG4pLg0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gTWF5YmUgUmljaGFyZCBoYXMgYSBiZXR0ZXIgaWRlYSBoZXJl IHRob3VnaC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IE90aGVyd2lzZSBsb29rcyBPSywgdGhvdWdo IHdpdGggdGhlc2Uga2luZCBvZiAoKiAob3AgLi4pIChvcA0KPiA+ID4gPiA+IC4uKSkgcGF0dGVy bnMgaXQncyBhbHdheXMgdGhhdCB0aGV5IGV4cGxvZGUgdGhlIG1hdGNoIGRlY2lzaW9uDQo+ID4g PiA+ID4gdHJlZSwgd2UnZCBpZGVhbGx5IGhhdmUgYSB3YXkgdG8gbWF0Y2ggdGhvc2Ugd2l0aCAo b3AgLi4pIChvcA0KPiA+ID4gPiA+IC4uKSBmaXJzdCB0byBiZSBhYmxlIHRvIHNoYXJlIG1vcmUg b2YgdGhlIG1hdGNoaW5nIGNvZGUuICBUaGF0DQo+ID4gPiA+ID4gc2FpZCwgbWF0Y2gucGQgaXMg YSBsZXNzIHRoYW4gaWRlYWwgcGxhY2UgZm9yIHRoZXNlIChidXQgbW9zdGx5DQo+ID4gPiA+ID4g YmVjYXVzZSBvZiB0aGUgd2F5IHdlIGNvZGUgZ2VuZXJhdGUgKi1tYXRjaC5jYykNCj4gPiA+ID4g Pg0KPiA+ID4gPiA+IFJpY2hhcmQuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgaWYgKHNlbFtqXS50b19j b25zdGFudCAoKSA9PSBpKQ0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIHsNCj4g PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7DQo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICB9DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgIGZ1bGxfcGVybV9wID0gY291bnQgPT0gbmVsdHM7DQo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICB9DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgfQ0KPiA+ID4gPiA+ID4gPiArICAg ICAgIChpZiAoZnVsbF9wZXJtX3ApDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgKHZlY19wZXJtIChv cCBAMCBAMSkgKG9wIEAwIEAxKSBAMikpKSkpKQ0KPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI5ODE2Ny5jDQo+ID4gPiA+ID4gPiA+IGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI5ODE2Ny5jDQo+ID4gPiA+ID4gPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAwLi40MGUw YWMxMTMzMg0KPiA+ID4gPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ID4gPiA+ICsrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByOTgxNjcuYw0KPiA+ID4gPiA+ID4gPiBA QCAtMCwwICsxLDQ0IEBADQo+ID4gPiA+ID4gPiA+ICsvKiBQUiB0YXJnZXQvOTgxNjcgKi8NCj4g PiA+ID4gPiA+ID4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ID4gPiA+ID4gPiA+ICsvKiB7 IGRnLW9wdGlvbnMgIi1PMiAtbWF2eDIiIH0gKi8NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2cHNodWZkXHQiIDgg fSB9ICovDQo+ID4gPiA+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgInZwZXJtaWxwc1x0IiAzIH0gfSAqLw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ ICsjZGVmaW5lIFZFQ19QRVJNXzQgXA0KPiA+ID4gPiA+ID4gPiArICAyLCAzLCAxLCAwDQo+ID4g PiA+ID4gPiA+ICsjZGVmaW5lIFZFQ19QRVJNXzggXA0KPiA+ID4gPiA+ID4gPiArICA0LCA1LCA2 LCA3LCAzLCAyLCAxLCAwDQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIFZFQ19QRVJNXzE2IFwNCj4g PiA+ID4gPiA+ID4gKyAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNywgNiwgNSwgNCwg MywgMiwgMSwgMA0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIFRZUEVf UEVSTV9PUCh0eXBlLCBzaXplLCBvcCwgbmFtZSkgXA0KPiA+ID4gPiA+ID4gPiArICB0eXBlZGVm IHR5cGUgdiMjc2l6ZSMjcyMjdHlwZSBfX2F0dHJpYnV0ZV9fDQo+ID4gPiA+ID4gPiA+ICsoKHZl Y3Rvcl9zaXplKDQqc2l6ZSkpKTsgXA0KPiA+ID4gPiA+ID4gPiArICB2IyNzaXplIyNzIyN0eXBl IHR5cGUjI2ZvbyMjc2l6ZSMjaV8jI25hbWUNCj4gKHYjI3NpemUjI3MjI3R5cGUgYSwgXA0KPiA+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICt2IyNzaXplIyNzIyN0eXBlIGIpIFwNCj4gPiA+ ID4gPiA+ID4gKyAgeyBcDQo+ID4gPiA+ID4gPiA+ICsgICAgdiMjc2l6ZSMjcyMjdHlwZSBhMSA9 IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yIChhLCBhLCBcDQo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFQ19QRVJNXyMjc2l6 ZSk7IFwNCj4gPiA+ID4gPiA+ID4gKyAgICB2IyNzaXplIyNzIyN0eXBlIGIxID0gX19idWlsdGlu X3NodWZmbGV2ZWN0b3IgKGIsIGIsIFwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVDX1BFUk1fIyNzaXplKTsgXA0KPiA+ ID4gPiA+ID4gPiArICAgIHJldHVybiBhMSBvcCBiMTsgXA0KPiA+ID4gPiA+ID4gPiArICB9DQo+ ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgSU5UX1BFUk1TKG9wLCBuYW1l KSBcDQo+ID4gPiA+ID4gPiA+ICsgIFRZUEVfUEVSTV9PUCAoaW50LCA0LCBvcCwgbmFtZSkgXA0K PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIEZQX1BFUk1TKG9wLCBuYW1l KSBcDQo+ID4gPiA+ID4gPiA+ICsgIFRZUEVfUEVSTV9PUCAoZmxvYXQsIDQsIG9wLCBuYW1lKSBc DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gK0lOVF9QRVJNUyAoKywgYWRkKQ0KPiA+ ID4gPiA+ID4gPiArSU5UX1BFUk1TICgtLCBzdWIpDQo+ID4gPiA+ID4gPiA+ICtJTlRfUEVSTVMg KCosIG11bCkNCj4gPiA+ID4gPiA+ID4gK0lOVF9QRVJNUyAofCwgaW9yKQ0KPiA+ID4gPiA+ID4g PiArSU5UX1BFUk1TICheLCB4b3IpDQo+ID4gPiA+ID4gPiA+ICtJTlRfUEVSTVMgKCYsIGFuZCkN Cj4gPiA+ID4gPiA+ID4gK0lOVF9QRVJNUyAoPDwsIHNobCkNCj4gPiA+ID4gPiA+ID4gK0lOVF9Q RVJNUyAoPj4sIHNocikNCj4gPiA+ID4gPiA+ID4gK0ZQX1BFUk1TICgrLCBhZGQpDQo+ID4gPiA+ ID4gPiA+ICtGUF9QRVJNUyAoLSwgc3ViKQ0KPiA+ID4gPiA+ID4gPiArRlBfUEVSTVMgKCosIG11 bCkNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiAtLQ0KPiA+ID4gPiA+ID4gPiAyLjE4 LjENCj4gPiA+ID4gPiA+ID4NCg==