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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 012E1C433FE for ; Fri, 21 Oct 2022 20:38:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9A2358E0002; Fri, 21 Oct 2022 16:38:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9516F8E0001; Fri, 21 Oct 2022 16:38:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 81AC98E0002; Fri, 21 Oct 2022 16:38:09 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 739188E0001 for ; Fri, 21 Oct 2022 16:38:09 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 400F71409FD for ; Fri, 21 Oct 2022 20:38:09 +0000 (UTC) X-FDA: 80046118698.17.B19E786 Received: from mail-yw1-f180.google.com (mail-yw1-f180.google.com [209.85.128.180]) by imf15.hostedemail.com (Postfix) with ESMTP id D52E3A0039 for ; Fri, 21 Oct 2022 20:38:08 +0000 (UTC) Received: by mail-yw1-f180.google.com with SMTP id 00721157ae682-3691e040abaso34247637b3.9 for ; Fri, 21 Oct 2022 13:38:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=4JZYQeLzr13t2F4XshvRm/E8oRVfIbIgJs1oHky0VEQ=; b=mnm0wh60hSPej44KJERGOD6XgQDAvxDIegzgTD5rzDyt4X2T11c2fJr5bwqtSO+O3/ B7blO+exEVWwsX+HKu7ejT0Sn7HiK41xYNpJlRcQ6shFH6NSIViISW0nO/aGAzG6qhhv LXSWtUXkY8nCSl1HuJQegsSAB5HG4PhgxpxoIk5/5H8lPJBEWWVoRzsLxXc/QV/Wrbpb BD1eO+ACnfVyKy4xkNJdqtBwFTQ/Bf4aV2G/uvf6n4Wf4c2C0hyR46KESUXwNfxesSaE xJHe1ftfcflinXQ6daK9a0oQ2f4I7tlAvBDugKUAhA9r5AGyNtdxgQx1FP1Kv/nLLMJI JLLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=4JZYQeLzr13t2F4XshvRm/E8oRVfIbIgJs1oHky0VEQ=; b=2bgnJpQAc6SBJ1hpvY4pnh4x1V0Q60u6Z5E7EtbZV9Ap0DlVCbbflCUHcv2IOKx5MD iBS3g+hV6ASB+DCjMIBiBgsCfn7fjdx0+d24IltEQ3sDvIzgtZxMpz3DNos2+f09yUPu BBARuLWgawXovQnMFdhEcqO/l/bPTnp7XDmbNmKYDSi+jaQMJ5qJXtov9fTqdAQ+imoe wns/q23jx+ludQlV7REkYscpAyknCgjVa8Xmglu4mBnrtIesrG1PSJC5kxQsFzr2Wkh8 m8EXAuD27KR34XbwKAisxTb25gDmVG4hrdjSVBfjOYRmOmV4VZqvAeIdCxViazO1vdmU 8S0A== X-Gm-Message-State: ACrzQf2JjztBXA8sw7iSG3XYJOyasvdSfJ/Pf6EMb5Sox7gJTSpJq2OM lnruT6ZOFL6ByjSE2IcPrIFf8IuL9snZhrd6ayvN3w== X-Google-Smtp-Source: AMsMyM4Q2rKBzC5ZbHL13lj9rw7E63VFCdon99YeHCO9jldiBk9T8+11kAAKkS/9oTm3lbF3Bd5ry7NH2GwO3cFy6eQ= X-Received: by 2002:a0d:d284:0:b0:352:fe85:536c with SMTP id u126-20020a0dd284000000b00352fe85536cmr18878497ywd.299.1666384687906; Fri, 21 Oct 2022 13:38:07 -0700 (PDT) MIME-Version: 1.0 References: <20220915150417.722975-19-glider@google.com> <20221019173620.10167-1-youling257@gmail.com> In-Reply-To: From: Alexander Potapenko Date: Fri, 21 Oct 2022 13:37:31 -0700 Message-ID: Subject: Re: [PATCH v7 18/43] instrumented.h: add KMSAN support To: youling 257 Cc: Marco Elver , Alexander Viro , Alexei Starovoitov , Andrew Morton , Andrey Konovalov , Andy Lutomirski , Arnd Bergmann , Borislav Petkov , Christoph Hellwig , Christoph Lameter , David Rientjes , Dmitry Vyukov , Eric Biggers , Eric Dumazet , Greg Kroah-Hartman , Herbert Xu , Ilya Leoshkevich , Ingo Molnar , Jens Axboe , Joonsoo Kim , Kees Cook , Mark Rutland , Matthew Wilcox , "Michael S. Tsirkin" , Pekka Enberg , Peter Zijlstra , Petr Mladek , Stephen Rothwell , Steven Rostedt , Thomas Gleixner , Vasily Gorbik , Vegard Nossum , Vlastimil Babka , kasan-dev@googlegroups.com, linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: multipart/alternative; boundary="000000000000621ccb05eb916b72" ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=mnm0wh60; spf=pass (imf15.hostedemail.com: domain of glider@google.com designates 209.85.128.180 as permitted sender) smtp.mailfrom=glider@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1666384688; a=rsa-sha256; cv=none; b=Sq8uARwH9/SYcwBsYi0OflvFfo9C953kDQJfpa1AJmD6m5wt/qqpi/LLGYLwyxCvHW6ICn iUYAVZEszf7GGQksOWkySUnMNLrsIv00UZg2ndiDvHdusR7t15d3u2HsCtLjsuvcFPXfBI uaLqzX/HQjg5pGfuAIYffsWo/pp79cg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1666384688; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=4JZYQeLzr13t2F4XshvRm/E8oRVfIbIgJs1oHky0VEQ=; b=Ai1Sm2nvFBXD3RqUos9HnNVUPsljqhgfLE2EfUv06FpU4KV/GvSDxilHIH8FUVKHO4SAW3 5vw0p0gKaSRUWE6QbzR7x141MSlBy2jIjKVhzVJz5rWSKrjFFMOlsFOXK6VhqUgsOClycs eHSDymTXEmpi+arPlfIXutL9hdAnZOM= Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=mnm0wh60; spf=pass (imf15.hostedemail.com: domain of glider@google.com designates 209.85.128.180 as permitted sender) smtp.mailfrom=glider@google.com; dmarc=pass (policy=reject) header.from=google.com X-Rspam-User: X-Rspamd-Server: rspam10 X-Stat-Signature: y5xb1tjenghwwbka67yatuz3m8zpn4dj X-Rspamd-Queue-Id: D52E3A0039 X-HE-Tag: 1666384688-390523 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: --000000000000621ccb05eb916b72 Content-Type: text/plain; charset="UTF-8" On Fri, Oct 21, 2022 at 8:19 AM youling 257 wrote: > CONFIG_DEBUG_INFO=y > CONFIG_AS_HAS_NON_CONST_LEB128=y > # CONFIG_DEBUG_INFO_NONE is not set > CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y > # CONFIG_DEBUG_INFO_DWARF4 is not set > # CONFIG_DEBUG_INFO_DWARF5 is not set > # CONFIG_DEBUG_INFO_REDUCED is not set > # CONFIG_DEBUG_INFO_COMPRESSED is not set > # CONFIG_DEBUG_INFO_SPLIT is not set > # CONFIG_DEBUG_INFO_BTF is not set > # CONFIG_GDB_SCRIPTS is not set > > perf top still no function name. > > 12.90% [kernel] [k] 0xffffffff833dfa64 > I think I know what's going on. The two functions that differ with and without the patch were passing an incremented pointer to unsafe_put_user(), which is a macro, e.g.: unsafe_put_user((compat_ulong_t)m, umask++, Efault); Because that macro didn't evaluate its second parameter, "umask++" was passed to a call to kmsan_copy_to_user(), which resulted in an extra increment of umask. This probably violated some expectations of the userspace app, which in turn led to repetitive kernel calls. Could you please check if the patch below fixes the problem for you? diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h index 8bc614cfe21b9..1cc756eafa447 100644 --- a/arch/x86/include/asm/uaccess.h +++ b/arch/x86/include/asm/uaccess.h @@ -254,24 +254,25 @@ extern void __put_user_nocheck_8(void); #define __put_user_size(x, ptr, size, label) \ do { \ __typeof__(*(ptr)) __x = (x); /* eval x once */ \ - __chk_user_ptr(ptr); \ + __typeof__(ptr) __ptr = (ptr); /* eval ptr once */ \ + __chk_user_ptr(__ptr); \ switch (size) { \ case 1: \ - __put_user_goto(__x, ptr, "b", "iq", label); \ + __put_user_goto(__x, __ptr, "b", "iq", label); \ break; \ case 2: \ - __put_user_goto(__x, ptr, "w", "ir", label); \ + __put_user_goto(__x, __ptr, "w", "ir", label); \ break; \ case 4: \ - __put_user_goto(__x, ptr, "l", "ir", label); \ + __put_user_goto(__x, __ptr, "l", "ir", label); \ break; \ case 8: \ - __put_user_goto_u64(__x, ptr, label); \ + __put_user_goto_u64(__x, __ptr, label); \ break; \ default: \ __put_user_bad(); \ } \ - instrument_put_user(__x, ptr, size); \ + instrument_put_user(__x, __ptr, size); \ } while (0) #ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT --000000000000621ccb05eb916b72 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGJyPjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJn bWFpbF9xdW90ZSI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX2F0dHIiPk9uIEZyaSwgT2N0 IDIxLCAyMDIyIGF0IDg6MTkgQU0geW91bGluZyAyNTcgJmx0OzxhIGhyZWY9Im1haWx0bzp5b3Vs aW5nMjU3QGdtYWlsLmNvbSI+eW91bGluZzI1N0BnbWFpbC5jb208L2E+Jmd0OyB3cm90ZTo8YnI+ PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAw cHggMHB4IDAuOGV4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRp bmctbGVmdDoxZXgiPkNPTkZJR19ERUJVR19JTkZPPXk8YnI+DQpDT05GSUdfQVNfSEFTX05PTl9D T05TVF9MRUIxMjg9eTxicj4NCiMgQ09ORklHX0RFQlVHX0lORk9fTk9ORSBpcyBub3Qgc2V0PGJy Pg0KQ09ORklHX0RFQlVHX0lORk9fRFdBUkZfVE9PTENIQUlOX0RFRkFVTFQ9eTxicj4NCiMgQ09O RklHX0RFQlVHX0lORk9fRFdBUkY0IGlzIG5vdCBzZXQ8YnI+DQojIENPTkZJR19ERUJVR19JTkZP X0RXQVJGNSBpcyBub3Qgc2V0PGJyPg0KIyBDT05GSUdfREVCVUdfSU5GT19SRURVQ0VEIGlzIG5v dCBzZXQ8YnI+DQojIENPTkZJR19ERUJVR19JTkZPX0NPTVBSRVNTRUQgaXMgbm90IHNldDxicj4N CiMgQ09ORklHX0RFQlVHX0lORk9fU1BMSVQgaXMgbm90IHNldDxicj4NCiMgQ09ORklHX0RFQlVH X0lORk9fQlRGIGlzIG5vdCBzZXQ8YnI+DQojIENPTkZJR19HREJfU0NSSVBUUyBpcyBub3Qgc2V0 PGJyPg0KPGJyPg0KcGVyZiB0b3Agc3RpbGwgbm8gZnVuY3Rpb24gbmFtZS48YnI+DQo8YnI+DQox Mi45MCXCoCBba2VybmVsXcKgIMKgIMKgIMKgIMKgIMKgIMKgIFtrXSAweGZmZmZmZmZmODMzZGZh NjQ8YnI+PC9ibG9ja3F1b3RlPjxkaXY+PGJyPjwvZGl2PjxkaXY+SSB0aGluayBJIGtub3cgd2hh dCYjMzk7cyBnb2luZyBvbi4gVGhlIHR3byBmdW5jdGlvbnMgdGhhdCBkaWZmZXIgd2l0aCBhbmQg d2l0aG91dCB0aGUgcGF0Y2ggd2VyZSBwYXNzaW5nIGFuIGluY3JlbWVudGVkIHBvaW50ZXIgdG8g dW5zYWZlX3B1dF91c2VyKCksIHdoaWNoIGlzIGEgbWFjcm8sIGUuZy46PC9kaXY+PGRpdj48YnI+ PC9kaXY+PGRpdj7CoMKgwqB1bnNhZmVfcHV0X3VzZXIoKGNvbXBhdF91bG9uZ190KW0sIHVtYXNr KyssIEVmYXVsdCk7PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5CZWNhdXNlIHRoYXQgbWFjcm8g ZGlkbiYjMzk7dCBldmFsdWF0ZSBpdHMgc2Vjb25kIHBhcmFtZXRlciwgJnF1b3Q7dW1hc2srKyZx dW90OyB3YXMgcGFzc2VkIHRvIGEgY2FsbCB0byBrbXNhbl9jb3B5X3RvX3VzZXIoKSwgd2hpY2gg cmVzdWx0ZWQgaW4gYW4gZXh0cmEgaW5jcmVtZW50IG9mIHVtYXNrLjwvZGl2PjxkaXY+VGhpcyBw cm9iYWJseSB2aW9sYXRlZCBzb21lIGV4cGVjdGF0aW9ucyBvZiB0aGUgdXNlcnNwYWNlIGFwcCwg d2hpY2ggaW4gdHVybiBsZWQgdG8gcmVwZXRpdGl2ZSBrZXJuZWwgY2FsbHMuPC9kaXY+PGRpdj48 YnI+PC9kaXY+PGRpdj5Db3VsZCB5b3UgcGxlYXNlIGNoZWNrIGlmIHRoZSBwYXRjaCBiZWxvdyBm aXhlcyB0aGUgcHJvYmxlbSBmb3IgeW91PzwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+ZGlmZiAt LWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2FyY2gveDg2L2luY2x1ZGUv YXNtL3VhY2Nlc3MuaDxicj5pbmRleCA4YmM2MTRjZmUyMWI5Li4xY2M3NTZlYWZhNDQ3IDEwMDY0 NDxicj4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmg8YnI+KysrIGIvYXJjaC94 ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oPGJyPkBAIC0yNTQsMjQgKzI1NCwyNSBAQCBleHRlcm4g dm9pZCBfX3B1dF91c2VyX25vY2hlY2tfOCh2b2lkKTs8YnI+wqAjZGVmaW5lIF9fcHV0X3VzZXJf c2l6ZSh4LCBwdHIsIHNpemUsIGxhYmVsKSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBcPGJyPsKgZG8geyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBcPGJyPsKgIMKgIMKgIMKgIF9fdHlwZW9mX18oKihwdHIpKSBfX3ggPSAoeCk7IC8qIGV2 YWwgeCBvbmNlICovIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFw8YnI+LSDCoCDCoCDCoCBfX2No a191c2VyX3B0cihwdHIpOyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+KyDCoCDCoCDCoCBfX3R5cGVvZl9fKHB0cikg X19wdHIgPSAocHRyKTsgLyogZXZhbCBwdHIgb25jZSAqLyDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8 YnI+KyDCoCDCoCDCoCBfX2Noa191c2VyX3B0cihfX3B0cik7IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj7CoCDCoCDCoCDC oCBzd2l0Y2ggKHNpemUpIHsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXDxicj7CoCDCoCDCoCDCoCBjYXNlIDE6 IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFw8YnI+LSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBf X3B1dF91c2VyX2dvdG8oX194LCBwdHIsICZxdW90O2ImcXVvdDssICZxdW90O2lxJnF1b3Q7LCBs YWJlbCk7IMKgIMKgIMKgIMKgIMKgIMKgXDxicj4rIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fcHV0 X3VzZXJfZ290byhfX3gsIF9fcHRyLCAmcXVvdDtiJnF1b3Q7LCAmcXVvdDtpcSZxdW90OywgbGFi ZWwpOyDCoCDCoCDCoCDCoCDCoFw8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgXDxicj7CoCDCoCDCoCDCoCBjYXNlIDI6IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIFw8YnI+LSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX3B1dF91c2VyX2dvdG8oX194 LCBwdHIsICZxdW90O3cmcXVvdDssICZxdW90O2lyJnF1b3Q7LCBsYWJlbCk7IMKgIMKgIMKgIMKg IMKgIMKgXDxicj4rIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fcHV0X3VzZXJfZ290byhfX3gsIF9f cHRyLCAmcXVvdDt3JnF1b3Q7LCAmcXVvdDtpciZxdW90OywgbGFiZWwpOyDCoCDCoCDCoCDCoCDC oFw8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxi cj7CoCDCoCDCoCDCoCBjYXNlIDQ6IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFw8YnI+LSDC oCDCoCDCoCDCoCDCoCDCoCDCoCBfX3B1dF91c2VyX2dvdG8oX194LCBwdHIsICZxdW90O2wmcXVv dDssICZxdW90O2lyJnF1b3Q7LCBsYWJlbCk7IMKgIMKgIMKgIMKgIMKgIMKgXDxicj4rIMKgIMKg IMKgIMKgIMKgIMKgIMKgIF9fcHV0X3VzZXJfZ290byhfX3gsIF9fcHRyLCAmcXVvdDtsJnF1b3Q7 LCAmcXVvdDtpciZxdW90OywgbGFiZWwpOyDCoCDCoCDCoCDCoCDCoFw8YnI+wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgYnJlYWs7IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj48L2Rpdj48ZGl2PsKgIMKg IMKgIMKgIGNhc2UgODogwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXDxicj4tIMKgIMKgIMKg IMKgIMKgIMKgIMKgIF9fcHV0X3VzZXJfZ290b191NjQoX194LCBwdHIsIGxhYmVsKTsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgXDxicj4rIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fcHV0X3Vz ZXJfZ290b191NjQoX194LCBfX3B0ciwgbGFiZWwpOyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBc PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+ wqAgwqAgwqAgwqAgZGVmYXVsdDogwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPsKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIF9fcHV0X3VzZXJfYmFkKCk7IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFw8YnI+wqAgwqAgwqAgwqAgfSDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcPGJyPi0gwqAgwqAgwqAgaW5zdHJ1 bWVudF9wdXRfdXNlcihfX3gsIHB0ciwgc2l6ZSk7IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgXDxicj4rIMKgIMKgIMKgIGluc3RydW1lbnRfcHV0X3VzZXIoX194LCBf X3B0ciwgc2l6ZSk7IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj7C oH0gd2hpbGUgKDApPGJyPsKgPGJyPsKgI2lmZGVmIENPTkZJR19DQ19IQVNfQVNNX0dPVE9fT1VU UFVUPGJyPjwvZGl2PjwvZGl2PjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9zaWduYXR1cmUi PjxkaXYgZGlyPSJsdHIiPjxicj48L2Rpdj48L2Rpdj48L2Rpdj4NCg== --000000000000621ccb05eb916b72--