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.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED 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 D59BAC6778A for ; Tue, 3 Jul 2018 16:20:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 839DC23ECE for ; Tue, 3 Jul 2018 16:20:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HHIowl2n" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 839DC23ECE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.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 S933772AbeGCQUQ (ORCPT ); Tue, 3 Jul 2018 12:20:16 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:39278 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933569AbeGCQUN (ORCPT ); Tue, 3 Jul 2018 12:20:13 -0400 Received: by mail-wr0-f195.google.com with SMTP id b8-v6so2575450wro.6 for ; Tue, 03 Jul 2018 09:20:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=EkZjQBQ3lmuTKD+2wPHV/1uQ3NIyz4LgTpDgxXKf9uY=; b=HHIowl2nR+mEjJJukim+y4iGGOeTjQJY+G+hgeaE/KTu/7kD6fuCtf2lfC1U4mr7uX anFqfMixxjQRC3VE8ctcFD28QIQZ8zEAezpzgTTeZRG92BGMSxYhmOK2THaG8JAJtgYJ UF9l6RfRn2tNRvu8juTmvTXju0BBLSIEVlbJjYQK3hSpStqcAUXkgeApIimd2Ol5xZ6z uXmfXxZSTvzSBe/0GbKhYKPz0HoaP5KqGIB54qGdDiUMz5NzE7PpWYdfCIfumtfb/5HV Ez1CEEGU1ZIjmyAjGl3j1T9AhJl+KuALSop57+xk9vAMz5noj/o5Nk5wtUO2+2Vs8u7K uygQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=EkZjQBQ3lmuTKD+2wPHV/1uQ3NIyz4LgTpDgxXKf9uY=; b=caOVnb/+vz28xqLenf1HRLe0JX41GZDQ7DmcdFx06/jApWj4mMLBv4u9hM8DNsBDBb HXcjIOIiWTPf//Tb7fvcq6ddaZEA3PwSeMbS7fSgNCuvYOnQspUYza7t7ZFVrrSIumCo ZDTJoGmwXdYbY5tfp2jG4uMtyTAgxQq7RiI5EBKxDO+2XtyQjHyPZok1aAoWLXbPnyzd xPOign6BRFI9hgquBLYlyFuoi3v4EpalZDNUtGmu/E+dVlXwkAMfaAU8sIETU3Bjar09 huKyw6TyUYxyQYqj4VEdbZuSGF3ewSMKxj4U6FjeH2B5VU0bWS04HDo70FfOlpIQVKj/ 8YeQ== X-Gm-Message-State: APt69E1YVrKNfC2fzhAEpkVNmO1G5cpLIlLhnDF3hG07utnFJUtaCneJ oEke3+WSjCCxpzozu28pyt9i69dhdfcUPiR2uRs= X-Google-Smtp-Source: AAOMgpdK8cBQ7ZW/J9lFvf31oTc2A1Hm+kKcPIjDrGfPJ3uffuCDNSv9kNNQK/no5QCzhQ98vfjos30PVJTqvN4T8sA= X-Received: by 2002:adf:afd3:: with SMTP id y19-v6mr25115693wrd.176.1530634812230; Tue, 03 Jul 2018 09:20:12 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:adf:8e6b:0:0:0:0:0 with HTTP; Tue, 3 Jul 2018 09:20:11 -0700 (PDT) In-Reply-To: References: <20180413161601.109431-1-djkurtz@chromium.org> <6e46904a-d721-d583-8ab5-82cb07df7934@amd.com> From: Alex Deucher Date: Tue, 3 Jul 2018 12:20:11 -0400 Message-ID: Subject: Re: [PATCH] drm/amdgpu/acp: Fix slab-out-of-bounds in mfd_add_device in acp_hw_init To: Daniel Kurtz Cc: "Deucher, Alexander" , David Airlie , LKML , amd-gfx list , Akshu Agrawal , jclinton@chromium.org, dri-devel , Vijendar Mukunda , Christian Koenig Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jul 2, 2018 at 5:48 PM, Daniel Kurtz wrote: > Hi Alex, > > On Sun, Apr 15, 2018 at 9:48 PM Agrawal, Akshu wrote: >> >> >> >> On 4/13/2018 9:45 PM, Daniel Kurtz wrote: >> > Commit 51f7415039d4 ("drm/amd/amdgpu: creating two I2S instances for >> > stoney/cz") added support for the "BT_I2S" ACP i2s channel. As part of >> > this change, one additional acp resource was added, but the "num_resource" >> > count was accidentally incremented by 2. >> > >> > This incorrect count eventually causes mfd_add_device() to try to access >> > an invalid memory address (the location of non-existent resource 5. >> > >> > This fault was detected by running a KASAN enabled kernel, which produced >> > the following splat at boot: >> > >> > [ 6.612987] ================================================================== >> > [ 6.613509] BUG: KASAN: slab-out-of-bounds in mfd_add_device+0x4bc/0x7a7 >> > [ 6.613509] Read of size 8 at addr ffff880107d4dc58 by task swapper/0/1 >> > [ 6.613509] >> > [ 6.613509] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.14.33 #349 >> > [ 6.613509] Hardware name: Google Grunt/Grunt, BIOS Google_Grunt.10543.0.2018_04_03_1812 04/02/2018 >> > [ 6.613509] Call Trace: >> > [ 6.613509] dump_stack+0x4d/0x63 >> > [ 6.613509] print_address_description+0x80/0x2d6 >> > [ 6.613509] ? mfd_add_device+0x4bc/0x7a7 >> > [ 6.613509] kasan_report+0x255/0x295 >> > [ 6.613509] mfd_add_device+0x4bc/0x7a7 >> > [ 6.613509] ? kasan_kmalloc+0x99/0xa8 >> > [ 6.613509] ? mfd_add_devices+0x58/0xe4 >> > [ 6.613509] ? __kmalloc+0x154/0x178 >> > [ 6.613509] mfd_add_devices+0xa5/0xe4 >> > [ 6.613509] acp_hw_init+0x92e/0xc4a >> > [ 6.613509] amdgpu_device_init+0x1dfb/0x22a2 >> > [ 6.613509] ? kmalloc_order+0x53/0x5d >> > [ 6.613509] ? kmalloc_order_trace+0x23/0xb3 >> > [ 6.613509] amdgpu_driver_load_kms+0xce/0x267 >> > [ 6.613509] drm_dev_register+0x169/0x2fb >> > [ 6.613509] amdgpu_pci_probe+0x217/0x242 >> > [ 6.613509] pci_device_probe+0x101/0x18e >> > [ 6.613509] driver_probe_device+0x1dd/0x419 >> > [ 6.613509] ? ___might_sleep+0x80/0x1b6 >> > [ 6.613509] __driver_attach+0x9f/0xc9 >> > [ 6.613509] ? driver_probe_device+0x419/0x419 >> > [ 6.613509] bus_for_each_dev+0xbc/0xe1 >> > [ 6.613509] bus_add_driver+0x189/0x2c0 >> > [ 6.613509] driver_register+0x108/0x156 >> > [ 6.613509] ? ttm_init+0x67/0x67 >> > [ 6.613509] do_one_initcall+0xb2/0x161 >> > [ 6.613509] kernel_init_freeable+0x25a/0x308 >> > [ 6.613509] ? rest_init+0xcc/0xcc >> > [ 6.613509] kernel_init+0x11/0x10d >> > [ 6.613509] ? rest_init+0xcc/0xcc >> > [ 6.613509] ret_from_fork+0x22/0x40 >> > [ 6.613509] >> > [ 6.613509] Allocated by task 1: >> > [ 6.613509] save_stack+0x46/0xce >> > [ 6.613509] kasan_kmalloc+0x99/0xa8 >> > [ 6.613509] kmem_cache_alloc_trace+0x11a/0x13e >> > [ 6.613509] acp_hw_init+0x210/0xc4a >> > [ 6.613509] amdgpu_device_init+0x1dfb/0x22a2 >> > [ 6.613509] amdgpu_driver_load_kms+0xce/0x267 >> > [ 6.613509] drm_dev_register+0x169/0x2fb >> > [ 6.613509] amdgpu_pci_probe+0x217/0x242 >> > [ 6.613509] pci_device_probe+0x101/0x18e >> > [ 6.613509] driver_probe_device+0x1dd/0x419 >> > [ 6.613509] __driver_attach+0x9f/0xc9 >> > [ 6.613509] bus_for_each_dev+0xbc/0xe1 >> > [ 6.613509] bus_add_driver+0x189/0x2c0 >> > [ 6.613509] driver_register+0x108/0x156 >> > [ 6.613509] do_one_initcall+0xb2/0x161 >> > [ 6.613509] kernel_init_freeable+0x25a/0x308 >> > [ 6.613509] kernel_init+0x11/0x10d >> > [ 6.613509] ret_from_fork+0x22/0x40 >> > [ 6.613509] >> > [ 6.613509] Freed by task 0: >> > [ 6.613509] (stack is not available) >> > [ 6.613509] >> > [ 6.613509] The buggy address belongs to the object at ffff880107d4db08 >> > [ 6.613509] which belongs to the cache kmalloc-512 of size 512 >> > [ 6.613509] The buggy address is located 336 bytes inside of >> > [ 6.613509] 512-byte region [ffff880107d4db08, ffff880107d4dd08) >> > [ 6.613509] The buggy address belongs to the page: >> > [ 6.613509] page:ffffea00041f5300 count:1 mapcount:0 mapping: (null) index:0x0 compound_mapcount: 0 >> > [ 6.613509] flags: 0x8000000000008100(slab|head) >> > [ 6.613509] raw: 8000000000008100 0000000000000000 0000000000000000 0000000100120012 >> > [ 6.613509] raw: ffffea0004208520 ffff88010b001680 ffff88010b002cc0 0000000000000000 >> > [ 6.613509] page dumped because: kasan: bad access detected >> > [ 6.613509] >> > [ 6.613509] Memory state around the buggy address: >> > [ 6.613509] ffff880107d4db00: fc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >> > [ 6.613509] ffff880107d4db80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >> > [ 6.613509] >ffff880107d4dc00: 00 00 00 00 00 00 00 00 00 fc fc fc fc fc fc fc >> > [ 6.613509] ^ >> > [ 6.613509] ffff880107d4dc80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc >> > [ 6.613509] ffff880107d4dd00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc >> > [ 6.613509] ================================================================== >> > >> > Fixes: 51f7415039d4 ("drm/amd/amdgpu: creating two I2S instances for stoney/cz") >> > Signed-off-by: Daniel Kurtz >> Acked-by: Akshu Agrawal > > > Was this patch ever picked up? I can't find it in agd5f/linux. It wasn't applied. I don't see 51f7415039d4 ("drm/amd/amdgpu: creating two I2S instances for stoney/cz") upstream yet either. Daniel, Vijendar, which ones do you want applied? Can you send me the patches? Alex > > Thanks, > -Dan > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: Re: [PATCH] drm/amdgpu/acp: Fix slab-out-of-bounds in mfd_add_device in acp_hw_init Date: Tue, 3 Jul 2018 12:20:11 -0400 Message-ID: References: <20180413161601.109431-1-djkurtz@chromium.org> <6e46904a-d721-d583-8ab5-82cb07df7934@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Kurtz Cc: David Airlie , LKML , amd-gfx list , Akshu Agrawal , jclinton@chromium.org, dri-devel , Vijendar Mukunda , "Deucher, Alexander" , Christian Koenig List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBKdWwgMiwgMjAxOCBhdCA1OjQ4IFBNLCBEYW5pZWwgS3VydHogPGRqa3VydHpAY2hy b21pdW0ub3JnPiB3cm90ZToKPiBIaSBBbGV4LAo+Cj4gT24gU3VuLCBBcHIgMTUsIDIwMTggYXQg OTo0OCBQTSBBZ3Jhd2FsLCBBa3NodSA8QWtzaHUuQWdyYXdhbEBhbWQuY29tPiB3cm90ZToKPj4K Pj4KPj4KPj4gT24gNC8xMy8yMDE4IDk6NDUgUE0sIERhbmllbCBLdXJ0eiB3cm90ZToKPj4gPiBD b21taXQgNTFmNzQxNTAzOWQ0ICgiZHJtL2FtZC9hbWRncHU6IGNyZWF0aW5nIHR3byBJMlMgaW5z dGFuY2VzIGZvcgo+PiA+IHN0b25leS9jeiIpIGFkZGVkIHN1cHBvcnQgZm9yIHRoZSAiQlRfSTJT IiBBQ1AgaTJzIGNoYW5uZWwuICBBcyBwYXJ0IG9mCj4+ID4gdGhpcyBjaGFuZ2UsIG9uZSBhZGRp dGlvbmFsIGFjcCByZXNvdXJjZSB3YXMgYWRkZWQsIGJ1dCB0aGUgIm51bV9yZXNvdXJjZSIKPj4g PiBjb3VudCB3YXMgYWNjaWRlbnRhbGx5IGluY3JlbWVudGVkIGJ5IDIuCj4+ID4KPj4gPiBUaGlz IGluY29ycmVjdCBjb3VudCBldmVudHVhbGx5IGNhdXNlcyBtZmRfYWRkX2RldmljZSgpIHRvIHRy eSB0byBhY2Nlc3MKPj4gPiBhbiBpbnZhbGlkIG1lbW9yeSBhZGRyZXNzICh0aGUgbG9jYXRpb24g b2Ygbm9uLWV4aXN0ZW50IHJlc291cmNlIDUuCj4+ID4KPj4gPiBUaGlzIGZhdWx0IHdhcyBkZXRl Y3RlZCBieSBydW5uaW5nIGEgS0FTQU4gZW5hYmxlZCBrZXJuZWwsIHdoaWNoIHByb2R1Y2VkCj4+ ID4gdGhlIGZvbGxvd2luZyBzcGxhdCBhdCBib290Ogo+PiA+Cj4+ID4gWyAgICA2LjYxMjk4N10g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Cj4+ID4gWyAgICA2LjYxMzUwOV0gQlVHOiBLQVNBTjogc2xhYi1vdXQtb2YtYm91 bmRzIGluIG1mZF9hZGRfZGV2aWNlKzB4NGJjLzB4N2E3Cj4+ID4gWyAgICA2LjYxMzUwOV0gUmVh ZCBvZiBzaXplIDggYXQgYWRkciBmZmZmODgwMTA3ZDRkYzU4IGJ5IHRhc2sgc3dhcHBlci8wLzEK Pj4gPiBbICAgIDYuNjEzNTA5XQo+PiA+IFsgICAgNi42MTM1MDldIENQVTogMCBQSUQ6IDEgQ29t bTogc3dhcHBlci8wIE5vdCB0YWludGVkIDQuMTQuMzMgIzM0OQo+PiA+IFsgICAgNi42MTM1MDld IEhhcmR3YXJlIG5hbWU6IEdvb2dsZSBHcnVudC9HcnVudCwgQklPUyBHb29nbGVfR3J1bnQuMTA1 NDMuMC4yMDE4XzA0XzAzXzE4MTIgMDQvMDIvMjAxOAo+PiA+IFsgICAgNi42MTM1MDldIENhbGwg VHJhY2U6Cj4+ID4gWyAgICA2LjYxMzUwOV0gIGR1bXBfc3RhY2srMHg0ZC8weDYzCj4+ID4gWyAg ICA2LjYxMzUwOV0gIHByaW50X2FkZHJlc3NfZGVzY3JpcHRpb24rMHg4MC8weDJkNgo+PiA+IFsg ICAgNi42MTM1MDldICA/IG1mZF9hZGRfZGV2aWNlKzB4NGJjLzB4N2E3Cj4+ID4gWyAgICA2LjYx MzUwOV0gIGthc2FuX3JlcG9ydCsweDI1NS8weDI5NQo+PiA+IFsgICAgNi42MTM1MDldICBtZmRf YWRkX2RldmljZSsweDRiYy8weDdhNwo+PiA+IFsgICAgNi42MTM1MDldICA/IGthc2FuX2ttYWxs b2MrMHg5OS8weGE4Cj4+ID4gWyAgICA2LjYxMzUwOV0gID8gbWZkX2FkZF9kZXZpY2VzKzB4NTgv MHhlNAo+PiA+IFsgICAgNi42MTM1MDldICA/IF9fa21hbGxvYysweDE1NC8weDE3OAo+PiA+IFsg ICAgNi42MTM1MDldICBtZmRfYWRkX2RldmljZXMrMHhhNS8weGU0Cj4+ID4gWyAgICA2LjYxMzUw OV0gIGFjcF9od19pbml0KzB4OTJlLzB4YzRhCj4+ID4gWyAgICA2LjYxMzUwOV0gIGFtZGdwdV9k ZXZpY2VfaW5pdCsweDFkZmIvMHgyMmEyCj4+ID4gWyAgICA2LjYxMzUwOV0gID8ga21hbGxvY19v cmRlcisweDUzLzB4NWQKPj4gPiBbICAgIDYuNjEzNTA5XSAgPyBrbWFsbG9jX29yZGVyX3RyYWNl KzB4MjMvMHhiMwo+PiA+IFsgICAgNi42MTM1MDldICBhbWRncHVfZHJpdmVyX2xvYWRfa21zKzB4 Y2UvMHgyNjcKPj4gPiBbICAgIDYuNjEzNTA5XSAgZHJtX2Rldl9yZWdpc3RlcisweDE2OS8weDJm Ygo+PiA+IFsgICAgNi42MTM1MDldICBhbWRncHVfcGNpX3Byb2JlKzB4MjE3LzB4MjQyCj4+ID4g WyAgICA2LjYxMzUwOV0gIHBjaV9kZXZpY2VfcHJvYmUrMHgxMDEvMHgxOGUKPj4gPiBbICAgIDYu NjEzNTA5XSAgZHJpdmVyX3Byb2JlX2RldmljZSsweDFkZC8weDQxOQo+PiA+IFsgICAgNi42MTM1 MDldICA/IF9fX21pZ2h0X3NsZWVwKzB4ODAvMHgxYjYKPj4gPiBbICAgIDYuNjEzNTA5XSAgX19k cml2ZXJfYXR0YWNoKzB4OWYvMHhjOQo+PiA+IFsgICAgNi42MTM1MDldICA/IGRyaXZlcl9wcm9i ZV9kZXZpY2UrMHg0MTkvMHg0MTkKPj4gPiBbICAgIDYuNjEzNTA5XSAgYnVzX2Zvcl9lYWNoX2Rl disweGJjLzB4ZTEKPj4gPiBbICAgIDYuNjEzNTA5XSAgYnVzX2FkZF9kcml2ZXIrMHgxODkvMHgy YzAKPj4gPiBbICAgIDYuNjEzNTA5XSAgZHJpdmVyX3JlZ2lzdGVyKzB4MTA4LzB4MTU2Cj4+ID4g WyAgICA2LjYxMzUwOV0gID8gdHRtX2luaXQrMHg2Ny8weDY3Cj4+ID4gWyAgICA2LjYxMzUwOV0g IGRvX29uZV9pbml0Y2FsbCsweGIyLzB4MTYxCj4+ID4gWyAgICA2LjYxMzUwOV0gIGtlcm5lbF9p bml0X2ZyZWVhYmxlKzB4MjVhLzB4MzA4Cj4+ID4gWyAgICA2LjYxMzUwOV0gID8gcmVzdF9pbml0 KzB4Y2MvMHhjYwo+PiA+IFsgICAgNi42MTM1MDldICBrZXJuZWxfaW5pdCsweDExLzB4MTBkCj4+ ID4gWyAgICA2LjYxMzUwOV0gID8gcmVzdF9pbml0KzB4Y2MvMHhjYwo+PiA+IFsgICAgNi42MTM1 MDldICByZXRfZnJvbV9mb3JrKzB4MjIvMHg0MAo+PiA+IFsgICAgNi42MTM1MDldCj4+ID4gWyAg ICA2LjYxMzUwOV0gQWxsb2NhdGVkIGJ5IHRhc2sgMToKPj4gPiBbICAgIDYuNjEzNTA5XSAgc2F2 ZV9zdGFjaysweDQ2LzB4Y2UKPj4gPiBbICAgIDYuNjEzNTA5XSAga2FzYW5fa21hbGxvYysweDk5 LzB4YTgKPj4gPiBbICAgIDYuNjEzNTA5XSAga21lbV9jYWNoZV9hbGxvY190cmFjZSsweDExYS8w eDEzZQo+PiA+IFsgICAgNi42MTM1MDldICBhY3BfaHdfaW5pdCsweDIxMC8weGM0YQo+PiA+IFsg ICAgNi42MTM1MDldICBhbWRncHVfZGV2aWNlX2luaXQrMHgxZGZiLzB4MjJhMgo+PiA+IFsgICAg Ni42MTM1MDldICBhbWRncHVfZHJpdmVyX2xvYWRfa21zKzB4Y2UvMHgyNjcKPj4gPiBbICAgIDYu NjEzNTA5XSAgZHJtX2Rldl9yZWdpc3RlcisweDE2OS8weDJmYgo+PiA+IFsgICAgNi42MTM1MDld ICBhbWRncHVfcGNpX3Byb2JlKzB4MjE3LzB4MjQyCj4+ID4gWyAgICA2LjYxMzUwOV0gIHBjaV9k ZXZpY2VfcHJvYmUrMHgxMDEvMHgxOGUKPj4gPiBbICAgIDYuNjEzNTA5XSAgZHJpdmVyX3Byb2Jl X2RldmljZSsweDFkZC8weDQxOQo+PiA+IFsgICAgNi42MTM1MDldICBfX2RyaXZlcl9hdHRhY2gr MHg5Zi8weGM5Cj4+ID4gWyAgICA2LjYxMzUwOV0gIGJ1c19mb3JfZWFjaF9kZXYrMHhiYy8weGUx Cj4+ID4gWyAgICA2LjYxMzUwOV0gIGJ1c19hZGRfZHJpdmVyKzB4MTg5LzB4MmMwCj4+ID4gWyAg ICA2LjYxMzUwOV0gIGRyaXZlcl9yZWdpc3RlcisweDEwOC8weDE1Ngo+PiA+IFsgICAgNi42MTM1 MDldICBkb19vbmVfaW5pdGNhbGwrMHhiMi8weDE2MQo+PiA+IFsgICAgNi42MTM1MDldICBrZXJu ZWxfaW5pdF9mcmVlYWJsZSsweDI1YS8weDMwOAo+PiA+IFsgICAgNi42MTM1MDldICBrZXJuZWxf aW5pdCsweDExLzB4MTBkCj4+ID4gWyAgICA2LjYxMzUwOV0gIHJldF9mcm9tX2ZvcmsrMHgyMi8w eDQwCj4+ID4gWyAgICA2LjYxMzUwOV0KPj4gPiBbICAgIDYuNjEzNTA5XSBGcmVlZCBieSB0YXNr IDA6Cj4+ID4gWyAgICA2LjYxMzUwOV0gKHN0YWNrIGlzIG5vdCBhdmFpbGFibGUpCj4+ID4gWyAg ICA2LjYxMzUwOV0KPj4gPiBbICAgIDYuNjEzNTA5XSBUaGUgYnVnZ3kgYWRkcmVzcyBiZWxvbmdz IHRvIHRoZSBvYmplY3QgYXQgZmZmZjg4MDEwN2Q0ZGIwOAo+PiA+IFsgICAgNi42MTM1MDldICB3 aGljaCBiZWxvbmdzIHRvIHRoZSBjYWNoZSBrbWFsbG9jLTUxMiBvZiBzaXplIDUxMgo+PiA+IFsg ICAgNi42MTM1MDldIFRoZSBidWdneSBhZGRyZXNzIGlzIGxvY2F0ZWQgMzM2IGJ5dGVzIGluc2lk ZSBvZgo+PiA+IFsgICAgNi42MTM1MDldICA1MTItYnl0ZSByZWdpb24gW2ZmZmY4ODAxMDdkNGRi MDgsIGZmZmY4ODAxMDdkNGRkMDgpCj4+ID4gWyAgICA2LjYxMzUwOV0gVGhlIGJ1Z2d5IGFkZHJl c3MgYmVsb25ncyB0byB0aGUgcGFnZToKPj4gPiBbICAgIDYuNjEzNTA5XSBwYWdlOmZmZmZlYTAw MDQxZjUzMDAgY291bnQ6MSBtYXBjb3VudDowIG1hcHBpbmc6ICAgICAgICAgIChudWxsKSBpbmRl eDoweDAgY29tcG91bmRfbWFwY291bnQ6IDAKPj4gPiBbICAgIDYuNjEzNTA5XSBmbGFnczogMHg4 MDAwMDAwMDAwMDA4MTAwKHNsYWJ8aGVhZCkKPj4gPiBbICAgIDYuNjEzNTA5XSByYXc6IDgwMDAw MDAwMDAwMDgxMDAgMDAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAxMDAx MjAwMTIKPj4gPiBbICAgIDYuNjEzNTA5XSByYXc6IGZmZmZlYTAwMDQyMDg1MjAgZmZmZjg4MDEw YjAwMTY4MCBmZmZmODgwMTBiMDAyY2MwIDAwMDAwMDAwMDAwMDAwMDAKPj4gPiBbICAgIDYuNjEz NTA5XSBwYWdlIGR1bXBlZCBiZWNhdXNlOiBrYXNhbjogYmFkIGFjY2VzcyBkZXRlY3RlZAo+PiA+ IFsgICAgNi42MTM1MDldCj4+ID4gWyAgICA2LjYxMzUwOV0gTWVtb3J5IHN0YXRlIGFyb3VuZCB0 aGUgYnVnZ3kgYWRkcmVzczoKPj4gPiBbICAgIDYuNjEzNTA5XSAgZmZmZjg4MDEwN2Q0ZGIwMDog ZmMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAKPj4gPiBbICAg IDYuNjEzNTA5XSAgZmZmZjg4MDEwN2Q0ZGI4MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAKPj4gPiBbICAgIDYuNjEzNTA5XSA+ZmZmZjg4MDEwN2Q0ZGMw MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgZmMgZmMgZmMgZmMgZmMgZmMgZmMKPj4gPiBb ICAgIDYuNjEzNTA5XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgo+PiA+IFsgICAgNi42MTM1MDldICBmZmZmODgwMTA3ZDRkYzgwOiBmYyBmYyBm YyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYwo+PiA+IFsgICAgNi42MTM1 MDldICBmZmZmODgwMTA3ZDRkZDAwOiBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBm YyBmYyBmYyBmYyBmYwo+PiA+IFsgICAgNi42MTM1MDldID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+PiA+Cj4+ID4gRml4 ZXM6IDUxZjc0MTUwMzlkNCAoImRybS9hbWQvYW1kZ3B1OiBjcmVhdGluZyB0d28gSTJTIGluc3Rh bmNlcyBmb3Igc3RvbmV5L2N6IikKPj4gPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgS3VydHogPGRq a3VydHpAY2hyb21pdW0ub3JnPgo+PiBBY2tlZC1ieTogQWtzaHUgQWdyYXdhbCA8YWtzaHUuYWdy YXdhbEBhbWQuY29tPgo+Cj4KPiBXYXMgdGhpcyBwYXRjaCBldmVyIHBpY2tlZCB1cD8gIEkgY2Fu J3QgZmluZCBpdCBpbiBhZ2Q1Zi9saW51eC4KCkl0IHdhc24ndCBhcHBsaWVkLiAgSSBkb24ndCBz ZWUgNTFmNzQxNTAzOWQ0ICgiZHJtL2FtZC9hbWRncHU6CmNyZWF0aW5nIHR3byBJMlMgaW5zdGFu Y2VzIGZvciBzdG9uZXkvY3oiKSB1cHN0cmVhbSB5ZXQgZWl0aGVyLgpEYW5pZWwsIFZpamVuZGFy LCB3aGljaCBvbmVzIGRvIHlvdSB3YW50IGFwcGxpZWQ/ICBDYW4geW91IHNlbmQgbWUgdGhlCnBh dGNoZXM/CgpBbGV4Cgo+Cj4gVGhhbmtzLAo+IC1EYW4KPiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==