From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-oln040092071080.outbound.protection.outlook.com [40.92.71.80]) by sourceware.org (Postfix) with ESMTPS id 9258D385DC00 for ; Sat, 4 Apr 2020 19:50:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 9258D385DC00 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=hotmail.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=bernd.edlinger@hotmail.de ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NM8KwxUhjvsS8qmnZcHcuSP2c/vYF82YBOqZzCCYDqb7mkofoojeL41AvSEj0PVKDSRHBVNwWr+KbFUsA8EcbdwFXlbfr5PvLFvMM/hXDj++u+5ZqiMATBvzOpEEeuPY8ZdXrikOPZ9Mt/hTlBr3sY56Cl08aCw4c2icjT5bB36/e+Q2citYEHs0pudpgLZ6yOCFahN5L3zwTqYV8Wv1Jws5kD8DMBw7fP7KYRJG+Kb8s6H01QdIQNuMBb7vQqMMFMvmnxVFc0Kj1vPMguIbvqopviJX2RpvCggY/3CFk46uNsZ/CyCx2CbZ4ZK8CPtDc0wqb5jKtnUhjAMwH0U7AA== 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-SenderADCheck; bh=+FSaIfptKgNkIYUjJ3B3CNyWxAm/al+Rg8jwA7ePQ5Q=; b=LRS43gasnMkX6MD9RCzuQ0+CiG8IPgVyba2ToZAExCdGyqIl3b8bq8lNK3AhrBmT19VOPdXJ4d+0vyH5TULnG4Ixks93aKV3EgZbUBokUT87+f3ukjRBcFA4mEjMn5pVyQ/Ox83xkVr9T7k4pOnFNubo8knICSpYGwvvrdp4DRibtRRYphXJ8A4PVFhHHblISVqnUAbyJOdMfKdKszfRzv26hepG5+9BI2KCO54SWy8ej7V/ZKMGe1OVO9DQkYop6pFnYTkQd1dddc3ihUiRuPq8bq40aOfhUmpeDpLupky6slT4r0eknBjVZlEOW+BNkOuUmHETpXWZvQJV31OF4A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hotmail.de; dmarc=pass action=none header.from=hotmail.de; dkim=pass header.d=hotmail.de; arc=none Received: from VE1EUR03FT013.eop-EUR03.prod.protection.outlook.com (2a01:111:e400:7e09::4d) by VE1EUR03HT037.eop-EUR03.prod.protection.outlook.com (2a01:111:e400:7e09::358) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2856.17; Sat, 4 Apr 2020 19:50:23 +0000 Received: from AM6PR03MB5170.eurprd03.prod.outlook.com (2a01:111:e400:7e09::50) by VE1EUR03FT013.mail.protection.outlook.com (2a01:111:e400:7e09::293) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2856.17 via Frontend Transport; Sat, 4 Apr 2020 19:50:23 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:6B95A637E14EF618D8A1D2C98A16E0041F2F309378294599EEEDB2C48C0FEB3A; UpperCasedChecksum:382F6F74E4405A45E7C3CA9FD35898674C492FE4F26A347EDC9A27A07A5A8303; SizeAsReceived:7905; Count:46 Received: from AM6PR03MB5170.eurprd03.prod.outlook.com ([fe80::d57:5853:a396:969d]) by AM6PR03MB5170.eurprd03.prod.outlook.com ([fe80::d57:5853:a396:969d%7]) with mapi id 15.20.2878.018; Sat, 4 Apr 2020 19:50:23 +0000 From: Bernd Edlinger Subject: [PATCHv5] Fix range end handling of inlined subroutines To: "gdb-patches@sourceware.org" , Andrew Burgess , Luis Machado , Tom Tromey Message-ID: Date: Sat, 4 Apr 2020 21:50:21 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 Content-Type: multipart/mixed; boundary="------------FD069BB3E8F1ACC2E87D02DA" Content-Language: en-US X-ClientProxiedBy: AM4PR05CA0009.eurprd05.prod.outlook.com (2603:10a6:205::22) To AM6PR03MB5170.eurprd03.prod.outlook.com (2603:10a6:20b:ca::23) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.1.101] (92.77.140.102) by AM4PR05CA0009.eurprd05.prod.outlook.com (2603:10a6:205::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2856.20 via Frontend Transport; Sat, 4 Apr 2020 19:50:22 +0000 X-Microsoft-Original-Message-ID: X-TMN: [2DwoOjLNt2mj0kZ25iqP0IWE7+y9CHFX] X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 46 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: e7d65500-892f-480b-cb32-08d7d8d16989 X-MS-TrafficTypeDiagnostic: VE1EUR03HT037: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uSAxhSjWGks21mNBhTodSRRi+zW49sS30vwrUq3TXvxtIF6hfZnFVnOUUDVUnLLdMQWmxcCBxNahD/xw1mPsHy4IL72jZYUn8sWaWs0hkAFgm3JoEOO4fW4n5d6CIR+kfW4Pt4ZccRMUg4XR93nyjj0f5cJqi8BdWAzqguQtOqTLmqXCXjlPanq8zngIhvBV3f16pYeiT+VHK7X42mPpy2Ptk00i1BQzZk84kKwiPaY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:0; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR03MB5170.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:; DIR:OUT; SFP:1901; X-MS-Exchange-AntiSpam-MessageData: 8SErHNLihLVYcqO0WCXuM9jM/oFGoremve96pHHJt/WQ+HvdAqumyY3G6sH+D4rYnt3VDf2/+p3Mt9MvDHjfuctJ7bwaayDpz+iofK8V+JKs7SxGiPj+K70DPKRUbT804xHj45RFKf3Vb29h5eRCPg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e7d65500-892f-480b-cb32-08d7d8d16989 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Apr 2020 19:50:23.2004 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1EUR03HT037 X-Spam-Status: No, score=-17.0 required=5.0 tests=BAYES_00, FORGED_MUA_MOZILLA, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_DMARC_STATUS, KAM_SHORT, MSGID_FROM_MTA_HEADER, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 04 Apr 2020 19:50:29 -0000 --------------FD069BB3E8F1ACC2E87D02DA Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Hi, this is an updated version of my patch that was originally only intended to fix the issues with inline functions in the same file. That needed re-basing anyway, because of a merge conflict. I removed the code that does the special handling of end sequence markers in record_line now, since it seems to cause more problems than it solves. I believe it will fix the regression that Louis pointed out, and should fix the regression that Andrew wanted to fix with his patch: [PATCH 2/2] gdb: Preserve is-stmt lines when switch between files https://marc.info/?l=gdb-patches&m=158595247916817&w=2 So I hope that will not be necessary after this. There is a theoretic issue with line numbers at the end of a function, these could coincidentally have the same PC as the following function. That might need more work to solve that, in the moment I have not yet looked at tracking that down. Thanks Bernd. --------------FD069BB3E8F1ACC2E87D02DA Content-Type: text/x-patch; name="0001-Fix-range-end-handling-of-inlined-subroutines.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Fix-range-end-handling-of-inlined-subroutines.patch" RnJvbSAzMzBlYWRmNGI0MmU0NGJmYTgyYzMwYTZiZGEyMTM5M2ZhNGE1NGM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJuZCBFZGxpbmdlciA8YmVybmQuZWRsaW5nZXJAaG90bWFp bC5kZT4KRGF0ZTogU3VuLCA5IEZlYiAyMDIwIDIxOjEzOjE3ICswMTAwClN1YmplY3Q6IFtQQVRD SF0gRml4IHJhbmdlIGVuZCBoYW5kbGluZyBvZiBpbmxpbmVkIHN1YnJvdXRpbmVzCgpTaW5jZSB0 aGUgaXNfc3RtdCBpcyBub3cgaGFuZGxlZCwgaXQgYmVjb21lcwpwb3NzaWJsZSB0byBsb2NhdGUg ZHViaW91cyBpc19zdG10IGxpbmUgZW50cmllcwphdCB0aGUgZW5kIG9mIGFuIGlubGluZWQgZnVu Y3Rpb24sIGV2ZW4gaWYgdGhlCmNhbGxlZCBpbmxpbmUgZnVuY3Rpb24gaXMgaW4gdGhlIHNhbWUg c3ViZmlsZS4KCldoZW4gdGhlcmUgaXMgYSBzZXF1ZW5jZSBvZiBsaW5lIGVudHJpZXMgYXQgdGhl CnNhbWUgYWRkcmVzcyB3aGVyZSBhbiBpbmxpbmUgcmFuZ2UgZW5kcywgYW5kIHRoZQpsYXN0IGl0 ZW0gaGFzIGlzX3N0bXQgPSAwLCB3ZSBmb3JjZSBhbGwgcHJldmlvdXMKaXRlbXMgdG8gaGF2ZSBp c19zdG10ID0gMCBhcyB3ZWxsLgoKSWYgdGhlIGxhc3QgbGluZSBhdCB0aGF0IGFkZHJlc3MgaGFz IGlzX3N0bXQgPSAxLAp0aGVyZSBpcyBubyBuZWVkIHRvIGNoYW5nZSBhbnl0aGluZywgc2luY2Ug YSBzdGVwCm92ZXIgd2lsbCBhbHdheXMgc3RvcCBhdCB0aGF0IGxhc3QgbGluZSBmcm9tIHRoZQpz YW1lIGFkZHJlc3MsIHdoaWNoIGlzIGZpbmUsIHNpbmNlIGl0IGlzIG91dHNpZGUKdGhlIHN1YnJv dXRpbmUuCgpXaXRoIHRoaXMgY2hhbmdlIHdlIGxvb3NlIHRoZSBhYmlsaXR5IHRvIHNldApicmVh a3BvaW50cyBvbiBzb21lIGxpbmVzIHVzaW5nIGZpbGU6bGluZSBzeW50YXgsCmJ1dCB0aGUgZGF0 YSBpcyBub3QgY29tcGxldGVseSBsb3N0LCBhcyB0aGUKbGluZSB0YWJsZSBpcyBzdGlsbCBob2xk aW5nIHRob3NlIGxpbmVzLCBqdXN0CndpdGggdGhlIGlzX3N0bXQgZmxhZyByZXNldC4KClRoaXMg aXMgbmVjZXNzYXJ5IGFzIGJyZWFrcG9pbnRzIG9uIHRoZXNlIGxpbmVzCmFyZSBwcm9ibGVtYXRp YywgYXMgdGhlIGNhbGwgc3RhY2sgaXMgb2Z0ZW4Kd3JvbmcuICBGcm9tIHRoZSBibG9jayBpbmZv IHRoZXkgYXBwZWFyIHRvIGJlCmxvY2F0ZWQgaW4gdGhlIGNhbGxlciwgYnV0IHRoZXkgYXJlIGFj dHVhbGx5IG1lYW50CnRvIGJlIHBhcnQgb2YgdGhlIHN1YnJvdXRpbmUsIHRoZXJlZm9yZSB1c3Vh bGx5IG9uZQpmcmFtZSBpcyBtaXNzaW5nIGZyb20gdGhlIGNhbGxzdGFjayB3aGVuIHRoZQpleGVj dXRpb24gc3RvcHMgdGhlcmUuCgpUaGlzIGlzIGFib3V0IHRoZSBiZXN0IHdlIGNhbiBkbyBhdCB0 aGUgbW9tZW50LAp1bmxlc3MgbG9jYXRpb24gdmlldyBpbmZvcm1hdGlvbiBhcmUgYWRkZWQgdG8g dGhlCmJsb2NrIHJhbmdlcyBkZWJ1ZyBpbmZvIHN0cnVjdHVyZSwgYW5kIGxvY2F0aW9uCnZpZXdz IGFyZSBpbXBsZW1lbnRlZCBpbiBnZGIgaW4gZ2VuZXJhbC4KCmdkYjoKMjAyMC0wNC0wNCAgQmVy bmQgRWRsaW5nZXIgIDxiZXJuZC5lZGxpbmdlckBob3RtYWlsLmRlPgoKCSogYnVpbGRzeW0uYyAo YnVpbGRzeW1fY29tcHVuaXQ6OnJlY29yZF9saW5lKTogUmVtb3ZlIGxpbmUgZGVsZXRpb24KCWF0 IGVuZCBzZXF1ZW5jZSBtYXJrZXIuCgkoYnVpbGRzeW1fY29tcHVuaXQ6OnJlY29yZF9pbmxpbmVf cmFuZ2VfZW5kLAoJcGF0Y2hfaW5saW5lX2VuZF9wb3MpOiBOZXcgaGVscGVyIGZ1bmN0aW9ucy4K CShidWlsZHN5bV9jb21wdW5pdDo6ZW5kX3N5bXRhYl93aXRoX2Jsb2NrdmVjdG9yKTogUGF0Y2gg bGluZSB0YWJsZS4KCShidWlsZHN5bV9jb21wdW5pdDo6fmJ1aWxkc3ltX2NvbXB1bml0KTogQ2xl YW51cCBtX2lubGluZV9lbmRfdmVjdG9yLgoJKiBidWlsZHN5bS5oIChidWlsZHN5bV9jb21wdW5p dDo6cmVjb3JkX2lubGluZV9yYW5nZV9lbmQpOiBEZWNsYXJlLgoJKGJ1aWxkc3ltX2NvbXB1bml0 OjptX2lubGluZV9lbmRfdmVjdG9yLAoJYnVpbGRzeW1fY29tcHVuaXQ6Om1faW5saW5lX2VuZF92 ZWN0b3JfbGVuZ3RoLAoJYnVpbGRzeW1fY29tcHVuaXQ6Om1faW5saW5lX2VuZF92ZWN0b3Jfbml0 ZW1zKTogTmV3IGRhdGEgaXRlbXMuCgkqIGR3YXJmMi9yZWFkLmMgKGR3YXJmMl9ybmdsaXN0c19w cm9jZXNzLAoJZHdhcmYyX3Jhbmdlc19wcm9jZXNzKTogRG9uJ3QgaWdub3JlIGVtcHR5IHJhbmdl cyBoZXJlLgoJKGR3YXJmMl9yYW5nZXNfcmVhZCk6IElnbm9yZSBlbXB0eSByYW5nZXMgaGVyZS4K CShkd2FyZjJfcmVjb3JkX2Jsb2NrX3Jhbmdlcyk6IFBhc3MgZW5kIG9mIHJhbmdlIFBDIHRvCgly ZWNvcmRfaW5saW5lX3JhbmdlX2VuZCBmb3IgaW5saW5lIGZ1bmN0aW9ucy4KCmdkYi90ZXN0c3Vp dGU6CjIwMjAtMDQtMDQgIEJlcm5kIEVkbGluZ2VyICA8YmVybmQuZWRsaW5nZXJAaG90bWFpbC5k ZT4KCgkqIGdkYi5jcC9zdGVwLWFuZC1uZXh0LWlubGluZS5leHA6IEFkanVzdCB0ZXN0LgotLS0K IGdkYi9idWlsZHN5bS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDExNSArKysr KysrKysrKysrKysrKysrKy0tLS0tLQogZ2RiL2J1aWxkc3ltLmggICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDExICsrKwogZ2RiL2R3YXJmMi9yZWFkLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIyICsrKy0tCiBnZGIvdGVzdHN1aXRlL2dkYi5jcC9zdGVwLWFuZC1u ZXh0LWlubGluZS5leHAgfCAgMTcgLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9u cygrKSwgNTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkc3ltLmMgYi9nZGIv YnVpbGRzeW0uYwppbmRleCBmZTA3MTAzLi5lNmU3NDM3IDEwMDY0NAotLS0gYS9nZGIvYnVpbGRz eW0uYworKysgYi9nZGIvYnVpbGRzeW0uYwpAQCAtMTEzLDYgKzExMyw4IEBAIHN0cnVjdCBwZW5k aW5nX2Jsb2NrCiAgICAgICBuZXh0MSA9IG5leHQtPm5leHQ7CiAgICAgICB4ZnJlZSAoKHZvaWQg KikgbmV4dCk7CiAgICAgfQorCisgIHhmcmVlIChtX2lubGluZV9lbmRfdmVjdG9yKTsKIH0KIAog c3RydWN0IG1hY3JvX3RhYmxlICoKQEAgLTY5MSwzMSArNjkzLDYgQEAgc3RydWN0IGJsb2NrdmVj dG9yICoKIAkJICAgICAgKiBzaXplb2YgKHN0cnVjdCBsaW5ldGFibGVfZW50cnkpKSkpOwogICAg IH0KIAotICAvKiBUaGUgZW5kIG9mIHNlcXVlbmNlIG1hcmtlciBpcyBzcGVjaWFsLiAgV2UgbmVl ZCB0byByZXNldCB0aGUKLSAgICAgaXNfc3RtdCBmbGFnIG9uIHByZXZpb3VzIGxpbmVzIGF0IHRo ZSBzYW1lIFBDLCBvdGhlcndpc2UgdGhlc2UKLSAgICAgbGluZXMgbWF5IGNhdXNlIHByb2JsZW1z IHNpbmNlIHRoZXkgbWlnaHQgYmUgYXQgdGhlIHNhbWUgYWRkcmVzcwotICAgICBhcyB0aGUgZm9s bG93aW5nIGZ1bmN0aW9uLiAgRm9yIGluc3RhbmNlIHN1cHBvc2UgYSBmdW5jdGlvbiBjYWxscwot ICAgICBhYm9ydCB0aGVyZSBpcyBubyByZWFzb24gdG8gZW1pdCBhIHJldCBhZnRlciB0aGF0IHBv aW50IChubyBqb2tlKS4KLSAgICAgU28gdGhlIGxhYmVsIG1heSBiZSBhdCB0aGUgc2FtZSBhZGRy ZXNzIHdoZXJlIHRoZSBmb2xsb3dpbmcKLSAgICAgZnVuY3Rpb24gYmVnaW5zLiAgQSBzaW1pbGFy IHByb2JsZW0gYXBwZWFycyBpZiBhIGxhYmVsIGlzIGF0IHRoZQotICAgICBzYW1lIGFkZHJlc3Mg d2hlcmUgYW4gaW5saW5lIGZ1bmN0aW9uIGVuZHMgd2UgY2Fubm90IHJlbGlhYmx5IHRlbGwKLSAg ICAgaWYgdGhpcyBpcyBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIGlubGluZSBmdW5jdGlvbiBvciB0 aGUgY2FsbGluZwotICAgICBwcm9ncmFtIG9yIGV2ZW4gdGhlIG5leHQgaW5saW5lIGZ1bmN0aW9u LCBzbyBzdGFjayB0cmFjZXMgbWF5Ci0gICAgIGdpdmUgc3VycHJpc2luZyByZXN1bHRzLiAgRXhw ZWN0IGdkYi5jcC9zdGVwLWFuZC1uZXh0LWlubGluZS5leHAKLSAgICAgdG8gZmFpbCBpZiB0aGVz ZSBsaW5lcyBhcmUgbm90IG1vZGlmaWVkIGhlcmUuICAqLwotICBpZiAobGluZSA9PSAwICYmIHN1 YmZpbGUtPmxpbmVfdmVjdG9yLT5uaXRlbXMgPiAwKQotICAgIHsKLSAgICAgIGUgPSBzdWJmaWxl LT5saW5lX3ZlY3Rvci0+aXRlbSArIHN1YmZpbGUtPmxpbmVfdmVjdG9yLT5uaXRlbXM7Ci0gICAg ICBkbwotCXsKLQkgIGUtLTsKLQkgIGlmIChlLT5wYyAhPSBwYyB8fCBlLT5saW5lID09IDApCi0J ICAgIGJyZWFrOwotCSAgZS0+aXNfc3RtdCA9IDA7Ci0JfQotICAgICAgd2hpbGUgKGUgPiBzdWJm aWxlLT5saW5lX3ZlY3Rvci0+aXRlbSk7Ci0gICAgfQotCiAgIGUgPSBzdWJmaWxlLT5saW5lX3Zl Y3Rvci0+aXRlbSArIHN1YmZpbGUtPmxpbmVfdmVjdG9yLT5uaXRlbXMrKzsKICAgZS0+bGluZSA9 IGxpbmU7CiAgIGUtPmlzX3N0bXQgPSBpc19zdG10ID8gMSA6IDA7CkBAIC03MjMsNiArNzAwLDkw IEBAIHN0cnVjdCBibG9ja3ZlY3RvciAqCiB9CiAKIAwKKy8qIFJlY29yZCBhIFBDIHdoZXJlIGEg aW5saW5lZCBzdWJyb3V0aW5lIGVuZHMuICAqLworCit2b2lkCitidWlsZHN5bV9jb21wdW5pdDo6 cmVjb3JkX2lubGluZV9yYW5nZV9lbmQgKENPUkVfQUREUiBlbmQpCit7CisgIC8qIFRoZSBwZXJm b3JtYW5jZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHZlcnkgaW1wb3J0YW50LAorICAgICBpdCBzaGFs bCBiZSBPKG4qbG9nKG4pKSB0aGVyZWZvcmUgd2UgZG8gbm90IHVzZSBzdGQ6OnZlY3RvcgorICAg ICBoZXJlIHNpbmNlIHNvbWUgY29tcGlsZXJzLCBlLmcuIHZpc3VhbCBzdHVkaW8sIGRvIG5vdAor ICAgICBndWFyYW50ZWUgdGhhdCBmb3IgdmVjdG9yOjpwdXNoX2JhY2suICAqLworICBpZiAobV9p bmxpbmVfZW5kX3ZlY3RvciA9PSBudWxscHRyKQorICAgIHsKKyAgICAgIG1faW5saW5lX2VuZF92 ZWN0b3JfbGVuZ3RoID0gSU5JVElBTF9MSU5FX1ZFQ1RPUl9MRU5HVEg7CisgICAgICBtX2lubGlu ZV9lbmRfdmVjdG9yID0gKENPUkVfQUREUiAqKQorCXhtYWxsb2MgKHNpemVvZiAoQ09SRV9BRERS KSAqIG1faW5saW5lX2VuZF92ZWN0b3JfbGVuZ3RoKTsKKyAgICAgIG1faW5saW5lX2VuZF92ZWN0 b3Jfbml0ZW1zID0gMDsKKyAgICB9CisgIGVsc2UgaWYgKG1faW5saW5lX2VuZF92ZWN0b3Jfbml0 ZW1zID09IG1faW5saW5lX2VuZF92ZWN0b3JfbGVuZ3RoKQorICAgIHsKKyAgICAgIG1faW5saW5l X2VuZF92ZWN0b3JfbGVuZ3RoICo9IDI7CisgICAgICBtX2lubGluZV9lbmRfdmVjdG9yID0gKENP UkVfQUREUiAqKQorCXhyZWFsbG9jICgoY2hhciAqKSBtX2lubGluZV9lbmRfdmVjdG9yLAorCQkg IHNpemVvZiAoQ09SRV9BRERSKSAqIG1faW5saW5lX2VuZF92ZWN0b3JfbGVuZ3RoKTsKKyAgICB9 CisKKyAgbV9pbmxpbmVfZW5kX3ZlY3RvclttX2lubGluZV9lbmRfdmVjdG9yX25pdGVtcysrXSA9 IGVuZDsKK30KKworDAorLyogUGF0Y2ggdGhlIGlzX3N0bXQgYml0cyBhdCB0aGUgZ2l2ZW4gaW5s aW5lIGVuZCBhZGRyZXNzLgorICAgVGhlIGxpbmUgdGFibGUgaGFzIHRvIGJlIGFscmVhZHkgc29y dGVkLiAgKi8KKworc3RhdGljIHZvaWQKK3BhdGNoX2lubGluZV9lbmRfcG9zIChzdHJ1Y3QgbGlu ZXRhYmxlICp0YWJsZSwgQ09SRV9BRERSIGVuZCkKK3sKKyAgaW50IGEgPSAyLCBiID0gdGFibGUt Pm5pdGVtcyAtIDE7CisgIHN0cnVjdCBsaW5ldGFibGVfZW50cnkgKml0ZW1zID0gdGFibGUtPml0 ZW07CisKKyAgLyogV2UgbmVlZCBhdCBsZWFzdCB0d28gaXRlbXMgd2l0aCBwYyA9IGVuZCBpbiB0 aGUgdGFibGUuCisgICAgIFRoZSBsb3dlc3QgdXNhYmxlIGl0ZW1zIGFyZSBhdCBwb3MgMCBhbmQg MSwgdGhlIGhpZ2hlc3QKKyAgICAgdXNhYmxlIGl0ZW1zIGFyZSBhdCBwb3MgYiAtIDIgYW5kIGIg LSAxLiAgKi8KKyAgaWYgKGEgPiBiIHx8IGVuZCA8IGl0ZW1zWzFdLnBjIHx8IGVuZCA+IGl0ZW1z W2IgLSAyXS5wYykKKyAgICByZXR1cm47CisKKyAgLyogTG9vayBmb3IgdGhlIGZpcnN0IGl0ZW0g d2l0aCBwYyA+IGVuZCBpbiB0aGUgcmFuZ2UgW2EsYl0uCisgICAgIFRoZSBwcmV2aW91cyBlbGVt ZW50IGhhcyBwYyA9IGVuZCBvciB0aGVyZSBpcyBubyBtYXRjaC4KKyAgICAgV2Ugc2V0IGEgPSAy LCBzaW5jZSB3ZSBuZWVkIGF0IGxlYXN0IHR3byBjb25zZWN1dGl2ZSBlbGVtZW50cworICAgICB3 aXRoIHBjID0gZW5kIHRvIGRvIGFueXRoaW5nIHVzZWZ1bC4KKyAgICAgV2Ugc2V0IGIgPSBuaXRl bXMgLSAxLCBzaW5jZSB3ZSBhcmUgbm90IGludGVyZXN0ZWQgaW4gdGhlIGxhc3QKKyAgICAgZWxl bWVudCB3aGljaCBzaG91bGQgYmUgYW4gZW5kIG9mIHNlcXVlbmNlIG1hcmtlciB3aXRoIGxpbmUg PSAwCisgICAgIGFuZCBpc19zdG10ID0gMS4gICovCisgIHdoaWxlIChhIDwgYikKKyAgICB7Cisg ICAgICBpbnQgYyA9IChhICsgYikgLyAyOworCisgICAgICBpZiAoZW5kIDwgaXRlbXNbY10ucGMp CisJYiA9IGM7CisgICAgICBlbHNlCisJYSA9IGMgKyAxOworICAgIH0KKworICBhLS07CisgIGlm IChpdGVtc1thXS5wYyAhPSBlbmQgfHwgaXRlbXNbYV0uaXNfc3RtdCkKKyAgICByZXR1cm47CisK KyAgLyogV2hlbiB0aGVyZSBpcyBhIHNlcXVlbmNlIG9mIGxpbmUgZW50cmllcyBhdCB0aGUgc2Ft ZSBhZGRyZXNzCisgICAgIHdoZXJlIGFuIGlubGluZSByYW5nZSBlbmRzLCBhbmQgdGhlIGxhc3Qg aXRlbSBoYXMgaXNfc3RtdCA9IDAsCisgICAgIHdlIGZvcmNlIGFsbCBwcmV2aW91cyBpdGVtcyB0 byBoYXZlIGlzX3N0bXQgPSAwIGFzIHdlbGwuCisgICAgIFNldHRpbmcgYnJlYWtwb2ludHMgYXQg dGhvc2UgYWRkcmVzc2VzIGlzIGN1cnJlbnRseSBub3QKKyAgICAgc3VwcG9ydGVkLCBzaW5jZSBp dCBpcyB1bmNsZWFyIGlmIHRoZSBwcmV2aW91cyBhZGRyZXNzZXMgYXJlCisgICAgIHBhcnQgb2Yg dGhlIHN1YnJvdXRpbmUgb3IgdGhlIGNhbGxpbmcgcHJvZ3JhbS4gICovCisgIGRvCisgICAgewor ICAgICAgLyogV2Ugc3RvcCBhdCB0aGUgZmlyc3QgbGluZSBlbnRyeSB3aXRoIGEgZGlmZmVyZW50 IGFkZHJlc3MsCisJIG9yIHdoZW4gd2Ugc2VlIGFuIGVuZCBvZiBzZXF1ZW5jZSBtYXJrZXIuICAq LworICAgICAgYS0tOworICAgICAgaWYgKGl0ZW1zW2FdLnBjICE9IGVuZCB8fCBpdGVtc1thXS5s aW5lID09IDApCisJYnJlYWs7CisKKyAgICAgIGl0ZW1zW2FdLmlzX3N0bXQgPSAwOworICAgIH0K KyAgd2hpbGUgKGEgPiAwKTsKK30KKworDAogLyogU3Vicm91dGluZSBvZiBlbmRfc3ltdGFiIHRv IHNpbXBsaWZ5IGl0LiAgTG9vayBmb3IgYSBzdWJmaWxlIHRoYXQKICAgIG1hdGNoZXMgdGhlIG1h aW4gc291cmNlIGZpbGUncyBiYXNlbmFtZS4gIElmIHRoZXJlIGlzIG9ubHkgb25lLCBhbmQKICAg IGlmIHRoZSBtYWluIHNvdXJjZSBmaWxlIGRvZXNuJ3QgaGF2ZSBhbnkgc3ltYm9sIG9yIGxpbmUg bnVtYmVyCkBAIC05NTYsNiArMTAxNywxMCBAQCBzdHJ1Y3QgY29tcHVuaXRfc3ltdGFiICoKIAkJ CSAgICAgIHN1YmZpbGUtPmxpbmVfdmVjdG9yLT5pdGVtCiAJCQkgICAgICArIHN1YmZpbGUtPmxp bmVfdmVjdG9yLT5uaXRlbXMsCiAJCQkgICAgICBsdGVfaXNfbGVzc190aGFuKTsKKworCSAgIGZv ciAoaW50IGkgPSAwOyBpIDwgbV9pbmxpbmVfZW5kX3ZlY3Rvcl9uaXRlbXM7IGkrKykKKwkgICAg IHBhdGNoX2lubGluZV9lbmRfcG9zIChzdWJmaWxlLT5saW5lX3ZlY3RvciwKKwkJCQkgICBtX2lu bGluZV9lbmRfdmVjdG9yW2ldKTsKIAl9CiAKICAgICAgIC8qIEFsbG9jYXRlIGEgc3ltYm9sIHRh YmxlIGlmIG5lY2Vzc2FyeS4gICovCmRpZmYgLS1naXQgYS9nZGIvYnVpbGRzeW0uaCBiL2dkYi9i dWlsZHN5bS5oCmluZGV4IGM3NjhhNGMuLjI4NDU3ODkgMTAwNjQ0Ci0tLSBhL2dkYi9idWlsZHN5 bS5oCisrKyBiL2dkYi9idWlsZHN5bS5oCkBAIC0xOTAsNiArMTkwLDggQEAgc3RydWN0IGJ1aWxk c3ltX2NvbXB1bml0CiAgIHZvaWQgcmVjb3JkX2xpbmUgKHN0cnVjdCBzdWJmaWxlICpzdWJmaWxl LCBpbnQgbGluZSwgQ09SRV9BRERSIHBjLAogCQkgICAgYm9vbCBpc19zdG10KTsKIAorICB2b2lk IHJlY29yZF9pbmxpbmVfcmFuZ2VfZW5kIChDT1JFX0FERFIgZW5kKTsKKwogICBzdHJ1Y3QgY29t cHVuaXRfc3ltdGFiICpnZXRfY29tcHVuaXRfc3ltdGFiICgpCiAgIHsKICAgICByZXR1cm4gbV9j b21wdW5pdF9zeW10YWI7CkBAIC0zOTcsNiArMzk5LDE1IEBAIHN0cnVjdCBidWlsZHN5bV9jb21w dW5pdAogCiAgIC8qIFBlbmRpbmcgc3ltYm9scyB0aGF0IGFyZSBsb2NhbCB0byB0aGUgbGV4aWNh bCBjb250ZXh0LiAgKi8KICAgc3RydWN0IHBlbmRpbmcgKm1fbG9jYWxfc3ltYm9scyA9IG51bGxw dHI7CisKKyAgLyogUGVuZGluZyBpbmxpbmUgZW5kIHJhbmdlIGFkZHJlc3Nlcy4gICovCisgIENP UkVfQUREUiAqIG1faW5saW5lX2VuZF92ZWN0b3IgPSBudWxscHRyOworCisgIC8qIE51bWJlciBv ZiBhbGxvY2F0ZWQgaW5saW5lIGVuZCByYW5nZSBhZGRyZXNzZXMuICAqLworICBpbnQgbV9pbmxp bmVfZW5kX3ZlY3Rvcl9sZW5ndGggPSAwOworCisgIC8qIE51bWJlciBvZiBwZW5kaW5nIGlubGlu ZSBlbmQgcmFuZ2UgYWRkcmVzc2VzLiAgKi8KKyAgaW50IG1faW5saW5lX2VuZF92ZWN0b3Jfbml0 ZW1zID0gMDsKIH07CiAKIAwKZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3 YXJmMi9yZWFkLmMKaW5kZXggYmNjMzExNi4uMzIxZGU5MyAxMDA2NDQKLS0tIGEvZ2RiL2R3YXJm Mi9yZWFkLmMKKysrIGIvZ2RiL2R3YXJmMi9yZWFkLmMKQEAgLTEzNTI3LDEwICsxMzUyNyw2IEBA IGNsYXNzIHByb2Nlc3NfZGllX3Njb3BlCiAJICByZXR1cm4gZmFsc2U7CiAJfQogCi0gICAgICAv KiBFbXB0eSByYW5nZSBlbnRyaWVzIGhhdmUgbm8gZWZmZWN0LiAgKi8KLSAgICAgIGlmIChyYW5n ZV9iZWdpbm5pbmcgPT0gcmFuZ2VfZW5kKQotCWNvbnRpbnVlOwotCiAgICAgICByYW5nZV9iZWdp bm5pbmcgKz0gKmJhc2U7CiAgICAgICByYW5nZV9lbmQgKz0gKmJhc2U7CiAKQEAgLTEzNjM4LDEw ICsxMzYzNCw2IEBAIGNsYXNzIHByb2Nlc3NfZGllX3Njb3BlCiAJICByZXR1cm4gMDsKIAl9CiAK LSAgICAgIC8qIEVtcHR5IHJhbmdlIGVudHJpZXMgaGF2ZSBubyBlZmZlY3QuICAqLwotICAgICAg aWYgKHJhbmdlX2JlZ2lubmluZyA9PSByYW5nZV9lbmQpCi0JY29udGludWU7Ci0KICAgICAgIHJh bmdlX2JlZ2lubmluZyArPSAqYmFzZTsKICAgICAgIHJhbmdlX2VuZCArPSAqYmFzZTsKIApAQCAt MTM2ODEsNiArMTM2NzMsMTAgQEAgY2xhc3MgcHJvY2Vzc19kaWVfc2NvcGUKICAgcmV0dmFsID0g ZHdhcmYyX3Jhbmdlc19wcm9jZXNzIChvZmZzZXQsIGN1LAogICAgIFsmXSAoQ09SRV9BRERSIHJh bmdlX2JlZ2lubmluZywgQ09SRV9BRERSIHJhbmdlX2VuZCkKICAgICB7CisgICAgICAvKiBFbXB0 eSByYW5nZSBlbnRyaWVzIGhhdmUgbm8gZWZmZWN0LiAgKi8KKyAgICAgIGlmIChyYW5nZV9iZWdp bm5pbmcgPT0gcmFuZ2VfZW5kKQorCXJldHVybjsKKwogICAgICAgaWYgKHJhbmdlc19wc3QgIT0g TlVMTCkKIAl7CiAJICBDT1JFX0FERFIgbG93cGM7CkBAIC0xMzkxOCw2ICsxMzkxNCw3IEBAIGNs YXNzIHByb2Nlc3NfZGllX3Njb3BlCiAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29i amZpbGVfYXJjaCAob2JqZmlsZSk7CiAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CiAgIHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHJfaGlnaDsKKyAgYm9vbCBpbmxpbmVkX3N1YnJvdXRpbmUgPSAoZGll LT50YWcgPT0gRFdfVEFHX2lubGluZWRfc3Vicm91dGluZSk7CiAKICAgYXR0cl9oaWdoID0gZHdh cmYyX2F0dHIgKGRpZSwgRFdfQVRfaGlnaF9wYywgY3UpOwogICBpZiAoYXR0cl9oaWdoKQpAQCAt MTM5MzMsNyArMTM5MzAsMTAgQEAgY2xhc3MgcHJvY2Vzc19kaWVfc2NvcGUKIAogCSAgbG93ID0g Z2RiYXJjaF9hZGp1c3RfZHdhcmYyX2FkZHIgKGdkYmFyY2gsIGxvdyArIGJhc2VhZGRyKTsKIAkg IGhpZ2ggPSBnZGJhcmNoX2FkanVzdF9kd2FyZjJfYWRkciAoZ2RiYXJjaCwgaGlnaCArIGJhc2Vh ZGRyKTsKLQkgIGN1LT5nZXRfYnVpbGRlciAoKS0+cmVjb3JkX2Jsb2NrX3JhbmdlIChibG9jaywg bG93LCBoaWdoIC0gMSk7CisJICBpZiAoaW5saW5lZF9zdWJyb3V0aW5lKQorCSAgICBjdS0+Z2V0 X2J1aWxkZXIgKCktPnJlY29yZF9pbmxpbmVfcmFuZ2VfZW5kIChoaWdoKTsKKwkgIGlmIChsb3cg PCBoaWdoKQorCSAgICBjdS0+Z2V0X2J1aWxkZXIgKCktPnJlY29yZF9ibG9ja19yYW5nZSAoYmxv Y2ssIGxvdywgaGlnaCAtIDEpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzk1OCw2ICsxMzk1 OCwxMCBAQCBjbGFzcyBwcm9jZXNzX2RpZV9zY29wZQogCSAgZW5kICs9IGJhc2VhZGRyOwogCSAg c3RhcnQgPSBnZGJhcmNoX2FkanVzdF9kd2FyZjJfYWRkciAoZ2RiYXJjaCwgc3RhcnQpOwogCSAg ZW5kID0gZ2RiYXJjaF9hZGp1c3RfZHdhcmYyX2FkZHIgKGdkYmFyY2gsIGVuZCk7CisJICBpZiAo aW5saW5lZF9zdWJyb3V0aW5lKQorCSAgICBjdS0+Z2V0X2J1aWxkZXIgKCktPnJlY29yZF9pbmxp bmVfcmFuZ2VfZW5kIChlbmQpOworCSAgaWYgKHN0YXJ0ID09IGVuZCkKKwkgICAgcmV0dXJuOwog CSAgY3UtPmdldF9idWlsZGVyICgpLT5yZWNvcmRfYmxvY2tfcmFuZ2UgKGJsb2NrLCBzdGFydCwg ZW5kIC0gMSk7CiAJICBibG9ja3ZlYy5lbXBsYWNlX2JhY2sgKHN0YXJ0LCBlbmQpOwogCX0pOwpk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc3RlcC1hbmQtbmV4dC1pbmxpbmUuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc3RlcC1hbmQtbmV4dC1pbmxpbmUuZXhwCmluZGV4IDM3 MzNmYTcuLmUzYTU3OTMgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3N0ZXAtYW5k LW5leHQtaW5saW5lLmV4cAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9zdGVwLWFuZC1uZXh0 LWlubGluZS5leHAKQEAgLTUyLDM3ICs1MiwyMCBAQCBwcm9jIGRvX3Rlc3QgeyB1c2VfaGVhZGVy IH0gewogICAgIGdkYl90ZXN0ICJzdGVwIiAiLioiICJzdGVwIGludG8gZ2V0X2FsaWFzX3NldCIK ICAgICBnZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccytnZXRfYWxpYXNfc2V0XFteXHJcXSoke3Ny Y2ZpbGV9Oi4qIiBcCiAJIm5vdCBpbiBpbmxpbmUgMSIKLSAgICAjIEl0J3MgcG9zc2libGUgdGhh dCB0aGlzIGZpcnN0IGZhaWx1cmUgKHdoZW4gbm90IHVzaW5nIGEgaGVhZGVyCi0gICAgIyBmaWxl KSBpcyBHQ0MncyBmYXVsdCwgdGhvdWdoIHRoZSByZW1haW5pbmcgZmFpbHVyZXMgd291bGQgYmVz dAotICAgICMgYmUgZml4ZWQgYnkgYWRkaW5nIGxvY2F0aW9uIHZpZXdzIHN1cHBvcnQgKHRob3Vn aCBpdCBjb3VsZCBiZQotICAgICMgdGhhdCBzb21lIGVhc2llciBoZXVyaXN0aWMgY291bGQgYmUg ZmlndXJlZCBvdXQpLiAgU3RpbGwsIGl0IGlzCi0gICAgIyBub3QgY2VydGFpbiB0aGF0IHRoZSBm aXJzdCBmYWlsdXJlIHdvdWxkbid0IGFsc28gYmUgZml4ZWQgYnkKLSAgICAjIGhhdmluZyBsb2Nh dGlvbiB2aWV3IHN1cHBvcnQsIHNvIGZvciBub3cgaXQgaXMgdGFnZ2VkIGFzIHN1Y2guCi0gICAg aWYgeyEkdXNlX2hlYWRlcn0geyBzZXR1cF9rZmFpbCAiKi0qLSoiIHN5bXRhYi8yNTUwNyB9CiAg ICAgZ2RiX3Rlc3QgIm5leHQiICIuKlRSRUVfVFlQRS4qIiAibmV4dCBzdGVwIDEiCiAgICAgZ2Ri X3Rlc3QgImJ0IiAiXFxzKlxcIzBcXHMrZ2V0X2FsaWFzX3NldFxbXlxyXF0qJHtzcmNmaWxlfTou KiIgXAogCSJub3QgaW4gaW5saW5lIDIiCiAgICAgZ2RiX3Rlc3QgIm5leHQiICIuKlRSRUVfVFlQ RS4qIiAibmV4dCBzdGVwIDIiCiAgICAgZ2RiX3Rlc3QgImJ0IiAiXFxzKlxcIzBcXHMrZ2V0X2Fs aWFzX3NldFxbXlxyXF0qJHtzcmNmaWxlfTouKiIgXAogCSJub3QgaW4gaW5saW5lIDMiCi0gICAg aWYgeyEkdXNlX2hlYWRlcn0geyBzZXR1cF9rZmFpbCAiKi0qLSoiIHN5bXRhYi8yNTUwNyB9CiAg ICAgZ2RiX3Rlc3QgIm5leHQiICIuKlRSRUVfVFlQRS4qIiAibmV4dCBzdGVwIDMiCiAgICAgZ2Ri X3Rlc3QgImJ0IiAiXFxzKlxcIzBcXHMrZ2V0X2FsaWFzX3NldFxbXlxyXF0qJHtzcmNmaWxlfTou KiIgXAogCSJub3QgaW4gaW5saW5lIDQiCi0gICAgaWYgeyEkdXNlX2hlYWRlcn0geyBzZXR1cF9r ZmFpbCAiKi0qLSoiIHN5bXRhYi8yNTUwNyB9CiAgICAgZ2RiX3Rlc3QgIm5leHQiICJyZXR1cm4g MC4qIiAibmV4dCBzdGVwIDQiCiAgICAgZ2RiX3Rlc3QgImJ0IiBcCiAJIlxccypcXCMwXFxzKyht YWlufGdldF9hbGlhc19zZXQpXFteXHJcXSoke3NyY2ZpbGV9Oi4qIiBcCiAJIm5vdCBpbiBpbmxp bmUgNSIKIAotICAgIGlmIHshJHVzZV9oZWFkZXJ9IHsKLQkjIFdpdGggdGhlIGRlYnVnIGZyb20g R0NDIDEwLnggKGFuZCBlYXJsaWVyKSBHREIgaXMgY3VycmVudGx5Ci0JIyB1bmFibGUgdG8gc3Vj Y2Vzc2Z1bGx5IGNvbXBsZXRlIHRoZSBmb2xsb3dpbmcgdGVzdHMgd2hlbiB3ZQotCSMgYXJlIG5v dCB1c2luZyBhIGhlYWRlciBmaWxlLgotCWtmYWlsIHN5bXRhYi8yNTUwNyAic3RlcHBpbmcgdGVz dHMiCi0JcmV0dXJuCi0gICAgfQotCiAgICAgY2xlYW5fcmVzdGFydCAke2V4ZWN1dGFibGV9CiAK ICAgICBpZiAhW3J1bnRvX21haW5dIHsKLS0gCjEuOS4xCgo= --------------FD069BB3E8F1ACC2E87D02DA--