From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2070d.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eaa::70d]) by sourceware.org (Postfix) with ESMTPS id 2FD7B3834F26 for ; Thu, 26 May 2022 19:17:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2FD7B3834F26 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=cornell.edu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cornell.edu ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DLcmwP62Ca7Ef8fRh7J03ZulYs8Ukhi5hP18j5JzPD5OQtj0H509k7mD5T+bqAe8MBFcyv6gh4HDP1/KA1f8JZdw23ykV4ZZ1sC4hCvluZC5WWnCwd1euVnPHi2p1atp+gyM6EZc14Eivpfqp+Q9QkKiBNJCDlFANXsvpazYYFSboZLumMhIKcNVAtcYU3EFrCqk4GAvZo1p6Ky5k5BsiUkl1hqalHCiuD0AtqARBA8p626boq0FxqJAvI2dzhUiAXI41gMrIB7Ln0ZzwNH01Xjc3abFGu0NjjiPgO3j3Bq93+CLBe+Ea9pKBcQ5vLD8Alw6uspu89iyuaNajDLY6Q== 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=/8f04T7/81cm0NHGpGr1qTOUpmpLJ05Y31RuYlkt9K8=; b=TN+H4QCH+KAY9NL8UmI4EZrtbDX7rJv6tx0kYrHE24veVZ75x3fq9YWVc/eiJQtzdGhjimimb8JHdloXt/cVE4LOXBM9iNDL4WbmuoP+dc4gE+LMex3xYfLiA8G6ReaIiC/iN+lcnnd3N8CjB9yCadwgKYFq8njZwkqS58xnq9lgTT+XJNEKReYk8YWXiAOxZkgB+WHLTiEjyGK+Cwcrh0GpVD1qeT7pg8omsqVEC9DmB8lXQSx25W46FLSdexsL07usFEVOfVSR6yov2ZGvHjnLyE87kVBP92z9kMdCR8L2XZ2gSSh9Iy3/N0PzSKYV7XZQ2Ra3kxM0P9YgZR+t/g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cornell.edu; dmarc=pass action=none header.from=cornell.edu; dkim=pass header.d=cornell.edu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cornell.edu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/8f04T7/81cm0NHGpGr1qTOUpmpLJ05Y31RuYlkt9K8=; b=hOnNeHPXPRIBxW1rS/UaV0svlqhYb5YzsuPotlrN/nqst9OHyCqB5zY4pLoshYQDvNubJ9a5pc9v3v+fVThZpzSkS0Tf62AAgeBTygAylzBjeELQsa2nreCcOw3+HRVy6e3I4vUis+jHSijty0nc1pb6zjvXVytw1aykS0CkHuw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cornell.edu; Received: from BN7PR04MB4388.namprd04.prod.outlook.com (2603:10b6:406:f8::19) by MN2PR04MB6461.namprd04.prod.outlook.com (2603:10b6:208:1a8::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Thu, 26 May 2022 19:17:15 +0000 Received: from BN7PR04MB4388.namprd04.prod.outlook.com ([fe80::ed45:6a5d:b109:673e]) by BN7PR04MB4388.namprd04.prod.outlook.com ([fe80::ed45:6a5d:b109:673e%6]) with mapi id 15.20.5273.023; Thu, 26 May 2022 19:17:14 +0000 Content-Type: multipart/mixed; boundary="------------CJYWQr1WF4psbWXoIKnwLvAS" Message-ID: <208c5b72-e1cc-f68e-b0c7-00011d8772ab@cornell.edu> Date: Thu, 26 May 2022 15:17:13 -0400 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0 Content-Language: en-US To: cygwin-patches From: Ken Brown Subject: [PATCH 3/7] Cygwin: remove regparm.h X-ClientProxiedBy: BLAPR03CA0069.namprd03.prod.outlook.com (2603:10b6:208:329::14) To BN7PR04MB4388.namprd04.prod.outlook.com (2603:10b6:406:f8::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 99ddef3d-203c-41c5-aca3-08da3f4c579a X-MS-TrafficTypeDiagnostic: MN2PR04MB6461:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: j0QMtdZg64pONM40gV51CladaBL/ca3c62WzJmQinwt6kQcuYlU12w07oBMLP6bWmvJpnqN4SSZ8cO8BA7CVIvERtAqqUPKN8xxTi8iQC/gLH7yLudiks11oQxpdxxXRgFlRVWWypi9770EBPhgPIXHXdcHhjka65VkxWEj1W2ld6+Hfz9q7HD/mbe9oxgQn56HHKeIgpl2z27+eLQCb3lykAMtOaqSZUxUpthr/k5/7iCVspeoKbAf1EtkSrG0OMYnGl0fyA+2HhRY3yVTrJpU1frp6P4UPK9yh78VVnmiRv/hU89ci9aSSsQ70MjWMZxvd243AdtyrJ2Sf1l1ZbRiWEsiL/BVPZHwRyp7JnfDBsL0WZug5PE/kRmjbHJv56zmvykdHwaTu0/18e9pRWxDVNDlbyg3qVgIVFIIgb3SfDhy5yjuuk6kCHC6x4/ZxXXe/52SMc8brroiaDnBJAHQOPbQPirme6GlKasqRJB8bHi71pMDj3VpcEWib2s1bCDlAyfovWxCTCUwwN7uOlPKOIZMgiPPCmaVT6RdWKPQ2gxFg3sJA2YKKNuIjcypPMGvuYjlQvcbNolwtwbvPevDkTtujIqjrJljwK59Etu3UWwpCIwbWY4as4+vVeJiuqBGMKdoVfVACQWi5KAArEmjNDdQeMe6RJM8xMdEPD78DAVOVpOfiHmV/F2qHmkguajuokY/fTtDe5CRXxQTrW/ZsVzH7yfZnqPPc7ydjF7E= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN7PR04MB4388.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(38100700002)(186003)(31696002)(508600001)(33964004)(86362001)(6486002)(2906002)(6506007)(2616005)(235185007)(6512007)(8936002)(19618925003)(786003)(316002)(36756003)(564344004)(66946007)(66476007)(66556008)(8676002)(6916009)(31686004)(75432002)(45980500001)(43740500002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YXdFcE0wRDhEYTNhSkkzUEhDVmxLN0p0ZTV2TEo1NVBjTHViMXlWTG5JU3Q3?= =?utf-8?B?Q0NhMnZEblBsaW9oN0hQM0hPdWpqeGNHZDVHQkFsSWVYYXVvQmp6bHRUNnZ1?= =?utf-8?B?bDdXNVU1UlVaeC9DQ1FaMncrZFhLRldFTWVWdUYrUlBra1JWRExIM2g4WFhO?= =?utf-8?B?UXV4M0tnOGxycnU3ZmlWMFBuek1wWm5IYi9UTEpNc0h2eCt5UGNOV0VNWTk1?= =?utf-8?B?VmE4YVNhQWpPQ2QweU16T2U1M2F1NFZiMURXVUluQWttRTlUdTduaGg2K2JF?= =?utf-8?B?RGNONDQ5VTE0QlZQRmJnZ2M0RUVQZEpvMDFhdGxUVUM2ME5jZzlZR1d0cUtY?= =?utf-8?B?L2hBVHNBeEJxR2dCYjUydklrRVY1Q0RMcjY1WW1iTUxDdWYrZ01VSDV2RlBi?= =?utf-8?B?U1g1Z0xnbHhVWUx0eUJnUXFsendoTDVIVlJ2aW9pYmVQSm1RMm1Yby9UVGhl?= =?utf-8?B?dVRUdDBUYlh1STYrSmRsM2hCWXhmQjhGazNOZjZzOUtBNitjMUJiRDI0MlAx?= =?utf-8?B?Q1NxaFZoekRJRlRQc1YwaWVBUVBwMTBvS05WeEdnWmJodExadGFwQUZZMDkw?= =?utf-8?B?RVdLclgxTVhEQlBrZDRLZUVHSVd5R3ZubWNYNTZKaVovK2R4RHB4Tk1IeC85?= =?utf-8?B?K2M1SEhKek1KbmovbDZ0enlLRlZ3WTVtU1d4T1o4WjNQSERtOEdUbytzcHgw?= =?utf-8?B?U3ZSWHM5ZEk1VWhPR29nZHpJUm50R1ZHc2pqdGVxa3M0STZDYmFKa2RMUjk2?= =?utf-8?B?V2U3ZTVBdmt2OE9KaXBKM0lLaGFoQ3ViUFBPY3VmR0NMWHA1UDY5T2lPc1Jh?= =?utf-8?B?OWpORXlOUEJjaCtreW5QTGppejhIQ3YxUGV3eGlhN1IzTlc2MEFXYks4M2RJ?= =?utf-8?B?QzRDNTVVRzkzTVpUaFpCZDFWY3dkaW5yZk90MHRQYUNXN2Fqam0rK2NpR3NV?= =?utf-8?B?MmxEc2ZvTzFZdm9kVHFob0JWa0JnVGJsNC9yS2xYNk5rWWNRK3pzRjd1d3cy?= =?utf-8?B?Vm14YnBQdWZ1M1ZKWjJ3RmtjOURkNjNBMVZSMTdVYlJqQzBRRHF2TFQ5M2lC?= =?utf-8?B?KzVxazhRRG52TVFKendYeTY3L1JzRXlkTTZhcTdDODR1MkZGTkxZRDRWRENq?= =?utf-8?B?QlBzanhCTHI2Qm9yVE5KaVJwd3BiT3k2UVRlRXdPRXFlM2J6S21ZWGVaQmJi?= =?utf-8?B?emxXK2Z2dWlDN1NpZE9oRzlzVnROQktJN0dVSEcrbERJMTJaRCs1MVhaYzFU?= =?utf-8?B?VThCeTRkNCtCTjA2ejRjZ2NqUDhPSjZYRm0zdzZ4dEJOaGZUTFBlaFV0K2JS?= =?utf-8?B?a055YUpyQkN4SzRTS0M0Qiswd1VPNTVKTUtaQzV6OXpxTUFVejRvUllkUXFn?= =?utf-8?B?YnhZZjFJVTRvT2RwbEFhdGVmd3FIZk10MkN5WTBMUnRVbHBnRzhFbnNMWWV6?= =?utf-8?B?cVpBZVRxa0dpSVIrQWJPVjM0YndaR24rN1gwWklxRUxHdWdDUlI5RG9xSHIr?= =?utf-8?B?MmNZSzI1Mkx4SWYrem84c08xY2Z2Uk40ZjNRaC9vS3RpVndRUlplVE1vUkV5?= =?utf-8?B?ZVZ5UTQ1ZXZPZUNJYjNxSjhhVytrQmhCWXEvdmgrRFMyVlZBbUlyQlBWT1NX?= =?utf-8?B?Tko2Z2F5K1N4RGh6L0hWZkxoS05VbzU0K3prNnc4eE1odXJoWkxGNEhDajUv?= =?utf-8?B?QTl5Y29QazdCUWVXdk1hM2lPMFB4ZTRjV1ZUMlMwM21XMVk2NFh0YThSblpj?= =?utf-8?B?bGNXSWZVWFJKbkNrSWdQQmVCbzhOWm45U2d3MHhOM3c0bkFKVVdySm8xbmRB?= =?utf-8?B?dG5XZ2hmczlOL213eFgrZWRNeGNPWXpLeHRXV0wwOWdxVkpIZVhleHhyQVA1?= =?utf-8?B?ZTN6YThHOU9sajk2R1F4QXRLUEk3Z3J2NU1pVWhlNHZpTjBQSFozd3FFKzJs?= =?utf-8?B?VmRwWlhYVXI3L2RtMm1SRndGSDZxeTYwR2pHQXBYWEtWbS9ZS3hIQ1h1azZL?= =?utf-8?B?ZGRZamVndjRaYXMvU0ZTUTc0UmlzbW03aFRiOGlXRk01SG9CeGVHcG5tZEZ1?= =?utf-8?B?RDY5ejVtRGp0TitGT0ZKcDFKdWExV05sdWo1dzJMTEtpL0dRcDJyQ1RDOGdJ?= =?utf-8?B?aGFqcFBtaVQxbVVDbklhMEw0L0M3bkJwSyttMi9mY2NVb1E5d0hFN2VrMmRU?= =?utf-8?B?NXowN0QvR205MnNrMzUzOTM0MndRSzFabkhuN0xFY25HWTMzZEdyNHdZeGh4?= =?utf-8?B?U1JQWGZmbTA5bWR2Y1Btc2dGNmxFVXhVcGhoelJQVU5FeGhtMUljazZxS2pk?= =?utf-8?B?b1JFVVh1TkVzWDZlUnZWVXhDc0NDYnFtdEZxcjZEQWcrVlBsOEIvSWNIY3hS?= =?utf-8?Q?HeS6CO0yHGotOTUh42TmXD4puhcwrwaBrt7emYa9hIV1j?= X-MS-Exchange-AntiSpam-MessageData-1: Wxgoq/FX7DmiEQ== X-OriginatorOrg: cornell.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 99ddef3d-203c-41c5-aca3-08da3f4c579a X-MS-Exchange-CrossTenant-AuthSource: BN7PR04MB4388.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2022 19:17:14.8509 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 5d7e4366-1b9b-45cf-8e79-b14b27df46e1 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: O0g9y2z3Aduwr36DTi8+DUzhsI8Bdb7jcvWbkzJnj9l+R/hJtvnEh0Lmr8VWgRN29/bHpE9faqXVtllhyxBVLA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR04MB6461 X-Spam-Status: No, score=-9.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, SPF_HELO_PASS, SPF_PASS, TXREP, T_FILL_THIS_FORM_SHORT, T_SCC_BODY_TEXT_LINE 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: cygwin-patches@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin core component patch submission and discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 May 2022 19:17:27 -0000 --------------CJYWQr1WF4psbWXoIKnwLvAS Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Patch attached. --------------CJYWQr1WF4psbWXoIKnwLvAS Content-Type: text/plain; charset=UTF-8; name="0003-Cygwin-remove-regparm.h.patch" Content-Disposition: attachment; filename="0003-Cygwin-remove-regparm.h.patch" Content-Transfer-Encoding: base64 RnJvbSBmYzg2NGUwZjFjYzBlODAwNjBmYTRmMjI2ZGE4ZjkwYTgwOThkMGYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW4gQnJvd24gPGticm93bkBjb3JuZWxsLmVkdT4KRGF0ZTog TW9uLCAyMyBNYXkgMjAyMiAxNTo1Mjo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMy83XSBDeWd3 aW46IHJlbW92ZSByZWdwYXJtLmgKClRoaXMgZmlsZSBkZWZpbmVzIHRoZSBtYWNyb3MgX19yZWcx LCBfX3JlZzIsIGFuZCBfX3JlZzMsIHdoaWNoIGFyZQpkZWZpbmVkIHRvIGJlIGVtcHR5IG9uIDY0 LWJpdCBDeWd3aW4uICBSZW1vdmUgYWxsIG9jY3VycmVuY2VzIG9mIHRoZXNlCm1hY3Jvcy4KLS0t CiB3aW5zdXAvY3lnd2luL2NoaWxkX2luZm8uaCAgICAgICAgICAgICB8ICAxMCArLQogd2luc3Vw L2N5Z3dpbi9jeWdlcnJuby5oICAgICAgICAgICAgICAgfCAgMTEgKy0KIHdpbnN1cC9jeWd3aW4v Y3lnaGVhcC5jYyAgICAgICAgICAgICAgIHwgIDM4ICstLQogd2luc3VwL2N5Z3dpbi9jeWdoZWFw LmggICAgICAgICAgICAgICAgfCAgMTYgKy0KIHdpbnN1cC9jeWd3aW4vY3lnaGVhcF9tYWxsb2Mu aCAgICAgICAgIHwgIDI0ICstCiB3aW5zdXAvY3lnd2luL2N5Z21hbGxvYy5oICAgICAgICAgICAg ICB8ICAyMSArLQogd2luc3VwL2N5Z3dpbi9jeWd0aHJlYWQuaCAgICAgICAgICAgICAgfCAgIDQg Ky0KIHdpbnN1cC9jeWd3aW4vY3lndGxzLmggICAgICAgICAgICAgICAgIHwgIDIyICstCiB3aW5z dXAvY3lnd2luL2N5Z3dhaXQuaCAgICAgICAgICAgICAgICB8ICAgMiArLQogd2luc3VwL2N5Z3dp bi9kY3J0MC5jYyAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHdpbnN1cC9jeWd3aW4vZGVidWcu Y2MgICAgICAgICAgICAgICAgIHwgICA2ICstCiB3aW5zdXAvY3lnd2luL2RlYnVnLmggICAgICAg ICAgICAgICAgICB8ICAxMCArLQogd2luc3VwL2N5Z3dpbi9kdGFibGUuaCAgICAgICAgICAgICAg ICAgfCAgIDQgKy0KIHdpbnN1cC9jeWd3aW4vZW52aXJvbi5jYyAgICAgICAgICAgICAgIHwgIDEw ICstCiB3aW5zdXAvY3lnd2luL2Vudmlyb24uaCAgICAgICAgICAgICAgICB8ICAxMiArLQogd2lu c3VwL2N5Z3dpbi9lcnJuby5jYyAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHdpbnN1cC9jeWd3 aW4vZXhjZXB0aW9ucy5jYyAgICAgICAgICAgIHwgICA0ICstCiB3aW5zdXAvY3lnd2luL2ZoYW5k bGVyLmNjICAgICAgICAgICAgICB8ICAxNCArLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlci5oICAg ICAgICAgICAgICAgfCAzMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogd2luc3VwL2N5Z3dp bi9maGFuZGxlcl9jbGlwYm9hcmQuY2MgICAgfCAgIDQgKy0KIHdpbnN1cC9jeWd3aW4vZmhhbmRs ZXJfY29uc29sZS5jYyAgICAgIHwgIDE0ICstCiB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyX2N5Z2Ry aXZlLmNjICAgICB8ICAgMiArLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9kZXYuY2MgICAgICAg ICAgfCAgIDQgKy0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfZGV2X2ZkLmNjICAgICAgIHwgICAy ICstCiB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyX2Rpc2tfZmlsZS5jYyAgICB8ICAyOCArLS0KIHdp bnN1cC9jeWd3aW4vZmhhbmRsZXJfZHNwLmNjICAgICAgICAgIHwgICA4ICstCiB3aW5zdXAvY3ln d2luL2ZoYW5kbGVyX2ZpZm8uY2MgICAgICAgICB8ICAgNiArLQogd2luc3VwL2N5Z3dpbi9maGFu ZGxlcl9mbG9wcHkuY2MgICAgICAgfCAgIDQgKy0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfbXF1 ZXVlLmNjICAgICAgIHwgICA0ICstCiB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyX25ldGRyaXZlLmNj ICAgICB8ICAgMiArLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9waXBlLmNjICAgICAgICAgfCAg IDggKy0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcHJvYy5jYyAgICAgICAgIHwgICAyICstCiB3 aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3Byb2Nlc3MuY2MgICAgICB8ICAgMiArLQogd2luc3VwL2N5 Z3dpbi9maGFuZGxlcl9wcm9jZXNzX2ZkLmNjICAgfCAgIDIgKy0KIHdpbnN1cC9jeWd3aW4vZmhh bmRsZXJfcHJvY25ldC5jYyAgICAgIHwgICAyICstCiB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3By b2NzeXMuY2MgICAgICB8ICAgNCArLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jc3lzdmlw Yy5jYyAgfCAgIDIgKy0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcmFuZG9tLmNjICAgICAgIHwg ICAyICstCiB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3Jhdy5jYyAgICAgICAgICB8ICAgMiArLQog d2luc3VwL2N5Z3dpbi9maGFuZGxlcl9yZWdpc3RyeS5jYyAgICAgfCAgIDIgKy0KIHdpbnN1cC9j eWd3aW4vZmhhbmRsZXJfc2VyaWFsLmNjICAgICAgIHwgICA0ICstCiB3aW5zdXAvY3lnd2luL2Zo YW5kbGVyX3NpZ25hbGZkLmNjICAgICB8ICAgNCArLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9z b2NrZXQuY2MgICAgICAgfCAgIDQgKy0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfc29ja2V0X2lu ZXQuY2MgIHwgICAyICstCiB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3NvY2tldF9sb2NhbC5jYyB8 ICAgNCArLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9zb2NrZXRfdW5peC5jYyAgfCAgIDYgKy0K IHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfdGFwZS5jYyAgICAgICAgIHwgICA2ICstCiB3aW5zdXAv Y3lnd2luL2ZoYW5kbGVyX3RpbWVyZmQuY2MgICAgICB8ICAgNCArLQogd2luc3VwL2N5Z3dpbi9m aGFuZGxlcl90dHkuY2MgICAgICAgICAgfCAgMTIgKy0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJf dmlydHVhbC5jYyAgICAgIHwgICA0ICstCiB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3dpbmRvd3Mu Y2MgICAgICB8ICAgMiArLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlcl96ZXJvLmNjICAgICAgICAg fCAgIDIgKy0KIHdpbnN1cC9jeWd3aW4vaGVhcC5jYyAgICAgICAgICAgICAgICAgIHwgICAyICst CiB3aW5zdXAvY3lnd2luL2luY2x1ZGUvc3lzL3N0cmFjZS5oICAgICB8ICAxMiArLQogd2luc3Vw L2N5Z3dpbi9taXNjZnVuY3MuY2MgICAgICAgICAgICAgfCAgIDQgKy0KIHdpbnN1cC9jeWd3aW4v bWlzY2Z1bmNzLmggICAgICAgICAgICAgIHwgIDE0ICstCiB3aW5zdXAvY3lnd2luL21vdW50Lmgg ICAgICAgICAgICAgICAgICB8ICAgMiArLQogd2luc3VwL2N5Z3dpbi9udGVhLmNjICAgICAgICAg ICAgICAgICAgfCAgIDQgKy0KIHdpbnN1cC9jeWd3aW4vcGF0aC5jYyAgICAgICAgICAgICAgICAg IHwgIDEyICstCiB3aW5zdXAvY3lnd2luL3BhdGguaCAgICAgICAgICAgICAgICAgICB8ICAyMCAr LQogd2luc3VwL2N5Z3dpbi9waW5mby5jYyAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHdpbnN1 cC9jeWd3aW4vcGluZm8uaCAgICAgICAgICAgICAgICAgIHwgIDE2ICstCiB3aW5zdXAvY3lnd2lu L3JlZ3Bhcm0uaCAgICAgICAgICAgICAgICB8ICAxOSAtLQogd2luc3VwL2N5Z3dpbi9zZWNfaGVs cGVyLmNjICAgICAgICAgICAgfCAgIDIgKy0KIHdpbnN1cC9jeWd3aW4vc2VjX3Bvc2l4YWNsLmNj ICAgICAgICAgIHwgICA4ICstCiB3aW5zdXAvY3lnd2luL3NlY3VyaXR5LmggICAgICAgICAgICAg ICB8ICAzNCArLS0KIHdpbnN1cC9jeWd3aW4vc2lnbmFsLmNjICAgICAgICAgICAgICAgIHwgICA4 ICstCiB3aW5zdXAvY3lnd2luL3NpZ3Byb2MuY2MgICAgICAgICAgICAgICB8ICAxOCArLQogd2lu c3VwL2N5Z3dpbi9zaWdwcm9jLmggICAgICAgICAgICAgICAgfCAgMjYgKy0KIHdpbnN1cC9jeWd3 aW4vc3Bhd24uY2MgICAgICAgICAgICAgICAgIHwgICAyICstCiB3aW5zdXAvY3lnd2luL3N5bmMu aCAgICAgICAgICAgICAgICAgICB8ICAxMCArLQogd2luc3VwL2N5Z3dpbi9zeXNjYWxscy5jYyAg ICAgICAgICAgICAgfCAgIDQgKy0KIHdpbnN1cC9jeWd3aW4vdHR5LmNjICAgICAgICAgICAgICAg ICAgIHwgICAyICstCiB3aW5zdXAvY3lnd2luL3R0eS5oICAgICAgICAgICAgICAgICAgICB8ICAg NiArLQogd2luc3VwL2N5Z3dpbi93aW5kb3cuY2MgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHdp bnN1cC9jeWd3aW4vd2luZi5oICAgICAgICAgICAgICAgICAgIHwgIDEwICstCiB3aW5zdXAvY3ln d2luL3dpbmluZm8uaCAgICAgICAgICAgICAgICB8ICAgNCArLQogd2luc3VwL2N5Z3dpbi93aW5z dXAuaCAgICAgICAgICAgICAgICAgfCAgMTkgKy0KIDc4IGZpbGVzIGNoYW5nZWQsIDQ3MyBpbnNl cnRpb25zKCspLCA0OTUgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgd2luc3VwL2N5 Z3dpbi9yZWdwYXJtLmgKCmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2NoaWxkX2luZm8uaCBi L3dpbnN1cC9jeWd3aW4vY2hpbGRfaW5mby5oCmluZGV4IDE4MWRiOGZhMi4uOGE4Y2EyNTYzIDEw MDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2NoaWxkX2luZm8uaAorKysgYi93aW5zdXAvY3lnd2lu L2NoaWxkX2luZm8uaApAQCAtNzgsOCArNzgsOCBAQCBwdWJsaWM6CiAgIH5jaGlsZF9pbmZvICgp OwogICB2b2lkIHJlZnJlc2hfY3lnaGVhcCAoKSB7IGN5Z2hlYXBfbWF4ID0gOjpjeWdoZWFwX21h eDsgfQogICB2b2lkIHJlYWR5IChib29sKTsKLSAgYm9vbCBfX3JlZzMgc3luYyAoaW50LCBIQU5E TEUmLCBEV09SRCk7Ci0gIERXT1JEIF9fcmVnMiBwcm9jX3JldHJ5IChIQU5ETEUpOworICBib29s IHN5bmMgKGludCwgSEFORExFJiwgRFdPUkQpOworICBEV09SRCBwcm9jX3JldHJ5IChIQU5ETEUp OwogICBib29sIGlzc3RyYWNlZCAoKSBjb25zdCB7cmV0dXJuICEhKGZsYWcgJiBfQ0lfU1RSQUNF RCk7fQogICBib29sIGlzY3lnd2luICgpIGNvbnN0IHtyZXR1cm4gISEoZmxhZyAmIF9DSV9JU0NZ R1dJTik7fQogICBib29sIHNhd19jdHJsX2MgKCkgY29uc3Qge3JldHVybiAhIShmbGFnICYgX0NJ X1NBV19DVFJMX0MpO30KQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAJCQkvLyB1c2VyIHN0 YWNrCiAgIGNoYXIgZmlsbGVyWzRdOwogICBjaGlsZF9pbmZvX2ZvcmsgKCk7Ci0gIHZvaWQgX19y ZWcxIGhhbmRsZV9mb3JrICgpOworICB2b2lkIGhhbmRsZV9mb3JrICgpOwogICBib29sIGFib3J0 IChjb25zdCBjaGFyICpmbXQgPSBOVUxMLCAuLi4pOwogICB2b2lkIGFsbG9jX3N0YWNrICgpOwog fTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgIHZvaWQgcmVhdHRhY2hfY2hpbGRyZW4g KCk7CiAgIHZvaWQgKm9wZXJhdG9yIG5ldyAoc2l6ZV90LCB2b2lkICpwKSBfX2F0dHJpYnV0ZV9f ICgobm90aHJvdykpIHtyZXR1cm4gcDt9CiAgIHZvaWQgc2V0IChjaGlsZF9pbmZvX3R5cGVzIGNp LCBib29sIGIpIHsgbmV3ICh0aGlzKSBjaGlsZF9pbmZvX3NwYXduIChjaSwgYik7fQotICB2b2lk IF9fcmVnMSBoYW5kbGVfc3Bhd24gKCk7CisgIHZvaWQgaGFuZGxlX3NwYXduICgpOwogICB2b2lk IHNldF9zZW0gKEhBTkRMRSBfc2VtKQogICB7CiAgICAgLyogRG9uJ3QgbGVhayBzZW1hcGhvcmUg aGFuZGxlIGludG8gZXhlYydlZCBwcm9jZXNzLiAqLwpAQCAtMTkzLDcgKzE5Myw3IEBAIHB1Ymxp YzoKICAgYm9vbCBnZXRfcGFyZW50X2hhbmRsZSAoKTsKICAgYm9vbCBoYXNfZXhlY2VkX2N5Z3dp biAoKSBjb25zdCB7IHJldHVybiBpc2N5Z3dpbiAoKSAmJiBoYXNfZXhlY2VkICgpOyB9CiAgIG9w ZXJhdG9yIEhBTkRMRSYgKCkge3JldHVybiBoRXhlY2VkO30KLSAgaW50IF9fcmVnMyB3b3JrZXIg KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqY29uc3QgKiwgY29uc3QgY2hhciAqY29uc3QgW10s CisgIGludCB3b3JrZXIgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqY29uc3QgKiwgY29uc3Qg Y2hhciAqY29uc3QgW10sCiAJCSAgICAgaW50LCBpbnQgPSAtMSwgaW50ID0gLTEpOwogfTsKIApk aWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9jeWdlcnJuby5oIGIvd2luc3VwL2N5Z3dpbi9jeWdl cnJuby5oCmluZGV4IDAwOWFlNjM1YS4uYjk4MmJjMjdkIDEwMDY0NAotLS0gYS93aW5zdXAvY3ln d2luL2N5Z2Vycm5vLmgKKysrIGIvd2luc3VwL2N5Z3dpbi9jeWdlcnJuby5oCkBAIC05LDcgKzks NiBAQCBkZXRhaWxzLiAqLwogI2lmbmRlZiBfQ1lHRVJSTk9fSAogI2RlZmluZSBfQ1lHRVJSTk9f SAogI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSAicmVncGFybS5oIgogCiBzdHJ1Y3QgZXJy bWFwX3QKIHsKQEAgLTE4LDEwICsxNywxMCBAQCBzdHJ1Y3QgZXJybWFwX3QKICAgaW50IGU7CQkg LyogZXJybm8gdmVyc2lvbiBvZiBlcnJvciAqLwogfTsKIAotdm9pZCBfX3JlZzMgc2V0ZXJybm9f ZnJvbV93aW5fZXJyb3IgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBEV09SRCBjb2RlKTsK LXZvaWQgX19yZWczIHNldGVycm5vX2Zyb21fbnRfc3RhdHVzIChjb25zdCBjaGFyICpmaWxlLCBp bnQgbGluZSwgTlRTVEFUVVMgc3RhdHVzKTsKLWludCBfX3JlZzIgZ2V0ZXJybm9fZnJvbV93aW5f ZXJyb3IgKERXT1JEIGNvZGUgPSBHZXRMYXN0RXJyb3IgKCksIGludCBkZWZlcnJubyA9IDEzIC8q RUFDQ0VTUyovKTsKLWludCBfX3JlZzIgZ2V0ZXJybm9fZnJvbV9udF9zdGF0dXMgKE5UU1RBVFVT IHN0YXR1cywgaW50IGRlZmVycm5vID0gMTMgLypFQUNDRVNTKi8pOwordm9pZCBzZXRlcnJub19m cm9tX3dpbl9lcnJvciAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIERXT1JEIGNvZGUpOwor dm9pZCBzZXRlcnJub19mcm9tX250X3N0YXR1cyAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUs IE5UU1RBVFVTIHN0YXR1cyk7CitpbnQgZ2V0ZXJybm9fZnJvbV93aW5fZXJyb3IgKERXT1JEIGNv ZGUgPSBHZXRMYXN0RXJyb3IgKCksIGludCBkZWZlcnJubyA9IDEzIC8qRUFDQ0VTUyovKTsKK2lu dCBnZXRlcnJub19mcm9tX250X3N0YXR1cyAoTlRTVEFUVVMgc3RhdHVzLCBpbnQgZGVmZXJybm8g PSAxMyAvKkVBQ0NFU1MqLyk7CiAKIGlubGluZSB2b2lkIF9fYXR0cmlidXRlX18gKChhbHdheXNf aW5saW5lKSkKIHNldGVycm5vIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSkKQEAgLTQyLDcg KzQxLDcgQEAgX19zZXRfZXJybm8gKGNvbnN0IGNoYXIgKmZuLCBpbnQgbG4sIGludCB2YWwpCiAj ZGVmaW5lIHNldF9lcnJubyh2YWwpIF9fc2V0X2Vycm5vIChfX1BSRVRUWV9GVU5DVElPTl9fLCBf X0xJTkVfXywgKHZhbCkpCiAKIGludCBmaW5kX3dpbnNvY2tfZXJybm8gKERXT1JEIHdoeSk7Ci12 b2lkIF9fcmVnMiBfX3NldF93aW5zb2NrX2Vycm5vIChjb25zdCBjaGFyICpmbiwgaW50IGxuKTsK K3ZvaWQgX19zZXRfd2luc29ja19lcnJubyAoY29uc3QgY2hhciAqZm4sIGludCBsbik7CiAjZGVm aW5lIHNldF93aW5zb2NrX2Vycm5vKCkgX19zZXRfd2luc29ja19lcnJubyAoX19GVU5DVElPTl9f LCBfX0xJTkVfXykKIAogI2RlZmluZSBnZXRfZXJybm8oKSAgKGVycm5vKQpkaWZmIC0tZ2l0IGEv d2luc3VwL2N5Z3dpbi9jeWdoZWFwLmNjIGIvd2luc3VwL2N5Z3dpbi9jeWdoZWFwLmNjCmluZGV4 IDFiZTdmMGMzMi4uNDY1YTliY2RkIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2N5Z2hlYXAu Y2MKKysrIGIvd2luc3VwL2N5Z3dpbi9jeWdoZWFwLmNjCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRp YyBOT19DT1BZIHVpbnQzMl90IG50aHJlYWRzOwogI2RlZmluZSBNVk1BUF9PUFRJT05TIChGSUxF X01BUF9XUklURSkKIAogZXh0ZXJuICJDIiB7Ci1zdGF0aWMgdm9pZCBfX3JlZzEgX2NmcmVlICh2 b2lkICopOworc3RhdGljIHZvaWQgX2NmcmVlICh2b2lkICopOwogc3RhdGljIHZvaWQgKl9fc3Rk Y2FsbCBfY3NicmsgKGludCk7CiB9CiAKQEAgLTMyNiwxMCArMzI2LDEwIEBAIF9jc2JyayAoaW50 IHNicykKIAogLyogQ29weXJpZ2h0IChDKSAxOTk3LCAyMDAwIERKIERlbG9yaWUgKi8KIAotc3Rh dGljIHZvaWQgKl9fcmVnMSBfY21hbGxvYyAodW5zaWduZWQgc2l6ZSk7Ci1zdGF0aWMgdm9pZCAq X19yZWcyIF9jcmVhbGxvYyAodm9pZCAqcHRyLCB1bnNpZ25lZCBzaXplKTsKK3N0YXRpYyB2b2lk ICpfY21hbGxvYyAodW5zaWduZWQgc2l6ZSk7CitzdGF0aWMgdm9pZCAqX2NyZWFsbG9jICh2b2lk ICpwdHIsIHVuc2lnbmVkIHNpemUpOwogCi1zdGF0aWMgdm9pZCAqX19yZWcxCitzdGF0aWMgdm9p ZCAqCiBfY21hbGxvYyAodW5zaWduZWQgc2l6ZSkKIHsKICAgX2NtYWxsb2NfZW50cnkgKnJ2YzsK QEAgLTM2Niw3ICszNjYsNyBAQCBfY21hbGxvYyAodW5zaWduZWQgc2l6ZSkKICAgcmV0dXJuIHJ2 Yy0+ZGF0YTsKIH0KIAotc3RhdGljIHZvaWQgX19yZWcxCitzdGF0aWMgdm9pZAogX2NmcmVlICh2 b2lkICpwdHIpCiB7CiAgIGN5Z2hlYXBfcHJvdGVjdC5hY3F1aXJlICgpOwpAQCAtMzc3LDcgKzM3 Nyw3IEBAIF9jZnJlZSAodm9pZCAqcHRyKQogICBjeWdoZWFwX3Byb3RlY3QucmVsZWFzZSAoKTsK IH0KIAotc3RhdGljIHZvaWQgKl9fcmVnMgorc3RhdGljIHZvaWQgKgogX2NyZWFsbG9jICh2b2lk ICpwdHIsIHVuc2lnbmVkIHNpemUpCiB7CiAgIHZvaWQgKm5ld3B0cjsKQEAgLTQ1NiwyNiArNDU2 LDI2IEBAIGNyZWFsbG9jICh2b2lkICpzLCBzaXplX3QgbiwgY29uc3QgY2hhciAqZm4pCiAgIHJl dHVybiBjcmV0dXJuICh0LCBjLCBuLCBmbik7CiB9CiAKLWV4dGVybiAiQyIgdm9pZCAqX19yZWcy CitleHRlcm4gIkMiIHZvaWQgKgogY3JlYWxsb2MgKHZvaWQgKnMsIHNpemVfdCBuKQogewogICBy ZXR1cm4gY3JlYWxsb2MgKHMsIG4sIE5VTEwpOwogfQogCi1leHRlcm4gIkMiIHZvaWQgKl9fcmVn MgorZXh0ZXJuICJDIiB2b2lkICoKIGNyZWFsbG9jX2Fib3J0ICh2b2lkICpzLCBzaXplX3QgbikK IHsKICAgcmV0dXJuIGNyZWFsbG9jIChzLCBuLCAiY3JlYWxsb2MiKTsKIH0KIAotZXh0ZXJuICJD IiB2b2lkIF9fcmVnMQorZXh0ZXJuICJDIiB2b2lkCiBjZnJlZSAodm9pZCAqcykKIHsKICAgYXNz ZXJ0ICghaW5oZWFwIChzKSk7CiAgIF9jZnJlZSAodG9jeWdoZWFwIChzKSk7CiB9CiAKLWV4dGVy biAiQyIgdm9pZCBfX3JlZzIKK2V4dGVybiAiQyIgdm9pZAogY2ZyZWVfYW5kX3NldCAoY2hhciAq JnMsIGNoYXIgKndoYXQpCiB7CiAgIGlmIChzICYmIHMgIT0gYWxtb3N0X251bGwpCkBAIC00OTQs MTkgKzQ5NCwxOSBAQCBjY2FsbG9jIChjeWdoZWFwX3R5cGVzIHgsIHNpemVfdCBuLCBzaXplX3Qg c2l6ZSwgY29uc3QgY2hhciAqZm4pCiAgIHJldHVybiBjcmV0dXJuICh4LCBjLCBuLCBmbik7CiB9 CiAKLWV4dGVybiAiQyIgdm9pZCAqX19yZWczCitleHRlcm4gIkMiIHZvaWQgKgogY2NhbGxvYyAo Y3lnaGVhcF90eXBlcyB4LCBzaXplX3Qgbiwgc2l6ZV90IHNpemUpCiB7CiAgIHJldHVybiBjY2Fs bG9jICh4LCBuLCBzaXplLCBOVUxMKTsKIH0KIAotZXh0ZXJuICJDIiB2b2lkICpfX3JlZzMKK2V4 dGVybiAiQyIgdm9pZCAqCiBjY2FsbG9jX2Fib3J0IChjeWdoZWFwX3R5cGVzIHgsIHNpemVfdCBu LCBzaXplX3Qgc2l6ZSkKIHsKICAgcmV0dXJuIGNjYWxsb2MgKHgsIG4sIHNpemUsICJjY2FsbG9j Iik7CiB9CiAKLWV4dGVybiAiQyIgUFdDSEFSIF9fcmVnMQorZXh0ZXJuICJDIiBQV0NIQVIKIGN3 Y3NkdXAgKFBDV1NUUiBzKQogewogICBQV0NIQVIgcCA9IChQV0NIQVIpIGNtYWxsb2MgKEhFQVBf U1RSLCAod2NzbGVuIChzKSArIDEpICogc2l6ZW9mIChXQ0hBUikpOwpAQCAtNTE2LDcgKzUxNiw3 IEBAIGN3Y3NkdXAgKFBDV1NUUiBzKQogICByZXR1cm4gcDsKIH0KIAotZXh0ZXJuICJDIiBQV0NI QVIgX19yZWcxCitleHRlcm4gIkMiIFBXQ0hBUgogY3djc2R1cDEgKFBDV1NUUiBzKQogewogICBQ V0NIQVIgcCA9IChQV0NIQVIpIGNtYWxsb2MgKEhFQVBfMV9TVFIsICh3Y3NsZW4gKHMpICsgMSkg KiBzaXplb2YgKFdDSEFSKSk7CkBAIC01MjYsNyArNTI2LDcgQEAgY3djc2R1cDEgKFBDV1NUUiBz KQogICByZXR1cm4gcDsKIH0KIAotZXh0ZXJuICJDIiBjaGFyICpfX3JlZzEKK2V4dGVybiAiQyIg Y2hhciAqCiBjc3RyZHVwIChjb25zdCBjaGFyICpzKQogewogICBjaGFyICpwID0gKGNoYXIgKikg Y21hbGxvYyAoSEVBUF9TVFIsIHN0cmxlbiAocykgKyAxKTsKQEAgLTUzNiw3ICs1MzYsNyBAQCBj c3RyZHVwIChjb25zdCBjaGFyICpzKQogICByZXR1cm4gcDsKIH0KIAotZXh0ZXJuICJDIiBjaGFy ICpfX3JlZzEKK2V4dGVybiAiQyIgY2hhciAqCiBjc3RyZHVwMSAoY29uc3QgY2hhciAqcykKIHsK ICAgY2hhciAqcCA9IChjaGFyICopIGNtYWxsb2MgKEhFQVBfMV9TVFIsIHN0cmxlbiAocykgKyAx KTsKQEAgLTY1NSw3ICs2NTUsNyBAQCBpbml0X2N5Z2hlYXA6OmFkZF90bHMgKF9jeWd0bHMgKnQp CiAgICsrbnRocmVhZHM7CiB9CiAKLUhBTkRMRSBfX3JlZzMKK0hBTkRMRQogaW5pdF9jeWdoZWFw OjpyZW1vdmVfdGxzIChfY3lndGxzICp0KQogewogICBIQU5ETEUgbXV0ZXggPSBOVUxMOwpAQCAt Njc5LDcgKzY3OSw3IEBAIGluaXRfY3lnaGVhcDo6cmVtb3ZlX3RscyAoX2N5Z3RscyAqdCkKICAg cmV0dXJuIG11dGV4OwogfQogCi10aHJlYWRsaXN0X3QgX19yZWcyICoKK3RocmVhZGxpc3RfdCAq CiBpbml0X2N5Z2hlYXA6OmZpbmRfdGxzIChfY3lndGxzICp0bHMpCiB7CiAgIHRsc19zZW50cnkg aGVyZSAoSU5GSU5JVEUpOwpAQCAtNzA0LDcgKzcwNCw3IEBAIGluaXRfY3lnaGVhcDo6ZmluZF90 bHMgKF9jeWd0bHMgKnRscykKICAgcmV0dXJuIHQ7CiB9CiAKLXRocmVhZGxpc3RfdCBfX3JlZzMg KgordGhyZWFkbGlzdF90ICoKIGluaXRfY3lnaGVhcDo6ZmluZF90bHMgKGludCBzaWcsIGJvb2wm IGlzc2lnX3dhaXQpCiB7CiAgIGRlYnVnX3ByaW50ZiAoInNpZyAlZFxuIiwgc2lnKTsKZGlmZiAt LWdpdCBhL3dpbnN1cC9jeWd3aW4vY3lnaGVhcC5oIGIvd2luc3VwL2N5Z3dpbi9jeWdoZWFwLmgK aW5kZXggMGJjYTg5OTViLi41MjhjNjFlZDYgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vY3ln aGVhcC5oCisrKyBiL3dpbnN1cC9jeWd3aW4vY3lnaGVhcC5oCkBAIC0xOTEsNyArMTkxLDcgQEAg cHVibGljOgogICAgIHJldHVybiBlZmZlY19jeWdzaWQuc3RyaW5nIChidWYpOwogICB9CiAKLSAg Y29uc3QgY2hhciBfX3JlZzMgKnRlc3RfdWlkIChjaGFyIComLCBjb25zdCBjaGFyICosIHNpemVf dCk7CisgIGNvbnN0IGNoYXIgKnRlc3RfdWlkIChjaGFyIComLCBjb25zdCBjaGFyICosIHNpemVf dCk7CiB9OwogCiAvKiBjd2QgY2FjaGUgc3R1ZmYuICAqLwpAQCAtMzUwLDggKzM1MCw4IEBAIHN0 cnVjdCB1c2VyX2hlYXBfaW5mbwogICB2b2lkICp0b3A7CiAgIHZvaWQgKm1heDsKICAgU0laRV9U IGNodW5rOwotICB2b2lkIF9fcmVnMiAqc2JyayAocHRyZGlmZl90KTsKLSAgdm9pZCBfX3JlZzEg aW5pdCAoKTsKKyAgdm9pZCAqc2JyayAocHRyZGlmZl90KTsKKyAgdm9pZCBpbml0ICgpOwogfTsK IAogY2xhc3MgY3lnaGVhcF9kb21haW5faW5mbwpAQCAtNTg1LDExICs1ODUsMTEgQEAgc3RydWN0 IGluaXRfY3lnaGVhcDogcHVibGljIG1pbmlfY3lnaGVhcAogICBob29rX2NoYWluIGhvb2tzOwog ICB2b2lkIGNsb3NlX2N0dHkgKCk7CiAgIHZvaWQgaW5pdF9pbnN0YWxsYXRpb25fcm9vdCAoKTsK LSAgdm9pZCBfX3JlZzEgaW5pdF90bHNfbGlzdCAoKTs7Ci0gIHZvaWQgX19yZWcyIGFkZF90bHMg KF9jeWd0bHMgKik7Ci0gIEhBTkRMRSBfX3JlZzMgcmVtb3ZlX3RscyAoX2N5Z3RscyAqKTsKLSAg dGhyZWFkbGlzdF90IF9fcmVnMiAqZmluZF90bHMgKF9jeWd0bHMgKik7Ci0gIHRocmVhZGxpc3Rf dCBfX3JlZzMgKmZpbmRfdGxzIChpbnQsIGJvb2wmKTsKKyAgdm9pZCBpbml0X3Rsc19saXN0ICgp OzsKKyAgdm9pZCBhZGRfdGxzIChfY3lndGxzICopOworICBIQU5ETEUgcmVtb3ZlX3RscyAoX2N5 Z3RscyAqKTsKKyAgdGhyZWFkbGlzdF90ICpmaW5kX3RscyAoX2N5Z3RscyAqKTsKKyAgdGhyZWFk bGlzdF90ICpmaW5kX3RscyAoaW50LCBib29sJik7CiAgIHNpZ3NldF90IGNvbXB1dGVfc2lnYmxr bWFzayAoKTsKICAgdm9pZCB1bmxvY2tfdGxzICh0aHJlYWRsaXN0X3QgKnQpIHsgaWYgKHQpIFJl bGVhc2VNdXRleCAodC0+bXV0ZXgpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9j eWdoZWFwX21hbGxvYy5oIGIvd2luc3VwL2N5Z3dpbi9jeWdoZWFwX21hbGxvYy5oCmluZGV4IDc0 ZjBiYjYxOS4uNjk1MGU4MjY1IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2N5Z2hlYXBfbWFs bG9jLmgKKysrIGIvd2luc3VwL2N5Z3dpbi9jeWdoZWFwX21hbGxvYy5oCkBAIC0zOCwxOCArMzgs MTggQEAgZW51bSBjeWdoZWFwX3R5cGVzCiB9OwogCiBleHRlcm4gIkMiIHsKLXZvaWQgX19yZWcx IGNmcmVlICh2b2lkICopOwotdm9pZCAqX19yZWcyIGNtYWxsb2MgKGN5Z2hlYXBfdHlwZXMsIHNp emVfdCk7Ci12b2lkICpfX3JlZzIgY3JlYWxsb2MgKHZvaWQgKiwgc2l6ZV90KTsKLXZvaWQgKl9f cmVnMyBjY2FsbG9jIChjeWdoZWFwX3R5cGVzLCBzaXplX3QsIHNpemVfdCk7Ci12b2lkICpfX3Jl ZzIgY21hbGxvY19hYm9ydCAoY3lnaGVhcF90eXBlcywgc2l6ZV90KTsKLXZvaWQgKl9fcmVnMiBj cmVhbGxvY19hYm9ydCAodm9pZCAqLCBzaXplX3QpOwotdm9pZCAqX19yZWczIGNjYWxsb2NfYWJv cnQgKGN5Z2hlYXBfdHlwZXMsIHNpemVfdCwgc2l6ZV90KTsKLVBXQ0hBUiBfX3JlZzEgY3djc2R1 cCAoUENXU1RSKTsKLVBXQ0hBUiBfX3JlZzEgY3djc2R1cDEgKFBDV1NUUik7Ci1jaGFyICpfX3Jl ZzEgY3N0cmR1cCAoY29uc3QgY2hhciAqKTsKLWNoYXIgKl9fcmVnMSBjc3RyZHVwMSAoY29uc3Qg Y2hhciAqKTsKLXZvaWQgX19yZWcyIGNmcmVlX2FuZF9zZXQgKGNoYXIgKiYsIGNoYXIgKiA9IE5V TEwpOwordm9pZCBjZnJlZSAodm9pZCAqKTsKK3ZvaWQgKmNtYWxsb2MgKGN5Z2hlYXBfdHlwZXMs IHNpemVfdCk7Cit2b2lkICpjcmVhbGxvYyAodm9pZCAqLCBzaXplX3QpOwordm9pZCAqY2NhbGxv YyAoY3lnaGVhcF90eXBlcywgc2l6ZV90LCBzaXplX3QpOwordm9pZCAqY21hbGxvY19hYm9ydCAo Y3lnaGVhcF90eXBlcywgc2l6ZV90KTsKK3ZvaWQgKmNyZWFsbG9jX2Fib3J0ICh2b2lkICosIHNp emVfdCk7Cit2b2lkICpjY2FsbG9jX2Fib3J0IChjeWdoZWFwX3R5cGVzLCBzaXplX3QsIHNpemVf dCk7CitQV0NIQVIgY3djc2R1cCAoUENXU1RSKTsKK1BXQ0hBUiBjd2NzZHVwMSAoUENXU1RSKTsK K2NoYXIgKmNzdHJkdXAgKGNvbnN0IGNoYXIgKik7CitjaGFyICpjc3RyZHVwMSAoY29uc3QgY2hh ciAqKTsKK3ZvaWQgY2ZyZWVfYW5kX3NldCAoY2hhciAqJiwgY2hhciAqID0gTlVMTCk7CiB9CiAK ICNlbmRpZiAvKl9DWUdIRUFQX01BTExPQ19IKi8KZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4v Y3lnbWFsbG9jLmggYi93aW5zdXAvY3lnd2luL2N5Z21hbGxvYy5oCmluZGV4IGE2MDMzYzE2Ni4u OTA5NWY5YjRhIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2N5Z21hbGxvYy5oCisrKyBiL3dp bnN1cC9jeWd3aW4vY3lnbWFsbG9jLmgKQEAgLTksMTcgKzksMTYgQEAgZGV0YWlscy4gKi8KICNp ZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKLSNpbmNsdWRlICJyZWdwYXJt LmgiCi0KLXZvaWQgX19yZWcxIGRsZnJlZSAodm9pZCAqcCk7Ci12b2lkIF9fcmVnMSAqZGxtYWxs b2MgKHNpemVfdCBzaXplKTsKLXZvaWQgX19yZWcyICpkbHJlYWxsb2MgKHZvaWQgKnAsIHNpemVf dCBzaXplKTsKLXZvaWQgX19yZWcyICpkbGNhbGxvYyAoc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6 ZSk7Ci12b2lkIF9fcmVnMiAqZGxtZW1hbGlnbiAoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IGJ5 dGVzKTsKLXZvaWQgX19yZWcxICpkbHZhbGxvYyAoc2l6ZV90IGJ5dGVzKTsKLXNpemVfdCBfX3Jl ZzEgZGxtYWxsb2NfdXNhYmxlX3NpemUgKHZvaWQgKnApOwotaW50IF9fcmVnMSBkbG1hbGxvY190 cmltIChzaXplX3QpOwotaW50IF9fcmVnMiBkbG1hbGxvcHQgKGludCBwLCBpbnQgdik7CisKK3Zv aWQgZGxmcmVlICh2b2lkICpwKTsKK3ZvaWQgKmRsbWFsbG9jIChzaXplX3Qgc2l6ZSk7Cit2b2lk ICpkbHJlYWxsb2MgKHZvaWQgKnAsIHNpemVfdCBzaXplKTsKK3ZvaWQgKmRsY2FsbG9jIChzaXpl X3Qgbm1lbWIsIHNpemVfdCBzaXplKTsKK3ZvaWQgKmRsbWVtYWxpZ24gKHNpemVfdCBhbGlnbm1l bnQsIHNpemVfdCBieXRlcyk7Cit2b2lkICpkbHZhbGxvYyAoc2l6ZV90IGJ5dGVzKTsKK3NpemVf dCBkbG1hbGxvY191c2FibGVfc2l6ZSAodm9pZCAqcCk7CitpbnQgZGxtYWxsb2NfdHJpbSAoc2l6 ZV90KTsKK2ludCBkbG1hbGxvcHQgKGludCBwLCBpbnQgdik7CiB2b2lkIGRsbWFsbG9jX3N0YXRz ICgpOwogCiAjaWZkZWYgX194ODZfNjRfXwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9jeWd0 aHJlYWQuaCBiL3dpbnN1cC9jeWd3aW4vY3lndGhyZWFkLmgKaW5kZXggZjNiMGJmMDBkLi5lZDU3 YzkzMDEgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vY3lndGhyZWFkLmgKKysrIGIvd2luc3Vw L2N5Z3dpbi9jeWd0aHJlYWQuaApAQCAtMjgsNyArMjgsNyBAQCBjbGFzcyBjeWd0aHJlYWQKICAg Ym9vbCBpc19mcmVlcmFuZ2U7CiAgIHN0YXRpYyBib29sIGV4aXRpbmc7CiAgIEhBTkRMRSBub3Rp ZnlfZGV0YWNoZWQ7Ci0gIHZvaWQgX19yZWcxIGNyZWF0ZSAoKTsKKyAgdm9pZCBjcmVhdGUgKCk7 CiAgIHN0YXRpYyB2b2lkIENBTExCQUNLIGFzeW5jX2NyZWF0ZSAoVUxPTkdfUFRSKTsKICBwdWJs aWM6CiAgIGJvb2wgdGVybWluYXRlX3RocmVhZCAoKTsKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3Mg Y3lndGhyZWFkCiAgIHN0YXRpYyBEV09SRCBXSU5BUEkgc2ltcGxlc3R1YiAoVk9JRCAqKTsKICAg c3RhdGljIERXT1JEIG1haW5fdGhyZWFkX2lkOwogICBzdGF0aWMgY29uc3QgY2hhciAqbmFtZSAo RFdPUkQgPSAwKTsKLSAgdm9pZCBfX3JlZzIgY2FsbGZ1bmMgKGJvb2wpIF9fYXR0cmlidXRlX18g KChub2lubGluZSwgKSk7CisgIHZvaWQgY2FsbGZ1bmMgKGJvb2wpIF9fYXR0cmlidXRlX18gKChu b2lubGluZSwgKSk7CiAgIHZvaWQgYXV0b19yZWxlYXNlICgpIHtmdW5jID0gTlVMTDt9CiAgIHZv aWQgcmVsZWFzZSAoYm9vbCk7CiAgIGN5Z3RocmVhZCAoTFBUSFJFQURfU1RBUlRfUk9VVElORSBz dGFydCwgdW5zaWduZWQgbiwgTFBWT0lEIHBhcmFtLCBjb25zdCBjaGFyICpuYW1lLCBIQU5ETEUg bm90aWZ5ID0gTlVMTCkKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vY3lndGxzLmggYi93aW5z dXAvY3lnd2luL2N5Z3Rscy5oCmluZGV4IGJmZDM1ODI2OC4uZDIyMzBhNDkzIDEwMDY0NAotLS0g YS93aW5zdXAvY3lnd2luL2N5Z3Rscy5oCisrKyBiL3dpbnN1cC9jeWd3aW4vY3lndGxzLmgKQEAg LTIwMywyNyArMjAzLDI3IEBAIHB1YmxpYzogLyogRG8gTk9UIHJlbW92ZSB0aGlzIHB1YmxpYzog bGluZSwgaXQncyBhIG1hcmtlciBmb3IgZ2VudGxzX29mZnNldHMuICovCiAgIHN0YXRpYyB2b2lk IGNhbGwgKERXT1JEICgqKSAodm9pZCAqLCB2b2lkICopLCB2b2lkICopOwogICB2b2lkIHJlbW92 ZSAoRFdPUkQpOwogICB2b2lkIHB1c2ggKF9fdGxzc3RhY2tfdCBhZGRyKSB7KnN0YWNrcHRyKysg PSAoX190bHNzdGFja190KSBhZGRyO30KLSAgX190bHNzdGFja190IF9fcmVnMSBwb3AgKCk7Cisg IF9fdGxzc3RhY2tfdCBwb3AgKCk7CiAgIF9fdGxzc3RhY2tfdCByZXRhZGRyICgpIHtyZXR1cm4g c3RhY2twdHJbLTFdO30KICAgYm9vbCBpc2luaXRpYWxpemVkICgpIGNvbnN0CiAgIHsKICAgICBy ZXR1cm4gaW5pdGlhbGl6ZWQgPT0gQ1lHVExTX0lOSVRJQUxJWkVEOwogICB9Ci0gIGJvb2wgX19y ZWczIGludGVycnVwdF9ub3cgKENPTlRFWFQgKiwgc2lnaW5mb190Jiwgdm9pZCAqLCBzdHJ1Y3Qg c2lnYWN0aW9uJik7Ci0gIHZvaWQgX19yZWczIGludGVycnVwdF9zZXR1cCAoc2lnaW5mb190Jiwg dm9pZCAqLCBzdHJ1Y3Qgc2lnYWN0aW9uJik7CisgIGJvb2wgaW50ZXJydXB0X25vdyAoQ09OVEVY VCAqLCBzaWdpbmZvX3QmLCB2b2lkICosIHN0cnVjdCBzaWdhY3Rpb24mKTsKKyAgdm9pZCBpbnRl cnJ1cHRfc2V0dXAgKHNpZ2luZm9fdCYsIHZvaWQgKiwgc3RydWN0IHNpZ2FjdGlvbiYpOwogCiAg IGJvb2wgaW5zaWRlX2tlcm5lbCAoQ09OVEVYVCAqKTsKLSAgdm9pZCBfX3JlZzIgc2lnbmFsX2Rl YnVnZ2VyIChzaWdpbmZvX3QmKTsKKyAgdm9pZCBzaWduYWxfZGVidWdnZXIgKHNpZ2luZm9fdCYp OwogCiAjaWZkZWYgQ1lHVExTX0hBTkRMRQogICBvcGVyYXRvciBIQU5ETEUgKCkgY29uc3Qge3Jl dHVybiB0aWQgPyB0aWQtPndpbjMyX29ial9pZCA6IE5VTEw7fQogI2VuZGlmCi0gIGludCBfX3Jl ZzEgY2FsbF9zaWduYWxfaGFuZGxlciAoKTsKLSAgdm9pZCBfX3JlZzEgcmVtb3ZlX3dxIChEV09S RCk7Ci0gIHZvaWQgX19yZWcxIGZpeHVwX2FmdGVyX2ZvcmsgKCk7Ci0gIHZvaWQgX19yZWcxIGxv Y2sgKCk7Ci0gIHZvaWQgX19yZWcxIHVubG9jayAoKTsKLSAgYm9vbCBfX3JlZzEgbG9ja2VkICgp OworICBpbnQgY2FsbF9zaWduYWxfaGFuZGxlciAoKTsKKyAgdm9pZCByZW1vdmVfd3EgKERXT1JE KTsKKyAgdm9pZCBmaXh1cF9hZnRlcl9mb3JrICgpOworICB2b2lkIGxvY2sgKCk7CisgIHZvaWQg dW5sb2NrICgpOworICBib29sIGxvY2tlZCAoKTsKICAgSEFORExFIGdldF9zaWduYWxfYXJyaXZl ZCAoYm9vbCB3YWl0X2Zvcl9sb2NrID0gdHJ1ZSkKICAgewogICAgIGlmICghc2lnbmFsX2Fycml2 ZWQpCkBAIC0yNjMsNyArMjYzLDcgQEAgcHVibGljOiAvKiBEbyBOT1QgcmVtb3ZlIHRoaXMgcHVi bGljOiBsaW5lLCBpdCdzIGEgbWFya2VyIGZvciBnZW50bHNfb2Zmc2V0cy4gKi8KICAgdm9pZCBo YW5kbGVfU0lHQ09OVCAoKTsKICAgc3RhdGljIHZvaWQgY2xlYW51cF9lYXJseShzdHJ1Y3QgX3Jl ZW50ICopOwogcHJpdmF0ZToKLSAgdm9pZCBfX3JlZzMgY2FsbDIgKERXT1JEICgqKSAodm9pZCAq LCB2b2lkICopLCB2b2lkICosIHZvaWQgKik7CisgIHZvaWQgY2FsbDIgKERXT1JEICgqKSAodm9p ZCAqLCB2b2lkICopLCB2b2lkICosIHZvaWQgKik7CiAgIHZvaWQgcmVtb3ZlX3BlbmRpbmdfc2ln cyAoKTsKIH07CiAjcHJhZ21hIHBhY2socG9wKQpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9j eWd3YWl0LmggYi93aW5zdXAvY3lnd2luL2N5Z3dhaXQuaAppbmRleCBiNDI3MGE5ZmEuLjYyMTJj MzM0ZSAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9jeWd3YWl0LmgKKysrIGIvd2luc3VwL2N5 Z3dpbi9jeWd3YWl0LmgKQEAgLTI3LDcgKzI3LDcgQEAgZXh0ZXJuIExBUkdFX0lOVEVHRVIgY3df bm93YWl0X3N0b3JhZ2U7CiAKIGNvbnN0IHVuc2lnbmVkIGN3X3N0ZF9tYXNrID0gY3dfY2FuY2Vs IHwgY3dfY2FuY2VsX3NlbGYgfCBjd19zaWc7CiAKLURXT1JEIF9fcmVnMyBjeWd3YWl0IChIQU5E TEUsIFBMQVJHRV9JTlRFR0VSIHRpbWVvdXQsCitEV09SRCBjeWd3YWl0IChIQU5ETEUsIFBMQVJH RV9JTlRFR0VSIHRpbWVvdXQsCiAJCSAgICAgICB1bnNpZ25lZCA9IGN3X3N0ZF9tYXNrKTsKIAog ZXh0ZXJuIGlubGluZSBEV09SRCBfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCmRpZmYg LS1naXQgYS93aW5zdXAvY3lnd2luL2RjcnQwLmNjIGIvd2luc3VwL2N5Z3dpbi9kY3J0MC5jYwpp bmRleCAxN2QzYjY2NTMuLjVmYjM0ZDdlOCAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9kY3J0 MC5jYworKysgYi93aW5zdXAvY3lnd2luL2RjcnQwLmNjCkBAIC0xMTM3LDcgKzExMzcsNyBAQCBf X21haW4gKHZvaWQpCiAgIHNpZ19kaXNwYXRjaF9wZW5kaW5nICh0cnVlKTsKIH0KIAotdm9pZCBf X3JlZzEKK3ZvaWQKIGRvX2V4aXQgKGludCBzdGF0dXMpCiB7CiAgIHN5c2NhbGxfcHJpbnRmICgi ZG9fZXhpdCAoJWQpLCBleGl0X3N0YXRlICVkIiwgc3RhdHVzLCBleGl0X3N0YXRlKTsKQEAgLTEz MzIsNyArMTMzMiw3IEBAIGFyZSB1bmFibGUgdG8gZmluZCBhbm90aGVyIGN5Z3dpbiBETEwuIiwK IH0KIAogI2lmZGVmIERFQlVHR0lORwotdm9pZCBfX3JlZzEKK3ZvaWQKIGN5Z2JlbmNoIChjb25z dCBjaGFyICpzKQogewogICBpZiAoR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEgKCJDWUdXSU5fQkVO Q0giLCBOVUxMLCAwKSkKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZGVidWcuY2MgYi93aW5z dXAvY3lnd2luL2RlYnVnLmNjCmluZGV4IGZjMmZlZDRkZi4uZjIxYThjNTE4IDEwMDY0NAotLS0g YS93aW5zdXAvY3lnd2luL2RlYnVnLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZGVidWcuY2MKQEAg LTk5LDcgKzk5LDcgQEAgbmV3aCAoKQogICByZXR1cm4gTlVMTDsKIH0KIAotdm9pZCBfX3JlZzMK K3ZvaWQKIG1vZGlmeV9oYW5kbGUgKGNvbnN0IGNoYXIgKmZ1bmMsIGludCBsbiwgSEFORExFIGgs IGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgaW5oKQogewogICBsb2NrX2RlYnVnIGhlcmU7CkBAIC0x MTUsNyArMTE1LDcgQEAgbW9kaWZ5X2hhbmRsZSAoY29uc3QgY2hhciAqZnVuYywgaW50IGxuLCBI QU5ETEUgaCwgY29uc3QgY2hhciAqbmFtZSwgYm9vbCBpbmgpCiB9CiAKIC8qIEFkZCBhIGhhbmRs ZSB0byB0aGUgbGlua2VkIGxpc3Qgb2Yga25vd24gaGFuZGxlcy4gKi8KLXZvaWQgX19yZWczCit2 b2lkCiBhZGRfaGFuZGxlIChjb25zdCBjaGFyICpmdW5jLCBpbnQgbG4sIEhBTkRMRSBoLCBjb25z dCBjaGFyICpuYW1lLCBib29sIGluaCkKIHsKICAgaGFuZGxlX2xpc3QgKmhsOwpAQCAtMjA5LDcg KzIwOSw3IEBAIG1hcmtfY2xvc2VkIChjb25zdCBjaGFyICpmdW5jLCBpbnQgbG4sIEhBTkRMRSBo LCBjb25zdCBjaGFyICpuYW1lLCBib29sIGZvcmNlKQogCiAvKiBDbG9zZSBhIGtub3duIGhhbmRs ZS4gIENvbXBsYWluIGlmICFmb3JjZSBhbmQgY2xvc2luZyBhIGtub3duIGhhbmRsZSBvcgogICAg aWYgdGhlIG5hbWUgb2YgdGhlIGhhbmRsZSBiZWluZyBjbG9zZWQgZG9lcyBub3QgbWF0Y2ggdGhl IHJlZ2lzdGVyZWQgbmFtZS4gKi8KLWJvb2wgX19yZWczCitib29sCiBjbG9zZV9oYW5kbGUgKGNv bnN0IGNoYXIgKmZ1bmMsIGludCBsbiwgSEFORExFIGgsIGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wg Zm9yY2UpCiB7CiAgIGJvb2wgcmV0OwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9kZWJ1Zy5o IGIvd2luc3VwL2N5Z3dpbi9kZWJ1Zy5oCmluZGV4IGQzZjdlYTNlZC4uMGZjZmExM2E1IDEwMDY0 NAotLS0gYS93aW5zdXAvY3lnd2luL2RlYnVnLmgKKysrIGIvd2luc3VwL2N5Z3dpbi9kZWJ1Zy5o CkBAIC01MywxMiArNTMsMTIgQEAgZGV0YWlscy4gKi8KICMgZGVmaW5lIFZlcmlmeUhhbmRsZSho KSB2ZXJpZnlfaGFuZGxlIChfX1BSRVRUWV9GVU5DVElPTl9fLCBfX0xJTkVfXywgKGgpKQogCiB2 b2lkIGRlYnVnX2luaXQgKCk7Ci12b2lkIF9fcmVnMyBhZGRfaGFuZGxlIChjb25zdCBjaGFyICos IGludCwgSEFORExFLCBjb25zdCBjaGFyICosIGJvb2wgPSBmYWxzZSk7Ci12b2lkIF9fcmVnMyB2 ZXJpZnlfaGFuZGxlIChjb25zdCBjaGFyICosIGludCwgSEFORExFKTsKLWJvb2wgX19yZWczIGNs b3NlX2hhbmRsZSAoY29uc3QgY2hhciAqLCBpbnQsIEhBTkRMRSwgY29uc3QgY2hhciAqLCBib29s KTsKK3ZvaWQgYWRkX2hhbmRsZSAoY29uc3QgY2hhciAqLCBpbnQsIEhBTkRMRSwgY29uc3QgY2hh ciAqLCBib29sID0gZmFsc2UpOwordm9pZCB2ZXJpZnlfaGFuZGxlIChjb25zdCBjaGFyICosIGlu dCwgSEFORExFKTsKK2Jvb2wgY2xvc2VfaGFuZGxlIChjb25zdCBjaGFyICosIGludCwgSEFORExF LCBjb25zdCBjaGFyICosIGJvb2wpOwogZXh0ZXJuICJDIiB2b2lkIGNvbnNvbGVfcHJpbnRmIChj b25zdCBjaGFyICpmbXQsLi4uKTsKLXZvaWQgX19yZWcxIGN5Z2JlbmNoIChjb25zdCBjaGFyICpz KTsKLXZvaWQgX19yZWczIG1vZGlmeV9oYW5kbGUgKGNvbnN0IGNoYXIgKiwgaW50LCBIQU5ETEUs IGNvbnN0IGNoYXIgKiwgYm9vbCk7Cit2b2lkIGN5Z2JlbmNoIChjb25zdCBjaGFyICpzKTsKK3Zv aWQgbW9kaWZ5X2hhbmRsZSAoY29uc3QgY2hhciAqLCBpbnQsIEhBTkRMRSwgY29uc3QgY2hhciAq LCBib29sKTsKIHZvaWQgc2V0Y2xleGVjIChIQU5ETEUsIEhBTkRMRSwgYm9vbCk7CiB2b2lkIGRl YnVnX2ZpeHVwX2FmdGVyX2ZvcmtfZXhlYyAoKTsKIApkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dp bi9kdGFibGUuaCBiL3dpbnN1cC9jeWd3aW4vZHRhYmxlLmgKaW5kZXggZTFhODQ2MWI4Li43ODAz ZmFlMWIgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZHRhYmxlLmgKKysrIGIvd2luc3VwL2N5 Z3dpbi9kdGFibGUuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgIHZvaWQgdmZvcmtfcGFy ZW50X3Jlc3RvcmUgKCk7CiAgIHZvaWQgdmZvcmtfY2hpbGRfZml4dXAgKCk7CiAgIGZoYW5kbGVy X2Jhc2UgKmR1cF93b3JrZXIgKGZoYW5kbGVyX2Jhc2UgKm9sZGZoLCBpbnQgZmxhZ3MpOwotICBp bnQgZXh0ZW5kIChzaXplX3QsIHNpemVfdCkgX19yZWczOworICBpbnQgZXh0ZW5kIChzaXplX3Qs IHNpemVfdCk7CiAgIHZvaWQgZml4dXBfYWZ0ZXJfZm9yayAoSEFORExFKTsKICAgdm9pZCBmaXh1 cF9jbG9zZSAoc2l6ZV90LCBmaGFuZGxlcl9iYXNlICopOwogCkBAIC01Nyw3ICs1Nyw3IEBAIHB1 YmxpYzoKICAgfQogICBpbnQgZmluZF91bnVzZWRfaGFuZGxlIChzaXplX3Qgc3RhcnQpOwogICBp bnQgZmluZF91bnVzZWRfaGFuZGxlICgpIHsgcmV0dXJuIGZpbmRfdW51c2VkX2hhbmRsZSAoZmly c3RfZmRfZm9yX29wZW4pO30KLSAgdm9pZCBfX3JlZzIgcmVsZWFzZSAoaW50IGZkKTsKKyAgdm9p ZCByZWxlYXNlIChpbnQgZmQpOwogICB2b2lkIGluaXRfc3RkX2ZpbGVfZnJvbV9oYW5kbGUgKGlu dCBmZCwgSEFORExFIGhhbmRsZSk7CiAgIGludCBkdXAzIChpbnQgb2xkZmQsIGludCBuZXdmZCwg aW50IGZsYWdzKTsKICAgdm9pZCBmaXh1cF9hZnRlcl9leGVjICgpOwpkaWZmIC0tZ2l0IGEvd2lu c3VwL2N5Z3dpbi9lbnZpcm9uLmNjIGIvd2luc3VwL2N5Z3dpbi9lbnZpcm9uLmNjCmluZGV4IDAz ZjgyNzcxOC4uOTliMjIwZDU1IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2Vudmlyb24uY2MK KysrIGIvd2luc3VwL2N5Z3dpbi9lbnZpcm9uLmNjCkBAIC00MTEsNyArNDExLDcgQEAgd2luX2Vu djo6YWRkX2NhY2hlIChjb25zdCBjaGFyICppbl9wb3NpeCwgY29uc3QgY2hhciAqaW5fbmF0aXZl KQogICB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lLiAg KmluX3Bvc2l4IGlzIGFueQogICBrbm93biBwb3NpeCB2YWx1ZSBmb3IgdGhlIGVudmlyb25tZW50 IHZhcmlhYmxlLiBSZXR1cm5zIGEgcG9pbnRlciB0bwogICB0aGUgYXBwcm9wcmlhdGUgY29udmVy c2lvbiBzdHJ1Y3R1cmUuICAqLwotd2luX2VudiAqIF9fcmVnMword2luX2VudiAqCiBnZXR3aW5l bnYgKGNvbnN0IGNoYXIgKmVudiwgY29uc3QgY2hhciAqaW5fcG9zaXgsIHdpbl9lbnYgKnRlbXAp CiB7CiAgIGlmICghbWF0Y2hfZmlyc3RfY2hhciAoZW52LCBXQykpCkBAIC04NjMsNyArODYzLDcg QEAgZW52aXJvbl9pbml0IChjaGFyICoqZW52cCwgaW50IGVudmMpCiAKIGludCBzYXdURVJNID0g MDsKIAotY2hhciAqKiBfX3JlZzIKK2NoYXIgKioKIHdpbjMyZW52X3RvX2N5Z2VudiAoUFdDSEFS IHJhd2VudiwgYm9vbCBwb3NpZnkpCiB7CiAgIHRtcF9wYXRoYnVmIHRwOwpAQCAtOTIxLDcgKzky MSw3IEBAIGVudl9zb3J0IChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogICByZXR1cm4g c3RyY21wICgqcCwgKnEpOwogfQogCi1jaGFyICogX19yZWczCitjaGFyICoKIGdldHdpbmVudmVx IChjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwgaW50IHgpCiB7CiAgIFdDSEFSIG5h bWUwW25hbWVsZW4gLSAxXTsKQEAgLTk1Niw3ICs5NTYsNyBAQCBzdHJ1Y3Qgc3BlbnYKICAgYm9v bCBhZGRfaWZfZXhpc3RzOwkJLyogaWYgdHJ1ZSwgcmV0cmlldmUgdmFsdWUgZnJvbSBjYWNoZSAq LwogICBjb25zdCBjaGFyICogKGN5Z2hlYXBfdXNlcjo6KmZyb21fY3lnaGVhcCkgKGNvbnN0IGNo YXIgKiwgc2l6ZV90KTsKIAotICBjaGFyIF9fcmVnMyAqcmV0cmlldmUgKGJvb2wsIGNvbnN0IGNo YXIgKiBjb25zdCA9IE5VTEwpOworICBjaGFyICpyZXRyaWV2ZSAoYm9vbCwgY29uc3QgY2hhciAq IGNvbnN0ID0gTlVMTCk7CiB9OwogCiAjZGVmaW5lIGVudl9kb250YWRkIGFsbW9zdF9udWxsCkBA IC0xMDU2LDcgKzEwNTYsNyBAQCBlbnZfY29tcGFyZSAoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2 b2lkICptZW1iKQogICAgY2hpbGRfaW5mb19zcGF3bjo6d29ya2VyLiAgSWYgc28sIHdlJ3JlIGFs c28gZmV0Y2hpbmcgdGhlIFdpbmRvd3MgZGVmYXVsdAogICAgZW52aXJvbm1lbnQgZm9yIHRoZSBu ZXcgdXNlciwgYW5kIG1lcmdlIGl0IGludG8gdGhlIGVudmlyb25tZW50IHdlIHByb3BhZ2UKICAg IHRvIHRoZSBjaGlsZC4gKi8KLWNoYXIgKiogX19yZWczCitjaGFyICoqCiBidWlsZF9lbnYgKGNv bnN0IGNoYXIgKiBjb25zdCAqZW52cCwgUFdDSEFSICZlbnZibG9jaywgaW50ICZlbnZjLAogCSAg IGJvb2wgbm9fZW52YmxvY2ssIEhBTkRMRSBuZXdfdG9rZW4pCiB7CmRpZmYgLS1naXQgYS93aW5z dXAvY3lnd2luL2Vudmlyb24uaCBiL3dpbnN1cC9jeWd3aW4vZW52aXJvbi5oCmluZGV4IDI2OTU5 MWEwMS4uZmMzNGYxZTkxIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2Vudmlyb24uaAorKysg Yi93aW5zdXAvY3lnd2luL2Vudmlyb24uaApAQCAtNyw3ICs3LDcgQEAgQ3lnd2luIGxpY2Vuc2Uu ICBQbGVhc2UgY29uc3VsdCB0aGUgZmlsZSAiQ1lHV0lOX0xJQ0VOU0UiIGZvcgogZGV0YWlscy4g Ki8KIAogLyogSW5pdGlhbGl6ZSB0aGUgZW52aXJvbm1lbnQgKi8KLXZvaWQgX19yZWcyIGVudmly b25faW5pdCAoY2hhciAqKiwgaW50KTsKK3ZvaWQgZW52aXJvbl9pbml0IChjaGFyICoqLCBpbnQp OwogCiAvKiBUaGUgc3RydWN0dXJlIGJlbG93IGlzIHVzZWQgdG8gY29udHJvbCBjb252ZXJzaW9u IHRvL2Zyb20gcG9zaXgtc3R5bGUKICAgIGZpbGUgc3BlY3MuICBDdXJyZW50bHksIG9ubHkgUEFU SCBhbmQgSE9NRSBhcmUgY29udmVydGVkLCBidXQgUEFUSApAQCAtMjIsNyArMjIsNyBAQCBzdHJ1 Y3Qgd2luX2VudgogICAgIHNzaXplX3QgKCp0b3Bvc2l4KSAoY29uc3Qgdm9pZCAqLCB2b2lkICos IHNpemVfdCk7CiAgICAgc3NpemVfdCAoKnRvd2luMzIpIChjb25zdCB2b2lkICosIHZvaWQgKiwg c2l6ZV90KTsKICAgICBib29sIGltbWVkaWF0ZTsKLSAgICB2b2lkIF9fcmVnMyBhZGRfY2FjaGUg KGNvbnN0IGNoYXIgKmluX3Bvc2l4LCBjb25zdCBjaGFyICppbl9uYXRpdmUgPSBOVUxMKTsKKyAg ICB2b2lkIGFkZF9jYWNoZSAoY29uc3QgY2hhciAqaW5fcG9zaXgsIGNvbnN0IGNoYXIgKmluX25h dGl2ZSA9IE5VTEwpOwogICAgIGNvbnN0IGNoYXIgKiBnZXRfbmF0aXZlICgpIGNvbnN0IHtyZXR1 cm4gbmF0aXZlID8gbmF0aXZlICsgbmFtZWxlbiA6IE5VTEw7fQogICAgIGNvbnN0IGNoYXIgKiBn ZXRfcG9zaXggKCkgY29uc3Qge3JldHVybiBwb3NpeCA/IHBvc2l4IDogTlVMTDt9CiAgICAgc3Ry dWN0IHdpbl9lbnYmIG9wZXJhdG9yID0gKHN0cnVjdCB3aW5fZW52JiB4KTsKQEAgLTMwLDggKzMw LDggQEAgc3RydWN0IHdpbl9lbnYKICAgICB+d2luX2VudiAoKTsKICAgfTsKIAotd2luX2VudiAq IF9fcmVnMyBnZXR3aW5lbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnBvc2l4ID0g TlVMTCwgd2luX2VudiAqID0gTlVMTCk7Ci1jaGFyICogX19yZWczIGdldHdpbmVudmVxIChjb25z dCBjaGFyICpuYW1lLCBzaXplX3QgbGVuLCBpbnQpOword2luX2VudiAqZ2V0d2luZW52IChjb25z dCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwb3NpeCA9IE5VTEwsIHdpbl9lbnYgKiA9IE5VTEwp OworY2hhciAqZ2V0d2luZW52ZXEgKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBsZW4sIGludCk7 CiAKICNpZmRlZiBfX3g4Nl82NF9fCiAjZGVmaW5lIHVwZGF0ZV9lbnZwdHJzKCkKQEAgLTQyLDkg KzQyLDkgQEAgdm9pZCBfX3N0ZGNhbGwgdXBkYXRlX2VudnB0cnMgKCk7CiBleHRlcm4gIkMiIGNo YXIgKipfX2N5Z3dpbl9lbnZpcm9uLCAqKiptYWluX2Vudmlyb247CiBleHRlcm4gIkMiIGNoYXIg X19zdGRjYWxsICoqY3VyX2Vudmlyb24gKCk7CiAjZW5kaWYKLWNoYXIgKiogX19yZWczIGJ1aWxk X2VudiAoY29uc3QgY2hhciAqIGNvbnN0ICplbnZwLCBQV0NIQVIgJmVudmJsb2NrLAorY2hhciAq KmJ1aWxkX2VudiAoY29uc3QgY2hhciAqIGNvbnN0ICplbnZwLCBQV0NIQVIgJmVudmJsb2NrLAog CQkJICBpbnQgJmVudmMsIGJvb2wgbmVlZF9lbnZibG9jaywgSEFORExFIG5ld190b2tlbik7CiAK LWNoYXIgKiogX19yZWcyIHdpbjMyZW52X3RvX2N5Z2VudiAoUFdDSEFSIHJhd2VudiwgYm9vbCBw b3NpZnkpOworY2hhciAqKndpbjMyZW52X3RvX2N5Z2VudiAoUFdDSEFSIHJhd2VudiwgYm9vbCBw b3NpZnkpOwogCiAjZGVmaW5lIEVOVl9DVlQgLTEKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4v ZXJybm8uY2MgYi93aW5zdXAvY3lnd2luL2Vycm5vLmNjCmluZGV4IDU1MjE5Y2NjYy4uZjIwMGU1 YjczIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2Vycm5vLmNjCisrKyBiL3dpbnN1cC9jeWd3 aW4vZXJybm8uY2MKQEAgLTMxNCw3ICszMTQsNyBAQCBjb25zdCBjaGFyICpfc3lzX2Vycmxpc3Rb XSA9CiBpbnQgTk9fQ09QWV9JTklUIF9zeXNfbmVyciA9IHNpemVvZiAoX3N5c19lcnJsaXN0KSAv IHNpemVvZiAoX3N5c19lcnJsaXN0WzBdKTsKIH07CiAKLWludCBfX3JlZzIKK2ludAogZ2V0ZXJy bm9fZnJvbV93aW5fZXJyb3IgKERXT1JEIGNvZGUsIGludCBkZWZlcnJubykKIHsKICAgZm9yIChp bnQgaSA9IDA7IGVycm1hcFtpXS53ICE9IDA7ICsraSkKQEAgLTMzMSwxNCArMzMxLDE0IEBAIGdl dGVycm5vX2Zyb21fd2luX2Vycm9yIChEV09SRCBjb2RlLCBpbnQgZGVmZXJybm8pCiAKIC8qIHNl dGVycm5vX2Zyb21fd2luX2Vycm9yOiBHaXZlbiBhIFdpbmRvd3MgZXJyb3IgY29kZSwgc2V0IGVy cm5vCiAgICBhcyBhcHByb3ByaWF0ZS4gKi8KLXZvaWQgX19yZWczCit2b2lkCiBzZXRlcnJub19m cm9tX3dpbl9lcnJvciAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIERXT1JEIGNvZGUpCiB7 CiAgIHN5c2NhbGxfcHJpbnRmICgiJXM6JWQgd2luZG93cyBlcnJvciAldSIsIGZpbGUsIGxpbmUs IGNvZGUpOwogICBlcnJubyA9IF9pbXB1cmVfcHRyLT5fZXJybm8gPSAgZ2V0ZXJybm9fZnJvbV93 aW5fZXJyb3IgKGNvZGUsIEVBQ0NFUyk7CiB9CiAKLWludCBfX3JlZzIKK2ludAogZ2V0ZXJybm9f ZnJvbV9udF9zdGF0dXMgKE5UU1RBVFVTIHN0YXR1cywgaW50IGRlZmVycm5vKQogewogICByZXR1 cm4gZ2V0ZXJybm9fZnJvbV93aW5fZXJyb3IgKFJ0bE50U3RhdHVzVG9Eb3NFcnJvciAoc3RhdHVz KSk7CkBAIC0zNDYsNyArMzQ2LDcgQEAgZ2V0ZXJybm9fZnJvbV9udF9zdGF0dXMgKE5UU1RBVFVT IHN0YXR1cywgaW50IGRlZmVycm5vKQogCiAvKiBzZXRlcnJub19mcm9tX250X3N0YXR1czogR2l2 ZW4gYSBOVCBzdGF0dXMgY29kZSwgc2V0IGVycm5vCiAgICBhcyBhcHByb3ByaWF0ZS4gKi8KLXZv aWQgX19yZWczCit2b2lkCiBzZXRlcnJub19mcm9tX250X3N0YXR1cyAoY29uc3QgY2hhciAqZmls ZSwgaW50IGxpbmUsIE5UU1RBVFVTIHN0YXR1cykKIHsKICAgRFdPUkQgY29kZSA9IFJ0bE50U3Rh dHVzVG9Eb3NFcnJvciAoc3RhdHVzKTsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZXhjZXB0 aW9ucy5jYyBiL3dpbnN1cC9jeWd3aW4vZXhjZXB0aW9ucy5jYwppbmRleCAyZmVjZDUyZWMuLmI4 ZDQ2NTA0ZCAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9leGNlcHRpb25zLmNjCisrKyBiL3dp bnN1cC9jeWd3aW4vZXhjZXB0aW9ucy5jYwpAQCAtODQwLDcgKzg0MCw3IEBAIF9jeWd0bHM6Omlu dGVycnVwdF9ub3cgKENPTlRFWFQgKmN4LCBzaWdpbmZvX3QmIHNpLCB2b2lkICpoYW5kbGVyLAog ICByZXR1cm4gaW50ZXJydXB0ZWQ7CiB9CiAKLXZvaWQgX19yZWczCit2b2lkCiBfY3lndGxzOjpp bnRlcnJ1cHRfc2V0dXAgKHNpZ2luZm9fdCYgc2ksIHZvaWQgKmhhbmRsZXIsIHN0cnVjdCBzaWdh Y3Rpb24mIHNpZ2EpCiB7CiAgIHB1c2ggKChfX3Rsc3N0YWNrX3QpIHNpZ2RlbGF5ZWQpOwpAQCAt MTMyMyw3ICsxMzIzLDcgQEAgX2N5Z3Rsczo6aGFuZGxlX1NJR0NPTlQgKCkKICAgc2lnX2NsZWFy IChTSUdUVE9VKTsKIH0KIAotaW50IF9fcmVnMQoraW50CiBzaWdwYWNrZXQ6OnByb2Nlc3MgKCkK IHsKICAgaW50IHJjID0gMTsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXIuY2Mg Yi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyLmNjCmluZGV4IDRmY2UwMTIwYS4uODg1MDczNTdiIDEw MDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXIuY2MKQEAgLTE4OSw3ICsxODksNyBAQCBmaGFuZGxlcl9iYXNlOjpzZXRfZmxhZ3Mg KGludCBmbGFncywgaW50IHN1cHBsaWVkX2JpbikKIAogLyogQ292ZXIgZnVuY3Rpb24gdG8gUmVh ZEZpbGUgdG8gYWNoaWV2ZSAoYXMgbXVjaCBhcyBwb3NzaWJsZSkgUG9zaXggc3R5bGUKICAgIHNl bWFudGljcyBhbmQgdXNlIG9mIGVycm5vLiAgKi8KLXZvaWQgX19yZWczCit2b2lkCiBmaGFuZGxl cl9iYXNlOjpyYXdfcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbikKIHsKICAgTlRTVEFUVVMg c3RhdHVzOwpAQCAtMjU2LDcgKzI1Niw3IEBAIHJldHJ5OgogCiAvKiBDb3ZlciBmdW5jdGlvbiB0 byBXcml0ZUZpbGUgdG8gcHJvdmlkZSBQb3NpeCBpbnRlcmZhY2UgYW5kIHNlbWFudGljcwogICAg KGFzIG11Y2ggYXMgcG9zc2libGUpLiAgKi8KLXNzaXplX3QgX19yZWczCitzc2l6ZV90CiBmaGFu ZGxlcl9iYXNlOjpyYXdfd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIHsKICAg TlRTVEFUVVMgc3RhdHVzOwpAQCAtODEyLDcgKzgxMiw3IEBAIGZoYW5kbGVyX2Jhc2U6Om9wZW5f c2V0dXAgKGludCkKICAgIGFuIFxuLiAgSWYgbGFzdCBjaGFyIGlzIGFuIFxyLCBsb29rIGFoZWFk IG9uZSBtb3JlIGNoYXIsIGlmIFxuIHRoZW4KICAgIG1vZGlmeSBcciwgaWYgbm90LCByZW1lbWJl ciBjaGFyLgogKi8KLXZvaWQgX19yZWczCit2b2lkCiBmaGFuZGxlcl9iYXNlOjpyZWFkICh2b2lk ICppbl9wdHIsIHNpemVfdCYgbGVuKQogewogICBjaGFyICpwdHIgPSAoY2hhciAqKSBpbl9wdHI7 CkBAIC0xMTQ1LDE0ICsxMTQ1LDE0IEBAIGZoYW5kbGVyX2Jhc2U6OmxzZWVrIChvZmZfdCBvZmZz ZXQsIGludCB3aGVuY2UpCiAgIHJldHVybiByZXM7CiB9CiAKLXNzaXplX3QgX19yZWczCitzc2l6 ZV90CiBmaGFuZGxlcl9iYXNlOjpwcmVhZCAodm9pZCAqLCBzaXplX3QsIG9mZl90LCB2b2lkICop CiB7CiAgIHNldF9lcnJubyAoRVNQSVBFKTsKICAgcmV0dXJuIC0xOwogfQogCi1zc2l6ZV90IF9f cmVnMworc3NpemVfdAogZmhhbmRsZXJfYmFzZTo6cHdyaXRlICh2b2lkICosIHNpemVfdCwgb2Zm X3QsIHZvaWQgKikKIHsKICAgc2V0X2Vycm5vIChFU1BJUEUpOwpAQCAtMTI1MCw3ICsxMjUwLDcg QEAgZmhhbmRsZXJfYmFzZTo6aW9jdGwgKHVuc2lnbmVkIGludCBjbWQsIHZvaWQgKmJ1ZikKICAg cmV0dXJuIHJlczsKIH0KIAotaW50IF9fcmVnMgoraW50CiBmaGFuZGxlcl9iYXNlOjpmc3RhdCAo c3RydWN0IHN0YXQgKmJ1ZikKIHsKICAgaWYgKGlzX2ZzX3NwZWNpYWwgKCkpCkBAIC0xMjg4LDcg KzEyODgsNyBAQCBmaGFuZGxlcl9iYXNlOjpmc3RhdCAoc3RydWN0IHN0YXQgKmJ1ZikKICAgcmV0 dXJuIDA7CiB9CiAKLWludCBfX3JlZzIKK2ludAogZmhhbmRsZXJfYmFzZTo6ZnN0YXR2ZnMgKHN0 cnVjdCBzdGF0dmZzICpzZnMpCiB7CiAgIC8qIElmIHdlIGhpdCB0aGlzIGJhc2UgaW1wbGVtZW50 YXRpb24sIGl0J3Mgc29tZSBkZXZpY2UgaW4gL2Rldi4KZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3 aW4vZmhhbmRsZXIuaCBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXIuaAppbmRleCAzNmY2NDgxOGQu LmEyYTRlYzE1MCAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlci5oCisrKyBiL3dp bnN1cC9jeWd3aW4vZmhhbmRsZXIuaApAQCAtMzc2LDM5ICszNzYsMzkgQEAgY2xhc3MgZmhhbmRs ZXJfYmFzZQogICBpbnQgb3Blbl9mcyAoaW50LCBtb2RlX3QgPSAwKTsKICMgZGVmaW5lIGFyY2hl dHlwZV91c2Vjb3VudChuKSBfYXJjaGV0eXBlX3VzZWNvdW50IChfX1BSRVRUWV9GVU5DVElPTl9f LCBfX0xJTkVfXywgKG4pKQogICBpbnQgY2xvc2VfZnMgKCkgeyByZXR1cm4gZmhhbmRsZXJfYmFz ZTo6Y2xvc2UgKCk7IH0KLSAgdmlydHVhbCBpbnQgX19yZWcyIGZzdGF0IChzdHJ1Y3Qgc3RhdCAq YnVmKTsKLSAgdm9pZCBfX3JlZzIgc3RhdF9maXh1cCAoc3RydWN0IHN0YXQgKmJ1Zik7Ci0gIGlu dCBfX3JlZzIgZnN0YXRfZnMgKHN0cnVjdCBzdGF0ICpidWYpOworICB2aXJ0dWFsIGludCBmc3Rh dCAoc3RydWN0IHN0YXQgKmJ1Zik7CisgIHZvaWQgc3RhdF9maXh1cCAoc3RydWN0IHN0YXQgKmJ1 Zik7CisgIGludCBmc3RhdF9mcyAoc3RydWN0IHN0YXQgKmJ1Zik7CiBwcml2YXRlOgotICBpbnQg X19yZWcyIGZzdGF0X2hlbHBlciAoc3RydWN0IHN0YXQgKmJ1Zik7Ci0gIGludCBfX3JlZzIgZnN0 YXRfYnlfbmZzX2VhIChzdHJ1Y3Qgc3RhdCAqYnVmKTsKLSAgaW50IF9fcmVnMiBmc3RhdF9ieV9o YW5kbGUgKHN0cnVjdCBzdGF0ICpidWYpOwotICBpbnQgX19yZWcyIGZzdGF0X2J5X25hbWUgKHN0 cnVjdCBzdGF0ICpidWYpOworICBpbnQgZnN0YXRfaGVscGVyIChzdHJ1Y3Qgc3RhdCAqYnVmKTsK KyAgaW50IGZzdGF0X2J5X25mc19lYSAoc3RydWN0IHN0YXQgKmJ1Zik7CisgIGludCBmc3RhdF9i eV9oYW5kbGUgKHN0cnVjdCBzdGF0ICpidWYpOworICBpbnQgZnN0YXRfYnlfbmFtZSAoc3RydWN0 IHN0YXQgKmJ1Zik7CiBwdWJsaWM6Ci0gIHZpcnR1YWwgaW50IF9fcmVnMiBmc3RhdHZmcyAoc3Ry dWN0IHN0YXR2ZnMgKmJ1Zik7Ci0gIGludCBfX3JlZzIgZnN0YXR2ZnNfYnlfaGFuZGxlIChIQU5E TEUgaCwgc3RydWN0IHN0YXR2ZnMgKmJ1Zik7Ci0gIGludCBfX3JlZzIgdXRpbWVuc19mcyAoY29u c3Qgc3RydWN0IHRpbWVzcGVjICopOwotICB2aXJ0dWFsIGludCBfX3JlZzEgZmNobW9kIChtb2Rl X3QgbW9kZSk7Ci0gIHZpcnR1YWwgaW50IF9fcmVnMiBmY2hvd24gKHVpZF90IHVpZCwgZ2lkX3Qg Z2lkKTsKLSAgdmlydHVhbCBpbnQgX19yZWczIGZhY2wgKGludCwgaW50LCBzdHJ1Y3QgYWNsICop OwotICB2aXJ0dWFsIHN0cnVjdCBfX2FjbF90ICogX19yZWcyIGFjbF9nZXQgKHVpbnQzMl90KTsK LSAgdmlydHVhbCBpbnQgX19yZWczIGFjbF9zZXQgKHN0cnVjdCBfX2FjbF90ICosIHVpbnQzMl90 KTsKLSAgdmlydHVhbCBzc2l6ZV90IF9fcmVnMyBmZ2V0eGF0dHIgKGNvbnN0IGNoYXIgKiwgdm9p ZCAqLCBzaXplX3QpOwotICB2aXJ0dWFsIGludCBfX3JlZzMgZnNldHhhdHRyIChjb25zdCBjaGFy ICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBpbnQpOwotICB2aXJ0dWFsIGludCBfX3JlZzMgZmFk dmlzZSAob2ZmX3QsIG9mZl90LCBpbnQpOwotICB2aXJ0dWFsIGludCBfX3JlZzMgZnRydW5jYXRl IChvZmZfdCwgYm9vbCk7Ci0gIHZpcnR1YWwgaW50IF9fcmVnMiBsaW5rIChjb25zdCBjaGFyICop OwotICB2aXJ0dWFsIGludCBfX3JlZzIgdXRpbWVucyAoY29uc3Qgc3RydWN0IHRpbWVzcGVjICop OwotICB2aXJ0dWFsIGludCBfX3JlZzEgZnN5bmMgKCk7CisgIHZpcnR1YWwgaW50IGZzdGF0dmZz IChzdHJ1Y3Qgc3RhdHZmcyAqYnVmKTsKKyAgaW50IGZzdGF0dmZzX2J5X2hhbmRsZSAoSEFORExF IGgsIHN0cnVjdCBzdGF0dmZzICpidWYpOworICBpbnQgdXRpbWVuc19mcyAoY29uc3Qgc3RydWN0 IHRpbWVzcGVjICopOworICB2aXJ0dWFsIGludCBmY2htb2QgKG1vZGVfdCBtb2RlKTsKKyAgdmly dHVhbCBpbnQgZmNob3duICh1aWRfdCB1aWQsIGdpZF90IGdpZCk7CisgIHZpcnR1YWwgaW50IGZh Y2wgKGludCwgaW50LCBzdHJ1Y3QgYWNsICopOworICB2aXJ0dWFsIHN0cnVjdCBfX2FjbF90ICph Y2xfZ2V0ICh1aW50MzJfdCk7CisgIHZpcnR1YWwgaW50IGFjbF9zZXQgKHN0cnVjdCBfX2FjbF90 ICosIHVpbnQzMl90KTsKKyAgdmlydHVhbCBzc2l6ZV90IGZnZXR4YXR0ciAoY29uc3QgY2hhciAq LCB2b2lkICosIHNpemVfdCk7CisgIHZpcnR1YWwgaW50IGZzZXR4YXR0ciAoY29uc3QgY2hhciAq LCBjb25zdCB2b2lkICosIHNpemVfdCwgaW50KTsKKyAgdmlydHVhbCBpbnQgZmFkdmlzZSAob2Zm X3QsIG9mZl90LCBpbnQpOworICB2aXJ0dWFsIGludCBmdHJ1bmNhdGUgKG9mZl90LCBib29sKTsK KyAgdmlydHVhbCBpbnQgbGluayAoY29uc3QgY2hhciAqKTsKKyAgdmlydHVhbCBpbnQgdXRpbWVu cyAoY29uc3Qgc3RydWN0IHRpbWVzcGVjICopOworICB2aXJ0dWFsIGludCBmc3luYyAoKTsKICAg dmlydHVhbCBpbnQgaW9jdGwgKHVuc2lnbmVkIGludCBjbWQsIHZvaWQgKik7CiAgIHZpcnR1YWwg aW50IGZjbnRsIChpbnQgY21kLCBpbnRwdHJfdCk7CiAgIHZpcnR1YWwgY2hhciBjb25zdCAqdHR5 bmFtZSAoKSB7IHJldHVybiBnZXRfbmFtZSAoKTsgfQotICB2aXJ0dWFsIHZvaWQgX19yZWczIHJl YWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pOworICB2aXJ0dWFsIHZvaWQgcmVhZCAodm9pZCAq cHRyLCBzaXplX3QmIGxlbik7CiAgIHZpcnR1YWwgc3NpemVfdCBfX3N0ZGNhbGwgd3JpdGUgKGNv bnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbik7CiAgIHZpcnR1YWwgc3NpemVfdCBfX3N0ZGNhbGwg cmVhZHYgKGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCBpbnQgaW92Y250LCBzc2l6ZV90IHRvdCA9IC0x KTsKICAgdmlydHVhbCBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZXYgKGNvbnN0IHN0cnVjdCBpb3Zl YyAqLCBpbnQgaW92Y250LCBzc2l6ZV90IHRvdCA9IC0xKTsKLSAgdmlydHVhbCBzc2l6ZV90IF9f cmVnMyBwcmVhZCAodm9pZCAqLCBzaXplX3QsIG9mZl90LCB2b2lkICphaW8gPSBOVUxMKTsKLSAg dmlydHVhbCBzc2l6ZV90IF9fcmVnMyBwd3JpdGUgKHZvaWQgKiwgc2l6ZV90LCBvZmZfdCwgdm9p ZCAqYWlvID0gTlVMTCk7CisgIHZpcnR1YWwgc3NpemVfdCBwcmVhZCAodm9pZCAqLCBzaXplX3Qs IG9mZl90LCB2b2lkICphaW8gPSBOVUxMKTsKKyAgdmlydHVhbCBzc2l6ZV90IHB3cml0ZSAodm9p ZCAqLCBzaXplX3QsIG9mZl90LCB2b2lkICphaW8gPSBOVUxMKTsKICAgdmlydHVhbCBvZmZfdCBs c2VlayAob2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKTsKICAgdmlydHVhbCBpbnQgbG9jayAoaW50 LCBzdHJ1Y3QgZmxvY2sgKik7CiAgIHZpcnR1YWwgaW50IG1hbmRfbG9jayAoaW50LCBzdHJ1Y3Qg ZmxvY2sgKik7CkBAIC00NTMsOCArNDUzLDggQEAgcHVibGljOgogICB2aXJ0dWFsIGNsYXNzIGZo YW5kbGVyX21xdWV1ZSAqaXNfbXF1ZXVlICgpIHsgcmV0dXJuIE5VTEw7IH0KICAgdmlydHVhbCBp bnQgaXNfd2luZG93cyAoKSB7cmV0dXJuIDA7IH0KIAotICB2aXJ0dWFsIHZvaWQgX19yZWczIHJh d19yZWFkICh2b2lkICpwdHIsIHNpemVfdCYgdWxlbik7Ci0gIHZpcnR1YWwgc3NpemVfdCBfX3Jl ZzMgcmF3X3dyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCB1bGVuKTsKKyAgdmlydHVhbCB2 b2lkIHJhd19yZWFkICh2b2lkICpwdHIsIHNpemVfdCYgdWxlbik7CisgIHZpcnR1YWwgc3NpemVf dCByYXdfd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHVsZW4pOwogCiAgIC8qIFZpcnR1 YWwgYWNjZXNzb3IgZnVuY3Rpb25zIHRvIGhpZGUgdGhlIGZhY3QKICAgICAgdGhhdCBzb21lIGZk J3MgaGF2ZSB0d28gaGFuZGxlcy4gKi8KQEAgLTQ4MiwxNiArNDgyLDE2IEBAIHB1YmxpYzoKICAg dmlydHVhbCB2b2lkIHNldF9lb2YgKCkge30KICAgdmlydHVhbCBpbnQgbWtkaXIgKG1vZGVfdCBt b2RlKTsKICAgdmlydHVhbCBpbnQgcm1kaXIgKCk7Ci0gIHZpcnR1YWwgX19yZWcyIERJUiAqb3Bl bmRpciAoaW50IGZkKTsKLSAgdmlydHVhbCBfX3JlZzMgaW50IHJlYWRkaXIgKERJUiAqLCBkaXJl bnQgKik7CisgIHZpcnR1YWwgRElSICpvcGVuZGlyIChpbnQgZmQpOworICB2aXJ0dWFsIGludCBy ZWFkZGlyIChESVIgKiwgZGlyZW50ICopOwogICB2aXJ0dWFsIGxvbmcgdGVsbGRpciAoRElSICop OwogICB2aXJ0dWFsIHZvaWQgc2Vla2RpciAoRElSICosIGxvbmcpOwogICB2aXJ0dWFsIHZvaWQg cmV3aW5kZGlyIChESVIgKik7CiAgIHZpcnR1YWwgaW50IGNsb3NlZGlyIChESVIgKik7CiAgIGJv b2wgaXNfZnNfc3BlY2lhbCAoKSB7cmV0dXJuIHBjLmlzX2ZzX3NwZWNpYWwgKCk7fQogICBib29s IGlzc3ltbGluayAoKSB7cmV0dXJuIHBjLmlzc3ltbGluayAoKTt9Ci0gIGJvb2wgX19yZWcyIGRl dmljZV9hY2Nlc3NfZGVuaWVkIChpbnQpOwotICBpbnQgX19yZWczIGZoYWNjZXNzIChpbnQgZmxh Z3MsIGJvb2wpOworICBib29sIGRldmljZV9hY2Nlc3NfZGVuaWVkIChpbnQpOworICBpbnQgZmhh Y2Nlc3MgKGludCBmbGFncywgYm9vbCk7CiAKICAgZmhhbmRsZXJfYmFzZSAodm9pZCAqKSB7fQog CkBAIC01OTIsNyArNTkyLDcgQEAgY2xhc3MgZmhhbmRsZXJfc29ja2V0OiBwdWJsaWMgZmhhbmRs ZXJfYmFzZQogICB2aXJ0dWFsIHNzaXplX3QgcmVjdmZyb20gKHZvaWQgKnB0ciwgc2l6ZV90IGxl biwgaW50IGZsYWdzLAogCQkJICAgIHN0cnVjdCBzb2NrYWRkciAqZnJvbSwgaW50ICpmcm9tbGVu KSA9IDA7CiAgIHZpcnR1YWwgc3NpemVfdCByZWN2bXNnIChzdHJ1Y3QgbXNnaGRyICptc2csIGlu dCBmbGFncykgPSAwOwotICB2aXJ0dWFsIHZvaWQgX19yZWczIHJlYWQgKHZvaWQgKnB0ciwgc2l6 ZV90JiBsZW4pID0gMDsKKyAgdmlydHVhbCB2b2lkIHJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBs ZW4pID0gMDsKICAgdmlydHVhbCBzc2l6ZV90IF9fc3RkY2FsbCByZWFkdiAoY29uc3Qgc3RydWN0 IGlvdmVjICosIGludCBpb3ZjbnQsCiAJCQkJICAgc3NpemVfdCB0b3QgPSAtMSkgPSAwOwogCkBA IC02MTAsMTIgKzYxMCwxMiBAQCBjbGFzcyBmaGFuZGxlcl9zb2NrZXQ6IHB1YmxpYyBmaGFuZGxl cl9iYXNlCiAgIHZpcnR1YWwgaW50IGZjbnRsIChpbnQgY21kLCBpbnRwdHJfdCk7CiAKICAgaW50 IG9wZW4gKGludCBmbGFncywgbW9kZV90IG1vZGUgPSAwKTsKLSAgaW50IF9fcmVnMiBmc3RhdCAo c3RydWN0IHN0YXQgKmJ1Zik7Ci0gIGludCBfX3JlZzIgZnN0YXR2ZnMgKHN0cnVjdCBzdGF0dmZz ICpidWYpOwotICBpbnQgX19yZWcxIGZjaG1vZCAobW9kZV90IG5ld21vZGUpOwotICBpbnQgX19y ZWcyIGZjaG93biAodWlkX3QgbmV3dWlkLCBnaWRfdCBuZXdnaWQpOwotICBpbnQgX19yZWczIGZh Y2wgKGludCwgaW50LCBzdHJ1Y3QgYWNsICopOwotICBpbnQgX19yZWcyIGxpbmsgKGNvbnN0IGNo YXIgKik7CisgIGludCBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7CisgIGludCBmc3RhdHZmcyAo c3RydWN0IHN0YXR2ZnMgKmJ1Zik7CisgIGludCBmY2htb2QgKG1vZGVfdCBuZXdtb2RlKTsKKyAg aW50IGZjaG93biAodWlkX3QgbmV3dWlkLCBnaWRfdCBuZXdnaWQpOworICBpbnQgZmFjbCAoaW50 LCBpbnQsIHN0cnVjdCBhY2wgKik7CisgIGludCBsaW5rIChjb25zdCBjaGFyICopOwogICBvZmZf dCBsc2VlayAob2ZmX3QsIGludCkKICAgewogICAgIHNldF9lcnJubyAoRVNQSVBFKTsKQEAgLTcx MSw3ICs3MTEsNyBAQCBjbGFzcyBmaGFuZGxlcl9zb2NrZXRfd3NvY2s6IHB1YmxpYyBmaGFuZGxl cl9zb2NrZXQKICAgc3NpemVfdCByZWN2ZnJvbSAodm9pZCAqcHRyLCBzaXplX3QgbGVuLCBpbnQg ZmxhZ3MsCiAJCSAgICBzdHJ1Y3Qgc29ja2FkZHIgKmZyb20sIGludCAqZnJvbWxlbik7CiAgIHNz aXplX3QgcmVjdm1zZyAoc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgZmxhZ3MpOwotICB2b2lkIF9f cmVnMyByZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKTsKKyAgdm9pZCByZWFkICh2b2lkICpw dHIsIHNpemVfdCYgbGVuKTsKICAgc3NpemVfdCBfX3N0ZGNhbGwgcmVhZHYgKGNvbnN0IHN0cnVj dCBpb3ZlYyAqLCBpbnQgaW92Y250LCBzc2l6ZV90IHRvdCA9IC0xKTsKICAgc3NpemVfdCBfX3N0 ZGNhbGwgd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbik7CiAgIHNzaXplX3QgX19z dGRjYWxsIHdyaXRldiAoY29uc3Qgc3RydWN0IGlvdmVjICosIGludCBpb3ZjbnQsIHNzaXplX3Qg dG90ID0gLTEpOwpAQCAtODU2LDEyICs4NTYsMTIgQEAgY2xhc3MgZmhhbmRsZXJfc29ja2V0X2xv Y2FsOiBwdWJsaWMgZmhhbmRsZXJfc29ja2V0X3dzb2NrCiAgIGludCBvcGVuIChpbnQgZmxhZ3Ms IG1vZGVfdCBtb2RlID0gMCk7CiAgIGludCBjbG9zZSAoKTsKICAgaW50IGZjbnRsIChpbnQgY21k LCBpbnRwdHJfdCk7Ci0gIGludCBfX3JlZzIgZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpOwotICBp bnQgX19yZWcyIGZzdGF0dmZzIChzdHJ1Y3Qgc3RhdHZmcyAqYnVmKTsKLSAgaW50IF9fcmVnMSBm Y2htb2QgKG1vZGVfdCBuZXdtb2RlKTsKLSAgaW50IF9fcmVnMiBmY2hvd24gKHVpZF90IG5ld3Vp ZCwgZ2lkX3QgbmV3Z2lkKTsKLSAgaW50IF9fcmVnMyBmYWNsIChpbnQsIGludCwgc3RydWN0IGFj bCAqKTsKLSAgaW50IF9fcmVnMiBsaW5rIChjb25zdCBjaGFyICopOworICBpbnQgZnN0YXQgKHN0 cnVjdCBzdGF0ICpidWYpOworICBpbnQgZnN0YXR2ZnMgKHN0cnVjdCBzdGF0dmZzICpidWYpOwor ICBpbnQgZmNobW9kIChtb2RlX3QgbmV3bW9kZSk7CisgIGludCBmY2hvd24gKHVpZF90IG5ld3Vp ZCwgZ2lkX3QgbmV3Z2lkKTsKKyAgaW50IGZhY2wgKGludCwgaW50LCBzdHJ1Y3QgYWNsICopOwor ICBpbnQgbGluayAoY29uc3QgY2hhciAqKTsKIAogICAvKiBmcm9tIGhlcmUgb246IENMT05JTkcg Ki8KICAgZmhhbmRsZXJfc29ja2V0X2xvY2FsICh2b2lkICopIHt9CkBAIC0xMTIwLDcgKzExMjAs NyBAQCBjbGFzcyBmaGFuZGxlcl9zb2NrZXRfdW5peCA6IHB1YmxpYyBmaGFuZGxlcl9zb2NrZXQK ICAgc3NpemVfdCByZWN2bXNnIChzdHJ1Y3QgbXNnaGRyICptc2csIGludCBmbGFncyk7CiAgIHNz aXplX3QgcmVjdmZyb20gKHZvaWQgKnB0ciwgc2l6ZV90IGxlbiwgaW50IGZsYWdzLAogCQkgICAg c3RydWN0IHNvY2thZGRyICpmcm9tLCBpbnQgKmZyb21sZW4pOwotICB2b2lkIF9fcmVnMyByZWFk ICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKTsKKyAgdm9pZCByZWFkICh2b2lkICpwdHIsIHNpemVf dCYgbGVuKTsKICAgc3NpemVfdCBfX3N0ZGNhbGwgcmVhZHYgKGNvbnN0IHN0cnVjdCBpb3ZlYyAq Y29uc3QgaW92LCBpbnQgaW92Y250LAogCQkJICAgc3NpemVfdCB0b3QgPSAtMSk7CiAKQEAgLTEx MzgsMTIgKzExMzgsMTIgQEAgY2xhc3MgZmhhbmRsZXJfc29ja2V0X3VuaXggOiBwdWJsaWMgZmhh bmRsZXJfc29ja2V0CiAgIHZpcnR1YWwgaW50IGlvY3RsICh1bnNpZ25lZCBpbnQgY21kLCB2b2lk ICopOwogICB2aXJ0dWFsIGludCBmY250bCAoaW50IGNtZCwgaW50cHRyX3QpOwogCi0gIGludCBf X3JlZzIgZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpOwotICBpbnQgX19yZWcyIGZzdGF0dmZzIChz dHJ1Y3Qgc3RhdHZmcyAqYnVmKTsKLSAgaW50IF9fcmVnMSBmY2htb2QgKG1vZGVfdCBuZXdtb2Rl KTsKLSAgaW50IF9fcmVnMiBmY2hvd24gKHVpZF90IG5ld3VpZCwgZ2lkX3QgbmV3Z2lkKTsKLSAg aW50IF9fcmVnMyBmYWNsIChpbnQsIGludCwgc3RydWN0IGFjbCAqKTsKLSAgaW50IF9fcmVnMiBs aW5rIChjb25zdCBjaGFyICopOworICBpbnQgZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpOworICBp bnQgZnN0YXR2ZnMgKHN0cnVjdCBzdGF0dmZzICpidWYpOworICBpbnQgZmNobW9kIChtb2RlX3Qg bmV3bW9kZSk7CisgIGludCBmY2hvd24gKHVpZF90IG5ld3VpZCwgZ2lkX3QgbmV3Z2lkKTsKKyAg aW50IGZhY2wgKGludCwgaW50LCBzdHJ1Y3QgYWNsICopOworICBpbnQgbGluayAoY29uc3QgY2hh ciAqKTsKIAogICAvKiBzZWxlY3QuY2MgKi8KICAgc2VsZWN0X3JlY29yZCAqc2VsZWN0X3JlYWQg KHNlbGVjdF9zdHVmZiAqKTsKQEAgLTExODIsNyArMTE4Miw3IEBAIGNsYXNzIGZoYW5kbGVyX3Bp cGVfZmlmbzogcHVibGljIGZoYW5kbGVyX2Jhc2UKICAgZmhhbmRsZXJfcGlwZV9maWZvICgpOwog CiAgIHZpcnR1YWwgYm9vbCByZWFkZXJfY2xvc2VkICgpIHsgcmV0dXJuIGZhbHNlOyB9OwotICBz c2l6ZV90IF9fcmVnMyByYXdfd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbik7Cisg IHNzaXplX3QgcmF3X3dyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pOwogfTsKIAog Y2xhc3MgZmhhbmRsZXJfcGlwZTogcHVibGljIGZoYW5kbGVyX3BpcGVfZmlmbwpAQCAtMTIyMCwx MyArMTIyMCwxMyBAQCBwdWJsaWM6CiAgIGludCBkdXAgKGZoYW5kbGVyX2Jhc2UgKmNoaWxkLCBp bnQpOwogICB2b2lkIHNldF9jbG9zZV9vbl9leGVjIChib29sIHZhbCk7CiAgIGludCBjbG9zZSAo KTsKLSAgdm9pZCBfX3JlZzMgcmF3X3JlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pOworICB2 b2lkIHJhd19yZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKTsKICAgaW50IGlvY3RsICh1bnNp Z25lZCBpbnQgY21kLCB2b2lkICopOwogICBpbnQgZmNudGwgKGludCBjbWQsIGludHB0cl90KTsK LSAgaW50IF9fcmVnMiBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7Ci0gIGludCBfX3JlZzIgZnN0 YXR2ZnMgKHN0cnVjdCBzdGF0dmZzICpidWYpOwotICBpbnQgX19yZWczIGZhZHZpc2UgKG9mZl90 LCBvZmZfdCwgaW50KTsKLSAgaW50IF9fcmVnMyBmdHJ1bmNhdGUgKG9mZl90LCBib29sKTsKKyAg aW50IGZzdGF0IChzdHJ1Y3Qgc3RhdCAqYnVmKTsKKyAgaW50IGZzdGF0dmZzIChzdHJ1Y3Qgc3Rh dHZmcyAqYnVmKTsKKyAgaW50IGZhZHZpc2UgKG9mZl90LCBvZmZfdCwgaW50KTsKKyAgaW50IGZ0 cnVuY2F0ZSAob2ZmX3QsIGJvb2wpOwogICBpbnQgaW5pdCAoSEFORExFLCBEV09SRCwgbW9kZV90 LCBpbnQ2NF90KTsKICAgc3RhdGljIGludCBjcmVhdGUgKGZoYW5kbGVyX3BpcGUgKlsyXSwgdW5z aWduZWQsIGludCk7CiAgIHN0YXRpYyBEV09SRCBjcmVhdGUgKExQU0VDVVJJVFlfQVRUUklCVVRF UywgSEFORExFICosIEhBTkRMRSAqLCBEV09SRCwKQEAgLTE0MDgsNyArMTQwOCw3IEBAIGNsYXNz IGZoYW5kbGVyX2ZpZm86IHB1YmxpYyBmaGFuZGxlcl9waXBlX2ZpZm8KICAgLyogRHluYW1pY2Fs bHkgZ3Jvd2luZyBhcnJheSBpbiBzaGFyZWQgbWVtb3J5LiAqLwogICBmaWZvX2NsaWVudF9oYW5k bGVyICpzaGFyZWRfZmNfaGFuZGxlcjsKIAotICBib29sIF9fcmVnMiB3YWl0IChIQU5ETEUpOwor ICBib29sIHdhaXQgKEhBTkRMRSk7CiAgIEhBTkRMRSBjcmVhdGVfcGlwZV9pbnN0YW5jZSAoKTsK ICAgTlRTVEFUVVMgb3Blbl9waXBlIChIQU5ETEUmKTsKICAgTlRTVEFUVVMgd2FpdF9vcGVuX3Bp cGUgKEhBTkRMRSYpOwpAQCAtMTUwNSwxMSArMTUwNSwxMSBAQCBwdWJsaWM6CiAgIGludCBkdXAg KGZoYW5kbGVyX2Jhc2UgKmNoaWxkLCBpbnQpOwogICBib29sIGlzZmlmbyAoKSBjb25zdCB7IHJl dHVybiB0cnVlOyB9CiAgIHZvaWQgc2V0X2Nsb3NlX29uX2V4ZWMgKGJvb2wgdmFsKTsKLSAgdm9p ZCBfX3JlZzMgcmF3X3JlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiB1bGVuKTsKKyAgdm9pZCByYXdf cmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIHVsZW4pOwogICB2b2lkIGZpeHVwX2FmdGVyX2Zvcmsg KEhBTkRMRSk7CiAgIHZvaWQgZml4dXBfYWZ0ZXJfZXhlYyAoKTsKLSAgaW50IF9fcmVnMiBmc3Rh dCAoc3RydWN0IHN0YXQgKmJ1Zik7Ci0gIGludCBfX3JlZzIgZnN0YXR2ZnMgKHN0cnVjdCBzdGF0 dmZzICpidWYpOworICBpbnQgZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpOworICBpbnQgZnN0YXR2 ZnMgKHN0cnVjdCBzdGF0dmZzICpidWYpOwogICBzZWxlY3RfcmVjb3JkICpzZWxlY3RfcmVhZCAo c2VsZWN0X3N0dWZmICopOwogICBzZWxlY3RfcmVjb3JkICpzZWxlY3Rfd3JpdGUgKHNlbGVjdF9z dHVmZiAqKTsKICAgc2VsZWN0X3JlY29yZCAqc2VsZWN0X2V4Y2VwdCAoc2VsZWN0X3N0dWZmICop OwpAQCAtMTU1OCw3ICsxNTU4LDcgQEAgY2xhc3MgZmhhbmRsZXJfZGV2X3JhdzogcHVibGljIGZo YW5kbGVyX2Jhc2UKIAogICBpbnQgb3BlbiAoaW50IGZsYWdzLCBtb2RlX3QgbW9kZSA9IDApOwog Ci0gIGludCBfX3JlZzIgZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpOworICBpbnQgZnN0YXQgKHN0 cnVjdCBzdGF0ICpidWYpOwogCiAgIGludCBkdXAgKGZoYW5kbGVyX2Jhc2UgKmNoaWxkLCBpbnQp OwogICBpbnQgaW9jdGwgKHVuc2lnbmVkIGludCBjbWQsIHZvaWQgKmJ1Zik7CkBAIC0xNjIwLDgg KzE2MjAsOCBAQCBjbGFzcyBmaGFuZGxlcl9kZXZfZmxvcHB5OiBwdWJsaWMgZmhhbmRsZXJfZGV2 X3JhdwogICBpbnQgb3BlbiAoaW50IGZsYWdzLCBtb2RlX3QgbW9kZSA9IDApOwogICBpbnQgY2xv c2UgKCk7CiAgIGludCBkdXAgKGZoYW5kbGVyX2Jhc2UgKmNoaWxkLCBpbnQpOwotICB2b2lkIF9f cmVnMyByYXdfcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIHVsZW4pOwotICBzc2l6ZV90IF9fcmVn MyByYXdfd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHVsZW4pOworICB2b2lkIHJhd19y ZWFkICh2b2lkICpwdHIsIHNpemVfdCYgdWxlbik7CisgIHNzaXplX3QgcmF3X3dyaXRlIChjb25z dCB2b2lkICpwdHIsIHNpemVfdCB1bGVuKTsKICAgb2ZmX3QgbHNlZWsgKG9mZl90IG9mZnNldCwg aW50IHdoZW5jZSk7CiAgIGludCBpb2N0bCAodW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYnVmKTsK IApAQCAtMTY2MSwxMiArMTY2MSwxMiBAQCBjbGFzcyBmaGFuZGxlcl9kZXZfdGFwZTogcHVibGlj IGZoYW5kbGVyX2Rldl9yYXcKICAgaW50IG9wZW4gKGludCBmbGFncywgbW9kZV90IG1vZGUgPSAw KTsKICAgdmlydHVhbCBpbnQgY2xvc2UgKCk7CiAKLSAgdm9pZCBfX3JlZzMgcmF3X3JlYWQgKHZv aWQgKnB0ciwgc2l6ZV90JiB1bGVuKTsKLSAgc3NpemVfdCBfX3JlZzMgcmF3X3dyaXRlIChjb25z dCB2b2lkICpwdHIsIHNpemVfdCB1bGVuKTsKKyAgdm9pZCByYXdfcmVhZCAodm9pZCAqcHRyLCBz aXplX3QmIHVsZW4pOworICBzc2l6ZV90IHJhd193cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXpl X3QgdWxlbik7CiAKICAgdmlydHVhbCBvZmZfdCBsc2VlayAob2ZmX3Qgb2Zmc2V0LCBpbnQgd2hl bmNlKTsKIAotICB2aXJ0dWFsIGludCBfX3JlZzIgZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpOwor ICB2aXJ0dWFsIGludCBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7CiAKICAgdmlydHVhbCBpbnQg ZHVwIChmaGFuZGxlcl9iYXNlICpjaGlsZCwgaW50KTsKICAgdmlydHVhbCB2b2lkIGZpeHVwX2Fm dGVyX2ZvcmsgKEhBTkRMRSBwYXJlbnQpOwpAQCAtMTY5Nyw3ICsxNjk3LDcgQEAgY2xhc3MgZmhh bmRsZXJfZGlza19maWxlOiBwdWJsaWMgZmhhbmRsZXJfYmFzZQogewogICBIQU5ETEUgcHJ3X2hh bmRsZTsKICAgYm9vbCBwcndfaGFuZGxlX2lzYXN5bmM7Ci0gIGludCBfX3JlZzMgcmVhZGRpcl9o ZWxwZXIgKERJUiAqLCBkaXJlbnQgKiwgRFdPUkQsIERXT1JELCBQVU5JQ09ERV9TVFJJTkcgZm5h bWUpOworICBpbnQgcmVhZGRpcl9oZWxwZXIgKERJUiAqLCBkaXJlbnQgKiwgRFdPUkQsIERXT1JE LCBQVU5JQ09ERV9TVFJJTkcgZm5hbWUpOwogCiAgIGludCBwcndfb3BlbiAoYm9vbCwgdm9pZCAq KTsKICAgdWludDY0X3QgZnNfaW9jX2dldGZsYWdzICgpOwpAQCAtMTcxMywxOSArMTcxMywxOSBA QCBjbGFzcyBmaGFuZGxlcl9kaXNrX2ZpbGU6IHB1YmxpYyBmaGFuZGxlcl9iYXNlCiAgIGludCBk dXAgKGZoYW5kbGVyX2Jhc2UgKmNoaWxkLCBpbnQpOwogICB2b2lkIGZpeHVwX2FmdGVyX2Zvcmsg KEhBTkRMRSBwYXJlbnQpOwogICBpbnQgbWFuZF9sb2NrIChpbnQsIHN0cnVjdCBmbG9jayAqKTsK LSAgaW50IF9fcmVnMiBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7Ci0gIGludCBfX3JlZzEgZmNo bW9kIChtb2RlX3QgbW9kZSk7Ci0gIGludCBfX3JlZzIgZmNob3duICh1aWRfdCB1aWQsIGdpZF90 IGdpZCk7Ci0gIGludCBfX3JlZzMgZmFjbCAoaW50LCBpbnQsIHN0cnVjdCBhY2wgKik7Ci0gIHN0 cnVjdCBfX2FjbF90ICogX19yZWcyIGFjbF9nZXQgKHVpbnQzMl90KTsKLSAgaW50IF9fcmVnMyBh Y2xfc2V0IChzdHJ1Y3QgX19hY2xfdCAqLCB1aW50MzJfdCk7Ci0gIHNzaXplX3QgX19yZWczIGZn ZXR4YXR0ciAoY29uc3QgY2hhciAqLCB2b2lkICosIHNpemVfdCk7Ci0gIGludCBfX3JlZzMgZnNl dHhhdHRyIChjb25zdCBjaGFyICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBpbnQpOwotICBpbnQg X19yZWczIGZhZHZpc2UgKG9mZl90LCBvZmZfdCwgaW50KTsKLSAgaW50IF9fcmVnMyBmdHJ1bmNh dGUgKG9mZl90LCBib29sKTsKLSAgaW50IF9fcmVnMiBsaW5rIChjb25zdCBjaGFyICopOwotICBp bnQgX19yZWcyIHV0aW1lbnMgKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqKTsKLSAgaW50IF9fcmVn MiBmc3RhdHZmcyAoc3RydWN0IHN0YXR2ZnMgKmJ1Zik7CisgIGludCBmc3RhdCAoc3RydWN0IHN0 YXQgKmJ1Zik7CisgIGludCBmY2htb2QgKG1vZGVfdCBtb2RlKTsKKyAgaW50IGZjaG93biAodWlk X3QgdWlkLCBnaWRfdCBnaWQpOworICBpbnQgZmFjbCAoaW50LCBpbnQsIHN0cnVjdCBhY2wgKik7 CisgIHN0cnVjdCBfX2FjbF90ICphY2xfZ2V0ICh1aW50MzJfdCk7CisgIGludCBhY2xfc2V0IChz dHJ1Y3QgX19hY2xfdCAqLCB1aW50MzJfdCk7CisgIHNzaXplX3QgZmdldHhhdHRyIChjb25zdCBj aGFyICosIHZvaWQgKiwgc2l6ZV90KTsKKyAgaW50IGZzZXR4YXR0ciAoY29uc3QgY2hhciAqLCBj b25zdCB2b2lkICosIHNpemVfdCwgaW50KTsKKyAgaW50IGZhZHZpc2UgKG9mZl90LCBvZmZfdCwg aW50KTsKKyAgaW50IGZ0cnVuY2F0ZSAob2ZmX3QsIGJvb2wpOworICBpbnQgbGluayAoY29uc3Qg Y2hhciAqKTsKKyAgaW50IHV0aW1lbnMgKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqKTsKKyAgaW50 IGZzdGF0dmZzIChzdHJ1Y3Qgc3RhdHZmcyAqYnVmKTsKICAgaW50IGlvY3RsICh1bnNpZ25lZCBp bnQgY21kLCB2b2lkICpidWYpOwogCiAgIEhBTkRMRSBtbWFwIChjYWRkcl90ICphZGRyLCBzaXpl X3QgbGVuLCBpbnQgcHJvdCwgaW50IGZsYWdzLCBvZmZfdCBvZmYpOwpAQCAtMTczNSwxNSArMTcz NSwxNSBAQCBjbGFzcyBmaGFuZGxlcl9kaXNrX2ZpbGU6IHB1YmxpYyBmaGFuZGxlcl9iYXNlCiAJ CQkgICAgICBvZmZfdCBvZmZzZXQsIFNJWkVfVCBzaXplLCB2b2lkICphZGRyZXNzKTsKICAgaW50 IG1rZGlyIChtb2RlX3QgbW9kZSk7CiAgIGludCBybWRpciAoKTsKLSAgRElSIF9fcmVnMiAqb3Bl bmRpciAoaW50IGZkKTsKLSAgaW50IF9fcmVnMyByZWFkZGlyIChESVIgKiwgZGlyZW50ICopOwor ICBESVIgKm9wZW5kaXIgKGludCBmZCk7CisgIGludCByZWFkZGlyIChESVIgKiwgZGlyZW50ICop OwogICBsb25nIHRlbGxkaXIgKERJUiAqKTsKICAgdm9pZCBzZWVrZGlyIChESVIgKiwgbG9uZyk7 CiAgIHZvaWQgcmV3aW5kZGlyIChESVIgKik7CiAgIGludCBjbG9zZWRpciAoRElSICopOwogCi0g IHNzaXplX3QgX19yZWczIHByZWFkICh2b2lkICosIHNpemVfdCwgb2ZmX3QsIHZvaWQgKmFpbyA9 IE5VTEwpOwotICBzc2l6ZV90IF9fcmVnMyBwd3JpdGUgKHZvaWQgKiwgc2l6ZV90LCBvZmZfdCwg dm9pZCAqYWlvID0gTlVMTCk7CisgIHNzaXplX3QgcHJlYWQgKHZvaWQgKiwgc2l6ZV90LCBvZmZf dCwgdm9pZCAqYWlvID0gTlVMTCk7CisgIHNzaXplX3QgcHdyaXRlICh2b2lkICosIHNpemVfdCwg b2ZmX3QsIHZvaWQgKmFpbyA9IE5VTEwpOwogCiAgIGZoYW5kbGVyX2Rpc2tfZmlsZSAodm9pZCAq KSB7fQogICBkZXZfdCBnZXRfZGV2ICgpIHsgcmV0dXJuIHBjLmZzX3NlcmlhbF9udW1iZXIgKCk7 IH0KQEAgLTE3NzMsMTEgKzE3NzMsMTEgQEAgcHVibGljOgogICBmaGFuZGxlcl9kZXYgKCk7CiAg IGludCBvcGVuIChpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlKTsKICAgaW50IGNsb3NlICgpOwotICBp bnQgX19yZWcyIGZzdGF0IChzdHJ1Y3Qgc3RhdCAqYnVmKTsKLSAgaW50IF9fcmVnMiBmc3RhdHZm cyAoc3RydWN0IHN0YXR2ZnMgKmJ1Zik7CisgIGludCBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7 CisgIGludCBmc3RhdHZmcyAoc3RydWN0IHN0YXR2ZnMgKmJ1Zik7CiAgIGludCBybWRpciAoKTsK LSAgRElSIF9fcmVnMiAqb3BlbmRpciAoaW50IGZkKTsKLSAgaW50IF9fcmVnMyByZWFkZGlyIChE SVIgKiwgZGlyZW50ICopOworICBESVIgKm9wZW5kaXIgKGludCBmZCk7CisgIGludCByZWFkZGly IChESVIgKiwgZGlyZW50ICopOwogICB2b2lkIHJld2luZGRpciAoRElSICopOwogCiAgIGZoYW5k bGVyX2RldiAodm9pZCAqKSB7fQpAQCAtMTgwNSwxMiArMTgwNSwxMiBAQCBjbGFzcyBmaGFuZGxl cl9jeWdkcml2ZTogcHVibGljIGZoYW5kbGVyX2Rpc2tfZmlsZQogIHB1YmxpYzoKICAgZmhhbmRs ZXJfY3lnZHJpdmUgKCk7CiAgIGludCBvcGVuIChpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlKTsKLSAg RElSIF9fcmVnMiAqb3BlbmRpciAoaW50IGZkKTsKLSAgaW50IF9fcmVnMyByZWFkZGlyIChESVIg KiwgZGlyZW50ICopOworICBESVIgKm9wZW5kaXIgKGludCBmZCk7CisgIGludCByZWFkZGlyIChE SVIgKiwgZGlyZW50ICopOwogICB2b2lkIHJld2luZGRpciAoRElSICopOwogICBpbnQgY2xvc2Vk aXIgKERJUiAqKTsKLSAgaW50IF9fcmVnMiBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7Ci0gIGlu dCBfX3JlZzIgZnN0YXR2ZnMgKHN0cnVjdCBzdGF0dmZzICpidWYpOworICBpbnQgZnN0YXQgKHN0 cnVjdCBzdGF0ICpidWYpOworICBpbnQgZnN0YXR2ZnMgKHN0cnVjdCBzdGF0dmZzICpidWYpOwog CiAgIGZoYW5kbGVyX2N5Z2RyaXZlICh2b2lkICopIHt9CiAgIGRldl90IGdldF9kZXYgKCkgeyBy ZXR1cm4gZ2V0X2RldmljZSAoKTsgfQpAQCAtMTg0Niw4ICsxODQ2LDggQEAgY2xhc3MgZmhhbmRs ZXJfc2VyaWFsOiBwdWJsaWMgZmhhbmRsZXJfYmFzZQogCiAgIGludCBvcGVuIChpbnQgZmxhZ3Ms IG1vZGVfdCBtb2RlKTsKICAgaW50IGluaXQgKEhBTkRMRSBoLCBEV09SRCBhLCBtb2RlX3QgZmxh Z3MpOwotICB2b2lkIF9fcmVnMyByYXdfcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIHVsZW4pOwot ICBzc2l6ZV90IF9fcmVnMyByYXdfd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHVsZW4p OworICB2b2lkIHJhd19yZWFkICh2b2lkICpwdHIsIHNpemVfdCYgdWxlbik7CisgIHNzaXplX3Qg cmF3X3dyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCB1bGVuKTsKICAgaW50IHRjc2VuZGJy ZWFrIChpbnQpOwogICBpbnQgdGNkcmFpbiAoKTsKICAgaW50IHRjZmxvdyAoaW50KTsKQEAgLTIx MDEsMTAgKzIxMDEsMTAgQEAgY2xhc3MgZGV2X2NvbnNvbGUKICAgaW50IHNldF9jbF94IChjbHR5 cGUpOwogICBpbnQgc2V0X2NsX3kgKGNsdHlwZSk7CiAgIGJvb2wgZmlsbGluIChIQU5ETEUpOwot ICBib29sIF9fcmVnMyBzY3JvbGxfd2luZG93IChIQU5ETEUsIGludCwgaW50LCBpbnQsIGludCk7 Ci0gIHZvaWQgX19yZWczIHNjcm9sbF9idWZmZXIgKEhBTkRMRSwgaW50LCBpbnQsIGludCwgaW50 LCBpbnQsIGludCk7Ci0gIHZvaWQgX19yZWczIGNsZWFyX3NjcmVlbiAoSEFORExFLCBpbnQsIGlu dCwgaW50LCBpbnQpOwotICB2b2lkIF9fcmVnMyBzYXZlX3Jlc3RvcmUgKEhBTkRMRSwgY2hhcik7 CisgIGJvb2wgc2Nyb2xsX3dpbmRvdyAoSEFORExFLCBpbnQsIGludCwgaW50LCBpbnQpOworICB2 b2lkIHNjcm9sbF9idWZmZXIgKEhBTkRMRSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk7 CisgIHZvaWQgY2xlYXJfc2NyZWVuIChIQU5ETEUsIGludCwgaW50LCBpbnQsIGludCk7CisgIHZv aWQgc2F2ZV9yZXN0b3JlIChIQU5ETEUsIGNoYXIpOwogCiAgIGZyaWVuZCBjbGFzcyBmaGFuZGxl cl9jb25zb2xlOwogfTsKQEAgLTIxNTUsMTAgKzIxNTUsMTAgQEAgcHJpdmF0ZToKIAogICB2b2lk IHNjcm9sbF9idWZmZXIgKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpOwogICB2b2lkIHNj cm9sbF9idWZmZXJfc2NyZWVuIChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KTsKLSAgdm9p ZCBfX3JlZzMgY2xlYXJfc2NyZWVuIChjbHR5cGUsIGNsdHlwZSwgY2x0eXBlLCBjbHR5cGUpOwot ICB2b2lkIF9fcmVnMyBjdXJzb3Jfc2V0IChib29sLCBpbnQsIGludCk7Ci0gIHZvaWQgX19yZWcz IGN1cnNvcl9nZXQgKGludCAqLCBpbnQgKik7Ci0gIHZvaWQgX19yZWczIGN1cnNvcl9yZWwgKGlu dCwgaW50KTsKKyAgdm9pZCBjbGVhcl9zY3JlZW4gKGNsdHlwZSwgY2x0eXBlLCBjbHR5cGUsIGNs dHlwZSk7CisgIHZvaWQgY3Vyc29yX3NldCAoYm9vbCwgaW50LCBpbnQpOworICB2b2lkIGN1cnNv cl9nZXQgKGludCAqLCBpbnQgKik7CisgIHZvaWQgY3Vyc29yX3JlbCAoaW50LCBpbnQpOwogICBp bmxpbmUgdm9pZCB3cml0ZV9yZXBsYWNlbWVudF9jaGFyICgpOwogICBpbmxpbmUgYm9vbCB3cml0 ZV9jb25zb2xlIChQV0NIQVIsIERXT1JELCBEV09SRCYpOwogICBjb25zdCB1bnNpZ25lZCBjaGFy ICp3cml0ZV9ub3JtYWwgKHVuc2lnbmVkIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBjb25zdCBjaGFy ICopOwpAQCAtMjIwMSw3ICsyMjAxLDcgQEAgcHJpdmF0ZToKICAgdm9pZCBwb3N0X29wZW5fc2V0 dXAgKGludCBmZCk7CiAgIGludCBkdXAgKGZoYW5kbGVyX2Jhc2UgKiwgaW50KTsKIAotICB2b2lk IF9fcmVnMyByZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKTsKKyAgdm9pZCByZWFkICh2b2lk ICpwdHIsIHNpemVfdCYgbGVuKTsKICAgc3NpemVfdCBfX3N0ZGNhbGwgd3JpdGUgKGNvbnN0IHZv aWQgKnB0ciwgc2l6ZV90IGxlbik7CiAgIHZvaWQgZG9lY2hvIChjb25zdCB2b2lkICpzdHIsIERX T1JEIGxlbik7CiAgIGludCBjbG9zZSAoKTsKQEAgLTIzODcsNyArMjM4Nyw3IEBAIGNsYXNzIGZo YW5kbGVyX3B0eV9zbGF2ZTogcHVibGljIGZoYW5kbGVyX3B0eV9jb21tb24KICAgaW50IG9wZW4g KGludCBmbGFncywgbW9kZV90IG1vZGUgPSAwKTsKICAgYm9vbCBvcGVuX3NldHVwIChpbnQgZmxh Z3MpOwogICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3Qg bGVuKTsKLSAgdm9pZCBfX3JlZzMgcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbik7CisgIHZv aWQgcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbik7CiAgIGludCBpbml0IChIQU5ETEUsIERX T1JELCBtb2RlX3QpOwogCiAgIGludCB0Y3NldGF0dHIgKGludCBhLCBjb25zdCBzdHJ1Y3QgdGVy bWlvcyAqdCk7CkBAIC0yNDA1LDEwICsyNDA1LDEwIEBAIGNsYXNzIGZoYW5kbGVyX3B0eV9zbGF2 ZTogcHVibGljIGZoYW5kbGVyX3B0eV9jb21tb24KICAgc2VsZWN0X3JlY29yZCAqc2VsZWN0X2V4 Y2VwdCAoc2VsZWN0X3N0dWZmICopOwogICBiZ19jaGVja190eXBlcyBiZ19jaGVjayAoaW50IHNp ZywgYm9vbCBkb250c2lnbmFsID0gZmFsc2UpOwogICB2aXJ0dWFsIGNoYXIgY29uc3QgKnR0eW5h bWUgKCkgeyByZXR1cm4gcGMuZGV2Lm5hbWUgKCk7IH0KLSAgaW50IF9fcmVnMiBmc3RhdCAoc3Ry dWN0IHN0YXQgKmJ1Zik7Ci0gIGludCBfX3JlZzMgZmFjbCAoaW50LCBpbnQsIHN0cnVjdCBhY2wg Kik7Ci0gIGludCBfX3JlZzEgZmNobW9kIChtb2RlX3QgbW9kZSk7Ci0gIGludCBfX3JlZzIgZmNo b3duICh1aWRfdCB1aWQsIGdpZF90IGdpZCk7CisgIGludCBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1 Zik7CisgIGludCBmYWNsIChpbnQsIGludCwgc3RydWN0IGFjbCAqKTsKKyAgaW50IGZjaG1vZCAo bW9kZV90IG1vZGUpOworICBpbnQgZmNob3duICh1aWRfdCB1aWQsIGdpZF90IGdpZCk7CiAKICAg ZmhhbmRsZXJfcHR5X3NsYXZlICh2b2lkICopIHt9CiAKQEAgLTI1MDIsNyArMjUwMiw3IEBAIHB1 YmxpYzoKICAgaW50IG9wZW4gKGludCBmbGFncywgbW9kZV90IG1vZGUgPSAwKTsKICAgYm9vbCBv cGVuX3NldHVwIChpbnQgZmxhZ3MpOwogICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZSAoY29uc3Qg dm9pZCAqcHRyLCBzaXplX3QgbGVuKTsKLSAgdm9pZCBfX3JlZzMgcmVhZCAodm9pZCAqcHRyLCBz aXplX3QmIGxlbik7CisgIHZvaWQgcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbik7CiAgIGlu dCBjbG9zZSAoKTsKICAgdm9pZCBjbGVhbnVwICgpOwogCkBAIC0yNTc5LDcgKzI1NzksNyBAQCBj bGFzcyBmaGFuZGxlcl9kZXZfemVybzogcHVibGljIGZoYW5kbGVyX2Jhc2UKICBwdWJsaWM6CiAg IGZoYW5kbGVyX2Rldl96ZXJvICgpOwogICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZSAoY29uc3Qg dm9pZCAqcHRyLCBzaXplX3QgbGVuKTsKLSAgdm9pZCBfX3JlZzMgcmVhZCAodm9pZCAqcHRyLCBz aXplX3QmIGxlbik7CisgIHZvaWQgcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbik7CiAgIG9m Zl90IGxzZWVrIChvZmZfdCwgaW50KSB7IHJldHVybiAwOyB9CiAKICAgdmlydHVhbCBIQU5ETEUg bW1hcCAoY2FkZHJfdCAqYWRkciwgc2l6ZV90IGxlbiwgaW50IHByb3QsCkBAIC0yNjE4LDcgKzI2 MTgsNyBAQCBjbGFzcyBmaGFuZGxlcl9kZXZfcmFuZG9tOiBwdWJsaWMgZmhhbmRsZXJfYmFzZQog CiAgcHVibGljOgogICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBz aXplX3QgbGVuKTsKLSAgdm9pZCBfX3JlZzMgcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbik7 CisgIHZvaWQgcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbik7CiAgIG9mZl90IGxzZWVrIChv ZmZfdCwgaW50KSB7IHJldHVybiAwOyB9CiAKICAgZmhhbmRsZXJfZGV2X3JhbmRvbSAoKSA6IGZo YW5kbGVyX2Jhc2UgKCkge30KQEAgLTI2NTEsOSArMjY1MSw5IEBAIGNsYXNzIGZoYW5kbGVyX2Rl dl9jbGlwYm9hcmQ6IHB1YmxpYyBmaGFuZGxlcl9iYXNlCiAgcHVibGljOgogICBmaGFuZGxlcl9k ZXZfY2xpcGJvYXJkICgpOwogICBpbnQgaXNfd2luZG93cyAoKSB7IHJldHVybiAxOyB9Ci0gIGlu dCBfX3JlZzIgZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpOworICBpbnQgZnN0YXQgKHN0cnVjdCBz dGF0ICpidWYpOwogICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBz aXplX3QgbGVuKTsKLSAgdm9pZCBfX3JlZzMgcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbik7 CisgIHZvaWQgcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbik7CiAgIG9mZl90IGxzZWVrIChv ZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpOwogICBpbnQgY2xvc2UgKCk7CiAKQEAgLTI2ODksNyAr MjY4OSw3IEBAIGNsYXNzIGZoYW5kbGVyX3dpbmRvd3M6IHB1YmxpYyBmaGFuZGxlcl9iYXNlCiAg IEhXTkQgZ2V0X2h3bmQgKCkgeyByZXR1cm4gaFduZF87IH0KICAgaW50IG9wZW4gKGludCBmbGFn cywgbW9kZV90IG1vZGUgPSAwKTsKICAgc3NpemVfdCBfX3N0ZGNhbGwgd3JpdGUgKGNvbnN0IHZv aWQgKnB0ciwgc2l6ZV90IGxlbik7Ci0gIHZvaWQgX19yZWczIHJlYWQgKHZvaWQgKnB0ciwgc2l6 ZV90JiBsZW4pOworICB2b2lkIHJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pOwogICBpbnQg aW9jdGwgKHVuc2lnbmVkIGludCBjbWQsIHZvaWQgKik7CiAgIG9mZl90IGxzZWVrIChvZmZfdCwg aW50KSB7IHJldHVybiAwOyB9CiAgIGludCBjbG9zZSAoKSB7IHJldHVybiAwOyB9CkBAIC0yNzM1 LDcgKzI3MzUsNyBAQCBjbGFzcyBmaGFuZGxlcl9kZXZfZHNwOiBwdWJsaWMgZmhhbmRsZXJfYmFz ZQogCiAgIGludCBvcGVuIChpbnQsIG1vZGVfdCBtb2RlID0gMCk7CiAgIHNzaXplX3QgX19zdGRj YWxsIHdyaXRlIChjb25zdCB2b2lkICosIHNpemVfdCk7Ci0gIHZvaWQgX19yZWczIHJlYWQgKHZv aWQgKiwgc2l6ZV90Jik7CisgIHZvaWQgcmVhZCAodm9pZCAqLCBzaXplX3QmKTsKICAgaW50IGlv Y3RsICh1bnNpZ25lZCBpbnQsIHZvaWQgKik7CiAgIGludCBjbG9zZSAoKTsKICAgdm9pZCBmaXh1 cF9hZnRlcl9mb3JrIChIQU5ETEUpOwpAQCAtMjc0MywxMyArMjc0MywxMyBAQCBjbGFzcyBmaGFu ZGxlcl9kZXZfZHNwOiBwdWJsaWMgZmhhbmRsZXJfYmFzZQogCiAgcHJpdmF0ZToKICAgc3NpemVf dCBfX3N0ZGNhbGwgX3dyaXRlIChjb25zdCB2b2lkICosIHNpemVfdCk7Ci0gIHZvaWQgX19yZWcz IF9yZWFkICh2b2lkICosIHNpemVfdCYpOworICB2b2lkIF9yZWFkICh2b2lkICosIHNpemVfdCYp OwogICBpbnQgX2lvY3RsICh1bnNpZ25lZCBpbnQsIHZvaWQgKik7CiAgIHZvaWQgX2ZpeHVwX2Fm dGVyX2ZvcmsgKEhBTkRMRSk7CiAgIHZvaWQgX2ZpeHVwX2FmdGVyX2V4ZWMgKCk7CiAKLSAgdm9p ZCBfX3JlZzEgY2xvc2VfYXVkaW9faW4gKCk7Ci0gIHZvaWQgX19yZWcyIGNsb3NlX2F1ZGlvX291 dCAoYm9vbCA9IGZhbHNlKTsKKyAgdm9pZCBjbG9zZV9hdWRpb19pbiAoKTsKKyAgdm9pZCBjbG9z ZV9hdWRpb19vdXQgKGJvb2wgPSBmYWxzZSk7CiAgIGJvb2wgdXNlX2FyY2hldHlwZSAoKSBjb25z dCB7cmV0dXJuIHRydWU7fQogCiAgIGZoYW5kbGVyX2Rldl9kc3AgKHZvaWQgKikge30KQEAgLTI3 ODQsMjEgKzI3ODQsMjEgQEAgY2xhc3MgZmhhbmRsZXJfdmlydHVhbCA6IHB1YmxpYyBmaGFuZGxl cl9iYXNlCiAgIHZpcnR1YWwgfmZoYW5kbGVyX3ZpcnR1YWwoKTsKIAogICB2aXJ0dWFsIHZpcnR1 YWxfZnR5cGVfdCBleGlzdHMoKTsKLSAgRElSIF9fcmVnMiAqb3BlbmRpciAoaW50IGZkKTsKKyAg RElSICpvcGVuZGlyIChpbnQgZmQpOwogICBsb25nIHRlbGxkaXIgKERJUiAqKTsKICAgdm9pZCBz ZWVrZGlyIChESVIgKiwgbG9uZyk7CiAgIHZvaWQgcmV3aW5kZGlyIChESVIgKik7CiAgIGludCBj bG9zZWRpciAoRElSICopOwogICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZSAoY29uc3Qgdm9pZCAq cHRyLCBzaXplX3QgbGVuKTsKLSAgdm9pZCBfX3JlZzMgcmVhZCAodm9pZCAqcHRyLCBzaXplX3Qm IGxlbik7CisgIHZvaWQgcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbik7CiAgIG9mZl90IGxz ZWVrIChvZmZfdCwgaW50KTsKICAgaW50IGR1cCAoZmhhbmRsZXJfYmFzZSAqY2hpbGQsIGludCk7 CiAgIGludCBvcGVuIChpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlID0gMCk7CiAgIGludCBjbG9zZSAo KTsKLSAgaW50IF9fcmVnMiBmc3RhdHZmcyAoc3RydWN0IHN0YXR2ZnMgKmJ1Zik7Ci0gIGludCBf X3JlZzEgZmNobW9kIChtb2RlX3QgbW9kZSk7Ci0gIGludCBfX3JlZzIgZmNob3duICh1aWRfdCB1 aWQsIGdpZF90IGdpZCk7Ci0gIGludCBfX3JlZzMgZmFjbCAoaW50LCBpbnQsIHN0cnVjdCBhY2wg Kik7CisgIGludCBmc3RhdHZmcyAoc3RydWN0IHN0YXR2ZnMgKmJ1Zik7CisgIGludCBmY2htb2Qg KG1vZGVfdCBtb2RlKTsKKyAgaW50IGZjaG93biAodWlkX3QgdWlkLCBnaWRfdCBnaWQpOworICBp bnQgZmFjbCAoaW50LCBpbnQsIHN0cnVjdCBhY2wgKik7CiAgIHZpcnR1YWwgYm9vbCBmaWxsX2Zp bGVidWYgKCk7CiAgIGNoYXIgKmdldF9maWxlYnVmICgpIHsgcmV0dXJuIGZpbGVidWY7IH0KICAg dm9pZCBmaXh1cF9hZnRlcl9leGVjICgpOwpAQCAtMjgyNiwxMyArMjgyNiwxMyBAQCBjbGFzcyBm aGFuZGxlcl9wcm9jOiBwdWJsaWMgZmhhbmRsZXJfdmlydHVhbAogIHB1YmxpYzoKICAgZmhhbmRs ZXJfcHJvYyAoKTsKICAgdmlydHVhbF9mdHlwZV90IGV4aXN0cygpOwotICBESVIgX19yZWcyICpv cGVuZGlyIChpbnQgZmQpOworICBESVIgKm9wZW5kaXIgKGludCBmZCk7CiAgIGludCBjbG9zZWRp ciAoRElSICopOwotICBpbnQgX19yZWczIHJlYWRkaXIgKERJUiAqLCBkaXJlbnQgKik7CisgIGlu dCByZWFkZGlyIChESVIgKiwgZGlyZW50ICopOwogICBzdGF0aWMgZmhfZGV2aWNlcyBnZXRfcHJv Y19maGFuZGxlciAoY29uc3QgY2hhciAqcGF0aCk7CiAKICAgaW50IG9wZW4gKGludCBmbGFncywg bW9kZV90IG1vZGUgPSAwKTsKLSAgaW50IF9fcmVnMiBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7 CisgIGludCBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7CiAgIGJvb2wgZmlsbF9maWxlYnVmICgp OwogCiAgIGZoYW5kbGVyX3Byb2MgKHZvaWQgKikge30KQEAgLTI4NTcsMTggKzI4NTcsMTggQEAg Y2xhc3MgZmhhbmRsZXJfcHJvY3N5czogcHVibGljIGZoYW5kbGVyX3ZpcnR1YWwKIHsKICBwdWJs aWM6CiAgIGZoYW5kbGVyX3Byb2NzeXMgKCk7Ci0gIHZpcnR1YWxfZnR5cGVfdCBfX3JlZzIgZXhp c3RzKHN0cnVjdCBzdGF0ICpidWYpOworICB2aXJ0dWFsX2Z0eXBlX3QgZXhpc3RzKHN0cnVjdCBz dGF0ICpidWYpOwogICB2aXJ0dWFsX2Z0eXBlX3QgZXhpc3RzKCk7Ci0gIERJUiBfX3JlZzIgKm9w ZW5kaXIgKGludCBmZCk7Ci0gIGludCBfX3JlZzMgcmVhZGRpciAoRElSICosIGRpcmVudCAqKTsK KyAgRElSICpvcGVuZGlyIChpbnQgZmQpOworICBpbnQgcmVhZGRpciAoRElSICosIGRpcmVudCAq KTsKICAgbG9uZyB0ZWxsZGlyIChESVIgKik7CiAgIHZvaWQgc2Vla2RpciAoRElSICosIGxvbmcp OwogICBpbnQgY2xvc2VkaXIgKERJUiAqKTsKICAgaW50IG9wZW4gKGludCBmbGFncywgbW9kZV90 IG1vZGUgPSAwKTsKICAgaW50IGNsb3NlICgpOwotICB2b2lkIF9fcmVnMyByZWFkICh2b2lkICpw dHIsIHNpemVfdCYgbGVuKTsKKyAgdm9pZCByZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKTsK ICAgc3NpemVfdCBfX3N0ZGNhbGwgd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbik7 Ci0gIGludCBfX3JlZzIgZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpOworICBpbnQgZnN0YXQgKHN0 cnVjdCBzdGF0ICpidWYpOwogICBib29sIGZpbGxfZmlsZWJ1ZiAoKTsKIAogICBmaGFuZGxlcl9w cm9jc3lzICh2b2lkICopIHt9CkBAIC0yODk1LDkgKzI4OTUsOSBAQCBjbGFzcyBmaGFuZGxlcl9w cm9jc3lzdmlwYzogcHVibGljIGZoYW5kbGVyX3Byb2MKICBwdWJsaWM6CiAgIGZoYW5kbGVyX3By b2NzeXN2aXBjICgpOwogICB2aXJ0dWFsX2Z0eXBlX3QgZXhpc3RzKCk7Ci0gIGludCBfX3JlZzMg cmVhZGRpciAoRElSICosIGRpcmVudCAqKTsKKyAgaW50IHJlYWRkaXIgKERJUiAqLCBkaXJlbnQg Kik7CiAgIGludCBvcGVuIChpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlID0gMCk7Ci0gIGludCBfX3Jl ZzIgZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpOworICBpbnQgZnN0YXQgKHN0cnVjdCBzdGF0ICpi dWYpOwogICBib29sIGZpbGxfZmlsZWJ1ZiAoKTsKIAogICBmaGFuZGxlcl9wcm9jc3lzdmlwYyAo dm9pZCAqKSB7fQpAQCAtMjkyMywxMyArMjkyMywxMyBAQCBjbGFzcyBmaGFuZGxlcl9uZXRkcml2 ZTogcHVibGljIGZoYW5kbGVyX3ZpcnR1YWwKICBwdWJsaWM6CiAgIGZoYW5kbGVyX25ldGRyaXZl ICgpOwogICB2aXJ0dWFsX2Z0eXBlX3QgZXhpc3RzKCk7Ci0gIGludCBfX3JlZzMgcmVhZGRpciAo RElSICosIGRpcmVudCAqKTsKKyAgaW50IHJlYWRkaXIgKERJUiAqLCBkaXJlbnQgKik7CiAgIHZv aWQgc2Vla2RpciAoRElSICosIGxvbmcpOwogICB2b2lkIHJld2luZGRpciAoRElSICopOwogICBp bnQgY2xvc2VkaXIgKERJUiAqKTsKICAgaW50IG9wZW4gKGludCBmbGFncywgbW9kZV90IG1vZGUg PSAwKTsKICAgaW50IGNsb3NlICgpOwotICBpbnQgX19yZWcyIGZzdGF0IChzdHJ1Y3Qgc3RhdCAq YnVmKTsKKyAgaW50IGZzdGF0IChzdHJ1Y3Qgc3RhdCAqYnVmKTsKIAogICBmaGFuZGxlcl9uZXRk cml2ZSAodm9pZCAqKSB7fQogCkBAIC0yOTU5LDE1ICsyOTU5LDE1IEBAIGNsYXNzIGZoYW5kbGVy X3JlZ2lzdHJ5OiBwdWJsaWMgZmhhbmRsZXJfcHJvYwogICBmaGFuZGxlcl9yZWdpc3RyeSAoKTsK ICAgdm9pZCBzZXRfbmFtZSAocGF0aF9jb252ICZwYyk7CiAgIHZpcnR1YWxfZnR5cGVfdCBleGlz dHMoKTsKLSAgRElSIF9fcmVnMiAqb3BlbmRpciAoaW50IGZkKTsKLSAgaW50IF9fcmVnMyByZWFk ZGlyIChESVIgKiwgZGlyZW50ICopOworICBESVIgKm9wZW5kaXIgKGludCBmZCk7CisgIGludCBy ZWFkZGlyIChESVIgKiwgZGlyZW50ICopOwogICBsb25nIHRlbGxkaXIgKERJUiAqKTsKICAgdm9p ZCBzZWVrZGlyIChESVIgKiwgbG9uZyk7CiAgIHZvaWQgcmV3aW5kZGlyIChESVIgKik7CiAgIGlu dCBjbG9zZWRpciAoRElSICopOwogCiAgIGludCBvcGVuIChpbnQgZmxhZ3MsIG1vZGVfdCBtb2Rl ID0gMCk7Ci0gIGludCBfX3JlZzIgZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpOworICBpbnQgZnN0 YXQgKHN0cnVjdCBzdGF0ICpidWYpOwogICBib29sIGZpbGxfZmlsZWJ1ZiAoKTsKICAgaW50IGNs b3NlICgpOwogICBpbnQgZHVwIChmaGFuZGxlcl9iYXNlICpjaGlsZCwgaW50KTsKQEAgLTI5OTks MTEgKzI5OTksMTEgQEAgY2xhc3MgZmhhbmRsZXJfcHJvY2VzczogcHVibGljIGZoYW5kbGVyX3By b2MKICBwdWJsaWM6CiAgIGZoYW5kbGVyX3Byb2Nlc3MgKCk7CiAgIHZpcnR1YWxfZnR5cGVfdCBl eGlzdHMoKTsKLSAgRElSIF9fcmVnMiAqb3BlbmRpciAoaW50IGZkKTsKKyAgRElSICpvcGVuZGly IChpbnQgZmQpOwogICBpbnQgY2xvc2VkaXIgKERJUiAqKTsKLSAgaW50IF9fcmVnMyByZWFkZGly IChESVIgKiwgZGlyZW50ICopOworICBpbnQgcmVhZGRpciAoRElSICosIGRpcmVudCAqKTsKICAg aW50IG9wZW4gKGludCBmbGFncywgbW9kZV90IG1vZGUgPSAwKTsKLSAgaW50IF9fcmVnMiBmc3Rh dCAoc3RydWN0IHN0YXQgKmJ1Zik7CisgIGludCBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7CiAg IGJvb2wgZmlsbF9maWxlYnVmICgpOwogCiAgIGZoYW5kbGVyX3Byb2Nlc3MgKHZvaWQgKikge30K QEAgLTMwMzMsOCArMzAzMyw4IEBAIGNsYXNzIGZoYW5kbGVyX3Byb2Nlc3NfZmQgOiBwdWJsaWMg ZmhhbmRsZXJfcHJvY2VzcwogICBmaGFuZGxlcl9wcm9jZXNzX2ZkICh2b2lkICopIHt9CiAKICAg dmlydHVhbCBmaGFuZGxlcl9iYXNlICpmZF9yZW9wZW4gKGludCwgbW9kZV90KTsKLSAgaW50IF9f cmVnMiBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7Ci0gIHZpcnR1YWwgaW50IF9fcmVnMiBsaW5r IChjb25zdCBjaGFyICopOworICBpbnQgZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpOworICB2aXJ0 dWFsIGludCBsaW5rIChjb25zdCBjaGFyICopOwogCiAgIHZvaWQgY29weV9mcm9tIChmaGFuZGxl cl9iYXNlICp4KQogICB7CkBAIC0zMDU5LDkgKzMwNTksOSBAQCBjbGFzcyBmaGFuZGxlcl9wcm9j bmV0OiBwdWJsaWMgZmhhbmRsZXJfcHJvYwogICBmaGFuZGxlcl9wcm9jbmV0ICgpOwogICBmaGFu ZGxlcl9wcm9jbmV0ICh2b2lkICopIHt9CiAgIHZpcnR1YWxfZnR5cGVfdCBleGlzdHMoKTsKLSAg aW50IF9fcmVnMyByZWFkZGlyIChESVIgKiwgZGlyZW50ICopOworICBpbnQgcmVhZGRpciAoRElS ICosIGRpcmVudCAqKTsKICAgaW50IG9wZW4gKGludCBmbGFncywgbW9kZV90IG1vZGUgPSAwKTsK LSAgaW50IF9fcmVnMiBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7CisgIGludCBmc3RhdCAoc3Ry dWN0IHN0YXQgKmJ1Zik7CiAgIGJvb2wgZmlsbF9maWxlYnVmICgpOwogCiAgIHZvaWQgY29weV9m cm9tIChmaGFuZGxlcl9iYXNlICp4KQpAQCAtMzA4Niw3ICszMDg2LDcgQEAgY2xhc3MgZmhhbmRs ZXJfZGV2X2ZkOiBwdWJsaWMgZmhhbmRsZXJfdmlydHVhbAogICBmaGFuZGxlcl9kZXZfZmQgKCk7 CiAgIHZpcnR1YWxfZnR5cGVfdCBleGlzdHMoKTsKIAotICBpbnQgX19yZWcyIGZzdGF0IChzdHJ1 Y3Qgc3RhdCAqYnVmKTsKKyAgaW50IGZzdGF0IChzdHJ1Y3Qgc3RhdCAqYnVmKTsKICAgYm9vbCBm aWxsX2ZpbGVidWYgKCk7CiAKICAgZmhhbmRsZXJfZGV2X2ZkICh2b2lkICopIHt9CkBAIC0zMTIw LDggKzMxMjAsOCBAQCBjbGFzcyBmaGFuZGxlcl9zaWduYWxmZCA6IHB1YmxpYyBmaGFuZGxlcl9i YXNlCiAgIGNoYXIgKmdldF9wcm9jX2ZkX25hbWUgKGNoYXIgKmJ1Zik7CiAKICAgaW50IHNpZ25h bGZkIChjb25zdCBzaWdzZXRfdCAqbWFzaywgaW50IGZsYWdzKTsKLSAgaW50IF9fcmVnMiBmc3Rh dCAoc3RydWN0IHN0YXQgKmJ1Zik7Ci0gIHZvaWQgX19yZWczIHJlYWQgKHZvaWQgKnB0ciwgc2l6 ZV90JiBsZW4pOworICBpbnQgZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpOworICB2b2lkIHJlYWQg KHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pOwogICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZSAoY29u c3Qgdm9pZCAqLCBzaXplX3QpOwogCiAgIGludCBwb2xsICgpOwpAQCAtMzE2NSw4ICszMTY1LDgg QEAgY2xhc3MgZmhhbmRsZXJfdGltZXJmZCA6IHB1YmxpYyBmaGFuZGxlcl9iYXNlCiAJICAgICAg IHN0cnVjdCBpdGltZXJzcGVjICpvdmFsdWUpOwogICBpbnQgZ2V0dGltZSAoc3RydWN0IGl0aW1l cnNwZWMgKm92YWx1ZSk7CiAKLSAgaW50IF9fcmVnMiBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7 Ci0gIHZvaWQgX19yZWczIHJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pOworICBpbnQgZnN0 YXQgKHN0cnVjdCBzdGF0ICpidWYpOworICB2b2lkIHJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBs ZW4pOwogICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZSAoY29uc3Qgdm9pZCAqLCBzaXplX3QpOwog ICBpbnQgZHVwIChmaGFuZGxlcl9iYXNlICpjaGlsZCwgaW50KTsKICAgaW50IGlvY3RsICh1bnNp Z25lZCBpbnQsIHZvaWQgKik7CkBAIC0zMjQ3LDE5ICszMjQ3LDE5IEBAIHB1YmxpYzoKIAogI2Rl ZmluZSBOT19JTVBMCQl7IHNldF9lcnJubyAoRVBFUk0pOyByZXR1cm4gLTE7IH0KIAotICBzc2l6 ZV90IF9fcmVnMyBmZ2V0eGF0dHIgKGNvbnN0IGNoYXIgKiwgdm9pZCAqLCBzaXplX3QpIE5PX0lN UEw7Ci0gIGludCBfX3JlZzMgZnNldHhhdHRyIChjb25zdCBjaGFyICosIGNvbnN0IHZvaWQgKiwg c2l6ZV90LCBpbnQpIE5PX0lNUEw7Ci0gIGludCBfX3JlZzMgZmFkdmlzZSAob2ZmX3QsIG9mZl90 LCBpbnQpIE5PX0lNUEw7Ci0gIGludCBfX3JlZzMgZnRydW5jYXRlIChvZmZfdCwgYm9vbCkgTk9f SU1QTDsKLSAgaW50IF9fcmVnMiBsaW5rIChjb25zdCBjaGFyICopIE5PX0lNUEw7CisgIHNzaXpl X3QgZmdldHhhdHRyIChjb25zdCBjaGFyICosIHZvaWQgKiwgc2l6ZV90KSBOT19JTVBMOworICBp bnQgZnNldHhhdHRyIChjb25zdCBjaGFyICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBpbnQpIE5P X0lNUEw7CisgIGludCBmYWR2aXNlIChvZmZfdCwgb2ZmX3QsIGludCkgTk9fSU1QTDsKKyAgaW50 IGZ0cnVuY2F0ZSAob2ZmX3QsIGJvb2wpIE5PX0lNUEw7CisgIGludCBsaW5rIChjb25zdCBjaGFy ICopIE5PX0lNUEw7CiAgIGludCBta2RpciAobW9kZV90KSBOT19JTVBMOwotICBzc2l6ZV90IF9f cmVnMyBwcmVhZCAodm9pZCAqLCBzaXplX3QsIG9mZl90LCB2b2lkICphaW8gPSBOVUxMKSBOT19J TVBMOwotICBzc2l6ZV90IF9fcmVnMyBwd3JpdGUgKHZvaWQgKiwgc2l6ZV90LCBvZmZfdCwgdm9p ZCAqYWlvID0gTlVMTCkgTk9fSU1QTDsKKyAgc3NpemVfdCBwcmVhZCAodm9pZCAqLCBzaXplX3Qs IG9mZl90LCB2b2lkICphaW8gPSBOVUxMKSBOT19JTVBMOworICBzc2l6ZV90IHB3cml0ZSAodm9p ZCAqLCBzaXplX3QsIG9mZl90LCB2b2lkICphaW8gPSBOVUxMKSBOT19JTVBMOwogICBpbnQgbG9j ayAoaW50LCBzdHJ1Y3QgZmxvY2sgKikgTk9fSU1QTDsKICAgaW50IG1hbmRfbG9jayAoaW50LCBz dHJ1Y3QgZmxvY2sgKikgTk9fSU1QTDsKLSAgdm9pZCBfX3JlZzMgcmVhZCAodm9pZCAqLCBzaXpl X3QmKTsKKyAgdm9pZCByZWFkICh2b2lkICosIHNpemVfdCYpOwogICBvZmZfdCBsc2VlayAob2Zm X3QsIGludCk7Ci0gIGludCBfX3JlZzIgZnN0YXQgKHN0cnVjdCBzdGF0ICopOworICBpbnQgZnN0 YXQgKHN0cnVjdCBzdGF0ICopOwogICBpbnQgZHVwIChmaGFuZGxlcl9iYXNlICosIGludCk7CiAg IGludCBmY250bCAoaW50IGNtZCwgaW50cHRyX3QpOwogICBpbnQgaW9jdGwgKHVuc2lnbmVkIGlu dCwgdm9pZCAqKTsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfY2xpcGJvYXJk LmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9jbGlwYm9hcmQuY2MKaW5kZXggZTI4MTRkMWM3 Li45NTE1Nzk1ZTQgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfY2xpcGJvYXJk LmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfY2xpcGJvYXJkLmNjCkBAIC0xNTYsNyAr MTU2LDcgQEAgZmhhbmRsZXJfZGV2X2NsaXBib2FyZDo6d3JpdGUgKGNvbnN0IHZvaWQgKmJ1Ziwg c2l6ZV90IGxlbikKICAgcmV0dXJuIGxlbjsKIH0KIAotaW50IF9fcmVnMgoraW50CiBmaGFuZGxl cl9kZXZfY2xpcGJvYXJkOjpmc3RhdCAoc3RydWN0IHN0YXQgKmJ1ZikKIHsKICAgYnVmLT5zdF9t b2RlID0gU19JRkNIUiB8IFNURF9SQklUUyB8IFNURF9XQklUUyB8IFNfSVdHUlAgfCBTX0lXT1RI OwpAQCAtMTk4LDcgKzE5OCw3IEBAIGZoYW5kbGVyX2Rldl9jbGlwYm9hcmQ6OmZzdGF0IChzdHJ1 Y3Qgc3RhdCAqYnVmKQogICByZXR1cm4gMDsKIH0KIAotdm9pZCBfX3JlZzMKK3ZvaWQKIGZoYW5k bGVyX2Rldl9jbGlwYm9hcmQ6OnJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pCiB7CiAgIEhH TE9CQUwgaGdsYjsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfY29uc29sZS5j YyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfY29uc29sZS5jYwppbmRleCA5MzM2MTQyMjguLjQ1 Yjc4NmRkNSAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9jb25zb2xlLmNjCisr KyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfY29uc29sZS5jYwpAQCAtODMzLDcgKzgzMyw3IEBA IGZoYW5kbGVyX2NvbnNvbGU6OmJnX2NoZWNrIChpbnQgc2lnLCBib29sIGRvbnRzaWduYWwpCiAg IHJldHVybiBmaGFuZGxlcl90ZXJtaW9zOjpiZ19jaGVjayAoc2lnLCBkb250c2lnbmFsKTsKIH0K IAotdm9pZCBfX3JlZzMKK3ZvaWQKIGZoYW5kbGVyX2NvbnNvbGU6OnJlYWQgKHZvaWQgKnB2LCBz aXplX3QmIGJ1ZmxlbikKIHsKICAgdGVybWlvc19wcmludGYgKCJyZWFkKCVwLCVkKSIsIHB2LCBi dWZsZW4pOwpAQCAtMTM3OSw3ICsxMzc5LDcgQEAgZGV2X2NvbnNvbGU6OmZpbGxpbiAoSEFORExF IGgpCiAgIHJldHVybiByZXQ7CiB9CiAKLXZvaWQgX19yZWczCit2b2lkCiBkZXZfY29uc29sZTo6 c2Nyb2xsX2J1ZmZlciAoSEFORExFIGgsIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MiwK IAkJCSAgICBpbnQgeG4sIGludCB5bikKIHsKQEAgLTE5NDIsNyArMTk0Miw3IEBAIGRldl9jb25z b2xlOjpzY3JvbGxfd2luZG93IChIQU5ETEUgaCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50 IHkyKQogICogQ2xlYXIgdGhlIHNjcmVlbiBjb250ZXh0IGZyb20geDEveTEgdG8geDIveTIgY2Vs bC4KICAqIE5lZ2F0aXZlIHZhbHVlcyByZXByZXNlbnRzIGN1cnJlbnQgc2NyZWVuIGRpbWVuc2lv bnMKICAqLwotdm9pZCBfX3JlZzMKK3ZvaWQKIGZoYW5kbGVyX2NvbnNvbGU6OmNsZWFyX3NjcmVl biAoY2x0eXBlIHhjMSwgY2x0eXBlIHljMSwgY2x0eXBlIHhjMiwgY2x0eXBlIHljMikKIHsKICAg SEFORExFIGggPSBnZXRfb3V0cHV0X2hhbmRsZSAoKTsKQEAgLTE5NzAsNyArMTk3MCw3IEBAIGZo YW5kbGVyX2NvbnNvbGU6OmNsZWFyX3NjcmVlbiAoY2x0eXBlIHhjMSwgY2x0eXBlIHljMSwgY2x0 eXBlIHhjMiwgY2x0eXBlIHljMikKICAgICBjb24uY2xlYXJfc2NyZWVuIChoLCB4MSwgeTEsIHgy LCB5Mik7CiB9CiAKLXZvaWQgX19yZWczCit2b2lkCiBkZXZfY29uc29sZTo6Y2xlYXJfc2NyZWVu IChIQU5ETEUgaCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyKQogewogICBDT09SRCB0 bGM7CkBAIC0xOTk1LDcgKzE5OTUsNyBAQCBkZXZfY29uc29sZTo6Y2xlYXJfc2NyZWVuIChIQU5E TEUgaCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyKQogICByZWxlYXNlX2F0dGFjaF9t dXRleCAoKTsKIH0KIAotdm9pZCBfX3JlZzMKK3ZvaWQKIGZoYW5kbGVyX2NvbnNvbGU6OmN1cnNv cl9zZXQgKGJvb2wgcmVsX3RvX3RvcCwgaW50IHgsIGludCB5KQogewogICBDT09SRCBwb3M7CkBA IC0yMDMwLDcgKzIwMzAsNyBAQCBmaGFuZGxlcl9jb25zb2xlOjpjdXJzb3Jfc2V0IChib29sIHJl bF90b190b3AsIGludCB4LCBpbnQgeSkKICAgcmVsZWFzZV9hdHRhY2hfbXV0ZXggKCk7CiB9CiAK LXZvaWQgX19yZWczCit2b2lkCiBmaGFuZGxlcl9jb25zb2xlOjpjdXJzb3JfcmVsIChpbnQgeCwg aW50IHkpCiB7CiAgIGNvbi5maWxsaW4gKGdldF9vdXRwdXRfaGFuZGxlICgpKTsKQEAgLTIwMzks NyArMjAzOSw3IEBAIGZoYW5kbGVyX2NvbnNvbGU6OmN1cnNvcl9yZWwgKGludCB4LCBpbnQgeSkK ICAgY3Vyc29yX3NldCAoZmFsc2UsIHgsIHkpOwogfQogCi12b2lkIF9fcmVnMwordm9pZAogZmhh bmRsZXJfY29uc29sZTo6Y3Vyc29yX2dldCAoaW50ICp4LCBpbnQgKnkpCiB7CiAgIGNvbi5maWxs aW4gKGdldF9vdXRwdXRfaGFuZGxlICgpKTsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhh bmRsZXJfY3lnZHJpdmUuY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX2N5Z2RyaXZlLmNjCmlu ZGV4IDkxMzMxYWFhZC4uMWFjMWQ1ZDRmIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5k bGVyX2N5Z2RyaXZlLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfY3lnZHJpdmUuY2MK QEAgLTUyLDcgKzUyLDcgQEAgZmhhbmRsZXJfY3lnZHJpdmU6OmZzdGF0IChzdHJ1Y3Qgc3RhdCAq YnVmKQogICByZXR1cm4gMDsKIH0KIAotaW50IF9fcmVnMgoraW50CiBmaGFuZGxlcl9jeWdkcml2 ZTo6ZnN0YXR2ZnMgKHN0cnVjdCBzdGF0dmZzICpzZnMpCiB7CiAgIC8qIFZpcnR1YWwgZmlsZSBz eXN0ZW0uICBKdXN0IHJldHVybiBhbiBlbXB0eSBidWZmZXIgd2l0aCBhIGZldyB2YWx1ZXMKZGlm ZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfZGV2LmNjIGIvd2luc3VwL2N5Z3dpbi9m aGFuZGxlcl9kZXYuY2MKaW5kZXggOTM0Y2RmMzU4Li5jNmJkYTU2NTQgMTAwNjQ0Ci0tLSBhL3dp bnN1cC9jeWd3aW4vZmhhbmRsZXJfZGV2LmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJf ZGV2LmNjCkBAIC02NCw3ICs2NCw3IEBAIGZoYW5kbGVyX2Rldjo6Y2xvc2UgKCkKICAgcmV0dXJu IGZoYW5kbGVyX2Rpc2tfZmlsZTo6Y2xvc2UgKCk7CiB9CiAKLWludCBfX3JlZzIKK2ludAogZmhh bmRsZXJfZGV2Ojpmc3RhdCAoc3RydWN0IHN0YXQgKnN0KQogewogICAvKiBJZiAvZGV2IHJlYWxs eSBleGlzdHMgb24gZGlzaywgcmV0dXJuIGNvcnJlY3QgZGlzayBpbmZvcm1hdGlvbi4gKi8KQEAg LTc4LDcgKzc4LDcgQEAgZmhhbmRsZXJfZGV2Ojpmc3RhdCAoc3RydWN0IHN0YXQgKnN0KQogICBy ZXR1cm4gMDsKIH0KIAotaW50IF9fcmVnMgoraW50CiBmaGFuZGxlcl9kZXY6OmZzdGF0dmZzIChz dHJ1Y3Qgc3RhdHZmcyAqc2ZzKQogewogICBpbnQgcmV0ID0gLTEsIG9wZW5lZCA9IDA7CmRpZmYg LS1naXQgYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX2Rldl9mZC5jYyBiL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfZGV2X2ZkLmNjCmluZGV4IDY0NjI4MzgzMS4uOTZlYmQ4NWVhIDEwMDY0NAotLS0g YS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX2Rldl9mZC5jYworKysgYi93aW5zdXAvY3lnd2luL2Zo YW5kbGVyX2Rldl9mZC5jYwpAQCAtMjEsNyArMjEsNyBAQCBmaGFuZGxlcl9kZXZfZmQ6OmV4aXN0 cyAoKQogICByZXR1cm4gdmlydF9zeW1saW5rOwogfQogCi1pbnQgX19yZWcyCitpbnQKIGZoYW5k bGVyX2Rldl9mZDo6ZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpCiB7CiAgIGNvbnN0IGNoYXIgKnBh dGggPSBnZXRfbmFtZSAoKTsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfZGlz a19maWxlLmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9kaXNrX2ZpbGUuY2MKaW5kZXggMzhi ZGIzNjViLi5mNzcyOGUzNmUgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfZGlz a19maWxlLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfZGlza19maWxlLmNjCkBAIC0y MDQsNyArMjA0LDcgQEAgcGF0aF9jb252OjpnZXRfaW5vX2J5X2hhbmRsZSAoSEFORExFIGhkbCkK ICAgIFRoaXMgcmV0dXJucyB0aGUgY29udGVudCBvZiBhIHN0cnVjdCBmYXR0cjMgYXMgZGVmaW5l ZCBpbiBSRkMgMTgxMy4KICAgIFRoZSBjb250ZW50IGlzIHRoZSBORlMgZXF1aXZhbGVudCBvZiBz dHJ1Y3Qgc3RhdC4gc28gdGhlcmUncyBub3QgbXVjaAogICAgdG8gZG8gaGVyZSBleGNlcHQgZm9y IGNvcHlpbmcuICovCi1pbnQgX19yZWcyCitpbnQKIGZoYW5kbGVyX2Jhc2U6OmZzdGF0X2J5X25m c19lYSAoc3RydWN0IHN0YXQgKmJ1ZikKIHsKICAgZmF0dHIzICpuZnNfYXR0ciA9IHBjLm5mc2F0 dHIgKCk7CkBAIC0yODMsNyArMjgzLDcgQEAgZmhhbmRsZXJfYmFzZTo6ZnN0YXRfYnlfbmZzX2Vh IChzdHJ1Y3Qgc3RhdCAqYnVmKQogICByZXR1cm4gMDsKIH0KIAotaW50IF9fcmVnMgoraW50CiBm aGFuZGxlcl9iYXNlOjpmc3RhdF9ieV9oYW5kbGUgKHN0cnVjdCBzdGF0ICpidWYpCiB7CiAgIEhB TkRMRSBoID0gZ2V0X3N0YXRfaGFuZGxlICgpOwpAQCAtMzA2LDcgKzMwNiw3IEBAIGZoYW5kbGVy X2Jhc2U6OmZzdGF0X2J5X2hhbmRsZSAoc3RydWN0IHN0YXQgKmJ1ZikKICAgcmV0dXJuIGZzdGF0 X2hlbHBlciAoYnVmKTsKIH0KIAotaW50IF9fcmVnMgoraW50CiBmaGFuZGxlcl9iYXNlOjpmc3Rh dF9ieV9uYW1lIChzdHJ1Y3Qgc3RhdCAqYnVmKQogewogICBOVFNUQVRVUyBzdGF0dXM7CkBAIC0z NTAsNyArMzUwLDcgQEAgZmhhbmRsZXJfYmFzZTo6ZnN0YXRfYnlfbmFtZSAoc3RydWN0IHN0YXQg KmJ1ZikKICAgcmV0dXJuIGZzdGF0X2hlbHBlciAoYnVmKTsKIH0KIAotaW50IF9fcmVnMgoraW50 CiBmaGFuZGxlcl9iYXNlOjpmc3RhdF9mcyAoc3RydWN0IHN0YXQgKmJ1ZikKIHsKICAgaW50IHJl cyA9IC0xOwpAQCAtMzk0LDcgKzM5NCw3IEBAIGZoYW5kbGVyX2Jhc2U6OmZzdGF0X2ZzIChzdHJ1 Y3Qgc3RhdCAqYnVmKQogICByZXR1cm4gcmVzOwogfQogCi1pbnQgX19yZWcyCitpbnQKIGZoYW5k bGVyX2Jhc2U6OmZzdGF0X2hlbHBlciAoc3RydWN0IHN0YXQgKmJ1ZikKIHsKICAgSU9fU1RBVFVT X0JMT0NLIHN0OwpAQCAtNTg5LDEzICs1ODksMTMgQEAgZmhhbmRsZXJfYmFzZTo6ZnN0YXRfaGVs cGVyIChzdHJ1Y3Qgc3RhdCAqYnVmKQogICByZXR1cm4gMDsKIH0KIAotaW50IF9fcmVnMgoraW50 CiBmaGFuZGxlcl9kaXNrX2ZpbGU6OmZzdGF0IChzdHJ1Y3Qgc3RhdCAqYnVmKQogewogICByZXR1 cm4gZnN0YXRfZnMgKGJ1Zik7CiB9CiAKLWludCBfX3JlZzIKK2ludAogZmhhbmRsZXJfZGlza19m aWxlOjpmc3RhdHZmcyAoc3RydWN0IHN0YXR2ZnMgKnNmcykKIHsKICAgaW50IHJldCA9IC0xLCBv cGVuZWQgPSAwOwpAQCAtNjM1LDcgKzYzNSw3IEBAIG91dDoKICAgcmV0dXJuIHJldDsKIH0KIAot aW50IF9fcmVnMgoraW50CiBmaGFuZGxlcl9iYXNlOjpmc3RhdHZmc19ieV9oYW5kbGUgKEhBTkRM RSBmaCwgc3RydWN0IHN0YXR2ZnMgKnNmcykKIHsKICAgaW50IHJldCA9IC0xOwpAQCAtNzA0LDcg KzcwNCw3IEBAIGZoYW5kbGVyX2Jhc2U6OmZzdGF0dmZzX2J5X2hhbmRsZSAoSEFORExFIGZoLCBz dHJ1Y3Qgc3RhdHZmcyAqc2ZzKQogICByZXR1cm4gcmV0OwogfQogCi1pbnQgX19yZWcxCitpbnQK IGZoYW5kbGVyX2Rpc2tfZmlsZTo6ZmNobW9kIChtb2RlX3QgbW9kZSkKIHsKICAgaW50IHJldCA9 IC0xOwpAQCAtODQ5LDcgKzg0OSw3IEBAIG91dDoKICAgcmV0dXJuIHJldDsKIH0KIAotaW50IF9f cmVnMgoraW50CiBmaGFuZGxlcl9kaXNrX2ZpbGU6OmZjaG93biAodWlkX3QgdWlkLCBnaWRfdCBn aWQpCiB7CiAgIGludCBvcmV0ID0gMDsKQEAgLTk0Nyw3ICs5NDcsNyBAQCBvdXQ6CiAgIHJldHVy biByZXQ7CiB9CiAKLWludCBfX3JlZzMKK2ludAogZmhhbmRsZXJfZGlza19maWxlOjpmYWNsIChp bnQgY21kLCBpbnQgbmVudHJpZXMsIGFjbGVudF90ICphY2xidWZwKQogewogICBpbnQgcmVzID0g LTE7CkBAIC0xNTYyLDcgKzE1NjIsNyBAQCBmaGFuZGxlcl9kaXNrX2ZpbGU6OnByd19vcGVuIChi b29sIHdyaXRlLCB2b2lkICphaW8pCiAgIHJldHVybiAwOwogfQogCi1zc2l6ZV90IF9fcmVnMwor c3NpemVfdAogZmhhbmRsZXJfZGlza19maWxlOjpwcmVhZCAodm9pZCAqYnVmLCBzaXplX3QgY291 bnQsIG9mZl90IG9mZnNldCwgdm9pZCAqYWlvKQogewogICBzdHJ1Y3QgYWlvY2IgKmFpb2NiID0g KHN0cnVjdCBhaW9jYiAqKSBhaW87CkBAIC0xNjY2LDcgKzE2NjYsNyBAQCBvdXQ6CiAgIHJldHVy biByZXM7CiB9CiAKLXNzaXplX3QgX19yZWczCitzc2l6ZV90CiBmaGFuZGxlcl9kaXNrX2ZpbGU6 OnB3cml0ZSAodm9pZCAqYnVmLCBzaXplX3QgY291bnQsIG9mZl90IG9mZnNldCwgdm9pZCAqYWlv KQogewogICBzdHJ1Y3QgYWlvY2IgKmFpb2NiID0gKHN0cnVjdCBhaW9jYiAqKSBhaW87CkBAIC0y MDI1LDcgKzIwMjUsNyBAQCBmcmVlX2RpcjoKICAgcmV0dXJuIHJlczsKIH0KIAotaW5vX3QgX19y ZWcyCitpbm9fdAogcmVhZGRpcl9nZXRfaW5vIChjb25zdCBjaGFyICpwYXRoLCBib29sIGRvdF9k b3QpCiB7CiAgIGNoYXIgKmZuYW1lOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxl cl9kc3AuY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX2RzcC5jYwppbmRleCBlMTA1NTE0Y2Iu LjRkNDgyNGI1NiAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9kc3AuY2MKKysr IGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9kc3AuY2MKQEAgLTEwMjYsNyArMTAyNiw3IEBAIGZo YW5kbGVyX2Rldl9kc3A6OndyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAgIHJl dHVybiBiYXNlICgpLT5fd3JpdGUgKHB0ciwgbGVuKTsKIH0KIAotdm9pZCBfX3JlZzMKK3ZvaWQK IGZoYW5kbGVyX2Rldl9kc3A6OnJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pCiB7CiAgIHJl dHVybiBiYXNlICgpLT5fcmVhZCAocHRyLCBsZW4pOwpAQCAtMTEzOSw3ICsxMTM5LDcgQEAgZmhh bmRsZXJfZGV2X2RzcDo6X3dyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAgIHJl dHVybiBsZW4gLSBsZW5fcyArIHdyaXR0ZW47CiB9CiAKLXZvaWQgX19yZWczCit2b2lkCiBmaGFu ZGxlcl9kZXZfZHNwOjpfcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbikKIHsKICAgZGVidWdf cHJpbnRmICgicHRyPSVwIGxlbj0lbGQiLCBwdHIsIGxlbik7CkBAIC0xMTc1LDcgKzExNzUsNyBA QCBmaGFuZGxlcl9kZXZfZHNwOjpfcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbikKICAgYXVk aW9faW5fLT5yZWFkICgoY2hhciAqKXB0ciwgKGludCYpbGVuKTsKIH0KIAotdm9pZCBfX3JlZzEK K3ZvaWQKIGZoYW5kbGVyX2Rldl9kc3A6OmNsb3NlX2F1ZGlvX2luICgpCiB7CiAgIGlmIChhdWRp b19pbl8pCkBAIC0xMTg2LDcgKzExODYsNyBAQCBmaGFuZGxlcl9kZXZfZHNwOjpjbG9zZV9hdWRp b19pbiAoKQogICAgIH0KIH0KIAotdm9pZCBfX3JlZzIKK3ZvaWQKIGZoYW5kbGVyX2Rldl9kc3A6 OmNsb3NlX2F1ZGlvX291dCAoYm9vbCBpbW1lZGlhdGVseSkKIHsKICAgaWYgKGF1ZGlvX291dF8p CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX2ZpZm8uY2MgYi93aW5zdXAvY3ln d2luL2ZoYW5kbGVyX2ZpZm8uY2MKaW5kZXggMzRiZDgzNWFlLi5mYTRhYzc4OTAgMTAwNjQ0Ci0t LSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfZmlmby5jYworKysgYi93aW5zdXAvY3lnd2luL2Zo YW5kbGVyX2ZpZm8uY2MKQEAgLTEyMTksNyArMTIxOSw3IEBAIG50X3JlYWQgKEhBTkRMRSBoLCBI QU5ETEUgZXZ0LCBQSU9fU1RBVFVTX0JMT0NLIHBpbywgdm9pZCAqaW5fcHRyLCBzaXplX3QmIGxl bikKICAgcmV0dXJuIHN0YXR1czsKIH0KIAotdm9pZCBfX3JlZzMKK3ZvaWQKIGZoYW5kbGVyX2Zp Zm86OnJhd19yZWFkICh2b2lkICppbl9wdHIsIHNpemVfdCYgbGVuKQogewogICBIQU5ETEUgZXZ0 OwpAQCAtMTQxNSw3ICsxNDE1LDcgQEAgb3V0OgogICBDbG9zZUhhbmRsZSAoZXZ0KTsKIH0KIAot aW50IF9fcmVnMgoraW50CiBmaGFuZGxlcl9maWZvOjpmc3RhdCAoc3RydWN0IHN0YXQgKmJ1ZikK IHsKICAgaWYgKHJlYWRlciB8fCB3cml0ZXIgfHwgZHVwbGV4ZXIpCkBAIC0xNDM4LDcgKzE0Mzgs NyBAQCBmaGFuZGxlcl9maWZvOjpmc3RhdCAoc3RydWN0IHN0YXQgKmJ1ZikKICAgcmV0dXJuIGZo YW5kbGVyX2Jhc2U6OmZzdGF0IChidWYpOwogfQogCi1pbnQgX19yZWcyCitpbnQKIGZoYW5kbGVy X2ZpZm86OmZzdGF0dmZzIChzdHJ1Y3Qgc3RhdHZmcyAqc2ZzKQogewogICBpZiAoZ2V0X2ZsYWdz ICgpICYgT19QQVRIKQpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9mbG9wcHku Y2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX2Zsb3BweS5jYwppbmRleCAyNzY4YTljYmYuLmU4 ODNhYjY5NyAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9mbG9wcHkuY2MKKysr IGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9mbG9wcHkuY2MKQEAgLTM5Miw3ICszOTIsNyBAQCBm aGFuZGxlcl9kZXZfZmxvcHB5OjpnZXRfY3VycmVudF9wb3NpdGlvbiAoKQogICByZXR1cm4gZnBp LkN1cnJlbnRCeXRlT2Zmc2V0LlF1YWRQYXJ0OwogfQogCi12b2lkIF9fcmVnMwordm9pZAogZmhh bmRsZXJfZGV2X2Zsb3BweTo6cmF3X3JlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiB1bGVuKQogewog ICBEV09SRCBieXRlc19yZWFkID0gMDsKQEAgLTUyNCw3ICs1MjQsNyBAQCBlcnI6CiAgIHVsZW4g PSAoc2l6ZV90KSAtMTsKIH0KIAotc3NpemVfdCBfX3JlZzMKK3NzaXplX3QKIGZoYW5kbGVyX2Rl dl9mbG9wcHk6OnJhd193cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQogewogICBE V09SRCBieXRlc193cml0dGVuID0gMDsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRs ZXJfbXF1ZXVlLmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9tcXVldWUuY2MKaW5kZXggZDgx ODgwY2JhLi42Yjk0YmNhODUgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfbXF1 ZXVlLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfbXF1ZXVlLmNjCkBAIC00MzYsNyAr NDM2LDcgQEAgZmhhbmRsZXJfbXF1ZXVlOjpmaWxsX2ZpbGVidWYgKCkKICAgcmV0dXJuIHRydWU7 CiB9CiAKLXZvaWQgX19yZWczCit2b2lkCiBmaGFuZGxlcl9tcXVldWU6OnJlYWQgKHZvaWQgKmlu X3B0ciwgc2l6ZV90JiBsZW4pCiB7CiAgIGlmIChsZW4gPT0gMCkKQEAgLTQ3OSw3ICs0NzksNyBA QCBmaGFuZGxlcl9tcXVldWU6OmxzZWVrIChvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpCiB9CiAK IAotaW50IF9fcmVnMgoraW50CiBmaGFuZGxlcl9tcXVldWU6OmZzdGF0IChzdHJ1Y3Qgc3RhdCAq YnVmKQogewogICBpbnQgcmV0ID0gZmhhbmRsZXJfZGlza19maWxlOjpmc3RhdCAoYnVmKTsKZGlm ZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfbmV0ZHJpdmUuY2MgYi93aW5zdXAvY3ln d2luL2ZoYW5kbGVyX25ldGRyaXZlLmNjCmluZGV4IDYzNjUzNTYzNS4uMzA2ZDc3ZGQyIDEwMDY0 NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX25ldGRyaXZlLmNjCisrKyBiL3dpbnN1cC9j eWd3aW4vZmhhbmRsZXJfbmV0ZHJpdmUuY2MKQEAgLTIxMiw3ICsyMTIsNyBAQCBmaGFuZGxlcl9u ZXRkcml2ZTo6ZmhhbmRsZXJfbmV0ZHJpdmUgKCk6CiB7CiB9CiAKLWludCBfX3JlZzIKK2ludAog ZmhhbmRsZXJfbmV0ZHJpdmU6OmZzdGF0IChzdHJ1Y3Qgc3RhdCAqYnVmKQogewogICBjb25zdCBj aGFyICpwYXRoID0gZ2V0X25hbWUgKCk7CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2ZoYW5k bGVyX3BpcGUuY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3BpcGUuY2MKaW5kZXggMjcwYmEz NGEwLi43MjBlNGVmZDMgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcGlwZS5j YworKysgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3BpcGUuY2MKQEAgLTI3NSw3ICsyNzUsNyBA QCBmaGFuZGxlcl9waXBlOjpyZWxlYXNlX3NlbGVjdF9zZW0gKGNvbnN0IGNoYXIgKmZyb20pCiAg ICAgUmVsZWFzZVNlbWFwaG9yZSAoc2VsZWN0X3NlbSwgbl9yZWxlYXNlLCBOVUxMKTsKIH0KIAot dm9pZCBfX3JlZzMKK3ZvaWQKIGZoYW5kbGVyX3BpcGU6OnJhd19yZWFkICh2b2lkICpwdHIsIHNp emVfdCYgbGVuKQogewogICBzaXplX3QgbmJ5dGVzID0gMDsKQEAgLTM5NSw3ICszOTUsNyBAQCBm aGFuZGxlcl9waXBlOjpyZWFkZXJfY2xvc2VkICgpCiAgIHJldHVybiBuX3JlYWRlciA9PSBuX3dy aXRlcjsKIH0KIAotc3NpemVfdCBfX3JlZzMKK3NzaXplX3QKIGZoYW5kbGVyX3BpcGVfZmlmbzo6 cmF3X3dyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiB7CiAgIHNpemVfdCBuYnl0 ZXMgPSAwOwpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgZmhhbmRsZXJfcGlwZTo6ZmNudGwgKGludCBj bWQsIGludHB0cl90IGFyZykKICAgcmV0dXJuIHJlczsKIH0KIAotaW50IF9fcmVnMgoraW50CiBm aGFuZGxlcl9waXBlOjpmc3RhdCAoc3RydWN0IHN0YXQgKmJ1ZikKIHsKICAgaW50IHJldCA9IGZo YW5kbGVyX2Jhc2U6OmZzdGF0IChidWYpOwpAQCAtMTExNyw3ICsxMTE3LDcgQEAgZmhhbmRsZXJf cGlwZTo6ZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpCiAgIHJldHVybiByZXQ7CiB9CiAKLWludCBf X3JlZzIKK2ludAogZmhhbmRsZXJfcGlwZTo6ZnN0YXR2ZnMgKHN0cnVjdCBzdGF0dmZzICpzZnMp CiB7CiAgIHNldF9lcnJubyAoRUJBREYpOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFu ZGxlcl9wcm9jLmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jLmNjCmluZGV4IGFmNTUz NjQ0ZS4uYjc5ZjMxOTIyIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3Byb2Mu Y2MKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jLmNjCkBAIC0xOTEsNyArMTkxLDcg QEAgZmhhbmRsZXJfcHJvYzo6ZmhhbmRsZXJfcHJvYyAoKToKIHsKIH0KIAotaW50IF9fcmVnMgor aW50CiBmaGFuZGxlcl9wcm9jOjpmc3RhdCAoc3RydWN0IHN0YXQgKmJ1ZikKIHsKICAgY29uc3Qg Y2hhciAqcGF0aCA9IGdldF9uYW1lICgpOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFu ZGxlcl9wcm9jZXNzLmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jZXNzLmNjCmluZGV4 IDQ4MmRkMTc2Zi4uYzhjYTZlMjVhIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVy X3Byb2Nlc3MuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jZXNzLmNjCkBAIC0x MzAsNyArMTMwLDcgQEAgZmhhbmRsZXJfcHJvY2Vzczo6ZmhhbmRsZXJfcHJvY2VzcyAoKToKIHsK IH0KIAotaW50IF9fcmVnMgoraW50CiBmaGFuZGxlcl9wcm9jZXNzOjpmc3RhdCAoc3RydWN0IHN0 YXQgKmJ1ZikKIHsKICAgY29uc3QgY2hhciAqcGF0aCA9IGdldF9uYW1lICgpOwpkaWZmIC0tZ2l0 IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jZXNzX2ZkLmNjIGIvd2luc3VwL2N5Z3dpbi9m aGFuZGxlcl9wcm9jZXNzX2ZkLmNjCmluZGV4IDcxYmE4YjY0NS4uZDgxNDk1MTAzIDEwMDY0NAot LS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3Byb2Nlc3NfZmQuY2MKKysrIGIvd2luc3VwL2N5 Z3dpbi9maGFuZGxlcl9wcm9jZXNzX2ZkLmNjCkBAIC0xMjcsNyArMTI3LDcgQEAgZmhhbmRsZXJf cHJvY2Vzc19mZDo6ZmRfcmVvcGVuIChpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlKQogICByZXR1cm4g Zmg7CiB9CiAKLWludCBfX3JlZzIKK2ludAogZmhhbmRsZXJfcHJvY2Vzc19mZDo6ZnN0YXQgKHN0 cnVjdCBzdGF0ICpzdGF0YnVmKQogewogICBpZiAoIXBjLmZvbGxvd19mZF9zeW1saW5rICgpKQpk aWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jbmV0LmNjIGIvd2luc3VwL2N5 Z3dpbi9maGFuZGxlcl9wcm9jbmV0LmNjCmluZGV4IDZkZjQ2MjIwYy4uOTM3MzUzYmRlIDEwMDY0 NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3Byb2NuZXQuY2MKKysrIGIvd2luc3VwL2N5 Z3dpbi9maGFuZGxlcl9wcm9jbmV0LmNjCkBAIC02OSw3ICs2OSw3IEBAIGZoYW5kbGVyX3Byb2Nu ZXQ6OmZoYW5kbGVyX3Byb2NuZXQgKCk6CiB7CiB9CiAKLWludCBfX3JlZzIKK2ludAogZmhhbmRs ZXJfcHJvY25ldDo6ZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpCiB7CiAgIGZoYW5kbGVyX2Jhc2U6 OmZzdGF0IChidWYpOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jc3lz LmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jc3lzLmNjCmluZGV4IDAyNzQxZDBlOS4u YTVmZDg1ZjQzIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3Byb2NzeXMuY2MK KysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jc3lzLmNjCkBAIC0yNTEsNyArMjUxLDcg QEAgdW5yZWFkYWJsZToKICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbnQgX19yZWcyCitpbnQKIGZo YW5kbGVyX3Byb2NzeXM6OmZzdGF0IChzdHJ1Y3Qgc3RhdCAqYnVmKQogewogICBjb25zdCBjaGFy ICpwYXRoID0gZ2V0X25hbWUgKCk7CkBAIC00MjYsNyArNDI2LDcgQEAgZmhhbmRsZXJfcHJvY3N5 czo6Y2xvc2VkaXIgKERJUiAqZGlyKQogICByZXR1cm4gZmhhbmRsZXJfdmlydHVhbDo6Y2xvc2Vk aXIgKGRpcik7CiB9CiAKLXZvaWQgX19yZWczCit2b2lkCiBmaGFuZGxlcl9wcm9jc3lzOjpyZWFk ICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKQogewogICBmaGFuZGxlcl9iYXNlOjpyYXdfcmVhZCAo cHRyLCBsZW4pOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jc3lzdmlw Yy5jYyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcHJvY3N5c3ZpcGMuY2MKaW5kZXggYzJjN2Uw Zjk5Li40NTNkM2I0ZjcgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcHJvY3N5 c3ZpcGMuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jc3lzdmlwYy5jYwpAQCAt ODYsNyArODYsNyBAQCBmaGFuZGxlcl9wcm9jc3lzdmlwYzo6ZmhhbmRsZXJfcHJvY3N5c3ZpcGMg KCk6CiB7CiB9CiAKLWludCBfX3JlZzIKK2ludAogZmhhbmRsZXJfcHJvY3N5c3ZpcGM6OmZzdGF0 IChzdHJ1Y3Qgc3RhdCAqYnVmKQogewogICBmaGFuZGxlcl9iYXNlOjpmc3RhdCAoYnVmKTsKZGlm ZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcmFuZG9tLmNjIGIvd2luc3VwL2N5Z3dp bi9maGFuZGxlcl9yYW5kb20uY2MKaW5kZXggMWEzZWRkMTZmLi5jMGYzN2I1NWUgMTAwNjQ0Ci0t LSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcmFuZG9tLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfcmFuZG9tLmNjCkBAIC04Niw3ICs4Niw3IEBAIGZoYW5kbGVyX2Rldl9yYW5kb206 OnBzZXVkb19yZWFkICh2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAgIHJldHVybiBsZW47CiB9CiAK LXZvaWQgX19yZWczCit2b2lkCiBmaGFuZGxlcl9kZXZfcmFuZG9tOjpyZWFkICh2b2lkICpwdHIs IHNpemVfdCYgbGVuKQogewogICBpZiAoIWxlbikKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfcmF3LmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9yYXcuY2MKaW5kZXggNTM2 ZDc1MmI1Li40NGNiMTBkZmIgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcmF3 LmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcmF3LmNjCkBAIC0zMiw3ICszMiw3IEBA IGZoYW5kbGVyX2Rldl9yYXc6On5maGFuZGxlcl9kZXZfcmF3ICgpCiAgICAgZGVsZXRlIFtdIGRl dmJ1ZmFsbG9jOwogfQogCi1pbnQgX19yZWcyCitpbnQKIGZoYW5kbGVyX2Rldl9yYXc6OmZzdGF0 IChzdHJ1Y3Qgc3RhdCAqYnVmKQogewogICBkZWJ1Z19wcmludGYgKCJoZXJlIik7CmRpZmYgLS1n aXQgYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3JlZ2lzdHJ5LmNjIGIvd2luc3VwL2N5Z3dpbi9m aGFuZGxlcl9yZWdpc3RyeS5jYwppbmRleCBiNmM4YWVlNWYuLjI4MzBjNzA4YSAxMDA2NDQKLS0t IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9yZWdpc3RyeS5jYworKysgYi93aW5zdXAvY3lnd2lu L2ZoYW5kbGVyX3JlZ2lzdHJ5LmNjCkBAIC00NTksNyArNDU5LDcgQEAgZmhhbmRsZXJfcHJvYyAo KQogICBwcmVmaXhfbGVuID0gc2l6ZW9mICgicmVnaXN0cnkiKSAtIDE7CiB9CiAKLWludCBfX3Jl ZzIKK2ludAogZmhhbmRsZXJfcmVnaXN0cnk6OmZzdGF0IChzdHJ1Y3Qgc3RhdCAqYnVmKQogewog ICBmaGFuZGxlcl9iYXNlOjpmc3RhdCAoYnVmKTsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfc2VyaWFsLmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9zZXJpYWwuY2MKaW5k ZXggZTAyNTczMDJjLi4xNzRhNTdhNDMgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRs ZXJfc2VyaWFsLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfc2VyaWFsLmNjCkBAIC0z MCw3ICszMCw3IEBAIGZoYW5kbGVyX3NlcmlhbDo6ZmhhbmRsZXJfc2VyaWFsICgpCiAgIG5lZWRf Zm9ya19maXh1cCAodHJ1ZSk7CiB9CiAKLXZvaWQgX19yZWczCit2b2lkCiBmaGFuZGxlcl9zZXJp YWw6OnJhd19yZWFkICh2b2lkICpwdHIsIHNpemVfdCYgdWxlbikKIHsKICAgT1ZFUkxBUFBFRCBv diA9IHsgMCB9OwpAQCAtMTczLDcgKzE3Myw3IEBAIG91dDoKIAogLyogQ292ZXIgZnVuY3Rpb24g dG8gV3JpdGVGaWxlIHRvIHByb3ZpZGUgUG9zaXggaW50ZXJmYWNlIGFuZCBzZW1hbnRpY3MKICAg IChhcyBtdWNoIGFzIHBvc3NpYmxlKS4gICovCi1zc2l6ZV90IF9fcmVnMworc3NpemVfdAogZmhh bmRsZXJfc2VyaWFsOjpyYXdfd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIHsK ICAgRFdPUkQgYnl0ZXNfd3JpdHRlbjsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRs ZXJfc2lnbmFsZmQuY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3NpZ25hbGZkLmNjCmluZGV4 IDRkODlhNmM1Yi4uOTczMDU1MTVmIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVy X3NpZ25hbGZkLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfc2lnbmFsZmQuY2MKQEAg LTU0LDcgKzU0LDcgQEAgZmhhbmRsZXJfc2lnbmFsZmQ6OnNpZ25hbGZkIChjb25zdCBzaWdzZXRf dCAqbWFzaywgaW50IGZsYWdzKQogICByZXR1cm4gMDsKIH0KIAotaW50IF9fcmVnMgoraW50CiBm aGFuZGxlcl9zaWduYWxmZDo6ZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpCiB7CiAgIGludCByZXQg PSBmaGFuZGxlcl9iYXNlOjpmc3RhdCAoYnVmKTsKQEAgLTg5LDcgKzg5LDcgQEAgY29weV9zaWdp bmZvX3RvX3NpZ25hbGZkIChzdHJ1Y3Qgc2lnbmFsZmRfc2lnaW5mbyAqc2ZkLAogICBzZmQtPnNz aV9hZGRyID0gKHVpbnQ2NF90KSBzaS0+c2lfYWRkcjsKIH0KIAotdm9pZCBfX3JlZzMKK3ZvaWQK IGZoYW5kbGVyX3NpZ25hbGZkOjpyZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKQogewogICBj b25zdCBMQVJHRV9JTlRFR0VSIHBvbGwgPSB7IFF1YWRQYXJ0IDogMCB9OwpkaWZmIC0tZ2l0IGEv d2luc3VwL2N5Z3dpbi9maGFuZGxlcl9zb2NrZXQuY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVy X3NvY2tldC5jYwppbmRleCBmMjI0MTI2NTAuLjU3YTc1ZGYzNCAxMDA2NDQKLS0tIGEvd2luc3Vw L2N5Z3dpbi9maGFuZGxlcl9zb2NrZXQuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9z b2NrZXQuY2MKQEAgLTI3Myw3ICsyNzMsNyBAQCBmaGFuZGxlcl9zb2NrZXQ6Om9wZW4gKGludCBm bGFncywgbW9kZV90IG1vZGUpCiAgIHJldHVybiAwOwogfQogCi1pbnQgX19yZWcyCitpbnQKIGZo YW5kbGVyX3NvY2tldDo6ZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpCiB7CiAgIGludCByZXM7CkBA IC0yOTMsNyArMjkzLDcgQEAgZmhhbmRsZXJfc29ja2V0Ojpmc3RhdCAoc3RydWN0IHN0YXQgKmJ1 ZikKICAgcmV0dXJuIHJlczsKIH0KIAotaW50IF9fcmVnMgoraW50CiBmaGFuZGxlcl9zb2NrZXQ6 OmZzdGF0dmZzIChzdHJ1Y3Qgc3RhdHZmcyAqc2ZzKQogewogICBtZW1zZXQgKHNmcywgMCwgc2l6 ZW9mICgqc2ZzKSk7CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3NvY2tldF9p bmV0LmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9zb2NrZXRfaW5ldC5jYwppbmRleCBmNzM4 Y2U0ZDQuLjYzMzkwNTJmYiAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9zb2Nr ZXRfaW5ldC5jYworKysgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3NvY2tldF9pbmV0LmNjCkBA IC0xMzY2LDcgKzEzNjYsNyBAQCBmaGFuZGxlcl9zb2NrZXRfd3NvY2s6OnJlY3Ztc2cgKHN0cnVj dCBtc2doZHIgKm1zZywgaW50IGZsYWdzKQogICByZXR1cm4gcmV0OwogfQogCi12b2lkIF9fcmVn Mwordm9pZAogZmhhbmRsZXJfc29ja2V0X3dzb2NrOjpyZWFkICh2b2lkICppbl9wdHIsIHNpemVf dCYgbGVuKQogewogICBjaGFyICpwdHIgPSAoY2hhciAqKSBpbl9wdHI7CmRpZmYgLS1naXQgYS93 aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3NvY2tldF9sb2NhbC5jYyBiL3dpbnN1cC9jeWd3aW4vZmhh bmRsZXJfc29ja2V0X2xvY2FsLmNjCmluZGV4IGM3ODcwNzMzYS4uMjQ5YWQwZTRiIDEwMDY0NAot LS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3NvY2tldF9sb2NhbC5jYworKysgYi93aW5zdXAv Y3lnd2luL2ZoYW5kbGVyX3NvY2tldF9sb2NhbC5jYwpAQCAtNjcwLDcgKzY3MCw3IEBAIGZoYW5k bGVyX3NvY2tldF9sb2NhbDo6ZmNudGwgKGludCBjbWQsIGludHB0cl90IGFyZykKICAgICByZXR1 cm4gZmhhbmRsZXJfc29ja2V0X3dzb2NrOjpmY250bCAoY21kLCBhcmcpOwogfQogCi1pbnQgX19y ZWcyCitpbnQKIGZoYW5kbGVyX3NvY2tldF9sb2NhbDo6ZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYp CiB7CiAgIGlmICghZGV2ICgpLmlzZnMgKCkpCkBAIC02ODcsNyArNjg3LDcgQEAgZmhhbmRsZXJf c29ja2V0X2xvY2FsOjpmc3RhdCAoc3RydWN0IHN0YXQgKmJ1ZikKICAgcmV0dXJuIHJlczsKIH0K IAotaW50IF9fcmVnMgoraW50CiBmaGFuZGxlcl9zb2NrZXRfbG9jYWw6OmZzdGF0dmZzIChzdHJ1 Y3Qgc3RhdHZmcyAqc2ZzKQogewogICBpZiAoIWRldiAoKS5pc2ZzICgpKQpkaWZmIC0tZ2l0IGEv d2luc3VwL2N5Z3dpbi9maGFuZGxlcl9zb2NrZXRfdW5peC5jYyBiL3dpbnN1cC9jeWd3aW4vZmhh bmRsZXJfc29ja2V0X3VuaXguY2MKaW5kZXggOGFiYjU4MWI5Li4xMGIxMzM5YzYgMTAwNjQ0Ci0t LSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfc29ja2V0X3VuaXguY2MKKysrIGIvd2luc3VwL2N5 Z3dpbi9maGFuZGxlcl9zb2NrZXRfdW5peC5jYwpAQCAtMTg5MSw3ICsxODkxLDcgQEAgZmhhbmRs ZXJfc29ja2V0X3VuaXg6OnJlY3Zmcm9tICh2b2lkICpwdHIsIHNpemVfdCBsZW4sIGludCBmbGFn cywKICAgcmV0dXJuIHJldDsKIH0KIAotdm9pZCBfX3JlZzMKK3ZvaWQKIGZoYW5kbGVyX3NvY2tl dF91bml4OjpyZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKQogewogICBzZXRfZXJybm8gKEVB Rk5PU1VQUE9SVCk7CkBAIC0yMzExLDcgKzIzMTEsNyBAQCBmaGFuZGxlcl9zb2NrZXRfdW5peDo6 ZmNudGwgKGludCBjbWQsIGludHB0cl90IGFyZykKICAgcmV0dXJuIHJldDsKIH0KIAotaW50IF9f cmVnMgoraW50CiBmaGFuZGxlcl9zb2NrZXRfdW5peDo6ZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYp CiB7CiAgIGlmICghZGV2ICgpLmlzZnMgKCkpCkBAIC0yMzI4LDcgKzIzMjgsNyBAQCBmaGFuZGxl cl9zb2NrZXRfdW5peDo6ZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpCiAgIHJldHVybiByZXQ7CiB9 CiAKLWludCBfX3JlZzIKK2ludAogZmhhbmRsZXJfc29ja2V0X3VuaXg6OmZzdGF0dmZzIChzdHJ1 Y3Qgc3RhdHZmcyAqc2ZzKQogewogICBpZiAoIWRldiAoKS5pc2ZzICgpKQpkaWZmIC0tZ2l0IGEv d2luc3VwL2N5Z3dpbi9maGFuZGxlcl90YXBlLmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl90 YXBlLmNjCmluZGV4IGE3ZjY0ZWE1Ny4uMGUyMzVmMTZjIDEwMDY0NAotLS0gYS93aW5zdXAvY3ln d2luL2ZoYW5kbGVyX3RhcGUuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl90YXBlLmNj CkBAIC0xMjY5LDcgKzEyNjksNyBAQCBmaGFuZGxlcl9kZXZfdGFwZTo6Y2xvc2UgKCkKICAgcmV0 dXJuIHJldCA/IC0xIDogY3JldDsKIH0KIAotdm9pZCBfX3JlZzMKK3ZvaWQKIGZoYW5kbGVyX2Rl dl90YXBlOjpyYXdfcmVhZCAodm9pZCAqcHRyLCBzaXplX3QgJnVsZW4pCiB7CiAgIGNoYXIgKmJ1 ZiA9IChjaGFyICopIHB0cjsKQEAgLTEzNzEsNyArMTM3MSw3IEBAIGZoYW5kbGVyX2Rldl90YXBl OjpyYXdfcmVhZCAodm9pZCAqcHRyLCBzaXplX3QgJnVsZW4pCiAgIHVubG9jayAoKTsKIH0KIAot c3NpemVfdCBfX3JlZzMKK3NzaXplX3QKIGZoYW5kbGVyX2Rldl90YXBlOjpyYXdfd3JpdGUgKGNv bnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIHsKICAgaWYgKCFfbG9jayAodHJ1ZSkpCkBAIC0x NDUzLDcgKzE0NTMsNyBAQCBvdXQ6CiAjZW5kaWYKIH0KIAotaW50IF9fcmVnMgoraW50CiBmaGFu ZGxlcl9kZXZfdGFwZTo6ZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpCiB7CiAgIGludCByZXQ7CmRp ZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3RpbWVyZmQuY2MgYi93aW5zdXAvY3ln d2luL2ZoYW5kbGVyX3RpbWVyZmQuY2MKaW5kZXggZTdlMjIzMjk2Li42YmM0ZTBkNjggMTAwNjQ0 Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfdGltZXJmZC5jYworKysgYi93aW5zdXAvY3ln d2luL2ZoYW5kbGVyX3RpbWVyZmQuY2MKQEAgLTEwMSw3ICsxMDEsNyBAQCBmaGFuZGxlcl90aW1l cmZkOjpnZXR0aW1lIChzdHJ1Y3QgaXRpbWVyc3BlYyAqb3ZhbHVlKQogICByZXR1cm4gcmV0Owog fQogCi1pbnQgX19yZWcyCitpbnQKIGZoYW5kbGVyX3RpbWVyZmQ6OmZzdGF0IChzdHJ1Y3Qgc3Rh dCAqYnVmKQogewogICBpbnQgcmV0ID0gZmhhbmRsZXJfYmFzZTo6ZnN0YXQgKGJ1Zik7CkBAIC0x MTQsNyArMTE0LDcgQEAgZmhhbmRsZXJfdGltZXJmZDo6ZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYp CiAgIHJldHVybiByZXQ7CiB9CiAKLXZvaWQgX19yZWczCit2b2lkCiBmaGFuZGxlcl90aW1lcmZk OjpyZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKQogewogICBpZiAobGVuIDwgc2l6ZW9mIChM T05HNjQpKQpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl90dHkuY2MgYi93aW5z dXAvY3lnd2luL2ZoYW5kbGVyX3R0eS5jYwppbmRleCBiODQyN2RjOGMuLmUzZjc3NGE2YiAxMDA2 NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl90dHkuY2MKKysrIGIvd2luc3VwL2N5Z3dp bi9maGFuZGxlcl90dHkuY2MKQEAgLTEzNTAsNyArMTM1MCw3IEBAIGZoYW5kbGVyX3B0eV9jb21t b246OnRvX2JlX3JlYWRfZnJvbV9uYXRfcGlwZSAodm9pZCkKICAgcmV0dXJuIGdldF90dHlwICgp LT5uYXRfZmcgKGdldF90dHlwICgpLT5nZXRwZ2lkICgpKTsKIH0KIAotdm9pZCBfX3JlZzMKK3Zv aWQKIGZoYW5kbGVyX3B0eV9zbGF2ZTo6cmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbikKIHsK ICAgc3NpemVfdCB0b3RhbHJlYWQgPSAwOwpAQCAtMTc3Nyw3ICsxNzc3LDcgQEAgb3V0OgogICBy ZXR1cm4gcmV0dmFsOwogfQogCi1pbnQgX19yZWcyCitpbnQKIGZoYW5kbGVyX3B0eV9zbGF2ZTo6 ZnN0YXQgKHN0cnVjdCBzdGF0ICpzdCkKIHsKICAgZmhhbmRsZXJfYmFzZTo6ZnN0YXQgKHN0KTsK QEAgLTE4MDcsNyArMTgwNyw3IEBAIGZoYW5kbGVyX3B0eV9zbGF2ZTo6ZnN0YXQgKHN0cnVjdCBz dGF0ICpzdCkKICAgcmV0dXJuIDA7CiB9CiAKLWludCBfX3JlZzMKK2ludAogZmhhbmRsZXJfcHR5 X3NsYXZlOjpmYWNsIChpbnQgY21kLCBpbnQgbmVudHJpZXMsIGFjbGVudF90ICphY2xidWZwKQog ewogICBpbnQgcmVzID0gLTE7CkBAIC0xOTE4LDcgKzE5MTgsNyBAQCBmaGFuZGxlcl9wdHlfc2xh dmU6OmZjaF9jbG9zZV9oYW5kbGVzICgpCiAgIGNsb3NlX21heWJlIChpbnVzZSk7CiB9CiAKLWlu dCBfX3JlZzEKK2ludAogZmhhbmRsZXJfcHR5X3NsYXZlOjpmY2htb2QgKG1vZGVfdCBtb2RlKQog ewogICBpbnQgcmV0ID0gLTE7CkBAIC0xOTQ1LDcgKzE5NDUsNyBAQCBlcnJvdXQ6CiAgIHJldHVy biByZXQ7CiB9CiAKLWludCBfX3JlZzIKK2ludAogZmhhbmRsZXJfcHR5X3NsYXZlOjpmY2hvd24g KHVpZF90IHVpZCwgZ2lkX3QgZ2lkKQogewogICBpbnQgcmV0ID0gLTE7CkBAIC0yMzI3LDcgKzIz MjcsNyBAQCBmaGFuZGxlcl9wdHlfbWFzdGVyOjp3cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXpl X3QgbGVuKQogICByZXR1cm4gcmV0OwogfQogCi12b2lkIF9fcmVnMwordm9pZAogZmhhbmRsZXJf cHR5X21hc3Rlcjo6cmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbikKIHsKICAgYmdfY2hlY2tf dHlwZXMgYmcgPSBiZ19jaGVjayAoU0lHVFRJTik7CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2lu L2ZoYW5kbGVyX3ZpcnR1YWwuY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3ZpcnR1YWwuY2MK aW5kZXggYjllZTMxZjc2Li5iZGQ0NTRkMWMgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhh bmRsZXJfdmlydHVhbC5jYworKysgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3ZpcnR1YWwuY2MK QEAgLTE3Nyw3ICsxNzcsNyBAQCBmaGFuZGxlcl92aXJ0dWFsOjpjbG9zZSAoKQogICByZXR1cm4g MDsKIH0KIAotdm9pZCBfX3JlZzMKK3ZvaWQKIGZoYW5kbGVyX3ZpcnR1YWw6OnJlYWQgKHZvaWQg KnB0ciwgc2l6ZV90JiBsZW4pCiB7CiAgIGlmIChsZW4gPT0gMCkKQEAgLTI2Miw3ICsyNjIsNyBA QCBmaGFuZGxlcl92aXJ0dWFsOjpmYWNsIChpbnQgY21kLCBpbnQgbmVudHJpZXMsIGFjbGVudF90 ICphY2xidWZwKQogICByZXR1cm4gcmVzOwogfQogCi1pbnQgX19yZWcyCitpbnQKIGZoYW5kbGVy X3ZpcnR1YWw6OmZzdGF0dmZzIChzdHJ1Y3Qgc3RhdHZmcyAqc2ZzKQogewogICAvKiBWaXJ0dWFs IGZpbGUgc3lzdGVtLiAgSnVzdCByZXR1cm4gYW4gZW1wdHkgYnVmZmVyIHdpdGggYSBmZXcgdmFs dWVzCmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3dpbmRvd3MuY2MgYi93aW5z dXAvY3lnd2luL2ZoYW5kbGVyX3dpbmRvd3MuY2MKaW5kZXggM2EyMTE5ZmRkLi45NDdjZmQ1YTAg MTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfd2luZG93cy5jYworKysgYi93aW5z dXAvY3lnd2luL2ZoYW5kbGVyX3dpbmRvd3MuY2MKQEAgLTc2LDcgKzc2LDcgQEAgZmhhbmRsZXJf d2luZG93czo6d3JpdGUgKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90KQogICByZXR1cm4gc2l6ZW9m IChNU0cpOwogfQogCi12b2lkIF9fcmVnMwordm9pZAogZmhhbmRsZXJfd2luZG93czo6cmVhZCAo dm9pZCAqYnVmLCBzaXplX3QmIGxlbikKIHsKICAgTVNHICpwdHIgPSAoTVNHICopIGJ1ZjsKZGlm ZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfemVyby5jYyBiL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfemVyby5jYwppbmRleCAxZjc1ODIxNGUuLjU2Mzc2ODU3NCAxMDA2NDQKLS0tIGEv d2luc3VwL2N5Z3dpbi9maGFuZGxlcl96ZXJvLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRs ZXJfemVyby5jYwpAQCAtMzAsNyArMzAsNyBAQCBmaGFuZGxlcl9kZXZfemVybzo6d3JpdGUgKGNv bnN0IHZvaWQgKiwgc2l6ZV90IGxlbikKICAgcmV0dXJuIGxlbjsKIH0KIAotdm9pZCBfX3JlZzMK K3ZvaWQKIGZoYW5kbGVyX2Rldl96ZXJvOjpyZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKQog ewogICBtZW1zZXQgKHB0ciwgMCwgbGVuKTsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vaGVh cC5jYyBiL3dpbnN1cC9jeWd3aW4vaGVhcC5jYwppbmRleCBmYTJjODM5MWUuLjBmYmRhMzBmMiAx MDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9oZWFwLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vaGVh cC5jYwpAQCAtMjQzLDcgKzI0Myw3IEBAIHNicmsgKHB0cmRpZmZfdCBuKQogICByZXR1cm4gY3ln aGVhcC0+dXNlcl9oZWFwLnNicmsgKG4pOwogfQogCi12b2lkIF9fcmVnMiAqCit2b2lkICoKIHVz ZXJfaGVhcF9pbmZvOjpzYnJrIChwdHJkaWZmX3QgbikKIHsKIC8qIEZJWE1FOiBUaGlzIGZ1bmN0 aW9uIG5vIGxvbmdlciBoYW5kbGVzICJzcGxpdCBoZWFwcyIuICovCmRpZmYgLS1naXQgYS93aW5z dXAvY3lnd2luL2luY2x1ZGUvc3lzL3N0cmFjZS5oIGIvd2luc3VwL2N5Z3dpbi9pbmNsdWRlL3N5 cy9zdHJhY2UuaAppbmRleCAzMzM0YjA0MDMuLjcyMjFiN2ZmNyAxMDA2NDQKLS0tIGEvd2luc3Vw L2N5Z3dpbi9pbmNsdWRlL3N5cy9zdHJhY2UuaAorKysgYi93aW5zdXAvY3lnd2luL2luY2x1ZGUv c3lzL3N0cmFjZS5oCkBAIC0zNywxNyArMzcsMTcgQEAgY2xhc3Mgc3RyYWNlCiAgIHZvaWQgd3Jp dGUgKHVuc2lnbmVkIGNhdGVnb3J5LCBjb25zdCBjaGFyICpidWYsIGludCBjb3VudCk7CiAgIHVu c2lnbmVkIGNoYXIgX2FjdGl2ZTsKIHB1YmxpYzoKLSAgdm9pZCBhY3RpdmF0ZSAoYm9vbCkgX19h dHRyaWJ1dGVfXyAoKF9fcmVncGFybV9fICgyKSkpOzsKKyAgdm9pZCBhY3RpdmF0ZSAoYm9vbCk7 CiAgIHN0cmFjZSAoKSB7fQogICBpbnQgbWljcm9zZWNvbmRzICgpOwogICBpbnQgdmVyc2lvbjsK ICAgaW50IGxtaWNyb3NlYzsKICAgYm9vbCBleGVjaW5nOwotICB2b2lkIGRsbF9pbmZvICgpIF9f YXR0cmlidXRlX18gKChfX3JlZ3Bhcm1fXyAoMSkpKTsKLSAgdm9pZCBwcm50ZiAodW5zaWduZWQs IGNvbnN0IGNoYXIgKmZ1bmMsIGNvbnN0IGNoYXIgKiwgLi4uKSAvKl9fYXR0cmlidXRlX18gKChf X3JlZ3Bhcm1fXygzKSkpKi87Ci0gIHZvaWQgdnBybnRmICh1bnNpZ25lZCwgY29uc3QgY2hhciAq ZnVuYywgY29uc3QgY2hhciAqLCB2YV9saXN0IGFwKSAvKl9fYXR0cmlidXRlX18gKChfX3JlZ3Bh cm1fXygzKSkpKi87Ci0gIHZvaWQgd20gKGludCBtZXNzYWdlLCBpbnQgd29yZCwgaW50IGxvbikg X19hdHRyaWJ1dGVfXyAoKF9fcmVncGFybV9fKDMpKSk7Ci0gIHZvaWQgd3JpdGVfY2hpbGRwaWQg KHBpZF90KSBfX2F0dHJpYnV0ZV9fICgoX19yZWdwYXJtX18gKDMpKSk7CisgIHZvaWQgZGxsX2lu Zm8gKCk7CisgIHZvaWQgcHJudGYgKHVuc2lnbmVkLCBjb25zdCBjaGFyICpmdW5jLCBjb25zdCBj aGFyICosIC4uLik7CisgIHZvaWQgdnBybnRmICh1bnNpZ25lZCwgY29uc3QgY2hhciAqZnVuYywg Y29uc3QgY2hhciAqLCB2YV9saXN0IGFwKTsKKyAgdm9pZCB3bSAoaW50IG1lc3NhZ2UsIGludCB3 b3JkLCBpbnQgbG9uKTsKKyAgdm9pZCB3cml0ZV9jaGlsZHBpZCAocGlkX3QpOwogICBib29sIGF0 dGFjaGVkICgpIGNvbnN0IHtyZXR1cm4gX2FjdGl2ZSA9PSAzO30KICAgYm9vbCBhY3RpdmUgKCkg Y29uc3Qge3JldHVybiBfYWN0aXZlICYgMTt9CiAgIHVuc2lnbmVkIGNoYXImIGFjdGl2ZV92YWwg KCkge3JldHVybiBfYWN0aXZlO30KZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vbWlzY2Z1bmNz LmNjIGIvd2luc3VwL2N5Z3dpbi9taXNjZnVuY3MuY2MKaW5kZXggNzM5ZDlkZTNiLi5jM2U2M2Y0 MzMgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vbWlzY2Z1bmNzLmNjCisrKyBiL3dpbnN1cC9j eWd3aW4vbWlzY2Z1bmNzLmNjCkBAIC0zNCw3ICszNCw3IEBAIGdldF9vYmpfaGFuZGxlX2NvdW50 IChIQU5ETEUgaCkKICAgcmV0dXJuIGhkbF9jbnQ7CiB9CiAKLWludCBfX3JlZzIKK2ludAogY2hl Y2tfaW52YWxpZF92aXJ0dWFsX2FkZHIgKGNvbnN0IHZvaWQgKnMsIHVuc2lnbmVkIHN6KQogewog ICBNRU1PUllfQkFTSUNfSU5GT1JNQVRJT04gbWJ1ZjsKQEAgLTMyNiw3ICszMjYsNyBAQCBOVF9y ZWFkbGluZTo6Z2V0cyAoKQogfQogCiAvKiBSZXR1cm4gYW4gYWRkcmVzcyBmcm9tIHRoZSBpbXBv cnQgam1wIHRhYmxlIG9mIG1haW4gcHJvZ3JhbS4gICovCi12b2lkICogX19yZWcxCit2b2lkICoK IF9faW1wb3J0X2FkZHJlc3MgKHZvaWQgKmltcCkKIHsKICAgX190cnkKZGlmZiAtLWdpdCBhL3dp bnN1cC9jeWd3aW4vbWlzY2Z1bmNzLmggYi93aW5zdXAvY3lnd2luL21pc2NmdW5jcy5oCmluZGV4 IGY1NzEwMzFlYi4uYjBmOGMyNDJjIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL21pc2NmdW5j cy5oCisrKyBiL3dpbnN1cC9jeWd3aW4vbWlzY2Z1bmNzLmgKQEAgLTQ0LDEwICs0NCwxMCBAQCBp c19hbHRfbnVtcGFkX2V2ZW50IChQSU5QVVRfUkVDT1JEIHBpcmVjKQogCSAmJiBwaXJlYy0+RXZl bnQuS2V5RXZlbnQud1ZpcnR1YWxTY2FuQ29kZSA9PSAweDM4OwogfQogCi1pbnQgX19yZWcxIHdp bnByaW9fdG9fbmljZSAoRFdPUkQpOwotRFdPUkQgX19yZWcxIG5pY2VfdG9fd2lucHJpbyAoaW50 ICYpOworaW50IHdpbnByaW9fdG9fbmljZSAoRFdPUkQpOworRFdPUkQgbmljZV90b193aW5wcmlv IChpbnQgJik7CiAKLWJvb2wgX19yZWczIGNyZWF0ZV9waXBlIChQSEFORExFLCBQSEFORExFLCBM UFNFQ1VSSVRZX0FUVFJJQlVURVMsIERXT1JEKTsKK2Jvb2wgY3JlYXRlX3BpcGUgKFBIQU5ETEUs IFBIQU5ETEUsIExQU0VDVVJJVFlfQVRUUklCVVRFUywgRFdPUkQpOwogCiBCT09MIFdJTkFQSSBD cmVhdGVQaXBlT3ZlcmxhcHBlZCAoUEhBTkRMRSByZWFkX2hhbmRsZSwgUEhBTkRMRSB3cml0ZV9o YW5kbGUsCiAJCQkJICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgc2EpOwpAQCAtNzgsMTEgKzc4LDEx IEBAIHB1YmxpYzoKIGV4dGVybiAiQyIgdm9pZCB5aWVsZCAoKTsKIAogI2RlZmluZSBpbXBvcnRf YWRkcmVzcyh4KSBfX2ltcG9ydF9hZGRyZXNzICgodm9pZCAqKSh4KSkKLXZvaWQgKiBfX3JlZzEg X19pbXBvcnRfYWRkcmVzcyAodm9pZCAqKTsKK3ZvaWQgKiBfX2ltcG9ydF9hZGRyZXNzICh2b2lk ICopOwogCiAjZGVmaW5lIGNhbGxlcl9yZXR1cm5fYWRkcmVzcygpIFwKIAkJX19jYWxsZXJfcmV0 dXJuX2FkZHJlc3MgKF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyAoMCkpCi12b2lkICogX19yZWcx IF9fY2FsbGVyX3JldHVybl9hZGRyZXNzICh2b2lkICopOwordm9pZCAqIF9fY2FsbGVyX3JldHVy bl9hZGRyZXNzICh2b2lkICopOwogCiB2b2lkIGJhY2tzbGFzaGlmeSAoY29uc3QgY2hhciAqLCBj aGFyICosIGJvb2wpOwogdm9pZCBzbGFzaGlmeSAoY29uc3QgY2hhciAqLCBjaGFyICosIGJvb2wp OwpAQCAtMTAyLDkgKzEwMiw5IEBAIFBXQ0hBUiB0cmFuc2Zvcm1fY2hhcnNfYWZfdW5peCAoUFdD SEFSLCBjb25zdCBjaGFyICosIF9fc29ja2xlbl90KTsKIFVMT05HIGdldF9vYmpfaGFuZGxlX2Nv dW50IChIQU5ETEUgaCk7CiAKIC8qIE1lbW9yeSBjaGVja2luZyAqLwotaW50IF9fcmVnMiBjaGVj a19pbnZhbGlkX3ZpcnR1YWxfYWRkciAoY29uc3Qgdm9pZCAqcywgdW5zaWduZWQgc3opOworaW50 IGNoZWNrX2ludmFsaWRfdmlydHVhbF9hZGRyIChjb25zdCB2b2lkICpzLCB1bnNpZ25lZCBzeik7 CiAKLXNzaXplX3QgX19yZWczIGNoZWNrX2lvdmVjIChjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgaW50 LCBib29sKTsKK3NzaXplX3QgY2hlY2tfaW92ZWMgKGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCBpbnQs IGJvb2wpOwogI2RlZmluZSBjaGVja19pb3ZlY19mb3JfcmVhZChhLCBiKSBjaGVja19pb3ZlYyAo KGEpLCAoYiksIGZhbHNlKQogI2RlZmluZSBjaGVja19pb3ZlY19mb3Jfd3JpdGUoYSwgYikgY2hl Y2tfaW92ZWMgKChhKSwgKGIpLCB0cnVlKQogCmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL21v dW50LmggYi93aW5zdXAvY3lnd2luL21vdW50LmgKaW5kZXggMTIyYTY3OWE4Li5mNTQ1MTZjMzAg MTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vbW91bnQuaAorKysgYi93aW5zdXAvY3lnd2luL21v dW50LmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBjbGFzcyBmc19pbmZvCiAKICAgY29uc3QgY2hhciAq ZnNuYW1lICgpIGNvbnN0IHsgcmV0dXJuIGZzblswXSA/IGZzbiA6ICJ1bmtub3duIjsgfQogCi0g IGJvb2wgX19yZWczIHVwZGF0ZSAoUFVOSUNPREVfU1RSSU5HLCBIQU5ETEUpOworICBib29sIHVw ZGF0ZSAoUFVOSUNPREVfU1RSSU5HLCBIQU5ETEUpOwogICBib29sIGluaXRlZCAoKSBjb25zdCB7 IHJldHVybiAhIXN0YXR1cy5mbGFnczsgfQogfTsKIApkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dp bi9udGVhLmNjIGIvd2luc3VwL2N5Z3dpbi9udGVhLmNjCmluZGV4IDgwMjBkYzliZC4uNTA5NGNm MzI0IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL250ZWEuY2MKKysrIGIvd2luc3VwL2N5Z3dp bi9udGVhLmNjCkBAIC0zOCw3ICszOCw3IEBAIGRldGFpbHMuICovCiAjZGVmaW5lIE5FWFRfRkVB KHApICgoUEZJTEVfRlVMTF9FQV9JTkZPUk1BVElPTikgKHAtPk5leHRFbnRyeU9mZnNldCBcCiAJ CSAgICAgPyAoY2hhciAqKSBwICsgcC0+TmV4dEVudHJ5T2Zmc2V0IDogTlVMTCkpCiAKLXNzaXpl X3QgX19yZWczCitzc2l6ZV90CiByZWFkX2VhIChIQU5ETEUgaGRsLCBwYXRoX2NvbnYgJnBjLCBj b25zdCBjaGFyICpuYW1lLCBjaGFyICp2YWx1ZSwgc2l6ZV90IHNpemUpCiB7CiAgIE9CSkVDVF9B VFRSSUJVVEVTIGF0dHI7CkBAIC0yMjksNyArMjI5LDcgQEAgcmVhZF9lYSAoSEFORExFIGhkbCwg cGF0aF9jb252ICZwYywgY29uc3QgY2hhciAqbmFtZSwgY2hhciAqdmFsdWUsIHNpemVfdCBzaXpl KQogICByZXR1cm4gcmV0OwogfQogCi1pbnQgX19yZWczCitpbnQKIHdyaXRlX2VhIChIQU5ETEUg aGRsLCBwYXRoX2NvbnYgJnBjLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSwK IAkgIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpCiB7CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2lu L3BhdGguY2MgYi93aW5zdXAvY3lnd2luL3BhdGguY2MKaW5kZXggNWU2ZDBlYTg3Li45OGY3YWEx ZGIgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vcGF0aC5jYworKysgYi93aW5zdXAvY3lnd2lu L3BhdGguY2MKQEAgLTM4MSw5ICszODEsOSBAQCBwYXRoX2NvbnY6OmFkZF9leHRfZnJvbV9zeW0g KHN5bWxpbmtfaW5mbyAmc3ltKQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgX19yZWcyIG1rcmVs cGF0aCAoY2hhciAqZHN0LCBib29sIGNhc2VpbnNlbnNpdGl2ZSk7CitzdGF0aWMgdm9pZCBta3Jl bHBhdGggKGNoYXIgKmRzdCwgYm9vbCBjYXNlaW5zZW5zaXRpdmUpOwogCi1zdGF0aWMgdm9pZCBf X3JlZzIKK3N0YXRpYyB2b2lkCiBta3JlbHBhdGggKGNoYXIgKnBhdGgsIGJvb2wgY2FzZWluc2Vu c2l0aXZlKQogewogICB0bXBfcGF0aGJ1ZiB0cDsKQEAgLTE1NzMsNyArMTU3Myw3IEBAIG5vcm1h bGl6ZV93aW4zMl9wYXRoIChjb25zdCBjaGFyICpzcmMsIGNoYXIgKmRzdCwgY2hhciAqJnRhaWwp CiAvKiBub2ZpbmFsc2xhc2g6IFJlbW92ZSB0cmFpbGluZyAvIGFuZCBcIGZyb20gU1JDIChleGNl cHQgZm9yIHRoZQogICAgZmlyc3Qgb25lKS4gIEl0IGlzIG9rIGZvciBzcmMgPT0gZHN0LiAgKi8K IAotdm9pZCBfX3JlZzIKK3ZvaWQKIG5vZmluYWxzbGFzaCAoY29uc3QgY2hhciAqc3JjLCBjaGFy ICpkc3QpCiB7CiAgIGludCBsZW4gPSBzdHJsZW4gKHNyYyk7CkBAIC0zNjU2LDcgKzM2NTYsNyBA QCByZWFkbGluayAoY29uc3QgY2hhciAqX19yZXN0cmljdCBwYXRoLCBjaGFyICpfX3Jlc3RyaWN0 IGJ1Ziwgc2l6ZV90IGJ1ZmxlbikKICAgIGRvbmUgZHVyaW5nIHRoZSBvcGVuZGlyIGNhbGwgYW5k IHRoZSBoYXNoIG9yIHRoZSBmaWxlbmFtZSB3aXRoaW4KICAgIHRoZSBkaXJlY3RvcnkuICBGSVhN RTogTm90IGJ1bGxldC1wcm9vZi4gKi8KIC8qIEN5Z3dpbiBpbnRlcm5hbCAqLwotaW5vX3QgX19y ZWcyCitpbm9fdAogaGFzaF9wYXRoX25hbWUgKGlub190IGhhc2gsIFBVTklDT0RFX1NUUklORyBu YW1lKQogewogICBpZiAobmFtZS0+TGVuZ3RoID09IDApCkBAIC0zNjcwLDcgKzM2NzAsNyBAQCBo YXNoX3BhdGhfbmFtZSAoaW5vX3QgaGFzaCwgUFVOSUNPREVfU1RSSU5HIG5hbWUpCiAgIHJldHVy biBoYXNoOwogfQogCi1pbm9fdCBfX3JlZzIKK2lub190CiBoYXNoX3BhdGhfbmFtZSAoaW5vX3Qg aGFzaCwgUENXU1RSIG5hbWUpCiB7CiAgIFVOSUNPREVfU1RSSU5HIHVuYW1lOwpAQCAtMzY3OCw3 ICszNjc4LDcgQEAgaGFzaF9wYXRoX25hbWUgKGlub190IGhhc2gsIFBDV1NUUiBuYW1lKQogICBy ZXR1cm4gaGFzaF9wYXRoX25hbWUgKGhhc2gsICZ1bmFtZSk7CiB9CiAKLWlub190IF9fcmVnMgor aW5vX3QKIGhhc2hfcGF0aF9uYW1lIChpbm9fdCBoYXNoLCBjb25zdCBjaGFyICpuYW1lKQogewog ICBVTklDT0RFX1NUUklORyB1bmFtZTsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vcGF0aC5o IGIvd2luc3VwL2N5Z3dpbi9wYXRoLmgKaW5kZXggYWRiMGNhMTFmLi43NGY4MzFlNTMgMTAwNjQ0 Ci0tLSBhL3dpbnN1cC9jeWd3aW4vcGF0aC5oCisrKyBiL3dpbnN1cC9jeWd3aW4vcGF0aC5oCkBA IC0yNDUsOSArMjQ1LDkgQEAgY2xhc3MgcGF0aF9jb252CiAgIHZvaWQgc2V0X3N5bWxpbmsgKERX T1JEIG4pIHtwYXRoX2ZsYWdzIHw9IFBBVEhfU1lNTElOSzsgc3ltbGlua19sZW5ndGggPSBuO30K ICAgdm9pZCBzZXRfZXhlYyAoaW50IHggPSAxKSB7bW91bnRfZmxhZ3MgfD0geCA/IE1PVU5UX0VY RUMgOiBNT1VOVF9OT1RFWEVDO30KIAotICB2b2lkIF9fcmVnMyBjaGVjayAoY29uc3QgVU5JQ09E RV9TVFJJTkcgKnVwYXRoLCB1aW50MzJfdCBvcHQgPSBQQ19TWU1fRk9MTE9XLAorICB2b2lkIGNo ZWNrIChjb25zdCBVTklDT0RFX1NUUklORyAqdXBhdGgsIHVpbnQzMl90IG9wdCA9IFBDX1NZTV9G T0xMT1csCiAJICAgICAgY29uc3Qgc3VmZml4X2luZm8gKnN1ZmZpeGVzID0gTlVMTCk7Ci0gIHZv aWQgX19yZWczIGNoZWNrIChjb25zdCBjaGFyICpzcmMsIHVpbnQzMl90IG9wdCA9IFBDX1NZTV9G T0xMT1csCisgIHZvaWQgY2hlY2sgKGNvbnN0IGNoYXIgKnNyYywgdWludDMyX3Qgb3B0ID0gUENf U1lNX0ZPTExPVywKIAkgICAgICBjb25zdCBzdWZmaXhfaW5mbyAqc3VmZml4ZXMgPSBOVUxMKTsK IAogICBwYXRoX2NvbnYgKGNvbnN0IGRldmljZSYgaW5fZGV2KQpAQCAtNDExLDcgKzQxMSw3IEBA IGNsYXNzIHBhdGhfY29udgogCiAgIGlub190IGdldF9pbm9fYnlfaGFuZGxlIChIQU5ETEUgaCk7 CiAgIGlubGluZSBjb25zdCBjaGFyICpnZXRfcG9zaXggKCkgY29uc3QgeyByZXR1cm4gcG9zaXhf cGF0aDsgfQotICB2b2lkIF9fcmVnMiBzZXRfcG9zaXggKGNvbnN0IGNoYXIgKik7CisgIHZvaWQg c2V0X3Bvc2l4IChjb25zdCBjaGFyICopOwogICBEV09SRCBnZXRfc3ltbGlua19sZW5ndGggKCkg eyByZXR1cm4gc3ltbGlua19sZW5ndGg7IH07CiB9OwogCkBAIC00MzEsNyArNDMxLDcgQEAgZW51 bSBmZV90eXBlcwogICBGRV9DV0QgPSA0LAkJLyogU2VhcmNoIENXRCBmb3IgcHJvZ3JhbSAqLwog ICBGRV9ETEwgPSA4CQkvKiBTZWFyY2ggZm9yIERMTHMsIG5vdCBleGVjdXRhYmxlcy4gKi8KIH07 Ci1jb25zdCBjaGFyICpfX3JlZzMgZmluZF9leGVjIChjb25zdCBjaGFyICpuYW1lLCBwYXRoX2Nv bnYmIGJ1ZiwKK2NvbnN0IGNoYXIgKmZpbmRfZXhlYyAoY29uc3QgY2hhciAqbmFtZSwgcGF0aF9j b252JiBidWYsCiAJCQkJIGNvbnN0IGNoYXIgKnNlYXJjaCA9ICJQQVRIIiwKIAkJCQkgdW5zaWdu ZWQgb3B0ID0gRkVfTkFEQSwKIAkJCQkgY29uc3QgY2hhciAqKmtub3duX3N1ZmZpeCA9IE5VTEwp OwpAQCAtNDQ5LDE1ICs0NDksMTUgQEAgaGFzX2V4ZWNfY2hhcnMgKGNvbnN0IGNoYXIgKmJ1Ziwg aW50IGxlbikKIAkgIChidWZbMF0gPT0gJ00nICYmIGJ1ZlsxXSA9PSAnWicpKTsKIH0KIAotaW50 IF9fcmVnMyBwYXRobWF0Y2ggKGNvbnN0IGNoYXIgKnBhdGgxLCBjb25zdCBjaGFyICpwYXRoMiwg Ym9vbCBjYXNlaW5zZW5zaXRpdmUpOwotaW50IF9fcmVnMyBwYXRobm1hdGNoIChjb25zdCBjaGFy ICpwYXRoMSwgY29uc3QgY2hhciAqcGF0aDIsIGludCBsZW4sIGJvb2wgY2FzZWluc2Vuc2l0aXZl KTsKLWJvb2wgX19yZWcyIGhhc19kb3RfbGFzdF9jb21wb25lbnQgKGNvbnN0IGNoYXIgKmRpciwg Ym9vbCB0ZXN0X2RvdF9kb3QpOworaW50IHBhdGhtYXRjaCAoY29uc3QgY2hhciAqcGF0aDEsIGNv bnN0IGNoYXIgKnBhdGgyLCBib29sIGNhc2VpbnNlbnNpdGl2ZSk7CitpbnQgcGF0aG5tYXRjaCAo Y29uc3QgY2hhciAqcGF0aDEsIGNvbnN0IGNoYXIgKnBhdGgyLCBpbnQgbGVuLCBib29sIGNhc2Vp bnNlbnNpdGl2ZSk7Citib29sIGhhc19kb3RfbGFzdF9jb21wb25lbnQgKGNvbnN0IGNoYXIgKmRp ciwgYm9vbCB0ZXN0X2RvdF9kb3QpOwogCi1pbnQgX19yZWczIHBhdGhfcHJlZml4X3AgKGNvbnN0 IGNoYXIgKnBhdGgxLCBjb25zdCBjaGFyICpwYXRoMiwgaW50IGxlbjEsCitpbnQgcGF0aF9wcmVm aXhfcCAoY29uc3QgY2hhciAqcGF0aDEsIGNvbnN0IGNoYXIgKnBhdGgyLCBpbnQgbGVuMSwKIAkJ ICAgYm9vbCBjYXNlaW5zZW5zaXRpdmUpOwogCiBpbnQgbm9ybWFsaXplX3dpbjMyX3BhdGggKGNv bnN0IGNoYXIgKiwgY2hhciAqLCBjaGFyIComKTsKIGludCBub3JtYWxpemVfcG9zaXhfcGF0aCAo Y29uc3QgY2hhciAqLCBjaGFyICosIGNoYXIgKiYpOwotUFVOSUNPREVfU1RSSU5HIF9fcmVnMyBn ZXRfbnRfbmF0aXZlX3BhdGggKGNvbnN0IGNoYXIgKiwgVU5JQ09ERV9TVFJJTkcmLCBib29sKTsK K1BVTklDT0RFX1NUUklORyBnZXRfbnRfbmF0aXZlX3BhdGggKGNvbnN0IGNoYXIgKiwgVU5JQ09E RV9TVFJJTkcmLCBib29sKTsKIAotaW50IF9fcmVnMyBzeW1saW5rX3dvcmtlciAoY29uc3QgY2hh ciAqLCBwYXRoX2NvbnYgJiwgYm9vbCk7CitpbnQgc3ltbGlua193b3JrZXIgKGNvbnN0IGNoYXIg KiwgcGF0aF9jb252ICYsIGJvb2wpOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9waW5mby5j YyBiL3dpbnN1cC9jeWd3aW4vcGluZm8uY2MKaW5kZXggZjUwMWM0NzBmLi5hNTRkYWM4OWIgMTAw NjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vcGluZm8uY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9waW5m by5jYwpAQCAtNTgxLDcgKzU4MSw3IEBAIF9waW5mbzo6c2V0X2N0dHkgKGZoYW5kbGVyX3Rlcm1p b3MgKmZoLCBpbnQgZmxhZ3MpCiAKIC8qIFRlc3QgdG8gZGV0ZXJtaW5lIGlmIGEgcHJvY2VzcyBy ZWFsbHkgZXhpc3RzIGFuZCBpcyBwcm9jZXNzaW5nIHNpZ25hbHMuCiAgKi8KLWJvb2wgX19yZWcx Citib29sCiBfcGluZm86OmV4aXN0cyAoKQogewogICByZXR1cm4gcHJvY2Vzc19zdGF0ZSAmJiAh KHByb2Nlc3Nfc3RhdGUgJiAoUElEX0VYSVRFRCB8IFBJRF9SRUFQRUQpKTsKZGlmZiAtLWdpdCBh L3dpbnN1cC9jeWd3aW4vcGluZm8uaCBiL3dpbnN1cC9jeWd3aW4vcGluZm8uaAppbmRleCA3ZTQ2 Y2ZiZWMuLjg2YmE2NGJiNiAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9waW5mby5oCisrKyBi L3dpbnN1cC9jeWd3aW4vcGluZm8uaApAQCAtMTE5LDggKzExOSw4IEBAIHB1YmxpYzoKICAgaW50 IHNpZ2luZm8gKHNpZ3NldF90ICYsIHNpZ3NldF90ICYsIHNpZ3NldF90ICYpOwogICBib29sIHNl dF9jdHR5IChjbGFzcyBmaGFuZGxlcl90ZXJtaW9zICosIGludCk7CiAgIGJvb2wgYWxlcnRfcGFy ZW50IChjaGFyKTsKLSAgaW50IF9fcmVnMiBraWxsIChzaWdpbmZvX3QmKTsKLSAgYm9vbCBfX3Jl ZzEgZXhpc3RzICgpOworICBpbnQga2lsbCAoc2lnaW5mb190Jik7CisgIGJvb2wgZXhpc3RzICgp OwogICBjb25zdCBjaGFyICpfY3R0eSAoY2hhciAqKTsKIAogICAvKiBzaWduYWxzICovCkBAIC0x NjAsNyArMTYwLDcgQEAgcHVibGljOgogICBib29sIHdhaXRlcl9yZWFkeTsKICAgY2xhc3MgY3ln dGhyZWFkICp3YWl0X3RocmVhZDsKIAotICB2b2lkIF9fcmVnMyBpbml0IChwaWRfdCwgRFdPUkQs IEhBTkRMRSk7CisgIHZvaWQgaW5pdCAocGlkX3QsIERXT1JELCBIQU5ETEUpOwogICBwaW5mbyAo X3BpbmZvICp4ID0gTlVMTCkKICAgOiBwaW5mb19taW5pbWFsICgpLCBkZXN0cm95IChmYWxzZSks IHdpbnBpZF9oZGwgKE5VTEwpLCBwcm9jaW5mbyAoeCksCiAgICAgd2FpdGVyX3JlYWR5IChmYWxz ZSksIHdhaXRfdGhyZWFkIChOVUxMKSB7fQpAQCAtMTcxLDE5ICsxNzEsMTkgQEAgcHVibGljOgog ICAgIGluaXQgKG4sIGZsYWcsIE5VTEwpOwogICB9CiAgIHBpbmZvIChIQU5ETEUsIHBpbmZvX21p bmltYWwmLCBwaWRfdCk7Ci0gIHZvaWQgX19yZWcyIHRoaXNwcm9jIChIQU5ETEUpOworICB2b2lk IHRoaXNwcm9jIChIQU5ETEUpOwogICB2b2lkIGNyZWF0ZV93aW5waWRfc3ltbGluayAoKTsKICAg aW5saW5lIHZvaWQgX3BpbmZvX3JlbGVhc2UgKCk7CiAgIHZvaWQgcmVsZWFzZSAoKTsKLSAgYm9v bCBfX3JlZzEgd2FpdCAoKTsKKyAgYm9vbCB3YWl0ICgpOwogICB+cGluZm8gKCkKICAgewogICAg IGlmIChkZXN0cm95ICYmIHByb2NpbmZvKQogICAgICAgcmVsZWFzZSAoKTsKICAgfQotICB2b2lk IF9fcmVnMiBleGl0IChEV09SRCBuKSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4sICkpOwotICB2 b2lkIF9fcmVnMSBtYXliZV9zZXRfZXhpdF9jb2RlX2Zyb21fd2luZG93cyAoKTsKLSAgdm9pZCBf X3JlZzIgc2V0X2V4aXRfY29kZSAoRFdPUkQgbik7CisgIHZvaWQgZXhpdCAoRFdPUkQgbikgX19h dHRyaWJ1dGVfXyAoKG5vcmV0dXJuLCApKTsKKyAgdm9pZCBtYXliZV9zZXRfZXhpdF9jb2RlX2Zy b21fd2luZG93cyAoKTsKKyAgdm9pZCBzZXRfZXhpdF9jb2RlIChEV09SRCBuKTsKICAgX3BpbmZv ICpvcGVyYXRvciAtPiAoKSBjb25zdCB7cmV0dXJuIHByb2NpbmZvO30KICAgaW50IG9wZXJhdG9y ID09IChwaW5mbyAqeCkgY29uc3Qge3JldHVybiB4LT5wcm9jaW5mbyA9PSBwcm9jaW5mbzt9CiAg IGludCBvcGVyYXRvciA9PSAocGluZm8gJngpIGNvbnN0IHtyZXR1cm4geC5wcm9jaW5mbyA9PSBw cm9jaW5mbzt9CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL3JlZ3Bhcm0uaCBiL3dpbnN1cC9j eWd3aW4vcmVncGFybS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2UxYmFiNGEu LjAwMDAwMDAwMAotLS0gYS93aW5zdXAvY3lnd2luL3JlZ3Bhcm0uaAorKysgL2Rldi9udWxsCkBA IC0xLDE5ICswLDAgQEAKLS8qIHJlZ3Bhcm0uaDogRGVmaW5lIG1hY3JvcyBmb3IgcmVncGFybSBm dW5jdGlvbnMgYW5kIG1ldGhvZHMuCi0KLVRoaXMgZmlsZSBpcyBwYXJ0IG9mIEN5Z3dpbi4KLQot VGhpcyBzb2Z0d2FyZSBpcyBhIGNvcHlyaWdodGVkIHdvcmsgbGljZW5zZWQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZQotQ3lnd2luIGxpY2Vuc2UuICBQbGVhc2UgY29uc3VsdCB0aGUgZmlsZSAiQ1lH V0lOX0xJQ0VOU0UiIGZvcgotZGV0YWlscy4gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZp bmVkIChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkIChfX0NZR01BR0lDX18pCi0jIGRlZmluZSBfX3Jl ZzEKLSMgZGVmaW5lIF9fcmVnMgotIyBkZWZpbmUgX19yZWczCi0jZWxzZQotIyBkZWZpbmUgX19y ZWcxIF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgocmVncGFybSAoMSkpKQotIyBkZWZpbmUgX19y ZWcyIF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgocmVncGFybSAoMikpKQotIyBkZWZpbmUgX19y ZWczIF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgocmVncGFybSAoMykpKQotI2VuZGlmCmRpZmYg LS1naXQgYS93aW5zdXAvY3lnd2luL3NlY19oZWxwZXIuY2MgYi93aW5zdXAvY3lnd2luL3NlY19o ZWxwZXIuY2MKaW5kZXggODZkMmE3YjNmLi5mYWQzYjMzNjggMTAwNjQ0Ci0tLSBhL3dpbnN1cC9j eWd3aW4vc2VjX2hlbHBlci5jYworKysgYi93aW5zdXAvY3lnd2luL3NlY19oZWxwZXIuY2MKQEAg LTU5Myw3ICs1OTMsNyBAQCBzZWNfYWNsIChQQUNMIGFjbCwgYm9vbCBvcmlnaW5hbCwgYm9vbCBh ZG1pbnMsIFBTSUQgc2lkMSwgUFNJRCBzaWQyLCBEV09SRCBhY2NlcwogICByZXR1cm4gdHJ1ZTsK IH0KIAotUFNFQ1VSSVRZX0FUVFJJQlVURVMgX19yZWczCitQU0VDVVJJVFlfQVRUUklCVVRFUwog X19zZWNfdXNlciAoUFZPSUQgc2FfYnVmLCBQU0lEIHNpZDEsIFBTSUQgc2lkMiwgRFdPUkQgYWNj ZXNzMiwgQk9PTCBpbmhlcml0KQogewogICBQU0VDVVJJVFlfQVRUUklCVVRFUyBwc2EgPSAoUFNF Q1VSSVRZX0FUVFJJQlVURVMpIHNhX2J1ZjsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vc2Vj X3Bvc2l4YWNsLmNjIGIvd2luc3VwL2N5Z3dpbi9zZWNfcG9zaXhhY2wuY2MKaW5kZXggZTc0NWJk Yjk3Li5lN2U1YTljM2UgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vc2VjX3Bvc2l4YWNsLmNj CisrKyBiL3dpbnN1cC9jeWd3aW4vc2VjX3Bvc2l4YWNsLmNjCkBAIC01NTksMTQgKzU1OSwxNCBA QCBhY2xfdG9fdGV4dCAoYWNsX3QgYWNsLCBzc2l6ZV90ICpsZW5fcCkKICAgcmV0dXJuIE5VTEw7 CiB9CiAKLWFjbF90IF9fcmVnMgorYWNsX3QKIGZoYW5kbGVyX2Jhc2U6OmFjbF9nZXQgKGFjbF90 eXBlX3QgdHlwZSkKIHsKICAgc2V0X2Vycm5vIChFTk9UU1VQKTsKICAgcmV0dXJuIE5VTEw7CiB9 CiAKLWFjbF90IF9fcmVnMgorYWNsX3QKIGZoYW5kbGVyX2Rpc2tfZmlsZTo6YWNsX2dldCAoYWNs X3R5cGVfdCB0eXBlKQogewogICBhY2xfdCBhY2wgPSBOVUxMOwpAQCAtNjYzLDE0ICs2NjMsMTQg QEAgYWNsX2dldF9maWxlIChjb25zdCBjaGFyICpwYXRoX3AsIGFjbF90eXBlX3QgdHlwZSkKICAg cmV0dXJuIGFjbDsKIH0KIAotaW50IF9fcmVnMworaW50CiBmaGFuZGxlcl9iYXNlOjphY2xfc2V0 IChhY2xfdCBhY2wsIGFjbF90eXBlX3QgdHlwZSkKIHsKICAgc2V0X2Vycm5vIChFTk9UU1VQKTsK ICAgcmV0dXJuIC0xOwogfQogCi1pbnQgX19yZWczCitpbnQKIGZoYW5kbGVyX2Rpc2tfZmlsZTo6 YWNsX3NldCAoYWNsX3QgYWNsLCBhY2xfdHlwZV90IHR5cGUpCiB7CiAgIGludCByZXQgPSAtMTsK ZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vc2VjdXJpdHkuaCBiL3dpbnN1cC9jeWd3aW4vc2Vj dXJpdHkuaAppbmRleCBmZjI1NDgwMjcuLmM0MGFkZjFlMyAxMDA2NDQKLS0tIGEvd2luc3VwL2N5 Z3dpbi9zZWN1cml0eS5oCisrKyBiL3dpbnN1cC9jeWd3aW4vc2VjdXJpdHkuaApAQCAtNDExLDIz ICs0MTEsMjMgQEAgbGVnYWxfc2lkX3R5cGUgKFNJRF9OQU1FX1VTRSB0eXBlKQogCiBjbGFzcyBw YXRoX2NvbnY7CiAvKiBGaWxlIG1hbmlwdWxhdGlvbiAqLwotaW50IF9fcmVnMyBnZXRfZmlsZV9h dHRyaWJ1dGUgKEhBTkRMRSwgcGF0aF9jb252ICYsIG1vZGVfdCAqLAoraW50IGdldF9maWxlX2F0 dHJpYnV0ZSAoSEFORExFLCBwYXRoX2NvbnYgJiwgbW9kZV90ICosCiAJCQkJICB1aWRfdCAqLCBn aWRfdCAqKTsKLWludCBfX3JlZzMgc2V0X2NyZWF0ZWRfZmlsZV9hY2Nlc3MgKEhBTkRMRSwgcGF0 aF9jb252ICYsIG1vZGVfdCk7Ci1pbnQgX19yZWcyIGdldF9vYmplY3Rfc2QgKEhBTkRMRSwgc2Vj dXJpdHlfZGVzY3JpcHRvciAmKTsKLWludCBfX3JlZzMgZ2V0X29iamVjdF9hdHRyaWJ1dGUgKEhB TkRMRSwgdWlkX3QgKiwgZ2lkX3QgKiwgbW9kZV90ICopOwotaW50IF9fcmVnMyBzZXRfb2JqZWN0 X2F0dHJpYnV0ZSAoSEFORExFLCB1aWRfdCwgZ2lkX3QsIG1vZGVfdCk7Ci1pbnQgX19yZWczIGNy ZWF0ZV9vYmplY3Rfc2RfZnJvbV9hdHRyaWJ1dGUgKHVpZF90LCBnaWRfdCwgbW9kZV90LAoraW50 IHNldF9jcmVhdGVkX2ZpbGVfYWNjZXNzIChIQU5ETEUsIHBhdGhfY29udiAmLCBtb2RlX3QpOwor aW50IGdldF9vYmplY3Rfc2QgKEhBTkRMRSwgc2VjdXJpdHlfZGVzY3JpcHRvciAmKTsKK2ludCBn ZXRfb2JqZWN0X2F0dHJpYnV0ZSAoSEFORExFLCB1aWRfdCAqLCBnaWRfdCAqLCBtb2RlX3QgKik7 CitpbnQgc2V0X29iamVjdF9hdHRyaWJ1dGUgKEhBTkRMRSwgdWlkX3QsIGdpZF90LCBtb2RlX3Qp OworaW50IGNyZWF0ZV9vYmplY3Rfc2RfZnJvbV9hdHRyaWJ1dGUgKHVpZF90LCBnaWRfdCwgbW9k ZV90LAogCQkJCQkgICAgc2VjdXJpdHlfZGVzY3JpcHRvciAmKTsKLWludCBfX3JlZzMgc2V0X29i amVjdF9zZCAoSEFORExFLCBzZWN1cml0eV9kZXNjcmlwdG9yICYsIGJvb2wpOworaW50IHNldF9v YmplY3Rfc2QgKEhBTkRMRSwgc2VjdXJpdHlfZGVzY3JpcHRvciAmLCBib29sKTsKIAotaW50IF9f cmVnMyBnZXRfcmVnX2F0dHJpYnV0ZSAoSEtFWSBoa2V5LCBtb2RlX3QgKiwgdWlkX3QgKiwgZ2lk X3QgKik7Ci1MT05HIF9fcmVnMyBnZXRfZmlsZV9zZCAoSEFORExFIGZoLCBwYXRoX2NvbnYgJiwg c2VjdXJpdHlfZGVzY3JpcHRvciAmLCBib29sKTsKLUxPTkcgX19yZWczIHNldF9maWxlX3NkIChI QU5ETEUgZmgsIHBhdGhfY29udiAmLCBzZWN1cml0eV9kZXNjcmlwdG9yICYsIGJvb2wpOwotYm9v bCBfX3JlZzMgYWRkX2FjY2Vzc19hbGxvd2VkX2FjZSAoUEFDTCwgRFdPUkQsIFBTSUQsIHNpemVf dCAmLCBEV09SRCk7Ci1ib29sIF9fcmVnMyBhZGRfYWNjZXNzX2RlbmllZF9hY2UgKFBBQ0wsIERX T1JELCBQU0lELCBzaXplX3QgJiwgRFdPUkQpOwotaW50IF9fcmVnMyBjaGVja19maWxlX2FjY2Vz cyAocGF0aF9jb252ICYsIGludCwgYm9vbCk7Ci1pbnQgX19yZWczIGNoZWNrX3JlZ2lzdHJ5X2Fj Y2VzcyAoSEFORExFLCBpbnQsIGJvb2wpOworaW50IGdldF9yZWdfYXR0cmlidXRlIChIS0VZIGhr ZXksIG1vZGVfdCAqLCB1aWRfdCAqLCBnaWRfdCAqKTsKK0xPTkcgZ2V0X2ZpbGVfc2QgKEhBTkRM RSBmaCwgcGF0aF9jb252ICYsIHNlY3VyaXR5X2Rlc2NyaXB0b3IgJiwgYm9vbCk7CitMT05HIHNl dF9maWxlX3NkIChIQU5ETEUgZmgsIHBhdGhfY29udiAmLCBzZWN1cml0eV9kZXNjcmlwdG9yICYs IGJvb2wpOworYm9vbCBhZGRfYWNjZXNzX2FsbG93ZWRfYWNlIChQQUNMLCBEV09SRCwgUFNJRCwg c2l6ZV90ICYsIERXT1JEKTsKK2Jvb2wgYWRkX2FjY2Vzc19kZW5pZWRfYWNlIChQQUNMLCBEV09S RCwgUFNJRCwgc2l6ZV90ICYsIERXT1JEKTsKK2ludCBjaGVja19maWxlX2FjY2VzcyAocGF0aF9j b252ICYsIGludCwgYm9vbCk7CitpbnQgY2hlY2tfcmVnaXN0cnlfYWNjZXNzIChIQU5ETEUsIGlu dCwgYm9vbCk7CiAKIHZvaWQgc2V0X3NlY3VyaXR5X2F0dHJpYnV0ZSAocGF0aF9jb252ICZwYywg aW50IGF0dHJpYnV0ZSwKIAkJCSAgICAgUFNFQ1VSSVRZX0FUVFJJQlVURVMgcHNhLApAQCAtNTE0 LDcgKzUxNCw3IEBAIHZvaWQgc2V0X2N5Z3dpbl9wcml2aWxlZ2VzIChIQU5ETEUgdG9rZW4pOwog CiAvKiBWYXJpb3VzIHR5cGVzIG9mIHNlY3VyaXR5IGF0dHJpYnV0ZXMgZm9yIHVzZSBpbiBDcmVh dGUqIGZ1bmN0aW9ucy4gKi8KIGV4dGVybiBTRUNVUklUWV9BVFRSSUJVVEVTIHNlY19ub25lLCBz ZWNfbm9uZV9uaWgsIHNlY19hbGwsIHNlY19hbGxfbmloOwotZXh0ZXJuIFNFQ1VSSVRZX0FUVFJJ QlVURVMgKl9fcmVnMyBfX3NlY191c2VyIChQVk9JRCwgUFNJRCwgUFNJRCwKK2V4dGVybiBTRUNV UklUWV9BVFRSSUJVVEVTICpfX3NlY191c2VyIChQVk9JRCwgUFNJRCwgUFNJRCwKIAkJCQkJCSAg RFdPUkQsIEJPT0wpOwogCiBleHRlcm4gUFNFQ1VSSVRZX0RFU0NSSVBUT1IgX3JlY3ljbGVyX3Nk ICh2b2lkICpidWYsIGJvb2wgdXNlcnMsIGJvb2wgZGlyKTsKQEAgLTUzMSw5ICs1MzEsOSBAQCBl eHRlcm4gUFNFQ1VSSVRZX0RFU0NSSVBUT1IgX2V2ZXJ5b25lX3NkICh2b2lkICpidWYsIEFDQ0VT U19NQVNLIGFjY2Vzcyk7CiBleHRlcm4gYm9vbCBzZWNfYWNsIChQQUNMIGFjbCwgYm9vbCBvcmln aW5hbCwgYm9vbCBhZG1pbnMsIFBTSUQgc2lkMSA9IE5PX1NJRCwKIAkJICAgICBQU0lEIHNpZDIg PSBOT19TSUQsIERXT1JEIGFjY2VzczIgPSAwKTsKIAotc3NpemVfdCBfX3JlZzMgcmVhZF9lYSAo SEFORExFLCBwYXRoX2NvbnYgJiwgY29uc3QgY2hhciAqLAorc3NpemVfdCByZWFkX2VhIChIQU5E TEUsIHBhdGhfY29udiAmLCBjb25zdCBjaGFyICosCiAJCQkgICBjaGFyICosIHNpemVfdCk7Ci1p bnQgX19yZWczIHdyaXRlX2VhIChIQU5ETEUsIHBhdGhfY29udiAmLCBjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKiwKK2ludCB3cml0ZV9lYSAoSEFORExFLCBwYXRoX2NvbnYgJiwgY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICosCiAJCQlzaXplX3QsIGludCk7CiAKIC8qIE5vdGU6IHNpZDEgaXMg dXN1YWxseSAocmVhZDogY3VycmVudGx5IGFsd2F5cykgdGhlIGN1cnJlbnQgdXNlcidzCmRpZmYg LS1naXQgYS93aW5zdXAvY3lnd2luL3NpZ25hbC5jYyBiL3dpbnN1cC9jeWd3aW4vc2lnbmFsLmNj CmluZGV4IDA1MzAzNTVkNy4uNzcxNTI5MTBiIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL3Np Z25hbC5jYworKysgYi93aW5zdXAvY3lnd2luL3NpZ25hbC5jYwpAQCAtMjcsNyArMjcsNyBAQCBk ZXRhaWxzLiAqLwogCiAjZGVmaW5lIF9TQV9OT1JFU1RBUlQJMHg4MDAwCiAKLXN0YXRpYyBpbnQg X19yZWczIHNpZ2FjdGlvbl93b3JrZXIgKGludCwgY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiAqLCBz dHJ1Y3Qgc2lnYWN0aW9uICosIGJvb2wpOworc3RhdGljIGludCBzaWdhY3Rpb25fd29ya2VyIChp bnQsIGNvbnN0IHN0cnVjdCBzaWdhY3Rpb24gKiwgc3RydWN0IHNpZ2FjdGlvbiAqLCBib29sKTsK IAogI2RlZmluZSBzaWd0cmFwcGVkKGZ1bmMpICgoZnVuYykgIT0gU0lHX0lHTiAmJiAoZnVuYykg IT0gU0lHX0RGTCkKIApAQCAtMjA0LDcgKzIwNCw3IEBAIHNpZ3Byb2NtYXNrIChpbnQgaG93LCBj b25zdCBzaWdzZXRfdCAqc2V0LCBzaWdzZXRfdCAqb2xkc2V0KQogICByZXR1cm4gcmVzOwogfQog Ci1pbnQgX19yZWczCitpbnQKIGhhbmRsZV9zaWdwcm9jbWFzayAoaW50IGhvdywgY29uc3Qgc2ln c2V0X3QgKnNldCwgc2lnc2V0X3QgKm9sZHNldCwgc2lnc2V0X3QmIG9wbWFzaykKIHsKICAgLyog Y2hlY2sgdGhhdCBob3cgaXMgaW4gcmlnaHQgcmFuZ2UgaWYgc2V0IGlzIG5vdCBOVUxMICovCkBA IC0yNDgsNyArMjQ4LDcgQEAgaGFuZGxlX3NpZ3Byb2NtYXNrIChpbnQgaG93LCBjb25zdCBzaWdz ZXRfdCAqc2V0LCBzaWdzZXRfdCAqb2xkc2V0LCBzaWdzZXRfdCYgb3AKICAgcmV0dXJuIDA7CiB9 CiAKLWludCBfX3JlZzIKK2ludAogX3BpbmZvOjpraWxsIChzaWdpbmZvX3QmIHNpKQogewogICBp bnQgcmVzOwpAQCAtNDE1LDcgKzQxNSw3IEBAIGFib3J0ICh2b2lkKQogICBkb19leGl0IChTSUdB QlJUKTsJLyogc2lnbmFsIGhhbmRsZXIgZGlkbid0IGV4aXQuICBHb29kYnllLiAqLwogfQogCi1z dGF0aWMgaW50IF9fcmVnMworc3RhdGljIGludAogc2lnYWN0aW9uX3dvcmtlciAoaW50IHNpZywg Y29uc3Qgc3RydWN0IHNpZ2FjdGlvbiAqbmV3YWN0LAogCQkgIHN0cnVjdCBzaWdhY3Rpb24gKm9s ZGFjdCwgYm9vbCBpc2ludGVybmFsKQogewpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9zaWdw cm9jLmNjIGIvd2luc3VwL2N5Z3dpbi9zaWdwcm9jLmNjCmluZGV4IGE3MGMzYjZmNi4uMGQ5ZGEy MzdjIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL3NpZ3Byb2MuY2MKKysrIGIvd2luc3VwL2N5 Z3dpbi9zaWdwcm9jLmNjCkBAIC0xMDEsNyArMTAxLDcgQEAgU3RhdGljIEhBTkRMRSBteV9yZWFk c2lnOwogSEFORExFIE5PX0NPUFkgbXlfcGVuZGluZ3NpZ3NfZXZ0OwogCiAvKiBGdW5jdGlvbiBk ZWNsYXJhdGlvbnMgKi8KLXN0YXRpYyBpbnQgX19yZWcxIGNoZWNrc3RhdGUgKHdhaXRxICopOwor c3RhdGljIGludCBjaGVja3N0YXRlICh3YWl0cSAqKTsKIHN0YXRpYyBfX2lubGluZV9fIGJvb2wg Z2V0X3Byb2NfbG9jayAoRFdPUkQsIERXT1JEKTsKIHN0YXRpYyBpbnQgcmVtb3ZlX3Byb2MgKGlu dCk7CiBzdGF0aWMgYm9vbCBzdG9wcGVkX29yX3Rlcm1pbmF0ZWQgKHdhaXRxICosIF9waW5mbyAq KTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgIGJvb2wgcGVuZGluZyAoKSB7cmV0cnkg PSB0cnVlOyByZXR1cm4gISFzdGFydC5uZXh0O30KICAgdm9pZCBjbGVhciAoaW50IHNpZykge3Np Z3Nbc2lnXS5zaS5zaV9zaWdubyA9IDA7fQogICB2b2lkIGNsZWFyIChfY3lndGxzICp0bHMpOwot ICBmcmllbmQgdm9pZCBfX3JlZzEgc2lnX2Rpc3BhdGNoX3BlbmRpbmcgKGJvb2wpOworICBmcmll bmQgdm9pZCBzaWdfZGlzcGF0Y2hfcGVuZGluZyAoYm9vbCk7CiAgIGZyaWVuZCB2b2lkIFdJTkFQ SSB3YWl0X3NpZyAoVk9JRCAqYXJnKTsKIH07CiAKQEAgLTE5Miw3ICsxOTIsNyBAQCBwcm9jX2Nh bl9iZV9zaWduYWxsZWQgKF9waW5mbyAqcCkKICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIF9f cmVnMQorYm9vbAogcGlkX2V4aXN0cyAocGlkX3QgcGlkKQogewogICBwaW5mbyBwIChwaWQpOwpA QCAtMjExLDcgKzIxMSw3IEBAIG15Y2hpbGQgKGludCBwaWQpCiAKIC8qIEhhbmRsZSBhbGwgc3Vi cHJvY2VzcyByZXF1ZXN0cwogICovCi1pbnQgX19yZWcyCitpbnQKIHByb2Nfc3VicHJvYyAoRFdP UkQgd2hhdCwgdWludHB0cl90IHZhbCkKIHsKICAgaW50IHNsb3Q7CkBAIC00MzMsNyArNDMzLDcg QEAgcHJvY190ZXJtaW5hdGUgKCkKIH0KIAogLyogQ2xlYXIgcGVuZGluZyBzaWduYWwgKi8KLXZv aWQgX19yZWcxCit2b2lkCiBzaWdfY2xlYXIgKGludCBzaWcpCiB7CiAgIHNpZ3EuY2xlYXIgKHNp Zyk7CkBAIC00NzQsNyArNDc0LDcgQEAgc2lncGVuZGluZyAoc2lnc2V0X3QgKm1hc2spCiB9CiAK IC8qIEZvcmNlIHRoZSB3YWl0X3NpZyB0aHJlYWQgdG8gd2FrZSB1cCBhbmQgc2NhbiBmb3IgcGVu ZGluZyBzaWduYWxzICovCi12b2lkIF9fcmVnMQordm9pZAogc2lnX2Rpc3BhdGNoX3BlbmRpbmcg KGJvb2wgZmFzdCkKIHsKICAgLyogTm9uLWF0b21pY2FsbHkgdGVzdCBmb3IgYW55IHNpZ25hbHMg cGVuZGluZyBhbmQgd2FrZSB1cCB3YWl0X3NpZyBpZiBhbnkgYXJlCkBAIC01NTEsNyArNTUxLDcg QEAgZXhpdF90aHJlYWQgKERXT1JEIHJlcykKICAgRXhpdFRocmVhZCAocmVzKTsKIH0KIAotc2ln c2V0X3QgX19yZWczCitzaWdzZXRfdAogc2lnX3NlbmQgKF9waW5mbyAqcCwgaW50IHNpZywgX2N5 Z3RscyAqdGxzKQogewogICBzaWdpbmZvX3Qgc2kgPSB7fTsKQEAgLTU2NCw3ICs1NjQsNyBAQCBz aWdfc2VuZCAoX3BpbmZvICpwLCBpbnQgc2lnLCBfY3lndGxzICp0bHMpCiAgICBJZiBwaW5mbyAq cCA9PSBOVUxMLCBzZW5kIHRvIHRoZSBjdXJyZW50IHByb2Nlc3MuCiAgICBJZiBzZW5kaW5nIHRv IHRoaXMgcHJvY2Vzcywgd2FpdCBmb3Igbm90aWZpY2F0aW9uIHRoYXQgYSBzaWduYWwgaGFzCiAg ICBjb21wbGV0ZWQgYmVmb3JlIHJldHVybmluZy4gICovCi1zaWdzZXRfdCBfX3JlZzMKK3NpZ3Nl dF90CiBzaWdfc2VuZCAoX3BpbmZvICpwLCBzaWdpbmZvX3QmIHNpLCBfY3lndGxzICp0bHMpCiB7 CiAgIGludCByYyA9IDE7CkBAIC0xMTU1LDcgKzExNTUsNyBAQCBjaGlsZF9pbmZvX2Zvcms6OmFi b3J0IChjb25zdCBjaGFyICpmbXQsIC4uLikKIC8qIENoZWNrIHRoZSBzdGF0ZSBvZiBhbGwgb2Yg b3VyIGNoaWxkcmVuIHRvIHNlZSBpZiBhbnkgYXJlIHN0b3BwZWQgb3IKICAqIHRlcm1pbmF0ZWQu CiAgKi8KLXN0YXRpYyBpbnQgX19yZWcxCitzdGF0aWMgaW50CiBjaGVja3N0YXRlICh3YWl0cSAq cGFyZW50X3cpCiB7CiAgIGludCBwb3RlbnRpYWxfbWF0Y2ggPSAwOwpkaWZmIC0tZ2l0IGEvd2lu c3VwL2N5Z3dpbi9zaWdwcm9jLmggYi93aW5zdXAvY3lnd2luL3NpZ3Byb2MuaAppbmRleCBkMDM3 ZWFlYzMuLmYyZDdlMzE2OCAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9zaWdwcm9jLmgKKysr IGIvd2luc3VwL2N5Z3dpbi9zaWdwcm9jLmgKQEAgLTUzLDMzICs1MywzMyBAQCBzdHJ1Y3Qgc2ln cGFja2V0CiAgICAgSEFORExFIHRocmVhZF9oYW5kbGU7CiAgICAgc3RydWN0IHNpZ3BhY2tldCAq bmV4dDsKICAgfTsKLSAgaW50IF9fcmVnMSBwcm9jZXNzICgpOwotICBpbnQgX19yZWczIHNldHVw X2hhbmRsZXIgKHZvaWQgKiwgc3RydWN0IHNpZ2FjdGlvbiYsIF9jeWd0bHMgKik7CisgIGludCBw cm9jZXNzICgpOworICBpbnQgc2V0dXBfaGFuZGxlciAodm9pZCAqLCBzdHJ1Y3Qgc2lnYWN0aW9u JiwgX2N5Z3RscyAqKTsKIH07CiAKLXZvaWQgX19yZWcxIHNpZ19kaXNwYXRjaF9wZW5kaW5nIChi b29sIGZhc3QgPSBmYWxzZSk7Ci12b2lkIF9fcmVnMiBzZXRfc2lnbmFsX21hc2sgKHNpZ3NldF90 Jiwgc2lnc2V0X3QpOwotaW50IF9fcmVnMyBoYW5kbGVfc2lncHJvY21hc2sgKGludCBzaWcsIGNv bnN0IHNpZ3NldF90ICpzZXQsCit2b2lkIHNpZ19kaXNwYXRjaF9wZW5kaW5nIChib29sIGZhc3Qg PSBmYWxzZSk7Cit2b2lkIHNldF9zaWduYWxfbWFzayAoc2lnc2V0X3QmLCBzaWdzZXRfdCk7Citp bnQgaGFuZGxlX3NpZ3Byb2NtYXNrIChpbnQgc2lnLCBjb25zdCBzaWdzZXRfdCAqc2V0LAogCQkJ CSAgc2lnc2V0X3QgKm9sZHNldCwgc2lnc2V0X3QmIG9wbWFzayk7CiAKLXZvaWQgX19yZWcxIHNp Z19jbGVhciAoaW50KTsKLXZvaWQgX19yZWcxIHNpZ19zZXRfcGVuZGluZyAoaW50KTsKK3ZvaWQg c2lnX2NsZWFyIChpbnQpOwordm9pZCBzaWdfc2V0X3BlbmRpbmcgKGludCk7CiBpbnQgX19zdGRj YWxsIGhhbmRsZV9zaWdzdXNwZW5kIChzaWdzZXRfdCk7CiAKLWludCBfX3JlZzIgcHJvY19zdWJw cm9jIChEV09SRCwgdWludHB0cl90KTsKK2ludCBwcm9jX3N1YnByb2MgKERXT1JELCB1aW50cHRy X3QpOwogCiBjbGFzcyBfcGluZm87CiB2b2lkIHByb2NfdGVybWluYXRlICgpOwogdm9pZCBzaWdw cm9jX2luaXQgKCk7Ci1ib29sIF9fcmVnMSBwaWRfZXhpc3RzIChwaWRfdCk7Ci1zaWdzZXRfdCBf X3JlZzMgc2lnX3NlbmQgKF9waW5mbyAqLCBzaWdpbmZvX3QmLCBjbGFzcyBfY3lndGxzICogPSBO VUxMKTsKLXNpZ3NldF90IF9fcmVnMyBzaWdfc2VuZCAoX3BpbmZvICosIGludCwgY2xhc3MgX2N5 Z3RscyAqID0gTlVMTCk7Citib29sIHBpZF9leGlzdHMgKHBpZF90KTsKK3NpZ3NldF90IHNpZ19z ZW5kIChfcGluZm8gKiwgc2lnaW5mb190JiwgY2xhc3MgX2N5Z3RscyAqID0gTlVMTCk7CitzaWdz ZXRfdCBzaWdfc2VuZCAoX3BpbmZvICosIGludCwgY2xhc3MgX2N5Z3RscyAqID0gTlVMTCk7CiB2 b2lkIHNpZ25hbF9maXh1cF9hZnRlcl9leGVjICgpOwogdm9pZCBzaWdhbGxvYyAoKTsKIAogaW50 IGtpbGxfcGdycCAocGlkX3QsIHNpZ2luZm9fdCYpOwotdm9pZCBfX3JlZzEgZXhpdF90aHJlYWQg KERXT1JEKSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsKLXZvaWQgX19yZWcxIHNldHVwX3Np Z25hbF9leGl0IChpbnQpOwordm9pZCBleGl0X3RocmVhZCAoRFdPUkQpIF9fYXR0cmlidXRlX18g KChub3JldHVybikpOwordm9pZCBzZXR1cF9zaWduYWxfZXhpdCAoaW50KTsKIGludCBzaWd3YWl0 X2NvbW1vbiAoY29uc3Qgc2lnc2V0X3QgKiwgc2lnaW5mb190ICosIFBMQVJHRV9JTlRFR0VSKTsK IAogY2xhc3Mgbm9fdGhyZWFkX2V4aXRfcHJvdGVjdApkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dp bi9zcGF3bi5jYyBiL3dpbnN1cC9jeWd3aW4vc3Bhd24uY2MKaW5kZXggOTA1ZDk0OWZjLi44ZTcw MDM1NGEgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vc3Bhd24uY2MKKysrIGIvd2luc3VwL2N5 Z3dpbi9zcGF3bi5jYwpAQCAtODQsNyArODQsNyBAQCBwZXJoYXBzX3N1ZmZpeCAoY29uc3QgY2hh ciAqcHJvZywgcGF0aF9jb252JiBidWYsIGludCYgZXJyLCB1bnNpZ25lZCBvcHQpCiAgICBJZiB0 aGUgZmlsZSBpcyBub3QgZm91bmQgYW5kICFGRV9OTkYgdGhlbiB0aGUgUE9TSVggdmVyc2lvbiBv ZiBuYW1lIGlzCiAgICBwbGFjZWQgaW4gYnVmIGFuZCByZXR1cm5lZC4gIE90aGVyd2lzZSB0aGUg Y29udGVudHMgb2YgYnVmIGlzIHVuZGVmaW5lZAogICAgYW5kIE5VTEwgaXMgcmV0dXJuZWQuICAq LwotY29uc3QgY2hhciAqIF9fcmVnMworY29uc3QgY2hhciAqCiBmaW5kX2V4ZWMgKGNvbnN0IGNo YXIgKm5hbWUsIHBhdGhfY29udiYgYnVmLCBjb25zdCBjaGFyICpzZWFyY2gsCiAJICAgdW5zaWdu ZWQgb3B0LCBjb25zdCBjaGFyICoqa25vd25fc3VmZml4KQogewpkaWZmIC0tZ2l0IGEvd2luc3Vw L2N5Z3dpbi9zeW5jLmggYi93aW5zdXAvY3lnd2luL3N5bmMuaAppbmRleCBlMTFhMjI5NGIuLmQw YjQ4NzgyZCAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9zeW5jLmgKKysrIGIvd2luc3VwL2N5 Z3dpbi9zeW5jLmgKQEAgLTI0LDE3ICsyNCwxNyBAQCBwdWJsaWM6CiAgIC8vIGNsYXNzIG11dG8g Km5leHQ7CiAKICAgLyogVGhlIHJlYWwgY29uc3RydWN0b3IuICovCi0gIG11dG8gX19yZWcyICpp bml0IChjb25zdCBjaGFyICopOworICBtdXRvICppbml0IChjb25zdCBjaGFyICopOwogCiAjaWYg MAkvKiBGSVhNRTogU2VlIGNvbW1lbnQgaW4gc3luYy5jYyAqLwogICB+bXV0byAoKQogI2VuZGlm Ci0gIGludCBfX3JlZzIgYWNxdWlyZSAoRFdPUkQgbXMgPSBJTkZJTklURSk7IC8qIEFjcXVpcmUg dGhlIGxvY2suICovCi0gIGludCBfX3JlZzIgcmVsZWFzZSAoX2N5Z3RscyAqID0gJl9teV90bHMp OyAvKiBSZWxlYXNlIHRoZSBsb2NrLiAqLworICBpbnQgYWNxdWlyZSAoRFdPUkQgbXMgPSBJTkZJ TklURSk7IC8qIEFjcXVpcmUgdGhlIGxvY2suICovCisgIGludCByZWxlYXNlIChfY3lndGxzICog PSAmX215X3Rscyk7IC8qIFJlbGVhc2UgdGhlIGxvY2suICovCiAKLSAgYm9vbCBfX3JlZzEgYWNx dWlyZWQgKCk7CisgIGJvb2wgYWNxdWlyZWQgKCk7CiAgIHZvaWQgdXBmb3JncmFicyAoKSB7dGxz ID0gdGhpczt9ICAvLyBqdXN0IHNldCB0byBhbiBpbnZhbGlkIGFkZHJlc3MKLSAgdm9pZCBfX3Jl ZzEgZ3JhYiAoKTsKKyAgdm9pZCBncmFiICgpOwogICBvcGVyYXRvciBpbnQgKCkgY29uc3Qge3Jl dHVybiAhIW5hbWU7fQogfTsKIApkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9zeXNjYWxscy5j YyBiL3dpbnN1cC9jeWd3aW4vc3lzY2FsbHMuY2MKaW5kZXggYjg4ZWRkOTk4Li43ZDUzYzJhZjcg MTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vc3lzY2FsbHMuY2MKKysrIGIvd2luc3VwL2N5Z3dp bi9zeXNjYWxscy5jYwpAQCAtMTk5OCw3ICsxOTk4LDcgQEAgc3luYyAoKQogfQogCiAvKiBDeWd3 aW4gaW50ZXJuYWwgKi8KLWludCBfX3JlZzIKK2ludAogc3RhdF93b3JrZXIgKHBhdGhfY29udiAm cGMsIHN0cnVjdCBzdGF0ICpidWYpCiB7CiAgIGludCByZXMgPSAtMTsKQEAgLTQ5NjEsNyArNDk2 MSw3IEBAIHVubGlua2F0IChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxh Z3MpCiAgIHJldHVybiAtMTsKIH0KIAotc3RhdGljIGludCBfX3JlZzMKK3N0YXRpYyBpbnQKIHBp cGVfd29ya2VyIChpbnQgZmlsZWRlc1syXSwgdW5zaWduZWQgaW50IHBzaXplLCBpbnQgbW9kZSkK IHsKICAgZmhhbmRsZXJfcGlwZSAqZmhzWzJdOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi90 dHkuY2MgYi93aW5zdXAvY3lnd2luL3R0eS5jYwppbmRleCA2MGY0YTYwMmEuLjI5NTlmZTJhYiAx MDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi90dHkuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi90dHku Y2MKQEAgLTgyLDcgKzgyLDcgQEAgdHR5Ojppbml0X3Nlc3Npb24gKCkKICAgICBjeWdoZWFwLT5m ZHRhYi5nZXRfZGVidWdnZXJfaW5mbyAoKTsKIH0KIAotaW50IF9fcmVnMgoraW50CiB0dHlfbGlz dDo6YXR0YWNoIChpbnQgbikKIHsKICAgaW50IHJlczsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3 aW4vdHR5LmggYi93aW5zdXAvY3lnd2luL3R0eS5oCmluZGV4IDNhODcxMTAzOS4uYzRmMmI1ZGQ3 IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL3R0eS5oCisrKyBiL3dpbnN1cC9jeWd3aW4vdHR5 LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICB2b2lkIHNldHNpZCAocGlkX3QgdHNpZCkg e3NpZCA9IHRzaWQ7fQogICB2b2lkIGtpbGxfcGdycCAoaW50LCBwaWRfdCB0YXJnZXRfcGdpZCA9 IDApOwogICBpbnQgaXNfb3JwaGFuZWRfcHJvY2Vzc19ncm91cCAoaW50KTsKLSAgY29uc3QgX19y ZWcxIGNoYXIgKnR0eW5hbWUgKCkgX19hdHRyaWJ1dGUgKCgpKTsKKyAgY29uc3QgY2hhciAqdHR5 bmFtZSAoKSBfX2F0dHJpYnV0ZSAoKCkpOwogfTsKIAogCkBAIC04OCw3ICs4OCw3IEBAIGNsYXNz IGZoYW5kbGVyX3B0eV9tYXN0ZXI7CiAKIGNsYXNzIHR0eTogcHVibGljIHR0eV9taW4KIHsKLSAg SEFORExFIF9fcmVnMyBnZXRfZXZlbnQgKGNvbnN0IGNoYXIgKmZtdCwgUFNFQ1VSSVRZX0FUVFJJ QlVURVMgc2EsCisgIEhBTkRMRSBnZXRfZXZlbnQgKGNvbnN0IGNoYXIgKmZtdCwgUFNFQ1VSSVRZ X0FUVFJJQlVURVMgc2EsCiAJCSAgICBCT09MIG1hbnVhbF9yZXNldCA9IEZBTFNFKTsKIHB1Ymxp YzoKICAgcGlkX3QgbWFzdGVyX3BpZDsJLyogUElEIG9mIHR0eSBtYXN0ZXIgcHJvY2VzcyAqLwpA QCAtMTkxLDcgKzE5MSw3IEBAIHB1YmxpYzoKICAgaW50IGNvbm5lY3QgKGludCk7CiAgIHZvaWQg aW5pdCAoKTsKICAgdHR5X21pbiAqZ2V0X2N0dHlwICgpOwotICBpbnQgX19yZWcyIGF0dGFjaCAo aW50IG4pOworICBpbnQgYXR0YWNoIChpbnQgbik7CiAgIHN0YXRpYyB2b2lkIF9fc3RkY2FsbCBp bml0X3Nlc3Npb24gKCk7CiAgIGZyaWVuZCBjbGFzcyBsb2NrX3R0eXM7CiB9OwpkaWZmIC0tZ2l0 IGEvd2luc3VwL2N5Z3dpbi93aW5kb3cuY2MgYi93aW5zdXAvY3lnd2luL3dpbmRvdy5jYwppbmRl eCAwMDc1NDJiYWYuLjAwMjA1Mzg2OSAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi93aW5kb3cu Y2MKKysrIGIvd2luc3VwL2N5Z3dpbi93aW5kb3cuY2MKQEAgLTIxLDcgKzIxLDcgQEAgd2luaW5m byBOT19DT1BZIHdpbm1zZzsKIAogbXV0byBOT19DT1BZIHdpbmluZm86Ol9sb2NrOwogCi1pbnQg X19yZWczCitpbnQKIHdpbmluZm86OnByb2Nlc3MgKEhXTkQgaHduZCwgVUlOVCB1TXNnLCBXUEFS QU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogewogI2lmbmRlZiBOT1NUUkFDRQpAQCAtNTIsNyAr NTIsNyBAQCBwcm9jZXNzX3dpbmRvd19ldmVudHMgKEhXTkQgaHduZCwgVUlOVCB1TXNnLCBXUEFS QU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogfQogCiAvKiBIYW5kbGUgd2luZG93cyBldmVudHMu ICBJbmhlcml0cyBvd25lcnNoaXAgb2YgdGhlIHdpbmluZm8gbG9jayAqLwotRFdPUkQgX19yZWcx IFdJTkFQSQorRFdPUkQgV0lOQVBJCiB3aW5pbmZvOjp3aW50aHJlYWQgKCkKIHsKICAgTVNHIG1z ZzsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vd2luZi5oIGIvd2luc3VwL2N5Z3dpbi93aW5m LmgKaW5kZXggZTNhNjVmOGNjLi42NTFmNzhiYTIgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4v d2luZi5oCisrKyBiL3dpbnN1cC9jeWd3aW4vd2luZi5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNz IGF2CiAJY2ZyZWUgKGFyZ3YpOwogICAgICAgfQogICB9Ci0gIGludCB1bnNoaWZ0IChjb25zdCBj aGFyICp3aGF0KSBfX3JlZzI7CisgIGludCB1bnNoaWZ0IChjb25zdCBjaGFyICp3aGF0KTsKICAg b3BlcmF0b3IgY2hhciAqKigpIHtyZXR1cm4gYXJndjt9CiAgIHZvaWQgYWxsX2NhbGxvY2VkICgp IHtjYWxsb2NlZCA9IGFyZ2M7fQogICB2b2lkIHJlcGxhY2UwX21heWJlIChjb25zdCBjaGFyICph cmcwKQpAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBhdgogICAgIGNhbGxvY2VkID0gYXJnYzsKICAg fQogICBpbnQgc2V0dXAgKGNvbnN0IGNoYXIgKiwgcGF0aF9jb252JiwgY29uc3QgY2hhciAqLCBp bnQsIGNvbnN0IGNoYXIgKmNvbnN0ICosCi0JICAgICBib29sKSBfX3JlZzM7CisJICAgICBib29s KTsKIH07CiAKIGNsYXNzIGxpbmVidWYKQEAgLTY5LDExICs2OSwxMSBAQCBjbGFzcyBsaW5lYnVm CiAgcHVibGljOgogICBsaW5lYnVmICgpIDogaXggKDApLCBidWYgKE5VTEwpLCBhbGxvY2VkICgw KSB7fQogICB+bGluZWJ1ZiAoKSB7aWYgKGJ1ZikgZnJlZSAoYnVmKTt9Ci0gIHZvaWQgX19yZWcz IGFkZCAoY29uc3QgY2hhciAqLCBpbnQpOworICB2b2lkIGFkZCAoY29uc3QgY2hhciAqLCBpbnQp OwogICB2b2lkIGFkZCAoY29uc3QgY2hhciAqd2hhdCkge2FkZCAod2hhdCwgc3RybGVuICh3aGF0 KSk7fQogICB2b2lkIHByZXBlbmQgKGNvbnN0IGNoYXIgKiwgaW50KTsKLSAgdm9pZCBfX3JlZzIg ZmluaXNoIChib29sKTsKLSAgYm9vbCBfX3JlZzMgZnJvbWFyZ3YoYXYmLCBjb25zdCBjaGFyICos IGJvb2wpOzsKKyAgdm9pZCBmaW5pc2ggKGJvb2wpOworICBib29sIGZyb21hcmd2KGF2JiwgY29u c3QgY2hhciAqLCBib29sKTs7CiAgIG9wZXJhdG9yIHNpemVfdCAoKSBjb25zdCB7IHJldHVybiBp eCArIDE7IH0KICAgb3BlcmF0b3IgY29uc3QgY2hhciAqICgpIGNvbnN0IHsgcmV0dXJuIGJ1Zjsg fQogICBvcGVyYXRvciB3Y2hhcl90ICogKCkKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vd2lu aW5mby5oIGIvd2luc3VwL2N5Z3dpbi93aW5pbmZvLmgKaW5kZXggMTkzZWI2YWRkLi45ZGZiYTFh OGMgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vd2luaW5mby5oCisrKyBiL3dpbnN1cC9jeWd3 aW4vd2luaW5mby5oCkBAIC0xMywxMCArMTMsMTAgQEAgY2xhc3Mgd2luaW5mbwogICBzdGF0aWMg bXV0byBfbG9jazsKIHB1YmxpYzoKICAgb3BlcmF0b3IgSFdORCAoKTsKLSAgaW50IF9fcmVnMyBw cm9jZXNzIChIV05ELCBVSU5ULCBXUEFSQU0sIExQQVJBTSk7CisgIGludCBwcm9jZXNzIChIV05E LCBVSU5ULCBXUEFSQU0sIExQQVJBTSk7CiAgIHZvaWQgbG9jayAoKTsKICAgdm9pZCByZWxlYXNl ICgpOwotICBEV09SRCBfX3JlZzEgV0lOQVBJIHdpbnRocmVhZCAoKTsKKyAgRFdPUkQgV0lOQVBJ IHdpbnRocmVhZCAoKTsKIH07CiAKIGV4dGVybiB3aW5pbmZvIHdpbm1zZzsKZGlmZiAtLWdpdCBh L3dpbnN1cC9jeWd3aW4vd2luc3VwLmggYi93aW5zdXAvY3lnd2luL3dpbnN1cC5oCmluZGV4IDZk ODE3ZjQ5Zi4uODdhYTVlZjhkIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL3dpbnN1cC5oCisr KyBiL3dpbnN1cC9jeWd3aW4vd2luc3VwLmgKQEAgLTc5LDcgKzc5LDYgQEAgdWludDMyX3QgY3ln d2luX2luZXRfYWRkciAoY29uc3QgY2hhciAqY3ApOwogI2lmZGVmIF9fY3BsdXNwbHVzCiAKICNp bmNsdWRlICJ3aW5jYXAuaCIKLSNpbmNsdWRlICJyZWdwYXJtLmgiCiAKIGV4dGVybiBjb25zdCB1 bnNpZ25lZCBjaGFyIGNhc2VfZm9sZGVkX2xvd2VyW107CiAjZGVmaW5lIGN5Z190b2xvd2VyKGMp ICgoY2hhcikgY2FzZV9mb2xkZWRfbG93ZXJbKHVuc2lnbmVkIGNoYXIpKGMpXSkKQEAgLTE2Miw3 ICsxNjEsNyBAQCBleHRlcm4gIkMiIHZvaWQgX3BlaTM4Nl9ydW50aW1lX3JlbG9jYXRvciAocGVy X3Byb2Nlc3MgKik7CiBleHRlcm4gIkMiIGludCBkbGxfbm9uY3lnd2luX2RsbGNydDAgKEhNT0RV TEUsIHBlcl9wcm9jZXNzICopOwogI2VuZGlmIC8qIF9faTM4Nl9fICovCiAKLXZvaWQgX19yZWcx IGRvX2V4aXQgKGludCkgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7Cit2b2lkIGRvX2V4aXQg KGludCkgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7CiAKIC8qIGxpYnN0ZGMrKyBtYWxsb2Mg b3BlcmF0b3Igd3JhcHBlciBzdXBwb3J0LiAgKi8KIGV4dGVybiBzdHJ1Y3QgcGVyX3Byb2Nlc3Nf Y3h4X21hbGxvYyBkZWZhdWx0X2N5Z3dpbl9jeHhfbWFsbG9jOwpAQCAtMTkxLDEzICsxOTAsMTMg QEAgY29uc3QgY2hhciAqZmluZF9maXJzdF9ub3Rsb2FkZWRfZGxsIChjbGFzcyBwYXRoX2NvbnYg Jik7CiB2b2lkIF9fc3RkY2FsbCBzZXRfc3RkX2hhbmRsZSAoaW50KTsKIGludCBfX3N0ZGNhbGwg c3RhdF9kZXYgKERXT1JELCBpbnQsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCBzdGF0ICopOwogCi1p bm9fdCBfX3JlZzIgaGFzaF9wYXRoX25hbWUgKGlub190IGhhc2gsIFBVTklDT0RFX1NUUklORyBu YW1lKTsKLWlub190IF9fcmVnMiBoYXNoX3BhdGhfbmFtZSAoaW5vX3QgaGFzaCwgUENXU1RSIG5h bWUpOwotaW5vX3QgX19yZWcyIGhhc2hfcGF0aF9uYW1lIChpbm9fdCBoYXNoLCBjb25zdCBjaGFy ICpuYW1lKTsKLXZvaWQgX19yZWcyIG5vZmluYWxzbGFzaCAoY29uc3QgY2hhciAqc3JjLCBjaGFy ICpkc3QpOworaW5vX3QgaGFzaF9wYXRoX25hbWUgKGlub190IGhhc2gsIFBVTklDT0RFX1NUUklO RyBuYW1lKTsKK2lub190IGhhc2hfcGF0aF9uYW1lIChpbm9fdCBoYXNoLCBQQ1dTVFIgbmFtZSk7 Citpbm9fdCBoYXNoX3BhdGhfbmFtZSAoaW5vX3QgaGFzaCwgY29uc3QgY2hhciAqbmFtZSk7Cit2 b2lkIG5vZmluYWxzbGFzaCAoY29uc3QgY2hhciAqc3JjLCBjaGFyICpkc3QpOwogCi12b2lkIF9f cmVnMyAqaG9va19vcl9kZXRlY3RfY3lnd2luIChjb25zdCBjaGFyICosIGNvbnN0IHZvaWQgKiwg V09SRCYsIEhBTkRMRSBoID0gTlVMTCk7Ci12b2lkIF9fcmVnMyAqaG9va19hcGkgKGNvbnN0IGNo YXIgKm1uYW1lLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCB2b2lkICpmbik7Cit2b2lkICpob29r X29yX2RldGVjdF9jeWd3aW4gKGNvbnN0IGNoYXIgKiwgY29uc3Qgdm9pZCAqLCBXT1JEJiwgSEFO RExFIGggPSBOVUxMKTsKK3ZvaWQgKmhvb2tfYXBpIChjb25zdCBjaGFyICptbmFtZSwgY29uc3Qg Y2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqZm4pOwogCiAvKiBUaW1lIHJlbGF0ZWQgKi8KIHZvaWQg X19zdGRjYWxsIHRvdGltZXZhbCAoc3RydWN0IHRpbWV2YWwgKiwgUExBUkdFX0lOVEVHRVIsIGlu dCwgaW50KTsKQEAgLTIyNSw5ICsyMjQsOSBAQCBib29sIGNoaWxkX2NvcHkgKEhBTkRMRSwgYm9v bCwgYm9vbCwgLi4uKTsKIAogY2xhc3MgcGF0aF9jb252OwogCi1pbnQgX19yZWcyIHN0YXRfd29y a2VyIChwYXRoX2NvbnYgJnBjLCBzdHJ1Y3Qgc3RhdCAqYnVmKTsKK2ludCBzdGF0X3dvcmtlciAo cGF0aF9jb252ICZwYywgc3RydWN0IHN0YXQgKmJ1Zik7CiAKLWlub190IF9fcmVnMiByZWFkZGly X2dldF9pbm8gKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wgZG90X2RvdCk7Citpbm9fdCByZWFkZGly X2dldF9pbm8gKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wgZG90X2RvdCk7CiAKIC8qIG1tYXAgZnVu Y3Rpb25zLiAqLwogZW51bSBtbWFwX3JlZ2lvbl9zdGF0dXMKLS0gCjIuMzYuMQoK --------------CJYWQr1WF4psbWXoIKnwLvAS--