From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80072.outbound.protection.outlook.com [40.107.8.72]) by sourceware.org (Postfix) with ESMTPS id 59A143858C74 for ; Thu, 11 Aug 2022 15:21:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 59A143858C74 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=gpanjyGw6xupC0+Ew6K6EcbRZegZP0cnmfp3gMJz74wXCnJ9csvxPpQMshPs3Ji4JI1Hx4IyhBfvi64oKZyRaO8rCuDE2OBqRCPrLFIxI/oDPYzM0gRESFXd3xzMecnIU3tLfL5l0/Xx5EZbu6BznY2FP1Ot0CKjGvyX4GUf8oHkgYTDgJq8qpVozmThGv7ufQJOus7cmH+4D38bw4d4oEnROxv1PfIYlKH8o6RlOYK9LEhEIQPgAbNQFzh70Gwhy6JfWHtD/WUny1cvGmCJrb6nMJPbGhxUnU1fWXV/5Y7LxHMz2qhbyS6tIGcFYKg1qpR1KbGo1PL+l20f1bYu7w== 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=ubn2uJ/+kAaaXBXECkUZ2P+/MhOa8mRt6aZPoVnnwLk=; b=Q6TYgiuH34KtelkBWarcPhFAtrUdslsADWedWGyEfIS8WSzSMdyn3O9xecTaPTtFpOYlrf1w5RHc9XZPvbNVUVSsC3qqP6TUg8fqw+1Ab9KvcivxMl32xu7NHifzM3tnjs5W+Uz8lUykyYkM2OqdcyhtLKfpOKHGg7FEaxbWvultHEqwJcgg+Y1sewLxyBFiofUo2un7Rj1QBS3fHtq1D/8UTBXe3u3bAKBgREgqQglfvCzCOY4XN7qdGWxB4/Vei2redcP2DgGQfoN8Vm/u3lBqlbZBb6TizpgtD6DQ8Eruxi6dA+2lZiIJcPGto5yMZ0cqbwRCsxEXMNwY5ZDhAA== 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]) Received: from AS9PR06CA0020.eurprd06.prod.outlook.com (2603:10a6:20b:462::24) by PR2PR08MB4764.eurprd08.prod.outlook.com (2603:10a6:101:19::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.17; Thu, 11 Aug 2022 15:21:33 +0000 Received: from AM5EUR03FT062.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:462:cafe::b2) by AS9PR06CA0020.outlook.office365.com (2603:10a6:20b:462::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.16 via Frontend Transport; Thu, 11 Aug 2022 15:21:33 +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 AM5EUR03FT062.mail.protection.outlook.com (10.152.17.120) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.11 via Frontend Transport; Thu, 11 Aug 2022 15:21:33 +0000 Received: ("Tessian outbound 63c09d5d38ac:v123"); Thu, 11 Aug 2022 15:21:33 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: dcc03887a41da528 X-CR-MTA-TID: 64aa7808 Received: from e6186836cd05.3 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 0D085FB3-36AF-479E-8FAC-D9143598BA45.1; Thu, 11 Aug 2022 15:21:22 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e6186836cd05.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 11 Aug 2022 15:21:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fG0m7oyMlyh4A4uys73vI3JKf73rKQSUJ5EAyWL86APnUiuTeXVnmOWZQ2k3w4iaj5G+oSWjg6r9iemT5rX4IfPTCHJF/d9nbP+74ZKCWrGHAtz/1ZK6yc9wdzSTpPMhKXGDGnz8vQ65MyWNCo2m2A3JRKlxT7TamsYUvxPyhmq3/BO39Bv9gX6HPWH07lrbdoakUgy7Oq6pmv5WNV269S/ErjL3DKzu3MttGnVAaMRgDQR8M6SADH1zR6ZNNYE8zCRZtMxnkyqsKa246MLA9rESFriVVSKDsCABKwqCmfC0XTOKPPg9/Wq5irfKtnvw2/5sUukrAeLvKJMeabOG6Q== 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=ubn2uJ/+kAaaXBXECkUZ2P+/MhOa8mRt6aZPoVnnwLk=; b=Gs+RarKHM4sB+nc0PQUfKFFXYQu56gZKj4fquulo4pVh4GwJquWbIkDPL3vtD3fq/Fj8H2xPqJSSOpSUgiL1O8ev9Fsm459ez/a/mxiqZtQ0/c+zdVZFh8fa4XOC6wh7//ocm63cwzumR0kyroitirr40AZGNet/XB9NbmvcoSEuCh5A0fLlzJTZ5nfLmhlhCvANS4pmjCx68UwkO+AEcF7VTAzFJ77O9XYSB7vhNkpSb70kB6L477V8v8sfJhClLeJQ7JbSlzu2nEKwV4n6E2+WIZSfGs0qohYrFQNwW6UOfMaopJXQWjFhhrckO1/Df7c5LHKfoeCtvhJNoNt4Jw== 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 Received: from PAXPR08MB6926.eurprd08.prod.outlook.com (2603:10a6:102:138::24) by VE1PR08MB4669.eurprd08.prod.outlook.com (2603:10a6:802:a8::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 11 Aug 2022 15:21:19 +0000 Received: from PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::a47f:fd34:1dff:2f37]) by PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::a47f:fd34:1dff:2f37%5]) with mapi id 15.20.5525.011; Thu, 11 Aug 2022 15:21:18 +0000 From: Kyrylo Tkachov To: Andre Simoes Dias Vieira , "gcc-patches@gcc.gnu.org" , Richard Sandiford , Richard Biener Subject: RE: [PATCH][AArch64] Implement ACLE Data Intrinsics Thread-Topic: [PATCH][AArch64] Implement ACLE Data Intrinsics Thread-Index: AQHYfM896UBQoXRVpkWpB6VszSWXaK1Td8GkgBF+dwCAASELB4ADWPCAgAARJOmAQK5IAIAAAq9A Date: Thu, 11 Aug 2022 15:21:18 +0000 Message-ID: References: <11918543-8a40-211d-771d-4e2dbaeb9eb6@arm.com> <6e40034d-4474-aef4-9226-7f8ccb9f1e30@arm.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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: d9887968-cb24-45c4-78a6-08da7bad2c88 x-ms-traffictypediagnostic: VE1PR08MB4669:EE_|AM5EUR03FT062:EE_|PR2PR08MB4764: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: dBYbz1mETeN5FafGD7IN1ixZh8DN+csLm2CGVMY9GfvhjGFcsiN4WrFUqnYbfju37RlypjZTnbQU97ZDoyEQdOh6BiCSHSIJRJrf3XJ4qOfhLVlLDKQovBIBpwI4JoNvtWKeggwpIbosp/FRLxqv5FJkfVkay5GMZjB+Svrp1eAN47FErFX4S3kkiQNze4h5YsT6/AsN8BAsdmDFjYuwLOzzeyGva5JToYwRDiwMf41iebyvyHqdeCMpAgy+nPaRkRSMCJl2XJGObba8qgXt4IPPY43v/1YJP2rNRs2eaFHR71tBpMjKvFM35xgfl8x6dU6h68clzal2qHi+sLFhgzwXXjsFIKF9mq0izZb3JJOEThyzayxZHsYFouEZ0VstGAc3MgXClk5J1Sfl1munCV3EPeDQR9eHCgyFJBZzfla5hXibSbte9dPtMfhdQC2fDPWj+57wkucXyasq8RJSez5IcDq+R100r0zaiUa3nswNHTv5iFzZH6WPcjoeNCj/gQt99wSjE6Ab6N4H5fOaRX75T2tcUJG9qi7TBXUF2zyHqmslY3e/wQTsZW+jZxtKswMMRC2iVGHRypONAh0UlP954MzcmTXo/RyxoJ+4ITtTr6AS3gFmUrmXRE9MBOFP+37LDoPgN5vsxNp+x25IgP2woNb3x3McamPSkIsqKTRxF2JL9C0G9XGYRwpLfNqxJhdztI7gl9lg++ZIGfBCnJCCW986vqAbid7AeJ1VgUqrK1qMQbedCJ6P57u2J5MQ1R7KXXwDguJljnoYv2GDhNQEqs1HVsphf/Vm5MZIi681wZ62JvwcfENAHMo40rds X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR08MB6926.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(39860400002)(396003)(136003)(376002)(366004)(346002)(71200400001)(76116006)(66946007)(8676002)(66446008)(66556008)(83380400001)(64756008)(66476007)(478600001)(8936002)(5660300002)(316002)(52536014)(110136005)(30864003)(2906002)(38100700002)(38070700005)(6506007)(53546011)(41300700001)(7696005)(33656002)(122000001)(9686003)(86362001)(55016003)(186003)(26005)(579004)(559001); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4669 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: AM5EUR03FT062.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: fc5785e2-a1f3-474c-0754-08da7bad23c5 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DhkLLBsQGDq+VL0CAVp+/auzyxqgPzByDogt629X+TCwfKgqQ5rvJgEuCU39F9OHt8faOwEJMYFp12pqa8//16Z8SCx8FWwqcJjDI7p5SdUQsYaaoPx66oTokCvJtF9E5SmN6Wp2+ijIbeHvYAx0xIFpMij+pCD06NyBDpI89EOOsVKpiK9jxebO3Q73s8ndXNvH9IC0+sJcbWfxjrE1jjzhK0kPArLrbIYGpMF1esBcQ4DW18QjFLqd27jFrKtKM+D0qNt0qgnYc+jiHOCE4HG3t5QDYSpYGtmo9dxdBhKwsa3QfVd3pak1EHhViS7FKTosVFq+CI/7eP+I50Br51C6o4Cy0UIEQ1SH7Yh/gcW/CJx+5DeAuTrkTnPBTl/LrK/aCjLdEzgLSM6jGU5XtgpGG9/R7t3mV+/zY4skFtXpEcnwXKa97XCLwZPuK25+9z8/bvo6iRbaFrsfl7PIE6Xw0q+MiW6WrHWXRo+ZWIfsdNu1Q3sfy7VjePAcXL7NwHwJkGa5Jd3UdW49CSCQrQJsLW0Ph6S/iiRef6eecTEtA/ghgKvhJ2gx3iA8/GzOsblekGKKNyFjb03ZlxXAtYTkGt1Ro6cN4udANppLWpMKIndfYmeZe2vLeNlVI7zIX5npfPSfv/zP6xhR6IQmfEV60pDvOrzNjilrvomlCA5rHrPblXM8dtL5a+3I+trwAvV0ErK/DCCUWMnhHY86xTdTEpivcrsS+qkxvIO/6W8hJ8tGcXnykrqrqlnRw0YFsN6HrcBJx1FhFpvhcYnMV6gHrvO6lNBcZNCURcwNPeb0L/Mr8rBwJVDaVBJ/eKP+ 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)(376002)(346002)(396003)(136003)(46966006)(36840700001)(40470700004)(336012)(186003)(83380400001)(2906002)(47076005)(33656002)(40460700003)(478600001)(316002)(110136005)(5660300002)(53546011)(30864003)(8936002)(52536014)(9686003)(7696005)(70586007)(6506007)(26005)(8676002)(41300700001)(82310400005)(36860700001)(40480700001)(82740400003)(81166007)(86362001)(70206006)(356005)(55016003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2022 15:21:33.2421 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d9887968-cb24-45c4-78a6-08da7bad2c88 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: AM5EUR03FT062.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR2PR08MB4764 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, 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 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: Thu, 11 Aug 2022 15:21:40 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5kcmUgVmllaXJhIChs aXN0cykgPGFuZHJlLnNpbW9lc2RpYXN2aWVpcmFAYXJtLmNvbT4NCj4gU2VudDogVGh1cnNkYXks IEF1Z3VzdCAxMSwgMjAyMiA0OjExIFBNDQo+IFRvOiBnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZzsg S3lyeWxvIFRrYWNob3YgPEt5cnlsby5Ua2FjaG92QGFybS5jb20+Ow0KPiBSaWNoYXJkIFNhbmRp Zm9yZCA8UmljaGFyZC5TYW5kaWZvcmRAYXJtLmNvbT47IFJpY2hhcmQgQmllbmVyDQo+IDxyZ3Vl bnRoZXJAc3VzZS5kZT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSF1bQUFyY2g2NF0gSW1wbGVtZW50 IEFDTEUgRGF0YSBJbnRyaW5zaWNzDQo+IA0KPiBPSyB0byBiYWNrcG9ydCB0aGlzIHRvIGdjYy0x Mj8gQXBwbGllcyBjbGVhbmx5IGFuZCBkaWQgYSBib290c3RyYXQgYW5kDQo+IHJlZ3Jlc3Npb24g dGVzdCBvbiBhYXJjaDY0LWxpbnV4LWdudQ0KDQpPayBhcyBsb25nIGFzIGl0J3MgYmVmb3JlIHRo ZSBicmFuY2ggZnJlZXplLg0KVGhhbmtzLA0KS3lyaWxsDQoNCj4gDQo+IFJlZ2FyZHMsDQo+IEFu ZHJlDQo+IA0KPiBPbiAwMS8wNy8yMDIyIDEyOjI2LCBSaWNoYXJkIFNhbmRpZm9yZCB3cm90ZToN Cj4gPiAiQW5kcmUgVmllaXJhIChsaXN0cykiIDxhbmRyZS5zaW1vZXNkaWFzdmllaXJhQGFybS5j b20+IHdyaXRlczoNCj4gPj4gT24gMjkvMDYvMjAyMiAwODoxOCwgUmljaGFyZCBTYW5kaWZvcmQg d3JvdGU6DQo+ID4+Pj4gKyAgICAgIGJyZWFrOw0KPiA+Pj4+ICsgICAgY2FzZSBBQVJDSDY0X1JC SVQ6DQo+ID4+Pj4gKyAgICBjYXNlIEFBUkNINjRfUkJJVEw6DQo+ID4+Pj4gKyAgICBjYXNlIEFB UkNINjRfUkJJVExMOg0KPiA+Pj4+ICsgICAgICBpZiAobW9kZSA9PSBTSW1vZGUpDQo+ID4+Pj4g KwlpY29kZSA9IENPREVfRk9SX2FhcmNoNjRfcmJpdHNpOw0KPiA+Pj4+ICsgICAgICBlbHNlDQo+ ID4+Pj4gKwlpY29kZSA9IENPREVfRk9SX2FhcmNoNjRfcmJpdGRpOw0KPiA+Pj4+ICsgICAgICBi cmVhazsNCj4gPj4+PiArICAgIGRlZmF1bHQ6DQo+ID4+Pj4gKyAgICAgIGdjY191bnJlYWNoYWJs ZSAoKTsNCj4gPj4+PiArICAgIH0NCj4gPj4+PiArICBleHBhbmRfaW5zbiAoaWNvZGUsIDIsIG9w cyk7DQo+ID4+Pj4gKyAgcmV0dXJuIHRhcmdldDsNCj4gPj4+IFRoaXMgbmVlZHMgdG8gcmV0dXJu IG9wc1swXS52YWx1ZSBpbnN0ZWFkLCBzaW5jZSAidGFyZ2V0IiBqdXN0IHN1Z2dlc3RzDQo+ID4+ PiBhIHBvc3NpYmxlIGxvY2F0aW9uLg0KPiA+Pj4NCj4gPj4+IENvdWxkIHlvdSBhZGQgdGVzdHMg Zm9yIGEgbWVtb3J5IHNvdXJjZSBhbmQgbWVtb3J5IGRlc3RpbmF0aW9uLCBlLmcuOg0KPiA+Pj4N Cj4gPj4+IHZvaWQgdGVzdF9jbHpfbWVtICh1aW50MzJfdCAqYSkNCj4gPj4+IHsNCj4gPj4+ICAg ICAqYSA9IF9fY2x6ICgqYSk7DQo+ID4+PiB9DQo+ID4+Pg0KPiA+Pj4gV2l0aG91dCB0ZXN0cyBs aWtlIHRoYXQsIHRoZXNlIGNvbW1lbnRzIHByb2JhYmx5IGp1c3Qgc291bmQgbGlrZSBhIHBhcGVy DQo+ID4+PiBleGVyY2lzZSwgYnV0IHRoZXkgc2hvdWxkIG1ha2UgYSBkaWZmZXJlbmNlIGZvciBt ZW1vcnkgc291cmNlcw0KPiAocHJldmlvdXMNCj4gPj4+IHJldmlldykgYW5kIG1lbW9yeSBkZXN0 aW5hdGlvbnMgKHRoaXMgcm91bmQpLg0KPiA+PiBJIGhhZCBsb2NhbGx5IHRlc3RlZCBpdCAod2l0 aCByZXYgdGhvdWdoIGJlY2F1c2UgY2x6IGRvZXNuJ3QgdXNlIHRoYXQNCj4gPj4gY29kZSkgYW5k IHN0cmFuZ2VseSBpdCBkb2VzIHNlZW0gdG8gd29yayBmb3IgdGhlIG1lbW9yeSBkZXN0aW5hdGlv bnMsDQo+ID4+IGJ1dCB0aGF0J3MganVzdCBhIHNpbXBsZSB0ZXN0Lg0KPiA+PiBJdCBjb3VsZCB2 ZXJ5IHdlbGwgZ28gd3Jvbmcgd2l0aCBzb21lIG1vcmUgY29tcGxleCBjb2RlZ2VuLCBzbyBJJ2xs IGp1c3QNCj4gPj4gdGFrZSB5b3VyIHdvcmQgYW5kIHVzZSBvcHNbMF0udmFsdWUuDQo+ID4+DQo+ ID4+IEFuZCB5ZWFoIEkgZGlkbid0IGFkZCB0aGUgdGVzdHMgYXQgdGhlIHRpbWUsIGRvbid0IHJl YWxseSBrbm93IHdoeSwgSSdsbA0KPiA+PiBjaHVjayBpdCBkb3duIHRvIGxhemluZXNzIDpQDQo+ ID4+Pj4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hcm1fYWNsZS5oDQo+IGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FybV9hY2xlLmgNCj4gPj4+PiBpbmRleA0KPiA5Nzc1YTQ4YzY1ODI1 YjQyNGQzZWI0NDIzODRmNWFiODdiNzM0ZmQ3Li5hMDQ0YmM3NDU1M2ZjZjJhNDliNzEyOTANCj4g MDgzZjNmMDcyZmQ1YTJjZSAxMDA2NDQNCj4gPj4+PiAtLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQv YXJtX2FjbGUuaA0KPiA+Pj4+ICsrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hcm1fYWNsZS5oDQo+ ID4+Pj4gQEAgLTI4LDYgKzI4LDcgQEANCj4gPj4+PiAgICAjZGVmaW5lIF9HQ0NfQVJNX0FDTEVf SA0KPiA+Pj4+DQo+ID4+Pj4gICAgI2luY2x1ZGUgPHN0ZGludC5oPg0KPiA+Pj4+ICsjaW5jbHVk ZSA8c3RkZGVmLmg+DQo+ID4+Pj4NCj4gPj4+PiAgICAjcHJhZ21hIEdDQyBhYXJjaDY0ICJhcm1f YWNsZS5oIg0KPiA+Pj4+DQo+ID4+Pj4gQEAgLTM1LDYgKzM2LDU4IEBADQo+ID4+Pj4gICAgZXh0 ZXJuICJDIiB7DQo+ID4+Pj4gICAgI2VuZGlmDQo+ID4+Pj4NCj4gPj4+PiArI2RlZmluZSBfR0ND X0FSTV9BQ0xFX1JPUl9GTihOQU1FLCBUWVBFKQ0KPiAJCSAgXA0KPiA+Pj4+ICtfX2V4dGVuc2lv bl9fIGV4dGVybiBfX2lubGluZSBUWVBFDQo+IAkgIFwNCj4gPj4+PiArX19hdHRyaWJ1dGVfXyAo KF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KPiAJ ICBcDQo+ID4+Pj4gK05BTUUgKFRZUEUgX192YWx1ZSwgdWludDMyX3QgX19yb3RhdGUpDQo+IAkg IFwNCj4gPj4+PiArewkJCQkJCQkJCSAgXA0KPiA+Pj4+ICsgIHNpemVfdCBfX3NpemUgPSBzaXpl b2YgKFRZUEUpICogX19DSEFSX0JJVF9fOw0KPiAJICBcDQo+ID4+Pj4gKyAgX19yb3RhdGUgPSBf X3JvdGF0ZSAlIF9fc2l6ZTsNCj4gCSAgXA0KPiA+Pj4+ICsgIHJldHVybiBfX3ZhbHVlID4+IF9f cm90YXRlIHwgX192YWx1ZSA8PCAoKF9fc2l6ZSAtIF9fcm90YXRlKSAlIF9fc2l6ZSk7DQo+IFwN Cj4gPj4+PiArfQ0KPiA+Pj4+ICsNCj4gPj4+PiArX0dDQ19BUk1fQUNMRV9ST1JfRk4gKF9fcm9y LCB1aW50MzJfdCkNCj4gPj4+PiArX0dDQ19BUk1fQUNMRV9ST1JfRk4gKF9fcm9ybCwgdW5zaWdu ZWQgbG9uZykNCj4gPj4+PiArX0dDQ19BUk1fQUNMRV9ST1JfRk4gKF9fcm9ybGwsIHVpbnQ2NF90 KQ0KPiA+Pj4+ICsNCj4gPj4+PiArI3VuZGVmIF9HQ0NfQVJNX0FDTEVfUk9SX0ZODQo+ID4+Pj4g Kw0KPiA+Pj4+ICsjZGVmaW5lIF9HQ0NfQVJNX0FDTEVfREFUQV9GTihOQU1FLCBCVUlMVElOLCBJ VFlQRSwgUlRZUEUpDQo+IAkgICAgXA0KPiA+Pj4+ICtfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lu bGluZSBSVFlQRQkJCQkgICAgXA0KPiA+Pj4+ICtfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5s aW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpIFwNCj4gPj4+PiArX18jI05B TUUgKElUWVBFIF9fdmFsdWUpCQkJCQkgICAgXA0KPiA+Pj4+ICt7CQkJCQkJCQkgICAgXA0KPiA+ Pj4+ICsgIHJldHVybiBfX2J1aWx0aW5fIyNCVUlMVElOIChfX3ZhbHVlKTsJCQkJICAgIFwNCj4g Pj4+PiArfQ0KPiA+Pj4+ICsNCj4gPj4+PiArX0dDQ19BUk1fQUNMRV9EQVRBX0ZOIChjbHosIGNs eiwgdWludDMyX3QsIHVuc2lnbmVkIGludCkNCj4gPj4+PiArX0dDQ19BUk1fQUNMRV9EQVRBX0ZO IChjbHpsLCBjbHpsLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBpbnQpDQo+ID4+Pj4gK19HQ0Nf QVJNX0FDTEVfREFUQV9GTiAoY2x6bGwsIGNsemxsLCB1aW50NjRfdCwgdW5zaWduZWQgaW50KQ0K PiA+Pj4+ICtfR0NDX0FSTV9BQ0xFX0RBVEFfRk4gKGNscywgY2xyc2IsIHVpbnQzMl90LCB1bnNp Z25lZCBpbnQpDQo+ID4+Pj4gK19HQ0NfQVJNX0FDTEVfREFUQV9GTiAoY2xzbCwgY2xyc2JsLCB1 bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBpbnQpDQo+ID4+Pj4gK19HQ0NfQVJNX0FDTEVfREFUQV9G TiAoY2xzbGwsIGNscnNibGwsIHVpbnQ2NF90LCB1bnNpZ25lZCBpbnQpDQo+ID4+Pj4gK19HQ0Nf QVJNX0FDTEVfREFUQV9GTiAocmV2MTYsIGFhcmNoNjRfcmV2MTYsIHVpbnQzMl90LA0KPiB1aW50 MzJfdCkNCj4gPj4+PiArX0dDQ19BUk1fQUNMRV9EQVRBX0ZOIChyZXYxNmwsIGFhcmNoNjRfcmV2 MTZsLCB1bnNpZ25lZCBsb25nLA0KPiB1bnNpZ25lZCBsb25nKQ0KPiA+Pj4+ICtfR0NDX0FSTV9B Q0xFX0RBVEFfRk4gKHJldjE2bGwsIGFhcmNoNjRfcmV2MTZsbCwgdWludDY0X3QsDQo+IHVpbnQ2 NF90KQ0KPiA+Pj4+ICtfR0NDX0FSTV9BQ0xFX0RBVEFfRk4gKHJiaXQsIGFhcmNoNjRfcmJpdCwg dWludDMyX3QsIHVpbnQzMl90KQ0KPiA+Pj4+ICtfR0NDX0FSTV9BQ0xFX0RBVEFfRk4gKHJiaXRs LCBhYXJjaDY0X3JiaXRsLCB1bnNpZ25lZCBsb25nLA0KPiB1bnNpZ25lZCBsb25nKQ0KPiA+Pj4+ ICtfR0NDX0FSTV9BQ0xFX0RBVEFfRk4gKHJiaXRsbCwgYWFyY2g2NF9yYml0bGwsIHVpbnQ2NF90 LCB1aW50NjRfdCkNCj4gPj4+PiArX0dDQ19BUk1fQUNMRV9EQVRBX0ZOIChyZXZzaCwgYnN3YXAx NiwgaW50MTZfdCwgdWludDE2X3QpDQo+ID4+PiBUaGUgcmV0dXJuIHR5cGUgc2hvdWxkIGJlIGlu dDE2X3QuDQo+ID4+IE5pY2UgY2F0Y2ghDQo+ID4+PiBUaGUgY2x6IGFuZCBjbHMgdGVzdHMgaGF2 ZSB0aGUgb2xkIHJldHVybiB0eXBlcyAoc2FtZSBhcyB0aGUgYXJndW1lbnQNCj4gPj4+IHR5cGVz KSwgYnV0IEkgZ3Vlc3MgdGhhdCdzIGEgZ29vZCB0aGluZywgc2luY2UgaXQgc2hvd3MgdGhhdCB3 ZSBhdm9pZA0KPiA+Pj4gdGhlIHJlZHVuZGFudCB6ZXJvLWV4dGVuZCBpbiBjbHpsbCBhbmQgY2xz bGwuDQo+ID4+IFllYWggSSBub3RpY2VkIHRoYXQgdG9vIHdoZW4gSSB3YXMgYWRkaW5nIHRoZSBt ZW0gdGVzdHMsIGJ1dCBJIGRpZA0KPiA+PiBjaGFuZ2UgdGhlbSB0aG91Z2ggYmVjYXVzZSBhdCB0 aGUgdGltZSBpdCBqdXN0IGZlbHQgbGlrZSBhbiBvdmVyc2lnaHQsDQo+ID4+IHRob3VnaCBJIHRv byB3YXMgcGxlYXNhbnRseSBzdXJwcmlzZWQgR0NDIHdhcyBtYW5hZ2luZyB0byBhdm9pZCB0aGUN Cj4gPj4gemVyby1leHRlbmRpbmcgOikNCj4gPj4gSSB0aGVuIHNhdyB5b3VyIGNvbW1lbnQgYW5k IG1hZGUgbWUgd29uZGVyIHdoZXRoZXIgSSBzaG91bGQga2VlcA0KPiB0aGUNCj4gPj4gd3Jvbmcg cmV0dXJuIHR5cGVzIGluLi4uIEkgaGF2ZW4ndCBidXQgaGFwcHkgdG8gY2hhbmdlIHRoZW0gYmFj ayBpZiB5b3UNCj4gPj4gdGhpbmsgaXQncyBhIG5pY2UgJ3Rlc3QnIHRvIGhhdmUuDQo+ID4gSSB0 aG91Z2h0IGl0IHdhcyBPSy91c2VmdWwgYXMgaXQgd2FzLCBidXQgSSBkb24ndCBtaW5kIGVpdGhl ciB3YXkuDQo+ID4NCj4gPiBCVFcsIHdoaWxlIHRyeWluZyBpdCBvdXQgbG9jYWxseSwgSSBub3Rp Y2VkOg0KPiA+DQo+ID4gICAgYWFyY2g2NF9pbml0X2RhdGFfaW50cmluc2ljcw0KPiA+DQo+ID4g d2FzIGNhbGxlZCBmcm9tIHRoZSB3cm9uZyBwbGFjZS4gIFNpbmNlIGl0J3MgYWRkaW5nIG5vcm1h bCBfX2J1aWx0aW4NCj4gPiBmdW5jdGlvbnMsIGl0IHNob3VsZCBiZSBjYWxsZWQgZnJvbSBhYXJj aDY0X2dlbmVyYWxfaW5pdF9idWlsdGlucw0KPiA+IGluc3RlYWQgb2YgaGFuZGxlX2FybV9hY2xl X2guDQo+ID4NCj4gPiBoYW5kbGVfYXJtX2FjbGVfaCBpcyBpbnN0ZWFkIGZvciBjYXNlcyB3aGVy ZSB3ZSB3YW50IHRvIHNpbXVsYXRlDQo+ID4gQy9DKysgZGVmaW5pdGlvbnMgb2YgdGhlIEFDTEUg aW50cmluc2ljcyB0aGVtc2VsdmVzIChpLmUuIHNvIHRoYXQNCj4gPiB0aGUgaW50cmluc2ljcyB0 aGVtc2VsdmVzIGFyZSBidWlsdC1pbiBmdW5jdGlvbnMsIHJhdGhlciB0aGFuDQo+ID4gaW5saW5l IHdyYXBwZXJzIGFyb3VuZCBidWlsdC1pbiBmdW5jdGlvbnMpLg0KPiA+DQo+ID4gT0sgd2l0aCB0 aGF0IGNoYW5nZSwgdGhhbmtzLg0KPiA+DQo+ID4gVGhhbmtzLA0KPiA+IFJpY2hhcmQNCj4gPg0K PiA+PiBSZWdhcmRzLA0KPiA+PiBBbmRyZQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvZ2NjL2Nv bmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuY2MNCj4gYi9nY2MvY29uZmlnL2FhcmNoNjQv YWFyY2g2NC1idWlsdGlucy5jYw0KPiA+PiBpbmRleA0KPiBlMGE3NDFhYzY2MzE4ODcxM2UyMWY0 NTdhZmZhNTcyMTdkMDc0NzgzLi5iYjVkOTdjOGZjNjQwMjYzNTI3MGRmODUNCj4gMWE5NDljYWJl ZWNhYTVlOCAxMDA2NDQNCj4gPj4gLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVp bHRpbnMuY2MNCj4gPj4gKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMu Y2MNCj4gPj4gQEAgLTYxMyw2ICs2MTMsMTIgQEAgZW51bSBhYXJjaDY0X2J1aWx0aW5zDQo+ID4+ ICAgICBBQVJDSDY0X0xTNjRfQlVJTFRJTl9TVDY0QiwNCj4gPj4gICAgIEFBUkNINjRfTFM2NF9C VUlMVElOX1NUNjRCViwNCj4gPj4gICAgIEFBUkNINjRfTFM2NF9CVUlMVElOX1NUNjRCVjAsDQo+ ID4+ICsgIEFBUkNINjRfUkVWMTYsDQo+ID4+ICsgIEFBUkNINjRfUkVWMTZMLA0KPiA+PiArICBB QVJDSDY0X1JFVjE2TEwsDQo+ID4+ICsgIEFBUkNINjRfUkJJVCwNCj4gPj4gKyAgQUFSQ0g2NF9S QklUTCwNCj4gPj4gKyAgQUFSQ0g2NF9SQklUTEwsDQo+ID4+ICAgICBBQVJDSDY0X0JVSUxUSU5f TUFYDQo+ID4+ICAgfTsNCj4gPj4NCj4gPj4gQEAgLTE2NjQsMTAgKzE2NzAsNDEgQEAgYWFyY2g2 NF9pbml0X2xzNjRfYnVpbHRpbnMgKHZvaWQpDQo+ID4+ICAgICAgICAgPSBhYXJjaDY0X2dlbmVy YWxfYWRkX2J1aWx0aW4gKGRhdGFbaV0ubmFtZSwgZGF0YVtpXS50eXBlLA0KPiBkYXRhW2ldLmNv ZGUpOw0KPiA+PiAgIH0NCj4gPj4NCj4gPj4gK3N0YXRpYyB2b2lkDQo+ID4+ICthYXJjaDY0X2lu aXRfZGF0YV9pbnRyaW5zaWNzICh2b2lkKQ0KPiA+PiArew0KPiA+PiArICB0cmVlIHVpbnQzMl9m bnR5cGUgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKHVpbnQzMl90eXBlX25vZGUsDQo+ID4+ ICsJCQkJCQkgdWludDMyX3R5cGVfbm9kZSwNCj4gTlVMTF9UUkVFKTsNCj4gPj4gKyAgdHJlZSB1 bG9uZ19mbnR5cGUgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QNCj4gKGxvbmdfdW5zaWduZWRf dHlwZV9ub2RlLA0KPiA+PiArCQkJCQkJbG9uZ191bnNpZ25lZF90eXBlX25vZGUsDQo+ID4+ICsJ CQkJCQlOVUxMX1RSRUUpOw0KPiA+PiArICB0cmVlIHVpbnQ2NF9mbnR5cGUgPSBidWlsZF9mdW5j dGlvbl90eXBlX2xpc3QgKHVpbnQ2NF90eXBlX25vZGUsDQo+ID4+ICsJCQkJCQkgdWludDY0X3R5 cGVfbm9kZSwNCj4gTlVMTF9UUkVFKTsNCj4gPj4gKyAgYWFyY2g2NF9idWlsdGluX2RlY2xzW0FB UkNINjRfUkVWMTZdDQo+ID4+ICsgICAgPSBhYXJjaDY0X2dlbmVyYWxfYWRkX2J1aWx0aW4gKCJf X2J1aWx0aW5fYWFyY2g2NF9yZXYxNiIsDQo+IHVpbnQzMl9mbnR5cGUsDQo+ID4+ICsJCQkJICAg QUFSQ0g2NF9SRVYxNik7DQo+ID4+ICsgIGFhcmNoNjRfYnVpbHRpbl9kZWNsc1tBQVJDSDY0X1JF VjE2TF0NCj4gPj4gKyAgICA9IGFhcmNoNjRfZ2VuZXJhbF9hZGRfYnVpbHRpbiAoIl9fYnVpbHRp bl9hYXJjaDY0X3JldjE2bCIsDQo+IHVsb25nX2ZudHlwZSwNCj4gPj4gKwkJCQkgICBBQVJDSDY0 X1JFVjE2TCk7DQo+ID4+ICsgIGFhcmNoNjRfYnVpbHRpbl9kZWNsc1tBQVJDSDY0X1JFVjE2TExd DQo+ID4+ICsgICAgPSBhYXJjaDY0X2dlbmVyYWxfYWRkX2J1aWx0aW4gKCJfX2J1aWx0aW5fYWFy Y2g2NF9yZXYxNmxsIiwNCj4gdWludDY0X2ZudHlwZSwNCj4gPj4gKwkJCQkgICBBQVJDSDY0X1JF VjE2TEwpOw0KPiA+PiArICBhYXJjaDY0X2J1aWx0aW5fZGVjbHNbQUFSQ0g2NF9SQklUXQ0KPiA+ PiArICAgID0gYWFyY2g2NF9nZW5lcmFsX2FkZF9idWlsdGluICgiX19idWlsdGluX2FhcmNoNjRf cmJpdCIsDQo+IHVpbnQzMl9mbnR5cGUsDQo+ID4+ICsJCQkJICAgQUFSQ0g2NF9SQklUKTsNCj4g Pj4gKyAgYWFyY2g2NF9idWlsdGluX2RlY2xzW0FBUkNINjRfUkJJVExdDQo+ID4+ICsgICAgPSBh YXJjaDY0X2dlbmVyYWxfYWRkX2J1aWx0aW4gKCJfX2J1aWx0aW5fYWFyY2g2NF9yYml0bCIsDQo+ IHVsb25nX2ZudHlwZSwNCj4gPj4gKwkJCQkgICBBQVJDSDY0X1JCSVRMKTsNCj4gPj4gKyAgYWFy Y2g2NF9idWlsdGluX2RlY2xzW0FBUkNINjRfUkJJVExMXQ0KPiA+PiArICAgID0gYWFyY2g2NF9n ZW5lcmFsX2FkZF9idWlsdGluICgiX19idWlsdGluX2FhcmNoNjRfcmJpdGxsIiwNCj4gdWludDY0 X2ZudHlwZSwNCj4gPj4gKwkJCQkgICBBQVJDSDY0X1JCSVRMTCk7DQo+ID4+ICt9DQo+ID4+ICsN Cj4gPj4gICAvKiBJbXBsZW1lbnQgI3ByYWdtYSBHQ0MgYWFyY2g2NCAiYXJtX2FjbGUuaCIuICAq Lw0KPiA+PiAgIHZvaWQNCj4gPj4gICBoYW5kbGVfYXJtX2FjbGVfaCAodm9pZCkNCj4gPj4gICB7 DQo+ID4+ICsgIGFhcmNoNjRfaW5pdF9kYXRhX2ludHJpbnNpY3MgKCk7DQo+ID4+ICAgICBpZiAo VEFSR0VUX0xTNjQpDQo+ID4+ICAgICAgIGFhcmNoNjRfaW5pdF9sczY0X2J1aWx0aW5zICgpOw0K PiA+PiAgIH0NCj4gPj4gQEAgLTIzOTQsNiArMjQzMSwzNyBAQCBhYXJjaDY0X2V4cGFuZF9idWls dGluX21lbXRhZyAoaW50IGZjb2RlLA0KPiB0cmVlIGV4cCwgcnR4IHRhcmdldCkNCj4gPj4gICAg IHJldHVybiB0YXJnZXQ7DQo+ID4+ICAgfQ0KPiA+Pg0KPiA+PiArLyogRnVuY3Rpb24gdG8gZXhw YW5kIGFuIGV4cHJlc3Npb24gRVhQIHdoaWNoIGNhbGxzIG9uZSBvZiB0aGUgQUNMRQ0KPiBEYXRh DQo+ID4+ICsgICBJbnRyaW5zaWMgYnVpbHRpbnMgRkNPREUgd2l0aCB0aGUgcmVzdWx0IGdvaW5n IHRvIFRBUkdFVC4gICovDQo+ID4+ICtzdGF0aWMgcnR4DQo+ID4+ICthYXJjaDY0X2V4cGFuZF9i dWlsdGluX2RhdGFfaW50cmluc2ljICh1bnNpZ25lZCBpbnQgZmNvZGUsIHRyZWUgZXhwLCBydHgN Cj4gdGFyZ2V0KQ0KPiA+PiArew0KPiA+PiArICBleHBhbmRfb3BlcmFuZCBvcHNbMl07DQo+ID4+ ICsgIG1hY2hpbmVfbW9kZSBtb2RlID0gR0VUX01PREUgKHRhcmdldCk7DQo+ID4+ICsgIGNyZWF0 ZV9vdXRwdXRfb3BlcmFuZCAoJm9wc1swXSwgdGFyZ2V0LCBtb2RlKTsNCj4gPj4gKyAgY3JlYXRl X2lucHV0X29wZXJhbmQgKCZvcHNbMV0sIGV4cGFuZF9ub3JtYWwgKENBTExfRVhQUl9BUkcNCj4g KGV4cCwgMCkpLCBtb2RlKTsNCj4gPj4gKyAgZW51bSBpbnNuX2NvZGUgaWNvZGU7DQo+ID4+ICsN Cj4gPj4gKyAgc3dpdGNoIChmY29kZSkNCj4gPj4gKyAgICB7DQo+ID4+ICsgICAgY2FzZSBBQVJD SDY0X1JFVjE2Og0KPiA+PiArICAgIGNhc2UgQUFSQ0g2NF9SRVYxNkw6DQo+ID4+ICsgICAgY2Fz ZSBBQVJDSDY0X1JFVjE2TEw6DQo+ID4+ICsgICAgICBpY29kZSA9IGNvZGVfZm9yX2FhcmNoNjRf cmV2MTYgKG1vZGUpOw0KPiA+PiArICAgICAgYnJlYWs7DQo+ID4+ICsgICAgY2FzZSBBQVJDSDY0 X1JCSVQ6DQo+ID4+ICsgICAgY2FzZSBBQVJDSDY0X1JCSVRMOg0KPiA+PiArICAgIGNhc2UgQUFS Q0g2NF9SQklUTEw6DQo+ID4+ICsgICAgICBpY29kZSA9IGNvZGVfZm9yX2FhcmNoNjRfcmJpdCAo bW9kZSk7DQo+ID4+ICsgICAgICBicmVhazsNCj4gPj4gKyAgICBkZWZhdWx0Og0KPiA+PiArICAg ICAgZ2NjX3VucmVhY2hhYmxlICgpOw0KPiA+PiArICAgIH0NCj4gPj4gKw0KPiA+PiArICBleHBh bmRfaW5zbiAoaWNvZGUsIDIsIG9wcyk7DQo+ID4+ICsgIHJldHVybiBvcHNbMF0udmFsdWU7DQo+ ID4+ICt9DQo+ID4+ICsNCj4gPj4gICAvKiBFeHBhbmQgYW4gZXhwcmVzc2lvbiBFWFAgYXMgZnBz ciBvciBmcGNyIHNldHRlciAoZGVwZW5kaW5nIG9uDQo+ID4+ICAgICAgVU5TUEVDKSB1c2luZyBN T0RFLiAgKi8NCj4gPj4gICBzdGF0aWMgdm9pZA0KPiA+PiBAQCAtMjU1MSw2ICsyNjE5LDkgQEAg YWFyY2g2NF9nZW5lcmFsX2V4cGFuZF9idWlsdGluICh1bnNpZ25lZCBpbnQNCj4gZmNvZGUsIHRy ZWUgZXhwLCBydHggdGFyZ2V0LA0KPiA+PiAgICAgaWYgKGZjb2RlID49IEFBUkNINjRfTUVNVEFH X0JVSUxUSU5fU1RBUlQNCj4gPj4gICAgICAgICAmJiBmY29kZSA8PSBBQVJDSDY0X01FTVRBR19C VUlMVElOX0VORCkNCj4gPj4gICAgICAgcmV0dXJuIGFhcmNoNjRfZXhwYW5kX2J1aWx0aW5fbWVt dGFnIChmY29kZSwgZXhwLCB0YXJnZXQpOw0KPiA+PiArICBpZiAoZmNvZGUgPj0gQUFSQ0g2NF9S RVYxNg0KPiA+PiArICAgICAgJiYgZmNvZGUgPD0gQUFSQ0g2NF9SQklUTEwpDQo+ID4+ICsgICAg cmV0dXJuIGFhcmNoNjRfZXhwYW5kX2J1aWx0aW5fZGF0YV9pbnRyaW5zaWMgKGZjb2RlLCBleHAs IHRhcmdldCk7DQo+ID4+DQo+ID4+ICAgICBnY2NfdW5yZWFjaGFibGUgKCk7DQo+ID4+ICAgfQ0K PiA+PiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQNCj4gYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZA0KPiA+PiBpbmRleA0KPiBhY2VjOGMxMTQ2NzY1YzBm YWM3M2MxNTM1MTg1MzMyNGI4ZjAzMjA5Li5lZjBhZWQyNWM2YjI2ZWZmNjFmOWY2MDMwZA0KPiBj NTkyMWE1MzRlM2QxOSAxMDA2NDQNCj4gPj4gLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNo NjQubWQNCj4gPj4gKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQNCj4gPj4gQEAg LTQ5NTAsNyArNDk1MCw3IEBAIChkZWZpbmVfZXhwYW5kICJmZnM8bW9kZT4yIg0KPiA+PiAgICAg ICBydHggY2NyZWcgPSBhYXJjaDY0X2dlbl9jb21wYXJlX3JlZyAoRVEsIG9wZXJhbmRzWzFdLCBj b25zdDBfcnR4KTsNCj4gPj4gICAgICAgcnR4IHggPSBnZW5fcnR4X05FIChWT0lEbW9kZSwgY2Ny ZWcsIGNvbnN0MF9ydHgpOw0KPiA+Pg0KPiA+PiAtICAgIGVtaXRfaW5zbiAoZ2VuX3JiaXQ8bW9k ZT4yIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pKTsNCj4gPj4gKyAgICBlbWl0X2luc24gKGdl bl9hYXJjaDY0X3JiaXQgKDxNT0RFPm1vZGUsIG9wZXJhbmRzWzBdLA0KPiBvcGVyYW5kc1sxXSkp Ow0KPiA+PiAgICAgICBlbWl0X2luc24gKGdlbl9jbHo8bW9kZT4yIChvcGVyYW5kc1swXSwgb3Bl cmFuZHNbMF0pKTsNCj4gPj4gICAgICAgZW1pdF9pbnNuIChnZW5fY3NpbmMzPG1vZGU+X2luc24g KG9wZXJhbmRzWzBdLCB4LCBvcGVyYW5kc1swXSwNCj4gY29uc3QwX3J0eCkpOw0KPiA+PiAgICAg ICBET05FOw0KPiA+PiBAQCAtNDk5Niw3ICs0OTk2LDcgQEAgKGRlZmluZV9pbnNuICJjbHJzYjxt b2RlPjIiDQo+ID4+ICAgICBbKHNldF9hdHRyICJ0eXBlIiAiY2x6IildDQo+ID4+ICAgKQ0KPiA+ Pg0KPiA+PiAtKGRlZmluZV9pbnNuICJyYml0PG1vZGU+MiINCj4gPj4gKyhkZWZpbmVfaW5zbiAi QGFhcmNoNjRfcmJpdDxtb2RlPiINCj4gPj4gICAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkdQSSAw ICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQ0KPiA+PiAgIAkodW5zcGVjOkdQSSBbKG1hdGNoX29w ZXJhbmQ6R1BJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJyIildDQo+IFVOU1BFQ19SQklUKSldDQo+ ID4+ICAgICAiIg0KPiA+PiBAQCAtNTAxNyw3ICs1MDE3LDcgQEAgKGRlZmluZV9pbnNuX2FuZF9z cGxpdCAiY3R6PG1vZGU+MiINCj4gPj4gICAgICJyZWxvYWRfY29tcGxldGVkIg0KPiA+PiAgICAg Wyhjb25zdF9pbnQgMCldDQo+ID4+ICAgICAiDQo+ID4+IC0gIGVtaXRfaW5zbiAoZ2VuX3JiaXQ8 bW9kZT4yIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pKTsNCj4gPj4gKyAgZW1pdF9pbnNuIChn ZW5fYWFyY2g2NF9yYml0ICg8TU9ERT5tb2RlLCBvcGVyYW5kc1swXSwNCj4gb3BlcmFuZHNbMV0p KTsNCj4gPj4gICAgIGVtaXRfaW5zbiAoZ2VuX2Nsejxtb2RlPjIgKG9wZXJhbmRzWzBdLCBvcGVy YW5kc1swXSkpOw0KPiA+PiAgICAgRE9ORTsNCj4gPj4gICAiKQ0KPiA+PiBAQCAtNjAyMiw2ICs2 MDIyLDEzIEBAIChkZWZpbmVfaW5zbiAiYnN3YXBoaTIiDQo+ID4+ICAgICBbKHNldF9hdHRyICJ0 eXBlIiAicmV2IildDQo+ID4+ICAgKQ0KPiA+Pg0KPiA+PiArKGRlZmluZV9pbnNuICJAYWFyY2g2 NF9yZXYxNjxtb2RlPiINCj4gPj4gKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6R1BJIDAgInJlZ2lz dGVyX29wZXJhbmQiICI9ciIpDQo+ID4+ICsJKHVuc3BlYzpHUEkgWyhtYXRjaF9vcGVyYW5kOkdQ SSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpXQ0KPiBVTlNQRUNfUkVWKSldDQo+ID4+ICsgICIi DQo+ID4+ICsgICJyZXYxNlxcdCU8dz4wLCAlPHc+MSINCj4gPj4gKyAgWyhzZXRfYXR0ciAidHlw ZSIgInJldiIpXSkNCj4gPj4gKw0KPiA+PiAgIChkZWZpbmVfaW5zbiAiKmFhcmNoNjRfYmZ4aWw8 bW9kZT4iDQo+ID4+ICAgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpHUEkgMCAicmVnaXN0ZXJfb3Bl cmFuZCIgIj1yLHIiKQ0KPiA+PiAgICAgICAoaW9yOkdQSSAoYW5kOkdQSSAobWF0Y2hfb3BlcmFu ZDpHUEkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInIsMCIpDQo+ID4+IGRpZmYgLS1naXQgYS9nY2Mv Y29uZmlnL2FhcmNoNjQvYXJtX2FjbGUuaA0KPiBiL2djYy9jb25maWcvYWFyY2g2NC9hcm1fYWNs ZS5oDQo+ID4+IGluZGV4DQo+IDk3NzVhNDhjNjU4MjViNDI0ZDNlYjQ0MjM4NGY1YWI4N2I3MzRm ZDcuLmQyNmUyNjljYjg0M2ZlMzdiYTc4OWRiDQo+IDA5YzQwZDA2ZjUzNDM4Y2RhIDEwMDY0NA0K PiA+PiAtLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYXJtX2FjbGUuaA0KPiA+PiArKysgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYXJtX2FjbGUuaA0KPiA+PiBAQCAtMjgsNiArMjgsNyBAQA0KPiA+PiAg ICNkZWZpbmUgX0dDQ19BUk1fQUNMRV9IDQo+ID4+DQo+ID4+ICAgI2luY2x1ZGUgPHN0ZGludC5o Pg0KPiA+PiArI2luY2x1ZGUgPHN0ZGRlZi5oPg0KPiA+Pg0KPiA+PiAgICNwcmFnbWEgR0NDIGFh cmNoNjQgImFybV9hY2xlLmgiDQo+ID4+DQo+ID4+IEBAIC0zNSw2ICszNiw1OCBAQA0KPiA+PiAg IGV4dGVybiAiQyIgew0KPiA+PiAgICNlbmRpZg0KPiA+Pg0KPiA+PiArI2RlZmluZSBfR0NDX0FS TV9BQ0xFX1JPUl9GTihOQU1FLCBUWVBFKQ0KPiAJICBcDQo+ID4+ICtfX2V4dGVuc2lvbl9fIGV4 dGVybiBfX2lubGluZSBUWVBFDQo+IAkgIFwNCj4gPj4gK19fYXR0cmlidXRlX18gKChfX2Fsd2F5 c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkJICBcDQo+ID4+ICtO QU1FIChUWVBFIF9fdmFsdWUsIHVpbnQzMl90IF9fcm90YXRlKQ0KPiAJICBcDQo+ID4+ICt7CQkJ CQkJCQkJICBcDQo+ID4+ICsgIHNpemVfdCBfX3NpemUgPSBzaXplb2YgKFRZUEUpICogX19DSEFS X0JJVF9fOw0KPiAJICBcDQo+ID4+ICsgIF9fcm90YXRlID0gX19yb3RhdGUgJSBfX3NpemU7DQo+ IAkgIFwNCj4gPj4gKyAgcmV0dXJuIF9fdmFsdWUgPj4gX19yb3RhdGUgfCBfX3ZhbHVlIDw8ICgo X19zaXplIC0gX19yb3RhdGUpICUgX19zaXplKTsgXA0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtf R0NDX0FSTV9BQ0xFX1JPUl9GTiAoX19yb3IsIHVpbnQzMl90KQ0KPiA+PiArX0dDQ19BUk1fQUNM RV9ST1JfRk4gKF9fcm9ybCwgdW5zaWduZWQgbG9uZykNCj4gPj4gK19HQ0NfQVJNX0FDTEVfUk9S X0ZOIChfX3JvcmxsLCB1aW50NjRfdCkNCj4gPj4gKw0KPiA+PiArI3VuZGVmIF9HQ0NfQVJNX0FD TEVfUk9SX0ZODQo+ID4+ICsNCj4gPj4gKyNkZWZpbmUgX0dDQ19BUk1fQUNMRV9EQVRBX0ZOKE5B TUUsIEJVSUxUSU4sIElUWVBFLCBSVFlQRSkNCj4gCSAgICBcDQo+ID4+ICtfX2V4dGVuc2lvbl9f IGV4dGVybiBfX2lubGluZSBSVFlQRQkJCQkgICAgXA0KPiA+PiArX19hdHRyaWJ1dGVfXyAoKF9f YWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKSBcDQo+ID4+ ICtfXyMjTkFNRSAoSVRZUEUgX192YWx1ZSkJCQkJCSAgICBcDQo+ID4+ICt7CQkJCQkJCQkgICAg XA0KPiA+PiArICByZXR1cm4gX19idWlsdGluXyMjQlVJTFRJTiAoX192YWx1ZSk7CQkJCSAgICBc DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gK19HQ0NfQVJNX0FDTEVfREFUQV9GTiAoY2x6LCBjbHos IHVpbnQzMl90LCB1bnNpZ25lZCBpbnQpDQo+ID4+ICtfR0NDX0FSTV9BQ0xFX0RBVEFfRk4gKGNs emwsIGNsemwsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGludCkNCj4gPj4gK19HQ0NfQVJNX0FD TEVfREFUQV9GTiAoY2x6bGwsIGNsemxsLCB1aW50NjRfdCwgdW5zaWduZWQgaW50KQ0KPiA+PiAr X0dDQ19BUk1fQUNMRV9EQVRBX0ZOIChjbHMsIGNscnNiLCB1aW50MzJfdCwgdW5zaWduZWQgaW50 KQ0KPiA+PiArX0dDQ19BUk1fQUNMRV9EQVRBX0ZOIChjbHNsLCBjbHJzYmwsIHVuc2lnbmVkIGxv bmcsIHVuc2lnbmVkIGludCkNCj4gPj4gK19HQ0NfQVJNX0FDTEVfREFUQV9GTiAoY2xzbGwsIGNs cnNibGwsIHVpbnQ2NF90LCB1bnNpZ25lZCBpbnQpDQo+ID4+ICtfR0NDX0FSTV9BQ0xFX0RBVEFf Rk4gKHJldjE2LCBhYXJjaDY0X3JldjE2LCB1aW50MzJfdCwgdWludDMyX3QpDQo+ID4+ICtfR0ND X0FSTV9BQ0xFX0RBVEFfRk4gKHJldjE2bCwgYWFyY2g2NF9yZXYxNmwsIHVuc2lnbmVkIGxvbmcs DQo+IHVuc2lnbmVkIGxvbmcpDQo+ID4+ICtfR0NDX0FSTV9BQ0xFX0RBVEFfRk4gKHJldjE2bGws IGFhcmNoNjRfcmV2MTZsbCwgdWludDY0X3QsIHVpbnQ2NF90KQ0KPiA+PiArX0dDQ19BUk1fQUNM RV9EQVRBX0ZOIChyYml0LCBhYXJjaDY0X3JiaXQsIHVpbnQzMl90LCB1aW50MzJfdCkNCj4gPj4g K19HQ0NfQVJNX0FDTEVfREFUQV9GTiAocmJpdGwsIGFhcmNoNjRfcmJpdGwsIHVuc2lnbmVkIGxv bmcsDQo+IHVuc2lnbmVkIGxvbmcpDQo+ID4+ICtfR0NDX0FSTV9BQ0xFX0RBVEFfRk4gKHJiaXRs bCwgYWFyY2g2NF9yYml0bGwsIHVpbnQ2NF90LCB1aW50NjRfdCkNCj4gPj4gK19HQ0NfQVJNX0FD TEVfREFUQV9GTiAocmV2c2gsIGJzd2FwMTYsIGludDE2X3QsIGludDE2X3QpDQo+ID4+ICtfR0ND X0FSTV9BQ0xFX0RBVEFfRk4gKHJldiwgYnN3YXAzMiwgdWludDMyX3QsIHVpbnQzMl90KQ0KPiA+ PiArX0dDQ19BUk1fQUNMRV9EQVRBX0ZOIChyZXZsbCwgYnN3YXA2NCwgdWludDY0X3QsIHVpbnQ2 NF90KQ0KPiA+PiArDQo+ID4+ICsjdW5kZWYgX0dDQ19BUk1fQUNMRV9EQVRBX0ZODQo+ID4+ICsN Cj4gPj4gK19fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcNCj4gPj4g K19fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkNCj4gPj4gK19fcmV2bCAodW5zaWduZWQgbG9uZyBfX3ZhbHVlKQ0KPiA+PiAr ew0KPiA+PiArICBpZiAoc2l6ZW9mICh1bnNpZ25lZCBsb25nKSA9PSA4KQ0KPiA+PiArICAgIHJl dHVybiBfX3JldmxsIChfX3ZhbHVlKTsNCj4gPj4gKyAgZWxzZQ0KPiA+PiArICAgIHJldHVybiBf X3JldiAoX192YWx1ZSk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gICAjcHJhZ21hIEdDQyBwdXNo X29wdGlvbnMNCj4gPj4gICAjcHJhZ21hIEdDQyB0YXJnZXQgKCJhcmNoPWFybXY4LjMtYSIpDQo+ ID4+ICAgX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgaW50MzJfdA0KPiA+PiBkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYWNsZS9kYXRhLWludHJpbnNp Y3MuYw0KPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2FjbGUvZGF0YS1pbnRy aW5zaWNzLmMNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA2N2VmMjBiYmRjODk5Mzg2NWI1 NDENCj4gYWE5OWRjY2FjNmIwM2U2YTANCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hY2xlL2RhdGEtaW50cmluc2ljcy5jDQo+ ID4+IEBAIC0wLDAgKzEsNDY4IEBADQo+ID4+ICsvKiBUZXN0IHRoZSBBQ0xFIGRhdGEgaW50cmlu c2ljcy4gICovDQo+ID4+ICsvKiB7IGRnLWRvIGFzc2VtYmxlIH0gKi8NCj4gPj4gKy8qIHsgZGct YWRkaXRpb25hbC1vcHRpb25zICItLXNhdmUtdGVtcHMgLU8xIiB9ICovDQo+ID4+ICsvKiB7IGRn LWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIiIgfSB9ICovDQo+ID4+ICsN Cj4gPj4gKyNpbmNsdWRlICJhcm1fYWNsZS5oIg0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiArKiog dGVzdF9jbHo6DQo+ID4+ICsqKgljbHoJdzAsIHcwDQo+ID4+ICsqKglyZXQNCj4gPj4gKyovDQo+ ID4+ICsNCj4gPj4gK3Vuc2lnbmVkIGludCB0ZXN0X2NseiAodWludDMyX3QgYSkNCj4gPj4gK3sN Cj4gPj4gKyAgcmV0dXJuIF9fY2x6IChhKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoNCj4g Pj4gKyoqIHRlc3RfY2x6bDoNCj4gPj4gKyoqCWNseglbd3hdMCwgW3d4XTANCj4gPj4gKyoqCXJl dA0KPiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdW5zaWduZWQgaW50IHRlc3RfY2x6bCAodW5zaWdu ZWQgbG9uZyBhKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gX19jbHpsIChhKTsNCj4gPj4gK30N Cj4gPj4gKw0KPiA+PiArLyoNCj4gPj4gKyoqIHRlc3RfY2x6bGw6DQo+ID4+ICsqKgljbHoJeDAs IHgwDQo+ID4+ICsqKglyZXQNCj4gPj4gKyovDQo+ID4+ICsNCj4gPj4gK3Vuc2lnbmVkIGludCB0 ZXN0X2NsemxsICh1aW50NjRfdCBhKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gX19jbHpsbCAo YSk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsqKiB0ZXN0X2NsczoNCj4gPj4g KyoqCWNscwl3MCwgdzANCj4gPj4gKyoqCXJldA0KPiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdW5z aWduZWQgaW50IHRlc3RfY2xzICh1aW50MzJfdCBhKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4g X19jbHMgKGEpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiArKiogdGVzdF9jbHNs Og0KPiA+PiArKioJY2xzCVt3eF0wLCBbd3hdMA0KPiA+PiArKioJcmV0DQo+ID4+ICsqLw0KPiA+ PiArDQo+ID4+ICt1bnNpZ25lZCBpbnQgdGVzdF9jbHNsICh1bnNpZ25lZCBsb25nIGEpDQo+ID4+ ICt7DQo+ID4+ICsgIHJldHVybiBfX2Nsc2wgKGEpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsv Kg0KPiA+PiArKiogdGVzdF9jbHNsbDoNCj4gPj4gKyoqCWNscwl4MCwgeDANCj4gPj4gKyoqCXJl dA0KPiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdW5zaWduZWQgaW50IHRlc3RfY2xzbGwgKHVpbnQ2 NF90IGEpDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBfX2Nsc2xsIChhKTsNCj4gPj4gK30NCj4g Pj4gKw0KPiA+PiArLyoNCj4gPj4gKyoqIHRlc3RfcmJpdDoNCj4gPj4gKyoqCXJiaXQJdzAsIHcw DQo+ID4+ICsqKglyZXQNCj4gPj4gKyovDQo+ID4+ICsNCj4gPj4gK3VpbnQzMl90IHRlc3RfcmJp dCAodWludDMyX3QgYSkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIF9fcmJpdCAoYSk7DQo+ID4+ ICt9DQo+ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsqKiB0ZXN0X3JiaXRsOg0KPiA+PiArKioJcmJp dAlbd3hdMCwgW3d4XTANCj4gPj4gKyoqCXJldA0KPiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdW5z aWduZWQgbG9uZyB0ZXN0X3JiaXRsICh1bnNpZ25lZCBsb25nIGEpDQo+ID4+ICt7DQo+ID4+ICsg IHJldHVybiBfX3JiaXRsIChhKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoNCj4gPj4gKyoq IHRlc3RfcmJpdGxsOg0KPiA+PiArKioJcmJpdAl4MCwgeDANCj4gPj4gKyoqCXJldA0KPiA+PiAr Ki8NCj4gPj4gKw0KPiA+PiArdWludDY0X3QgdGVzdF9yYml0bGwgKHVpbnQ2NF90IGEpDQo+ID4+ ICt7DQo+ID4+ICsgIHJldHVybiBfX3JiaXRsbCAoYSk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4g Ky8qDQo+ID4+ICsqKiB0ZXN0X3JldjoNCj4gPj4gKyoqCXJldgl3MCwgdzANCj4gPj4gKyoqCXJl dA0KPiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdWludDMyX3QgdGVzdF9yZXYgKHVpbnQzMl90IGEp DQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBfX3JldiAoYSk7DQo+ID4+ICt9DQo+ID4+ICsNCj4g Pj4gKy8qDQo+ID4+ICsqKiB0ZXN0X3Jldmw6DQo+ID4+ICsqKglyZXYJW3d4XTAsIFt3eF0wDQo+ ID4+ICsqKglyZXQNCj4gPj4gKyovDQo+ID4+ICsNCj4gPj4gK3Vuc2lnbmVkIGxvbmcgdGVzdF9y ZXZsICh1bnNpZ25lZCBsb25nIGEpDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBfX3JldmwgKGEp Ow0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiArKiogdGVzdF9yZXZsbDoNCj4gPj4g KyoqCXJldgl4MCwgeDANCj4gPj4gKyoqCXJldA0KPiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdWlu dDY0X3QgdGVzdF9yZXZsbCAodWludDY0X3QgYSkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIF9f cmV2bGwgKGEpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiArKiogdGVzdF9yZXYx NjoNCj4gPj4gKyoqCXJldjE2CXcwLCB3MA0KPiA+PiArKioJcmV0DQo+ID4+ICsqLw0KPiA+PiAr DQo+ID4+ICt1aW50MzJfdCB0ZXN0X3JldjE2ICh1aW50MzJfdCBhKQ0KPiA+PiArew0KPiA+PiAr ICByZXR1cm4gX19yZXYxNiAoYSk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsq KiB0ZXN0X3JldjE2bDoNCj4gPj4gKyoqCXJldjE2CVt3eF0wLCBbd3hdMA0KPiA+PiArKioJcmV0 DQo+ID4+ICsqLw0KPiA+PiArDQo+ID4+ICt1bnNpZ25lZCBsb25nIHRlc3RfcmV2MTZsICh1bnNp Z25lZCBsb25nIGEpDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBfX3JldjE2bCAoYSk7DQo+ID4+ ICt9DQo+ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsqKiB0ZXN0X3JldjE2bGw6DQo+ID4+ICsqKgly ZXYxNgl4MCwgeDANCj4gPj4gKyoqCXJldA0KPiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdWludDY0 X3QgdGVzdF9yZXYxNmxsICh1aW50NjRfdCBhKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gX19y ZXYxNmxsIChhKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoNCj4gPj4gKyoqIHRlc3Rfcm9y Og0KPiA+PiArKioJcm9yCXcwLCB3MCwgdzENCj4gPj4gKyoqCXJldA0KPiA+PiArKi8NCj4gPj4g Kw0KPiA+PiArdWludDMyX3QgdGVzdF9yb3IgKHVpbnQzMl90IGEsIHVpbnQzMl90IHIpDQo+ID4+ ICt7DQo+ID4+ICsgIHJldHVybiBfX3JvciAoYSwgcik7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4g Ky8qDQo+ID4+ICsqKiB0ZXN0X3Jvcmw6DQo+ID4+ICsqKglyb3IJW3d4XTAsIFt3eF0wLCBbd3hd MQ0KPiA+PiArKioJcmV0DQo+ID4+ICsqLw0KPiA+PiArDQo+ID4+ICt1bnNpZ25lZCBsb25nIHRl c3Rfcm9ybCAodW5zaWduZWQgbG9uZyBhLCB1aW50MzJfdCByKQ0KPiA+PiArew0KPiA+PiArICBy ZXR1cm4gX19yb3JsIChhLCByKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoNCj4gPj4gKyoq IHRlc3Rfcm9ybGw6DQo+ID4+ICsqKglyb3IJeDAsIHgwLCB4MQ0KPiA+PiArKioJcmV0DQo+ID4+ ICsqLw0KPiA+PiArDQo+ID4+ICt1aW50NjRfdCB0ZXN0X3JvcmxsICh1aW50NjRfdCBhLCB1aW50 MzJfdCByKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gX19yb3JsbCAoYSwgcik7DQo+ID4+ICt9 DQo+ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsqKiB0ZXN0X3JldnNoOg0KPiA+PiArKioJcmV2MTYJ dzAsIHcwDQo+ID4+ICsqKglyZXQNCj4gPj4gKyovDQo+ID4+ICsNCj4gPj4gK2ludDE2X3QgdGVz dF9yZXZzaCAoaW50MTZfdCBhKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gX19yZXZzaCAoYSk7 DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gK3VpbnQzMl90ICpnMzI7DQo+ID4+ICt1bnNpZ25lZCBs b25nICpndWw7DQo+ID4+ICt1aW50NjRfdCAqZzY0Ow0KPiA+PiArdW5zaWduZWQgaW50ICpndWk7 DQo+ID4+ICtpbnQxNl90ICpnMTY7DQo+ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsqKiB0ZXN0X2Ns el9tZW06DQo+ID4+ICsqKgkuLi4NCj4gPj4gKyoqCWNsegl3WzAtOV0rLCB3WzAtOV0rDQo+ID4+ ICsqKgkuLi4NCj4gPj4gKyoqCXJldA0KPiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdm9pZCB0ZXN0 X2Nsel9tZW0gKHVpbnQzMl90ICphKQ0KPiA+PiArew0KPiA+PiArICAqZ3VpID0gX19jbHogKCph KTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoNCj4gPj4gKyoqIHRlc3RfY2x6bF9tZW06DQo+ ID4+ICsqKgkuLi4NCj4gPj4gKyoqCWNseglbd3hdWzAtOV0rLCBbd3hdWzAtOV0rDQo+ID4+ICsq KgkuLi4NCj4gPj4gKyoqCXJldA0KPiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdm9pZCB0ZXN0X2Ns emxfbWVtICh1bnNpZ25lZCBsb25nICphKQ0KPiA+PiArew0KPiA+PiArICAqZ3VpID0gX19jbHps ICgqYSk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsqKiB0ZXN0X2NsemxsX21l bToNCj4gPj4gKyoqCS4uLg0KPiA+PiArKioJY2x6CXhbMC05XSssIHhbMC05XSsNCj4gPj4gKyoq CS4uLg0KPiA+PiArKioJcmV0DQo+ID4+ICsqLw0KPiA+PiArDQo+ID4+ICt2b2lkIHRlc3RfY2x6 bGxfbWVtICh1aW50NjRfdCAqYSkNCj4gPj4gK3sNCj4gPj4gKyAgKmd1aSA9IF9fY2x6bGwgKCph KTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoNCj4gPj4gKyoqIHRlc3RfY2xzX21lbToNCj4g Pj4gKyoqCS4uLg0KPiA+PiArKioJY2xzCXdbMC05XSssIHdbMC05XSsNCj4gPj4gKyoqCS4uLg0K PiA+PiArKioJcmV0DQo+ID4+ICsqLw0KPiA+PiArDQo+ID4+ICt2b2lkIHRlc3RfY2xzX21lbSAo dWludDMyX3QgKmEpDQo+ID4+ICt7DQo+ID4+ICsgICpndWkgPSBfX2NscyAoKmEpOw0KPiA+PiAr fQ0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiArKiogdGVzdF9jbHNsX21lbToNCj4gPj4gKyoqCS4u Lg0KPiA+PiArKioJY2xzCVt3eF1bMC05XSssIFt3eF1bMC05XSsNCj4gPj4gKyoqCS4uLg0KPiA+ PiArKioJcmV0DQo+ID4+ICsqLw0KPiA+PiArDQo+ID4+ICt2b2lkIHRlc3RfY2xzbF9tZW0gKHVu c2lnbmVkIGxvbmcgKmEpDQo+ID4+ICt7DQo+ID4+ICsgICpndWkgPSBfX2Nsc2wgKCphKTsNCj4g Pj4gK30NCj4gPj4gKw0KPiA+PiArLyoNCj4gPj4gKyoqIHRlc3RfY2xzbGxfbWVtOg0KPiA+PiAr KioJLi4uDQo+ID4+ICsqKgljbHMJeFswLTldKywgeFswLTldKw0KPiA+PiArKioJLi4uDQo+ID4+ ICsqKglyZXQNCj4gPj4gKyovDQo+ID4+ICsNCj4gPj4gK3ZvaWQgdGVzdF9jbHNsbF9tZW0gKHVp bnQ2NF90ICphKQ0KPiA+PiArew0KPiA+PiArICAqZ3VpID0gX19jbHNsbCAoKmEpOw0KPiA+PiAr fQ0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiArKiogdGVzdF9yYml0X21lbToNCj4gPj4gKyoqCS4u Lg0KPiA+PiArKioJcmJpdAl3WzAtOV0rLCB3WzAtOV0rDQo+ID4+ICsqKgkuLi4NCj4gPj4gKyoq CXJldA0KPiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdm9pZCB0ZXN0X3JiaXRfbWVtICh1aW50MzJf dCAqYSkNCj4gPj4gK3sNCj4gPj4gKyAgKmczMiA9IF9fcmJpdCAoKmEpOw0KPiA+PiArfQ0KPiA+ PiArDQo+ID4+ICsvKg0KPiA+PiArKiogdGVzdF9yYml0bF9tZW06DQo+ID4+ICsqKgkuLi4NCj4g Pj4gKyoqCXJiaXQJW3d4XVswLTldKywgW3d4XVswLTldKw0KPiA+PiArKioJLi4uDQo+ID4+ICsq KglyZXQNCj4gPj4gKyovDQo+ID4+ICsNCj4gPj4gK3ZvaWQgdGVzdF9yYml0bF9tZW0gKHVuc2ln bmVkIGxvbmcgKmEpDQo+ID4+ICt7DQo+ID4+ICsgICpndWwgPSBfX3JiaXRsICgqYSk7DQo+ID4+ ICt9DQo+ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsqKiB0ZXN0X3JiaXRsbF9tZW06DQo+ID4+ICsq KgkuLi4NCj4gPj4gKyoqCXJiaXQJeFswLTldKywgeFswLTldKw0KPiA+PiArKioJLi4uDQo+ID4+ ICsqKglyZXQNCj4gPj4gKyovDQo+ID4+ICsNCj4gPj4gK3ZvaWQgdGVzdF9yYml0bGxfbWVtICh1 aW50NjRfdCAqYSkNCj4gPj4gK3sNCj4gPj4gKyAgKmc2NCA9IF9fcmJpdGxsICgqYSk7DQo+ID4+ ICt9DQo+ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsqKiB0ZXN0X3Jldl9tZW06DQo+ID4+ICsqKgku Li4NCj4gPj4gKyoqCXJldgl3WzAtOV0rLCB3WzAtOV0rDQo+ID4+ICsqKgkuLi4NCj4gPj4gKyoq CXJldA0KPiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdm9pZCB0ZXN0X3Jldl9tZW0gKHVpbnQzMl90 ICphKQ0KPiA+PiArew0KPiA+PiArICAqZzMyID0gX19yZXYgKCphKTsNCj4gPj4gK30NCj4gPj4g Kw0KPiA+PiArLyoNCj4gPj4gKyoqIHRlc3RfcmV2bF9tZW06DQo+ID4+ICsqKgkuLi4NCj4gPj4g KyoqCXJldglbd3hdWzAtOV0rLCBbd3hdWzAtOV0rDQo+ID4+ICsqKgkuLi4NCj4gPj4gKyoqCXJl dA0KPiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdm9pZCB0ZXN0X3JldmxfbWVtICh1bnNpZ25lZCBs b25nICphKQ0KPiA+PiArew0KPiA+PiArICAqZ3VsID0gX19yZXZsICgqYSk7DQo+ID4+ICt9DQo+ ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsqKiB0ZXN0X3JldmxsX21lbToNCj4gPj4gKyoqCS4uLg0K PiA+PiArKioJcmV2CXhbMC05XSssIHhbMC05XSsNCj4gPj4gKyoqCS4uLg0KPiA+PiArKioJcmV0 DQo+ID4+ICsqLw0KPiA+PiArDQo+ID4+ICt2b2lkIHRlc3RfcmV2bGxfbWVtICh1aW50NjRfdCAq YSkNCj4gPj4gK3sNCj4gPj4gKyAgKmc2NCA9IF9fcmV2bGwgKCphKTsNCj4gPj4gK30NCj4gPj4g Kw0KPiA+PiArLyoNCj4gPj4gKyoqIHRlc3RfcmV2MTZfbWVtOg0KPiA+PiArKioJLi4uDQo+ID4+ ICsqKglyZXYxNgl3WzAtOV0rLCB3WzAtOV0rDQo+ID4+ICsqKgkuLi4NCj4gPj4gKyoqCXJldA0K PiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdm9pZCB0ZXN0X3JldjE2X21lbSAodWludDMyX3QgKmEp DQo+ID4+ICt7DQo+ID4+ICsgICpnMzIgPSBfX3JldjE2ICgqYSk7DQo+ID4+ICt9DQo+ID4+ICsN Cj4gPj4gKy8qDQo+ID4+ICsqKiB0ZXN0X3JldjE2bF9tZW06DQo+ID4+ICsqKgkuLi4NCj4gPj4g KyoqCXJldjE2CVt3eF1bMC05XSssIFt3eF1bMC05XSsNCj4gPj4gKyoqCS4uLg0KPiA+PiArKioJ cmV0DQo+ID4+ICsqLw0KPiA+PiArDQo+ID4+ICt2b2lkIHRlc3RfcmV2MTZsX21lbSAodW5zaWdu ZWQgbG9uZyAqYSkNCj4gPj4gK3sNCj4gPj4gKyAgKmd1bCA9IF9fcmV2MTZsICgqYSk7DQo+ID4+ ICt9DQo+ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsqKiB0ZXN0X3JldjE2bGxfbWVtOg0KPiA+PiAr KioJLi4uDQo+ID4+ICsqKglyZXYxNgl4WzAtOV0rLCB4WzAtOV0rDQo+ID4+ICsqKgkuLi4NCj4g Pj4gKyoqCXJldA0KPiA+PiArKi8NCj4gPj4gKw0KPiA+PiArdm9pZCB0ZXN0X3JldjE2bGxfbWVt ICh1aW50NjRfdCAqYSkNCj4gPj4gK3sNCj4gPj4gKyAgKmc2NCA9IF9fcmV2MTZsbCAoKmEpOw0K PiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiArKiogdGVzdF9yb3JfbWVtOg0KPiA+PiAr KioJLi4uDQo+ID4+ICsqKglyb3IJd1swLTldKywgd1swLTldKywgd1swLTldKw0KPiA+PiArKioJ Li4uDQo+ID4+ICsqKglyZXQNCj4gPj4gKyovDQo+ID4+ICsNCj4gPj4gK3ZvaWQgdGVzdF9yb3Jf bWVtICh1aW50MzJfdCAqYSwgdWludDMyX3QgKnIpDQo+ID4+ICt7DQo+ID4+ICsgICpnMzIgPSBf X3JvciAoKmEsICpyKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoNCj4gPj4gKyoqIHRlc3Rf cm9ybF9tZW06DQo+ID4+ICsqKgkuLi4NCj4gPj4gKyoqCXJvcglbd3hdWzAtOV0rLCBbd3hdWzAt OV0rLCBbd3hdWzAtOV0rDQo+ID4+ICsqKgkuLi4NCj4gPj4gKyoqCXJldA0KPiA+PiArKi8NCj4g Pj4gKw0KPiA+PiArdm9pZCB0ZXN0X3JvcmxfbWVtICh1bnNpZ25lZCBsb25nICphLCB1aW50MzJf dCAqcikNCj4gPj4gK3sNCj4gPj4gKyAgKmd1bCA9IF9fcm9ybCAoKmEsICpyKTsNCj4gPj4gK30N Cj4gPj4gKw0KPiA+PiArLyoNCj4gPj4gKyoqIHRlc3Rfcm9ybGxfbWVtOg0KPiA+PiArKioJLi4u DQo+ID4+ICsqKglyb3IJeFswLTldKywgeFswLTldKywgeFswLTldKw0KPiA+PiArKioJLi4uDQo+ ID4+ICsqKglyZXQNCj4gPj4gKyovDQo+ID4+ICsNCj4gPj4gK3ZvaWQgdGVzdF9yb3JsbF9tZW0g KHVpbnQ2NF90ICphLCB1aW50MzJfdCAqcikNCj4gPj4gK3sNCj4gPj4gKyAgKmc2NCA9IF9fcm9y bGwgKCphLCAqcik7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsqKiB0ZXN0X3Jl dnNoX21lbToNCj4gPj4gKyoqCS4uLg0KPiA+PiArKioJcmV2MTYJd1swLTldKywgd1swLTldKw0K PiA+PiArKioJLi4uDQo+ID4+ICsqKglyZXQNCj4gPj4gKyovDQo+ID4+ICsNCj4gPj4gK3ZvaWQg dGVzdF9yZXZzaF9tZW0gKGludDE2X3QgKmEpDQo+ID4+ICt7DQo+ID4+ICsgICpnMTYgPSBfX3Jl dnNoICgqYSk7DQo+ID4+ICt9DQo=