From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2088.outbound.protection.outlook.com [40.92.90.88]) by sourceware.org (Postfix) with ESMTPS id 7240F38708E6 for ; Fri, 15 May 2020 03:35:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 7240F38708E6 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=AOxeQAFp0QZgE2JLWOgCJSAe52oC7l95dlmrfelUR5bAYZ6Dg3UCS/eq3BHe36B1kFthHZ0wl4j7Wry8g0IqDj6Zzjh6faMIn4QW9YrpVmmbQk6HguqSmUbkOdNtNxRmLc3AiIR/AoemfrD+B8aMXYZksfsEAc97Jznpjv/IX1SBUZHOHq2JDM5HYx7ZmYJ57DTgi+PbztWOoxS0lx4RzFmYYWaSFLmC+3eZIQFDr6+Y0/fB2YabyVCo7lns1PmHINXaHwx1SBbMfUclZv/Fc7200+j7RHVlk2r0VnUKSPtVd6/bUUnMhsaiCGqmyEkjtw1+bHAiJGKAq3xThETMTg== 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=o6l48Ok85b1jmrmZXKHj0H1zKMoijq52qLcl5fweklU=; b=VdAD8gnANHSLe6cPqQuow7a8WLGDdbFjVYW9HZrhwcCBk9KR+r0DrDcb/u8CTMtRKNWsB/NUl+aB7JewDoxQGwVSU/jMqslP+w5YICFAmCdFtMdyTjPsO67ZeotzNUvfQGAnFFiF9UpwiNt1b+YXor/eGcn5x3xjdXuorE7iHL9VuGhuTx6rLLdfCOwzfJl7ZHFLV5YAcVmsfsfADd+X8heSG/fFVnDBvBVSAcvqP4fLgPktgQVcisUmXm0Ocze7yVZZGrVan/4CGt1UtFz/FyDk7Ajo0uJsV9i50liQK0pNAwMJ2DgvJgO5dl99K7W5Zn4F5tH8YaYiB2OxbTjInQ== 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 DB8EUR05FT009.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc0f::46) by DB8EUR05HT209.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc0f::71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3000.19; Fri, 15 May 2020 03:35:46 +0000 Received: from AM6PR03MB5170.eurprd03.prod.outlook.com (2a01:111:e400:fc0f::4a) by DB8EUR05FT009.mail.protection.outlook.com (2a01:111:e400:fc0f::149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3000.19 via Frontend Transport; Fri, 15 May 2020 03:35:45 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:5B0C28DE1A61D96C242654D50038A91367A67CF4DF4C43D91622E573791F9087; UpperCasedChecksum:056F8614391428D763525A4565F9E3BEFA99194A4BD3867872029153AA180D51; SizeAsReceived:8576; Count:49 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.3000.022; Fri, 15 May 2020 03:35:45 +0000 Subject: Re: [PATCH 2/2] gdb: Preserve is-stmt lines when switch between files To: Andrew Burgess , Tom Tromey Cc: gdb-patches@sourceware.org, Alexandre Oliva References: <6e9b21a0002164cec014dfe4d94d816a376989b4.1585952198.git.andrew.burgess@embecosm.com> <20200414112841.GC2366@embecosm.com> <20200416171809.GJ2366@embecosm.com> <87lfmnql4g.fsf@tromey.com> <20200427103418.GF3522@embecosm.com> <87r1vmuv6j.fsf@tromey.com> <20200514223925.GS3522@embecosm.com> From: Bernd Edlinger Message-ID: Date: Fri, 15 May 2020 05:35:43 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 In-Reply-To: <20200514223925.GS3522@embecosm.com> Content-Type: multipart/mixed; boundary="------------E52C82761B422857EEA46CAF" Content-Language: en-US X-ClientProxiedBy: AM0PR07CA0008.eurprd07.prod.outlook.com (2603:10a6:208:ac::21) To AM6PR03MB5170.eurprd03.prod.outlook.com (2603:10a6:20b:ca::23) X-Microsoft-Original-Message-ID: <088a4c2f-b324-76eb-a68d-8fe9a241ff99@hotmail.de> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.1.101] (92.77.142.237) by AM0PR07CA0008.eurprd07.prod.outlook.com (2603:10a6:208:ac::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.12 via Frontend Transport; Fri, 15 May 2020 03:35:43 +0000 X-Microsoft-Original-Message-ID: <088a4c2f-b324-76eb-a68d-8fe9a241ff99@hotmail.de> X-TMN: [wdKPw0lPaNNQnA9JVJ6i3dH9msr11IEd] X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 49 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: b3a301d8-d73f-4424-8a50-08d7f8810c86 X-MS-TrafficTypeDiagnostic: DB8EUR05HT209: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Os2m+JCX0sEs57Yv7MdzA3d5v33Co+5FZZVjCCg52eEhERN6Y3UdV5BiWBlnOgdIc54rCWr0RHWkiVSCntt92MwHfYVYjrGFn2roqLgzvbcM4lMxnbQVFxpoxaoc+/oDCPQP6tZo27v5r1DiZsIIzApv32H/PWoZpzvZRimiqtB/9jPQqOWq2BjJEHp/aJ6p01VeU4YeR8iaUUCfGPcWruFcJnDwMF9jfsFIngGzo6zm7yPnuzcmqarTaN0uJJCi 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: XOov39skhdZW/6CdYRM/7HRYNy6/NB+Pr9DE99Y3AfaDJ7qwcj3W5n/E6gBj3PgpPHG9YHf3o/3U3tbCtMfxDVwP1A/IpuoT/BWQDGw0UJr0KVyM7CE6AsCYftpB8C4PEC71Uh5VgoWNvGEsYdOEMw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b3a301d8-d73f-4424-8a50-08d7f8810c86 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 May 2020 03:35:45.1641 (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: DB8EUR05HT209 X-Spam-Status: No, score=-6.2 required=5.0 tests=BAYES_00, FORGED_MUA_MOZILLA, FREEMAIL_FROM, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, MSGID_FROM_MTA_HEADER, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, 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: Fri, 15 May 2020 03:35:59 -0000 --------------E52C82761B422857EEA46CAF Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Hi Andrew, and Tom I'll try to help, if I can. I must admit I was busy with other things, so I have not much new info, but I can add my view. First I want to make you aware, of my last e-mails on this issue, I wonder if you got them. I added Alexandre Oliva who maintains the debug info in GCC to CC then, and unfortunately although I was hoping that he gives his view on this matter, I think I have not received any response from him so far. https://sourceware.org/pipermail/gdb-patches/2020-April/167933.html https://sourceware.org/pipermail/gdb-patches/2020-April/167932.html I must note that it is impossible to find out the e-mail addresses which were in CC on the mailing list archives since the unfortunate move to the new maling list archive format. But I added oliva@gnu.org in CC, probably you should do that as well, since I think we cannot get anything changed in the gcc debug output unless we can convince him about it. Andrew, as far as I remember the range info of the inlined subroutines were not correct, in your patch. GCC tells us where the code originating from the inlined code starts and ends. The byte addresses. These must be the same addresses where the line numbers switch from the calling procedure to the inlined procedure but the range info in your dwarf code is artificially and it is having start and end addresses where they should be. Can you please fix the range infos in your patch and re-post it, before we decide how to proceed? I will probably not have time to do much today, since this is my son's birthday, and I will probably bake a birthday cake instead :-) But I would say that I see a way how I can adjust my patch to fix the issues which were raised by your test case (I added the test case from your patch to mine, and most of it seems to be fine with my latest patch, one remaining issue is a bit nasty but fixable). I'll attach the patch file where I am at here, so you can see what I have now. It fails only one test case in dw2-inline-header-3.exp but I would like how it compares to your patch when Tom would like to try it out on the internal test cases, he mentioned. And, yes, of course my approach is that the debug info is not optimal at all as it is emitted by gcc, but gdb can probably work around it until it is fixed which should happen when a new updated dwarf extension is invented which tells us the view number where the inlined subroutine ends. The line table program has view numbers, but not the range info of the subroutine. That is the deficiency in the dwarf format I think causes the trouble, apart from the fact that dwarf is already too complicate to understand. I must also say, that since if I remember correctly Andrew's patch makes gdb.cp/step-and-next-inline.exp fail, I consider my attempt to make gdb work around the debug info of inlined subroutines a failure. While my patch did make gdb.cp/step-and-next-inline.exp succeed completely, also the case where the inline function is not in a header file. I must also say, and that is not because I have emotions about it, but just because I consider it the only possible option when we consider gcc's debug output format completely broken, then I will probably just send a one-line patch to gcc-patches, which reverts the default of -gstatement-frontiers, that would be safe for backporting to all active branches. And it would prevent the !is_stmt line infos completely, the debug format will then probably work as before gcc-8 implemented that for the first time. So I attached my latest patch version, together with the Test case from Andrews patch. On 5/15/20 12:39 AM, Andrew Burgess wrote: > * Tom Tromey [2020-05-14 14:18:44 -0600]: > >>>>>>> "Andrew" == Andrew Burgess writes: >> >> Resurrecting this again ... we have some internal tests that have been >> failing, and I want to land at least one of these patches to resolve >> this. >> >> Andrew> After reading[2] I'd also be interest to understand what flaw in >> Andrew> DWARF you feel makes a difference in this case. >> >> I also don't understand this. >> When you only know where an inline function ends at the byte address. You can habe line table entries at the same address from the inline funcion and from the calling function. It is impossible to distinguish between those, however there is a view number which would be different, and as Alexandre explains it, these can be consider an extension to the byte addresses, so if a range info would add a view number we would know which line infos are from the subroutine and which are not, even if the byte addresses are identical. >> Andrew> I think it is great Bernd, that you are reaching out from the GCC >> Andrew> community to engage with GDB, this is certainly the best way to ensure >> Andrew> that we can work together as communities to give the best possible >> Andrew> debug experience, and I'm sorry you feel that I have not been clear >> Andrew> enough about the issues I'm seeing here. >> >> +1 >> I still think this is possible, I think we need to understand each other better. Of course stress from release cycles might this even harder. Are we (gdb maintainers) already under stress to reach the next release version? >> Andrew> I don't know how we address this without merging your patch, >> Andrew> releasing GDB and seeing how it works in the wild. However, if we >> Andrew> did decide to "just try it", I would still prefer we staged things >> Andrew> as: >> Andrew> (a) Merge my patch, targeted regression fix, then >> Andrew> (b) Your patch, new functionality GCC/DWARF ranges work around. >> Andrew> In this way, if we end up backing out some or all of (b) we still >> Andrew> have (a) in place that fixes the regression. I'm more than happy >> Andrew> for a rebase of (b) in include full removal of (a). >> >> I think landing your patch is safe to do while we discuss part (b). >> How about we move forward with that part? Then if we come to agreement >> on where the bug lies we can decide about that. > > I agree. I already rebased this and retested it. Unless someone > shouts out between now and tomorrow I plan to merge my patch. > > Bernd (or anyone else) - I'm more than happy that if a better patch is > put forward it can revert some or all of my patch, as needed. Like > Tom, I'd like to see the regressions squashed. > No, I am not able to do this once we decide that gcc's debug info is impossible to implement, I will send a patch to the gcc-patches which restores the gcc-7 debug info. My patch was based on the assumption that there is a way to work around the issues, but if that turns out to be a failure, I will not go back and revert your patch again, since it seems to revert my work on that issue completely (see how this patch breaks the step-and-next-inline.exp test case). And once again, I feel not at all emotional, just that I want the issue fixed, and next time I will try a completely different approach which is gcc was wrong, and therefore we will revert Alexandre Oliva's patch, since it is the least effort and Alexandre already signaled he also had considered that already. Alexandre Oliva wrote on 11/19/19: https://gcc.gnu.org/pipermail/gcc-patches/2019-November/534845.html > Perhaps we should change our defaults, if the situation with GDB does > not change :-( Andrew: Have you attached your *latest* patch? Have you done the changes I requested? Thanks Bernd. --------------E52C82761B422857EEA46CAF 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" RnJvbSAxYWUwNWYxNmYyODRkMjM2N2ZjYjIzMzA3MGI4NjY0OTEzYTNiMDg2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJuZCBFZGxpbmdlciA8YmVybmQuZWRsaW5nZXJAaG90bWFp bC5kZT4KRGF0ZTogU3VuLCA5IEZlYiAyMDIwIDIxOjEzOjE3ICswMTAwClN1YmplY3Q6IFtQQVRD SCAxLzJdIEZpeCByYW5nZSBlbmQgaGFuZGxpbmcgb2YgaW5saW5lZCBzdWJyb3V0aW5lcwoKU2lu Y2UgdGhlIGlzX3N0bXQgaXMgbm93IGhhbmRsZWQsIGl0IGJlY29tZXMKcG9zc2libGUgdG8gbG9j YXRlIGR1YmlvdXMgaXNfc3RtdCBsaW5lIGVudHJpZXMKYXQgdGhlIGVuZCBvZiBhbiBpbmxpbmVk IGZ1bmN0aW9uLCBldmVuIGlmIHRoZQpjYWxsZWQgaW5saW5lIGZ1bmN0aW9uIGlzIGluIHRoZSBz YW1lIHN1YmZpbGUuCgpXaGVuIHRoZXJlIGlzIGEgc2VxdWVuY2Ugb2YgbGluZSBlbnRyaWVzIGF0 IHRoZQpzYW1lIGFkZHJlc3Mgd2hlcmUgYW4gaW5saW5lIHJhbmdlIGVuZHMsIGFuZCB0aGUKbGFz dCBpdGVtIGhhcyBpc19zdG10ID0gMCwgd2UgZm9yY2UgYWxsIHByZXZpb3VzCml0ZW1zIHRvIGhh dmUgaXNfc3RtdCA9IDAgYXMgd2VsbC4KCklmIHRoZSBsYXN0IGxpbmUgYXQgdGhhdCBhZGRyZXNz IGhhcyBpc19zdG10ID0gMSwKdGhlcmUgaXMgbm8gbmVlZCB0byBjaGFuZ2UgYW55dGhpbmcsIHNp bmNlIGEgc3RlcApvdmVyIHdpbGwgYWx3YXlzIHN0b3AgYXQgdGhhdCBsYXN0IGxpbmUgZnJvbSB0 aGUKc2FtZSBhZGRyZXNzLCB3aGljaCBpcyBmaW5lLCBzaW5jZSBpdCBpcyBvdXRzaWRlCnRoZSBz dWJyb3V0aW5lLgoKV2l0aCB0aGlzIGNoYW5nZSB3ZSBsb3NlIHRoZSBhYmlsaXR5IHRvIHNldApi cmVha3BvaW50cyBvbiBzb21lIGxpbmVzIHVzaW5nIGZpbGU6bGluZSBzeW50YXgsCmJ1dCB0aGUg ZGF0YSBpcyBub3QgY29tcGxldGVseSBsb3N0LCBhcyB0aGUKbGluZSB0YWJsZSBpcyBzdGlsbCBo b2xkaW5nIHRob3NlIGxpbmVzLCBqdXN0CndpdGggdGhlIGlzX3N0bXQgZmxhZyByZXNldC4KClRo aXMgaXMgbmVjZXNzYXJ5IGFzIGJyZWFrcG9pbnRzIG9uIHRoZXNlIGxpbmVzCmFyZSBwcm9ibGVt YXRpYywgYXMgdGhlIGNhbGwgc3RhY2sgaXMgb2Z0ZW4Kd3JvbmcuICBGcm9tIHRoZSBibG9jayBp bmZvIHRoZXkgYXBwZWFyIHRvIGJlCmxvY2F0ZWQgaW4gdGhlIGNhbGxlciwgYnV0IHRoZXkgYXJl IGFjdHVhbGx5IG1lYW50CnRvIGJlIHBhcnQgb2YgdGhlIHN1YnJvdXRpbmUsIHRoZXJlZm9yZSB1 c3VhbGx5IG9uZQpmcmFtZSBpcyBtaXNzaW5nIGZyb20gdGhlIGNhbGxzdGFjayB3aGVuIHRoZQpl eGVjdXRpb24gc3RvcHMgdGhlcmUuCgpUaGlzIGlzIGFib3V0IHRoZSBiZXN0IHdlIGNhbiBkbyBh dCB0aGUgbW9tZW50LAp1bmxlc3MgbG9jYXRpb24gdmlldyBpbmZvcm1hdGlvbiBhcmUgYWRkZWQg dG8gdGhlCmJsb2NrIHJhbmdlcyBkZWJ1ZyBpbmZvIHN0cnVjdHVyZSwgYW5kIGxvY2F0aW9uCnZp ZXdzIGFyZSBpbXBsZW1lbnRlZCBpbiBnZGIgaW4gZ2VuZXJhbC4KClRoaXMgcmVzdG9yZXMgdGhl IHByZXZpb3VzIGJlaGF2aW9yIG9mCnJlY29yZF9saW5lIHRoYXQgZGVsZXRlcyBsaW5lcyBhdCB0 aGUgZW5kIG9mCmEgZnVuY3Rpb24uCgpnZGI6CjIwMjAtMDQtMDUgIEJlcm5kIEVkbGluZ2VyICA8 YmVybmQuZWRsaW5nZXJAaG90bWFpbC5kZT4KCgkqIGJ1aWxkc3ltLmMgKGJ1aWxkc3ltX2NvbXB1 bml0OjpyZWNvcmRfbGluZSk6IERlbGV0ZQoJcHJldmlvdXMgbGluZXMgYXQgdGhlIHNhbWUgUEMg YXMgdGhlIGVuZCBzZXF1ZW5jZSBtYXJrZXIsCglidXQgZG9uJ3QgZG8gdGhhdCBmb3IgYSBmYWtl IGVuZCBzZXF1ZW5jZSBtYXJrZXIuCgkoYnVpbGRzeW1fY29tcHVuaXQ6OnJlY29yZF9pbmxpbmVf cmFuZ2VfZW5kLAoJcGF0Y2hfaW5saW5lX2VuZF9wb3MpOiBOZXcgaGVscGVyIGZ1bmN0aW9ucy4K CShidWlsZHN5bV9jb21wdW5pdDo6ZW5kX3N5bXRhYl93aXRoX2Jsb2NrdmVjdG9yKTogUGF0Y2gg bGluZSB0YWJsZS4KCShidWlsZHN5bV9jb21wdW5pdDo6fmJ1aWxkc3ltX2NvbXB1bml0KTogQ2xl YW51cCBtX2lubGluZV9lbmRfdmVjdG9yLgoJKiBidWlsZHN5bS5oIChidWlsZHN5bV9jb21wdW5p dDo6cmVjb3JkX2lubGluZV9yYW5nZV9lbmQpOiBEZWNsYXJlLgoJKGJ1aWxkc3ltX2NvbXB1bml0 OjptX2lubGluZV9lbmRfdmVjdG9yLAoJYnVpbGRzeW1fY29tcHVuaXQ6Om1faW5saW5lX2VuZF92 ZWN0b3JfbGVuZ3RoLAoJYnVpbGRzeW1fY29tcHVuaXQ6Om1faW5saW5lX2VuZF92ZWN0b3Jfbml0 ZW1zKTogTmV3IGRhdGEgaXRlbXMuCgkqIGR3YXJmMi9yZWFkLmMgKGR3YXJmMl9ybmdsaXN0c19w cm9jZXNzLAoJZHdhcmYyX3Jhbmdlc19wcm9jZXNzKTogRG9uJ3QgaWdub3JlIGVtcHR5IHJhbmdl cyBoZXJlLgoJKGR3YXJmMl9yYW5nZXNfcmVhZCk6IElnbm9yZSBlbXB0eSByYW5nZXMgaGVyZS4K CShkd2FyZjJfcmVjb3JkX2Jsb2NrX3Jhbmdlcyk6IFBhc3MgZW5kIG9mIHJhbmdlIFBDIHRvCgly ZWNvcmRfaW5saW5lX3JhbmdlX2VuZCBmb3IgaW5saW5lIGZ1bmN0aW9ucy4KCShkd2FyZl9maW5p c2hfbGluZSk6IEFkZCBuZXcgcGFyYW1ldGVyIGVuZF9zZXF1ZW5jZS4KCShsbnBfc3RhdGVfbWFj aGluZTo6cmVjb3JkX2xpbmUpOiBQYXNzIGVuZF9zZXF1ZW5jZSB0bwoJZHdhcmZfZmluaXNoX2xp bmUuCgpnZGIvdGVzdHN1aXRlOgoyMDIwLTA0LTA1ICBCZXJuZCBFZGxpbmdlciAgPGJlcm5kLmVk bGluZ2VyQGhvdG1haWwuZGU+CgoJKiBnZGIuY3Avc3RlcC1hbmQtbmV4dC1pbmxpbmUuZXhwOiBB ZGp1c3QgdGVzdC4KLS0tCiBnZGIvYnVpbGRzeW0uYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAxMTUgKysrKysrKysrKysrKysrKysrKysrKystLS0KIGdkYi9idWlsZHN5bS5oICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArKysKIGdkYi9kd2FyZjIvcmVhZC5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMCArKysrLS0tCiBnZGIvdGVzdHN1aXRl L2dkYi5jcC9zdGVwLWFuZC1uZXh0LWlubGluZS5leHAgfCAgMTcgLS0tLQogNCBmaWxlcyBjaGFu Z2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2Ri L2J1aWxkc3ltLmMgYi9nZGIvYnVpbGRzeW0uYwppbmRleCBiOWJjYzMzLi5hZTkwMTc1IDEwMDY0 NAotLS0gYS9nZGIvYnVpbGRzeW0uYworKysgYi9nZGIvYnVpbGRzeW0uYwpAQCAtMTEzLDYgKzEx Myw4IEBAIHN0cnVjdCBwZW5kaW5nX2Jsb2NrCiAgICAgICBuZXh0MSA9IG5leHQtPm5leHQ7CiAg ICAgICB4ZnJlZSAoKHZvaWQgKikgbmV4dCk7CiAgICAgfQorCisgIHhmcmVlIChtX2lubGluZV9l bmRfdmVjdG9yKTsKIH0KIAogc3RydWN0IG1hY3JvX3RhYmxlICoKQEAgLTY5MSwxOSArNjkzLDE2 IEBAIHN0cnVjdCBibG9ja3ZlY3RvciAqCiAJCSAgICAgICogc2l6ZW9mIChzdHJ1Y3QgbGluZXRh YmxlX2VudHJ5KSkpKTsKICAgICB9CiAKLSAgLyogTm9ybWFsbHksIHdlIHRyZWF0IGxpbmVzIGFz IHVuc29ydGVkLiAgQnV0IHRoZSBlbmQgb2Ygc2VxdWVuY2UKLSAgICAgbWFya2VyIGlzIHNwZWNp YWwuICBXZSBzb3J0IGxpbmUgbWFya2VycyBhdCB0aGUgc2FtZSBQQyBieSBsaW5lCi0gICAgIG51 bWJlciwgc28gZW5kIG9mIHNlcXVlbmNlIG1hcmtlcnMgKHdoaWNoIGhhdmUgbGluZSA9PSAwKSBh cHBlYXIKLSAgICAgZmlyc3QuICBUaGlzIGlzIHJpZ2h0IGlmIHRoZSBtYXJrZXIgZW5kcyB0aGUg cHJldmlvdXMgZnVuY3Rpb24sCi0gICAgIGFuZCB0aGVyZSBpcyBubyBwYWRkaW5nIGJlZm9yZSB0 aGUgbmV4dCBmdW5jdGlvbi4gIEJ1dCBpdCBpcwotICAgICB3cm9uZyBpZiB0aGUgcHJldmlvdXMg bGluZSB3YXMgZW1wdHkgYW5kIHdlIGFyZSBub3cgbWFya2luZyBhCi0gICAgIHN3aXRjaCB0byBh IGRpZmZlcmVudCBzdWJmaWxlLiAgV2UgbXVzdCBsZWF2ZSB0aGUgZW5kIG9mIHNlcXVlbmNlCi0g ICAgIG1hcmtlciBhdCB0aGUgZW5kIG9mIHRoaXMgZ3JvdXAgb2YgbGluZXMsIG5vdCBzb3J0IHRo ZSBlbXB0eSBsaW5lCi0gICAgIHRvIGFmdGVyIHRoZSBtYXJrZXIuICBUaGUgZWFzaWVzdCB3YXkg dG8gYWNjb21wbGlzaCB0aGlzIGlzIHRvCi0gICAgIGRlbGV0ZSBhbnkgZW1wdHkgbGluZXMgZnJv bSBvdXIgdGFibGUsIGlmIHRoZXkgYXJlIGZvbGxvd2VkIGJ5Ci0gICAgIGVuZCBvZiBzZXF1ZW5j ZSBtYXJrZXJzLiAgQWxsIHdlIGxvc2UgaXMgdGhlIGFiaWxpdHkgdG8gc2V0Ci0gICAgIGJyZWFr cG9pbnRzIGF0IHNvbWUgbGluZXMgd2hpY2ggY29udGFpbiBubyBpbnN0cnVjdGlvbnMKLSAgICAg YW55d2F5LiAgKi8KKyAgLyogVGhlIGVuZCBvZiBzZXF1ZW5jZSBtYXJrZXIgaXMgc3BlY2lhbC4g IFdlIG5lZWQgdG8gZGVsZXRlIGFueQorICAgICBwcmV2aW91cyBsaW5lcyBhdCB0aGUgc2FtZSBQ Qywgb3RoZXJ3aXNlIHRoZXNlIGxpbmVzIG1heSBjYXVzZQorICAgICBwcm9ibGVtcyBzaW5jZSB0 aGV5IG1pZ2h0IGJlIGF0IHRoZSBzYW1lIGFkZHJlc3MgYXMgdGhlIGZvbGxvd2luZworICAgICBm dW5jdGlvbi4gIEZvciBpbnN0YW5jZSBzdXBwb3NlIGEgZnVuY3Rpb24gY2FsbHMgYWJvcnQgdGhl cmUgaXMgbm8KKyAgICAgcmVhc29uIHRvIGVtaXQgYSByZXQgYWZ0ZXIgdGhhdCBwb2ludCAobm8g am9rZSkuCisgICAgIFNvIHRoZSBsYWJlbCBtYXkgYmUgYXQgdGhlIHNhbWUgYWRkcmVzcyB3aGVy ZSB0aGUgZm9sbG93aW5nCisgICAgIGZ1bmN0aW9uIGJlZ2lucy4gIFRoZXJlIGlzIGFsc28gYSBm YWtlIGVuZCBvZiBzZXF1ZW5jZSBtYXJrZXIgKC0xKQorICAgICB0aGF0IHdlIGVtaXQgaW50ZXJu YWxseSB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuIGRpZmZlcmVudCBDVXMKKyAgICAgSW4gdGhpcyBj YXNlLCBkdXBsaWNhdGUgbGluZSB0YWJsZSBlbnRyaWVzIHNoYWxsIG5vdCBiZSBkZWxldGVkLgor ICAgICBCdXQgdGhlIGxpbmUgdGFibGUgZW50cnkgbG9va3MgdGhlIHNhbWUgaW4gYm90aCBjYXNl cy4gICovCiAgIGlmIChsaW5lID09IDApCiAgICAgewogICAgICAgd2hpbGUgKHN1YmZpbGUtPmxp bmVfdmVjdG9yLT5uaXRlbXMgPiAwKQpAQCAtNzE0LDYgKzcxMyw4IEBAIHN0cnVjdCBibG9ja3Zl Y3RvciAqCiAJICBzdWJmaWxlLT5saW5lX3ZlY3Rvci0+bml0ZW1zLS07CiAJfQogICAgIH0KKyAg ZWxzZSBpZiAobGluZSA9PSAtMSkKKyAgICBsaW5lID0gMDsKIAogICBlID0gc3ViZmlsZS0+bGlu ZV92ZWN0b3ItPml0ZW0gKyBzdWJmaWxlLT5saW5lX3ZlY3Rvci0+bml0ZW1zKys7CiAgIGUtPmxp bmUgPSBsaW5lOwpAQCAtNzIyLDYgKzcyMyw5MCBAQCBzdHJ1Y3QgYmxvY2t2ZWN0b3IgKgogfQog CiAMCisvKiBSZWNvcmQgYSBQQyB3aGVyZSBhIGlubGluZWQgc3Vicm91dGluZSBlbmRzLiAgKi8K Kwordm9pZAorYnVpbGRzeW1fY29tcHVuaXQ6OnJlY29yZF9pbmxpbmVfcmFuZ2VfZW5kIChDT1JF X0FERFIgZW5kKQoreworICAvKiBUaGUgcGVyZm9ybWFuY2Ugb2YgdGhpcyBmdW5jdGlvbiBpcyB2 ZXJ5IGltcG9ydGFudCwKKyAgICAgaXQgc2hhbGwgYmUgTyhuKmxvZyhuKSkgdGhlcmVmb3JlIHdl IGRvIG5vdCB1c2Ugc3RkOjp2ZWN0b3IKKyAgICAgaGVyZSBzaW5jZSBzb21lIGNvbXBpbGVycywg ZS5nLiB2aXN1YWwgc3R1ZGlvLCBkbyBub3QKKyAgICAgZ3VhcmFudGVlIHRoYXQgZm9yIHZlY3Rv cjo6cHVzaF9iYWNrLiAgKi8KKyAgaWYgKG1faW5saW5lX2VuZF92ZWN0b3IgPT0gbnVsbHB0cikK KyAgICB7CisgICAgICBtX2lubGluZV9lbmRfdmVjdG9yX2xlbmd0aCA9IElOSVRJQUxfTElORV9W RUNUT1JfTEVOR1RIOworICAgICAgbV9pbmxpbmVfZW5kX3ZlY3RvciA9IChDT1JFX0FERFIgKikK Kwl4bWFsbG9jIChzaXplb2YgKENPUkVfQUREUikgKiBtX2lubGluZV9lbmRfdmVjdG9yX2xlbmd0 aCk7CisgICAgICBtX2lubGluZV9lbmRfdmVjdG9yX25pdGVtcyA9IDA7CisgICAgfQorICBlbHNl IGlmIChtX2lubGluZV9lbmRfdmVjdG9yX25pdGVtcyA9PSBtX2lubGluZV9lbmRfdmVjdG9yX2xl bmd0aCkKKyAgICB7CisgICAgICBtX2lubGluZV9lbmRfdmVjdG9yX2xlbmd0aCAqPSAyOworICAg ICAgbV9pbmxpbmVfZW5kX3ZlY3RvciA9IChDT1JFX0FERFIgKikKKwl4cmVhbGxvYyAoKGNoYXIg KikgbV9pbmxpbmVfZW5kX3ZlY3RvciwKKwkJICBzaXplb2YgKENPUkVfQUREUikgKiBtX2lubGlu ZV9lbmRfdmVjdG9yX2xlbmd0aCk7CisgICAgfQorCisgIG1faW5saW5lX2VuZF92ZWN0b3JbbV9p bmxpbmVfZW5kX3ZlY3Rvcl9uaXRlbXMrK10gPSBlbmQ7Cit9CisKKwwKKy8qIFBhdGNoIHRoZSBp c19zdG10IGJpdHMgYXQgdGhlIGdpdmVuIGlubGluZSBlbmQgYWRkcmVzcy4KKyAgIFRoZSBsaW5l IHRhYmxlIGhhcyB0byBiZSBhbHJlYWR5IHNvcnRlZC4gICovCisKK3N0YXRpYyB2b2lkCitwYXRj aF9pbmxpbmVfZW5kX3BvcyAoc3RydWN0IGxpbmV0YWJsZSAqdGFibGUsIENPUkVfQUREUiBlbmQp Cit7CisgIGludCBhID0gMiwgYiA9IHRhYmxlLT5uaXRlbXMgLSAxOworICBzdHJ1Y3QgbGluZXRh YmxlX2VudHJ5ICppdGVtcyA9IHRhYmxlLT5pdGVtOworCisgIC8qIFdlIG5lZWQgYXQgbGVhc3Qg dHdvIGl0ZW1zIHdpdGggcGMgPSBlbmQgaW4gdGhlIHRhYmxlLgorICAgICBUaGUgbG93ZXN0IHVz YWJsZSBpdGVtcyBhcmUgYXQgcG9zIDAgYW5kIDEsIHRoZSBoaWdoZXN0CisgICAgIHVzYWJsZSBp dGVtcyBhcmUgYXQgcG9zIGIgLSAyIGFuZCBiIC0gMS4gICovCisgIGlmIChhID4gYiB8fCBlbmQg PCBpdGVtc1sxXS5wYyB8fCBlbmQgPiBpdGVtc1tiIC0gMl0ucGMpCisgICAgcmV0dXJuOworCisg IC8qIExvb2sgZm9yIHRoZSBmaXJzdCBpdGVtIHdpdGggcGMgPiBlbmQgaW4gdGhlIHJhbmdlIFth LGJdLgorICAgICBUaGUgcHJldmlvdXMgZWxlbWVudCBoYXMgcGMgPSBlbmQgb3IgdGhlcmUgaXMg bm8gbWF0Y2guCisgICAgIFdlIHNldCBhID0gMiwgc2luY2Ugd2UgbmVlZCBhdCBsZWFzdCB0d28g Y29uc2VjdXRpdmUgZWxlbWVudHMKKyAgICAgd2l0aCBwYyA9IGVuZCB0byBkbyBhbnl0aGluZyB1 c2VmdWwuCisgICAgIFdlIHNldCBiID0gbml0ZW1zIC0gMSwgc2luY2Ugd2UgYXJlIG5vdCBpbnRl cmVzdGVkIGluIHRoZSBsYXN0CisgICAgIGVsZW1lbnQgd2hpY2ggc2hvdWxkIGJlIGFuIGVuZCBv ZiBzZXF1ZW5jZSBtYXJrZXIgd2l0aCBsaW5lID0gMAorICAgICBhbmQgaXNfc3RtdCA9IDEuICAq LworICB3aGlsZSAoYSA8IGIpCisgICAgeworICAgICAgaW50IGMgPSAoYSArIGIpIC8gMjsKKwor ICAgICAgaWYgKGVuZCA8IGl0ZW1zW2NdLnBjKQorCWIgPSBjOworICAgICAgZWxzZQorCWEgPSBj ICsgMTsKKyAgICB9CisKKyAgYS0tOworICBpZiAoaXRlbXNbYV0ucGMgIT0gZW5kIHx8IGl0ZW1z W2FdLmlzX3N0bXQpCisgICAgcmV0dXJuOworCisgIC8qIFdoZW4gdGhlcmUgaXMgYSBzZXF1ZW5j ZSBvZiBsaW5lIGVudHJpZXMgYXQgdGhlIHNhbWUgYWRkcmVzcworICAgICB3aGVyZSBhbiBpbmxp bmUgcmFuZ2UgZW5kcywgYW5kIHRoZSBsYXN0IGl0ZW0gaGFzIGlzX3N0bXQgPSAwLAorICAgICB3 ZSBmb3JjZSBhbGwgcHJldmlvdXMgaXRlbXMgdG8gaGF2ZSBpc19zdG10ID0gMCBhcyB3ZWxsLgor ICAgICBTZXR0aW5nIGJyZWFrcG9pbnRzIGF0IHRob3NlIGFkZHJlc3NlcyBpcyBjdXJyZW50bHkg bm90CisgICAgIHN1cHBvcnRlZCwgc2luY2UgaXQgaXMgdW5jbGVhciBpZiB0aGUgcHJldmlvdXMg YWRkcmVzc2VzIGFyZQorICAgICBwYXJ0IG9mIHRoZSBzdWJyb3V0aW5lIG9yIHRoZSBjYWxsaW5n IHByb2dyYW0uICAqLworICBkbworICAgIHsKKyAgICAgIC8qIFdlIHN0b3AgYXQgdGhlIGZpcnN0 IGxpbmUgZW50cnkgd2l0aCBhIGRpZmZlcmVudCBhZGRyZXNzLAorCSBvciB3aGVuIHdlIHNlZSBh biBlbmQgb2Ygc2VxdWVuY2UgbWFya2VyLiAgKi8KKyAgICAgIGEtLTsKKyAgICAgIGlmIChpdGVt c1thXS5wYyAhPSBlbmQgfHwgaXRlbXNbYV0ubGluZSA9PSAwKQorCWJyZWFrOworCisgICAgICBp dGVtc1thXS5pc19zdG10ID0gMDsKKyAgICB9CisgIHdoaWxlIChhID4gMCk7Cit9CisKKwwKIC8q IFN1YnJvdXRpbmUgb2YgZW5kX3N5bXRhYiB0byBzaW1wbGlmeSBpdC4gIExvb2sgZm9yIGEgc3Vi ZmlsZSB0aGF0CiAgICBtYXRjaGVzIHRoZSBtYWluIHNvdXJjZSBmaWxlJ3MgYmFzZW5hbWUuICBJ ZiB0aGVyZSBpcyBvbmx5IG9uZSwgYW5kCiAgICBpZiB0aGUgbWFpbiBzb3VyY2UgZmlsZSBkb2Vz bid0IGhhdmUgYW55IHN5bWJvbCBvciBsaW5lIG51bWJlcgpAQCAtOTU1LDYgKzEwNDAsMTAgQEAg c3RydWN0IGNvbXB1bml0X3N5bXRhYiAqCiAJCQkgICAgICBzdWJmaWxlLT5saW5lX3ZlY3Rvci0+ aXRlbQogCQkJICAgICAgKyBzdWJmaWxlLT5saW5lX3ZlY3Rvci0+bml0ZW1zLAogCQkJICAgICAg bHRlX2lzX2xlc3NfdGhhbik7CisKKwkgICBmb3IgKGludCBpID0gMDsgaSA8IG1faW5saW5lX2Vu ZF92ZWN0b3Jfbml0ZW1zOyBpKyspCisJICAgICBwYXRjaF9pbmxpbmVfZW5kX3BvcyAoc3ViZmls ZS0+bGluZV92ZWN0b3IsCisJCQkJICAgbV9pbmxpbmVfZW5kX3ZlY3RvcltpXSk7CiAJfQogCiAg ICAgICAvKiBBbGxvY2F0ZSBhIHN5bWJvbCB0YWJsZSBpZiBuZWNlc3NhcnkuICAqLwpkaWZmIC0t Z2l0IGEvZ2RiL2J1aWxkc3ltLmggYi9nZGIvYnVpbGRzeW0uaAppbmRleCBjNzY4YTRjLi4yODQ1 Nzg5IDEwMDY0NAotLS0gYS9nZGIvYnVpbGRzeW0uaAorKysgYi9nZGIvYnVpbGRzeW0uaApAQCAt MTkwLDYgKzE5MCw4IEBAIHN0cnVjdCBidWlsZHN5bV9jb21wdW5pdAogICB2b2lkIHJlY29yZF9s aW5lIChzdHJ1Y3Qgc3ViZmlsZSAqc3ViZmlsZSwgaW50IGxpbmUsIENPUkVfQUREUiBwYywKIAkJ ICAgIGJvb2wgaXNfc3RtdCk7CiAKKyAgdm9pZCByZWNvcmRfaW5saW5lX3JhbmdlX2VuZCAoQ09S RV9BRERSIGVuZCk7CisKICAgc3RydWN0IGNvbXB1bml0X3N5bXRhYiAqZ2V0X2NvbXB1bml0X3N5 bXRhYiAoKQogICB7CiAgICAgcmV0dXJuIG1fY29tcHVuaXRfc3ltdGFiOwpAQCAtMzk3LDYgKzM5 OSwxNSBAQCBzdHJ1Y3QgYnVpbGRzeW1fY29tcHVuaXQKIAogICAvKiBQZW5kaW5nIHN5bWJvbHMg dGhhdCBhcmUgbG9jYWwgdG8gdGhlIGxleGljYWwgY29udGV4dC4gICovCiAgIHN0cnVjdCBwZW5k aW5nICptX2xvY2FsX3N5bWJvbHMgPSBudWxscHRyOworCisgIC8qIFBlbmRpbmcgaW5saW5lIGVu ZCByYW5nZSBhZGRyZXNzZXMuICAqLworICBDT1JFX0FERFIgKiBtX2lubGluZV9lbmRfdmVjdG9y ID0gbnVsbHB0cjsKKworICAvKiBOdW1iZXIgb2YgYWxsb2NhdGVkIGlubGluZSBlbmQgcmFuZ2Ug YWRkcmVzc2VzLiAgKi8KKyAgaW50IG1faW5saW5lX2VuZF92ZWN0b3JfbGVuZ3RoID0gMDsKKwor ICAvKiBOdW1iZXIgb2YgcGVuZGluZyBpbmxpbmUgZW5kIHJhbmdlIGFkZHJlc3Nlcy4gICovCisg IGludCBtX2lubGluZV9lbmRfdmVjdG9yX25pdGVtcyA9IDA7CiB9OwogCiAMCmRpZmYgLS1naXQg YS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5jCmluZGV4IGFiMjFhYjAuLjNj NTRhODMgMTAwNjQ0Ci0tLSBhL2dkYi9kd2FyZjIvcmVhZC5jCisrKyBiL2dkYi9kd2FyZjIvcmVh ZC5jCkBAIC0xMzcwMywxMCArMTM3MDMsNiBAQCBjbGFzcyBwcm9jZXNzX2RpZV9zY29wZQogCSAg cmV0dXJuIGZhbHNlOwogCX0KIAotICAgICAgLyogRW1wdHkgcmFuZ2UgZW50cmllcyBoYXZlIG5v IGVmZmVjdC4gICovCi0gICAgICBpZiAocmFuZ2VfYmVnaW5uaW5nID09IHJhbmdlX2VuZCkKLQlj b250aW51ZTsKLQogICAgICAgcmFuZ2VfYmVnaW5uaW5nICs9ICpiYXNlOwogICAgICAgcmFuZ2Vf ZW5kICs9ICpiYXNlOwogCkBAIC0xMzgxNCwxMCArMTM4MTAsNiBAQCBjbGFzcyBwcm9jZXNzX2Rp ZV9zY29wZQogCSAgcmV0dXJuIDA7CiAJfQogCi0gICAgICAvKiBFbXB0eSByYW5nZSBlbnRyaWVz IGhhdmUgbm8gZWZmZWN0LiAgKi8KLSAgICAgIGlmIChyYW5nZV9iZWdpbm5pbmcgPT0gcmFuZ2Vf ZW5kKQotCWNvbnRpbnVlOwotCiAgICAgICByYW5nZV9iZWdpbm5pbmcgKz0gKmJhc2U7CiAgICAg ICByYW5nZV9lbmQgKz0gKmJhc2U7CiAKQEAgLTEzODU3LDYgKzEzODQ5LDEwIEBAIGNsYXNzIHBy b2Nlc3NfZGllX3Njb3BlCiAgIHJldHZhbCA9IGR3YXJmMl9yYW5nZXNfcHJvY2VzcyAob2Zmc2V0 LCBjdSwKICAgICBbJl0gKENPUkVfQUREUiByYW5nZV9iZWdpbm5pbmcsIENPUkVfQUREUiByYW5n ZV9lbmQpCiAgICAgeworICAgICAgLyogRW1wdHkgcmFuZ2UgZW50cmllcyBoYXZlIG5vIGVmZmVj dC4gICovCisgICAgICBpZiAocmFuZ2VfYmVnaW5uaW5nID09IHJhbmdlX2VuZCkKKwlyZXR1cm47 CisKICAgICAgIGlmIChyYW5nZXNfcHN0ICE9IE5VTEwpCiAJewogCSAgQ09SRV9BRERSIGxvd3Bj OwpAQCAtMTQwOTQsNiArMTQwOTAsNyBAQCBjbGFzcyBwcm9jZXNzX2RpZV9zY29wZQogICBzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IG9iamZpbGUtPmFyY2ggKCk7CiAgIHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHI7CiAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJfaGlnaDsKKyAgYm9vbCBpbmxpbmVk X3N1YnJvdXRpbmUgPSAoZGllLT50YWcgPT0gRFdfVEFHX2lubGluZWRfc3Vicm91dGluZSk7CiAK ICAgYXR0cl9oaWdoID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfaGlnaF9wYywgY3UpOwogICBp ZiAoYXR0cl9oaWdoKQpAQCAtMTQxMDksNyArMTQxMDYsMTAgQEAgY2xhc3MgcHJvY2Vzc19kaWVf c2NvcGUKIAogCSAgbG93ID0gZ2RiYXJjaF9hZGp1c3RfZHdhcmYyX2FkZHIgKGdkYmFyY2gsIGxv dyArIGJhc2VhZGRyKTsKIAkgIGhpZ2ggPSBnZGJhcmNoX2FkanVzdF9kd2FyZjJfYWRkciAoZ2Ri YXJjaCwgaGlnaCArIGJhc2VhZGRyKTsKLQkgIGN1LT5nZXRfYnVpbGRlciAoKS0+cmVjb3JkX2Js b2NrX3JhbmdlIChibG9jaywgbG93LCBoaWdoIC0gMSk7CisJICBpZiAoaW5saW5lZF9zdWJyb3V0 aW5lKQorCSAgICBjdS0+Z2V0X2J1aWxkZXIgKCktPnJlY29yZF9pbmxpbmVfcmFuZ2VfZW5kICho aWdoKTsKKwkgIGlmIChsb3cgPCBoaWdoKQorCSAgICBjdS0+Z2V0X2J1aWxkZXIgKCktPnJlY29y ZF9ibG9ja19yYW5nZSAoYmxvY2ssIGxvdywgaGlnaCAtIDEpOwogICAgICAgICB9CiAgICAgfQog CkBAIC0xNDEzNCw2ICsxNDEzNCwxMCBAQCBjbGFzcyBwcm9jZXNzX2RpZV9zY29wZQogCSAgZW5k ICs9IGJhc2VhZGRyOwogCSAgc3RhcnQgPSBnZGJhcmNoX2FkanVzdF9kd2FyZjJfYWRkciAoZ2Ri YXJjaCwgc3RhcnQpOwogCSAgZW5kID0gZ2RiYXJjaF9hZGp1c3RfZHdhcmYyX2FkZHIgKGdkYmFy Y2gsIGVuZCk7CisJICBpZiAoaW5saW5lZF9zdWJyb3V0aW5lKQorCSAgICBjdS0+Z2V0X2J1aWxk ZXIgKCktPnJlY29yZF9pbmxpbmVfcmFuZ2VfZW5kIChlbmQpOworCSAgaWYgKHN0YXJ0ID09IGVu ZCkKKwkgICAgcmV0dXJuOwogCSAgY3UtPmdldF9idWlsZGVyICgpLT5yZWNvcmRfYmxvY2tfcmFu Z2UgKGJsb2NrLCBzdGFydCwgZW5kIC0gMSk7CiAJICBibG9ja3ZlYy5lbXBsYWNlX2JhY2sgKHN0 YXJ0LCBlbmQpOwogCX0pOwpAQCAtMjAwMzEsNyArMjAwMzUsNyBAQCBjbGFzcyBsbnBfc3RhdGVf bWFjaGluZQogCiBzdGF0aWMgdm9pZAogZHdhcmZfZmluaXNoX2xpbmUgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBzdHJ1Y3Qgc3ViZmlsZSAqc3ViZmlsZSwKLQkJICAgQ09SRV9BRERSIGFkZHJl c3MsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorCQkgICBDT1JFX0FERFIgYWRkcmVzcywgc3RydWN0 IGR3YXJmMl9jdSAqY3UsIGJvb2wgZW5kX3NlcXVlbmNlKQogewogICBpZiAoc3ViZmlsZSA9PSBO VUxMKQogICAgIHJldHVybjsKQEAgLTIwMDQ0LDcgKzIwMDQ4LDggQEAgY2xhc3MgbG5wX3N0YXRl X21hY2hpbmUKIAkJCSAgcGFkZHJlc3MgKGdkYmFyY2gsIGFkZHJlc3MpKTsKICAgICB9CiAKLSAg ZHdhcmZfcmVjb3JkX2xpbmVfMSAoZ2RiYXJjaCwgc3ViZmlsZSwgMCwgYWRkcmVzcywgdHJ1ZSwg Y3UpOworICBkd2FyZl9yZWNvcmRfbGluZV8xIChnZGJhcmNoLCBzdWJmaWxlLCBlbmRfc2VxdWVu Y2UgPyAwIDogLTEsIGFkZHJlc3MsCisJCSAgICAgICB0cnVlLCBjdSk7CiB9CiAKIHZvaWQKQEAg LTIwMDc3LDcgKzIwMDgyLDggQEAgY2xhc3MgbG5wX3N0YXRlX21hY2hpbmUKIAkgICAgICB8fCBl bmRfc2VxdWVuY2UpCiAJICAgIHsKIAkgICAgICBkd2FyZl9maW5pc2hfbGluZSAobV9nZGJhcmNo LCBtX2xhc3Rfc3ViZmlsZSwgbV9hZGRyZXNzLAotCQkJCSBtX2N1cnJlbnRseV9yZWNvcmRpbmdf bGluZXMgPyBtX2N1IDogbnVsbHB0cik7CisJCQkJIG1fY3VycmVudGx5X3JlY29yZGluZ19saW5l cyA/IG1fY3UgOiBudWxscHRyLAorCQkJCSBlbmRfc2VxdWVuY2UpOwogCSAgICB9CiAKIAkgIGlm ICghZW5kX3NlcXVlbmNlKQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc3RlcC1h bmQtbmV4dC1pbmxpbmUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc3RlcC1hbmQtbmV4dC1p bmxpbmUuZXhwCmluZGV4IDM3MzNmYTcuLmUzYTU3OTMgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL3N0ZXAtYW5kLW5leHQtaW5saW5lLmV4cAorKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9zdGVwLWFuZC1uZXh0LWlubGluZS5leHAKQEAgLTUyLDM3ICs1MiwyMCBAQCBwcm9jIGRv X3Rlc3QgeyB1c2VfaGVhZGVyIH0gewogICAgIGdkYl90ZXN0ICJzdGVwIiAiLioiICJzdGVwIGlu dG8gZ2V0X2FsaWFzX3NldCIKICAgICBnZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccytnZXRfYWxp YXNfc2V0XFteXHJcXSoke3NyY2ZpbGV9Oi4qIiBcCiAJIm5vdCBpbiBpbmxpbmUgMSIKLSAgICAj IEl0J3MgcG9zc2libGUgdGhhdCB0aGlzIGZpcnN0IGZhaWx1cmUgKHdoZW4gbm90IHVzaW5nIGEg aGVhZGVyCi0gICAgIyBmaWxlKSBpcyBHQ0MncyBmYXVsdCwgdGhvdWdoIHRoZSByZW1haW5pbmcg ZmFpbHVyZXMgd291bGQgYmVzdAotICAgICMgYmUgZml4ZWQgYnkgYWRkaW5nIGxvY2F0aW9uIHZp ZXdzIHN1cHBvcnQgKHRob3VnaCBpdCBjb3VsZCBiZQotICAgICMgdGhhdCBzb21lIGVhc2llciBo ZXVyaXN0aWMgY291bGQgYmUgZmlndXJlZCBvdXQpLiAgU3RpbGwsIGl0IGlzCi0gICAgIyBub3Qg Y2VydGFpbiB0aGF0IHRoZSBmaXJzdCBmYWlsdXJlIHdvdWxkbid0IGFsc28gYmUgZml4ZWQgYnkK LSAgICAjIGhhdmluZyBsb2NhdGlvbiB2aWV3IHN1cHBvcnQsIHNvIGZvciBub3cgaXQgaXMgdGFn Z2VkIGFzIHN1Y2guCi0gICAgaWYgeyEkdXNlX2hlYWRlcn0geyBzZXR1cF9rZmFpbCAiKi0qLSoi IHN5bXRhYi8yNTUwNyB9CiAgICAgZ2RiX3Rlc3QgIm5leHQiICIuKlRSRUVfVFlQRS4qIiAibmV4 dCBzdGVwIDEiCiAgICAgZ2RiX3Rlc3QgImJ0IiAiXFxzKlxcIzBcXHMrZ2V0X2FsaWFzX3NldFxb XlxyXF0qJHtzcmNmaWxlfTouKiIgXAogCSJub3QgaW4gaW5saW5lIDIiCiAgICAgZ2RiX3Rlc3Qg Im5leHQiICIuKlRSRUVfVFlQRS4qIiAibmV4dCBzdGVwIDIiCiAgICAgZ2RiX3Rlc3QgImJ0IiAi XFxzKlxcIzBcXHMrZ2V0X2FsaWFzX3NldFxbXlxyXF0qJHtzcmNmaWxlfTouKiIgXAogCSJub3Qg aW4gaW5saW5lIDMiCi0gICAgaWYgeyEkdXNlX2hlYWRlcn0geyBzZXR1cF9rZmFpbCAiKi0qLSoi IHN5bXRhYi8yNTUwNyB9CiAgICAgZ2RiX3Rlc3QgIm5leHQiICIuKlRSRUVfVFlQRS4qIiAibmV4 dCBzdGVwIDMiCiAgICAgZ2RiX3Rlc3QgImJ0IiAiXFxzKlxcIzBcXHMrZ2V0X2FsaWFzX3NldFxb XlxyXF0qJHtzcmNmaWxlfTouKiIgXAogCSJub3QgaW4gaW5saW5lIDQiCi0gICAgaWYgeyEkdXNl X2hlYWRlcn0geyBzZXR1cF9rZmFpbCAiKi0qLSoiIHN5bXRhYi8yNTUwNyB9CiAgICAgZ2RiX3Rl c3QgIm5leHQiICJyZXR1cm4gMC4qIiAibmV4dCBzdGVwIDQiCiAgICAgZ2RiX3Rlc3QgImJ0IiBc CiAJIlxccypcXCMwXFxzKyhtYWlufGdldF9hbGlhc19zZXQpXFteXHJcXSoke3NyY2ZpbGV9Oi4q IiBcCiAJIm5vdCBpbiBpbmxpbmUgNSIKIAotICAgIGlmIHshJHVzZV9oZWFkZXJ9IHsKLQkjIFdp dGggdGhlIGRlYnVnIGZyb20gR0NDIDEwLnggKGFuZCBlYXJsaWVyKSBHREIgaXMgY3VycmVudGx5 Ci0JIyB1bmFibGUgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlIHRoZSBmb2xsb3dpbmcgdGVzdHMg d2hlbiB3ZQotCSMgYXJlIG5vdCB1c2luZyBhIGhlYWRlciBmaWxlLgotCWtmYWlsIHN5bXRhYi8y NTUwNyAic3RlcHBpbmcgdGVzdHMiCi0JcmV0dXJuCi0gICAgfQotCiAgICAgY2xlYW5fcmVzdGFy dCAke2V4ZWN1dGFibGV9CiAKICAgICBpZiAhW3J1bnRvX21haW5dIHsKLS0gCjEuOS4xCgo= --------------E52C82761B422857EEA46CAF Content-Type: text/x-patch; name="0002-gdb-Preserve-is-stmt-lines-when-switch-between-files.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0002-gdb-Preserve-is-stmt-lines-when-switch-between-files.pa"; filename*1="tch" RnJvbSA4MDRiZDMyMTMzZDU4NWQzZGQzZDcwN2JhZjdkMTRhYjFlYTY1OWQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgQnVyZ2VzcyA8YW5kcmV3LmJ1cmdlc3NAZW1iZWNv c20uY29tPgpEYXRlOiBGcmksIDMgQXByIDIwMjAgMjM6MjE6MDQgKzAxMDAKU3ViamVjdDogW1BB VENIIDIvMl0gZ2RiOiBQcmVzZXJ2ZSBpcy1zdG10IGxpbmVzIHdoZW4gc3dpdGNoIGJldHdlZW4g ZmlsZXMKCkFmdGVyIHRoZSBpcy1zdG10IHN1cHBvcnQgY29tbWl0OgoKICBjb21taXQgOGM5NTU4 MmRhODU4YWM5ODFmNjg5YTZmNTk5YWNhY2I4YzVjNDkwZgogIERhdGU6ICAgTW9uIERlYyAzMCAy MTowNDo1MSAyMDE5ICswMDAwCgogICAgICBnZGI6IEFkZCBzdXBwb3J0IGZvciB0cmFja2luZyB0 aGUgRFdBUkYgbGluZSB0YWJsZSBpcy1zdG10IGZpZWxkCgpBIHJlZ3Jlc3Npb24gd2FzIG9ic2Vy dmVkIHdoZXJlIGEgYnJlYWtwb2ludCBjb3VsZCBubyBsb25nZXIgYmUgcGxhY2VkCmluIHNvbWUg Y2FzZXMuCgpDb25zaWRlciBhIGxpbmUgdGFibGUgbGlrZSB0aGlzOgoKICBGaWxlIDE6IHRlc3Qu YwogIEZpbGUgMjogdGVzdC5oCgogIHwgQWRkciB8IEZpbGUgfCBMaW5lIHwgU3RtdCB8CiAgfC0t LS0tLXwtLS0tLS18LS0tLS0tfC0tLS0tLXwKICB8IDEgICAgfCAxICAgIHwgMTYgICB8IFkgICAg fAogIHwgMiAgICB8IDEgICAgfCAxNyAgIHwgWSAgICB8CiAgfCAzICAgIHwgMiAgICB8IDIxICAg fCBZICAgIHwKICB8IDQgICAgfCAyICAgIHwgMjIgICB8IFkgICAgfAogIHwgNCAgICB8IDEgICAg fCAxOCAgIHwgTiAgICB8CiAgfCA1ICAgIHwgMiAgICB8IDIzICAgfCBOICAgIHwKICB8IDYgICAg fCAxICAgIHwgMjQgICB8IFkgICAgfAogIHwgNyAgICB8IDEgICAgfCBFTkQgIHwgWSAgICB8CiAg fC0tLS0tLXwtLS0tLS18LS0tLS0tfC0tLS0tLXwKCkJlZm9yZSB0aGUgaXMtc3RtdCBwYXRjaCBH REIgd291bGQgaWdub3JlIGFueSBub24tc3RtdCBsaW5lcywgc28gR0RCCmJ1aWx0IHR3byBsaW5l IHRhYmxlIHN0cnVjdHVyZXM6CgogIEZpbGUgMSAgICAgICAgICAgICAgICAgRmlsZSAyCiAgLS0t LS0tICAgICAgICAgICAgICAgICAtLS0tLS0KCiAgfCBBZGRyIHwgTGluZSB8ICAgICAgICB8IEFk ZHIgfCBMaW5lIHwKICB8LS0tLS0tfC0tLS0tLXwgICAgICAgIHwtLS0tLS18LS0tLS0tfAogIHwg MSAgICB8IDE2ICAgfCAgICAgICAgfCAzICAgIHwgMjEgICB8CiAgfCAyICAgIHwgMTcgICB8ICAg ICAgICB8IDQgICAgfCAyMiAgIHwKICB8IDMgICAgfCBFTkQgIHwgICAgICAgIHwgNiAgICB8IEVO RCAgfAogIHwgNiAgICB8IDI0ICAgfCAgICAgICAgfC0tLS0tLXwtLS0tLS18CiAgfCA3ICAgIHwg RU5EICB8CiAgfC0tLS0tLXwtLS0tLS18CgpBZnRlciB0aGUgaXMtc3RtdCBwYXRjaCBHREIgbm93 IHJlY29yZHMgbm9uLXN0bXQgbGluZXMsIHNvIHRoZQpnZW5lcmF0ZWQgbGluZSB0YWJsZSBzdHJ1 Y3R1cmVzIGxvb2sgbGlrZSB0aGlzOgoKICBGaWxlIDEgICAgICAgICAgICAgICAgICAgRmlsZSAy CiAgLS0tLS0tICAgICAgICAgICAgICAgICAgIC0tLS0tLQoKICB8IEFkZHIgfCBMaW5lIHwgU3Rt dCB8ICB8IEFkZHIgfCBMaW5lIHwgU3RtdCB8CiAgfC0tLS0tLXwtLS0tLS18LS0tLS0tfCAgfC0t LS0tLXwtLS0tLS18LS0tLS0tfAogIHwgMSAgICB8IDE2ICAgfCBZICAgIHwgIHwgMyAgICB8IDIx ICAgfCBZICAgIHwKICB8IDIgICAgfCAxNyAgIHwgWSAgICB8ICB8IDQgICAgfCAyMiAgIHwgWSAg ICB8CiAgfCAzICAgIHwgRU5EICB8IFkgICAgfCAgfCA0ICAgIHwgRU5EICB8IFkgICAgfAogIHwg NCAgICB8IDE4ICAgfCBOICAgIHwgIHwgNSAgICB8IDIzICAgfCBOICAgIHwKICB8IDUgICAgfCBF TkQgIHwgWSAgICB8ICB8IDYgICAgfCBFTkQgIHwgWSAgICB8CiAgfCA2ICAgIHwgMjQgICB8IFkg ICAgfCAgfC0tLS0tLXwtLS0tLS18LS0tLS0tfAogIHwgNyAgICB8IEVORCAgfCBZICAgIHwKICB8 LS0tLS0tfC0tLS0tLXwtLS0tLS18CgpUaGUgcHJvYmxlbSBpcyB0aGF0IGluICdGaWxlIDInLCBl bmQgRU5EIG1hcmtlciBhdCBhZGRyZXNzIDQgY2F1c2VzCnRoZSBwcmV2aW91cyBsaW5lIHRhYmxl IGVudHJ5IHRvIGJlIGRpc2NhcmRlZCwgc28gd2UgYWN0dWFsbHkgZW5kIHVwCndpdGggdGhpczoK CiAgRmlsZSAyCiAgLS0tLS0tCgogIHwgQWRkciB8IExpbmUgfCBTdG10IHwKICB8LS0tLS0tfC0t LS0tLXwtLS0tLS18CiAgfCAzICAgIHwgMjEgICB8IFkgICAgfAogIHwgNCAgICB8IEVORCAgfCBZ ICAgIHwKICB8IDUgICAgfCAyMyAgIHwgTiAgICB8CiAgfCA2ICAgIHwgRU5EICB8IFkgICAgfAog IHwtLS0tLS18LS0tLS0tfC0tLS0tLXwKCldoZW4gYSB1c2VyIHRyaWVzIHRvIHBsYWNlIGEgYnJl YWtwb2ludCBpbiBmaWxlIDIgYXQgbGluZSAyMiwgdGhpcyBpcwpubyBsb25nZXIgcG9zc2libGUu CgpUaGUgc29sdXRpb24gSSBwcm9wb3NlIGhlcmUgaXMgdGhhdCB3ZSBpZ25vcmUgbGluZSB0YWJs ZSBlbnRyaWVzIHRoYXQKd291bGQgdHJpZ2dlciBhIGNoYW5nZSBvZiBmaWxlIGlmOgoKICAxLiBU aGUgbmV3IGxpbmUgYmVpbmcgYWRkZWQgaXMgYXQgdGhlIHNhbWUgYWRkcmVzcyBhcyB0aGUgcHJl dmlvdXMKICBsaW5lLCBhbmQKCiAgMi4gV2UgaGF2ZSBwcmV2aW91c2x5IHNlZW4gYW4gaXMtc3Rt dCBsaW5lIGF0IHRoZSBjdXJyZW50IGFkZHJlc3MuCgpUaGUgcmVzdWx0IG9mIHRoaXMgaXMgdGhh dCBHREIgc3dpdGNoZXMgZmlsZSwgYW5kIGtub3dzIHRoYXQgc29tZSBsaW5lCmVudHJ5IChvciBl bnRyaWVzKSBhcmUgZ29pbmcgdG8gYmUgZGlzY2FyZGVkLCBwcmVmZXIgdG8ga2VlcCBpcy1zdG10 CmxpbmVzIGFuZCBkaXNjYXJkIG5vbi1zdG10IGxpbmVzLgoKQWZ0ZXIgdGhpcyBjb21taXQgdGhl IGxpbmVzIHRhYmxlcyBhcmUgbm93OgoKICBGaWxlIDEgICAgICAgICAgICAgICAgICAgRmlsZSAy CiAgLS0tLS0tICAgICAgICAgICAgICAgICAgIC0tLS0tLQoKICB8IEFkZHIgfCBMaW5lIHwgU3Rt dCB8ICB8IEFkZHIgfCBMaW5lIHwgU3RtdCB8CiAgfC0tLS0tLXwtLS0tLS18LS0tLS0tfCAgfC0t LS0tLXwtLS0tLS18LS0tLS0tfAogIHwgMSAgICB8IDE2ICAgfCBZICAgIHwgIHwgMyAgICB8IDIx ICAgfCBZICAgIHwKICB8IDIgICAgfCAxNyAgIHwgWSAgICB8ICB8IDQgICAgfCAyMiAgIHwgWSAg ICB8CiAgfCAzICAgIHwgRU5EICB8IFkgICAgfCAgfCA1ICAgIHwgMjMgICB8IE4gICAgfAogIHwg NSAgICB8IEVORCAgfCBZICAgIHwgIHwgNiAgICB8IEVORCAgfCBZICAgIHwKICB8IDYgICAgfCAy NCAgIHwgWSAgICB8ICB8LS0tLS0tfC0tLS0tLXwtLS0tLS18CiAgfCA3ICAgIHwgRU5EICB8IFkg ICAgfAogIHwtLS0tLS18LS0tLS0tfC0tLS0tLXwKCldlJ3ZlIGxvc3QgdGhlIG5vbi1zdG10IGVu dHJ5IGZvciBmaWxlIDEsIGxpbmUgMTgsIGJ1dCByZXRhaW5lZCB0aGUKaXMtc3RtdCBlbnRyeSBm b3IgZmlsZSAyLCBsaW5lIDIyLiAgVGhlIHVzZXIgY2FuIG5vdyBwbGFjZSBhCmJyZWFrcG9pbnQg YXQgdGhhdCBsb2NhdGlvbi4KCk9uZSBwcm9ibGVtIHRoYXQgY2FtZSBmcm9tIHRoaXMgY29tbWl0 IHdhcyB0aGUgdGVzdApnZGIuY3Avc3RlcC1hbmQtbmV4dC1pbmxpbmUuZXhwLCB3aGljaCBicm9r ZSBpbiBzZXZlcmFsIHBsYWNlcy4gIEFmdGVyCmxvb2tpbmcgYXQgdGhpcyB0ZXN0IGFnYWluIEkg dGhpbmsgdGhhdCBpbiBzb21lIGNhc2VzIHRoaXMgdGVzdCB3YXMKb25seSBldmVyIHBhc3Npbmcg YnkgcHVyZSBsdWNrLiAgVGhlIGRlYnVnIEdDQyBpcyBwcm9kdWNpbmcgZm9yIHRoaXMKdGVzdCBp cyBwcmV0dHkgYnJva2VuLiAgSSByYWlzZWQgdGhpcyBHQ0MgYnVnOgoKICBodHRwczovL2djYy5n bnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD05NDQ3NAoKZm9yIHRoaXMgYW5kIGRpc2Fi bGVkIG9uZSBlbnRpcmUgaGFsZiBvZiB0aGUgdGVzdC4gIFRoZXJlIGFyZSBzdGlsbApzb21lIGNh c2VzIGluIGhlcmUgdGhhdCBkbyBwYXNzLCBhbmQgaWYvd2hlbiBHQ0MgaXMgZml4ZWQgaXQgd291 bGQgYmUKZ3JlYXQgdG8gZW5hYmxlIHRoaXMgdGVzdCBhZ2Fpbi4KCmdkYi90ZXN0c3VpdGUvQ2hh bmdlTG9nOgoKCSogZ2RiLmR3YXJmMi9kdzItaW5saW5lLWhlYWRlci0xLmV4cDogTmV3IGZpbGUu CgkqIGdkYi5kd2FyZjIvZHcyLWlubGluZS1oZWFkZXItMi5leHA6IE5ldyBmaWxlLgoJKiBnZGIu ZHdhcmYyL2R3Mi1pbmxpbmUtaGVhZGVyLTMuZXhwOiBOZXcgZmlsZS4KCSogZ2RiLmR3YXJmMi9k dzItaW5saW5lLWhlYWRlci1sYmxzLmM6IE5ldyBmaWxlLgoJKiBnZGIuZHdhcmYyL2R3Mi1pbmxp bmUtaGVhZGVyLmM6IE5ldyBmaWxlLgoJKiBnZGIuZHdhcmYyL2R3Mi1pbmxpbmUtaGVhZGVyLmg6 IE5ldyBmaWxlLgotLS0KIGdkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaW5saW5lLWhlYWRl ci0xLmV4cCAgfCAxNTYgKysrKysrKysrKysrKysrKysrCiBnZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvZHcyLWlubGluZS1oZWFkZXItMi5leHAgIHwgMTc5ICsrKysrKysrKysrKysrKysrKysrCiBn ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlubGluZS1oZWFkZXItMy5leHAgIHwgMTkyICsr KysrKysrKysrKysrKysrKysrKysKIGdkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaW5saW5l LWhlYWRlci1sYmxzLmMgfCAgNDYgKysrKysrCiBnZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LWlubGluZS1oZWFkZXIuYyAgICAgIHwgIDI0ICsrKwogZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1pbmxpbmUtaGVhZGVyLmggICAgICB8ICAyNCArKysKIDYgZmlsZXMgY2hhbmdlZCwgNjIx IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvZHcyLWlubGluZS1oZWFkZXItMS5leHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1 aXRlL2dkYi5kd2FyZjIvZHcyLWlubGluZS1oZWFkZXItMi5leHAKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlubGluZS1oZWFkZXItMy5leHAKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlubGluZS1oZWFkZXIt bGJscy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1p bmxpbmUtaGVhZGVyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvZHcyLWlubGluZS1oZWFkZXIuaAoKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItaW5saW5lLWhlYWRlci0xLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9k dzItaW5saW5lLWhlYWRlci0xLmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li42YTFlOTkwCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3 Mi1pbmxpbmUtaGVhZGVyLTEuZXhwCkBAIC0wLDAgKzEsMTU2IEBACisjIENvcHlyaWdodCAyMDIw IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisj IFNldHVwIGEgbGluZSB0YWJsZSB3aGVyZToKKyMKKyMgfCBBZGRyIHwgRmlsZSB8IExpbmUgfCBT dG10IHwKKyMgfC0tLS0tLXwtLS0tLS18LS0tLS0tfC0tLS0tLXwKKyMgfCAxICAgIHwgMSAgICB8 IDE2ICAgfCBZICAgIHwKKyMgfCAyICAgIHwgMSAgICB8IDE3ICAgfCBZICAgIHwKKyMgfCAzICAg IHwgMiAgICB8IDIxICAgfCBZICAgIHwKKyMgfCA0ICAgIHwgMiAgICB8IDIyICAgfCBZICAgIHwK KyMgfCA0ICAgIHwgMSAgICB8IDE4ICAgfCBOICAgIHwKKyMgfCA1ICAgIHwgMiAgICB8IDIzICAg fCBOICAgIHwKKyMgfCA2ICAgIHwgMSAgICB8IDI0ICAgfCBZICAgIHwKKyMgfCA3ICAgIHwgMSAg ICB8IEVORCAgfCBZICAgIHwKKyMgfC0tLS0tLXwtLS0tLS18LS0tLS0tfC0tLS0tLXwKKyMKKyMg UGxhY2VzIGEgYnJla3BvaW50IGF0IGZpbGUgMiwgbGluZSAyMi4gIFByZXZpb3VzbHkgR0RCIHdv dWxkIGRpc2NyYWQKKyMgdGhlIGxpbmUgdGFibGUgZW50cnkgZm9yIHRoaXMgbGluZSBkdWUgdG8g c3dpdGNoaW5nIGZpbGVzIGZvciB0aGUKKyMgZmlsZSAxLCBsaW5lIDE4IG5vbi1zdGF0ZW1lbnQg bGluZS4gIEFmdGVyIHBhdGNoaW5nIGhvd2V2ZXIsIEdEQiBub3cKKyMgZGlzY2FyZHMgdGhlIGZp bGUgMSwgbGluZSAxOCBlbnRyeSBpbnN0ZWFkLCBhbmQgdGhlIGJyZWFrcG9pbnQgYXQKKyMgbGlu ZSAyMiBzaG91bGQgc3VjY2VlZC4KKworbG9hZF9saWIgZHdhcmYuZXhwCisKKyMgVGhpcyB0ZXN0 IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1cHBvcnQgRFdBUkYtMiBhbmQgdXNl IGdhcy4KK2lmIHshW2R3YXJmMl9zdXBwb3J0XX0geworICAgIHJldHVybiAwCit9CisKKyMgVGhl IC5jIGZpbGVzIHVzZSBfX2F0dHJpYnV0ZV9fLgoraWYgW2dldF9jb21waWxlcl9pbmZvXSB7Cisg ICAgcmV0dXJuIC0xCit9CitpZiAhJGdjY19jb21waWxlZCB7CisgICAgcmV0dXJuIDAKK30KKwor c3RhbmRhcmRfdGVzdGZpbGUgZHcyLWlubGluZS1oZWFkZXItbGJscy5jIGR3Mi1pbmxpbmUtaGVh ZGVyLlMgXAorICAgIGR3Mi1pbmxpbmUtaGVhZGVyLmMgZHcyLWlubGluZS1oZWFkZXIuaAorCitz ZXQgYXNtX2ZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICRzcmNmaWxlMl0KK0R3YXJmOjphc3Nl bWJsZSAkYXNtX2ZpbGUgeworICAgIGdsb2JhbCBzcmNkaXIgc3ViZGlyIHNyY2ZpbGUgc3JjZmls ZTMgc3JjZmlsZTQKKyAgICBkZWNsYXJlX2xhYmVscyBsaW5lc19sYWJlbCBjYWxsZWVfc3VicHJv Z19sYWJlbAorCisgICAgZ2V0X2Z1bmNfaW5mbyBtYWluCisKKyAgICBjdSB7fSB7CisJY29tcGls ZV91bml0IHsKKwkgICAge3Byb2R1Y2VyICJnY2MiIH0KKwkgICAge2xhbmd1YWdlIEBEV19MQU5H X0N9CisJICAgIHtuYW1lICR7c3JjZmlsZTN9fQorCSAgICB7bG93X3BjIDAgYWRkcn0KKwkgICAg e3N0bXRfbGlzdCAke2xpbmVzX2xhYmVsfSBEV19GT1JNX3NlY19vZmZzZXR9CisJfSB7CisJICAg IGNhbGxlZV9zdWJwcm9nX2xhYmVsOiBzdWJwcm9ncmFtIHsKKwkJe2V4dGVybmFsIDEgZmxhZ30K KwkJe25hbWUgY2FsbGVlfQorCQl7aW5saW5lIDMgZGF0YTF9CisJICAgIH0KKwkgICAgc3VicHJv Z3JhbSB7CisJCXtleHRlcm5hbCAxIGZsYWd9CisJCXtuYW1lIG1haW59CisJCXtsb3dfcGMgJG1h aW5fc3RhcnQgYWRkcn0KKwkJe2hpZ2hfcGMgIiRtYWluX3N0YXJ0ICsgJG1haW5fbGVuIiBhZGRy fQorCSAgICB9IHsKKwkJaW5saW5lZF9zdWJyb3V0aW5lIHsKKwkJICAgIHthYnN0cmFjdF9vcmln aW4gJSRjYWxsZWVfc3VicHJvZ19sYWJlbH0KKwkJICAgIHtsb3dfcGMgbGluZV9sYWJlbF8xIGFk ZHJ9CisJCSAgICB7aGlnaF9wYyBsaW5lX2xhYmVsXzcgYWRkcn0KKwkJICAgIHtjYWxsX2ZpbGUg MSBkYXRhMX0KKwkJICAgIHtjYWxsX2xpbmUgMTggZGF0YTF9CisJCX0KKwkgICAgfQorCX0KKyAg ICB9CisKKyAgICBsaW5lcyB7dmVyc2lvbiAyIGRlZmF1bHRfaXNfc3RtdCAxfSBsaW5lc19sYWJl bCB7CisJaW5jbHVkZV9kaXIgIiR7c3JjZGlyfS8ke3N1YmRpcn0iCisJZmlsZV9uYW1lICIkc3Jj ZmlsZTMiIDEKKwlmaWxlX25hbWUgIiRzcmNmaWxlNCIgMQorCisJcHJvZ3JhbSB7CisJICAgIHtE V19MTkVfc2V0X2FkZHJlc3MgbGluZV9sYWJlbF8xfQorCSAgICB7RFdfTE5TX2FkdmFuY2VfbGlu ZSAxNX0KKwkgICAge0RXX0xOU19jb3B5fQorCisJICAgIHtEV19MTkVfc2V0X2FkZHJlc3MgbGlu ZV9sYWJlbF8yfQorCSAgICB7RFdfTE5TX2FkdmFuY2VfbGluZSAxfQorCSAgICB7RFdfTE5TX2Nv cHl9CisKKwkgICAge0RXX0xOU19zZXRfZmlsZSAyfQorCSAgICB7RFdfTE5FX3NldF9hZGRyZXNz IGxpbmVfbGFiZWxfM30KKwkgICAge0RXX0xOU19hZHZhbmNlX2xpbmUgNH0KKwkgICAge0RXX0xO U19jb3B5fQorCisJICAgIHtEV19MTkVfc2V0X2FkZHJlc3MgbGluZV9sYWJlbF80fQorCSAgICB7 RFdfTE5TX2FkdmFuY2VfbGluZSAxfQorCSAgICB7RFdfTE5TX2NvcHl9CisKKwkgICAge0RXX0xO U19hZHZhbmNlX2xpbmUgLTR9CisJICAgIHtEV19MTlNfc2V0X2ZpbGUgMX0KKwkgICAge0RXX0xO U19uZWdhdGVfc3RtdH0KKwkgICAge0RXX0xOU19jb3B5fQorCisJICAgIHtEV19MTlNfc2V0X2Zp bGUgMn0KKwkgICAge0RXX0xORV9zZXRfYWRkcmVzcyBsaW5lX2xhYmVsXzV9CisJICAgIHtEV19M TlNfYWR2YW5jZV9saW5lIDV9CisJICAgIHtEV19MTlNfY29weX0KKworCSAgICB7RFdfTE5TX25l Z2F0ZV9zdG10fQorCSAgICB7RFdfTE5TX3NldF9maWxlIDF9CisJICAgIHtEV19MTkVfc2V0X2Fk ZHJlc3MgbGluZV9sYWJlbF82fQorCSAgICB7RFdfTE5TX2FkdmFuY2VfbGluZSAxfQorCSAgICB7 RFdfTE5TX2NvcHl9CisKKwkgICAge0RXX0xORV9zZXRfYWRkcmVzcyBsaW5lX2xhYmVsXzd9CisJ ICAgIHtEV19MTkVfZW5kX3NlcXVlbmNlfQorCX0KKyAgICB9Cit9CisKK2lmIHsgW3ByZXBhcmVf Zm9yX3Rlc3RpbmcgImZhaWxlZCB0byBwcmVwYXJlIiAke3Rlc3RmaWxlfSBcCisJICBbbGlzdCAk c3JjZmlsZSAkYXNtX2ZpbGVdIHtub2RlYnVnIG9wdGltaXplPS1PMX1dIH0geworICAgIHJldHVy biAtMQorfQorCitpZiAhW3J1bnRvX21haW5dIHsKKyAgICByZXR1cm4gLTEKK30KKworIyBEZWxl dGUgYWxsIGJyZWFrcG9pbnRzIHNvIHRoYXQgdGhlIG91dHB1dCBvZiAiaW5mbyBicmVha3BvaW50 cyIKKyMgYmVsb3cgd2lsbCBvbmx5IGNvbnRhaW4gYSBzaW5nbGUgYnJlYWtwb2ludC4KK2RlbGV0 ZV9icmVha3BvaW50cworCisjIFBsYWNlIGEgYnJlYWtwb2ludCB3aXRoaW4gdGhlIGZ1bmN0aW9u IGluIHRoZSBoZWFkZXIgZmlsZS4KK2dkYl9icmVha3BvaW50ICIke3NyY2ZpbGU0fToyMiIKKwor IyBDaGVjayB0aGF0IHRoZSBicmVha3BvaW50IHdhcyBwbGFjZWQgd2hlcmUgd2UgZXhwZWN0ZWQu ICBJdCBzaG91bGQKKyMgYXBwZWFyIGF0IHRoZSByZXF1ZXN0ZWQgbGluZS4gIFdoZW4gdGhlIGJ1 ZyBpbiBHREIgd2FzIHByZXNlbnQgdGhlCisjIGJyZWFrcG9pbnQgd291bGQgYmUgcGxhY2VkIG9u IG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzIGluc3RlYWQuCitnZGJfdGVzdCAiaW5mbyBicmVh a3BvaW50cyIgXAorICAgICIuKiBpbiBjYWxsZWUgYXQgXFteXHJcblxdKyR7c3JjZmlsZTR9OjIy XFx5LioiCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlubGluZS1o ZWFkZXItMi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlubGluZS1oZWFkZXIt Mi5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY0OTk5MQotLS0gL2Rl di9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaW5saW5lLWhlYWRlci0y LmV4cApAQCAtMCwwICsxLDE3OSBAQAorIyBDb3B5cmlnaHQgMjAyMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworIyBTZXR1cCBhIGxpbmUgdGFi bGUgd2hlcmU6CisjCisjIHwgQWRkciB8IEZpbGUgfCBMaW5lIHwgU3RtdCB8CisjIHwtLS0tLS18 LS0tLS0tfC0tLS0tLXwtLS0tLS18CisjIHwgMSAgICB8IDEgICAgfCAxNiAgIHwgWSAgICB8Cisj IHwgMiAgICB8IDEgICAgfCAxNyAgIHwgWSAgICB8CisjIHwgMyAgICB8IDIgICAgfCAyMSAgIHwg WSAgICB8CisjIHwgNCAgICB8IDIgICAgfCAyMiAgIHwgWSAgICB8CisjIHwgNCAgICB8IDEgICAg fCAxOCAgIHwgTiAgICB8CisjIHwgNSAgICB8IDEgICAgfCAxOSAgIHwgWSAgICB8CisjIHwgNiAg ICB8IDEgICAgfCAyMCAgIHwgWSAgICB8CisjIHwgNyAgICB8IDEgICAgfCBFTkQgIHwgWSAgICB8 CisjIHwtLS0tLS18LS0tLS0tfC0tLS0tLXwtLS0tLS18CisjCisjCisjIFBsYWNlIHRoZSBmaXJz dCBicmVrcG9pbnQgYXQgZmlsZSAyLCBsaW5lIDIyIGFuZCBhIHNlY29uZCBicmVha3BvaW50Cisj IGF0IGZpbGUgMSwgbGluZSAxOS4gIEEgdGhpcmQgYnJlYWtwb2ludCBpcyBwbGFjZWQgYXQgZmls ZSAxLCBsaW5lCisjIDE4LCBidXQgYXMgdGhpcyBsaW5lIHRhYmxlIGVudHJ5IHdpbGwgaGF2ZSBi ZWVuIGRpc2NhcmRlZFsxXSB0aGUKKyMgdGhpcmQgYnJlYWtwb2ludCB3aWxsIGFjdHVhbGx5IGJl IHBsYWNlZCBhdCB0aGUgc2FtZSBsb2NhdGlvbiBhcyB0aGUKKyMgc2Vjb25kIGJyZWFrcG9pbnQu CisjCisjIFsxXSBUaGUgZW50cnkgZm9yIGZpbGUgMSwgbGluZSAxOCBpcyBkaXNjYXJkZWQgYmVj YXVzZSBpdCBpcyBhdCB0aGUKKyMgc2FtZSBhZGRyZXNzIGFzIHRoZSBwcmV2aW91cyBlbnRyeSwg YnV0IHRoZSBwcmV2aW91cyBlbnRyeSBpcy1zdG10LAorIyB3aGlsZSBsaW5lIDE4IGlzIGEgbm9u LXN0bXQuCisKK2xvYWRfbGliIGR3YXJmLmV4cAorCisjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBy dW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCitpZiB7IVtk d2FyZjJfc3VwcG9ydF19IHsKKyAgICByZXR1cm4gMAorfQorCisjIFRoZSAuYyBmaWxlcyB1c2Ug X19hdHRyaWJ1dGVfXy4KK2lmIFtnZXRfY29tcGlsZXJfaW5mb10geworICAgIHJldHVybiAtMQor fQoraWYgISRnY2NfY29tcGlsZWQgeworICAgIHJldHVybiAwCit9CisKK3N0YW5kYXJkX3Rlc3Rm aWxlIGR3Mi1pbmxpbmUtaGVhZGVyLWxibHMuYyBkdzItaW5saW5lLWhlYWRlci5TIFwKKyAgICBk dzItaW5saW5lLWhlYWRlci5jIGR3Mi1pbmxpbmUtaGVhZGVyLmgKKworc2V0IGFzbV9maWxlIFtz dGFuZGFyZF9vdXRwdXRfZmlsZSAkc3JjZmlsZTJdCitEd2FyZjo6YXNzZW1ibGUgJGFzbV9maWxl IHsKKyAgICBnbG9iYWwgc3JjZGlyIHN1YmRpciBzcmNmaWxlIHNyY2ZpbGUzIHNyY2ZpbGU0Cisg ICAgZGVjbGFyZV9sYWJlbHMgbGluZXNfbGFiZWwgY2FsbGVlX3N1YnByb2dfbGFiZWwKKworICAg IGdldF9mdW5jX2luZm8gbWFpbgorCisgICAgY3Uge30geworCWNvbXBpbGVfdW5pdCB7CisJICAg IHtwcm9kdWNlciAiZ2NjIiB9CisJICAgIHtsYW5ndWFnZSBARFdfTEFOR19DfQorCSAgICB7bmFt ZSAke3NyY2ZpbGUzfX0KKwkgICAge2xvd19wYyAwIGFkZHJ9CisJICAgIHtzdG10X2xpc3QgJHts aW5lc19sYWJlbH0gRFdfRk9STV9zZWNfb2Zmc2V0fQorCX0geworCSAgICBjYWxsZWVfc3VicHJv Z19sYWJlbDogc3VicHJvZ3JhbSB7CisJCXtleHRlcm5hbCAxIGZsYWd9CisJCXtuYW1lIGNhbGxl ZX0KKwkJe2lubGluZSAzIGRhdGExfQorCSAgICB9CisJICAgIHN1YnByb2dyYW0geworCQl7ZXh0 ZXJuYWwgMSBmbGFnfQorCQl7bmFtZSBtYWlufQorCQl7bG93X3BjICRtYWluX3N0YXJ0IGFkZHJ9 CisJCXtoaWdoX3BjICIkbWFpbl9zdGFydCArICRtYWluX2xlbiIgYWRkcn0KKwkgICAgfSB7CisJ CWlubGluZWRfc3Vicm91dGluZSB7CisJCSAgICB7YWJzdHJhY3Rfb3JpZ2luICUkY2FsbGVlX3N1 YnByb2dfbGFiZWx9CisJCSAgICB7bG93X3BjIGxpbmVfbGFiZWxfMSBhZGRyfQorCQkgICAge2hp Z2hfcGMgbGluZV9sYWJlbF83IGFkZHJ9CisJCSAgICB7Y2FsbF9maWxlIDEgZGF0YTF9CisJCSAg ICB7Y2FsbF9saW5lIDE4IGRhdGExfQorCQl9CisJICAgIH0KKwl9CisgICAgfQorCisgICAgbGlu ZXMge3ZlcnNpb24gMiBkZWZhdWx0X2lzX3N0bXQgMX0gbGluZXNfbGFiZWwgeworCWluY2x1ZGVf ZGlyICIke3NyY2Rpcn0vJHtzdWJkaXJ9IgorCWZpbGVfbmFtZSAiJHNyY2ZpbGUzIiAxCisJZmls ZV9uYW1lICIkc3JjZmlsZTQiIDEKKworCXByb2dyYW0geworCSAgICB7RFdfTE5FX3NldF9hZGRy ZXNzIGxpbmVfbGFiZWxfMX0KKwkgICAge0RXX0xOU19hZHZhbmNlX2xpbmUgMTV9CisJICAgIHtE V19MTlNfY29weX0KKworCSAgICB7RFdfTE5FX3NldF9hZGRyZXNzIGxpbmVfbGFiZWxfMn0KKwkg ICAge0RXX0xOU19hZHZhbmNlX2xpbmUgMX0KKwkgICAge0RXX0xOU19jb3B5fQorCisJICAgIHtE V19MTlNfc2V0X2ZpbGUgMn0KKwkgICAge0RXX0xORV9zZXRfYWRkcmVzcyBsaW5lX2xhYmVsXzN9 CisJICAgIHtEV19MTlNfYWR2YW5jZV9saW5lIDR9CisJICAgIHtEV19MTlNfY29weX0KKworCSAg ICB7RFdfTE5FX3NldF9hZGRyZXNzIGxpbmVfbGFiZWxfNH0KKwkgICAge0RXX0xOU19hZHZhbmNl X2xpbmUgMX0KKwkgICAge0RXX0xOU19jb3B5fQorCisJICAgIHtEV19MTlNfYWR2YW5jZV9saW5l IC00fQorCSAgICB7RFdfTE5TX3NldF9maWxlIDF9CisJICAgIHtEV19MTlNfbmVnYXRlX3N0bXR9 CisJICAgIHtEV19MTlNfY29weX0KKworCSAgICB7RFdfTE5FX3NldF9hZGRyZXNzIGxpbmVfbGFi ZWxfNX0KKwkgICAge0RXX0xOU19hZHZhbmNlX2xpbmUgMX0KKwkgICAge0RXX0xOU19uZWdhdGVf c3RtdH0KKwkgICAge0RXX0xOU19jb3B5fQorCisJICAgIHtEV19MTkVfc2V0X2FkZHJlc3MgbGlu ZV9sYWJlbF82fQorCSAgICB7RFdfTE5TX2FkdmFuY2VfbGluZSAxfQorCSAgICB7RFdfTE5TX2Nv cHl9CisKKwkgICAge0RXX0xORV9zZXRfYWRkcmVzcyBsaW5lX2xhYmVsXzd9CisJICAgIHtEV19M TkVfZW5kX3NlcXVlbmNlfQorCX0KKyAgICB9Cit9CisKK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rp bmcgImZhaWxlZCB0byBwcmVwYXJlIiAke3Rlc3RmaWxlfSBcCisJICBbbGlzdCAkc3JjZmlsZSAk YXNtX2ZpbGVdIHtub2RlYnVnIG9wdGltaXplPS1PMX1dIH0geworICAgIHJldHVybiAtMQorfQor CitpZiAhW3J1bnRvX21haW5dIHsKKyAgICByZXR1cm4gLTEKK30KKworIyBEZWxldGUgYWxsIGJy ZWFrcG9pbnRzIHNvIHRoYXQgdGhlIG91dHB1dCBvZiAiaW5mbyBicmVha3BvaW50cyIKKyMgYmVs b3cgd2lsbCBvbmx5IGNvbnRhaW4gYSBzaW5nbGUgYnJlYWtwb2ludC4KK2RlbGV0ZV9icmVha3Bv aW50cworCisjIFBsYWNlIGEgYnJlYWtwb2ludCB3aXRoaW4gdGhlIGZ1bmN0aW9uIGluIHRoZSBo ZWFkZXIgZmlsZS4KK2dkYl9icmVha3BvaW50ICIke3NyY2ZpbGU0fToyMiIKKworIyBDaGVjayB0 aGF0IHRoZSBicmVha3BvaW50IHdhcyBwbGFjZWQgd2hlcmUgd2UgZXhwZWN0ZWQuICBJdCBzaG91 bGQKKyMgYXBwZWFyIGF0IHRoZSByZXF1ZXN0ZWQgbGluZS4gIFdoZW4gdGhlIGJ1ZyBpbiBHREIg d2FzIHByZXNlbnQgdGhlCisjIGJyZWFrcG9pbnQgd291bGQgYmUgcGxhY2VkIG9uIG9uZSBvZiB0 aGUgZm9sbG93aW5nIGxpbmVzIGluc3RlYWQuCitnZGJfdGVzdCAiaW5mbyBicmVha3BvaW50cyIg XAorICAgICIuKiBpbiBjYWxsZWUgYXQgXFteXHJcblxdKyR7c3JjZmlsZTR9OjIyXFx5LioiIFwK KyAgICAiY2hlY2sgZm9yIGJyZWFrcG9pbnQgYXQgJHtzcmNmaWxlNH0iCisKKyMgRGVsZXRlIGFs bCBicmVha3BvaW50cyBzbyB0aGF0IHRoZSBvdXRwdXQgb2YgImluZm8gYnJlYWtwb2ludHMiCisj IGJlbG93IHdpbGwgb25seSBjb250YWluIGEgc2luZ2xlIGJyZWFrcG9pbnQuCitkZWxldGVfYnJl YWtwb2ludHMKKworIyBQbGFjZSBhIGJyZWFrcG9pbnQgd2l0aGluIHRoZSBmdW5jdGlvbiBpbiB0 aGUgaGVhZGVyIGZpbGUuCitnZGJfYnJlYWtwb2ludCAiJHtzcmNmaWxlM306MTkiCisKKyMgQ2hl Y2sgdGhhdCB0aGUgYnJlYWtwb2ludCB3YXMgcGxhY2VkIHdoZXJlIHdlIGV4cGVjdGVkLiAgSXQg c2hvdWxkCisjIGFwcGVhciBhdCB0aGUgcmVxdWVzdGVkIGxpbmUuICBXaGVuIHRoZSBidWcgaW4g R0RCIHdhcyBwcmVzZW50IHRoZQorIyBicmVha3BvaW50IHdvdWxkIGJlIHBsYWNlZCBvbiBvbmUg b2YgdGhlIGZvbGxvd2luZyBsaW5lcyBpbnN0ZWFkLgorZ2RiX3Rlc3QgImluZm8gYnJlYWtwb2lu dHMiIFwKKyAgICAiLiogaW4gY2FsbGVlIGF0IFxbXlxyXG5cXSske3NyY2ZpbGUzfToxOVxceS4q IiBcCisgICAgImNoZWNrIGZvciBicmVha3BvaW50IGF0ICR7c3JjZmlsZTN9IgorCisjIExpbmUg dGFibGUgZW50cnkgZm9yIGxpbmUgMTggd2lsbCBoYXZlIGJlZW4gZGlzY2FyZGVkLCBzbyB0aGlz CisjIGJyZWtwb2ludCB3aWxsIGJlIGF0IHRoZSBzYW1lIGxvY2F0aW9uIGFzIGxpbmUgMTkuCitn ZGJfdGVzdCAiYnJlYWsgJHtzcmNmaWxlM306MTgiIFwKKyAgICAiTm90ZTogYnJlYWtwb2ludCAk ZGVjaW1hbCBhbHNvIHNldCBhdCBwYyAkaGV4LioiCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLWlubGluZS1oZWFkZXItMy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5k d2FyZjIvZHcyLWlubGluZS1oZWFkZXItMy5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uYzY4M2RjNAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItaW5saW5lLWhlYWRlci0zLmV4cApAQCAtMCwwICsxLDE5MiBAQAorIyBDb3B5cmln aHQgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKworIyBTZXR1cCBhIGxpbmUgdGFibGUgd2hlcmU6CisjCisjIHwgQWRkciB8IEZpbGUgfCBM aW5lIHwgU3RtdCB8CisjIHwtLS0tLS18LS0tLS0tfC0tLS0tLXwtLS0tLS18CisjIHwgMSAgICB8 IDEgICAgfCAxNiAgIHwgWSAgICB8CisjIHwgMiAgICB8IDEgICAgfCAxNyAgIHwgWSAgICB8Cisj IHwgMyAgICB8IDIgICAgfCAyMSAgIHwgWSAgICB8CisjIHwgNCAgICB8IDIgICAgfCAyMiAgIHwg WSAgICB8CisjIHwgNCAgICB8IDEgICAgfCAxOCAgIHwgTiAgICB8CisjIHwgNSAgICB8IDEgICAg fCAxOSAgIHwgTiAgICB8CisjIHwgNiAgICB8IDEgICAgfCAyMCAgIHwgWSAgICB8CisjIHwgNyAg ICB8IDEgICAgfCBFTkQgIHwgWSAgICB8CisjIHwtLS0tLS18LS0tLS0tfC0tLS0tLXwtLS0tLS18 CisjCisjIEJyZWFrIGF0IGZpbGUgMiwgbGluZSAyMiwgdGhlbiBzaW5nbGUgaW5zdHJ1Y3Rpb24g c3RlcCBmb3J3YXJkLiAgV2UKKyMgc2hvdWxkIHBhc3MgdGhyb3VnaCBsaW5lIDE5IGFuZCB0aGVu IGVuY291bnRlciBsaW5lIDIwLgorIworIyBDdXJyZW50bHkgd2UgZG9uJ3QgZXhwZWN0IEdEQiB0 byBzZWUgZmlsZSAxLCBsaW5lIDE4LCBhcyB0aGlzIGlzIGEKKyMgbm9uLXN0bXQgbGluZSBpbiBh IGRpZmZlcmVudCBmaWxlIGF0IHRoZSBzYW1lIGFkZHJlc3MgYXMgdGhlCisjIHByZXZpb3VzIGlz LXN0bXQgbGluZS4KKworbG9hZF9saWIgZHdhcmYuZXhwCisKKyMgVGhpcyB0ZXN0IGNhbiBvbmx5 IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1cHBvcnQgRFdBUkYtMiBhbmQgdXNlIGdhcy4KK2lm IHshW2R3YXJmMl9zdXBwb3J0XX0geworICAgIHJldHVybiAwCit9CisKKyMgVGhlIC5jIGZpbGVz IHVzZSBfX2F0dHJpYnV0ZV9fLgoraWYgW2dldF9jb21waWxlcl9pbmZvXSB7CisgICAgcmV0dXJu IC0xCit9CitpZiAhJGdjY19jb21waWxlZCB7CisgICAgcmV0dXJuIDAKK30KKworc3RhbmRhcmRf dGVzdGZpbGUgZHcyLWlubGluZS1oZWFkZXItbGJscy5jIGR3Mi1pbmxpbmUtaGVhZGVyLlMgXAor ICAgIGR3Mi1pbmxpbmUtaGVhZGVyLmMgZHcyLWlubGluZS1oZWFkZXIuaAorCitzZXQgYXNtX2Zp bGUgW3N0YW5kYXJkX291dHB1dF9maWxlICRzcmNmaWxlMl0KK0R3YXJmOjphc3NlbWJsZSAkYXNt X2ZpbGUgeworICAgIGdsb2JhbCBzcmNkaXIgc3ViZGlyIHNyY2ZpbGUgc3JjZmlsZTMgc3JjZmls ZTQKKyAgICBkZWNsYXJlX2xhYmVscyBsaW5lc19sYWJlbCBjYWxsZWVfc3VicHJvZ19sYWJlbAor CisgICAgZ2V0X2Z1bmNfaW5mbyBtYWluCisKKyAgICBjdSB7fSB7CisJY29tcGlsZV91bml0IHsK KwkgICAge3Byb2R1Y2VyICJnY2MiIH0KKwkgICAge2xhbmd1YWdlIEBEV19MQU5HX0N9CisJICAg IHtuYW1lICR7c3JjZmlsZTN9fQorCSAgICB7bG93X3BjIDAgYWRkcn0KKwkgICAge3N0bXRfbGlz dCAke2xpbmVzX2xhYmVsfSBEV19GT1JNX3NlY19vZmZzZXR9CisJfSB7CisJICAgIGNhbGxlZV9z dWJwcm9nX2xhYmVsOiBzdWJwcm9ncmFtIHsKKwkJe2V4dGVybmFsIDEgZmxhZ30KKwkJe25hbWUg Y2FsbGVlfQorCQl7aW5saW5lIDMgZGF0YTF9CisJICAgIH0KKwkgICAgc3VicHJvZ3JhbSB7CisJ CXtleHRlcm5hbCAxIGZsYWd9CisJCXtuYW1lIG1haW59CisJCXtsb3dfcGMgJG1haW5fc3RhcnQg YWRkcn0KKwkJe2hpZ2hfcGMgIiRtYWluX3N0YXJ0ICsgJG1haW5fbGVuIiBhZGRyfQorCSAgICB9 IHsKKwkJaW5saW5lZF9zdWJyb3V0aW5lIHsKKwkJICAgIHthYnN0cmFjdF9vcmlnaW4gJSRjYWxs ZWVfc3VicHJvZ19sYWJlbH0KKwkJICAgIHtsb3dfcGMgbGluZV9sYWJlbF8xIGFkZHJ9CisJCSAg ICB7aGlnaF9wYyBsaW5lX2xhYmVsXzcgYWRkcn0KKwkJICAgIHtjYWxsX2ZpbGUgMSBkYXRhMX0K KwkJICAgIHtjYWxsX2xpbmUgMTggZGF0YTF9CisJCX0KKwkgICAgfQorCX0KKyAgICB9CisKKyAg ICBsaW5lcyB7dmVyc2lvbiAyIGRlZmF1bHRfaXNfc3RtdCAxfSBsaW5lc19sYWJlbCB7CisJaW5j bHVkZV9kaXIgIiR7c3JjZGlyfS8ke3N1YmRpcn0iCisJZmlsZV9uYW1lICIkc3JjZmlsZTMiIDEK KwlmaWxlX25hbWUgIiRzcmNmaWxlNCIgMQorCisJcHJvZ3JhbSB7CisJICAgIHtEV19MTkVfc2V0 X2FkZHJlc3MgbGluZV9sYWJlbF8xfQorCSAgICB7RFdfTE5TX2FkdmFuY2VfbGluZSAxNX0KKwkg ICAge0RXX0xOU19jb3B5fQorCisJICAgIHtEV19MTkVfc2V0X2FkZHJlc3MgbGluZV9sYWJlbF8y fQorCSAgICB7RFdfTE5TX2FkdmFuY2VfbGluZSAxfQorCSAgICB7RFdfTE5TX2NvcHl9CisKKwkg ICAge0RXX0xOU19zZXRfZmlsZSAyfQorCSAgICB7RFdfTE5FX3NldF9hZGRyZXNzIGxpbmVfbGFi ZWxfM30KKwkgICAge0RXX0xOU19hZHZhbmNlX2xpbmUgNH0KKwkgICAge0RXX0xOU19jb3B5fQor CisJICAgIHtEV19MTkVfc2V0X2FkZHJlc3MgbGluZV9sYWJlbF80fQorCSAgICB7RFdfTE5TX2Fk dmFuY2VfbGluZSAxfQorCSAgICB7RFdfTE5TX2NvcHl9CisKKwkgICAge0RXX0xOU19hZHZhbmNl X2xpbmUgLTR9CisJICAgIHtEV19MTlNfc2V0X2ZpbGUgMX0KKwkgICAge0RXX0xOU19uZWdhdGVf c3RtdH0KKwkgICAge0RXX0xOU19jb3B5fQorCisJICAgIHtEV19MTkVfc2V0X2FkZHJlc3MgbGlu ZV9sYWJlbF81fQorCSAgICB7RFdfTE5TX2FkdmFuY2VfbGluZSAxfQorCSAgICB7RFdfTE5TX2Nv cHl9CisKKwkgICAge0RXX0xORV9zZXRfYWRkcmVzcyBsaW5lX2xhYmVsXzZ9CisJICAgIHtEV19M TlNfYWR2YW5jZV9saW5lIDF9CisJICAgIHtEV19MTlNfbmVnYXRlX3N0bXR9CisJICAgIHtEV19M TlNfY29weX0KKworCSAgICB7RFdfTE5FX3NldF9hZGRyZXNzIGxpbmVfbGFiZWxfN30KKwkgICAg e0RXX0xORV9lbmRfc2VxdWVuY2V9CisJfQorICAgIH0KK30KKworaWYgeyBbcHJlcGFyZV9mb3Jf dGVzdGluZyAiZmFpbGVkIHRvIHByZXBhcmUiICR7dGVzdGZpbGV9IFwKKwkgIFtsaXN0ICRzcmNm aWxlICRhc21fZmlsZV0ge25vZGVidWcgb3B0aW1pemU9LU8xfV0gfSB7CisgICAgcmV0dXJuIC0x Cit9CisKK2lmICFbcnVudG9fbWFpbl0geworICAgIHJldHVybiAtMQorfQorCisjIERlbGV0ZSBh bGwgYnJlYWtwb2ludHMgc28gdGhhdCB0aGUgb3V0cHV0IG9mICJpbmZvIGJyZWFrcG9pbnRzIgor IyBiZWxvdyB3aWxsIG9ubHkgY29udGFpbiBhIHNpbmdsZSBicmVha3BvaW50LgorZGVsZXRlX2Jy ZWFrcG9pbnRzCisKKyMgUGxhY2UgYSBicmVha3BvaW50IHdpdGhpbiB0aGUgZnVuY3Rpb24gaW4g dGhlIGhlYWRlciBmaWxlLgorZ2RiX2JyZWFrcG9pbnQgIiR7c3JjZmlsZTR9OjIyIgorCisjIENo ZWNrIHRoYXQgdGhlIGJyZWFrcG9pbnQgd2FzIHBsYWNlZCB3aGVyZSB3ZSBleHBlY3RlZC4gIEl0 IHNob3VsZAorIyBhcHBlYXIgYXQgdGhlIHJlcXVlc3RlZCBsaW5lLiAgV2hlbiB0aGUgYnVnIGlu IEdEQiB3YXMgcHJlc2VudCB0aGUKKyMgYnJlYWtwb2ludCB3b3VsZCBiZSBwbGFjZWQgb24gb25l IG9mIHRoZSBmb2xsb3dpbmcgbGluZXMgaW5zdGVhZC4KK2dkYl90ZXN0ICJpbmZvIGJyZWFrcG9p bnRzIiBcCisgICAgIi4qIGluIGNhbGxlZSBhdCBcW15cclxuXF0rJHtzcmNmaWxlNH06MjJcXHku KiIKKworZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIiR7c3JjZmlsZTR9OjIyIiBcCisgICAg Ii4qICR7c3JjZmlsZTR9IDogMjIgLioiCisKKyMgTm93IHNpbmdsZSBpbnN0cnVjdGlvbiBzdGVw IGZvcndhcmQuICBFdmVudHVhbGx5IHdlIHNob3VsZCBoaXQKKyMgJHtzcmNmaWxlM306MjAsIGJ1 dCBiZWZvcmUgd2UgZG8gd2Ugc2hvdWxkIGhpdCB0aGUgbm9uLXN0YXRlbWVudAorIyBsaW5lICR7 c3JjZmlsZTN9OjE5LgorIworIyBXZSBkb24ndCBrbm93IGhvdyBtYW55IGluc3RydWN0aW9ucyB3 ZSdsbCBuZWVkIHRvIHN0ZXAsIGJ1dCAxMDAKKyMgc2hvdWxkIGJlIGVub3VnaCBmb3IgZXZlcnlv bmUgKHN1cmVseSksIGFuZCB0aGlzIHN0b3BzIHVzIGxvb3BpbmcKKyMgZm9yZXZlciBpZiBzb21l dGhpbmcgZ29lcyB3cm9uZy4KK3NldCBmb3VuZF9saW5lXzE5IDAKK3NldCBmb3VuZF9saW5lXzIw IDAKK3NldCBrZWVwX2dvaW5nIDEKK2ZvciB7IHNldCBpIDAgfSB7ICRpIDwgMTAwICYmICRrZWVw X2dvaW5nIH0geyBpbmNyIGkgfSB7CisgICAgc2V0IGtlZXBfZ29pbmcgMAorICAgIGdkYl90ZXN0 X211bHRpcGxlICJzdGVwaSIgInN0ZXBpICR7aX0iIHsKKwktcmUgIiR7c3JjZmlsZTN9IDogMTkg Lioke2dkYl9wcm9tcHR9ICIgeworCSAgICBzZXQgZm91bmRfbGluZV8xOSAxCisJICAgIHNldCBr ZWVwX2dvaW5nIDEKKwl9CisKKwktcmUgIiR7c3JjZmlsZTN9IDogMjAgLioke2dkYl9wcm9tcHR9 ICIgeworCSAgICBzZXQgZm91bmRfbGluZV8yMCAxCisJfQorCisJLXJlICIke3NyY2ZpbGU0fSA6 IDIyIC4qJHtnZGJfcHJvbXB0fSAiIHsKKwkgICAgIyBOb3QgbGVmdCBsaW5lIDIyIHlldC4KKwkg ICAgc2V0IGtlZXBfZ29pbmcgMQorCX0KKyAgICB9Cit9CisKK2dkYl9hc3NlcnQgeyAkZm91bmRf bGluZV8xOSAmJiAkZm91bmRfbGluZV8yMCB9IFwKKyAgICAiZm91bmQgbGluZSAxOSBhbmQgMjAi CisKKwpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1pbmxpbmUtaGVh ZGVyLWxibHMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaW5saW5lLWhlYWRlci1s YmxzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFiN2IxNwotLS0gL2Rl di9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaW5saW5lLWhlYWRlci1s YmxzLmMKQEAgLTAsMCArMSw0NiBAQAorLyogQ29weXJpZ2h0IDIwMjAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKy8qIFVz ZWQgdG8gaW5zZXJ0IGxhYmVscyB3aXRoIHdoaWNoIHdlIGNhbiBidWlsZCBhIGZha2UgbGluZSB0 YWJsZS4gICovCisjZGVmaW5lIExMKE4pIGFzbSAoImxpbmVfbGFiZWxfIiAjTiAiOiAuZ2xvYmwg bGluZV9sYWJlbF8iICNOKQorCit2b2xhdGlsZSBpbnQgdmFyOwordm9sYXRpbGUgaW50IGJhcjsK KworLyogR2VuZXJhdGUgc29tZSBjb2RlIHRvIHRha2UgdXAgc29tZSBzcGFjZS4gICovCisjZGVm aW5lIEZJTExFUiBkbyB7IFwKKyAgICB2YXIgPSA5OTsJICAgIFwKK30gd2hpbGUgKDApCisKK2lu dAorbWFpbiAoKQorewkJCQkJLyogbWFpbiBwcm9sb2d1ZSAqLworICBhc20gKCJtYWluX2xhYmVs OiAuZ2xvYmwgbWFpbl9sYWJlbCIpOworICBMTCAoMSk7CS8vIEYxLCBMbiAxNgorICBGSUxMRVI7 CisgIExMICgyKTsJLy8gRjEsIExuIDE3CisgIEZJTExFUjsKKyAgTEwgKDMpOwkvLyBGMiwgTG4g MjEKKyAgRklMTEVSOworICBMTCAoNCk7CS8vIEYyLCBMbiAyMiAvLyBGMSwgTG4gMTgsICFTCisg IEZJTExFUjsKKyAgTEwgKDUpOwkvLyBGMSwgTG4gMTkgIVMKKyAgRklMTEVSOworICBMTCAoNik7 CS8vIEYxLCBMbiAyMAorICBGSUxMRVI7CisgIExMICg3KTsKKyAgRklMTEVSOworICByZXR1cm4g MDsJCQkJLyogbWFpbiBlbmQgKi8KK30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItaW5saW5lLWhlYWRlci5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1p bmxpbmUtaGVhZGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgzMzEy NgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaW5saW5l LWhlYWRlci5jCkBAIC0wLDAgKzEsMjQgQEAKKy8qIENvcHlyaWdodCAyMDIwIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisv KiBkdzItaW5saW5lLWhlYWRlci5jIDogMTYgKi8KKy8qIGR3Mi1pbmxpbmUtaGVhZGVyLmMgOiAx NyAqLworLyogZHcyLWlubGluZS1oZWFkZXIuYyA6IDE4ICovCisvKiBkdzItaW5saW5lLWhlYWRl ci5jIDogMTkgKi8KKy8qIGR3Mi1pbmxpbmUtaGVhZGVyLmMgOiAyMCAqLworLyogZHcyLWlubGlu ZS1oZWFkZXIuYyA6IDIxICovCisvKiBkdzItaW5saW5lLWhlYWRlci5jIDogMjIgKi8KKy8qIGR3 Mi1pbmxpbmUtaGVhZGVyLmMgOiAyMyAqLworLyogZHcyLWlubGluZS1oZWFkZXIuYyA6IDI0ICov CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlubGluZS1oZWFkZXIu aCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaW5saW5lLWhlYWRlci5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMzNhY2IKLS0tIC9kZXYvbnVsbAorKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlubGluZS1oZWFkZXIuaApAQCAtMCwwICsxLDI0 IEBACisvKiBDb3B5cmlnaHQgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwor ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworLyogZHcyLWlubGluZS1oZWFkZXIuaCA6 IDE2ICovCisvKiBkdzItaW5saW5lLWhlYWRlci5oIDogMTcgKi8KKy8qIGR3Mi1pbmxpbmUtaGVh ZGVyLmggOiAxOCAqLworLyogZHcyLWlubGluZS1oZWFkZXIuaCA6IDE5ICovCisvKiBkdzItaW5s aW5lLWhlYWRlci5oIDogMjAgKi8KKy8qIGR3Mi1pbmxpbmUtaGVhZGVyLmggOiAyMSAqLworLyog ZHcyLWlubGluZS1oZWFkZXIuaCA6IDIyICovCisvKiBkdzItaW5saW5lLWhlYWRlci5oIDogMjMg Ki8KKy8qIGR3Mi1pbmxpbmUtaGVhZGVyLmggOiAyNCAqLwotLSAKMS45LjEKCg== --------------E52C82761B422857EEA46CAF--