From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ua1-f54.google.com (mail-ua1-f54.google.com [209.85.222.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 50812139F; Wed, 17 Apr 2024 12:51:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.54 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713358283; cv=none; b=NFqt3K0nYgnCXyibgVgUs2s3EA+79ElEgjyJKVGGsJUhH5DrCQC6k9AmTM9KTMTqU62ZajcXWOCyEMUHj016XTcTTiZ8HTKkpcXZVJxkg3AMxjn1+zlKd/NcR4YkWmeMFJfbwXGe8P/YVAgWVrD4iUHPUqWolloOo+MQvY6SLc8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713358283; c=relaxed/simple; bh=Y1P2CaMn+LrzgvU4o01v4Q/DI6tWvvgnLk/hUDA6n0A=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=gLHQhqthS32RgbI4FMwAfo4+qgq/3s2s+PNm3J0PaRzPL6kh85HPDjWhJUClzeAOpKkj2G4qhWNSAtbkq9vfvOdQPZdjZK17kHU4LYZXNg85HG7Qf85Oe7IN66T9Ud5yzJ05fBvXdAI5LfmO0Wb+nTqB6y48Mw4XIFBHmK+yGoE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=RzpMB1DL; arc=none smtp.client-ip=209.85.222.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RzpMB1DL" Received: by mail-ua1-f54.google.com with SMTP id a1e0cc1a2514c-7ebeb178ec4so57545241.0; Wed, 17 Apr 2024 05:51:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713358277; x=1713963077; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=H50Yq/1bKm6UpkKla+gr4omGSPJd+D/ukVzmoYU6VxM=; b=RzpMB1DLrsYpKtGy+jkDSsG2jsKgmFhYh92gwnw4zs1GuTKyMRcTY0tGfTP/uvXx+n ceLXQsiuRmLmkBo9fGfRiU0HadJYXpGnqrwSiBBQf+xrfuxROzup3U4Hjl2hXCzHXBBt 97q24U2vBq5bJc0tfEyEUY5GuzHdBM5O1eCpU656Th3GScAA58PcfWhsaMs5ng+tvyy1 Ls0nPlGRceYuT3WBvHfIXU0lTXj3Opm7oiyDNXX7A0TBmEV3O0heSyQFNFYtvavUYnEr xjTw/0AMHr1VMNcV4EJpq8GUiCq0vB5ZrneTblV97CK5KatwmUmL5xFPixoowIafL7Df F60g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713358277; x=1713963077; h=content-transfer-encoding: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=H50Yq/1bKm6UpkKla+gr4omGSPJd+D/ukVzmoYU6VxM=; b=L56dZztU3hZdelwK9ZzSlvGIylsOll5FNAEW75jPNi11VxSTdUAKLm2PfQZ3KlDHKl qZ3FgefE2aKuSGDbZ2S7JeEJZhZAHBYBy+wW7NzcWrrJXDg6HmYM8lvYI2xxtCZfw0NV j71bA1W1oPw07raoqFfLgCfT7oME/hu7smapxeIpuprtohXJSbeFPmxLLZ+RHFG+W8mW QJS2lH7Wxf6aKGeAz4lGe6hOulBFZfLitStd/rk8wlL+dpyTKGx1oet7B+BXdAx4u5jx qMVRTmGQ8UHrBPYEGq+DVpcZvcI/JLqXe3RPxDj4PiylMQsSCj4wwphYDB7C5JB9Nz9q dtYQ== X-Forwarded-Encrypted: i=1; AJvYcCWIRWU208FItk50MW4lZrAfipOgdgtVxO5fxIznu0qgR8eSZBPK8rC/TbZm+3OswucQyH64icYHFZFIi8I04erveBE+55ofXP9JBjdLJV7vmMg/qssA//Vxvlzu68C1voqtTfiUC9aNDRGdmg== X-Gm-Message-State: AOJu0Yzq6M+yzsSZBtFfiOb4dyWVa6t+KVYdQYMEToo6e7qD7ehZ8GYt x1sMvPhLEzyQiVFjfUVVtb0OqjmEgXHdPyJu0qM58jv2fbBELAkjr/adJVifM/4yAGphoHdKE0z qbAc55K7MG5FwlLIIq+fc99XPJKEqTGrbnu4= X-Google-Smtp-Source: AGHT+IGlNuM1/ctkQH8dPwVCI4Nd4R/jxC1r5KeL2Eh7UO8EPm3yIw/sPDJNr0073C1QI9k7mq2+eRrhcoffULFDwkw= X-Received: by 2002:a05:6122:c84:b0:4d3:34f4:7e99 with SMTP id ba4-20020a0561220c8400b004d334f47e99mr5078353vkb.0.1713358276403; Wed, 17 Apr 2024 05:51:16 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: In-Reply-To: From: lee bruce Date: Wed, 17 Apr 2024 20:51:04 +0800 Message-ID: Subject: Re: [syzbot] [jffs2?] kernel BUG in jffs2_sum_write_sumnode To: syzbot+badbb16b0a5dd4c2f676@syzkaller.appspotmail.com Cc: dwmw2@infradead.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org, richard@nod.at, syzkaller-bugs@googlegroups.com, samsun1006219@gmail.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sorry for containing the HTML part, repeat. Hello, I reproduced this bug and confirmed in the latest upstream. If you fix this issue, please add the following tag to the commit: Reported-by: xingwei lee Reported-by: yue sun I use the same kernel as syzbot instance: https://syzkaller.appspot.com/bug?extid=3D5a281fe8aadf8f11230d Kernel Commit: upstream fe46a7dd189e25604716c03576d05ac8a5209743 Kernel Config: https://syzkaller.appspot.com/text?tag=3DKernelConfig&x=3D4d= 90a36f0cab495a with KASAN enabled root@syzkaller:~# ./0 [ 406.727577][ T8177] ------------[ cut here ]------------ [ 406.728272][ T8177] kernel BUG at fs/jffs2/summary.c:865! [ 406.729014][ T8177] invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI [ 406.729850][ T8177] CPU: 2 PID: 8177 Comm: 0 Not tainted 6.8.0-08951-gfe46a7dd189e-dirty #6 [ 406.730904][ T8177] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 406.732206][ T8177] RIP: 0010:jffs2_sum_write_sumnode+0x1f50/0x2630 [ 406.733061][ T8177] Code: 0f b6 04 02 84 c0 74 08 3c 03 0f 8e 81 01 00 00 8b b3 c0 05 00 00 48 c7 c2 c0 7e a4 8b 48 c7 c7 c0 7a a4 8b e8 51 ba 82 fe 90 <0f> 0b e8 69 29 01 ff e9 70 e19 [ 406.735472][ T8177] RSP: 0018:ffffc9000396f4e0 EFLAGS: 00010286 [ 406.736416][ T8177] RAX: 0000000000000045 RBX: ffff888022a20040 RCX: ffff888022a20040 [ 406.737446][ T8177] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 [ 406.738435][ T8177] RBP: ffffc9000396f660 R08: 0000000000000005 R09: 0000000000000000 [ 406.739470][ T8177] R10: 0000000080000000 R11: 0000000000000001 R12: 0000000000000000 [ 406.740463][ T8177] R13: 0000000000000000 R14: ffff888028bb1000 R15: 000000000000106c [ 406.741459][ T8177] FS: 0000000007a66480(0000) GS:ffff8880b9300000(0000) knlGS:0000000000000000 [ 406.742581][ T8177] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 406.743418][ T8177] CR2: 0000000020003029 CR3: 000000002be68000 CR4: 0000000000750ef0 [ 406.744407][ T8177] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 406.745398][ T8177] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 406.746373][ T8177] PKRU: 55555554 [ 406.746833][ T8177] Call Trace: [ 406.747271][ T8177] [ 406.747651][ T8177] ? show_regs+0x97/0xa0 [ 406.748215][ T8177] ? die+0x3b/0xb0 [ 406.748701][ T8177] ? do_trap+0x245/0x440 [ 406.749262][ T8177] ? jffs2_sum_write_sumnode+0x1f50/0x2630 [ 406.750005][ T8177] ? jffs2_sum_write_sumnode+0x1f50/0x2630 [ 406.750711][ T8177] ? do_error_trap+0xff/0x250 [ 406.751342][ T8177] ? jffs2_sum_write_sumnode+0x1f50/0x2630 [ 406.752094][ T8177] ? handle_invalid_op+0x39/0x40 [ 406.752740][ T8177] ? jffs2_sum_write_sumnode+0x1f50/0x2630 [ 406.753479][ T8177] ? exc_invalid_op+0x2e/0x50 [ 406.754090][ T8177] ? asm_exc_invalid_op+0x1a/0x20 [ 406.754716][ T8177] ? jffs2_sum_write_sumnode+0x1f50/0x2630 [ 406.755477][ T8177] ? __pfx_jffs2_sum_write_sumnode+0x10/0x10 [ 406.756234][ T8177] ? rcu_is_watching+0x12/0xc0 [ 406.756861][ T8177] ? lock_acquire+0x1b1/0x540 [ 406.757489][ T8177] ? __pfx_lock_acquire+0x10/0x10 [ 406.758117][ T8177] ? __pfx___mutex_lock+0x10/0x10 [ 406.758769][ T8177] ? jffs2_do_reserve_space+0xc59/0x1190 [ 406.759502][ T8177] jffs2_do_reserve_space+0xc59/0x1190 [ 406.760223][ T8177] jffs2_reserve_space+0x67e/0xc20 [ 406.760883][ T8177] ? avc_has_perm_noaudit+0x152/0x3d0 [ 406.761584][ T8177] ? __pfx_jffs2_reserve_space+0x10/0x10 [ 406.762302][ T8177] ? avc_has_perm_noaudit+0x152/0x3d0 [ 406.763030][ T8177] ? cred_has_capability.isra.0+0x19d/0x310 [ 406.763788][ T8177] ? __pfx_jffs2_security_setxattr+0x10/0x10 [ 406.764567][ T8177] do_jffs2_setxattr+0x1ab/0x1770 [ 406.765224][ T8177] ? cap_capable+0x1e4/0x250 [ 406.765783][ T8177] ? __pfx_do_jffs2_setxattr+0x10/0x10 [ 406.766514][ T8177] ? xattr_resolve_name+0x292/0x440 [ 406.767220][ T8177] ? __pfx_jffs2_security_setxattr+0x10/0x10 [ 406.768026][ T8177] __vfs_setxattr+0x182/0x1f0 [ 406.768646][ T8177] ? __pfx_evm_protect_xattr.isra.0+0x10/0x10 [ 406.769411][ T8177] ? __pfx___vfs_setxattr+0x10/0x10 [ 406.770067][ T8177] __vfs_setxattr_noperm+0x132/0x610 [ 406.770752][ T8177] __vfs_setxattr_locked+0x195/0x270 [ 406.771452][ T8177] vfs_setxattr+0x151/0x370 [ 406.772052][ T8177] ? __pfx_vfs_setxattr+0x10/0x10 [ 406.772704][ T8177] ? __might_fault+0xee/0x1a0 [ 406.773326][ T8177] do_setxattr+0x153/0x180 [ 406.773881][ T8177] setxattr+0x166/0x180 [ 406.774421][ T8177] ? __pfx_setxattr+0x10/0x10 [ 406.775043][ T8177] ? mnt_get_write_access+0x21d/0x320 [ 406.775743][ T8177] path_setxattr+0x188/0x1f0 [ 406.776338][ T8177] ? __pfx_path_setxattr+0x10/0x10 [ 406.776986][ T8177] ? handle_mm_fault+0x541/0xab0 [ 406.777648][ T8177] __x64_sys_lsetxattr+0xc6/0x160 [ 406.778281][ T8177] ? do_syscall_64+0x91/0x260 [ 406.778927][ T8177] ? lockdep_hardirqs_on+0x7c/0x110 [ 406.779598][ T8177] do_syscall_64+0xd2/0x260 [ 406.780194][ T8177] entry_SYSCALL_64_after_hwframe+0x6d/0x75 [ 406.780944][ T8177] RIP: 0033:0x437d49 [ 406.781454][ T8177] Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 f1 17 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 488 [ 406.783841][ T8177] RSP: 002b:00007fff7cd51d28 EFLAGS: 00000246 ORIG_RAX: 00000000000000bd [ 406.784889][ T8177] RAX: ffffffffffffffda RBX: 0000000020002047 RCX: 0000000000437d49 [ 406.785900][ T8177] RDX: 0000000020002040 RSI: 00000000200002c0 RDI: 00000000200001c0 [ 406.786886][ T8177] RBP: 00007fff7cd51d80 R08: 0000000000000003 R09: 000000017cd51d40 [ 406.787878][ T8177] R10: 0000000000001009 R11: 0000000000000246 R12: 0000000000000001 [ 406.788872][ T8177] R13: 00007fff7cd51f88 R14: 0000000000000001 R15: 0000000000000001 [ 406.789879][ T8177] =3D* repro.c =3D* #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifndef __NR_memfd_create #define __NR_memfd_create 319 #endif static unsigned long long procid; static __thread int clone_ongoing; static __thread int skip_segv; static __thread jmp_buf segv_env; static void segv_handler(int sig, siginfo_t* info, void* ctx) { if (__atomic_load_n(&clone_ongoing, __ATOMIC_RELAXED) !=3D 0) { exit(sig); } uintptr_t addr =3D (uintptr_t)info->si_addr; const uintptr_t prog_start =3D 1 << 20; const uintptr_t prog_end =3D 100 << 20; int skip =3D __atomic_load_n(&skip_segv, __ATOMIC_RELAXED) !=3D 0; int valid =3D addr < prog_start || addr > prog_end; if (skip && valid) { _longjmp(segv_env, 1); } exit(sig); } static void install_segv_handler(void) { struct sigaction sa; memset(&sa, 0, sizeof(sa)); sa.sa_handler =3D SIG_IGN; syscall(SYS_rt_sigaction, 0x20, &sa, NULL, 8); syscall(SYS_rt_sigaction, 0x21, &sa, NULL, 8); memset(&sa, 0, sizeof(sa)); sa.sa_sigaction =3D segv_handler; sa.sa_flags =3D SA_NODEFER | SA_SIGINFO; sigaction(SIGSEGV, &sa, NULL); sigaction(SIGBUS, &sa, NULL); } #define NONFAILING(...) \ ({ \ int ok =3D 1; \ __atomic_fetch_add(&skip_segv, 1, __ATOMIC_SEQ_CST); \ if (_setjmp(segv_env) =3D=3D 0) { \ __VA_ARGS__; \ } else \ ok =3D 0; \ __atomic_fetch_sub(&skip_segv, 1, __ATOMIC_SEQ_CST); \ ok; \ }) static void sleep_ms(uint64_t ms) { usleep(ms * 1000); } static uint64_t current_time_ms(void) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts)) exit(1); return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; } static bool write_file(const char* file, const char* what, ...) { char buf[1024]; va_list args; va_start(args, what); vsnprintf(buf, sizeof(buf), what, args); va_end(args); buf[sizeof(buf) - 1] =3D 0; int len =3D strlen(buf); int fd =3D open(file, O_WRONLY | O_CLOEXEC); if (fd =3D=3D -1) return false; if (write(fd, buf, len) !=3D len) { int err =3D errno; close(fd); errno =3D err; return false; } close(fd); return true; } //% This code is derived from puff.{c,h}, found in the zlib development= . The //% original files come with the following copyright notice: //% Copyright (C) 2002-2013 Mark Adler, all rights reserved //% version 2.3, 21 Jan 2013 //% This software is provided 'as-is', without any express or implied //% warranty. In no event will the author be held liable for any damag= es //% arising from the use of this software. //% Permission is granted to anyone to use this software for any purpos= e, //% including commercial applications, and to alter it and redistribute= it //% freely, subject to the following restrictions: //% 1. The origin of this software must not be misrepresented; you must= not //% claim that you wrote the original software. If you use this soft= ware //% in a product, an acknowledgment in the product documentation wou= ld be //% appreciated but is not required. //% 2. Altered source versions must be plainly marked as such, and must not be //% misrepresented as being the original software. //% 3. This notice may not be removed or altered from any source distribution. //% Mark Adler madler@alumni.caltech.edu //% BEGIN CODE DERIVED FROM puff.{c,h} #define MAXBITS 15 #define MAXLCODES 286 #define MAXDCODES 30 #define MAXCODES (MAXLCODES + MAXDCODES) #define FIXLCODES 288 struct puff_state { unsigned char* out; unsigned long outlen; unsigned long outcnt; const unsigned char* in; unsigned long inlen; unsigned long incnt; int bitbuf; int bitcnt; jmp_buf env; }; static int puff_bits(struct puff_state* s, int need) { long val =3D s->bitbuf; while (s->bitcnt < need) { if (s->incnt =3D=3D s->inlen) longjmp(s->env, 1); val |=3D (long)(s->in[s->incnt++]) << s->bitcnt; s->bitcnt +=3D 8; } s->bitbuf =3D (int)(val >> need); s->bitcnt -=3D need; return (int)(val & ((1L << need) - 1)); } static int puff_stored(struct puff_state* s) { s->bitbuf =3D 0; s->bitcnt =3D 0; if (s->incnt + 4 > s->inlen) return 2; unsigned len =3D s->in[s->incnt++]; len |=3D s->in[s->incnt++] << 8; if (s->in[s->incnt++] !=3D (~len & 0xff) || s->in[s->incnt++] !=3D ((~len >> 8) & 0xff)) return -2; if (s->incnt + len > s->inlen) return 2; if (s->outcnt + len > s->outlen) return 1; for (; len--; s->outcnt++, s->incnt++) { if (s->in[s->incnt]) s->out[s->outcnt] =3D s->in[s->incnt]; } return 0; } struct puff_huffman { short* count; short* symbol; }; static int puff_decode(struct puff_state* s, const struct puff_huffman*= h) { int first =3D 0; int index =3D 0; int bitbuf =3D s->bitbuf; int left =3D s->bitcnt; int code =3D first =3D index =3D 0; int len =3D 1; short* next =3D h->count + 1; while (1) { while (left--) { code |=3D bitbuf & 1; bitbuf >>=3D 1; int count =3D *next++; if (code - count < first) { s->bitbuf =3D bitbuf; s->bitcnt =3D (s->bitcnt - len) & 7; return h->symbol[index + (code - first)]; } index +=3D count; first +=3D count; first <<=3D 1; code <<=3D 1; len++; } left =3D (MAXBITS + 1) - len; if (left =3D=3D 0) break; if (s->incnt =3D=3D s->inlen) longjmp(s->env, 1); bitbuf =3D s->in[s->incnt++]; if (left > 8) left =3D 8; } return -10; } static int puff_construct(struct puff_huffman* h, const short* length, int n) { int len; for (len =3D 0; len <=3D MAXBITS; len++) h->count[len] =3D 0; int symbol; for (symbol =3D 0; symbol < n; symbol++) (h->count[length[symbol]])++; if (h->count[0] =3D=3D n) return 0; int left =3D 1; for (len =3D 1; len <=3D MAXBITS; len++) { left <<=3D 1; left -=3D h->count[len]; if (left < 0) return left; } short offs[MAXBITS + 1]; offs[1] =3D 0; for (len =3D 1; len < MAXBITS; len++) offs[len + 1] =3D offs[len] + h->count[len]; for (symbol =3D 0; symbol < n; symbol++) if (length[symbol] !=3D 0) h->symbol[offs[length[symbol]]++] =3D symbol; return left; } static int puff_codes(struct puff_state* s, const struct puff_huffman* lencode, const struct puff_huffman* distcode) { static const short lens[29] =3D {3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258}; static const short lext[29] =3D {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0}; static const short dists[30] =3D { 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769= , 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 245= 77}; static const short dext[30] =3D {0, 0, 0, 0, 1, 1, 2, 2, 3, = 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13}; int symbol; do { symbol =3D puff_decode(s, lencode); if (symbol < 0) return symbol; if (symbol < 256) { if (s->outcnt =3D=3D s->outlen) return 1; if (symbol) s->out[s->outcnt] =3D symbol; s->outcnt++; } else if (symbol > 256) { symbol -=3D 257; if (symbol >=3D 29) return -10; int len =3D lens[symbol] + puff_bits(s, lext[symbol]); symbol =3D puff_decode(s, distcode); if (symbol < 0) return symbol; unsigned dist =3D dists[symbol] + puff_bits(s, dext[symbol]= ); if (dist > s->outcnt) return -11; if (s->outcnt + len > s->outlen) return 1; while (len--) { if (dist <=3D s->outcnt && s->out[s->outcnt - dist]) s->out[s->outcnt] =3D s->out[s->outcnt - dist]; s->outcnt++; } } } while (symbol !=3D 256); return 0; } static int puff_fixed(struct puff_state* s) { static int virgin =3D 1; static short lencnt[MAXBITS + 1], lensym[FIXLCODES]; static short distcnt[MAXBITS + 1], distsym[MAXDCODES]; static struct puff_huffman lencode, distcode; if (virgin) { lencode.count =3D lencnt; lencode.symbol =3D lensym; distcode.count =3D distcnt; distcode.symbol =3D distsym; short lengths[FIXLCODES]; int symbol; for (symbol =3D 0; symbol < 144; symbol++) lengths[symbol] =3D 8; for (; symbol < 256; symbol++) lengths[symbol] =3D 9; for (; symbol < 280; symbol++) lengths[symbol] =3D 7; for (; symbol < FIXLCODES; symbol++) lengths[symbol] =3D 8; puff_construct(&lencode, lengths, FIXLCODES); for (symbol =3D 0; symbol < MAXDCODES; symbol++) lengths[symbol] =3D 5; puff_construct(&distcode, lengths, MAXDCODES); virgin =3D 0; } return puff_codes(s, &lencode, &distcode); } static int puff_dynamic(struct puff_state* s) { static const short order[19] =3D {16, 17, 18, 0, 8, 7, 9, 6, 10, = 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; int nlen =3D puff_bits(s, 5) + 257; int ndist =3D puff_bits(s, 5) + 1; int ncode =3D puff_bits(s, 4) + 4; if (nlen > MAXLCODES || ndist > MAXDCODES) return -3; short lengths[MAXCODES]; int index; for (index =3D 0; index < ncode; index++) lengths[order[index]] =3D puff_bits(s, 3); for (; index < 19; index++) lengths[order[index]] =3D 0; short lencnt[MAXBITS + 1], lensym[MAXLCODES]; struct puff_huffman lencode =3D {lencnt, lensym}; int err =3D puff_construct(&lencode, lengths, 19); if (err !=3D 0) return -4; index =3D 0; while (index < nlen + ndist) { int symbol; int len; symbol =3D puff_decode(s, &lencode); if (symbol < 0) return symbol; if (symbol < 16) lengths[index++] =3D symbol; else { len =3D 0; if (symbol =3D=3D 16) { if (index =3D=3D 0) return -5; len =3D lengths[index - 1]; symbol =3D 3 + puff_bits(s, 2); } else if (symbol =3D=3D 17) symbol =3D 3 + puff_bits(s, 3); else symbol =3D 11 + puff_bits(s, 7); if (index + symbol > nlen + ndist) return -6; while (symbol--) lengths[index++] =3D len; } } if (lengths[256] =3D=3D 0) return -9; err =3D puff_construct(&lencode, lengths, nlen); if (err && (err < 0 || nlen !=3D lencode.count[0] + lencode.count[1= ])) return -7; short distcnt[MAXBITS + 1], distsym[MAXDCODES]; struct puff_huffman distcode =3D {distcnt, distsym}; err =3D puff_construct(&distcode, lengths + nlen, ndist); if (err && (err < 0 || ndist !=3D distcode.count[0] + distcode.coun= t[1])) return -8; return puff_codes(s, &lencode, &distcode); } static int puff(unsigned char* dest, unsigned long* destlen, const unsigned char* source, unsigned long sourcelen) { struct puff_state s =3D { .out =3D dest, .outlen =3D *destlen, .outcnt =3D 0, .in =3D source, .inlen =3D sourcelen, .incnt =3D 0, .bitbuf =3D 0, .bitcnt =3D 0, }; int err; if (setjmp(s.env) !=3D 0) err =3D 2; else { int last; do { last =3D puff_bits(&s, 1); int type =3D puff_bits(&s, 2); err =3D type =3D=3D 0 ? puff_stored(&s) : (type =3D=3D 1 ? puff_fix= ed(&s) : (type =3D=3D 2 ? puff_dynamic(&s) : -1)); if (err !=3D 0) break; } while (!last); } *destlen =3D s.outcnt; return err; } //% END CODE DERIVED FROM puff.{c,h} #define ZLIB_HEADER_WIDTH 2 static int puff_zlib_to_file(const unsigned char* source, unsigned long sourcelen, int dest_fd) { if (sourcelen < ZLIB_HEADER_WIDTH) return 0; source +=3D ZLIB_HEADER_WIDTH; sourcelen -=3D ZLIB_HEADER_WIDTH; const unsigned long max_destlen =3D 132 << 20; void* ret =3D mmap(0, max_destlen, PROT_WRITE | PROT_READ, MAP_PRIVATE | MAP_ANON, -1, 0); if (ret =3D=3D MAP_FAILED) return -1; unsigned char* dest =3D (unsigned char*)ret; unsigned long destlen =3D max_destlen; int err =3D puff(dest, &destlen, source, sourcelen); if (err) { munmap(dest, max_destlen); errno =3D -err; return -1; } if (write(dest_fd, dest, destlen) !=3D (ssize_t)destlen) { munmap(dest, max_destlen); return -1; } return munmap(dest, max_destlen); } static int setup_loop_device(unsigned char* data, unsigned long = size, const char* loopname, int* loopfd_p)= { int err =3D 0, loopfd =3D -1; int memfd =3D syscall(__NR_memfd_create, "syzkaller", 0); if (memfd =3D=3D -1) { err =3D errno; goto error; } if (puff_zlib_to_file(data, size, memfd)) { err =3D errno; goto error_close_memfd; } loopfd =3D open(loopname, O_RDWR); if (loopfd =3D=3D -1) { err =3D errno; goto error_close_memfd; } if (ioctl(loopfd, LOOP_SET_FD, memfd)) { if (errno !=3D EBUSY) { err =3D errno; goto error_close_loop; } ioctl(loopfd, LOOP_CLR_FD, 0); usleep(1000); if (ioctl(loopfd, LOOP_SET_FD, memfd)) { err =3D errno; goto error_close_loop; } } close(memfd); *loopfd_p =3D loopfd; return 0; error_close_loop: close(loopfd); error_close_memfd: close(memfd); error: errno =3D err; return -1; } static long syz_mount_image(volatile long fsarg, volatile long d= ir, volatile long f= lags, volatile long optsarg, volatile long change_dir, volatile unsigned long size, volatile long image) { unsigned char* data =3D (unsigned char*)image; int res =3D -1, err =3D 0, loopfd =3D -1, need_loop_device =3D !!si= ze; char* mount_opts =3D (char*)optsarg; char* target =3D (char*)dir; char* fs =3D (char*)fsarg; char* source =3D NULL; char loopname[64]; if (need_loop_device) { memset(loopname, 0, sizeof(loopname)); snprintf(loopname, sizeof(loopname), "/dev/loop%llu", procid); if (setup_loop_device(data, size, loopname, &loopfd) =3D=3D -1) return -1; source =3D loopname; } mkdir(target, 0777); char opts[256]; memset(opts, 0, sizeof(opts)); if (strlen(mount_opts) > (sizeof(opts) - 32)) { } strncpy(opts, mount_opts, sizeof(opts) - 32); if (strcmp(fs, "iso9660") =3D=3D 0) { flags |=3D MS_RDONLY; } else if (strncmp(fs, "ext", 3) =3D=3D 0) { bool has_remount_ro =3D false; char* remount_ro_start =3D strstr(opts, "errors=3Dremount-ro"); if (remount_ro_start !=3D NULL) { char after =3D *(remount_ro_start + strlen("errors=3Dremoun= t-ro")); char before =3D remount_ro_start =3D=3D opts ? '\0' : *(remount_ro_start - 1); has_remount_ro =3D ((before =3D=3D '\0' || before =3D=3D ',= ') && (after =3D=3D '\0' || after =3D=3D ',')); } if (strstr(opts, "errors=3Dpanic") || !has_remount_ro) strcat(opts, ",errors=3Dcontinue"); } else if (strcmp(fs, "xfs") =3D=3D 0) { strcat(opts, ",nouuid"); } res =3D mount(source, target, fs, flags, opts); if (res =3D=3D -1) { err =3D errno; goto error_clear_loop; } res =3D open(target, O_RDONLY | O_DIRECTORY); if (res =3D=3D -1) { err =3D errno; goto error_clear_loop; } if (change_dir) { res =3D chdir(target); if (res =3D=3D -1) { err =3D errno; } } error_clear_loop: if (need_loop_device) { ioctl(loopfd, LOOP_CLR_FD, 0); close(loopfd); } errno =3D err; return res; } static void kill_and_wait(int pid, int* status) { kill(-pid, SIGKILL); kill(pid, SIGKILL); for (int i =3D 0; i < 100; i++) { if (waitpid(-1, status, WNOHANG | __WALL) =3D=3D pid) return; usleep(1000); } DIR* dir =3D opendir("/sys/fs/fuse/connections"); if (dir) { for (;;) { struct dirent* ent =3D readdir(dir); if (!ent) break; if (strcmp(ent->d_name, ".") =3D=3D 0 || strcmp(ent->d_name, "..") =3D=3D 0) continue; char abort[300]; snprintf(abort, sizeof(abort), "/sys/fs/fuse/connections/%s/abort", ent->d_name); int fd =3D open(abort, O_WRONLY); if (fd =3D=3D -1) { continue; } if (write(fd, abort, 1) < 0) { } close(fd); } closedir(dir); } else { } while (waitpid(-1, status, __WALL) !=3D pid) { } } static void reset_loop() { char buf[64]; snprintf(buf, sizeof(buf), "/dev/loop%llu", procid); int loopfd =3D open(buf, O_RDWR); if (loopfd !=3D -1) { ioctl(loopfd, LOOP_CLR_FD, 0); close(loopfd); } } static void setup_test() { prctl(PR_SET_PDEATHSIG, SIGKILL, 0, 0, 0); setpgrp(); write_file("/proc/self/oom_score_adj", "1000"); } static void execute_one(void); #define WAIT_FLAGS __WALL static void loop(void) { int iter =3D 0; for (;; iter++) { reset_loop(); int pid =3D fork(); if (pid < 0) exit(1); if (pid =3D=3D 0) { setup_test(); execute_one(); exit(0); } int status =3D 0; uint64_t start =3D current_time_ms(); for (;;) { if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) =3D=3D pid) break; sleep_ms(1); if (current_time_ms() - start < 5000) continue; kill_and_wait(pid, &status); break; } } } void execute_one(void) { NONFAILING(memcpy((void*)0x20000040, "vfat\000", 5)); NONFAILING(memcpy((void*)0x20000200, "./file0\000", 8)); NONFAILING(syz_mount_image(/*fs=3D*/0x20000040, /*dir=3D*/0x2000020= 0, /*flags=3D*/0x220e002, /*opts=3D*/0, /*chdir=3D*/1, /*size=3D*/0, /*img=3D*/0x20000100)); NONFAILING(memcpy((void*)0x20000040, "mtd", 3)); NONFAILING(sprintf((char*)0x20000043, "0x%016llx", (long long)0)); NONFAILING(memcpy((void*)0x200000c0, "./file0\000", 8)); NONFAILING(memcpy((void*)0x20001200, "jffs2\000", 6)); syscall(__NR_mount, /*src=3D*/0x20000040ul, /*dst=3D*/0x200000c0ul, /*type=3D*/0x20001200ul, /*flags=3D*/0ul, /*data=3D= */0ul); NONFAILING(memcpy((void*)0x200001c0, "./file0\000", 8)); NONFAILING(memcpy((void*)0x200002c0, "security.evm\000", 13)); NONFAILING(*(uint8_t*)0x20002040 =3D 3); NONFAILING(*(uint8_t*)0x20002041 =3D 2); NONFAILING(*(uint8_t*)0x20002042 =3D 0xb); NONFAILING(*(uint32_t*)0x20002043 =3D htobe32(4)); NONFAILING(*(uint16_t*)0x20002047 =3D htobe16(0x1000)); NONFAILING(memcpy( (void*)0x20002049, "\x78\x8d\x9c\xb2\x99\xab\xd7\x2e\xce\x91\x3d\x53\x36\x5e\x16\x68\x8e\x51" "\xac\xe1\x59\x84\xab\x53\xd1\x66\x6a\xe3\xf5\xdf\xbc\x86\x0b\xef\x87\x38" "\x9e\x21\x28\x6b\xe2\x36\xdd\xc3\xd0\xfa\x2e\x51\xd5\xc5\xc7\xb3\x5c\x5d" "\x50\x3c\x5b\x2c\x3b\x6b\xe0\xfc\x56\xe9\x7d\xf8\x8f\xaa\x06\x35\x36\x3b" "\xa9\x2b\x82\xc4\x7a\x81\x7a\xc9\x7f\x1d\x63\x8a\x14\x61\x82\x12\x55\xec" "\x23\xbd\x0c\xe5\xbf\x10\x94\xe3\xa8\x98\x0d\x7e\x6d\x19\x76\xba\x77\x87" "\x45\x92\x0e\x17\x18\xfd\xda\xc4\xbd\x66\xb0\xa6\x06\x80\x1a\xae\xfd\xed" "\x29\x3c\x3f\xce\xba\xd3\xb2\xc0\x64\x03\xdb\xa9\x99\x49\x71\x65\x9b\x7f" "\x4a\x07\x7a\xdd\xae\xb8\xae\x3e\x5a\xca\x70\x27\xfd\xe1\xe4\x00\x01\xc0" "\xbd\xd8\x00\xbc\xc2\x87\xe0\x2c\x86\x7e\x27\x82\xde\xaf\x67\x6a\x26\x16" "\x47\xdb\x8c\x2f\x39\x45\x02\x20\x57\xde\x76\x81\x00\xa8\xbf\x73\xd9\xf9" "\xff\x29\x22\x9b\x46\xde\xad\x58\xb2\xdd\xf9\x64\x33\x46\x8e\x9e\xee\x89" "\x50\xdf\x65\x87\x11\xe4\x11\x36\x4e\x44\x14\x5e\x68\x2f\x3c\x05\x3c\x6f" "\x5a\x18\x61\xee\xe6\xed\xf8\x85\xa9\x7c\x54\x58\x05\xac\x0c\x35\xa5\xe4" "\x62\x3b\x20\x01\x86\x1c\x59\x33\x54\xb5\x70\xff\x3b\x4a\x45\xf1\xac\xde" "\x0a\x8d\xbd\x17\xc0\x9c\xe4\x48\xed\x5d\xfd\x9e\x74\x72\xe6\x89\x67\xde" "\xcb\x76\x9f\xa6\x00\xcd\x30\xbe\xb6\xc8\x03\x0e\x94\x74\xc7\xec\x4c\x1d" "\xaf\x3e\x00\x7b\xbc\x57\x65\xb3\x66\xd4\xa1\x76\xe3\x8b\xdf\xab\xed\xd2" "\xb0\x76\xa5\xed\x7d\x50\xf5\x17\x7b\x94\xa6\xa0\xf0\x00\xcd\x3a\xca\xdd" "\xe8\xe8\x0f\x66\xea\xda\x14\x01\x86\x20\xb1\x59\xe9\xe1\x4c\x25\x2d\x20" "\xc8\xdb\xb0\xfe\x36\x05\xb5\x69\x8b\x53\xe4\x21\x0b\x62\xfc\xbd\x00\x01" "\x7e\xaa\x01\xeb\x1f\xa5\x21\xbd\xb8\xd3\x0e\x83\x95\x1b\x4e\xa0\x28\x6c" "\x8f\x0d\x46\x45\x17\xa1\x1d\x79\x22\xd6\xcc\xe4\xd2\x05\x8e\xc8\xcd\x7b" "\x02\xb7\x3d\x82\x5d\x7e\x0a\xbb\xbd\x85\xe9\x91\x22\x0f\xc7\x99\x55\x34" "\xb7\xb1\x99\x8c\xa7\x52\x89\x0b\x07\x9a\x7c\xa3\xfd\xe5\x64\x38\xcf\x82" "\xd5\xdd\x9e\xdb\xd1\x1f\xd2\x93\xc1\x7d\x1c\xf1\x66\x57\xd0\xb3\x52\xa8" "\xc6\xc3\x63\x00\xad\x09\xa7\x8e\x3e\xe3\x91\x3b\x9b\x6f\x53\xde\xbf\xfc" "\x7e\x32\xbf\xb6\x4b\x0e\x8c\xbe\x07\xfe\x9b\x0d\xad\xb0\x97\xae\xb2\xc2" "\x42\x43\x0b\xec\x75\x63\x0a\x39\x21\x82\x8a\x73\x14\xde\x14\x04\x82\x9e" "\x7a\xfb\x3b\x84\x20\xe8\x5f\x2c\x8f\x6e\x88\xde\x04\x23\x14\x41\x6e\x5c" "\x00\xc5\x9b\x22\x20\x80\x04\xbe\xc1\x61\xf8\x45\x7c\x7f\x8e\x3a\x8c\xa4" "\x17\x4a\x4b\x78\xdf\x6e\x46\x0d\x56\xd2\x4e\x01\xae\x1a\x24\x11\x27\x0f" "\x79\xd0\x20\xa6\xba\xc8\x55\xf1\xa3\xef\x7b\x3d\x09\x91\x88\x26\x56\xb4" "\x08\xdc\xda\xf0\x2d\xb4\x6a\xc8\xfc\xab\x0c\x87\x5d\x1f\x2e\x8d\xb3\x66" "\xe6\xa2\x0c\xb6\x7a\x4d\xb9\x20\x38\x2a\x69\x15\x71\x5d\x3b\x42\x66\xf7" "\x79\xfe\x86\x33\xbe\xa6\xde\xf2\x8c\xc1\x59\x13\x8b\x83\x43\x34\xce\xde" "\xf3\xde\xc5\x4e\xa5\x30\x3d\xf5\x6b\xe8\x71\x15\x31\x5e\xc0\xf1\x47\x8a" "\x0c\x08\x69\xe5\xf7\xc3\x3d\xa6\x4b\x23\xaf\x58\x11\x75\x10\x55\xc9\x08" "\x49\x48\x44\x81\xd5\xa1\x0d\x72\xe0\x8c\xcd\x12\x71\x0c\x4f\x2f\xf5\x86" "\xa9\xea\x17\x5f\x4a\xa7\x0b\x15\x6c\x00\xc5\x7e\x22\xc1\x36\x0b\xfc\x7d" "\x36\xaa\x47\x92\x44\x4f\x81\xd8\xa0\xed\x41\xbf\x6a\x45\x2e\xa5\x26\x8b" "\x86\x05\x68\x2a\xc6\x3e\xaa\x46\x52\x18\xf4\xd9\x62\xdb\x42\x15\x4d\x01" "\x96\x6d\x3a\xd8\xfc\x2f\xde\x48\xef\x71\xbe\x08\xbe\x58\xe5\xad\x6d\x5a" "\x35\x93\xef\xc9\xc1\x33\x6e\x54\x13\x72\xa3\x47\x99\xd2\x4e\xa0\x0d\x4d" "\x49\x85\xbe\xd1\xda\xb1\x06\x20\x91\x1e\x9f\x69\x67\x88\x08\x26\xbe\x5a" "\x1f\x1b\xb4\xb2\xa3\x94\x86\x54\xc6\x93\x5c\xaf\xeb\x49\x25\xe1\x07\xa0" "\x1f\x9d\xda\x66\x8e\x5f\xd7\x48\x9e\x82\x13\x92\x41\xa9\x19\x0f\x09\x0a" "\xfe\x20\x94\x23\x4c\x75\xfe\xc0\x74\x62\x27\x48\xd4\xdd\x78\x2a\x93\x0f" "\x42\xb0\xe7\x5d\x92\x4b\xef\x68\xff\xaf\xba\xa9\x89\x16\x15\x1a\x36\xef" "\x29\x98\xaf\xd3\x00\x09\x55\xef\xbf\xa0\xa9\xa0\x08\x35\x8c\x11\x04\x3c" "\x0f\x96\xb5\x2f\xc7\x8a\x42\x53\x1a\xa5\xdf\xd8\xde\x09\x51\x8c\xff\x00" "\x8b\x33\x92\x59\xb2\x66\xc4\x88\xbb\x1d\xa0\x58\xba\x21\x8c\xd6\x4b\x3e" "\x41\x3c\xa2\x88\x9d\x10\x86\xe8\xc4\x0a\xe1\x15\x01\x98\x41\x21\xdc\xfa" "\x2f\xde\x09\xd0\x68\xf6\xdb\xbe\x83\x59\x98\x0d\xad\x96\xed\x22\x0b\x85" "\x34\xaa\xef\x35\x3d\xfc\x81\x56\x09\x07\xd2\x6c\x02\x44\x29\x24\xad\x55" "\xb1\x1d\x3a\xee\x7e\x55\x16\xd9\x6a\xd0\x78\xc8\x5a\xd1\xcd\xb1\x8a\x45" "\x47\x43\x05\xa8\xdb\x35\x0f\x98\x44\x38\x0e\x20\x94\xf6\x91\xa0\x5e\xa0" "\x94\x58\xbc\x53\xf3\x23\x6a\x1f\x3f\xa5\xe1\x44\xa5\x75\xba\x57\xe5\x8d" "\x00\xf7\x65\x3d\x2e\x6b\x6c\xbe\x18\xd2\x8c\xe3\xf5\x79\x25\x38\xad\x20" "\xc0\xe0\xe1\x0b\x03\xda\xc3\x40\x09\xd6\xd3\xe4\xc7\x66\x2c\xca\x88\xb5" "\x30\x66\xe9\x5e\xfe\x45\xee\x3e\x04\xda\x32\x86\x90\xda\xe1\xaa\x00\x70" "\xf0\x94\x5e\x26\x9b\x75\x73\x3b\x10\x6f\xf6\x51\x45\x55\xd5\x4d\x95\x8f" "\x73\x13\x44\x1f\xa2\x1f\x97\x61\x53\x12\xc4\xf6\x00\xa1\x43\x0f\x62\x98" "\x12\xf2\x3c\xd2\x1e\x70\x3b\x96\x6e\x04\xaa\x6d\x0b\xba\x6f\x25\x39\x36" "\x9a\x3b\xad\xeb\xfa\xa8\x19\x7d\x89\xe3\x29\x4b\x44\xc0\xea\x54\xae\x6b" "\x7f\x4a\x49\x65\x68\x04\x31\x75\xa5\x66\x65\x41\xb5\x59\xa9\xfe\xaf\x0c" "\x54\x54\xf1\x2f\x23\x0e\x97\xbc\xf8\x4d\xae\x11\xd1\xa8\x35\x94\x11\xb9" "\x8b\xb6\x06\x3e\xe8\xae\x0f\xfa\x30\xb5\x75\x77\x71\xc7\xb7\x0e\x4f\xbb" "\x6e\x95\x1a\x68\x08\x73\xe6\xda\x53\x16\x00\xe9\x51\x11\x0c\x34\xca\xac" "\xc8\xe9\x78\xc0\x6b\x48\x48\xc8\x80\xc4\x8a\xd8\xe6\xc5\x4b\xc7\x92\xce" "\x54\xea\x4b\x1c\x05\xab\x04\xaf\xb4\xd6\xca\xb2\x5b\x85\xd1\xc4\xb6\xc4" "\x74\xc7\xec\x92\x67\xb5\x01\xed\xaa\x20\xee\x0e\x41\x58\x68\xd8\x78\x66" "\x42\x6b\x13\x74\xe5\x8a\x66\x65\x30\xb9\x4e\x34\x2c\x8b\x2e\xbd\xd4\x05" "\xfe\xf0\xa2\x6d\xf8\x2b\xbc\x50\x2d\xa2\xca\x15\x50\xc2\x8d\x3c\x0b\x69" "\x87\x2f\xf8\x61\xcd\x23\xcb\x6e\x1f\xf1\xe6\x2f\x62\x5a\xe9\x2f\x90\xf3" "\x09\x33\xfc\x82\x7e\xdd\x38\x61\x21\x31\x53\x52\xdb\xc9\xf4\xca\xb3\xdd" "\xda\xde\xb8\xdf\x05\x1d\x2f\x59\xcd\x59\xe9\x7d\xc9\x2c\xe4\x34\x1f\x97" "\x80\x03\xe4\x86\x85\xe7\x67\x3c\xf1\xe6\x02\x60\x60\x0e\x7c\xbf\x73\x1d" "\xc1\x68\xb9\xa4\x11\xdc\x3c\x85\xf8\x43\xbd\x2c\x5f\xca\x89\xc0\x6d\x12" "\xba\xc0\x8a\x61\xcf\x09\x9a\xe5\xf2\x3e\x5e\x90\x84\x48\xe8\x1f\x27\x79" "\xb3\x85\xb3\x1d\xcd\x5c\xf8\xaa\xad\x4b\x85\xae\x70\x63\x62\x4a\x7d\xf5" "\x73\xae\xcc\xc8\xb6\x19\x77\xf8\xec\x10\xe6\x8b\x5d\xf1\xc1\xb8\x05\xc7" "\xe0\x01\x22\x8a\x65\xc0\xe7\x72\xc5\x25\x14\x66\xa4\x9f\x10\x21\x9b\xb7" "\x18\xa4\xaa\x2e\x35\xc4\x08\x11\xa9\x72\xeb\x58\x53\x0f\x7f\x07\x41\xd3" "\xbe\x0c\x00\xe3\x8f\x58\x99\x4a\x51\x99\x54\x7f\xc5\x15\x0c\x78\x1f\xfe" "\x2e\x56\x56\x0f\x08\xeb\x75\xbf\xcd\x90\x85\xff\x14\x0c\xee\xfd\x0d\x6e" "\xd4\x3d\xad\x39\xd2\xcd\xa8\x69\x4d\x42\x0e\x86\x1a\x1d\xec\x4a\x28\xd1" "\xcf\x53\x24\xc5\xc5\xab\x81\x92\x21\x54\x87\x3b\x3f\x82\xdf\x1b\xc0\x6c" "\xb9\x56\x5c\x08\xf7\x74\xd9\xfa\x6f\xe5\x75\xda\xf8\x7b\x32\x8a\xb1\x0b" "\x91\x22\x43\xf1\x00\x71\x2a\x27\xf4\x98\x1f\xaa\x37\x2d\x73\x67\x02\xc5" "\x65\xa0\x8c\x4d\x6b\x0a\xa3\x12\xd3\xc9\x01\x7f\xd1\xe7\xab\x98\x1d\xe7" "\xee\x1d\xfc\x1a\x84\x99\x24\xaa\x92\xea\xb1\xb3\xe6\xe9\x74\x2f\x69\x13" "\xa0\x8b\x56\x99\xd6\x70\x69\x7a\x60\x8d\x74\x9e\x06\xc3\x41\x42\x1a\x80" "\x9a\x36\x5d\xca\x3f\x8d\x88\xd8\x42\x68\x50\x80\xf8\xed\x93\x48\x28\x88" "\x06\x5b\x50\xbf\x9a\xbd\xe7\x5f\xe3\x7c\x8f\xf2\xae\x4f\x24\xe2\x6f\x83" "\x94\x9a\xb5\xc4\xf4\xa9\x6e\x13\xb2\xcd\xf7\x42\xda\xf9\xc1\xb5\x83\x05" "\x69\x14\x56\xc6\xc1\x90\xbf\xb7\xbb\xbb\x08\x4e\xa9\xf9\x7e\x99\xc3\xe0" "\x28\x41\x5d\x4e\x05\xcc\xf7\x71\x7b\x57\x97\xff\x5b\xaf\xa2\x51\x8a\x0a" "\xca\xb4\x34\xa1\x88\xd4\x79\x7a\x85\xf3\x65\x57\xdd\x6a\xa3\x9c\x75\xe8" "\x0b\x72\x49\x63\x72\x65\x25\x44\xb1\x42\x49\x01\xa6\xa9\xd4\xb7\x45\x30" "\x86\xb6\xba\x26\xa4\x05\x21\xda\x94\xab\x54\xde\x4a\x11\xb5\x1b\x4a\xd7" "\xab\x1d\x68\x05\xf3\x23\xb0\x44\x95\x5f\x77\x9c\xfe\x7c\x1c\x35\x86\xf4" "\xbe\x0e\xab\x22\x6a\x25\xae\x16\xbd\x8d\xc7\xeb\x01\x50\x24\xb7\x43\x4b" "\x64\x08\x34\x3a\x1b\xe6\xe1\xdd\x39\x25\xc1\x02\xb4\xc9\xc5\x43\x98\x38" "\x35\xb6\xbb\x45\xf8\x0e\xa3\x5b\xf7\xfc\xec\xab\x5d\x94\x72\x24\xbf\xdb" "\x1c\x03\xb2\x0f\xc0\x7a\x5c\xac\x63\x0b\xeb\x4b\x30\x44\xeb\xe5\x5c\x90" "\x23\x84\x4c\x1f\xd6\x4b\x4e\xb0\x25\x53\x68\x67\xf0\xaf\xa3\x88\x57\x6c" "\x5b\x25\x64\xcd\x2e\x20\xae\x26\x33\xf7\xb7\x6c\xf6\xfb\xce\xff\x24\x0f" "\x65\xe5\xee\xba\x28\x43\xfa\xa1\xe7\x71\x08\xd3\x5c\x59\xb3\xf5\x70\x11" "\x26\x60\xe9\x27\x8d\xa3\x12\x76\x86\xdc\x2a\x96\x5a\x6a\xd1\x67\x2e\x29" "\xff\x9e\xdd\x62\xf4\x9e\x41\xbd\xd6\x53\x48\xd2\x65\x78\x46\xbe\x80\x47" "\x9c\xea\x41\x5b\xfb\x59\x27\x22\x9f\x3b\x77\x2e\xd9\xc9\xb7\x63\x9d\x8f" "\x75\xff\x66\x21\x84\x1a\x7b\x64\x97\x81\x31\xe8\x69\x52\xbf\xe5\x10\x71" "\x5b\x25\xef\xbc\xf3\x93\x32\x0c\x1d\x62\x99\xac\x6c\x19\xdd\x90\x88\x70" "\xf9\x6d\x92\xb8\xbd\xcf\x11\xe3\xc9\x87\x8f\x2e\x37\xbd\xaf\x72\x71\x8a" "\xd0\xbc\x28\x72\xc7\xa0\xb1\x01\xf6\xe3\x92\x99\x72\x34\xe0\x6c\x9b\x1b" "\xdc\x32\x49\x71\x42\x7d\x6b\x97\xc3\xc1\x65\x31\x17\x8f\x40\xa8\xab\x52" "\xf9\x8e\x06\x67\x80\x97\x7a\xbd\x35\x2e\x1e\xfe\x61\x85\xf7\x02\x33\xb3" "\x0f\xdc\x96\xb6\xa2\x89\xb9\xe0\xfc\xee\x55\x59\x23\xef\x59\x0b\xd9\xcd" "\x2f\x0e\xf7\x02\x46\x41\x45\x0d\x1a\x92\x58\x04\x6a\xc0\xe8\x0a\xcd\x44" "\xf2\x67\x44\x69\x46\xc0\x96\xdb\x98\x48\xf7\x8c\xdd\xba\x9f\x54\x09\xb0" "\x90\xdd\x23\x44\xd8\xd4\x5a\x16\xcd\x2e\xcc\xe5\xbf\x22\xbd\x4c\xb8\x9a" "\xfd\x30\x67\xcb\x0b\xd9\xa7\x27\x9b\xe1\xb1\xe5\x03\x49\x8f\x39\xed\xce" "\x71\x4f\x37\x59\x7d\x0e\x64\x60\x71\x6d\x09\xea\x37\x6d\x73\xe8\xa7\x1f" "\xff\x13\x24\xfa\x2a\xeb\xa7\x5e\x8b\xbd\x0e\xa4\xc4\x18\xb4\x57\x84\x55" "\x01\x53\xd4\x92\x89\x8e\x15\xda\x88\xb6\xed\x3f\x67\xe8\x5d\xbb\x11\x1c" "\x2f\xea\xc2\xfd\x78\xb6\xf9\x01\x1c\x68\x64\xb9\xbb\x11\x65\x36\x94\xf7" "\xf0\x25\x68\xb7\x68\xb6\xa2\x7d\x08\x0e\xad\xc0\x09\x37\x44\xb9\x11\x5a" "\xa2\xf8\xd0\x3f\xa2\x7f\xae\xa2\xe3\x56\xef\x8c\xe6\x2e\x47\x22\xdd\xd1" "\x39\xf7\x84\xac\x3b\x8a\xfb\x98\xc8\xd3\x98\x4c\x8c\xf9\x43\x8e\x83\x71" "\x03\x30\x42\x8b\x78\x30\xc1\x70\x9a\x30\x9b\xba\xc3\xbb\xdb\xd0\x83\xe5" "\x39\x93\x8c\x57\x89\xe1\x70\x9d\x2c\x0e\xe9\x4d\xcb\x2f\xe6\x4c\x31\xc8" "\x7d\x25\xcc\x7f\x82\x6b\xbf\x5e\x02\x1d\x5a\xaa\x17\x29\x70\xaa\xe9\x6a" "\x68\x58\xf8\xc1\x1f\xdf\xb7\x48\x32\x8d\x97\x41\x1e\xdc\x10\xdd\x16\xfd" "\x10\xfa\xa7\xc3\xb9\x4c\xe1\x91\x52\xfb\x29\x65\x69\x04\x21\xd3\xc6\xdb" "\x2e\x7e\x88\x88\xc7\xbb\x06\x44\x3d\xb3\x11\x1e\x3d\xb6\x9a\x88\xdd\x09" "\x7a\xb8\xc6\x4d\x6b\xea\x30\xda\x24\x7f\xcd\x11\x7a\x30\xee\xf4\x5c\xd9" "\x33\x9a\x78\x37\x56\x28\xcd\xbf\xa2\x6d\x6b\x34\x19\xe6\x9b\xbe\x8e\x88" "\x47\x91\x29\x68\x4b\x23\x04\xda\xa2\xd6\x84\x30\x48\x26\xee\xe9\x7d\x34" "\x63\x03\xcc\x63\x1e\x10\x46\x5a\x2f\x92\x43\xe8\x4d\x32\x28\x10\x38\x8b" "\xa2\xd3\x06\x26\xa6\x3d\xf9\x79\x3e\xb9\x63\xdf\x23\x48\x65\xcb\xb6\x8c" "\xdb\xc0\x43\x63\xe1\x7a\x6a\x6e\xb1\xc8\x01\x41\x77\xc9\x9f\xaa\xcb\x8d" "\x7a\x8e\x99\xd8\x97\x71\x8b\xc5\x10\x55\x72\x78\x20\xd3\x21\xf2\x5f\xd1" "\x5d\x24\xd0\x29\xd4\xfa\xd6\xfd\xe9\x7f\x09\x11\x80\xef\x2b\xc3\x91\x3b" "\xc1\x1f\x8f\x10\x4b\xcc\x7e\xa0\x02\x41\x57\x48\x1b\x35\x37\xce\x54\x3f" "\xe8\xab\x93\xa2\x6c\xb9\xba\x51\xfa\x78\xd3\x37\xbf\x10\xba\x29\xdc\x5f" "\xeb\xfe\x4a\xd0\x14\xbd\x40\xf3\x33\x30\x82\x3d\x7f\x45\x73\xba\xeb\xd9" "\xe0\x63\xd5\x9a\x87\x66\x2b\xef\x85\x9c\xee\x8a\x8e\x53\x18\xaa\xe2\x2e" "\x79\xfb\x4d\x31\xe0\x88\xf0\x56\x9c\x67\xbb\xa4\x18\x68\xfe\x46\x4e\xd7" "\x7e\xc7\xfe\x07\xdd\x3a\x5c\x2c\x81\xc1\xfd\xed\x16\x05\x98\xb3\x75\x64" "\x51\x31\x73\xf1\x3f\xee\xb9\xdf\x4b\x47\xed\xe8\x05\x0a\xac\x43\x1e\x1b" "\x20\x58\xc6\xaf\xe7\xe4\x4b\xcc\x6f\x28\xdc\x58\x33\xdd\xed\x10\xe6\x91" "\x7e\x15\xb9\x30\x88\xcd\x90\x79\x18\x26\xca\x7c\x3b\x9a\x42\x11\xe9\xe2" "\xff\xd4\x96\x62\x23\x81\x6d\xb6\xe4\xed\xe5\x70\x1b\x76\x98\x8d\x8f\x34" "\xaa\x14\x0f\xfb\x4b\xc3\xef\xfc\xcb\xe5\xaf\x39\x42\xd4\xc5\x71\x77\x00" "\xe5\x92\xa1\x70\x01\xd2\x0b\x66\x5f\xb7\xc6\xf6\x53\x61\x10\x8a\x13\x70" "\xa4\x5d\xb4\x77\xa1\xf4\x49\xe5\xc3\xf9\xa8\x9f\x96\x72\x90\xaf\x23\x1d" "\xb8\x2f\xed\xec\xfc\xa2\xc3\xce\xdf\xfe\xad\xb7\x75\x72\x8b\x45\xce\x4b" "\xde\x06\x30\xe9\xe1\xdf\xcd\x98\x13\x8a\x55\x6d\xd4\x0b\x65\x55\x81\xb4" "\x51\xa7\x16\x4a\xd5\x7c\x4f\xb2\xb5\xdc\x5b\x14\x5e\x87\x33\xde\x33\xaf" "\x84\x4e\x40\x04\x14\xf8\x5c\x28\xca\x1f\x88\x8e\x70\xc4\x5d\x28\xc8\x23" "\xe0\x7e\xdd\xf3\x0d\xf7\x91\x1d\xf5\x84\xad\x45\x8a\x25\x35\x50\x84\x16" "\x3a\x9a\x7c\xc3\xba\xc4\x27\x6e\x95\x72\x11\x62\x6e\x28\x82\x12\x00\x53" "\x34\xde\xc7\x42\xcf\xe5\x7e\x6c\x82\x34\xe5\x20\xd8\xbe\xd4\x5a\xf4\x76" "\x77\x0f\x47\x18\xf7\x99\xc1\xa1\xf6\x37\xfc\x04\xa7\x37\x80\xa3\x5d\x21" "\x94\xe6\x01\x7e\x40\x5d\x3e\x0b\x1e\x9f\x2c\x7c\x0f\x6a\x0e\xd2\x8a\x2e" "\xaf\xdd\x79\x22\x76\x20\x59\xfe\x0e\xbc\x77\x59\x92\x45\xb1\x2c\x9f\x0c" "\xef\x9e\xda\xb1\xa2\x51\x71\xa6\xa9\xa0\x56\x2e\x24\xdb\x76\xe2\x5d\xfb" "\x5e\xcb\x73\x52\xd0\xbf\xc7\x8d\x85\x8e\x8a\xaa\xc9\x13\xef\xa4\xff\x60" "\x48\x96\x79\xe8\xc7\x20\x19\x89\x7a\x8a\x85\xa9\xee\x29\xf1\x09\x22\x31" "\x5b\xa7\xdb\x0a\x12\x6f\x82\x7c\x03\xfa\x5b\xbb\x90\xf9\x91\xcb\x98\x66" "\xb3\xe0\x30\x47\xcb\x1f\xab\xbb\xdb\xe5\xa3\x52\x82\xf0\x30\xc0\xdb\xdb" "\xd2\x27\xf8\x5b\x05\x72\x1c\x45\xc8\xb2\xb8\x5d\x33\x10\xbb\x41\xd6\xaa" "\x56\x14\xa6\x0d\x98\x74\xd1\x2f\x11\xf5\xa9\x4b\x15\xf7\x41\xdb\x31\x0c" "\x92\x7b\x2e\x90\x60\x7a\x2a\xf8\xc4\xb5\x7d\x6b\x69\x37\xd5\xa1\xeb\x14" "\x58\x9d\x1e\x36\x16\x42\x45\x8c\xc2\xfb\xd2\x96\xac\x03\x1d\x09\x9d\xf4" "\x9a\x53\xe8\xf0\xd4\x50\x6b\x2d\xcb\xb2\x0f\x54\x56\x0b\x69\x5a\x4e\x0a" "\x4a\x5a\x13\x23\x19\x85\xd5\x3b\xb3\x53\x31\x26\xad\xd2\x81\xfd\x38\xcd" "\xdf\x7e\xf4\x37\x20\x1e\x8a\xea\x1a\xb6\x3a\xd6\x73\xcd\xcc\x6c\x60\x41" "\x14\xae\xc7\x71\x88\x1b\x4f\xb7\xaa\x7c\xcb\xd3\x97\xe7\x03\xf1\x08\x95" "\x61\x9e\x15\xc7\x16\x84\xbb\xbf\xa2\xb2\xc6\x0a\x79\x0d\xe0\xe5\x05\x95" "\x38\xb5\x1d\x34\x7a\x68\xad\x05\x74\x72\xa9\xf1\xea\xf0\x54\xdf\x77\x91" "\xb5\x8f\x63\x8c\x05\x95\x55\xbb\xb9\x70\xed\xf8\x77\xd5\xf6\x23\xe2\x54" "\x1d\xba\x27\xdf\x8d\x71\x3f\xe7\xc5\x5f\x40\xfb\xf3\xdb\xdc\x3d\x04\x2e" "\x92\xb8\x3f\x94\xdd\x66\xd1\xcd\x2b\xc5\xcc\x98\xa6\xa5\x02\xb5\xd8\xd8" "\xee\x6e\xfe\xca\xcf\xb7\x62\x46\x4c\x6f\x8c\xea\x8b\xda\xd1\x4a\x29\x19" "\x99\x28\xe0\xcb\x07\xfb\xc3\x06\xb9\xee\xcc\xc4\xc7\xa3\x26\x18\x52\x54" "\x41\x48\x92\xb6\x14\xdd\xcc\x20\xe9\xb5\xd2\x58\xe6\x62\x71\x43\x0c\x07" "\x05\xc5\xa6\x22\xfa\x56\x46\xda\x48\x97\xa0\x88\xf6\x8f\xde\xb6\x68\x42" "\xad\x3d\x72\xf2\x32\xf4\x87\xb3\xdb\x3b\x83\xd8\x26\x22\xc9\x1d\xaf\x77" "\x96\x34\xfa\x1b\x97\xc7\xd5\xad\xb5\xd5\x3b\xe5\x19\x8b\xc5\x9a\xef\x1a" "\xab\x60\xc3\x79\x52\x96\xa8\x4a\xc3\xf7\x73\x99\xfe\xed\x5b\x86\xf4\x4b" "\x3a\x1c\xa3\x5e\xe4\x68\x91\xee\x90\x3a\x90\x34\x08\x83\xce\xc4\x1d\x57" "\x7a\x88\x80\x94\x5b\x50\x4c\x7e\xa5\xbd\xc9\x4d\x66\xbf\x25\xb4\xd2\xe0" "\x64\xbd\x69\xdf\xce\x4f\x00\xf8\xdf\xad\xe0\x73\x9f\xab\x52\x75\xdb\x11" "\xe9\x99\xb2\x56\x22\xc2\x0c\xa0\xa9\xf1\x0f\x27\xc8\x00\xa4\xf5\xd1\x9a" "\xa9\x2d\x04\xcd\x28\x2f\x96\xe9\x90\x30\x18\x74\xc5\xdd\xcf\xb1\x32\x23" "\xc4\xf5\xfd\x37\xc4\x49\xad\xde\x53\x2a\x16\xae\xe6\x64\x07\xbf\xee\xee" "\xbd\xa4\xf5\x13\xf2\x24\xe4\x34\xa9\xc0\x8a\x22\x81\xd5\xe1\xf4\x59\x1c" "\x9a\x43\x3a\xb1\x57\x6c\x11\xed\xd0\xdf\x9f\xb6\xf4\x7b\x76\x1f\xc8\x78" "\xd5\x32\xd7\xfc\x2a\x76\x24\x61\xfd\x14\x73\xeb\x7c\x7c\x88\x66\x8b\x74" "\x9b\x9b\xbf\x43\xc9\x37\xfa\x2b\xd7\x3a\xe9\x17\xea\x2a\x90\x3b\xf5\xf7" "\xd7\x1a\xe1\xc7\xd7\x1c\x60\xde\xf1\xbb\xc4\xe8\x15\x1b\xee\x5f\x4a\x39" "\x63\x25\x90\x7f\x4f\x2b\xcb\xe9\x80\x38\xe4\x6b\xc9\xfb\x30\xd1\x99\xf0" "\x25\xea\xbe\xb0\x37\xce\xae\xc3\xee\x18\x7f\x73\xa1\x36\xb8\x56\x6a\x94" "\x3d\x5b\x32\x71\x19\x9e\x6d\x19\xb7\x06\x6d\x90\xb1\x0d\x0c\x11\xe7\xcb" "\x0c\x0b\x5f\x73\x12\x7c\xd6\x85\xa7\x63\x8b\x99\xa1\xc9\xae\xa4\xfb\xf3" "\xfa\xc6\x7a\x4b\x11\x4c\xa9\xfa\x60\xd2\xc9\xc2\x47\x23\xb0\x37\x14\x2e" "\x3e\x47\x50\x3f\x3d\xfd\xff\xc4\x87\x21\x20\x90\xd2\x21\xeb\x85\xf5\x3c" "\xf6\x17\x6c\x26\xb9\x3c\x75\x7b\x52\x1d\x01\x7c\xa1\x7a\xc7\x88\x9c\x26" "\xc6\x47\x3f\xb4\x4c\xc2\xab\x79\xcd\x76\xfb\xf8\xfc\x5a\x81\xdc\x24\xbd" "\x7b\xa6\xd5\x5d\x80\x36\xf4\xd6\x02\x18\xe7\xc8\xfd\xf7\xf3\xb9\x15\xef" "\xd0\xbd\x0e\xdf\xac\x38\x0e\x37\x17\x79\x4a\xb4\x6b\x2a\x5d\xae\xd5\x8f" "\xdb\x3e\xa6\x67\x20\xc0\xe7\x8a\x0c\xe8\x25\xb1\x55\xeb\xc0\x97\x9c\xf7" "\x79\x15\xdb\x3d\xf6\x00\xbb\xd1\x79\xf1\xd2\xd6\x74\xd7\x6b\x12\xaf\xf0" "\x87\x75\x7d\x4a\xa4\x80\xee\x15\x66\x78\x40\x74\xa5\x28\x7b\xe0\x08\x8e" "\xfb\xe1\x2f\x55\x0b\xad\x3b\x41\x0c\xf0\x4f\xba\x8f\x06\xd1\x12\x0a\x1d" "\xad\x35\xde\x9c\x7a\x22\xc3\xca\xf8\x3c\x1b\xf6\xea\x57\xa0\x55\xaf\xcb" "\xc6\x1b\x06\x8f\xeb\x5d\x17\xf5\xd0\xcd\x9e\x59\x11\xd2\xd9\xc8\xc6\xff" "\x89\xfc\x37\x72\x5a\x4b\x9a\xc3\xa8\x80\x0d\x17\x31\x19\x9c\x82\x01\xc0" "\x52\x2e\x9a\xf7\x49\xfe\x36\xe1\x41\x94\x31\x0a\x5a\xaf\xd9\x44\xc3\x21" "\xef\xb4\xec\xf5\xc1\x31\xcc\xf9\xde\x48\xc8\xb3\x6a\x90\x5f\x47\xeb\xa8" "\xfb\x42\xce\x43\x5d\x1b\xd4\x08\xdc\x87\xb1\xc9\x15\x77\xff\xba\x16\xe3" "\x2b\x9b\xe2\x19\x82\xd3\x17\x63\x20\xc8\xe2\x37\x99\xb6\xc5\xcc\x3d\x83" "\x4c\xcb\xe9\xac\xed\xa7\x0b\xd2\xc7\x3a\x15\x41\x37\xac\xdd\x65\xf4\x19" "\x1e\x44\x70\x89\x3e\xb2\x4e\x4a\xb0\x07\x00\xc2\xc1\x35\x14\x9f\xb8\x66" "\x44\xb5\xac\x0b\xe1\x66\x92\x88\xb9\xc2\x9a\x1f\x6f\x61\x51\x7d\x8b\x4f" "\x09\x61\x6e\x76\x7b\xd7\x2d\x13\xf8\x33", 4096)); syscall(__NR_lsetxattr, /*path=3D*/0x200001c0ul, /*name=3D*/0x20000= 2c0ul, /*val=3D*/0x20002040ul, /*size=3D*/0x1009ul, /*flag= s=3D*/3ul); } int main(void) { syscall(__NR_mmap, /*addr=3D*/0x1ffff000ul, /*len=3D*/0x1000ul, /*prot=3D*/0ul, /*flags=3D*/0x32ul, /*fd=3D*/-1, /*offset=3D*/0ul); syscall(__NR_mmap, /*addr=3D*/0x20000000ul, /*len=3D*/0x1000000ul, /*prot=3D*/7ul, /*flags=3D*/0x32ul, /*fd=3D*/-1, /*offset=3D*/0ul); syscall(__NR_mmap, /*addr=3D*/0x21000000ul, /*len=3D*/0x1000ul, /*prot=3D*/0ul, /*flags=3D*/0x32ul, /*fd=3D*/-1, /*offset=3D*/0ul); install_segv_handler(); for (procid =3D 0; procid < 4; procid++) { if (fork() =3D=3D 0) { loop(); } } sleep(1000000); return 0; } =3D* repro.txt =3D* syz_mount_image$vfat(&(0x7f0000000040), &(0x7f0000000200)=3D'./file0\x00', 0x220e002, 0x0, 0x1, 0x0, &(0x7f0000000100)) mount(&(0x7f0000000040)=3DANY=3D[@ANYBLOB=3D'mtd', @ANYRESHEX=3D0x0], &(0x7f00000000c0)=3D'./file0\x00', &(0x7f0000001200)=3D'jffs2\x00', 0x0, 0x0) lsetxattr$security_evm(&(0x7f00000001c0)=3D'./file0\x00', &(0x7f00000002c0), &(0x7f0000002040)=3D@v2=3D{0x3, 0x2, 0xb, 0x4, 0x1000, "788d9cb299abd72ece913d53365e16688e51ace15984ab53d1666ae3f5dfbc860bef87389e= 21286be236ddc3d0fa2e51d5c5c7b35c5d503c5b2c3b6be0fc56e97df88faa0635363ba92b8= 2c47a817ac97f1d638a1461821255ec23bd0ce5bf1094e3a8980d7e6d1976ba778745920e17= 18fddac4bd66b0a606801aaefded293c3fcebad3b2c06403dba9994971659b7f4a077addaeb= 8ae3e5aca7027fde1e40001c0bdd800bcc287e02c867e2782deaf676a261647db8c2f394502= 2057de768100a8bf73d9f9ff29229b46dead58b2ddf96433468e9eee8950df658711e411364= e44145e682f3c053c6f5a1861eee6edf885a97c545805ac0c35a5e4623b2001861c593354b5= 70ff3b4a45f1acde0a8dbd17c09ce448ed5dfd9e7472e68967decb769fa600cd30beb6c8030= e9474c7ec4c1daf3e007bbc5765b366d4a176e38bdfabedd2b076a5ed7d50f5177b94a6a0f0= 00cd3acadde8e80f66eada14018620b159e9e14c252d20c8dbb0fe3605b5698b53e4210b62f= cbd00017eaa01eb1fa521bdb8d30e83951b4ea0286c8f0d464517a11d7922d6cce4d2058ec8= cd7b02b73d825d7e0abbbd85e991220fc7995534b7b1998ca752890b079a7ca3fde56438cf8= 2d5dd9edbd11fd293c17d1cf16657d0b352a8c6c36300ad09a78e3ee3913b9b6f53debffc7e= 32bfb64b0e8cbe07fe9b0dadb097aeb2c242430bec75630a3921828a7314de1404829e7afb3= b8420e85f2c8f6e88de042314416e5c00c59b22208004bec161f8457c7f8e3a8ca4174a4b78= df6e460d56d24e01ae1a2411270f79d020a6bac855f1a3ef7b3d0991882656b408dcdaf02db= 46ac8fcab0c875d1f2e8db366e6a20cb67a4db920382a6915715d3b4266f779fe8633bea6de= f28cc159138b834334cedef3dec54ea5303df56be87115315ec0f1478a0c0869e5f7c33da64= b23af5811751055c90849484481d5a10d72e08ccd12710c4f2ff586a9ea175f4aa70b156c00= c57e22c1360bfc7d36aa4792444f81d8a0ed41bf6a452ea5268b8605682ac63eaa465218f4d= 962db42154d01966d3ad8fc2fde48ef71be08be58e5ad6d5a3593efc9c1336e541372a34799= d24ea00d4d4985bed1dab10620911e9f6967880826be5a1f1bb4b2a3948654c6935cafeb492= 5e107a01f9dda668e5fd7489e82139241a9190f090afe2094234c75fec074622748d4dd782a= 930f42b0e75d924bef68ffafbaa98916151a36ef2998afd3000955efbfa0a9a008358c11043= c0f96b52fc78a42531aa5dfd8de09518cff008b339259b266c488bb1da058ba218cd64b3e41= 3ca2889d1086e8c40ae11501984121dcfa2fde09d068f6dbbe8359980dad96ed220b8534aae= f353dfc81560907d26c02442924ad55b11d3aee7e5516d96ad078c85ad1cdb18a45474305a8= db350f9844380e2094f691a05ea09458bc53f3236a1f3fa5e144a575ba57e58d00f7653d2e6= b6cbe18d28ce3f5792538ad20c0e0e10b03dac34009d6d3e4c7662cca88b53066e95efe45ee= 3e04da328690dae1aa0070f0945e269b75733b106ff6514555d54d958f7313441fa21f97615= 312c4f600a1430f629812f23cd21e703b966e04aa6d0bba6f2539369a3badebfaa8197d89e3= 294b44c0ea54ae6b7f4a496568043175a5666541b559a9feaf0c5454f12f230e97bcf84dae1= 1d1a8359411b98bb6063ee8ae0ffa30b5757771c7b70e4fbb6e951a680873e6da531600e951= 110c34caacc8e978c06b4848c880c48ad8e6c54bc792ce54ea4b1c05ab04afb4d6cab25b85d= 1c4b6c474c7ec9267b501edaa20ee0e415868d87866426b1374e58a666530b94e342c8b2ebd= d405fef0a26df82bbc502da2ca1550c28d3c0b69872ff861cd23cb6e1ff1e62f625ae92f90f= 30933fc827edd386121315352dbc9f4cab3dddadeb8df051d2f59cd59e97dc92ce4341f9780= 03e48685e7673cf1e60260600e7cbf731dc168b9a411dc3c85f843bd2c5fca89c06d12bac08= a61cf099ae5f23e5e908448e81f2779b385b31dcd5cf8aaad4b85ae7063624a7df573aeccc8= b61977f8ec10e68b5df1c1b805c7e001228a65c0e772c5251466a49f10219bb718a4aa2e35c= 40811a972eb58530f7f0741d3be0c00e38f58994a5199547fc5150c781ffe2e56560f08eb75= bfcd9085ff140ceefd0d6ed43dad39d2cda8694d420e861a1dec4a28d1cf5324c5c5ab81922= 154873b3f82df1bc06cb9565c08f774d9fa6fe575daf87b328ab10b912243f100712a27f498= 1faa372d736702c565a08c4d6b0aa312d3c9017fd1e7ab981de7ee1dfc1a849924aa92eab1b= 3e6e9742f6913a08b5699d670697a608d749e06c341421a809a365dca3f8d88d842685080f8= ed93482888065b50bf9abde75fe37c8ff2ae4f24e26f83949ab5c4f4a96e13b2cdf742daf9c= 1b58305691456c6c190bfb7bbbb084ea9f97e99c3e028415d4e05ccf7717b5797ff5bafa251= 8a0acab434a188d4797a85f36557dd6aa39c75e80b72496372652544b1424901a6a9d4b7453= 086b6ba26a40521da94ab54de4a11b51b4ad7ab1d6805f323b044955f779cfe7c1c3586f4be= 0eab226a25ae16bd8dc7eb015024b7434b6408343a1be6e1dd3925c102b4c9c543983835b6b= b45f80ea35bf7fcecab5d947224bfdb1c03b20fc07a5cac630beb4b3044ebe55c9023844c1f= d64b4eb025536867f0afa388576c5b2564cd2e20ae2633f7b76cf6fbceff240f65e5eeba284= 3faa1e77108d35c59b3f570112660e9278da3127686dc2a965a6ad1672e29ff9edd62f49e41= bdd65348d2657846be80479cea415bfb5927229f3b772ed9c9b7639d8f75ff6621841a7b649= 78131e86952bfe510715b25efbcf393320c1d6299ac6c19dd908870f96d92b8bdcf11e3c987= 8f2e37bdaf72718ad0bc2872c7a0b101f6e392997234e06c9b1bdc324971427d6b97c3c1653= 1178f40a8ab52f98e066780977abd352e1efe6185f70233b30fdc96b6a289b9e0fcee555923= ef590bd9cd2f0ef7024641450d1a9258046ac0e80acd44f267446946c096db9848f78cddba9= f5409b090dd2344d8d45a16cd2ecce5bf22bd4cb89afd3067cb0bd9a7279be1b1e503498f39= edce714f37597d0e6460716d09ea376d73e8a71fff1324fa2aeba75e8bbd0ea4c418b457845= 50153d492898e15da88b6ed3f67e85dbb111c2feac2fd78b6f9011c6864b9bb11653694f7f0= 2568b768b6a27d080eadc0093744b9115aa2f8d03fa27faea2e356ef8ce62e4722ddd139f78= 4ac3b8afb98c8d3984c8cf9438e83710330428b7830c1709a309bbac3bbdbd083e539938c57= 89e1709d2c0ee94dcb2fe64c31c87d25cc7f826bbf5e021d5aaa172970aae96a6858f8c11fd= fb748328d97411edc10dd16fd10faa7c3b94ce19152fb2965690421d3c6db2e7e8888c7bb06= 443db3111e3db69a88dd097ab8c64d6bea30da247fcd117a30eef45cd9339a78375628cdbfa= 26d6b3419e69bbe8e88479129684b2304daa2d684304826eee97d346303cc631e10465a2f92= 43e84d322810388ba2d30626a63df9793eb963df234865cbb68cdbc04363e17a6a6eb1c8014= 177c99faacb8d7a8e99d897718bc51055727820d321f25fd15d24d029d4fad6fde97f091180= ef2bc3913bc11f8f104bcc7ea0024157481b3537ce543fe8ab93a26cb9ba51fa78d337bf10b= a29dc5febfe4ad014bd40f33330823d7f4573baebd9e063d59a87662bef859cee8a8e5318aa= e22e79fb4d31e088f0569c67bba41868fe464ed77ec7fe07dd3a5c2c81c1fded160598b3756= 4513173f13feeb9df4b47ede8050aac431e1b2058c6afe7e44bcc6f28dc5833dded10e6917e= 15b93088cd90791826ca7c3b9a4211e9e2ffd4966223816db6e4ede5701b76988d8f34aa140= ffb4bc3effccbe5af3942d4c5717700e592a17001d20b665fb7c6f65361108a1370a45db477= a1f449e5c3f9a89f967290af231db82fedecfca2c3cedffeadb775728b45ce4bde0630e9e1d= fcd98138a556dd40b655581b451a7164ad57c4fb2b5dc5b145e8733de33af844e400414f85c= 28ca1f888e70c45d28c823e07eddf30df7911df584ad458a25355084163a9a7cc3bac4276e9= 57211626e288212005334dec742cfe57e6c8234e520d8bed45af476770f4718f799c1a1f637= fc04a73780a35d2194e6017e405d3e0b1e9f2c7c0f6a0ed28a2eafdd7922762059fe0ebc775= 99245b12c9f0cef9edab1a25171a6a9a0562e24db76e25dfb5ecb7352d0bfc78d858e8aaac9= 13efa4ff60489679e8c72019897a8a85a9ee29f10922315ba7db0a126f827c03fa5bbb90f99= 1cb9866b3e03047cb1fabbbdbe5a35282f030c0dbdbd227f85b05721c45c8b2b85d3310bb41= d6aa5614a60d9874d12f11f5a94b15f741db310c927b2e90607a2af8c4b57d6b6937d5a1eb1= 4589d1e361642458cc2fbd296ac031d099df49a53e8f0d4506b2dcbb20f54560b695a4e0a4a= 5a13231985d53bb3533126add281fd38cddf7ef437201e8aea1ab63ad673cdcc6c604114aec= 771881b4fb7aa7ccbd397e703f10895619e15c71684bbbfa2b2c60a790de0e5059538b51d34= 7a68ad057472a9f1eaf054df7791b58f638c059555bbb970edf877d5f623e2541dba27df8d7= 13fe7c55f40fbf3dbdc3d042e92b83f94dd66d1cd2bc5cc98a6a502b5d8d8ee6efecacfb762= 464c6f8cea8bdad14a29199928e0cb07fbc306b9eeccc4c7a326185254414892b614ddcc20e= 9b5d258e66271430c0705c5a622fa5646da4897a088f68fdeb66842ad3d72f232f487b3db3b= 83d82622c91daf779634fa1b97c7d5adb5d53be5198bc59aef1aab60c3795296a84ac3f7739= 9feed5b86f44b3a1ca35ee46891ee903a90340883cec41d577a8880945b504c7ea5bdc94d66= bf25b4d2e064bd69dfce4f00f8dfade0739fab5275db11e999b25622c20ca0a9f10f27c800a= 4f5d19aa92d04cd282f96e990301874c5ddcfb13223c4f5fd37c449adde532a16aee66407bf= eeeebda4f513f224e434a9c08a2281d5e1f4591c9a433ab1576c11edd0df9fb6f47b761fc87= 8d532d7fc2a762461fd1473eb7c7c88668b749b9bbf43c937fa2bd73ae917ea2a903bf5f7d7= 1ae1c7d71c60def1bbc4e8151bee5f4a396325907f4f2bcbe98038e46bc9fb30d199f025eab= eb037ceaec3ee187f73a136b8566a943d5b3271199e6d19b7066d90b10d0c11e7cb0c0b5f73= 127cd685a7638b99a1c9aea4fbf3fac67a4b114ca9fa60d2c9c24723b037142e3e47503f3df= dffc487212090d221eb85f53cf6176c26b93c757b521d017ca17ac7889c26c6473fb44cc2ab= 79cd76fbf8fc5a81dc24bd7ba6d55d8036f4d60218e7c8fdf7f3b915efd0bd0edfac380e371= 7794ab46b2a5daed58fdb3ea66720c0e78a0ce825b155ebc0979cf77915db3df600bbd179f1= d2d674d76b12aff087757d4aa480ee1566784074a5287be0088efbe12f550bad3b410cf04fb= a8f06d1120a1dad35de9c7a22c3caf83c1bf6ea57a055afcbc61b068feb5d17f5d0cd9e5911= d2d9c8c6ff89fc37725a4b9ac3a8800d1731199c8201c0522e9af749fe36e14194310a5aafd= 944c321efb4ecf5c131ccf9de48c8b36a905f47eba8fb42ce435d1bd408dc87b1c91577ffba= 16e32b9be21982d3176320c8e23799b6c5cc3d834ccbe9aceda70bd2c73a154137acdd65f41= 91e4470893eb24e4ab00700c2c135149fb86644b5ac0be1669288b9c29a1f6f61517d8b4f09= 616e767bd72d13f833"}, 0x1009, 0x3) and see also in https://gist.github.com/xrivendell7/fdc7fa3a7b55a9174666944c07732eec I hope it helps. Best regards lee bruce =E4=BA=8E2024=E5=B9=B44=E6=9C=8817=E6=97= =A5=E5=91=A8=E4=B8=89 20:48=E5=86=99=E9=81=93=EF=BC=9A > > Hello, I reproduced this bug and comfired in the latest upstream. > > If you fix this issue, please add the following tag to the commit: > Reported-by: xingwei lee > Reported-by: yue sun > > I use the same kernel as syzbot instance: https://syzkaller.appspot.com/b= ug?extid=3D5a281fe8aadf8f11230d > Kernel Commit: upstream fe46a7dd189e25604716c03576d05ac8a5209743 > Kernel Config: https://syzkaller.appspot.com/text?tag=3DKernelConfig&x=3D= 4d90a36f0cab495a with KASAN enabled > > root@syzkaller:~# ./0 > [ 406.727577][ T8177] ------------[ cut here ]------------ > [ 406.728272][ T8177] kernel BUG at fs/jffs2/summary.c:865! > [ 406.729014][ T8177] invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI > [ 406.729850][ T8177] CPU: 2 PID: 8177 Comm: 0 Not tainted 6.8.0-08951-g= fe46a7dd189e-dirty #6 > [ 406.730904][ T8177] Hardware name: QEMU Standard PC (i440FX + PIIX, 19= 96), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 > [ 406.732206][ T8177] RIP: 0010:jffs2_sum_write_sumnode+0x1f50/0x2630 > [ 406.733061][ T8177] Code: 0f b6 04 02 84 c0 74 08 3c 03 0f 8e 81 01 00= 00 8b b3 c0 05 00 00 48 c7 c2 c0 7e a4 8b 48 c7 c7 c0 7a a4 8b e8 51 ba 82= fe 90 <0f> 0b e8 69 29 01 ff e9 70 e19 > [ 406.735472][ T8177] RSP: 0018:ffffc9000396f4e0 EFLAGS: 00010286 > [ 406.736416][ T8177] RAX: 0000000000000045 RBX: ffff888022a20040 RCX: f= fff888022a20040 > [ 406.737446][ T8177] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0= 000000000000000 > [ 406.738435][ T8177] RBP: ffffc9000396f660 R08: 0000000000000005 R09: 0= 000000000000000 > [ 406.739470][ T8177] R10: 0000000080000000 R11: 0000000000000001 R12: 0= 000000000000000 > [ 406.740463][ T8177] R13: 0000000000000000 R14: ffff888028bb1000 R15: 0= 00000000000106c > [ 406.741459][ T8177] FS: 0000000007a66480(0000) GS:ffff8880b9300000(00= 00) knlGS:0000000000000000 > [ 406.742581][ T8177] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > [ 406.743418][ T8177] CR2: 0000000020003029 CR3: 000000002be68000 CR4: 0= 000000000750ef0 > [ 406.744407][ T8177] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0= 000000000000000 > [ 406.745398][ T8177] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0= 000000000000400 > [ 406.746373][ T8177] PKRU: 55555554 > [ 406.746833][ T8177] Call Trace: > [ 406.747271][ T8177] > [ 406.747651][ T8177] ? show_regs+0x97/0xa0 > [ 406.748215][ T8177] ? die+0x3b/0xb0 > [ 406.748701][ T8177] ? do_trap+0x245/0x440 > [ 406.749262][ T8177] ? jffs2_sum_write_sumnode+0x1f50/0x2630 > [ 406.750005][ T8177] ? jffs2_sum_write_sumnode+0x1f50/0x2630 > [ 406.750711][ T8177] ? do_error_trap+0xff/0x250 > [ 406.751342][ T8177] ? jffs2_sum_write_sumnode+0x1f50/0x2630 > [ 406.752094][ T8177] ? handle_invalid_op+0x39/0x40 > [ 406.752740][ T8177] ? jffs2_sum_write_sumnode+0x1f50/0x2630 > [ 406.753479][ T8177] ? exc_invalid_op+0x2e/0x50 > [ 406.754090][ T8177] ? asm_exc_invalid_op+0x1a/0x20 > [ 406.754716][ T8177] ? jffs2_sum_write_sumnode+0x1f50/0x2630 > [ 406.755477][ T8177] ? __pfx_jffs2_sum_write_sumnode+0x10/0x10 > [ 406.756234][ T8177] ? rcu_is_watching+0x12/0xc0 > [ 406.756861][ T8177] ? lock_acquire+0x1b1/0x540 > [ 406.757489][ T8177] ? __pfx_lock_acquire+0x10/0x10 > [ 406.758117][ T8177] ? __pfx___mutex_lock+0x10/0x10 > [ 406.758769][ T8177] ? jffs2_do_reserve_space+0xc59/0x1190 > [ 406.759502][ T8177] jffs2_do_reserve_space+0xc59/0x1190 > [ 406.760223][ T8177] jffs2_reserve_space+0x67e/0xc20 > [ 406.760883][ T8177] ? avc_has_perm_noaudit+0x152/0x3d0 > [ 406.761584][ T8177] ? __pfx_jffs2_reserve_space+0x10/0x10 > [ 406.762302][ T8177] ? avc_has_perm_noaudit+0x152/0x3d0 > [ 406.763030][ T8177] ? cred_has_capability.isra.0+0x19d/0x310 > [ 406.763788][ T8177] ? __pfx_jffs2_security_setxattr+0x10/0x10 > [ 406.764567][ T8177] do_jffs2_setxattr+0x1ab/0x1770 > [ 406.765224][ T8177] ? cap_capable+0x1e4/0x250 > [ 406.765783][ T8177] ? __pfx_do_jffs2_setxattr+0x10/0x10 > [ 406.766514][ T8177] ? xattr_resolve_name+0x292/0x440 > [ 406.767220][ T8177] ? __pfx_jffs2_security_setxattr+0x10/0x10 > [ 406.768026][ T8177] __vfs_setxattr+0x182/0x1f0 > [ 406.768646][ T8177] ? __pfx_evm_protect_xattr.isra.0+0x10/0x10 > [ 406.769411][ T8177] ? __pfx___vfs_setxattr+0x10/0x10 > [ 406.770067][ T8177] __vfs_setxattr_noperm+0x132/0x610 > [ 406.770752][ T8177] __vfs_setxattr_locked+0x195/0x270 > [ 406.771452][ T8177] vfs_setxattr+0x151/0x370 > [ 406.772052][ T8177] ? __pfx_vfs_setxattr+0x10/0x10 > [ 406.772704][ T8177] ? __might_fault+0xee/0x1a0 > [ 406.773326][ T8177] do_setxattr+0x153/0x180 > [ 406.773881][ T8177] setxattr+0x166/0x180 > [ 406.774421][ T8177] ? __pfx_setxattr+0x10/0x10 > [ 406.775043][ T8177] ? mnt_get_write_access+0x21d/0x320 > [ 406.775743][ T8177] path_setxattr+0x188/0x1f0 > [ 406.776338][ T8177] ? __pfx_path_setxattr+0x10/0x10 > [ 406.776986][ T8177] ? handle_mm_fault+0x541/0xab0 > [ 406.777648][ T8177] __x64_sys_lsetxattr+0xc6/0x160 > [ 406.778281][ T8177] ? do_syscall_64+0x91/0x260 > [ 406.778927][ T8177] ? lockdep_hardirqs_on+0x7c/0x110 > [ 406.779598][ T8177] do_syscall_64+0xd2/0x260 > [ 406.780194][ T8177] entry_SYSCALL_64_after_hwframe+0x6d/0x75 > [ 406.780944][ T8177] RIP: 0033:0x437d49 > [ 406.781454][ T8177] Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 f1 17 00= 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08= 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 488 > [ 406.783841][ T8177] RSP: 002b:00007fff7cd51d28 EFLAGS: 00000246 ORIG_R= AX: 00000000000000bd > [ 406.784889][ T8177] RAX: ffffffffffffffda RBX: 0000000020002047 RCX: 0= 000000000437d49 > [ 406.785900][ T8177] RDX: 0000000020002040 RSI: 00000000200002c0 RDI: 0= 0000000200001c0 > [ 406.786886][ T8177] RBP: 00007fff7cd51d80 R08: 0000000000000003 R09: 0= 00000017cd51d40 > [ 406.787878][ T8177] R10: 0000000000001009 R11: 0000000000000246 R12: 0= 000000000000001 > [ 406.788872][ T8177] R13: 00007fff7cd51f88 R14: 0000000000000001 R15: 0= 000000000000001 > [ 406.789879][ T8177] > > > =3D* repro.c =3D* > #define _GNU_SOURCE > > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > #include > > #include > > #ifndef __NR_memfd_create > #define __NR_memfd_create 319 > #endif > > static unsigned long long procid; > > static __thread int clone_ongoing; > static __thread int skip_segv; > static __thread jmp_buf segv_env; > > static void segv_handler(int sig, siginfo_t* info, void* ctx) { > if (__atomic_load_n(&clone_ongoing, __ATOMIC_RELAXED) !=3D 0) { > exit(sig); > } > uintptr_t addr =3D (uintptr_t)info->si_addr; > const uintptr_t prog_start =3D 1 << 20; > const uintptr_t prog_end =3D 100 << 20; > int skip =3D __atomic_load_n(&skip_segv, __ATOMIC_RELAXED) !=3D 0= ; > int valid =3D addr < prog_start || addr > prog_end; > if (skip && valid) { > _longjmp(segv_env, 1); > } > exit(sig); > } > > static void install_segv_handler(void) { > struct sigaction sa; > memset(&sa, 0, sizeof(sa)); > sa.sa_handler =3D SIG_IGN; > syscall(SYS_rt_sigaction, 0x20, &sa, NULL, 8); > syscall(SYS_rt_sigaction, 0x21, &sa, NULL, 8); > memset(&sa, 0, sizeof(sa)); > sa.sa_sigaction =3D segv_handler; > sa.sa_flags =3D SA_NODEFER | SA_SIGINFO; > sigaction(SIGSEGV, &sa, NULL); > sigaction(SIGBUS, &sa, NULL); > } > > #define NONFAILING(...) \ > ({ \ > int ok =3D 1; \ > __atomic_fetch_add(&skip_segv, 1, __ATOMIC_SEQ_CST); \ > if (_setjmp(segv_env) =3D=3D 0) { \ > __VA_ARGS__; \ > } else \ > ok =3D 0; \ > __atomic_fetch_sub(&skip_segv, 1, __ATOMIC_SEQ_CST); \ > ok; \ > }) > > static void sleep_ms(uint64_t ms) { > usleep(ms * 1000); > } > > static uint64_t current_time_ms(void) { > struct timespec ts; > if (clock_gettime(CLOCK_MONOTONIC, &ts)) > exit(1); > return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 100000= 0; > } > > static bool write_file(const char* file, const char* what, ...) { > char buf[1024]; > va_list args; > va_start(args, what); > vsnprintf(buf, sizeof(buf), what, args); > va_end(args); > buf[sizeof(buf) - 1] =3D 0; > int len =3D strlen(buf); > int fd =3D open(file, O_WRONLY | O_CLOEXEC); > if (fd =3D=3D -1) > return false; > if (write(fd, buf, len) !=3D len) { > int err =3D errno; > close(fd); > errno =3D err; > return false; > } > close(fd); > return true; > } > > //% This code is derived from puff.{c,h}, found in the zlib developme= nt. The > //% original files come with the following copyright notice: > > //% Copyright (C) 2002-2013 Mark Adler, all rights reserved > //% version 2.3, 21 Jan 2013 > //% This software is provided 'as-is', without any express or implied > //% warranty. In no event will the author be held liable for any dam= ages > //% arising from the use of this software. > //% Permission is granted to anyone to use this software for any purp= ose, > //% including commercial applications, and to alter it and redistribu= te it > //% freely, subject to the following restrictions: > //% 1. The origin of this software must not be misrepresented; you mu= st not > //% claim that you wrote the original software. If you use this so= ftware > //% in a product, an acknowledgment in the product documentation w= ould be > //% appreciated but is not required. > //% 2. Altered source versions must be plainly marked as such, and mu= st not be > //% misrepresented as being the original software. > //% 3. This notice may not be removed or altered from any source dist= ribution. > //% Mark Adler madler@alumni.caltech.edu > > //% BEGIN CODE DERIVED FROM puff.{c,h} > > #define MAXBITS 15 > #define MAXLCODES 286 > #define MAXDCODES 30 > #define MAXCODES (MAXLCODES + MAXDCODES) > #define FIXLCODES 288 > > struct puff_state { > unsigned char* out; > unsigned long outlen; > unsigned long outcnt; > const unsigned char* in; > unsigned long inlen; > unsigned long incnt; > int bitbuf; > int bitcnt; > jmp_buf env; > }; > static int puff_bits(struct puff_state* s, int need) { > long val =3D s->bitbuf; > while (s->bitcnt < need) { > if (s->incnt =3D=3D s->inlen) > longjmp(s->env, 1); > val |=3D (long)(s->in[s->incnt++]) << s->bitcnt; > s->bitcnt +=3D 8; > } > s->bitbuf =3D (int)(val >> need); > s->bitcnt -=3D need; > return (int)(val & ((1L << need) - 1)); > } > static int puff_stored(struct puff_state* s) { > s->bitbuf =3D 0; > s->bitcnt =3D 0; > if (s->incnt + 4 > s->inlen) > return 2; > unsigned len =3D s->in[s->incnt++]; > len |=3D s->in[s->incnt++] << 8; > if (s->in[s->incnt++] !=3D (~len & 0xff) || > s->in[s->incnt++] !=3D ((~len >> 8) & 0xff)) > return -2; > if (s->incnt + len > s->inlen) > return 2; > if (s->outcnt + len > s->outlen) > return 1; > for (; len--; s->outcnt++, s->incnt++) { > if (s->in[s->incnt]) > s->out[s->outcnt] =3D s->in[s->incnt]; > } > return 0; > } > struct puff_huffman { > short* count; > short* symbol; > }; > static int puff_decode(struct puff_state* s, const struct puff_huffma= n* h) { > int first =3D 0; > int index =3D 0; > int bitbuf =3D s->bitbuf; > int left =3D s->bitcnt; > int code =3D first =3D index =3D 0; > int len =3D 1; > short* next =3D h->count + 1; > while (1) { > while (left--) { > code |=3D bitbuf & 1; > bitbuf >>=3D 1; > int count =3D *next++; > if (code - count < first) { > s->bitbuf =3D bitbuf; > s->bitcnt =3D (s->bitcnt - len) & 7; > return h->symbol[index + (code - first)]; > } > index +=3D count; > first +=3D count; > first <<=3D 1; > code <<=3D 1; > len++; > } > left =3D (MAXBITS + 1) - len; > if (left =3D=3D 0) > break; > if (s->incnt =3D=3D s->inlen) > longjmp(s->env, 1); > bitbuf =3D s->in[s->incnt++]; > if (left > 8) > left =3D 8; > } > return -10; > } > static int puff_construct(struct puff_huffman* h, const short* length= , int n) { > int len; > for (len =3D 0; len <=3D MAXBITS; len++) > h->count[len] =3D 0; > int symbol; > for (symbol =3D 0; symbol < n; symbol++) > (h->count[length[symbol]])++; > if (h->count[0] =3D=3D n) > return 0; > int left =3D 1; > for (len =3D 1; len <=3D MAXBITS; len++) { > left <<=3D 1; > left -=3D h->count[len]; > if (left < 0) > return left; > } > short offs[MAXBITS + 1]; > offs[1] =3D 0; > for (len =3D 1; len < MAXBITS; len++) > offs[len + 1] =3D offs[len] + h->count[len]; > for (symbol =3D 0; symbol < n; symbol++) > if (length[symbol] !=3D 0) > h->symbol[offs[length[symbol]]++] =3D symbol; > return left; > } > static int puff_codes(struct puff_state* s, > const struct puff_huffman= * lencode, > const struct puff_huffman= * distcode) { > static const short lens[29] =3D {3, 4, 5, 6, 7, 8, 9, = 10, 11, 13, > 15, = 17, 19, 23, 27, 31, 35, 43, 51, 59, > 67, = 83, 99, 115, 131, 163, 195, 227, 258}; > static const short lext[29] =3D {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,= 1, 2, 2, 2, > 2, 3= , 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0}; > static const short dists[30] =3D { > 1, 2, 3, 4, 5, 7, 9, 13, 17, 2= 5, > 33, 49, 65, 97, 129, 193, 257, 385, 513, 7= 69, > 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 2= 4577}; > static const short dext[30] =3D {0, 0, 0, 0, 1, 1, 2, 2, 3,= 3, > 4, 4= , 5, 5, 6, 6, 7, 7, 8, 8, > 9, 9= , 10, 10, 11, 11, 12, 12, 13, 13}; > int symbol; > do { > symbol =3D puff_decode(s, lencode); > if (symbol < 0) > return symbol; > if (symbol < 256) { > if (s->outcnt =3D=3D s->outlen) > return 1; > if (symbol) > s->out[s->outcnt] =3D symbol; > s->outcnt++; > } else if (symbol > 256) { > symbol -=3D 257; > if (symbol >=3D 29) > return -10; > int len =3D lens[symbol] + puff_bits(s, lext[symbol]); > symbol =3D puff_decode(s, distcode); > if (symbol < 0) > return symbol; > unsigned dist =3D dists[symbol] + puff_bits(s, dext[symbo= l]); > if (dist > s->outcnt) > return -11; > if (s->outcnt + len > s->outlen) > return 1; > while (len--) { > if (dist <=3D s->outcnt && s->out[s->outcnt - dist]) > s->out[s->outcnt] =3D s->out[s->outcnt - dist]; > s->outcnt++; > } > } > } while (symbol !=3D 256); > return 0; > } > static int puff_fixed(struct puff_state* s) { > static int virgin =3D 1; > static short lencnt[MAXBITS + 1], lensym[FIXLCODES]; > static short distcnt[MAXBITS + 1], distsym[MAXDCODES]; > static struct puff_huffman lencode, distcode; > if (virgin) { > lencode.count =3D lencnt; > lencode.symbol =3D lensym; > distcode.count =3D distcnt; > distcode.symbol =3D distsym; > short lengths[FIXLCODES]; > int symbol; > for (symbol =3D 0; symbol < 144; symbol++) > lengths[symbol] =3D 8; > for (; symbol < 256; symbol++) > lengths[symbol] =3D 9; > for (; symbol < 280; symbol++) > lengths[symbol] =3D 7; > for (; symbol < FIXLCODES; symbol++) > lengths[symbol] =3D 8; > puff_construct(&lencode, lengths, FIXLCODES); > for (symbol =3D 0; symbol < MAXDCODES; symbol++) > lengths[symbol] =3D 5; > puff_construct(&distcode, lengths, MAXDCODES); > virgin =3D 0; > } > return puff_codes(s, &lencode, &distcode); > } > static int puff_dynamic(struct puff_state* s) { > static const short order[19] =3D {16, 17, 18, 0, 8, 7, 9, 6, 10= , 5, > 1= 1, 4, 12, 3, 13, 2, 14, 1, 15}; > int nlen =3D puff_bits(s, 5) + 257; > int ndist =3D puff_bits(s, 5) + 1; > int ncode =3D puff_bits(s, 4) + 4; > if (nlen > MAXLCODES || ndist > MAXDCODES) > return -3; > short lengths[MAXCODES]; > int index; > for (index =3D 0; index < ncode; index++) > lengths[order[index]] =3D puff_bits(s, 3); > for (; index < 19; index++) > lengths[order[index]] =3D 0; > short lencnt[MAXBITS + 1], lensym[MAXLCODES]; > struct puff_huffman lencode =3D {lencnt, lensym}; > int err =3D puff_construct(&lencode, lengths, 19); > if (err !=3D 0) > return -4; > index =3D 0; > while (index < nlen + ndist) { > int symbol; > int len; > symbol =3D puff_decode(s, &lencode); > if (symbol < 0) > return symbol; > if (symbol < 16) > lengths[index++] =3D symbol; > else { > len =3D 0; > if (symbol =3D=3D 16) { > if (index =3D=3D 0) > return -5; > len =3D lengths[index - 1]; > symbol =3D 3 + puff_bits(s, 2); > } else if (symbol =3D=3D 17) > symbol =3D 3 + puff_bits(s, 3); > else > symbol =3D 11 + puff_bits(s, 7); > if (index + symbol > nlen + ndist) > return -6; > while (symbol--) > lengths[index++] =3D len; > } > } > if (lengths[256] =3D=3D 0) > return -9; > err =3D puff_construct(&lencode, lengths, nlen); > if (err && (err < 0 || nlen !=3D lencode.count[0] + lencode.count= [1])) > return -7; > short distcnt[MAXBITS + 1], distsym[MAXDCODES]; > struct puff_huffman distcode =3D {distcnt, distsym}; > err =3D puff_construct(&distcode, lengths + nlen, ndist); > if (err && (err < 0 || ndist !=3D distcode.count[0] + distcode.co= unt[1])) > return -8; > return puff_codes(s, &lencode, &distcode); > } > static int puff(unsigned char* dest, > unsigned long* destlen, > const unsigned char* source, > unsigned long sourcelen) { > struct puff_state s =3D { > .out =3D dest, > .outlen =3D *destlen, > .outcnt =3D 0, > .in =3D source, > .inlen =3D sourcelen, > .incnt =3D 0, > .bitbuf =3D 0, > .bitcnt =3D 0, > }; > int err; > if (setjmp(s.env) !=3D 0) > err =3D 2; > else { > int last; > do { > last =3D puff_bits(&s, 1); > int type =3D puff_bits(&s, 2); > err =3D type =3D=3D 0 ? puff_stored(&s) > : (type =3D=3D 1 ? puff_f= ixed(&s) > = : (type =3D=3D 2 ? puff_dynamic(&s) : -1)); > if (err !=3D 0) > break; > } while (!last); > } > *destlen =3D s.outcnt; > return err; > } > > //% END CODE DERIVED FROM puff.{c,h} > > #define ZLIB_HEADER_WIDTH 2 > > static int puff_zlib_to_file(const unsigned char* source, > unsigned lon= g sourcelen, > int dest_fd)= { > if (sourcelen < ZLIB_HEADER_WIDTH) > return 0; > source +=3D ZLIB_HEADER_WIDTH; > sourcelen -=3D ZLIB_HEADER_WIDTH; > const unsigned long max_destlen =3D 132 << 20; > void* ret =3D mmap(0, max_destlen, PROT_WRITE | PROT_READ, > MAP_PRIVATE | MAP_ANON, -1, 0); > if (ret =3D=3D MAP_FAILED) > return -1; > unsigned char* dest =3D (unsigned char*)ret; > unsigned long destlen =3D max_destlen; > int err =3D puff(dest, &destlen, source, sourcelen); > if (err) { > munmap(dest, max_destlen); > errno =3D -err; > return -1; > } > if (write(dest_fd, dest, destlen) !=3D (ssize_t)destlen) { > munmap(dest, max_destlen); > return -1; > } > return munmap(dest, max_destlen); > } > > static int setup_loop_device(unsigned char* data, > unsigned lon= g size, > const char* = loopname, > int* loopfd_= p) { > int err =3D 0, loopfd =3D -1; > int memfd =3D syscall(__NR_memfd_create, "syzkaller", 0); > if (memfd =3D=3D -1) { > err =3D errno; > goto error; > } > if (puff_zlib_to_file(data, size, memfd)) { > err =3D errno; > goto error_close_memfd; > } > loopfd =3D open(loopname, O_RDWR); > if (loopfd =3D=3D -1) { > err =3D errno; > goto error_close_memfd; > } > if (ioctl(loopfd, LOOP_SET_FD, memfd)) { > if (errno !=3D EBUSY) { > err =3D errno; > goto error_close_loop; > } > ioctl(loopfd, LOOP_CLR_FD, 0); > usleep(1000); > if (ioctl(loopfd, LOOP_SET_FD, memfd)) { > err =3D errno; > goto error_close_loop; > } > } > close(memfd); > *loopfd_p =3D loopfd; > return 0; > > error_close_loop: > close(loopfd); > error_close_memfd: > close(memfd); > error: > errno =3D err; > return -1; > } > > static long syz_mount_image(volatile long fsarg, > volatile long= dir, > volatile long= flags, > volatile long= optsarg, > volatile long= change_dir, > volatile unsi= gned long size, > volatile long= image) { > unsigned char* data =3D (unsigned char*)image; > int res =3D -1, err =3D 0, loopfd =3D -1, need_loop_device =3D !!= size; > char* mount_opts =3D (char*)optsarg; > char* target =3D (char*)dir; > char* fs =3D (char*)fsarg; > char* source =3D NULL; > char loopname[64]; > if (need_loop_device) { > memset(loopname, 0, sizeof(loopname)); > snprintf(loopname, sizeof(loopname), "/dev/loop%llu", procid)= ; > if (setup_loop_device(data, size, loopname, &loopfd) =3D=3D -= 1) > return -1; > source =3D loopname; > } > mkdir(target, 0777); > char opts[256]; > memset(opts, 0, sizeof(opts)); > if (strlen(mount_opts) > (sizeof(opts) - 32)) { > } > strncpy(opts, mount_opts, sizeof(opts) - 32); > if (strcmp(fs, "iso9660") =3D=3D 0) { > flags |=3D MS_RDONLY; > } else if (strncmp(fs, "ext", 3) =3D=3D 0) { > bool has_remount_ro =3D false; > char* remount_ro_start =3D strstr(opts, "errors=3Dremount-ro"= ); > if (remount_ro_start !=3D NULL) { > char after =3D *(remount_ro_start + strlen("errors=3Dremo= unt-ro")); > char before =3D remount_ro_start =3D=3D opts ? '\0' : *(r= emount_ro_start - 1); > has_remount_ro =3D ((before =3D=3D '\0' || before =3D=3D = ',') && > (after =3D=3D '\0' ||= after =3D=3D ',')); > } > if (strstr(opts, "errors=3Dpanic") || !has_remount_ro) > strcat(opts, ",errors=3Dcontinue"); > } else if (strcmp(fs, "xfs") =3D=3D 0) { > strcat(opts, ",nouuid"); > } > res =3D mount(source, target, fs, flags, opts); > if (res =3D=3D -1) { > err =3D errno; > goto error_clear_loop; > } > res =3D open(target, O_RDONLY | O_DIRECTORY); > if (res =3D=3D -1) { > err =3D errno; > goto error_clear_loop; > } > if (change_dir) { > res =3D chdir(target); > if (res =3D=3D -1) { > err =3D errno; > } > } > > error_clear_loop: > if (need_loop_device) { > ioctl(loopfd, LOOP_CLR_FD, 0); > close(loopfd); > } > errno =3D err; > return res; > } > > static void kill_and_wait(int pid, int* status) { > kill(-pid, SIGKILL); > kill(pid, SIGKILL); > for (int i =3D 0; i < 100; i++) { > if (waitpid(-1, status, WNOHANG | __WALL) =3D=3D pid) > return; > usleep(1000); > } > DIR* dir =3D opendir("/sys/fs/fuse/connections"); > if (dir) { > for (;;) { > struct dirent* ent =3D readdir(dir); > if (!ent) > break; > if (strcmp(ent->d_name, ".") =3D=3D 0 || strcmp(ent->d_na= me, "..") =3D=3D 0) > continue; > char abort[300]; > snprintf(abort, sizeof(abort), "/sys/fs/fuse/connections/= %s/abort", > ent->d_name); > int fd =3D open(abort, O_WRONLY); > if (fd =3D=3D -1) { > continue; > } > if (write(fd, abort, 1) < 0) { > } > close(fd); > } > closedir(dir); > } else { > } > while (waitpid(-1, status, __WALL) !=3D pid) { > } > } > > static void reset_loop() { > char buf[64]; > snprintf(buf, sizeof(buf), "/dev/loop%llu", procid); > int loopfd =3D open(buf, O_RDWR); > if (loopfd !=3D -1) { > ioctl(loopfd, LOOP_CLR_FD, 0); > close(loopfd); > } > } > > static void setup_test() { > prctl(PR_SET_PDEATHSIG, SIGKILL, 0, 0, 0); > setpgrp(); > write_file("/proc/self/oom_score_adj", "1000"); > } > > static void execute_one(void); > > #define WAIT_FLAGS __WALL > > static void loop(void) { > int iter =3D 0; > for (;; iter++) { > reset_loop(); > int pid =3D fork(); > if (pid < 0) > exit(1); > if (pid =3D=3D 0) { > setup_test(); > execute_one(); > exit(0); > } > int status =3D 0; > uint64_t start =3D current_time_ms(); > for (;;) { > if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) =3D=3D pid= ) > break; > sleep_ms(1); > if (current_time_ms() - start < 5000) > continue; > kill_and_wait(pid, &status); > break; > } > } > } > > void execute_one(void) { > NONFAILING(memcpy((void*)0x20000040, "vfat\000", 5)); > NONFAILING(memcpy((void*)0x20000200, "./file0\000", 8)); > NONFAILING(syz_mount_image(/*fs=3D*/0x20000040, /*dir=3D*/0x20000= 200, > /*flags=3D*/= 0x220e002, /*opts=3D*/0, /*chdir=3D*/1, > /*size=3D*/0= , /*img=3D*/0x20000100)); > NONFAILING(memcpy((void*)0x20000040, "mtd", 3)); > NONFAILING(sprintf((char*)0x20000043, "0x%016llx", (long long)0))= ; > NONFAILING(memcpy((void*)0x200000c0, "./file0\000", 8)); > NONFAILING(memcpy((void*)0x20001200, "jffs2\000", 6)); > syscall(__NR_mount, /*src=3D*/0x20000040ul, /*dst=3D*/0x200000c0u= l, > /*type=3D*/0x20001200ul, /*flags=3D*/0ul, /*data= =3D*/0ul); > NONFAILING(memcpy((void*)0x200001c0, "./file0\000", 8)); > NONFAILING(memcpy((void*)0x200002c0, "security.evm\000", 13)); > NONFAILING(*(uint8_t*)0x20002040 =3D 3); > NONFAILING(*(uint8_t*)0x20002041 =3D 2); > NONFAILING(*(uint8_t*)0x20002042 =3D 0xb); > NONFAILING(*(uint32_t*)0x20002043 =3D htobe32(4)); > NONFAILING(*(uint16_t*)0x20002047 =3D htobe16(0x1000)); > NONFAILING(memcpy( > (void*)0x20002049, > "\x78\x8d\x9c\xb2\x99\xab\xd7\x2e\xce\x91\x3d\x53\x36\x5e= \x16\x68\x8e\x51" > "\xac\xe1\x59\x84\xab\x53\xd1\x66\x6a\xe3\xf5\xdf\xbc\x86= \x0b\xef\x87\x38" > "\x9e\x21\x28\x6b\xe2\x36\xdd\xc3\xd0\xfa\x2e\x51\xd5\xc5= \xc7\xb3\x5c\x5d" > "\x50\x3c\x5b\x2c\x3b\x6b\xe0\xfc\x56\xe9\x7d\xf8\x8f\xaa= \x06\x35\x36\x3b" > "\xa9\x2b\x82\xc4\x7a\x81\x7a\xc9\x7f\x1d\x63\x8a\x14\x61= \x82\x12\x55\xec" > "\x23\xbd\x0c\xe5\xbf\x10\x94\xe3\xa8\x98\x0d\x7e\x6d\x19= \x76\xba\x77\x87" > "\x45\x92\x0e\x17\x18\xfd\xda\xc4\xbd\x66\xb0\xa6\x06\x80= \x1a\xae\xfd\xed" > "\x29\x3c\x3f\xce\xba\xd3\xb2\xc0\x64\x03\xdb\xa9\x99\x49= \x71\x65\x9b\x7f" > "\x4a\x07\x7a\xdd\xae\xb8\xae\x3e\x5a\xca\x70\x27\xfd\xe1= \xe4\x00\x01\xc0" > "\xbd\xd8\x00\xbc\xc2\x87\xe0\x2c\x86\x7e\x27\x82\xde\xaf= \x67\x6a\x26\x16" > "\x47\xdb\x8c\x2f\x39\x45\x02\x20\x57\xde\x76\x81\x00\xa8= \xbf\x73\xd9\xf9" > "\xff\x29\x22\x9b\x46\xde\xad\x58\xb2\xdd\xf9\x64\x33\x46= \x8e\x9e\xee\x89" > "\x50\xdf\x65\x87\x11\xe4\x11\x36\x4e\x44\x14\x5e\x68\x2f= \x3c\x05\x3c\x6f" > "\x5a\x18\x61\xee\xe6\xed\xf8\x85\xa9\x7c\x54\x58\x05\xac= \x0c\x35\xa5\xe4" > "\x62\x3b\x20\x01\x86\x1c\x59\x33\x54\xb5\x70\xff\x3b\x4a= \x45\xf1\xac\xde" > "\x0a\x8d\xbd\x17\xc0\x9c\xe4\x48\xed\x5d\xfd\x9e\x74\x72= \xe6\x89\x67\xde" > "\xcb\x76\x9f\xa6\x00\xcd\x30\xbe\xb6\xc8\x03\x0e\x94\x74= \xc7\xec\x4c\x1d" > "\xaf\x3e\x00\x7b\xbc\x57\x65\xb3\x66\xd4\xa1\x76\xe3\x8b= \xdf\xab\xed\xd2" > "\xb0\x76\xa5\xed\x7d\x50\xf5\x17\x7b\x94\xa6\xa0\xf0\x00= \xcd\x3a\xca\xdd" > "\xe8\xe8\x0f\x66\xea\xda\x14\x01\x86\x20\xb1\x59\xe9\xe1= \x4c\x25\x2d\x20" > "\xc8\xdb\xb0\xfe\x36\x05\xb5\x69\x8b\x53\xe4\x21\x0b\x62= \xfc\xbd\x00\x01" > "\x7e\xaa\x01\xeb\x1f\xa5\x21\xbd\xb8\xd3\x0e\x83\x95\x1b= \x4e\xa0\x28\x6c" > "\x8f\x0d\x46\x45\x17\xa1\x1d\x79\x22\xd6\xcc\xe4\xd2\x05= \x8e\xc8\xcd\x7b" > "\x02\xb7\x3d\x82\x5d\x7e\x0a\xbb\xbd\x85\xe9\x91\x22\x0f= \xc7\x99\x55\x34" > "\xb7\xb1\x99\x8c\xa7\x52\x89\x0b\x07\x9a\x7c\xa3\xfd\xe5= \x64\x38\xcf\x82" > "\xd5\xdd\x9e\xdb\xd1\x1f\xd2\x93\xc1\x7d\x1c\xf1\x66\x57= \xd0\xb3\x52\xa8" > "\xc6\xc3\x63\x00\xad\x09\xa7\x8e\x3e\xe3\x91\x3b\x9b\x6f= \x53\xde\xbf\xfc" > "\x7e\x32\xbf\xb6\x4b\x0e\x8c\xbe\x07\xfe\x9b\x0d\xad\xb0= \x97\xae\xb2\xc2" > "\x42\x43\x0b\xec\x75\x63\x0a\x39\x21\x82\x8a\x73\x14\xde= \x14\x04\x82\x9e" > "\x7a\xfb\x3b\x84\x20\xe8\x5f\x2c\x8f\x6e\x88\xde\x04\x23= \x14\x41\x6e\x5c" > "\x00\xc5\x9b\x22\x20\x80\x04\xbe\xc1\x61\xf8\x45\x7c\x7f= \x8e\x3a\x8c\xa4" > "\x17\x4a\x4b\x78\xdf\x6e\x46\x0d\x56\xd2\x4e\x01\xae\x1a= \x24\x11\x27\x0f" > "\x79\xd0\x20\xa6\xba\xc8\x55\xf1\xa3\xef\x7b\x3d\x09\x91= \x88\x26\x56\xb4" > "\x08\xdc\xda\xf0\x2d\xb4\x6a\xc8\xfc\xab\x0c\x87\x5d\x1f= \x2e\x8d\xb3\x66" > "\xe6\xa2\x0c\xb6\x7a\x4d\xb9\x20\x38\x2a\x69\x15\x71\x5d= \x3b\x42\x66\xf7" > "\x79\xfe\x86\x33\xbe\xa6\xde\xf2\x8c\xc1\x59\x13\x8b\x83= \x43\x34\xce\xde" > "\xf3\xde\xc5\x4e\xa5\x30\x3d\xf5\x6b\xe8\x71\x15\x31\x5e= \xc0\xf1\x47\x8a" > "\x0c\x08\x69\xe5\xf7\xc3\x3d\xa6\x4b\x23\xaf\x58\x11\x75= \x10\x55\xc9\x08" > "\x49\x48\x44\x81\xd5\xa1\x0d\x72\xe0\x8c\xcd\x12\x71\x0c= \x4f\x2f\xf5\x86" > "\xa9\xea\x17\x5f\x4a\xa7\x0b\x15\x6c\x00\xc5\x7e\x22\xc1= \x36\x0b\xfc\x7d" > "\x36\xaa\x47\x92\x44\x4f\x81\xd8\xa0\xed\x41\xbf\x6a\x45= \x2e\xa5\x26\x8b" > "\x86\x05\x68\x2a\xc6\x3e\xaa\x46\x52\x18\xf4\xd9\x62\xdb= \x42\x15\x4d\x01" > "\x96\x6d\x3a\xd8\xfc\x2f\xde\x48\xef\x71\xbe\x08\xbe\x58= \xe5\xad\x6d\x5a" > "\x35\x93\xef\xc9\xc1\x33\x6e\x54\x13\x72\xa3\x47\x99\xd2= \x4e\xa0\x0d\x4d" > "\x49\x85\xbe\xd1\xda\xb1\x06\x20\x91\x1e\x9f\x69\x67\x88= \x08\x26\xbe\x5a" > "\x1f\x1b\xb4\xb2\xa3\x94\x86\x54\xc6\x93\x5c\xaf\xeb\x49= \x25\xe1\x07\xa0" > "\x1f\x9d\xda\x66\x8e\x5f\xd7\x48\x9e\x82\x13\x92\x41\xa9= \x19\x0f\x09\x0a" > "\xfe\x20\x94\x23\x4c\x75\xfe\xc0\x74\x62\x27\x48\xd4\xdd= \x78\x2a\x93\x0f" > "\x42\xb0\xe7\x5d\x92\x4b\xef\x68\xff\xaf\xba\xa9\x89\x16= \x15\x1a\x36\xef" > "\x29\x98\xaf\xd3\x00\x09\x55\xef\xbf\xa0\xa9\xa0\x08\x35= \x8c\x11\x04\x3c" > "\x0f\x96\xb5\x2f\xc7\x8a\x42\x53\x1a\xa5\xdf\xd8\xde\x09= \x51\x8c\xff\x00" > "\x8b\x33\x92\x59\xb2\x66\xc4\x88\xbb\x1d\xa0\x58\xba\x21= \x8c\xd6\x4b\x3e" > "\x41\x3c\xa2\x88\x9d\x10\x86\xe8\xc4\x0a\xe1\x15\x01\x98= \x41\x21\xdc\xfa" > "\x2f\xde\x09\xd0\x68\xf6\xdb\xbe\x83\x59\x98\x0d\xad\x96= \xed\x22\x0b\x85" > "\x34\xaa\xef\x35\x3d\xfc\x81\x56\x09\x07\xd2\x6c\x02\x44= \x29\x24\xad\x55" > "\xb1\x1d\x3a\xee\x7e\x55\x16\xd9\x6a\xd0\x78\xc8\x5a\xd1= \xcd\xb1\x8a\x45" > "\x47\x43\x05\xa8\xdb\x35\x0f\x98\x44\x38\x0e\x20\x94\xf6= \x91\xa0\x5e\xa0" > "\x94\x58\xbc\x53\xf3\x23\x6a\x1f\x3f\xa5\xe1\x44\xa5\x75= \xba\x57\xe5\x8d" > "\x00\xf7\x65\x3d\x2e\x6b\x6c\xbe\x18\xd2\x8c\xe3\xf5\x79= \x25\x38\xad\x20" > "\xc0\xe0\xe1\x0b\x03\xda\xc3\x40\x09\xd6\xd3\xe4\xc7\x66= \x2c\xca\x88\xb5" > "\x30\x66\xe9\x5e\xfe\x45\xee\x3e\x04\xda\x32\x86\x90\xda= \xe1\xaa\x00\x70" > "\xf0\x94\x5e\x26\x9b\x75\x73\x3b\x10\x6f\xf6\x51\x45\x55= \xd5\x4d\x95\x8f" > "\x73\x13\x44\x1f\xa2\x1f\x97\x61\x53\x12\xc4\xf6\x00\xa1= \x43\x0f\x62\x98" > "\x12\xf2\x3c\xd2\x1e\x70\x3b\x96\x6e\x04\xaa\x6d\x0b\xba= \x6f\x25\x39\x36" > "\x9a\x3b\xad\xeb\xfa\xa8\x19\x7d\x89\xe3\x29\x4b\x44\xc0= \xea\x54\xae\x6b" > "\x7f\x4a\x49\x65\x68\x04\x31\x75\xa5\x66\x65\x41\xb5\x59= \xa9\xfe\xaf\x0c" > "\x54\x54\xf1\x2f\x23\x0e\x97\xbc\xf8\x4d\xae\x11\xd1\xa8= \x35\x94\x11\xb9" > "\x8b\xb6\x06\x3e\xe8\xae\x0f\xfa\x30\xb5\x75\x77\x71\xc7= \xb7\x0e\x4f\xbb" > "\x6e\x95\x1a\x68\x08\x73\xe6\xda\x53\x16\x00\xe9\x51\x11= \x0c\x34\xca\xac" > "\xc8\xe9\x78\xc0\x6b\x48\x48\xc8\x80\xc4\x8a\xd8\xe6\xc5= \x4b\xc7\x92\xce" > "\x54\xea\x4b\x1c\x05\xab\x04\xaf\xb4\xd6\xca\xb2\x5b\x85= \xd1\xc4\xb6\xc4" > "\x74\xc7\xec\x92\x67\xb5\x01\xed\xaa\x20\xee\x0e\x41\x58= \x68\xd8\x78\x66" > "\x42\x6b\x13\x74\xe5\x8a\x66\x65\x30\xb9\x4e\x34\x2c\x8b= \x2e\xbd\xd4\x05" > "\xfe\xf0\xa2\x6d\xf8\x2b\xbc\x50\x2d\xa2\xca\x15\x50\xc2= \x8d\x3c\x0b\x69" > "\x87\x2f\xf8\x61\xcd\x23\xcb\x6e\x1f\xf1\xe6\x2f\x62\x5a= \xe9\x2f\x90\xf3" > "\x09\x33\xfc\x82\x7e\xdd\x38\x61\x21\x31\x53\x52\xdb\xc9= \xf4\xca\xb3\xdd" > "\xda\xde\xb8\xdf\x05\x1d\x2f\x59\xcd\x59\xe9\x7d\xc9\x2c= \xe4\x34\x1f\x97" > "\x80\x03\xe4\x86\x85\xe7\x67\x3c\xf1\xe6\x02\x60\x60\x0e= \x7c\xbf\x73\x1d" > "\xc1\x68\xb9\xa4\x11\xdc\x3c\x85\xf8\x43\xbd\x2c\x5f\xca= \x89\xc0\x6d\x12" > "\xba\xc0\x8a\x61\xcf\x09\x9a\xe5\xf2\x3e\x5e\x90\x84\x48= \xe8\x1f\x27\x79" > "\xb3\x85\xb3\x1d\xcd\x5c\xf8\xaa\xad\x4b\x85\xae\x70\x63= \x62\x4a\x7d\xf5" > "\x73\xae\xcc\xc8\xb6\x19\x77\xf8\xec\x10\xe6\x8b\x5d\xf1= \xc1\xb8\x05\xc7" > "\xe0\x01\x22\x8a\x65\xc0\xe7\x72\xc5\x25\x14\x66\xa4\x9f= \x10\x21\x9b\xb7" > "\x18\xa4\xaa\x2e\x35\xc4\x08\x11\xa9\x72\xeb\x58\x53\x0f= \x7f\x07\x41\xd3" > "\xbe\x0c\x00\xe3\x8f\x58\x99\x4a\x51\x99\x54\x7f\xc5\x15= \x0c\x78\x1f\xfe" > "\x2e\x56\x56\x0f\x08\xeb\x75\xbf\xcd\x90\x85\xff\x14\x0c= \xee\xfd\x0d\x6e" > "\xd4\x3d\xad\x39\xd2\xcd\xa8\x69\x4d\x42\x0e\x86\x1a\x1d= \xec\x4a\x28\xd1" > "\xcf\x53\x24\xc5\xc5\xab\x81\x92\x21\x54\x87\x3b\x3f\x82= \xdf\x1b\xc0\x6c" > "\xb9\x56\x5c\x08\xf7\x74\xd9\xfa\x6f\xe5\x75\xda\xf8\x7b= \x32\x8a\xb1\x0b" > "\x91\x22\x43\xf1\x00\x71\x2a\x27\xf4\x98\x1f\xaa\x37\x2d= \x73\x67\x02\xc5" > "\x65\xa0\x8c\x4d\x6b\x0a\xa3\x12\xd3\xc9\x01\x7f\xd1\xe7= \xab\x98\x1d\xe7" > "\xee\x1d\xfc\x1a\x84\x99\x24\xaa\x92\xea\xb1\xb3\xe6\xe9= \x74\x2f\x69\x13" > "\xa0\x8b\x56\x99\xd6\x70\x69\x7a\x60\x8d\x74\x9e\x06\xc3= \x41\x42\x1a\x80" > "\x9a\x36\x5d\xca\x3f\x8d\x88\xd8\x42\x68\x50\x80\xf8\xed= \x93\x48\x28\x88" > "\x06\x5b\x50\xbf\x9a\xbd\xe7\x5f\xe3\x7c\x8f\xf2\xae\x4f= \x24\xe2\x6f\x83" > "\x94\x9a\xb5\xc4\xf4\xa9\x6e\x13\xb2\xcd\xf7\x42\xda\xf9= \xc1\xb5\x83\x05" > "\x69\x14\x56\xc6\xc1\x90\xbf\xb7\xbb\xbb\x08\x4e\xa9\xf9= \x7e\x99\xc3\xe0" > "\x28\x41\x5d\x4e\x05\xcc\xf7\x71\x7b\x57\x97\xff\x5b\xaf= \xa2\x51\x8a\x0a" > "\xca\xb4\x34\xa1\x88\xd4\x79\x7a\x85\xf3\x65\x57\xdd\x6a= \xa3\x9c\x75\xe8" > "\x0b\x72\x49\x63\x72\x65\x25\x44\xb1\x42\x49\x01\xa6\xa9= \xd4\xb7\x45\x30" > "\x86\xb6\xba\x26\xa4\x05\x21\xda\x94\xab\x54\xde\x4a\x11= \xb5\x1b\x4a\xd7" > "\xab\x1d\x68\x05\xf3\x23\xb0\x44\x95\x5f\x77\x9c\xfe\x7c= \x1c\x35\x86\xf4" > "\xbe\x0e\xab\x22\x6a\x25\xae\x16\xbd\x8d\xc7\xeb\x01\x50= \x24\xb7\x43\x4b" > "\x64\x08\x34\x3a\x1b\xe6\xe1\xdd\x39\x25\xc1\x02\xb4\xc9= \xc5\x43\x98\x38" > "\x35\xb6\xbb\x45\xf8\x0e\xa3\x5b\xf7\xfc\xec\xab\x5d\x94= \x72\x24\xbf\xdb" > "\x1c\x03\xb2\x0f\xc0\x7a\x5c\xac\x63\x0b\xeb\x4b\x30\x44= \xeb\xe5\x5c\x90" > "\x23\x84\x4c\x1f\xd6\x4b\x4e\xb0\x25\x53\x68\x67\xf0\xaf= \xa3\x88\x57\x6c" > "\x5b\x25\x64\xcd\x2e\x20\xae\x26\x33\xf7\xb7\x6c\xf6\xfb= \xce\xff\x24\x0f" > "\x65\xe5\xee\xba\x28\x43\xfa\xa1\xe7\x71\x08\xd3\x5c\x59= \xb3\xf5\x70\x11" > "\x26\x60\xe9\x27\x8d\xa3\x12\x76\x86\xdc\x2a\x96\x5a\x6a= \xd1\x67\x2e\x29" > "\xff\x9e\xdd\x62\xf4\x9e\x41\xbd\xd6\x53\x48\xd2\x65\x78= \x46\xbe\x80\x47" > "\x9c\xea\x41\x5b\xfb\x59\x27\x22\x9f\x3b\x77\x2e\xd9\xc9= \xb7\x63\x9d\x8f" > "\x75\xff\x66\x21\x84\x1a\x7b\x64\x97\x81\x31\xe8\x69\x52= \xbf\xe5\x10\x71" > "\x5b\x25\xef\xbc\xf3\x93\x32\x0c\x1d\x62\x99\xac\x6c\x19= \xdd\x90\x88\x70" > "\xf9\x6d\x92\xb8\xbd\xcf\x11\xe3\xc9\x87\x8f\x2e\x37\xbd= \xaf\x72\x71\x8a" > "\xd0\xbc\x28\x72\xc7\xa0\xb1\x01\xf6\xe3\x92\x99\x72\x34= \xe0\x6c\x9b\x1b" > "\xdc\x32\x49\x71\x42\x7d\x6b\x97\xc3\xc1\x65\x31\x17\x8f= \x40\xa8\xab\x52" > "\xf9\x8e\x06\x67\x80\x97\x7a\xbd\x35\x2e\x1e\xfe\x61\x85= \xf7\x02\x33\xb3" > "\x0f\xdc\x96\xb6\xa2\x89\xb9\xe0\xfc\xee\x55\x59\x23\xef= \x59\x0b\xd9\xcd" > "\x2f\x0e\xf7\x02\x46\x41\x45\x0d\x1a\x92\x58\x04\x6a\xc0= \xe8\x0a\xcd\x44" > "\xf2\x67\x44\x69\x46\xc0\x96\xdb\x98\x48\xf7\x8c\xdd\xba= \x9f\x54\x09\xb0" > "\x90\xdd\x23\x44\xd8\xd4\x5a\x16\xcd\x2e\xcc\xe5\xbf\x22= \xbd\x4c\xb8\x9a" > "\xfd\x30\x67\xcb\x0b\xd9\xa7\x27\x9b\xe1\xb1\xe5\x03\x49= \x8f\x39\xed\xce" > "\x71\x4f\x37\x59\x7d\x0e\x64\x60\x71\x6d\x09\xea\x37\x6d= \x73\xe8\xa7\x1f" > "\xff\x13\x24\xfa\x2a\xeb\xa7\x5e\x8b\xbd\x0e\xa4\xc4\x18= \xb4\x57\x84\x55" > "\x01\x53\xd4\x92\x89\x8e\x15\xda\x88\xb6\xed\x3f\x67\xe8= \x5d\xbb\x11\x1c" > "\x2f\xea\xc2\xfd\x78\xb6\xf9\x01\x1c\x68\x64\xb9\xbb\x11= \x65\x36\x94\xf7" > "\xf0\x25\x68\xb7\x68\xb6\xa2\x7d\x08\x0e\xad\xc0\x09\x37= \x44\xb9\x11\x5a" > "\xa2\xf8\xd0\x3f\xa2\x7f\xae\xa2\xe3\x56\xef\x8c\xe6\x2e= \x47\x22\xdd\xd1" > "\x39\xf7\x84\xac\x3b\x8a\xfb\x98\xc8\xd3\x98\x4c\x8c\xf9= \x43\x8e\x83\x71" > "\x03\x30\x42\x8b\x78\x30\xc1\x70\x9a\x30\x9b\xba\xc3\xbb= \xdb\xd0\x83\xe5" > "\x39\x93\x8c\x57\x89\xe1\x70\x9d\x2c\x0e\xe9\x4d\xcb\x2f= \xe6\x4c\x31\xc8" > "\x7d\x25\xcc\x7f\x82\x6b\xbf\x5e\x02\x1d\x5a\xaa\x17\x29= \x70\xaa\xe9\x6a" > "\x68\x58\xf8\xc1\x1f\xdf\xb7\x48\x32\x8d\x97\x41\x1e\xdc= \x10\xdd\x16\xfd" > "\x10\xfa\xa7\xc3\xb9\x4c\xe1\x91\x52\xfb\x29\x65\x69\x04= \x21\xd3\xc6\xdb" > "\x2e\x7e\x88\x88\xc7\xbb\x06\x44\x3d\xb3\x11\x1e\x3d\xb6= \x9a\x88\xdd\x09" > "\x7a\xb8\xc6\x4d\x6b\xea\x30\xda\x24\x7f\xcd\x11\x7a\x30= \xee\xf4\x5c\xd9" > "\x33\x9a\x78\x37\x56\x28\xcd\xbf\xa2\x6d\x6b\x34\x19\xe6= \x9b\xbe\x8e\x88" > "\x47\x91\x29\x68\x4b\x23\x04\xda\xa2\xd6\x84\x30\x48\x26= \xee\xe9\x7d\x34" > "\x63\x03\xcc\x63\x1e\x10\x46\x5a\x2f\x92\x43\xe8\x4d\x32= \x28\x10\x38\x8b" > "\xa2\xd3\x06\x26\xa6\x3d\xf9\x79\x3e\xb9\x63\xdf\x23\x48= \x65\xcb\xb6\x8c" > "\xdb\xc0\x43\x63\xe1\x7a\x6a\x6e\xb1\xc8\x01\x41\x77\xc9= \x9f\xaa\xcb\x8d" > "\x7a\x8e\x99\xd8\x97\x71\x8b\xc5\x10\x55\x72\x78\x20\xd3= \x21\xf2\x5f\xd1" > "\x5d\x24\xd0\x29\xd4\xfa\xd6\xfd\xe9\x7f\x09\x11\x80\xef= \x2b\xc3\x91\x3b" > "\xc1\x1f\x8f\x10\x4b\xcc\x7e\xa0\x02\x41\x57\x48\x1b\x35= \x37\xce\x54\x3f" > "\xe8\xab\x93\xa2\x6c\xb9\xba\x51\xfa\x78\xd3\x37\xbf\x10= \xba\x29\xdc\x5f" > "\xeb\xfe\x4a\xd0\x14\xbd\x40\xf3\x33\x30\x82\x3d\x7f\x45= \x73\xba\xeb\xd9" > "\xe0\x63\xd5\x9a\x87\x66\x2b\xef\x85\x9c\xee\x8a\x8e\x53= \x18\xaa\xe2\x2e" > "\x79\xfb\x4d\x31\xe0\x88\xf0\x56\x9c\x67\xbb\xa4\x18\x68= \xfe\x46\x4e\xd7" > "\x7e\xc7\xfe\x07\xdd\x3a\x5c\x2c\x81\xc1\xfd\xed\x16\x05= \x98\xb3\x75\x64" > "\x51\x31\x73\xf1\x3f\xee\xb9\xdf\x4b\x47\xed\xe8\x05\x0a= \xac\x43\x1e\x1b" > "\x20\x58\xc6\xaf\xe7\xe4\x4b\xcc\x6f\x28\xdc\x58\x33\xdd= \xed\x10\xe6\x91" > "\x7e\x15\xb9\x30\x88\xcd\x90\x79\x18\x26\xca\x7c\x3b\x9a= \x42\x11\xe9\xe2" > "\xff\xd4\x96\x62\x23\x81\x6d\xb6\xe4\xed\xe5\x70\x1b\x76= \x98\x8d\x8f\x34" > "\xaa\x14\x0f\xfb\x4b\xc3\xef\xfc\xcb\xe5\xaf\x39\x42\xd4= \xc5\x71\x77\x00" > "\xe5\x92\xa1\x70\x01\xd2\x0b\x66\x5f\xb7\xc6\xf6\x53\x61= \x10\x8a\x13\x70" > "\xa4\x5d\xb4\x77\xa1\xf4\x49\xe5\xc3\xf9\xa8\x9f\x96\x72= \x90\xaf\x23\x1d" > "\xb8\x2f\xed\xec\xfc\xa2\xc3\xce\xdf\xfe\xad\xb7\x75\x72= \x8b\x45\xce\x4b" > "\xde\x06\x30\xe9\xe1\xdf\xcd\x98\x13\x8a\x55\x6d\xd4\x0b= \x65\x55\x81\xb4" > "\x51\xa7\x16\x4a\xd5\x7c\x4f\xb2\xb5\xdc\x5b\x14\x5e\x87= \x33\xde\x33\xaf" > "\x84\x4e\x40\x04\x14\xf8\x5c\x28\xca\x1f\x88\x8e\x70\xc4= \x5d\x28\xc8\x23" > "\xe0\x7e\xdd\xf3\x0d\xf7\x91\x1d\xf5\x84\xad\x45\x8a\x25= \x35\x50\x84\x16" > "\x3a\x9a\x7c\xc3\xba\xc4\x27\x6e\x95\x72\x11\x62\x6e\x28= \x82\x12\x00\x53" > "\x34\xde\xc7\x42\xcf\xe5\x7e\x6c\x82\x34\xe5\x20\xd8\xbe= \xd4\x5a\xf4\x76" > "\x77\x0f\x47\x18\xf7\x99\xc1\xa1\xf6\x37\xfc\x04\xa7\x37= \x80\xa3\x5d\x21" > "\x94\xe6\x01\x7e\x40\x5d\x3e\x0b\x1e\x9f\x2c\x7c\x0f\x6a= \x0e\xd2\x8a\x2e" > "\xaf\xdd\x79\x22\x76\x20\x59\xfe\x0e\xbc\x77\x59\x92\x45= \xb1\x2c\x9f\x0c" > "\xef\x9e\xda\xb1\xa2\x51\x71\xa6\xa9\xa0\x56\x2e\x24\xdb= \x76\xe2\x5d\xfb" > "\x5e\xcb\x73\x52\xd0\xbf\xc7\x8d\x85\x8e\x8a\xaa\xc9\x13= \xef\xa4\xff\x60" > "\x48\x96\x79\xe8\xc7\x20\x19\x89\x7a\x8a\x85\xa9\xee\x29= \xf1\x09\x22\x31" > "\x5b\xa7\xdb\x0a\x12\x6f\x82\x7c\x03\xfa\x5b\xbb\x90\xf9= \x91\xcb\x98\x66" > "\xb3\xe0\x30\x47\xcb\x1f\xab\xbb\xdb\xe5\xa3\x52\x82\xf0= \x30\xc0\xdb\xdb" > "\xd2\x27\xf8\x5b\x05\x72\x1c\x45\xc8\xb2\xb8\x5d\x33\x10= \xbb\x41\xd6\xaa" > "\x56\x14\xa6\x0d\x98\x74\xd1\x2f\x11\xf5\xa9\x4b\x15\xf7= \x41\xdb\x31\x0c" > "\x92\x7b\x2e\x90\x60\x7a\x2a\xf8\xc4\xb5\x7d\x6b\x69\x37= \xd5\xa1\xeb\x14" > "\x58\x9d\x1e\x36\x16\x42\x45\x8c\xc2\xfb\xd2\x96\xac\x03= \x1d\x09\x9d\xf4" > "\x9a\x53\xe8\xf0\xd4\x50\x6b\x2d\xcb\xb2\x0f\x54\x56\x0b= \x69\x5a\x4e\x0a" > "\x4a\x5a\x13\x23\x19\x85\xd5\x3b\xb3\x53\x31\x26\xad\xd2= \x81\xfd\x38\xcd" > "\xdf\x7e\xf4\x37\x20\x1e\x8a\xea\x1a\xb6\x3a\xd6\x73\xcd= \xcc\x6c\x60\x41" > "\x14\xae\xc7\x71\x88\x1b\x4f\xb7\xaa\x7c\xcb\xd3\x97\xe7= \x03\xf1\x08\x95" > "\x61\x9e\x15\xc7\x16\x84\xbb\xbf\xa2\xb2\xc6\x0a\x79\x0d= \xe0\xe5\x05\x95" > "\x38\xb5\x1d\x34\x7a\x68\xad\x05\x74\x72\xa9\xf1\xea\xf0= \x54\xdf\x77\x91" > "\xb5\x8f\x63\x8c\x05\x95\x55\xbb\xb9\x70\xed\xf8\x77\xd5= \xf6\x23\xe2\x54" > "\x1d\xba\x27\xdf\x8d\x71\x3f\xe7\xc5\x5f\x40\xfb\xf3\xdb= \xdc\x3d\x04\x2e" > "\x92\xb8\x3f\x94\xdd\x66\xd1\xcd\x2b\xc5\xcc\x98\xa6\xa5= \x02\xb5\xd8\xd8" > "\xee\x6e\xfe\xca\xcf\xb7\x62\x46\x4c\x6f\x8c\xea\x8b\xda= \xd1\x4a\x29\x19" > "\x99\x28\xe0\xcb\x07\xfb\xc3\x06\xb9\xee\xcc\xc4\xc7\xa3= \x26\x18\x52\x54" > "\x41\x48\x92\xb6\x14\xdd\xcc\x20\xe9\xb5\xd2\x58\xe6\x62= \x71\x43\x0c\x07" > "\x05\xc5\xa6\x22\xfa\x56\x46\xda\x48\x97\xa0\x88\xf6\x8f= \xde\xb6\x68\x42" > "\xad\x3d\x72\xf2\x32\xf4\x87\xb3\xdb\x3b\x83\xd8\x26\x22= \xc9\x1d\xaf\x77" > "\x96\x34\xfa\x1b\x97\xc7\xd5\xad\xb5\xd5\x3b\xe5\x19\x8b= \xc5\x9a\xef\x1a" > "\xab\x60\xc3\x79\x52\x96\xa8\x4a\xc3\xf7\x73\x99\xfe\xed= \x5b\x86\xf4\x4b" > "\x3a\x1c\xa3\x5e\xe4\x68\x91\xee\x90\x3a\x90\x34\x08\x83= \xce\xc4\x1d\x57" > "\x7a\x88\x80\x94\x5b\x50\x4c\x7e\xa5\xbd\xc9\x4d\x66\xbf= \x25\xb4\xd2\xe0" > "\x64\xbd\x69\xdf\xce\x4f\x00\xf8\xdf\xad\xe0\x73\x9f\xab= \x52\x75\xdb\x11" > "\xe9\x99\xb2\x56\x22\xc2\x0c\xa0\xa9\xf1\x0f\x27\xc8\x00= \xa4\xf5\xd1\x9a" > "\xa9\x2d\x04\xcd\x28\x2f\x96\xe9\x90\x30\x18\x74\xc5\xdd= \xcf\xb1\x32\x23" > "\xc4\xf5\xfd\x37\xc4\x49\xad\xde\x53\x2a\x16\xae\xe6\x64= \x07\xbf\xee\xee" > "\xbd\xa4\xf5\x13\xf2\x24\xe4\x34\xa9\xc0\x8a\x22\x81\xd5= \xe1\xf4\x59\x1c" > "\x9a\x43\x3a\xb1\x57\x6c\x11\xed\xd0\xdf\x9f\xb6\xf4\x7b= \x76\x1f\xc8\x78" > "\xd5\x32\xd7\xfc\x2a\x76\x24\x61\xfd\x14\x73\xeb\x7c\x7c= \x88\x66\x8b\x74" > "\x9b\x9b\xbf\x43\xc9\x37\xfa\x2b\xd7\x3a\xe9\x17\xea\x2a= \x90\x3b\xf5\xf7" > "\xd7\x1a\xe1\xc7\xd7\x1c\x60\xde\xf1\xbb\xc4\xe8\x15\x1b= \xee\x5f\x4a\x39" > "\x63\x25\x90\x7f\x4f\x2b\xcb\xe9\x80\x38\xe4\x6b\xc9\xfb= \x30\xd1\x99\xf0" > "\x25\xea\xbe\xb0\x37\xce\xae\xc3\xee\x18\x7f\x73\xa1\x36= \xb8\x56\x6a\x94" > "\x3d\x5b\x32\x71\x19\x9e\x6d\x19\xb7\x06\x6d\x90\xb1\x0d= \x0c\x11\xe7\xcb" > "\x0c\x0b\x5f\x73\x12\x7c\xd6\x85\xa7\x63\x8b\x99\xa1\xc9= \xae\xa4\xfb\xf3" > "\xfa\xc6\x7a\x4b\x11\x4c\xa9\xfa\x60\xd2\xc9\xc2\x47\x23= \xb0\x37\x14\x2e" > "\x3e\x47\x50\x3f\x3d\xfd\xff\xc4\x87\x21\x20\x90\xd2\x21= \xeb\x85\xf5\x3c" > "\xf6\x17\x6c\x26\xb9\x3c\x75\x7b\x52\x1d\x01\x7c\xa1\x7a= \xc7\x88\x9c\x26" > "\xc6\x47\x3f\xb4\x4c\xc2\xab\x79\xcd\x76\xfb\xf8\xfc\x5a= \x81\xdc\x24\xbd" > "\x7b\xa6\xd5\x5d\x80\x36\xf4\xd6\x02\x18\xe7\xc8\xfd\xf7= \xf3\xb9\x15\xef" > "\xd0\xbd\x0e\xdf\xac\x38\x0e\x37\x17\x79\x4a\xb4\x6b\x2a= \x5d\xae\xd5\x8f" > "\xdb\x3e\xa6\x67\x20\xc0\xe7\x8a\x0c\xe8\x25\xb1\x55\xeb= \xc0\x97\x9c\xf7" > "\x79\x15\xdb\x3d\xf6\x00\xbb\xd1\x79\xf1\xd2\xd6\x74\xd7= \x6b\x12\xaf\xf0" > "\x87\x75\x7d\x4a\xa4\x80\xee\x15\x66\x78\x40\x74\xa5\x28= \x7b\xe0\x08\x8e" > "\xfb\xe1\x2f\x55\x0b\xad\x3b\x41\x0c\xf0\x4f\xba\x8f\x06= \xd1\x12\x0a\x1d" > "\xad\x35\xde\x9c\x7a\x22\xc3\xca\xf8\x3c\x1b\xf6\xea\x57= \xa0\x55\xaf\xcb" > "\xc6\x1b\x06\x8f\xeb\x5d\x17\xf5\xd0\xcd\x9e\x59\x11\xd2= \xd9\xc8\xc6\xff" > "\x89\xfc\x37\x72\x5a\x4b\x9a\xc3\xa8\x80\x0d\x17\x31\x19= \x9c\x82\x01\xc0" > "\x52\x2e\x9a\xf7\x49\xfe\x36\xe1\x41\x94\x31\x0a\x5a\xaf= \xd9\x44\xc3\x21" > "\xef\xb4\xec\xf5\xc1\x31\xcc\xf9\xde\x48\xc8\xb3\x6a\x90= \x5f\x47\xeb\xa8" > "\xfb\x42\xce\x43\x5d\x1b\xd4\x08\xdc\x87\xb1\xc9\x15\x77= \xff\xba\x16\xe3" > "\x2b\x9b\xe2\x19\x82\xd3\x17\x63\x20\xc8\xe2\x37\x99\xb6= \xc5\xcc\x3d\x83" > "\x4c\xcb\xe9\xac\xed\xa7\x0b\xd2\xc7\x3a\x15\x41\x37\xac= \xdd\x65\xf4\x19" > "\x1e\x44\x70\x89\x3e\xb2\x4e\x4a\xb0\x07\x00\xc2\xc1\x35= \x14\x9f\xb8\x66" > "\x44\xb5\xac\x0b\xe1\x66\x92\x88\xb9\xc2\x9a\x1f\x6f\x61= \x51\x7d\x8b\x4f" > "\x09\x61\x6e\x76\x7b\xd7\x2d\x13\xf8\x33", > 4096)); > syscall(__NR_lsetxattr, /*path=3D*/0x200001c0ul, /*name=3D*/0x200= 002c0ul, > /*val=3D*/0x20002040ul, /*size=3D*/0x1009ul, /*fl= ags=3D*/3ul); > } > int main(void) { > syscall(__NR_mmap, /*addr=3D*/0x1ffff000ul, /*len=3D*/0x1000ul, /= *prot=3D*/0ul, > /*flags=3D*/0x32ul, /*fd=3D*/-1, /*offset=3D*/0ul= ); > syscall(__NR_mmap, /*addr=3D*/0x20000000ul, /*len=3D*/0x1000000ul= , /*prot=3D*/7ul, > /*flags=3D*/0x32ul, /*fd=3D*/-1, /*offset=3D*/0ul= ); > syscall(__NR_mmap, /*addr=3D*/0x21000000ul, /*len=3D*/0x1000ul, /= *prot=3D*/0ul, > /*flags=3D*/0x32ul, /*fd=3D*/-1, /*offset=3D*/0ul= ); > install_segv_handler(); > for (procid =3D 0; procid < 4; procid++) { > if (fork() =3D=3D 0) { > loop(); > } > } > sleep(1000000); > return 0; > } > > > =3D* repro.txt =3D* > syz_mount_image$vfat(&(0x7f0000000040), &(0x7f0000000200)=3D'./file0\x00'= , 0x220e002, 0x0, 0x1, 0x0, &(0x7f0000000100)) > mount(&(0x7f0000000040)=3DANY=3D[@ANYBLOB=3D'mtd', @ANYRESHEX=3D0x0], &(0= x7f00000000c0)=3D'./file0\x00', &(0x7f0000001200)=3D'jffs2\x00', 0x0, 0x0) > lsetxattr$security_evm(&(0x7f00000001c0)=3D'./file0\x00', &(0x7f00000002c= 0), &(0x7f0000002040)=3D@v2=3D{0x3, 0x2, 0xb, 0x4, 0x1000, "788d9cb299abd72= ece913d53365e16688e51ace15984ab53d1666ae3f5dfbc860bef87389e21286be236ddc3d0= fa2e51d5c5c7b35c5d503c5b2c3b6be0fc56e97df88faa0635363ba92b82c47a817ac97f1d6= 38a1461821255ec23bd0ce5bf1094e3a8980d7e6d1976ba778745920e1718fddac4bd66b0a6= 06801aaefded293c3fcebad3b2c06403dba9994971659b7f4a077addaeb8ae3e5aca7027fde= 1e40001c0bdd800bcc287e02c867e2782deaf676a261647db8c2f3945022057de768100a8bf= 73d9f9ff29229b46dead58b2ddf96433468e9eee8950df658711e411364e44145e682f3c053= c6f5a1861eee6edf885a97c545805ac0c35a5e4623b2001861c593354b570ff3b4a45f1acde= 0a8dbd17c09ce448ed5dfd9e7472e68967decb769fa600cd30beb6c8030e9474c7ec4c1daf3= e007bbc5765b366d4a176e38bdfabedd2b076a5ed7d50f5177b94a6a0f000cd3acadde8e80f= 66eada14018620b159e9e14c252d20c8dbb0fe3605b5698b53e4210b62fcbd00017eaa01eb1= fa521bdb8d30e83951b4ea0286c8f0d464517a11d7922d6cce4d2058ec8cd7b02b73d825d7e= 0abbbd85e991220fc7995534b7b1998ca752890b079a7ca3fde56438cf82d5dd9edbd11fd29= 3c17d1cf16657d0b352a8c6c36300ad09a78e3ee3913b9b6f53debffc7e32bfb64b0e8cbe07= fe9b0dadb097aeb2c242430bec75630a3921828a7314de1404829e7afb3b8420e85f2c8f6e8= 8de042314416e5c00c59b22208004bec161f8457c7f8e3a8ca4174a4b78df6e460d56d24e01= ae1a2411270f79d020a6bac855f1a3ef7b3d0991882656b408dcdaf02db46ac8fcab0c875d1= f2e8db366e6a20cb67a4db920382a6915715d3b4266f779fe8633bea6def28cc159138b8343= 34cedef3dec54ea5303df56be87115315ec0f1478a0c0869e5f7c33da64b23af5811751055c= 90849484481d5a10d72e08ccd12710c4f2ff586a9ea175f4aa70b156c00c57e22c1360bfc7d= 36aa4792444f81d8a0ed41bf6a452ea5268b8605682ac63eaa465218f4d962db42154d01966= d3ad8fc2fde48ef71be08be58e5ad6d5a3593efc9c1336e541372a34799d24ea00d4d4985be= d1dab10620911e9f6967880826be5a1f1bb4b2a3948654c6935cafeb4925e107a01f9dda668= e5fd7489e82139241a9190f090afe2094234c75fec074622748d4dd782a930f42b0e75d924b= ef68ffafbaa98916151a36ef2998afd3000955efbfa0a9a008358c11043c0f96b52fc78a425= 31aa5dfd8de09518cff008b339259b266c488bb1da058ba218cd64b3e413ca2889d1086e8c4= 0ae11501984121dcfa2fde09d068f6dbbe8359980dad96ed220b8534aaef353dfc81560907d= 26c02442924ad55b11d3aee7e5516d96ad078c85ad1cdb18a45474305a8db350f9844380e20= 94f691a05ea09458bc53f3236a1f3fa5e144a575ba57e58d00f7653d2e6b6cbe18d28ce3f57= 92538ad20c0e0e10b03dac34009d6d3e4c7662cca88b53066e95efe45ee3e04da328690dae1= aa0070f0945e269b75733b106ff6514555d54d958f7313441fa21f97615312c4f600a1430f6= 29812f23cd21e703b966e04aa6d0bba6f2539369a3badebfaa8197d89e3294b44c0ea54ae6b= 7f4a496568043175a5666541b559a9feaf0c5454f12f230e97bcf84dae11d1a8359411b98bb= 6063ee8ae0ffa30b5757771c7b70e4fbb6e951a680873e6da531600e951110c34caacc8e978= c06b4848c880c48ad8e6c54bc792ce54ea4b1c05ab04afb4d6cab25b85d1c4b6c474c7ec926= 7b501edaa20ee0e415868d87866426b1374e58a666530b94e342c8b2ebdd405fef0a26df82b= bc502da2ca1550c28d3c0b69872ff861cd23cb6e1ff1e62f625ae92f90f30933fc827edd386= 121315352dbc9f4cab3dddadeb8df051d2f59cd59e97dc92ce4341f978003e48685e7673cf1= e60260600e7cbf731dc168b9a411dc3c85f843bd2c5fca89c06d12bac08a61cf099ae5f23e5= e908448e81f2779b385b31dcd5cf8aaad4b85ae7063624a7df573aeccc8b61977f8ec10e68b= 5df1c1b805c7e001228a65c0e772c5251466a49f10219bb718a4aa2e35c40811a972eb58530= f7f0741d3be0c00e38f58994a5199547fc5150c781ffe2e56560f08eb75bfcd9085ff140cee= fd0d6ed43dad39d2cda8694d420e861a1dec4a28d1cf5324c5c5ab81922154873b3f82df1bc= 06cb9565c08f774d9fa6fe575daf87b328ab10b912243f100712a27f4981faa372d736702c5= 65a08c4d6b0aa312d3c9017fd1e7ab981de7ee1dfc1a849924aa92eab1b3e6e9742f6913a08= b5699d670697a608d749e06c341421a809a365dca3f8d88d842685080f8ed93482888065b50= bf9abde75fe37c8ff2ae4f24e26f83949ab5c4f4a96e13b2cdf742daf9c1b58305691456c6c= 190bfb7bbbb084ea9f97e99c3e028415d4e05ccf7717b5797ff5bafa2518a0acab434a188d4= 797a85f36557dd6aa39c75e80b72496372652544b1424901a6a9d4b7453086b6ba26a40521d= a94ab54de4a11b51b4ad7ab1d6805f323b044955f779cfe7c1c3586f4be0eab226a25ae16bd= 8dc7eb015024b7434b6408343a1be6e1dd3925c102b4c9c543983835b6bb45f80ea35bf7fce= cab5d947224bfdb1c03b20fc07a5cac630beb4b3044ebe55c9023844c1fd64b4eb025536867= f0afa388576c5b2564cd2e20ae2633f7b76cf6fbceff240f65e5eeba2843faa1e77108d35c5= 9b3f570112660e9278da3127686dc2a965a6ad1672e29ff9edd62f49e41bdd65348d2657846= be80479cea415bfb5927229f3b772ed9c9b7639d8f75ff6621841a7b64978131e86952bfe51= 0715b25efbcf393320c1d6299ac6c19dd908870f96d92b8bdcf11e3c9878f2e37bdaf72718a= d0bc2872c7a0b101f6e392997234e06c9b1bdc324971427d6b97c3c16531178f40a8ab52f98= e066780977abd352e1efe6185f70233b30fdc96b6a289b9e0fcee555923ef590bd9cd2f0ef7= 024641450d1a9258046ac0e80acd44f267446946c096db9848f78cddba9f5409b090dd2344d= 8d45a16cd2ecce5bf22bd4cb89afd3067cb0bd9a7279be1b1e503498f39edce714f37597d0e= 6460716d09ea376d73e8a71fff1324fa2aeba75e8bbd0ea4c418b45784550153d492898e15d= a88b6ed3f67e85dbb111c2feac2fd78b6f9011c6864b9bb11653694f7f02568b768b6a27d08= 0eadc0093744b9115aa2f8d03fa27faea2e356ef8ce62e4722ddd139f784ac3b8afb98c8d39= 84c8cf9438e83710330428b7830c1709a309bbac3bbdbd083e539938c5789e1709d2c0ee94d= cb2fe64c31c87d25cc7f826bbf5e021d5aaa172970aae96a6858f8c11fdfb748328d97411ed= c10dd16fd10faa7c3b94ce19152fb2965690421d3c6db2e7e8888c7bb06443db3111e3db69a= 88dd097ab8c64d6bea30da247fcd117a30eef45cd9339a78375628cdbfa26d6b3419e69bbe8= e88479129684b2304daa2d684304826eee97d346303cc631e10465a2f9243e84d322810388b= a2d30626a63df9793eb963df234865cbb68cdbc04363e17a6a6eb1c8014177c99faacb8d7a8= e99d897718bc51055727820d321f25fd15d24d029d4fad6fde97f091180ef2bc3913bc11f8f= 104bcc7ea0024157481b3537ce543fe8ab93a26cb9ba51fa78d337bf10ba29dc5febfe4ad01= 4bd40f33330823d7f4573baebd9e063d59a87662bef859cee8a8e5318aae22e79fb4d31e088= f0569c67bba41868fe464ed77ec7fe07dd3a5c2c81c1fded160598b37564513173f13feeb9d= f4b47ede8050aac431e1b2058c6afe7e44bcc6f28dc5833dded10e6917e15b93088cd907918= 26ca7c3b9a4211e9e2ffd4966223816db6e4ede5701b76988d8f34aa140ffb4bc3effccbe5a= f3942d4c5717700e592a17001d20b665fb7c6f65361108a1370a45db477a1f449e5c3f9a89f= 967290af231db82fedecfca2c3cedffeadb775728b45ce4bde0630e9e1dfcd98138a556dd40= b655581b451a7164ad57c4fb2b5dc5b145e8733de33af844e400414f85c28ca1f888e70c45d= 28c823e07eddf30df7911df584ad458a25355084163a9a7cc3bac4276e957211626e2882120= 05334dec742cfe57e6c8234e520d8bed45af476770f4718f799c1a1f637fc04a73780a35d21= 94e6017e405d3e0b1e9f2c7c0f6a0ed28a2eafdd7922762059fe0ebc77599245b12c9f0cef9= edab1a25171a6a9a0562e24db76e25dfb5ecb7352d0bfc78d858e8aaac913efa4ff60489679= e8c72019897a8a85a9ee29f10922315ba7db0a126f827c03fa5bbb90f991cb9866b3e03047c= b1fabbbdbe5a35282f030c0dbdbd227f85b05721c45c8b2b85d3310bb41d6aa5614a60d9874= d12f11f5a94b15f741db310c927b2e90607a2af8c4b57d6b6937d5a1eb14589d1e361642458= cc2fbd296ac031d099df49a53e8f0d4506b2dcbb20f54560b695a4e0a4a5a13231985d53bb3= 533126add281fd38cddf7ef437201e8aea1ab63ad673cdcc6c604114aec771881b4fb7aa7cc= bd397e703f10895619e15c71684bbbfa2b2c60a790de0e5059538b51d347a68ad057472a9f1= eaf054df7791b58f638c059555bbb970edf877d5f623e2541dba27df8d713fe7c55f40fbf3d= bdc3d042e92b83f94dd66d1cd2bc5cc98a6a502b5d8d8ee6efecacfb762464c6f8cea8bdad1= 4a29199928e0cb07fbc306b9eeccc4c7a326185254414892b614ddcc20e9b5d258e66271430= c0705c5a622fa5646da4897a088f68fdeb66842ad3d72f232f487b3db3b83d82622c91daf77= 9634fa1b97c7d5adb5d53be5198bc59aef1aab60c3795296a84ac3f77399feed5b86f44b3a1= ca35ee46891ee903a90340883cec41d577a8880945b504c7ea5bdc94d66bf25b4d2e064bd69= dfce4f00f8dfade0739fab5275db11e999b25622c20ca0a9f10f27c800a4f5d19aa92d04cd2= 82f96e990301874c5ddcfb13223c4f5fd37c449adde532a16aee66407bfeeeebda4f513f224= e434a9c08a2281d5e1f4591c9a433ab1576c11edd0df9fb6f47b761fc878d532d7fc2a76246= 1fd1473eb7c7c88668b749b9bbf43c937fa2bd73ae917ea2a903bf5f7d71ae1c7d71c60def1= bbc4e8151bee5f4a396325907f4f2bcbe98038e46bc9fb30d199f025eabeb037ceaec3ee187= f73a136b8566a943d5b3271199e6d19b7066d90b10d0c11e7cb0c0b5f73127cd685a7638b99= a1c9aea4fbf3fac67a4b114ca9fa60d2c9c24723b037142e3e47503f3dfdffc487212090d22= 1eb85f53cf6176c26b93c757b521d017ca17ac7889c26c6473fb44cc2ab79cd76fbf8fc5a81= dc24bd7ba6d55d8036f4d60218e7c8fdf7f3b915efd0bd0edfac380e3717794ab46b2a5daed= 58fdb3ea66720c0e78a0ce825b155ebc0979cf77915db3df600bbd179f1d2d674d76b12aff0= 87757d4aa480ee1566784074a5287be0088efbe12f550bad3b410cf04fba8f06d1120a1dad3= 5de9c7a22c3caf83c1bf6ea57a055afcbc61b068feb5d17f5d0cd9e5911d2d9c8c6ff89fc37= 725a4b9ac3a8800d1731199c8201c0522e9af749fe36e14194310a5aafd944c321efb4ecf5c= 131ccf9de48c8b36a905f47eba8fb42ce435d1bd408dc87b1c91577ffba16e32b9be21982d3= 176320c8e23799b6c5cc3d834ccbe9aceda70bd2c73a154137acdd65f4191e4470893eb24e4= ab00700c2c135149fb86644b5ac0be1669288b9c29a1f6f61517d8b4f09616e767bd72d13f8= 33"}, 0x1009, 0x3) > > and see also in https://gist.github.com/xrivendell7/fdc7fa3a7b55a91746669= 44c07732eec > > I hope it helps. > Best regards 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 37F9DC001CC for ; Wed, 17 Apr 2024 12:51:28 +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:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ONzJEbb4fZsrVP+cPONf/B17cXSpyPEPzlwd+Cox0Fk=; b=bi1oF6smqAoKEC M8MwyDoIv5OI6/EikNRzSLNURCqGwBQqDFP8ZQpiJlpik5OhyUK14kzL2XktsOUZ+Z/Z0ARM34ydr rhcN2f8XPX2RD3mzQsxhlpHffFH0BxTWYF+gjTUcc5Xynl40Mzu7VJ/r/+4Hvp23Yx4ynTKQQG6v7 +SGYR4qmQlbBEwGuBq8aksyxdrdQPsj6f3RwnHnTR0uEckNEUdEkzesx8l4cty9jA/PCFqLAQSgLQ l/SLtibPLcB3W/E2+PbYPfRDEUgnwlkk+2oPif3h3stutb0dLQKgaYS6ehpUtPCOny4WpTGgpLONV lP+hfFShwInfQurBUG3g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rx4l2-0000000FzW2-31xE; Wed, 17 Apr 2024 12:51:24 +0000 Received: from mail-vk1-xa32.google.com ([2607:f8b0:4864:20::a32]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rx4kx-0000000FzVW-2VsD for linux-mtd@lists.infradead.org; Wed, 17 Apr 2024 12:51:23 +0000 Received: by mail-vk1-xa32.google.com with SMTP id 71dfb90a1353d-4dae34a3806so351678e0c.1 for ; Wed, 17 Apr 2024 05:51:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713358277; x=1713963077; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=H50Yq/1bKm6UpkKla+gr4omGSPJd+D/ukVzmoYU6VxM=; b=BDxOaTd44t6FbnTf0Aa5WuQfbzYGg/grYGsGHoxzQSrGjk4ZGynkxEBWtfFFXbglDC syqkobR3M0GxepnYFGFgiRbzx8mN6RmJVUz6poJzCUpEN507CtGLswM6eSsYMwbWtwAw BYS/7aLioVO33ErQ73pUJ0nommcVGhumK2hESuTbC61GqTX6HcF1a6ccpxoS77s5pjqY 6oxjDOXQDM7iO59yj3Co9vFhGkgg+xZDUXyezHWYrcHFiwTTd5jfZlMiuJwNpkxFqDXp UNH0OOO4/sRp5eivuXx6DEdGVclN+Yy3+2InQBHo0wcmB2aZL2/+RkwZHTyDKuh8B4uy SWEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713358277; x=1713963077; h=content-transfer-encoding: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=H50Yq/1bKm6UpkKla+gr4omGSPJd+D/ukVzmoYU6VxM=; b=hKJxo9vYe8FcsRjybPoEnLYkykfhJ9c0MYiJH3YzkpkpTpU3HKHmA8PZkg+fIAoke5 Rh1batRRZa3eJMdLMa+NmZQvEW79vqr15bQza2OEvNjFSFRDmj9UMvAvcBD8vAY7lEgM hz6wXAd5J25NrGqDPVyGH1c0KfNqV+tBrN3FV1BhrHFo0fCUq8W5hqXBu44RfSkm+NLa /KStWoGai5fPpTuV+WZ+GyLVXObswKl1WKIcrnINVW9wta2LHTc206rIpnrO7asv6Btp 0/dbo9xDuyHDqwmhrYpB7wQXfMDrkq6tGcnKDWLKrTxDFWOIBBIlMcvx+MqU+SOeSvL3 rSJA== X-Forwarded-Encrypted: i=1; AJvYcCU+AHBHjxD9Y1wgkVcSxAwWfJbKET7gb2hVO1z7vEbGpgikMoV/lkmpil2A0nwJuiJpBz08HoQQ3PA6SXm8GH6RJiYsdpd0nh0BRi/+/Q== X-Gm-Message-State: AOJu0YyOi8MVlGWMqI34tBu/vyq2i9bz2u+EBjK+1nv725ZjYckWjdLy eFsWZcJVTi2kt/0WM6UihtoCtiyI7cbp50M2gYnF66BCowLKQrT4V3dhj7UoeNlYPhmYkr3MAQx k+hOdI/oZ7B0aZQsN52snDEwnCV4= X-Google-Smtp-Source: AGHT+IGlNuM1/ctkQH8dPwVCI4Nd4R/jxC1r5KeL2Eh7UO8EPm3yIw/sPDJNr0073C1QI9k7mq2+eRrhcoffULFDwkw= X-Received: by 2002:a05:6122:c84:b0:4d3:34f4:7e99 with SMTP id ba4-20020a0561220c8400b004d334f47e99mr5078353vkb.0.1713358276403; Wed, 17 Apr 2024 05:51:16 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: lee bruce Date: Wed, 17 Apr 2024 20:51:04 +0800 Message-ID: Subject: Re: [syzbot] [jffs2?] kernel BUG in jffs2_sum_write_sumnode To: syzbot+badbb16b0a5dd4c2f676@syzkaller.appspotmail.com Cc: dwmw2@infradead.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org, richard@nod.at, syzkaller-bugs@googlegroups.com, samsun1006219@gmail.com X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org U29ycnkgZm9yIGNvbnRhaW5pbmcgdGhlIEhUTUwgcGFydCwgcmVwZWF0LgpIZWxsbywgSSByZXBy b2R1Y2VkIHRoaXMgYnVnIGFuZCBjb25maXJtZWQgaW4gdGhlIGxhdGVzdCB1cHN0cmVhbS4KCklm IHlvdSBmaXggdGhpcyBpc3N1ZSwgcGxlYXNlIGFkZCB0aGUgZm9sbG93aW5nIHRhZyB0byB0aGUg Y29tbWl0OgpSZXBvcnRlZC1ieTogeGluZ3dlaSBsZWUgPHhyaXZlbmRlbGw3QGdtYWlsLmNvbT4K UmVwb3J0ZWQtYnk6IHl1ZSBzdW4gPHNhbXN1bjEwMDYyMTlAZ21haWwuY29tPgoKSSB1c2UgdGhl IHNhbWUga2VybmVsIGFzIHN5emJvdCBpbnN0YW5jZToKaHR0cHM6Ly9zeXprYWxsZXIuYXBwc3Bv dC5jb20vYnVnP2V4dGlkPTVhMjgxZmU4YWFkZjhmMTEyMzBkCktlcm5lbCBDb21taXQ6IHVwc3Ry ZWFtIGZlNDZhN2RkMTg5ZTI1NjA0NzE2YzAzNTc2ZDA1YWM4YTUyMDk3NDMKS2VybmVsIENvbmZp ZzogaHR0cHM6Ly9zeXprYWxsZXIuYXBwc3BvdC5jb20vdGV4dD90YWc9S2VybmVsQ29uZmlnJng9 NGQ5MGEzNmYwY2FiNDk1YQp3aXRoIEtBU0FOIGVuYWJsZWQKCnJvb3RAc3l6a2FsbGVyOn4jIC4v MApbICA0MDYuNzI3NTc3XVsgVDgxNzddIC0tLS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0t LS0tLQpbICA0MDYuNzI4MjcyXVsgVDgxNzddIGtlcm5lbCBCVUcgYXQgZnMvamZmczIvc3VtbWFy eS5jOjg2NSEKWyAgNDA2LjcyOTAxNF1bIFQ4MTc3XSBpbnZhbGlkIG9wY29kZTogMDAwMCBbIzFd IFBSRUVNUFQgU01QIEtBU0FOIE5PUFRJClsgIDQwNi43Mjk4NTBdWyBUODE3N10gQ1BVOiAyIFBJ RDogODE3NyBDb21tOiAwIE5vdCB0YWludGVkCjYuOC4wLTA4OTUxLWdmZTQ2YTdkZDE4OWUtZGly dHkgIzYKWyAgNDA2LjczMDkwNF1bIFQ4MTc3XSBIYXJkd2FyZSBuYW1lOiBRRU1VIFN0YW5kYXJk IFBDIChpNDQwRlggKyBQSUlYLAoxOTk2KSwgQklPUyAxLjE2LjItZGViaWFuLTEuMTYuMi0xIDA0 LzAxLzIwMTQKWyAgNDA2LjczMjIwNl1bIFQ4MTc3XSBSSVA6IDAwMTA6amZmczJfc3VtX3dyaXRl X3N1bW5vZGUrMHgxZjUwLzB4MjYzMApbICA0MDYuNzMzMDYxXVsgVDgxNzddIENvZGU6IDBmIGI2 IDA0IDAyIDg0IGMwIDc0IDA4IDNjIDAzIDBmIDhlIDgxIDAxCjAwIDAwIDhiIGIzIGMwIDA1IDAw IDAwIDQ4IGM3IGMyIGMwIDdlIGE0IDhiIDQ4IGM3IGM3IGMwIDdhIGE0IDhiIGU4CjUxIGJhIDgy IGZlIDkwIDwwZj4gMGIgZTggNjkgMjkgMDEgZmYgZTkgNzAgZTE5ClsgIDQwNi43MzU0NzJdWyBU ODE3N10gUlNQOiAwMDE4OmZmZmZjOTAwMDM5NmY0ZTAgRUZMQUdTOiAwMDAxMDI4NgpbICA0MDYu NzM2NDE2XVsgVDgxNzddIFJBWDogMDAwMDAwMDAwMDAwMDA0NSBSQlg6IGZmZmY4ODgwMjJhMjAw NDAKUkNYOiBmZmZmODg4MDIyYTIwMDQwClsgIDQwNi43Mzc0NDZdWyBUODE3N10gUkRYOiAwMDAw MDAwMDAwMDAwMDAwIFJTSTogMDAwMDAwMDAwMDAwMDAwMApSREk6IDAwMDAwMDAwMDAwMDAwMDAK WyAgNDA2LjczODQzNV1bIFQ4MTc3XSBSQlA6IGZmZmZjOTAwMDM5NmY2NjAgUjA4OiAwMDAwMDAw MDAwMDAwMDA1ClIwOTogMDAwMDAwMDAwMDAwMDAwMApbICA0MDYuNzM5NDcwXVsgVDgxNzddIFIx MDogMDAwMDAwMDA4MDAwMDAwMCBSMTE6IDAwMDAwMDAwMDAwMDAwMDEKUjEyOiAwMDAwMDAwMDAw MDAwMDAwClsgIDQwNi43NDA0NjNdWyBUODE3N10gUjEzOiAwMDAwMDAwMDAwMDAwMDAwIFIxNDog ZmZmZjg4ODAyOGJiMTAwMApSMTU6IDAwMDAwMDAwMDAwMDEwNmMKWyAgNDA2Ljc0MTQ1OV1bIFQ4 MTc3XSBGUzogIDAwMDAwMDAwMDdhNjY0ODAoMDAwMCkKR1M6ZmZmZjg4ODBiOTMwMDAwMCgwMDAw KSBrbmxHUzowMDAwMDAwMDAwMDAwMDAwClsgIDQwNi43NDI1ODFdWyBUODE3N10gQ1M6ICAwMDEw IERTOiAwMDAwIEVTOiAwMDAwIENSMDogMDAwMDAwMDA4MDA1MDAzMwpbICA0MDYuNzQzNDE4XVsg VDgxNzddIENSMjogMDAwMDAwMDAyMDAwMzAyOSBDUjM6IDAwMDAwMDAwMmJlNjgwMDAKQ1I0OiAw MDAwMDAwMDAwNzUwZWYwClsgIDQwNi43NDQ0MDddWyBUODE3N10gRFIwOiAwMDAwMDAwMDAwMDAw MDAwIERSMTogMDAwMDAwMDAwMDAwMDAwMApEUjI6IDAwMDAwMDAwMDAwMDAwMDAKWyAgNDA2Ljc0 NTM5OF1bIFQ4MTc3XSBEUjM6IDAwMDAwMDAwMDAwMDAwMDAgRFI2OiAwMDAwMDAwMGZmZmUwZmYw CkRSNzogMDAwMDAwMDAwMDAwMDQwMApbICA0MDYuNzQ2MzczXVsgVDgxNzddIFBLUlU6IDU1NTU1 NTU0ClsgIDQwNi43NDY4MzNdWyBUODE3N10gQ2FsbCBUcmFjZToKWyAgNDA2Ljc0NzI3MV1bIFQ4 MTc3XSAgPFRBU0s+ClsgIDQwNi43NDc2NTFdWyBUODE3N10gID8gc2hvd19yZWdzKzB4OTcvMHhh MApbICA0MDYuNzQ4MjE1XVsgVDgxNzddICA/IGRpZSsweDNiLzB4YjAKWyAgNDA2Ljc0ODcwMV1b IFQ4MTc3XSAgPyBkb190cmFwKzB4MjQ1LzB4NDQwClsgIDQwNi43NDkyNjJdWyBUODE3N10gID8g amZmczJfc3VtX3dyaXRlX3N1bW5vZGUrMHgxZjUwLzB4MjYzMApbICA0MDYuNzUwMDA1XVsgVDgx NzddICA/IGpmZnMyX3N1bV93cml0ZV9zdW1ub2RlKzB4MWY1MC8weDI2MzAKWyAgNDA2Ljc1MDcx MV1bIFQ4MTc3XSAgPyBkb19lcnJvcl90cmFwKzB4ZmYvMHgyNTAKWyAgNDA2Ljc1MTM0Ml1bIFQ4 MTc3XSAgPyBqZmZzMl9zdW1fd3JpdGVfc3Vtbm9kZSsweDFmNTAvMHgyNjMwClsgIDQwNi43NTIw OTRdWyBUODE3N10gID8gaGFuZGxlX2ludmFsaWRfb3ArMHgzOS8weDQwClsgIDQwNi43NTI3NDBd WyBUODE3N10gID8gamZmczJfc3VtX3dyaXRlX3N1bW5vZGUrMHgxZjUwLzB4MjYzMApbICA0MDYu NzUzNDc5XVsgVDgxNzddICA/IGV4Y19pbnZhbGlkX29wKzB4MmUvMHg1MApbICA0MDYuNzU0MDkw XVsgVDgxNzddICA/IGFzbV9leGNfaW52YWxpZF9vcCsweDFhLzB4MjAKWyAgNDA2Ljc1NDcxNl1b IFQ4MTc3XSAgPyBqZmZzMl9zdW1fd3JpdGVfc3Vtbm9kZSsweDFmNTAvMHgyNjMwClsgIDQwNi43 NTU0NzddWyBUODE3N10gID8gX19wZnhfamZmczJfc3VtX3dyaXRlX3N1bW5vZGUrMHgxMC8weDEw ClsgIDQwNi43NTYyMzRdWyBUODE3N10gID8gcmN1X2lzX3dhdGNoaW5nKzB4MTIvMHhjMApbICA0 MDYuNzU2ODYxXVsgVDgxNzddICA/IGxvY2tfYWNxdWlyZSsweDFiMS8weDU0MApbICA0MDYuNzU3 NDg5XVsgVDgxNzddICA/IF9fcGZ4X2xvY2tfYWNxdWlyZSsweDEwLzB4MTAKWyAgNDA2Ljc1ODEx N11bIFQ4MTc3XSAgPyBfX3BmeF9fX211dGV4X2xvY2srMHgxMC8weDEwClsgIDQwNi43NTg3Njld WyBUODE3N10gID8gamZmczJfZG9fcmVzZXJ2ZV9zcGFjZSsweGM1OS8weDExOTAKWyAgNDA2Ljc1 OTUwMl1bIFQ4MTc3XSAgamZmczJfZG9fcmVzZXJ2ZV9zcGFjZSsweGM1OS8weDExOTAKWyAgNDA2 Ljc2MDIyM11bIFQ4MTc3XSAgamZmczJfcmVzZXJ2ZV9zcGFjZSsweDY3ZS8weGMyMApbICA0MDYu NzYwODgzXVsgVDgxNzddICA/IGF2Y19oYXNfcGVybV9ub2F1ZGl0KzB4MTUyLzB4M2QwClsgIDQw Ni43NjE1ODRdWyBUODE3N10gID8gX19wZnhfamZmczJfcmVzZXJ2ZV9zcGFjZSsweDEwLzB4MTAK WyAgNDA2Ljc2MjMwMl1bIFQ4MTc3XSAgPyBhdmNfaGFzX3Blcm1fbm9hdWRpdCsweDE1Mi8weDNk MApbICA0MDYuNzYzMDMwXVsgVDgxNzddICA/IGNyZWRfaGFzX2NhcGFiaWxpdHkuaXNyYS4wKzB4 MTlkLzB4MzEwClsgIDQwNi43NjM3ODhdWyBUODE3N10gID8gX19wZnhfamZmczJfc2VjdXJpdHlf c2V0eGF0dHIrMHgxMC8weDEwClsgIDQwNi43NjQ1NjddWyBUODE3N10gIGRvX2pmZnMyX3NldHhh dHRyKzB4MWFiLzB4MTc3MApbICA0MDYuNzY1MjI0XVsgVDgxNzddICA/IGNhcF9jYXBhYmxlKzB4 MWU0LzB4MjUwClsgIDQwNi43NjU3ODNdWyBUODE3N10gID8gX19wZnhfZG9famZmczJfc2V0eGF0 dHIrMHgxMC8weDEwClsgIDQwNi43NjY1MTRdWyBUODE3N10gID8geGF0dHJfcmVzb2x2ZV9uYW1l KzB4MjkyLzB4NDQwClsgIDQwNi43NjcyMjBdWyBUODE3N10gID8gX19wZnhfamZmczJfc2VjdXJp dHlfc2V0eGF0dHIrMHgxMC8weDEwClsgIDQwNi43NjgwMjZdWyBUODE3N10gIF9fdmZzX3NldHhh dHRyKzB4MTgyLzB4MWYwClsgIDQwNi43Njg2NDZdWyBUODE3N10gID8gX19wZnhfZXZtX3Byb3Rl Y3RfeGF0dHIuaXNyYS4wKzB4MTAvMHgxMApbICA0MDYuNzY5NDExXVsgVDgxNzddICA/IF9fcGZ4 X19fdmZzX3NldHhhdHRyKzB4MTAvMHgxMApbICA0MDYuNzcwMDY3XVsgVDgxNzddICBfX3Zmc19z ZXR4YXR0cl9ub3Blcm0rMHgxMzIvMHg2MTAKWyAgNDA2Ljc3MDc1Ml1bIFQ4MTc3XSAgX192ZnNf c2V0eGF0dHJfbG9ja2VkKzB4MTk1LzB4MjcwClsgIDQwNi43NzE0NTJdWyBUODE3N10gIHZmc19z ZXR4YXR0cisweDE1MS8weDM3MApbICA0MDYuNzcyMDUyXVsgVDgxNzddICA/IF9fcGZ4X3Zmc19z ZXR4YXR0cisweDEwLzB4MTAKWyAgNDA2Ljc3MjcwNF1bIFQ4MTc3XSAgPyBfX21pZ2h0X2ZhdWx0 KzB4ZWUvMHgxYTAKWyAgNDA2Ljc3MzMyNl1bIFQ4MTc3XSAgZG9fc2V0eGF0dHIrMHgxNTMvMHgx ODAKWyAgNDA2Ljc3Mzg4MV1bIFQ4MTc3XSAgc2V0eGF0dHIrMHgxNjYvMHgxODAKWyAgNDA2Ljc3 NDQyMV1bIFQ4MTc3XSAgPyBfX3BmeF9zZXR4YXR0cisweDEwLzB4MTAKWyAgNDA2Ljc3NTA0M11b IFQ4MTc3XSAgPyBtbnRfZ2V0X3dyaXRlX2FjY2VzcysweDIxZC8weDMyMApbICA0MDYuNzc1NzQz XVsgVDgxNzddICBwYXRoX3NldHhhdHRyKzB4MTg4LzB4MWYwClsgIDQwNi43NzYzMzhdWyBUODE3 N10gID8gX19wZnhfcGF0aF9zZXR4YXR0cisweDEwLzB4MTAKWyAgNDA2Ljc3Njk4Nl1bIFQ4MTc3 XSAgPyBoYW5kbGVfbW1fZmF1bHQrMHg1NDEvMHhhYjAKWyAgNDA2Ljc3NzY0OF1bIFQ4MTc3XSAg X194NjRfc3lzX2xzZXR4YXR0cisweGM2LzB4MTYwClsgIDQwNi43NzgyODFdWyBUODE3N10gID8g ZG9fc3lzY2FsbF82NCsweDkxLzB4MjYwClsgIDQwNi43Nzg5MjddWyBUODE3N10gID8gbG9ja2Rl cF9oYXJkaXJxc19vbisweDdjLzB4MTEwClsgIDQwNi43Nzk1OThdWyBUODE3N10gIGRvX3N5c2Nh bGxfNjQrMHhkMi8weDI2MApbICA0MDYuNzgwMTk0XVsgVDgxNzddICBlbnRyeV9TWVNDQUxMXzY0 X2FmdGVyX2h3ZnJhbWUrMHg2ZC8weDc1ClsgIDQwNi43ODA5NDRdWyBUODE3N10gUklQOiAwMDMz OjB4NDM3ZDQ5ClsgIDQwNi43ODE0NTRdWyBUODE3N10gQ29kZTogMjggMDAgMDAgMDAgNzUgMDUg NDggODMgYzQgMjggYzMgZTggZjEgMTcKMDAgMDAgOTAgNDggODkgZjggNDggODkgZjcgNDggODkg ZDYgNDggODkgY2EgNGQgODkgYzIgNGQgODkgYzggNGMgOGIKNGMgMjQgMDggMGYgMDUgPDQ4PiAz ZCAwMSBmMCBmZiBmZiA3MyAwMSBjMyA0ODgKWyAgNDA2Ljc4Mzg0MV1bIFQ4MTc3XSBSU1A6IDAw MmI6MDAwMDdmZmY3Y2Q1MWQyOCBFRkxBR1M6IDAwMDAwMjQ2Ck9SSUdfUkFYOiAwMDAwMDAwMDAw MDAwMGJkClsgIDQwNi43ODQ4ODldWyBUODE3N10gUkFYOiBmZmZmZmZmZmZmZmZmZmRhIFJCWDog MDAwMDAwMDAyMDAwMjA0NwpSQ1g6IDAwMDAwMDAwMDA0MzdkNDkKWyAgNDA2Ljc4NTkwMF1bIFQ4 MTc3XSBSRFg6IDAwMDAwMDAwMjAwMDIwNDAgUlNJOiAwMDAwMDAwMDIwMDAwMmMwClJESTogMDAw MDAwMDAyMDAwMDFjMApbICA0MDYuNzg2ODg2XVsgVDgxNzddIFJCUDogMDAwMDdmZmY3Y2Q1MWQ4 MCBSMDg6IDAwMDAwMDAwMDAwMDAwMDMKUjA5OiAwMDAwMDAwMTdjZDUxZDQwClsgIDQwNi43ODc4 NzhdWyBUODE3N10gUjEwOiAwMDAwMDAwMDAwMDAxMDA5IFIxMTogMDAwMDAwMDAwMDAwMDI0NgpS MTI6IDAwMDAwMDAwMDAwMDAwMDEKWyAgNDA2Ljc4ODg3Ml1bIFQ4MTc3XSBSMTM6IDAwMDA3ZmZm N2NkNTFmODggUjE0OiAwMDAwMDAwMDAwMDAwMDAxClIxNTogMDAwMDAwMDAwMDAwMDAwMQpbICA0 MDYuNzg5ODc5XVsgVDgxNzddICA8L1RBU0s+CgoKPSogcmVwcm8uYyA9KgogICAgI2RlZmluZSBf R05VX1NPVVJDRQoKICAgICNpbmNsdWRlIDxkaXJlbnQuaD4KICAgICNpbmNsdWRlIDxlbmRpYW4u aD4KICAgICNpbmNsdWRlIDxlcnJuby5oPgogICAgI2luY2x1ZGUgPGZjbnRsLmg+CiAgICAjaW5j bHVkZSA8c2V0am1wLmg+CiAgICAjaW5jbHVkZSA8c2lnbmFsLmg+CiAgICAjaW5jbHVkZSA8c3Rk YXJnLmg+CiAgICAjaW5jbHVkZSA8c3RkYm9vbC5oPgogICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgog ICAgI2luY2x1ZGUgPHN0ZGludC5oPgogICAgI2luY2x1ZGUgPHN0ZGlvLmg+CiAgICAjaW5jbHVk ZSA8c3RkbGliLmg+CiAgICAjaW5jbHVkZSA8c3RyaW5nLmg+CiAgICAjaW5jbHVkZSA8c3lzL2lv Y3RsLmg+CiAgICAjaW5jbHVkZSA8c3lzL21tYW4uaD4KICAgICNpbmNsdWRlIDxzeXMvbW91bnQu aD4KICAgICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KICAgICNpbmNsdWRlIDxzeXMvc3RhdC5oPgog ICAgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CiAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAg ICAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KICAgICNpbmNsdWRlIDx0aW1lLmg+CiAgICAjaW5jbHVk ZSA8dW5pc3RkLmg+CgogICAgI2luY2x1ZGUgPGxpbnV4L2xvb3AuaD4KCiAgICAjaWZuZGVmIF9f TlJfbWVtZmRfY3JlYXRlCiAgICAjZGVmaW5lIF9fTlJfbWVtZmRfY3JlYXRlIDMxOQogICAgI2Vu ZGlmCgogICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBwcm9jaWQ7CgogICAgc3RhdGljIF9f dGhyZWFkIGludCBjbG9uZV9vbmdvaW5nOwogICAgc3RhdGljIF9fdGhyZWFkIGludCBza2lwX3Nl Z3Y7CiAgICBzdGF0aWMgX190aHJlYWQgam1wX2J1ZiBzZWd2X2VudjsKCiAgICBzdGF0aWMgdm9p ZCBzZWd2X2hhbmRsZXIoaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiBjdHgpIHsKICAg ICAgICBpZiAoX19hdG9taWNfbG9hZF9uKCZjbG9uZV9vbmdvaW5nLCBfX0FUT01JQ19SRUxBWEVE KSAhPSAwKSB7CiAgICAgICAgICAgIGV4aXQoc2lnKTsKICAgICAgICB9CiAgICAgICAgdWludHB0 cl90IGFkZHIgPSAodWludHB0cl90KWluZm8tPnNpX2FkZHI7CiAgICAgICAgY29uc3QgdWludHB0 cl90IHByb2dfc3RhcnQgPSAxIDw8IDIwOwogICAgICAgIGNvbnN0IHVpbnRwdHJfdCBwcm9nX2Vu ZCA9IDEwMCA8PCAyMDsKICAgICAgICBpbnQgc2tpcCA9IF9fYXRvbWljX2xvYWRfbigmc2tpcF9z ZWd2LCBfX0FUT01JQ19SRUxBWEVEKSAhPSAwOwogICAgICAgIGludCB2YWxpZCA9IGFkZHIgPCBw cm9nX3N0YXJ0IHx8IGFkZHIgPiBwcm9nX2VuZDsKICAgICAgICBpZiAoc2tpcCAmJiB2YWxpZCkg ewogICAgICAgICAgICBfbG9uZ2ptcChzZWd2X2VudiwgMSk7CiAgICAgICAgfQogICAgICAgIGV4 aXQoc2lnKTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCBpbnN0YWxsX3NlZ3ZfaGFuZGxlcih2b2lk KSB7CiAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBzYTsKICAgICAgICBtZW1zZXQoJnNhLCAwLCBz aXplb2Yoc2EpKTsKICAgICAgICBzYS5zYV9oYW5kbGVyID0gU0lHX0lHTjsKICAgICAgICBzeXNj YWxsKFNZU19ydF9zaWdhY3Rpb24sIDB4MjAsICZzYSwgTlVMTCwgOCk7CiAgICAgICAgc3lzY2Fs bChTWVNfcnRfc2lnYWN0aW9uLCAweDIxLCAmc2EsIE5VTEwsIDgpOwogICAgICAgIG1lbXNldCgm c2EsIDAsIHNpemVvZihzYSkpOwogICAgICAgIHNhLnNhX3NpZ2FjdGlvbiA9IHNlZ3ZfaGFuZGxl cjsKICAgICAgICBzYS5zYV9mbGFncyA9IFNBX05PREVGRVIgfCBTQV9TSUdJTkZPOwogICAgICAg IHNpZ2FjdGlvbihTSUdTRUdWLCAmc2EsIE5VTEwpOwogICAgICAgIHNpZ2FjdGlvbihTSUdCVVMs ICZzYSwgTlVMTCk7CiAgICB9CgogICAgI2RlZmluZSBOT05GQUlMSU5HKC4uLikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICh7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgIGludCBvayA9IDE7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICBf X2F0b21pY19mZXRjaF9hZGQoJnNraXBfc2VndiwgMSwgX19BVE9NSUNfU0VRX0NTVCk7IFwKICAg ICAgICAgICAgaWYgKF9zZXRqbXAoc2Vndl9lbnYpID09IDApIHsgICAgICAgICAgICAgICAgICAg ICAgICBcCiAgICAgICAgICAgICAgICBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgIH0gZWxzZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgb2sgPSAwOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICBfX2F0 b21pY19mZXRjaF9zdWIoJnNraXBfc2VndiwgMSwgX19BVE9NSUNfU0VRX0NTVCk7IFwKICAgICAg ICAgICAgb2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCiAgICAgICAgfSkKCiAgICBzdGF0aWMgdm9pZCBzbGVlcF9tcyh1aW50NjRfdCBtcykgewog ICAgICAgIHVzbGVlcChtcyAqIDEwMDApOwogICAgfQoKICAgIHN0YXRpYyB1aW50NjRfdCBjdXJy ZW50X3RpbWVfbXModm9pZCkgewogICAgICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKICAgICAgICBp ZiAoY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0cykpCiAgICAgICAgICAgIGV4aXQo MSk7CiAgICAgICAgcmV0dXJuICh1aW50NjRfdCl0cy50dl9zZWMgKiAxMDAwICsgKHVpbnQ2NF90 KXRzLnR2X25zZWMgLyAxMDAwMDAwOwogICAgfQoKICAgIHN0YXRpYyBib29sIHdyaXRlX2ZpbGUo Y29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogd2hhdCwgLi4uKSB7CiAgICAgICAgY2hhciBi dWZbMTAyNF07CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIHZhX3N0YXJ0KGFyZ3MsIHdo YXQpOwogICAgICAgIHZzbnByaW50ZihidWYsIHNpemVvZihidWYpLCB3aGF0LCBhcmdzKTsKICAg ICAgICB2YV9lbmQoYXJncyk7CiAgICAgICAgYnVmW3NpemVvZihidWYpIC0gMV0gPSAwOwogICAg ICAgIGludCBsZW4gPSBzdHJsZW4oYnVmKTsKICAgICAgICBpbnQgZmQgPSBvcGVuKGZpbGUsIE9f V1JPTkxZIHwgT19DTE9FWEVDKTsKICAgICAgICBpZiAoZmQgPT0gLTEpCiAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKICAgICAgICBpZiAod3JpdGUoZmQsIGJ1ZiwgbGVuKSAhPSBsZW4pIHsKICAg ICAgICAgICAgaW50IGVyciA9IGVycm5vOwogICAgICAgICAgICBjbG9zZShmZCk7CiAgICAgICAg ICAgIGVycm5vID0gZXJyOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAg ICAgIGNsb3NlKGZkKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvLyUgVGhpcyBj b2RlIGlzIGRlcml2ZWQgZnJvbSBwdWZmLntjLGh9LCBmb3VuZCBpbiB0aGUgemxpYiBkZXZlbG9w bWVudC4gVGhlCiAgICAvLyUgb3JpZ2luYWwgZmlsZXMgY29tZSB3aXRoIHRoZSBmb2xsb3dpbmcg Y29weXJpZ2h0IG5vdGljZToKCiAgICAvLyUgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTMgTWFyayBB ZGxlciwgYWxsIHJpZ2h0cyByZXNlcnZlZAogICAgLy8lIHZlcnNpb24gMi4zLCAyMSBKYW4gMjAx MwogICAgLy8lIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkg ZXhwcmVzcyBvciBpbXBsaWVkCiAgICAvLyUgd2FycmFudHkuICBJbiBubyBldmVudCB3aWxsIHRo ZSBhdXRob3IgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCiAgICAvLyUgYXJpc2luZyBm cm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KICAgIC8vJSBQZXJtaXNzaW9uIGlzIGdyYW50 ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSwKICAgIC8v JSBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQg cmVkaXN0cmlidXRlIGl0CiAgICAvLyUgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg cmVzdHJpY3Rpb25zOgogICAgLy8lIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0 IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90CiAgICAvLyUgICAgY2xhaW0gdGhh dCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdh cmUKICAgIC8vJSAgICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9k dWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUKICAgIC8vJSAgICBhcHByZWNpYXRlZCBidXQgaXMg bm90IHJlcXVpcmVkLgogICAgLy8lIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUg cGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kCm11c3Qgbm90IGJlCiAgICAvLyUgICAgbWlzcmVw cmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgogICAgLy8lIDMuIFRoaXMg bm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZQpkaXN0 cmlidXRpb24uCiAgICAvLyUgTWFyayBBZGxlciAgICBtYWRsZXJAYWx1bW5pLmNhbHRlY2guZWR1 CgogICAgLy8lIEJFR0lOIENPREUgREVSSVZFRCBGUk9NIHB1ZmYue2MsaH0KCiAgICAjZGVmaW5l IE1BWEJJVFMgMTUKICAgICNkZWZpbmUgTUFYTENPREVTIDI4NgogICAgI2RlZmluZSBNQVhEQ09E RVMgMzAKICAgICNkZWZpbmUgTUFYQ09ERVMgKE1BWExDT0RFUyArIE1BWERDT0RFUykKICAgICNk ZWZpbmUgRklYTENPREVTIDI4OAoKICAgIHN0cnVjdCBwdWZmX3N0YXRlIHsKICAgICAgICB1bnNp Z25lZCBjaGFyKiBvdXQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBvdXRsZW47CiAgICAgICAgdW5z aWduZWQgbG9uZyBvdXRjbnQ7CiAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogaW47CiAgICAg ICAgdW5zaWduZWQgbG9uZyBpbmxlbjsKICAgICAgICB1bnNpZ25lZCBsb25nIGluY250OwogICAg ICAgIGludCBiaXRidWY7CiAgICAgICAgaW50IGJpdGNudDsKICAgICAgICBqbXBfYnVmIGVudjsK ICAgIH07CiAgICBzdGF0aWMgaW50IHB1ZmZfYml0cyhzdHJ1Y3QgcHVmZl9zdGF0ZSogcywgaW50 IG5lZWQpIHsKICAgICAgICBsb25nIHZhbCA9IHMtPmJpdGJ1ZjsKICAgICAgICB3aGlsZSAocy0+ Yml0Y250IDwgbmVlZCkgewogICAgICAgICAgICBpZiAocy0+aW5jbnQgPT0gcy0+aW5sZW4pCiAg ICAgICAgICAgICAgICBsb25nam1wKHMtPmVudiwgMSk7CiAgICAgICAgICAgIHZhbCB8PSAobG9u Zykocy0+aW5bcy0+aW5jbnQrK10pIDw8IHMtPmJpdGNudDsKICAgICAgICAgICAgcy0+Yml0Y250 ICs9IDg7CiAgICAgICAgfQogICAgICAgIHMtPmJpdGJ1ZiA9IChpbnQpKHZhbCA+PiBuZWVkKTsK ICAgICAgICBzLT5iaXRjbnQgLT0gbmVlZDsKICAgICAgICByZXR1cm4gKGludCkodmFsICYgKCgx TCA8PCBuZWVkKSAtIDEpKTsKICAgIH0KICAgIHN0YXRpYyBpbnQgcHVmZl9zdG9yZWQoc3RydWN0 IHB1ZmZfc3RhdGUqIHMpIHsKICAgICAgICBzLT5iaXRidWYgPSAwOwogICAgICAgIHMtPmJpdGNu dCA9IDA7CiAgICAgICAgaWYgKHMtPmluY250ICsgNCA+IHMtPmlubGVuKQogICAgICAgICAgICBy ZXR1cm4gMjsKICAgICAgICB1bnNpZ25lZCBsZW4gPSBzLT5pbltzLT5pbmNudCsrXTsKICAgICAg ICBsZW4gfD0gcy0+aW5bcy0+aW5jbnQrK10gPDwgODsKICAgICAgICBpZiAocy0+aW5bcy0+aW5j bnQrK10gIT0gKH5sZW4gJiAweGZmKSB8fAogICAgICAgICAgICAgICAgcy0+aW5bcy0+aW5jbnQr K10gIT0gKCh+bGVuID4+IDgpICYgMHhmZikpCiAgICAgICAgICAgIHJldHVybiAtMjsKICAgICAg ICBpZiAocy0+aW5jbnQgKyBsZW4gPiBzLT5pbmxlbikKICAgICAgICAgICAgcmV0dXJuIDI7CiAg ICAgICAgaWYgKHMtPm91dGNudCArIGxlbiA+IHMtPm91dGxlbikKICAgICAgICAgICAgcmV0dXJu IDE7CiAgICAgICAgZm9yICg7IGxlbi0tOyBzLT5vdXRjbnQrKywgcy0+aW5jbnQrKykgewogICAg ICAgICAgICBpZiAocy0+aW5bcy0+aW5jbnRdKQogICAgICAgICAgICAgICAgcy0+b3V0W3MtPm91 dGNudF0gPSBzLT5pbltzLT5pbmNudF07CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwogICAg fQogICAgc3RydWN0IHB1ZmZfaHVmZm1hbiB7CiAgICAgICAgc2hvcnQqIGNvdW50OwogICAgICAg IHNob3J0KiBzeW1ib2w7CiAgICB9OwogICAgc3RhdGljIGludCBwdWZmX2RlY29kZShzdHJ1Y3Qg cHVmZl9zdGF0ZSogcywgY29uc3Qgc3RydWN0IHB1ZmZfaHVmZm1hbiogaCkgewogICAgICAgIGlu dCBmaXJzdCA9IDA7CiAgICAgICAgaW50IGluZGV4ID0gMDsKICAgICAgICBpbnQgYml0YnVmID0g cy0+Yml0YnVmOwogICAgICAgIGludCBsZWZ0ID0gcy0+Yml0Y250OwogICAgICAgIGludCBjb2Rl ID0gZmlyc3QgPSBpbmRleCA9IDA7CiAgICAgICAgaW50IGxlbiA9IDE7CiAgICAgICAgc2hvcnQq IG5leHQgPSBoLT5jb3VudCArIDE7CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgd2hp bGUgKGxlZnQtLSkgewogICAgICAgICAgICAgICAgY29kZSB8PSBiaXRidWYgJiAxOwogICAgICAg ICAgICAgICAgYml0YnVmID4+PSAxOwogICAgICAgICAgICAgICAgaW50IGNvdW50ID0gKm5leHQr KzsKICAgICAgICAgICAgICAgIGlmIChjb2RlIC0gY291bnQgPCBmaXJzdCkgewogICAgICAgICAg ICAgICAgICAgIHMtPmJpdGJ1ZiA9IGJpdGJ1ZjsKICAgICAgICAgICAgICAgICAgICBzLT5iaXRj bnQgPSAocy0+Yml0Y250IC0gbGVuKSAmIDc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGgt PnN5bWJvbFtpbmRleCArIChjb2RlIC0gZmlyc3QpXTsKICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgIGluZGV4ICs9IGNvdW50OwogICAgICAgICAgICAgICAgZmlyc3QgKz0gY291bnQ7 CiAgICAgICAgICAgICAgICBmaXJzdCA8PD0gMTsKICAgICAgICAgICAgICAgIGNvZGUgPDw9IDE7 CiAgICAgICAgICAgICAgICBsZW4rKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZWZ0ID0g KE1BWEJJVFMgKyAxKSAtIGxlbjsKICAgICAgICAgICAgaWYgKGxlZnQgPT0gMCkKICAgICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICAgICBpZiAocy0+aW5jbnQgPT0gcy0+aW5sZW4pCiAgICAg ICAgICAgICAgICBsb25nam1wKHMtPmVudiwgMSk7CiAgICAgICAgICAgIGJpdGJ1ZiA9IHMtPmlu W3MtPmluY250KytdOwogICAgICAgICAgICBpZiAobGVmdCA+IDgpCiAgICAgICAgICAgICAgICBs ZWZ0ID0gODsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIC0xMDsKICAgIH0KICAgIHN0YXRpYyBp bnQgcHVmZl9jb25zdHJ1Y3Qoc3RydWN0IHB1ZmZfaHVmZm1hbiogaCwgY29uc3Qgc2hvcnQqCmxl bmd0aCwgaW50IG4pIHsKICAgICAgICBpbnQgbGVuOwogICAgICAgIGZvciAobGVuID0gMDsgbGVu IDw9IE1BWEJJVFM7IGxlbisrKQogICAgICAgICAgICBoLT5jb3VudFtsZW5dID0gMDsKICAgICAg ICBpbnQgc3ltYm9sOwogICAgICAgIGZvciAoc3ltYm9sID0gMDsgc3ltYm9sIDwgbjsgc3ltYm9s KyspCiAgICAgICAgICAgIChoLT5jb3VudFtsZW5ndGhbc3ltYm9sXV0pKys7CiAgICAgICAgaWYg KGgtPmNvdW50WzBdID09IG4pCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGludCBsZWZ0 ID0gMTsKICAgICAgICBmb3IgKGxlbiA9IDE7IGxlbiA8PSBNQVhCSVRTOyBsZW4rKykgewogICAg ICAgICAgICBsZWZ0IDw8PSAxOwogICAgICAgICAgICBsZWZ0IC09IGgtPmNvdW50W2xlbl07CiAg ICAgICAgICAgIGlmIChsZWZ0IDwgMCkKICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0OwogICAg ICAgIH0KICAgICAgICBzaG9ydCBvZmZzW01BWEJJVFMgKyAxXTsKICAgICAgICBvZmZzWzFdID0g MDsKICAgICAgICBmb3IgKGxlbiA9IDE7IGxlbiA8IE1BWEJJVFM7IGxlbisrKQogICAgICAgICAg ICBvZmZzW2xlbiArIDFdID0gb2Zmc1tsZW5dICsgaC0+Y291bnRbbGVuXTsKICAgICAgICBmb3Ig KHN5bWJvbCA9IDA7IHN5bWJvbCA8IG47IHN5bWJvbCsrKQogICAgICAgICAgICBpZiAobGVuZ3Ro W3N5bWJvbF0gIT0gMCkKICAgICAgICAgICAgICAgIGgtPnN5bWJvbFtvZmZzW2xlbmd0aFtzeW1i b2xdXSsrXSA9IHN5bWJvbDsKICAgICAgICByZXR1cm4gbGVmdDsKICAgIH0KICAgIHN0YXRpYyBp bnQgcHVmZl9jb2RlcyhzdHJ1Y3QgcHVmZl9zdGF0ZSogcywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0CnB1ZmZfaHVmZm1hbiogbGVu Y29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0CnB1ZmZfaHVmZm1hbiogZGlzdGNvZGUpIHsKICAgICAgICBzdGF0aWMgY29uc3Qg c2hvcnQgbGVuc1syOV0gPSB7MywgIDQsICA1LCAgNiwgICA3LCAgIDgsICAgOSwKMTAsICAxMSwg MTMsCgoxNSwgMTcsIDE5LCAyMywgIDI3LCAgMzEsICAzNSwgIDQzLCAgNTEsIDU5LAoKNjcsIDgz LCA5OSwgMTE1LCAxMzEsIDE2MywgMTk1LCAyMjcsIDI1OH07CiAgICAgICAgc3RhdGljIGNvbnN0 IHNob3J0IGxleHRbMjldID0gezAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsCjEsIDEsIDIs IDIsIDIsCgoyLCAzLCAzLCAzLCAzLCA0LCA0LCA0LCA0LCA1LCA1LCA1LCA1LCAwfTsKICAgICAg ICBzdGF0aWMgY29uc3Qgc2hvcnQgZGlzdHNbMzBdID0gewogICAgICAgICAgICAgICAgMSwgICAg MiwgICAgMywgICAgNCwgICAgNSwgICAgNywgICAgOSwgICAgMTMsICAgIDE3LCAgICAyNSwKICAg ICAgICAgICAgICAgIDMzLCAgIDQ5LCAgIDY1LCAgIDk3LCAgIDEyOSwgIDE5MywgIDI1NywgIDM4 NSwgICA1MTMsICAgNzY5LAogICAgICAgICAgICAgICAgMTAyNSwgMTUzNywgMjA0OSwgMzA3Mywg NDA5NywgNjE0NSwgODE5MywgMTIyODksIDE2Mzg1LCAyNDU3N307CiAgICAgICAgc3RhdGljIGNv bnN0IHNob3J0IGRleHRbMzBdID0gezAsIDAsIDAsICAwLCAgMSwgIDEsICAyLCAgMiwgIDMsICAz LAoKNCwgNCwgNSwgIDUsICA2LCAgNiwgIDcsICA3LCAgOCwgIDgsCgo5LCA5LCAxMCwgMTAsIDEx LCAxMSwgMTIsIDEyLCAxMywgMTN9OwogICAgICAgIGludCBzeW1ib2w7CiAgICAgICAgZG8gewog ICAgICAgICAgICBzeW1ib2wgPSBwdWZmX2RlY29kZShzLCBsZW5jb2RlKTsKICAgICAgICAgICAg aWYgKHN5bWJvbCA8IDApCiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sOwogICAgICAgICAg ICBpZiAoc3ltYm9sIDwgMjU2KSB7CiAgICAgICAgICAgICAgICBpZiAocy0+b3V0Y250ID09IHMt Pm91dGxlbikKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgIGlm IChzeW1ib2wpCiAgICAgICAgICAgICAgICAgICAgcy0+b3V0W3MtPm91dGNudF0gPSBzeW1ib2w7 CiAgICAgICAgICAgICAgICBzLT5vdXRjbnQrKzsKICAgICAgICAgICAgfSBlbHNlIGlmIChzeW1i b2wgPiAyNTYpIHsKICAgICAgICAgICAgICAgIHN5bWJvbCAtPSAyNTc7CiAgICAgICAgICAgICAg ICBpZiAoc3ltYm9sID49IDI5KQogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTA7CiAgICAg ICAgICAgICAgICBpbnQgbGVuID0gbGVuc1tzeW1ib2xdICsgcHVmZl9iaXRzKHMsIGxleHRbc3lt Ym9sXSk7CiAgICAgICAgICAgICAgICBzeW1ib2wgPSBwdWZmX2RlY29kZShzLCBkaXN0Y29kZSk7 CiAgICAgICAgICAgICAgICBpZiAoc3ltYm9sIDwgMCkKICAgICAgICAgICAgICAgICAgICByZXR1 cm4gc3ltYm9sOwogICAgICAgICAgICAgICAgdW5zaWduZWQgZGlzdCA9IGRpc3RzW3N5bWJvbF0g KyBwdWZmX2JpdHMocywgZGV4dFtzeW1ib2xdKTsKICAgICAgICAgICAgICAgIGlmIChkaXN0ID4g cy0+b3V0Y250KQogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTE7CiAgICAgICAgICAgICAg ICBpZiAocy0+b3V0Y250ICsgbGVuID4gcy0+b3V0bGVuKQogICAgICAgICAgICAgICAgICAgIHJl dHVybiAxOwogICAgICAgICAgICAgICAgd2hpbGUgKGxlbi0tKSB7CiAgICAgICAgICAgICAgICAg ICAgaWYgKGRpc3QgPD0gcy0+b3V0Y250ICYmIHMtPm91dFtzLT5vdXRjbnQgLSBkaXN0XSkKICAg ICAgICAgICAgICAgICAgICAgICAgcy0+b3V0W3MtPm91dGNudF0gPSBzLT5vdXRbcy0+b3V0Y250 IC0gZGlzdF07CiAgICAgICAgICAgICAgICAgICAgcy0+b3V0Y250Kys7CiAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IHdoaWxlIChzeW1ib2wgIT0gMjU2KTsKICAgICAg ICByZXR1cm4gMDsKICAgIH0KICAgIHN0YXRpYyBpbnQgcHVmZl9maXhlZChzdHJ1Y3QgcHVmZl9z dGF0ZSogcykgewogICAgICAgIHN0YXRpYyBpbnQgdmlyZ2luID0gMTsKICAgICAgICBzdGF0aWMg c2hvcnQgbGVuY250W01BWEJJVFMgKyAxXSwgbGVuc3ltW0ZJWExDT0RFU107CiAgICAgICAgc3Rh dGljIHNob3J0IGRpc3RjbnRbTUFYQklUUyArIDFdLCBkaXN0c3ltW01BWERDT0RFU107CiAgICAg ICAgc3RhdGljIHN0cnVjdCBwdWZmX2h1ZmZtYW4gbGVuY29kZSwgZGlzdGNvZGU7CiAgICAgICAg aWYgKHZpcmdpbikgewogICAgICAgICAgICBsZW5jb2RlLmNvdW50ID0gbGVuY250OwogICAgICAg ICAgICBsZW5jb2RlLnN5bWJvbCA9IGxlbnN5bTsKICAgICAgICAgICAgZGlzdGNvZGUuY291bnQg PSBkaXN0Y250OwogICAgICAgICAgICBkaXN0Y29kZS5zeW1ib2wgPSBkaXN0c3ltOwogICAgICAg ICAgICBzaG9ydCBsZW5ndGhzW0ZJWExDT0RFU107CiAgICAgICAgICAgIGludCBzeW1ib2w7CiAg ICAgICAgICAgIGZvciAoc3ltYm9sID0gMDsgc3ltYm9sIDwgMTQ0OyBzeW1ib2wrKykKICAgICAg ICAgICAgICAgIGxlbmd0aHNbc3ltYm9sXSA9IDg7CiAgICAgICAgICAgIGZvciAoOyBzeW1ib2wg PCAyNTY7IHN5bWJvbCsrKQogICAgICAgICAgICAgICAgbGVuZ3Roc1tzeW1ib2xdID0gOTsKICAg ICAgICAgICAgZm9yICg7IHN5bWJvbCA8IDI4MDsgc3ltYm9sKyspCiAgICAgICAgICAgICAgICBs ZW5ndGhzW3N5bWJvbF0gPSA3OwogICAgICAgICAgICBmb3IgKDsgc3ltYm9sIDwgRklYTENPREVT OyBzeW1ib2wrKykKICAgICAgICAgICAgICAgIGxlbmd0aHNbc3ltYm9sXSA9IDg7CiAgICAgICAg ICAgIHB1ZmZfY29uc3RydWN0KCZsZW5jb2RlLCBsZW5ndGhzLCBGSVhMQ09ERVMpOwogICAgICAg ICAgICBmb3IgKHN5bWJvbCA9IDA7IHN5bWJvbCA8IE1BWERDT0RFUzsgc3ltYm9sKyspCiAgICAg ICAgICAgICAgICBsZW5ndGhzW3N5bWJvbF0gPSA1OwogICAgICAgICAgICBwdWZmX2NvbnN0cnVj dCgmZGlzdGNvZGUsIGxlbmd0aHMsIE1BWERDT0RFUyk7CiAgICAgICAgICAgIHZpcmdpbiA9IDA7 CiAgICAgICAgfQogICAgICAgIHJldHVybiBwdWZmX2NvZGVzKHMsICZsZW5jb2RlLCAmZGlzdGNv ZGUpOwogICAgfQogICAgc3RhdGljIGludCBwdWZmX2R5bmFtaWMoc3RydWN0IHB1ZmZfc3RhdGUq IHMpIHsKICAgICAgICBzdGF0aWMgY29uc3Qgc2hvcnQgb3JkZXJbMTldID0gezE2LCAxNywgMTgs IDAsIDgsICA3LCA5LCAgNiwgMTAsIDUsCgogMTEsIDQsICAxMiwgMywgMTMsIDIsIDE0LCAxLCAx NX07CiAgICAgICAgaW50IG5sZW4gPSBwdWZmX2JpdHMocywgNSkgKyAyNTc7CiAgICAgICAgaW50 IG5kaXN0ID0gcHVmZl9iaXRzKHMsIDUpICsgMTsKICAgICAgICBpbnQgbmNvZGUgPSBwdWZmX2Jp dHMocywgNCkgKyA0OwogICAgICAgIGlmIChubGVuID4gTUFYTENPREVTIHx8IG5kaXN0ID4gTUFY RENPREVTKQogICAgICAgICAgICByZXR1cm4gLTM7CiAgICAgICAgc2hvcnQgbGVuZ3Roc1tNQVhD T0RFU107CiAgICAgICAgaW50IGluZGV4OwogICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8 IG5jb2RlOyBpbmRleCsrKQogICAgICAgICAgICBsZW5ndGhzW29yZGVyW2luZGV4XV0gPSBwdWZm X2JpdHMocywgMyk7CiAgICAgICAgZm9yICg7IGluZGV4IDwgMTk7IGluZGV4KyspCiAgICAgICAg ICAgIGxlbmd0aHNbb3JkZXJbaW5kZXhdXSA9IDA7CiAgICAgICAgc2hvcnQgbGVuY250W01BWEJJ VFMgKyAxXSwgbGVuc3ltW01BWExDT0RFU107CiAgICAgICAgc3RydWN0IHB1ZmZfaHVmZm1hbiBs ZW5jb2RlID0ge2xlbmNudCwgbGVuc3ltfTsKICAgICAgICBpbnQgZXJyID0gcHVmZl9jb25zdHJ1 Y3QoJmxlbmNvZGUsIGxlbmd0aHMsIDE5KTsKICAgICAgICBpZiAoZXJyICE9IDApCiAgICAgICAg ICAgIHJldHVybiAtNDsKICAgICAgICBpbmRleCA9IDA7CiAgICAgICAgd2hpbGUgKGluZGV4IDwg bmxlbiArIG5kaXN0KSB7CiAgICAgICAgICAgIGludCBzeW1ib2w7CiAgICAgICAgICAgIGludCBs ZW47CiAgICAgICAgICAgIHN5bWJvbCA9IHB1ZmZfZGVjb2RlKHMsICZsZW5jb2RlKTsKICAgICAg ICAgICAgaWYgKHN5bWJvbCA8IDApCiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sOwogICAg ICAgICAgICBpZiAoc3ltYm9sIDwgMTYpCiAgICAgICAgICAgICAgICBsZW5ndGhzW2luZGV4Kytd ID0gc3ltYm9sOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGxlbiA9IDA7CiAg ICAgICAgICAgICAgICBpZiAoc3ltYm9sID09IDE2KSB7CiAgICAgICAgICAgICAgICAgICAgaWYg KGluZGV4ID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtNTsKICAgICAgICAg ICAgICAgICAgICBsZW4gPSBsZW5ndGhzW2luZGV4IC0gMV07CiAgICAgICAgICAgICAgICAgICAg c3ltYm9sID0gMyArIHB1ZmZfYml0cyhzLCAyKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo c3ltYm9sID09IDE3KQogICAgICAgICAgICAgICAgICAgIHN5bWJvbCA9IDMgKyBwdWZmX2JpdHMo cywgMyk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0g MTEgKyBwdWZmX2JpdHMocywgNyk7CiAgICAgICAgICAgICAgICBpZiAoaW5kZXggKyBzeW1ib2wg PiBubGVuICsgbmRpc3QpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC02OwogICAgICAgICAg ICAgICAgd2hpbGUgKHN5bWJvbC0tKQogICAgICAgICAgICAgICAgICAgIGxlbmd0aHNbaW5kZXgr K10gPSBsZW47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGxlbmd0aHNbMjU2 XSA9PSAwKQogICAgICAgICAgICByZXR1cm4gLTk7CiAgICAgICAgZXJyID0gcHVmZl9jb25zdHJ1 Y3QoJmxlbmNvZGUsIGxlbmd0aHMsIG5sZW4pOwogICAgICAgIGlmIChlcnIgJiYgKGVyciA8IDAg fHwgbmxlbiAhPSBsZW5jb2RlLmNvdW50WzBdICsgbGVuY29kZS5jb3VudFsxXSkpCiAgICAgICAg ICAgIHJldHVybiAtNzsKICAgICAgICBzaG9ydCBkaXN0Y250W01BWEJJVFMgKyAxXSwgZGlzdHN5 bVtNQVhEQ09ERVNdOwogICAgICAgIHN0cnVjdCBwdWZmX2h1ZmZtYW4gZGlzdGNvZGUgPSB7ZGlz dGNudCwgZGlzdHN5bX07CiAgICAgICAgZXJyID0gcHVmZl9jb25zdHJ1Y3QoJmRpc3Rjb2RlLCBs ZW5ndGhzICsgbmxlbiwgbmRpc3QpOwogICAgICAgIGlmIChlcnIgJiYgKGVyciA8IDAgfHwgbmRp c3QgIT0gZGlzdGNvZGUuY291bnRbMF0gKyBkaXN0Y29kZS5jb3VudFsxXSkpCiAgICAgICAgICAg IHJldHVybiAtODsKICAgICAgICByZXR1cm4gcHVmZl9jb2RlcyhzLCAmbGVuY29kZSwgJmRpc3Rj b2RlKTsKICAgIH0KICAgIHN0YXRpYyBpbnQgcHVmZih1bnNpZ25lZCBjaGFyKiBkZXN0LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nKiBkZXN0bGVuLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBz b3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg c291cmNlbGVuKSB7CiAgICAgICAgc3RydWN0IHB1ZmZfc3RhdGUgcyA9IHsKICAgICAgICAgICAg ICAgIC5vdXQgPSBkZXN0LAogICAgICAgICAgICAgICAgLm91dGxlbiA9ICpkZXN0bGVuLAogICAg ICAgICAgICAgICAgLm91dGNudCA9IDAsCiAgICAgICAgICAgICAgICAuaW4gPSBzb3VyY2UsCiAg ICAgICAgICAgICAgICAuaW5sZW4gPSBzb3VyY2VsZW4sCiAgICAgICAgICAgICAgICAuaW5jbnQg PSAwLAogICAgICAgICAgICAgICAgLmJpdGJ1ZiA9IDAsCiAgICAgICAgICAgICAgICAuYml0Y250 ID0gMCwKICAgICAgICB9OwogICAgICAgIGludCBlcnI7CiAgICAgICAgaWYgKHNldGptcChzLmVu dikgIT0gMCkKICAgICAgICAgICAgZXJyID0gMjsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAg aW50IGxhc3Q7CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIGxhc3QgPSBwdWZmX2Jp dHMoJnMsIDEpOwogICAgICAgICAgICAgICAgaW50IHR5cGUgPSBwdWZmX2JpdHMoJnMsIDIpOwog ICAgICAgICAgICAgICAgZXJyID0gdHlwZSA9PSAwID8gcHVmZl9zdG9yZWQoJnMpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHR5cGUgPT0gMSA/IHB1 ZmZfZml4ZWQoJnMpCgogIDogKHR5cGUgPT0gMiA/IHB1ZmZfZHluYW1pYygmcykgOiAtMSkpOwog ICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICAgICB9IHdoaWxlICghbGFzdCk7CiAgICAgICAgfQogICAgICAgICpkZXN0bGVuID0g cy5vdXRjbnQ7CiAgICAgICAgcmV0dXJuIGVycjsKICAgIH0KCiAgICAvLyUgRU5EIENPREUgREVS SVZFRCBGUk9NIHB1ZmYue2MsaH0KCiAgICAjZGVmaW5lIFpMSUJfSEVBREVSX1dJRFRIIDIKCiAg ICBzdGF0aWMgaW50IHB1ZmZfemxpYl90b19maWxlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHNvdXJj ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkCmxvbmcgc291cmNlbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3RfZmQpIHsKICAgICAg ICBpZiAoc291cmNlbGVuIDwgWkxJQl9IRUFERVJfV0lEVEgpCiAgICAgICAgICAgIHJldHVybiAw OwogICAgICAgIHNvdXJjZSArPSBaTElCX0hFQURFUl9XSURUSDsKICAgICAgICBzb3VyY2VsZW4g LT0gWkxJQl9IRUFERVJfV0lEVEg7CiAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBtYXhfZGVz dGxlbiA9IDEzMiA8PCAyMDsKICAgICAgICB2b2lkKiByZXQgPSBtbWFwKDAsIG1heF9kZXN0bGVu LCBQUk9UX1dSSVRFIHwgUFJPVF9SRUFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKICAgICAgICBpZiAocmV0 ID09IE1BUF9GQUlMRUQpCiAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICB1bnNpZ25lZCBj aGFyKiBkZXN0ID0gKHVuc2lnbmVkIGNoYXIqKXJldDsKICAgICAgICB1bnNpZ25lZCBsb25nIGRl c3RsZW4gPSBtYXhfZGVzdGxlbjsKICAgICAgICBpbnQgZXJyID0gcHVmZihkZXN0LCAmZGVzdGxl biwgc291cmNlLCBzb3VyY2VsZW4pOwogICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgbXVu bWFwKGRlc3QsIG1heF9kZXN0bGVuKTsKICAgICAgICAgICAgZXJybm8gPSAtZXJyOwogICAgICAg ICAgICByZXR1cm4gLTE7CiAgICAgICAgfQogICAgICAgIGlmICh3cml0ZShkZXN0X2ZkLCBkZXN0 LCBkZXN0bGVuKSAhPSAoc3NpemVfdClkZXN0bGVuKSB7CiAgICAgICAgICAgIG11bm1hcChkZXN0 LCBtYXhfZGVzdGxlbik7CiAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICB9CiAgICAgICAg cmV0dXJuIG11bm1hcChkZXN0LCBtYXhfZGVzdGxlbik7CiAgICB9CgogICAgc3RhdGljIGludCBz ZXR1cF9sb29wX2RldmljZSh1bnNpZ25lZCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBz aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QKY2hhciogbG9vcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGxvb3BmZF9wKSB7CiAgICAg ICAgaW50IGVyciA9IDAsIGxvb3BmZCA9IC0xOwogICAgICAgIGludCBtZW1mZCA9IHN5c2NhbGwo X19OUl9tZW1mZF9jcmVhdGUsICJzeXprYWxsZXIiLCAwKTsKICAgICAgICBpZiAobWVtZmQgPT0g LTEpIHsKICAgICAgICAgICAgZXJyID0gZXJybm87CiAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAg ICAgICAgfQogICAgICAgIGlmIChwdWZmX3psaWJfdG9fZmlsZShkYXRhLCBzaXplLCBtZW1mZCkp IHsKICAgICAgICAgICAgZXJyID0gZXJybm87CiAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2Vf bWVtZmQ7CiAgICAgICAgfQogICAgICAgIGxvb3BmZCA9IG9wZW4obG9vcG5hbWUsIE9fUkRXUik7 CiAgICAgICAgaWYgKGxvb3BmZCA9PSAtMSkgewogICAgICAgICAgICBlcnIgPSBlcnJubzsKICAg ICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9tZW1mZDsKICAgICAgICB9CiAgICAgICAgaWYgKGlv Y3RsKGxvb3BmZCwgTE9PUF9TRVRfRkQsIG1lbWZkKSkgewogICAgICAgICAgICBpZiAoZXJybm8g IT0gRUJVU1kpIHsKICAgICAgICAgICAgICAgIGVyciA9IGVycm5vOwogICAgICAgICAgICAgICAg Z290byBlcnJvcl9jbG9zZV9sb29wOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlvY3RsKGxv b3BmZCwgTE9PUF9DTFJfRkQsIDApOwogICAgICAgICAgICB1c2xlZXAoMTAwMCk7CiAgICAgICAg ICAgIGlmIChpb2N0bChsb29wZmQsIExPT1BfU0VUX0ZELCBtZW1mZCkpIHsKICAgICAgICAgICAg ICAgIGVyciA9IGVycm5vOwogICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9sb29wOwog ICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNsb3NlKG1lbWZkKTsKICAgICAgICAqbG9v cGZkX3AgPSBsb29wZmQ7CiAgICAgICAgcmV0dXJuIDA7CgogICAgZXJyb3JfY2xvc2VfbG9vcDoK ICAgICAgICBjbG9zZShsb29wZmQpOwogICAgZXJyb3JfY2xvc2VfbWVtZmQ6CiAgICAgICAgY2xv c2UobWVtZmQpOwogICAgZXJyb3I6CiAgICAgICAgZXJybm8gPSBlcnI7CiAgICAgICAgcmV0dXJu IC0xOwogICAgfQoKICAgIHN0YXRpYyBsb25nIHN5el9tb3VudF9pbWFnZSh2b2xhdGlsZSBsb25n IGZzYXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2b2xhdGlsZSBsb25nIGRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9sYXRpbGUgbG9uZyBmbGFncywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dm9sYXRpbGUKbG9uZyBvcHRzYXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2xhdGlsZQpsb25nIGNoYW5nZV9kaXIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv bGF0aWxlCnVuc2lnbmVkIGxvbmcgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9sYXRpbGUKbG9uZyBpbWFnZSkgewogICAg ICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSAodW5zaWduZWQgY2hhciopaW1hZ2U7CiAgICAgICAg aW50IHJlcyA9IC0xLCBlcnIgPSAwLCBsb29wZmQgPSAtMSwgbmVlZF9sb29wX2RldmljZSA9ICEh c2l6ZTsKICAgICAgICBjaGFyKiBtb3VudF9vcHRzID0gKGNoYXIqKW9wdHNhcmc7CiAgICAgICAg Y2hhciogdGFyZ2V0ID0gKGNoYXIqKWRpcjsKICAgICAgICBjaGFyKiBmcyA9IChjaGFyKilmc2Fy ZzsKICAgICAgICBjaGFyKiBzb3VyY2UgPSBOVUxMOwogICAgICAgIGNoYXIgbG9vcG5hbWVbNjRd OwogICAgICAgIGlmIChuZWVkX2xvb3BfZGV2aWNlKSB7CiAgICAgICAgICAgIG1lbXNldChsb29w bmFtZSwgMCwgc2l6ZW9mKGxvb3BuYW1lKSk7CiAgICAgICAgICAgIHNucHJpbnRmKGxvb3BuYW1l LCBzaXplb2YobG9vcG5hbWUpLCAiL2Rldi9sb29wJWxsdSIsIHByb2NpZCk7CiAgICAgICAgICAg IGlmIChzZXR1cF9sb29wX2RldmljZShkYXRhLCBzaXplLCBsb29wbmFtZSwgJmxvb3BmZCkgPT0g LTEpCiAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgIHNvdXJjZSA9IGxvb3Bu YW1lOwogICAgICAgIH0KICAgICAgICBta2Rpcih0YXJnZXQsIDA3NzcpOwogICAgICAgIGNoYXIg b3B0c1syNTZdOwogICAgICAgIG1lbXNldChvcHRzLCAwLCBzaXplb2Yob3B0cykpOwogICAgICAg IGlmIChzdHJsZW4obW91bnRfb3B0cykgPiAoc2l6ZW9mKG9wdHMpIC0gMzIpKSB7CiAgICAgICAg fQogICAgICAgIHN0cm5jcHkob3B0cywgbW91bnRfb3B0cywgc2l6ZW9mKG9wdHMpIC0gMzIpOwog ICAgICAgIGlmIChzdHJjbXAoZnMsICJpc285NjYwIikgPT0gMCkgewogICAgICAgICAgICBmbGFn cyB8PSBNU19SRE9OTFk7CiAgICAgICAgfSBlbHNlIGlmIChzdHJuY21wKGZzLCAiZXh0IiwgMykg PT0gMCkgewogICAgICAgICAgICBib29sIGhhc19yZW1vdW50X3JvID0gZmFsc2U7CiAgICAgICAg ICAgIGNoYXIqIHJlbW91bnRfcm9fc3RhcnQgPSBzdHJzdHIob3B0cywgImVycm9ycz1yZW1vdW50 LXJvIik7CiAgICAgICAgICAgIGlmIChyZW1vdW50X3JvX3N0YXJ0ICE9IE5VTEwpIHsKICAgICAg ICAgICAgICAgIGNoYXIgYWZ0ZXIgPSAqKHJlbW91bnRfcm9fc3RhcnQgKyBzdHJsZW4oImVycm9y cz1yZW1vdW50LXJvIikpOwogICAgICAgICAgICAgICAgY2hhciBiZWZvcmUgPSByZW1vdW50X3Jv X3N0YXJ0ID09IG9wdHMgPyAnXDAnIDoKKihyZW1vdW50X3JvX3N0YXJ0IC0gMSk7CiAgICAgICAg ICAgICAgICBoYXNfcmVtb3VudF9ybyA9ICgoYmVmb3JlID09ICdcMCcgfHwgYmVmb3JlID09ICcs JykgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChhZnRlciA9PSAnXDAnIHx8CmFmdGVyID09ICcsJykpOwogICAgICAgICAgICB9CiAgICAgICAg ICAgIGlmIChzdHJzdHIob3B0cywgImVycm9ycz1wYW5pYyIpIHx8ICFoYXNfcmVtb3VudF9ybykK ICAgICAgICAgICAgICAgIHN0cmNhdChvcHRzLCAiLGVycm9ycz1jb250aW51ZSIpOwogICAgICAg IH0gZWxzZSBpZiAoc3RyY21wKGZzLCAieGZzIikgPT0gMCkgewogICAgICAgICAgICBzdHJjYXQo b3B0cywgIixub3V1aWQiKTsKICAgICAgICB9CiAgICAgICAgcmVzID0gbW91bnQoc291cmNlLCB0 YXJnZXQsIGZzLCBmbGFncywgb3B0cyk7CiAgICAgICAgaWYgKHJlcyA9PSAtMSkgewogICAgICAg ICAgICBlcnIgPSBlcnJubzsKICAgICAgICAgICAgZ290byBlcnJvcl9jbGVhcl9sb29wOwogICAg ICAgIH0KICAgICAgICByZXMgPSBvcGVuKHRhcmdldCwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSk7 CiAgICAgICAgaWYgKHJlcyA9PSAtMSkgewogICAgICAgICAgICBlcnIgPSBlcnJubzsKICAgICAg ICAgICAgZ290byBlcnJvcl9jbGVhcl9sb29wOwogICAgICAgIH0KICAgICAgICBpZiAoY2hhbmdl X2RpcikgewogICAgICAgICAgICByZXMgPSBjaGRpcih0YXJnZXQpOwogICAgICAgICAgICBpZiAo cmVzID09IC0xKSB7CiAgICAgICAgICAgICAgICBlcnIgPSBlcnJubzsKICAgICAgICAgICAgfQog ICAgICAgIH0KCiAgICBlcnJvcl9jbGVhcl9sb29wOgogICAgICAgIGlmIChuZWVkX2xvb3BfZGV2 aWNlKSB7CiAgICAgICAgICAgIGlvY3RsKGxvb3BmZCwgTE9PUF9DTFJfRkQsIDApOwogICAgICAg ICAgICBjbG9zZShsb29wZmQpOwogICAgICAgIH0KICAgICAgICBlcnJubyA9IGVycjsKICAgICAg ICByZXR1cm4gcmVzOwogICAgfQoKICAgIHN0YXRpYyB2b2lkIGtpbGxfYW5kX3dhaXQoaW50IHBp ZCwgaW50KiBzdGF0dXMpIHsKICAgICAgICBraWxsKC1waWQsIFNJR0tJTEwpOwogICAgICAgIGtp bGwocGlkLCBTSUdLSUxMKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7 CiAgICAgICAgICAgIGlmICh3YWl0cGlkKC0xLCBzdGF0dXMsIFdOT0hBTkcgfCBfX1dBTEwpID09 IHBpZCkKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgdXNsZWVwKDEwMDApOwog ICAgICAgIH0KICAgICAgICBESVIqIGRpciA9IG9wZW5kaXIoIi9zeXMvZnMvZnVzZS9jb25uZWN0 aW9ucyIpOwogICAgICAgIGlmIChkaXIpIHsKICAgICAgICAgICAgZm9yICg7OykgewogICAgICAg ICAgICAgICAgc3RydWN0IGRpcmVudCogZW50ID0gcmVhZGRpcihkaXIpOwogICAgICAgICAgICAg ICAgaWYgKCFlbnQpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBp ZiAoc3RyY21wKGVudC0+ZF9uYW1lLCAiLiIpID09IDAgfHwKc3RyY21wKGVudC0+ZF9uYW1lLCAi Li4iKSA9PSAwKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg Y2hhciBhYm9ydFszMDBdOwogICAgICAgICAgICAgICAgc25wcmludGYoYWJvcnQsIHNpemVvZihh Ym9ydCksCiIvc3lzL2ZzL2Z1c2UvY29ubmVjdGlvbnMvJXMvYWJvcnQiLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbnQtPmRfbmFtZSk7CiAgICAgICAgICAgICAgICBpbnQgZmQg PSBvcGVuKGFib3J0LCBPX1dST05MWSk7CiAgICAgICAgICAgICAgICBpZiAoZmQgPT0gLTEpIHsK ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgIGlmICh3cml0ZShmZCwgYWJvcnQsIDEpIDwgMCkgewogICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNsb3Nl ZGlyKGRpcik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKHdhaXRw aWQoLTEsIHN0YXR1cywgX19XQUxMKSAhPSBwaWQpIHsKICAgICAgICB9CiAgICB9CgogICAgc3Rh dGljIHZvaWQgcmVzZXRfbG9vcCgpIHsKICAgICAgICBjaGFyIGJ1Zls2NF07CiAgICAgICAgc25w cmludGYoYnVmLCBzaXplb2YoYnVmKSwgIi9kZXYvbG9vcCVsbHUiLCBwcm9jaWQpOwogICAgICAg IGludCBsb29wZmQgPSBvcGVuKGJ1ZiwgT19SRFdSKTsKICAgICAgICBpZiAobG9vcGZkICE9IC0x KSB7CiAgICAgICAgICAgIGlvY3RsKGxvb3BmZCwgTE9PUF9DTFJfRkQsIDApOwogICAgICAgICAg ICBjbG9zZShsb29wZmQpOwogICAgICAgIH0KICAgIH0KCiAgICBzdGF0aWMgdm9pZCBzZXR1cF90 ZXN0KCkgewogICAgICAgIHByY3RsKFBSX1NFVF9QREVBVEhTSUcsIFNJR0tJTEwsIDAsIDAsIDAp OwogICAgICAgIHNldHBncnAoKTsKICAgICAgICB3cml0ZV9maWxlKCIvcHJvYy9zZWxmL29vbV9z Y29yZV9hZGoiLCAiMTAwMCIpOwogICAgfQoKICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVfb25lKHZv aWQpOwoKICAgICNkZWZpbmUgV0FJVF9GTEFHUyBfX1dBTEwKCiAgICBzdGF0aWMgdm9pZCBsb29w KHZvaWQpIHsKICAgICAgICBpbnQgaXRlciA9IDA7CiAgICAgICAgZm9yICg7OyBpdGVyKyspIHsK ICAgICAgICAgICAgcmVzZXRfbG9vcCgpOwogICAgICAgICAgICBpbnQgcGlkID0gZm9yaygpOwog ICAgICAgICAgICBpZiAocGlkIDwgMCkKICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAg ICAgIGlmIChwaWQgPT0gMCkgewogICAgICAgICAgICAgICAgc2V0dXBfdGVzdCgpOwogICAgICAg ICAgICAgICAgZXhlY3V0ZV9vbmUoKTsKICAgICAgICAgICAgICAgIGV4aXQoMCk7CiAgICAgICAg ICAgIH0KICAgICAgICAgICAgaW50IHN0YXR1cyA9IDA7CiAgICAgICAgICAgIHVpbnQ2NF90IHN0 YXJ0ID0gY3VycmVudF90aW1lX21zKCk7CiAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAg ICAgICAgIGlmICh3YWl0cGlkKC0xLCAmc3RhdHVzLCBXTk9IQU5HIHwgV0FJVF9GTEFHUykgPT0g cGlkKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgc2xlZXBfbXMo MSk7CiAgICAgICAgICAgICAgICBpZiAoY3VycmVudF90aW1lX21zKCkgLSBzdGFydCA8IDUwMDAp CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICBraWxsX2FuZF93 YWl0KHBpZCwgJnN0YXR1cyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQog ICAgICAgIH0KICAgIH0KCiAgICB2b2lkIGV4ZWN1dGVfb25lKHZvaWQpIHsKICAgICAgICBOT05G QUlMSU5HKG1lbWNweSgodm9pZCopMHgyMDAwMDA0MCwgInZmYXRcMDAwIiwgNSkpOwogICAgICAg IE5PTkZBSUxJTkcobWVtY3B5KCh2b2lkKikweDIwMDAwMjAwLCAiLi9maWxlMFwwMDAiLCA4KSk7 CiAgICAgICAgTk9ORkFJTElORyhzeXpfbW91bnRfaW1hZ2UoLypmcz0qLzB4MjAwMDAwNDAsIC8q ZGlyPSovMHgyMDAwMDIwMCwKCi8qZmxhZ3M9Ki8weDIyMGUwMDIsIC8qb3B0cz0qLzAsIC8qY2hk aXI9Ki8xLAoKLypzaXplPSovMCwgLyppbWc9Ki8weDIwMDAwMTAwKSk7CiAgICAgICAgTk9ORkFJ TElORyhtZW1jcHkoKHZvaWQqKTB4MjAwMDAwNDAsICJtdGQiLCAzKSk7CiAgICAgICAgTk9ORkFJ TElORyhzcHJpbnRmKChjaGFyKikweDIwMDAwMDQzLCAiMHglMDE2bGx4IiwgKGxvbmcgbG9uZykw KSk7CiAgICAgICAgTk9ORkFJTElORyhtZW1jcHkoKHZvaWQqKTB4MjAwMDAwYzAsICIuL2ZpbGUw XDAwMCIsIDgpKTsKICAgICAgICBOT05GQUlMSU5HKG1lbWNweSgodm9pZCopMHgyMDAwMTIwMCwg ImpmZnMyXDAwMCIsIDYpKTsKICAgICAgICBzeXNjYWxsKF9fTlJfbW91bnQsIC8qc3JjPSovMHgy MDAwMDA0MHVsLCAvKmRzdD0qLzB4MjAwMDAwYzB1bCwKICAgICAgICAgICAgICAgICAgICAgICAg Lyp0eXBlPSovMHgyMDAwMTIwMHVsLCAvKmZsYWdzPSovMHVsLCAvKmRhdGE9Ki8wdWwpOwogICAg ICAgIE5PTkZBSUxJTkcobWVtY3B5KCh2b2lkKikweDIwMDAwMWMwLCAiLi9maWxlMFwwMDAiLCA4 KSk7CiAgICAgICAgTk9ORkFJTElORyhtZW1jcHkoKHZvaWQqKTB4MjAwMDAyYzAsICJzZWN1cml0 eS5ldm1cMDAwIiwgMTMpKTsKICAgICAgICBOT05GQUlMSU5HKCoodWludDhfdCopMHgyMDAwMjA0 MCA9IDMpOwogICAgICAgIE5PTkZBSUxJTkcoKih1aW50OF90KikweDIwMDAyMDQxID0gMik7CiAg ICAgICAgTk9ORkFJTElORygqKHVpbnQ4X3QqKTB4MjAwMDIwNDIgPSAweGIpOwogICAgICAgIE5P TkZBSUxJTkcoKih1aW50MzJfdCopMHgyMDAwMjA0MyA9IGh0b2JlMzIoNCkpOwogICAgICAgIE5P TkZBSUxJTkcoKih1aW50MTZfdCopMHgyMDAwMjA0NyA9IGh0b2JlMTYoMHgxMDAwKSk7CiAgICAg ICAgTk9ORkFJTElORyhtZW1jcHkoCiAgICAgICAgICAgICAgICAodm9pZCopMHgyMDAwMjA0OSwK CiJceDc4XHg4ZFx4OWNceGIyXHg5OVx4YWJceGQ3XHgyZVx4Y2VceDkxXHgzZFx4NTNceDM2XHg1 ZVx4MTZceDY4XHg4ZVx4NTEiCgoiXHhhY1x4ZTFceDU5XHg4NFx4YWJceDUzXHhkMVx4NjZceDZh XHhlM1x4ZjVceGRmXHhiY1x4ODZceDBiXHhlZlx4ODdceDM4IgoKIlx4OWVceDIxXHgyOFx4NmJc eGUyXHgzNlx4ZGRceGMzXHhkMFx4ZmFceDJlXHg1MVx4ZDVceGM1XHhjN1x4YjNceDVjXHg1ZCIK CiJceDUwXHgzY1x4NWJceDJjXHgzYlx4NmJceGUwXHhmY1x4NTZceGU5XHg3ZFx4ZjhceDhmXHhh YVx4MDZceDM1XHgzNlx4M2IiCgoiXHhhOVx4MmJceDgyXHhjNFx4N2FceDgxXHg3YVx4YzlceDdm XHgxZFx4NjNceDhhXHgxNFx4NjFceDgyXHgxMlx4NTVceGVjIgoKIlx4MjNceGJkXHgwY1x4ZTVc eGJmXHgxMFx4OTRceGUzXHhhOFx4OThceDBkXHg3ZVx4NmRceDE5XHg3Nlx4YmFceDc3XHg4NyIK CiJceDQ1XHg5Mlx4MGVceDE3XHgxOFx4ZmRceGRhXHhjNFx4YmRceDY2XHhiMFx4YTZceDA2XHg4 MFx4MWFceGFlXHhmZFx4ZWQiCgoiXHgyOVx4M2NceDNmXHhjZVx4YmFceGQzXHhiMlx4YzBceDY0 XHgwM1x4ZGJceGE5XHg5OVx4NDlceDcxXHg2NVx4OWJceDdmIgoKIlx4NGFceDA3XHg3YVx4ZGRc eGFlXHhiOFx4YWVceDNlXHg1YVx4Y2FceDcwXHgyN1x4ZmRceGUxXHhlNFx4MDBceDAxXHhjMCIK CiJceGJkXHhkOFx4MDBceGJjXHhjMlx4ODdceGUwXHgyY1x4ODZceDdlXHgyN1x4ODJceGRlXHhh Zlx4NjdceDZhXHgyNlx4MTYiCgoiXHg0N1x4ZGJceDhjXHgyZlx4MzlceDQ1XHgwMlx4MjBceDU3 XHhkZVx4NzZceDgxXHgwMFx4YThceGJmXHg3M1x4ZDlceGY5IgoKIlx4ZmZceDI5XHgyMlx4OWJc eDQ2XHhkZVx4YWRceDU4XHhiMlx4ZGRceGY5XHg2NFx4MzNceDQ2XHg4ZVx4OWVceGVlXHg4OSIK CiJceDUwXHhkZlx4NjVceDg3XHgxMVx4ZTRceDExXHgzNlx4NGVceDQ0XHgxNFx4NWVceDY4XHgy Zlx4M2NceDA1XHgzY1x4NmYiCgoiXHg1YVx4MThceDYxXHhlZVx4ZTZceGVkXHhmOFx4ODVceGE5 XHg3Y1x4NTRceDU4XHgwNVx4YWNceDBjXHgzNVx4YTVceGU0IgoKIlx4NjJceDNiXHgyMFx4MDFc eDg2XHgxY1x4NTlceDMzXHg1NFx4YjVceDcwXHhmZlx4M2JceDRhXHg0NVx4ZjFceGFjXHhkZSIK CiJceDBhXHg4ZFx4YmRceDE3XHhjMFx4OWNceGU0XHg0OFx4ZWRceDVkXHhmZFx4OWVceDc0XHg3 Mlx4ZTZceDg5XHg2N1x4ZGUiCgoiXHhjYlx4NzZceDlmXHhhNlx4MDBceGNkXHgzMFx4YmVceGI2 XHhjOFx4MDNceDBlXHg5NFx4NzRceGM3XHhlY1x4NGNceDFkIgoKIlx4YWZceDNlXHgwMFx4N2Jc eGJjXHg1N1x4NjVceGIzXHg2Nlx4ZDRceGExXHg3Nlx4ZTNceDhiXHhkZlx4YWJceGVkXHhkMiIK CiJceGIwXHg3Nlx4YTVceGVkXHg3ZFx4NTBceGY1XHgxN1x4N2JceDk0XHhhNlx4YTBceGYwXHgw MFx4Y2RceDNhXHhjYVx4ZGQiCgoiXHhlOFx4ZThceDBmXHg2Nlx4ZWFceGRhXHgxNFx4MDFceDg2 XHgyMFx4YjFceDU5XHhlOVx4ZTFceDRjXHgyNVx4MmRceDIwIgoKIlx4YzhceGRiXHhiMFx4ZmVc eDM2XHgwNVx4YjVceDY5XHg4Ylx4NTNceGU0XHgyMVx4MGJceDYyXHhmY1x4YmRceDAwXHgwMSIK CiJceDdlXHhhYVx4MDFceGViXHgxZlx4YTVceDIxXHhiZFx4YjhceGQzXHgwZVx4ODNceDk1XHgx Ylx4NGVceGEwXHgyOFx4NmMiCgoiXHg4Zlx4MGRceDQ2XHg0NVx4MTdceGExXHgxZFx4NzlceDIy XHhkNlx4Y2NceGU0XHhkMlx4MDVceDhlXHhjOFx4Y2RceDdiIgoKIlx4MDJceGI3XHgzZFx4ODJc eDVkXHg3ZVx4MGFceGJiXHhiZFx4ODVceGU5XHg5MVx4MjJceDBmXHhjN1x4OTlceDU1XHgzNCIK CiJceGI3XHhiMVx4OTlceDhjXHhhN1x4NTJceDg5XHgwYlx4MDdceDlhXHg3Y1x4YTNceGZkXHhl NVx4NjRceDM4XHhjZlx4ODIiCgoiXHhkNVx4ZGRceDllXHhkYlx4ZDFceDFmXHhkMlx4OTNceGMx XHg3ZFx4MWNceGYxXHg2Nlx4NTdceGQwXHhiM1x4NTJceGE4IgoKIlx4YzZceGMzXHg2M1x4MDBc eGFkXHgwOVx4YTdceDhlXHgzZVx4ZTNceDkxXHgzYlx4OWJceDZmXHg1M1x4ZGVceGJmXHhmYyIK CiJceDdlXHgzMlx4YmZceGI2XHg0Ylx4MGVceDhjXHhiZVx4MDdceGZlXHg5Ylx4MGRceGFkXHhi MFx4OTdceGFlXHhiMlx4YzIiCgoiXHg0Mlx4NDNceDBiXHhlY1x4NzVceDYzXHgwYVx4MzlceDIx XHg4Mlx4OGFceDczXHgxNFx4ZGVceDE0XHgwNFx4ODJceDllIgoKIlx4N2FceGZiXHgzYlx4ODRc eDIwXHhlOFx4NWZceDJjXHg4Zlx4NmVceDg4XHhkZVx4MDRceDIzXHgxNFx4NDFceDZlXHg1YyIK CiJceDAwXHhjNVx4OWJceDIyXHgyMFx4ODBceDA0XHhiZVx4YzFceDYxXHhmOFx4NDVceDdjXHg3 Zlx4OGVceDNhXHg4Y1x4YTQiCgoiXHgxN1x4NGFceDRiXHg3OFx4ZGZceDZlXHg0Nlx4MGRceDU2 XHhkMlx4NGVceDAxXHhhZVx4MWFceDI0XHgxMVx4MjdceDBmIgoKIlx4NzlceGQwXHgyMFx4YTZc eGJhXHhjOFx4NTVceGYxXHhhM1x4ZWZceDdiXHgzZFx4MDlceDkxXHg4OFx4MjZceDU2XHhiNCIK CiJceDA4XHhkY1x4ZGFceGYwXHgyZFx4YjRceDZhXHhjOFx4ZmNceGFiXHgwY1x4ODdceDVkXHgx Zlx4MmVceDhkXHhiM1x4NjYiCgoiXHhlNlx4YTJceDBjXHhiNlx4N2FceDRkXHhiOVx4MjBceDM4 XHgyYVx4NjlceDE1XHg3MVx4NWRceDNiXHg0Mlx4NjZceGY3IgoKIlx4NzlceGZlXHg4Nlx4MzNc eGJlXHhhNlx4ZGVceGYyXHg4Y1x4YzFceDU5XHgxM1x4OGJceDgzXHg0M1x4MzRceGNlXHhkZSIK CiJceGYzXHhkZVx4YzVceDRlXHhhNVx4MzBceDNkXHhmNVx4NmJceGU4XHg3MVx4MTVceDMxXHg1 ZVx4YzBceGYxXHg0N1x4OGEiCgoiXHgwY1x4MDhceDY5XHhlNVx4ZjdceGMzXHgzZFx4YTZceDRi XHgyM1x4YWZceDU4XHgxMVx4NzVceDEwXHg1NVx4YzlceDA4IgoKIlx4NDlceDQ4XHg0NFx4ODFc eGQ1XHhhMVx4MGRceDcyXHhlMFx4OGNceGNkXHgxMlx4NzFceDBjXHg0Zlx4MmZceGY1XHg4NiIK CiJceGE5XHhlYVx4MTdceDVmXHg0YVx4YTdceDBiXHgxNVx4NmNceDAwXHhjNVx4N2VceDIyXHhj MVx4MzZceDBiXHhmY1x4N2QiCgoiXHgzNlx4YWFceDQ3XHg5Mlx4NDRceDRmXHg4MVx4ZDhceGEw XHhlZFx4NDFceGJmXHg2YVx4NDVceDJlXHhhNVx4MjZceDhiIgoKIlx4ODZceDA1XHg2OFx4MmFc eGM2XHgzZVx4YWFceDQ2XHg1Mlx4MThceGY0XHhkOVx4NjJceGRiXHg0Mlx4MTVceDRkXHgwMSIK CiJceDk2XHg2ZFx4M2FceGQ4XHhmY1x4MmZceGRlXHg0OFx4ZWZceDcxXHhiZVx4MDhceGJlXHg1 OFx4ZTVceGFkXHg2ZFx4NWEiCgoiXHgzNVx4OTNceGVmXHhjOVx4YzFceDMzXHg2ZVx4NTRceDEz XHg3Mlx4YTNceDQ3XHg5OVx4ZDJceDRlXHhhMFx4MGRceDRkIgoKIlx4NDlceDg1XHhiZVx4ZDFc eGRhXHhiMVx4MDZceDIwXHg5MVx4MWVceDlmXHg2OVx4NjdceDg4XHgwOFx4MjZceGJlXHg1YSIK CiJceDFmXHgxYlx4YjRceGIyXHhhM1x4OTRceDg2XHg1NFx4YzZceDkzXHg1Y1x4YWZceGViXHg0 OVx4MjVceGUxXHgwN1x4YTAiCgoiXHgxZlx4OWRceGRhXHg2Nlx4OGVceDVmXHhkN1x4NDhceDll XHg4Mlx4MTNceDkyXHg0MVx4YTlceDE5XHgwZlx4MDlceDBhIgoKIlx4ZmVceDIwXHg5NFx4MjNc eDRjXHg3NVx4ZmVceGMwXHg3NFx4NjJceDI3XHg0OFx4ZDRceGRkXHg3OFx4MmFceDkzXHgwZiIK CiJceDQyXHhiMFx4ZTdceDVkXHg5Mlx4NGJceGVmXHg2OFx4ZmZceGFmXHhiYVx4YTlceDg5XHgx Nlx4MTVceDFhXHgzNlx4ZWYiCgoiXHgyOVx4OThceGFmXHhkM1x4MDBceDA5XHg1NVx4ZWZceGJm XHhhMFx4YTlceGEwXHgwOFx4MzVceDhjXHgxMVx4MDRceDNjIgoKIlx4MGZceDk2XHhiNVx4MmZc eGM3XHg4YVx4NDJceDUzXHgxYVx4YTVceGRmXHhkOFx4ZGVceDA5XHg1MVx4OGNceGZmXHgwMCIK CiJceDhiXHgzM1x4OTJceDU5XHhiMlx4NjZceGM0XHg4OFx4YmJceDFkXHhhMFx4NThceGJhXHgy MVx4OGNceGQ2XHg0Ylx4M2UiCgoiXHg0MVx4M2NceGEyXHg4OFx4OWRceDEwXHg4Nlx4ZThceGM0 XHgwYVx4ZTFceDE1XHgwMVx4OThceDQxXHgyMVx4ZGNceGZhIgoKIlx4MmZceGRlXHgwOVx4ZDBc eDY4XHhmNlx4ZGJceGJlXHg4M1x4NTlceDk4XHgwZFx4YWRceDk2XHhlZFx4MjJceDBiXHg4NSIK CiJceDM0XHhhYVx4ZWZceDM1XHgzZFx4ZmNceDgxXHg1Nlx4MDlceDA3XHhkMlx4NmNceDAyXHg0 NFx4MjlceDI0XHhhZFx4NTUiCgoiXHhiMVx4MWRceDNhXHhlZVx4N2VceDU1XHgxNlx4ZDlceDZh XHhkMFx4NzhceGM4XHg1YVx4ZDFceGNkXHhiMVx4OGFceDQ1IgoKIlx4NDdceDQzXHgwNVx4YThc eGRiXHgzNVx4MGZceDk4XHg0NFx4MzhceDBlXHgyMFx4OTRceGY2XHg5MVx4YTBceDVlXHhhMCIK CiJceDk0XHg1OFx4YmNceDUzXHhmM1x4MjNceDZhXHgxZlx4M2ZceGE1XHhlMVx4NDRceGE1XHg3 NVx4YmFceDU3XHhlNVx4OGQiCgoiXHgwMFx4ZjdceDY1XHgzZFx4MmVceDZiXHg2Y1x4YmVceDE4 XHhkMlx4OGNceGUzXHhmNVx4NzlceDI1XHgzOFx4YWRceDIwIgoKIlx4YzBceGUwXHhlMVx4MGJc eDAzXHhkYVx4YzNceDQwXHgwOVx4ZDZceGQzXHhlNFx4YzdceDY2XHgyY1x4Y2FceDg4XHhiNSIK CiJceDMwXHg2Nlx4ZTlceDVlXHhmZVx4NDVceGVlXHgzZVx4MDRceGRhXHgzMlx4ODZceDkwXHhk YVx4ZTFceGFhXHgwMFx4NzAiCgoiXHhmMFx4OTRceDVlXHgyNlx4OWJceDc1XHg3M1x4M2JceDEw XHg2Zlx4ZjZceDUxXHg0NVx4NTVceGQ1XHg0ZFx4OTVceDhmIgoKIlx4NzNceDEzXHg0NFx4MWZc eGEyXHgxZlx4OTdceDYxXHg1M1x4MTJceGM0XHhmNlx4MDBceGExXHg0M1x4MGZceDYyXHg5OCIK CiJceDEyXHhmMlx4M2NceGQyXHgxZVx4NzBceDNiXHg5Nlx4NmVceDA0XHhhYVx4NmRceDBiXHhi YVx4NmZceDI1XHgzOVx4MzYiCgoiXHg5YVx4M2JceGFkXHhlYlx4ZmFceGE4XHgxOVx4N2RceDg5 XHhlM1x4MjlceDRiXHg0NFx4YzBceGVhXHg1NFx4YWVceDZiIgoKIlx4N2ZceDRhXHg0OVx4NjVc eDY4XHgwNFx4MzFceDc1XHhhNVx4NjZceDY1XHg0MVx4YjVceDU5XHhhOVx4ZmVceGFmXHgwYyIK CiJceDU0XHg1NFx4ZjFceDJmXHgyM1x4MGVceDk3XHhiY1x4ZjhceDRkXHhhZVx4MTFceGQxXHhh OFx4MzVceDk0XHgxMVx4YjkiCgoiXHg4Ylx4YjZceDA2XHgzZVx4ZThceGFlXHgwZlx4ZmFceDMw XHhiNVx4NzVceDc3XHg3MVx4YzdceGI3XHgwZVx4NGZceGJiIgoKIlx4NmVceDk1XHgxYVx4Njhc eDA4XHg3M1x4ZTZceGRhXHg1M1x4MTZceDAwXHhlOVx4NTFceDExXHgwY1x4MzRceGNhXHhhYyIK CiJceGM4XHhlOVx4NzhceGMwXHg2Ylx4NDhceDQ4XHhjOFx4ODBceGM0XHg4YVx4ZDhceGU2XHhj NVx4NGJceGM3XHg5Mlx4Y2UiCgoiXHg1NFx4ZWFceDRiXHgxY1x4MDVceGFiXHgwNFx4YWZceGI0 XHhkNlx4Y2FceGIyXHg1Ylx4ODVceGQxXHhjNFx4YjZceGM0IgoKIlx4NzRceGM3XHhlY1x4OTJc eDY3XHhiNVx4MDFceGVkXHhhYVx4MjBceGVlXHgwZVx4NDFceDU4XHg2OFx4ZDhceDc4XHg2NiIK CiJceDQyXHg2Ylx4MTNceDc0XHhlNVx4OGFceDY2XHg2NVx4MzBceGI5XHg0ZVx4MzRceDJjXHg4 Ylx4MmVceGJkXHhkNFx4MDUiCgoiXHhmZVx4ZjBceGEyXHg2ZFx4ZjhceDJiXHhiY1x4NTBceDJk XHhhMlx4Y2FceDE1XHg1MFx4YzJceDhkXHgzY1x4MGJceDY5IgoKIlx4ODdceDJmXHhmOFx4NjFc eGNkXHgyM1x4Y2JceDZlXHgxZlx4ZjFceGU2XHgyZlx4NjJceDVhXHhlOVx4MmZceDkwXHhmMyIK CiJceDA5XHgzM1x4ZmNceDgyXHg3ZVx4ZGRceDM4XHg2MVx4MjFceDMxXHg1M1x4NTJceGRiXHhj OVx4ZjRceGNhXHhiM1x4ZGQiCgoiXHhkYVx4ZGVceGI4XHhkZlx4MDVceDFkXHgyZlx4NTlceGNk XHg1OVx4ZTlceDdkXHhjOVx4MmNceGU0XHgzNFx4MWZceDk3IgoKIlx4ODBceDAzXHhlNFx4ODZc eDg1XHhlN1x4NjdceDNjXHhmMVx4ZTZceDAyXHg2MFx4NjBceDBlXHg3Y1x4YmZceDczXHgxZCIK CiJceGMxXHg2OFx4YjlceGE0XHgxMVx4ZGNceDNjXHg4NVx4ZjhceDQzXHhiZFx4MmNceDVmXHhj YVx4ODlceGMwXHg2ZFx4MTIiCgoiXHhiYVx4YzBceDhhXHg2MVx4Y2ZceDA5XHg5YVx4ZTVceGYy XHgzZVx4NWVceDkwXHg4NFx4NDhceGU4XHgxZlx4MjdceDc5IgoKIlx4YjNceDg1XHhiM1x4MWRc eGNkXHg1Y1x4ZjhceGFhXHhhZFx4NGJceDg1XHhhZVx4NzBceDYzXHg2Mlx4NGFceDdkXHhmNSIK CiJceDczXHhhZVx4Y2NceGM4XHhiNlx4MTlceDc3XHhmOFx4ZWNceDEwXHhlNlx4OGJceDVkXHhm MVx4YzFceGI4XHgwNVx4YzciCgoiXHhlMFx4MDFceDIyXHg4YVx4NjVceGMwXHhlN1x4NzJceGM1 XHgyNVx4MTRceDY2XHhhNFx4OWZceDEwXHgyMVx4OWJceGI3IgoKIlx4MThceGE0XHhhYVx4MmVc eDM1XHhjNFx4MDhceDExXHhhOVx4NzJceGViXHg1OFx4NTNceDBmXHg3Zlx4MDdceDQxXHhkMyIK CiJceGJlXHgwY1x4MDBceGUzXHg4Zlx4NThceDk5XHg0YVx4NTFceDk5XHg1NFx4N2ZceGM1XHgx NVx4MGNceDc4XHgxZlx4ZmUiCgoiXHgyZVx4NTZceDU2XHgwZlx4MDhceGViXHg3NVx4YmZceGNk XHg5MFx4ODVceGZmXHgxNFx4MGNceGVlXHhmZFx4MGRceDZlIgoKIlx4ZDRceDNkXHhhZFx4Mzlc eGQyXHhjZFx4YThceDY5XHg0ZFx4NDJceDBlXHg4Nlx4MWFceDFkXHhlY1x4NGFceDI4XHhkMSIK CiJceGNmXHg1M1x4MjRceGM1XHhjNVx4YWJceDgxXHg5Mlx4MjFceDU0XHg4N1x4M2JceDNmXHg4 Mlx4ZGZceDFiXHhjMFx4NmMiCgoiXHhiOVx4NTZceDVjXHgwOFx4ZjdceDc0XHhkOVx4ZmFceDZm XHhlNVx4NzVceGRhXHhmOFx4N2JceDMyXHg4YVx4YjFceDBiIgoKIlx4OTFceDIyXHg0M1x4ZjFc eDAwXHg3MVx4MmFceDI3XHhmNFx4OThceDFmXHhhYVx4MzdceDJkXHg3M1x4NjdceDAyXHhjNSIK CiJceDY1XHhhMFx4OGNceDRkXHg2Ylx4MGFceGEzXHgxMlx4ZDNceGM5XHgwMVx4N2ZceGQxXHhl N1x4YWJceDk4XHgxZFx4ZTciCgoiXHhlZVx4MWRceGZjXHgxYVx4ODRceDk5XHgyNFx4YWFceDky XHhlYVx4YjFceGIzXHhlNlx4ZTlceDc0XHgyZlx4NjlceDEzIgoKIlx4YTBceDhiXHg1Nlx4OTlc eGQ2XHg3MFx4NjlceDdhXHg2MFx4OGRceDc0XHg5ZVx4MDZceGMzXHg0MVx4NDJceDFhXHg4MCIK CiJceDlhXHgzNlx4NWRceGNhXHgzZlx4OGRceDg4XHhkOFx4NDJceDY4XHg1MFx4ODBceGY4XHhl ZFx4OTNceDQ4XHgyOFx4ODgiCgoiXHgwNlx4NWJceDUwXHhiZlx4OWFceGJkXHhlN1x4NWZceGUz XHg3Y1x4OGZceGYyXHhhZVx4NGZceDI0XHhlMlx4NmZceDgzIgoKIlx4OTRceDlhXHhiNVx4YzRc eGY0XHhhOVx4NmVceDEzXHhiMlx4Y2RceGY3XHg0Mlx4ZGFceGY5XHhjMVx4YjVceDgzXHgwNSIK CiJceDY5XHgxNFx4NTZceGM2XHhjMVx4OTBceGJmXHhiN1x4YmJceGJiXHgwOFx4NGVceGE5XHhm OVx4N2VceDk5XHhjM1x4ZTAiCgoiXHgyOFx4NDFceDVkXHg0ZVx4MDVceGNjXHhmN1x4NzFceDdi XHg1N1x4OTdceGZmXHg1Ylx4YWZceGEyXHg1MVx4OGFceDBhIgoKIlx4Y2FceGI0XHgzNFx4YTFc eDg4XHhkNFx4NzlceDdhXHg4NVx4ZjNceDY1XHg1N1x4ZGRceDZhXHhhM1x4OWNceDc1XHhlOCIK CiJceDBiXHg3Mlx4NDlceDYzXHg3Mlx4NjVceDI1XHg0NFx4YjFceDQyXHg0OVx4MDFceGE2XHhh OVx4ZDRceGI3XHg0NVx4MzAiCgoiXHg4Nlx4YjZceGJhXHgyNlx4YTRceDA1XHgyMVx4ZGFceDk0 XHhhYlx4NTRceGRlXHg0YVx4MTFceGI1XHgxYlx4NGFceGQ3IgoKIlx4YWJceDFkXHg2OFx4MDVc eGYzXHgyM1x4YjBceDQ0XHg5NVx4NWZceDc3XHg5Y1x4ZmVceDdjXHgxY1x4MzVceDg2XHhmNCIK CiJceGJlXHgwZVx4YWJceDIyXHg2YVx4MjVceGFlXHgxNlx4YmRceDhkXHhjN1x4ZWJceDAxXHg1 MFx4MjRceGI3XHg0M1x4NGIiCgoiXHg2NFx4MDhceDM0XHgzYVx4MWJceGU2XHhlMVx4ZGRceDM5 XHgyNVx4YzFceDAyXHhiNFx4YzlceGM1XHg0M1x4OThceDM4IgoKIlx4MzVceGI2XHhiYlx4NDVc eGY4XHgwZVx4YTNceDViXHhmN1x4ZmNceGVjXHhhYlx4NWRceDk0XHg3Mlx4MjRceGJmXHhkYiIK CiJceDFjXHgwM1x4YjJceDBmXHhjMFx4N2FceDVjXHhhY1x4NjNceDBiXHhlYlx4NGJceDMwXHg0 NFx4ZWJceGU1XHg1Y1x4OTAiCgoiXHgyM1x4ODRceDRjXHgxZlx4ZDZceDRiXHg0ZVx4YjBceDI1 XHg1M1x4NjhceDY3XHhmMFx4YWZceGEzXHg4OFx4NTdceDZjIgoKIlx4NWJceDI1XHg2NFx4Y2Rc eDJlXHgyMFx4YWVceDI2XHgzM1x4ZjdceGI3XHg2Y1x4ZjZceGZiXHhjZVx4ZmZceDI0XHgwZiIK CiJceDY1XHhlNVx4ZWVceGJhXHgyOFx4NDNceGZhXHhhMVx4ZTdceDcxXHgwOFx4ZDNceDVjXHg1 OVx4YjNceGY1XHg3MFx4MTEiCgoiXHgyNlx4NjBceGU5XHgyN1x4OGRceGEzXHgxMlx4NzZceDg2 XHhkY1x4MmFceDk2XHg1YVx4NmFceGQxXHg2N1x4MmVceDI5IgoKIlx4ZmZceDllXHhkZFx4NjJc eGY0XHg5ZVx4NDFceGJkXHhkNlx4NTNceDQ4XHhkMlx4NjVceDc4XHg0Nlx4YmVceDgwXHg0NyIK CiJceDljXHhlYVx4NDFceDViXHhmYlx4NTlceDI3XHgyMlx4OWZceDNiXHg3N1x4MmVceGQ5XHhj OVx4YjdceDYzXHg5ZFx4OGYiCgoiXHg3NVx4ZmZceDY2XHgyMVx4ODRceDFhXHg3Ylx4NjRceDk3 XHg4MVx4MzFceGU4XHg2OVx4NTJceGJmXHhlNVx4MTBceDcxIgoKIlx4NWJceDI1XHhlZlx4YmNc eGYzXHg5M1x4MzJceDBjXHgxZFx4NjJceDk5XHhhY1x4NmNceDE5XHhkZFx4OTBceDg4XHg3MCIK CiJceGY5XHg2ZFx4OTJceGI4XHhiZFx4Y2ZceDExXHhlM1x4YzlceDg3XHg4Zlx4MmVceDM3XHhi ZFx4YWZceDcyXHg3MVx4OGEiCgoiXHhkMFx4YmNceDI4XHg3Mlx4YzdceGEwXHhiMVx4MDFceGY2 XHhlM1x4OTJceDk5XHg3Mlx4MzRceGUwXHg2Y1x4OWJceDFiIgoKIlx4ZGNceDMyXHg0OVx4NzFc eDQyXHg3ZFx4NmJceDk3XHhjM1x4YzFceDY1XHgzMVx4MTdceDhmXHg0MFx4YThceGFiXHg1MiIK CiJceGY5XHg4ZVx4MDZceDY3XHg4MFx4OTdceDdhXHhiZFx4MzVceDJlXHgxZVx4ZmVceDYxXHg4 NVx4ZjdceDAyXHgzM1x4YjMiCgoiXHgwZlx4ZGNceDk2XHhiNlx4YTJceDg5XHhiOVx4ZTBceGZj XHhlZVx4NTVceDU5XHgyM1x4ZWZceDU5XHgwYlx4ZDlceGNkIgoKIlx4MmZceDBlXHhmN1x4MDJc eDQ2XHg0MVx4NDVceDBkXHgxYVx4OTJceDU4XHgwNFx4NmFceGMwXHhlOFx4MGFceGNkXHg0NCIK CiJceGYyXHg2N1x4NDRceDY5XHg0Nlx4YzBceDk2XHhkYlx4OThceDQ4XHhmN1x4OGNceGRkXHhi YVx4OWZceDU0XHgwOVx4YjAiCgoiXHg5MFx4ZGRceDIzXHg0NFx4ZDhceGQ0XHg1YVx4MTZceGNk XHgyZVx4Y2NceGU1XHhiZlx4MjJceGJkXHg0Y1x4YjhceDlhIgoKIlx4ZmRceDMwXHg2N1x4Y2Jc eDBiXHhkOVx4YTdceDI3XHg5Ylx4ZTFceGIxXHhlNVx4MDNceDQ5XHg4Zlx4MzlceGVkXHhjZSIK CiJceDcxXHg0Zlx4MzdceDU5XHg3ZFx4MGVceDY0XHg2MFx4NzFceDZkXHgwOVx4ZWFceDM3XHg2 ZFx4NzNceGU4XHhhN1x4MWYiCgoiXHhmZlx4MTNceDI0XHhmYVx4MmFceGViXHhhN1x4NWVceDhi XHhiZFx4MGVceGE0XHhjNFx4MThceGI0XHg1N1x4ODRceDU1IgoKIlx4MDFceDUzXHhkNFx4OTJc eDg5XHg4ZVx4MTVceGRhXHg4OFx4YjZceGVkXHgzZlx4NjdceGU4XHg1ZFx4YmJceDExXHgxYyIK CiJceDJmXHhlYVx4YzJceGZkXHg3OFx4YjZceGY5XHgwMVx4MWNceDY4XHg2NFx4YjlceGJiXHgx MVx4NjVceDM2XHg5NFx4ZjciCgoiXHhmMFx4MjVceDY4XHhiN1x4NjhceGI2XHhhMlx4N2RceDA4 XHgwZVx4YWRceGMwXHgwOVx4MzdceDQ0XHhiOVx4MTFceDVhIgoKIlx4YTJceGY4XHhkMFx4M2Zc eGEyXHg3Zlx4YWVceGEyXHhlM1x4NTZceGVmXHg4Y1x4ZTZceDJlXHg0N1x4MjJceGRkXHhkMSIK CiJceDM5XHhmN1x4ODRceGFjXHgzYlx4OGFceGZiXHg5OFx4YzhceGQzXHg5OFx4NGNceDhjXHhm OVx4NDNceDhlXHg4M1x4NzEiCgoiXHgwM1x4MzBceDQyXHg4Ylx4NzhceDMwXHhjMVx4NzBceDlh XHgzMFx4OWJceGJhXHhjM1x4YmJceGRiXHhkMFx4ODNceGU1IgoKIlx4MzlceDkzXHg4Y1x4NTdc eDg5XHhlMVx4NzBceDlkXHgyY1x4MGVceGU5XHg0ZFx4Y2JceDJmXHhlNlx4NGNceDMxXHhjOCIK CiJceDdkXHgyNVx4Y2NceDdmXHg4Mlx4NmJceGJmXHg1ZVx4MDJceDFkXHg1YVx4YWFceDE3XHgy OVx4NzBceGFhXHhlOVx4NmEiCgoiXHg2OFx4NThceGY4XHhjMVx4MWZceGRmXHhiN1x4NDhceDMy XHg4ZFx4OTdceDQxXHgxZVx4ZGNceDEwXHhkZFx4MTZceGZkIgoKIlx4MTBceGZhXHhhN1x4YzNc eGI5XHg0Y1x4ZTFceDkxXHg1Mlx4ZmJceDI5XHg2NVx4NjlceDA0XHgyMVx4ZDNceGM2XHhkYiIK CiJceDJlXHg3ZVx4ODhceDg4XHhjN1x4YmJceDA2XHg0NFx4M2RceGIzXHgxMVx4MWVceDNkXHhi Nlx4OWFceDg4XHhkZFx4MDkiCgoiXHg3YVx4YjhceGM2XHg0ZFx4NmJceGVhXHgzMFx4ZGFceDI0 XHg3Zlx4Y2RceDExXHg3YVx4MzBceGVlXHhmNFx4NWNceGQ5IgoKIlx4MzNceDlhXHg3OFx4Mzdc eDU2XHgyOFx4Y2RceGJmXHhhMlx4NmRceDZiXHgzNFx4MTlceGU2XHg5Ylx4YmVceDhlXHg4OCIK CiJceDQ3XHg5MVx4MjlceDY4XHg0Ylx4MjNceDA0XHhkYVx4YTJceGQ2XHg4NFx4MzBceDQ4XHgy Nlx4ZWVceGU5XHg3ZFx4MzQiCgoiXHg2M1x4MDNceGNjXHg2M1x4MWVceDEwXHg0Nlx4NWFceDJm XHg5Mlx4NDNceGU4XHg0ZFx4MzJceDI4XHgxMFx4MzhceDhiIgoKIlx4YTJceGQzXHgwNlx4MjZc eGE2XHgzZFx4ZjlceDc5XHgzZVx4YjlceDYzXHhkZlx4MjNceDQ4XHg2NVx4Y2JceGI2XHg4YyIK CiJceGRiXHhjMFx4NDNceDYzXHhlMVx4N2FceDZhXHg2ZVx4YjFceGM4XHgwMVx4NDFceDc3XHhj OVx4OWZceGFhXHhjYlx4OGQiCgoiXHg3YVx4OGVceDk5XHhkOFx4OTdceDcxXHg4Ylx4YzVceDEw XHg1NVx4NzJceDc4XHgyMFx4ZDNceDIxXHhmMlx4NWZceGQxIgoKIlx4NWRceDI0XHhkMFx4Mjlc eGQ0XHhmYVx4ZDZceGZkXHhlOVx4N2ZceDA5XHgxMVx4ODBceGVmXHgyYlx4YzNceDkxXHgzYiIK CiJceGMxXHgxZlx4OGZceDEwXHg0Ylx4Y2NceDdlXHhhMFx4MDJceDQxXHg1N1x4NDhceDFiXHgz NVx4MzdceGNlXHg1NFx4M2YiCgoiXHhlOFx4YWJceDkzXHhhMlx4NmNceGI5XHhiYVx4NTFceGZh XHg3OFx4ZDNceDM3XHhiZlx4MTBceGJhXHgyOVx4ZGNceDVmIgoKIlx4ZWJceGZlXHg0YVx4ZDBc eDE0XHhiZFx4NDBceGYzXHgzM1x4MzBceDgyXHgzZFx4N2ZceDQ1XHg3M1x4YmFceGViXHhkOSIK CiJceGUwXHg2M1x4ZDVceDlhXHg4N1x4NjZceDJiXHhlZlx4ODVceDljXHhlZVx4OGFceDhlXHg1 M1x4MThceGFhXHhlMlx4MmUiCgoiXHg3OVx4ZmJceDRkXHgzMVx4ZTBceDg4XHhmMFx4NTZceDlj XHg2N1x4YmJceGE0XHgxOFx4NjhceGZlXHg0Nlx4NGVceGQ3IgoKIlx4N2VceGM3XHhmZVx4MDdc eGRkXHgzYVx4NWNceDJjXHg4MVx4YzFceGZkXHhlZFx4MTZceDA1XHg5OFx4YjNceDc1XHg2NCIK CiJceDUxXHgzMVx4NzNceGYxXHgzZlx4ZWVceGI5XHhkZlx4NGJceDQ3XHhlZFx4ZThceDA1XHgw YVx4YWNceDQzXHgxZVx4MWIiCgoiXHgyMFx4NThceGM2XHhhZlx4ZTdceGU0XHg0Ylx4Y2NceDZm XHgyOFx4ZGNceDU4XHgzM1x4ZGRceGVkXHgxMFx4ZTZceDkxIgoKIlx4N2VceDE1XHhiOVx4MzBc eDg4XHhjZFx4OTBceDc5XHgxOFx4MjZceGNhXHg3Y1x4M2JceDlhXHg0Mlx4MTFceGU5XHhlMiIK CiJceGZmXHhkNFx4OTZceDYyXHgyM1x4ODFceDZkXHhiNlx4ZTRceGVkXHhlNVx4NzBceDFiXHg3 Nlx4OThceDhkXHg4Zlx4MzQiCgoiXHhhYVx4MTRceDBmXHhmYlx4NGJceGMzXHhlZlx4ZmNceGNi XHhlNVx4YWZceDM5XHg0Mlx4ZDRceGM1XHg3MVx4NzdceDAwIgoKIlx4ZTVceDkyXHhhMVx4NzBc eDAxXHhkMlx4MGJceDY2XHg1Zlx4YjdceGM2XHhmNlx4NTNceDYxXHgxMFx4OGFceDEzXHg3MCIK CiJceGE0XHg1ZFx4YjRceDc3XHhhMVx4ZjRceDQ5XHhlNVx4YzNceGY5XHhhOFx4OWZceDk2XHg3 Mlx4OTBceGFmXHgyM1x4MWQiCgoiXHhiOFx4MmZceGVkXHhlY1x4ZmNceGEyXHhjM1x4Y2VceGRm XHhmZVx4YWRceGI3XHg3NVx4NzJceDhiXHg0NVx4Y2VceDRiIgoKIlx4ZGVceDA2XHgzMFx4ZTlc eGUxXHhkZlx4Y2RceDk4XHgxM1x4OGFceDU1XHg2ZFx4ZDRceDBiXHg2NVx4NTVceDgxXHhiNCIK CiJceDUxXHhhN1x4MTZceDRhXHhkNVx4N2NceDRmXHhiMlx4YjVceGRjXHg1Ylx4MTRceDVlXHg4 N1x4MzNceGRlXHgzM1x4YWYiCgoiXHg4NFx4NGVceDQwXHgwNFx4MTRceGY4XHg1Y1x4MjhceGNh XHgxZlx4ODhceDhlXHg3MFx4YzRceDVkXHgyOFx4YzhceDIzIgoKIlx4ZTBceDdlXHhkZFx4ZjNc eDBkXHhmN1x4OTFceDFkXHhmNVx4ODRceGFkXHg0NVx4OGFceDI1XHgzNVx4NTBceDg0XHgxNiIK CiJceDNhXHg5YVx4N2NceGMzXHhiYVx4YzRceDI3XHg2ZVx4OTVceDcyXHgxMVx4NjJceDZlXHgy OFx4ODJceDEyXHgwMFx4NTMiCgoiXHgzNFx4ZGVceGM3XHg0Mlx4Y2ZceGU1XHg3ZVx4NmNceDgy XHgzNFx4ZTVceDIwXHhkOFx4YmVceGQ0XHg1YVx4ZjRceDc2IgoKIlx4NzdceDBmXHg0N1x4MThc eGY3XHg5OVx4YzFceGExXHhmNlx4MzdceGZjXHgwNFx4YTdceDM3XHg4MFx4YTNceDVkXHgyMSIK CiJceDk0XHhlNlx4MDFceDdlXHg0MFx4NWRceDNlXHgwYlx4MWVceDlmXHgyY1x4N2NceDBmXHg2 YVx4MGVceGQyXHg4YVx4MmUiCgoiXHhhZlx4ZGRceDc5XHgyMlx4NzZceDIwXHg1OVx4ZmVceDBl XHhiY1x4NzdceDU5XHg5Mlx4NDVceGIxXHgyY1x4OWZceDBjIgoKIlx4ZWZceDllXHhkYVx4YjFc eGEyXHg1MVx4NzFceGE2XHhhOVx4YTBceDU2XHgyZVx4MjRceGRiXHg3Nlx4ZTJceDVkXHhmYiIK CiJceDVlXHhjYlx4NzNceDUyXHhkMFx4YmZceGM3XHg4ZFx4ODVceDhlXHg4YVx4YWFceGM5XHgx M1x4ZWZceGE0XHhmZlx4NjAiCgoiXHg0OFx4OTZceDc5XHhlOFx4YzdceDIwXHgxOVx4ODlceDdh XHg4YVx4ODVceGE5XHhlZVx4MjlceGYxXHgwOVx4MjJceDMxIgoKIlx4NWJceGE3XHhkYlx4MGFc eDEyXHg2Zlx4ODJceDdjXHgwM1x4ZmFceDViXHhiYlx4OTBceGY5XHg5MVx4Y2JceDk4XHg2NiIK CiJceGIzXHhlMFx4MzBceDQ3XHhjYlx4MWZceGFiXHhiYlx4ZGJceGU1XHhhM1x4NTJceDgyXHhm MFx4MzBceGMwXHhkYlx4ZGIiCgoiXHhkMlx4MjdceGY4XHg1Ylx4MDVceDcyXHgxY1x4NDVceGM4 XHhiMlx4YjhceDVkXHgzM1x4MTBceGJiXHg0MVx4ZDZceGFhIgoKIlx4NTZceDE0XHhhNlx4MGRc eDk4XHg3NFx4ZDFceDJmXHgxMVx4ZjVceGE5XHg0Ylx4MTVceGY3XHg0MVx4ZGJceDMxXHgwYyIK CiJceDkyXHg3Ylx4MmVceDkwXHg2MFx4N2FceDJhXHhmOFx4YzRceGI1XHg3ZFx4NmJceDY5XHgz N1x4ZDVceGExXHhlYlx4MTQiCgoiXHg1OFx4OWRceDFlXHgzNlx4MTZceDQyXHg0NVx4OGNceGMy XHhmYlx4ZDJceDk2XHhhY1x4MDNceDFkXHgwOVx4OWRceGY0IgoKIlx4OWFceDUzXHhlOFx4ZjBc eGQ0XHg1MFx4NmJceDJkXHhjYlx4YjJceDBmXHg1NFx4NTZceDBiXHg2OVx4NWFceDRlXHgwYSIK CiJceDRhXHg1YVx4MTNceDIzXHgxOVx4ODVceGQ1XHgzYlx4YjNceDUzXHgzMVx4MjZceGFkXHhk Mlx4ODFceGZkXHgzOFx4Y2QiCgoiXHhkZlx4N2VceGY0XHgzN1x4MjBceDFlXHg4YVx4ZWFceDFh XHhiNlx4M2FceGQ2XHg3M1x4Y2RceGNjXHg2Y1x4NjBceDQxIgoKIlx4MTRceGFlXHhjN1x4NzFc eDg4XHgxYlx4NGZceGI3XHhhYVx4N2NceGNiXHhkM1x4OTdceGU3XHgwM1x4ZjFceDA4XHg5NSIK CiJceDYxXHg5ZVx4MTVceGM3XHgxNlx4ODRceGJiXHhiZlx4YTJceGIyXHhjNlx4MGFceDc5XHgw ZFx4ZTBceGU1XHgwNVx4OTUiCgoiXHgzOFx4YjVceDFkXHgzNFx4N2FceDY4XHhhZFx4MDVceDc0 XHg3Mlx4YTlceGYxXHhlYVx4ZjBceDU0XHhkZlx4NzdceDkxIgoKIlx4YjVceDhmXHg2M1x4OGNc eDA1XHg5NVx4NTVceGJiXHhiOVx4NzBceGVkXHhmOFx4NzdceGQ1XHhmNlx4MjNceGUyXHg1NCIK CiJceDFkXHhiYVx4MjdceGRmXHg4ZFx4NzFceDNmXHhlN1x4YzVceDVmXHg0MFx4ZmJceGYzXHhk Ylx4ZGNceDNkXHgwNFx4MmUiCgoiXHg5Mlx4YjhceDNmXHg5NFx4ZGRceDY2XHhkMVx4Y2RceDJi XHhjNVx4Y2NceDk4XHhhNlx4YTVceDAyXHhiNVx4ZDhceGQ4IgoKIlx4ZWVceDZlXHhmZVx4Y2Fc eGNmXHhiN1x4NjJceDQ2XHg0Y1x4NmZceDhjXHhlYVx4OGJceGRhXHhkMVx4NGFceDI5XHgxOSIK CiJceDk5XHgyOFx4ZTBceGNiXHgwN1x4ZmJceGMzXHgwNlx4YjlceGVlXHhjY1x4YzRceGM3XHhh M1x4MjZceDE4XHg1Mlx4NTQiCgoiXHg0MVx4NDhceDkyXHhiNlx4MTRceGRkXHhjY1x4MjBceGU5 XHhiNVx4ZDJceDU4XHhlNlx4NjJceDcxXHg0M1x4MGNceDA3IgoKIlx4MDVceGM1XHhhNlx4MjJc eGZhXHg1Nlx4NDZceGRhXHg0OFx4OTdceGEwXHg4OFx4ZjZceDhmXHhkZVx4YjZceDY4XHg0MiIK CiJceGFkXHgzZFx4NzJceGYyXHgzMlx4ZjRceDg3XHhiM1x4ZGJceDNiXHg4M1x4ZDhceDI2XHgy Mlx4YzlceDFkXHhhZlx4NzciCgoiXHg5Nlx4MzRceGZhXHgxYlx4OTdceGM3XHhkNVx4YWRceGI1 XHhkNVx4M2JceGU1XHgxOVx4OGJceGM1XHg5YVx4ZWZceDFhIgoKIlx4YWJceDYwXHhjM1x4Nzlc eDUyXHg5Nlx4YThceDRhXHhjM1x4ZjdceDczXHg5OVx4ZmVceGVkXHg1Ylx4ODZceGY0XHg0YiIK CiJceDNhXHgxY1x4YTNceDVlXHhlNFx4NjhceDkxXHhlZVx4OTBceDNhXHg5MFx4MzRceDA4XHg4 M1x4Y2VceGM0XHgxZFx4NTciCgoiXHg3YVx4ODhceDgwXHg5NFx4NWJceDUwXHg0Y1x4N2VceGE1 XHhiZFx4YzlceDRkXHg2Nlx4YmZceDI1XHhiNFx4ZDJceGUwIgoKIlx4NjRceGJkXHg2OVx4ZGZc eGNlXHg0Zlx4MDBceGY4XHhkZlx4YWRceGUwXHg3M1x4OWZceGFiXHg1Mlx4NzVceGRiXHgxMSIK CiJceGU5XHg5OVx4YjJceDU2XHgyMlx4YzJceDBjXHhhMFx4YTlceGYxXHgwZlx4MjdceGM4XHgw MFx4YTRceGY1XHhkMVx4OWEiCgoiXHhhOVx4MmRceDA0XHhjZFx4MjhceDJmXHg5Nlx4ZTlceDkw XHgzMFx4MThceDc0XHhjNVx4ZGRceGNmXHhiMVx4MzJceDIzIgoKIlx4YzRceGY1XHhmZFx4Mzdc eGM0XHg0OVx4YWRceGRlXHg1M1x4MmFceDE2XHhhZVx4ZTZceDY0XHgwN1x4YmZceGVlXHhlZSIK CiJceGJkXHhhNFx4ZjVceDEzXHhmMlx4MjRceGU0XHgzNFx4YTlceGMwXHg4YVx4MjJceDgxXHhk NVx4ZTFceGY0XHg1OVx4MWMiCgoiXHg5YVx4NDNceDNhXHhiMVx4NTdceDZjXHgxMVx4ZWRceGQw XHhkZlx4OWZceGI2XHhmNFx4N2JceDc2XHgxZlx4YzhceDc4IgoKIlx4ZDVceDMyXHhkN1x4ZmNc eDJhXHg3Nlx4MjRceDYxXHhmZFx4MTRceDczXHhlYlx4N2NceDdjXHg4OFx4NjZceDhiXHg3NCIK CiJceDliXHg5Ylx4YmZceDQzXHhjOVx4MzdceGZhXHgyYlx4ZDdceDNhXHhlOVx4MTdceGVhXHgy YVx4OTBceDNiXHhmNVx4ZjciCgoiXHhkN1x4MWFceGUxXHhjN1x4ZDdceDFjXHg2MFx4ZGVceGYx XHhiYlx4YzRceGU4XHgxNVx4MWJceGVlXHg1Zlx4NGFceDM5IgoKIlx4NjNceDI1XHg5MFx4N2Zc eDRmXHgyYlx4Y2JceGU5XHg4MFx4MzhceGU0XHg2Ylx4YzlceGZiXHgzMFx4ZDFceDk5XHhmMCIK CiJceDI1XHhlYVx4YmVceGIwXHgzN1x4Y2VceGFlXHhjM1x4ZWVceDE4XHg3Zlx4NzNceGExXHgz Nlx4YjhceDU2XHg2YVx4OTQiCgoiXHgzZFx4NWJceDMyXHg3MVx4MTlceDllXHg2ZFx4MTlceGI3 XHgwNlx4NmRceDkwXHhiMVx4MGRceDBjXHgxMVx4ZTdceGNiIgoKIlx4MGNceDBiXHg1Zlx4NzNc eDEyXHg3Y1x4ZDZceDg1XHhhN1x4NjNceDhiXHg5OVx4YTFceGM5XHhhZVx4YTRceGZiXHhmMyIK CiJceGZhXHhjNlx4N2FceDRiXHgxMVx4NGNceGE5XHhmYVx4NjBceGQyXHhjOVx4YzJceDQ3XHgy M1x4YjBceDM3XHgxNFx4MmUiCgoiXHgzZVx4NDdceDUwXHgzZlx4M2RceGZkXHhmZlx4YzRceDg3 XHgyMVx4MjBceDkwXHhkMlx4MjFceGViXHg4NVx4ZjVceDNjIgoKIlx4ZjZceDE3XHg2Y1x4MjZc eGI5XHgzY1x4NzVceDdiXHg1Mlx4MWRceDAxXHg3Y1x4YTFceDdhXHhjN1x4ODhceDljXHgyNiIK CiJceGM2XHg0N1x4M2ZceGI0XHg0Y1x4YzJceGFiXHg3OVx4Y2RceDc2XHhmYlx4ZjhceGZjXHg1 YVx4ODFceGRjXHgyNFx4YmQiCgoiXHg3Ylx4YTZceGQ1XHg1ZFx4ODBceDM2XHhmNFx4ZDZceDAy XHgxOFx4ZTdceGM4XHhmZFx4ZjdceGYzXHhiOVx4MTVceGVmIgoKIlx4ZDBceGJkXHgwZVx4ZGZc eGFjXHgzOFx4MGVceDM3XHgxN1x4NzlceDRhXHhiNFx4NmJceDJhXHg1ZFx4YWVceGQ1XHg4ZiIK CiJceGRiXHgzZVx4YTZceDY3XHgyMFx4YzBceGU3XHg4YVx4MGNceGU4XHgyNVx4YjFceDU1XHhl Ylx4YzBceDk3XHg5Y1x4ZjciCgoiXHg3OVx4MTVceGRiXHgzZFx4ZjZceDAwXHhiYlx4ZDFceDc5 XHhmMVx4ZDJceGQ2XHg3NFx4ZDdceDZiXHgxMlx4YWZceGYwIgoKIlx4ODdceDc1XHg3ZFx4NGFc eGE0XHg4MFx4ZWVceDE1XHg2Nlx4NzhceDQwXHg3NFx4YTVceDI4XHg3Ylx4ZTBceDA4XHg4ZSIK CiJceGZiXHhlMVx4MmZceDU1XHgwYlx4YWRceDNiXHg0MVx4MGNceGYwXHg0Zlx4YmFceDhmXHgw Nlx4ZDFceDEyXHgwYVx4MWQiCgoiXHhhZFx4MzVceGRlXHg5Y1x4N2FceDIyXHhjM1x4Y2FceGY4 XHgzY1x4MWJceGY2XHhlYVx4NTdceGEwXHg1NVx4YWZceGNiIgoKIlx4YzZceDFiXHgwNlx4OGZc eGViXHg1ZFx4MTdceGY1XHhkMFx4Y2RceDllXHg1OVx4MTFceGQyXHhkOVx4YzhceGM2XHhmZiIK CiJceDg5XHhmY1x4MzdceDcyXHg1YVx4NGJceDlhXHhjM1x4YThceDgwXHgwZFx4MTdceDMxXHgx OVx4OWNceDgyXHgwMVx4YzAiCgoiXHg1Mlx4MmVceDlhXHhmN1x4NDlceGZlXHgzNlx4ZTFceDQx XHg5NFx4MzFceDBhXHg1YVx4YWZceGQ5XHg0NFx4YzNceDIxIgoKIlx4ZWZceGI0XHhlY1x4ZjVc eGMxXHgzMVx4Y2NceGY5XHhkZVx4NDhceGM4XHhiM1x4NmFceDkwXHg1Zlx4NDdceGViXHhhOCIK CiJceGZiXHg0Mlx4Y2VceDQzXHg1ZFx4MWJceGQ0XHgwOFx4ZGNceDg3XHhiMVx4YzlceDE1XHg3 N1x4ZmZceGJhXHgxNlx4ZTMiCgoiXHgyYlx4OWJceGUyXHgxOVx4ODJceGQzXHgxN1x4NjNceDIw XHhjOFx4ZTJceDM3XHg5OVx4YjZceGM1XHhjY1x4M2RceDgzIgoKIlx4NGNceGNiXHhlOVx4YWNc eGVkXHhhN1x4MGJceGQyXHhjN1x4M2FceDE1XHg0MVx4MzdceGFjXHhkZFx4NjVceGY0XHgxOSIK CiJceDFlXHg0NFx4NzBceDg5XHgzZVx4YjJceDRlXHg0YVx4YjBceDA3XHgwMFx4YzJceGMxXHgz NVx4MTRceDlmXHhiOFx4NjYiCgoiXHg0NFx4YjVceGFjXHgwYlx4ZTFceDY2XHg5Mlx4ODhceGI5 XHhjMlx4OWFceDFmXHg2Zlx4NjFceDUxXHg3ZFx4OGJceDRmIgogICAgICAgICAgICAgICAgIlx4 MDlceDYxXHg2ZVx4NzZceDdiXHhkN1x4MmRceDEzXHhmOFx4MzMiLAogICAgICAgICAgICAgICAg NDA5NikpOwogICAgICAgIHN5c2NhbGwoX19OUl9sc2V0eGF0dHIsIC8qcGF0aD0qLzB4MjAwMDAx YzB1bCwgLypuYW1lPSovMHgyMDAwMDJjMHVsLAogICAgICAgICAgICAgICAgICAgICAgICAvKnZh bD0qLzB4MjAwMDIwNDB1bCwgLypzaXplPSovMHgxMDA5dWwsIC8qZmxhZ3M9Ki8zdWwpOwogICAg fQogICAgaW50IG1haW4odm9pZCkgewogICAgICAgIHN5c2NhbGwoX19OUl9tbWFwLCAvKmFkZHI9 Ki8weDFmZmZmMDAwdWwsIC8qbGVuPSovMHgxMDAwdWwsCi8qcHJvdD0qLzB1bCwKICAgICAgICAg ICAgICAgICAgICAgICAgLypmbGFncz0qLzB4MzJ1bCwgLypmZD0qLy0xLCAvKm9mZnNldD0qLzB1 bCk7CiAgICAgICAgc3lzY2FsbChfX05SX21tYXAsIC8qYWRkcj0qLzB4MjAwMDAwMDB1bCwgLyps ZW49Ki8weDEwMDAwMDB1bCwKLypwcm90PSovN3VsLAogICAgICAgICAgICAgICAgICAgICAgICAv KmZsYWdzPSovMHgzMnVsLCAvKmZkPSovLTEsIC8qb2Zmc2V0PSovMHVsKTsKICAgICAgICBzeXNj YWxsKF9fTlJfbW1hcCwgLyphZGRyPSovMHgyMTAwMDAwMHVsLCAvKmxlbj0qLzB4MTAwMHVsLAov KnByb3Q9Ki8wdWwsCiAgICAgICAgICAgICAgICAgICAgICAgIC8qZmxhZ3M9Ki8weDMydWwsIC8q ZmQ9Ki8tMSwgLypvZmZzZXQ9Ki8wdWwpOwogICAgICAgIGluc3RhbGxfc2Vndl9oYW5kbGVyKCk7 CiAgICAgICAgZm9yIChwcm9jaWQgPSAwOyBwcm9jaWQgPCA0OyBwcm9jaWQrKykgewogICAgICAg ICAgICBpZiAoZm9yaygpID09IDApIHsKICAgICAgICAgICAgICAgIGxvb3AoKTsKICAgICAgICAg ICAgfQogICAgICAgIH0KICAgICAgICBzbGVlcCgxMDAwMDAwKTsKICAgICAgICByZXR1cm4gMDsK ICAgIH0KCgo9KiByZXByby50eHQgPSoKc3l6X21vdW50X2ltYWdlJHZmYXQoJigweDdmMDAwMDAw MDA0MCksCiYoMHg3ZjAwMDAwMDAyMDApPScuL2ZpbGUwXHgwMCcsIDB4MjIwZTAwMiwgMHgwLCAw eDEsIDB4MCwKJigweDdmMDAwMDAwMDEwMCkpCm1vdW50KCYoMHg3ZjAwMDAwMDAwNDApPUFOWT1b QEFOWUJMT0I9J210ZCcsIEBBTllSRVNIRVg9MHgwXSwKJigweDdmMDAwMDAwMDBjMCk9Jy4vZmls ZTBceDAwJywgJigweDdmMDAwMDAwMTIwMCk9J2pmZnMyXHgwMCcsIDB4MCwKMHgwKQpsc2V0eGF0 dHIkc2VjdXJpdHlfZXZtKCYoMHg3ZjAwMDAwMDAxYzApPScuL2ZpbGUwXHgwMCcsCiYoMHg3ZjAw MDAwMDAyYzApLCAmKDB4N2YwMDAwMDAyMDQwKT1AdjI9ezB4MywgMHgyLCAweGIsIDB4NCwgMHgx MDAwLAoiNzg4ZDljYjI5OWFiZDcyZWNlOTEzZDUzMzY1ZTE2Njg4ZTUxYWNlMTU5ODRhYjUzZDE2 NjZhZTNmNWRmYmM4NjBiZWY4NzM4OWUyMTI4NmJlMjM2ZGRjM2QwZmEyZTUxZDVjNWM3YjM1YzVk NTAzYzViMmMzYjZiZTBmYzU2ZTk3ZGY4OGZhYTA2MzUzNjNiYTkyYjgyYzQ3YTgxN2FjOTdmMWQ2 MzhhMTQ2MTgyMTI1NWVjMjNiZDBjZTViZjEwOTRlM2E4OTgwZDdlNmQxOTc2YmE3Nzg3NDU5MjBl MTcxOGZkZGFjNGJkNjZiMGE2MDY4MDFhYWVmZGVkMjkzYzNmY2ViYWQzYjJjMDY0MDNkYmE5OTk0 OTcxNjU5YjdmNGEwNzdhZGRhZWI4YWUzZTVhY2E3MDI3ZmRlMWU0MDAwMWMwYmRkODAwYmNjMjg3 ZTAyYzg2N2UyNzgyZGVhZjY3NmEyNjE2NDdkYjhjMmYzOTQ1MDIyMDU3ZGU3NjgxMDBhOGJmNzNk OWY5ZmYyOTIyOWI0NmRlYWQ1OGIyZGRmOTY0MzM0NjhlOWVlZTg5NTBkZjY1ODcxMWU0MTEzNjRl NDQxNDVlNjgyZjNjMDUzYzZmNWExODYxZWVlNmVkZjg4NWE5N2M1NDU4MDVhYzBjMzVhNWU0NjIz YjIwMDE4NjFjNTkzMzU0YjU3MGZmM2I0YTQ1ZjFhY2RlMGE4ZGJkMTdjMDljZTQ0OGVkNWRmZDll NzQ3MmU2ODk2N2RlY2I3NjlmYTYwMGNkMzBiZWI2YzgwMzBlOTQ3NGM3ZWM0YzFkYWYzZTAwN2Ji YzU3NjViMzY2ZDRhMTc2ZTM4YmRmYWJlZGQyYjA3NmE1ZWQ3ZDUwZjUxNzdiOTRhNmEwZjAwMGNk M2FjYWRkZThlODBmNjZlYWRhMTQwMTg2MjBiMTU5ZTllMTRjMjUyZDIwYzhkYmIwZmUzNjA1YjU2 OThiNTNlNDIxMGI2MmZjYmQwMDAxN2VhYTAxZWIxZmE1MjFiZGI4ZDMwZTgzOTUxYjRlYTAyODZj OGYwZDQ2NDUxN2ExMWQ3OTIyZDZjY2U0ZDIwNThlYzhjZDdiMDJiNzNkODI1ZDdlMGFiYmJkODVl OTkxMjIwZmM3OTk1NTM0YjdiMTk5OGNhNzUyODkwYjA3OWE3Y2EzZmRlNTY0MzhjZjgyZDVkZDll ZGJkMTFmZDI5M2MxN2QxY2YxNjY1N2QwYjM1MmE4YzZjMzYzMDBhZDA5YTc4ZTNlZTM5MTNiOWI2 ZjUzZGViZmZjN2UzMmJmYjY0YjBlOGNiZTA3ZmU5YjBkYWRiMDk3YWViMmMyNDI0MzBiZWM3NTYz MGEzOTIxODI4YTczMTRkZTE0MDQ4MjllN2FmYjNiODQyMGU4NWYyYzhmNmU4OGRlMDQyMzE0NDE2 ZTVjMDBjNTliMjIyMDgwMDRiZWMxNjFmODQ1N2M3ZjhlM2E4Y2E0MTc0YTRiNzhkZjZlNDYwZDU2 ZDI0ZTAxYWUxYTI0MTEyNzBmNzlkMDIwYTZiYWM4NTVmMWEzZWY3YjNkMDk5MTg4MjY1NmI0MDhk Y2RhZjAyZGI0NmFjOGZjYWIwYzg3NWQxZjJlOGRiMzY2ZTZhMjBjYjY3YTRkYjkyMDM4MmE2OTE1 NzE1ZDNiNDI2NmY3NzlmZTg2MzNiZWE2ZGVmMjhjYzE1OTEzOGI4MzQzMzRjZWRlZjNkZWM1NGVh NTMwM2RmNTZiZTg3MTE1MzE1ZWMwZjE0NzhhMGMwODY5ZTVmN2MzM2RhNjRiMjNhZjU4MTE3NTEw NTVjOTA4NDk0ODQ0ODFkNWExMGQ3MmUwOGNjZDEyNzEwYzRmMmZmNTg2YTllYTE3NWY0YWE3MGIx NTZjMDBjNTdlMjJjMTM2MGJmYzdkMzZhYTQ3OTI0NDRmODFkOGEwZWQ0MWJmNmE0NTJlYTUyNjhi ODYwNTY4MmFjNjNlYWE0NjUyMThmNGQ5NjJkYjQyMTU0ZDAxOTY2ZDNhZDhmYzJmZGU0OGVmNzFi ZTA4YmU1OGU1YWQ2ZDVhMzU5M2VmYzljMTMzNmU1NDEzNzJhMzQ3OTlkMjRlYTAwZDRkNDk4NWJl ZDFkYWIxMDYyMDkxMWU5ZjY5Njc4ODA4MjZiZTVhMWYxYmI0YjJhMzk0ODY1NGM2OTM1Y2FmZWI0 OTI1ZTEwN2EwMWY5ZGRhNjY4ZTVmZDc0ODllODIxMzkyNDFhOTE5MGYwOTBhZmUyMDk0MjM0Yzc1 ZmVjMDc0NjIyNzQ4ZDRkZDc4MmE5MzBmNDJiMGU3NWQ5MjRiZWY2OGZmYWZiYWE5ODkxNjE1MWEz NmVmMjk5OGFmZDMwMDA5NTVlZmJmYTBhOWEwMDgzNThjMTEwNDNjMGY5NmI1MmZjNzhhNDI1MzFh YTVkZmQ4ZGUwOTUxOGNmZjAwOGIzMzkyNTliMjY2YzQ4OGJiMWRhMDU4YmEyMThjZDY0YjNlNDEz Y2EyODg5ZDEwODZlOGM0MGFlMTE1MDE5ODQxMjFkY2ZhMmZkZTA5ZDA2OGY2ZGJiZTgzNTk5ODBk YWQ5NmVkMjIwYjg1MzRhYWVmMzUzZGZjODE1NjA5MDdkMjZjMDI0NDI5MjRhZDU1YjExZDNhZWU3 ZTU1MTZkOTZhZDA3OGM4NWFkMWNkYjE4YTQ1NDc0MzA1YThkYjM1MGY5ODQ0MzgwZTIwOTRmNjkx YTA1ZWEwOTQ1OGJjNTNmMzIzNmExZjNmYTVlMTQ0YTU3NWJhNTdlNThkMDBmNzY1M2QyZTZiNmNi ZTE4ZDI4Y2UzZjU3OTI1MzhhZDIwYzBlMGUxMGIwM2RhYzM0MDA5ZDZkM2U0Yzc2NjJjY2E4OGI1 MzA2NmU5NWVmZTQ1ZWUzZTA0ZGEzMjg2OTBkYWUxYWEwMDcwZjA5NDVlMjY5Yjc1NzMzYjEwNmZm NjUxNDU1NWQ1NGQ5NThmNzMxMzQ0MWZhMjFmOTc2MTUzMTJjNGY2MDBhMTQzMGY2Mjk4MTJmMjNj ZDIxZTcwM2I5NjZlMDRhYTZkMGJiYTZmMjUzOTM2OWEzYmFkZWJmYWE4MTk3ZDg5ZTMyOTRiNDRj MGVhNTRhZTZiN2Y0YTQ5NjU2ODA0MzE3NWE1NjY2NTQxYjU1OWE5ZmVhZjBjNTQ1NGYxMmYyMzBl OTdiY2Y4NGRhZTExZDFhODM1OTQxMWI5OGJiNjA2M2VlOGFlMGZmYTMwYjU3NTc3NzFjN2I3MGU0 ZmJiNmU5NTFhNjgwODczZTZkYTUzMTYwMGU5NTExMTBjMzRjYWFjYzhlOTc4YzA2YjQ4NDhjODgw YzQ4YWQ4ZTZjNTRiYzc5MmNlNTRlYTRiMWMwNWFiMDRhZmI0ZDZjYWIyNWI4NWQxYzRiNmM0NzRj N2VjOTI2N2I1MDFlZGFhMjBlZTBlNDE1ODY4ZDg3ODY2NDI2YjEzNzRlNThhNjY2NTMwYjk0ZTM0 MmM4YjJlYmRkNDA1ZmVmMGEyNmRmODJiYmM1MDJkYTJjYTE1NTBjMjhkM2MwYjY5ODcyZmY4NjFj ZDIzY2I2ZTFmZjFlNjJmNjI1YWU5MmY5MGYzMDkzM2ZjODI3ZWRkMzg2MTIxMzE1MzUyZGJjOWY0 Y2FiM2RkZGFkZWI4ZGYwNTFkMmY1OWNkNTllOTdkYzkyY2U0MzQxZjk3ODAwM2U0ODY4NWU3Njcz Y2YxZTYwMjYwNjAwZTdjYmY3MzFkYzE2OGI5YTQxMWRjM2M4NWY4NDNiZDJjNWZjYTg5YzA2ZDEy YmFjMDhhNjFjZjA5OWFlNWYyM2U1ZTkwODQ0OGU4MWYyNzc5YjM4NWIzMWRjZDVjZjhhYWFkNGI4 NWFlNzA2MzYyNGE3ZGY1NzNhZWNjYzhiNjE5NzdmOGVjMTBlNjhiNWRmMWMxYjgwNWM3ZTAwMTIy OGE2NWMwZTc3MmM1MjUxNDY2YTQ5ZjEwMjE5YmI3MThhNGFhMmUzNWM0MDgxMWE5NzJlYjU4NTMw ZjdmMDc0MWQzYmUwYzAwZTM4ZjU4OTk0YTUxOTk1NDdmYzUxNTBjNzgxZmZlMmU1NjU2MGYwOGVi NzViZmNkOTA4NWZmMTQwY2VlZmQwZDZlZDQzZGFkMzlkMmNkYTg2OTRkNDIwZTg2MWExZGVjNGEy OGQxY2Y1MzI0YzVjNWFiODE5MjIxNTQ4NzNiM2Y4MmRmMWJjMDZjYjk1NjVjMDhmNzc0ZDlmYTZm ZTU3NWRhZjg3YjMyOGFiMTBiOTEyMjQzZjEwMDcxMmEyN2Y0OTgxZmFhMzcyZDczNjcwMmM1NjVh MDhjNGQ2YjBhYTMxMmQzYzkwMTdmZDFlN2FiOTgxZGU3ZWUxZGZjMWE4NDk5MjRhYTkyZWFiMWIz ZTZlOTc0MmY2OTEzYTA4YjU2OTlkNjcwNjk3YTYwOGQ3NDllMDZjMzQxNDIxYTgwOWEzNjVkY2Ez ZjhkODhkODQyNjg1MDgwZjhlZDkzNDgyODg4MDY1YjUwYmY5YWJkZTc1ZmUzN2M4ZmYyYWU0ZjI0 ZTI2ZjgzOTQ5YWI1YzRmNGE5NmUxM2IyY2RmNzQyZGFmOWMxYjU4MzA1NjkxNDU2YzZjMTkwYmZi N2JiYmIwODRlYTlmOTdlOTljM2UwMjg0MTVkNGUwNWNjZjc3MTdiNTc5N2ZmNWJhZmEyNTE4YTBh Y2FiNDM0YTE4OGQ0Nzk3YTg1ZjM2NTU3ZGQ2YWEzOWM3NWU4MGI3MjQ5NjM3MjY1MjU0NGIxNDI0 OTAxYTZhOWQ0Yjc0NTMwODZiNmJhMjZhNDA1MjFkYTk0YWI1NGRlNGExMWI1MWI0YWQ3YWIxZDY4 MDVmMzIzYjA0NDk1NWY3NzljZmU3YzFjMzU4NmY0YmUwZWFiMjI2YTI1YWUxNmJkOGRjN2ViMDE1 MDI0Yjc0MzRiNjQwODM0M2ExYmU2ZTFkZDM5MjVjMTAyYjRjOWM1NDM5ODM4MzViNmJiNDVmODBl YTM1YmY3ZmNlY2FiNWQ5NDcyMjRiZmRiMWMwM2IyMGZjMDdhNWNhYzYzMGJlYjRiMzA0NGViZTU1 YzkwMjM4NDRjMWZkNjRiNGViMDI1NTM2ODY3ZjBhZmEzODg1NzZjNWIyNTY0Y2QyZTIwYWUyNjMz ZjdiNzZjZjZmYmNlZmYyNDBmNjVlNWVlYmEyODQzZmFhMWU3NzEwOGQzNWM1OWIzZjU3MDExMjY2 MGU5Mjc4ZGEzMTI3Njg2ZGMyYTk2NWE2YWQxNjcyZTI5ZmY5ZWRkNjJmNDllNDFiZGQ2NTM0OGQy NjU3ODQ2YmU4MDQ3OWNlYTQxNWJmYjU5MjcyMjlmM2I3NzJlZDljOWI3NjM5ZDhmNzVmZjY2MjE4 NDFhN2I2NDk3ODEzMWU4Njk1MmJmZTUxMDcxNWIyNWVmYmNmMzkzMzIwYzFkNjI5OWFjNmMxOWRk OTA4ODcwZjk2ZDkyYjhiZGNmMTFlM2M5ODc4ZjJlMzdiZGFmNzI3MThhZDBiYzI4NzJjN2EwYjEw MWY2ZTM5Mjk5NzIzNGUwNmM5YjFiZGMzMjQ5NzE0MjdkNmI5N2MzYzE2NTMxMTc4ZjQwYThhYjUy Zjk4ZTA2Njc4MDk3N2FiZDM1MmUxZWZlNjE4NWY3MDIzM2IzMGZkYzk2YjZhMjg5YjllMGZjZWU1 NTU5MjNlZjU5MGJkOWNkMmYwZWY3MDI0NjQxNDUwZDFhOTI1ODA0NmFjMGU4MGFjZDQ0ZjI2NzQ0 Njk0NmMwOTZkYjk4NDhmNzhjZGRiYTlmNTQwOWIwOTBkZDIzNDRkOGQ0NWExNmNkMmVjY2U1YmYy MmJkNGNiODlhZmQzMDY3Y2IwYmQ5YTcyNzliZTFiMWU1MDM0OThmMzllZGNlNzE0ZjM3NTk3ZDBl NjQ2MDcxNmQwOWVhMzc2ZDczZThhNzFmZmYxMzI0ZmEyYWViYTc1ZThiYmQwZWE0YzQxOGI0NTc4 NDU1MDE1M2Q0OTI4OThlMTVkYTg4YjZlZDNmNjdlODVkYmIxMTFjMmZlYWMyZmQ3OGI2ZjkwMTFj Njg2NGI5YmIxMTY1MzY5NGY3ZjAyNTY4Yjc2OGI2YTI3ZDA4MGVhZGMwMDkzNzQ0YjkxMTVhYTJm OGQwM2ZhMjdmYWVhMmUzNTZlZjhjZTYyZTQ3MjJkZGQxMzlmNzg0YWMzYjhhZmI5OGM4ZDM5ODRj OGNmOTQzOGU4MzcxMDMzMDQyOGI3ODMwYzE3MDlhMzA5YmJhYzNiYmRiZDA4M2U1Mzk5MzhjNTc4 OWUxNzA5ZDJjMGVlOTRkY2IyZmU2NGMzMWM4N2QyNWNjN2Y4MjZiYmY1ZTAyMWQ1YWFhMTcyOTcw YWFlOTZhNjg1OGY4YzExZmRmYjc0ODMyOGQ5NzQxMWVkYzEwZGQxNmZkMTBmYWE3YzNiOTRjZTE5 MTUyZmIyOTY1NjkwNDIxZDNjNmRiMmU3ZTg4ODhjN2JiMDY0NDNkYjMxMTFlM2RiNjlhODhkZDA5 N2FiOGM2NGQ2YmVhMzBkYTI0N2ZjZDExN2EzMGVlZjQ1Y2Q5MzM5YTc4Mzc1NjI4Y2RiZmEyNmQ2 YjM0MTllNjliYmU4ZTg4NDc5MTI5Njg0YjIzMDRkYWEyZDY4NDMwNDgyNmVlZTk3ZDM0NjMwM2Nj NjMxZTEwNDY1YTJmOTI0M2U4NGQzMjI4MTAzODhiYTJkMzA2MjZhNjNkZjk3OTNlYjk2M2RmMjM0 ODY1Y2JiNjhjZGJjMDQzNjNlMTdhNmE2ZWIxYzgwMTQxNzdjOTlmYWFjYjhkN2E4ZTk5ZDg5Nzcx OGJjNTEwNTU3Mjc4MjBkMzIxZjI1ZmQxNWQyNGQwMjlkNGZhZDZmZGU5N2YwOTExODBlZjJiYzM5 MTNiYzExZjhmMTA0YmNjN2VhMDAyNDE1NzQ4MWIzNTM3Y2U1NDNmZThhYjkzYTI2Y2I5YmE1MWZh NzhkMzM3YmYxMGJhMjlkYzVmZWJmZTRhZDAxNGJkNDBmMzMzMzA4MjNkN2Y0NTczYmFlYmQ5ZTA2 M2Q1OWE4NzY2MmJlZjg1OWNlZThhOGU1MzE4YWFlMjJlNzlmYjRkMzFlMDg4ZjA1NjljNjdiYmE0 MTg2OGZlNDY0ZWQ3N2VjN2ZlMDdkZDNhNWMyYzgxYzFmZGVkMTYwNTk4YjM3NTY0NTEzMTczZjEz ZmVlYjlkZjRiNDdlZGU4MDUwYWFjNDMxZTFiMjA1OGM2YWZlN2U0NGJjYzZmMjhkYzU4MzNkZGVk MTBlNjkxN2UxNWI5MzA4OGNkOTA3OTE4MjZjYTdjM2I5YTQyMTFlOWUyZmZkNDk2NjIyMzgxNmRi NmU0ZWRlNTcwMWI3Njk4OGQ4ZjM0YWExNDBmZmI0YmMzZWZmY2NiZTVhZjM5NDJkNGM1NzE3NzAw ZTU5MmExNzAwMWQyMGI2NjVmYjdjNmY2NTM2MTEwOGExMzcwYTQ1ZGI0NzdhMWY0NDllNWMzZjlh ODlmOTY3MjkwYWYyMzFkYjgyZmVkZWNmY2EyYzNjZWRmZmVhZGI3NzU3MjhiNDVjZTRiZGUwNjMw ZTllMWRmY2Q5ODEzOGE1NTZkZDQwYjY1NTU4MWI0NTFhNzE2NGFkNTdjNGZiMmI1ZGM1YjE0NWU4 NzMzZGUzM2FmODQ0ZTQwMDQxNGY4NWMyOGNhMWY4ODhlNzBjNDVkMjhjODIzZTA3ZWRkZjMwZGY3 OTExZGY1ODRhZDQ1OGEyNTM1NTA4NDE2M2E5YTdjYzNiYWM0Mjc2ZTk1NzIxMTYyNmUyODgyMTIw MDUzMzRkZWM3NDJjZmU1N2U2YzgyMzRlNTIwZDhiZWQ0NWFmNDc2NzcwZjQ3MThmNzk5YzFhMWY2 MzdmYzA0YTczNzgwYTM1ZDIxOTRlNjAxN2U0MDVkM2UwYjFlOWYyYzdjMGY2YTBlZDI4YTJlYWZk ZDc5MjI3NjIwNTlmZTBlYmM3NzU5OTI0NWIxMmM5ZjBjZWY5ZWRhYjFhMjUxNzFhNmE5YTA1NjJl MjRkYjc2ZTI1ZGZiNWVjYjczNTJkMGJmYzc4ZDg1OGU4YWFhYzkxM2VmYTRmZjYwNDg5Njc5ZThj NzIwMTk4OTdhOGE4NWE5ZWUyOWYxMDkyMjMxNWJhN2RiMGExMjZmODI3YzAzZmE1YmJiOTBmOTkx Y2I5ODY2YjNlMDMwNDdjYjFmYWJiYmRiZTVhMzUyODJmMDMwYzBkYmRiZDIyN2Y4NWIwNTcyMWM0 NWM4YjJiODVkMzMxMGJiNDFkNmFhNTYxNGE2MGQ5ODc0ZDEyZjExZjVhOTRiMTVmNzQxZGIzMTBj OTI3YjJlOTA2MDdhMmFmOGM0YjU3ZDZiNjkzN2Q1YTFlYjE0NTg5ZDFlMzYxNjQyNDU4Y2MyZmJk Mjk2YWMwMzFkMDk5ZGY0OWE1M2U4ZjBkNDUwNmIyZGNiYjIwZjU0NTYwYjY5NWE0ZTBhNGE1YTEz MjMxOTg1ZDUzYmIzNTMzMTI2YWRkMjgxZmQzOGNkZGY3ZWY0MzcyMDFlOGFlYTFhYjYzYWQ2NzNj ZGNjNmM2MDQxMTRhZWM3NzE4ODFiNGZiN2FhN2NjYmQzOTdlNzAzZjEwODk1NjE5ZTE1YzcxNjg0 YmJiZmEyYjJjNjBhNzkwZGUwZTUwNTk1MzhiNTFkMzQ3YTY4YWQwNTc0NzJhOWYxZWFmMDU0ZGY3 NzkxYjU4ZjYzOGMwNTk1NTViYmI5NzBlZGY4NzdkNWY2MjNlMjU0MWRiYTI3ZGY4ZDcxM2ZlN2M1 NWY0MGZiZjNkYmRjM2QwNDJlOTJiODNmOTRkZDY2ZDFjZDJiYzVjYzk4YTZhNTAyYjVkOGQ4ZWU2 ZWZlY2FjZmI3NjI0NjRjNmY4Y2VhOGJkYWQxNGEyOTE5OTkyOGUwY2IwN2ZiYzMwNmI5ZWVjY2M0 YzdhMzI2MTg1MjU0NDE0ODkyYjYxNGRkY2MyMGU5YjVkMjU4ZTY2MjcxNDMwYzA3MDVjNWE2MjJm YTU2NDZkYTQ4OTdhMDg4ZjY4ZmRlYjY2ODQyYWQzZDcyZjIzMmY0ODdiM2RiM2I4M2Q4MjYyMmM5 MWRhZjc3OTYzNGZhMWI5N2M3ZDVhZGI1ZDUzYmU1MTk4YmM1OWFlZjFhYWI2MGMzNzk1Mjk2YTg0 YWMzZjc3Mzk5ZmVlZDViODZmNDRiM2ExY2EzNWVlNDY4OTFlZTkwM2E5MDM0MDg4M2NlYzQxZDU3 N2E4ODgwOTQ1YjUwNGM3ZWE1YmRjOTRkNjZiZjI1YjRkMmUwNjRiZDY5ZGZjZTRmMDBmOGRmYWRl MDczOWZhYjUyNzVkYjExZTk5OWIyNTYyMmMyMGNhMGE5ZjEwZjI3YzgwMGE0ZjVkMTlhYTkyZDA0 Y2QyODJmOTZlOTkwMzAxODc0YzVkZGNmYjEzMjIzYzRmNWZkMzdjNDQ5YWRkZTUzMmExNmFlZTY2 NDA3YmZlZWVlYmRhNGY1MTNmMjI0ZTQzNGE5YzA4YTIyODFkNWUxZjQ1OTFjOWE0MzNhYjE1NzZj MTFlZGQwZGY5ZmI2ZjQ3Yjc2MWZjODc4ZDUzMmQ3ZmMyYTc2MjQ2MWZkMTQ3M2ViN2M3Yzg4NjY4 Yjc0OWI5YmJmNDNjOTM3ZmEyYmQ3M2FlOTE3ZWEyYTkwM2JmNWY3ZDcxYWUxYzdkNzFjNjBkZWYx YmJjNGU4MTUxYmVlNWY0YTM5NjMyNTkwN2Y0ZjJiY2JlOTgwMzhlNDZiYzlmYjMwZDE5OWYwMjVl YWJlYjAzN2NlYWVjM2VlMTg3ZjczYTEzNmI4NTY2YTk0M2Q1YjMyNzExOTllNmQxOWI3MDY2ZDkw YjEwZDBjMTFlN2NiMGMwYjVmNzMxMjdjZDY4NWE3NjM4Yjk5YTFjOWFlYTRmYmYzZmFjNjdhNGIx MTRjYTlmYTYwZDJjOWMyNDcyM2IwMzcxNDJlM2U0NzUwM2YzZGZkZmZjNDg3MjEyMDkwZDIyMWVi ODVmNTNjZjYxNzZjMjZiOTNjNzU3YjUyMWQwMTdjYTE3YWM3ODg5YzI2YzY0NzNmYjQ0Y2MyYWI3 OWNkNzZmYmY4ZmM1YTgxZGMyNGJkN2JhNmQ1NWQ4MDM2ZjRkNjAyMThlN2M4ZmRmN2YzYjkxNWVm ZDBiZDBlZGZhYzM4MGUzNzE3Nzk0YWI0NmIyYTVkYWVkNThmZGIzZWE2NjcyMGMwZTc4YTBjZTgy NWIxNTVlYmMwOTc5Y2Y3NzkxNWRiM2RmNjAwYmJkMTc5ZjFkMmQ2NzRkNzZiMTJhZmYwODc3NTdk NGFhNDgwZWUxNTY2Nzg0MDc0YTUyODdiZTAwODhlZmJlMTJmNTUwYmFkM2I0MTBjZjA0ZmJhOGYw NmQxMTIwYTFkYWQzNWRlOWM3YTIyYzNjYWY4M2MxYmY2ZWE1N2EwNTVhZmNiYzYxYjA2OGZlYjVk MTdmNWQwY2Q5ZTU5MTFkMmQ5YzhjNmZmODlmYzM3NzI1YTRiOWFjM2E4ODAwZDE3MzExOTljODIw MWMwNTIyZTlhZjc0OWZlMzZlMTQxOTQzMTBhNWFhZmQ5NDRjMzIxZWZiNGVjZjVjMTMxY2NmOWRl NDhjOGIzNmE5MDVmNDdlYmE4ZmI0MmNlNDM1ZDFiZDQwOGRjODdiMWM5MTU3N2ZmYmExNmUzMmI5 YmUyMTk4MmQzMTc2MzIwYzhlMjM3OTliNmM1Y2MzZDgzNGNjYmU5YWNlZGE3MGJkMmM3M2ExNTQx MzdhY2RkNjVmNDE5MWU0NDcwODkzZWIyNGU0YWIwMDcwMGMyYzEzNTE0OWZiODY2NDRiNWFjMGJl MTY2OTI4OGI5YzI5YTFmNmY2MTUxN2Q4YjRmMDk2MTZlNzY3YmQ3MmQxM2Y4MzMifSwKMHgxMDA5 LCAweDMpCgphbmQgc2VlIGFsc28gaW4KaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20veHJpdmVuZGVs bDcvZmRjN2ZhM2E3YjU1YTkxNzQ2NjY5NDRjMDc3MzJlZWMKCkkgaG9wZSBpdCBoZWxwcy4KQmVz dCByZWdhcmRzCgoKbGVlIGJydWNlIDx4cml2ZW5kZWxsN0BnbWFpbC5jb20+IOS6jjIwMjTlubQ0 5pyIMTfml6XlkajkuIkgMjA6NDjlhpnpgZPvvJoKPgo+IEhlbGxvLCBJIHJlcHJvZHVjZWQgdGhp cyBidWcgYW5kIGNvbWZpcmVkIGluIHRoZSBsYXRlc3QgdXBzdHJlYW0uCj4KPiBJZiB5b3UgZml4 IHRoaXMgaXNzdWUsIHBsZWFzZSBhZGQgdGhlIGZvbGxvd2luZyB0YWcgdG8gdGhlIGNvbW1pdDoK PiBSZXBvcnRlZC1ieTogeGluZ3dlaSBsZWUgPHhyaXZlbmRlbGw3QGdtYWlsLmNvbT4KPiBSZXBv cnRlZC1ieTogeXVlIHN1biA8c2Ftc3VuMTAwNjIxOUBnbWFpbC5jb20+Cj4KPiBJIHVzZSB0aGUg c2FtZSBrZXJuZWwgYXMgc3l6Ym90IGluc3RhbmNlOiBodHRwczovL3N5emthbGxlci5hcHBzcG90 LmNvbS9idWc/ZXh0aWQ9NWEyODFmZThhYWRmOGYxMTIzMGQKPiBLZXJuZWwgQ29tbWl0OiB1cHN0 cmVhbSBmZTQ2YTdkZDE4OWUyNTYwNDcxNmMwMzU3NmQwNWFjOGE1MjA5NzQzCj4gS2VybmVsIENv bmZpZzogaHR0cHM6Ly9zeXprYWxsZXIuYXBwc3BvdC5jb20vdGV4dD90YWc9S2VybmVsQ29uZmln Jng9NGQ5MGEzNmYwY2FiNDk1YSB3aXRoIEtBU0FOIGVuYWJsZWQKPgo+IHJvb3RAc3l6a2FsbGVy On4jIC4vMAo+IFsgIDQwNi43Mjc1NzddWyBUODE3N10gLS0tLS0tLS0tLS0tWyBjdXQgaGVyZSBd LS0tLS0tLS0tLS0tCj4gWyAgNDA2LjcyODI3Ml1bIFQ4MTc3XSBrZXJuZWwgQlVHIGF0IGZzL2pm ZnMyL3N1bW1hcnkuYzo4NjUhCj4gWyAgNDA2LjcyOTAxNF1bIFQ4MTc3XSBpbnZhbGlkIG9wY29k ZTogMDAwMCBbIzFdIFBSRUVNUFQgU01QIEtBU0FOIE5PUFRJCj4gWyAgNDA2LjcyOTg1MF1bIFQ4 MTc3XSBDUFU6IDIgUElEOiA4MTc3IENvbW06IDAgTm90IHRhaW50ZWQgNi44LjAtMDg5NTEtZ2Zl NDZhN2RkMTg5ZS1kaXJ0eSAjNgo+IFsgIDQwNi43MzA5MDRdWyBUODE3N10gSGFyZHdhcmUgbmFt ZTogUUVNVSBTdGFuZGFyZCBQQyAoaTQ0MEZYICsgUElJWCwgMTk5NiksIEJJT1MgMS4xNi4yLWRl Ymlhbi0xLjE2LjItMSAwNC8wMS8yMDE0Cj4gWyAgNDA2LjczMjIwNl1bIFQ4MTc3XSBSSVA6IDAw MTA6amZmczJfc3VtX3dyaXRlX3N1bW5vZGUrMHgxZjUwLzB4MjYzMAo+IFsgIDQwNi43MzMwNjFd WyBUODE3N10gQ29kZTogMGYgYjYgMDQgMDIgODQgYzAgNzQgMDggM2MgMDMgMGYgOGUgODEgMDEg MDAgMDAgOGIgYjMgYzAgMDUgMDAgMDAgNDggYzcgYzIgYzAgN2UgYTQgOGIgNDggYzcgYzcgYzAg N2EgYTQgOGIgZTggNTEgYmEgODIgZmUgOTAgPDBmPiAwYiBlOCA2OSAyOSAwMSBmZiBlOSA3MCBl MTkKPiBbICA0MDYuNzM1NDcyXVsgVDgxNzddIFJTUDogMDAxODpmZmZmYzkwMDAzOTZmNGUwIEVG TEFHUzogMDAwMTAyODYKPiBbICA0MDYuNzM2NDE2XVsgVDgxNzddIFJBWDogMDAwMDAwMDAwMDAw MDA0NSBSQlg6IGZmZmY4ODgwMjJhMjAwNDAgUkNYOiBmZmZmODg4MDIyYTIwMDQwCj4gWyAgNDA2 LjczNzQ0Nl1bIFQ4MTc3XSBSRFg6IDAwMDAwMDAwMDAwMDAwMDAgUlNJOiAwMDAwMDAwMDAwMDAw MDAwIFJESTogMDAwMDAwMDAwMDAwMDAwMAo+IFsgIDQwNi43Mzg0MzVdWyBUODE3N10gUkJQOiBm ZmZmYzkwMDAzOTZmNjYwIFIwODogMDAwMDAwMDAwMDAwMDAwNSBSMDk6IDAwMDAwMDAwMDAwMDAw MDAKPiBbICA0MDYuNzM5NDcwXVsgVDgxNzddIFIxMDogMDAwMDAwMDA4MDAwMDAwMCBSMTE6IDAw MDAwMDAwMDAwMDAwMDEgUjEyOiAwMDAwMDAwMDAwMDAwMDAwCj4gWyAgNDA2Ljc0MDQ2M11bIFQ4 MTc3XSBSMTM6IDAwMDAwMDAwMDAwMDAwMDAgUjE0OiBmZmZmODg4MDI4YmIxMDAwIFIxNTogMDAw MDAwMDAwMDAwMTA2Ywo+IFsgIDQwNi43NDE0NTldWyBUODE3N10gRlM6ICAwMDAwMDAwMDA3YTY2 NDgwKDAwMDApIEdTOmZmZmY4ODgwYjkzMDAwMDAoMDAwMCkga25sR1M6MDAwMDAwMDAwMDAwMDAw MAo+IFsgIDQwNi43NDI1ODFdWyBUODE3N10gQ1M6ICAwMDEwIERTOiAwMDAwIEVTOiAwMDAwIENS MDogMDAwMDAwMDA4MDA1MDAzMwo+IFsgIDQwNi43NDM0MThdWyBUODE3N10gQ1IyOiAwMDAwMDAw MDIwMDAzMDI5IENSMzogMDAwMDAwMDAyYmU2ODAwMCBDUjQ6IDAwMDAwMDAwMDA3NTBlZjAKPiBb ICA0MDYuNzQ0NDA3XVsgVDgxNzddIERSMDogMDAwMDAwMDAwMDAwMDAwMCBEUjE6IDAwMDAwMDAw MDAwMDAwMDAgRFIyOiAwMDAwMDAwMDAwMDAwMDAwCj4gWyAgNDA2Ljc0NTM5OF1bIFQ4MTc3XSBE UjM6IDAwMDAwMDAwMDAwMDAwMDAgRFI2OiAwMDAwMDAwMGZmZmUwZmYwIERSNzogMDAwMDAwMDAw MDAwMDQwMAo+IFsgIDQwNi43NDYzNzNdWyBUODE3N10gUEtSVTogNTU1NTU1NTQKPiBbICA0MDYu NzQ2ODMzXVsgVDgxNzddIENhbGwgVHJhY2U6Cj4gWyAgNDA2Ljc0NzI3MV1bIFQ4MTc3XSAgPFRB U0s+Cj4gWyAgNDA2Ljc0NzY1MV1bIFQ4MTc3XSAgPyBzaG93X3JlZ3MrMHg5Ny8weGEwCj4gWyAg NDA2Ljc0ODIxNV1bIFQ4MTc3XSAgPyBkaWUrMHgzYi8weGIwCj4gWyAgNDA2Ljc0ODcwMV1bIFQ4 MTc3XSAgPyBkb190cmFwKzB4MjQ1LzB4NDQwCj4gWyAgNDA2Ljc0OTI2Ml1bIFQ4MTc3XSAgPyBq ZmZzMl9zdW1fd3JpdGVfc3Vtbm9kZSsweDFmNTAvMHgyNjMwCj4gWyAgNDA2Ljc1MDAwNV1bIFQ4 MTc3XSAgPyBqZmZzMl9zdW1fd3JpdGVfc3Vtbm9kZSsweDFmNTAvMHgyNjMwCj4gWyAgNDA2Ljc1 MDcxMV1bIFQ4MTc3XSAgPyBkb19lcnJvcl90cmFwKzB4ZmYvMHgyNTAKPiBbICA0MDYuNzUxMzQy XVsgVDgxNzddICA/IGpmZnMyX3N1bV93cml0ZV9zdW1ub2RlKzB4MWY1MC8weDI2MzAKPiBbICA0 MDYuNzUyMDk0XVsgVDgxNzddICA/IGhhbmRsZV9pbnZhbGlkX29wKzB4MzkvMHg0MAo+IFsgIDQw Ni43NTI3NDBdWyBUODE3N10gID8gamZmczJfc3VtX3dyaXRlX3N1bW5vZGUrMHgxZjUwLzB4MjYz MAo+IFsgIDQwNi43NTM0NzldWyBUODE3N10gID8gZXhjX2ludmFsaWRfb3ArMHgyZS8weDUwCj4g WyAgNDA2Ljc1NDA5MF1bIFQ4MTc3XSAgPyBhc21fZXhjX2ludmFsaWRfb3ArMHgxYS8weDIwCj4g WyAgNDA2Ljc1NDcxNl1bIFQ4MTc3XSAgPyBqZmZzMl9zdW1fd3JpdGVfc3Vtbm9kZSsweDFmNTAv MHgyNjMwCj4gWyAgNDA2Ljc1NTQ3N11bIFQ4MTc3XSAgPyBfX3BmeF9qZmZzMl9zdW1fd3JpdGVf c3Vtbm9kZSsweDEwLzB4MTAKPiBbICA0MDYuNzU2MjM0XVsgVDgxNzddICA/IHJjdV9pc193YXRj aGluZysweDEyLzB4YzAKPiBbICA0MDYuNzU2ODYxXVsgVDgxNzddICA/IGxvY2tfYWNxdWlyZSsw eDFiMS8weDU0MAo+IFsgIDQwNi43NTc0ODldWyBUODE3N10gID8gX19wZnhfbG9ja19hY3F1aXJl KzB4MTAvMHgxMAo+IFsgIDQwNi43NTgxMTddWyBUODE3N10gID8gX19wZnhfX19tdXRleF9sb2Nr KzB4MTAvMHgxMAo+IFsgIDQwNi43NTg3NjldWyBUODE3N10gID8gamZmczJfZG9fcmVzZXJ2ZV9z cGFjZSsweGM1OS8weDExOTAKPiBbICA0MDYuNzU5NTAyXVsgVDgxNzddICBqZmZzMl9kb19yZXNl cnZlX3NwYWNlKzB4YzU5LzB4MTE5MAo+IFsgIDQwNi43NjAyMjNdWyBUODE3N10gIGpmZnMyX3Jl c2VydmVfc3BhY2UrMHg2N2UvMHhjMjAKPiBbICA0MDYuNzYwODgzXVsgVDgxNzddICA/IGF2Y19o YXNfcGVybV9ub2F1ZGl0KzB4MTUyLzB4M2QwCj4gWyAgNDA2Ljc2MTU4NF1bIFQ4MTc3XSAgPyBf X3BmeF9qZmZzMl9yZXNlcnZlX3NwYWNlKzB4MTAvMHgxMAo+IFsgIDQwNi43NjIzMDJdWyBUODE3 N10gID8gYXZjX2hhc19wZXJtX25vYXVkaXQrMHgxNTIvMHgzZDAKPiBbICA0MDYuNzYzMDMwXVsg VDgxNzddICA/IGNyZWRfaGFzX2NhcGFiaWxpdHkuaXNyYS4wKzB4MTlkLzB4MzEwCj4gWyAgNDA2 Ljc2Mzc4OF1bIFQ4MTc3XSAgPyBfX3BmeF9qZmZzMl9zZWN1cml0eV9zZXR4YXR0cisweDEwLzB4 MTAKPiBbICA0MDYuNzY0NTY3XVsgVDgxNzddICBkb19qZmZzMl9zZXR4YXR0cisweDFhYi8weDE3 NzAKPiBbICA0MDYuNzY1MjI0XVsgVDgxNzddICA/IGNhcF9jYXBhYmxlKzB4MWU0LzB4MjUwCj4g WyAgNDA2Ljc2NTc4M11bIFQ4MTc3XSAgPyBfX3BmeF9kb19qZmZzMl9zZXR4YXR0cisweDEwLzB4 MTAKPiBbICA0MDYuNzY2NTE0XVsgVDgxNzddICA/IHhhdHRyX3Jlc29sdmVfbmFtZSsweDI5Mi8w eDQ0MAo+IFsgIDQwNi43NjcyMjBdWyBUODE3N10gID8gX19wZnhfamZmczJfc2VjdXJpdHlfc2V0 eGF0dHIrMHgxMC8weDEwCj4gWyAgNDA2Ljc2ODAyNl1bIFQ4MTc3XSAgX192ZnNfc2V0eGF0dHIr MHgxODIvMHgxZjAKPiBbICA0MDYuNzY4NjQ2XVsgVDgxNzddICA/IF9fcGZ4X2V2bV9wcm90ZWN0 X3hhdHRyLmlzcmEuMCsweDEwLzB4MTAKPiBbICA0MDYuNzY5NDExXVsgVDgxNzddICA/IF9fcGZ4 X19fdmZzX3NldHhhdHRyKzB4MTAvMHgxMAo+IFsgIDQwNi43NzAwNjddWyBUODE3N10gIF9fdmZz X3NldHhhdHRyX25vcGVybSsweDEzMi8weDYxMAo+IFsgIDQwNi43NzA3NTJdWyBUODE3N10gIF9f dmZzX3NldHhhdHRyX2xvY2tlZCsweDE5NS8weDI3MAo+IFsgIDQwNi43NzE0NTJdWyBUODE3N10g IHZmc19zZXR4YXR0cisweDE1MS8weDM3MAo+IFsgIDQwNi43NzIwNTJdWyBUODE3N10gID8gX19w ZnhfdmZzX3NldHhhdHRyKzB4MTAvMHgxMAo+IFsgIDQwNi43NzI3MDRdWyBUODE3N10gID8gX19t aWdodF9mYXVsdCsweGVlLzB4MWEwCj4gWyAgNDA2Ljc3MzMyNl1bIFQ4MTc3XSAgZG9fc2V0eGF0 dHIrMHgxNTMvMHgxODAKPiBbICA0MDYuNzczODgxXVsgVDgxNzddICBzZXR4YXR0cisweDE2Ni8w eDE4MAo+IFsgIDQwNi43NzQ0MjFdWyBUODE3N10gID8gX19wZnhfc2V0eGF0dHIrMHgxMC8weDEw Cj4gWyAgNDA2Ljc3NTA0M11bIFQ4MTc3XSAgPyBtbnRfZ2V0X3dyaXRlX2FjY2VzcysweDIxZC8w eDMyMAo+IFsgIDQwNi43NzU3NDNdWyBUODE3N10gIHBhdGhfc2V0eGF0dHIrMHgxODgvMHgxZjAK PiBbICA0MDYuNzc2MzM4XVsgVDgxNzddICA/IF9fcGZ4X3BhdGhfc2V0eGF0dHIrMHgxMC8weDEw Cj4gWyAgNDA2Ljc3Njk4Nl1bIFQ4MTc3XSAgPyBoYW5kbGVfbW1fZmF1bHQrMHg1NDEvMHhhYjAK PiBbICA0MDYuNzc3NjQ4XVsgVDgxNzddICBfX3g2NF9zeXNfbHNldHhhdHRyKzB4YzYvMHgxNjAK PiBbICA0MDYuNzc4MjgxXVsgVDgxNzddICA/IGRvX3N5c2NhbGxfNjQrMHg5MS8weDI2MAo+IFsg IDQwNi43Nzg5MjddWyBUODE3N10gID8gbG9ja2RlcF9oYXJkaXJxc19vbisweDdjLzB4MTEwCj4g WyAgNDA2Ljc3OTU5OF1bIFQ4MTc3XSAgZG9fc3lzY2FsbF82NCsweGQyLzB4MjYwCj4gWyAgNDA2 Ljc4MDE5NF1bIFQ4MTc3XSAgZW50cnlfU1lTQ0FMTF82NF9hZnRlcl9od2ZyYW1lKzB4NmQvMHg3 NQo+IFsgIDQwNi43ODA5NDRdWyBUODE3N10gUklQOiAwMDMzOjB4NDM3ZDQ5Cj4gWyAgNDA2Ljc4 MTQ1NF1bIFQ4MTc3XSBDb2RlOiAyOCAwMCAwMCAwMCA3NSAwNSA0OCA4MyBjNCAyOCBjMyBlOCBm MSAxNyAwMCAwMCA5MCA0OCA4OSBmOCA0OCA4OSBmNyA0OCA4OSBkNiA0OCA4OSBjYSA0ZCA4OSBj MiA0ZCA4OSBjOCA0YyA4YiA0YyAyNCAwOCAwZiAwNSA8NDg+IDNkIDAxIGYwIGZmIGZmIDczIDAx IGMzIDQ4OAo+IFsgIDQwNi43ODM4NDFdWyBUODE3N10gUlNQOiAwMDJiOjAwMDA3ZmZmN2NkNTFk MjggRUZMQUdTOiAwMDAwMDI0NiBPUklHX1JBWDogMDAwMDAwMDAwMDAwMDBiZAo+IFsgIDQwNi43 ODQ4ODldWyBUODE3N10gUkFYOiBmZmZmZmZmZmZmZmZmZmRhIFJCWDogMDAwMDAwMDAyMDAwMjA0 NyBSQ1g6IDAwMDAwMDAwMDA0MzdkNDkKPiBbICA0MDYuNzg1OTAwXVsgVDgxNzddIFJEWDogMDAw MDAwMDAyMDAwMjA0MCBSU0k6IDAwMDAwMDAwMjAwMDAyYzAgUkRJOiAwMDAwMDAwMDIwMDAwMWMw Cj4gWyAgNDA2Ljc4Njg4Nl1bIFQ4MTc3XSBSQlA6IDAwMDA3ZmZmN2NkNTFkODAgUjA4OiAwMDAw MDAwMDAwMDAwMDAzIFIwOTogMDAwMDAwMDE3Y2Q1MWQ0MAo+IFsgIDQwNi43ODc4NzhdWyBUODE3 N10gUjEwOiAwMDAwMDAwMDAwMDAxMDA5IFIxMTogMDAwMDAwMDAwMDAwMDI0NiBSMTI6IDAwMDAw MDAwMDAwMDAwMDEKPiBbICA0MDYuNzg4ODcyXVsgVDgxNzddIFIxMzogMDAwMDdmZmY3Y2Q1MWY4 OCBSMTQ6IDAwMDAwMDAwMDAwMDAwMDEgUjE1OiAwMDAwMDAwMDAwMDAwMDAxCj4gWyAgNDA2Ljc4 OTg3OV1bIFQ4MTc3XSAgPC9UQVNLPgo+Cj4KPiA9KiByZXByby5jID0qCj4gICAgICNkZWZpbmUg X0dOVV9TT1VSQ0UKPgo+ICAgICAjaW5jbHVkZSA8ZGlyZW50Lmg+Cj4gICAgICNpbmNsdWRlIDxl bmRpYW4uaD4KPiAgICAgI2luY2x1ZGUgPGVycm5vLmg+Cj4gICAgICNpbmNsdWRlIDxmY250bC5o Pgo+ICAgICAjaW5jbHVkZSA8c2V0am1wLmg+Cj4gICAgICNpbmNsdWRlIDxzaWduYWwuaD4KPiAg ICAgI2luY2x1ZGUgPHN0ZGFyZy5oPgo+ICAgICAjaW5jbHVkZSA8c3RkYm9vbC5oPgo+ICAgICAj aW5jbHVkZSA8c3RkZGVmLmg+Cj4gICAgICNpbmNsdWRlIDxzdGRpbnQuaD4KPiAgICAgI2luY2x1 ZGUgPHN0ZGlvLmg+Cj4gICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KPiAgICAgI2luY2x1ZGUgPHN0 cmluZy5oPgo+ICAgICAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Cj4gICAgICNpbmNsdWRlIDxzeXMv bW1hbi5oPgo+ICAgICAjaW5jbHVkZSA8c3lzL21vdW50Lmg+Cj4gICAgICNpbmNsdWRlIDxzeXMv cHJjdGwuaD4KPiAgICAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4gICAgICNpbmNsdWRlIDxzeXMv c3lzY2FsbC5oPgo+ICAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cj4gICAgICNpbmNsdWRlIDxz eXMvd2FpdC5oPgo+ICAgICAjaW5jbHVkZSA8dGltZS5oPgo+ICAgICAjaW5jbHVkZSA8dW5pc3Rk Lmg+Cj4KPiAgICAgI2luY2x1ZGUgPGxpbnV4L2xvb3AuaD4KPgo+ICAgICAjaWZuZGVmIF9fTlJf bWVtZmRfY3JlYXRlCj4gICAgICNkZWZpbmUgX19OUl9tZW1mZF9jcmVhdGUgMzE5Cj4gICAgICNl bmRpZgo+Cj4gICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgcHJvY2lkOwo+Cj4gICAgIHN0 YXRpYyBfX3RocmVhZCBpbnQgY2xvbmVfb25nb2luZzsKPiAgICAgc3RhdGljIF9fdGhyZWFkIGlu dCBza2lwX3NlZ3Y7Cj4gICAgIHN0YXRpYyBfX3RocmVhZCBqbXBfYnVmIHNlZ3ZfZW52Owo+Cj4g ICAgIHN0YXRpYyB2b2lkIHNlZ3ZfaGFuZGxlcihpbnQgc2lnLCBzaWdpbmZvX3QqIGluZm8sIHZv aWQqIGN0eCkgewo+ICAgICAgICAgaWYgKF9fYXRvbWljX2xvYWRfbigmY2xvbmVfb25nb2luZywg X19BVE9NSUNfUkVMQVhFRCkgIT0gMCkgewo+ICAgICAgICAgICAgIGV4aXQoc2lnKTsKPiAgICAg ICAgIH0KPiAgICAgICAgIHVpbnRwdHJfdCBhZGRyID0gKHVpbnRwdHJfdClpbmZvLT5zaV9hZGRy Owo+ICAgICAgICAgY29uc3QgdWludHB0cl90IHByb2dfc3RhcnQgPSAxIDw8IDIwOwo+ICAgICAg ICAgY29uc3QgdWludHB0cl90IHByb2dfZW5kID0gMTAwIDw8IDIwOwo+ICAgICAgICAgaW50IHNr aXAgPSBfX2F0b21pY19sb2FkX24oJnNraXBfc2VndiwgX19BVE9NSUNfUkVMQVhFRCkgIT0gMDsK PiAgICAgICAgIGludCB2YWxpZCA9IGFkZHIgPCBwcm9nX3N0YXJ0IHx8IGFkZHIgPiBwcm9nX2Vu ZDsKPiAgICAgICAgIGlmIChza2lwICYmIHZhbGlkKSB7Cj4gICAgICAgICAgICAgX2xvbmdqbXAo c2Vndl9lbnYsIDEpOwo+ICAgICAgICAgfQo+ICAgICAgICAgZXhpdChzaWcpOwo+ICAgICB9Cj4K PiAgICAgc3RhdGljIHZvaWQgaW5zdGFsbF9zZWd2X2hhbmRsZXIodm9pZCkgewo+ICAgICAgICAg c3RydWN0IHNpZ2FjdGlvbiBzYTsKPiAgICAgICAgIG1lbXNldCgmc2EsIDAsIHNpemVvZihzYSkp Owo+ICAgICAgICAgc2Euc2FfaGFuZGxlciA9IFNJR19JR047Cj4gICAgICAgICBzeXNjYWxsKFNZ U19ydF9zaWdhY3Rpb24sIDB4MjAsICZzYSwgTlVMTCwgOCk7Cj4gICAgICAgICBzeXNjYWxsKFNZ U19ydF9zaWdhY3Rpb24sIDB4MjEsICZzYSwgTlVMTCwgOCk7Cj4gICAgICAgICBtZW1zZXQoJnNh LCAwLCBzaXplb2Yoc2EpKTsKPiAgICAgICAgIHNhLnNhX3NpZ2FjdGlvbiA9IHNlZ3ZfaGFuZGxl cjsKPiAgICAgICAgIHNhLnNhX2ZsYWdzID0gU0FfTk9ERUZFUiB8IFNBX1NJR0lORk87Cj4gICAg ICAgICBzaWdhY3Rpb24oU0lHU0VHViwgJnNhLCBOVUxMKTsKPiAgICAgICAgIHNpZ2FjdGlvbihT SUdCVVMsICZzYSwgTlVMTCk7Cj4gICAgIH0KPgo+ICAgICAjZGVmaW5lIE5PTkZBSUxJTkcoLi4u KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICAgICAoeyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAg ICAgIGludCBvayA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+ICAgICAgICAgICAgIF9fYXRvbWljX2ZldGNoX2FkZCgmc2tpcF9zZWd2LCAxLCBfX0FUT01J Q19TRVFfQ1NUKTsgXAo+ICAgICAgICAgICAgIGlmIChfc2V0am1wKHNlZ3ZfZW52KSA9PSAwKSB7 ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgICAgICAgICBfX1ZBX0FSR1NfXzsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICAgICAgICAgfSBl bHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAg ICAgICAgICAgICAgIG9rID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKPiAgICAgICAgICAgICBfX2F0b21pY19mZXRjaF9zdWIoJnNraXBfc2VndiwgMSwg X19BVE9NSUNfU0VRX0NTVCk7IFwKPiAgICAgICAgICAgICBvazsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICAgIH0pCj4KPiAgICAgc3Rh dGljIHZvaWQgc2xlZXBfbXModWludDY0X3QgbXMpIHsKPiAgICAgICAgIHVzbGVlcChtcyAqIDEw MDApOwo+ICAgICB9Cj4KPiAgICAgc3RhdGljIHVpbnQ2NF90IGN1cnJlbnRfdGltZV9tcyh2b2lk KSB7Cj4gICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7Cj4gICAgICAgICBpZiAoY2xvY2tfZ2V0 dGltZShDTE9DS19NT05PVE9OSUMsICZ0cykpCj4gICAgICAgICAgICAgZXhpdCgxKTsKPiAgICAg ICAgIHJldHVybiAodWludDY0X3QpdHMudHZfc2VjICogMTAwMCArICh1aW50NjRfdCl0cy50dl9u c2VjIC8gMTAwMDAwMDsKPiAgICAgfQo+Cj4gICAgIHN0YXRpYyBib29sIHdyaXRlX2ZpbGUoY29u c3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogd2hhdCwgLi4uKSB7Cj4gICAgICAgICBjaGFyIGJ1 ZlsxMDI0XTsKPiAgICAgICAgIHZhX2xpc3QgYXJnczsKPiAgICAgICAgIHZhX3N0YXJ0KGFyZ3Ms IHdoYXQpOwo+ICAgICAgICAgdnNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIHdoYXQsIGFyZ3Mp Owo+ICAgICAgICAgdmFfZW5kKGFyZ3MpOwo+ICAgICAgICAgYnVmW3NpemVvZihidWYpIC0gMV0g PSAwOwo+ICAgICAgICAgaW50IGxlbiA9IHN0cmxlbihidWYpOwo+ICAgICAgICAgaW50IGZkID0g b3BlbihmaWxlLCBPX1dST05MWSB8IE9fQ0xPRVhFQyk7Cj4gICAgICAgICBpZiAoZmQgPT0gLTEp Cj4gICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ICAgICAgICAgaWYgKHdyaXRlKGZkLCBidWYs IGxlbikgIT0gbGVuKSB7Cj4gICAgICAgICAgICAgaW50IGVyciA9IGVycm5vOwo+ICAgICAgICAg ICAgIGNsb3NlKGZkKTsKPiAgICAgICAgICAgICBlcnJubyA9IGVycjsKPiAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7Cj4gICAgICAgICB9Cj4gICAgICAgICBjbG9zZShmZCk7Cj4gICAgICAgICBy ZXR1cm4gdHJ1ZTsKPiAgICAgfQo+Cj4gICAgIC8vJSBUaGlzIGNvZGUgaXMgZGVyaXZlZCBmcm9t IHB1ZmYue2MsaH0sIGZvdW5kIGluIHRoZSB6bGliIGRldmVsb3BtZW50LiBUaGUKPiAgICAgLy8l IG9yaWdpbmFsIGZpbGVzIGNvbWUgd2l0aCB0aGUgZm9sbG93aW5nIGNvcHlyaWdodCBub3RpY2U6 Cj4KPiAgICAgLy8lIENvcHlyaWdodCAoQykgMjAwMi0yMDEzIE1hcmsgQWRsZXIsIGFsbCByaWdo dHMgcmVzZXJ2ZWQKPiAgICAgLy8lIHZlcnNpb24gMi4zLCAyMSBKYW4gMjAxMwo+ICAgICAvLyUg VGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9y IGltcGxpZWQKPiAgICAgLy8lIHdhcnJhbnR5LiAgSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9y IGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcwo+ICAgICAvLyUgYXJpc2luZyBmcm9tIHRo ZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KPiAgICAgLy8lIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0 byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAo+ICAgICAvLyUg aW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJl ZGlzdHJpYnV0ZSBpdAo+ICAgICAvLyUgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg cmVzdHJpY3Rpb25zOgo+ICAgICAvLyUgMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11 c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QKPiAgICAgLy8lICAgIGNsYWlt IHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNv ZnR3YXJlCj4gICAgIC8vJSAgICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRo ZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUKPiAgICAgLy8lICAgIGFwcHJlY2lhdGVk IGJ1dCBpcyBub3QgcmVxdWlyZWQuCj4gICAgIC8vJSAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9u cyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZQo+ICAgICAv LyUgICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgo+ICAg ICAvLyUgMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBh bnkgc291cmNlIGRpc3RyaWJ1dGlvbi4KPiAgICAgLy8lIE1hcmsgQWRsZXIgICAgbWFkbGVyQGFs dW1uaS5jYWx0ZWNoLmVkdQo+Cj4gICAgIC8vJSBCRUdJTiBDT0RFIERFUklWRUQgRlJPTSBwdWZm LntjLGh9Cj4KPiAgICAgI2RlZmluZSBNQVhCSVRTIDE1Cj4gICAgICNkZWZpbmUgTUFYTENPREVT IDI4Ngo+ICAgICAjZGVmaW5lIE1BWERDT0RFUyAzMAo+ICAgICAjZGVmaW5lIE1BWENPREVTIChN QVhMQ09ERVMgKyBNQVhEQ09ERVMpCj4gICAgICNkZWZpbmUgRklYTENPREVTIDI4OAo+Cj4gICAg IHN0cnVjdCBwdWZmX3N0YXRlIHsKPiAgICAgICAgIHVuc2lnbmVkIGNoYXIqIG91dDsKPiAgICAg ICAgIHVuc2lnbmVkIGxvbmcgb3V0bGVuOwo+ICAgICAgICAgdW5zaWduZWQgbG9uZyBvdXRjbnQ7 Cj4gICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbjsKPiAgICAgICAgIHVuc2lnbmVkIGxv bmcgaW5sZW47Cj4gICAgICAgICB1bnNpZ25lZCBsb25nIGluY250Owo+ICAgICAgICAgaW50IGJp dGJ1ZjsKPiAgICAgICAgIGludCBiaXRjbnQ7Cj4gICAgICAgICBqbXBfYnVmIGVudjsKPiAgICAg fTsKPiAgICAgc3RhdGljIGludCBwdWZmX2JpdHMoc3RydWN0IHB1ZmZfc3RhdGUqIHMsIGludCBu ZWVkKSB7Cj4gICAgICAgICBsb25nIHZhbCA9IHMtPmJpdGJ1ZjsKPiAgICAgICAgIHdoaWxlIChz LT5iaXRjbnQgPCBuZWVkKSB7Cj4gICAgICAgICAgICAgaWYgKHMtPmluY250ID09IHMtPmlubGVu KQo+ICAgICAgICAgICAgICAgICBsb25nam1wKHMtPmVudiwgMSk7Cj4gICAgICAgICAgICAgdmFs IHw9IChsb25nKShzLT5pbltzLT5pbmNudCsrXSkgPDwgcy0+Yml0Y250Owo+ICAgICAgICAgICAg IHMtPmJpdGNudCArPSA4Owo+ICAgICAgICAgfQo+ICAgICAgICAgcy0+Yml0YnVmID0gKGludCko dmFsID4+IG5lZWQpOwo+ICAgICAgICAgcy0+Yml0Y250IC09IG5lZWQ7Cj4gICAgICAgICByZXR1 cm4gKGludCkodmFsICYgKCgxTCA8PCBuZWVkKSAtIDEpKTsKPiAgICAgfQo+ICAgICBzdGF0aWMg aW50IHB1ZmZfc3RvcmVkKHN0cnVjdCBwdWZmX3N0YXRlKiBzKSB7Cj4gICAgICAgICBzLT5iaXRi dWYgPSAwOwo+ICAgICAgICAgcy0+Yml0Y250ID0gMDsKPiAgICAgICAgIGlmIChzLT5pbmNudCAr IDQgPiBzLT5pbmxlbikKPiAgICAgICAgICAgICByZXR1cm4gMjsKPiAgICAgICAgIHVuc2lnbmVk IGxlbiA9IHMtPmluW3MtPmluY250KytdOwo+ICAgICAgICAgbGVuIHw9IHMtPmluW3MtPmluY250 KytdIDw8IDg7Cj4gICAgICAgICBpZiAocy0+aW5bcy0+aW5jbnQrK10gIT0gKH5sZW4gJiAweGZm KSB8fAo+ICAgICAgICAgICAgICAgICBzLT5pbltzLT5pbmNudCsrXSAhPSAoKH5sZW4gPj4gOCkg JiAweGZmKSkKPiAgICAgICAgICAgICByZXR1cm4gLTI7Cj4gICAgICAgICBpZiAocy0+aW5jbnQg KyBsZW4gPiBzLT5pbmxlbikKPiAgICAgICAgICAgICByZXR1cm4gMjsKPiAgICAgICAgIGlmIChz LT5vdXRjbnQgKyBsZW4gPiBzLT5vdXRsZW4pCj4gICAgICAgICAgICAgcmV0dXJuIDE7Cj4gICAg ICAgICBmb3IgKDsgbGVuLS07IHMtPm91dGNudCsrLCBzLT5pbmNudCsrKSB7Cj4gICAgICAgICAg ICAgaWYgKHMtPmluW3MtPmluY250XSkKPiAgICAgICAgICAgICAgICAgcy0+b3V0W3MtPm91dGNu dF0gPSBzLT5pbltzLT5pbmNudF07Cj4gICAgICAgICB9Cj4gICAgICAgICByZXR1cm4gMDsKPiAg ICAgfQo+ICAgICBzdHJ1Y3QgcHVmZl9odWZmbWFuIHsKPiAgICAgICAgIHNob3J0KiBjb3VudDsK PiAgICAgICAgIHNob3J0KiBzeW1ib2w7Cj4gICAgIH07Cj4gICAgIHN0YXRpYyBpbnQgcHVmZl9k ZWNvZGUoc3RydWN0IHB1ZmZfc3RhdGUqIHMsIGNvbnN0IHN0cnVjdCBwdWZmX2h1ZmZtYW4qIGgp IHsKPiAgICAgICAgIGludCBmaXJzdCA9IDA7Cj4gICAgICAgICBpbnQgaW5kZXggPSAwOwo+ICAg ICAgICAgaW50IGJpdGJ1ZiA9IHMtPmJpdGJ1ZjsKPiAgICAgICAgIGludCBsZWZ0ID0gcy0+Yml0 Y250Owo+ICAgICAgICAgaW50IGNvZGUgPSBmaXJzdCA9IGluZGV4ID0gMDsKPiAgICAgICAgIGlu dCBsZW4gPSAxOwo+ICAgICAgICAgc2hvcnQqIG5leHQgPSBoLT5jb3VudCArIDE7Cj4gICAgICAg ICB3aGlsZSAoMSkgewo+ICAgICAgICAgICAgIHdoaWxlIChsZWZ0LS0pIHsKPiAgICAgICAgICAg ICAgICAgY29kZSB8PSBiaXRidWYgJiAxOwo+ICAgICAgICAgICAgICAgICBiaXRidWYgPj49IDE7 Cj4gICAgICAgICAgICAgICAgIGludCBjb3VudCA9ICpuZXh0Kys7Cj4gICAgICAgICAgICAgICAg IGlmIChjb2RlIC0gY291bnQgPCBmaXJzdCkgewo+ICAgICAgICAgICAgICAgICAgICAgcy0+Yml0 YnVmID0gYml0YnVmOwo+ICAgICAgICAgICAgICAgICAgICAgcy0+Yml0Y250ID0gKHMtPmJpdGNu dCAtIGxlbikgJiA3Owo+ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGgtPnN5bWJvbFtpbmRl eCArIChjb2RlIC0gZmlyc3QpXTsKPiAgICAgICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICAg ICBpbmRleCArPSBjb3VudDsKPiAgICAgICAgICAgICAgICAgZmlyc3QgKz0gY291bnQ7Cj4gICAg ICAgICAgICAgICAgIGZpcnN0IDw8PSAxOwo+ICAgICAgICAgICAgICAgICBjb2RlIDw8PSAxOwo+ ICAgICAgICAgICAgICAgICBsZW4rKzsKPiAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgbGVm dCA9IChNQVhCSVRTICsgMSkgLSBsZW47Cj4gICAgICAgICAgICAgaWYgKGxlZnQgPT0gMCkKPiAg ICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgICAgaWYgKHMtPmluY250ID09IHMtPmlu bGVuKQo+ICAgICAgICAgICAgICAgICBsb25nam1wKHMtPmVudiwgMSk7Cj4gICAgICAgICAgICAg Yml0YnVmID0gcy0+aW5bcy0+aW5jbnQrK107Cj4gICAgICAgICAgICAgaWYgKGxlZnQgPiA4KQo+ ICAgICAgICAgICAgICAgICBsZWZ0ID0gODsKPiAgICAgICAgIH0KPiAgICAgICAgIHJldHVybiAt MTA7Cj4gICAgIH0KPiAgICAgc3RhdGljIGludCBwdWZmX2NvbnN0cnVjdChzdHJ1Y3QgcHVmZl9o dWZmbWFuKiBoLCBjb25zdCBzaG9ydCogbGVuZ3RoLCBpbnQgbikgewo+ICAgICAgICAgaW50IGxl bjsKPiAgICAgICAgIGZvciAobGVuID0gMDsgbGVuIDw9IE1BWEJJVFM7IGxlbisrKQo+ICAgICAg ICAgICAgIGgtPmNvdW50W2xlbl0gPSAwOwo+ICAgICAgICAgaW50IHN5bWJvbDsKPiAgICAgICAg IGZvciAoc3ltYm9sID0gMDsgc3ltYm9sIDwgbjsgc3ltYm9sKyspCj4gICAgICAgICAgICAgKGgt PmNvdW50W2xlbmd0aFtzeW1ib2xdXSkrKzsKPiAgICAgICAgIGlmIChoLT5jb3VudFswXSA9PSBu KQo+ICAgICAgICAgICAgIHJldHVybiAwOwo+ICAgICAgICAgaW50IGxlZnQgPSAxOwo+ICAgICAg ICAgZm9yIChsZW4gPSAxOyBsZW4gPD0gTUFYQklUUzsgbGVuKyspIHsKPiAgICAgICAgICAgICBs ZWZ0IDw8PSAxOwo+ICAgICAgICAgICAgIGxlZnQgLT0gaC0+Y291bnRbbGVuXTsKPiAgICAgICAg ICAgICBpZiAobGVmdCA8IDApCj4gICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0Owo+ICAgICAg ICAgfQo+ICAgICAgICAgc2hvcnQgb2Zmc1tNQVhCSVRTICsgMV07Cj4gICAgICAgICBvZmZzWzFd ID0gMDsKPiAgICAgICAgIGZvciAobGVuID0gMTsgbGVuIDwgTUFYQklUUzsgbGVuKyspCj4gICAg ICAgICAgICAgb2Zmc1tsZW4gKyAxXSA9IG9mZnNbbGVuXSArIGgtPmNvdW50W2xlbl07Cj4gICAg ICAgICBmb3IgKHN5bWJvbCA9IDA7IHN5bWJvbCA8IG47IHN5bWJvbCsrKQo+ICAgICAgICAgICAg IGlmIChsZW5ndGhbc3ltYm9sXSAhPSAwKQo+ICAgICAgICAgICAgICAgICBoLT5zeW1ib2xbb2Zm c1tsZW5ndGhbc3ltYm9sXV0rK10gPSBzeW1ib2w7Cj4gICAgICAgICByZXR1cm4gbGVmdDsKPiAg ICAgfQo+ICAgICBzdGF0aWMgaW50IHB1ZmZfY29kZXMoc3RydWN0IHB1ZmZfc3RhdGUqIHMsCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IHB1ZmZfaHVmZm1hbiogbGVuY29kZSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcHVmZl9odWZmbWFuKiBkaXN0Y29kZSkg ewo+ICAgICAgICAgc3RhdGljIGNvbnN0IHNob3J0IGxlbnNbMjldID0gezMsICA0LCAgNSwgIDYs ICAgNywgICA4LCAgIDksICAgMTAsICAxMSwgMTMsCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUsIDE3LCAxOSwg MjMsICAyNywgIDMxLCAgMzUsICA0MywgIDUxLCA1OSwKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NywgODMsIDk5 LCAxMTUsIDEzMSwgMTYzLCAxOTUsIDIyNywgMjU4fTsKPiAgICAgICAgIHN0YXRpYyBjb25zdCBz aG9ydCBsZXh0WzI5XSA9IHswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAyLCAy LCAyLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDIsIDMsIDMsIDMsIDMsIDQsIDQsIDQsIDQsIDUsIDUsIDUsIDUs IDB9Owo+ICAgICAgICAgc3RhdGljIGNvbnN0IHNob3J0IGRpc3RzWzMwXSA9IHsKPiAgICAgICAg ICAgICAgICAgMSwgICAgMiwgICAgMywgICAgNCwgICAgNSwgICAgNywgICAgOSwgICAgMTMsICAg IDE3LCAgICAyNSwKPiAgICAgICAgICAgICAgICAgMzMsICAgNDksICAgNjUsICAgOTcsICAgMTI5 LCAgMTkzLCAgMjU3LCAgMzg1LCAgIDUxMywgICA3NjksCj4gICAgICAgICAgICAgICAgIDEwMjUs IDE1MzcsIDIwNDksIDMwNzMsIDQwOTcsIDYxNDUsIDgxOTMsIDEyMjg5LCAxNjM4NSwgMjQ1Nzd9 Owo+ICAgICAgICAgc3RhdGljIGNvbnN0IHNob3J0IGRleHRbMzBdID0gezAsIDAsIDAsICAwLCAg MSwgIDEsICAyLCAgMiwgIDMsICAzLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQsIDQsIDUsICA1LCAgNiwgIDYs ICA3LCAgNywgIDgsICA4LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDksIDksIDEwLCAxMCwgMTEsIDExLCAxMiwg MTIsIDEzLCAxM307Cj4gICAgICAgICBpbnQgc3ltYm9sOwo+ICAgICAgICAgZG8gewo+ICAgICAg ICAgICAgIHN5bWJvbCA9IHB1ZmZfZGVjb2RlKHMsIGxlbmNvZGUpOwo+ICAgICAgICAgICAgIGlm IChzeW1ib2wgPCAwKQo+ICAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sOwo+ICAgICAgICAg ICAgIGlmIChzeW1ib2wgPCAyNTYpIHsKPiAgICAgICAgICAgICAgICAgaWYgKHMtPm91dGNudCA9 PSBzLT5vdXRsZW4pCj4gICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKPiAgICAgICAgICAg ICAgICAgaWYgKHN5bWJvbCkKPiAgICAgICAgICAgICAgICAgICAgIHMtPm91dFtzLT5vdXRjbnRd ID0gc3ltYm9sOwo+ICAgICAgICAgICAgICAgICBzLT5vdXRjbnQrKzsKPiAgICAgICAgICAgICB9 IGVsc2UgaWYgKHN5bWJvbCA+IDI1Nikgewo+ICAgICAgICAgICAgICAgICBzeW1ib2wgLT0gMjU3 Owo+ICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sID49IDI5KQo+ICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIC0xMDsKPiAgICAgICAgICAgICAgICAgaW50IGxlbiA9IGxlbnNbc3ltYm9sXSAr IHB1ZmZfYml0cyhzLCBsZXh0W3N5bWJvbF0pOwo+ICAgICAgICAgICAgICAgICBzeW1ib2wgPSBw dWZmX2RlY29kZShzLCBkaXN0Y29kZSk7Cj4gICAgICAgICAgICAgICAgIGlmIChzeW1ib2wgPCAw KQo+ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbDsKPiAgICAgICAgICAgICAgICAg dW5zaWduZWQgZGlzdCA9IGRpc3RzW3N5bWJvbF0gKyBwdWZmX2JpdHMocywgZGV4dFtzeW1ib2xd KTsKPiAgICAgICAgICAgICAgICAgaWYgKGRpc3QgPiBzLT5vdXRjbnQpCj4gICAgICAgICAgICAg ICAgICAgICByZXR1cm4gLTExOwo+ICAgICAgICAgICAgICAgICBpZiAocy0+b3V0Y250ICsgbGVu ID4gcy0+b3V0bGVuKQo+ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Cj4gICAgICAgICAg ICAgICAgIHdoaWxlIChsZW4tLSkgewo+ICAgICAgICAgICAgICAgICAgICAgaWYgKGRpc3QgPD0g cy0+b3V0Y250ICYmIHMtPm91dFtzLT5vdXRjbnQgLSBkaXN0XSkKPiAgICAgICAgICAgICAgICAg ICAgICAgICBzLT5vdXRbcy0+b3V0Y250XSA9IHMtPm91dFtzLT5vdXRjbnQgLSBkaXN0XTsKPiAg ICAgICAgICAgICAgICAgICAgIHMtPm91dGNudCsrOwo+ICAgICAgICAgICAgICAgICB9Cj4gICAg ICAgICAgICAgfQo+ICAgICAgICAgfSB3aGlsZSAoc3ltYm9sICE9IDI1Nik7Cj4gICAgICAgICBy ZXR1cm4gMDsKPiAgICAgfQo+ICAgICBzdGF0aWMgaW50IHB1ZmZfZml4ZWQoc3RydWN0IHB1ZmZf c3RhdGUqIHMpIHsKPiAgICAgICAgIHN0YXRpYyBpbnQgdmlyZ2luID0gMTsKPiAgICAgICAgIHN0 YXRpYyBzaG9ydCBsZW5jbnRbTUFYQklUUyArIDFdLCBsZW5zeW1bRklYTENPREVTXTsKPiAgICAg ICAgIHN0YXRpYyBzaG9ydCBkaXN0Y250W01BWEJJVFMgKyAxXSwgZGlzdHN5bVtNQVhEQ09ERVNd Owo+ICAgICAgICAgc3RhdGljIHN0cnVjdCBwdWZmX2h1ZmZtYW4gbGVuY29kZSwgZGlzdGNvZGU7 Cj4gICAgICAgICBpZiAodmlyZ2luKSB7Cj4gICAgICAgICAgICAgbGVuY29kZS5jb3VudCA9IGxl bmNudDsKPiAgICAgICAgICAgICBsZW5jb2RlLnN5bWJvbCA9IGxlbnN5bTsKPiAgICAgICAgICAg ICBkaXN0Y29kZS5jb3VudCA9IGRpc3RjbnQ7Cj4gICAgICAgICAgICAgZGlzdGNvZGUuc3ltYm9s ID0gZGlzdHN5bTsKPiAgICAgICAgICAgICBzaG9ydCBsZW5ndGhzW0ZJWExDT0RFU107Cj4gICAg ICAgICAgICAgaW50IHN5bWJvbDsKPiAgICAgICAgICAgICBmb3IgKHN5bWJvbCA9IDA7IHN5bWJv bCA8IDE0NDsgc3ltYm9sKyspCj4gICAgICAgICAgICAgICAgIGxlbmd0aHNbc3ltYm9sXSA9IDg7 Cj4gICAgICAgICAgICAgZm9yICg7IHN5bWJvbCA8IDI1Njsgc3ltYm9sKyspCj4gICAgICAgICAg ICAgICAgIGxlbmd0aHNbc3ltYm9sXSA9IDk7Cj4gICAgICAgICAgICAgZm9yICg7IHN5bWJvbCA8 IDI4MDsgc3ltYm9sKyspCj4gICAgICAgICAgICAgICAgIGxlbmd0aHNbc3ltYm9sXSA9IDc7Cj4g ICAgICAgICAgICAgZm9yICg7IHN5bWJvbCA8IEZJWExDT0RFUzsgc3ltYm9sKyspCj4gICAgICAg ICAgICAgICAgIGxlbmd0aHNbc3ltYm9sXSA9IDg7Cj4gICAgICAgICAgICAgcHVmZl9jb25zdHJ1 Y3QoJmxlbmNvZGUsIGxlbmd0aHMsIEZJWExDT0RFUyk7Cj4gICAgICAgICAgICAgZm9yIChzeW1i b2wgPSAwOyBzeW1ib2wgPCBNQVhEQ09ERVM7IHN5bWJvbCsrKQo+ICAgICAgICAgICAgICAgICBs ZW5ndGhzW3N5bWJvbF0gPSA1Owo+ICAgICAgICAgICAgIHB1ZmZfY29uc3RydWN0KCZkaXN0Y29k ZSwgbGVuZ3RocywgTUFYRENPREVTKTsKPiAgICAgICAgICAgICB2aXJnaW4gPSAwOwo+ICAgICAg ICAgfQo+ICAgICAgICAgcmV0dXJuIHB1ZmZfY29kZXMocywgJmxlbmNvZGUsICZkaXN0Y29kZSk7 Cj4gICAgIH0KPiAgICAgc3RhdGljIGludCBwdWZmX2R5bmFtaWMoc3RydWN0IHB1ZmZfc3RhdGUq IHMpIHsKPiAgICAgICAgIHN0YXRpYyBjb25zdCBzaG9ydCBvcmRlclsxOV0gPSB7MTYsIDE3LCAx OCwgMCwgOCwgIDcsIDksICA2LCAxMCwgNSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMSwgNCwgIDEyLCAz LCAxMywgMiwgMTQsIDEsIDE1fTsKPiAgICAgICAgIGludCBubGVuID0gcHVmZl9iaXRzKHMsIDUp ICsgMjU3Owo+ICAgICAgICAgaW50IG5kaXN0ID0gcHVmZl9iaXRzKHMsIDUpICsgMTsKPiAgICAg ICAgIGludCBuY29kZSA9IHB1ZmZfYml0cyhzLCA0KSArIDQ7Cj4gICAgICAgICBpZiAobmxlbiA+ IE1BWExDT0RFUyB8fCBuZGlzdCA+IE1BWERDT0RFUykKPiAgICAgICAgICAgICByZXR1cm4gLTM7 Cj4gICAgICAgICBzaG9ydCBsZW5ndGhzW01BWENPREVTXTsKPiAgICAgICAgIGludCBpbmRleDsK PiAgICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG5jb2RlOyBpbmRleCsrKQo+ICAgICAg ICAgICAgIGxlbmd0aHNbb3JkZXJbaW5kZXhdXSA9IHB1ZmZfYml0cyhzLCAzKTsKPiAgICAgICAg IGZvciAoOyBpbmRleCA8IDE5OyBpbmRleCsrKQo+ICAgICAgICAgICAgIGxlbmd0aHNbb3JkZXJb aW5kZXhdXSA9IDA7Cj4gICAgICAgICBzaG9ydCBsZW5jbnRbTUFYQklUUyArIDFdLCBsZW5zeW1b TUFYTENPREVTXTsKPiAgICAgICAgIHN0cnVjdCBwdWZmX2h1ZmZtYW4gbGVuY29kZSA9IHtsZW5j bnQsIGxlbnN5bX07Cj4gICAgICAgICBpbnQgZXJyID0gcHVmZl9jb25zdHJ1Y3QoJmxlbmNvZGUs IGxlbmd0aHMsIDE5KTsKPiAgICAgICAgIGlmIChlcnIgIT0gMCkKPiAgICAgICAgICAgICByZXR1 cm4gLTQ7Cj4gICAgICAgICBpbmRleCA9IDA7Cj4gICAgICAgICB3aGlsZSAoaW5kZXggPCBubGVu ICsgbmRpc3QpIHsKPiAgICAgICAgICAgICBpbnQgc3ltYm9sOwo+ICAgICAgICAgICAgIGludCBs ZW47Cj4gICAgICAgICAgICAgc3ltYm9sID0gcHVmZl9kZWNvZGUocywgJmxlbmNvZGUpOwo+ICAg ICAgICAgICAgIGlmIChzeW1ib2wgPCAwKQo+ICAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9s Owo+ICAgICAgICAgICAgIGlmIChzeW1ib2wgPCAxNikKPiAgICAgICAgICAgICAgICAgbGVuZ3Ro c1tpbmRleCsrXSA9IHN5bWJvbDsKPiAgICAgICAgICAgICBlbHNlIHsKPiAgICAgICAgICAgICAg ICAgbGVuID0gMDsKPiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCA9PSAxNikgewo+ICAgICAg ICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IDApCj4gICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIC01Owo+ICAgICAgICAgICAgICAgICAgICAgbGVuID0gbGVuZ3Roc1tpbmRleCAtIDFd Owo+ICAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0gMyArIHB1ZmZfYml0cyhzLCAyKTsKPiAg ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzeW1ib2wgPT0gMTcpCj4gICAgICAgICAgICAgICAg ICAgICBzeW1ib2wgPSAzICsgcHVmZl9iaXRzKHMsIDMpOwo+ICAgICAgICAgICAgICAgICBlbHNl Cj4gICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSAxMSArIHB1ZmZfYml0cyhzLCA3KTsKPiAg ICAgICAgICAgICAgICAgaWYgKGluZGV4ICsgc3ltYm9sID4gbmxlbiArIG5kaXN0KQo+ICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIC02Owo+ICAgICAgICAgICAgICAgICB3aGlsZSAoc3ltYm9s LS0pCj4gICAgICAgICAgICAgICAgICAgICBsZW5ndGhzW2luZGV4KytdID0gbGVuOwo+ICAgICAg ICAgICAgIH0KPiAgICAgICAgIH0KPiAgICAgICAgIGlmIChsZW5ndGhzWzI1Nl0gPT0gMCkKPiAg ICAgICAgICAgICByZXR1cm4gLTk7Cj4gICAgICAgICBlcnIgPSBwdWZmX2NvbnN0cnVjdCgmbGVu Y29kZSwgbGVuZ3Rocywgbmxlbik7Cj4gICAgICAgICBpZiAoZXJyICYmIChlcnIgPCAwIHx8IG5s ZW4gIT0gbGVuY29kZS5jb3VudFswXSArIGxlbmNvZGUuY291bnRbMV0pKQo+ICAgICAgICAgICAg IHJldHVybiAtNzsKPiAgICAgICAgIHNob3J0IGRpc3RjbnRbTUFYQklUUyArIDFdLCBkaXN0c3lt W01BWERDT0RFU107Cj4gICAgICAgICBzdHJ1Y3QgcHVmZl9odWZmbWFuIGRpc3Rjb2RlID0ge2Rp c3RjbnQsIGRpc3RzeW19Owo+ICAgICAgICAgZXJyID0gcHVmZl9jb25zdHJ1Y3QoJmRpc3Rjb2Rl LCBsZW5ndGhzICsgbmxlbiwgbmRpc3QpOwo+ICAgICAgICAgaWYgKGVyciAmJiAoZXJyIDwgMCB8 fCBuZGlzdCAhPSBkaXN0Y29kZS5jb3VudFswXSArIGRpc3Rjb2RlLmNvdW50WzFdKSkKPiAgICAg ICAgICAgICByZXR1cm4gLTg7Cj4gICAgICAgICByZXR1cm4gcHVmZl9jb2RlcyhzLCAmbGVuY29k ZSwgJmRpc3Rjb2RlKTsKPiAgICAgfQo+ICAgICBzdGF0aWMgaW50IHB1ZmYodW5zaWduZWQgY2hh ciogZGVzdCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs b25nKiBkZXN0bGVuLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIqIHNvdXJjZSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIHNvdXJjZWxlbikgewo+ICAgICAgICAgc3RydWN0IHB1ZmZfc3Rh dGUgcyA9IHsKPiAgICAgICAgICAgICAgICAgLm91dCA9IGRlc3QsCj4gICAgICAgICAgICAgICAg IC5vdXRsZW4gPSAqZGVzdGxlbiwKPiAgICAgICAgICAgICAgICAgLm91dGNudCA9IDAsCj4gICAg ICAgICAgICAgICAgIC5pbiA9IHNvdXJjZSwKPiAgICAgICAgICAgICAgICAgLmlubGVuID0gc291 cmNlbGVuLAo+ICAgICAgICAgICAgICAgICAuaW5jbnQgPSAwLAo+ICAgICAgICAgICAgICAgICAu Yml0YnVmID0gMCwKPiAgICAgICAgICAgICAgICAgLmJpdGNudCA9IDAsCj4gICAgICAgICB9Owo+ ICAgICAgICAgaW50IGVycjsKPiAgICAgICAgIGlmIChzZXRqbXAocy5lbnYpICE9IDApCj4gICAg ICAgICAgICAgZXJyID0gMjsKPiAgICAgICAgIGVsc2Ugewo+ICAgICAgICAgICAgIGludCBsYXN0 Owo+ICAgICAgICAgICAgIGRvIHsKPiAgICAgICAgICAgICAgICAgbGFzdCA9IHB1ZmZfYml0cygm cywgMSk7Cj4gICAgICAgICAgICAgICAgIGludCB0eXBlID0gcHVmZl9iaXRzKCZzLCAyKTsKPiAg ICAgICAgICAgICAgICAgZXJyID0gdHlwZSA9PSAwID8gcHVmZl9zdG9yZWQoJnMpCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAodHlwZSA9PSAxID8g cHVmZl9maXhlZCgmcykKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAodHlwZSA9PSAyID8gcHVmZl9keW5h bWljKCZzKSA6IC0xKSk7Cj4gICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKPiAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgICAgIH0gd2hpbGUgKCFsYXN0KTsKPiAgICAg ICAgIH0KPiAgICAgICAgICpkZXN0bGVuID0gcy5vdXRjbnQ7Cj4gICAgICAgICByZXR1cm4gZXJy Owo+ICAgICB9Cj4KPiAgICAgLy8lIEVORCBDT0RFIERFUklWRUQgRlJPTSBwdWZmLntjLGh9Cj4K PiAgICAgI2RlZmluZSBaTElCX0hFQURFUl9XSURUSCAyCj4KPiAgICAgc3RhdGljIGludCBwdWZm X3psaWJfdG9fZmlsZShjb25zdCB1bnNpZ25lZCBjaGFyKiBzb3VyY2UsCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgc291cmNlbGVuLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdF9mZCkgewo+ICAgICAgICAgaWYgKHNvdXJj ZWxlbiA8IFpMSUJfSEVBREVSX1dJRFRIKQo+ICAgICAgICAgICAgIHJldHVybiAwOwo+ICAgICAg ICAgc291cmNlICs9IFpMSUJfSEVBREVSX1dJRFRIOwo+ICAgICAgICAgc291cmNlbGVuIC09IFpM SUJfSEVBREVSX1dJRFRIOwo+ICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBtYXhfZGVzdGxl biA9IDEzMiA8PCAyMDsKPiAgICAgICAgIHZvaWQqIHJldCA9IG1tYXAoMCwgbWF4X2Rlc3RsZW4s IFBST1RfV1JJVEUgfCBQUk9UX1JFQUQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNQVBfUFJJVkFURSB8IE1BUF9BTk9OLCAtMSwgMCk7Cj4gICAgICAgICBpZiAo cmV0ID09IE1BUF9GQUlMRUQpCj4gICAgICAgICAgICAgcmV0dXJuIC0xOwo+ICAgICAgICAgdW5z aWduZWQgY2hhciogZGVzdCA9ICh1bnNpZ25lZCBjaGFyKilyZXQ7Cj4gICAgICAgICB1bnNpZ25l ZCBsb25nIGRlc3RsZW4gPSBtYXhfZGVzdGxlbjsKPiAgICAgICAgIGludCBlcnIgPSBwdWZmKGRl c3QsICZkZXN0bGVuLCBzb3VyY2UsIHNvdXJjZWxlbik7Cj4gICAgICAgICBpZiAoZXJyKSB7Cj4g ICAgICAgICAgICAgbXVubWFwKGRlc3QsIG1heF9kZXN0bGVuKTsKPiAgICAgICAgICAgICBlcnJu byA9IC1lcnI7Cj4gICAgICAgICAgICAgcmV0dXJuIC0xOwo+ICAgICAgICAgfQo+ICAgICAgICAg aWYgKHdyaXRlKGRlc3RfZmQsIGRlc3QsIGRlc3RsZW4pICE9IChzc2l6ZV90KWRlc3RsZW4pIHsK PiAgICAgICAgICAgICBtdW5tYXAoZGVzdCwgbWF4X2Rlc3RsZW4pOwo+ICAgICAgICAgICAgIHJl dHVybiAtMTsKPiAgICAgICAgIH0KPiAgICAgICAgIHJldHVybiBtdW5tYXAoZGVzdCwgbWF4X2Rl c3RsZW4pOwo+ICAgICB9Cj4KPiAgICAgc3RhdGljIGludCBzZXR1cF9sb29wX2RldmljZSh1bnNp Z25lZCBjaGFyKiBkYXRhLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIqIGxvb3BuYW1lLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQqIGxvb3BmZF9wKSB7Cj4gICAgICAgICBpbnQgZXJyID0g MCwgbG9vcGZkID0gLTE7Cj4gICAgICAgICBpbnQgbWVtZmQgPSBzeXNjYWxsKF9fTlJfbWVtZmRf Y3JlYXRlLCAic3l6a2FsbGVyIiwgMCk7Cj4gICAgICAgICBpZiAobWVtZmQgPT0gLTEpIHsKPiAg ICAgICAgICAgICBlcnIgPSBlcnJubzsKPiAgICAgICAgICAgICBnb3RvIGVycm9yOwo+ICAgICAg ICAgfQo+ICAgICAgICAgaWYgKHB1ZmZfemxpYl90b19maWxlKGRhdGEsIHNpemUsIG1lbWZkKSkg ewo+ICAgICAgICAgICAgIGVyciA9IGVycm5vOwo+ICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xv c2VfbWVtZmQ7Cj4gICAgICAgICB9Cj4gICAgICAgICBsb29wZmQgPSBvcGVuKGxvb3BuYW1lLCBP X1JEV1IpOwo+ICAgICAgICAgaWYgKGxvb3BmZCA9PSAtMSkgewo+ICAgICAgICAgICAgIGVyciA9 IGVycm5vOwo+ICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfbWVtZmQ7Cj4gICAgICAgICB9 Cj4gICAgICAgICBpZiAoaW9jdGwobG9vcGZkLCBMT09QX1NFVF9GRCwgbWVtZmQpKSB7Cj4gICAg ICAgICAgICAgaWYgKGVycm5vICE9IEVCVVNZKSB7Cj4gICAgICAgICAgICAgICAgIGVyciA9IGVy cm5vOwo+ICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2Nsb3NlX2xvb3A7Cj4gICAgICAgICAg ICAgfQo+ICAgICAgICAgICAgIGlvY3RsKGxvb3BmZCwgTE9PUF9DTFJfRkQsIDApOwo+ICAgICAg ICAgICAgIHVzbGVlcCgxMDAwKTsKPiAgICAgICAgICAgICBpZiAoaW9jdGwobG9vcGZkLCBMT09Q X1NFVF9GRCwgbWVtZmQpKSB7Cj4gICAgICAgICAgICAgICAgIGVyciA9IGVycm5vOwo+ICAgICAg ICAgICAgICAgICBnb3RvIGVycm9yX2Nsb3NlX2xvb3A7Cj4gICAgICAgICAgICAgfQo+ICAgICAg ICAgfQo+ICAgICAgICAgY2xvc2UobWVtZmQpOwo+ICAgICAgICAgKmxvb3BmZF9wID0gbG9vcGZk Owo+ICAgICAgICAgcmV0dXJuIDA7Cj4KPiAgICAgZXJyb3JfY2xvc2VfbG9vcDoKPiAgICAgICAg IGNsb3NlKGxvb3BmZCk7Cj4gICAgIGVycm9yX2Nsb3NlX21lbWZkOgo+ICAgICAgICAgY2xvc2Uo bWVtZmQpOwo+ICAgICBlcnJvcjoKPiAgICAgICAgIGVycm5vID0gZXJyOwo+ICAgICAgICAgcmV0 dXJuIC0xOwo+ICAgICB9Cj4KPiAgICAgc3RhdGljIGxvbmcgc3l6X21vdW50X2ltYWdlKHZvbGF0 aWxlIGxvbmcgZnNhcmcsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdm9sYXRpbGUgbG9uZyBkaXIsCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9sYXRpbGUgbG9u ZyBmbGFncywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2b2xhdGlsZSBsb25nIG9wdHNhcmcsCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9sYXRpbGUgbG9uZyBj aGFuZ2VfZGlyLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgc2l6ZSwKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2xhdGls ZSBsb25nIGltYWdlKSB7Cj4gICAgICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhID0gKHVuc2lnbmVk IGNoYXIqKWltYWdlOwo+ICAgICAgICAgaW50IHJlcyA9IC0xLCBlcnIgPSAwLCBsb29wZmQgPSAt MSwgbmVlZF9sb29wX2RldmljZSA9ICEhc2l6ZTsKPiAgICAgICAgIGNoYXIqIG1vdW50X29wdHMg PSAoY2hhciopb3B0c2FyZzsKPiAgICAgICAgIGNoYXIqIHRhcmdldCA9IChjaGFyKilkaXI7Cj4g ICAgICAgICBjaGFyKiBmcyA9IChjaGFyKilmc2FyZzsKPiAgICAgICAgIGNoYXIqIHNvdXJjZSA9 IE5VTEw7Cj4gICAgICAgICBjaGFyIGxvb3BuYW1lWzY0XTsKPiAgICAgICAgIGlmIChuZWVkX2xv b3BfZGV2aWNlKSB7Cj4gICAgICAgICAgICAgbWVtc2V0KGxvb3BuYW1lLCAwLCBzaXplb2YobG9v cG5hbWUpKTsKPiAgICAgICAgICAgICBzbnByaW50Zihsb29wbmFtZSwgc2l6ZW9mKGxvb3BuYW1l KSwgIi9kZXYvbG9vcCVsbHUiLCBwcm9jaWQpOwo+ICAgICAgICAgICAgIGlmIChzZXR1cF9sb29w X2RldmljZShkYXRhLCBzaXplLCBsb29wbmFtZSwgJmxvb3BmZCkgPT0gLTEpCj4gICAgICAgICAg ICAgICAgIHJldHVybiAtMTsKPiAgICAgICAgICAgICBzb3VyY2UgPSBsb29wbmFtZTsKPiAgICAg ICAgIH0KPiAgICAgICAgIG1rZGlyKHRhcmdldCwgMDc3Nyk7Cj4gICAgICAgICBjaGFyIG9wdHNb MjU2XTsKPiAgICAgICAgIG1lbXNldChvcHRzLCAwLCBzaXplb2Yob3B0cykpOwo+ICAgICAgICAg aWYgKHN0cmxlbihtb3VudF9vcHRzKSA+IChzaXplb2Yob3B0cykgLSAzMikpIHsKPiAgICAgICAg IH0KPiAgICAgICAgIHN0cm5jcHkob3B0cywgbW91bnRfb3B0cywgc2l6ZW9mKG9wdHMpIC0gMzIp Owo+ICAgICAgICAgaWYgKHN0cmNtcChmcywgImlzbzk2NjAiKSA9PSAwKSB7Cj4gICAgICAgICAg ICAgZmxhZ3MgfD0gTVNfUkRPTkxZOwo+ICAgICAgICAgfSBlbHNlIGlmIChzdHJuY21wKGZzLCAi ZXh0IiwgMykgPT0gMCkgewo+ICAgICAgICAgICAgIGJvb2wgaGFzX3JlbW91bnRfcm8gPSBmYWxz ZTsKPiAgICAgICAgICAgICBjaGFyKiByZW1vdW50X3JvX3N0YXJ0ID0gc3Ryc3RyKG9wdHMsICJl cnJvcnM9cmVtb3VudC1ybyIpOwo+ICAgICAgICAgICAgIGlmIChyZW1vdW50X3JvX3N0YXJ0ICE9 IE5VTEwpIHsKPiAgICAgICAgICAgICAgICAgY2hhciBhZnRlciA9ICoocmVtb3VudF9yb19zdGFy dCArIHN0cmxlbigiZXJyb3JzPXJlbW91bnQtcm8iKSk7Cj4gICAgICAgICAgICAgICAgIGNoYXIg YmVmb3JlID0gcmVtb3VudF9yb19zdGFydCA9PSBvcHRzID8gJ1wwJyA6ICoocmVtb3VudF9yb19z dGFydCAtIDEpOwo+ICAgICAgICAgICAgICAgICBoYXNfcmVtb3VudF9ybyA9ICgoYmVmb3JlID09 ICdcMCcgfHwgYmVmb3JlID09ICcsJykgJiYKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGFmdGVyID09ICdcMCcgfHwgYWZ0ZXIgPT0gJywnKSk7 Cj4gICAgICAgICAgICAgfQo+ICAgICAgICAgICAgIGlmIChzdHJzdHIob3B0cywgImVycm9ycz1w YW5pYyIpIHx8ICFoYXNfcmVtb3VudF9ybykKPiAgICAgICAgICAgICAgICAgc3RyY2F0KG9wdHMs ICIsZXJyb3JzPWNvbnRpbnVlIik7Cj4gICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChmcywgInhm cyIpID09IDApIHsKPiAgICAgICAgICAgICBzdHJjYXQob3B0cywgIixub3V1aWQiKTsKPiAgICAg ICAgIH0KPiAgICAgICAgIHJlcyA9IG1vdW50KHNvdXJjZSwgdGFyZ2V0LCBmcywgZmxhZ3MsIG9w dHMpOwo+ICAgICAgICAgaWYgKHJlcyA9PSAtMSkgewo+ICAgICAgICAgICAgIGVyciA9IGVycm5v Owo+ICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xlYXJfbG9vcDsKPiAgICAgICAgIH0KPiAgICAg ICAgIHJlcyA9IG9wZW4odGFyZ2V0LCBPX1JET05MWSB8IE9fRElSRUNUT1JZKTsKPiAgICAgICAg IGlmIChyZXMgPT0gLTEpIHsKPiAgICAgICAgICAgICBlcnIgPSBlcnJubzsKPiAgICAgICAgICAg ICBnb3RvIGVycm9yX2NsZWFyX2xvb3A7Cj4gICAgICAgICB9Cj4gICAgICAgICBpZiAoY2hhbmdl X2Rpcikgewo+ICAgICAgICAgICAgIHJlcyA9IGNoZGlyKHRhcmdldCk7Cj4gICAgICAgICAgICAg aWYgKHJlcyA9PSAtMSkgewo+ICAgICAgICAgICAgICAgICBlcnIgPSBlcnJubzsKPiAgICAgICAg ICAgICB9Cj4gICAgICAgICB9Cj4KPiAgICAgZXJyb3JfY2xlYXJfbG9vcDoKPiAgICAgICAgIGlm IChuZWVkX2xvb3BfZGV2aWNlKSB7Cj4gICAgICAgICAgICAgaW9jdGwobG9vcGZkLCBMT09QX0NM Ul9GRCwgMCk7Cj4gICAgICAgICAgICAgY2xvc2UobG9vcGZkKTsKPiAgICAgICAgIH0KPiAgICAg ICAgIGVycm5vID0gZXJyOwo+ICAgICAgICAgcmV0dXJuIHJlczsKPiAgICAgfQo+Cj4gICAgIHN0 YXRpYyB2b2lkIGtpbGxfYW5kX3dhaXQoaW50IHBpZCwgaW50KiBzdGF0dXMpIHsKPiAgICAgICAg IGtpbGwoLXBpZCwgU0lHS0lMTCk7Cj4gICAgICAgICBraWxsKHBpZCwgU0lHS0lMTCk7Cj4gICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7Cj4gICAgICAgICAgICAgaWYgKHdh aXRwaWQoLTEsIHN0YXR1cywgV05PSEFORyB8IF9fV0FMTCkgPT0gcGlkKQo+ICAgICAgICAgICAg ICAgICByZXR1cm47Cj4gICAgICAgICAgICAgdXNsZWVwKDEwMDApOwo+ICAgICAgICAgfQo+ICAg ICAgICAgRElSKiBkaXIgPSBvcGVuZGlyKCIvc3lzL2ZzL2Z1c2UvY29ubmVjdGlvbnMiKTsKPiAg ICAgICAgIGlmIChkaXIpIHsKPiAgICAgICAgICAgICBmb3IgKDs7KSB7Cj4gICAgICAgICAgICAg ICAgIHN0cnVjdCBkaXJlbnQqIGVudCA9IHJlYWRkaXIoZGlyKTsKPiAgICAgICAgICAgICAgICAg aWYgKCFlbnQpCj4gICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAgICAgICAgICAgICAgICAg aWYgKHN0cmNtcChlbnQtPmRfbmFtZSwgIi4iKSA9PSAwIHx8IHN0cmNtcChlbnQtPmRfbmFtZSwg Ii4uIikgPT0gMCkKPiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgICAg ICAgICBjaGFyIGFib3J0WzMwMF07Cj4gICAgICAgICAgICAgICAgIHNucHJpbnRmKGFib3J0LCBz aXplb2YoYWJvcnQpLCAiL3N5cy9mcy9mdXNlL2Nvbm5lY3Rpb25zLyVzL2Fib3J0IiwKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnQtPmRfbmFtZSk7Cj4gICAgICAgICAgICAg ICAgIGludCBmZCA9IG9wZW4oYWJvcnQsIE9fV1JPTkxZKTsKPiAgICAgICAgICAgICAgICAgaWYg KGZkID09IC0xKSB7Cj4gICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiAgICAgICAgICAg ICAgICAgfQo+ICAgICAgICAgICAgICAgICBpZiAod3JpdGUoZmQsIGFib3J0LCAxKSA8IDApIHsK PiAgICAgICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICAgICBjbG9zZShmZCk7Cj4gICAgICAg ICAgICAgfQo+ICAgICAgICAgICAgIGNsb3NlZGlyKGRpcik7Cj4gICAgICAgICB9IGVsc2Ugewo+ ICAgICAgICAgfQo+ICAgICAgICAgd2hpbGUgKHdhaXRwaWQoLTEsIHN0YXR1cywgX19XQUxMKSAh PSBwaWQpIHsKPiAgICAgICAgIH0KPiAgICAgfQo+Cj4gICAgIHN0YXRpYyB2b2lkIHJlc2V0X2xv b3AoKSB7Cj4gICAgICAgICBjaGFyIGJ1Zls2NF07Cj4gICAgICAgICBzbnByaW50ZihidWYsIHNp emVvZihidWYpLCAiL2Rldi9sb29wJWxsdSIsIHByb2NpZCk7Cj4gICAgICAgICBpbnQgbG9vcGZk ID0gb3BlbihidWYsIE9fUkRXUik7Cj4gICAgICAgICBpZiAobG9vcGZkICE9IC0xKSB7Cj4gICAg ICAgICAgICAgaW9jdGwobG9vcGZkLCBMT09QX0NMUl9GRCwgMCk7Cj4gICAgICAgICAgICAgY2xv c2UobG9vcGZkKTsKPiAgICAgICAgIH0KPiAgICAgfQo+Cj4gICAgIHN0YXRpYyB2b2lkIHNldHVw X3Rlc3QoKSB7Cj4gICAgICAgICBwcmN0bChQUl9TRVRfUERFQVRIU0lHLCBTSUdLSUxMLCAwLCAw LCAwKTsKPiAgICAgICAgIHNldHBncnAoKTsKPiAgICAgICAgIHdyaXRlX2ZpbGUoIi9wcm9jL3Nl bGYvb29tX3Njb3JlX2FkaiIsICIxMDAwIik7Cj4gICAgIH0KPgo+ICAgICBzdGF0aWMgdm9pZCBl eGVjdXRlX29uZSh2b2lkKTsKPgo+ICAgICAjZGVmaW5lIFdBSVRfRkxBR1MgX19XQUxMCj4KPiAg ICAgc3RhdGljIHZvaWQgbG9vcCh2b2lkKSB7Cj4gICAgICAgICBpbnQgaXRlciA9IDA7Cj4gICAg ICAgICBmb3IgKDs7IGl0ZXIrKykgewo+ICAgICAgICAgICAgIHJlc2V0X2xvb3AoKTsKPiAgICAg ICAgICAgICBpbnQgcGlkID0gZm9yaygpOwo+ICAgICAgICAgICAgIGlmIChwaWQgPCAwKQo+ICAg ICAgICAgICAgICAgICBleGl0KDEpOwo+ICAgICAgICAgICAgIGlmIChwaWQgPT0gMCkgewo+ICAg ICAgICAgICAgICAgICBzZXR1cF90ZXN0KCk7Cj4gICAgICAgICAgICAgICAgIGV4ZWN1dGVfb25l KCk7Cj4gICAgICAgICAgICAgICAgIGV4aXQoMCk7Cj4gICAgICAgICAgICAgfQo+ICAgICAgICAg ICAgIGludCBzdGF0dXMgPSAwOwo+ICAgICAgICAgICAgIHVpbnQ2NF90IHN0YXJ0ID0gY3VycmVu dF90aW1lX21zKCk7Cj4gICAgICAgICAgICAgZm9yICg7Oykgewo+ICAgICAgICAgICAgICAgICBp ZiAod2FpdHBpZCgtMSwgJnN0YXR1cywgV05PSEFORyB8IFdBSVRfRkxBR1MpID09IHBpZCkKPiAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgICAgICAgICBzbGVlcF9tcygxKTsK PiAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRfdGltZV9tcygpIC0gc3RhcnQgPCA1MDAwKQo+ ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gICAgICAgICAgICAgICAgIGtpbGxfYW5k X3dhaXQocGlkLCAmc3RhdHVzKTsKPiAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAg ICAgfQo+ICAgICAgICAgfQo+ICAgICB9Cj4KPiAgICAgdm9pZCBleGVjdXRlX29uZSh2b2lkKSB7 Cj4gICAgICAgICBOT05GQUlMSU5HKG1lbWNweSgodm9pZCopMHgyMDAwMDA0MCwgInZmYXRcMDAw IiwgNSkpOwo+ICAgICAgICAgTk9ORkFJTElORyhtZW1jcHkoKHZvaWQqKTB4MjAwMDAyMDAsICIu L2ZpbGUwXDAwMCIsIDgpKTsKPiAgICAgICAgIE5PTkZBSUxJTkcoc3l6X21vdW50X2ltYWdlKC8q ZnM9Ki8weDIwMDAwMDQwLCAvKmRpcj0qLzB4MjAwMDAyMDAsCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qZmxhZ3M9Ki8weDIy MGUwMDIsIC8qb3B0cz0qLzAsIC8qY2hkaXI9Ki8xLAo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnNpemU9Ki8wLCAvKmltZz0q LzB4MjAwMDAxMDApKTsKPiAgICAgICAgIE5PTkZBSUxJTkcobWVtY3B5KCh2b2lkKikweDIwMDAw MDQwLCAibXRkIiwgMykpOwo+ICAgICAgICAgTk9ORkFJTElORyhzcHJpbnRmKChjaGFyKikweDIw MDAwMDQzLCAiMHglMDE2bGx4IiwgKGxvbmcgbG9uZykwKSk7Cj4gICAgICAgICBOT05GQUlMSU5H KG1lbWNweSgodm9pZCopMHgyMDAwMDBjMCwgIi4vZmlsZTBcMDAwIiwgOCkpOwo+ICAgICAgICAg Tk9ORkFJTElORyhtZW1jcHkoKHZvaWQqKTB4MjAwMDEyMDAsICJqZmZzMlwwMDAiLCA2KSk7Cj4g ICAgICAgICBzeXNjYWxsKF9fTlJfbW91bnQsIC8qc3JjPSovMHgyMDAwMDA0MHVsLCAvKmRzdD0q LzB4MjAwMDAwYzB1bCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAvKnR5cGU9Ki8weDIwMDAx MjAwdWwsIC8qZmxhZ3M9Ki8wdWwsIC8qZGF0YT0qLzB1bCk7Cj4gICAgICAgICBOT05GQUlMSU5H KG1lbWNweSgodm9pZCopMHgyMDAwMDFjMCwgIi4vZmlsZTBcMDAwIiwgOCkpOwo+ICAgICAgICAg Tk9ORkFJTElORyhtZW1jcHkoKHZvaWQqKTB4MjAwMDAyYzAsICJzZWN1cml0eS5ldm1cMDAwIiwg MTMpKTsKPiAgICAgICAgIE5PTkZBSUxJTkcoKih1aW50OF90KikweDIwMDAyMDQwID0gMyk7Cj4g ICAgICAgICBOT05GQUlMSU5HKCoodWludDhfdCopMHgyMDAwMjA0MSA9IDIpOwo+ICAgICAgICAg Tk9ORkFJTElORygqKHVpbnQ4X3QqKTB4MjAwMDIwNDIgPSAweGIpOwo+ICAgICAgICAgTk9ORkFJ TElORygqKHVpbnQzMl90KikweDIwMDAyMDQzID0gaHRvYmUzMig0KSk7Cj4gICAgICAgICBOT05G QUlMSU5HKCoodWludDE2X3QqKTB4MjAwMDIwNDcgPSBodG9iZTE2KDB4MTAwMCkpOwo+ICAgICAg ICAgTk9ORkFJTElORyhtZW1jcHkoCj4gICAgICAgICAgICAgICAgICh2b2lkKikweDIwMDAyMDQ5 LAo+ICAgICAgICAgICAgICAgICAiXHg3OFx4OGRceDljXHhiMlx4OTlceGFiXHhkN1x4MmVceGNl XHg5MVx4M2RceDUzXHgzNlx4NWVceDE2XHg2OFx4OGVceDUxIgo+ICAgICAgICAgICAgICAgICAi XHhhY1x4ZTFceDU5XHg4NFx4YWJceDUzXHhkMVx4NjZceDZhXHhlM1x4ZjVceGRmXHhiY1x4ODZc eDBiXHhlZlx4ODdceDM4Igo+ICAgICAgICAgICAgICAgICAiXHg5ZVx4MjFceDI4XHg2Ylx4ZTJc eDM2XHhkZFx4YzNceGQwXHhmYVx4MmVceDUxXHhkNVx4YzVceGM3XHhiM1x4NWNceDVkIgo+ICAg ICAgICAgICAgICAgICAiXHg1MFx4M2NceDViXHgyY1x4M2JceDZiXHhlMFx4ZmNceDU2XHhlOVx4 N2RceGY4XHg4Zlx4YWFceDA2XHgzNVx4MzZceDNiIgo+ICAgICAgICAgICAgICAgICAiXHhhOVx4 MmJceDgyXHhjNFx4N2FceDgxXHg3YVx4YzlceDdmXHgxZFx4NjNceDhhXHgxNFx4NjFceDgyXHgx Mlx4NTVceGVjIgo+ICAgICAgICAgICAgICAgICAiXHgyM1x4YmRceDBjXHhlNVx4YmZceDEwXHg5 NFx4ZTNceGE4XHg5OFx4MGRceDdlXHg2ZFx4MTlceDc2XHhiYVx4NzdceDg3Igo+ICAgICAgICAg ICAgICAgICAiXHg0NVx4OTJceDBlXHgxN1x4MThceGZkXHhkYVx4YzRceGJkXHg2Nlx4YjBceGE2 XHgwNlx4ODBceDFhXHhhZVx4ZmRceGVkIgo+ICAgICAgICAgICAgICAgICAiXHgyOVx4M2NceDNm XHhjZVx4YmFceGQzXHhiMlx4YzBceDY0XHgwM1x4ZGJceGE5XHg5OVx4NDlceDcxXHg2NVx4OWJc eDdmIgo+ICAgICAgICAgICAgICAgICAiXHg0YVx4MDdceDdhXHhkZFx4YWVceGI4XHhhZVx4M2Vc eDVhXHhjYVx4NzBceDI3XHhmZFx4ZTFceGU0XHgwMFx4MDFceGMwIgo+ICAgICAgICAgICAgICAg ICAiXHhiZFx4ZDhceDAwXHhiY1x4YzJceDg3XHhlMFx4MmNceDg2XHg3ZVx4MjdceDgyXHhkZVx4 YWZceDY3XHg2YVx4MjZceDE2Igo+ICAgICAgICAgICAgICAgICAiXHg0N1x4ZGJceDhjXHgyZlx4 MzlceDQ1XHgwMlx4MjBceDU3XHhkZVx4NzZceDgxXHgwMFx4YThceGJmXHg3M1x4ZDlceGY5Igo+ ICAgICAgICAgICAgICAgICAiXHhmZlx4MjlceDIyXHg5Ylx4NDZceGRlXHhhZFx4NThceGIyXHhk ZFx4ZjlceDY0XHgzM1x4NDZceDhlXHg5ZVx4ZWVceDg5Igo+ICAgICAgICAgICAgICAgICAiXHg1 MFx4ZGZceDY1XHg4N1x4MTFceGU0XHgxMVx4MzZceDRlXHg0NFx4MTRceDVlXHg2OFx4MmZceDNj XHgwNVx4M2NceDZmIgo+ICAgICAgICAgICAgICAgICAiXHg1YVx4MThceDYxXHhlZVx4ZTZceGVk XHhmOFx4ODVceGE5XHg3Y1x4NTRceDU4XHgwNVx4YWNceDBjXHgzNVx4YTVceGU0Igo+ICAgICAg ICAgICAgICAgICAiXHg2Mlx4M2JceDIwXHgwMVx4ODZceDFjXHg1OVx4MzNceDU0XHhiNVx4NzBc eGZmXHgzYlx4NGFceDQ1XHhmMVx4YWNceGRlIgo+ICAgICAgICAgICAgICAgICAiXHgwYVx4OGRc eGJkXHgxN1x4YzBceDljXHhlNFx4NDhceGVkXHg1ZFx4ZmRceDllXHg3NFx4NzJceGU2XHg4OVx4 NjdceGRlIgo+ICAgICAgICAgICAgICAgICAiXHhjYlx4NzZceDlmXHhhNlx4MDBceGNkXHgzMFx4 YmVceGI2XHhjOFx4MDNceDBlXHg5NFx4NzRceGM3XHhlY1x4NGNceDFkIgo+ICAgICAgICAgICAg ICAgICAiXHhhZlx4M2VceDAwXHg3Ylx4YmNceDU3XHg2NVx4YjNceDY2XHhkNFx4YTFceDc2XHhl M1x4OGJceGRmXHhhYlx4ZWRceGQyIgo+ICAgICAgICAgICAgICAgICAiXHhiMFx4NzZceGE1XHhl ZFx4N2RceDUwXHhmNVx4MTdceDdiXHg5NFx4YTZceGEwXHhmMFx4MDBceGNkXHgzYVx4Y2FceGRk Igo+ICAgICAgICAgICAgICAgICAiXHhlOFx4ZThceDBmXHg2Nlx4ZWFceGRhXHgxNFx4MDFceDg2 XHgyMFx4YjFceDU5XHhlOVx4ZTFceDRjXHgyNVx4MmRceDIwIgo+ICAgICAgICAgICAgICAgICAi XHhjOFx4ZGJceGIwXHhmZVx4MzZceDA1XHhiNVx4NjlceDhiXHg1M1x4ZTRceDIxXHgwYlx4NjJc eGZjXHhiZFx4MDBceDAxIgo+ICAgICAgICAgICAgICAgICAiXHg3ZVx4YWFceDAxXHhlYlx4MWZc eGE1XHgyMVx4YmRceGI4XHhkM1x4MGVceDgzXHg5NVx4MWJceDRlXHhhMFx4MjhceDZjIgo+ICAg ICAgICAgICAgICAgICAiXHg4Zlx4MGRceDQ2XHg0NVx4MTdceGExXHgxZFx4NzlceDIyXHhkNlx4 Y2NceGU0XHhkMlx4MDVceDhlXHhjOFx4Y2RceDdiIgo+ICAgICAgICAgICAgICAgICAiXHgwMlx4 YjdceDNkXHg4Mlx4NWRceDdlXHgwYVx4YmJceGJkXHg4NVx4ZTlceDkxXHgyMlx4MGZceGM3XHg5 OVx4NTVceDM0Igo+ICAgICAgICAgICAgICAgICAiXHhiN1x4YjFceDk5XHg4Y1x4YTdceDUyXHg4 OVx4MGJceDA3XHg5YVx4N2NceGEzXHhmZFx4ZTVceDY0XHgzOFx4Y2ZceDgyIgo+ICAgICAgICAg ICAgICAgICAiXHhkNVx4ZGRceDllXHhkYlx4ZDFceDFmXHhkMlx4OTNceGMxXHg3ZFx4MWNceGYx XHg2Nlx4NTdceGQwXHhiM1x4NTJceGE4Igo+ICAgICAgICAgICAgICAgICAiXHhjNlx4YzNceDYz XHgwMFx4YWRceDA5XHhhN1x4OGVceDNlXHhlM1x4OTFceDNiXHg5Ylx4NmZceDUzXHhkZVx4YmZc eGZjIgo+ICAgICAgICAgICAgICAgICAiXHg3ZVx4MzJceGJmXHhiNlx4NGJceDBlXHg4Y1x4YmVc eDA3XHhmZVx4OWJceDBkXHhhZFx4YjBceDk3XHhhZVx4YjJceGMyIgo+ICAgICAgICAgICAgICAg ICAiXHg0Mlx4NDNceDBiXHhlY1x4NzVceDYzXHgwYVx4MzlceDIxXHg4Mlx4OGFceDczXHgxNFx4 ZGVceDE0XHgwNFx4ODJceDllIgo+ICAgICAgICAgICAgICAgICAiXHg3YVx4ZmJceDNiXHg4NFx4 MjBceGU4XHg1Zlx4MmNceDhmXHg2ZVx4ODhceGRlXHgwNFx4MjNceDE0XHg0MVx4NmVceDVjIgo+ ICAgICAgICAgICAgICAgICAiXHgwMFx4YzVceDliXHgyMlx4MjBceDgwXHgwNFx4YmVceGMxXHg2 MVx4ZjhceDQ1XHg3Y1x4N2ZceDhlXHgzYVx4OGNceGE0Igo+ICAgICAgICAgICAgICAgICAiXHgx N1x4NGFceDRiXHg3OFx4ZGZceDZlXHg0Nlx4MGRceDU2XHhkMlx4NGVceDAxXHhhZVx4MWFceDI0 XHgxMVx4MjdceDBmIgo+ICAgICAgICAgICAgICAgICAiXHg3OVx4ZDBceDIwXHhhNlx4YmFceGM4 XHg1NVx4ZjFceGEzXHhlZlx4N2JceDNkXHgwOVx4OTFceDg4XHgyNlx4NTZceGI0Igo+ICAgICAg ICAgICAgICAgICAiXHgwOFx4ZGNceGRhXHhmMFx4MmRceGI0XHg2YVx4YzhceGZjXHhhYlx4MGNc eDg3XHg1ZFx4MWZceDJlXHg4ZFx4YjNceDY2Igo+ICAgICAgICAgICAgICAgICAiXHhlNlx4YTJc eDBjXHhiNlx4N2FceDRkXHhiOVx4MjBceDM4XHgyYVx4NjlceDE1XHg3MVx4NWRceDNiXHg0Mlx4 NjZceGY3Igo+ICAgICAgICAgICAgICAgICAiXHg3OVx4ZmVceDg2XHgzM1x4YmVceGE2XHhkZVx4 ZjJceDhjXHhjMVx4NTlceDEzXHg4Ylx4ODNceDQzXHgzNFx4Y2VceGRlIgo+ICAgICAgICAgICAg ICAgICAiXHhmM1x4ZGVceGM1XHg0ZVx4YTVceDMwXHgzZFx4ZjVceDZiXHhlOFx4NzFceDE1XHgz MVx4NWVceGMwXHhmMVx4NDdceDhhIgo+ICAgICAgICAgICAgICAgICAiXHgwY1x4MDhceDY5XHhl NVx4ZjdceGMzXHgzZFx4YTZceDRiXHgyM1x4YWZceDU4XHgxMVx4NzVceDEwXHg1NVx4YzlceDA4 Igo+ICAgICAgICAgICAgICAgICAiXHg0OVx4NDhceDQ0XHg4MVx4ZDVceGExXHgwZFx4NzJceGUw XHg4Y1x4Y2RceDEyXHg3MVx4MGNceDRmXHgyZlx4ZjVceDg2Igo+ICAgICAgICAgICAgICAgICAi XHhhOVx4ZWFceDE3XHg1Zlx4NGFceGE3XHgwYlx4MTVceDZjXHgwMFx4YzVceDdlXHgyMlx4YzFc eDM2XHgwYlx4ZmNceDdkIgo+ICAgICAgICAgICAgICAgICAiXHgzNlx4YWFceDQ3XHg5Mlx4NDRc eDRmXHg4MVx4ZDhceGEwXHhlZFx4NDFceGJmXHg2YVx4NDVceDJlXHhhNVx4MjZceDhiIgo+ICAg ICAgICAgICAgICAgICAiXHg4Nlx4MDVceDY4XHgyYVx4YzZceDNlXHhhYVx4NDZceDUyXHgxOFx4 ZjRceGQ5XHg2Mlx4ZGJceDQyXHgxNVx4NGRceDAxIgo+ICAgICAgICAgICAgICAgICAiXHg5Nlx4 NmRceDNhXHhkOFx4ZmNceDJmXHhkZVx4NDhceGVmXHg3MVx4YmVceDA4XHhiZVx4NThceGU1XHhh ZFx4NmRceDVhIgo+ICAgICAgICAgICAgICAgICAiXHgzNVx4OTNceGVmXHhjOVx4YzFceDMzXHg2 ZVx4NTRceDEzXHg3Mlx4YTNceDQ3XHg5OVx4ZDJceDRlXHhhMFx4MGRceDRkIgo+ICAgICAgICAg ICAgICAgICAiXHg0OVx4ODVceGJlXHhkMVx4ZGFceGIxXHgwNlx4MjBceDkxXHgxZVx4OWZceDY5 XHg2N1x4ODhceDA4XHgyNlx4YmVceDVhIgo+ICAgICAgICAgICAgICAgICAiXHgxZlx4MWJceGI0 XHhiMlx4YTNceDk0XHg4Nlx4NTRceGM2XHg5M1x4NWNceGFmXHhlYlx4NDlceDI1XHhlMVx4MDdc eGEwIgo+ICAgICAgICAgICAgICAgICAiXHgxZlx4OWRceGRhXHg2Nlx4OGVceDVmXHhkN1x4NDhc eDllXHg4Mlx4MTNceDkyXHg0MVx4YTlceDE5XHgwZlx4MDlceDBhIgo+ICAgICAgICAgICAgICAg ICAiXHhmZVx4MjBceDk0XHgyM1x4NGNceDc1XHhmZVx4YzBceDc0XHg2Mlx4MjdceDQ4XHhkNFx4 ZGRceDc4XHgyYVx4OTNceDBmIgo+ICAgICAgICAgICAgICAgICAiXHg0Mlx4YjBceGU3XHg1ZFx4 OTJceDRiXHhlZlx4NjhceGZmXHhhZlx4YmFceGE5XHg4OVx4MTZceDE1XHgxYVx4MzZceGVmIgo+ ICAgICAgICAgICAgICAgICAiXHgyOVx4OThceGFmXHhkM1x4MDBceDA5XHg1NVx4ZWZceGJmXHhh MFx4YTlceGEwXHgwOFx4MzVceDhjXHgxMVx4MDRceDNjIgo+ICAgICAgICAgICAgICAgICAiXHgw Zlx4OTZceGI1XHgyZlx4YzdceDhhXHg0Mlx4NTNceDFhXHhhNVx4ZGZceGQ4XHhkZVx4MDlceDUx XHg4Y1x4ZmZceDAwIgo+ICAgICAgICAgICAgICAgICAiXHg4Ylx4MzNceDkyXHg1OVx4YjJceDY2 XHhjNFx4ODhceGJiXHgxZFx4YTBceDU4XHhiYVx4MjFceDhjXHhkNlx4NGJceDNlIgo+ICAgICAg ICAgICAgICAgICAiXHg0MVx4M2NceGEyXHg4OFx4OWRceDEwXHg4Nlx4ZThceGM0XHgwYVx4ZTFc eDE1XHgwMVx4OThceDQxXHgyMVx4ZGNceGZhIgo+ICAgICAgICAgICAgICAgICAiXHgyZlx4ZGVc eDA5XHhkMFx4NjhceGY2XHhkYlx4YmVceDgzXHg1OVx4OThceDBkXHhhZFx4OTZceGVkXHgyMlx4 MGJceDg1Igo+ICAgICAgICAgICAgICAgICAiXHgzNFx4YWFceGVmXHgzNVx4M2RceGZjXHg4MVx4 NTZceDA5XHgwN1x4ZDJceDZjXHgwMlx4NDRceDI5XHgyNFx4YWRceDU1Igo+ICAgICAgICAgICAg ICAgICAiXHhiMVx4MWRceDNhXHhlZVx4N2VceDU1XHgxNlx4ZDlceDZhXHhkMFx4NzhceGM4XHg1 YVx4ZDFceGNkXHhiMVx4OGFceDQ1Igo+ICAgICAgICAgICAgICAgICAiXHg0N1x4NDNceDA1XHhh OFx4ZGJceDM1XHgwZlx4OThceDQ0XHgzOFx4MGVceDIwXHg5NFx4ZjZceDkxXHhhMFx4NWVceGEw Igo+ICAgICAgICAgICAgICAgICAiXHg5NFx4NThceGJjXHg1M1x4ZjNceDIzXHg2YVx4MWZceDNm XHhhNVx4ZTFceDQ0XHhhNVx4NzVceGJhXHg1N1x4ZTVceDhkIgo+ICAgICAgICAgICAgICAgICAi XHgwMFx4ZjdceDY1XHgzZFx4MmVceDZiXHg2Y1x4YmVceDE4XHhkMlx4OGNceGUzXHhmNVx4Nzlc eDI1XHgzOFx4YWRceDIwIgo+ICAgICAgICAgICAgICAgICAiXHhjMFx4ZTBceGUxXHgwYlx4MDNc eGRhXHhjM1x4NDBceDA5XHhkNlx4ZDNceGU0XHhjN1x4NjZceDJjXHhjYVx4ODhceGI1Igo+ICAg ICAgICAgICAgICAgICAiXHgzMFx4NjZceGU5XHg1ZVx4ZmVceDQ1XHhlZVx4M2VceDA0XHhkYVx4 MzJceDg2XHg5MFx4ZGFceGUxXHhhYVx4MDBceDcwIgo+ICAgICAgICAgICAgICAgICAiXHhmMFx4 OTRceDVlXHgyNlx4OWJceDc1XHg3M1x4M2JceDEwXHg2Zlx4ZjZceDUxXHg0NVx4NTVceGQ1XHg0 ZFx4OTVceDhmIgo+ICAgICAgICAgICAgICAgICAiXHg3M1x4MTNceDQ0XHgxZlx4YTJceDFmXHg5 N1x4NjFceDUzXHgxMlx4YzRceGY2XHgwMFx4YTFceDQzXHgwZlx4NjJceDk4Igo+ICAgICAgICAg ICAgICAgICAiXHgxMlx4ZjJceDNjXHhkMlx4MWVceDcwXHgzYlx4OTZceDZlXHgwNFx4YWFceDZk XHgwYlx4YmFceDZmXHgyNVx4MzlceDM2Igo+ICAgICAgICAgICAgICAgICAiXHg5YVx4M2JceGFk XHhlYlx4ZmFceGE4XHgxOVx4N2RceDg5XHhlM1x4MjlceDRiXHg0NFx4YzBceGVhXHg1NFx4YWVc eDZiIgo+ICAgICAgICAgICAgICAgICAiXHg3Zlx4NGFceDQ5XHg2NVx4NjhceDA0XHgzMVx4NzVc eGE1XHg2Nlx4NjVceDQxXHhiNVx4NTlceGE5XHhmZVx4YWZceDBjIgo+ICAgICAgICAgICAgICAg ICAiXHg1NFx4NTRceGYxXHgyZlx4MjNceDBlXHg5N1x4YmNceGY4XHg0ZFx4YWVceDExXHhkMVx4 YThceDM1XHg5NFx4MTFceGI5Igo+ICAgICAgICAgICAgICAgICAiXHg4Ylx4YjZceDA2XHgzZVx4 ZThceGFlXHgwZlx4ZmFceDMwXHhiNVx4NzVceDc3XHg3MVx4YzdceGI3XHgwZVx4NGZceGJiIgo+ ICAgICAgICAgICAgICAgICAiXHg2ZVx4OTVceDFhXHg2OFx4MDhceDczXHhlNlx4ZGFceDUzXHgx Nlx4MDBceGU5XHg1MVx4MTFceDBjXHgzNFx4Y2FceGFjIgo+ICAgICAgICAgICAgICAgICAiXHhj OFx4ZTlceDc4XHhjMFx4NmJceDQ4XHg0OFx4YzhceDgwXHhjNFx4OGFceGQ4XHhlNlx4YzVceDRi XHhjN1x4OTJceGNlIgo+ICAgICAgICAgICAgICAgICAiXHg1NFx4ZWFceDRiXHgxY1x4MDVceGFi XHgwNFx4YWZceGI0XHhkNlx4Y2FceGIyXHg1Ylx4ODVceGQxXHhjNFx4YjZceGM0Igo+ICAgICAg ICAgICAgICAgICAiXHg3NFx4YzdceGVjXHg5Mlx4NjdceGI1XHgwMVx4ZWRceGFhXHgyMFx4ZWVc eDBlXHg0MVx4NThceDY4XHhkOFx4NzhceDY2Igo+ICAgICAgICAgICAgICAgICAiXHg0Mlx4NmJc eDEzXHg3NFx4ZTVceDhhXHg2Nlx4NjVceDMwXHhiOVx4NGVceDM0XHgyY1x4OGJceDJlXHhiZFx4 ZDRceDA1Igo+ICAgICAgICAgICAgICAgICAiXHhmZVx4ZjBceGEyXHg2ZFx4ZjhceDJiXHhiY1x4 NTBceDJkXHhhMlx4Y2FceDE1XHg1MFx4YzJceDhkXHgzY1x4MGJceDY5Igo+ICAgICAgICAgICAg ICAgICAiXHg4N1x4MmZceGY4XHg2MVx4Y2RceDIzXHhjYlx4NmVceDFmXHhmMVx4ZTZceDJmXHg2 Mlx4NWFceGU5XHgyZlx4OTBceGYzIgo+ICAgICAgICAgICAgICAgICAiXHgwOVx4MzNceGZjXHg4 Mlx4N2VceGRkXHgzOFx4NjFceDIxXHgzMVx4NTNceDUyXHhkYlx4YzlceGY0XHhjYVx4YjNceGRk Igo+ICAgICAgICAgICAgICAgICAiXHhkYVx4ZGVceGI4XHhkZlx4MDVceDFkXHgyZlx4NTlceGNk XHg1OVx4ZTlceDdkXHhjOVx4MmNceGU0XHgzNFx4MWZceDk3Igo+ICAgICAgICAgICAgICAgICAi XHg4MFx4MDNceGU0XHg4Nlx4ODVceGU3XHg2N1x4M2NceGYxXHhlNlx4MDJceDYwXHg2MFx4MGVc eDdjXHhiZlx4NzNceDFkIgo+ICAgICAgICAgICAgICAgICAiXHhjMVx4NjhceGI5XHhhNFx4MTFc eGRjXHgzY1x4ODVceGY4XHg0M1x4YmRceDJjXHg1Zlx4Y2FceDg5XHhjMFx4NmRceDEyIgo+ICAg ICAgICAgICAgICAgICAiXHhiYVx4YzBceDhhXHg2MVx4Y2ZceDA5XHg5YVx4ZTVceGYyXHgzZVx4 NWVceDkwXHg4NFx4NDhceGU4XHgxZlx4MjdceDc5Igo+ICAgICAgICAgICAgICAgICAiXHhiM1x4 ODVceGIzXHgxZFx4Y2RceDVjXHhmOFx4YWFceGFkXHg0Ylx4ODVceGFlXHg3MFx4NjNceDYyXHg0 YVx4N2RceGY1Igo+ICAgICAgICAgICAgICAgICAiXHg3M1x4YWVceGNjXHhjOFx4YjZceDE5XHg3 N1x4ZjhceGVjXHgxMFx4ZTZceDhiXHg1ZFx4ZjFceGMxXHhiOFx4MDVceGM3Igo+ICAgICAgICAg ICAgICAgICAiXHhlMFx4MDFceDIyXHg4YVx4NjVceGMwXHhlN1x4NzJceGM1XHgyNVx4MTRceDY2 XHhhNFx4OWZceDEwXHgyMVx4OWJceGI3Igo+ICAgICAgICAgICAgICAgICAiXHgxOFx4YTRceGFh XHgyZVx4MzVceGM0XHgwOFx4MTFceGE5XHg3Mlx4ZWJceDU4XHg1M1x4MGZceDdmXHgwN1x4NDFc eGQzIgo+ICAgICAgICAgICAgICAgICAiXHhiZVx4MGNceDAwXHhlM1x4OGZceDU4XHg5OVx4NGFc eDUxXHg5OVx4NTRceDdmXHhjNVx4MTVceDBjXHg3OFx4MWZceGZlIgo+ICAgICAgICAgICAgICAg ICAiXHgyZVx4NTZceDU2XHgwZlx4MDhceGViXHg3NVx4YmZceGNkXHg5MFx4ODVceGZmXHgxNFx4 MGNceGVlXHhmZFx4MGRceDZlIgo+ICAgICAgICAgICAgICAgICAiXHhkNFx4M2RceGFkXHgzOVx4 ZDJceGNkXHhhOFx4NjlceDRkXHg0Mlx4MGVceDg2XHgxYVx4MWRceGVjXHg0YVx4MjhceGQxIgo+ ICAgICAgICAgICAgICAgICAiXHhjZlx4NTNceDI0XHhjNVx4YzVceGFiXHg4MVx4OTJceDIxXHg1 NFx4ODdceDNiXHgzZlx4ODJceGRmXHgxYlx4YzBceDZjIgo+ICAgICAgICAgICAgICAgICAiXHhi OVx4NTZceDVjXHgwOFx4ZjdceDc0XHhkOVx4ZmFceDZmXHhlNVx4NzVceGRhXHhmOFx4N2JceDMy XHg4YVx4YjFceDBiIgo+ICAgICAgICAgICAgICAgICAiXHg5MVx4MjJceDQzXHhmMVx4MDBceDcx XHgyYVx4MjdceGY0XHg5OFx4MWZceGFhXHgzN1x4MmRceDczXHg2N1x4MDJceGM1Igo+ICAgICAg ICAgICAgICAgICAiXHg2NVx4YTBceDhjXHg0ZFx4NmJceDBhXHhhM1x4MTJceGQzXHhjOVx4MDFc eDdmXHhkMVx4ZTdceGFiXHg5OFx4MWRceGU3Igo+ICAgICAgICAgICAgICAgICAiXHhlZVx4MWRc eGZjXHgxYVx4ODRceDk5XHgyNFx4YWFceDkyXHhlYVx4YjFceGIzXHhlNlx4ZTlceDc0XHgyZlx4 NjlceDEzIgo+ICAgICAgICAgICAgICAgICAiXHhhMFx4OGJceDU2XHg5OVx4ZDZceDcwXHg2OVx4 N2FceDYwXHg4ZFx4NzRceDllXHgwNlx4YzNceDQxXHg0Mlx4MWFceDgwIgo+ICAgICAgICAgICAg ICAgICAiXHg5YVx4MzZceDVkXHhjYVx4M2ZceDhkXHg4OFx4ZDhceDQyXHg2OFx4NTBceDgwXHhm OFx4ZWRceDkzXHg0OFx4MjhceDg4Igo+ICAgICAgICAgICAgICAgICAiXHgwNlx4NWJceDUwXHhi Zlx4OWFceGJkXHhlN1x4NWZceGUzXHg3Y1x4OGZceGYyXHhhZVx4NGZceDI0XHhlMlx4NmZceDgz Igo+ICAgICAgICAgICAgICAgICAiXHg5NFx4OWFceGI1XHhjNFx4ZjRceGE5XHg2ZVx4MTNceGIy XHhjZFx4ZjdceDQyXHhkYVx4ZjlceGMxXHhiNVx4ODNceDA1Igo+ICAgICAgICAgICAgICAgICAi XHg2OVx4MTRceDU2XHhjNlx4YzFceDkwXHhiZlx4YjdceGJiXHhiYlx4MDhceDRlXHhhOVx4Zjlc eDdlXHg5OVx4YzNceGUwIgo+ICAgICAgICAgICAgICAgICAiXHgyOFx4NDFceDVkXHg0ZVx4MDVc eGNjXHhmN1x4NzFceDdiXHg1N1x4OTdceGZmXHg1Ylx4YWZceGEyXHg1MVx4OGFceDBhIgo+ICAg ICAgICAgICAgICAgICAiXHhjYVx4YjRceDM0XHhhMVx4ODhceGQ0XHg3OVx4N2FceDg1XHhmM1x4 NjVceDU3XHhkZFx4NmFceGEzXHg5Y1x4NzVceGU4Igo+ICAgICAgICAgICAgICAgICAiXHgwYlx4 NzJceDQ5XHg2M1x4NzJceDY1XHgyNVx4NDRceGIxXHg0Mlx4NDlceDAxXHhhNlx4YTlceGQ0XHhi N1x4NDVceDMwIgo+ICAgICAgICAgICAgICAgICAiXHg4Nlx4YjZceGJhXHgyNlx4YTRceDA1XHgy MVx4ZGFceDk0XHhhYlx4NTRceGRlXHg0YVx4MTFceGI1XHgxYlx4NGFceGQ3Igo+ICAgICAgICAg ICAgICAgICAiXHhhYlx4MWRceDY4XHgwNVx4ZjNceDIzXHhiMFx4NDRceDk1XHg1Zlx4NzdceDlj XHhmZVx4N2NceDFjXHgzNVx4ODZceGY0Igo+ICAgICAgICAgICAgICAgICAiXHhiZVx4MGVceGFi XHgyMlx4NmFceDI1XHhhZVx4MTZceGJkXHg4ZFx4YzdceGViXHgwMVx4NTBceDI0XHhiN1x4NDNc eDRiIgo+ICAgICAgICAgICAgICAgICAiXHg2NFx4MDhceDM0XHgzYVx4MWJceGU2XHhlMVx4ZGRc eDM5XHgyNVx4YzFceDAyXHhiNFx4YzlceGM1XHg0M1x4OThceDM4Igo+ICAgICAgICAgICAgICAg ICAiXHgzNVx4YjZceGJiXHg0NVx4ZjhceDBlXHhhM1x4NWJceGY3XHhmY1x4ZWNceGFiXHg1ZFx4 OTRceDcyXHgyNFx4YmZceGRiIgo+ICAgICAgICAgICAgICAgICAiXHgxY1x4MDNceGIyXHgwZlx4 YzBceDdhXHg1Y1x4YWNceDYzXHgwYlx4ZWJceDRiXHgzMFx4NDRceGViXHhlNVx4NWNceDkwIgo+ ICAgICAgICAgICAgICAgICAiXHgyM1x4ODRceDRjXHgxZlx4ZDZceDRiXHg0ZVx4YjBceDI1XHg1 M1x4NjhceDY3XHhmMFx4YWZceGEzXHg4OFx4NTdceDZjIgo+ICAgICAgICAgICAgICAgICAiXHg1 Ylx4MjVceDY0XHhjZFx4MmVceDIwXHhhZVx4MjZceDMzXHhmN1x4YjdceDZjXHhmNlx4ZmJceGNl XHhmZlx4MjRceDBmIgo+ICAgICAgICAgICAgICAgICAiXHg2NVx4ZTVceGVlXHhiYVx4MjhceDQz XHhmYVx4YTFceGU3XHg3MVx4MDhceGQzXHg1Y1x4NTlceGIzXHhmNVx4NzBceDExIgo+ICAgICAg ICAgICAgICAgICAiXHgyNlx4NjBceGU5XHgyN1x4OGRceGEzXHgxMlx4NzZceDg2XHhkY1x4MmFc eDk2XHg1YVx4NmFceGQxXHg2N1x4MmVceDI5Igo+ICAgICAgICAgICAgICAgICAiXHhmZlx4OWVc eGRkXHg2Mlx4ZjRceDllXHg0MVx4YmRceGQ2XHg1M1x4NDhceGQyXHg2NVx4NzhceDQ2XHhiZVx4 ODBceDQ3Igo+ICAgICAgICAgICAgICAgICAiXHg5Y1x4ZWFceDQxXHg1Ylx4ZmJceDU5XHgyN1x4 MjJceDlmXHgzYlx4NzdceDJlXHhkOVx4YzlceGI3XHg2M1x4OWRceDhmIgo+ICAgICAgICAgICAg ICAgICAiXHg3NVx4ZmZceDY2XHgyMVx4ODRceDFhXHg3Ylx4NjRceDk3XHg4MVx4MzFceGU4XHg2 OVx4NTJceGJmXHhlNVx4MTBceDcxIgo+ICAgICAgICAgICAgICAgICAiXHg1Ylx4MjVceGVmXHhi Y1x4ZjNceDkzXHgzMlx4MGNceDFkXHg2Mlx4OTlceGFjXHg2Y1x4MTlceGRkXHg5MFx4ODhceDcw Igo+ICAgICAgICAgICAgICAgICAiXHhmOVx4NmRceDkyXHhiOFx4YmRceGNmXHgxMVx4ZTNceGM5 XHg4N1x4OGZceDJlXHgzN1x4YmRceGFmXHg3Mlx4NzFceDhhIgo+ICAgICAgICAgICAgICAgICAi XHhkMFx4YmNceDI4XHg3Mlx4YzdceGEwXHhiMVx4MDFceGY2XHhlM1x4OTJceDk5XHg3Mlx4MzRc eGUwXHg2Y1x4OWJceDFiIgo+ICAgICAgICAgICAgICAgICAiXHhkY1x4MzJceDQ5XHg3MVx4NDJc eDdkXHg2Ylx4OTdceGMzXHhjMVx4NjVceDMxXHgxN1x4OGZceDQwXHhhOFx4YWJceDUyIgo+ICAg ICAgICAgICAgICAgICAiXHhmOVx4OGVceDA2XHg2N1x4ODBceDk3XHg3YVx4YmRceDM1XHgyZVx4 MWVceGZlXHg2MVx4ODVceGY3XHgwMlx4MzNceGIzIgo+ICAgICAgICAgICAgICAgICAiXHgwZlx4 ZGNceDk2XHhiNlx4YTJceDg5XHhiOVx4ZTBceGZjXHhlZVx4NTVceDU5XHgyM1x4ZWZceDU5XHgw Ylx4ZDlceGNkIgo+ICAgICAgICAgICAgICAgICAiXHgyZlx4MGVceGY3XHgwMlx4NDZceDQxXHg0 NVx4MGRceDFhXHg5Mlx4NThceDA0XHg2YVx4YzBceGU4XHgwYVx4Y2RceDQ0Igo+ICAgICAgICAg ICAgICAgICAiXHhmMlx4NjdceDQ0XHg2OVx4NDZceGMwXHg5Nlx4ZGJceDk4XHg0OFx4ZjdceDhj XHhkZFx4YmFceDlmXHg1NFx4MDlceGIwIgo+ICAgICAgICAgICAgICAgICAiXHg5MFx4ZGRceDIz XHg0NFx4ZDhceGQ0XHg1YVx4MTZceGNkXHgyZVx4Y2NceGU1XHhiZlx4MjJceGJkXHg0Y1x4Yjhc eDlhIgo+ICAgICAgICAgICAgICAgICAiXHhmZFx4MzBceDY3XHhjYlx4MGJceGQ5XHhhN1x4Mjdc eDliXHhlMVx4YjFceGU1XHgwM1x4NDlceDhmXHgzOVx4ZWRceGNlIgo+ICAgICAgICAgICAgICAg ICAiXHg3MVx4NGZceDM3XHg1OVx4N2RceDBlXHg2NFx4NjBceDcxXHg2ZFx4MDlceGVhXHgzN1x4 NmRceDczXHhlOFx4YTdceDFmIgo+ICAgICAgICAgICAgICAgICAiXHhmZlx4MTNceDI0XHhmYVx4 MmFceGViXHhhN1x4NWVceDhiXHhiZFx4MGVceGE0XHhjNFx4MThceGI0XHg1N1x4ODRceDU1Igo+ ICAgICAgICAgICAgICAgICAiXHgwMVx4NTNceGQ0XHg5Mlx4ODlceDhlXHgxNVx4ZGFceDg4XHhi Nlx4ZWRceDNmXHg2N1x4ZThceDVkXHhiYlx4MTFceDFjIgo+ICAgICAgICAgICAgICAgICAiXHgy Zlx4ZWFceGMyXHhmZFx4NzhceGI2XHhmOVx4MDFceDFjXHg2OFx4NjRceGI5XHhiYlx4MTFceDY1 XHgzNlx4OTRceGY3Igo+ICAgICAgICAgICAgICAgICAiXHhmMFx4MjVceDY4XHhiN1x4NjhceGI2 XHhhMlx4N2RceDA4XHgwZVx4YWRceGMwXHgwOVx4MzdceDQ0XHhiOVx4MTFceDVhIgo+ICAgICAg ICAgICAgICAgICAiXHhhMlx4ZjhceGQwXHgzZlx4YTJceDdmXHhhZVx4YTJceGUzXHg1Nlx4ZWZc eDhjXHhlNlx4MmVceDQ3XHgyMlx4ZGRceGQxIgo+ICAgICAgICAgICAgICAgICAiXHgzOVx4Zjdc eDg0XHhhY1x4M2JceDhhXHhmYlx4OThceGM4XHhkM1x4OThceDRjXHg4Y1x4ZjlceDQzXHg4ZVx4 ODNceDcxIgo+ICAgICAgICAgICAgICAgICAiXHgwM1x4MzBceDQyXHg4Ylx4NzhceDMwXHhjMVx4 NzBceDlhXHgzMFx4OWJceGJhXHhjM1x4YmJceGRiXHhkMFx4ODNceGU1Igo+ICAgICAgICAgICAg ICAgICAiXHgzOVx4OTNceDhjXHg1N1x4ODlceGUxXHg3MFx4OWRceDJjXHgwZVx4ZTlceDRkXHhj Ylx4MmZceGU2XHg0Y1x4MzFceGM4Igo+ICAgICAgICAgICAgICAgICAiXHg3ZFx4MjVceGNjXHg3 Zlx4ODJceDZiXHhiZlx4NWVceDAyXHgxZFx4NWFceGFhXHgxN1x4MjlceDcwXHhhYVx4ZTlceDZh Igo+ICAgICAgICAgICAgICAgICAiXHg2OFx4NThceGY4XHhjMVx4MWZceGRmXHhiN1x4NDhceDMy XHg4ZFx4OTdceDQxXHgxZVx4ZGNceDEwXHhkZFx4MTZceGZkIgo+ICAgICAgICAgICAgICAgICAi XHgxMFx4ZmFceGE3XHhjM1x4YjlceDRjXHhlMVx4OTFceDUyXHhmYlx4MjlceDY1XHg2OVx4MDRc eDIxXHhkM1x4YzZceGRiIgo+ICAgICAgICAgICAgICAgICAiXHgyZVx4N2VceDg4XHg4OFx4Yzdc eGJiXHgwNlx4NDRceDNkXHhiM1x4MTFceDFlXHgzZFx4YjZceDlhXHg4OFx4ZGRceDA5Igo+ICAg ICAgICAgICAgICAgICAiXHg3YVx4YjhceGM2XHg0ZFx4NmJceGVhXHgzMFx4ZGFceDI0XHg3Zlx4 Y2RceDExXHg3YVx4MzBceGVlXHhmNFx4NWNceGQ5Igo+ICAgICAgICAgICAgICAgICAiXHgzM1x4 OWFceDc4XHgzN1x4NTZceDI4XHhjZFx4YmZceGEyXHg2ZFx4NmJceDM0XHgxOVx4ZTZceDliXHhi ZVx4OGVceDg4Igo+ICAgICAgICAgICAgICAgICAiXHg0N1x4OTFceDI5XHg2OFx4NGJceDIzXHgw NFx4ZGFceGEyXHhkNlx4ODRceDMwXHg0OFx4MjZceGVlXHhlOVx4N2RceDM0Igo+ICAgICAgICAg ICAgICAgICAiXHg2M1x4MDNceGNjXHg2M1x4MWVceDEwXHg0Nlx4NWFceDJmXHg5Mlx4NDNceGU4 XHg0ZFx4MzJceDI4XHgxMFx4MzhceDhiIgo+ICAgICAgICAgICAgICAgICAiXHhhMlx4ZDNceDA2 XHgyNlx4YTZceDNkXHhmOVx4NzlceDNlXHhiOVx4NjNceGRmXHgyM1x4NDhceDY1XHhjYlx4YjZc eDhjIgo+ICAgICAgICAgICAgICAgICAiXHhkYlx4YzBceDQzXHg2M1x4ZTFceDdhXHg2YVx4NmVc eGIxXHhjOFx4MDFceDQxXHg3N1x4YzlceDlmXHhhYVx4Y2JceDhkIgo+ICAgICAgICAgICAgICAg ICAiXHg3YVx4OGVceDk5XHhkOFx4OTdceDcxXHg4Ylx4YzVceDEwXHg1NVx4NzJceDc4XHgyMFx4 ZDNceDIxXHhmMlx4NWZceGQxIgo+ICAgICAgICAgICAgICAgICAiXHg1ZFx4MjRceGQwXHgyOVx4 ZDRceGZhXHhkNlx4ZmRceGU5XHg3Zlx4MDlceDExXHg4MFx4ZWZceDJiXHhjM1x4OTFceDNiIgo+ ICAgICAgICAgICAgICAgICAiXHhjMVx4MWZceDhmXHgxMFx4NGJceGNjXHg3ZVx4YTBceDAyXHg0 MVx4NTdceDQ4XHgxYlx4MzVceDM3XHhjZVx4NTRceDNmIgo+ICAgICAgICAgICAgICAgICAiXHhl OFx4YWJceDkzXHhhMlx4NmNceGI5XHhiYVx4NTFceGZhXHg3OFx4ZDNceDM3XHhiZlx4MTBceGJh XHgyOVx4ZGNceDVmIgo+ICAgICAgICAgICAgICAgICAiXHhlYlx4ZmVceDRhXHhkMFx4MTRceGJk XHg0MFx4ZjNceDMzXHgzMFx4ODJceDNkXHg3Zlx4NDVceDczXHhiYVx4ZWJceGQ5Igo+ICAgICAg ICAgICAgICAgICAiXHhlMFx4NjNceGQ1XHg5YVx4ODdceDY2XHgyYlx4ZWZceDg1XHg5Y1x4ZWVc eDhhXHg4ZVx4NTNceDE4XHhhYVx4ZTJceDJlIgo+ICAgICAgICAgICAgICAgICAiXHg3OVx4ZmJc eDRkXHgzMVx4ZTBceDg4XHhmMFx4NTZceDljXHg2N1x4YmJceGE0XHgxOFx4NjhceGZlXHg0Nlx4 NGVceGQ3Igo+ICAgICAgICAgICAgICAgICAiXHg3ZVx4YzdceGZlXHgwN1x4ZGRceDNhXHg1Y1x4 MmNceDgxXHhjMVx4ZmRceGVkXHgxNlx4MDVceDk4XHhiM1x4NzVceDY0Igo+ICAgICAgICAgICAg ICAgICAiXHg1MVx4MzFceDczXHhmMVx4M2ZceGVlXHhiOVx4ZGZceDRiXHg0N1x4ZWRceGU4XHgw NVx4MGFceGFjXHg0M1x4MWVceDFiIgo+ICAgICAgICAgICAgICAgICAiXHgyMFx4NThceGM2XHhh Zlx4ZTdceGU0XHg0Ylx4Y2NceDZmXHgyOFx4ZGNceDU4XHgzM1x4ZGRceGVkXHgxMFx4ZTZceDkx Igo+ICAgICAgICAgICAgICAgICAiXHg3ZVx4MTVceGI5XHgzMFx4ODhceGNkXHg5MFx4NzlceDE4 XHgyNlx4Y2FceDdjXHgzYlx4OWFceDQyXHgxMVx4ZTlceGUyIgo+ICAgICAgICAgICAgICAgICAi XHhmZlx4ZDRceDk2XHg2Mlx4MjNceDgxXHg2ZFx4YjZceGU0XHhlZFx4ZTVceDcwXHgxYlx4NzZc eDk4XHg4ZFx4OGZceDM0Igo+ICAgICAgICAgICAgICAgICAiXHhhYVx4MTRceDBmXHhmYlx4NGJc eGMzXHhlZlx4ZmNceGNiXHhlNVx4YWZceDM5XHg0Mlx4ZDRceGM1XHg3MVx4NzdceDAwIgo+ICAg ICAgICAgICAgICAgICAiXHhlNVx4OTJceGExXHg3MFx4MDFceGQyXHgwYlx4NjZceDVmXHhiN1x4 YzZceGY2XHg1M1x4NjFceDEwXHg4YVx4MTNceDcwIgo+ICAgICAgICAgICAgICAgICAiXHhhNFx4 NWRceGI0XHg3N1x4YTFceGY0XHg0OVx4ZTVceGMzXHhmOVx4YThceDlmXHg5Nlx4NzJceDkwXHhh Zlx4MjNceDFkIgo+ICAgICAgICAgICAgICAgICAiXHhiOFx4MmZceGVkXHhlY1x4ZmNceGEyXHhj M1x4Y2VceGRmXHhmZVx4YWRceGI3XHg3NVx4NzJceDhiXHg0NVx4Y2VceDRiIgo+ICAgICAgICAg ICAgICAgICAiXHhkZVx4MDZceDMwXHhlOVx4ZTFceGRmXHhjZFx4OThceDEzXHg4YVx4NTVceDZk XHhkNFx4MGJceDY1XHg1NVx4ODFceGI0Igo+ICAgICAgICAgICAgICAgICAiXHg1MVx4YTdceDE2 XHg0YVx4ZDVceDdjXHg0Zlx4YjJceGI1XHhkY1x4NWJceDE0XHg1ZVx4ODdceDMzXHhkZVx4MzNc eGFmIgo+ICAgICAgICAgICAgICAgICAiXHg4NFx4NGVceDQwXHgwNFx4MTRceGY4XHg1Y1x4Mjhc eGNhXHgxZlx4ODhceDhlXHg3MFx4YzRceDVkXHgyOFx4YzhceDIzIgo+ICAgICAgICAgICAgICAg ICAiXHhlMFx4N2VceGRkXHhmM1x4MGRceGY3XHg5MVx4MWRceGY1XHg4NFx4YWRceDQ1XHg4YVx4 MjVceDM1XHg1MFx4ODRceDE2Igo+ICAgICAgICAgICAgICAgICAiXHgzYVx4OWFceDdjXHhjM1x4 YmFceGM0XHgyN1x4NmVceDk1XHg3Mlx4MTFceDYyXHg2ZVx4MjhceDgyXHgxMlx4MDBceDUzIgo+ ICAgICAgICAgICAgICAgICAiXHgzNFx4ZGVceGM3XHg0Mlx4Y2ZceGU1XHg3ZVx4NmNceDgyXHgz NFx4ZTVceDIwXHhkOFx4YmVceGQ0XHg1YVx4ZjRceDc2Igo+ICAgICAgICAgICAgICAgICAiXHg3 N1x4MGZceDQ3XHgxOFx4ZjdceDk5XHhjMVx4YTFceGY2XHgzN1x4ZmNceDA0XHhhN1x4MzdceDgw XHhhM1x4NWRceDIxIgo+ICAgICAgICAgICAgICAgICAiXHg5NFx4ZTZceDAxXHg3ZVx4NDBceDVk XHgzZVx4MGJceDFlXHg5Zlx4MmNceDdjXHgwZlx4NmFceDBlXHhkMlx4OGFceDJlIgo+ICAgICAg ICAgICAgICAgICAiXHhhZlx4ZGRceDc5XHgyMlx4NzZceDIwXHg1OVx4ZmVceDBlXHhiY1x4Nzdc eDU5XHg5Mlx4NDVceGIxXHgyY1x4OWZceDBjIgo+ICAgICAgICAgICAgICAgICAiXHhlZlx4OWVc eGRhXHhiMVx4YTJceDUxXHg3MVx4YTZceGE5XHhhMFx4NTZceDJlXHgyNFx4ZGJceDc2XHhlMlx4 NWRceGZiIgo+ICAgICAgICAgICAgICAgICAiXHg1ZVx4Y2JceDczXHg1Mlx4ZDBceGJmXHhjN1x4 OGRceDg1XHg4ZVx4OGFceGFhXHhjOVx4MTNceGVmXHhhNFx4ZmZceDYwIgo+ICAgICAgICAgICAg ICAgICAiXHg0OFx4OTZceDc5XHhlOFx4YzdceDIwXHgxOVx4ODlceDdhXHg4YVx4ODVceGE5XHhl ZVx4MjlceGYxXHgwOVx4MjJceDMxIgo+ICAgICAgICAgICAgICAgICAiXHg1Ylx4YTdceGRiXHgw YVx4MTJceDZmXHg4Mlx4N2NceDAzXHhmYVx4NWJceGJiXHg5MFx4ZjlceDkxXHhjYlx4OThceDY2 Igo+ICAgICAgICAgICAgICAgICAiXHhiM1x4ZTBceDMwXHg0N1x4Y2JceDFmXHhhYlx4YmJceGRi XHhlNVx4YTNceDUyXHg4Mlx4ZjBceDMwXHhjMFx4ZGJceGRiIgo+ICAgICAgICAgICAgICAgICAi XHhkMlx4MjdceGY4XHg1Ylx4MDVceDcyXHgxY1x4NDVceGM4XHhiMlx4YjhceDVkXHgzM1x4MTBc eGJiXHg0MVx4ZDZceGFhIgo+ICAgICAgICAgICAgICAgICAiXHg1Nlx4MTRceGE2XHgwZFx4OThc eDc0XHhkMVx4MmZceDExXHhmNVx4YTlceDRiXHgxNVx4ZjdceDQxXHhkYlx4MzFceDBjIgo+ICAg ICAgICAgICAgICAgICAiXHg5Mlx4N2JceDJlXHg5MFx4NjBceDdhXHgyYVx4ZjhceGM0XHhiNVx4 N2RceDZiXHg2OVx4MzdceGQ1XHhhMVx4ZWJceDE0Igo+ICAgICAgICAgICAgICAgICAiXHg1OFx4 OWRceDFlXHgzNlx4MTZceDQyXHg0NVx4OGNceGMyXHhmYlx4ZDJceDk2XHhhY1x4MDNceDFkXHgw OVx4OWRceGY0Igo+ICAgICAgICAgICAgICAgICAiXHg5YVx4NTNceGU4XHhmMFx4ZDRceDUwXHg2 Ylx4MmRceGNiXHhiMlx4MGZceDU0XHg1Nlx4MGJceDY5XHg1YVx4NGVceDBhIgo+ICAgICAgICAg ICAgICAgICAiXHg0YVx4NWFceDEzXHgyM1x4MTlceDg1XHhkNVx4M2JceGIzXHg1M1x4MzFceDI2 XHhhZFx4ZDJceDgxXHhmZFx4MzhceGNkIgo+ICAgICAgICAgICAgICAgICAiXHhkZlx4N2VceGY0 XHgzN1x4MjBceDFlXHg4YVx4ZWFceDFhXHhiNlx4M2FceGQ2XHg3M1x4Y2RceGNjXHg2Y1x4NjBc eDQxIgo+ICAgICAgICAgICAgICAgICAiXHgxNFx4YWVceGM3XHg3MVx4ODhceDFiXHg0Zlx4Yjdc eGFhXHg3Y1x4Y2JceGQzXHg5N1x4ZTdceDAzXHhmMVx4MDhceDk1Igo+ICAgICAgICAgICAgICAg ICAiXHg2MVx4OWVceDE1XHhjN1x4MTZceDg0XHhiYlx4YmZceGEyXHhiMlx4YzZceDBhXHg3OVx4 MGRceGUwXHhlNVx4MDVceDk1Igo+ICAgICAgICAgICAgICAgICAiXHgzOFx4YjVceDFkXHgzNFx4 N2FceDY4XHhhZFx4MDVceDc0XHg3Mlx4YTlceGYxXHhlYVx4ZjBceDU0XHhkZlx4NzdceDkxIgo+ ICAgICAgICAgICAgICAgICAiXHhiNVx4OGZceDYzXHg4Y1x4MDVceDk1XHg1NVx4YmJceGI5XHg3 MFx4ZWRceGY4XHg3N1x4ZDVceGY2XHgyM1x4ZTJceDU0Igo+ICAgICAgICAgICAgICAgICAiXHgx ZFx4YmFceDI3XHhkZlx4OGRceDcxXHgzZlx4ZTdceGM1XHg1Zlx4NDBceGZiXHhmM1x4ZGJceGRj XHgzZFx4MDRceDJlIgo+ICAgICAgICAgICAgICAgICAiXHg5Mlx4YjhceDNmXHg5NFx4ZGRceDY2 XHhkMVx4Y2RceDJiXHhjNVx4Y2NceDk4XHhhNlx4YTVceDAyXHhiNVx4ZDhceGQ4Igo+ICAgICAg ICAgICAgICAgICAiXHhlZVx4NmVceGZlXHhjYVx4Y2ZceGI3XHg2Mlx4NDZceDRjXHg2Zlx4OGNc eGVhXHg4Ylx4ZGFceGQxXHg0YVx4MjlceDE5Igo+ICAgICAgICAgICAgICAgICAiXHg5OVx4Mjhc eGUwXHhjYlx4MDdceGZiXHhjM1x4MDZceGI5XHhlZVx4Y2NceGM0XHhjN1x4YTNceDI2XHgxOFx4 NTJceDU0Igo+ICAgICAgICAgICAgICAgICAiXHg0MVx4NDhceDkyXHhiNlx4MTRceGRkXHhjY1x4 MjBceGU5XHhiNVx4ZDJceDU4XHhlNlx4NjJceDcxXHg0M1x4MGNceDA3Igo+ICAgICAgICAgICAg ICAgICAiXHgwNVx4YzVceGE2XHgyMlx4ZmFceDU2XHg0Nlx4ZGFceDQ4XHg5N1x4YTBceDg4XHhm Nlx4OGZceGRlXHhiNlx4NjhceDQyIgo+ICAgICAgICAgICAgICAgICAiXHhhZFx4M2RceDcyXHhm Mlx4MzJceGY0XHg4N1x4YjNceGRiXHgzYlx4ODNceGQ4XHgyNlx4MjJceGM5XHgxZFx4YWZceDc3 Igo+ICAgICAgICAgICAgICAgICAiXHg5Nlx4MzRceGZhXHgxYlx4OTdceGM3XHhkNVx4YWRceGI1 XHhkNVx4M2JceGU1XHgxOVx4OGJceGM1XHg5YVx4ZWZceDFhIgo+ICAgICAgICAgICAgICAgICAi XHhhYlx4NjBceGMzXHg3OVx4NTJceDk2XHhhOFx4NGFceGMzXHhmN1x4NzNceDk5XHhmZVx4ZWRc eDViXHg4Nlx4ZjRceDRiIgo+ICAgICAgICAgICAgICAgICAiXHgzYVx4MWNceGEzXHg1ZVx4ZTRc eDY4XHg5MVx4ZWVceDkwXHgzYVx4OTBceDM0XHgwOFx4ODNceGNlXHhjNFx4MWRceDU3Igo+ICAg ICAgICAgICAgICAgICAiXHg3YVx4ODhceDgwXHg5NFx4NWJceDUwXHg0Y1x4N2VceGE1XHhiZFx4 YzlceDRkXHg2Nlx4YmZceDI1XHhiNFx4ZDJceGUwIgo+ICAgICAgICAgICAgICAgICAiXHg2NFx4 YmRceDY5XHhkZlx4Y2VceDRmXHgwMFx4ZjhceGRmXHhhZFx4ZTBceDczXHg5Zlx4YWJceDUyXHg3 NVx4ZGJceDExIgo+ICAgICAgICAgICAgICAgICAiXHhlOVx4OTlceGIyXHg1Nlx4MjJceGMyXHgw Y1x4YTBceGE5XHhmMVx4MGZceDI3XHhjOFx4MDBceGE0XHhmNVx4ZDFceDlhIgo+ICAgICAgICAg ICAgICAgICAiXHhhOVx4MmRceDA0XHhjZFx4MjhceDJmXHg5Nlx4ZTlceDkwXHgzMFx4MThceDc0 XHhjNVx4ZGRceGNmXHhiMVx4MzJceDIzIgo+ICAgICAgICAgICAgICAgICAiXHhjNFx4ZjVceGZk XHgzN1x4YzRceDQ5XHhhZFx4ZGVceDUzXHgyYVx4MTZceGFlXHhlNlx4NjRceDA3XHhiZlx4ZWVc eGVlIgo+ICAgICAgICAgICAgICAgICAiXHhiZFx4YTRceGY1XHgxM1x4ZjJceDI0XHhlNFx4MzRc eGE5XHhjMFx4OGFceDIyXHg4MVx4ZDVceGUxXHhmNFx4NTlceDFjIgo+ICAgICAgICAgICAgICAg ICAiXHg5YVx4NDNceDNhXHhiMVx4NTdceDZjXHgxMVx4ZWRceGQwXHhkZlx4OWZceGI2XHhmNFx4 N2JceDc2XHgxZlx4YzhceDc4Igo+ICAgICAgICAgICAgICAgICAiXHhkNVx4MzJceGQ3XHhmY1x4 MmFceDc2XHgyNFx4NjFceGZkXHgxNFx4NzNceGViXHg3Y1x4N2NceDg4XHg2Nlx4OGJceDc0Igo+ ICAgICAgICAgICAgICAgICAiXHg5Ylx4OWJceGJmXHg0M1x4YzlceDM3XHhmYVx4MmJceGQ3XHgz YVx4ZTlceDE3XHhlYVx4MmFceDkwXHgzYlx4ZjVceGY3Igo+ICAgICAgICAgICAgICAgICAiXHhk N1x4MWFceGUxXHhjN1x4ZDdceDFjXHg2MFx4ZGVceGYxXHhiYlx4YzRceGU4XHgxNVx4MWJceGVl XHg1Zlx4NGFceDM5Igo+ICAgICAgICAgICAgICAgICAiXHg2M1x4MjVceDkwXHg3Zlx4NGZceDJi XHhjYlx4ZTlceDgwXHgzOFx4ZTRceDZiXHhjOVx4ZmJceDMwXHhkMVx4OTlceGYwIgo+ICAgICAg ICAgICAgICAgICAiXHgyNVx4ZWFceGJlXHhiMFx4MzdceGNlXHhhZVx4YzNceGVlXHgxOFx4N2Zc eDczXHhhMVx4MzZceGI4XHg1Nlx4NmFceDk0Igo+ICAgICAgICAgICAgICAgICAiXHgzZFx4NWJc eDMyXHg3MVx4MTlceDllXHg2ZFx4MTlceGI3XHgwNlx4NmRceDkwXHhiMVx4MGRceDBjXHgxMVx4 ZTdceGNiIgo+ICAgICAgICAgICAgICAgICAiXHgwY1x4MGJceDVmXHg3M1x4MTJceDdjXHhkNlx4 ODVceGE3XHg2M1x4OGJceDk5XHhhMVx4YzlceGFlXHhhNFx4ZmJceGYzIgo+ICAgICAgICAgICAg ICAgICAiXHhmYVx4YzZceDdhXHg0Ylx4MTFceDRjXHhhOVx4ZmFceDYwXHhkMlx4YzlceGMyXHg0 N1x4MjNceGIwXHgzN1x4MTRceDJlIgo+ICAgICAgICAgICAgICAgICAiXHgzZVx4NDdceDUwXHgz Zlx4M2RceGZkXHhmZlx4YzRceDg3XHgyMVx4MjBceDkwXHhkMlx4MjFceGViXHg4NVx4ZjVceDNj Igo+ICAgICAgICAgICAgICAgICAiXHhmNlx4MTdceDZjXHgyNlx4YjlceDNjXHg3NVx4N2JceDUy XHgxZFx4MDFceDdjXHhhMVx4N2FceGM3XHg4OFx4OWNceDI2Igo+ICAgICAgICAgICAgICAgICAi XHhjNlx4NDdceDNmXHhiNFx4NGNceGMyXHhhYlx4NzlceGNkXHg3Nlx4ZmJceGY4XHhmY1x4NWFc eDgxXHhkY1x4MjRceGJkIgo+ICAgICAgICAgICAgICAgICAiXHg3Ylx4YTZceGQ1XHg1ZFx4ODBc eDM2XHhmNFx4ZDZceDAyXHgxOFx4ZTdceGM4XHhmZFx4ZjdceGYzXHhiOVx4MTVceGVmIgo+ICAg ICAgICAgICAgICAgICAiXHhkMFx4YmRceDBlXHhkZlx4YWNceDM4XHgwZVx4MzdceDE3XHg3OVx4 NGFceGI0XHg2Ylx4MmFceDVkXHhhZVx4ZDVceDhmIgo+ICAgICAgICAgICAgICAgICAiXHhkYlx4 M2VceGE2XHg2N1x4MjBceGMwXHhlN1x4OGFceDBjXHhlOFx4MjVceGIxXHg1NVx4ZWJceGMwXHg5 N1x4OWNceGY3Igo+ICAgICAgICAgICAgICAgICAiXHg3OVx4MTVceGRiXHgzZFx4ZjZceDAwXHhi Ylx4ZDFceDc5XHhmMVx4ZDJceGQ2XHg3NFx4ZDdceDZiXHgxMlx4YWZceGYwIgo+ICAgICAgICAg ICAgICAgICAiXHg4N1x4NzVceDdkXHg0YVx4YTRceDgwXHhlZVx4MTVceDY2XHg3OFx4NDBceDc0 XHhhNVx4MjhceDdiXHhlMFx4MDhceDhlIgo+ICAgICAgICAgICAgICAgICAiXHhmYlx4ZTFceDJm XHg1NVx4MGJceGFkXHgzYlx4NDFceDBjXHhmMFx4NGZceGJhXHg4Zlx4MDZceGQxXHgxMlx4MGFc eDFkIgo+ICAgICAgICAgICAgICAgICAiXHhhZFx4MzVceGRlXHg5Y1x4N2FceDIyXHhjM1x4Y2Fc eGY4XHgzY1x4MWJceGY2XHhlYVx4NTdceGEwXHg1NVx4YWZceGNiIgo+ICAgICAgICAgICAgICAg ICAiXHhjNlx4MWJceDA2XHg4Zlx4ZWJceDVkXHgxN1x4ZjVceGQwXHhjZFx4OWVceDU5XHgxMVx4 ZDJceGQ5XHhjOFx4YzZceGZmIgo+ICAgICAgICAgICAgICAgICAiXHg4OVx4ZmNceDM3XHg3Mlx4 NWFceDRiXHg5YVx4YzNceGE4XHg4MFx4MGRceDE3XHgzMVx4MTlceDljXHg4Mlx4MDFceGMwIgo+ ICAgICAgICAgICAgICAgICAiXHg1Mlx4MmVceDlhXHhmN1x4NDlceGZlXHgzNlx4ZTFceDQxXHg5 NFx4MzFceDBhXHg1YVx4YWZceGQ5XHg0NFx4YzNceDIxIgo+ICAgICAgICAgICAgICAgICAiXHhl Zlx4YjRceGVjXHhmNVx4YzFceDMxXHhjY1x4ZjlceGRlXHg0OFx4YzhceGIzXHg2YVx4OTBceDVm XHg0N1x4ZWJceGE4Igo+ICAgICAgICAgICAgICAgICAiXHhmYlx4NDJceGNlXHg0M1x4NWRceDFi XHhkNFx4MDhceGRjXHg4N1x4YjFceGM5XHgxNVx4NzdceGZmXHhiYVx4MTZceGUzIgo+ICAgICAg ICAgICAgICAgICAiXHgyYlx4OWJceGUyXHgxOVx4ODJceGQzXHgxN1x4NjNceDIwXHhjOFx4ZTJc eDM3XHg5OVx4YjZceGM1XHhjY1x4M2RceDgzIgo+ICAgICAgICAgICAgICAgICAiXHg0Y1x4Y2Jc eGU5XHhhY1x4ZWRceGE3XHgwYlx4ZDJceGM3XHgzYVx4MTVceDQxXHgzN1x4YWNceGRkXHg2NVx4 ZjRceDE5Igo+ICAgICAgICAgICAgICAgICAiXHgxZVx4NDRceDcwXHg4OVx4M2VceGIyXHg0ZVx4 NGFceGIwXHgwN1x4MDBceGMyXHhjMVx4MzVceDE0XHg5Zlx4YjhceDY2Igo+ICAgICAgICAgICAg ICAgICAiXHg0NFx4YjVceGFjXHgwYlx4ZTFceDY2XHg5Mlx4ODhceGI5XHhjMlx4OWFceDFmXHg2 Zlx4NjFceDUxXHg3ZFx4OGJceDRmIgo+ICAgICAgICAgICAgICAgICAiXHgwOVx4NjFceDZlXHg3 Nlx4N2JceGQ3XHgyZFx4MTNceGY4XHgzMyIsCj4gICAgICAgICAgICAgICAgIDQwOTYpKTsKPiAg ICAgICAgIHN5c2NhbGwoX19OUl9sc2V0eGF0dHIsIC8qcGF0aD0qLzB4MjAwMDAxYzB1bCwgLypu YW1lPSovMHgyMDAwMDJjMHVsLAo+ICAgICAgICAgICAgICAgICAgICAgICAgIC8qdmFsPSovMHgy MDAwMjA0MHVsLCAvKnNpemU9Ki8weDEwMDl1bCwgLypmbGFncz0qLzN1bCk7Cj4gICAgIH0KPiAg ICAgaW50IG1haW4odm9pZCkgewo+ICAgICAgICAgc3lzY2FsbChfX05SX21tYXAsIC8qYWRkcj0q LzB4MWZmZmYwMDB1bCwgLypsZW49Ki8weDEwMDB1bCwgLypwcm90PSovMHVsLAo+ICAgICAgICAg ICAgICAgICAgICAgICAgIC8qZmxhZ3M9Ki8weDMydWwsIC8qZmQ9Ki8tMSwgLypvZmZzZXQ9Ki8w dWwpOwo+ICAgICAgICAgc3lzY2FsbChfX05SX21tYXAsIC8qYWRkcj0qLzB4MjAwMDAwMDB1bCwg LypsZW49Ki8weDEwMDAwMDB1bCwgLypwcm90PSovN3VsLAo+ICAgICAgICAgICAgICAgICAgICAg ICAgIC8qZmxhZ3M9Ki8weDMydWwsIC8qZmQ9Ki8tMSwgLypvZmZzZXQ9Ki8wdWwpOwo+ICAgICAg ICAgc3lzY2FsbChfX05SX21tYXAsIC8qYWRkcj0qLzB4MjEwMDAwMDB1bCwgLypsZW49Ki8weDEw MDB1bCwgLypwcm90PSovMHVsLAo+ICAgICAgICAgICAgICAgICAgICAgICAgIC8qZmxhZ3M9Ki8w eDMydWwsIC8qZmQ9Ki8tMSwgLypvZmZzZXQ9Ki8wdWwpOwo+ICAgICAgICAgaW5zdGFsbF9zZWd2 X2hhbmRsZXIoKTsKPiAgICAgICAgIGZvciAocHJvY2lkID0gMDsgcHJvY2lkIDwgNDsgcHJvY2lk KyspIHsKPiAgICAgICAgICAgICBpZiAoZm9yaygpID09IDApIHsKPiAgICAgICAgICAgICAgICAg bG9vcCgpOwo+ICAgICAgICAgICAgIH0KPiAgICAgICAgIH0KPiAgICAgICAgIHNsZWVwKDEwMDAw MDApOwo+ICAgICAgICAgcmV0dXJuIDA7Cj4gICAgIH0KPgo+Cj4gPSogcmVwcm8udHh0ID0qCj4g c3l6X21vdW50X2ltYWdlJHZmYXQoJigweDdmMDAwMDAwMDA0MCksICYoMHg3ZjAwMDAwMDAyMDAp PScuL2ZpbGUwXHgwMCcsIDB4MjIwZTAwMiwgMHgwLCAweDEsIDB4MCwgJigweDdmMDAwMDAwMDEw MCkpCj4gbW91bnQoJigweDdmMDAwMDAwMDA0MCk9QU5ZPVtAQU5ZQkxPQj0nbXRkJywgQEFOWVJF U0hFWD0weDBdLCAmKDB4N2YwMDAwMDAwMGMwKT0nLi9maWxlMFx4MDAnLCAmKDB4N2YwMDAwMDAx MjAwKT0namZmczJceDAwJywgMHgwLCAweDApCj4gbHNldHhhdHRyJHNlY3VyaXR5X2V2bSgmKDB4 N2YwMDAwMDAwMWMwKT0nLi9maWxlMFx4MDAnLCAmKDB4N2YwMDAwMDAwMmMwKSwgJigweDdmMDAw MDAwMjA0MCk9QHYyPXsweDMsIDB4MiwgMHhiLCAweDQsIDB4MTAwMCwgIjc4OGQ5Y2IyOTlhYmQ3 MmVjZTkxM2Q1MzM2NWUxNjY4OGU1MWFjZTE1OTg0YWI1M2QxNjY2YWUzZjVkZmJjODYwYmVmODcz ODllMjEyODZiZTIzNmRkYzNkMGZhMmU1MWQ1YzVjN2IzNWM1ZDUwM2M1YjJjM2I2YmUwZmM1NmU5 N2RmODhmYWEwNjM1MzYzYmE5MmI4MmM0N2E4MTdhYzk3ZjFkNjM4YTE0NjE4MjEyNTVlYzIzYmQw Y2U1YmYxMDk0ZTNhODk4MGQ3ZTZkMTk3NmJhNzc4NzQ1OTIwZTE3MThmZGRhYzRiZDY2YjBhNjA2 ODAxYWFlZmRlZDI5M2MzZmNlYmFkM2IyYzA2NDAzZGJhOTk5NDk3MTY1OWI3ZjRhMDc3YWRkYWVi OGFlM2U1YWNhNzAyN2ZkZTFlNDAwMDFjMGJkZDgwMGJjYzI4N2UwMmM4NjdlMjc4MmRlYWY2NzZh MjYxNjQ3ZGI4YzJmMzk0NTAyMjA1N2RlNzY4MTAwYThiZjczZDlmOWZmMjkyMjliNDZkZWFkNThi MmRkZjk2NDMzNDY4ZTllZWU4OTUwZGY2NTg3MTFlNDExMzY0ZTQ0MTQ1ZTY4MmYzYzA1M2M2ZjVh MTg2MWVlZTZlZGY4ODVhOTdjNTQ1ODA1YWMwYzM1YTVlNDYyM2IyMDAxODYxYzU5MzM1NGI1NzBm ZjNiNGE0NWYxYWNkZTBhOGRiZDE3YzA5Y2U0NDhlZDVkZmQ5ZTc0NzJlNjg5NjdkZWNiNzY5ZmE2 MDBjZDMwYmViNmM4MDMwZTk0NzRjN2VjNGMxZGFmM2UwMDdiYmM1NzY1YjM2NmQ0YTE3NmUzOGJk ZmFiZWRkMmIwNzZhNWVkN2Q1MGY1MTc3Yjk0YTZhMGYwMDBjZDNhY2FkZGU4ZTgwZjY2ZWFkYTE0 MDE4NjIwYjE1OWU5ZTE0YzI1MmQyMGM4ZGJiMGZlMzYwNWI1Njk4YjUzZTQyMTBiNjJmY2JkMDAw MTdlYWEwMWViMWZhNTIxYmRiOGQzMGU4Mzk1MWI0ZWEwMjg2YzhmMGQ0NjQ1MTdhMTFkNzkyMmQ2 Y2NlNGQyMDU4ZWM4Y2Q3YjAyYjczZDgyNWQ3ZTBhYmJiZDg1ZTk5MTIyMGZjNzk5NTUzNGI3YjE5 OThjYTc1Mjg5MGIwNzlhN2NhM2ZkZTU2NDM4Y2Y4MmQ1ZGQ5ZWRiZDExZmQyOTNjMTdkMWNmMTY2 NTdkMGIzNTJhOGM2YzM2MzAwYWQwOWE3OGUzZWUzOTEzYjliNmY1M2RlYmZmYzdlMzJiZmI2NGIw ZThjYmUwN2ZlOWIwZGFkYjA5N2FlYjJjMjQyNDMwYmVjNzU2MzBhMzkyMTgyOGE3MzE0ZGUxNDA0 ODI5ZTdhZmIzYjg0MjBlODVmMmM4ZjZlODhkZTA0MjMxNDQxNmU1YzAwYzU5YjIyMjA4MDA0YmVj MTYxZjg0NTdjN2Y4ZTNhOGNhNDE3NGE0Yjc4ZGY2ZTQ2MGQ1NmQyNGUwMWFlMWEyNDExMjcwZjc5 ZDAyMGE2YmFjODU1ZjFhM2VmN2IzZDA5OTE4ODI2NTZiNDA4ZGNkYWYwMmRiNDZhYzhmY2FiMGM4 NzVkMWYyZThkYjM2NmU2YTIwY2I2N2E0ZGI5MjAzODJhNjkxNTcxNWQzYjQyNjZmNzc5ZmU4NjMz YmVhNmRlZjI4Y2MxNTkxMzhiODM0MzM0Y2VkZWYzZGVjNTRlYTUzMDNkZjU2YmU4NzExNTMxNWVj MGYxNDc4YTBjMDg2OWU1ZjdjMzNkYTY0YjIzYWY1ODExNzUxMDU1YzkwODQ5NDg0NDgxZDVhMTBk NzJlMDhjY2QxMjcxMGM0ZjJmZjU4NmE5ZWExNzVmNGFhNzBiMTU2YzAwYzU3ZTIyYzEzNjBiZmM3 ZDM2YWE0NzkyNDQ0ZjgxZDhhMGVkNDFiZjZhNDUyZWE1MjY4Yjg2MDU2ODJhYzYzZWFhNDY1MjE4 ZjRkOTYyZGI0MjE1NGQwMTk2NmQzYWQ4ZmMyZmRlNDhlZjcxYmUwOGJlNThlNWFkNmQ1YTM1OTNl ZmM5YzEzMzZlNTQxMzcyYTM0Nzk5ZDI0ZWEwMGQ0ZDQ5ODViZWQxZGFiMTA2MjA5MTFlOWY2OTY3 ODgwODI2YmU1YTFmMWJiNGIyYTM5NDg2NTRjNjkzNWNhZmViNDkyNWUxMDdhMDFmOWRkYTY2OGU1 ZmQ3NDg5ZTgyMTM5MjQxYTkxOTBmMDkwYWZlMjA5NDIzNGM3NWZlYzA3NDYyMjc0OGQ0ZGQ3ODJh OTMwZjQyYjBlNzVkOTI0YmVmNjhmZmFmYmFhOTg5MTYxNTFhMzZlZjI5OThhZmQzMDAwOTU1ZWZi ZmEwYTlhMDA4MzU4YzExMDQzYzBmOTZiNTJmYzc4YTQyNTMxYWE1ZGZkOGRlMDk1MThjZmYwMDhi MzM5MjU5YjI2NmM0ODhiYjFkYTA1OGJhMjE4Y2Q2NGIzZTQxM2NhMjg4OWQxMDg2ZThjNDBhZTEx NTAxOTg0MTIxZGNmYTJmZGUwOWQwNjhmNmRiYmU4MzU5OTgwZGFkOTZlZDIyMGI4NTM0YWFlZjM1 M2RmYzgxNTYwOTA3ZDI2YzAyNDQyOTI0YWQ1NWIxMWQzYWVlN2U1NTE2ZDk2YWQwNzhjODVhZDFj ZGIxOGE0NTQ3NDMwNWE4ZGIzNTBmOTg0NDM4MGUyMDk0ZjY5MWEwNWVhMDk0NThiYzUzZjMyMzZh MWYzZmE1ZTE0NGE1NzViYTU3ZTU4ZDAwZjc2NTNkMmU2YjZjYmUxOGQyOGNlM2Y1NzkyNTM4YWQy MGMwZTBlMTBiMDNkYWMzNDAwOWQ2ZDNlNGM3NjYyY2NhODhiNTMwNjZlOTVlZmU0NWVlM2UwNGRh MzI4NjkwZGFlMWFhMDA3MGYwOTQ1ZTI2OWI3NTczM2IxMDZmZjY1MTQ1NTVkNTRkOTU4ZjczMTM0 NDFmYTIxZjk3NjE1MzEyYzRmNjAwYTE0MzBmNjI5ODEyZjIzY2QyMWU3MDNiOTY2ZTA0YWE2ZDBi YmE2ZjI1MzkzNjlhM2JhZGViZmFhODE5N2Q4OWUzMjk0YjQ0YzBlYTU0YWU2YjdmNGE0OTY1Njgw NDMxNzVhNTY2NjU0MWI1NTlhOWZlYWYwYzU0NTRmMTJmMjMwZTk3YmNmODRkYWUxMWQxYTgzNTk0 MTFiOThiYjYwNjNlZThhZTBmZmEzMGI1NzU3NzcxYzdiNzBlNGZiYjZlOTUxYTY4MDg3M2U2ZGE1 MzE2MDBlOTUxMTEwYzM0Y2FhY2M4ZTk3OGMwNmI0ODQ4Yzg4MGM0OGFkOGU2YzU0YmM3OTJjZTU0 ZWE0YjFjMDVhYjA0YWZiNGQ2Y2FiMjViODVkMWM0YjZjNDc0YzdlYzkyNjdiNTAxZWRhYTIwZWUw ZTQxNTg2OGQ4Nzg2NjQyNmIxMzc0ZTU4YTY2NjUzMGI5NGUzNDJjOGIyZWJkZDQwNWZlZjBhMjZk ZjgyYmJjNTAyZGEyY2ExNTUwYzI4ZDNjMGI2OTg3MmZmODYxY2QyM2NiNmUxZmYxZTYyZjYyNWFl OTJmOTBmMzA5MzNmYzgyN2VkZDM4NjEyMTMxNTM1MmRiYzlmNGNhYjNkZGRhZGViOGRmMDUxZDJm NTljZDU5ZTk3ZGM5MmNlNDM0MWY5NzgwMDNlNDg2ODVlNzY3M2NmMWU2MDI2MDYwMGU3Y2JmNzMx ZGMxNjhiOWE0MTFkYzNjODVmODQzYmQyYzVmY2E4OWMwNmQxMmJhYzA4YTYxY2YwOTlhZTVmMjNl NWU5MDg0NDhlODFmMjc3OWIzODViMzFkY2Q1Y2Y4YWFhZDRiODVhZTcwNjM2MjRhN2RmNTczYWVj Y2M4YjYxOTc3ZjhlYzEwZTY4YjVkZjFjMWI4MDVjN2UwMDEyMjhhNjVjMGU3NzJjNTI1MTQ2NmE0 OWYxMDIxOWJiNzE4YTRhYTJlMzVjNDA4MTFhOTcyZWI1ODUzMGY3ZjA3NDFkM2JlMGMwMGUzOGY1 ODk5NGE1MTk5NTQ3ZmM1MTUwYzc4MWZmZTJlNTY1NjBmMDhlYjc1YmZjZDkwODVmZjE0MGNlZWZk MGQ2ZWQ0M2RhZDM5ZDJjZGE4Njk0ZDQyMGU4NjFhMWRlYzRhMjhkMWNmNTMyNGM1YzVhYjgxOTIy MTU0ODczYjNmODJkZjFiYzA2Y2I5NTY1YzA4Zjc3NGQ5ZmE2ZmU1NzVkYWY4N2IzMjhhYjEwYjkx MjI0M2YxMDA3MTJhMjdmNDk4MWZhYTM3MmQ3MzY3MDJjNTY1YTA4YzRkNmIwYWEzMTJkM2M5MDE3 ZmQxZTdhYjk4MWRlN2VlMWRmYzFhODQ5OTI0YWE5MmVhYjFiM2U2ZTk3NDJmNjkxM2EwOGI1Njk5 ZDY3MDY5N2E2MDhkNzQ5ZTA2YzM0MTQyMWE4MDlhMzY1ZGNhM2Y4ZDg4ZDg0MjY4NTA4MGY4ZWQ5 MzQ4Mjg4ODA2NWI1MGJmOWFiZGU3NWZlMzdjOGZmMmFlNGYyNGUyNmY4Mzk0OWFiNWM0ZjRhOTZl MTNiMmNkZjc0MmRhZjljMWI1ODMwNTY5MTQ1NmM2YzE5MGJmYjdiYmJiMDg0ZWE5Zjk3ZTk5YzNl MDI4NDE1ZDRlMDVjY2Y3NzE3YjU3OTdmZjViYWZhMjUxOGEwYWNhYjQzNGExODhkNDc5N2E4NWYz NjU1N2RkNmFhMzljNzVlODBiNzI0OTYzNzI2NTI1NDRiMTQyNDkwMWE2YTlkNGI3NDUzMDg2YjZi YTI2YTQwNTIxZGE5NGFiNTRkZTRhMTFiNTFiNGFkN2FiMWQ2ODA1ZjMyM2IwNDQ5NTVmNzc5Y2Zl N2MxYzM1ODZmNGJlMGVhYjIyNmEyNWFlMTZiZDhkYzdlYjAxNTAyNGI3NDM0YjY0MDgzNDNhMWJl NmUxZGQzOTI1YzEwMmI0YzljNTQzOTgzODM1YjZiYjQ1ZjgwZWEzNWJmN2ZjZWNhYjVkOTQ3MjI0 YmZkYjFjMDNiMjBmYzA3YTVjYWM2MzBiZWI0YjMwNDRlYmU1NWM5MDIzODQ0YzFmZDY0YjRlYjAy NTUzNjg2N2YwYWZhMzg4NTc2YzViMjU2NGNkMmUyMGFlMjYzM2Y3Yjc2Y2Y2ZmJjZWZmMjQwZjY1 ZTVlZWJhMjg0M2ZhYTFlNzcxMDhkMzVjNTliM2Y1NzAxMTI2NjBlOTI3OGRhMzEyNzY4NmRjMmE5 NjVhNmFkMTY3MmUyOWZmOWVkZDYyZjQ5ZTQxYmRkNjUzNDhkMjY1Nzg0NmJlODA0NzljZWE0MTVi ZmI1OTI3MjI5ZjNiNzcyZWQ5YzliNzYzOWQ4Zjc1ZmY2NjIxODQxYTdiNjQ5NzgxMzFlODY5NTJi ZmU1MTA3MTViMjVlZmJjZjM5MzMyMGMxZDYyOTlhYzZjMTlkZDkwODg3MGY5NmQ5MmI4YmRjZjEx ZTNjOTg3OGYyZTM3YmRhZjcyNzE4YWQwYmMyODcyYzdhMGIxMDFmNmUzOTI5OTcyMzRlMDZjOWIx YmRjMzI0OTcxNDI3ZDZiOTdjM2MxNjUzMTE3OGY0MGE4YWI1MmY5OGUwNjY3ODA5NzdhYmQzNTJl MWVmZTYxODVmNzAyMzNiMzBmZGM5NmI2YTI4OWI5ZTBmY2VlNTU1OTIzZWY1OTBiZDljZDJmMGVm NzAyNDY0MTQ1MGQxYTkyNTgwNDZhYzBlODBhY2Q0NGYyNjc0NDY5NDZjMDk2ZGI5ODQ4Zjc4Y2Rk YmE5ZjU0MDliMDkwZGQyMzQ0ZDhkNDVhMTZjZDJlY2NlNWJmMjJiZDRjYjg5YWZkMzA2N2NiMGJk OWE3Mjc5YmUxYjFlNTAzNDk4ZjM5ZWRjZTcxNGYzNzU5N2QwZTY0NjA3MTZkMDllYTM3NmQ3M2U4 YTcxZmZmMTMyNGZhMmFlYmE3NWU4YmJkMGVhNGM0MThiNDU3ODQ1NTAxNTNkNDkyODk4ZTE1ZGE4 OGI2ZWQzZjY3ZTg1ZGJiMTExYzJmZWFjMmZkNzhiNmY5MDExYzY4NjRiOWJiMTE2NTM2OTRmN2Yw MjU2OGI3NjhiNmEyN2QwODBlYWRjMDA5Mzc0NGI5MTE1YWEyZjhkMDNmYTI3ZmFlYTJlMzU2ZWY4 Y2U2MmU0NzIyZGRkMTM5Zjc4NGFjM2I4YWZiOThjOGQzOTg0YzhjZjk0MzhlODM3MTAzMzA0Mjhi NzgzMGMxNzA5YTMwOWJiYWMzYmJkYmQwODNlNTM5OTM4YzU3ODllMTcwOWQyYzBlZTk0ZGNiMmZl NjRjMzFjODdkMjVjYzdmODI2YmJmNWUwMjFkNWFhYTE3Mjk3MGFhZTk2YTY4NThmOGMxMWZkZmI3 NDgzMjhkOTc0MTFlZGMxMGRkMTZmZDEwZmFhN2MzYjk0Y2UxOTE1MmZiMjk2NTY5MDQyMWQzYzZk YjJlN2U4ODg4YzdiYjA2NDQzZGIzMTExZTNkYjY5YTg4ZGQwOTdhYjhjNjRkNmJlYTMwZGEyNDdm Y2QxMTdhMzBlZWY0NWNkOTMzOWE3ODM3NTYyOGNkYmZhMjZkNmIzNDE5ZTY5YmJlOGU4ODQ3OTEy OTY4NGIyMzA0ZGFhMmQ2ODQzMDQ4MjZlZWU5N2QzNDYzMDNjYzYzMWUxMDQ2NWEyZjkyNDNlODRk MzIyODEwMzg4YmEyZDMwNjI2YTYzZGY5NzkzZWI5NjNkZjIzNDg2NWNiYjY4Y2RiYzA0MzYzZTE3 YTZhNmViMWM4MDE0MTc3Yzk5ZmFhY2I4ZDdhOGU5OWQ4OTc3MThiYzUxMDU1NzI3ODIwZDMyMWYy NWZkMTVkMjRkMDI5ZDRmYWQ2ZmRlOTdmMDkxMTgwZWYyYmMzOTEzYmMxMWY4ZjEwNGJjYzdlYTAw MjQxNTc0ODFiMzUzN2NlNTQzZmU4YWI5M2EyNmNiOWJhNTFmYTc4ZDMzN2JmMTBiYTI5ZGM1ZmVi ZmU0YWQwMTRiZDQwZjMzMzMwODIzZDdmNDU3M2JhZWJkOWUwNjNkNTlhODc2NjJiZWY4NTljZWU4 YThlNTMxOGFhZTIyZTc5ZmI0ZDMxZTA4OGYwNTY5YzY3YmJhNDE4NjhmZTQ2NGVkNzdlYzdmZTA3 ZGQzYTVjMmM4MWMxZmRlZDE2MDU5OGIzNzU2NDUxMzE3M2YxM2ZlZWI5ZGY0YjQ3ZWRlODA1MGFh YzQzMWUxYjIwNThjNmFmZTdlNDRiY2M2ZjI4ZGM1ODMzZGRlZDEwZTY5MTdlMTViOTMwODhjZDkw NzkxODI2Y2E3YzNiOWE0MjExZTllMmZmZDQ5NjYyMjM4MTZkYjZlNGVkZTU3MDFiNzY5ODhkOGYz NGFhMTQwZmZiNGJjM2VmZmNjYmU1YWYzOTQyZDRjNTcxNzcwMGU1OTJhMTcwMDFkMjBiNjY1ZmI3 YzZmNjUzNjExMDhhMTM3MGE0NWRiNDc3YTFmNDQ5ZTVjM2Y5YTg5Zjk2NzI5MGFmMjMxZGI4MmZl ZGVjZmNhMmMzY2VkZmZlYWRiNzc1NzI4YjQ1Y2U0YmRlMDYzMGU5ZTFkZmNkOTgxMzhhNTU2ZGQ0 MGI2NTU1ODFiNDUxYTcxNjRhZDU3YzRmYjJiNWRjNWIxNDVlODczM2RlMzNhZjg0NGU0MDA0MTRm ODVjMjhjYTFmODg4ZTcwYzQ1ZDI4YzgyM2UwN2VkZGYzMGRmNzkxMWRmNTg0YWQ0NThhMjUzNTUw ODQxNjNhOWE3Y2MzYmFjNDI3NmU5NTcyMTE2MjZlMjg4MjEyMDA1MzM0ZGVjNzQyY2ZlNTdlNmM4 MjM0ZTUyMGQ4YmVkNDVhZjQ3Njc3MGY0NzE4Zjc5OWMxYTFmNjM3ZmMwNGE3Mzc4MGEzNWQyMTk0 ZTYwMTdlNDA1ZDNlMGIxZTlmMmM3YzBmNmEwZWQyOGEyZWFmZGQ3OTIyNzYyMDU5ZmUwZWJjNzc1 OTkyNDViMTJjOWYwY2VmOWVkYWIxYTI1MTcxYTZhOWEwNTYyZTI0ZGI3NmUyNWRmYjVlY2I3MzUy ZDBiZmM3OGQ4NThlOGFhYWM5MTNlZmE0ZmY2MDQ4OTY3OWU4YzcyMDE5ODk3YThhODVhOWVlMjlm MTA5MjIzMTViYTdkYjBhMTI2ZjgyN2MwM2ZhNWJiYjkwZjk5MWNiOTg2NmIzZTAzMDQ3Y2IxZmFi YmJkYmU1YTM1MjgyZjAzMGMwZGJkYmQyMjdmODViMDU3MjFjNDVjOGIyYjg1ZDMzMTBiYjQxZDZh YTU2MTRhNjBkOTg3NGQxMmYxMWY1YTk0YjE1Zjc0MWRiMzEwYzkyN2IyZTkwNjA3YTJhZjhjNGI1 N2Q2YjY5MzdkNWExZWIxNDU4OWQxZTM2MTY0MjQ1OGNjMmZiZDI5NmFjMDMxZDA5OWRmNDlhNTNl OGYwZDQ1MDZiMmRjYmIyMGY1NDU2MGI2OTVhNGUwYTRhNWExMzIzMTk4NWQ1M2JiMzUzMzEyNmFk ZDI4MWZkMzhjZGRmN2VmNDM3MjAxZThhZWExYWI2M2FkNjczY2RjYzZjNjA0MTE0YWVjNzcxODgx YjRmYjdhYTdjY2JkMzk3ZTcwM2YxMDg5NTYxOWUxNWM3MTY4NGJiYmZhMmIyYzYwYTc5MGRlMGU1 MDU5NTM4YjUxZDM0N2E2OGFkMDU3NDcyYTlmMWVhZjA1NGRmNzc5MWI1OGY2MzhjMDU5NTU1YmJi OTcwZWRmODc3ZDVmNjIzZTI1NDFkYmEyN2RmOGQ3MTNmZTdjNTVmNDBmYmYzZGJkYzNkMDQyZTky YjgzZjk0ZGQ2NmQxY2QyYmM1Y2M5OGE2YTUwMmI1ZDhkOGVlNmVmZWNhY2ZiNzYyNDY0YzZmOGNl YThiZGFkMTRhMjkxOTk5MjhlMGNiMDdmYmMzMDZiOWVlY2NjNGM3YTMyNjE4NTI1NDQxNDg5MmI2 MTRkZGNjMjBlOWI1ZDI1OGU2NjI3MTQzMGMwNzA1YzVhNjIyZmE1NjQ2ZGE0ODk3YTA4OGY2OGZk ZWI2Njg0MmFkM2Q3MmYyMzJmNDg3YjNkYjNiODNkODI2MjJjOTFkYWY3Nzk2MzRmYTFiOTdjN2Q1 YWRiNWQ1M2JlNTE5OGJjNTlhZWYxYWFiNjBjMzc5NTI5NmE4NGFjM2Y3NzM5OWZlZWQ1Yjg2ZjQ0 YjNhMWNhMzVlZTQ2ODkxZWU5MDNhOTAzNDA4ODNjZWM0MWQ1NzdhODg4MDk0NWI1MDRjN2VhNWJk Yzk0ZDY2YmYyNWI0ZDJlMDY0YmQ2OWRmY2U0ZjAwZjhkZmFkZTA3MzlmYWI1Mjc1ZGIxMWU5OTli MjU2MjJjMjBjYTBhOWYxMGYyN2M4MDBhNGY1ZDE5YWE5MmQwNGNkMjgyZjk2ZTk5MDMwMTg3NGM1 ZGRjZmIxMzIyM2M0ZjVmZDM3YzQ0OWFkZGU1MzJhMTZhZWU2NjQwN2JmZWVlZWJkYTRmNTEzZjIy NGU0MzRhOWMwOGEyMjgxZDVlMWY0NTkxYzlhNDMzYWIxNTc2YzExZWRkMGRmOWZiNmY0N2I3NjFm Yzg3OGQ1MzJkN2ZjMmE3NjI0NjFmZDE0NzNlYjdjN2M4ODY2OGI3NDliOWJiZjQzYzkzN2ZhMmJk NzNhZTkxN2VhMmE5MDNiZjVmN2Q3MWFlMWM3ZDcxYzYwZGVmMWJiYzRlODE1MWJlZTVmNGEzOTYz MjU5MDdmNGYyYmNiZTk4MDM4ZTQ2YmM5ZmIzMGQxOTlmMDI1ZWFiZWIwMzdjZWFlYzNlZTE4N2Y3 M2ExMzZiODU2NmE5NDNkNWIzMjcxMTk5ZTZkMTliNzA2NmQ5MGIxMGQwYzExZTdjYjBjMGI1Zjcz MTI3Y2Q2ODVhNzYzOGI5OWExYzlhZWE0ZmJmM2ZhYzY3YTRiMTE0Y2E5ZmE2MGQyYzljMjQ3MjNi MDM3MTQyZTNlNDc1MDNmM2RmZGZmYzQ4NzIxMjA5MGQyMjFlYjg1ZjUzY2Y2MTc2YzI2YjkzYzc1 N2I1MjFkMDE3Y2ExN2FjNzg4OWMyNmM2NDczZmI0NGNjMmFiNzljZDc2ZmJmOGZjNWE4MWRjMjRi ZDdiYTZkNTVkODAzNmY0ZDYwMjE4ZTdjOGZkZjdmM2I5MTVlZmQwYmQwZWRmYWMzODBlMzcxNzc5 NGFiNDZiMmE1ZGFlZDU4ZmRiM2VhNjY3MjBjMGU3OGEwY2U4MjViMTU1ZWJjMDk3OWNmNzc5MTVk YjNkZjYwMGJiZDE3OWYxZDJkNjc0ZDc2YjEyYWZmMDg3NzU3ZDRhYTQ4MGVlMTU2Njc4NDA3NGE1 Mjg3YmUwMDg4ZWZiZTEyZjU1MGJhZDNiNDEwY2YwNGZiYThmMDZkMTEyMGExZGFkMzVkZTljN2Ey MmMzY2FmODNjMWJmNmVhNTdhMDU1YWZjYmM2MWIwNjhmZWI1ZDE3ZjVkMGNkOWU1OTExZDJkOWM4 YzZmZjg5ZmMzNzcyNWE0YjlhYzNhODgwMGQxNzMxMTk5YzgyMDFjMDUyMmU5YWY3NDlmZTM2ZTE0 MTk0MzEwYTVhYWZkOTQ0YzMyMWVmYjRlY2Y1YzEzMWNjZjlkZTQ4YzhiMzZhOTA1ZjQ3ZWJhOGZi NDJjZTQzNWQxYmQ0MDhkYzg3YjFjOTE1NzdmZmJhMTZlMzJiOWJlMjE5ODJkMzE3NjMyMGM4ZTIz Nzk5YjZjNWNjM2Q4MzRjY2JlOWFjZWRhNzBiZDJjNzNhMTU0MTM3YWNkZDY1ZjQxOTFlNDQ3MDg5 M2ViMjRlNGFiMDA3MDBjMmMxMzUxNDlmYjg2NjQ0YjVhYzBiZTE2NjkyODhiOWMyOWExZjZmNjE1 MTdkOGI0ZjA5NjE2ZTc2N2JkNzJkMTNmODMzIn0sIDB4MTAwOSwgMHgzKQo+Cj4gYW5kIHNlZSBh bHNvIGluIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3hyaXZlbmRlbGw3L2ZkYzdmYTNhN2I1NWE5 MTc0NjY2OTQ0YzA3NzMyZWVjCj4KPiBJIGhvcGUgaXQgaGVscHMuCj4gQmVzdCByZWdhcmRzCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGlu dXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo=