From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70085.outbound.protection.outlook.com [40.107.7.85]) by sourceware.org (Postfix) with ESMTPS id BE08E385841D for ; Thu, 11 Nov 2021 10:34:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BE08E385841D Received: from AM6P191CA0107.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:8a::48) by GV1PR08MB7348.eurprd08.prod.outlook.com (2603:10a6:150:23::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.18; Thu, 11 Nov 2021 10:34:32 +0000 Received: from AM5EUR03FT012.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:8a:cafe::bb) by AM6P191CA0107.outlook.office365.com (2603:10a6:209:8a::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.11 via Frontend Transport; Thu, 11 Nov 2021 10:34:32 +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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT012.mail.protection.outlook.com (10.152.16.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14 via Frontend Transport; Thu, 11 Nov 2021 10:34:32 +0000 Received: ("Tessian outbound 7b0bcc4a550a:v108"); Thu, 11 Nov 2021 10:34:31 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: a8643a179c49d5ea X-CR-MTA-TID: 64aa7808 Received: from 856aa307bd81.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 220C3CD3-F621-4DDF-8F21-7A26E34E6A7B.1; Thu, 11 Nov 2021 10:34:22 +0000 Received: from EUR02-AM5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 856aa307bd81.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 11 Nov 2021 10:34:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DrlxtHfErbsT7l+m6pZE9M1z+VDYP0NTguapgbT7xnuG7TruMZwMMI3urX0cZafgfgZzdaoyk5uAMWXJc5CJhsk9deHDlkM29NGBDYdO4nn5Q/AiK9mFwOphKxmLbnfmcmo86L9J1yDqPf/btteh0vVd7U7zo4PffviBYCSkb7/XpXUo3bctoB94tDdH5NjTfXOExMyCBNIYGymLeuzBb4du0uuEcFxRCq2HGXtyuFbpmiVG/Ws90q33TZKBFrytOP+QROmaTTXTOsP+lcKpjA+6cM1EvbOd4OH7xQrZ5tqr9HzbDD3bIFfhFQIpQfC8tHm1m211AwdT6LF2dvnzSQ== 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=hOolH53O8BO0Sci58QvwDhZ17hZkduS+USOMyPvjAGU=; b=h7i+a6Ow+D8xUBpZNYtTsB0VazDiXMoP+WfQKQ+C/KsQ48cs5rNOjUdhGJ2yvW1Pyu+11Lr3kEpTjKYxVhxHjEbjilb4+3yJZEXlRjxjyxB1Xbz1x6puKmEf0S5ET+2pJe014G+OSpr8VMd20o2KHEm5UGsrWja+FssJQmXZq5ulR/CBHaHPpEHj6tkDA6DoSJ2BAXcyMsv0mK+4MODMX9zW92ksTJ3CwBG0h3g5frb7wsnFYY4dm3EZ8NufRJ9VlwZErFccf7D/EO2ViPaZN80w/v012AWoS0KAyBuLU1ASh+MxQsuvgob/krByyx2ptOzUseulFJ+nviPht7Nq1g== 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 DB9PR08MB6959.eurprd08.prod.outlook.com (2603:10a6:10:2bf::11) by DB6PR08MB2807.eurprd08.prod.outlook.com (2603:10a6:6:19::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.13; Thu, 11 Nov 2021 10:34:17 +0000 Received: from DB9PR08MB6959.eurprd08.prod.outlook.com ([fe80::4c14:9d27:688c:65fc]) by DB9PR08MB6959.eurprd08.prod.outlook.com ([fe80::4c14:9d27:688c:65fc%5]) with mapi id 15.20.4690.015; Thu, 11 Nov 2021 10:34:17 +0000 From: Jonathan Wright To: "gcc-patches@gcc.gnu.org" CC: Richard Sandiford , Kyrylo Tkachov Subject: [PATCH] aarch64: Use type-qualified builtins for LD1/ST1 Neon intrinsics Thread-Topic: [PATCH] aarch64: Use type-qualified builtins for LD1/ST1 Neon intrinsics Thread-Index: AQHX1udR6E7BbHsoc06PSdJ93pVR3g== Date: Thu, 11 Nov 2021 10:34:17 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: yes X-MS-TNEF-Correlator: suggested_attachment_session_id: a0960adc-4c5b-e891-6b0f-34cd015aa970 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 62079120-cfbd-4fbf-8e6a-08d9a4fed950 x-ms-traffictypediagnostic: DB6PR08MB2807:|GV1PR08MB7348: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:1148;OLM:1148; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: mFqFjeDWZOGneT7kQ38nRj19RzcipF6w2Wnnrzn/avc3ZtWkol3Uc4beh1AZhUHwZR/1LNvtvlL8rElOVYuXfLbNQclRv80EPQMkREK/J9Naf4ftMxmP0fA2Kqm6btlcGhyaYaShxEbqV8IYk6j/SHIgEHutaEOLH/chD+H75RwQdATu/RqKNEBD53LMQaONiqRnvvFQnQktWTWTKM8djoTgFA1F8MI3hN3amSus9JU6mMCsapu5/FiTNuSwmPZgXEYphIu+MwzLGsAHXAoueHA7wpbESdcqBVlr8wlO1ArOI64Mhrq4+XW+ARdFuc2ISCRBMtGOwt49sHIfnoZPpYWU1ew0fEoozcRaMI+5dG4vz7zltGZtEp+PfH9fpU9I2uL9AVMLwtWZiffYOJyflEgq24gQlJC2VOya1SE16TyYJjih3umwXX4DHxjQVVe5B7oUS3HaLlrC98P1SH2FcB6hCh9O7op2kTUxBasr9XSREmVc6O+B345dPI1PGKwv0KEksEg6TUAyYmh1RXcBbRqHSdezFlQWrqEL61/zxt/wahWLmLsD9oOVle0bDKRcCednWVQKWJ/jAXod72kGCglxMQrSw8P/V2kCaIinXFHyp+mmRPMjRamC1eeCpOTO88hOQdAoHQ9QypcweoNS4vB7Y97x9RL6bjuFGclBXVmDD4vD+7aaCAkEQLBTEHzAkq054UsG1T+92W7htt6qnw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB9PR08MB6959.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(508600001)(52536014)(64756008)(38070700005)(33656002)(76116006)(2906002)(6506007)(66476007)(86362001)(71200400001)(9686003)(91956017)(8936002)(4001150100001)(66556008)(66446008)(66946007)(4326008)(186003)(122000001)(7696005)(55016002)(26005)(99936003)(5660300002)(54906003)(6916009)(38100700002)(316002)(8676002); DIR:OUT; SFP:1101; Content-Type: multipart/mixed; boundary="_002_DB9PR08MB695921670A0466E676D16D3BEB949DB9PR08MB6959eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR08MB2807 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: AM5EUR03FT012.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: b232e97f-b43e-4da9-df27-08d9a4fed095 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +wfmmYo1H+/D2R9BjmqCgJnEf5/FXqpm8DOKCI/T22/+Luo1fi7jyTcCgCxNPt2rO3VHX4pcJ0AapNpMdEvKnvkz0QeOOxOXRPGkqfq+S5u+2rjjx+qlAitj3zFCNBTabaZEpq5q7Djxw1SQP1ZpdS3sGEwmnuT87s5yyRCCpxGo1MYMOM5A9gaTY1nnkJqmXmb8a4SxVRQD4Uzw+5zBxloYfu0esznIWH0mRG7OovYDLs1Wq/XuJJywxME5G8+2bm1V0VG7VeOhCvqJu1UE4r8e/X/X2Y6j1wbyO16ggXjf4b83c6dvEqYiNdLcsB7eWNv2y98ToAzTOs4G1R8qVTGc2/glBstb84Gkvz5vkou8bKm6BhbTMTD+jm+jrADPrNH5fwJc7ut+RRtvn7zmlmjyCxAZAUEykpZkerUJvLPsq+NP9KOplsTbh6UF0OjP3J1RTLvRqsLZ9Ft0cHJlsn8b8odyN+wfjlgx5x/GEhipAiy0oUGjq8wEjAfttfdptvIy7iQyXnEytTg8rxqYl+WSxzgEo7i9stI8sLew0J/JN+oiQCFGlPGtlr0cukf0EUDzxm7eeMP6mq/uDlYQJzpVYJagLj+30MiiODS/E96V8WhI8Y4qi12B3QmOy7T0xL0AxKxECrbU6Eas5KvLym2JDUTZrW505hIsiPZ4VgmPMS0AKslBMu7r2UGwUE4Zfr+i/Xpd3lbipZ9tpbo92A== 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:(4636009)(36840700001)(46966006)(70586007)(8936002)(7696005)(70206006)(4326008)(356005)(55016002)(508600001)(4001150100001)(82310400003)(316002)(336012)(2906002)(52536014)(6506007)(54906003)(86362001)(8676002)(9686003)(235185007)(81166007)(186003)(26005)(47076005)(5660300002)(36860700001)(6916009)(33656002)(99936003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Nov 2021 10:34:32.3359 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 62079120-cfbd-4fbf-8e6a-08d9a4fed950 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: AM5EUR03FT012.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB7348 X-Spam-Status: No, score=-6.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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 Nov 2021 10:34:40 -0000 --_002_DB9PR08MB695921670A0466E676D16D3BEB949DB9PR08MB6959eurp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi,=0A= =0A= This patch declares unsigned and polynomial type-qualified builtins and=0A= uses them to implement the LD1/ST1 Neon intrinsics. This removes the=0A= need for many casts in arm_neon.h.=0A= =0A= The new type-qualified builtins are also lowered to gimple - as the=0A= unqualified builtins are already.=0A= =0A= Regression tested and bootstrapped on aarch64-none-linux-gnu - no=0A= issues.=0A= =0A= Ok for master?=0A= =0A= Thanks,=0A= Jonathan=0A= =0A= ---=0A= =0A= gcc/ChangeLog:=0A= =0A= 2021-11-10 =A0Jonathan Wright =A0=0A= =0A= * config/aarch64/aarch64-builtins.c (TYPES_LOAD1_U): Define.=0A= (TYPES_LOAD1_P): Define.=0A= (TYPES_STORE1_U): Define.=0A= (TYPES_STORE1P): Rename to...=0A= (TYPES_STORE1_P): This.=0A= (get_mem_type_for_load_store): Add unsigned and poly types.=0A= (aarch64_general_gimple_fold_builtin): Add unsigned and poly=0A= type-qualified builtin declarations.=0A= * config/aarch64/aarch64-simd-builtins.def: Declare type-=0A= qualified builtins for LD1/ST1.=0A= * config/aarch64/arm_neon.h (vld1_p8): Use type-qualified=0A= builtin and remove cast.=0A= (vld1_p16): Likewise.=0A= (vld1_u8): Likewise.=0A= (vld1_u16): Likewise.=0A= (vld1_u32): Likewise.=0A= (vld1q_p8): Likewise.=0A= (vld1q_p16): Likewise.=0A= (vld1q_p64): Likewise.=0A= (vld1q_u8): Likewise.=0A= (vld1q_u16): Likewise.=0A= (vld1q_u32): Likewise.=0A= (vld1q_u64): Likewise.=0A= (vst1_p8): Likewise.=0A= (vst1_p16): Likewise.=0A= (vst1_u8): Likewise.=0A= (vst1_u16): Likewise.=0A= (vst1_u32): Likewise.=0A= (vst1q_p8): Likewise.=0A= (vst1q_p16): Likewise.=0A= (vst1q_p64): Likewise.=0A= (vst1q_u8): Likewise.=0A= (vst1q_u16): Likewise.=0A= (vst1q_u32): Likewise.=0A= (vst1q_u64): Likewise.=0A= * config/aarch64/iterators.md (VALLP_NO_DI): New iterator.=0A= --_002_DB9PR08MB695921670A0466E676D16D3BEB949DB9PR08MB6959eurp_ Content-Type: application/octet-stream; name="rb15058.patch" Content-Description: rb15058.patch Content-Disposition: attachment; filename="rb15058.patch"; size=16525; creation-date="Thu, 11 Nov 2021 10:33:09 GMT"; modification-date="Thu, 11 Nov 2021 10:33:09 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWJ1aWx0aW5zLmMgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC1idWlsdGlucy5jCmluZGV4IDUwNTNiZjBmOGZkNjYzOGJm ODRhNmRmMDZjMDk4N2EwMjE2YjY5ZTcuLmYyODY0MDFmZjNhYjAxZGQ4NjBhZTIyODU4Y2EwN2Uz NjQyNDc0MTQgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWJ1aWx0aW5z LmMKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuYwpAQCAtMzcyLDEw ICszNzIsMTIgQEAgYWFyY2g2NF90eXBlc19sb2FkMV9xdWFsaWZpZXJzW1NJTURfTUFYX0JVSUxU SU5fQVJHU10KIHN0YXRpYyBlbnVtIGFhcmNoNjRfdHlwZV9xdWFsaWZpZXJzCiBhYXJjaDY0X3R5 cGVzX2xvYWQxX3VfcXVhbGlmaWVyc1tTSU1EX01BWF9CVUlMVElOX0FSR1NdCiAgID0geyBxdWFs aWZpZXJfdW5zaWduZWQsIHF1YWxpZmllcl9jb25zdF9wb2ludGVyX21hcF9tb2RlIH07CisjZGVm aW5lIFRZUEVTX0xPQUQxX1UgKGFhcmNoNjRfdHlwZXNfbG9hZDFfdV9xdWFsaWZpZXJzKQogI2Rl ZmluZSBUWVBFU19MT0FEU1RSVUNUX1UgKGFhcmNoNjRfdHlwZXNfbG9hZDFfdV9xdWFsaWZpZXJz KQogc3RhdGljIGVudW0gYWFyY2g2NF90eXBlX3F1YWxpZmllcnMKIGFhcmNoNjRfdHlwZXNfbG9h ZDFfcF9xdWFsaWZpZXJzW1NJTURfTUFYX0JVSUxUSU5fQVJHU10KICAgPSB7IHF1YWxpZmllcl9w b2x5LCBxdWFsaWZpZXJfY29uc3RfcG9pbnRlcl9tYXBfbW9kZSB9OworI2RlZmluZSBUWVBFU19M T0FEMV9QIChhYXJjaDY0X3R5cGVzX2xvYWQxX3BfcXVhbGlmaWVycykKICNkZWZpbmUgVFlQRVNf TE9BRFNUUlVDVF9QIChhYXJjaDY0X3R5cGVzX2xvYWQxX3BfcXVhbGlmaWVycykKIAogc3RhdGlj IGVudW0gYWFyY2g2NF90eXBlX3F1YWxpZmllcnMKQEAgLTQyMywxMSArNDI1LDEyIEBAIGFhcmNo NjRfdHlwZXNfc3RvcmUxX3F1YWxpZmllcnNbU0lNRF9NQVhfQlVJTFRJTl9BUkdTXQogc3RhdGlj IGVudW0gYWFyY2g2NF90eXBlX3F1YWxpZmllcnMKIGFhcmNoNjRfdHlwZXNfc3RvcmUxX3VfcXVh bGlmaWVyc1tTSU1EX01BWF9CVUlMVElOX0FSR1NdCiAgID0geyBxdWFsaWZpZXJfdm9pZCwgcXVh bGlmaWVyX3BvaW50ZXJfbWFwX21vZGUsIHF1YWxpZmllcl91bnNpZ25lZCB9OworI2RlZmluZSBU WVBFU19TVE9SRTFfVSAoYWFyY2g2NF90eXBlc19zdG9yZTFfdV9xdWFsaWZpZXJzKQogI2RlZmlu ZSBUWVBFU19TVE9SRVNUUlVDVF9VIChhYXJjaDY0X3R5cGVzX3N0b3JlMV91X3F1YWxpZmllcnMp CiBzdGF0aWMgZW51bSBhYXJjaDY0X3R5cGVfcXVhbGlmaWVycwogYWFyY2g2NF90eXBlc19zdG9y ZTFfcF9xdWFsaWZpZXJzW1NJTURfTUFYX0JVSUxUSU5fQVJHU10KICAgPSB7IHF1YWxpZmllcl92 b2lkLCBxdWFsaWZpZXJfcG9pbnRlcl9tYXBfbW9kZSwgcXVhbGlmaWVyX3BvbHkgfTsKLSNkZWZp bmUgVFlQRVNfU1RPUkUxUCAoYWFyY2g2NF90eXBlc19zdG9yZTFfcF9xdWFsaWZpZXJzKQorI2Rl ZmluZSBUWVBFU19TVE9SRTFfUCAoYWFyY2g2NF90eXBlc19zdG9yZTFfcF9xdWFsaWZpZXJzKQog I2RlZmluZSBUWVBFU19TVE9SRVNUUlVDVF9QIChhYXJjaDY0X3R5cGVzX3N0b3JlMV9wX3F1YWxp ZmllcnMpCiAKIHN0YXRpYyBlbnVtIGFhcmNoNjRfdHlwZV9xdWFsaWZpZXJzCkBAIC0yNTkwLDQ3 ICsyNTkzLDgzIEBAIGdldF9tZW1fdHlwZV9mb3JfbG9hZF9zdG9yZSAodW5zaWduZWQgaW50IGZj b2RlKQogewogICBzd2l0Y2ggKGZjb2RlKQogICB7Ci0gICAgVkFSMSAoTE9BRDEsIGxkMSAsIDAs IExPQUQsIHY4cWkpCi0gICAgVkFSMSAoU1RPUkUxLCBzdDEgLCAwLCBTVE9SRSwgdjhxaSkKKyAg ICBWQVIxIChMT0FEMSwgbGQxLCAwLCBMT0FELCB2OHFpKQorICAgIFZBUjEgKFNUT1JFMSwgc3Qx LCAwLCBTVE9SRSwgdjhxaSkKICAgICAgIHJldHVybiBJbnQ4eDhfdDsKLSAgICBWQVIxIChMT0FE MSwgbGQxICwgMCwgTE9BRCwgdjE2cWkpCi0gICAgVkFSMSAoU1RPUkUxLCBzdDEgLCAwLCBTVE9S RSwgdjE2cWkpCisgICAgVkFSMSAoTE9BRDEsIGxkMSwgMCwgTE9BRCwgdjE2cWkpCisgICAgVkFS MSAoU1RPUkUxLCBzdDEsIDAsIFNUT1JFLCB2MTZxaSkKICAgICAgIHJldHVybiBJbnQ4eDE2X3Q7 Ci0gICAgVkFSMSAoTE9BRDEsIGxkMSAsIDAsIExPQUQsIHY0aGkpCi0gICAgVkFSMSAoU1RPUkUx LCBzdDEgLCAwLCBTVE9SRSwgdjRoaSkKKyAgICBWQVIxIChMT0FEMSwgbGQxLCAwLCBMT0FELCB2 NGhpKQorICAgIFZBUjEgKFNUT1JFMSwgc3QxLCAwLCBTVE9SRSwgdjRoaSkKICAgICAgIHJldHVy biBJbnQxNng0X3Q7Ci0gICAgVkFSMSAoTE9BRDEsIGxkMSAsIDAsIExPQUQsIHY4aGkpCi0gICAg VkFSMSAoU1RPUkUxLCBzdDEgLCAwLCBTVE9SRSwgdjhoaSkKKyAgICBWQVIxIChMT0FEMSwgbGQx LCAwLCBMT0FELCB2OGhpKQorICAgIFZBUjEgKFNUT1JFMSwgc3QxLCAwLCBTVE9SRSwgdjhoaSkK ICAgICAgIHJldHVybiBJbnQxNng4X3Q7Ci0gICAgVkFSMSAoTE9BRDEsIGxkMSAsIDAsIExPQUQs IHYyc2kpCi0gICAgVkFSMSAoU1RPUkUxLCBzdDEgLCAwLCBTVE9SRSwgdjJzaSkKKyAgICBWQVIx IChMT0FEMSwgbGQxLCAwLCBMT0FELCB2MnNpKQorICAgIFZBUjEgKFNUT1JFMSwgc3QxLCAwLCBT VE9SRSwgdjJzaSkKICAgICAgIHJldHVybiBJbnQzMngyX3Q7Ci0gICAgVkFSMSAoTE9BRDEsIGxk MSAsIDAsIExPQUQsIHY0c2kpCi0gICAgVkFSMSAoU1RPUkUxLCBzdDEgLCAwLCBTVE9SRSwgdjRz aSkKKyAgICBWQVIxIChMT0FEMSwgbGQxLCAwLCBMT0FELCB2NHNpKQorICAgIFZBUjEgKFNUT1JF MSwgc3QxLCAwLCBTVE9SRSwgdjRzaSkKICAgICAgIHJldHVybiBJbnQzMng0X3Q7Ci0gICAgVkFS MSAoTE9BRDEsIGxkMSAsIDAsIExPQUQsIHYyZGkpCi0gICAgVkFSMSAoU1RPUkUxLCBzdDEgLCAw LCBTVE9SRSwgdjJkaSkKKyAgICBWQVIxIChMT0FEMSwgbGQxLCAwLCBMT0FELCB2MmRpKQorICAg IFZBUjEgKFNUT1JFMSwgc3QxLCAwLCBTVE9SRSwgdjJkaSkKICAgICAgIHJldHVybiBJbnQ2NHgy X3Q7Ci0gICAgVkFSMSAoTE9BRDEsIGxkMSAsIDAsIExPQUQsIHY0aGYpCi0gICAgVkFSMSAoU1RP UkUxLCBzdDEgLCAwLCBTVE9SRSwgdjRoZikKKyAgICBWQVIxIChMT0FEMV9VLCBsZDEsIDAsIExP QUQsIHY4cWkpCisgICAgVkFSMSAoU1RPUkUxX1UsIHN0MSwgMCwgU1RPUkUsIHY4cWkpCisgICAg ICByZXR1cm4gVWludDh4OF90OworICAgIFZBUjEgKExPQUQxX1UsIGxkMSwgMCwgTE9BRCwgdjE2 cWkpCisgICAgVkFSMSAoU1RPUkUxX1UsIHN0MSwgMCwgU1RPUkUsIHYxNnFpKQorICAgICAgcmV0 dXJuIFVpbnQ4eDE2X3Q7CisgICAgVkFSMSAoTE9BRDFfVSwgbGQxLCAwLCBMT0FELCB2NGhpKQor ICAgIFZBUjEgKFNUT1JFMV9VLCBzdDEsIDAsIFNUT1JFLCB2NGhpKQorICAgICAgcmV0dXJuIFVp bnQxNng0X3Q7CisgICAgVkFSMSAoTE9BRDFfVSwgbGQxLCAwLCBMT0FELCB2OGhpKQorICAgIFZB UjEgKFNUT1JFMV9VLCBzdDEsIDAsIFNUT1JFLCB2OGhpKQorICAgICAgcmV0dXJuIFVpbnQxNng4 X3Q7CisgICAgVkFSMSAoTE9BRDFfVSwgbGQxLCAwLCBMT0FELCB2MnNpKQorICAgIFZBUjEgKFNU T1JFMV9VLCBzdDEsIDAsIFNUT1JFLCB2MnNpKQorICAgICAgcmV0dXJuIFVpbnQzMngyX3Q7Cisg ICAgVkFSMSAoTE9BRDFfVSwgbGQxLCAwLCBMT0FELCB2NHNpKQorICAgIFZBUjEgKFNUT1JFMV9V LCBzdDEsIDAsIFNUT1JFLCB2NHNpKQorICAgICAgcmV0dXJuIFVpbnQzMng0X3Q7CisgICAgVkFS MSAoTE9BRDFfVSwgbGQxLCAwLCBMT0FELCB2MmRpKQorICAgIFZBUjEgKFNUT1JFMV9VLCBzdDEs IDAsIFNUT1JFLCB2MmRpKQorICAgICAgcmV0dXJuIFVpbnQ2NHgyX3Q7CisgICAgVkFSMSAoTE9B RDFfUCwgbGQxLCAwLCBMT0FELCB2OHFpKQorICAgIFZBUjEgKFNUT1JFMV9QLCBzdDEsIDAsIFNU T1JFLCB2OHFpKQorICAgICAgcmV0dXJuIFBvbHk4eDhfdDsKKyAgICBWQVIxIChMT0FEMV9QLCBs ZDEsIDAsIExPQUQsIHYxNnFpKQorICAgIFZBUjEgKFNUT1JFMV9QLCBzdDEsIDAsIFNUT1JFLCB2 MTZxaSkKKyAgICAgIHJldHVybiBQb2x5OHgxNl90OworICAgIFZBUjEgKExPQUQxX1AsIGxkMSwg MCwgTE9BRCwgdjRoaSkKKyAgICBWQVIxIChTVE9SRTFfUCwgc3QxLCAwLCBTVE9SRSwgdjRoaSkK KyAgICAgIHJldHVybiBQb2x5MTZ4NF90OworICAgIFZBUjEgKExPQUQxX1AsIGxkMSwgMCwgTE9B RCwgdjhoaSkKKyAgICBWQVIxIChTVE9SRTFfUCwgc3QxLCAwLCBTVE9SRSwgdjhoaSkKKyAgICAg IHJldHVybiBQb2x5MTZ4OF90OworICAgIFZBUjEgKExPQUQxX1AsIGxkMSwgMCwgTE9BRCwgdjJk aSkKKyAgICBWQVIxIChTVE9SRTFfUCwgc3QxLCAwLCBTVE9SRSwgdjJkaSkKKyAgICAgIHJldHVy biBQb2x5NjR4Ml90OworICAgIFZBUjEgKExPQUQxLCBsZDEsIDAsIExPQUQsIHY0aGYpCisgICAg VkFSMSAoU1RPUkUxLCBzdDEsIDAsIFNUT1JFLCB2NGhmKQogICAgICAgcmV0dXJuIEZsb2F0MTZ4 NF90OwotICAgIFZBUjEgKExPQUQxLCBsZDEgLCAwLCBMT0FELCB2OGhmKQotICAgIFZBUjEgKFNU T1JFMSwgc3QxICwgMCwgU1RPUkUsIHY4aGYpCisgICAgVkFSMSAoTE9BRDEsIGxkMSwgMCwgTE9B RCwgdjhoZikKKyAgICBWQVIxIChTVE9SRTEsIHN0MSwgMCwgU1RPUkUsIHY4aGYpCiAgICAgICBy ZXR1cm4gRmxvYXQxNng4X3Q7Ci0gICAgVkFSMSAoTE9BRDEsIGxkMSAsIDAsIExPQUQsIHY0YmYp Ci0gICAgVkFSMSAoU1RPUkUxLCBzdDEgLCAwLCBTVE9SRSwgdjRiZikKKyAgICBWQVIxIChMT0FE MSwgbGQxLCAwLCBMT0FELCB2NGJmKQorICAgIFZBUjEgKFNUT1JFMSwgc3QxLCAwLCBTVE9SRSwg djRiZikKICAgICAgIHJldHVybiBCZmxvYXQxNng0X3Q7Ci0gICAgVkFSMSAoTE9BRDEsIGxkMSAs IDAsIExPQUQsIHY4YmYpCi0gICAgVkFSMSAoU1RPUkUxLCBzdDEgLCAwLCBTVE9SRSwgdjhiZikK KyAgICBWQVIxIChMT0FEMSwgbGQxLCAwLCBMT0FELCB2OGJmKQorICAgIFZBUjEgKFNUT1JFMSwg c3QxLCAwLCBTVE9SRSwgdjhiZikKICAgICAgIHJldHVybiBCZmxvYXQxNng4X3Q7Ci0gICAgVkFS MSAoTE9BRDEsIGxkMSAsIDAsIExPQUQsIHYyc2YpCi0gICAgVkFSMSAoU1RPUkUxLCBzdDEgLCAw LCBTVE9SRSwgdjJzZikKKyAgICBWQVIxIChMT0FEMSwgbGQxLCAwLCBMT0FELCB2MnNmKQorICAg IFZBUjEgKFNUT1JFMSwgc3QxLCAwLCBTVE9SRSwgdjJzZikKICAgICAgIHJldHVybiBGbG9hdDMy eDJfdDsKLSAgICBWQVIxIChMT0FEMSwgbGQxICwgMCwgTE9BRCwgdjRzZikKLSAgICBWQVIxIChT VE9SRTEsIHN0MSAsIDAsIFNUT1JFLCB2NHNmKQorICAgIFZBUjEgKExPQUQxLCBsZDEsIDAsIExP QUQsIHY0c2YpCisgICAgVkFSMSAoU1RPUkUxLCBzdDEsIDAsIFNUT1JFLCB2NHNmKQogICAgICAg cmV0dXJuIEZsb2F0MzJ4NF90OwotICAgIFZBUjEgKExPQUQxLCBsZDEgLCAwLCBMT0FELCB2MmRm KQotICAgIFZBUjEgKFNUT1JFMSwgc3QxICwgMCwgU1RPUkUsIHYyZGYpCisgICAgVkFSMSAoTE9B RDEsIGxkMSwgMCwgTE9BRCwgdjJkZikKKyAgICBWQVIxIChTVE9SRTEsIHN0MSwgMCwgU1RPUkUs IHYyZGYpCiAgICAgICByZXR1cm4gRmxvYXQ2NHgyX3Q7CiAgICAgZGVmYXVsdDoKICAgICAgIGdj Y191bnJlYWNoYWJsZSAoKTsKQEAgLTI2NjQsNiArMjcwMyw4IEBAIGFhcmNoNjRfZ2VuZXJhbF9n aW1wbGVfZm9sZF9idWlsdGluICh1bnNpZ25lZCBpbnQgZmNvZGUsIGdjYWxsICpzdG10LAogCiAg ICAgIC8qbG93ZXIgc3RvcmUgYW5kIGxvYWQgbmVvbiBidWlsdGlucyB0byBnaW1wbGUuICAqLwog ICAgICBCVUlMVElOX1ZBTExfRjE2IChMT0FEMSwgbGQxLCAwLCBMT0FEKQorICAgICBCVUlMVElO X1ZEUV9JIChMT0FEMV9VLCBsZDEsIDAsIExPQUQpCisgICAgIEJVSUxUSU5fVkFMTFBfTk9fREkg KExPQUQxX1AsIGxkMSwgMCwgTE9BRCkKIAlpZiAoIUJZVEVTX0JJR19FTkRJQU4pCiAJICB7CiAJ ICAgIGVudW0gYWFyY2g2NF9zaW1kX3R5cGUgbWVtX3R5cGUKQEAgLTI2ODYsNiArMjcyNyw4IEBA IGFhcmNoNjRfZ2VuZXJhbF9naW1wbGVfZm9sZF9idWlsdGluICh1bnNpZ25lZCBpbnQgZmNvZGUs IGdjYWxsICpzdG10LAogCWJyZWFrOwogCiAgICAgICBCVUlMVElOX1ZBTExfRjE2IChTVE9SRTEs IHN0MSwgMCwgU1RPUkUpCisgICAgICBCVUlMVElOX1ZEUV9JIChTVE9SRTFfVSwgc3QxLCAwLCBT VE9SRSkKKyAgICAgIEJVSUxUSU5fVkFMTFBfTk9fREkgKFNUT1JFMV9QLCBzdDEsIDAsIFNUT1JF KQogCWlmICghQllURVNfQklHX0VORElBTikKIAkgIHsKIAkgICAgZW51bSBhYXJjaDY0X3NpbWRf dHlwZSBtZW1fdHlwZQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc2lt ZC1idWlsdGlucy5kZWYgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLWJ1aWx0aW5z LmRlZgppbmRleCAzNWEwOTllMWZiOGRkMWFjYjllMzU1ODNkMTI2N2RmMjU3ZDk2MWIwLi40MDQ2 OTZhNzFlMGMxZmMzN2NkZjUzZmM0MjQzOWEyOGJjOWE3NDVhIDEwMDY0NAotLS0gYS9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLWJ1aWx0aW5zLmRlZgorKysgYi9nY2MvY29uZmlnL2Fh cmNoNjQvYWFyY2g2NC1zaW1kLWJ1aWx0aW5zLmRlZgpAQCAtNjk5LDExICs2OTksMTMgQEAKIAog ICAvKiBJbXBsZW1lbnRlZCBieSBhYXJjaDY0X2xkMTxWQUxMX0YxNjptb2RlPi4gICovCiAgIEJV SUxUSU5fVkFMTF9GMTYgKExPQUQxLCBsZDEsIDAsIExPQUQpCi0gIFZBUjEoU1RPUkUxUCwgbGQx LCAwLCBBTEwsIHYyZGkpCisgIEJVSUxUSU5fVkRRX0kgKExPQUQxX1UsIGxkMSwgMCwgTE9BRCkK KyAgQlVJTFRJTl9WQUxMUF9OT19ESSAoTE9BRDFfUCwgbGQxLCAwLCBMT0FEKQogCiAgIC8qIElt cGxlbWVudGVkIGJ5IGFhcmNoNjRfc3QxPFZBTExfRjE2Om1vZGU+LiAgKi8KICAgQlVJTFRJTl9W QUxMX0YxNiAoU1RPUkUxLCBzdDEsIDAsIFNUT1JFKQotICBWQVIxIChTVE9SRTFQLCBzdDEsIDAs IFNUT1JFLCB2MmRpKQorICBCVUlMVElOX1ZEUV9JIChTVE9SRTFfVSwgc3QxLCAwLCBTVE9SRSkK KyAgQlVJTFRJTl9WQUxMUF9OT19ESSAoU1RPUkUxX1AsIHN0MSwgMCwgU1RPUkUpCiAKICAgLyog SW1wbGVtZW50ZWQgYnkgZm1hPG1vZGU+NC4gICovCiAgIEJVSUxUSU5fVkhTREYgKFRFUk5PUCwg Zm1hLCA0LCBGUCkKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hcm1fbmVvbi5oIGIv Z2NjL2NvbmZpZy9hYXJjaDY0L2FybV9uZW9uLmgKaW5kZXggM2MwMzQzMmI1YjZjNmNkMGYzNDk2 NzEzNjY2MTU5MjVkMzgxMjFlNS4uN2FiZDE4MjE4NDBmODRhNzljMzdjNDBhMzMyMTQyOTRiMDZl ZGJjNiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FybV9uZW9uLmgKKysrIGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FybV9uZW9uLmgKQEAgLTE0OTYwLDE2ICsxNDk2MCwxNiBAQCBfX2V4 dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBwb2x5OHg4X3QKIF9fYXR0cmlidXRlX18gKChfX2Fs d2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZsZDFfcDgg KGNvbnN0IHBvbHk4X3QgKl9fYSkKIHsKLSAgcmV0dXJuIChwb2x5OHg4X3QpCi0gICAgX19idWls dGluX2FhcmNoNjRfbGQxdjhxaSAoKGNvbnN0IF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRfcWkgKikg X19hKTsKKyAgcmV0dXJuIF9fYnVpbHRpbl9hYXJjaDY0X2xkMXY4cWlfcHMgKAorCQkJCShjb25z dCBfX2J1aWx0aW5fYWFyY2g2NF9zaW1kX3FpICopIF9fYSk7CiB9CiAKIF9fZXh0ZW5zaW9uX18g ZXh0ZXJuIF9faW5saW5lIHBvbHkxNng0X3QKIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxp bmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZsZDFfcDE2IChjb25zdCBw b2x5MTZfdCAqX19hKQogewotICByZXR1cm4gKHBvbHkxNng0X3QpCi0gICAgX19idWlsdGluX2Fh cmNoNjRfbGQxdjRoaSAoKGNvbnN0IF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRfaGkgKikgX19hKTsK KyAgcmV0dXJuIF9fYnVpbHRpbl9hYXJjaDY0X2xkMXY0aGlfcHMgKAorCQkJCShjb25zdCBfX2J1 aWx0aW5fYWFyY2g2NF9zaW1kX2hpICopIF9fYSk7CiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJu IF9faW5saW5lIHBvbHk2NHgxX3QKQEAgLTE1MDExLDI0ICsxNTAxMSwyNCBAQCBfX2V4dGVuc2lv bl9fIGV4dGVybiBfX2lubGluZSB1aW50OHg4X3QKIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19p bmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZsZDFfdTggKGNvbnN0 IHVpbnQ4X3QgKl9fYSkKIHsKLSAgcmV0dXJuICh1aW50OHg4X3QpCi0gICAgX19idWlsdGluX2Fh cmNoNjRfbGQxdjhxaSAoKGNvbnN0IF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRfcWkgKikgX19hKTsK KyAgcmV0dXJuIF9fYnVpbHRpbl9hYXJjaDY0X2xkMXY4cWlfdXMgKAorCQkJCShjb25zdCBfX2J1 aWx0aW5fYWFyY2g2NF9zaW1kX3FpICopIF9fYSk7CiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJu IF9faW5saW5lIHVpbnQxNng0X3QKIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXywg X19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZsZDFfdTE2IChjb25zdCB1aW50MTZf dCAqX19hKQogewotICByZXR1cm4gKHVpbnQxNng0X3QpCi0gICAgX19idWlsdGluX2FhcmNoNjRf bGQxdjRoaSAoKGNvbnN0IF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRfaGkgKikgX19hKTsKKyAgcmV0 dXJuIF9fYnVpbHRpbl9hYXJjaDY0X2xkMXY0aGlfdXMgKAorCQkJCShjb25zdCBfX2J1aWx0aW5f YWFyY2g2NF9zaW1kX2hpICopIF9fYSk7CiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5s aW5lIHVpbnQzMngyX3QKIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZsZDFfdTMyIChjb25zdCB1aW50MzJfdCAqX19h KQogewotICByZXR1cm4gKHVpbnQzMngyX3QpCi0gICAgX19idWlsdGluX2FhcmNoNjRfbGQxdjJz aSAoKGNvbnN0IF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRfc2kgKikgX19hKTsKKyAgcmV0dXJuIF9f YnVpbHRpbl9hYXJjaDY0X2xkMXYyc2lfdXMgKAorCQkJCShjb25zdCBfX2J1aWx0aW5fYWFyY2g2 NF9zaW1kX3NpICopIF9fYSk7CiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVp bnQ2NHgxX3QKQEAgLTE1Mjc4LDI0ICsxNTI3OCwyNCBAQCBfX2V4dGVuc2lvbl9fIGV4dGVybiBf X2lubGluZSBwb2x5OHgxNl90CiBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18sIF9f Z251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2bGQxcV9wOCAoY29uc3QgcG9seThfdCAq X19hKQogewotICByZXR1cm4gKHBvbHk4eDE2X3QpCi0gICAgX19idWlsdGluX2FhcmNoNjRfbGQx djE2cWkgKChjb25zdCBfX2J1aWx0aW5fYWFyY2g2NF9zaW1kX3FpICopIF9fYSk7CisgIHJldHVy biBfX2J1aWx0aW5fYWFyY2g2NF9sZDF2MTZxaV9wcyAoCisJCQkJKGNvbnN0IF9fYnVpbHRpbl9h YXJjaDY0X3NpbWRfcWkgKikgX19hKTsKIH0KIAogX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxp bmUgcG9seTE2eDhfdAogX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9p bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogdmxkMXFfcDE2IChjb25zdCBwb2x5MTZfdCAqX19h KQogewotICByZXR1cm4gKHBvbHkxNng4X3QpCi0gICAgX19idWlsdGluX2FhcmNoNjRfbGQxdjho aSAoKGNvbnN0IF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRfaGkgKikgX19hKTsKKyAgcmV0dXJuIF9f YnVpbHRpbl9hYXJjaDY0X2xkMXY4aGlfcHMgKAorCQkJCShjb25zdCBfX2J1aWx0aW5fYWFyY2g2 NF9zaW1kX2hpICopIF9fYSk7CiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHBv bHk2NHgyX3QKIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZsZDFxX3A2NCAoY29uc3QgcG9seTY0X3QgKl9fYSkKIHsK LSAgcmV0dXJuIChwb2x5NjR4Ml90KQotICAgIF9fYnVpbHRpbl9hYXJjaDY0X2xkMXYyZGkgKChj b25zdCBfX2J1aWx0aW5fYWFyY2g2NF9zaW1kX2RpICopIF9fYSk7CisgIHJldHVybiBfX2J1aWx0 aW5fYWFyY2g2NF9sZDF2MmRpX3BzICgKKwkJCQkoY29uc3QgX19idWlsdGluX2FhcmNoNjRfc2lt ZF9kaSAqKSBfX2EpOwogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBpbnQ4eDE2 X3QKQEAgLTE1MzMwLDggKzE1MzMwLDggQEAgX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUg dWludDh4MTZfdAogX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQogdmxkMXFfdTggKGNvbnN0IHVpbnQ4X3QgKl9fYSkKIHsK LSAgcmV0dXJuICh1aW50OHgxNl90KQotICAgIF9fYnVpbHRpbl9hYXJjaDY0X2xkMXYxNnFpICgo Y29uc3QgX19idWlsdGluX2FhcmNoNjRfc2ltZF9xaSAqKSBfX2EpOworICByZXR1cm4gX19idWls dGluX2FhcmNoNjRfbGQxdjE2cWlfdXMgKAorCQkJCShjb25zdCBfX2J1aWx0aW5fYWFyY2g2NF9z aW1kX3FpICopIF9fYSk7CiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVpbnQ4 eDh4Ml90CkBAIC0xNTU0OSwyNCArMTU1NDksMjQgQEAgX19leHRlbnNpb25fXyBleHRlcm4gX19p bmxpbmUgdWludDE2eDhfdAogX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2du dV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogdmxkMXFfdTE2IChjb25zdCB1aW50MTZfdCAq X19hKQogewotICByZXR1cm4gKHVpbnQxNng4X3QpCi0gICAgX19idWlsdGluX2FhcmNoNjRfbGQx djhoaSAoKGNvbnN0IF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRfaGkgKikgX19hKTsKKyAgcmV0dXJu IF9fYnVpbHRpbl9hYXJjaDY0X2xkMXY4aGlfdXMgKAorCQkJCShjb25zdCBfX2J1aWx0aW5fYWFy Y2g2NF9zaW1kX2hpICopIF9fYSk7CiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5l IHVpbnQzMng0X3QKIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5s aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZsZDFxX3UzMiAoY29uc3QgdWludDMyX3QgKl9fYSkK IHsKLSAgcmV0dXJuICh1aW50MzJ4NF90KQotICAgIF9fYnVpbHRpbl9hYXJjaDY0X2xkMXY0c2kg KChjb25zdCBfX2J1aWx0aW5fYWFyY2g2NF9zaW1kX3NpICopIF9fYSk7CisgIHJldHVybiBfX2J1 aWx0aW5fYWFyY2g2NF9sZDF2NHNpX3VzICgKKwkJCQkoY29uc3QgX19idWlsdGluX2FhcmNoNjRf c2ltZF9zaSAqKSBfX2EpOwogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1aW50 NjR4Ml90CiBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lubGluZV9f LCBfX2FydGlmaWNpYWxfXykpCiB2bGQxcV91NjQgKGNvbnN0IHVpbnQ2NF90ICpfX2EpCiB7Ci0g IHJldHVybiAodWludDY0eDJfdCkKLSAgICBfX2J1aWx0aW5fYWFyY2g2NF9sZDF2MmRpICgoY29u c3QgX19idWlsdGluX2FhcmNoNjRfc2ltZF9kaSAqKSBfX2EpOworICByZXR1cm4gX19idWlsdGlu X2FhcmNoNjRfbGQxdjJkaV91cyAoCisJCQkJKGNvbnN0IF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRf ZGkgKikgX19hKTsKIH0KIAogLyogdmxkMShxKV94NC4gICovCkBAIC0yNDYyNCwxNiArMjQ2MjQs MTQgQEAgX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdm9pZAogX19hdHRyaWJ1dGVfXyAo KF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogdnN0 MV9wOCAocG9seThfdCAqX19hLCBwb2x5OHg4X3QgX19iKQogewotICBfX2J1aWx0aW5fYWFyY2g2 NF9zdDF2OHFpICgoX19idWlsdGluX2FhcmNoNjRfc2ltZF9xaSAqKSBfX2EsCi0JCQkgICAgIChp bnQ4eDhfdCkgX19iKTsKKyAgX19idWlsdGluX2FhcmNoNjRfc3QxdjhxaV9zcCAoKF9fYnVpbHRp bl9hYXJjaDY0X3NpbWRfcWkgKikgX19hLCBfX2IpOwogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVy biBfX2lubGluZSB2b2lkCiBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251 X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2c3QxX3AxNiAocG9seTE2X3QgKl9fYSwgcG9s eTE2eDRfdCBfX2IpCiB7Ci0gIF9fYnVpbHRpbl9hYXJjaDY0X3N0MXY0aGkgKChfX2J1aWx0aW5f YWFyY2g2NF9zaW1kX2hpICopIF9fYSwKLQkJCSAgICAgKGludDE2eDRfdCkgX19iKTsKKyAgX19i dWlsdGluX2FhcmNoNjRfc3QxdjRoaV9zcCAoKF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRfaGkgKikg X19hLCBfX2IpOwogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB2b2lkCkBAIC0y NDY3NSwyNCArMjQ2NzMsMjEgQEAgX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdm9pZAog X19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRp ZmljaWFsX18pKQogdnN0MV91OCAodWludDhfdCAqX19hLCB1aW50OHg4X3QgX19iKQogewotICBf X2J1aWx0aW5fYWFyY2g2NF9zdDF2OHFpICgoX19idWlsdGluX2FhcmNoNjRfc2ltZF9xaSAqKSBf X2EsCi0JCQkgICAgIChpbnQ4eDhfdCkgX19iKTsKKyAgX19idWlsdGluX2FhcmNoNjRfc3Qxdjhx aV9zdSAoKF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRfcWkgKikgX19hLCBfX2IpOwogfQogCiBfX2V4 dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB2b2lkCiBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNf aW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2c3QxX3UxNiAodWlu dDE2X3QgKl9fYSwgdWludDE2eDRfdCBfX2IpCiB7Ci0gIF9fYnVpbHRpbl9hYXJjaDY0X3N0MXY0 aGkgKChfX2J1aWx0aW5fYWFyY2g2NF9zaW1kX2hpICopIF9fYSwKLQkJCSAgICAgKGludDE2eDRf dCkgX19iKTsKKyAgX19idWlsdGluX2FhcmNoNjRfc3QxdjRoaV9zdSAoKF9fYnVpbHRpbl9hYXJj aDY0X3NpbWRfaGkgKikgX19hLCBfX2IpOwogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lu bGluZSB2b2lkCiBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lubGlu ZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2c3QxX3UzMiAodWludDMyX3QgKl9fYSwgdWludDMyeDJf dCBfX2IpCiB7Ci0gIF9fYnVpbHRpbl9hYXJjaDY0X3N0MXYyc2kgKChfX2J1aWx0aW5fYWFyY2g2 NF9zaW1kX3NpICopIF9fYSwKLQkJCSAgICAgKGludDMyeDJfdCkgX19iKTsKKyAgX19idWlsdGlu X2FhcmNoNjRfc3QxdjJzaV9zdSAoKF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRfc2kgKikgX19hLCBf X2IpOwogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB2b2lkCkBAIC0yNDcyOSwy NCArMjQ3MjQsMjEgQEAgX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdm9pZAogX19hdHRy aWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFs X18pKQogdnN0MXFfcDggKHBvbHk4X3QgKl9fYSwgcG9seTh4MTZfdCBfX2IpCiB7Ci0gIF9fYnVp bHRpbl9hYXJjaDY0X3N0MXYxNnFpICgoX19idWlsdGluX2FhcmNoNjRfc2ltZF9xaSAqKSBfX2Es Ci0JCQkgICAgICAoaW50OHgxNl90KSBfX2IpOworICBfX2J1aWx0aW5fYWFyY2g2NF9zdDF2MTZx aV9zcCAoKF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRfcWkgKikgX19hLCBfX2IpOwogfQogCiBfX2V4 dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB2b2lkCiBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNf aW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2c3QxcV9wMTYgKHBv bHkxNl90ICpfX2EsIHBvbHkxNng4X3QgX19iKQogewotICBfX2J1aWx0aW5fYWFyY2g2NF9zdDF2 OGhpICgoX19idWlsdGluX2FhcmNoNjRfc2ltZF9oaSAqKSBfX2EsCi0JCQkgICAgIChpbnQxNng4 X3QpIF9fYik7CisgIF9fYnVpbHRpbl9hYXJjaDY0X3N0MXY4aGlfc3AgKChfX2J1aWx0aW5fYWFy Y2g2NF9zaW1kX2hpICopIF9fYSwgX19iKTsKIH0KIAogX19leHRlbnNpb25fXyBleHRlcm4gX19p bmxpbmUgdm9pZAogX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQogdnN0MXFfcDY0IChwb2x5NjRfdCAqX19hLCBwb2x5NjR4 Ml90IF9fYikKIHsKLSAgX19idWlsdGluX2FhcmNoNjRfc3QxdjJkaV9zcCAoKF9fYnVpbHRpbl9h YXJjaDY0X3NpbWRfZGkgKikgX19hLAotCQkJCShwb2x5NjR4Ml90KSBfX2IpOworICBfX2J1aWx0 aW5fYWFyY2g2NF9zdDF2MmRpX3NwICgoX19idWlsdGluX2FhcmNoNjRfc2ltZF9kaSAqKSBfX2Es IF9fYik7CiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHZvaWQKQEAgLTI0Nzgx LDMyICsyNDc3MywyOCBAQCBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB2b2lkCiBfX2F0 dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNp YWxfXykpCiB2c3QxcV91OCAodWludDhfdCAqX19hLCB1aW50OHgxNl90IF9fYikKIHsKLSAgX19i dWlsdGluX2FhcmNoNjRfc3QxdjE2cWkgKChfX2J1aWx0aW5fYWFyY2g2NF9zaW1kX3FpICopIF9f YSwKLQkJCSAgICAgIChpbnQ4eDE2X3QpIF9fYik7CisgIF9fYnVpbHRpbl9hYXJjaDY0X3N0MXYx NnFpX3N1ICgoX19idWlsdGluX2FhcmNoNjRfc2ltZF9xaSAqKSBfX2EsIF9fYik7CiB9CiAKIF9f ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHZvaWQKIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5 c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZzdDFxX3UxNiAo dWludDE2X3QgKl9fYSwgdWludDE2eDhfdCBfX2IpCiB7Ci0gIF9fYnVpbHRpbl9hYXJjaDY0X3N0 MXY4aGkgKChfX2J1aWx0aW5fYWFyY2g2NF9zaW1kX2hpICopIF9fYSwKLQkJCSAgICAgKGludDE2 eDhfdCkgX19iKTsKKyAgX19idWlsdGluX2FhcmNoNjRfc3QxdjhoaV9zdSAoKF9fYnVpbHRpbl9h YXJjaDY0X3NpbWRfaGkgKikgX19hLCBfX2IpOwogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBf X2lubGluZSB2b2lkCiBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lu bGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2c3QxcV91MzIgKHVpbnQzMl90ICpfX2EsIHVpbnQz Mng0X3QgX19iKQogewotICBfX2J1aWx0aW5fYWFyY2g2NF9zdDF2NHNpICgoX19idWlsdGluX2Fh cmNoNjRfc2ltZF9zaSAqKSBfX2EsCi0JCQkgICAgIChpbnQzMng0X3QpIF9fYik7CisgIF9fYnVp bHRpbl9hYXJjaDY0X3N0MXY0c2lfc3UgKChfX2J1aWx0aW5fYWFyY2g2NF9zaW1kX3NpICopIF9f YSwgX19iKTsKIH0KIAogX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdm9pZAogX19hdHRy aWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFs X18pKQogdnN0MXFfdTY0ICh1aW50NjRfdCAqX19hLCB1aW50NjR4Ml90IF9fYikKIHsKLSAgX19i dWlsdGluX2FhcmNoNjRfc3QxdjJkaSAoKF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRfZGkgKikgX19h LAotCQkJICAgICAoaW50NjR4Ml90KSBfX2IpOworICBfX2J1aWx0aW5fYWFyY2g2NF9zdDF2MmRp X3N1ICgoX19idWlsdGluX2FhcmNoNjRfc2ltZF9kaSAqKSBfX2EsIF9fYik7CiB9CiAKIC8qIHZz dDFfbGFuZSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2l0ZXJhdG9ycy5tZCBi L2djYy9jb25maWcvYWFyY2g2NC9pdGVyYXRvcnMubWQKaW5kZXggYmRjOGJhMzU3NmNmMmM5YjRh ZTk2YjQ1YTM4MjIzNGU0ZTI1YjEzZi4uOTM4OTI0MmExYzI2OWNmM2IxMDhlZjRhYmJjYzNkM2Y1 YmYwODg0MiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2l0ZXJhdG9ycy5tZAorKysg Yi9nY2MvY29uZmlnL2FhcmNoNjQvaXRlcmF0b3JzLm1kCkBAIC0yMDcsNiArMjA3LDkgQEAKIDs7 IEFsbCBBZHZhbmNlZCBTSU1EIHBvbHlub21pYWwgbW9kZXMgYW5kIERJLgogKGRlZmluZV9tb2Rl X2l0ZXJhdG9yIFZBTExQIFtWOFFJIFYxNlFJIFY0SEkgVjhISSBWMkRJIERJXSkKIAorOzsgQWxs IEFkdmFuY2VkIFNJTUQgcG9seW5vbWlhbCBtb2Rlcy4KKyhkZWZpbmVfbW9kZV9pdGVyYXRvciBW QUxMUF9OT19ESSBbVjhRSSBWMTZRSSBWNEhJIFY4SEkgVjJESV0pCisKIDs7IEFkdmFuY2VkIFNJ TUQgbW9kZXMgZm9yIEludGVnZXIgcmVkdWN0aW9uIGFjcm9zcyBsYW5lcy4KIChkZWZpbmVfbW9k ZV9pdGVyYXRvciBWRFFWIFtWOFFJIFYxNlFJIFY0SEkgVjhISSBWNFNJIFYyREldKQogCg== --_002_DB9PR08MB695921670A0466E676D16D3BEB949DB9PR08MB6959eurp_--