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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 629B2C3ABC3 for ; Mon, 12 May 2025 07:18:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=2T2ufGeqI0NjkUt0uzUGX6dE9TgBHCX7/Iw/m6UZO4w=; b=zjD+aKYOlNtogQ EMHB0o5mq4Yw3RCq14ad+3DgPSd6SM3VJHp6Mf8pGOSlCJJ9evwps+/E+lw+oiqt1dHX5fIcvyBcE 2BIC6uW0K2skQu7jOIAlMiSTuODrLSpu1dJlm7SP7t08gAFtts2ec2fp1tW8dNTX2gdwyKCVW1y3p Hf2ztOIacYpIFat02RK9FCQ6/0olmM6Ga9T+QtCecrFugd+1/N5MHaxYBOBy3z5C9833UeqlQtmSu TUcMOY2W1EKpfFaaxgTn9JfreJew6Ckla1MoVK/qfZN3g++ot8FtPSfkNufSPO4tBqPBDTWPnNa7Z /U48p7Wy7Wi0E2s2i9Zw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uENQZ-00000008bul-2l6G; Mon, 12 May 2025 07:18:19 +0000 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uENQW-00000008buE-32Fs for linux-riscv@lists.infradead.org; Mon, 12 May 2025 07:18:18 +0000 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-3a0b6aa08e5so3139106f8f.1 for ; Mon, 12 May 2025 00:18:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1747034294; x=1747639094; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=k5JEHhlAmapspw56HYcHFZ9QGA/eXUiRIXps8HeP010=; b=g3L4wV5c43zQrlLEIQz0oyDRL65EmMOBvtJJ+8/hypufNsJgRg5MQDkQeCBrSAJyno wBp6sfjguquj+bX/314RtAbNX6KEHLsbVdoZ1DZvYoDiHjxhkzNWulContOEmYT3VbwI R0lN091sM2zwtjO9s9bouHJ9Jjgg7M8Tw770V3uPIPpVB4TOS458r4qhvnWj9bDoy3Zq YHFhaScpnYtA8ccXzzk0udmFB1BmdRSSH4ZRJC4Dkq4+8Ejg0yRpIy8zkn5dxWmfGD1S GnxTEol3tazXS+IsCXOO6Vf0NKQIOnhkzJnQIZelIuR+WmtPiZrK+1t1IhbEgz+/nfoN Lpxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747034294; x=1747639094; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=k5JEHhlAmapspw56HYcHFZ9QGA/eXUiRIXps8HeP010=; b=wBOX5Xl6FHswVs4MgariY1yAUzMRyK/cyp/J6M17UcYkes/lsKMtm7/z6MYZh5UIA3 dg6GhDENH6pi5xPyJ9cDVk7ILYEWNsFUDjnKNeTbYE88PMwt8Ot7/EIQMg6+a654hxCo pzGLQFqeXyKeEBnt2FAilkTKI7LLoUqT+c3F8jXKWC4xBsMpNfYdAFD0NqoqeFSrboT1 uu3AnSTkxnz31ke3VsRuv4HdxIpSQX5kQP3x9I25nIfoj6S7mqrJrFgEpQjSrXCww+KY WVi1BLCEsTmzrdMj/cPoXKClQ40HqzdO0XLji7sCcT5xDhvZweBIX8WawZUfU/ctVYZt Dpmg== X-Forwarded-Encrypted: i=1; AJvYcCUhQmFBfKKjmDsiKcw60MlOnbA/slZsfiYbMb6sy5vesl0GH6AQVBULQgEIrO/yDZbPcxsVGDm3fUq5yg==@lists.infradead.org X-Gm-Message-State: AOJu0YwDQuwsP4owKXSJZf3XlVvAOgzAGKN2nMle5U7gXYHMDWqT03P+ hHD2hfiwz48xU4lNeJ2KBiceAtv7kf5erpcBPIrOjgsMdnvN189uCpq4oaqcC/I= X-Gm-Gg: ASbGncvVMsi8J36oFreeD+6R9Hej9Bx7FjsW86Uh50OMsT1eqAcnuh2/d92gJ89nOAW dy0tWLOR01jbA6bplP/Ufe9Yd0iWRIj6w2Wh4gSr6J5bHNQIo4rcejnMnhCWpW0zfiziNK5pZRN LzTpohESESZtTuMsDcqOfJH3S+eaJkMkK+FlzP4AhHnOJ1pVZGm+6QXImz6yQg6eRwb7T9fJjuw nTEy2prHQ+qu9fK8HwcSAjz9i2UJ5ln0vGEr+I+Fixc2UwA1Q8bbQME1bWraNM4LOEzr9+cEl3y h33A/gThrBvbaSW2Nm3OB60tA5X+d1y4E92W3dJ/aDrhn0hvBzTgBcVtBA001k+BvCk+SFRnsHe sOhzoaiqagZYSXIZ22RVm X-Google-Smtp-Source: AGHT+IEWe8yzD9vwpkXZoj/ZqflHV+AAYpT0w1yvzg8fyMp9muWzZkxeTolvd6afEMeKKIBr507cKQ== X-Received: by 2002:a5d:64ed:0:b0:3a0:b138:4810 with SMTP id ffacd0b85a97d-3a0b99171ecmr12472545f8f.17.1747034294355; Mon, 12 May 2025 00:18:14 -0700 (PDT) Received: from ?IPV6:2a01:e0a:e17:9700:16d2:7456:6634:9626? ([2a01:e0a:e17:9700:16d2:7456:6634:9626]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f5a4c7b2sm11565060f8f.93.2025.05.12.00.18.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 12 May 2025 00:18:13 -0700 (PDT) Message-ID: <91d6b423-1132-4d85-bdee-de20af5b4844@rivosinc.com> Date: Mon, 12 May 2025 09:18:11 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 5/5] selftests: riscv: add misaligned access testing To: Alexandre Ghiti , "open list:DOCUMENTATION" , open list , "open list:RISC-V ARCHITECTURE" , "open list:KERNEL SELFTEST FRAMEWORK" Cc: Jonathan Corbet , Paul Walmsley , Palmer Dabbelt , Albert Ou , Shuah Khan , Andrew Jones , Samuel Holland References: <20250422162324.956065-1-cleger@rivosinc.com> <20250422162324.956065-6-cleger@rivosinc.com> <80edd225-046e-4ef4-9e71-7059aa523e3a@ghiti.fr> Content-Language: en-US From: =?UTF-8?B?Q2zDqW1lbnQgTMOpZ2Vy?= In-Reply-To: <80edd225-046e-4ef4-9e71-7059aa523e3a@ghiti.fr> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250512_001817_024634_26678B4A X-CRM114-Status: GOOD ( 15.76 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org CgpPbiAwOS8wNS8yMDI1IDEwOjIyLCBBbGV4YW5kcmUgR2hpdGkgd3JvdGU6Cj4gSGkgQ2zDqW1l bnQsCj4gCj4gT24gMjIvMDQvMjAyNSAxODoyMywgQ2zDqW1lbnQgTMOpZ2VyIHdyb3RlOgo+PiBU aGlzIHNlbGZ0ZXN0IHRlc3RzIChhbG1vc3QpIGFsbCB0aGUgY3VycmVudGx5IGVtdWxhdGVkIGlu c3RydWN0aW9uCj4+IChleGNlcHQgZm9yIHRoZSBSVjMyIGNvbXByZXNzZWQgb25lcyB3aGljaCBh cmUgbGVmdCBhcyBhIGZ1dHVyZQo+PiBleGVyY2lzZSBmb3IgYSBSVjMyIHVzZXIpLiBGb3IgdGhl IEZQVSBpbnN0cnVjdGlvbnMsIGFsbCB0aGUgRlBVCj4+IHJlZ2lzdGVycyBhcmUgdGVzdGVkLgo+ Pgo+PiBTaWduZWQtb2ZmLWJ5OiBDbMOpbWVudCBMw6lnZXIgPGNsZWdlckByaXZvc2luYy5jb20+ Cj4+IC0tLQo+PiDCoCAuLi4vc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvLmdpdGlnbm9yZcKg wqDCoMKgIHzCoMKgIDEgKwo+PiDCoCAuLi4vc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvTWFr ZWZpbGXCoMKgwqDCoMKgwqAgfMKgIDEyICsKPj4gwqAgLi4uL3NlbGZ0ZXN0cy9yaXNjdi9taXNh bGlnbmVkL2NvbW1vbi5TwqDCoMKgwqDCoMKgIHzCoCAzMyArKysKPj4gwqAgLi4uL3Rlc3Rpbmcv c2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvZnB1LlPCoCB8IDE4MCArKysrKysrKysrKysrCj4+ IMKgIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvZ3AuUyB8IDEwMyAr KysrKysrCj4+IMKgIC4uLi9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9taXNhbGlnbmVkLmPC oMKgIHwgMjU0ICsrKysrKysrKysrKysrKysrKwo+PiDCoCA2IGZpbGVzIGNoYW5nZWQsIDU4MyBp bnNlcnRpb25zKCspCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90ZXN0aW5nL3NlbGZ0 ZXN0cy9yaXNjdi9taXNhbGlnbmVkLy5naXRpZ25vcmUKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0 IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvTWFrZWZpbGUKPj4gwqAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWdu ZWQvY29tbW9uLlMKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3Jpc2N2L21pc2FsaWduZWQvZnB1LlMKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xz L3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvZ3AuUwo+PiDCoCBjcmVhdGUgbW9k ZSAxMDA2NDQgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC8KPj4gbWlz YWxpZ25lZC5jCj4+Cj4+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNj di9taXNhbGlnbmVkLy5naXRpZ25vcmUgYi8KPj4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlz Y3YvbWlzYWxpZ25lZC8uZ2l0aWdub3JlCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4 IDAwMDAwMDAwMDAwMC4uNWVmZjE1YTFmOTgxCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvdG9v bHMvdGVzdGluZy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC8uZ2l0aWdub3JlCj4+IEBAIC0w LDAgKzEgQEAKPj4gK21pc2FsaWduZWQKPj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2Vs ZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvTWFrZWZpbGUgYi8KPj4gdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9NYWtlZmlsZQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ PiBpbmRleCAwMDAwMDAwMDAwMDAuLjFhYTQwMTEwYzUwZAo+PiAtLS0gL2Rldi9udWxsCj4+ICsr KyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvTWFrZWZpbGUKPj4g QEAgLTAsMCArMSwxMiBAQAo+PiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ PiArIyBDb3B5cmlnaHQgKEMpIDIwMjEgQVJNIExpbWl0ZWQKPj4gKyMgT3JpZ2luYWxseSB0b29s cy90ZXN0aW5nL2FybTY0L2FiaS9NYWtlZmlsZQo+PiArCj4+ICtDRkxBR1MgKz0gLUkkKHRvcF9z cmNkaXIpL3Rvb2xzL2luY2x1ZGUKPj4gKwo+PiArVEVTVF9HRU5fUFJPR1MgOj0gbWlzYWxpZ25l ZAo+PiArCj4+ICtpbmNsdWRlIC4uLy4uL2xpYi5tawo+PiArCj4+ICskKE9VVFBVVCkvbWlzYWxp Z25lZDogbWlzYWxpZ25lZC5jIGZwdS5TIGdwLlMKPj4gK8KgwqDCoCAkKENDKSAtZzMgLXN0YXRp YyAtbyRAIC1tYXJjaD1ydjY0aW1hZmRjICQoQ0ZMQUdTKSAkKExERkxBR1MpICReCj4+IGRpZmYg LS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL2NvbW1vbi5T IGIvCj4+IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvY29tbW9uLlMK Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi44ZmEwMDAzNWJk NWQKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNj di9taXNhbGlnbmVkL2NvbW1vbi5TCj4+IEBAIC0wLDAgKzEsMzMgQEAKPj4gKy8qIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQg KGMpIDIwMjUgUml2b3MgSW5jLgo+PiArICoKPj4gKyAqIEF1dGhvcnM6Cj4+ICsgKsKgwqDCoMKg IENsw6ltZW50IEzDqWdlciA8Y2xlZ2VyQHJpdm9zaW5jLmNvbT4KPj4gKyAqLwo+PiArCj4+ICsu bWFjcm8gbGJfc2IgdGVtcCwgb2Zmc2V0LCBzcmMsIGRzdAo+PiArwqDCoMKgIGxiIFx0ZW1wLCBc b2Zmc2V0KFxzcmMpCj4+ICvCoMKgwqAgc2IgXHRlbXAsIFxvZmZzZXQoXGRzdCkKPj4gKy5lbmRt Cj4+ICsKPj4gKy5tYWNybyBjb3B5X2xvbmdfdG8gdGVtcCwgc3JjLCBkc3QKPj4gK8KgwqDCoCBs Yl9zYiBcdGVtcCwgMCwgXHNyYywgXGRzdCwKPj4gK8KgwqDCoCBsYl9zYiBcdGVtcCwgMSwgXHNy YywgXGRzdCwKPj4gK8KgwqDCoCBsYl9zYiBcdGVtcCwgMiwgXHNyYywgXGRzdCwKPj4gK8KgwqDC oCBsYl9zYiBcdGVtcCwgMywgXHNyYywgXGRzdCwKPj4gK8KgwqDCoCBsYl9zYiBcdGVtcCwgNCwg XHNyYywgXGRzdCwKPj4gK8KgwqDCoCBsYl9zYiBcdGVtcCwgNSwgXHNyYywgXGRzdCwKPj4gK8Kg wqDCoCBsYl9zYiBcdGVtcCwgNiwgXHNyYywgXGRzdCwKPj4gK8KgwqDCoCBsYl9zYiBcdGVtcCwg NywgXHNyYywgXGRzdCwKPj4gKy5lbmRtCj4+ICsKPj4gKy5tYWNybyBzcF9zdGFja19wcm9sb2d1 ZSBvZmZzZXQKPj4gK8KgwqDCoCBhZGRpIHNwLCBzcCwgLTgKPj4gK8KgwqDCoCBzdWIgc3AsIHNw LCBcb2Zmc2V0Cj4+ICsuZW5kbQo+PiArCj4+ICsubWFjcm8gc3Bfc3RhY2tfZXBpbG9ndWUgb2Zm c2V0Cj4+ICvCoMKgwqAgYWRkIHNwLCBzcCwgXG9mZnNldAo+PiArwqDCoMKgIGFkZGkgc3AsIHNw LCA4Cj4+ICsuZW5kbQo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlz Y3YvbWlzYWxpZ25lZC9mcHUuUyBiL3Rvb2xzLwo+PiB0ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9t aXNhbGlnbmVkL2ZwdS5TCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAw MDAwMC4uZDAwOGJmZjU4MzEwCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvdG9vbHMvdGVzdGlu Zy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9mcHUuUwo+PiBAQCAtMCwwICsxLDE4MCBAQAo+ PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwo+PiArLyoKPj4g KyAqIENvcHlyaWdodCAoYykgMjAyNSBSaXZvcyBJbmMuCj4+ICsgKgo+PiArICogQXV0aG9yczoK Pj4gKyAqwqDCoMKgwqAgQ2zDqW1lbnQgTMOpZ2VyIDxjbGVnZXJAcml2b3NpbmMuY29tPgo+PiAr ICovCj4+ICsKPj4gKyNpbmNsdWRlICJjb21tb24uUyIKPj4gKwo+PiArI2RlZmluZSBDQVNFX0FM SUdOwqDCoMKgwqDCoMKgwqAgNAo+PiArCj4+ICsubWFjcm8gZnB1X2xvYWRfaW5zdCBmcHJlZywg aW5zdCwgcHJlY2lzaW9uLCBsb2FkX3JlZwo+PiArLmFsaWduIENBU0VfQUxJR04KPj4gK8KgwqDC oCBcaW5zdCBcZnByZWcsIDAoXGxvYWRfcmVnKQo+PiArwqDCoMKgIGZtdi5ccHJlY2lzaW9uIGZh MCwgXGZwcmVnCj4+ICvCoMKgwqAgaiAyZgo+PiArLmVuZG0KPj4gKwo+PiArI2RlZmluZSBmbHco X19mcHJlZykgZnB1X2xvYWRfaW5zdCBfX2ZwcmVnLCBmbHcsIHMsIHMxCj4+ICsjZGVmaW5lIGZs ZChfX2ZwcmVnKSBmcHVfbG9hZF9pbnN0IF9fZnByZWcsIGZsZCwgZCwgczEKPj4gKyNkZWZpbmUg Y19mbHcoX19mcHJlZykgZnB1X2xvYWRfaW5zdCBfX2ZwcmVnLCBjLmZsdywgcywgczEKPj4gKyNk ZWZpbmUgY19mbGQoX19mcHJlZykgZnB1X2xvYWRfaW5zdCBfX2ZwcmVnLCBjLmZsZCwgZCwgczEK Pj4gKyNkZWZpbmUgY19mbGRzcChfX2ZwcmVnKSBmcHVfbG9hZF9pbnN0IF9fZnByZWcsIGMuZmxk c3AsIGQsIHNwCj4+ICsKPj4gKy5tYWNybyBmcHVfc3RvcmVfaW5zdCBmcHJlZywgaW5zdCwgcHJl Y2lzaW9uLCBzdG9yZV9yZWcKPj4gKy5hbGlnbiBDQVNFX0FMSUdOCj4+ICvCoMKgwqAgZm12Llxw cmVjaXNpb24gXGZwcmVnLCBmYTAKPj4gK8KgwqDCoCBcaW5zdCBcZnByZWcsIDAoXHN0b3JlX3Jl ZykKPj4gK8KgwqDCoCBqIDJmCj4+ICsuZW5kbQo+PiArCj4+ICsjZGVmaW5lIGZzdyhfX2ZwcmVn KSBmcHVfc3RvcmVfaW5zdCBfX2ZwcmVnLCBmc3csIHMsIHMxCj4+ICsjZGVmaW5lIGZzZChfX2Zw cmVnKSBmcHVfc3RvcmVfaW5zdCBfX2ZwcmVnLCBmc2QsIGQsIHMxCj4+ICsjZGVmaW5lIGNfZnN3 KF9fZnByZWcpIGZwdV9zdG9yZV9pbnN0IF9fZnByZWcsIGMuZnN3LCBzLCBzMQo+PiArI2RlZmlu ZSBjX2ZzZChfX2ZwcmVnKSBmcHVfc3RvcmVfaW5zdCBfX2ZwcmVnLCBjLmZzZCwgZCwgczEKPj4g KyNkZWZpbmUgY19mc2RzcChfX2ZwcmVnKSBmcHVfc3RvcmVfaW5zdCBfX2ZwcmVnLCBjLmZzZHNw LCBkLCBzcAo+PiArCj4+ICsubWFjcm8gZnBfdGVzdF9wcm9sb2d1ZQo+PiArwqDCoMKgIG1vdmUg czEsIGExCj4+ICvCoMKgwqAgLyoKPj4gK8KgwqDCoMKgICogQ29tcHV0ZSBqdW1wIG9mZnNldCB0 byBzdG9yZSB0aGUgY29ycmVjdCBGUCByZWdpc3RlciBzaW5jZSB3ZQo+PiBkb24ndAo+PiArwqDC oMKgwqAgKiBoYXZlIGluZGlyZWN0IEZQIHJlZ2lzdGVyIGFjY2VzcyAob3IgYXQgbGVhc3Qgd2Ug ZG9uJ3QgdXNlIHRoaXMKPj4gK8KgwqDCoMKgICogZXh0ZW5zaW9uIHNvIHRoYXQgd29ya3Mgb24g YWxsIGFyY2hzKQo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCBzbGwgdDAsIGEwLCBDQVNFX0FM SUdOCj4+ICvCoMKgwqAgbGEgdDIsIDFmCj4+ICvCoMKgwqAgYWRkIHQwLCB0MCwgdDIKPj4gK8Kg wqDCoCBqciB0MAo+PiArLmFsaWduwqDCoMKgIENBU0VfQUxJR04KPj4gKzE6Cj4+ICsuZW5kbQo+ PiArCj4+ICsubWFjcm8gZnBfdGVzdF9wcm9sb2d1ZV9jb21wcmVzc2VkCj4+ICvCoMKgwqAgLyog RlAgcmVnaXN0ZXJzIGZvciBjb21wcmVzc2VkIGluc3RydWN0aW9ucyBzdGFydHMgZnJvbSA4IHRv IDE2ICovCj4+ICvCoMKgwqAgYWRkaSBhMCwgYTAsIC04Cj4+ICvCoMKgwqAgZnBfdGVzdF9wcm9s b2d1ZQo+PiArLmVuZG0KPj4gKwo+PiArI2RlZmluZSBmcF90ZXN0X2JvZHlfY29tcHJlc3NlZChf X2luc3RfZnVuYykgXAo+PiArwqDCoMKgIF9faW5zdF9mdW5jKGY4KTsgXAo+PiArwqDCoMKgIF9f aW5zdF9mdW5jKGY5KTsgXAo+PiArwqDCoMKgIF9faW5zdF9mdW5jKGYxMCk7IFwKPj4gK8KgwqDC oCBfX2luc3RfZnVuYyhmMTEpOyBcCj4+ICvCoMKgwqAgX19pbnN0X2Z1bmMoZjEyKTsgXAo+PiAr wqDCoMKgIF9faW5zdF9mdW5jKGYxMyk7IFwKPj4gK8KgwqDCoCBfX2luc3RfZnVuYyhmMTQpOyBc Cj4+ICvCoMKgwqAgX19pbnN0X2Z1bmMoZjE1KTsgXAo+PiArMjoKPj4gKwo+PiArI2RlZmluZSBm cF90ZXN0X2JvZHkoX19pbnN0X2Z1bmMpIFwKPj4gK8KgwqDCoCBfX2luc3RfZnVuYyhmMCk7IFwK Pj4gK8KgwqDCoCBfX2luc3RfZnVuYyhmMSk7IFwKPj4gK8KgwqDCoCBfX2luc3RfZnVuYyhmMik7 IFwKPj4gK8KgwqDCoCBfX2luc3RfZnVuYyhmMyk7IFwKPj4gK8KgwqDCoCBfX2luc3RfZnVuYyhm NCk7IFwKPj4gK8KgwqDCoCBfX2luc3RfZnVuYyhmNSk7IFwKPj4gK8KgwqDCoCBfX2luc3RfZnVu YyhmNik7IFwKPj4gK8KgwqDCoCBfX2luc3RfZnVuYyhmNyk7IFwKPj4gK8KgwqDCoCBfX2luc3Rf ZnVuYyhmOCk7IFwKPj4gK8KgwqDCoCBfX2luc3RfZnVuYyhmOSk7IFwKPj4gK8KgwqDCoCBfX2lu c3RfZnVuYyhmMTApOyBcCj4+ICvCoMKgwqAgX19pbnN0X2Z1bmMoZjExKTsgXAo+PiArwqDCoMKg IF9faW5zdF9mdW5jKGYxMik7IFwKPj4gK8KgwqDCoCBfX2luc3RfZnVuYyhmMTMpOyBcCj4+ICvC oMKgwqAgX19pbnN0X2Z1bmMoZjE0KTsgXAo+PiArwqDCoMKgIF9faW5zdF9mdW5jKGYxNSk7IFwK Pj4gK8KgwqDCoCBfX2luc3RfZnVuYyhmMTYpOyBcCj4+ICvCoMKgwqAgX19pbnN0X2Z1bmMoZjE3 KTsgXAo+PiArwqDCoMKgIF9faW5zdF9mdW5jKGYxOCk7IFwKPj4gK8KgwqDCoCBfX2luc3RfZnVu YyhmMTkpOyBcCj4+ICvCoMKgwqAgX19pbnN0X2Z1bmMoZjIwKTsgXAo+PiArwqDCoMKgIF9faW5z dF9mdW5jKGYyMSk7IFwKPj4gK8KgwqDCoCBfX2luc3RfZnVuYyhmMjIpOyBcCj4+ICvCoMKgwqAg X19pbnN0X2Z1bmMoZjIzKTsgXAo+PiArwqDCoMKgIF9faW5zdF9mdW5jKGYyNCk7IFwKPj4gK8Kg wqDCoCBfX2luc3RfZnVuYyhmMjUpOyBcCj4+ICvCoMKgwqAgX19pbnN0X2Z1bmMoZjI2KTsgXAo+ PiArwqDCoMKgIF9faW5zdF9mdW5jKGYyNyk7IFwKPj4gK8KgwqDCoCBfX2luc3RfZnVuYyhmMjgp OyBcCj4+ICvCoMKgwqAgX19pbnN0X2Z1bmMoZjI5KTsgXAo+PiArwqDCoMKgIF9faW5zdF9mdW5j KGYzMCk7IFwKPj4gK8KgwqDCoCBfX2luc3RfZnVuYyhmMzEpOyBcCj4+ICsyOgo+PiArLnRleHQK Pj4gKwo+PiArI2RlZmluZSBfX2dlbl90ZXN0X2luc3QoX19pbnN0LCBfX3N1ZmZpeCkgXAo+PiAr Lmdsb2JhbCB0ZXN0XyAjIyBfX2luc3Q7IFwKPj4gK3Rlc3RfICMjIF9faW5zdDo7IFwKPj4gK8Kg wqDCoCBmcF90ZXN0X3Byb2xvZ3VlICMjIF9fc3VmZml4OyBcCj4+ICvCoMKgwqAgZnBfdGVzdF9i b2R5ICMjIF9fc3VmZml4KF9faW5zdCk7IFwKPj4gK8KgwqDCoCByZXQKPj4gKwo+PiArI2RlZmlu ZSBnZW5fdGVzdF9pbnN0X2NvbXByZXNzZWQoX19pbnN0KSBcCj4+ICvCoMKgwqAgLm9wdGlvbiBh cmNoLCtjOyBcCj4+ICvCoMKgwqAgX19nZW5fdGVzdF9pbnN0KGNfICMjIF9faW5zdCwgX2NvbXBy ZXNzZWQpCj4+ICsKPj4gKyNkZWZpbmUgZ2VuX3Rlc3RfaW5zdChfX2luc3QpIFwKPj4gK8KgwqDC oCAuYmFsaWduIDE2OyBcCj4+ICvCoMKgwqAgLm9wdGlvbiBwdXNoOyBcCj4+ICvCoMKgwqAgLm9w dGlvbiBhcmNoLC1jOyBcCj4+ICvCoMKgwqAgX19nZW5fdGVzdF9pbnN0KF9faW5zdCwgKTsgXAo+ PiArwqDCoMKgIC5vcHRpb24gcG9wCj4+ICsKPj4gKy5tYWNybyBmcF90ZXN0X3Byb2xvZ3VlX2xv YWRfY29tcHJlc3NlZF9zcAo+PiArwqDCoMKgIGNvcHlfbG9uZ190byB0MCwgYTEsIHNwCj4+ICsu ZW5kbQo+PiArCj4+ICsubWFjcm8gZnBfdGVzdF9lcGlsb2d1ZV9sb2FkX2NvbXByZXNzZWRfc3AK Pj4gKy5lbmRtCj4+ICsKPj4gKy5tYWNybyBmcF90ZXN0X3Byb2xvZ3VlX3N0b3JlX2NvbXByZXNz ZWRfc3AKPj4gKy5lbmRtCj4+ICsKPj4gKy5tYWNybyBmcF90ZXN0X2VwaWxvZ3VlX3N0b3JlX2Nv bXByZXNzZWRfc3AKPj4gK8KgwqDCoCBjb3B5X2xvbmdfdG8gdDAsIHNwLCBhMQo+PiArLmVuZG0K Pj4gKwo+PiArI2RlZmluZSBnZW5faW5zdF9jb21wcmVzc2VkX3NwKF9faW5zdCwgX190eXBlKSBc Cj4+ICvCoMKgwqAgLmdsb2JhbCB0ZXN0X2NfICMjIF9faW5zdCAjIyBzcDsgXAo+PiArwqDCoMKg IHRlc3RfY18gIyMgX19pbnN0ICMjIHNwOjsgXAo+PiArwqDCoMKgwqDCoMKgwqAgc3Bfc3RhY2tf cHJvbG9ndWUgYTI7IFwKPj4gK8KgwqDCoMKgwqDCoMKgIGZwX3Rlc3RfcHJvbG9ndWVfIyMgX190 eXBlICMjIF9jb21wcmVzc2VkX3NwOyBcCj4+ICvCoMKgwqDCoMKgwqDCoCBmcF90ZXN0X3Byb2xv Z3VlX2NvbXByZXNzZWQ7IFwKPj4gK8KgwqDCoMKgwqDCoMKgIGZwX3Rlc3RfYm9keV9jb21wcmVz c2VkKGNfICMjIF9faW5zdCAjIyBzcCk7IFwKPj4gK8KgwqDCoMKgwqDCoMKgIGZwX3Rlc3RfZXBp bG9ndWVfIyMgX190eXBlICMjIF9jb21wcmVzc2VkX3NwOyBcCj4+ICvCoMKgwqDCoMKgwqDCoCBz cF9zdGFja19lcGlsb2d1ZSBhMjsgXAo+PiArwqDCoMKgwqDCoMKgwqAgcmV0Cj4+ICsKPj4gKyNk ZWZpbmUgZ2VuX3Rlc3RfbG9hZF9jb21wcmVzc2VkX3NwKF9faW5zdCkKPj4gZ2VuX2luc3RfY29t cHJlc3NlZF9zcChfX2luc3QsIGxvYWQpCj4+ICsjZGVmaW5lIGdlbl90ZXN0X3N0b3JlX2NvbXBy ZXNzZWRfc3AoX19pbnN0KQo+PiBnZW5faW5zdF9jb21wcmVzc2VkX3NwKF9faW5zdCwgc3RvcmUp Cj4+ICsKPj4gKy8qCj4+ICsgKiBmbG9hdF9mc3dfcmVnIC0gU2V0IGEgRlAgcmVnaXN0ZXIgZnJv bSBhIHJlZ2lzdGVyIGNvbnRhaW5pbmcgdGhlCj4+IHZhbHVlCj4+ICsgKiBhMCA9IEZQIHJlZ2lz dGVyIGluZGV4IHRvIGJlIHNldAo+PiArICogYTEgPSBhZGRyIHdoZXJlIHRvIHN0b3JlIHJlZ2lz dGVyIHZhbHVlCj4+ICsgKiBhMiA9IGFkZHJlc3Mgb2Zmc2V0Cj4+ICsgKiBhMyA9IHZhbHVlIHRv IGJlIHN0b3JlCj4+ICsgKi8KPj4gK2dlbl90ZXN0X2luc3QoZnN3KQo+PiArCj4+ICsvKgo+PiAr ICogZmxvYXRfZmx3X3JlZyAtIEdldCBhIEZQIHJlZ2lzdGVyIHZhbHVlIGFuZCByZXR1cm4gaXQK Pj4gKyAqIGEwID0gRlAgcmVnaXN0ZXIgaW5kZXggdG8gYmUgcmV0cmlldmVkCj4+ICsgKiBhMSA9 IGFkZHIgdG8gbG9hZCByZWdpc3RlciBmcm9tCj4+ICsgKiBhMiA9IGFkZHJlc3Mgb2Zmc2V0Cj4+ ICsgKi8KPj4gK2dlbl90ZXN0X2luc3QoZmx3KQo+PiArCj4+ICtnZW5fdGVzdF9pbnN0KGZzZCkK Pj4gKyNpZmRlZiBfX3Jpc2N2X2NvbXByZXNzZWQKPj4gK2dlbl90ZXN0X2luc3RfY29tcHJlc3Nl ZChmc2QpCj4+ICtnZW5fdGVzdF9zdG9yZV9jb21wcmVzc2VkX3NwKGZzZCkKPj4gKyNlbmRpZgo+ PiArCj4+ICtnZW5fdGVzdF9pbnN0KGZsZCkKPj4gKyNpZmRlZiBfX3Jpc2N2X2NvbXByZXNzZWQK Pj4gK2dlbl90ZXN0X2luc3RfY29tcHJlc3NlZChmbGQpCj4+ICtnZW5fdGVzdF9sb2FkX2NvbXBy ZXNzZWRfc3AoZmxkKQo+PiArI2VuZGlmCj4+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL2dwLlMgYi90b29scy8KPj4gdGVzdGluZy9zZWxmdGVz dHMvcmlzY3YvbWlzYWxpZ25lZC9ncC5TCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4 IDAwMDAwMDAwMDAwMC4uZjUzZjRjNmQ4MWRkCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvdG9v bHMvdGVzdGluZy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9ncC5TCj4+IEBAIC0wLDAgKzEs MTAzIEBACj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCj4+ ICsvKgo+PiArICogQ29weXJpZ2h0IChjKSAyMDI1IFJpdm9zIEluYy4KPj4gKyAqCj4+ICsgKiBB dXRob3JzOgo+PiArICrCoMKgwqDCoCBDbMOpbWVudCBMw6lnZXIgPGNsZWdlckByaXZvc2luYy5j b20+Cj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgImNvbW1vbi5TIgo+PiArCj4+ICsudGV4dAo+ PiArCj4+ICsubWFjcm8gX19nZW5fdGVzdF9pbnN0IGluc3QsIHNyY19yZWcKPj4gK8KgwqDCoCBc aW5zdCBhMiwgMChcc3JjX3JlZykKPj4gK8KgwqDCoCBtb3ZlIGEwLCBhMgo+PiArLmVuZG0KPj4g Kwo+PiArLm1hY3JvIGdlbl9mdW5jX2hlYWRlciBmdW5jX25hbWUsIHJ2Ywo+PiArwqDCoMKgIC5v cHRpb24gYXJjaCxccnZjCj4+ICvCoMKgwqAgLmdsb2JhbCB0ZXN0X1xmdW5jX25hbWUKPj4gK8Kg wqDCoCB0ZXN0X1xmdW5jX25hbWU6Cj4+ICsuZW5kbQo+PiArCj4+ICsubWFjcm8gZ2VuX3Rlc3Rf aW5zdCBpbnN0Cj4+ICvCoMKgwqAgLm9wdGlvbiBwdXNoCj4+ICvCoMKgwqAgZ2VuX2Z1bmNfaGVh ZGVyIFxpbnN0LCAtYwo+PiArwqDCoMKgIF9fZ2VuX3Rlc3RfaW5zdCBcaW5zdCwgYTAKPj4gK8Kg wqDCoCAub3B0aW9uIHBvcAo+PiArwqDCoMKgIHJldAo+PiArLmVuZG0KPj4gKwo+PiArLm1hY3Jv IF9fZ2VuX3Rlc3RfaW5zdF9jIG5hbWUsIHNyY19yZWcKPj4gK8KgwqDCoCAub3B0aW9uIHB1c2gK Pj4gK8KgwqDCoCBnZW5fZnVuY19oZWFkZXIgY19cbmFtZSwgK2MKPj4gK8KgwqDCoMKgIF9fZ2Vu X3Rlc3RfaW5zdCBjLlxuYW1lLCBcc3JjX3JlZwo+PiArwqDCoMKgIC5vcHRpb24gcG9wCj4+ICvC oMKgwqAgcmV0Cj4+ICsuZW5kbQo+PiArCj4+ICsubWFjcm8gZ2VuX3Rlc3RfaW5zdF9jIG5hbWUK Pj4gK8KgwqDCoMKgIF9fZ2VuX3Rlc3RfaW5zdF9jIFxuYW1lLCBhMAo+PiArLmVuZG0KPj4gKwo+ PiArCj4+ICsubWFjcm8gZ2VuX3Rlc3RfaW5zdF9sb2FkX2Nfc3AgbmFtZQo+PiArwqDCoMKgIC5v cHRpb24gcHVzaAo+PiArwqDCoMKgIGdlbl9mdW5jX2hlYWRlciBjX1xuYW1lXCgpc3AsICtjCj4+ ICvCoMKgwqAgc3Bfc3RhY2tfcHJvbG9ndWUgYTEKPj4gK8KgwqDCoCBjb3B5X2xvbmdfdG8gdDAs IGEwLCBzcAo+PiArwqDCoMKgIGMubGRzcCBhMCwgMChzcCkKPj4gK8KgwqDCoCBzcF9zdGFja19l cGlsb2d1ZSBhMQo+PiArwqDCoMKgIC5vcHRpb24gcG9wCj4+ICvCoMKgwqAgcmV0Cj4+ICsuZW5k bQo+PiArCj4+ICsubWFjcm8gbGJfc3Bfc2JfYTAgcmVnLCBvZmZzZXQKPj4gK8KgwqDCoCBsYl9z YiBccmVnLCBcb2Zmc2V0LCBzcCwgYTAKPj4gKy5lbmRtCj4+ICsKPj4gKy5tYWNybyBnZW5fdGVz dF9pbnN0X3N0b3JlX2Nfc3AgaW5zdF9uYW1lCj4+ICvCoMKgwqAgLm9wdGlvbiBwdXNoCj4+ICvC oMKgwqAgZ2VuX2Z1bmNfaGVhZGVyIGNfXGluc3RfbmFtZVwoKXNwLCArYwo+PiArwqDCoMKgIC8q IE1pc2FsaWduIHN0YWNrIHBvaW50ZXIgKi8KPj4gK8KgwqDCoCBzcF9zdGFja19wcm9sb2d1ZSBh MQo+PiArwqDCoMKgIC8qIE1pc2FsaWduIGFjY2VzcyAqLwo+PiArwqDCoMKgIGMuc2RzcCBhMiwg MChzcCkKPj4gK8KgwqDCoCBjb3B5X2xvbmdfdG8gdDAsIHNwLCBhMAo+PiArwqDCoMKgIHNwX3N0 YWNrX2VwaWxvZ3VlIGExCj4+ICvCoMKgwqAgLm9wdGlvbiBwb3AKPj4gK8KgwqDCoCByZXQKPj4g Ky5lbmRtCj4+ICsKPj4gKwo+PiArIC8qCj4+ICsgKiBhMCA9IGFkZHIgdG8gbG9hZCBmcm9tCj4+ ICsgKiBhMSA9IGFkZHJlc3Mgb2Zmc2V0Cj4+ICsgKiBhMiA9IHZhbHVlIHRvIGJlIGxvYWRlZAo+ PiArICovCj4+ICtnZW5fdGVzdF9pbnN0IGxoCj4+ICtnZW5fdGVzdF9pbnN0IGxodQo+PiArZ2Vu X3Rlc3RfaW5zdCBsdwo+PiArZ2VuX3Rlc3RfaW5zdCBsd3UKPj4gK2dlbl90ZXN0X2luc3QgbGQK Pj4gKyNpZmRlZiBfX3Jpc2N2X2NvbXByZXNzZWQKPj4gK2dlbl90ZXN0X2luc3RfYyBsdwo+PiAr Z2VuX3Rlc3RfaW5zdF9jIGxkCj4+ICtnZW5fdGVzdF9pbnN0X2xvYWRfY19zcCBsZAo+PiArI2Vu ZGlmCj4+ICsKPj4gKy8qCj4+ICsgKiBhMCA9IGFkZHIgd2hlcmUgdG8gc3RvcmUgdmFsdWUKPj4g KyAqIGExID0gYWRkcmVzcyBvZmZzZXQKPj4gKyAqIGEyID0gdmFsdWUgdG8gYmUgc3RvcmVkCj4+ ICsgKi8KPj4gK2dlbl90ZXN0X2luc3Qgc2gKPj4gK2dlbl90ZXN0X2luc3Qgc3cKPj4gK2dlbl90 ZXN0X2luc3Qgc2QKPj4gKyNpZmRlZiBfX3Jpc2N2X2NvbXByZXNzZWQKPj4gK2dlbl90ZXN0X2lu c3RfYyBzdwo+PiArZ2VuX3Rlc3RfaW5zdF9jIHNkCj4+ICtnZW5fdGVzdF9pbnN0X3N0b3JlX2Nf c3Agc2QKPj4gKyNlbmRpZgo+PiArCj4+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0 ZXN0cy9yaXNjdi9taXNhbGlnbmVkL21pc2FsaWduZWQuYyBiLwo+PiB0b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL21pc2FsaWduZWQuYwo+PiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmM2NmFhODdlYzAzZQo+PiAtLS0gL2Rldi9udWxs Cj4+ICsrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvbWlzYWxp Z25lZC5jCj4+IEBAIC0wLDAgKzEsMjU0IEBACj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAoYykgMjAyNSBSaXZvcyBJbmMuCj4+ ICsgKgo+PiArICogQXV0aG9yczoKPj4gKyAqwqDCoMKgwqAgQ2zDqW1lbnQgTMOpZ2VyIDxjbGVn ZXJAcml2b3NpbmMuY29tPgo+PiArICovCj4+ICsjaW5jbHVkZSA8c2lnbmFsLmg+Cj4+ICsjaW5j bHVkZSA8c3RkaW8uaD4KPj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPj4gKyNpbmNsdWRlIDxsaW51 eC9wdHJhY2UuaD4KPj4gKyNpbmNsdWRlICIuLi8uLi9rc2VsZnRlc3RfaGFybmVzcy5oIgo+PiAr Cj4+ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPj4gKyNpbmNs dWRlIDxzdGRpbnQuaD4KPj4gKyNpbmNsdWRlIDxmbG9hdC5oPgo+PiArI2luY2x1ZGUgPGVycm5v Lmg+Cj4+ICsjaW5jbHVkZSA8bWF0aC5oPgo+PiArI2luY2x1ZGUgPHN0cmluZy5oPgo+PiArI2lu Y2x1ZGUgPHNpZ25hbC5oPgo+PiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4KPj4gKyNpbmNsdWRlIDx1 bmlzdGQuaD4KPj4gKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgo+PiArI2luY2x1ZGUgPHVjb250ZXh0 Lmg+Cj4+ICsKPj4gKyNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KPj4gKwo+PiArI2RlZmluZSBzdHJp bmdpZnkocykgX19zdHJpbmdpZnkocykKPj4gKyNkZWZpbmUgX19zdHJpbmdpZnkocykgI3MKPj4g Kwo+PiArI2RlZmluZSBWQUwxNsKgwqDCoCAweDEyMzQKPj4gKyNkZWZpbmUgVkFMMzLCoMKgwqAg MHhERUFEQkVFRgo+PiArI2RlZmluZSBWQUw2NMKgwqDCoCAweDQ1Njc0MzIxRDAwREY3ODkKPj4g Kwo+PiArI2RlZmluZSBWQUxfZmxvYXTCoMKgwqAgNzg5NTEuMjM0Mzc1Cj4+ICsjZGVmaW5lIFZB TF9kb3VibGXCoMKgwqAgNTY3ODkwLjUxMjM5Njk2NTc4OTU4OTI5MAo+PiArCj4+ICtzdGF0aWMg Ym9vbCBmbG9hdF9lcXVhbChmbG9hdCBhLCBmbG9hdCBiKQo+PiArewo+PiArwqDCoMKgIGZsb2F0 IHNjYWxlZF9lcHNpbG9uOwo+PiArwqDCoMKgIGZsb2F0IGRpZmZlcmVuY2UgPSBmYWJzZihhIC0g Yik7Cj4+ICsKPj4gK8KgwqDCoCAvLyBTY2FsZSB0byB0aGUgbGFyZ2VzdCB2YWx1ZS4KPj4gK8Kg wqDCoCBhID0gZmFic2YoYSk7Cj4+ICvCoMKgwqAgYiA9IGZhYnNmKGIpOwo+PiArwqDCoMKgIGlm IChhID4gYikKPj4gK8KgwqDCoMKgwqDCoMKgIHNjYWxlZF9lcHNpbG9uID0gRkxUX0VQU0lMT04g KiBhOwo+PiArwqDCoMKgIGVsc2UKPj4gK8KgwqDCoMKgwqDCoMKgIHNjYWxlZF9lcHNpbG9uID0g RkxUX0VQU0lMT04gKiBiOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIGRpZmZlcmVuY2UgPD0gc2Nh bGVkX2Vwc2lsb247Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBib29sIGRvdWJsZV9lcXVhbChkb3Vi bGUgYSwgZG91YmxlIGIpCj4+ICt7Cj4+ICvCoMKgwqAgZG91YmxlIHNjYWxlZF9lcHNpbG9uOwo+ PiArwqDCoMKgIGRvdWJsZSBkaWZmZXJlbmNlID0gZmFic2YoYSAtIGIpOwo+PiArCj4+ICvCoMKg wqAgLy8gU2NhbGUgdG8gdGhlIGxhcmdlc3QgdmFsdWUuCj4+ICvCoMKgwqAgYSA9IGZhYnMoYSk7 Cj4+ICvCoMKgwqAgYiA9IGZhYnMoYik7Cj4+ICvCoMKgwqAgaWYgKGEgPiBiKQo+PiArwqDCoMKg wqDCoMKgwqAgc2NhbGVkX2Vwc2lsb24gPSBEQkxfRVBTSUxPTiAqIGE7Cj4+ICvCoMKgwqAgZWxz ZQo+PiArwqDCoMKgwqDCoMKgwqAgc2NhbGVkX2Vwc2lsb24gPSBEQkxfRVBTSUxPTiAqIGI7Cj4+ ICsKPj4gK8KgwqDCoCByZXR1cm4gZGlmZmVyZW5jZSA8PSBzY2FsZWRfZXBzaWxvbjsKPj4gK30K Pj4gKwo+PiArI2RlZmluZSBmcHVfbG9hZF9wcm90byhfX2luc3QsIF9fdHlwZSkgXAo+PiArZXh0 ZXJuIF9fdHlwZSB0ZXN0XyAjIyBfX2luc3QodW5zaWduZWQgbG9uZyBmcF9yZWcsIHZvaWQgKmFk ZHIsCj4+IHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBfX3R5cGUgdmFsdWUpCj4+ICsKPj4gK2ZwdV9s b2FkX3Byb3RvKGZsdywgZmxvYXQpOwo+PiArZnB1X2xvYWRfcHJvdG8oZmxkLCBkb3VibGUpOwo+ PiArZnB1X2xvYWRfcHJvdG8oY19mbHcsIGZsb2F0KTsKPj4gK2ZwdV9sb2FkX3Byb3RvKGNfZmxk LCBkb3VibGUpOwo+PiArZnB1X2xvYWRfcHJvdG8oY19mbGRzcCwgZG91YmxlKTsKPj4gKwo+PiAr I2RlZmluZSBmcHVfc3RvcmVfcHJvdG8oX19pbnN0LCBfX3R5cGUpIFwKPj4gK2V4dGVybiB2b2lk IHRlc3RfICMjIF9faW5zdCh1bnNpZ25lZCBsb25nIGZwX3JlZywgdm9pZCAqYWRkciwKPj4gdW5z aWduZWQgbG9uZyBvZmZzZXQsIF9fdHlwZSB2YWx1ZSkKPj4gKwo+PiArZnB1X3N0b3JlX3Byb3Rv KGZzdywgZmxvYXQpOwo+PiArZnB1X3N0b3JlX3Byb3RvKGZzZCwgZG91YmxlKTsKPj4gK2ZwdV9z dG9yZV9wcm90byhjX2ZzdywgZmxvYXQpOwo+PiArZnB1X3N0b3JlX3Byb3RvKGNfZnNkLCBkb3Vi bGUpOwo+PiArZnB1X3N0b3JlX3Byb3RvKGNfZnNkc3AsIGRvdWJsZSk7Cj4+ICsKPj4gKyNkZWZp bmUgZ3BfbG9hZF9wcm90byhfX2luc3QsIF9fdHlwZSkgXAo+PiArZXh0ZXJuIF9fdHlwZSB0ZXN0 XyAjIyBfX2luc3Qodm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBvZmZzZXQsCj4+IF9fdHlwZSB2 YWx1ZSkKPj4gKwo+PiArZ3BfbG9hZF9wcm90byhsaCwgdWludDE2X3QpOwo+PiArZ3BfbG9hZF9w cm90byhsaHUsIHVpbnQxNl90KTsKPj4gK2dwX2xvYWRfcHJvdG8obHcsIHVpbnQzMl90KTsKPj4g K2dwX2xvYWRfcHJvdG8obHd1LCB1aW50MzJfdCk7Cj4+ICtncF9sb2FkX3Byb3RvKGxkLCB1aW50 NjRfdCk7Cj4+ICtncF9sb2FkX3Byb3RvKGNfbHcsIHVpbnQzMl90KTsKPj4gK2dwX2xvYWRfcHJv dG8oY19sZCwgdWludDY0X3QpOwo+PiArZ3BfbG9hZF9wcm90byhjX2xkc3AsIHVpbnQ2NF90KTsK Pj4gKwo+PiArI2RlZmluZSBncF9zdG9yZV9wcm90byhfX2luc3QsIF9fdHlwZSkgXAo+PiArZXh0 ZXJuIHZvaWQgdGVzdF8gIyMgX19pbnN0KHZvaWQgKmFkZHIsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0 LCBfX3R5cGUKPj4gdmFsdWUpCj4+ICsKPj4gK2dwX3N0b3JlX3Byb3RvKHNoLCB1aW50MTZfdCk7 Cj4+ICtncF9zdG9yZV9wcm90byhzdywgdWludDMyX3QpOwo+PiArZ3Bfc3RvcmVfcHJvdG8oc2Qs IHVpbnQ2NF90KTsKPj4gK2dwX3N0b3JlX3Byb3RvKGNfc3csIHVpbnQzMl90KTsKPj4gK2dwX3N0 b3JlX3Byb3RvKGNfc2QsIHVpbnQ2NF90KTsKPj4gK2dwX3N0b3JlX3Byb3RvKGNfc2RzcCwgdWlu dDY0X3QpOwo+PiArCj4+ICsjZGVmaW5lIFRFU1RfR1BfTE9BRChfX2luc3QsIF9fdHlwZV9zaXpl KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK1RFU1QoZ3BfbG9h ZF8gIyMgX19pbnN0KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBcCj4+ICt7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoCBpbnQg b2Zmc2V0LCByZXQ7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFwKPj4gK8KgwqDCoCB1aW50OF90IGJ1ZlsxNl0gX19hdHRyaWJ1dGVfXygoYWxp Z25lZCgxNikpKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoCByZXQgPSBwcmN0bChQUl9TRVRfVU5BTElHTiwgUFJf VU5BTElHTl9OT1BSSU5UKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoCBBU1NF UlRfRVEocmV0LCAwKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoCBmb3Ig KG9mZnNldCA9IDE7IG9mZnNldCA8IF9fdHlwZV9zaXplIC8gODsgb2Zmc2V0KyspIHvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoMKgwqDCoMKgIHVpbnQgIyMgX190eXBlX3NpemUg IyMgX3QgdmFsID0gVkFMICMjIF9fdHlwZV9zaXplO8KgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDC oMKgwqDCoMKgIHVpbnQgIyMgX190eXBlX3NpemUgIyMgX3QgKnB0ciA9ICh1aW50ICMjIF9fdHlw ZV9zaXplICMjIF90Cj4+ICopIChidWYgKyBvZmZzZXQpOyBcCj4+ICvCoMKgwqDCoMKgwqDCoCBt ZW1jcHkocHRyLCAmdmFsLCBzaXplb2YodmFsKSk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgwqDCoMKgwqAgdmFsID0gdGVzdF8gIyMgX19pbnN0KHB0 ciwgb2Zmc2V0LCB2YWwpO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgwqDCoMKg wqAgRVhQRUNUX0VRKFZBTCAjIyBfX3R5cGVfc2l6ZSwgdmFsKTvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgIH3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK30KPj4gKwo+PiAr VEVTVF9HUF9MT0FEKGxoLCAxNik7Cj4+ICtURVNUX0dQX0xPQUQobGh1LCAxNik7Cj4+ICtURVNU X0dQX0xPQUQobHcsIDMyKTsKPj4gK1RFU1RfR1BfTE9BRChsd3UsIDMyKTsKPj4gK1RFU1RfR1Bf TE9BRChsZCwgNjQpOwo+PiArI2lmZGVmIF9fcmlzY3ZfY29tcHJlc3NlZAo+PiArVEVTVF9HUF9M T0FEKGNfbHcsIDMyKTsKPj4gK1RFU1RfR1BfTE9BRChjX2xkLCA2NCk7Cj4+ICtURVNUX0dQX0xP QUQoY19sZHNwLCA2NCk7Cj4+ICsjZW5kaWYKPj4gKwo+PiArI2RlZmluZSBURVNUX0dQX1NUT1JF KF9faW5zdCwgX190eXBlX3NpemUpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgXAo+PiArVEVTVChncF9sb2FkXyAjIyBfX2luc3QpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK3vCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgXAo+PiArwqDCoMKgIGludCBvZmZzZXQsIHJldDvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgIHVpbnQ4X3QgYnVmWzE2 XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBcCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgIHJldCA9IHByY3Rs KFBSX1NFVF9VTkFMSUdOLCBQUl9VTkFMSUdOX05PUFJJTlQpO8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgXAo+PiArwqDCoMKgIEFTU0VSVF9FUShyZXQsIDApO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgXAo+PiArwqDCoMKgIGZvciAob2Zmc2V0ID0gMTsgb2Zmc2V0IDwgX190eXBlX3NpemUgLyA4 OyBvZmZzZXQrKykge8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgwqDCoMKgwqAg dWludCAjIyBfX3R5cGVfc2l6ZSAjIyBfdCB2YWwgPSBWQUwgIyMgX190eXBlX3NpemU7wqDCoMKg wqDCoMKgwqAgXAo+PiArwqDCoMKgwqDCoMKgwqAgdWludCAjIyBfX3R5cGVfc2l6ZSAjIyBfdCAq cHRyID0gKHVpbnQgIyMgX190eXBlX3NpemUgIyMgX3QKPj4gKikgKGJ1ZiArIG9mZnNldCk7IFwK Pj4gK8KgwqDCoMKgwqDCoMKgIG1lbXNldChwdHIsIDAsIHNpemVvZih2YWwpKTvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqDCoMKgwqDCoCB0ZXN0XyAj IyBfX2luc3QocHRyLCBvZmZzZXQsIHZhbCk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFwKPj4gK8KgwqDCoMKgwqDCoMKgIG1lbWNweSgmdmFsLCBwdHIsIHNpemVvZih2YWwpKTvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqDCoMKgwqDCoCBF WFBFQ1RfRVEoVkFMICMjIF9fdHlwZV9zaXplLCB2YWwpO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBcCj4+ICvCoMKgwqAgfcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArfQo+PiArVEVTVF9HUF9T VE9SRShzaCwgMTYpOwo+PiArVEVTVF9HUF9TVE9SRShzdywgMzIpOwo+PiArVEVTVF9HUF9TVE9S RShzZCwgNjQpOwo+PiArI2lmZGVmIF9fcmlzY3ZfY29tcHJlc3NlZAo+PiArVEVTVF9HUF9TVE9S RShjX3N3LCAzMik7Cj4+ICtURVNUX0dQX1NUT1JFKGNfc2QsIDY0KTsKPj4gK1RFU1RfR1BfU1RP UkUoY19zZHNwLCA2NCk7Cj4+ICsjZW5kaWYKPj4gKwo+PiArI2RlZmluZSBfX1RFU1RfRlBVX0xP QUQoX190eXBlLCBfX2luc3QsIF9fcmVnX3N0YXJ0LAo+PiBfX3JlZ19lbmQpwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBcCj4+ICtURVNUKGZwdV9sb2FkXyAjIyBfX2luc3QpwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK3vCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgIGludCBpLCByZXQsIG9mZnNldCwgZnBfcmVnO8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgIHVp bnQ4X3QgYnVmWzE2XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpO8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKg IHJldCA9IHByY3RsKFBSX1NFVF9VTkFMSUdOLCBQUl9VTkFMSUdOX05PUFJJTlQpO8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgIEFTU0VSVF9FUShyZXQsIDApO8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgIGZvciAoZnBfcmVnID0gX19yZWdfc3RhcnQ7IGZw X3JlZyA8IF9fcmVnX2VuZDsgZnBfcmVnKyspIHvCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqDC oMKgwqDCoCBmb3IgKG9mZnNldCA9IDE7IG9mZnNldCA8IDQ7IG9mZnNldCsrKSB7wqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZvaWQgKmxvYWRfYWRk ciA9IChidWYgKyBvZmZzZXQpO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBfX3R5cGUgdmFsID0gVkFMXyAjIyBfX3R5cGUgO8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBtZW1jcHkobG9hZF9hZGRyLCAmdmFsLCBzaXplb2YodmFsKSk7wqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZhbCA9IHRl c3RfICMjIF9faW5zdChmcF9yZWcsIGxvYWRfYWRkciwgb2Zmc2V0LCB2YWwpO8KgwqDCoCBcCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVYUEVDVF9UUlVFKF9fdHlwZSAjI19lcXVhbCh2YWws IFZBTF8jIyBfX3R5cGUpKTvCoMKgwqAgXAo+PiArwqDCoMKgwqDCoMKgwqAgfcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4g K8KgwqDCoCB9wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICt9Cj4+ICsjZGVmaW5lIFRFU1RfRlBVX0xPQUQo X190eXBlLCBfX2luc3QpIFwKPj4gK8KgwqDCoCBfX1RFU1RfRlBVX0xPQUQoX190eXBlLCBfX2lu c3QsIDAsIDMyKQo+PiArI2RlZmluZSBURVNUX0ZQVV9MT0FEX0NPTVBSRVNTRUQoX190eXBlLCBf X2luc3QpIFwKPj4gK8KgwqDCoCBfX1RFU1RfRlBVX0xPQUQoX190eXBlLCBfX2luc3QsIDgsIDE2 KQo+PiArCj4+ICtURVNUX0ZQVV9MT0FEKGZsb2F0LCBmbHcpCj4+ICtURVNUX0ZQVV9MT0FEKGRv dWJsZSwgZmxkKQo+PiArI2lmZGVmIF9fcmlzY3ZfY29tcHJlc3NlZAo+PiArVEVTVF9GUFVfTE9B RF9DT01QUkVTU0VEKGRvdWJsZSwgY19mbGQpCj4+ICtURVNUX0ZQVV9MT0FEX0NPTVBSRVNTRUQo ZG91YmxlLCBjX2ZsZHNwKQo+PiArI2VuZGlmCj4+ICsKPj4gKyNkZWZpbmUgX19URVNUX0ZQVV9T VE9SRShfX3R5cGUsIF9faW5zdCwgX19yZWdfc3RhcnQsCj4+IF9fcmVnX2VuZCnCoMKgwqDCoMKg wqDCoCBcCj4+ICtURVNUKGZwdV9zdG9yZV8gIyMgX19pbnN0KcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICt7wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFwKPj4gK8KgwqDCoCBpbnQgaSwgcmV0LCBvZmZzZXQsIGZwX3JlZzvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoCB1aW50OF90 IGJ1ZlsxNl0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxNikpKTvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoCByZXQg PSBwcmN0bChQUl9TRVRfVU5BTElHTiwgUFJfVU5BTElHTl9OT1BSSU5UKTvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFwKPj4gK8KgwqDCoCBBU1NFUlRfRVEocmV0LCAwKTvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFwKPj4gK8KgwqDCoCBmb3IgKGZwX3JlZyA9IF9fcmVnX3N0YXJ0OyBmcF9yZWcg PCBfX3JlZ19lbmQ7IGZwX3JlZysrKSB7wqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgwqDCoMKg wqAgZm9yIChvZmZzZXQgPSAxOyBvZmZzZXQgPCA0OyBvZmZzZXQrKykge8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgXAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdm9pZCAqc3RvcmVfYWRkciA9IChidWYgKyBvZmZzZXQpO8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgXAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX3R5cGUgdmFsID0gVkFMXyAj IyBfX3R5cGUgO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0ZXN0XyAjIyBfX2luc3Qo ZnBfcmVnLCBzdG9yZV9hZGRyLCBvZmZzZXQsIHZhbCk7wqDCoMKgIFwKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbWVtY3B5KCZ2YWwsIHN0b3JlX2FkZHIsIHNpemVvZih2YWwpKTvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRVhQRUNUX1RSVUUo X190eXBlICMjIF9lcXVhbCh2YWwsIFZBTF8jIyBfX3R5cGUpKTvCoMKgwqAgXAo+PiArwqDCoMKg wqDCoMKgwqAgfcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoCB9wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICt9Cj4+ICsj ZGVmaW5lIFRFU1RfRlBVX1NUT1JFKF9fdHlwZSwgX19pbnN0KSBcCj4+ICvCoMKgwqAgX19URVNU X0ZQVV9TVE9SRShfX3R5cGUsIF9faW5zdCwgMCwgMzIpCj4+ICsjZGVmaW5lIFRFU1RfRlBVX1NU T1JFX0NPTVBSRVNTRUQoX190eXBlLCBfX2luc3QpIFwKPj4gK8KgwqDCoCBfX1RFU1RfRlBVX1NU T1JFKF9fdHlwZSwgX19pbnN0LCA4LCAxNikKPj4gKwo+PiArVEVTVF9GUFVfU1RPUkUoZmxvYXQs IGZzdykKPj4gK1RFU1RfRlBVX1NUT1JFKGRvdWJsZSwgZnNkKQo+PiArI2lmZGVmIF9fcmlzY3Zf Y29tcHJlc3NlZAo+PiArVEVTVF9GUFVfU1RPUkVfQ09NUFJFU1NFRChkb3VibGUsIGNfZnNkKQo+ PiArVEVTVF9GUFVfU1RPUkVfQ09NUFJFU1NFRChkb3VibGUsIGNfZnNkc3ApCj4+ICsjZW5kaWYK Pj4gKwo+PiArVEVTVF9TSUdOQUwoZ2VuX3NpZ2J1cywgU0lHQlVTKQo+PiArewo+PiArwqDCoMKg IHVpbnQzMl90ICpwdHI7Cj4+ICvCoMKgwqAgdWludDhfdCBidWZbMTZdIF9fYXR0cmlidXRlX18o KGFsaWduZWQoMTYpKSk7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gKwo+PiArwqDCoMKgIHJldCA9 IHByY3RsKFBSX1NFVF9VTkFMSUdOLCBQUl9VTkFMSUdOX1NJR0JVUyk7Cj4+ICvCoMKgwqAgQVNT RVJUX0VRKHJldCwgMCk7Cj4+ICsKPj4gK8KgwqDCoCBwdHIgPSAodWludDMyX3QgKikoYnVmICsg MSk7Cj4+ICvCoMKgwqAgKnB0ciA9IDB4REVBREJFRUZVTEw7Cj4+ICt9Cj4+ICsKPj4gK2ludCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKPj4gK3sKPj4gK8KgwqDCoCBpbnQgcmV0LCB2YWw7 Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSBwcmN0bChQUl9HRVRfVU5BTElHTiwgJnZhbCk7Cj4+ICvC oMKgwqAgaWYgKHJldCA9PSAtMSAmJiBlcnJubyA9PSBFSU5WQUwpCj4+ICvCoMKgwqDCoMKgwqDC oCBrc2Z0X2V4aXRfc2tpcCgiU0tJUCBHRVRfVU5BTElHTl9DVEwgbm90IHN1cHBvcnRlZFxuIik7 Cj4+ICsKPj4gK8KgwqDCoCBleGl0KHRlc3RfaGFybmVzc19ydW4oYXJnYywgYXJndikpOwo+PiAr fQo+IAo+IAo+IFNvIEkgaGFkIHRvIGFkZCB0aGUgZm9sbG93aW5nIHRvIGFjdHVhbGx5IGNvbXBp bGUgdGhpcyBzZWxmdGVzdCBhbG9uZwo+IHdpdGggb3RoZXIgcmlzY3YgdGVzdHMgYW5kIGZpeCBz b21lIHdhcm5pbmdzOgo+IAo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9y aXNjdi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3RpbmcvCj4gc2VsZnRlc3RzL3Jpc2N2L01ha2VmaWxl Cj4gaW5kZXggMDk5YjhjMWY0NmY4OS4uOTVhOThjZWViM2IzYSAxMDA2NDQKPiAtLS0gYS90b29s cy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9NYWtlZmlsZQo+ICsrKyBiL3Rvb2xzL3Rlc3Rpbmcv c2VsZnRlc3RzL3Jpc2N2L01ha2VmaWxlCj4gQEAgLTUsNyArNSw3IEBACj4gwqBBUkNIID89ICQo c2hlbGwgdW5hbWUgLW0gMj4vZGV2L251bGwgfHwgZWNobyBub3QpCj4gCj4gwqBpZm5lcSAoLCQo ZmlsdGVyICQoQVJDSCkscmlzY3YpKQo+IC1SSVNDVl9TVUJUQVJHRVRTID89IGFiaSBod3Byb2Jl IG1tIHNpZ3JldHVybiB2ZWN0b3IKPiArUklTQ1ZfU1VCVEFSR0VUUyA/PSBhYmkgaHdwcm9iZSBt bSBzaWdyZXR1cm4gdmVjdG9yIG1pc2FsaWduZWQKPiDCoGVsc2UKPiDCoFJJU0NWX1NVQlRBUkdF VFMgOj0KPiDCoGVuZGlmCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jp c2N2L21pc2FsaWduZWQvbWlzYWxpZ25lZC5jIGIvCj4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMv cmlzY3YvbWlzYWxpZ25lZC9taXNhbGlnbmVkLmMKPiBpbmRleCBjNjZhYTg3ZWMwM2VjLi44ZmE1 YWQxYTkzZDE3IDEwMDY0NAo+IC0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21p c2FsaWduZWQvbWlzYWxpZ25lZC5jCj4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlz Y3YvbWlzYWxpZ25lZC9taXNhbGlnbmVkLmMKPiBAQCAtMTY3LDcgKzE2Nyw3IEBAIFRFU1RfR1Bf U1RPUkUoY19zZHNwLCA2NCk7Cj4gwqAjZGVmaW5lIF9fVEVTVF9GUFVfTE9BRChfX3R5cGUsIF9f aW5zdCwgX19yZWdfc3RhcnQsCj4gX19yZWdfZW5kKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiDCoFRFU1QoZnB1X2xvYWRfICMjCj4g X19pbnN0KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg XAo+IMKgeyBcCj4gLcKgwqDCoMKgwqDCoCBpbnQgaSwgcmV0LCBvZmZzZXQsCj4gZnBfcmVnO8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ICvCoMKgwqDCoMKgwqAgaW50IHJldCwg b2Zmc2V0LAo+IGZwX3JlZzvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwK PiDCoMKgwqDCoMKgwqDCoCB1aW50OF90IGJ1ZlsxNl0KPiBfX2F0dHJpYnV0ZV9fKChhbGlnbmVk KDE2KSkpO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgXAo+IFwKPiDCoMKgwqDCoMKgwqDCoCByZXQgPSBwcmN0bChQUl9TRVRfVU5BTElHTiwKPiBQ Ul9VTkFMSUdOX05PUFJJTlQpO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgXAo+IEBAIC0xOTksNyArMTk5LDcgQEAgVEVTVF9GUFVfTE9BRF9DT01QUkVTU0VE KGRvdWJsZSwgY19mbGRzcCkKPiDCoCNkZWZpbmUgX19URVNUX0ZQVV9TVE9SRShfX3R5cGUsIF9f aW5zdCwgX19yZWdfc3RhcnQsCj4gX19yZWdfZW5kKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgXAo+IMKgVEVTVChmcHVfc3RvcmVfICMjCj4gX19pbnN0KcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiDCoHsgXAo+IC3CoMKgwqDCoMKgwqAgaW50 IGksIHJldCwgb2Zmc2V0LAo+IGZwX3JlZzvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFwKPiArwqDCoMKgwqDCoMKgIGludCByZXQsIG9mZnNldCwKPiBmcF9yZWc7wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gwqDCoMKgwqDCoMKgwqAgdWludDhfdCBidWZb MTZdCj4gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxNikpKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiBcCj4gwqDCoMKgwqDCoMKgwqAgcmV0 ID0gcHJjdGwoUFJfU0VUX1VOQUxJR04sIFBSX1VOQUxJR05fTk9QUklOVCk7Cj4gCj4gCj4gSSBh bHJlYWR5IG1lcmdlZCB0aGUgZmlyc3QgMyBjb21taXRzIG9mIHRoaXMgcGF0Y2hzZXQgaW4gZml4 ZXMsIHNvIGNhbgo+IHlvdSByZXNlbmQgb25seSB0aGUgbGFzdCAyIHBhdGNoZXMgd2l0aCB0aGUg Zml4ZXMgYWJvdmU/CgpZZXMgc3VyZSwKClRoYW5rcywKCkNsw6ltZW50Cgo+IAo+IFRoYW5rcywK PiAKPiBBbGV4Cj4gCj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1yaXNjdgo=