From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2055.outbound.protection.outlook.com [40.107.6.55]) by sourceware.org (Postfix) with ESMTPS id D1C293858431 for ; Tue, 9 Apr 2024 15:09:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D1C293858431 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-Filter: OpenARC Filter v1.0.0 sourceware.org D1C293858431 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.6.55 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1712675398; cv=pass; b=ZLC5inglREyjMivZmkhS+VYKodCPdLPxOMrZ25P23CjG9587vlvAu3lkgzGKtpPdI6t7zjSqQ8ha0+p2OkyeIal+ao4pblUOoJM4Ml4H4u5tAdhgRkOvwcD14cdwVSq+SbzZWDFx2z+8095jLR0VieKGd95Kd4UC4hHan6ksXcs= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1712675398; c=relaxed/simple; bh=jB6kXI+YvTXoG1Gd6bughbUbHi4mw1qWB9i4FVoEBxY=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:To:From:Subject: MIME-Version; b=W9SrDBvnj0XujjtQbH8P86k7HvaiU39acc2pBI438z+zQTUwe7UC0xStnLu44V8oN5SI88cFtTGj9AvVhzRWfCEJZ1LnILiqT64+RhOZmQxDvlHCUMrFsNAdXowDtmGreJ9R9kdlXd8fzYrwH/chCKbHkeAVbPWtj6are/yTVS4= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=FapipAP7+CmI2qtM97w/F70v9CmLZRu479ClcwALIWnp3i013C52MGnYLhsHpZWrxRqpcvJRLmEWdyjOXUcH9OzEbR8iaW9vyx2ssBdtwWfdo0eQS7sgo9PLD9kG2/al5aX2QxpaJ09JWUCo4eFD0Jn6jARRYs7IzG2/g5vi477clDWO4qiTQ16NmCqPXeg4tRpj9hvZN9vVxgLs8TnTrV+U5uixNTtKPlFl1CjM8Y3zvR9JPsaGQ48wzrARU3NcWbwkgvq0ASeRMyWmw95OMbTKu88e7ImSsT8scpJqvRWV9dzfIrcvtqJc+pkOSPZYoeLA0gBhOZZSdVoGz0s9ew== 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=WwzuW72Dxa1WIqV4Tceoh4mZ2IjW8imRTlqlrd4VkWI=; b=WHvnCmTtbrwlpbdydNHNsCJ+5o6eE6oAmlQjwAWa+PkQeJW+d7XxUEH51O8b4AyaZKh/MlVp6nSmdBD/xXtMx+yhKdntSRnFjxp/cTAXG/yUGrG0wh9asH2P1otoZmmBEzKgbw54CKSBl1wYJgs/wBG0AyZljMZUZZZuZoSkpDwWN5ypveNMqRQIDokRE0Z59Bb7Su7WCKh50TGQgfzR85C4RGNwNCTSvZVeWHm5hS+s5QZR6gQ58h4exdqjnXz7+MtlmfPY7wX22NM9SCBdvsHAUBcD/zqrn6JLSfBMcf318UNHmplqb1+OE8o50tmWVKWSZCqgLincFUGVPT8B6A== 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=WwzuW72Dxa1WIqV4Tceoh4mZ2IjW8imRTlqlrd4VkWI=; b=N5TCYfv0FsGx9nxeP5EtILBEwrQ5JWGwClEr6iziQske0KIeHbntdZPB2kjK65OtRT0lmslG0ypkXrlZjPXvrBXg3ddJtvjLe4OdPy3V2ERayli5mBNTvjrM/p1yaq9AwV+8xmnvPgGK6YrX5J4h9ufuUxiNnPT/M3ljJBqCFFs= Received: from AS9PR04CA0082.eurprd04.prod.outlook.com (2603:10a6:20b:48b::6) by GVXPR08MB10725.eurprd08.prod.outlook.com (2603:10a6:150:158::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.45; Tue, 9 Apr 2024 15:09:53 +0000 Received: from AMS0EPF000001A5.eurprd05.prod.outlook.com (2603:10a6:20b:48b:cafe::fa) by AS9PR04CA0082.outlook.office365.com (2603:10a6:20b:48b::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7452.36 via Frontend Transport; Tue, 9 Apr 2024 15:09:53 +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 AMS0EPF000001A5.mail.protection.outlook.com (10.167.16.232) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7452.22 via Frontend Transport; Tue, 9 Apr 2024 15:09:53 +0000 Received: ("Tessian outbound dc0a9029eb2c:v300"); Tue, 09 Apr 2024 15:09:52 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 1b894f4a5983fa2e X-CR-MTA-TID: 64aa7808 Received: from f88370092ffd.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id D90490E3-16A5-4AFC-BA00-30DC62F76660.1; Tue, 09 Apr 2024 15:09:46 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f88370092ffd.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 09 Apr 2024 15:09:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lNKXeEVsIXNr3/zIwbHMOV0YuErEr0k6Q/qC0PKpougb6j9wivOzTFcwG6DaNmHJUvlHwTw5mlG9Mche8B+mqCk9WaEBChwB76NBpHv2Q6KGsm3xjX9I8Wrp+4TfxjxH3sKWzjW1Qk+PRFHEmYIDxTUL2/xzOGzA+SVN7H1qWhQDMvW5GZPIun2j8cGhw+91azi+S1MfyGr7nhvuGk7xU7s1D+UEtVzIgvo8kG7+mJA7EdhQeHCU3h+1vY+q/Ppb5ZRY1uiR686MaisDIldO1lo9SSaPkzdh5vAShe0MabfVXl5wnoCsuF+Pb/IcUoQPxVCQ7f/MOdWMKSAvKBVChA== 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=WwzuW72Dxa1WIqV4Tceoh4mZ2IjW8imRTlqlrd4VkWI=; b=LKnL97hjOCvs8h9n4+zgKGTgrpDtuhXNYZ+O+7bmkABNXtzWuAF0H4RI+YLuoUjoSc+sEPfRZ/zGRJZv7PvH1HCZOXflIXBoV7ooO/qqIazLeQ3zfnmoIUkJzp9hkIDKwTckC3+CDWtng7uaf4l83lMKHVFNK+smY3vgWc4c/9jpQ5+5nqC7BZNLwfqMBycFnLNJGOafy/6Pe/qQOmYInG5Iy0r+xQUUSmsSQQ2jHZKXirZEQhFkNmioQvU7sIvy9xZYKEczhXzYfNgZuSmaS8SOYreh+GaOHtdhsO2DokjfBvRP7pGHbQ/4wi4DjpRRqSZ2xMjhOS9ZmKD5QwmXmA== 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=WwzuW72Dxa1WIqV4Tceoh4mZ2IjW8imRTlqlrd4VkWI=; b=N5TCYfv0FsGx9nxeP5EtILBEwrQ5JWGwClEr6iziQske0KIeHbntdZPB2kjK65OtRT0lmslG0ypkXrlZjPXvrBXg3ddJtvjLe4OdPy3V2ERayli5mBNTvjrM/p1yaq9AwV+8xmnvPgGK6YrX5J4h9ufuUxiNnPT/M3ljJBqCFFs= Received: from DB9PR08MB6957.eurprd08.prod.outlook.com (2603:10a6:10:2bc::10) by DU0PR08MB9902.eurprd08.prod.outlook.com (2603:10a6:10:476::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.46; Tue, 9 Apr 2024 15:09:44 +0000 Received: from DB9PR08MB6957.eurprd08.prod.outlook.com ([fe80::5c14:ca3c:588b:1b39]) by DB9PR08MB6957.eurprd08.prod.outlook.com ([fe80::5c14:ca3c:588b:1b39%5]) with mapi id 15.20.7409.042; Tue, 9 Apr 2024 15:09:43 +0000 Content-Type: multipart/mixed; boundary="------------eHUdiSF0SnSoD8040TIer5hH" Message-ID: <5c8952f3-f6f1-417f-954b-862b28a0c224@arm.com> Date: Tue, 9 Apr 2024 16:09:40 +0100 User-Agent: Mozilla Thunderbird Content-Language: en-US To: "gcc-patches@gcc.gnu.org" Cc: Richard Sandiford , Richard Earnshaw From: Richard Ball Subject: [PATCH v2] aarch64: Fix ACLE SME streaming mode error in neon-sve-bridge X-ClientProxiedBy: LO4P123CA0645.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:296::16) To DB9PR08MB6957.eurprd08.prod.outlook.com (2603:10a6:10:2bc::10) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DB9PR08MB6957:EE_|DU0PR08MB9902:EE_|AMS0EPF000001A5:EE_|GVXPR08MB10725: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: iuIatIZCcCseZRiFOpjqM4NPXQE7Vs2ky6pxr9J+c6iFaSqYAoASl2XI9g7XZ/8zhUlj8VKUwmdiISfmXwTQkOBHg74XTy88fXvjGiMzOx3fRPxKO11o0bk5J4ALfRRcycmQrVj/jN2wlqbgT39ViL3sb7JVzHDRiDb4Omvh8FqKxibqTLoyyFqe3PC2VmfoFrlWle749SX6QSZ8voKHeftCAoHaj3Rd0AhB4nGphX+G/pwXyPVPtd6wzoXXjhZYJIvBgiVdBlU4DhU+ZQ7lVZv8aHk5OcLIRoA88i36HiS6bHtpwwhm9SQl0hwgtzDoEe2u/3dOhl8eiRsvYvJU6jJE6Sup7hBwXk4DHaV8+a65H8AXuhnL82y6v01qX01NXWe0I6fsFG1G36m+Q4n6pi2exNhBaJXiKPg3NUPuSb4AIpuBFRdQo3Cf3UiAJg8OvuePsEex6BxxfD01xXUuX5IYCLDc0HujXyZhnBt9ftftAWIgPPWsJiyDpS2PHq5uf9bozonvbtlCgIyMzY8Gsk7EVfv1Ky64/W0wyrGsRwdP1vSraASGoC5FR4VTg1pKLAAOAnMLdLbXMRMedK/6LpVtB2iavbEyjnSnm+VK4ErKYDxTsxOzz9xCmQlkYoifdM7x6dYc/4DVLXe/K/0ILhtcu9g7gBZySrfocBT/fVI= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB6957.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(366007)(376005);DIR:OUT;SFP:1102; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9902 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF000001A5.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8647d4e9-e1f9-4806-228d-08dc58a71bef X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4ESWjnJEAHF6zltrZD/1yWQnTJw3acoIsOEk+reOyrC1/6ZpzCQVXO73opJXdjY+OaAcsOP8g+TPiJszGnbaVNgZryBq9q22jk4C35AtJzZgqye3+A4rpDD8E7ZH05FYqlZiW3us+ZlldBE//BnJVG4d13GKUVOCUsnOPt6PORLQ3VPCEJkYUAtqzMxA85oB8LGuf4bZ7myu90+B71jc6gs5ECgBjzwCXxaYdyWpN+X4F0M8djKeRo6WW66uLeZj0lGbwVXMoDKOWyvVrju83PdUmCM/lBZi83Hq/aE5wV/508SRulwqabQQa9HvAhdfIJGOMEbCMqFfFAvvTNh7tcIATCPlSkCrLtdc5NTFRMdfO4RFd5An/f17Bq8EIdKAvdCBBpFGLNqm2noCl2u3FQBTNUzkls3c9vuK2DYev7cfb5xqeD1yVTzQRkd9KrilqAfvBupUVZOsY26nFuEPkOmPoWjWmlGj0IBUMfEoiY+QbEdTHFDSunfd51kQhobxO65lmbnXWkowsMUFAbKK8gomIkqcCq2sgaEo+pERplzLoJF5JVV4CzRFOarOvhuRLCBML7b/9VTbNTYJZvWw39ePvsRi2Ciak5C7jDqc5F2GZeiqK27Pehfe3/FvdKuWLyOAmcCiNTNLkOFX6SIapcOJYeROVgQwzROtYtb8ctEIxBkUVuBjDlAtCXwaUbfpljQaXCR6L/OzwNsimR+QSeYfWe94kx03CVYfamoI56ZNGpR4dlcXlMbV2kuwrUuH 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:(13230031)(376005)(82310400014)(36860700004)(1800799015);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2024 15:09:53.0582 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8647d4e9-e1f9-4806-228d-08dc58a71bef 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: AMS0EPF000001A5.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB10725 X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,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: --------------eHUdiSF0SnSoD8040TIer5hH Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit When using LTO, handling the pragma for sme before the pragma for the neon-sve-bridge caused the following error on svset_neonq, in the neon-sve-bridge.c test. error: ACLE function '0' can only be called when SME streaming mode is enabled. This has been resolved by changing the pragma handlers to accept two modes. One where they add functions normally and a second in which registered_functions is filled with a placeholder value. By using this, the ordering of the functions can be maintained. No regressions on aarch64-none-elf. gcc/ChangeLog: * config/aarch64/aarch64-c.cc (aarch64_pragma_aarch64): Add functions_nulls parameter to pragma_handlers. * config/aarch64/aarch64-protos.h: Likewise. * config/aarch64/aarch64-sve-builtins.h (enum handle_pragma_index): Add enum to count number of pragmas to be handled. * config/aarch64/aarch64-sve-builtins.cc (GTY): Add global variable for initial indexes and change overload_names to an array. (function_builder::function_builder): Add pragma handler information. (function_builder::add_function): Add code for overwriting previous registered_functions entries. (add_unique_function): Use an array to register overload_names for both pragma handler modes. (add_overloaded_function): Likewise. (init_builtins): Add functions_nulls parameter to pragma_handlers. (handle_arm_sve_h): Initialize pragma handler information. (handle_arm_neon_sve_bridge_h): Likewise. (handle_arm_sme_h): Likewise. --------------eHUdiSF0SnSoD8040TIer5hH Content-Type: text/x-patch; charset=UTF-8; name="PragmaHandlers.patch" Content-Disposition: attachment; filename="PragmaHandlers.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWMuY2MgYi9nY2MvY29uZmln L2FhcmNoNjQvYWFyY2g2NC1jLmNjCmluZGV4IGI1YTY5MTdkMDZkYjQxYTg0NTY4MWVkNmYxM2Yy ODAwYzcwZWRlMTAuLmZlMWEyMGU0ZTU0NmE2OGU1ZjdlZGRmZjNiYmIwZDNlODMxZmJkOWIgMTAw NjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWMuY2MKKysrIGIvZ2NjL2NvbmZp Zy9hYXJjaDY0L2FhcmNoNjQtYy5jYwpAQCAtMzQ0LDE1ICszNDQsMTUgQEAgYWFyY2g2NF9wcmFn bWFfYWFyY2g2NCAoY3BwX3JlYWRlciAqKQogCiAgIGNvbnN0IGNoYXIgKm5hbWUgPSBUUkVFX1NU UklOR19QT0lOVEVSICh4KTsKICAgaWYgKHN0cmNtcCAobmFtZSwgImFybV9zdmUuaCIpID09IDAp Ci0gICAgYWFyY2g2NF9zdmU6OmhhbmRsZV9hcm1fc3ZlX2ggKCk7CisgICAgYWFyY2g2NF9zdmU6 OmhhbmRsZV9hcm1fc3ZlX2ggKGZhbHNlKTsKICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiYXJt X3NtZS5oIikgPT0gMCkKLSAgICBhYXJjaDY0X3N2ZTo6aGFuZGxlX2FybV9zbWVfaCAoKTsKKyAg ICBhYXJjaDY0X3N2ZTo6aGFuZGxlX2FybV9zbWVfaCAoZmFsc2UpOwogICBlbHNlIGlmIChzdHJj bXAgKG5hbWUsICJhcm1fbmVvbi5oIikgPT0gMCkKICAgICBoYW5kbGVfYXJtX25lb25faCAoKTsK ICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiYXJtX2FjbGUuaCIpID09IDApCiAgICAgaGFuZGxl X2FybV9hY2xlX2ggKCk7CiAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgImFybV9uZW9uX3N2ZV9i cmlkZ2UuaCIpID09IDApCi0gICAgYWFyY2g2NF9zdmU6OmhhbmRsZV9hcm1fbmVvbl9zdmVfYnJp ZGdlX2ggKCk7CisgICAgYWFyY2g2NF9zdmU6OmhhbmRsZV9hcm1fbmVvbl9zdmVfYnJpZGdlX2gg KGZhbHNlKTsKICAgZWxzZQogICAgIGVycm9yICgidW5rbm93biAlPCNwcmFnbWEgR0NDIGFhcmNo NjQlPiBvcHRpb24gJXFzIiwgbmFtZSk7CiB9CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNo NjQvYWFyY2g2NC1wcm90b3MuaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXByb3Rvcy5o CmluZGV4IGJkNzE5Yjk5MmE1NDU2MzBmOWFkNmE3Mzc1M2ZhZDU1YzZhYzVkN2UuLjQyNjM5ZTll ZmNmMWUwZjkzNjJmNzU5YWU2M2EzMWI4ZWViMGQ1ODEgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcv YWFyY2g2NC9hYXJjaDY0LXByb3Rvcy5oCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0 LXByb3Rvcy5oCkBAIC0xMDE0LDkgKzEwMTQsOSBAQCBib29sIGFhcmNoNjRfZ2VuZXJhbF9jaGVj a19idWlsdGluX2NhbGwgKGxvY2F0aW9uX3QsIHZlYzxsb2NhdGlvbl90PiwKIAogbmFtZXNwYWNl IGFhcmNoNjRfc3ZlIHsKICAgdm9pZCBpbml0X2J1aWx0aW5zICgpOwotICB2b2lkIGhhbmRsZV9h cm1fc3ZlX2ggKCk7Ci0gIHZvaWQgaGFuZGxlX2FybV9zbWVfaCAoKTsKLSAgdm9pZCBoYW5kbGVf YXJtX25lb25fc3ZlX2JyaWRnZV9oICgpOworICB2b2lkIGhhbmRsZV9hcm1fc3ZlX2ggKGJvb2wp OworICB2b2lkIGhhbmRsZV9hcm1fc21lX2ggKGJvb2wpOworICB2b2lkIGhhbmRsZV9hcm1fbmVv bl9zdmVfYnJpZGdlX2ggKGJvb2wpOwogICB0cmVlIGJ1aWx0aW5fZGVjbCAodW5zaWduZWQsIGJv b2wpOwogICBib29sIGJ1aWx0aW5fdHlwZV9wIChjb25zdF90cmVlKTsKICAgYm9vbCBidWlsdGlu X3R5cGVfcCAoY29uc3RfdHJlZSwgdW5zaWduZWQgaW50ICosIHVuc2lnbmVkIGludCAqKTsKZGlm ZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy5oIGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLmgKaW5kZXggZTY2NzI5ZWQ2MzUz MjgxMWIzYjE2YWI1N2FlMTFjYjEwNTE4Y2FjYS4uM2UwZDJiODU2MGM1MzhkMjAxYzk3ZmJhMzU5 MWRkZjk4OTNkNjY0YSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3Zl LWJ1aWx0aW5zLmgKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5z LmgKQEAgLTEyMyw2ICsxMjMsMTUgQEAgZW51bSB1bml0c19pbmRleAogICBVTklUU192ZWN0b3Jz CiB9OwogCisvKiBFbnVtZXJhdGVzIHRoZSBwcmFnbWEgaGFuZGxlcnMuICAqLworZW51bSBoYW5k bGVfcHJhZ21hX2luZGV4Cit7CisgIGFybV9zdmVfaGFuZGxlLAorICBhcm1fc21lX2hhbmRsZSwK KyAgYXJtX25lb25fc3ZlX2hhbmRsZSwKKyAgTlVNX1BSQUdNQV9IQU5ETEVSUworfTsKKwogLyog RGVzY3JpYmVzIHRoZSB2YXJpb3VzIHVzZXMgb2YgYSBnb3Zlcm5pbmcgcHJlZGljYXRlLiAgKi8K IGVudW0gcHJlZGljYXRpb25faW5kZXgKIHsKQEAgLTQxOSw3ICs0MjgsNyBAQCBjbGFzcyByZWdp c3RlcmVkX2Z1bmN0aW9uOwogY2xhc3MgZnVuY3Rpb25fYnVpbGRlcgogewogcHVibGljOgotICBm dW5jdGlvbl9idWlsZGVyICgpOworICBmdW5jdGlvbl9idWlsZGVyIChoYW5kbGVfcHJhZ21hX2lu ZGV4LCBib29sKTsKICAgfmZ1bmN0aW9uX2J1aWxkZXIgKCk7CiAKICAgdm9pZCBhZGRfdW5pcXVl X2Z1bmN0aW9uIChjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmLCB0cmVlLApAQCAtNDUzLDYgKzQ2 MiwxMiBAQCBwcml2YXRlOgogCiAgIC8qIFVzZWQgZm9yIGJ1aWxkaW5nIHVwIGZ1bmN0aW9uIG5h bWVzLiAgKi8KICAgb2JzdGFjayBtX3N0cmluZ19vYnN0YWNrOworCisgIC8qIFVzZWQgdG8gc3Rv cmUgdGhlIGluZGV4IGZvciB0aGUgY3VycmVudCBmdW5jdGlvbi4gICovCisgIHVuc2lnbmVkIGlu dCBtX2Z1bmN0aW9uX2luZGV4OworCisgIC8qIFN0b3JlcyB0aGUgbW9kZSBvZiB0aGUgY3VycmVu dCBwcmFnbWEgaGFuZGxlci4gICovCisgIGJvb2wgbV9mdW5jdGlvbl9udWxsczsKIH07CiAKIC8q IEEgYmFzZSBjbGFzcyBmb3IgaGFuZGxpbmcgY2FsbHMgdG8gYnVpbHQtaW4gZnVuY3Rpb25zLiAg Ki8KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy5j YyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy5jYwppbmRleCAxMWY1 YzVjNTAwYzgzMzEwOTQ5MzNjYjFjMTIwNWExMzYwZWNhNzliLi45MjRiZmViM2UyM2JiMWJiZWQ3 OWQzNmFkZjMzMjg2Yjg3YjUyZjg1IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFy Y2g2NC1zdmUtYnVpbHRpbnMuY2MKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3Zl LWJ1aWx0aW5zLmNjCkBAIC05MzMsMTQgKzkzMywxOSBAQCB0cmVlIGFjbGVfc3ZwcmZvcDsKIC8q IFRoZSBsaXN0IG9mIGFsbCByZWdpc3RlcmVkIGZ1bmN0aW9uIGRlY2xzLCBpbmRleGVkIGJ5IGNv ZGUuICAqLwogc3RhdGljIEdUWSgoKSkgdmVjPHJlZ2lzdGVyZWRfZnVuY3Rpb24gKiwgdmFfZ2M+ ICpyZWdpc3RlcmVkX2Z1bmN0aW9uczsKIAorLyogU3RvcmVzIHRoZSBzdGFydGluZyBmdW5jdGlv biBpbmRleCBmb3IgZWFjaCBwcmFnbWEgaGFuZGxlci4gICovCitzdGF0aWMgdW5zaWduZWQgaW50 IGluaXRpYWxfaW5kZXhlc1tOVU1fUFJBR01BX0hBTkRMRVJTXTsKKwogLyogQWxsIHJlZ2lzdGVy ZWQgZnVuY3Rpb24gZGVjbHMsIGhhc2hlZCBvbiB0aGUgZnVuY3Rpb25faW5zdGFuY2UKICAgIHRo YXQgdGhleSBpbXBsZW1lbnQuICBUaGlzIGlzIHVzZWQgZm9yIGxvb2tpbmcgdXAgaW1wbGVtZW50 YXRpb25zIG9mCiAgICBvdmVybG9hZGVkIGZ1bmN0aW9ucy4gICovCiBzdGF0aWMgaGFzaF90YWJs ZTxyZWdpc3RlcmVkX2Z1bmN0aW9uX2hhc2hlcj4gKmZ1bmN0aW9uX3RhYmxlOwogCi0vKiBNYXBz IGFsbCBvdmVybG9hZGVkIGZ1bmN0aW9uIG5hbWVzIHRoYXQgd2UndmUgcmVnaXN0ZXJlZCBzbyBm YXIgdG8KLSAgIHRoZWlyIGFzc29jaWF0ZWQgZnVuY3Rpb25faW5zdGFuY2VzLiAgVGhlIG1hcCBr ZXlzIGFyZSBJREVOVElGSUVSX05PREVzLiAgKi8KLXN0YXRpYyBHVFkoKCkpIGhhc2hfbWFwPHRy ZWUsIHJlZ2lzdGVyZWRfZnVuY3Rpb24gKj4gKm92ZXJsb2FkX25hbWVzOworLyogSW5kZXggMCBt YXBzIGFsbCBvdmVybG9hZGVkIGZ1bmN0aW9uIG5hbWVzIHRoYXQgd2UndmUgcmVnaXN0ZXJlZCBz byBmYXIgdG8KKyAgIHRoZWlyIGFzc29jaWF0ZWQgZnVuY3Rpb25faW5zdGFuY2VzLiAgSW5kZXgg MSBkb2VzIHRoZSBzYW1lIGZvciBmdW5jdGlvbnMKKyAgIHRoYXQgd2UndmUgc2tpcHBlZCBvdmVy IHdpdGhvdXQgcmVnaXN0ZXJpbmcuICBJbiBib3RoIGNhc2VzLCB0aGUgbWFwIGtleXMKKyAgIGFy ZSBJREVOVElGSUVSX05PREVzLiAgKi8KK3N0YXRpYyBHVFkoKCkpIGhhc2hfbWFwPHRyZWUsIHJl Z2lzdGVyZWRfZnVuY3Rpb24gKj4gKm92ZXJsb2FkX25hbWVzWzJdOwogCiAvKiBUcnVlIGlmIHdl J3ZlIGFscmVhZHkgY29tcGxhaW5lZCBhYm91dCBhdHRlbXB0cyB0byB1c2UgZnVuY3Rpb25zCiAg ICB3aGVuIHRoZSByZXF1aXJlZCBleHRlbnNpb24gaXMgZGlzYWJsZWQuICAqLwpAQCAtMTMzMiwx MCArMTMzNywyMSBAQCBzdmVfc3dpdGNoZXI6On5zdmVfc3dpdGNoZXIgKCkKICAgbWF4aW11bV9m aWVsZF9hbGlnbm1lbnQgPSBtX29sZF9tYXhpbXVtX2ZpZWxkX2FsaWdubWVudDsKIH0KIAotZnVu Y3Rpb25fYnVpbGRlcjo6ZnVuY3Rpb25fYnVpbGRlciAoKQorZnVuY3Rpb25fYnVpbGRlcjo6ZnVu Y3Rpb25fYnVpbGRlciAoaGFuZGxlX3ByYWdtYV9pbmRleCBwcmFnbWFfaW5kZXgsCisJCQkJICAg IGJvb2wgZnVuY3Rpb25fbnVsbHMpCiB7CiAgIG1fb3ZlcmxvYWRfdHlwZSA9IGJ1aWxkX2Z1bmN0 aW9uX3R5cGUgKHZvaWRfdHlwZV9ub2RlLCB2b2lkX2xpc3Rfbm9kZSk7CiAgIG1fZGlyZWN0X292 ZXJsb2FkcyA9IGxhbmdfR05VX0NYWCAoKTsKKworICBpZiAoaW5pdGlhbF9pbmRleGVzW3ByYWdt YV9pbmRleF0gPT0gMCkKKyAgICB7CisgICAgICB1bnNpZ25lZCBpbnQgaW5kZXggPSB2ZWNfc2Fm ZV9sZW5ndGggKHJlZ2lzdGVyZWRfZnVuY3Rpb25zKTsKKyAgICAgIGluaXRpYWxfaW5kZXhlc1tw cmFnbWFfaW5kZXhdID0gaW5kZXg7CisgICAgfQorCisgIG1fZnVuY3Rpb25faW5kZXggPSBpbml0 aWFsX2luZGV4ZXNbcHJhZ21hX2luZGV4XTsKKyAgbV9mdW5jdGlvbl9udWxscyA9IGZ1bmN0aW9u X251bGxzOworCiAgIGdjY19vYnN0YWNrX2luaXQgKCZtX3N0cmluZ19vYnN0YWNrKTsKIH0KIApA QCAtMTQ5OSw5ICsxNTE1LDggQEAgZnVuY3Rpb25fYnVpbGRlcjo6YWRkX2Z1bmN0aW9uIChjb25z dCBmdW5jdGlvbl9pbnN0YW5jZSAmaW5zdGFuY2UsCiAJCQkJYm9vbCBvdmVybG9hZGVkX3AsCiAJ CQkJYm9vbCBwbGFjZWhvbGRlcl9wKQogewotICB1bnNpZ25lZCBpbnQgY29kZSA9IHZlY19zYWZl X2xlbmd0aCAocmVnaXN0ZXJlZF9mdW5jdGlvbnMpOwotICBjb2RlID0gKGNvZGUgPDwgQUFSQ0g2 NF9CVUlMVElOX1NISUZUKSB8IEFBUkNINjRfQlVJTFRJTl9TVkU7Ci0KKyAgdW5zaWduZWQgaW50 IGxlbmd0aCA9IHZlY19zYWZlX2xlbmd0aCAocmVnaXN0ZXJlZF9mdW5jdGlvbnMpOworICB1bnNp Z25lZCBpbnQgY29kZSA9IChtX2Z1bmN0aW9uX2luZGV4IDw8IEFBUkNINjRfQlVJTFRJTl9TSElG VCkgfCBBQVJDSDY0X0JVSUxUSU5fU1ZFOwogICAvKiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gZ2Vu ZXJhdGUgcGxhY2Vob2xkZXJzIHRvIGVudXNyZSB0aGF0IHdlIGhhdmUgYQogICAgICBjb25zaXN0 ZW50IG51bWJlcmluZyBzY2hlbWUgZm9yIGZ1bmN0aW9uIGNvZGVzIGJldHdlZW4gdGhlIEMgYW5k IEMrKwogICAgICBmcm9udGVuZHMsIHNvIHRoYXQgZXZlcnl0aGluZyB0aWVzIHVwIGluIExUTy4K QEAgLTE1MTUsNyArMTUzMCw3IEBAIGZ1bmN0aW9uX2J1aWxkZXI6OmFkZF9mdW5jdGlvbiAoY29u c3QgZnVuY3Rpb25faW5zdGFuY2UgJmluc3RhbmNlLAogICAgICBub2RlcyBhbmQgcmVtb3ZlIHRo ZSB0YXJnZXQgaG9vay4gRm9yIG5vdywgaG93ZXZlciwgd2UgbmVlZCB0byBhcHBlYXNlIHRoZQog ICAgICB2YWxpZGF0aW9uIGFuZCByZXR1cm4gYSBub24tTlVMTCwgbm9uLWVycm9yX21hcmtfbm9k ZSBub2RlLCBzbyB3ZQogICAgICBhcmJpdHJhcmlseSBjaG9vc2UgaW50ZWdlcl96ZXJvX25vZGUu ICAqLwotICB0cmVlIGRlY2wgPSBwbGFjZWhvbGRlcl9wCisgIHRyZWUgZGVjbCA9IHBsYWNlaG9s ZGVyX3AgfHwgbV9mdW5jdGlvbl9udWxscwogICAgID8gaW50ZWdlcl96ZXJvX25vZGUKICAgICA6 IHNpbXVsYXRlX2J1aWx0aW5fZnVuY3Rpb25fZGVjbCAoaW5wdXRfbG9jYXRpb24sIG5hbWUsIGZu dHlwZSwKIAkJCQkgICAgICBjb2RlLCBOVUxMLCBhdHRycyk7CkBAIC0xNTI1LDcgKzE1NDAsMTEg QEAgZnVuY3Rpb25fYnVpbGRlcjo6YWRkX2Z1bmN0aW9uIChjb25zdCBmdW5jdGlvbl9pbnN0YW5j ZSAmaW5zdGFuY2UsCiAgIHJmbi5kZWNsID0gZGVjbDsKICAgcmZuLnJlcXVpcmVkX2V4dGVuc2lv bnMgPSByZXF1aXJlZF9leHRlbnNpb25zOwogICByZm4ub3ZlcmxvYWRlZF9wID0gb3ZlcmxvYWRl ZF9wOwotICB2ZWNfc2FmZV9wdXNoIChyZWdpc3RlcmVkX2Z1bmN0aW9ucywgJnJmbik7CisgIGlm IChtX2Z1bmN0aW9uX2luZGV4ID49IGxlbmd0aCkKKyAgICB2ZWNfc2FmZV9wdXNoIChyZWdpc3Rl cmVkX2Z1bmN0aW9ucywgJnJmbik7CisgIGVsc2UKKyAgICAoKnJlZ2lzdGVyZWRfZnVuY3Rpb25z KVttX2Z1bmN0aW9uX2luZGV4XSA9ICZyZm47CisgIG1fZnVuY3Rpb25faW5kZXgrKzsKIAogICBy ZXR1cm4gcmZuOwogfQpAQCAtMTU1NCwxMSArMTU3MywxNCBAQCBhZGRfdW5pcXVlX2Z1bmN0aW9u IChjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmaW5zdGFuY2UsCiAJCQkJCSAgIHJlcXVpcmVkX2V4 dGVuc2lvbnMsIGZhbHNlLCBmYWxzZSk7CiAKICAgLyogRW50ZXIgdGhlIGZ1bmN0aW9uIGludG8g dGhlIGhhc2ggdGFibGUuICAqLwotICBoYXNodmFsX3QgaGFzaCA9IGluc3RhbmNlLmhhc2ggKCk7 Ci0gIHJlZ2lzdGVyZWRfZnVuY3Rpb24gKipyZm5fc2xvdAotICAgID0gZnVuY3Rpb25fdGFibGUt PmZpbmRfc2xvdF93aXRoX2hhc2ggKGluc3RhbmNlLCBoYXNoLCBJTlNFUlQpOwotICBnY2NfYXNz ZXJ0ICghKnJmbl9zbG90KTsKLSAgKnJmbl9zbG90ID0gJnJmbjsKKyAgaWYgKCFtX2Z1bmN0aW9u X251bGxzKQorICAgIHsKKyAgICAgIGhhc2h2YWxfdCBoYXNoID0gaW5zdGFuY2UuaGFzaCAoKTsK KyAgICAgIHJlZ2lzdGVyZWRfZnVuY3Rpb24gKipyZm5fc2xvdAorCT0gZnVuY3Rpb25fdGFibGUt PmZpbmRfc2xvdF93aXRoX2hhc2ggKGluc3RhbmNlLCBoYXNoLCBJTlNFUlQpOworICAgICAgZ2Nj X2Fzc2VydCAoISpyZm5fc2xvdCk7CisgICAgICAqcmZuX3Nsb3QgPSAmcmZuOworICAgIH0KIAog ICAvKiBBbHNvIGFkZCB0aGUgZnVuY3Rpb24gdW5kZXIgaXRzIG92ZXJsb2FkZWQgYWxpYXMsIGlm IHdlIHdhbnQKICAgICAgYSBzZXBhcmF0ZSBkZWNsIGZvciBlYWNoIGluc3RhbmNlIG9mIGFuIG92 ZXJsb2FkZWQgZnVuY3Rpb24uICAqLwpAQCAtMTU4OSwxMiArMTYxMSwxMyBAQCBmdW5jdGlvbl9i dWlsZGVyOjoKIGFkZF9vdmVybG9hZGVkX2Z1bmN0aW9uIChjb25zdCBmdW5jdGlvbl9pbnN0YW5j ZSAmaW5zdGFuY2UsCiAJCQkgYWFyY2g2NF9mZWF0dXJlX2ZsYWdzIHJlcXVpcmVkX2V4dGVuc2lv bnMpCiB7Ci0gIGlmICghb3ZlcmxvYWRfbmFtZXMpCi0gICAgb3ZlcmxvYWRfbmFtZXMgPSBoYXNo X21hcDx0cmVlLCByZWdpc3RlcmVkX2Z1bmN0aW9uICo+OjpjcmVhdGVfZ2djICgpOworICBhdXRv ICZuYW1lX21hcCA9IG92ZXJsb2FkX25hbWVzW21fZnVuY3Rpb25fbnVsbHNdOworICBpZiAoIW5h bWVfbWFwKQorICAgIG5hbWVfbWFwID0gaGFzaF9tYXA8dHJlZSwgcmVnaXN0ZXJlZF9mdW5jdGlv biAqPjo6Y3JlYXRlX2dnYyAoKTsKIAogICBjaGFyICpuYW1lID0gZ2V0X25hbWUgKGluc3RhbmNl LCB0cnVlKTsKICAgdHJlZSBpZCA9IGdldF9pZGVudGlmaWVyIChuYW1lKTsKLSAgaWYgKHJlZ2lz dGVyZWRfZnVuY3Rpb24gKiptYXBfdmFsdWUgPSBvdmVybG9hZF9uYW1lcy0+Z2V0IChpZCkpCisg IGlmIChyZWdpc3RlcmVkX2Z1bmN0aW9uICoqbWFwX3ZhbHVlID0gbmFtZV9tYXAtPmdldCAoaWQp KQogICAgIGdjY19hc3NlcnQgKCgqbWFwX3ZhbHVlKS0+aW5zdGFuY2UgPT0gaW5zdGFuY2UKIAkJ JiYgKCgqbWFwX3ZhbHVlKS0+cmVxdWlyZWRfZXh0ZW5zaW9ucwogCQkgICAgJiB+cmVxdWlyZWRf ZXh0ZW5zaW9ucykgPT0gMCk7CkBAIC0xNjAzLDcgKzE2MjYsNyBAQCBhZGRfb3ZlcmxvYWRlZF9m dW5jdGlvbiAoY29uc3QgZnVuY3Rpb25faW5zdGFuY2UgJmluc3RhbmNlLAogICAgICAgcmVnaXN0 ZXJlZF9mdW5jdGlvbiAmcmZuCiAJPSBhZGRfZnVuY3Rpb24gKGluc3RhbmNlLCBuYW1lLCBtX292 ZXJsb2FkX3R5cGUsIE5VTExfVFJFRSwKIAkJCXJlcXVpcmVkX2V4dGVuc2lvbnMsIHRydWUsIG1f ZGlyZWN0X292ZXJsb2Fkcyk7Ci0gICAgICBvdmVybG9hZF9uYW1lcy0+cHV0IChpZCwgJnJmbik7 CisgICAgICBuYW1lX21hcC0+cHV0IChpZCwgJnJmbik7CiAgICAgfQogICBvYnN0YWNrX2ZyZWUg KCZtX3N0cmluZ19vYnN0YWNrLCBuYW1lKTsKIH0KQEAgLTQ1MTAsOSArNDUzMyw5IEBAIGluaXRf YnVpbHRpbnMgKCkKICAgcmVnaXN0ZXJfYnVpbHRpbl90eXBlcyAoKTsKICAgaWYgKGluX2x0b19w KQogICAgIHsKLSAgICAgIGhhbmRsZV9hcm1fc3ZlX2ggKCk7Ci0gICAgICBoYW5kbGVfYXJtX3Nt ZV9oICgpOwotICAgICAgaGFuZGxlX2FybV9uZW9uX3N2ZV9icmlkZ2VfaCAoKTsKKyAgICAgIGhh bmRsZV9hcm1fc3ZlX2ggKGZhbHNlKTsKKyAgICAgIGhhbmRsZV9hcm1fc21lX2ggKGZhbHNlKTsK KyAgICAgIGhhbmRsZV9hcm1fbmVvbl9zdmVfYnJpZGdlX2ggKGZhbHNlKTsKICAgICB9CiB9CiAK QEAgLTQ2MTQsNyArNDYzNyw3IEBAIHJlZ2lzdGVyX3N2cHJmb3AgKCkKIAogLyogSW1wbGVtZW50 ICNwcmFnbWEgR0NDIGFhcmNoNjQgImFybV9zdmUuaCIuICAqLwogdm9pZAotaGFuZGxlX2FybV9z dmVfaCAoKQoraGFuZGxlX2FybV9zdmVfaCAoYm9vbCBmdW5jdGlvbl9udWxsc19wKQogewogICBp ZiAoZnVuY3Rpb25fdGFibGUpCiAgICAgewpAQCAtNDY0MSwxNyArNDY2NCwyMCBAQCBoYW5kbGVf YXJtX3N2ZV9oICgpCiAKICAgLyogRGVmaW5lIHRoZSBmdW5jdGlvbnMuICAqLwogICBmdW5jdGlv bl90YWJsZSA9IG5ldyBoYXNoX3RhYmxlPHJlZ2lzdGVyZWRfZnVuY3Rpb25faGFzaGVyPiAoMTAy Myk7Ci0gIGZ1bmN0aW9uX2J1aWxkZXIgYnVpbGRlcjsKKyAgZnVuY3Rpb25fYnVpbGRlciBidWls ZGVyIChhcm1fc3ZlX2hhbmRsZSwgZnVuY3Rpb25fbnVsbHNfcCk7CiAgIGZvciAodW5zaWduZWQg aW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRSAoZnVuY3Rpb25fZ3JvdXBzKTsgKytpKQogICAgIGJ1 aWxkZXIucmVnaXN0ZXJfZnVuY3Rpb25fZ3JvdXAgKGZ1bmN0aW9uX2dyb3Vwc1tpXSk7CiB9CiAK IC8qIEltcGxlbWVudCAjcHJhZ21hIEdDQyBhYXJjaDY0ICJhcm1fbmVvbl9zdmVfYnJpZGdlLmgi LiAgKi8KIHZvaWQKLWhhbmRsZV9hcm1fbmVvbl9zdmVfYnJpZGdlX2ggKCkKK2hhbmRsZV9hcm1f bmVvbl9zdmVfYnJpZGdlX2ggKGJvb2wgZnVuY3Rpb25fbnVsbHNfcCkKIHsKKyAgaWYgKGluaXRp YWxfaW5kZXhlc1thcm1fc21lX2hhbmRsZV0gPT0gMCkKKyAgICBoYW5kbGVfYXJtX3NtZV9oICh0 cnVlKTsKKwogICAvKiBEZWZpbmUgdGhlIGZ1bmN0aW9ucy4gICovCi0gIGZ1bmN0aW9uX2J1aWxk ZXIgYnVpbGRlcjsKKyAgZnVuY3Rpb25fYnVpbGRlciBidWlsZGVyIChhcm1fbmVvbl9zdmVfaGFu ZGxlLCBmdW5jdGlvbl9udWxsc19wKTsKICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBB UlJBWV9TSVpFIChuZW9uX3N2ZV9mdW5jdGlvbl9ncm91cHMpOyArK2kpCiAgICAgYnVpbGRlci5y ZWdpc3Rlcl9mdW5jdGlvbl9ncm91cCAobmVvbl9zdmVfZnVuY3Rpb25fZ3JvdXBzW2ldKTsKIH0K QEAgLTQ2NjgsNyArNDY5NCw3IEBAIGJ1aWx0aW5fZGVjbCAodW5zaWduZWQgaW50IGNvZGUsIGJv b2wpCiAKIC8qIEltcGxlbWVudCAjcHJhZ21hIEdDQyBhYXJjaDY0ICJhcm1fc21lLmgiLiAgKi8K IHZvaWQKLWhhbmRsZV9hcm1fc21lX2ggKCkKK2hhbmRsZV9hcm1fc21lX2ggKGJvb2wgZnVuY3Rp b25fbnVsbHNfcCkKIHsKICAgaWYgKCFmdW5jdGlvbl90YWJsZSkKICAgICB7CkBAIC00Njc3LDE3 ICs0NzAzLDkgQEAgaGFuZGxlX2FybV9zbWVfaCAoKQogICAgICAgcmV0dXJuOwogICAgIH0KIAot ICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZF9wOwotICBpZiAoaW5pdGlhbGl6ZWRfcCkKLSAgICB7 Ci0gICAgICBlcnJvciAoImR1cGxpY2F0ZSBkZWZpbml0aW9uIG9mICVxcyIsICJhcm1fc21lLmgi KTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gIGluaXRpYWxpemVkX3AgPSB0cnVlOwotCiAgIHNt ZV9zd2l0Y2hlciBzbWU7CiAKLSAgZnVuY3Rpb25fYnVpbGRlciBidWlsZGVyOworICBmdW5jdGlv bl9idWlsZGVyIGJ1aWxkZXIgKGFybV9zbWVfaGFuZGxlLCBmdW5jdGlvbl9udWxsc19wKTsKICAg Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFIChzbWVfZnVuY3Rpb25fZ3Jv dXBzKTsgKytpKQogICAgIGJ1aWxkZXIucmVnaXN0ZXJfZnVuY3Rpb25fZ3JvdXAgKHNtZV9mdW5j dGlvbl9ncm91cHNbaV0pOwogfQo= --------------eHUdiSF0SnSoD8040TIer5hH--