From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754529AbdKGTyt (ORCPT ); Tue, 7 Nov 2017 14:54:49 -0500 Received: from mail-dm3nam03on0055.outbound.protection.outlook.com ([104.47.41.55]:46378 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751986AbdKGTyq (ORCPT ); Tue, 7 Nov 2017 14:54:46 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Harry.Wentland@amd.com; Subject: Re: AMD, please run Smatch on your driver To: Dan Carpenter , amd-gfx@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org References: <20171106113440.2ug2fdunoty4zwo2@mwanda> From: Harry Wentland Message-ID: <2a9cb9a0-a033-c3c3-6f0f-f580becc4be7@amd.com> Date: Tue, 7 Nov 2017 14:54:38 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171106113440.2ug2fdunoty4zwo2@mwanda> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.55.250] X-ClientProxiedBy: CO2PR18CA0048.namprd18.prod.outlook.com (10.165.92.144) To CY4PR1201MB2471.namprd12.prod.outlook.com (10.172.116.10) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c0236dbc-99e2-4713-9644-08d526196403 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603199);SRVR:CY4PR1201MB2471; X-Microsoft-Exchange-Diagnostics: 1;CY4PR1201MB2471;3:TcaQOu/BbS5KGCpmaJSmfq51ocH1w4hgrkz2vSbCtIKz6Ruwu2aMocX5wI9UcII6kMgu7gr0B+VWZR3fbFzelZcyfZEMwoGuJvVJVHQiSjlQWfivb9q3xACequpxvuFgXgg/5kgIudr3FMTFazWPh7X6cgxbnNE/IUD4V+fIt2tn/hneh1wHdBTMmqWbZ4+8E4kP6sfjxZjLdcIR9iQWQn0GAMloj/qqTNJznJrZbVuGwYN92VLqXvjvbYfa12Ou;25:5pX/JiW2jgHp+o11UJyTTqn095/ZRLJnOgHRW8e0lSqD51UVCpDjFImkhOUH4XBPGBAr1VIu0TpTCTbVXah0++r5od8MDpSA7Y5LgM2q8J1CApZiEwn4v+D1xpCBPApNrVq0wianQjLI2/3N0Gxxfx52S1WB4/nns0OcQM0WZImxcVtcigs3ftaZeSdVcGmmTmK8Qudnoo6C8Eb9OgyxPUmzhcmVZqErJXB0GfVn6w6eWQnaweyRQ93ntMGmMJJtjB2e20er2Rq+F9NMrpqVELEZEDgU1AAQQFqAVCaoNOgddumclHASdjrPJ0nIGBkyr2RgWv+2EVr+x+p3L7FSpA==;31:jbbot/mZqPVWHoZcu1w7El5KMxar2hnP+4rCmeE8KU977WaHuiv+c9xQE8PF5RTqSamihllEXaypuzqT2OrV89dbaEuymHmfGyz73ZJp+J/Tv83CzoWw7e4nt0rF3pWoQhUEv7iq3SLixm3y9brFhKDATFfvP7+eDha42Rkjc93Jm0U7QigSfXf//6RW8u5cOHC+e3mb1DhjFNGCn/Zh9hWmvskyMvSKI7978wPjGcA= X-MS-TrafficTypeDiagnostic: CY4PR1201MB2471: X-Microsoft-Exchange-Diagnostics: 1;CY4PR1201MB2471;20:wyoy1grvHNyA1FaVk8OOQeeWt4oWuRjwbLWJv3trH0x2YZasoGtEE2iEj2FWWtZH+qyN/aeikZtbbjqEyHmFaYoSdZgQO87VhvuiIAA5wZlNOCXsc0MIP9J6eiOuBROt9nXYeptjeQU8d02hveN9rhBSp55iwjNy5LM4YnEJfVPKroVET25uhGQFBqPUMjT7h3HXSn9Zfevx15eO8qGtmPYm67Oz7hmFYNEJWOBGliQEkd7N4kYD2lc6L1MACKBiredExV1XgSjMrzfcV0zXh6tu+K4XegBpYE4n9zkJoZsCErZ4opvvIzpSw7CbMXsapFtMa4Ph9O72AAnTTDtdvmxXEUZMgRER2V+NPR+59b4ojy8osrZbUQQAYq2JNIc6SCJeDjBLmSYkuZ3KOuhLyKV9FF4RY8Gn4+QBtrDpO0XeK2A+Y258RWsld6GgJHLMMjKUs/0i2X2oeqXeRaazInHhG0zE5v4WuCDeNjWCfu9PQ+w3ayxIGRcgQEariPiR;4:rMr8y2wSggbPUSBZcBd/klkZWQk2+Srauq8DY71LquFpzqFDMXJeuahKUpfbT78MVnIUVmIxkXV2tTCUrznjQoes1Uk+kJ7sELKqVJfx2bceZs/TTloOsYzSHMlvMDSslUlrWYxm/Y7mdH99hDq2fRvW+fcOI4juCSBvNwJOoBEc8jbRfGbzhjt1JMkFY6nZZP+cmjw42EyFpXJkVK7bSnY34Ey/pkKRmPKygbPQxbnzGl6Iqucy2Rt1A4+02649EMpsaDeuDrPfOiOG/BA6wTlAokS9O1eAkZjcgxXl1QgcSJl0wwopLX5Fc7U/muVl X-Exchange-Antispam-Report-Test: UriScan:(217544274631240); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(100000703101)(100105400095)(3231021)(6055026)(6041248)(20161123555025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:CY4PR1201MB2471;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:CY4PR1201MB2471; X-Forefront-PRVS: 0484063412 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(6009001)(346002)(39860400002)(376002)(24454002)(377424004)(189002)(199003)(52314003)(6306002)(2950100002)(50466002)(105586002)(551934003)(316002)(229853002)(58126008)(3846002)(6666003)(6486002)(90366009)(5660300001)(77096006)(65826007)(2906002)(106356001)(230700001)(6116002)(16576012)(101416001)(25786009)(97736004)(76176999)(31696002)(53936002)(7736002)(305945005)(64126003)(8936002)(86362001)(81166006)(81156014)(8676002)(54356999)(65956001)(189998001)(66066001)(33646002)(6246003)(68736007)(36756003)(65806001)(31686004)(478600001)(50986999)(83506002)(16526018)(966005)(72206003)(23676003)(47776003)(53546010)(4326008);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR1201MB2471;H:[172.29.157.105];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyMDFNQjI0NzE7MjM6S08ra1EraE5Db1k3ZTBKeHRTZ3Vzb3Qw?= =?utf-8?B?Wm1Zend3YnV5b2wrSFNDNWdzMzI1VVRpdnFWeHh3ZGh2SmhQcVVhQzVuNFQ1?= =?utf-8?B?aU1IaDU5b3U0RS9jbE5qZkU0Zmh4T01vM1pUeHhpREV5NXdDRWo1aU1GSEpR?= =?utf-8?B?RlFaOHRYWllKaU8wSzUzeXhkNE9iNmhvYlIrOFgvSER0N045ZWY5bVJWTmhL?= =?utf-8?B?bEZkcjNMcFBSaVY4bklTQlZMTjBOV3BkL0d4aUpLcjRNRXhrV1gwN2lEODFQ?= =?utf-8?B?dUhmTzNMS212TVRSdXB6eVF5YXNEYUNDMjk0cTU5dHJOb2oxVGQ4MVlpdlN3?= =?utf-8?B?TFFBKzhKeGZnUjcvR0g3aDlhWkkyVmlDd3RsSUVyL291OU15U2ZCU1poYk5M?= =?utf-8?B?c29JWlNHY050eit4MlZHRXpDMnFpQm1icWVVRzkvZk5LRXBick1wMXpFVW90?= =?utf-8?B?Yzk4QWEvTEl6N3ZjNXdyRUpWdi81d081cnJLTDV4WmVFZnJUa2tnU1c3SmlM?= =?utf-8?B?cUViKy9PWFFkZmxOOEMzV0JwZ3drMzBvMGJhYmRmd0RRVlNiWHhyVUkrMjgz?= =?utf-8?B?TGV2bElnM2lQRE44UFpiczFCTzFMaUZiTmM5QlIyQkxDTWhwbU5oOE00VSsr?= =?utf-8?B?clUxZVRKUG9CeU4vSGxnQS9zc052d2ZVa2UxYlppS0oyL0ZKMVBWcUdiaVBO?= =?utf-8?B?Y3dVSWJDTW1PdHo1OXhsOElyVFFaZlptVjZzeFZSZG5DYno4blJMMzFDUUdC?= =?utf-8?B?c3VGckthbTlhUTNseVRjbEE2Z0RySE9OdFpFR3lWYUlibHFOamxCSzloanY4?= =?utf-8?B?cnhNL1NXSHlydmpYdmNtV3ZiYnNVeXRYVWxoZm9uenl2dkhPVnJnbEhxQjlt?= =?utf-8?B?TjQxRkhtM3pscjM2cEJENS9XNERBbWZxUUpxYUlSSHI1czFwa2M5MHIwZEZo?= =?utf-8?B?cW10bHVOUUg3L2xLaDJEWTM3cDJUcTZtUHZyYVY4Q2FpNlpURUdlVHRoMmho?= =?utf-8?B?bnU2alVsbURVaE9UcmpLMU5JaHlVKytsNHBMdXlwV3JLV2JIYjFGbDBmdzFI?= =?utf-8?B?WVBVcS9mL0ZCaVkyYkxRRk9ZTXJZWndDNFkySTNYOGF2eVAxV213TDNCaXFr?= =?utf-8?B?MVpRWnBJSzEvbFNlZDJYa2ZlZEtXSTBvZ1Y2TGFIVjRSRFRDdzJEV2gxN3or?= =?utf-8?B?MGdEdlh1MmZMUll3OXRTaFgxS09XdlVqU0R1NjFWZEJOTGJIN1UzZXVhYlhy?= =?utf-8?B?dzhXVGo1S1N2aVRDS3o3OFhWNG1MMzdhMTNVa2lrcXNWOW9SUmRJZTRkTld6?= =?utf-8?B?dStnUm8zaEY2Z3BQNC95SFdmNnlvTnpoVTg2cllTVkwwZUliWnNUMVN4TnRs?= =?utf-8?B?WWpJNGJrejBtdnZMRjE0ZzVDM3gyZXA5SW9xWDZ5cVlTVnFnaVJnVlFiQUNr?= =?utf-8?B?ck40aGtCVGx3NmhMcFhpWEVoNWJvNC85WWtMeks3UnV1VUdQWmdwK1JqM2pL?= =?utf-8?B?VlNvUHQ1SDAxTEFOVVJlTzVZZU1UWDN4akFmV3dMSy9zMWloVmx0eWgydE96?= =?utf-8?B?WVZkbFV5S1gvem1nZ2NYdXQvakpKQ3phWGxUdFdIeVRzT0t4T0s5SkNvcWxU?= =?utf-8?B?Z04rR3VaOWhxRFJOSDA2bUxJQWdpV3UyZVhiZXg3cGN4ZmFJSSszUHFyUStq?= =?utf-8?B?RnAySTYxZHp1dFJ6Z01sczZKdlpyNCtWU29ad0s5d0lmQkF2MWJXbmg5dGw2?= =?utf-8?B?YXpSQU1mUTNndkJTTTFnTGRwbjRYYk84clNDeW9GMmJYbjM4OG9WSExEeERl?= =?utf-8?B?cUJnK0pKbFZhcGlMT2FPOGdXZTNQbVRrT09WekwxTVkyNEZKUFNWa1NKOGVu?= =?utf-8?B?RUwrK0NHWUtrTkQweDZrb2FRNXRtL3Jvc0hIcnNpaVZLY3NEYkxQRFV0ZVFv?= =?utf-8?B?WU1wWEhZa1N0R1o1eERlVFlPVE1idTZzYnd0S1Q2Rk1pOG9ZYzc1K2VWR1Zp?= =?utf-8?Q?BB+2phCc?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR1201MB2471;6:LujntQc+SsyDC60/pa7dVhiGpfxX/UnrOcM5lDZDhi2lFng2LgQvPImDzj51nvagDTRj4bY2q8ZFG+2/f6qkTyG7s63WmDZnAFbW+lZiigTZ8e4mkQrWrlpvwCB2t8/TobR9Z9rWJQ6p5Qzp1Ogs/RQmiGB8hpFwArcUKfBmxhnC/8x9rw5p/Pa9eLTJ5HPQCtr1WLREIfA2p8VLTz0GUau6eAeB51hpzfKSvXoFmUyyKksK8Uj08ju/1Qox2HaZW67xqHqhG59sqpvPwqsd7MrHdad+F3k5Cz7BS2lkFUr3zGSj0YZH5eheZVOslfPR4fgRW1DDEeOLm3PuY2oeUN/g36IgdgwbTxdt+6ro1j8=;5:lnN4Gf3Rhi7yBoo7GsvL2FX4S/rVx6XbVeWbPLdieRbOihBkGZB1KXc48UtMvjVntm/iP2GmECP9Uoi3XnsBVR0hfbpFPfuW3vjkHgujP4KmcsfByOzBv7xEly9YoMHPooCTYd1RIEP0IQRd5hirKxtbPo5s8YOkNVZkvlemI9k=;24:8+TLu6tlFaWfLfp9oE89mbbWUOsu97CJY+3cQ5nt24LxtjrwTKlNZmKQJTKyqa0X6x/Nb1Q7GOyY7+stfjV/k1aNTRpFhJ3nmT+AqG0hc7c=;7:5+0T7m8JGNdEtQTy7U8vsQu54krnhzZDB1F6F5/InipWpzQ7MP6X+CUHCQkfzcAb7P2OJKfhSp/k73BrQtMAToc5gw7ECIZAC53B9A7g1ddPkbr1cmLNTkVNW7yZIdHZEnXvA5bWvKY+Phwbe2/g70GEsku+0W5oWRt/YiJRtHg4vYf2TXw0x2r1mzFv2coOoN5/tzOqUUMWWLfWo5DmjXn3+uIW0d08Uh5oTfXHaYsCvhtxRYNTVB462jW9qSzl SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR1201MB2471;20:4BYmVvBtltLLuCVacoOHtMnCZLyGFRNjLJRm9WgFbvhkns0Vz9rbJcl7utdmp6preIxvWs/SJi/WRgYpW+FKa7cNCwrFtn9iy55HTzwvYWeQIYwgfszpA0cjcFXcJO3ix5Wk3xgwnB/h6xFZtq7NdwODOoRlxzrQ3hzW01mfWnD3oreTmqpX2XWlOke3ruDKRx2pRPD0RzqwPfr/vWTvtsVBVJT929SGQSTdb2phVy/8Ib7R8jHJa8BEk/wvg6fO X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2017 19:54:43.1162 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c0236dbc-99e2-4713-9644-08d526196403 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1201MB2471 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Thanks, Dan, for bringing this to our attention. We (the display guys here) weren't aware of smatch and will give it a spin and try to address some of the remaining items (after your, Dave's, and Ernst's patches). Harry On 2017-11-06 06:34 AM, Dan Carpenter wrote: > Linux-next was offline for the last month and the AMD drm driver went > through major changes. Anyway, I'm a bit overwhelmed by the number of > warnings and I'm not going to be able to go through them all so I'm just > sending them to you unfiltered. > > Part of the problem is that I'm not running the released version of > Smatch myself. That has two effects. 1) The released version is > crappier than I had imagined. 2) I get *way* more warnings than you see > which is overwhelming... So this is mostly my fault and I will try to > do better. > > Here are the current warnings from Friday's linux-next, lightly edited. > I know that everyone hates a big dump of static checker warnings... > Speaking of being ignored, I sent a fix for this one back in August but > never heard back: > > drivers/gpu/drm/amd/amdgpu/ci_dpm.c:4553 ci_set_mc_special_registers() > error: buffer overflow 'table->mc_reg_address' 16 <= 16 > > https://lists.freedesktop.org/archives/amd-gfx/2017-August/012333.html > > So this is partly your fault as well because if you cleaned up static > checker warnings little by little, then they wouldn't pile up like this. > Eventually, everyone is going to have to start running Smatch for > themselves because it scales better than relying on me to do it. > > regards, > dan carpenter > > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:2224 amdgpu_device_init() warn: 'adev->rio_mem' was not released on error > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:2395 amdgpu_device_init() warn: 'adev->rio_mem' was not released on error > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:3373 amdgpu_debugfs_regs_write() warn: 'mutex:&adev->pm.mutex' is sometimes locked here and sometimes unlocked. > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:3377 amdgpu_debugfs_regs_write() warn: 'mutex:&adev->pm.mutex' is sometimes locked here and sometimes unlocked. > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:3771 amdgpu_debugfs_gpr_read() error: buffer overflow 'data' 1024 <= 4095 > drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c:155 amdgpu_driver_load_kms() warn: we tested 'r' before and it was 'false' > drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c:689 amdgpu_gem_op_ioctl() warn: should 'robj->tbo.mem.page_alignment << 12' be a 64 bit type? > drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c:196 amdgpu_cs_parser_init() warn: 'mutex:&p->ctx->lock' is sometimes locked here and sometimes unlocked. > drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c:674 amdgpu_cs_parser_bos() warn: we tested 'r' before and it was 'false' > drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c:755 amdgpu_cs_parser_fini() warn: 'mutex:&parser->ctx->lock' is sometimes locked here and sometimes unlocked. > drivers/gpu/drm/amd/amdgpu/atombios_i2c.c:72 amdgpu_atombios_i2c_process_i2c_ch() warn: impossible condition '(num > 255) => (0-255 > 255)' > drivers/gpu/drm/amd/amdgpu/amdgpu_queue_mgr.c:217 amdgpu_queue_mgr_map() warn: variable dereferenced before check 'mgr' (see line 215) > drivers/gpu/drm/amd/amdgpu/kv_dpm.c:1618 kv_get_acp_boot_level() warn: always true condition '(table->entries[i]->clk >= 0) => (0-u32max >= 0)' > drivers/gpu/drm/amd/amdgpu/ci_dpm.c:4560 ci_set_mc_special_registers() error: buffer overflow 'table->mc_reg_address' 16 <= 16 > drivers/gpu/drm/amd/amdgpu/ci_dpm.c:5065 ci_request_link_speed_change_before_state_change() warn: missing break? reassigning 'pi->force_pcie_gen' > drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c:5256 gfx_v7_0_get_cu_info() error: buffer overflow 'cu_info->bitmap' 4 <= 4 > drivers/gpu/drm/amd/amdgpu/si.c:1288 si_common_early_init() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/dce_v6_0.c:3026 dce_v6_0_pageflip_irq() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/si_dpm.c:6242 si_request_link_speed_change_before_state_change() warn: missing break? reassigning 'si_pi->force_pcie_gen' > drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c:5222 gfx_v8_0_pre_soft_reset() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c:7105 gfx_v8_0_get_cu_info() error: buffer overflow 'cu_info->bitmap' 4 <= 4 > drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c:3077 gfx_v9_0_soft_reset() warn: we tested 'grbm_soft_reset' before and it was 'true' > drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c:3644 gfx_v9_0_ring_emit_ib_gfx() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c:4457 gfx_v9_0_get_cu_info() error: buffer overflow 'cu_info->bitmap' 4 <= 4 > drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c:605 amdgpu_cgs_lock_grbm_idx() warn: 'mutex:&adev->grbm_idx_mutex' is sometimes locked here and sometimes unlocked. > drivers/gpu/drm/amd/amdgpu/../scheduler/gpu_scheduler.c:696 amd_sched_init() warn: call of 'kthread_create_on_node' with non-constant format argument > drivers/gpu/drm/amd/amdgpu/../powerplay/smumgr/tonga_smumgr.c:3128 tonga_set_mc_special_registers() error: buffer overflow 'table->mc_reg_address' 16 <= 16 > drivers/gpu/drm/amd/amdgpu/../powerplay/smumgr/polaris10_smumgr.c:916 polaris10_calculate_sclk_params() warn: should 'clock << table->SclkFcwRangeTable[sclk_setting->PllRange].postdiv' be a 64 bit type? > drivers/gpu/drm/amd/amdgpu/../powerplay/smumgr/polaris10_smumgr.c:931 polaris10_calculate_sclk_params() warn: should 'ss_target_freq << table->SclkFcwRangeTable[sclk_setting->PllRange].postdiv' be a 64 bit type? > drivers/gpu/drm/amd/amdgpu/../powerplay/smumgr/ci_smumgr.c:462 ci_populate_single_graphic_level() warn: we tested 'result' before and it was 'false' > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/processpptables.c:397 get_clock_voltage_dependency_table() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/hardwaremanager.c:248 phm_check_smc_update_required_for_display_configuration() warn: signedness bug returning '(-22)' > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/process_pptables_v1_0.c:207 get_platform_power_management_table() warn: struct type mismatch 'phm_ppm_table vs _ATOM_Tonga_PPM_Table' > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/ppatomctrl.c:220 atomctrl_calculate_voltage_evv_on_sclk() warn: function puts 1184 bytes on stack > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/ppatomfwctrl.c:43 pp_atomfwctrl_lookup_voltage_type_v4() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/ppatomfwctrl.c:51 pp_atomfwctrl_lookup_voltage_type_v4() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/smu7_hwmgr.c:3514 smu7_request_link_speed_change_before_state_change() warn: missing break? reassigning 'data->force_pcie_gen' > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/smu7_powertune.c:979 smu7_power_control_set_level() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/vega10_hwmgr.c:3030 vega10_get_pp_table_entry_callback_func() warn: buffer overflow 'vega10_power_state->performance_levels' 2 <= 7 > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/vega10_hwmgr.c:3030 vega10_get_pp_table_entry_callback_func() warn: buffer overflow 'vega10_power_state->performance_levels' 2 <= 7 > drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:521 detect_mst_link_for_all_connectors() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:1019 handle_hpd_rx_irq() warn: 'mutex:&aconnector->hpd_lock' is sometimes locked here and sometimes unlocked. > drivers/gpu/drm/amd/amdgpu/../display/dc/dc.h:932 dc_get_link_at_index() error: buffer overflow 'dc->links' 12 <= 31 > drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:2288 create_fake_sink() error: we previously assumed 'sink' could be null (see line 2285) > drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:2430 dm_crtc_duplicate_state() error: potential null dereference 'state'. (kzalloc returns null) > drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:2672 create_eml_sink() warn: variable dereferenced before check 'aconnector->base.edid_blob_ptr' (see line 2670) > drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:2673 create_eml_sink() warn: this array is probably non-NULL. 'aconnector->base.edid_blob_ptr->data' > drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:3422 create_i2c() error: potential null dereference 'i2c'. (kzalloc returns null) > drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:3895 amdgpu_dm_commit_planes() error: double unlock 'spin_lock:&crtc->dev->event_lock' > drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:3895 amdgpu_dm_commit_planes() error: double unlock 'irqsave:flags' > drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:4157 amdgpu_dm_atomic_commit_tail() warn: variable dereferenced before check 'dm_new_crtc_state->stream' (see line 4153) > drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:4294 dm_restore_drm_connector_state() warn: variable dereferenced before check 'disconnected_acrtc' (see line 4292) > drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:4716 amdgpu_dm_atomic_check() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:4866 amdgpu_dm_add_sink_to_freesync_module() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/basics/log_helpers.c:79 dc_conn_log() error: buffer overflow 'signal_type_info_tbl' 10 <= 10 > drivers/gpu/drm/amd/amdgpu/../display/dc/bios/command_table2.c:376 init_set_crtc_timing() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser2.c:1376 get_firmware_info_v3_1() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dce_calcs.c:104 calculate_bandwidth() warn: function puts 1552 bytes on stack > drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dce_calcs.c:2798 bw_calcs() error: potential null dereference 'data'. (kzalloc returns null) > drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1159 dcn_find_normalized_clock_vdd_Level() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_audio.c:182 check_audio_bandwidth_hdmi() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_link_encoder.c:669 dce110_link_encoder_validate_dp_output() warn: we tested 'enc110->base.features.flags.bits.IS_YCBCR_CAPABLE' before and it was 'false' > drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_opp.c:192 set_spatial_dither() warn: we tested 'params->flags.SPATIAL_DITHER_DEPTH == 2' before and it was 'false' > drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_dmcu.c:133 dce_dmcu_set_psr_enable() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_abm.c:94 get_current_backlight_16_bit() warn: should 'bl_pwm << (1 + bl_int_count)' be a 64 bit type? > drivers/gpu/drm/amd/amdgpu/../display/dc/i2caux/dce110/i2c_hw_engine_dce110.c:136 release_engine() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/i2caux/dce110/i2c_hw_engine_dce110.c:309 process_transaction() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/i2caux/dce110/aux_engine_dce110.c:321 process_channel_reply() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_resource.c:923 dcn10_acquire_idle_pipe_for_layer() error: we previously assumed 'head_pipe' could be null (see line 917) > drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_hw_sequencer.c:1696 dcn10_translate_regamma_to_hw_format() error: buffer overflow 'seg_distr' 34 <= 34 > drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_timing_generator.c:248 tgn10_program_timing() warn: we tested 'tg->dlg_otg_param.vstartup_start > asic_blank_end' before and it was 'true' > drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_dpp_cm.c:128 program_gamut_remap() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/dml/display_rq_dlg_calc.c:603 get_meta_and_pte_attr() warn: add some parenthesis here? > drivers/gpu/drm/amd/amdgpu/../display/dc/dml/display_rq_dlg_calc.c:603 get_meta_and_pte_attr() warn: maybe use && instead of & > drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dml1_display_rq_dlg_calc.c:875 get_surf_rq_param() warn: add some parenthesis here? > drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dml1_display_rq_dlg_calc.c:875 get_surf_rq_param() warn: maybe use && instead of & > drivers/gpu/drm/amd/amdgpu/../display/dc/dml/display_mode_vba.c:436 fetch_socbb_params() error: buffer overflow 'soc->clock_limits' 7 <= 7 > drivers/gpu/drm/amd/amdgpu/../display/dc/dml/display_mode_vba.c:451 fetch_socbb_params() error: buffer overflow 'soc->clock_limits' 7 <= 7 > drivers/gpu/drm/amd/amdgpu/../display/dc/dce120/dce120_timing_generator.c:296 dce120_timing_generator_tear_down_global_swap_lock() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/dce110/dce110_hw_sequencer.c:606 dce110_translate_regamma_to_hw_format() error: buffer overflow 'seg_distr' 16 <= 16 > drivers/gpu/drm/amd/amdgpu/../display/dc/dce110/dce110_hw_sequencer.c:778 dce110_enable_stream() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/dce110/dce110_hw_sequencer.c:1309 apply_single_controller_ctx_to_hw() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/dce110/dce110_hw_sequencer.c:2159 set_default_colors() error: we previously assumed 'pipe_ctx->stream' could be null (see line 2149) > drivers/gpu/drm/amd/amdgpu/../display/dc/dce110/dce110_hw_sequencer.c:2597 dce110_get_min_vblank_time_us() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/dce110/dce110_hw_sequencer.c:2727 dce110_program_front_end_for_pipe() warn: variable dereferenced before check 'dc->current_state' (see line 2722) > drivers/gpu/drm/amd/amdgpu/../display/dc/dce110/dce110_hw_sequencer.c:2893 dce110_apply_ctx_for_surface() error: we previously assumed 'pipe_ctx->plane_res.mi' could be null (see line 2885) > drivers/gpu/drm/amd/amdgpu/../display/dc/dce110/dce110_resource.c:1044 underlay_create() warn: possible memory leak of 'dce110_miv' > drivers/gpu/drm/amd/amdgpu/../display/dc/dce110/dce110_resource.c:1044 underlay_create() warn: possible memory leak of 'dce110_oppv' > drivers/gpu/drm/amd/amdgpu/../display/dc/dce110/dce110_resource.c:1044 underlay_create() warn: possible memory leak of 'dce110_tgv' > drivers/gpu/drm/amd/amdgpu/../display/dc/dce110/dce110_resource.c:1044 underlay_create() warn: possible memory leak of 'dce110_xfmv' > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:619 construct() warn: possible memory leak of 'dc_ctx' > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:619 construct() warn: possible memory leak of 'dc_vbios' > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:619 construct() warn: possible memory leak of 'dcn_ip' > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:619 construct() warn: possible memory leak of 'dcn_soc' > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:966 dc_commit_planes_to_stream() error: potential null dereference 'flip_addr'. (kcalloc returns null) > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:968 dc_commit_planes_to_stream() error: potential null dereference 'plane_info'. (kcalloc returns null) > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:978 dc_commit_planes_to_stream() error: potential null dereference 'scaling_info'. (kcalloc returns null) > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_link.c:1908 dc_link_setup_psr() warn: variable dereferenced before check 'link' (see line 1902) > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_resource.c:872 resource_build_scaling_params() error: we previously assumed 'pipe_ctx->plane_res.xfm' could be null (see line 860) > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_resource.c:875 resource_build_scaling_params() error: we previously assumed 'pipe_ctx->plane_res.dpp' could be null (see line 864) > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_resource.c:997 acquire_free_pipe_for_stream() error: we previously assumed 'head_pipe' could be null (see line 994) > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_resource.c:1804 dc_validate_global_state() error: we previously assumed 'new_ctx' could be null (see line 1774) > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_resource.c:2123 set_vendor_info_packet() warn: we tested 'hdmi_vic_mode' before and it was 'true' > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:185 dc_stream_set_cursor_attributes() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:189 dc_stream_set_cursor_attributes() warn: inconsistent indenting > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:301 dc_stream_set_cursor_position() error: we previously assumed 'hubp' could be null (see line 297) > drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c:119 kfd_doorbell_init() warn: argument 3 to %08lX specifier is cast from pointer > drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c:195 kfd_get_kernel_doorbell() warn: argument 4 to %08lX specifier is cast from pointer > _______________________________________________ > amd-gfx mailing list > amd-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Harry Wentland Subject: Re: AMD, please run Smatch on your driver Date: Tue, 7 Nov 2017 14:54:38 -0500 Message-ID: <2a9cb9a0-a033-c3c3-6f0f-f580becc4be7@amd.com> References: <20171106113440.2ug2fdunoty4zwo2@mwanda> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171106113440.2ug2fdunoty4zwo2@mwanda> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Dan Carpenter , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org VGhhbmtzLCBEYW4sIGZvciBicmluZ2luZyB0aGlzIHRvIG91ciBhdHRlbnRpb24uIFdlICh0aGUg ZGlzcGxheSBndXlzIGhlcmUpIHdlcmVuJ3QgYXdhcmUgb2Ygc21hdGNoIGFuZCB3aWxsIGdpdmUg aXQgYSBzcGluIGFuZCB0cnkgdG8gYWRkcmVzcyBzb21lIG9mIHRoZSByZW1haW5pbmcgaXRlbXMg KGFmdGVyIHlvdXIsIERhdmUncywgYW5kIEVybnN0J3MgcGF0Y2hlcykuCgpIYXJyeQoKT24gMjAx Ny0xMS0wNiAwNjozNCBBTSwgRGFuIENhcnBlbnRlciB3cm90ZToKPiBMaW51eC1uZXh0IHdhcyBv ZmZsaW5lIGZvciB0aGUgbGFzdCBtb250aCBhbmQgdGhlIEFNRCBkcm0gZHJpdmVyIHdlbnQKPiB0 aHJvdWdoIG1ham9yIGNoYW5nZXMuICBBbnl3YXksIEknbSBhIGJpdCBvdmVyd2hlbG1lZCBieSB0 aGUgbnVtYmVyIG9mCj4gd2FybmluZ3MgYW5kIEknbSBub3QgZ29pbmcgdG8gYmUgYWJsZSB0byBn byB0aHJvdWdoIHRoZW0gYWxsIHNvIEknbSBqdXN0Cj4gc2VuZGluZyB0aGVtIHRvIHlvdSB1bmZp bHRlcmVkLgo+IAo+IFBhcnQgb2YgdGhlIHByb2JsZW0gaXMgdGhhdCBJJ20gbm90IHJ1bm5pbmcg dGhlIHJlbGVhc2VkIHZlcnNpb24gb2YKPiBTbWF0Y2ggbXlzZWxmLiAgVGhhdCBoYXMgdHdvIGVm ZmVjdHMuICAxKSBUaGUgcmVsZWFzZWQgdmVyc2lvbiBpcwo+IGNyYXBwaWVyIHRoYW4gSSBoYWQg aW1hZ2luZWQuICAyKSBJIGdldCAqd2F5KiBtb3JlIHdhcm5pbmdzIHRoYW4geW91IHNlZQo+IHdo aWNoIGlzIG92ZXJ3aGVsbWluZy4uLiAgU28gdGhpcyBpcyBtb3N0bHkgbXkgZmF1bHQgYW5kIEkg d2lsbCB0cnkgdG8KPiBkbyBiZXR0ZXIuCj4gCj4gSGVyZSBhcmUgdGhlIGN1cnJlbnQgd2Fybmlu Z3MgZnJvbSBGcmlkYXkncyBsaW51eC1uZXh0LCBsaWdodGx5IGVkaXRlZC4KPiBJIGtub3cgdGhh dCBldmVyeW9uZSBoYXRlcyBhIGJpZyBkdW1wIG9mIHN0YXRpYyBjaGVja2VyIHdhcm5pbmdzLi4u Cj4gU3BlYWtpbmcgb2YgYmVpbmcgaWdub3JlZCwgSSBzZW50IGEgZml4IGZvciB0aGlzIG9uZSBi YWNrIGluIEF1Z3VzdCBidXQKPiBuZXZlciBoZWFyZCBiYWNrOgo+IAo+ICAgZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvY2lfZHBtLmM6NDU1MyBjaV9zZXRfbWNfc3BlY2lhbF9yZWdpc3RlcnMo KQo+ICAgZXJyb3I6IGJ1ZmZlciBvdmVyZmxvdyAndGFibGUtPm1jX3JlZ19hZGRyZXNzJyAxNiA8 PSAxNgo+IAo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL2FtZC1nZngv MjAxNy1BdWd1c3QvMDEyMzMzLmh0bWwKPiAKPiBTbyB0aGlzIGlzIHBhcnRseSB5b3VyIGZhdWx0 IGFzIHdlbGwgYmVjYXVzZSBpZiB5b3UgY2xlYW5lZCB1cCBzdGF0aWMKPiBjaGVja2VyIHdhcm5p bmdzIGxpdHRsZSBieSBsaXR0bGUsIHRoZW4gdGhleSB3b3VsZG4ndCBwaWxlIHVwIGxpa2UgdGhp cy4KPiBFdmVudHVhbGx5LCBldmVyeW9uZSBpcyBnb2luZyB0byBoYXZlIHRvIHN0YXJ0IHJ1bm5p bmcgU21hdGNoIGZvcgo+IHRoZW1zZWx2ZXMgYmVjYXVzZSBpdCBzY2FsZXMgYmV0dGVyIHRoYW4g cmVseWluZyBvbiBtZSB0byBkbyBpdC4KPiAKPiByZWdhcmRzLAo+IGRhbiBjYXJwZW50ZXIKPiAK PiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmM6MjIyNCBhbWRncHVf ZGV2aWNlX2luaXQoKSB3YXJuOiAnYWRldi0+cmlvX21lbScgd2FzIG5vdCByZWxlYXNlZCBvbiBl cnJvcgo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYzoyMzk1IGFt ZGdwdV9kZXZpY2VfaW5pdCgpIHdhcm46ICdhZGV2LT5yaW9fbWVtJyB3YXMgbm90IHJlbGVhc2Vk IG9uIGVycm9yCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjMz NzMgYW1kZ3B1X2RlYnVnZnNfcmVnc193cml0ZSgpIHdhcm46ICdtdXRleDomYWRldi0+cG0ubXV0 ZXgnIGlzIHNvbWV0aW1lcyBsb2NrZWQgaGVyZSBhbmQgc29tZXRpbWVzIHVubG9ja2VkLgo+IGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYzozMzc3IGFtZGdwdV9kZWJ1 Z2ZzX3JlZ3Nfd3JpdGUoKSB3YXJuOiAnbXV0ZXg6JmFkZXYtPnBtLm11dGV4JyBpcyBzb21ldGlt ZXMgbG9ja2VkIGhlcmUgYW5kIHNvbWV0aW1lcyB1bmxvY2tlZC4KPiBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmM6Mzc3MSBhbWRncHVfZGVidWdmc19ncHJfcmVhZCgp IGVycm9yOiBidWZmZXIgb3ZlcmZsb3cgJ2RhdGEnIDEwMjQgPD0gNDA5NQo+IGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYzoxNTUgYW1kZ3B1X2RyaXZlcl9sb2FkX2ttcygp IHdhcm46IHdlIHRlc3RlZCAncicgYmVmb3JlIGFuZCBpdCB3YXMgJ2ZhbHNlJwo+IGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzo2ODkgYW1kZ3B1X2dlbV9vcF9pb2N0bCgp IHdhcm46IHNob3VsZCAncm9iai0+dGJvLm1lbS5wYWdlX2FsaWdubWVudCA8PCAxMicgYmUgYSA2 NCBiaXQgdHlwZT8KPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxOTYg YW1kZ3B1X2NzX3BhcnNlcl9pbml0KCkgd2FybjogJ211dGV4OiZwLT5jdHgtPmxvY2snIGlzIHNv bWV0aW1lcyBsb2NrZWQgaGVyZSBhbmQgc29tZXRpbWVzIHVubG9ja2VkLgo+IGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjY3NCBhbWRncHVfY3NfcGFyc2VyX2JvcygpIHdh cm46IHdlIHRlc3RlZCAncicgYmVmb3JlIGFuZCBpdCB3YXMgJ2ZhbHNlJwo+IGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjc1NSBhbWRncHVfY3NfcGFyc2VyX2ZpbmkoKSB3 YXJuOiAnbXV0ZXg6JnBhcnNlci0+Y3R4LT5sb2NrJyBpcyBzb21ldGltZXMgbG9ja2VkIGhlcmUg YW5kIHNvbWV0aW1lcyB1bmxvY2tlZC4KPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hdG9t Ymlvc19pMmMuYzo3MiBhbWRncHVfYXRvbWJpb3NfaTJjX3Byb2Nlc3NfaTJjX2NoKCkgd2Fybjog aW1wb3NzaWJsZSBjb25kaXRpb24gJyhudW0gPiAyNTUpID0+ICgwLTI1NSA+IDI1NSknCj4gZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3F1ZXVlX21nci5jOjIxNyBhbWRncHVfcXVl dWVfbWdyX21hcCgpIHdhcm46IHZhcmlhYmxlIGRlcmVmZXJlbmNlZCBiZWZvcmUgY2hlY2sgJ21n cicgKHNlZSBsaW5lIDIxNSkKPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9rdl9kcG0uYzox NjE4IGt2X2dldF9hY3BfYm9vdF9sZXZlbCgpIHdhcm46IGFsd2F5cyB0cnVlIGNvbmRpdGlvbiAn KHRhYmxlLT5lbnRyaWVzW2ldLT5jbGsgPj0gMCkgPT4gKDAtdTMybWF4ID49IDApJwo+IGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jOjQ1NjAgY2lfc2V0X21jX3NwZWNpYWxfcmVn aXN0ZXJzKCkgZXJyb3I6IGJ1ZmZlciBvdmVyZmxvdyAndGFibGUtPm1jX3JlZ19hZGRyZXNzJyAx NiA8PSAxNgo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jOjUwNjUgY2lfcmVx dWVzdF9saW5rX3NwZWVkX2NoYW5nZV9iZWZvcmVfc3RhdGVfY2hhbmdlKCkgd2FybjogbWlzc2lu ZyBicmVhaz8gcmVhc3NpZ25pbmcgJ3BpLT5mb3JjZV9wY2llX2dlbicKPiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jOjUyNTYgZ2Z4X3Y3XzBfZ2V0X2N1X2luZm8oKSBlcnJv cjogYnVmZmVyIG92ZXJmbG93ICdjdV9pbmZvLT5iaXRtYXAnIDQgPD0gNAo+IGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L3NpLmM6MTI4OCBzaV9jb21tb25fZWFybHlfaW5pdCgpIHdhcm46IGlu Y29uc2lzdGVudCBpbmRlbnRpbmcKPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2VfdjZf MC5jOjMwMjYgZGNlX3Y2XzBfcGFnZWZsaXBfaXJxKCkgd2FybjogaW5jb25zaXN0ZW50IGluZGVu dGluZwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2RwbS5jOjYyNDIgc2lfcmVxdWVz dF9saW5rX3NwZWVkX2NoYW5nZV9iZWZvcmVfc3RhdGVfY2hhbmdlKCkgd2FybjogbWlzc2luZyBi cmVhaz8gcmVhc3NpZ25pbmcgJ3NpX3BpLT5mb3JjZV9wY2llX2dlbicKPiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jOjUyMjIgZ2Z4X3Y4XzBfcHJlX3NvZnRfcmVzZXQoKSB3 YXJuOiBpbmNvbnNpc3RlbnQgaW5kZW50aW5nCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Z2Z4X3Y4XzAuYzo3MTA1IGdmeF92OF8wX2dldF9jdV9pbmZvKCkgZXJyb3I6IGJ1ZmZlciBvdmVy ZmxvdyAnY3VfaW5mby0+Yml0bWFwJyA0IDw9IDQKPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9nZnhfdjlfMC5jOjMwNzcgZ2Z4X3Y5XzBfc29mdF9yZXNldCgpIHdhcm46IHdlIHRlc3RlZCAn Z3JibV9zb2Z0X3Jlc2V0JyBiZWZvcmUgYW5kIGl0IHdhcyAndHJ1ZScKPiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9nZnhfdjlfMC5jOjM2NDQgZ2Z4X3Y5XzBfcmluZ19lbWl0X2liX2dmeCgp IHdhcm46IGluY29uc2lzdGVudCBpbmRlbnRpbmcKPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9nZnhfdjlfMC5jOjQ0NTcgZ2Z4X3Y5XzBfZ2V0X2N1X2luZm8oKSBlcnJvcjogYnVmZmVyIG92 ZXJmbG93ICdjdV9pbmZvLT5iaXRtYXAnIDQgPD0gNAo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9jZ3MuYzo2MDUgYW1kZ3B1X2Nnc19sb2NrX2dyYm1faWR4KCkgd2FybjogJ211 dGV4OiZhZGV2LT5ncmJtX2lkeF9tdXRleCcgaXMgc29tZXRpbWVzIGxvY2tlZCBoZXJlIGFuZCBz b21ldGltZXMgdW5sb2NrZWQuCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vc2NoZWR1 bGVyL2dwdV9zY2hlZHVsZXIuYzo2OTYgYW1kX3NjaGVkX2luaXQoKSB3YXJuOiBjYWxsIG9mICdr dGhyZWFkX2NyZWF0ZV9vbl9ub2RlJyB3aXRoIG5vbi1jb25zdGFudCBmb3JtYXQgYXJndW1lbnQK PiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9wb3dlcnBsYXkvc211bWdyL3RvbmdhX3Nt dW1nci5jOjMxMjggdG9uZ2Ffc2V0X21jX3NwZWNpYWxfcmVnaXN0ZXJzKCkgZXJyb3I6IGJ1ZmZl ciBvdmVyZmxvdyAndGFibGUtPm1jX3JlZ19hZGRyZXNzJyAxNiA8PSAxNgo+IGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL3Bvd2VycGxheS9zbXVtZ3IvcG9sYXJpczEwX3NtdW1nci5jOjkx NiBwb2xhcmlzMTBfY2FsY3VsYXRlX3NjbGtfcGFyYW1zKCkgd2Fybjogc2hvdWxkICdjbG9jayA8 PCB0YWJsZS0+U2Nsa0Zjd1JhbmdlVGFibGVbc2Nsa19zZXR0aW5nLT5QbGxSYW5nZV0ucG9zdGRp dicgYmUgYSA2NCBiaXQgdHlwZT8KPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9wb3dl cnBsYXkvc211bWdyL3BvbGFyaXMxMF9zbXVtZ3IuYzo5MzEgcG9sYXJpczEwX2NhbGN1bGF0ZV9z Y2xrX3BhcmFtcygpIHdhcm46IHNob3VsZCAnc3NfdGFyZ2V0X2ZyZXEgPDwgdGFibGUtPlNjbGtG Y3dSYW5nZVRhYmxlW3NjbGtfc2V0dGluZy0+UGxsUmFuZ2VdLnBvc3RkaXYnIGJlIGEgNjQgYml0 IHR5cGU/Cj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vcG93ZXJwbGF5L3NtdW1nci9j aV9zbXVtZ3IuYzo0NjIgY2lfcG9wdWxhdGVfc2luZ2xlX2dyYXBoaWNfbGV2ZWwoKSB3YXJuOiB3 ZSB0ZXN0ZWQgJ3Jlc3VsdCcgYmVmb3JlIGFuZCBpdCB3YXMgJ2ZhbHNlJwo+IGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL3Bvd2VycGxheS9od21nci9wcm9jZXNzcHB0YWJsZXMuYzozOTcg Z2V0X2Nsb2NrX3ZvbHRhZ2VfZGVwZW5kZW5jeV90YWJsZSgpIHdhcm46IGluY29uc2lzdGVudCBp bmRlbnRpbmcKPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9wb3dlcnBsYXkvaHdtZ3Iv aGFyZHdhcmVtYW5hZ2VyLmM6MjQ4IHBobV9jaGVja19zbWNfdXBkYXRlX3JlcXVpcmVkX2Zvcl9k aXNwbGF5X2NvbmZpZ3VyYXRpb24oKSB3YXJuOiBzaWduZWRuZXNzIGJ1ZyByZXR1cm5pbmcgJygt MjIpJwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL3Bvd2VycGxheS9od21nci9wcm9j ZXNzX3BwdGFibGVzX3YxXzAuYzoyMDcgZ2V0X3BsYXRmb3JtX3Bvd2VyX21hbmFnZW1lbnRfdGFi bGUoKSB3YXJuOiBzdHJ1Y3QgdHlwZSBtaXNtYXRjaCAncGhtX3BwbV90YWJsZSB2cyBfQVRPTV9U b25nYV9QUE1fVGFibGUnCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vcG93ZXJwbGF5 L2h3bWdyL3BwYXRvbWN0cmwuYzoyMjAgYXRvbWN0cmxfY2FsY3VsYXRlX3ZvbHRhZ2VfZXZ2X29u X3NjbGsoKSB3YXJuOiBmdW5jdGlvbiBwdXRzIDExODQgYnl0ZXMgb24gc3RhY2sKPiBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9wb3dlcnBsYXkvaHdtZ3IvcHBhdG9tZndjdHJsLmM6NDMg cHBfYXRvbWZ3Y3RybF9sb29rdXBfdm9sdGFnZV90eXBlX3Y0KCkgd2FybjogaW5jb25zaXN0ZW50 IGluZGVudGluZwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL3Bvd2VycGxheS9od21n ci9wcGF0b21md2N0cmwuYzo1MSBwcF9hdG9tZndjdHJsX2xvb2t1cF92b2x0YWdlX3R5cGVfdjQo KSB3YXJuOiBpbmNvbnNpc3RlbnQgaW5kZW50aW5nCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vcG93ZXJwbGF5L2h3bWdyL3NtdTdfaHdtZ3IuYzozNTE0IHNtdTdfcmVxdWVzdF9saW5r X3NwZWVkX2NoYW5nZV9iZWZvcmVfc3RhdGVfY2hhbmdlKCkgd2FybjogbWlzc2luZyBicmVhaz8g cmVhc3NpZ25pbmcgJ2RhdGEtPmZvcmNlX3BjaWVfZ2VuJwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL3Bvd2VycGxheS9od21nci9zbXU3X3Bvd2VydHVuZS5jOjk3OSBzbXU3X3Bvd2Vy X2NvbnRyb2xfc2V0X2xldmVsKCkgd2FybjogaW5jb25zaXN0ZW50IGluZGVudGluZwo+IGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL3Bvd2VycGxheS9od21nci92ZWdhMTBfaHdtZ3IuYzoz MDMwIHZlZ2ExMF9nZXRfcHBfdGFibGVfZW50cnlfY2FsbGJhY2tfZnVuYygpIHdhcm46IGJ1ZmZl ciBvdmVyZmxvdyAndmVnYTEwX3Bvd2VyX3N0YXRlLT5wZXJmb3JtYW5jZV9sZXZlbHMnIDIgPD0g Nwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL3Bvd2VycGxheS9od21nci92ZWdhMTBf aHdtZ3IuYzozMDMwIHZlZ2ExMF9nZXRfcHBfdGFibGVfZW50cnlfY2FsbGJhY2tfZnVuYygpIHdh cm46IGJ1ZmZlciBvdmVyZmxvdyAndmVnYTEwX3Bvd2VyX3N0YXRlLT5wZXJmb3JtYW5jZV9sZXZl bHMnIDIgPD0gNwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1 X2RtL2FtZGdwdV9kbS5jOjUyMSBkZXRlY3RfbXN0X2xpbmtfZm9yX2FsbF9jb25uZWN0b3JzKCkg d2FybjogaW5jb25zaXN0ZW50IGluZGVudGluZwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jOjEwMTkgaGFuZGxlX2hwZF9yeF9pcnEo KSB3YXJuOiAnbXV0ZXg6JmFjb25uZWN0b3ItPmhwZF9sb2NrJyBpcyBzb21ldGltZXMgbG9ja2Vk IGhlcmUgYW5kIHNvbWV0aW1lcyB1bmxvY2tlZC4KPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2RjLmg6OTMyIGRjX2dldF9saW5rX2F0X2luZGV4KCkgZXJyb3I6IGJ1 ZmZlciBvdmVyZmxvdyAnZGMtPmxpbmtzJyAxMiA8PSAzMQo+IGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jOjIyODggY3JlYXRlX2Zha2Vf c2luaygpIGVycm9yOiB3ZSBwcmV2aW91c2x5IGFzc3VtZWQgJ3NpbmsnIGNvdWxkIGJlIG51bGwg KHNlZSBsaW5lIDIyODUpCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9h bWRncHVfZG0vYW1kZ3B1X2RtLmM6MjQzMCBkbV9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSgpIGVycm9y OiBwb3RlbnRpYWwgbnVsbCBkZXJlZmVyZW5jZSAnc3RhdGUnLiAgKGt6YWxsb2MgcmV0dXJucyBu dWxsKQo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2Ft ZGdwdV9kbS5jOjI2NzIgY3JlYXRlX2VtbF9zaW5rKCkgd2FybjogdmFyaWFibGUgZGVyZWZlcmVu Y2VkIGJlZm9yZSBjaGVjayAnYWNvbm5lY3Rvci0+YmFzZS5lZGlkX2Jsb2JfcHRyJyAoc2VlIGxp bmUgMjY3MCkKPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2FtZGdwdV9k bS9hbWRncHVfZG0uYzoyNjczIGNyZWF0ZV9lbWxfc2luaygpIHdhcm46IHRoaXMgYXJyYXkgaXMg cHJvYmFibHkgbm9uLU5VTEwuICdhY29ubmVjdG9yLT5iYXNlLmVkaWRfYmxvYl9wdHItPmRhdGEn Cj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1 X2RtLmM6MzQyMiBjcmVhdGVfaTJjKCkgZXJyb3I6IHBvdGVudGlhbCBudWxsIGRlcmVmZXJlbmNl ICdpMmMnLiAgKGt6YWxsb2MgcmV0dXJucyBudWxsKQo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jOjM4OTUgYW1kZ3B1X2RtX2NvbW1p dF9wbGFuZXMoKSBlcnJvcjogZG91YmxlIHVubG9jayAnc3Bpbl9sb2NrOiZjcnRjLT5kZXYtPmV2 ZW50X2xvY2snCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVf ZG0vYW1kZ3B1X2RtLmM6Mzg5NSBhbWRncHVfZG1fY29tbWl0X3BsYW5lcygpIGVycm9yOiBkb3Vi bGUgdW5sb2NrICdpcnFzYXZlOmZsYWdzJwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jOjQxNTcgYW1kZ3B1X2RtX2F0b21pY19jb21t aXRfdGFpbCgpIHdhcm46IHZhcmlhYmxlIGRlcmVmZXJlbmNlZCBiZWZvcmUgY2hlY2sgJ2RtX25l d19jcnRjX3N0YXRlLT5zdHJlYW0nIChzZWUgbGluZSA0MTUzKQo+IGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jOjQyOTQgZG1fcmVzdG9y ZV9kcm1fY29ubmVjdG9yX3N0YXRlKCkgd2FybjogdmFyaWFibGUgZGVyZWZlcmVuY2VkIGJlZm9y ZSBjaGVjayAnZGlzY29ubmVjdGVkX2FjcnRjJyAoc2VlIGxpbmUgNDI5MikKPiBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYzo0NzE2IGFt ZGdwdV9kbV9hdG9taWNfY2hlY2soKSB3YXJuOiBpbmNvbnNpc3RlbnQgaW5kZW50aW5nCj4gZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmM6 NDg2NiBhbWRncHVfZG1fYWRkX3NpbmtfdG9fZnJlZXN5bmNfbW9kdWxlKCkgd2FybjogaW5jb25z aXN0ZW50IGluZGVudGluZwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvYmFzaWNzL2xvZ19oZWxwZXJzLmM6NzkgZGNfY29ubl9sb2coKSBlcnJvcjogYnVmZmVyIG92 ZXJmbG93ICdzaWduYWxfdHlwZV9pbmZvX3RibCcgMTAgPD0gMTAKPiBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Jpb3MvY29tbWFuZF90YWJsZTIuYzozNzYgaW5pdF9z ZXRfY3J0Y190aW1pbmcoKSB3YXJuOiBpbmNvbnNpc3RlbnQgaW5kZW50aW5nCj4gZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9iaW9zL2Jpb3NfcGFyc2VyMi5jOjEzNzYg Z2V0X2Zpcm13YXJlX2luZm9fdjNfMSgpIHdhcm46IGluY29uc2lzdGVudCBpbmRlbnRpbmcKPiBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2NhbGNzL2RjZV9jYWxjcy5j OjEwNCBjYWxjdWxhdGVfYmFuZHdpZHRoKCkgd2FybjogZnVuY3Rpb24gcHV0cyAxNTUyIGJ5dGVz IG9uIHN0YWNrCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jYWxj cy9kY2VfY2FsY3MuYzoyNzk4IGJ3X2NhbGNzKCkgZXJyb3I6IHBvdGVudGlhbCBudWxsIGRlcmVm ZXJlbmNlICdkYXRhJy4gIChremFsbG9jIHJldHVybnMgbnVsbCkKPiBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2NhbGNzL2Rjbl9jYWxjcy5jOjExNTkgZGNuX2ZpbmRf bm9ybWFsaXplZF9jbG9ja192ZGRfTGV2ZWwoKSB3YXJuOiBpbmNvbnNpc3RlbnQgaW5kZW50aW5n Cj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY2UvZGNlX2F1ZGlv LmM6MTgyIGNoZWNrX2F1ZGlvX2JhbmR3aWR0aF9oZG1pKCkgd2FybjogaW5jb25zaXN0ZW50IGlu ZGVudGluZwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNlL2Rj ZV9saW5rX2VuY29kZXIuYzo2NjkgZGNlMTEwX2xpbmtfZW5jb2Rlcl92YWxpZGF0ZV9kcF9vdXRw dXQoKSB3YXJuOiB3ZSB0ZXN0ZWQgJ2VuYzExMC0+YmFzZS5mZWF0dXJlcy5mbGFncy5iaXRzLklT X1lDQkNSX0NBUEFCTEUnIGJlZm9yZSBhbmQgaXQgd2FzICdmYWxzZScKPiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjZS9kY2Vfb3BwLmM6MTkyIHNldF9zcGF0aWFs X2RpdGhlcigpIHdhcm46IHdlIHRlc3RlZCAncGFyYW1zLT5mbGFncy5TUEFUSUFMX0RJVEhFUl9E RVBUSCA9PSAyJyBiZWZvcmUgYW5kIGl0IHdhcyAnZmFsc2UnCj4gZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY2UvZGNlX2RtY3UuYzoxMzMgZGNlX2RtY3Vfc2V0X3Bz cl9lbmFibGUoKSB3YXJuOiBpbmNvbnNpc3RlbnQgaW5kZW50aW5nCj4gZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY2UvZGNlX2FibS5jOjk0IGdldF9jdXJyZW50X2Jh Y2tsaWdodF8xNl9iaXQoKSB3YXJuOiBzaG91bGQgJ2JsX3B3bSA8PCAoMSArIGJsX2ludF9jb3Vu dCknIGJlIGEgNjQgYml0IHR5cGU/Cj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pMmNhdXgvZGNlMTEwL2kyY19od19lbmdpbmVfZGNlMTEwLmM6MTM2IHJlbGVhc2Vf ZW5naW5lKCkgd2FybjogaW5jb25zaXN0ZW50IGluZGVudGluZwo+IGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaTJjYXV4L2RjZTExMC9pMmNfaHdfZW5naW5lX2RjZTEx MC5jOjMwOSBwcm9jZXNzX3RyYW5zYWN0aW9uKCkgd2FybjogaW5jb25zaXN0ZW50IGluZGVudGlu Zwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaTJjYXV4L2RjZTEx MC9hdXhfZW5naW5lX2RjZTExMC5jOjMyMSBwcm9jZXNzX2NoYW5uZWxfcmVwbHkoKSB3YXJuOiBp bmNvbnNpc3RlbnQgaW5kZW50aW5nCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9kY24xMC9kY24xMF9yZXNvdXJjZS5jOjkyMyBkY24xMF9hY3F1aXJlX2lkbGVfcGlw ZV9mb3JfbGF5ZXIoKSBlcnJvcjogd2UgcHJldmlvdXNseSBhc3N1bWVkICdoZWFkX3BpcGUnIGNv dWxkIGJlIG51bGwgKHNlZSBsaW5lIDkxNykKPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2RjbjEwL2RjbjEwX2h3X3NlcXVlbmNlci5jOjE2OTYgZGNuMTBfdHJhbnNs YXRlX3JlZ2FtbWFfdG9faHdfZm9ybWF0KCkgZXJyb3I6IGJ1ZmZlciBvdmVyZmxvdyAnc2VnX2Rp c3RyJyAzNCA8PSAzNAo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMv ZGNuMTAvZGNuMTBfdGltaW5nX2dlbmVyYXRvci5jOjI0OCB0Z24xMF9wcm9ncmFtX3RpbWluZygp IHdhcm46IHdlIHRlc3RlZCAndGctPmRsZ19vdGdfcGFyYW0udnN0YXJ0dXBfc3RhcnQgPiBhc2lj X2JsYW5rX2VuZCcgYmVmb3JlIGFuZCBpdCB3YXMgJ3RydWUnCj4gZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY24xMC9kY24xMF9kcHBfY20uYzoxMjggcHJvZ3JhbV9n YW11dF9yZW1hcCgpIHdhcm46IGluY29uc2lzdGVudCBpbmRlbnRpbmcKPiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X3JxX2RsZ19jYWxjLmM6NjAz IGdldF9tZXRhX2FuZF9wdGVfYXR0cigpIHdhcm46IGFkZCBzb21lIHBhcmVudGhlc2lzIGhlcmU/ Cj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZGlzcGxheV9y cV9kbGdfY2FsYy5jOjYwMyBnZXRfbWV0YV9hbmRfcHRlX2F0dHIoKSB3YXJuOiBtYXliZSB1c2Ug JiYgaW5zdGVhZCBvZiAmCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9kbWwvZG1sMV9kaXNwbGF5X3JxX2RsZ19jYWxjLmM6ODc1IGdldF9zdXJmX3JxX3BhcmFtKCkg d2FybjogYWRkIHNvbWUgcGFyZW50aGVzaXMgaGVyZT8KPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kbWwxX2Rpc3BsYXlfcnFfZGxnX2NhbGMuYzo4NzUgZ2V0 X3N1cmZfcnFfcGFyYW0oKSB3YXJuOiBtYXliZSB1c2UgJiYgaW5zdGVhZCBvZiAmCj4gZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZGlzcGxheV9tb2RlX3ZiYS5j OjQzNiBmZXRjaF9zb2NiYl9wYXJhbXMoKSBlcnJvcjogYnVmZmVyIG92ZXJmbG93ICdzb2MtPmNs b2NrX2xpbWl0cycgNyA8PSA3Cj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9kbWwvZGlzcGxheV9tb2RlX3ZiYS5jOjQ1MSBmZXRjaF9zb2NiYl9wYXJhbXMoKSBlcnJv cjogYnVmZmVyIG92ZXJmbG93ICdzb2MtPmNsb2NrX2xpbWl0cycgNyA8PSA3Cj4gZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY2UxMjAvZGNlMTIwX3RpbWluZ19nZW5l cmF0b3IuYzoyOTYgZGNlMTIwX3RpbWluZ19nZW5lcmF0b3JfdGVhcl9kb3duX2dsb2JhbF9zd2Fw X2xvY2soKSB3YXJuOiBpbmNvbnNpc3RlbnQgaW5kZW50aW5nCj4gZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY2UxMTAvZGNlMTEwX2h3X3NlcXVlbmNlci5jOjYwNiBk Y2UxMTBfdHJhbnNsYXRlX3JlZ2FtbWFfdG9faHdfZm9ybWF0KCkgZXJyb3I6IGJ1ZmZlciBvdmVy ZmxvdyAnc2VnX2Rpc3RyJyAxNiA8PSAxNgo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvZGNlMTEwL2RjZTExMF9od19zZXF1ZW5jZXIuYzo3NzggZGNlMTEwX2VuYWJs ZV9zdHJlYW0oKSB3YXJuOiBpbmNvbnNpc3RlbnQgaW5kZW50aW5nCj4gZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY2UxMTAvZGNlMTEwX2h3X3NlcXVlbmNlci5jOjEz MDkgYXBwbHlfc2luZ2xlX2NvbnRyb2xsZXJfY3R4X3RvX2h3KCkgd2FybjogaW5jb25zaXN0ZW50 IGluZGVudGluZwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNl MTEwL2RjZTExMF9od19zZXF1ZW5jZXIuYzoyMTU5IHNldF9kZWZhdWx0X2NvbG9ycygpIGVycm9y OiB3ZSBwcmV2aW91c2x5IGFzc3VtZWQgJ3BpcGVfY3R4LT5zdHJlYW0nIGNvdWxkIGJlIG51bGwg KHNlZSBsaW5lIDIxNDkpCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9kY2UxMTAvZGNlMTEwX2h3X3NlcXVlbmNlci5jOjI1OTcgZGNlMTEwX2dldF9taW5fdmJsYW5r X3RpbWVfdXMoKSB3YXJuOiBpbmNvbnNpc3RlbnQgaW5kZW50aW5nCj4gZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY2UxMTAvZGNlMTEwX2h3X3NlcXVlbmNlci5jOjI3 MjcgZGNlMTEwX3Byb2dyYW1fZnJvbnRfZW5kX2Zvcl9waXBlKCkgd2FybjogdmFyaWFibGUgZGVy ZWZlcmVuY2VkIGJlZm9yZSBjaGVjayAnZGMtPmN1cnJlbnRfc3RhdGUnIChzZWUgbGluZSAyNzIy KQo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNlMTEwL2RjZTEx MF9od19zZXF1ZW5jZXIuYzoyODkzIGRjZTExMF9hcHBseV9jdHhfZm9yX3N1cmZhY2UoKSBlcnJv cjogd2UgcHJldmlvdXNseSBhc3N1bWVkICdwaXBlX2N0eC0+cGxhbmVfcmVzLm1pJyBjb3VsZCBi ZSBudWxsIChzZWUgbGluZSAyODg1KQo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvZGNlMTEwL2RjZTExMF9yZXNvdXJjZS5jOjEwNDQgdW5kZXJsYXlfY3JlYXRlKCkg d2FybjogcG9zc2libGUgbWVtb3J5IGxlYWsgb2YgJ2RjZTExMF9taXYnCj4gZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY2UxMTAvZGNlMTEwX3Jlc291cmNlLmM6MTA0 NCB1bmRlcmxheV9jcmVhdGUoKSB3YXJuOiBwb3NzaWJsZSBtZW1vcnkgbGVhayBvZiAnZGNlMTEw X29wcHYnCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY2UxMTAv ZGNlMTEwX3Jlc291cmNlLmM6MTA0NCB1bmRlcmxheV9jcmVhdGUoKSB3YXJuOiBwb3NzaWJsZSBt ZW1vcnkgbGVhayBvZiAnZGNlMTEwX3RndicKPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2RjZTExMC9kY2UxMTBfcmVzb3VyY2UuYzoxMDQ0IHVuZGVybGF5X2NyZWF0 ZSgpIHdhcm46IHBvc3NpYmxlIG1lbW9yeSBsZWFrIG9mICdkY2UxMTBfeGZtdicKPiBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2NvcmUvZGMuYzo2MTkgY29uc3RydWN0 KCkgd2FybjogcG9zc2libGUgbWVtb3J5IGxlYWsgb2YgJ2RjX2N0eCcKPiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2NvcmUvZGMuYzo2MTkgY29uc3RydWN0KCkgd2Fy bjogcG9zc2libGUgbWVtb3J5IGxlYWsgb2YgJ2RjX3ZiaW9zJwo+IGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY29yZS9kYy5jOjYxOSBjb25zdHJ1Y3QoKSB3YXJuOiBw b3NzaWJsZSBtZW1vcnkgbGVhayBvZiAnZGNuX2lwJwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvZGMvY29yZS9kYy5jOjYxOSBjb25zdHJ1Y3QoKSB3YXJuOiBwb3NzaWJs ZSBtZW1vcnkgbGVhayBvZiAnZGNuX3NvYycKPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2NvcmUvZGMuYzo5NjYgZGNfY29tbWl0X3BsYW5lc190b19zdHJlYW0oKSBl cnJvcjogcG90ZW50aWFsIG51bGwgZGVyZWZlcmVuY2UgJ2ZsaXBfYWRkcicuICAoa2NhbGxvYyBy ZXR1cm5zIG51bGwpCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9j b3JlL2RjLmM6OTY4IGRjX2NvbW1pdF9wbGFuZXNfdG9fc3RyZWFtKCkgZXJyb3I6IHBvdGVudGlh bCBudWxsIGRlcmVmZXJlbmNlICdwbGFuZV9pbmZvJy4gIChrY2FsbG9jIHJldHVybnMgbnVsbCkK PiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2NvcmUvZGMuYzo5Nzgg ZGNfY29tbWl0X3BsYW5lc190b19zdHJlYW0oKSBlcnJvcjogcG90ZW50aWFsIG51bGwgZGVyZWZl cmVuY2UgJ3NjYWxpbmdfaW5mbycuICAoa2NhbGxvYyByZXR1cm5zIG51bGwpCj4gZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jb3JlL2RjX2xpbmsuYzoxOTA4IGRjX2xp bmtfc2V0dXBfcHNyKCkgd2FybjogdmFyaWFibGUgZGVyZWZlcmVuY2VkIGJlZm9yZSBjaGVjayAn bGluaycgKHNlZSBsaW5lIDE5MDIpCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9jb3JlL2RjX3Jlc291cmNlLmM6ODcyIHJlc291cmNlX2J1aWxkX3NjYWxpbmdfcGFy YW1zKCkgZXJyb3I6IHdlIHByZXZpb3VzbHkgYXNzdW1lZCAncGlwZV9jdHgtPnBsYW5lX3Jlcy54 Zm0nIGNvdWxkIGJlIG51bGwgKHNlZSBsaW5lIDg2MCkKPiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2NvcmUvZGNfcmVzb3VyY2UuYzo4NzUgcmVzb3VyY2VfYnVpbGRf c2NhbGluZ19wYXJhbXMoKSBlcnJvcjogd2UgcHJldmlvdXNseSBhc3N1bWVkICdwaXBlX2N0eC0+ cGxhbmVfcmVzLmRwcCcgY291bGQgYmUgbnVsbCAoc2VlIGxpbmUgODY0KQo+IGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY29yZS9kY19yZXNvdXJjZS5jOjk5NyBhY3F1 aXJlX2ZyZWVfcGlwZV9mb3Jfc3RyZWFtKCkgZXJyb3I6IHdlIHByZXZpb3VzbHkgYXNzdW1lZCAn aGVhZF9waXBlJyBjb3VsZCBiZSBudWxsIChzZWUgbGluZSA5OTQpCj4gZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jb3JlL2RjX3Jlc291cmNlLmM6MTgwNCBkY192YWxp ZGF0ZV9nbG9iYWxfc3RhdGUoKSBlcnJvcjogd2UgcHJldmlvdXNseSBhc3N1bWVkICduZXdfY3R4 JyBjb3VsZCBiZSBudWxsIChzZWUgbGluZSAxNzc0KQo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvZGMvY29yZS9kY19yZXNvdXJjZS5jOjIxMjMgc2V0X3ZlbmRvcl9pbmZv X3BhY2tldCgpIHdhcm46IHdlIHRlc3RlZCAnaGRtaV92aWNfbW9kZScgYmVmb3JlIGFuZCBpdCB3 YXMgJ3RydWUnCj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jb3Jl L2RjX3N0cmVhbS5jOjE4NSBkY19zdHJlYW1fc2V0X2N1cnNvcl9hdHRyaWJ1dGVzKCkgd2Fybjog aW5jb25zaXN0ZW50IGluZGVudGluZwo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvY29yZS9kY19zdHJlYW0uYzoxODkgZGNfc3RyZWFtX3NldF9jdXJzb3JfYXR0cmli dXRlcygpIHdhcm46IGluY29uc2lzdGVudCBpbmRlbnRpbmcKPiBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2RjL2NvcmUvZGNfc3RyZWFtLmM6MzAxIGRjX3N0cmVhbV9zZXRf Y3Vyc29yX3Bvc2l0aW9uKCkgZXJyb3I6IHdlIHByZXZpb3VzbHkgYXNzdW1lZCAnaHVicCcgY291 bGQgYmUgbnVsbCAoc2VlIGxpbmUgMjk3KQo+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9kb29yYmVsbC5jOjExOSBrZmRfZG9vcmJlbGxfaW5pdCgpIHdhcm46IGFyZ3VtZW50IDMgdG8g JTA4bFggc3BlY2lmaWVyIGlzIGNhc3QgZnJvbSBwb2ludGVyCj4gZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRrZmQva2ZkX2Rvb3JiZWxsLmM6MTk1IGtmZF9nZXRfa2VybmVsX2Rvb3JiZWxsKCkgd2Fy bjogYXJndW1lbnQgNCB0byAlMDhsWCBzcGVjaWZpZXIgaXMgY2FzdCBmcm9tIHBvaW50ZXIKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGFtZC1nZngg bWFpbGluZyBsaXN0Cj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPiAKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxp c3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==