From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eugeniy.Paltsev@synopsys.com (Eugeniy Paltsev) Date: Tue, 3 Jul 2018 10:57:56 +0000 Subject: [PATCH] ARC: prevent showing irrelevant exception info in signal message In-Reply-To: <924308fe-efb3-45f7-b5cb-45d876021f32@synopsys.com> References: <20180629193907.17227-1-Eugeniy.Paltsev@synopsys.com> <924308fe-efb3-45f7-b5cb-45d876021f32@synopsys.com> List-ID: Message-ID: <1530615475.30574.52.camel@synopsys.com> To: linux-snps-arc@lists.infradead.org On Mon, 2018-07-02@10:57 -0700, Vineet Gupta wrote: > +CC Al > > On 06/29/2018 12:39 PM, Eugeniy Paltsev wrote: > > We process signals in the end of syscall/exception handler. > > It the signal is fatal we print register's content using > > show_regs function. show_regs() also prints information about > > last exception happened. > > > > In case of multicore system we can catch the situation when we > > will print wrong information about exception. See the example: > > ______________________________ > > CPU-0: started to handle page fault > > CPU-1: sent signal to process, which is executed on CPU-0 > > CPU-0: ended page fault handle. Started to process signal before > > returnig to userspace. Process signal, which is send from > > CPU-0. As th signal is fatal we call show_regs(). > > show_regs() will show information about last exception > > which is *page fault* (instead of "trap" which is used for > > signals and happened on CPU-0) > > > > So we will get message like this: > > /home/waitpid02 > > potentially unexpected fatal signal 8. > > Path: /home/waitpid02 > > CPU: 0 PID: 100 Comm: waitpid02 Not tainted 4.10.0-rc4 #2 > > task: 9f11c200 task.stack: 9f3ae000 > > > > [ECR ]: 0x00050200 => Invalid Write @ 0x00000000 by insn @ 0x000123ec > > [EFA ]: 0x00000000 > > [BLINK ]: 0x123ea > > [ERET ]: 0x123ec > > @off 0x123ec in [/home/waitpid02] > > VMA: 0x00010000 to 0x00016000 > > [STAT32]: 0x80080882 : IE U > > BTA: 0x000123ea SP: 0x5ffd3db0 FP: 0x00000000 > > LPS: 0x20031684 LPE: 0x2003169a LPC: 0x00000006 > > [-----other-info-----] > > > > This message is confusing because it show information about page fault > > ( [ECR ]: 0x00050200 => Invalid Write ) which is absolutely irrelevant > > to signal. > > Agreed this is misleading. @Al, is there a way to identify process termination > from signals because it did something wrong vs. say unhandled signal. For former, > we want to dump additional info in show_regs() such as PC / Fault addres etc and > not in other scenario. > > > This situation was reproduced with waitpid02 LTP test. > > _____________________________ > > > > So remove printing information about exceptions from show_regs() > > to avoid confusing messages. Print information about exceptions > > only in required places instead of show_regs() > > > > Now we don't print information about exceptions if signal is simply > > send by another userspace app. So in case of waitpid02 we will print > > next message: > > _____________________________ > > ./waitpid02 > > potentially unexpected fatal signal 8. > > [STAT32]: 0x80080082 : IE U > > BTA: 0x20000fc4 SP: 0x5ff8bd64 FP: 0x00000000 > > LPS: 0x200524a0 LPE: 0x200524b6 LPC: 0x00000006 > > [-----other-info-----] > > _____________________________ > > The prints I'm seeing now, for a segv from NULL pointer access is even more > confusing ! > There's a mixup of prints.... > > -------------------->8-------------------- > Path: /segv > CPU: 0 PID: 70 Comm: segv Not tainted 4.17.0+ #412 > > [ECR ]: 0x00050200 => Invalid Write @ 0x00000000 by insn @ 0x000103ac > [EFA ]: 0x00000000 > [BLINK ]: 0x20047bb0 > [ERET ]: 0x103ac > @off 0x103ac in [/segv] > VMA: 0x00010000 to 0x00012000 > > potentially unexpected fatal signal 11. > [STAT32]: 0x80080882 : IE U > BTA: 0x00010398 SP: 0x5fc95e1c FP: 0x5fc95e20 > LPS: 0x20039ffc LPE: 0x2003a000 LPC: 0x00000000 > r00: 0x00000001 r01: 0x5fc95e94 r02: 0x00000000 > r03: 0x00000064 r04: 0x80808080 r05: 0x2f2f2f2f > ... > -------------------->8-------------------- > > and for the process killed by signal 8, we get below. > > -------------------->8-------------------- > [ARCLinux]# kill -8 71 > [ARCLinux]# potentially unexpected fatal signal 8. > [STAT32]: 0x80080882 : IE U > BTA: 0x20020660 SP: 0x5fbcddec FP: 0x5fbcde1c > LPS: 0x20039ffc LPE: 0x2003a000 LPC: 0x00000000 > r00: 0xfffffdfc r01: 0x5fbcddf0 r02: 0x00000000 > r03: 0x00000008 r04: 0x80808080 r05: 0x2f2f2f2f > r06: 0x7a2f5f4a r07: 0x00000000 r08: 0x00000065 > ... > > > [1]+ Floating point exception ./sleep > -------------------->8-------------------- > I'm not sure whats the improvement here vs. the status quo. Why do you think this is confusing? The main change is that we don't print exception registers for signal based kill. Moreover, new behavior is more like x86-64 behavior. See the example: NULL pointer access on x86-64: -------------------->8-------------------- hell[3925]: segfault at 0 ip 00007f621eb56c41 sp 00007ffcaa5951b8 error 4 in libc-2.26.so[7f621ea01000+1ac000] potentially unexpected fatal signal 11. CPU: 1 PID: 3925 Comm: hell Not tainted 4.16.13-200.fc27.x86_64 #1 Hardware name: Dell Inc. Latitude 7480/00F6D3, BIOS 1.9.3 03/09/2018 RIP: 0033:0x7f621eb56c41 RSP: 002b:00007ffcaa5951b8 EFLAGS: 00010283 RAX: 000000000000000e RBX: 0000000000000000 RCX: 0000000000000000 RDX: 0000000000000000 RSI: 00000000016eb260 RDI: 0000000000000000 RBP: 00007ffcaa5951f0 R08: 0000000000000003 R09: 0000000000000077 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007ffcaa5952d0 R14: 0000000000000000 R15: 0000000000000000 FS: 00007f621efbf4c0(0000) GS:ffff8f6abe480000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000000 CR3: 00000004556a4005 CR4: 00000000003606e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 -------------------->8-------------------- Process killed by signal 11 on x86-64: -------------------->8-------------------- potentially unexpected fatal signal 11. CPU: 0 PID: 3998 Comm: sh Not tainted 4.16.13-200.fc27.x86_64 #1 Hardware name: Dell Inc. Latitude 7480/00F6D3, BIOS 1.9.3 03/09/2018 RIP: 0033:0x7fc0b13d744e RSP: 002b:00007fffba851e30 EFLAGS: 00000246 ORIG_RAX: 0000000000000101 RAX: 0000000000000003 RBX: 000055b3e21256a0 RCX: 00007fc0b13d744e RDX: 0000000000000241 RSI: 000055b3e2125540 RDI: ffffffffffffff9c RBP: 00007fffba851f40 R08: 0000000000000020 R09: 0000000000000000 R10: 00000000000001b6 R11: 0000000000000246 R12: 000000000000000a R13: 0000000000000003 R14: 0000000000000001 R15: 000055b3e2125540 FS: 00007fc0b1cdb740(0000) GS:ffff8f6abe400000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007ff33d403000 CR3: 00000003dc7ea004 CR4: 00000000003606f0 -------------------->8-------------------- NOTE: in both cases (ARC and x86-64) "/proc/sys/kernel/print-fatal-signals" was set to "1" -- Eugeniy Paltsev From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EE391C6778C for ; Tue, 3 Jul 2018 10:58:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 63A7B20855 for ; Tue, 3 Jul 2018 10:58:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=synopsys.com header.i=@synopsys.com header.b="kv4u25Db" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 63A7B20855 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752863AbeGCK6F (ORCPT ); Tue, 3 Jul 2018 06:58:05 -0400 Received: from smtprelay2.synopsys.com ([198.182.60.111]:37277 "EHLO smtprelay.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752752AbeGCK6B (ORCPT ); Tue, 3 Jul 2018 06:58:01 -0400 Received: from mailhost.synopsys.com (mailhost2.synopsys.com [10.13.184.66]) by smtprelay.synopsys.com (Postfix) with ESMTP id 43B6E10C0FF9; Tue, 3 Jul 2018 03:58:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1530615480; bh=4aG1tZ0e4NRdFqjWuCZT3ZUIz9pq5IiaHNmFO6VfmK4=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=kv4u25DbQ9Gw+rGeVhclVDdKGtv/rqi4+uGE+wbpaUYh8+6r8tXo2CzM1Cwu1g5kA 5UpA5Sd9F6pCUoeU60Hv4O0199Ov13dYTvHli7hsD7Zn9AMXYmuJW73tKS7LHCZaEB izpzZYdFYk8sdWcxNhe0Bmm3ikypv049x+BhXwk158HlSJPlZCSjtNxJkldp9oNxGi y5tB4CdpcVFlWNYK2BvLhDzS6by78j2Du5wZOKsUNlDH2hhDYJZ3SEQA23CQE77C3+ p79YeNmOWcMQbBrifCldjxjrLlAv+AWiDni5sG6a1B7thrx/J1dybCkfi6wVX9u+Z8 EiVWlzYNF7HTg== Received: from US01WEHTC3.internal.synopsys.com (us01wehtc3.internal.synopsys.com [10.15.84.232]) by mailhost.synopsys.com (Postfix) with ESMTP id 01F743405; Tue, 3 Jul 2018 03:57:59 -0700 (PDT) Received: from DE02WEHTCB.internal.synopsys.com (10.225.19.94) by US01WEHTC3.internal.synopsys.com (10.15.84.232) with Microsoft SMTP Server (TLS) id 14.3.361.1; Tue, 3 Jul 2018 03:57:59 -0700 Received: from DE02WEMBXB.internal.synopsys.com ([fe80::95ce:118a:8321:a099]) by DE02WEHTCB.internal.synopsys.com ([::1]) with mapi id 14.03.0361.001; Tue, 3 Jul 2018 12:57:57 +0200 From: Eugeniy Paltsev To: "Eugeniy.Paltsev@synopsys.com" , "Vineet Gupta" , "linux-snps-arc@lists.infradead.org" CC: "linux-kernel@vger.kernel.org" , "viro@ZenIV.linux.org.uk" , Alexey Brodkin Subject: Re: [PATCH] ARC: prevent showing irrelevant exception info in signal message Thread-Topic: [PATCH] ARC: prevent showing irrelevant exception info in signal message Thread-Index: AQHUD+Dcq7Gmeq1VYUmK5Tv6B9nu5aR8GxqAgAEdAYA= Date: Tue, 3 Jul 2018 10:57:56 +0000 Message-ID: <1530615475.30574.52.camel@synopsys.com> References: <20180629193907.17227-1-Eugeniy.Paltsev@synopsys.com> <924308fe-efb3-45f7-b5cb-45d876021f32@synopsys.com> In-Reply-To: <924308fe-efb3-45f7-b5cb-45d876021f32@synopsys.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.121.3.53] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gTW9uLCAyMDE4LTA3LTAyIGF0IDEwOjU3IC0wNzAwLCBWaW5lZXQgR3VwdGEgd3JvdGU6DQo+ ICtDQyBBbA0KPiANCj4gT24gMDYvMjkvMjAxOCAxMjozOSBQTSwgRXVnZW5peSBQYWx0c2V2IHdy b3RlOg0KPiA+IFdlIHByb2Nlc3Mgc2lnbmFscyBpbiB0aGUgZW5kIG9mIHN5c2NhbGwvZXhjZXB0 aW9uIGhhbmRsZXIuDQo+ID4gSXQgdGhlIHNpZ25hbCBpcyBmYXRhbCB3ZSBwcmludCByZWdpc3Rl cidzIGNvbnRlbnQgdXNpbmcNCj4gPiBzaG93X3JlZ3MgZnVuY3Rpb24uIHNob3dfcmVncygpIGFs c28gcHJpbnRzIGluZm9ybWF0aW9uIGFib3V0DQo+ID4gbGFzdCBleGNlcHRpb24gaGFwcGVuZWQu DQo+ID4gDQo+ID4gSW4gY2FzZSBvZiBtdWx0aWNvcmUgc3lzdGVtIHdlIGNhbiBjYXRjaCB0aGUg c2l0dWF0aW9uIHdoZW4gd2UNCj4gPiB3aWxsIHByaW50IHdyb25nIGluZm9ybWF0aW9uIGFib3V0 IGV4Y2VwdGlvbi4gU2VlIHRoZSBleGFtcGxlOg0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fXw0KPiA+IENQVS0wOiBzdGFydGVkIHRvIGhhbmRsZSBwYWdlIGZhdWx0DQo+ID4gQ1BV LTE6IHNlbnQgc2lnbmFsIHRvIHByb2Nlc3MsIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIENQVS0wDQo+ ID4gQ1BVLTA6IGVuZGVkIHBhZ2UgZmF1bHQgaGFuZGxlLiBTdGFydGVkIHRvIHByb2Nlc3Mgc2ln bmFsIGJlZm9yZQ0KPiA+ICAgICAgICByZXR1cm5pZyB0byB1c2Vyc3BhY2UuIFByb2Nlc3Mgc2ln bmFsLCB3aGljaCBpcyBzZW5kIGZyb20NCj4gPiAgICAgICAgQ1BVLTAuIEFzIHRoIHNpZ25hbCBp cyBmYXRhbCB3ZSBjYWxsIHNob3dfcmVncygpLg0KPiA+ICAgICAgICBzaG93X3JlZ3MoKSB3aWxs IHNob3cgaW5mb3JtYXRpb24gYWJvdXQgbGFzdCBleGNlcHRpb24NCj4gPiAgICAgICAgd2hpY2gg aXMgKnBhZ2UgZmF1bHQqIChpbnN0ZWFkIG9mICJ0cmFwIiB3aGljaCBpcyB1c2VkIGZvcg0KPiA+ ICAgICAgICBzaWduYWxzIGFuZCBoYXBwZW5lZCBvbiBDUFUtMCkNCj4gPiANCj4gPiBTbyB3ZSB3 aWxsIGdldCBtZXNzYWdlIGxpa2UgdGhpczoNCj4gPiAgICAgL2hvbWUvd2FpdHBpZDAyDQo+ID4g ICBwb3RlbnRpYWxseSB1bmV4cGVjdGVkIGZhdGFsIHNpZ25hbCA4Lg0KPiA+ICAgUGF0aDogL2hv bWUvd2FpdHBpZDAyDQo+ID4gICBDUFU6IDAgUElEOiAxMDAgQ29tbTogd2FpdHBpZDAyIE5vdCB0 YWludGVkIDQuMTAuMC1yYzQgIzINCj4gPiAgIHRhc2s6IDlmMTFjMjAwIHRhc2suc3RhY2s6IDlm M2FlMDAwDQo+ID4gDQo+ID4gICBbRUNSICAgXTogMHgwMDA1MDIwMCA9PiBJbnZhbGlkIFdyaXRl IEAgMHgwMDAwMDAwMCBieSBpbnNuIEAgMHgwMDAxMjNlYw0KPiA+ICAgW0VGQSAgIF06IDB4MDAw MDAwMDANCj4gPiAgIFtCTElOSyBdOiAweDEyM2VhDQo+ID4gICBbRVJFVCAgXTogMHgxMjNlYw0K PiA+ICAgICBAb2ZmIDB4MTIzZWMgaW4gWy9ob21lL3dhaXRwaWQwMl0NCj4gPiAgICAgVk1BOiAw eDAwMDEwMDAwIHRvIDB4MDAwMTYwMDANCj4gPiAgIFtTVEFUMzJdOiAweDgwMDgwODgyIDogSUUg VQ0KPiA+ICAgQlRBOiAweDAwMDEyM2VhICBTUDogMHg1ZmZkM2RiMCAgRlA6IDB4MDAwMDAwMDAN Cj4gPiAgIExQUzogMHgyMDAzMTY4NCBMUEU6IDB4MjAwMzE2OWEgTFBDOiAweDAwMDAwMDA2DQo+ ID4gICBbLS0tLS1vdGhlci1pbmZvLS0tLS1dDQo+ID4gDQo+ID4gVGhpcyBtZXNzYWdlIGlzIGNv bmZ1c2luZyBiZWNhdXNlIGl0IHNob3cgaW5mb3JtYXRpb24gYWJvdXQgcGFnZSBmYXVsdA0KPiA+ ICggW0VDUiAgIF06IDB4MDAwNTAyMDAgPT4gSW52YWxpZCBXcml0ZSApIHdoaWNoIGlzIGFic29s dXRlbHkgaXJyZWxldmFudA0KPiA+IHRvIHNpZ25hbC4NCj4gDQo+IEFncmVlZCB0aGlzIGlzIG1p c2xlYWRpbmcuIEBBbCwgaXMgdGhlcmUgYSB3YXkgdG8gaWRlbnRpZnkgcHJvY2VzcyB0ZXJtaW5h dGlvbg0KPiBmcm9tIHNpZ25hbHMgYmVjYXVzZSBpdCBkaWQgc29tZXRoaW5nIHdyb25nIHZzLiBz YXkgdW5oYW5kbGVkIHNpZ25hbC4gRm9yIGZvcm1lciwNCj4gd2Ugd2FudCB0byBkdW1wIGFkZGl0 aW9uYWwgaW5mbyBpbiBzaG93X3JlZ3MoKSBzdWNoIGFzIFBDIC8gRmF1bHQgYWRkcmVzIGV0YyBh bmQNCj4gbm90IGluIG90aGVyIHNjZW5hcmlvLg0KPiANCj4gPiBUaGlzIHNpdHVhdGlvbiB3YXMg cmVwcm9kdWNlZCB3aXRoIHdhaXRwaWQwMiBMVFAgdGVzdC4NCj4gPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fXw0KPiA+IA0KPiA+IFNvIHJlbW92ZSBwcmludGluZyBpbmZvcm1hdGlvbiBh Ym91dCBleGNlcHRpb25zIGZyb20gc2hvd19yZWdzKCkNCj4gPiB0byBhdm9pZCBjb25mdXNpbmcg bWVzc2FnZXMuIFByaW50IGluZm9ybWF0aW9uIGFib3V0IGV4Y2VwdGlvbnMNCj4gPiBvbmx5IGlu IHJlcXVpcmVkIHBsYWNlcyBpbnN0ZWFkIG9mIHNob3dfcmVncygpDQo+ID4gDQo+ID4gTm93IHdl IGRvbid0IHByaW50IGluZm9ybWF0aW9uIGFib3V0IGV4Y2VwdGlvbnMgaWYgc2lnbmFsIGlzIHNp bXBseQ0KPiA+IHNlbmQgYnkgYW5vdGhlciB1c2Vyc3BhY2UgYXBwLiBTbyBpbiBjYXNlIG9mIHdh aXRwaWQwMiB3ZSB3aWxsIHByaW50DQo+ID4gbmV4dCBtZXNzYWdlOg0KPiA+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fDQo+ID4gICAgIC4vd2FpdHBpZDAyDQo+ID4gICBwb3RlbnRpYWxs eSB1bmV4cGVjdGVkIGZhdGFsIHNpZ25hbCA4Lg0KPiA+ICAgW1NUQVQzMl06IDB4ODAwODAwODIg OiBJRSBVDQo+ID4gICBCVEE6IDB4MjAwMDBmYzQJIFNQOiAweDVmZjhiZDY0CSBGUDogMHgwMDAw MDAwMA0KPiA+ICAgTFBTOiAweDIwMDUyNGEwCUxQRTogMHgyMDA1MjRiNglMUEM6IDB4MDAwMDAw MDYNCj4gPiAgIFstLS0tLW90aGVyLWluZm8tLS0tLV0NCj4gPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fXw0KPiANCj4gVGhlIHByaW50cyBJJ20gc2VlaW5nIG5vdywgZm9yIGEgc2VndiBm cm9tIE5VTEwgcG9pbnRlciBhY2Nlc3MgaXMgZXZlbiBtb3JlDQo+IGNvbmZ1c2luZyAhDQo+IFRo ZXJlJ3MgYSBtaXh1cCBvZiBwcmludHMuLi4uDQo+IA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLT44 LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gUGF0aDogL3NlZ3YNCj4gQ1BVOiAwIFBJRDogNzAgQ29t bTogc2VndiBOb3QgdGFpbnRlZCA0LjE3LjArICM0MTINCj4gDQo+IFtFQ1IgICBdOiAweDAwMDUw MjAwID0+IEludmFsaWQgV3JpdGUgQCAweDAwMDAwMDAwIGJ5IGluc24gQCAweDAwMDEwM2FjDQo+ IFtFRkEgICBdOiAweDAwMDAwMDAwDQo+IFtCTElOSyBdOiAweDIwMDQ3YmIwDQo+IFtFUkVUICBd OiAweDEwM2FjDQo+ICAgICBAb2ZmIDB4MTAzYWMgaW4gWy9zZWd2XQ0KPiAgICAgVk1BOiAweDAw MDEwMDAwIHRvIDB4MDAwMTIwMDANCj4gDQo+IHBvdGVudGlhbGx5IHVuZXhwZWN0ZWQgZmF0YWwg c2lnbmFsIDExLg0KPiBbU1RBVDMyXTogMHg4MDA4MDg4MiA6IElFIFUgICAgDQo+IEJUQTogMHgw MDAxMDM5OCAgICAgU1A6IDB4NWZjOTVlMWMgICAgIEZQOiAweDVmYzk1ZTIwDQo+IExQUzogMHgy MDAzOWZmYyAgICBMUEU6IDB4MjAwM2EwMDAgICAgTFBDOiAweDAwMDAwMDAwDQo+IHIwMDogMHgw MDAwMDAwMSAgICByMDE6IDB4NWZjOTVlOTQgICAgcjAyOiAweDAwMDAwMDAwICAgDQo+IHIwMzog MHgwMDAwMDA2NCAgICByMDQ6IDB4ODA4MDgwODAgICAgcjA1OiAweDJmMmYyZjJmICAgDQo+IC4u Lg0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLT44LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IGFu ZCBmb3IgdGhlIHByb2Nlc3Mga2lsbGVkIGJ5IHNpZ25hbCA4LCB3ZSBnZXQgYmVsb3cuDQo+IA0K PiAtLS0tLS0tLS0tLS0tLS0tLS0tLT44LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gW0FSQ0xpbnV4 XSMga2lsbCAtOCA3MQ0KPiBbQVJDTGludXhdIyBwb3RlbnRpYWxseSB1bmV4cGVjdGVkIGZhdGFs IHNpZ25hbCA4Lg0KPiBbU1RBVDMyXTogMHg4MDA4MDg4MiA6IElFIFUgICAgDQo+IEJUQTogMHgy MDAyMDY2MCAgICAgU1A6IDB4NWZiY2RkZWMgICAgIEZQOiAweDVmYmNkZTFjDQo+IExQUzogMHgy MDAzOWZmYyAgICBMUEU6IDB4MjAwM2EwMDAgICAgTFBDOiAweDAwMDAwMDAwDQo+IHIwMDogMHhm ZmZmZmRmYyAgICByMDE6IDB4NWZiY2RkZjAgICAgcjAyOiAweDAwMDAwMDAwICAgDQo+IHIwMzog MHgwMDAwMDAwOCAgICByMDQ6IDB4ODA4MDgwODAgICAgcjA1OiAweDJmMmYyZjJmICAgDQo+IHIw NjogMHg3YTJmNWY0YSAgICByMDc6IDB4MDAwMDAwMDAgICAgcjA4OiAweDAwMDAwMDY1ICAgDQo+ IC4uLg0KPiANCj4gDQo+IFsxXSsgIEZsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbiAgIC4vc2xlZXAN Cj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0+OC0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IEknbSBub3Qg c3VyZSB3aGF0cyB0aGUgaW1wcm92ZW1lbnQgaGVyZSB2cy4gdGhlIHN0YXR1cyBxdW8uDQoNCldo eSBkbyB5b3UgdGhpbmsgdGhpcyBpcyBjb25mdXNpbmc/DQpUaGUgbWFpbiBjaGFuZ2UgaXMgdGhh dCB3ZSBkb24ndCBwcmludCBleGNlcHRpb24gcmVnaXN0ZXJzIGZvciBzaWduYWwgYmFzZWQga2ls bC4NCg0KTW9yZW92ZXIsIG5ldyBiZWhhdmlvciBpcyBtb3JlIGxpa2UgeDg2LTY0IGJlaGF2aW9y LiBTZWUgdGhlIGV4YW1wbGU6DQoNCk5VTEwgcG9pbnRlciBhY2Nlc3Mgb24geDg2LTY0Og0KLS0t LS0tLS0tLS0tLS0tLS0tLS0+OC0tLS0tLS0tLS0tLS0tLS0tLS0tDQpoZWxsWzM5MjVdOiBzZWdm YXVsdCBhdCAwIGlwIDAwMDA3ZjYyMWViNTZjNDEgc3AgMDAwMDdmZmNhYTU5NTFiOCBlcnJvciA0 IGluIGxpYmMtMi4yNi5zb1s3ZjYyMWVhMDEwMDArMWFjMDAwXQ0KcG90ZW50aWFsbHkgdW5leHBl Y3RlZCBmYXRhbCBzaWduYWwgMTEuDQpDUFU6IDEgUElEOiAzOTI1IENvbW06IGhlbGwgTm90IHRh aW50ZWQgNC4xNi4xMy0yMDAuZmMyNy54ODZfNjQgIzENCkhhcmR3YXJlIG5hbWU6IERlbGwgSW5j LiBMYXRpdHVkZSA3NDgwLzAwRjZEMywgQklPUyAxLjkuMyAwMy8wOS8yMDE4DQpSSVA6IDAwMzM6 MHg3ZjYyMWViNTZjNDENClJTUDogMDAyYjowMDAwN2ZmY2FhNTk1MWI4IEVGTEFHUzogMDAwMTAy ODMNClJBWDogMDAwMDAwMDAwMDAwMDAwZSBSQlg6IDAwMDAwMDAwMDAwMDAwMDAgUkNYOiAwMDAw MDAwMDAwMDAwMDAwDQpSRFg6IDAwMDAwMDAwMDAwMDAwMDAgUlNJOiAwMDAwMDAwMDAxNmViMjYw IFJESTogMDAwMDAwMDAwMDAwMDAwMA0KUkJQOiAwMDAwN2ZmY2FhNTk1MWYwIFIwODogMDAwMDAw MDAwMDAwMDAwMyBSMDk6IDAwMDAwMDAwMDAwMDAwNzcNClIxMDogMDAwMDAwMDAwMDAwMDAwMCBS MTE6IDAwMDAwMDAwMDAwMDAyNDYgUjEyOiAwMDAwMDAwMDAwMDAwMDAwDQpSMTM6IDAwMDA3ZmZj YWE1OTUyZDAgUjE0OiAwMDAwMDAwMDAwMDAwMDAwIFIxNTogMDAwMDAwMDAwMDAwMDAwMA0KRlM6 ICAwMDAwN2Y2MjFlZmJmNGMwKDAwMDApIEdTOmZmZmY4ZjZhYmU0ODAwMDAoMDAwMCkga25sR1M6 MDAwMDAwMDAwMDAwMDAwMA0KQ1M6ICAwMDEwIERTOiAwMDAwIEVTOiAwMDAwIENSMDogMDAwMDAw MDA4MDA1MDAzMw0KQ1IyOiAwMDAwMDAwMDAwMDAwMDAwIENSMzogMDAwMDAwMDQ1NTZhNDAwNSBD UjQ6IDAwMDAwMDAwMDAzNjA2ZTANCkRSMDogMDAwMDAwMDAwMDAwMDAwMCBEUjE6IDAwMDAwMDAw MDAwMDAwMDAgRFIyOiAwMDAwMDAwMDAwMDAwMDAwDQpEUjM6IDAwMDAwMDAwMDAwMDAwMDAgRFI2 OiAwMDAwMDAwMGZmZmUwZmYwIERSNzogMDAwMDAwMDAwMDAwMDQwMA0KLS0tLS0tLS0tLS0tLS0t LS0tLS0+OC0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClByb2Nlc3Mga2lsbGVkIGJ5IHNpZ25hbCAx MSBvbiB4ODYtNjQ6DQotLS0tLS0tLS0tLS0tLS0tLS0tLT44LS0tLS0tLS0tLS0tLS0tLS0tLS0N CnBvdGVudGlhbGx5IHVuZXhwZWN0ZWQgZmF0YWwgc2lnbmFsIDExLg0KQ1BVOiAwIFBJRDogMzk5 OCBDb21tOiBzaCBOb3QgdGFpbnRlZCA0LjE2LjEzLTIwMC5mYzI3Lng4Nl82NCAjMQ0KSGFyZHdh cmUgbmFtZTogRGVsbCBJbmMuIExhdGl0dWRlIDc0ODAvMDBGNkQzLCBCSU9TIDEuOS4zIDAzLzA5 LzIwMTgNClJJUDogMDAzMzoweDdmYzBiMTNkNzQ0ZQ0KUlNQOiAwMDJiOjAwMDA3ZmZmYmE4NTFl MzAgRUZMQUdTOiAwMDAwMDI0NiBPUklHX1JBWDogMDAwMDAwMDAwMDAwMDEwMQ0KUkFYOiAwMDAw MDAwMDAwMDAwMDAzIFJCWDogMDAwMDU1YjNlMjEyNTZhMCBSQ1g6IDAwMDA3ZmMwYjEzZDc0NGUN ClJEWDogMDAwMDAwMDAwMDAwMDI0MSBSU0k6IDAwMDA1NWIzZTIxMjU1NDAgUkRJOiBmZmZmZmZm ZmZmZmZmZjljDQpSQlA6IDAwMDA3ZmZmYmE4NTFmNDAgUjA4OiAwMDAwMDAwMDAwMDAwMDIwIFIw OTogMDAwMDAwMDAwMDAwMDAwMA0KUjEwOiAwMDAwMDAwMDAwMDAwMWI2IFIxMTogMDAwMDAwMDAw MDAwMDI0NiBSMTI6IDAwMDAwMDAwMDAwMDAwMGENClIxMzogMDAwMDAwMDAwMDAwMDAwMyBSMTQ6 IDAwMDAwMDAwMDAwMDAwMDEgUjE1OiAwMDAwNTViM2UyMTI1NTQwDQpGUzogIDAwMDA3ZmMwYjFj ZGI3NDAoMDAwMCkgR1M6ZmZmZjhmNmFiZTQwMDAwMCgwMDAwKSBrbmxHUzowMDAwMDAwMDAwMDAw MDAwDQpDUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAwMDgwMDUwMDMzDQpD UjI6IDAwMDA3ZmYzM2Q0MDMwMDAgQ1IzOiAwMDAwMDAwM2RjN2VhMDA0IENSNDogMDAwMDAwMDAw MDM2MDZmMA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0+OC0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0K Tk9URTogaW4gYm90aCBjYXNlcyAoQVJDIGFuZCB4ODYtNjQpICIvcHJvYy9zeXMva2VybmVsL3By aW50LWZhdGFsLXNpZ25hbHMiIHdhcw0Kc2V0IHRvICIxIg0KDQotLSANCiBFdWdlbml5IFBhbHRz ZXY=