Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w0VEf-001xe3-1A for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Mar 2026 01:53:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w0VEc-00CszN-1w for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Mar 2026 01:53:11 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w0VEb-00Csz8-1r for pgsql-hackers@lists.postgresql.org; Thu, 12 Mar 2026 01:53:10 +0000 Received: from mail-dy1-x132b.google.com ([2607:f8b0:4864:20::132b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w0VEP-00000001hVq-3Bsi for pgsql-hackers@lists.postgresql.org; Thu, 12 Mar 2026 01:53:08 +0000 Received: by mail-dy1-x132b.google.com with SMTP id 5a478bee46e88-2be054479baso2228eec.2 for ; Wed, 11 Mar 2026 18:52:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773280376; cv=none; d=google.com; s=arc-20240605; b=eJ8fsergAsBGZsQZTDlXN1MJISPfdFo+Ntm5eDtX5THB527AwBfLSmwib8xBqc0wNZ a1EfMm7W0HZA5NJ3ra6SthIJSSiuq7bwkzh3MFiIuEuEW1J9DXfk6GV3tEv5ODTgxLtw knfLkFZ1iRmAvvd7jI3IiXEowysTo8s5MGalmutxtT1VwjIaDScR8XaFj17ShMjNGhC+ f/ejpV3FiK/JytF3IaghYiCRzghkAanpOXaaX3zjCdVOmfa1DXBYLy4Xap99XBbIul1U ie7eLkOLNVSobdv/e7Lr+h8a8ICxbbMLycQxAx3l56a+ZlmJ8DAUOGyRIQhvW9tnOv8n gmsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=GmTGm8oV8gPhHIz/Hqt+tj8YqITETIlBNzWICVUrS6Q=; fh=YhmxPC0NYagsxVMppzYMgO0XMWsRSWzMegLjmIklu8U=; b=cjbwhrXHJcuqSUCCeDRK0Bhp88d35eThCUpibe69ZjdIuxD3DN+f2C9yt1mTkbtqNm Y6mCFteUymSKGm1Lt9yI0NBYLNJwB4OdaJrzDfu/wGNNkbolqYzAD3rIe66YUQlRfF8S UtLoQVGkkq6PXiJmzlPFOjavHxt4O1goJoFS2FtbQSecXL94kQ/T/H/h4FsSw+cAcE1L MzcMVYfDPBhtukPp7ihU+D+ZinkYX8KqcwdcA4fJtPIsM7onIyM7X3ClR62XjVpEzCpX Rex1sw4dWwHtkGieQphvh+wAo1YpguymRL+HS3YuNVEbYC2XvXNkul2HrgEPMtlRBlif 2FSA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773280376; x=1773885176; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=GmTGm8oV8gPhHIz/Hqt+tj8YqITETIlBNzWICVUrS6Q=; b=Od0efcfgbT1EO5/g3WYZwhwisMPIFpk51xDhZRvrWO/IIq61mImGS8BSFnQc2Na5Tc tO1MbLl73xazB7xS4DEm9ScP/pkxmc7nEKZjXEVS0zyj7RtUMbKVP3cE6ohHqlj7kymb HxXx6qAk7/SSFWIdXw8Yxrai6HWGCXaDMW8EhYe+NMzsEtbdIJOjnu2OdYGqVqNn2GJl 3WZusBT8EGviExqAEgcbLFO8ShUOcQXyMALKkuUNlW93NhxYrFd4shjvfAxTurBQ/ofn /WJ2mdXnb0lqrIaIp+J3uU/aFs/MMBesqbGc2SSa8hZNkqLrTataw6ArC9j7lS7SFCZ+ xkKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773280376; x=1773885176; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=GmTGm8oV8gPhHIz/Hqt+tj8YqITETIlBNzWICVUrS6Q=; b=Lk2sMahvTuvQQTJOC5AJZ+QiYDID2ldQvUD3JjCTtBizCv7gmuEPGHiozle+TtcZRB 2GEo5jIv4QIB9zUNwBBrLKViXb3tWJ3PI4lhI7wF/I/iHUhb3gAHtKgc92jxTpZOnsDp Bg8hoo0gfU1RdHVeQaWQsmP3+ZiLrl8nSfQfLrk2nSLOHVKL6ZSVGg7vGjqbO+z8D1/a ASPMLnmqJiEXyQxvAVmdaszwf113no44LXR+aDFN30123hvm5pFovVYCTrQx+Obu6Q+p lhj4yk6ZOyUKP3U1xribLt2J0xyr8tdoegSHR75PTgrN/ug0tLtPVd71xMflCMpquUoS yfJg== X-Gm-Message-State: AOJu0YwMGya/3qmukqFIcZE+lm2KQfOUXRWvPee9EYh1vuuQCPInu+31 udCUqZpFeddbduMIFu2Dm1AeRSkG1KO6nfty9HHbdxU6nHLOGyMCASgHeVIi0kO3jQqtgTYQMb0 1jrtV2oKtzl1VkmDxyMWmj5CNpQ0vf10= X-Gm-Gg: ATEYQzzb9kJ4CTZArQEdGaHewWt1rp//Q+juJesgE+LcaDYcBajxH2z9XsQ/AT9lwCE 4yO1NcRnPmaHBpxj1F/5Z3pLXktd/p3KAXn2Xk85xv4W7yv3ZjmVvvk8tUn1RhzWWk0aNrGD/zo yLZTZT4gDgSv3yojSfUPaGj6RIHtdKZooN+tKRCvgz9vbZJAzxm2na69C7A6rcmPcQtx/p+t8z8 CuAtZQ+ryysSHtkXwqGJMZqeVXzgcQ9s1RsWzQtMyL9DmuezzSfq96NwdqBEsL16H/vKSXljuw/ GmezJzKt3kW5wGlcCEGEyHvtSuAw8zTtytUkDaNf1qpVaS14TzTfyAj55MwYh9Cj X-Received: by 2002:a05:7301:fa0a:b0:2be:1f56:ed32 with SMTP id 5a478bee46e88-2be8a25c059mr1224433eec.1.1773280375576; Wed, 11 Mar 2026 18:52:55 -0700 (PDT) MIME-Version: 1.0 References: <854785.1772206539@sss.pgh.pa.us> In-Reply-To: <854785.1772206539@sss.pgh.pa.us> From: Thomas Munro Date: Thu, 12 Mar 2026 14:52:16 +1300 X-Gm-Features: AaiRm53WfujfKZIRbz1Pgz1DjiaPn1VwHe-vxztDeyrrRfFQ2N1oFkTwbXoqisw Message-ID: Subject: Re: A stack allocation API To: Tom Lane Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000e053ac064cca0224" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e053ac064cca0224 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Feb 28, 2026 at 4:35=E2=80=AFAM Tom Lane wrote: > > I also wondered if we might have a reasonable case for using alloca(), > > where available. It's pretty much the thing we are emulating, but > > keeps the stack nice and compact without big holes to step over for > > the following call to strcoll_l() or whatever it might be. > > +1 for investigating alloca(). The one disadvantage I can see > to making this coding pattern more common is that it'll result in > increased stack usage, which is not great now and will become > considerably less great in our hypothetical multithreaded future. > If we can fix it so the typical stack consumption is a good deal > less than 1KB, that worry would be alleviated. Yeah. I thought about all that quite a bit, and the dangers of longjmp(), and various portability arcana, and came up with a v2. Safety: * DECLARE_STACK_BUFFER() is intended for general use, and gives you only 128 bytes with the array implementation, enough for lots of values/nulls arrays and such, and there is also DECLARE_STACK_BUFFER_LARGE() for the pre-existing locales code that already uses 1024-byte arrays. To be really paranoid, I suppose we could instead always use palloc() if you don't have alloca() support, except when you ask for _LARGE, but I suspect 128 might be OK: it's in the territory of plain-old-stack-frame-with-a-few-variables. But I don't think it matters terribly much either way, as no modern system would really use array mode. * If using using alloca(), as far as I can see we don't have to be so cautious *if* we additionally impose a total stack size limit. Here I chose halfway to check_stack_depth()'s trigger point, but much less than that would also be fine I think. You can see what that compiles to at the end. Thoughts? * I came up with a way to implement static_assert(!pg_in_lexical_scope(PG_{TRY,CATCH,FINALLY})). setlongjmp()ing around inside the same stack frame obviously breaks this stuff fundamentally. I think it might be possible that some very restricted patterns could made to work: if you allocated before (but not inside) PG_TRY, either using volatile variables (or perhaps if PG_TRY contained a compiler barrier?) then it freeing might be OK in PG_CATCH, for example if plpy_exec.c moves its allocations up. I'm not too sure about that, though, and for now all stack buffer operations are banned in all three scopes. Better implementation techniques for the resulting caveman meta-programming exercise are welcome... it took me quite some time to make it out of the valley of shadow warnings. Portability: * There are no general purpose systems left that have stacks that grow upwards AFAICS, right? So I propose that we define PG_STACK_DIRECTION to -1 in pg_config_manual.h, but continue to write code that should work correctly if you set it to +1. That simplifies the macrology and de-branchifies the code. It doesn't make sense to tolerate non-existent computers by running zillions of runtime tests around the world every day. * I guess I should probably actually test it on PA-RISC (the last stack-grows-up system?) under Qemu or something. The way I approached this was to write expressions in terms of PG_STACK_DIRECTION, instead of chunks of #ifdef'd code that would never be seen by a living compiler and thus inevitably bit-rot. We could still assert that reality matches expectations in a few spots, and then worry about configure-time, #ifdef or template file control if a new platform ever appears with an upward stack. * PostgreSQL already wouldn't work with "split stack" code (it would bogusly error out of check_stack_depth() when it meets a far away stack segment), or other exotic systems like spaghetti stacks. I don't think this is much of an additional jump in our assumptions about how C is actually implemented, it's just assuming that there are no systems that grow down one day and up the next. (A number of CPU architectures could technically do that, but their ABI firmly nails down which way it has to be, and the answer is down). * For estimating whether there is enough free space to call alloca(), it prefers to use builtins to read the stack pointer (GCC, Clang 22+), but failing that it wastes a register that initially holds a conservative estimate (address of a local variable, itself, which is surely deeper-or-equal to the real stack pointer), and later holds the result of the last alloca() call, which is 100% accurate on downward-stack systems, and potentially only out by a small amount of alignment fuzz on non-existent upward-stack systems because I assumed that new sp =3D alloca(size) + size. (It would be more accurate if I did TYPALIGN(X, size), but I don't know what its X is, I only know that it's >=3D alignof(max_align_t), so I'd have to go and read the relevant ABI manual for this hypothetical upward-stack system to find out, but since it doesn't exist, all thoughts about a perfect estimation disappear in a puff of logic.) * When judging if a pointer came from the stack, it additionally needs an least-deep bound, but if there is no builtin for the current stack frame address then it uses check_stack_depth.c's stack_base_ptr. Both are reliable, all we need is a pointer to anywhere less deep in the stack than anything we've alloca()'d. The builtin might technically give you something from a function you're inlined into, but that's OK too. In practice probably only MSVC uses stack_base_ptr. * It only uses literal "alloca()" for MSVC, which turns into a builtin and thus has a property that I'm relying on. For Unixen it uses a GCC/Clang builtin directly, because otherwise I'd have to worry about that property too. Builtins are safe in a function call argument because the compiler implements and understands them, but the original alloca() from old Unixen somehow moved the stack pointer without the compiler's knowledge, which used to trash the stack if it had already started pushing other stuff onto the stack for the function call, at least in some circumstances. I assume no such things exist now, but you'd still have to figure out which header to include, and that varies on niche systems (, , ...?). * For builtin detection, I ran into CC vs CXX vs CLANG problems, so I gave up and invented pg_has_builtin(). I don't propose it be used except where needed though since it doesn't exist on GCC < 10 (it's an idea from Clang). This means that old build farm compilers would use the array version, which I think is probably desirable for coverage. Current distros are shipping GCC 11+, probably mostly 14 or so, so I think it's OK to exclude 10 from a minor optimisation project. Potential sites that can use this: I have attached a bunch of easy candidate changes, almost all mechanical changes for small temporary arrays of values/nulls, scankeys, etc or temporary C-strings where no refactoring was needed and the no-escape property was obvious to the eye. In the case of the planner, I worked a bit harder to find a couple of things that have pass-down-but-never-capture semantics, based on hunches... FWIW I do see a small planner speed-up in the join-order-optimisation test David mentioned the other day in simple tests, though I haven't studied it seriously enough to report on yet. I'm actually not too sure yet how to evaluate this stuff at a higher level, ie the effects of tiny micro-optimisations scattered all over the tree, and only in the arbitrary places that didn't need refactoring. So for now I'm reporting only on a toy C-stringification microbenchmark: see end. Ideas for further development: * I wanted this to be useful for SIMD, so I made sure that stack_buffer_alloc_object(T) would handle strict alignment automatically based on alignof(T). palloc_object(T) et al should get the same treatment, as I wrote in another thread about the funky __128 situation (and I have basic patches, for another day). * I see how to implement _realloc(): if ptr =3D=3D sp, then you have the most recent allocation, so if you (somehow) know the original size you can allocate the difference and memmove(). (This condition would never be met for stack-upwards, but that's OK). In all other cases you'd probably fall straight back to palloc() I think. I don't know if there'd be much call for it though. * Presumably this could benefit from a sprinkle of VALGRIND and sanitizer c= lues. * It would be nice to figure out how to make at least one compiler complain about very obvious escapes, as they do if you return a pointer to a normal stack variable, but I guess the main problem isn't the obvious ones. * Many uses of temporary C strings wouldn't be needed if we accepted known-length strings in more APIs; it may be unavoidable for libc functions, but our own reader etc should probably ideally be able to cope... I have a separate project investigating a centralised string iterator so that we can make all of our string processing behave the same way and will think about that... * There are quite a few places that form or copy temporary non-escaping index tuples, tuples, tupledescs, values/nulls extracted from arrays etc that could probably live on the stack quite happily if we split a few functions into "how much do you need?" and "in place" pairs. That's been done in a few ad hoc spots for parallel query eg tuple descriptors. * Independently of this project, but really the same sort of thing, I have long wanted to look into all the places that form a tuple, copy it and then free it (hashing, sorting, materialising) when they should form into caller-supplied destination, be it the stack, a hash table, a tuple queue or whatever else... * Something like "defer" for magic automatic pfree() on scope exit if we can figure out how to do it without waiting for the year 202y + 10, as mentioned in reply to Andres... * Even without that, I suppose GCC cleanup callbacks could still be used to scribble on the memory that goes out of scope. I guess it must be pretty hard to miss bugs anyway since the stack is already scribbled to smithereens. For a very simple micro-benchmark, I tried a trivial C-string conversion wrapper: for (int i =3D 0; i < 10000000; ++i) my_strlen("hello world", 11); Given this definition of a completely useless function that exercises C-string construction: size_t my_strlen(const char *data, size_t size) { char *cstr; size_t result; DECLARE_STACK_BUFFER(); cstr =3D stack_buffer_strdup_with_len(data, size); result =3D strlen(cstr); stack_buffer_free(cstr); return result; } With STACK_BUFFER_USE_PALLOC, which just expands those macros to palloc()/pfree(), it runs in ~216ms here, and with STACK_BUFFER_USE_ALLOCA or STACK_BUFFER_USE_ARRAY it runs in ~155ms, so that's a 1.39x speedup. The generated code looks like: 0x0000000000979323 <+19>: mov 0x442a06(%rip),%rdx # 0xdbbd30 0x000000000097932a <+26>: lea -0x400(%rsp),%rax <-- sp - STACK_BUFFER_DEFAULT 0x0000000000979332 <+34>: cmp %rdx,%rax 0x0000000000979335 <+37>: cmovb %rdx,%rax <-- take the nearer address %rax now holds the threshold stack address against which all allocation attempts will be compared. Uninteresting computation of -(size + 1) for NUL byte: 0x0000000000979339 <+41>: mov %rsi,%rdx 0x000000000097933c <+44>: not %rdx Then allocation attempt: 0x000000000097933f <+47>: add %rsp,%rdx 0x0000000000979342 <+50>: cmp %rdx,%rax <-- would it fit? 0x0000000000979345 <+53>: jae 0x979380 <-- nope, jump to slow path 0x0000000000979347 <+55>: lea 0x10(%rsi),%rax 0x000000000097934b <+59>: mov %rsi,%rdx 0x000000000097934e <+62>: mov %rdi,%rsi 0x0000000000979351 <+65>: and $0xfffffffffffffff0,%rax <-- alloca() aligns 0x0000000000979355 <+69>: sub %rax,%rsp <-- alloca() allocates Then it's then a straight line run through the uninteresting bits to return the result, with stack_buffer_free() entirely elided: 0x0000000000979358 <+72>: mov %rsp,%rdi 0x000000000097935b <+75>: call 0x4950d0 0x0000000000979360 <+80>: movb $0x0,(%rsp,%rbx,1) 0x0000000000979364 <+84>: mov %rsp,%rdi 0x0000000000979367 <+87>: call 0x494890 0x000000000097936c <+92>: lea -0x18(%rbp),%rsp 0x0000000000979370 <+96>: pop %rbx 0x0000000000979371 <+97>: pop %r12 0x0000000000979373 <+99>: pop %r13 0x0000000000979375 <+101>: pop %rbp 0x0000000000979376 <+102>: ret If it wouldn't fit, the out-of-line implementation looks like what you get with STACK_BUFFER_USE_PALLOC: 0x0000000000979377 <+103>: nopw 0x0(%rax,%rax,1) 0x0000000000979380 <+112>: lea 0x1(%rsi),%rdi 0x0000000000979384 <+116>: call 0xa252f0 0x0000000000979389 <+121>: mov %rbx,%rdx 0x000000000097938c <+124>: mov %r12,%rsi 0x000000000097938f <+127>: mov %rax,%r13 0x0000000000979392 <+130>: mov %rax,%rdi 0x0000000000979395 <+133>: call 0x4950d0 0x000000000097939a <+138>: movb $0x0,0x0(%r13,%rbx,1) 0x00000000009793a0 <+144>: mov %r13,%rdi 0x00000000009793a3 <+147>: call 0x494890 0x00000000009793a8 <+152>: cmp %rsp,%r13 0x00000000009793ab <+155>: jb 0x9793b2 0x00000000009793ad <+157>: cmp %r13,%rbp 0x00000000009793b0 <+160>: jae 0x97936c 0x00000000009793b2 <+162>: mov %r13,%rdi 0x00000000009793b5 <+165>: mov %rax,-0x28(%rbp) 0x00000000009793b9 <+169>: call 0xa255c0 0x00000000009793be <+174>: mov -0x28(%rbp),%rax 0x00000000009793c2 <+178>: jmp 0x97936c In more complicated functions GCC's costing only moves the actual palloc() and pfree() calls out-of-line and jumps back to the straight-line code, while here it decided it was cheaper to duplicate the memcpy(), strlen() calls. Either way the straight-line code assumes the stack will be used, which is hopefully correct most of the time. It became a lot more aggressive about that sort of thing when I added the "stack_buffer_maybe_pfree" flag which seemed to flip GCC's costing; before that it would often leave the if-it's-not-between-%rbp-and-%rsp-then-call-pfree code in the main code. I'm not 100% sure about all that, but it *looks* like an effective optimisation. I've attached some data on allocation sizes from the regression tests (so not hitting all the places changed here), captured with STACK_BUFFER_USE_PALLOC_LOG. Obviously not representative of real usage, but that technique can be used to check real allocation sizes and stack depths for any workload. . o O ( I originally called it stack_buffer because I started with "let's standardise the array trick", so it was a buffer. Perhaps a better name for all this stuff would be pg_stack_alloc() or such, since it doesn't really have a buffer anymore except in a fallback mode... ) --000000000000e053ac064cca0224 Content-Type: text/plain; charset="US-ASCII"; name="regression-stack-buffer-alloc.txt" Content-Disposition: attachment; filename="regression-stack-buffer-alloc.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt5gym0 ICAgICAgICAgICBsb2MgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIGZ1bmMgICAgICAg ICAgICAgICAgICAgIHwgY291bnQgIHwgc2l6ZV9hdmcgfCBzaXplX21heCB8IGRlcHRoX2F2ZyB8 IGRlcHRoX21heCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KIGFsbHBhdGhzLmM6MTA3MSAgICAgICAgICB8IHNldF9h cHBlbmRfcmVsX3NpemUgICAgICAgICAgICAgICAgICAgICAgIHwgICAzNDIxIHwgICAgICAgNjUg fCAgICAgIDE0NCB8ICAgICAgNjI3MiB8ICAgICAxMDE5MgogYW5hbHl6ZWpvaW5zLmM6MjM2OSAg ICAgIHwgcmVtb3ZlX3NlbGZfam9pbnNfcmVjdXJzZSAgICAgICAgICAgICAgICAgfCAgIDc5MzMg fCAgICAgICAxOSB8ICAgICAgIDY0IHwgICAgICA2MDMyIHwgICAgICA5NTIwCiBhcHBlbmRpbmZv LmM6NjE4ICAgICAgICAgfCBhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211bHRpbGV2ZWwgICAgICAg ICB8ICAgNzgxMiB8ICAgICAgIDExIHwgICAgICAgMjQgfCAgICAgIDY3MTggfCAgICAgMTAwODAK IGFwcGVuZGluZm8uYzo2OTUgICAgICAgICB8IGFkanVzdF9jaGlsZF9yZWxpZHNfbXVsdGlsZXZl bCAgICAgICAgICAgIHwgICAgMTkxIHwgICAgICAgIDkgfCAgICAgICAyNCB8ICAgICAgNjAyMSB8 ICAgICAgODMyMAogYXJyYXlmdW5jcy5jOjExMTggICAgICAgIHwgYXJyYXlfb3V0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQyNzAgfCAgICAgICA1MCB8ICAgIDgwMDAwIHwg ICAgICA2MTExIHwgICAgIDEwMTEyCiBhcnJheWZ1bmNzLmM6MTExOSAgICAgICAgfCBhcnJheV9v dXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDI3MCB8ICAgICAgICA2IHwg ICAgMTAwMDAgfCAgICAgIDYxMjcgfCAgICAgMTAxMjgKIGFycmF5ZnVuY3MuYzozMjg2ICAgICAg ICB8IGFycmF5X21hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDUwIHwg ICAgICAgMjEgfCAgICAgICA4OCB8ICAgICAgNjAyOSB8ICAgICAgODc4NAogYXJyYXlmdW5jcy5j OjMyODcgICAgICAgIHwgYXJyYXlfbWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgNTAgfCAgICAgICAgMyB8ICAgICAgIDExIHwgICAgICA2MDQ1IHwgICAgICA4ODAwCiBh cnJheWZ1bmNzLmM6NjQ5MiAgICAgICAgfCBhcnJheV9yZXBsYWNlX2ludGVybmFsICAgICAgICAg ICAgICAgICAgICB8ICAgICAxMiB8ICAgICAgIDMxIHwgICAgICAgNDAgfCAgICAgIDU4NDMgfCAg ICAgIDYzMDQKIGFycmF5ZnVuY3MuYzo2NDkzICAgICAgICB8IGFycmF5X3JlcGxhY2VfaW50ZXJu YWwgICAgICAgICAgICAgICAgICAgIHwgICAgIDEyIHwgICAgICAgIDQgfCAgICAgICAgNSB8ICAg ICAgNTg1OSB8ICAgICAgNjMyMAogYnJpbl90dXBsZS5jOjEyNSAgICAgICAgIHwgYnJpbl9mb3Jt X3R1cGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwMjYgfCAgICAgIDIyNCB8ICAg ICAgNTEyIHwgICAgICA2ODgyIHwgICAgICA4MjcyCiBicmluX3R1cGxlLmM6MTI2ICAgICAgICAg fCBicmluX2Zvcm1fdHVwbGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTAyNiB8ICAg ICAgIDI4IHwgICAgICAgNjQgfCAgICAgIDY4OTggfCAgICAgIDgyODgKIGJyaW5fdHVwbGUuYzox MjcgICAgICAgICB8IGJyaW5fZm9ybV90dXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxMDI2IHwgICAgICAgIDQgfCAgICAgICAgOCB8ICAgICAgNjg4MiB8ICAgICAgODI3MgogYnJp bl90dXBsZS5jOjEzMCAgICAgICAgIHwgYnJpbl9mb3JtX3R1cGxlICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDEwMjYgfCAgICAgIDIyNCB8ICAgICAgNTEyIHwgICAgICA2ODk4IHwgICAg ICA4Mjg4CiBjbGF1c2VzLmM6NDc4NCAgICAgICAgICAgfCBmZXRjaF9mdW5jdGlvbl9kZWZhdWx0 cyAgICAgICAgICAgICAgICAgICB8ICAgMTAxNCB8ICAgICAgMjg5IHwgICAgIDEwMzkgfCAgICAg IDU1MDcgfCAgICAgIDg4OTYKIGNsYXVzZXMuYzo1OTkwICAgICAgICAgICB8IG1ha2VfU0FPUF9l eHByICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNTY5IHwgICAgICAgMTcgfCAgICAg ICA0OCB8ICAgICAgODE5NiB8ICAgICAxMDU0NAogY2xhdXNlcy5jOjU5OTEgICAgICAgICAgIHwg bWFrZV9TQU9QX2V4cHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1NjkgfCAgICAg ICAgMiB8ICAgICAgICA2IHwgICAgICA4MjEyIHwgICAgIDEwNTYwCiBkYXR1bS5jOjUwMiAgICAg ICAgICAgICAgfCBkYXR1bVNlcmlhbGl6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgMSB8ICAgICAgIDMyIHwgICAgICAgMzIgfCAgICAgIDU2NDggfCAgICAgIDU2NDgKIGVxdWl2 Y2xhc3MuYzoxMzg3ICAgICAgICB8IGdlbmVyYXRlX2Jhc2VfaW1wbGllZF9lcXVhbGl0aWVzX25v X2NvbnN0IHwgICA3NjU0IHwgICAgICAgNDMgfCAgICAgIDIwMCB8ICAgICAgNTk1NSB8ICAgICAx MTQ1NgogZXhlY1BhcnRpdGlvbi5jOjI1NDEgICAgIHwgSW5pdEV4ZWNQYXJ0aXRpb25QcnVuZUNv bnRleHRzICAgICAgICAgICAgfCAgICAgIDggfCAgICAgICAzNSB8ICAgICAgIDc2IHwgICAgICA1 ODUyIHwgICAgICA1OTg0CiBleGVjVHVwbGVzLmM6MjMzNiAgICAgICAgfCBCdWlsZFR1cGxlRnJv bUNTdHJpbmdzICAgICAgICAgICAgICAgICAgICB8ICAgNTA2MiB8ICAgICAgIDg3IHwgICAgICAx MzYgfCAgICAgIDU2MzIgfCAgICAgIDY1NjAKIGV4ZWNUdXBsZXMuYzoyMzM3ICAgICAgICB8IEJ1 aWxkVHVwbGVGcm9tQ1N0cmluZ3MgICAgICAgICAgICAgICAgICAgIHwgICA1MDYyIHwgICAgICAg MTEgfCAgICAgICAxNyB8ICAgICAgNTY0OCB8ICAgICAgNjU3NgogZm1nci5jOjIzNSAgICAgICAg ICAgICAgIHwgZm1ncl9pbmZvX2N4dF9zZWN1cml0eSAgICAgICAgICAgICAgICAgICAgfCAgICAx OTYgfCAgICAgICAxMyB8ICAgICAgIDI0IHwgICAgICA2NTc3IHwgICAgICA4NjI0CiBmbWdyLmM6 Mzg1ICAgICAgICAgICAgICAgfCBmbWdyX2luZm9fQ19sYW5nICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDMzMyB8ICAgICAgIDE4IHwgICAgICAgMzMgfCAgICAgIDYwNjYgfCAgICAgIDky NjQKIGZtZ3IuYzozODkgICAgICAgICAgICAgICB8IGZtZ3JfaW5mb19DX2xhbmcgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgMzMzIHwgICAgICAgMjMgfCAgICAgICA2MSB8ICAgICAgNjA2 NiB8ICAgICAgOTI2NAogZ2VuYW0uYzo0NDEgICAgICAgICAgICAgIHwgc3lzdGFibGVfYmVnaW5z Y2FuICAgICAgICAgICAgICAgICAgICAgICAgfCA4ODI2MTQgfCAgICAgIDExOSB8ICAgICAgMjg4 IHwgICAgICA2NzY5IHwgICAgIDY3NjAwCiBnZW5hbS5jOjY5NiAgICAgICAgICAgICAgfCBzeXN0 YWJsZV9iZWdpbnNjYW5fb3JkZXJlZCAgICAgICAgICAgICAgICB8ICAgMTgxOSB8ICAgICAgIDc5 IHwgICAgICAxNDQgfCAgICAgMTI2MTcgfCAgICAgNjE3OTIKIGdpbnNjYW4uYzo0MjkgICAgICAg ICAgICB8IGdpbk5ld1NjYW5LZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICA1 IHwgICAgICA0MjYgfCAgICAgIDQ1NiB8ICAgICAgNzkzMCB8ICAgICAgODk0NAogaGFzaGZ1bmMu YzozMDIgICAgICAgICAgIHwgaGFzaHRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICA0NDUgfCAgICAgICAgNCB8ICAgICAgICA2IHwgICAgICA1MTY3IHwgICAgICA1NjQ4 CiBoYXNoZnVuYy5jOjM1OSAgICAgICAgICAgfCBoYXNodGV4dGV4dGVuZGVkICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgNCB8ICAgICAgICA2IHwgICAgICAgIDYgfCAgICAgIDYwNzIg fCAgICAgIDYxNzYKIGhlYXBhbS5jOjg3NzMgICAgICAgICAgICB8IGJvdHRvbXVwX3NvcnRfYW5k X3NocmluayAgICAgICAgICAgICAgICAgIHwgICAgMjE4IHwgICAgIDM4ODQgfCAgICAgNzk5MiB8 ICAgICAxMzQ3NiB8ICAgICAxNTQ1NgogaGVhcGFtLmM6ODg0NiAgICAgICAgICAgIHwgYm90dG9t dXBfc29ydF9hbmRfc2hyaW5rICAgICAgICAgICAgICAgICAgfCAgICAyMTggfCAgICAgNTE3OSB8 ICAgIDEwNjU2IHwgICAgIDEzNDc2IHwgICAgIDE1NDU2CiBoZWFwYW1faGFuZGxlci5jOjcyMyAg ICAgfCBoZWFwYW1fcmVsYXRpb25fY29weV9mb3JfY2x1c3RlciAgICAgICAgICB8ICAgICA1NCB8 ICAgICAgIDI0IHwgICAgICAyNzIgfCAgICAgIDU5NDkgfCAgICAgIDY1NDQKIGhlYXBhbV9oYW5k bGVyLmM6NzI0ICAgICB8IGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyICAgICAgICAg IHwgICAgIDU0IHwgICAgICAgIDMgfCAgICAgICAzNCB8ICAgICAgNTk2NSB8ICAgICAgNjU2MAog aGVhcHR1cGxlLmM6MTIzNiAgICAgICAgIHwgaGVhcF9tb2RpZnlfdHVwbGUgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDUzOTkgfCAgICAgIDIzMCB8ICAgICAgMjcyIHwgICAgICA2MzYxIHwg ICAgICA5MzkyCiBoZWFwdHVwbGUuYzoxMjM3ICAgICAgICAgfCBoZWFwX21vZGlmeV90dXBsZSAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTM5OSB8ICAgICAgIDI5IHwgICAgICAgMzQgfCAg ICAgIDYzNzcgfCAgICAgIDk0MDgKIGhlYXB0dXBsZS5jOjEzMDAgICAgICAgICB8IGhlYXBfbW9k aWZ5X3R1cGxlX2J5X2NvbHMgICAgICAgICAgICAgICAgIHwgICAgIDE4IHwgICAgICAyMDEgfCAg ICAgIDI3MiB8ICAgICAgNTM1MSB8ICAgICAgNTkyMAogaGVhcHR1cGxlLmM6MTMwMSAgICAgICAg IHwgaGVhcF9tb2RpZnlfdHVwbGVfYnlfY29scyAgICAgICAgICAgICAgICAgfCAgICAgMTggfCAg ICAgICAyNSB8ICAgICAgIDM0IHwgICAgICA1MzY3IHwgICAgICA1OTM2CiBpbmR4cGF0aC5jOjEy OTcgICAgICAgICAgfCBncm91cF9zaW1pbGFyX29yX2FyZ3MgICAgICAgICAgICAgICAgICAgICB8 ICAgIDgxOCB8ICAgICAgIDYxIHwgICAgICAzMTIgfCAgICAgIDcxMjkgfCAgICAgMTA1OTIKIGlu ZHhwYXRoLmM6MTg2MSAgICAgICAgICB8IGNob29zZV9iaXRtYXBfYW5kICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA4NzYxIHwgICAgICAgMTkgfCAgICAgICA0MCB8ICAgICAgNzQxMiB8ICAg ICAxMDY4OAogam9pbnJlbHMuYzoxNzgxICAgICAgICAgIHwgdHJ5X3BhcnRpdGlvbndpc2Vfam9p biAgICAgICAgICAgICAgICAgICAgfCAgIDEyNTUgfCAgICAgICAxNyB8ICAgICAgIDQ4IHwgICAg ICA2NTg4IHwgICAgICA4OTYwCiBqb2lucmVscy5jOjE4NjQgICAgICAgICAgfCBidWlsZF9jaGls ZF9qb2luX3NqaW5mbyAgICAgICAgICAgICAgICAgICB8ICAgIDUyOSB8ICAgICAgIDExIHwgICAg ICAgNDAgfCAgICAgIDY0MjQgfCAgICAgIDcyNjQKIGpvaW5yZWxzLmM6MTg2NiAgICAgICAgICB8 IGJ1aWxkX2NoaWxkX2pvaW5fc2ppbmZvICAgICAgICAgICAgICAgICAgIHwgICAgNTI5IHwgICAg ICAgIDkgfCAgICAgICAyNCB8ICAgICAgNjQ0MCB8ICAgICAgNzI4MAoganNvbmZ1bmNzLmM6MTY4 OSAgICAgICAgIHwganNvbmJfc2V0X2VsZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgNDEgfCAgICAgICAgMiB8ICAgICAgICA2IHwgICAgICA1Mzk0IHwgICAgICA1NDI0CiBqc29u ZnVuY3MuYzoyOTY1ICAgICAgICAgfCBwb3B1bGF0ZV9hcnJheSAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDI3MiB8ICAgICAgICA1IHwgICAgICAgMTIgfCAgICAgIDU3NDIgfCAgICAg IDYyNTYKIGpzb25mdW5jcy5jOjMxNjEgICAgICAgICB8IHBvcHVsYXRlX3NjYWxhciAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAyIHwgICAgICAgMTUgfCAgICAgICAxNiB8ICAgICAg NjQ4MCB8ICAgICAgNjQ4MAoganNvbmZ1bmNzLmM6MzE3NCAgICAgICAgIHwgcG9wdWxhdGVfc2Nh bGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgNjIgfCAgICAgICAgNSB8ICAgICAg IDIwIHwgICAgICA1NzAwIHwgICAgICA2MDk2CiBqc29uZnVuY3MuYzozMTkzICAgICAgICAgfCBw b3B1bGF0ZV9zY2FsYXIgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDI2OCB8ICAgICAg ICA4IHwgICAgICAgMjQgfCAgICAgIDYzMTcgfCAgICAgIDY5NjAKIGpzb25mdW5jcy5jOjMxOTUg ICAgICAgICB8IHBvcHVsYXRlX3NjYWxhciAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAxIHwgICAgICAgIDUgfCAgICAgICAgNSB8ICAgICAgNTc3NiB8ICAgICAgNTc3NgoganNvbmZ1 bmNzLmM6MzU2NCAgICAgICAgIHwgcG9wdWxhdGVfcmVjb3JkICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA3MjkgfCAgICAgICA1OSB8ICAgICAgMTM2IHwgICAgICA1NzkxIHwgICAgICA2 Nzg0CiBqc29uZnVuY3MuYzozNTY1ICAgICAgICAgfCBwb3B1bGF0ZV9yZWNvcmQgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDcyOSB8ICAgICAgICA3IHwgICAgICAgMTcgfCAgICAgIDU4 MDcgfCAgICAgIDY4MDAKIGxpa2Vfc3VwcG9ydC5jOjEwMDUgICAgICB8IGxpa2VfZml4ZWRfcHJl Zml4ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMzYzIHwgICAgICAgMTAgfCAgICAgICAy NSB8ICAgICAgNjg1MyB8ICAgICAgODU5MgogbGlrZV9zdXBwb3J0LmM6MTAxMyAgICAgIHwgbGlr ZV9maXhlZF9wcmVmaXggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgIDIgfCAgICAgICAg MyB8ICAgICAgICAzIHwgICAgICA2ODAwIHwgICAgICA3MTg0CiBsaWtlX3N1cHBvcnQuYzoxMDE4 ICAgICAgfCBsaWtlX2ZpeGVkX3ByZWZpeCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDM2 NSB8ICAgICAgIDEwIHwgICAgICAgMjUgfCAgICAgIDY4NTMgfCAgICAgIDg1OTIKIGxpa2Vfc3Vw cG9ydC5jOjExMDUgICAgICB8IGxpa2VfZml4ZWRfcHJlZml4X2NpICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIDM2IHwgICAgICAgMjAgfCAgICAgICAyOCB8ICAgICAgNzI3NiB8ICAgICAgODIw OAogbGlrZV9zdXBwb3J0LmM6MTEwOCAgICAgIHwgbGlrZV9maXhlZF9wcmVmaXhfY2kgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgMzYgfCAgICAgICAyMCB8ICAgICAgIDI4IHwgICAgICA3Mjc2 IHwgICAgICA4MjA4CiBsaWtlX3N1cHBvcnQuYzoxMTM2ICAgICAgfCBsaWtlX2ZpeGVkX3ByZWZp eF9jaSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAzNiB8ICAgICAgICAzIHwgICAgICAgIDkg fCAgICAgIDcyNzYgfCAgICAgIDgyMDgKIGxpa2Vfc3VwcG9ydC5jOjExNTAgICAgICB8IGxpa2Vf Zml4ZWRfcHJlZml4X2NpICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDE3IHwgICAgICAgMTUg fCAgICAgICAyNSB8ICAgICAgNjc3NyB8ICAgICAgNzQ0MAogbGlrZV9zdXBwb3J0LmM6MTIwMCAg ICAgIHwgcmVnZXhfZml4ZWRfcHJlZml4ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgNzYg fCAgICAgICAgOSB8ICAgICAgIDU0IHwgICAgICA3MDA2IHwgICAgICA3ODcyCiBsaWtlX3N1cHBv cnQuYzoxMjIyICAgICAgfCByZWdleF9maXhlZF9wcmVmaXggICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEwNyB8ICAgICAgIDEzIHwgICAgICAgNTggfCAgICAgIDY3OTMgfCAgICAgIDg2NzIK IGxpa2Vfc3VwcG9ydC5jOjE2NTMgICAgICB8IG1ha2VfZ3JlYXRlcl9zdHJpbmcgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMjM1IHwgICAgICAgIDcgfCAgICAgICAyNiB8ICAgICAgNzMwNSB8 ICAgICAgODcwNAogbGlrZV9zdXBwb3J0LmM6MTY4OSAgICAgIHwgbWFrZV9ncmVhdGVyX3N0cmlu ZyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgIDYgfCAgICAgICAxMyB8ICAgICAgIDIwIHwg ICAgICA2NTQ5IHwgICAgICA3MTM2CiBuYnRwcmVwcm9jZXNza2V5cy5jOjE1NzQgfCBfYnRfdW5t YXJrX2tleXMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgMSB8ICAgICAgICA0IHwg ICAgICAgIDQgfCAgICAgIDgwNDggfCAgICAgIDgwNDgKIG5idHByZXByb2Nlc3NrZXlzLmM6MTY1 OSB8IF9idF91bm1hcmtfa2V5cyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAxIHwg ICAgICAgNzIgfCAgICAgICA3MiB8ICAgICAgODA0OCB8ICAgICAgODA0OAogbmJ0cHJlcHJvY2Vz c2tleXMuYzoxNjYwIHwgX2J0X3VubWFya19rZXlzICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgIDEgfCAgICAgIDIxNiB8ICAgICAgMjE2IHwgICAgICA4MDY0IHwgICAgICA4MDY0CiBu YnRwcmVwcm9jZXNza2V5cy5jOjE2NjUgfCBfYnRfdW5tYXJrX2tleXMgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgMSB8ICAgICAgIDQ4IHwgICAgICAgNDggfCAgICAgIDgwNDggfCAg ICAgIDgwNDgKIG5idHByZXByb2Nlc3NrZXlzLmM6MTY2NiB8IF9idF91bm1hcmtfa2V5cyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAxIHwgICAgICAxNDQgfCAgICAgIDE0NCB8ICAg ICAgODA2NCB8ICAgICAgODA2NAogbm9kZUFnZy5jOjQzNTYgICAgICAgICAgIHwgYnVpbGRfcGVy dHJhbnNfZm9yX2FnZ3JlZiAgICAgICAgICAgICAgICAgfCAgICAgOTUgfCAgICAgICAgNSB8ICAg ICAgIDEyIHwgICAgICA1NzI3IHwgICAgICA3MDcyCiBub2RlQWdnLmM6NDM5MSAgICAgICAgICAg fCBHZXRBZ2dJbml0VmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjgzOCB8ICAg ICAgICAzIHwgICAgICAgMTggfCAgICAgIDU5OTYgfCAgICAgMTg5OTIKIG5vZGVIYXNoam9pbi5j Ojg0NSAgICAgICB8IEV4ZWNJbml0SGFzaEpvaW4gICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICA0MTY3IHwgICAgICAgIDQgfCAgICAgICAxMiB8ICAgICAgNTUwNSB8ICAgICAxMDY4OAogbm9k ZUhhc2hqb2luLmM6ODQ2ICAgICAgIHwgRXhlY0luaXRIYXNoSm9pbiAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDQxNjcgfCAgICAgICAgNCB8ICAgICAgIDEyIHwgICAgICA1NTIxIHwgICAg IDEwNzA0CiBub2RlSGFzaGpvaW4uYzo4NDcgICAgICAgfCBFeGVjSW5pdEhhc2hKb2luICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgNDE2NyB8ICAgICAgICAxIHwgICAgICAgIDMgfCAgICAg IDU1MjEgfCAgICAgMTA3MDQKIG5vZGVNZW1vaXplLmM6MTAxMiAgICAgICB8IEV4ZWNJbml0TWVt b2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMjEyIHwgICAgICAgIDQgfCAgICAg ICAgOCB8ICAgICAgNTkzOCB8ICAgICAgODgxNgogbm9kZVdpbmRvd0FnZy5jOjMxNzAgICAgIHwg R2V0QWdnSW5pdFZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxMTcgfCAgICAg ICAgNSB8ICAgICAgICA4IHwgICAgICA1NTQwIHwgICAgICA4NzM2CiBudW1lcmljLmM6Njc4NyAg ICAgICAgICAgfCBzZXRfdmFyX2Zyb21fc3RyICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAx NTEyNiB8ICAgICAgIDExIHwgICAgICAgOTYgfCAgICAgIDYyNTggfCAgICAgMTIzMDQKIG51bWVy aWMuYzo5MDU4ICAgICAgICAgICB8IGRpdl92YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgOTA3IHwgICAgICAxMzIgfCAgICAyMjUyOCB8ICAgICAgNjU4OCB8ICAgICAg ODUxMgogcGFyc2VfY2xhdXNlLmM6NzM5ICAgICAgIHwgdHJhbnNmb3JtUmFuZ2VUYWJsZUZ1bmMg ICAgICAgICAgICAgICAgICAgfCAgICAgMjIgfCAgICAgICAzMyB8ICAgICAgIDY0IHwgICAgICA1 MDM2IHwgICAgICA2MTI4CiBwYXJzZV9mdW5jLmM6MTc3MSAgICAgICAgfCBmdW5jX2dldF9kZXRh aWwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDk5NSB8ICAgICAgMjkxIHwgICAgIDEw MzkgfCAgICAgIDU4MDkgfCAgICAgIDk2MTYKIHBhcnNlX3R5cGUuYzozNzUgICAgICAgICB8IHR5 cGVuYW1lVHlwZU1vZCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOTQ3IHwgICAgICAg IDkgfCAgICAgICAyNCB8ICAgICAgNTk5MyB8ICAgICAxNzM2MAogcGFydGJvdW5kcy5jOjIzOTcg ICAgICAgIHwgZml4X21lcmdlZF9pbmRleGVzICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg IDggfCAgICAgICAyMiB8ICAgICAgIDI0IHwgICAgICA2ODk2IHwgICAgICA3MjgwCiBwYXJ0Ym91 bmRzLmM6MjQ1OSAgICAgICAgfCBnZW5lcmF0ZV9tYXRjaGluZ19wYXJ0X3BhaXJzICAgICAgICAg ICAgICB8ICAgIDEyMiB8ICAgICAgIDExIHwgICAgICAgMjQgfCAgICAgIDY5NzAgfCAgICAgIDc3 NzYKIHBhcnRib3VuZHMuYzoyNDYwICAgICAgICB8IGdlbmVyYXRlX21hdGNoaW5nX3BhcnRfcGFp cnMgICAgICAgICAgICAgIHwgICAgMTIyIHwgICAgICAgMTEgfCAgICAgICAyNCB8ICAgICAgNjk4 NiB8ICAgICAgNzc5MgogcGFydGJvdW5kcy5jOjM2NiAgICAgICAgIHwgY3JlYXRlX2hhc2hfYm91 bmRzICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxMDYgfCAgICAgICAyNiB8ICAgICAgIDk2 IHwgICAgICA2MzIzIHwgICAgICA3OTIwCiBwYXJ0Ym91bmRzLmM6NDg3ICAgICAgICAgfCBjcmVh dGVfbGlzdF9ib3VuZHMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkzMCB8ICAgICAgIDUx IHwgICAgICA0MDAgfCAgICAgIDY0NjEgfCAgICAgMTAyMDgKIHBhcnRib3VuZHMuYzo1MTMwICAg ICAgICB8IGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlICAgICAgIHwgICAgIDI2 IHwgICAgICAgMTggfCAgICAgICAyNCB8ICAgICAgNjQ4MCB8ICAgICAgNjQ4MAogcGFydGJvdW5k cy5jOjU3NzEgICAgICAgIHwgY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQgICAgICAgICAgICAg ICAgfCAgICAgNDYgfCAgICAgICAyNCB8ICAgICAgIDQwIHwgICAgICA2NTQ0IHwgICAgICA2NTQ0 CiBwYXJ0Ym91bmRzLmM6NTgwMSAgICAgICAgfCBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCAg ICAgICAgICAgICAgICB8ICAgICAzOCB8ICAgICAgIDIxIHwgICAgICAgMzIgfCAgICAgIDY1NDQg fCAgICAgIDY1NDQKIHBhcnRib3VuZHMuYzo1ODE2ICAgICAgICB8IGNoZWNrX3BhcnRpdGlvbnNf Zm9yX3NwbGl0ICAgICAgICAgICAgICAgIHwgICAgIDM4IHwgICAgICAgMjEgfCAgICAgICAzMiB8 ICAgICAgNjU0NCB8ICAgICAgNjU0NAogcGFydGJvdW5kcy5jOjcwNSAgICAgICAgIHwgY3JlYXRl X3JhbmdlX2JvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzMTAgfCAgICAgICAzNCB8 ICAgICAgMTQ0IHwgICAgICA2NjIxIHwgICAgIDEwMDMyCiBwYXJ0Ym91bmRzLmM6NzQ1ICAgICAg ICAgfCBjcmVhdGVfcmFuZ2VfYm91bmRzICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMxMCB8 ICAgICAgIDMyIHwgICAgICAxMjggfCAgICAgIDY2MjEgfCAgICAgMTAwMzIKIHBhcnRwcnVuZS5j OjI1MiAgICAgICAgICB8IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyAgICAgICAgICAgICAgICAg IHwgICAxMDI1IHwgICAgICAgMjMgfCAgICAgIDEyOCB8ICAgICAgNjQxMyB8ICAgICAgOTcyOAog cGFydHBydW5lLmM6NDc1ICAgICAgICAgIHwgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8g ICAgICAgICAgICAgfCAgICA4MTYgfCAgICAgICAyMyB8ICAgICAgMTI4IHwgICAgICA2NTY4IHwg ICAgICA5NzI4CiBwYXJ0cHJ1bmUuYzo1MjMgICAgICAgICAgfCBtYWtlX3BhcnRpdGlvbmVkcmVs X3BydW5laW5mbyAgICAgICAgICAgICB8ICAgICAxMCB8ICAgICAgICA4IHwgICAgICAgIDggfCAg ICAgIDU4OTQgfCAgICAgIDYyMjQKIHBhdGhrZXlzLmM6MTY4MiAgICAgICAgICB8IHNlbGVjdF9v dXRlcl9wYXRoa2V5c19mb3JfbWVyZ2UgICAgICAgICAgIHwgIDU1NDI1IHwgICAgICAgIDkgfCAg ICAgICAzMiB8ICAgICAgNjkwOCB8ICAgICAxMjM4NAogcGF0aGtleXMuYzoxNjgzICAgICAgICAg IHwgc2VsZWN0X291dGVyX3BhdGhrZXlzX2Zvcl9tZXJnZSAgICAgICAgICAgfCAgNTU0MjUgfCAg ICAgICAgNCB8ICAgICAgIDE2IHwgICAgICA2OTI0IHwgICAgIDEyNDAwCiBwZ19sb2NhbGVfaWN1 LmM6NzYxICAgICAgfCBzdHJueGZybV9pY3UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDk1OCB8ICAgICAgICA1IHwgICAgICAgIDggfCAgICAgIDUyNjYgfCAgICAgIDYyODgKIHBn X2xvY2FsZV9saWJjLmM6MTI1NSAgICB8IGNoYXIyd2NoYXIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMTYzOTY0IHwgICAgICAgIDMgfCAgICAgICA1OCB8ICAgICAgODI5NiB8ICAg ICAxNjA4MAogcGdfbG9jYWxlX2xpYmMuYzo1MTAgICAgIHwgc3RybG93ZXJfbGliY19tYiAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDU1MzAgfCAgICAgICAzMSB8ICAgICAgMjMyIHwgICAg ICA3Nzk3IHwgICAgIDE1OTg0CiBwZ19sb2NhbGVfbGliYy5jOjUyMSAgICAgfCBzdHJsb3dlcl9s aWJjX21iICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTUzMCB8ICAgICAgIDI4IHwgICAg ICAyMjkgfCAgICAgIDc3OTcgfCAgICAgMTU5ODQKIHBnX2xvY2FsZV9saWJjLmM6NjE3ICAgICB8 IHN0cnRpdGxlX2xpYmNfbWIgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAxIHwgICAg ICAgNDAgfCAgICAgICA0MCB8ICAgICAgNTY5NiB8ICAgICAgNTY5NgogcGdfbG9jYWxlX2xpYmMu Yzo2MzQgICAgIHwgc3RydGl0bGVfbGliY19tYiAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgIDEgfCAgICAgICAzNyB8ICAgICAgIDM3IHwgICAgICA1Njk2IHwgICAgICA1Njk2CiBwZ19s b2NhbGVfbGliYy5jOjcxMiAgICAgfCBzdHJ1cHBlcl9saWJjX21iICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDE1ODQzMyB8ICAgICAgIDExIHwgICAgICAgNTIgfCAgICAgIDgyMTQgfCAgICAg IDg1NjAKIHBnX2xvY2FsZV9saWJjLmM6NzIzICAgICB8IHN0cnVwcGVyX2xpYmNfbWIgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMTU4NDMzIHwgICAgICAgIDggfCAgICAgICA0OSB8ICAgICAg ODIxNCB8ICAgICAgODU2MAogcGdfbG9jYWxlX2xpYmMuYzo5MDYgICAgIHwgc3RybmNvbGxfbGli YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMTE1NzQgfCAgICAgICAxNiB8ICAgICAz MjAxIHwgICAgICA3NDM3IHwgICAgIDIzOTIwCiBwZ19sb2NhbGVfbGliYy5jOjkwOSAgICAgfCBz dHJuY29sbF9saWJjICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMxMTU3NCB8ICAgICAg IDE3IHwgICAgIDMyMDEgfCAgICAgIDc0MzcgfCAgICAgMjM5MjAKIHBsYW5jYXQuYzoxODA4ICAg ICAgICAgICB8IGdldF9yZWxhdGlvbl9zdGF0aXN0aWNzICAgICAgICAgICAgICAgICAgIHwgICAg MTM4IHwgICAgICA5NTYgfCAgICAgMTcyMCB8ICAgICAgODUzMiB8ICAgICAgODYyNAogcGxhbm5l ci5jOjMwNTkgICAgICAgICAgIHwgZXh0cmFjdF9yb2xsdXBfc2V0cyAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAxNTEgfCAgICAgICAzMyB8ICAgICAgIDgwIHwgICAgICA1NjU1IHwgICAgICA3 MzYwCiBwbGFubmVyLmM6MzA2MCAgICAgICAgICAgfCBleHRyYWN0X3JvbGx1cF9zZXRzICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDE1MSB8ICAgICAgIDMzIHwgICAgICAgODAgfCAgICAgIDU2 NzEgfCAgICAgIDczNzYKIHBsYW5uZXIuYzozMDYxICAgICAgICAgICB8IGV4dHJhY3Rfcm9sbHVw X3NldHMgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMTUxIHwgICAgICAgMzMgfCAgICAgICA4 MCB8ICAgICAgNTY3MSB8ICAgICAgNzM3NgogcGxhbm5lci5jOjMwNjIgICAgICAgICAgIHwgZXh0 cmFjdF9yb2xsdXBfc2V0cyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxNTEgfCAgICAgICAg OCB8ICAgICAgIDIwIHwgICAgICA1NjcxIHwgICAgICA3Mzc2CiBwbGFubmVyLmM6MzE0NyAgICAg ICAgICAgfCBleHRyYWN0X3JvbGx1cF9zZXRzICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDE1 MSB8ICAgICAgIDEzIHwgICAgICAgMzIgfCAgICAgIDU2NTUgfCAgICAgIDczNjAKIHBsYW5uZXIu Yzo2MDQzICAgICAgICAgICB8IHNlbGVjdF9hY3RpdmVfd2luZG93cyAgICAgICAgICAgICAgICAg ICAgIHwgICAgNDI2IHwgICAgICAgMTggfCAgICAgICA4MCB8ICAgICAgNTUzMSB8ICAgICAgOTQ3 MgogcGxhbm5lci5jOjgxMzQgICAgICAgICAgIHwgYXBwbHlfc2NhbmpvaW5fdGFyZ2V0X3RvX3Bh dGhzICAgICAgICAgICAgfCAgIDE1NzIgfCAgICAgICAxMCB8ICAgICAgIDU2IHwgICAgICA2Mjgz IHwgICAgICA5OTA0CiBwbGFubmVyLmM6ODI1MiAgICAgICAgICAgfCBjcmVhdGVfcGFydGl0aW9u d2lzZV9ncm91cGluZ19wYXRocyAgICAgICB8ICAgIDEzNiB8ICAgICAgIDEzIHwgICAgICAgMjQg fCAgICAgIDYxMzEgfCAgICAgIDY4ODAKIHByZXBhZ2cuYzo1MzIgICAgICAgICAgICB8IEdldEFn Z0luaXRWYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMDA3IHwgICAgICAgIDMg fCAgICAgICAxOCB8ICAgICAgNjMwMSB8ICAgICAxNDQwMAogcHJlcHVuaW9uLmM6MTY0MCAgICAg ICAgIHwgZ2VuZXJhdGVfYXBwZW5kX3RsaXN0ICAgICAgICAgICAgICAgICAgICAgfCAgICA3MTQg fCAgICAgICAxMSB8ICAgICAgIDI0IHwgICAgICA1ODIyIHwgICAgIDE5NDg4CiByb3d0eXBlcy5j OjExNjEgICAgICAgICAgfCByZWNvcmRfZXEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDU2MCB8ICAgICAgIDE2IHwgICAgICAgNDAgfCAgICAgIDUzODYgfCAgICAgIDYwODAK IHJvd3R5cGVzLmM6MTE2MiAgICAgICAgICB8IHJlY29yZF9lcSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgNTYwIHwgICAgICAgIDIgfCAgICAgICAgNSB8ICAgICAgNTQwMiB8 ICAgICAgNjA5Ngogcm93dHlwZXMuYzoxMTY0ICAgICAgICAgIHwgcmVjb3JkX2VxICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1NjAgfCAgICAgICAxNiB8ICAgICAgIDQwIHwg ICAgICA1NDAyIHwgICAgICA2MDk2CiByb3d0eXBlcy5jOjExNjUgICAgICAgICAgfCByZWNvcmRf ZXEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDU2MCB8ICAgICAgICAyIHwg ICAgICAgIDUgfCAgICAgIDU0MDIgfCAgICAgIDYwOTYKIHJvd3R5cGVzLmM6MTQ0MyAgICAgICAg ICB8IHJlY29yZF9pbWFnZV9jbXAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMTAzIHwg ICAgICAgMzEgfCAgICAgICA0OCB8ICAgICAgNjUxMSB8ICAgICAgNjgwMAogcm93dHlwZXMuYzox NDQ0ICAgICAgICAgIHwgcmVjb3JkX2ltYWdlX2NtcCAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAxMDMgfCAgICAgICAgNCB8ICAgICAgICA2IHwgICAgICA2NTI3IHwgICAgICA2ODE2CiBy b3d0eXBlcy5jOjE0NDYgICAgICAgICAgfCByZWNvcmRfaW1hZ2VfY21wICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDEwMyB8ICAgICAgIDMxIHwgICAgICAgNDggfCAgICAgIDY1MjcgfCAg ICAgIDY4MTYKIHJvd3R5cGVzLmM6MTQ0NyAgICAgICAgICB8IHJlY29yZF9pbWFnZV9jbXAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMTAzIHwgICAgICAgIDQgfCAgICAgICAgNiB8ICAg ICAgNjUyNyB8ICAgICAgNjgxNgogcm93dHlwZXMuYzoxNDYgICAgICAgICAgIHwgcmVjb3JkX2lu ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgNjYgfCAgICAgICAxOSB8ICAg ICAgIDQwIHwgICAgICA1OTg5IHwgICAgICA2OTQ0CiByb3d0eXBlcy5jOjE0NyAgICAgICAgICAg fCByZWNvcmRfaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICA2NiB8ICAg ICAgICAyIHwgICAgICAgIDUgfCAgICAgIDYwMDUgfCAgICAgIDY5NjAKIHJvd3R5cGVzLmM6MTY5 MSAgICAgICAgICB8IHJlY29yZF9pbWFnZV9lcSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgIDMzIHwgICAgICAgMjYgfCAgICAgICA0OCB8ICAgICAgNjU3NyB8ICAgICAgNjk3Ngogcm93 dHlwZXMuYzoxNjkyICAgICAgICAgIHwgcmVjb3JkX2ltYWdlX2VxICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgMzMgfCAgICAgICAgMyB8ICAgICAgICA2IHwgICAgICA2NTkzIHwgICAg ICA2OTkyCiByb3d0eXBlcy5jOjE2OTQgICAgICAgICAgfCByZWNvcmRfaW1hZ2VfZXEgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAzMyB8ICAgICAgIDI2IHwgICAgICAgNDggfCAgICAg IDY1OTMgfCAgICAgIDY5OTIKIHJvd3R5cGVzLmM6MTY5NSAgICAgICAgICB8IHJlY29yZF9pbWFn ZV9lcSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDMzIHwgICAgICAgIDMgfCAgICAg ICAgNiB8ICAgICAgNjU5MyB8ICAgICAgNjk5Mgogcm93dHlwZXMuYzoxODg1ICAgICAgICAgIHwg aGFzaF9yZWNvcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxNTAgfCAgICAg ICAxNiB8ICAgICAgIDI0IHwgICAgICA1MzI4IHwgICAgICA2ODAwCiByb3d0eXBlcy5jOjE4ODYg ICAgICAgICAgfCBoYXNoX3JlY29yZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDE1MCB8ICAgICAgICAyIHwgICAgICAgIDMgfCAgICAgIDUzNDQgfCAgICAgIDY4MTYKIHJvd3R5 cGVzLmM6MjAwOCAgICAgICAgICB8IGhhc2hfcmVjb3JkX2V4dGVuZGVkICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICA1IHwgICAgICAgMTYgfCAgICAgICAxNiB8ICAgICAgNjQ2NyB8ICAgICAg NjgzMgogcm93dHlwZXMuYzoyMDA5ICAgICAgICAgIHwgaGFzaF9yZWNvcmRfZXh0ZW5kZWQgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgIDUgfCAgICAgICAgMiB8ICAgICAgICAyIHwgICAgICA2 NDgzIHwgICAgICA2ODQ4CiByb3d0eXBlcy5jOjM5MSAgICAgICAgICAgfCByZWNvcmRfb3V0ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjc1NCB8ICAgICAgIDIwIHwgICAgICAg NDggfCAgICAgIDU2ODEgfCAgICAgMTAyMjQKIHJvd3R5cGVzLmM6MzkyICAgICAgICAgICB8IHJl Y29yZF9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNzU0IHwgICAgICAg IDIgfCAgICAgICAgNiB8ICAgICAgNTY5NyB8ICAgICAxMDI0MAogcm93dHlwZXMuYzo5MTUgICAg ICAgICAgIHwgcmVjb3JkX2NtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2 NTUgfCAgICAgICAyNSB8ICAgICAgMTYwIHwgICAgICA2NDkzIHwgICAgICA3ODg4CiByb3d0eXBl cy5jOjkxNiAgICAgICAgICAgfCByZWNvcmRfY21wICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDY1NSB8ICAgICAgICAzIHwgICAgICAgMjAgfCAgICAgIDY1MDkgfCAgICAgIDc5 MDQKIHJvd3R5cGVzLmM6OTE4ICAgICAgICAgICB8IHJlY29yZF9jbXAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgNjU1IHwgICAgICAgMjUgfCAgICAgIDE2MCB8ICAgICAgNjUw OSB8ICAgICAgNzkwNAogcm93dHlwZXMuYzo5MTkgICAgICAgICAgIHwgcmVjb3JkX2NtcCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2NTUgfCAgICAgICAgMyB8ICAgICAgIDIw IHwgICAgICA2NTA5IHwgICAgICA3OTA0CiBydWxldXRpbHMuYzoxMzY0ICAgICAgICAgfCBwZ19n ZXRfaW5kZXhkZWZfd29ya2VyICAgICAgICAgICAgICAgICAgICB8ICAgICA2MCB8ICAgICAgMzg1 IHwgICAgICA1NzYgfCAgICAgIDU3OTMgfCAgICAgMTA4OTYKIHJ1bGV1dGlscy5jOjE1NjAgICAg ICAgICB8IHBnX2dldF9pbmRleGRlZl93b3JrZXIgICAgICAgICAgICAgICAgICAgIHwgICAgIDQy IHwgICAgICA0MzQgfCAgICAgIDYzNyB8ICAgICAgNTU3NCB8ICAgICAgNzYzMgogcnVsZXV0aWxz LmM6MTcwNSAgICAgICAgIHwgcGdfZ2V0X3N0YXRpc3RpY3NvYmpfd29ya2VyICAgICAgICAgICAg ICAgfCAgICAgMTQgfCAgICAgIDc1NiB8ICAgICAxMzEyIHwgICAgICA1NDc5IHwgICAgICA3MTM2 CiBydWxldXRpbHMuYzoxODgwICAgICAgICAgfCBwZ19nZXRfc3RhdGlzdGljc29iamRlZl9leHBy ZXNzaW9ucyAgICAgICB8ICAgICAyNCB8ICAgICAgNjY3IHwgICAgICA3NzAgfCAgICAgIDU2OTMg fCAgICAgIDU4ODgKIHJ1bGV1dGlscy5jOjE5OTYgICAgICAgICB8IHBnX2dldF9wYXJ0a2V5ZGVm X3dvcmtlciAgICAgICAgICAgICAgICAgIHwgICAgIDExIHwgICAgICA0OTMgfCAgICAgMTAzMiB8 ICAgICAgNTczNSB8ICAgICAgNTk4NAogcnVsZXV0aWxzLmM6MjczMiAgICAgICAgIHwgcGdfZ2V0 X2V4cHJfd29ya2VyICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2NTAgfCAgICAgIDQ3OCB8 ICAgICAzMTM5IHwgICAgICA1NDI0IHwgICAgICA3MDU2CiBydWxldXRpbHMuYzozMzQ3ICAgICAg ICAgfCBwcmludF9mdW5jdGlvbl9hcmd1bWVudHMgICAgICAgICAgICAgICAgICB8ICAgICAgMiB8 ICAgICAgMjE5IHwgICAgICAyOTggfCAgICAgIDUyNDggfCAgICAgIDUyNDgKIHJ1bGV1dGlscy5j OjM1NDkgICAgICAgICB8IHBnX2dldF9mdW5jdGlvbl9hcmdfZGVmYXVsdCAgICAgICAgICAgICAg IHwgICAgICA1IHwgICAgICAyNDQgfCAgICAgIDMwNyB8ICAgICAgNTEyMCB8ICAgICAgNTEyMAog c2V0cmVmcy5jOjExODIgICAgICAgICAgIHwgc2V0X3BsYW5fcmVmcyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAyMTIgfCAgICAgICA3NCB8ICAgICAgMTEyIHwgICAgICA0NzcwIHwg ICAgICA1NzEyCiBzZXRyZWZzLmM6MTIzNSAgICAgICAgICAgfCBzZXRfcGxhbl9yZWZzICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDI3MyB8ICAgICAgIDYwIHwgICAgICAxNDQgfCAg ICAgIDQ5OTYgfCAgICAgIDc4MDgKIHNldHJlZnMuYzoxNDE1ICAgICAgICAgICB8IHNldF9pbmRl eG9ubHlzY2FuX3JlZmVyZW5jZXMgICAgICAgICAgICAgIHwgICAxODI5IHwgICAgICAgMzUgfCAg ICAgICA4MCB8ICAgICAgNTg4OSB8ICAgICAxMzQyNAogc2V0cmVmcy5jOjIwNTUgICAgICAgICAg IHwgc2V0X2hhc2hfcmVmZXJlbmNlcyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQwNzUgfCAg ICAgICA1MSB8ICAgICAgMjcyIHwgICAgICA1NzczIHwgICAgIDExMDU2CiBzZXRyZWZzLmM6MjQz MyAgICAgICAgICAgfCBzZXRfam9pbl9yZWZlcmVuY2VzICAgICAgICAgICAgICAgICAgICAgICB8 ICAxNDA3NCB8ICAgICAgMTg5IHwgICAgICA3ODQgfCAgICAgIDUyOTQgfCAgICAgMTA4NDgKIHNl dHJlZnMuYzoyNDM0ICAgICAgICAgICB8IHNldF9qb2luX3JlZmVyZW5jZXMgICAgICAgICAgICAg ICAgICAgICAgIHwgIDE0MDc0IHwgICAgICAxNzggfCAgICAgIDU2MCB8ICAgICAgNTI5NCB8ICAg ICAxMDg0OAogc2V0cmVmcy5jOjI1ODQgICAgICAgICAgIHwgc2V0X3VwcGVyX3JlZmVyZW5jZXMg ICAgICAgICAgICAgICAgICAgICAgfCAgIDk3MjAgfCAgICAgICA0MiB8ICAgICAgNTYwIHwgICAg ICA1OTQ3IHwgICAgIDE0NjU2CiBzZXRyZWZzLmM6MzUyMSAgICAgICAgICAgfCBzZXRfcmV0dXJu aW5nX2NsYXVzZV9yZWZlcmVuY2VzICAgICAgICAgICB8ICAgIDQ0MiB8ICAgICAgIDYzIHwgICAg ICAyNzIgfCAgICAgIDQ5NTggfCAgICAgIDgyNzIKIHNldHJlZnMuYzozNjAzICAgICAgICAgICB8 IHNldF93aW5kb3dhZ2dfcnVuY29uZGl0aW9uX3JlZmVyZW5jZXMgICAgIHwgICAgNDU3IHwgICAg ICAgNzAgfCAgICAgIDM1MiB8ICAgICAgNTA2OSB8ICAgICAgODIyNAogdHN2ZWN0b3Jfb3AuYzoy NTU1ICAgICAgIHwgdHNfcHJvY2Vzc19jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDExNDQgfCAgICAgICAgMyB8ICAgICAgICA0IHwgICAgICA1MjE2IHwgICAgICA1MjE2CiB4YWN0 LmM6NTYxMSAgICAgICAgICAgICAgfCBTZXJpYWxpemVUcmFuc2FjdGlvblN0YXRlICAgICAgICAg ICAgICAgICB8ICAgIDE1OSB8ICAgICAgICA5IHwgICAgICAxMDQgfCAgICAgIDY2MDUgfCAgICAg MTY5MTIKIHhhY3QuYzo2NzAgICAgICAgICAgICAgICB8IEFzc2lnblRyYW5zYWN0aW9uSWQgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgIDMzIHwgICAgICAgMjkgfCAgICAgIDIwOCB8ICAgICAg NjI0MCB8ICAgICAxMTEzNgooMTYwIHJvd3MpCgo= --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-Provide-PG_STACK_DIRECTION-configuration-macro.patch" Content-Disposition: attachment; filename="v2-0001-Provide-PG_STACK_DIRECTION-configuration-macro.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt5j391 RnJvbSA3NTczZTQwZDU3ZTE1YWJjYThhMjlmOTkwN2QyOWYyZDRhOTdjMTE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgNCBNYXIgMjAyNiAxODoxMjo1NCArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MDEvMTldIFByb3ZpZGUgUEdfU1RBQ0tfRElSRUNUSU9OIGNvbmZpZ3VyYXRpb24gbWFjcm8uCgpH ZW5lcmFsIHB1cnBvc2Ugc3lzdGVtcyBjYXBhYmxlIG9mIHJ1bm5pbmcgUG9zdGdyZVNRTCB3aXRo IHN0YWNrcyB0aGF0Cmdyb3cgdXB3YXJkcyByYXRoZXIgZG93biBkb3dud2FyZHMgZG9uJ3Qgc2Vl bSB0byBiZSBmb3VuZCBpbiB0aGUgd2lsZAp0aGVzZSBkYXlzLgoKRGVmaW5lIGEgcGdfY29uZmln X21hbnVhbC5oIHZhcmlhYmxlIHRoYXQgY2FuIGJlIHNldCB0byAtMSBvciAxLCB0bwpyZW1vdmUg cnVudGltZSBicmFuY2hpbmcgZnJvbSBzdGFjay1tZWFzdXJpbmcgY29kZS4gIFdlIGNvdWxkIGFs d2F5cyBhZGQKZmVhdHVyZSBkZXRlY3Rpb24gaWYgYSBuZXcgc3lzdGVtIHNob3dzIHVwIHRoYXQg d2FudHMgdGhlIG90aGVyIHNldHRpbmcsCmJ1dCBydW50aW1lIGRvZXNuJ3QgbWFrZSBzZW5zZSBm b3IgYSBmaXhlZCBwcm9wZXJseSBvZiBhIHN5c3RlbS4KClRob3VnaCB0aGUgZXhpc3RpbmcgdXNl ciBvZiB0aGF0IGZhY3QgaXMgdmVyeSBzaW1wbGUgYW5kIGRvZXNuJ3Qgc2F2ZQptdWNoIGVmZm9y dCBhdCBhbGwsIGEgcHJvcG9zZWQgcGF0Y2ggd291bGQgYWxzbyBsaWtlIHRvIGtub3cgdGhpcyBh dApjb21waWxlIHRpbWUuCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9zdGFja19kZXB0aC5j IHwgMTAgKysrKysrKystLQogc3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVhbC5oICAgICAgIHwg IDggKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3N0YWNrX2RlcHRoLmMg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL3N0YWNrX2RlcHRoLmMKaW5kZXggNjFhMDdjZjgyNGUu LjNjZDFiNmYyMzM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3N0YWNrX2Rl cHRoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9zdGFja19kZXB0aC5jCkBAIC0xMTgs OSArMTE4LDE1IEBAIHN0YWNrX2lzX3Rvb19kZWVwKHZvaWQpCiAKIAkvKgogCSAqIFRha2UgYWJz IHZhbHVlLCBzaW5jZSBzdGFja3MgZ3JvdyB1cCBvbiBzb21lIG1hY2hpbmVzLCBkb3duIG9uIG90 aGVycworCSAqIChoaXN0b3JpY2FsKS4gIFRoaXMgZm9ybXVsYXRpb24gYW1vdW50cyB0byBhIG5v LW9wIG9uIG1vZGVybiBzeXN0ZW1zLgogCSAqLwotCWlmIChzdGFja19kZXB0aCA8IDApCi0JCXN0 YWNrX2RlcHRoID0gLXN0YWNrX2RlcHRoOworCXN0YWNrX2RlcHRoICo9IC0oUEdfU1RBQ0tfRElS RUNUSU9OKTsKKworCS8qCisJICogSWYgdGhpcyBhc3NlcnRpb24gZmFpbHMsIGVpdGhlciBQR19T VEFDS19ESVJFQ1RJT04gaXMgd3Jvbmcgb3IgdGhpcworCSAqIHN5c3RlbSBkb2Vzbid0IGhhdmUg YSB0cmFkaXRpb25hbCBzdGFjay4KKwkgKi8KKwlBc3NlcnQoc3RhY2tfZGVwdGggPj0gMCk7CiAK IAkvKgogCSAqIFRyb3VibGU/CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWdfbWFu dWFsLmggYi9zcmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmgKaW5kZXggNTIxYjQ5Yjg4ODgu Ljc1MDM1YjllNzk2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmgK KysrIGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVhbC5oCkBAIC0yMjIsNiArMjIyLDE0IEBA CiAgKi8KICNkZWZpbmUgUEdfSU9fQUxJR05fU0laRQkJNDA5NgogCisvKgorICogSGlzdG9yaWNh bCBzeXN0ZW1zIGhhZCBzdGFja3MgdGhhdCBncmV3IHVwd2FyZHMgaW4gYWRkcmVzcyBzcGFjZSwg YnV0IG5vbmUKKyAqIG9mIHRoZW0gcmVtYWluLiAgT3VyIHN0YWNrIGRlcHRoLWNoZWNraW5nIGNv ZGUgbm8gbG9uZ2VyIHdhc3RlcyBjeWNsZXMKKyAqIGNvbnNpZGVyaW5nIHRoYXQgcG9zc2liaWxp dHkgYXQgcnVudGltZS4gIEl0IGFzc3VtZXMgKGJ1dCBhbHNvIGFzc2VydHMpCisgKiB0aGF0IHRo ZSBzdGFjayBncm93cyBpbiB0aGUgZGlyZWN0aW9uIGRlZmluZWQgaGVyZTogLTEgb3IgKzEuCisg Ki8KKyNkZWZpbmUgUEdfU1RBQ0tfRElSRUNUSU9OIC0xCisKIC8qCiAgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICogVGhlIGZvbGxvd2luZyBzeW1ib2xzIGFyZSBmb3IgZW5hYmxpbmcgZGVidWdnaW5nIGNv ZGUsIG5vdCBmb3IKLS0gCjIuNTMuMAoK --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0002-Provide-pg_has_builtin-macro.patch" Content-Disposition: attachment; filename="v2-0002-Provide-pg_has_builtin-macro.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt5l122 RnJvbSAyZGU2Njc1YjY2Mzg4MzQxYmE5ZDcxYmNhYTQ3YzQ3ZTg3ZjY2N2I5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMTEgTWFyIDIwMjYgMTM6MjY6MjIgKzEzMDAKU3ViamVjdDogW1BBVENIIHYy IDAyLzE5XSBQcm92aWRlIHBnX2hhc19idWlsdGluKCkgbWFjcm8uCgpUaGUgdHJhZGl0aW9uYWwg YXBwcm9hY2ggb2YgY29uZmlndXJlL21lc29uIHByb2JsZW1zIHRoYXQgZGVmaW5lCkhBVkVfX0JV SUxUSU5fRk9PIGRvZXNuJ3Qgd29yayBmb3IgcmVzdWx0cyB0aGF0IHZhcnkgYWNyb3NzIHRoZSBD QywgQ1hYCmFuZCBDTEFORyBjb21waWxlcnMuICBJbiBDbGFuZyBzaW5jZSBlYXJseSB2ZXJzaW9u LCBhbmQgaW4gR0NDIDEwKywgeW91CmNhbiB0ZXN0IHdpdGggX19oYXNfYnVpbHRpbihfX2J1aWx0 aW5fZm9vKSBpbnN0ZWFkLiAgVGhpcyB3cmFwcGVyIGNhbiBiZQp0ZXN0ZWQgaW4gcHJlcHJvY2Vz c29yIGNvbmRpdGlvbnMgdXNpbmcgcGdfaGFzX2J1aWx0aW4oX19idWlsdGluX2ZvbykuCgpUaGlz IGFwcHJvYWNoIGhhcyBhIGJvb3RzdHJhcHBpbmcgcHJvYmxlbSwgc2luY2UgX19oYXNfYnVpbHRp bigpIGl0c2VsZgp3YXMgYWRvcHRlZCBvbmx5IH42IHllYXJzIGFnbyBieSBHQ0MsIHNvIGl0IHdp bGwgYWx3YXlzIGV2YWx1YXRlIHRvCmZhbHNlIGZvciBvbGRlciBHQ0MgdmVyc2lvbnMuICBUcmFk aXRpb25hbCBjb25maWd1cmUgcHJvYmVzIHRoZXJlZm9yZQpyZW1haW4gdXNlZnVsIGZvciB3ZWxs IGVzdGFibGlzaGVkIGJ1aWx0aW5zIHdoZXJlIHRoZSB0aHJlZSBzZWxlY3RlZApjb21waWxlcnMg YXJlIHVubGlrZWx5IHRvIGRpZmZlci4gIFRoaXMgbWFjcm8gaXMgdXNlZnVsIGZvciBidWlsdGlu cwp0aGF0IHdlcmUgbW9yZSByZWNlbnRseSBpbnZlbnRlZCwgb3IgYWRvcHRlZCBsYXRlIGJ5IG9u ZSBvciB0aGUgb3RoZXIgb2YKR0NDIGFuZCBDbGFuZy4KLS0tCiBzcmMvaW5jbHVkZS9jLmggfCAx MCArKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNsdWRlL2MuaAppbmRleCA1YjY3ODI4MzQ2OS4u NWM3NGRhNTAwNGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVk ZS9jLmgKQEAgLTExNiw2ICsxMTYsMTYgQEAgZXh0ZXJuICJDKysiCiAjZGVmaW5lIGlubGluZQog I2VuZGlmCiAKKy8qCisgKiBDbGFuZyBhbmQgR0NDIDEwKyBjYW4gdGVzdCBmb3IgYSBidWlsdGlu J3MgcHJlc2VuY2UuICBUaGlzIGNhbiBiZSB1c2VmdWwKKyAqIGZvciBidWlsdGlucyB0aGF0IG1p Z2h0IGJlIHByZXNlbnQgZm9yIENDIGJ1dCBub3QgQ1hYIG9yIENMQU5HLgorICovCisjaWZkZWYg X19oYXNfYnVpbHRpbgorI2RlZmluZSBwZ19oYXNfYnVpbHRpbih4KSBfX2hhc19idWlsdGluKHgp CisjZWxzZQorI2RlZmluZSBwZ19oYXNfYnVpbHRpbih4KSAwCisjZW5kaWYKKwogLyoKICAqIEF0 dHJpYnV0ZSBtYWNyb3MKICAqCi0tIAoyLjUzLjAKCg== --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0003-Refactor-check_stack_depth-mechanism.patch" Content-Disposition: attachment; filename="v2-0003-Refactor-check_stack_depth-mechanism.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt5my93 RnJvbSAzYTFkYjhmMDRmNjYxYWUyY2I5M2IyZmVjZjZiMDIyNzdmZTAxZmQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IEZyaSwgNiBNYXIgMjAyNiAyMDo1MzoyMyArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MDMvMTldIFJlZmFjdG9yIGNoZWNrX3N0YWNrX2RlcHRoKCkgbWVjaGFuaXNtLgoKKiBUaGUgY2hl Y2sgaXMgbm93IGlubGluZS4KKiBUaGUgc3RhY2sgaXMgbm93IGFzc3VtZWQgdG8gZ3JvdyBpbiBQ R19TVEFDS19ESVJFQ1RJT04uCiogQSBuZXcgInNvZnQiIGxpbWl0IGlzIGV4cG9zZWQsIGZvciBh IGxhdGVyIHBhdGNoIHRvIHVzZS4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3N0YWNrX2Rl cHRoLmMgfCAxMTMgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9taXNj YWRtaW4uaCAgICAgICAgICAgICAgfCAgNTMgKysrKysrKysrKysrLQogMiBmaWxlcyBjaGFuZ2Vk LCA5MCBpbnNlcnRpb25zKCspLCA3NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL3N0YWNrX2RlcHRoLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3N0 YWNrX2RlcHRoLmMKaW5kZXggM2NkMWI2ZjIzMzYuLmFlYTU4OWUxYTI3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9taXNjL3N0YWNrX2RlcHRoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9zdGFja19kZXB0aC5jCkBAIC0yNSwxNSArMjUsMjggQEAKIC8qIEdVQyB2YXJpYWJs ZSBmb3IgbWF4aW11bSBzdGFjayBkZXB0aCAobWVhc3VyZWQgaW4ga2lsb2J5dGVzKSAqLwogaW50 CQkJbWF4X3N0YWNrX2RlcHRoID0gMTAwOwogCi0vKiBtYXhfc3RhY2tfZGVwdGggY29udmVydGVk IHRvIGJ5dGVzIGZvciBzcGVlZCBvZiBjaGVja2luZyAqLwotc3RhdGljIHNzaXplX3QgbWF4X3N0 YWNrX2RlcHRoX2J5dGVzID0gMTAwICogKHNzaXplX3QpIDEwMjQ7Ci0KIC8qCi0gKiBTdGFjayBi YXNlIHBvaW50ZXIgLS0gaW5pdGlhbGl6ZWQgYnkgc2V0X3N0YWNrX2Jhc2UoKSwgd2hpY2gKLSAq IHNob3VsZCBiZSBjYWxsZWQgZnJvbSBtYWluKCkuCisgKiBUaHJlc2hvbGRzIC0tIGluaXRpYWxp emVkIGJ5IHNldF9zdGFja19iYXNlKCkuICBUaGVzZSBoYXZlIGV4dGVybmFsIGxpbmthZ2UKKyAq IHNvIHRoZXkgY2FuIGJlIHVzZWQgYnkgaW5saW5lZCBjb2RlLgogICovCi1zdGF0aWMgY2hhciAq c3RhY2tfYmFzZV9wdHIgPSBOVUxMOworY29uc3Qgdm9pZCAqc3RhY2tfYmFzZV9wdHIgPSBOVUxM OworY29uc3Qgdm9pZCAqc3RhY2tfc29mdF9saW1pdF9wdHIgPSBOVUxMOworY29uc3Qgdm9pZCAq c3RhY2tfaGFyZF9saW1pdF9wdHIgPSBOVUxMOworCisKK3N0YXRpYyB2b2lkCitjb21wdXRlX2xp bWl0X3B0cnMoaW50IGtiKQoreworCXNzaXplX3QJCWJ5dGVzID0ga2IgKiAoc3NpemVfdCkgMTAy NDsKKworCS8qIEFkdmVydGlzZSBhIHNvZnQgbGltaXQgaGFsZndheSB0aHJvdWdoIHRoZSBhbGxv d2VkIHNpemUuICovCisJc3RhY2tfc29mdF9saW1pdF9wdHIgPSAoY29uc3QgY2hhciAqKSBzdGFj a19iYXNlX3B0ciArCisJCShieXRlcyAvIDIpICogUEdfU1RBQ0tfRElSRUNUSU9OOwogCisJLyog VGhpcyBpcyB0aGUgc2l6ZSBhdCB3aGljaCBjaGVja19zdGFja19kZXB0aCgpIHdpbGwgZmFpbC4g Ki8KKwlzdGFja19oYXJkX2xpbWl0X3B0ciA9IChjb25zdCBjaGFyICopIHN0YWNrX2Jhc2VfcHRy ICsKKwkJYnl0ZXMgKiBQR19TVEFDS19ESVJFQ1RJT047Cit9CiAKIC8qCiAgKiBzZXRfc3RhY2tf YmFzZTogc2V0IHVwIHJlZmVyZW5jZSBwb2ludCBmb3Igc3RhY2sgZGVwdGggY2hlY2tpbmcKQEAg LTQ4LDcgKzYxLDcgQEAgc2V0X3N0YWNrX2Jhc2Uodm9pZCkKICNlbmRpZgogCXBnX3N0YWNrX2Jh c2VfdCBvbGQ7CiAKLQlvbGQgPSBzdGFja19iYXNlX3B0cjsKKwlvbGQgPSAocGdfc3RhY2tfYmFz ZV90KSBzdGFja19iYXNlX3B0cjsKIAogCS8qCiAJICogU2V0IHVwIHJlZmVyZW5jZSBwb2ludCBm b3Igc3RhY2sgZGVwdGggY2hlY2tpbmcuICBPbiByZWNlbnQgZ2NjIHdlIHVzZQpAQCAtNjEsNiAr NzQsOCBAQCBzZXRfc3RhY2tfYmFzZSh2b2lkKQogCXN0YWNrX2Jhc2VfcHRyID0gJnN0YWNrX2Jh c2U7CiAjZW5kaWYKIAorCWNvbXB1dGVfbGltaXRfcHRycyhtYXhfc3RhY2tfZGVwdGgpOworCiAJ cmV0dXJuIG9sZDsKIH0KIApAQCAtNzYsNzMgKzkxLDExIEBAIHNldF9zdGFja19iYXNlKHZvaWQp CiB2b2lkCiByZXN0b3JlX3N0YWNrX2Jhc2UocGdfc3RhY2tfYmFzZV90IGJhc2UpCiB7Ci0Jc3Rh Y2tfYmFzZV9wdHIgPSBiYXNlOwotfQotCi0KLS8qCi0gKiBjaGVja19zdGFja19kZXB0aC9zdGFj a19pc190b29fZGVlcDogY2hlY2sgZm9yIGV4Y2Vzc2l2ZWx5IGRlZXAgcmVjdXJzaW9uCi0gKgot ICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIHNvbWVwbGFjZSBpbiBhbnkgcmVjdXJzaXZlIHJvdXRp bmUgdGhhdCBtaWdodCBwb3NzaWJseQotICogcmVjdXJzZSBkZWVwIGVub3VnaCB0byBvdmVyZmxv dyB0aGUgc3RhY2suICBNb3N0IFVuaXhlbiB0cmVhdCBzdGFjawotICogb3ZlcmZsb3cgYXMgYW4g dW5yZWNvdmVyYWJsZSBTSUdTRUdWLCBzbyB3ZSB3YW50IHRvIGVycm9yIG91dCBvdXJzZWx2ZXMK LSAqIGJlZm9yZSBoaXR0aW5nIHRoZSBoYXJkd2FyZSBsaW1pdC4KLSAqCi0gKiBjaGVja19zdGFj a19kZXB0aCgpIGp1c3QgdGhyb3dzIGFuIGVycm9yIHN1bW1hcmlseS4gIHN0YWNrX2lzX3Rvb19k ZWVwKCkKLSAqIGNhbiBiZSB1c2VkIGJ5IGNvZGUgdGhhdCB3YW50cyB0byBoYW5kbGUgdGhlIGVy cm9yIGNvbmRpdGlvbiBpdHNlbGYuCi0gKi8KLXZvaWQKLWNoZWNrX3N0YWNrX2RlcHRoKHZvaWQp Ci17Ci0JaWYgKHN0YWNrX2lzX3Rvb19kZWVwKCkpCi0JewotCQllcmVwb3J0KEVSUk9SLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfU1RBVEVNRU5UX1RPT19DT01QTEVYKSwKLQkJCQkgZXJybXNnKCJz dGFjayBkZXB0aCBsaW1pdCBleGNlZWRlZCIpLAotCQkJCSBlcnJoaW50KCJJbmNyZWFzZSB0aGUg Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgXCJtYXhfc3RhY2tfZGVwdGhcIiAoY3VycmVudGx5ICVk a0IpLCAiCi0JCQkJCQkgImFmdGVyIGVuc3VyaW5nIHRoZSBwbGF0Zm9ybSdzIHN0YWNrIGRlcHRo IGxpbWl0IGlzIGFkZXF1YXRlLiIsCi0JCQkJCQkgbWF4X3N0YWNrX2RlcHRoKSkpOwotCX0KLX0K LQotYm9vbAotc3RhY2tfaXNfdG9vX2RlZXAodm9pZCkKLXsKLQljaGFyCQlzdGFja190b3BfbG9j OwotCXNzaXplX3QJCXN0YWNrX2RlcHRoOwotCi0JLyoKLQkgKiBDb21wdXRlIGRpc3RhbmNlIGZy b20gcmVmZXJlbmNlIHBvaW50IHRvIG15IGxvY2FsIHZhcmlhYmxlcwotCSAqLwotCXN0YWNrX2Rl cHRoID0gKHNzaXplX3QpIChzdGFja19iYXNlX3B0ciAtICZzdGFja190b3BfbG9jKTsKKwlzdGFj a19iYXNlX3B0ciA9IChjb25zdCB2b2lkICopIGJhc2U7CiAKLQkvKgotCSAqIFRha2UgYWJzIHZh bHVlLCBzaW5jZSBzdGFja3MgZ3JvdyB1cCBvbiBzb21lIG1hY2hpbmVzLCBkb3duIG9uIG90aGVy cwotCSAqIChoaXN0b3JpY2FsKS4gIFRoaXMgZm9ybXVsYXRpb24gYW1vdW50cyB0byBhIG5vLW9w IG9uIG1vZGVybiBzeXN0ZW1zLgotCSAqLwotCXN0YWNrX2RlcHRoICo9IC0oUEdfU1RBQ0tfRElS RUNUSU9OKTsKLQotCS8qCi0JICogSWYgdGhpcyBhc3NlcnRpb24gZmFpbHMsIGVpdGhlciBQR19T VEFDS19ESVJFQ1RJT04gaXMgd3Jvbmcgb3IgdGhpcwotCSAqIHN5c3RlbSBkb2Vzbid0IGhhdmUg YSB0cmFkaXRpb25hbCBzdGFjay4KLQkgKi8KLQlBc3NlcnQoc3RhY2tfZGVwdGggPj0gMCk7Ci0K LQkvKgotCSAqIFRyb3VibGU/Ci0JICoKLQkgKiBUaGUgdGVzdCBvbiBzdGFja19iYXNlX3B0ciBw cmV2ZW50cyB1cyBmcm9tIGVycm9yaW5nIG91dCBpZiBjYWxsZWQKLQkgKiBiZWZvcmUgdGhhdCdz IGJlZW4gc2V0LiAgTG9naWNhbGx5IGl0IHNob3VsZCBiZSBkb25lIGZpcnN0LCBidXQgcHV0dGlu ZwotCSAqIGl0IGxhc3QgYXZvaWRzIHdhc3RpbmcgY3ljbGVzIGR1cmluZyBub3JtYWwgY2FzZXMu Ci0JICovCi0JaWYgKHN0YWNrX2RlcHRoID4gbWF4X3N0YWNrX2RlcHRoX2J5dGVzICYmCi0JCXN0 YWNrX2Jhc2VfcHRyICE9IE5VTEwpCi0JCXJldHVybiB0cnVlOwotCi0JcmV0dXJuIGZhbHNlOwor CWNvbXB1dGVfbGltaXRfcHRycyhtYXhfc3RhY2tfZGVwdGgpOwogfQogCi0KIC8qIEdVQyBjaGVj ayBob29rIGZvciBtYXhfc3RhY2tfZGVwdGggKi8KIGJvb2wKIGNoZWNrX21heF9zdGFja19kZXB0 aChpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291cmNlKQpAQCAtMTYwLDEz ICsxMTMsMjUgQEAgY2hlY2tfbWF4X3N0YWNrX2RlcHRoKGludCAqbmV3dmFsLCB2b2lkICoqZXh0 cmEsIEd1Y1NvdXJjZSBzb3VyY2UpCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiBPdXQtb2Yt bGluZSBwYXJ0IG9mIGNoZWNrX3N0YWNrX2RlcHRoKCkuCisgKi8KK3ZvaWQKK3JlcG9ydF9zdGFj a19pc190b29fZGVlcCh2b2lkKQoreworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJD T0RFX1NUQVRFTUVOVF9UT09fQ09NUExFWCksCisJCQkgZXJybXNnKCJzdGFjayBkZXB0aCBsaW1p dCBleGNlZWRlZCIpLAorCQkJIGVycmhpbnQoIkluY3JlYXNlIHRoZSBjb25maWd1cmF0aW9uIHBh cmFtZXRlciBcIm1heF9zdGFja19kZXB0aFwiIChjdXJyZW50bHkgJWRrQiksICIKKwkJCQkJICJh ZnRlciBlbnN1cmluZyB0aGUgcGxhdGZvcm0ncyBzdGFjayBkZXB0aCBsaW1pdCBpcyBhZGVxdWF0 ZS4iLAorCQkJCQkgbWF4X3N0YWNrX2RlcHRoKSkpOworfQorCiAvKiBHVUMgYXNzaWduIGhvb2sg Zm9yIG1heF9zdGFja19kZXB0aCAqLwogdm9pZAogYXNzaWduX21heF9zdGFja19kZXB0aChpbnQg bmV3dmFsLCB2b2lkICpleHRyYSkKIHsKLQlzc2l6ZV90CQluZXd2YWxfYnl0ZXMgPSBuZXd2YWwg KiAoc3NpemVfdCkgMTAyNDsKLQotCW1heF9zdGFja19kZXB0aF9ieXRlcyA9IG5ld3ZhbF9ieXRl czsKKwljb21wdXRlX2xpbWl0X3B0cnMobmV3dmFsKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggZjE2 ZjM1NjU5YjkuLmM2MTg4MDRlNzFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4u aAorKysgYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApAQCAtMjkzLDE1ICsyOTMsNjQgQEAgZXh0 ZXJuIFBHRExMSU1QT1JUIGJvb2wgVmFjdXVtQ29zdEFjdGl2ZTsKIAogZXh0ZXJuIFBHRExMSU1Q T1JUIGludCBtYXhfc3RhY2tfZGVwdGg7CiAKK2V4dGVybiBQR0RMTElNUE9SVCBjb25zdCB2b2lk ICpzdGFja19iYXNlX3B0cjsKK2V4dGVybiBQR0RMTElNUE9SVCBjb25zdCB2b2lkICpzdGFja19z b2Z0X2xpbWl0X3B0cjsKK2V4dGVybiBQR0RMTElNUE9SVCBjb25zdCB2b2lkICpzdGFja19oYXJk X2xpbWl0X3B0cjsKKwogLyogUmVxdWlyZWQgZGF5bGlnaHQgYmV0d2VlbiBtYXhfc3RhY2tfZGVw dGggYW5kIHRoZSBrZXJuZWwgbGltaXQsIGluIGJ5dGVzICovCiAjZGVmaW5lIFNUQUNLX0RFUFRI X1NMT1AgKDUxMiAqIDEwMjQpCiAKKy8qIENoZWNrIGlmIHN0YWNrIHBvaW50ZXIgcDEgaXMgZGVl cGVyIHRoYW4gcDIuICovCitzdGF0aWMgaW5saW5lIGJvb2wKK3N0YWNrX3B0cl9kZWVwZXJfcChj b25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpCit7CisJY29uc3QgY2hhciAqYzEgPSAoY29u c3QgY2hhciAqKSBwMTsKKwljb25zdCBjaGFyICpjMiA9IChjb25zdCBjaGFyICopIHAyOworCisJ aWYgKFBHX1NUQUNLX0RJUkVDVElPTiA8IDApCisJCXJldHVybiBjMSA8IGMyOworCWVsc2UKKwkJ cmV0dXJuIGMxID4gYzI7Cit9CisKKy8qIENoZWNrIGlmIHRoZSBzdGFjayBoYXMgZXhjZWVkZWQg dGhlIGNvbmZpZ3VyZWQgaGFyZCBsaW1pdC4gKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorc3RhY2tf aXNfdG9vX2RlZXAodm9pZCkKK3sKKyNpZiBwZ19oYXNfYnVpbHRpbihfX2J1aWx0aW5fc3RhY2tf YWRkcmVzcykKKwljb25zdCBjaGFyICpzcCA9IChjb25zdCBjaGFyICopIF9fYnVpbHRpbl9zdGFj a19hZGRyZXNzKCk7CisjZWxzZQorCWNoYXIJCWM7CisJY29uc3QgY2hhciAqc3AgPSAmYzsKKyNl bmRpZgorCisJcmV0dXJuIHN0YWNrX3B0cl9kZWVwZXJfcChzcCwgc3RhY2tfaGFyZF9saW1pdF9w dHIpOworfQorCitleHRlcm4gdm9pZCByZXBvcnRfc3RhY2tfaXNfdG9vX2RlZXAodm9pZCk7CisK Ky8qCisgKiBjaGVja19zdGFja19kZXB0aC9zdGFja19pc190b29fZGVlcDogY2hlY2sgZm9yIGV4 Y2Vzc2l2ZWx5IGRlZXAgcmVjdXJzaW9uCisgKgorICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIHNv bWVwbGFjZSBpbiBhbnkgcmVjdXJzaXZlIHJvdXRpbmUgdGhhdCBtaWdodCBwb3NzaWJseQorICog cmVjdXJzZSBkZWVwIGVub3VnaCB0byBvdmVyZmxvdyB0aGUgc3RhY2suICBNb3N0IFVuaXhlbiB0 cmVhdCBzdGFjaworICogb3ZlcmZsb3cgYXMgYW4gdW5yZWNvdmVyYWJsZSBTSUdTRUdWLCBzbyB3 ZSB3YW50IHRvIGVycm9yIG91dCBvdXJzZWx2ZXMKKyAqIGJlZm9yZSBoaXR0aW5nIHRoZSBoYXJk d2FyZSBsaW1pdC4KKyAqCisgKiBjaGVja19zdGFja19kZXB0aCgpIGp1c3QgdGhyb3dzIGFuIGVy cm9yIHN1bW1hcmlseS4gIHN0YWNrX2lzX3Rvb19kZWVwKCkKKyAqIGNhbiBiZSB1c2VkIGJ5IGNv ZGUgdGhhdCB3YW50cyB0byBoYW5kbGUgdGhlIGVycm9yIGNvbmRpdGlvbiBpdHNlbGYuCisgKi8K K3N0YXRpYyBpbmxpbmUgdm9pZAorY2hlY2tfc3RhY2tfZGVwdGgodm9pZCkKK3sKKwlpZiAodW5s aWtlbHkoc3RhY2tfaXNfdG9vX2RlZXAoKSkpCisJCXJlcG9ydF9zdGFja19pc190b29fZGVlcCgp OworfQorCiB0eXBlZGVmIGNoYXIgKnBnX3N0YWNrX2Jhc2VfdDsKIAogZXh0ZXJuIHBnX3N0YWNr X2Jhc2VfdCBzZXRfc3RhY2tfYmFzZSh2b2lkKTsKIGV4dGVybiB2b2lkIHJlc3RvcmVfc3RhY2tf YmFzZShwZ19zdGFja19iYXNlX3QgYmFzZSk7Ci1leHRlcm4gdm9pZCBjaGVja19zdGFja19kZXB0 aCh2b2lkKTsKLWV4dGVybiBib29sIHN0YWNrX2lzX3Rvb19kZWVwKHZvaWQpOwogZXh0ZXJuIHNz aXplX3QgZ2V0X3N0YWNrX2RlcHRoX3JsaW1pdCh2b2lkKTsKIAogLyogaW4gdGNvcC91dGlsaXR5 LmMgKi8KLS0gCjIuNTMuMAoK --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0004-Provide-way-for-macros-to-detect-PG_TRY-scope.patch" Content-Disposition: attachment; filename="v2-0004-Provide-way-for-macros-to-detect-PG_TRY-scope.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt5p4v4 RnJvbSBlMDllMmIwZjEyZGYzZWFhNTVmMzdkYjU1ZDBkMDBkMTJhOTJiZjhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgNCBNYXIgMjAyNiAxNzozMDo0NiArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MDQvMTldIFByb3ZpZGUgd2F5IGZvciBtYWNyb3MgdG8gZGV0ZWN0IFBHX1RSWSBzY29wZS4KCkZv ciBjb2RlIHRoYXQgY2FuJ3Qgd29yayBzYWZlbHkgYXJvdW5kIHNldGptcCgpL2xvbmdqbXAoKSBh bmQgdGh1cyBpbiBhClBHX1RSWS9DQVRDSC9GSU5BTExZIGJsb2NrLCBwcm92aWRlIGEgbWFjcm8K InBnX2luX2xleGljYWxfc2NvcGUoUEdfVFJZKSIgdGhhdCBjYW4gYmUgdGVzdGVkIGF0IGNvbXBp bGUgdGltZS4KLS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICAgICB8IDEwMSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICB8 ICAxMyArKysrKwogbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgfCAgIDkgKysrKwogc3JjL2lu Y2x1ZGUvYy5oICAgICAgICAgICAgfCAgMjEgKysrKysrKysKIHNyYy9pbmNsdWRlL3BnX2NvbmZp Zy5oLmluIHwgICA2ICsrKwogc3JjL2luY2x1ZGUvdXRpbHMvZWxvZy5oICAgfCAgMzYgKysrKysr KysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAxODYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBh L2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCA0MjYyMWVjZDA1MS4uNWIzYTk5NzVlOWUgMTAw NzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTU5OTIsNiArNTk5MiwxMDcg QEAgaWYgdGVzdCB4IiRwZ2FjX2N2X3Byb2dfQ1hYX2N4eGZsYWdzX19Xc2hhZG93X2NvbXBhdGli bGVfbG9jYWwiID0geCJ5ZXMiOyB0aGVuCiBmaQogCiAKKyAgIyBXZSBhbHNvIHdhbnQgdG8gbWFr ZSB0aGUgdXNhZ2Ugb2YgdGhlIGFib3ZlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIG1hY3Jvcy4KKyAg Tk9UX1RIRV9DRkxBR1M9IiIKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyB3aGV0aGVyICR7Q0N9IHN1cHBvcnRzIC1Xc2hhZG93PWNvbXBhdGlibGUt bG9jYWwsIGZvciBOT1RfVEhFX0NGTEFHUyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0 aGVyICR7Q0N9IHN1cHBvcnRzIC1Xc2hhZG93PWNvbXBhdGlibGUtbG9jYWwsIGZvciBOT1RfVEhF X0NGTEFHUy4uLiAiID4mNjsgfQoraWYgJHtwZ2FjX2N2X3Byb2dfQ0NfY2ZsYWdzX19Xc2hhZG93 X2NvbXBhdGlibGVfbG9jYWwrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVk KSAiID4mNgorZWxzZQorICBwZ2FjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK3BnYWNfc2F2ZV9DQz0k Q0MKK0NDPSR7Q0N9CitDRkxBR1M9IiR7Tk9UX1RIRV9DRkxBR1N9IC1Xc2hhZG93PWNvbXBhdGli bGUtbG9jYWwiCithY19zYXZlX2Nfd2Vycm9yX2ZsYWc9JGFjX2Nfd2Vycm9yX2ZsYWcKK2FjX2Nf d2Vycm9yX2ZsYWc9eWVzCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf ZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAg cmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0 aGVuIDoKKyAgcGdhY19jdl9wcm9nX0NDX2NmbGFnc19fV3NoYWRvd19jb21wYXRpYmxlX2xvY2Fs PXllcworZWxzZQorICBwZ2FjX2N2X3Byb2dfQ0NfY2ZsYWdzX19Xc2hhZG93X2NvbXBhdGlibGVf bG9jYWw9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0 IGNvbmZ0ZXN0LiRhY19leHQKK2FjX2Nfd2Vycm9yX2ZsYWc9JGFjX3NhdmVfY193ZXJyb3JfZmxh ZworQ0ZMQUdTPSIkcGdhY19zYXZlX0NGTEFHUyIKK0NDPSIkcGdhY19zYXZlX0NDIgorZmkKK3sg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkcGdhY19jdl9w cm9nX0NDX2NmbGFnc19fV3NoYWRvd19jb21wYXRpYmxlX2xvY2FsIiA+JjUKKyRhc19lY2hvICIk cGdhY19jdl9wcm9nX0NDX2NmbGFnc19fV3NoYWRvd19jb21wYXRpYmxlX2xvY2FsIiA+JjY7IH0K K2lmIHRlc3QgeCIkcGdhY19jdl9wcm9nX0NDX2NmbGFnc19fV3NoYWRvd19jb21wYXRpYmxlX2xv Y2FsIiA9IHgieWVzIjsgdGhlbgorICBOT1RfVEhFX0NGTEFHUz0iJHtOT1RfVEhFX0NGTEFHU30g LVdzaGFkb3c9Y29tcGF0aWJsZS1sb2NhbCIKK2ZpCisKKyAgaWYgdGVzdCAtbiAiJE5PVF9USEVf Q0ZMQUdTIjsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBXQVJOSU5HX0NDX1NIQURPV19DT01Q QVRJQkxFX0xPQ0FMIDEiID4+Y29uZmRlZnMuaAorCisgIGZpCisgIE5PVF9USEVfQ0ZMQUdTPSIi CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hl dGhlciAke0NYWH0gc3VwcG9ydHMgLVdzaGFkb3c9Y29tcGF0aWJsZS1sb2NhbCwgZm9yIE5PVF9U SEVfQ0ZMQUdTIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJHtDWFh9IHN1cHBv cnRzIC1Xc2hhZG93PWNvbXBhdGlibGUtbG9jYWwsIGZvciBOT1RfVEhFX0NGTEFHUy4uLiAiID4m NjsgfQoraWYgJHtwZ2FjX2N2X3Byb2dfQ1hYX2N4eGZsYWdzX19Xc2hhZG93X2NvbXBhdGlibGVf bG9jYWwrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxz ZQorICBwZ2FjX3NhdmVfQ1hYRkxBR1M9JENYWEZMQUdTCitwZ2FjX3NhdmVfQ1hYPSRDWFgKK0NY WD0ke0NYWH0KK0NYWEZMQUdTPSIke05PVF9USEVfQ0ZMQUdTfSAtV3NoYWRvdz1jb21wYXRpYmxl LWxvY2FsIgorYWNfc2F2ZV9jeHhfd2Vycm9yX2ZsYWc9JGFjX2N4eF93ZXJyb3JfZmxhZworYWNf Y3h4X3dlcnJvcl9mbGFnPXllcworYWNfZXh0PWNwcAorYWNfY3BwPSckQ1hYQ1BQICRDUFBGTEFH UycKK2FjX2NvbXBpbGU9JyRDWFggLWMgJENYWEZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNf ZXh0ID4mNScKK2FjX2xpbms9JyRDWFggLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDWFhGTEFHUyAk Q1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxl cl9nbnU9JGFjX2N2X2N4eF9jb21waWxlcl9nbnUKKworY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4g KCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jeHhfdHJ5X2Nv bXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgcGdhY19jdl9wcm9nX0NYWF9jeHhmbGFnc19fV3No YWRvd19jb21wYXRpYmxlX2xvY2FsPXllcworZWxzZQorICBwZ2FjX2N2X3Byb2dfQ1hYX2N4eGZs YWdzX19Xc2hhZG93X2NvbXBhdGlibGVfbG9jYWw9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0 LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2FjX2V4dD1jCithY19j cHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdT IGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4 dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScK K2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworYWNfY3h4X3dlcnJvcl9m bGFnPSRhY19zYXZlX2N4eF93ZXJyb3JfZmxhZworQ1hYRkxBR1M9IiRwZ2FjX3NhdmVfQ1hYRkxB R1MiCitDWFg9IiRwZ2FjX3NhdmVfQ1hYIgorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkcGdhY19jdl9wcm9nX0NYWF9jeHhmbGFnc19fV3NoYWRv d19jb21wYXRpYmxlX2xvY2FsIiA+JjUKKyRhc19lY2hvICIkcGdhY19jdl9wcm9nX0NYWF9jeHhm bGFnc19fV3NoYWRvd19jb21wYXRpYmxlX2xvY2FsIiA+JjY7IH0KK2lmIHRlc3QgeCIkcGdhY19j dl9wcm9nX0NYWF9jeHhmbGFnc19fV3NoYWRvd19jb21wYXRpYmxlX2xvY2FsIiA9IHgieWVzIjsg dGhlbgorICBOT1RfVEhFX0NGTEFHUz0iJHtOT1RfVEhFX0NGTEFHU30gLVdzaGFkb3c9Y29tcGF0 aWJsZS1sb2NhbCIKK2ZpCisKKyAgaWYgdGVzdCAtbiAiJE5PVF9USEVfQ0ZMQUdTIjsgdGhlbgor CiskYXNfZWNobyAiI2RlZmluZSBXQVJOSU5HX0NYWF9TSEFET1dfQ09NUEFUSUJMRV9MT0NBTCAx IiA+PmNvbmZkZWZzLmgKKworICBmaQogICAjIFRoaXMgd2FzIGluY2x1ZGVkIGluIC1XYWxsLy1X Zm9ybWF0IGluIG9sZGVyIEdDQyB2ZXJzaW9ucwogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJHtDQ30gc3VwcG9ydHMgLVdmb3JtYXQt c2VjdXJpdHksIGZvciBDRkxBR1MiID4mNQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29u ZmlndXJlLmFjCmluZGV4IDYxZWM4OTVkMjNjLi5kZTAyZmRjZjA1OCAxMDA2NDQKLS0tIGEvY29u ZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNTc3LDYgKzU3NywxOSBAQCBpZiB0ZXN0 ICIkR0NDIiA9IHllcyAtYSAiJElDQyIgPSBubzsgdGhlbgogICBQR0FDX1BST0dfQ1hYX0NGTEFH U19PUFQoWy1XY2FzdC1mdW5jdGlvbi10eXBlXSkKICAgUEdBQ19QUk9HX0NDX0NGTEFHU19PUFQo Wy1Xc2hhZG93PWNvbXBhdGlibGUtbG9jYWxdKQogICBQR0FDX1BST0dfQ1hYX0NGTEFHU19PUFQo Wy1Xc2hhZG93PWNvbXBhdGlibGUtbG9jYWxdKQorICAjIFdlIGFsc28gd2FudCB0byBtYWtlIHRo ZSB1c2FnZSBvZiB0aGUgYWJvdmUgb3B0aW9ucyBhdmFpbGFibGUgdG8gbWFjcm9zLgorICBOT1Rf VEhFX0NGTEFHUz0iIgorICBQR0FDX1BST0dfVkFSQ0NfVkFSRkxBR1NfT1BUKENDLCBOT1RfVEhF X0NGTEFHUywgWy1Xc2hhZG93PWNvbXBhdGlibGUtbG9jYWxdKQorICBpZiB0ZXN0IC1uICIkTk9U X1RIRV9DRkxBR1MiOyB0aGVuCisgICAgQUNfREVGSU5FKFtXQVJOSU5HX0NDX1NIQURPV19DT01Q QVRJQkxFX0xPQ0FMXSwgMSwKKyAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdXIgQyBj b21waWxlciB1bmRlcnN0YW5kcyAtV3NoYWRvdz1jb21wYXRpYmxlLWxvY2FsXSkKKyAgZmkKKyAg Tk9UX1RIRV9DRkxBR1M9IiIKKyAgUEdBQ19QUk9HX1ZBUkNYWF9WQVJGTEFHU19PUFQoQ1hYLCBO T1RfVEhFX0NGTEFHUywgWy1Xc2hhZG93PWNvbXBhdGlibGUtbG9jYWxdKQorICBpZiB0ZXN0IC1u ICIkTk9UX1RIRV9DRkxBR1MiOyB0aGVuCisgICAgQUNfREVGSU5FKFtXQVJOSU5HX0NYWF9TSEFE T1dfQ09NUEFUSUJMRV9MT0NBTF0sIDEsCisgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5 b3VyIEMrKyBjb21waWxlciB1bmRlcnN0YW5kcyAtV3NoYWRvdz1jb21wYXRpYmxlLWxvY2FsXSkK KyAgZmkKICAgIyBUaGlzIHdhcyBpbmNsdWRlZCBpbiAtV2FsbC8tV2Zvcm1hdCBpbiBvbGRlciBH Q0MgdmVyc2lvbnMKICAgUEdBQ19QUk9HX0NDX0NGTEFHU19PUFQoWy1XZm9ybWF0LXNlY3VyaXR5 XSkKICAgUEdBQ19QUk9HX0NYWF9DRkxBR1NfT1BUKFstV2Zvcm1hdC1zZWN1cml0eV0pCmRpZmYg LS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IDJkZjU0NDA5Y2E2Li5iYmNj NDE5N2NjYiAxMDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTIy MDYsNiArMjIwNiwxNSBAQCBpZiBoYXZlX2N4eAogICBjeHhmbGFnc193YXJuICs9IGN4eC5nZXRf c3VwcG9ydGVkX2FyZ3VtZW50cyhjb21tb25fd2FybmluZ19mbGFncykKIGVuZGlmCiAKKyMgQWR2 ZXJ0aXNlIHdoZXRoZXIgLVdzaGFkb3c9Y29tcGF0aWJsZS1sb2NhbCBpcyBhY3RpdmUsIHNvIHRo YXQgaXQgY2FuIGJlCisjIGRpc2FibGVkIGluIGNhc2VzIHdoZXJlIHRoYXQgaXMgZXhwZWN0ZWQu CitpZiBjYy5oYXNfYXJndW1lbnQoJy1Xc2hhZG93PWNvbXBhdGlibGUtbG9jYWwnKQorICBjZGF0 YS5zZXQoJ1dBUk5JTkdfQ0NfU0hBRE9XX0NPTVBBVElCTEVfTE9DQUwnLCAxKQorZW5kaWYKK2lm IGhhdmVfY3h4IGFuZCBjeHguaGFzX2FyZ3VtZW50KCctV3NoYWRvdz1jb21wYXRpYmxlLWxvY2Fs JykKKyAgY2RhdGEuc2V0KCdXQVJOSU5HX0NYWF9TSEFET1dfQ09NUEFUSUJMRV9MT0NBTCcsIDEp CitlbmRpZgorCiAjIFRvIHJlcXVpcmUgZmFsbHRocm91Z2ggYXR0cmlidXRlIGFubm90YXRpb25z LCB1c2UKICMgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaD01IHdpdGggZ2NjIGFuZCAtV2ltcGxpY2l0 LWZhbGx0aHJvdWdoIHdpdGgKICMgY2xhbmcuICBUaGUgbGF0dGVyIGlzIGFsc28gYWNjZXB0ZWQg b24gZ2NjIGJ1dCBkb2VzIG5vdCBlbmZvcmNlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jLmgg Yi9zcmMvaW5jbHVkZS9jLmgKaW5kZXggNWM3NGRhNTAwNGUuLjVhNTI0MzY1Y2NjIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jLmgKKysrIGIvc3JjL2luY2x1ZGUvYy5oCkBAIC01NTksNiArNTU5 LDI3IEBAIHR5cGVkZWYgdm9pZCAoKnBnX2Z1bmNwdHJfdCkgKHZvaWQpOwogI2RlZmluZSBIQVZF X1BSQUdNQV9HQ0NfU1lTVEVNX0hFQURFUgkxCiAjZW5kaWYKIAorLyoKKyAqIFNvbWV0aW1lcyBp dCBpcyB1c2VmdWwgdG8gYmUgYWJsZSB0byBkaXNhYmxlIEdDQydzIHNoYWRvdyB3YXJuaW5ncyBm b3IgYQorICogc3BlY2lmaWMgZGVjbGFyYXRpb24uCisgKgorICogLVdkZWNsYXJhdGlvbi1hZnRl ci1zdGF0ZW1lbnQgaXMgYWxzbyB0ZW1wb3JhcmlseSBzdXBwcmVzc2VkLCBiZWNhdXNlIHRoZQor ICogcHJhZ21hIGl0c2VsZiBpcyB0cmVhdGVkIGFzIGEgc3RhdGVtZW50IHdoaWxlIHRoZSBwdXJw b3NlIG9mIHRoZXNlIG1hY3JvcworICogaXMgdG8gd3JhcCBhIGRlY2xhcmF0aW9uLgorICovCisj aWYgIWRlZmluZWQoX19jbGFuZ19fKSAmJiBcCisJKChkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiBk ZWZpbmVkKFdBUk5JTkdfQ1hYX1NIQURPV19DT01QQVRJQkxFX0xPQ0FMKSkgfHwgXAorCSAoIWRl ZmluZWQoX19jcGx1c3BsdXMpICYmIGRlZmluZWQoV0FSTklOR19DQ19TSEFET1dfQ09NUEFUSUJM RV9MT0NBTCkpKQorI2RlZmluZSBwZ19iZWdpbl9pZ25vcmVfc2hhZG93X3dhcm5pbmcoKQkJCQkJ CQkJXAorCV9QcmFnbWEoIkdDQyBkaWFnbm9zdGljIHB1c2giKTsJCQkJCQkJCQkJXAorCV9QcmFn bWEoIkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3NoYWRvdz1jb21wYXRpYmxlLWxvY2FsXCIi KTsJXAorCV9QcmFnbWEoIkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV2RlY2xhcmF0aW9uLWFm dGVyLXN0YXRlbWVudFwiIik7CisjZGVmaW5lIHBnX2VuZF9pZ25vcmVfc2hhZG93X3dhcm5pbmco KQkJCVwKKwlfUHJhZ21hKCJHQ0MgZGlhZ25vc3RpYyBwb3AiKQorI2Vsc2UKKyNkZWZpbmUgcGdf YmVnaW5faWdub3JlX3NoYWRvd193YXJuaW5nKCkKKyNkZWZpbmUgcGdfZW5kX2lnbm9yZV9zaGFk b3dfd2FybmluZygpCisjZW5kaWYKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCQkJU2VjdGlvbiAyOglib29s LCB0cnVlLCBmYWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gYi9z cmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgppbmRleCBjYjBmNTNmYWRlNC4uYzY3NTM0Y2Q5N2Ig MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCisrKyBiL3NyYy9pbmNsdWRl L3BnX2NvbmZpZy5oLmluCkBAIC03NTEsNiArNzUxLDEyIEBACiAvKiBEZWZpbmUgdG8gMSB0byBi dWlsZCB3aXRoIFpTVEQgc3VwcG9ydC4gKC0td2l0aC16c3RkKSAqLwogI3VuZGVmIFVTRV9aU1RE CiAKKy8qIERlZmluZSB0byAxIGlmIHlvdXIgQyBjb21waWxlciB1bmRlcnN0YW5kcyAtV3NoYWRv dz1jb21wYXRpYmxlLWxvY2FsICovCisjdW5kZWYgV0FSTklOR19DQ19TSEFET1dfQ09NUEFUSUJM RV9MT0NBTAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3VyIEMrKyBjb21waWxlciB1bmRlcnN0YW5k cyAtV3NoYWRvdz1jb21wYXRpYmxlLWxvY2FsICovCisjdW5kZWYgV0FSTklOR19DWFhfU0hBRE9X X0NPTVBBVElCTEVfTE9DQUwKKwogLyogRGVmaW5lIFdPUkRTX0JJR0VORElBTiB0byAxIGlmIHlv dXIgcHJvY2Vzc29yIHN0b3JlcyB3b3JkcyB3aXRoIHRoZSBtb3N0CiAgICBzaWduaWZpY2FudCBi eXRlIGZpcnN0IChsaWtlIE1vdG9yb2xhIGFuZCBTUEFSQywgdW5saWtlIEludGVsKS4gKi8KICNp ZiBkZWZpbmVkIEFDX0FQUExFX1VOSVZFUlNBTF9CVUlMRApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvdXRpbHMvZWxvZy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvZWxvZy5oCmluZGV4IGExMmIzNzll MDlhLi4zMGFmY2ZiZjQ1MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvZWxvZy5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL2Vsb2cuaApAQCAtMzE2LDYgKzMxNiwzOSBAQCB0eXBlZGVm IHN0cnVjdCBFcnJvckNvbnRleHRDYWxsYmFjawogZXh0ZXJuIFBHRExMSU1QT1JUIEVycm9yQ29u dGV4dENhbGxiYWNrICplcnJvcl9jb250ZXh0X3N0YWNrOwogCiAKKy8qIFN1cHBvcnQgZm9yIHRl c3RpbmcgaWYgYSBtYWNybyBpcyBpbnNpZGUgYSBQR19UUlkvLi4uIGJsb2NrLiAqLwordHlwZWRl ZiBjaGFyIHBnX2xleGljYWxfc2NvcGVfZmFsc2VfdHlwZTsKK3R5cGVkZWYgaW50IHBnX2xleGlj YWxfc2NvcGVfdHJ1ZV90eXBlOworCisvKiBEZWNsYXJlIGEgdGFnIGFzIGEgdmFyaWFibGUgaW4g Z2xvYmFsIHNjb3BlLiAgSXQgaGFzIG5vIHN0b3JhZ2UuICovCisjZGVmaW5lIHBnX2RlY2xhcmVf bGV4aWNhbF9zY29wZV90YWcobmFtZSkJCQlcCisJZXh0ZXJuIHBnX2xleGljYWxfc2NvcGVfZmFs c2VfdHlwZSBcCisJbGV4aWNhbF9zY29wZV90YWdfIyNuYW1lIHBnX2F0dHJpYnV0ZV91bnVzZWQo KQorCisvKgorICogRGVjbGFyZSBhIHRhZyBhcyBhIGxvY2FsIHR5cGVkZWYgdGhhdCBoaWRlcyB0 aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUsCisgKiB3aXRoaW4gdGhlIGN1cnJlbnQgbGV4aWNhbCBz Y29wZS4KKyAqCisgKiBPbiBpdHMgb3duLCAic2hhZG93aW5nIiBhIHZhcmlhYmxlIG5hbWUgd2l0 aCBhIHR5cGUgbmFtZSBkb2Vzbid0IHRyaWdnZXIKKyAqIEdDQydzIC1Xc2hhZG93PWNvbXBhdGli bGUtbG9jYWwgd2FybmluZywgYnV0IHdlIHdhbnQgdG8gYmUgYWJsZSB0byBoYW5kbGUKKyAqIG5l c3RlZCBQR19UUlkgYmxvY2tzIHVzaW5nIHRoZSBzYW1lIHRhZyBuYW1lLiAgRGlzYWJsZSB0aGUg d2FybmluZyBsb2NhbGx5LAorICogaWYgaXQncyBlbmFibGVkLgorICovCisjZGVmaW5lIHBnX3Nl dF9sZXhpY2FsX3Njb3BlX3RhZyhuYW1lKQkJCQkJCQkJCVwKKwlwZ19iZWdpbl9pZ25vcmVfc2hh ZG93X3dhcm5pbmcoKQkJCQkJCQkJCVwKKwl0eXBlZGVmIHBnX2xleGljYWxfc2NvcGVfdHJ1ZV90 eXBlCQkJCQkJCQkJXAorCQlsZXhpY2FsX3Njb3BlX3RhZ18jI25hbWUgcGdfYXR0cmlidXRlX3Vu dXNlZCgpOwkJCQkJXAorCXBnX2VuZF9pZ25vcmVfc2hhZG93X3dhcm5pbmcoKQorCisvKiBUZXN0 IHdoZXRoZXIgd2UgYXJlIGluc2lkZSBhIGxleGljYWwgc2NvcGUgdGhhdCBoYXMgInNldCIgdGhl IHRhZy4gKi8KKyNkZWZpbmUgcGdfaW5fbGV4aWNhbF9zY29wZV9wKG5hbWUpCQkJCVwKKwkoc2l6 ZW9mKGxleGljYWxfc2NvcGVfdGFnXyMjbmFtZSkgPT0gc2l6ZW9mKHBnX2xleGljYWxfc2NvcGVf dHJ1ZV90eXBlKSkKKworcGdfZGVjbGFyZV9sZXhpY2FsX3Njb3BlX3RhZyhQR19UUlkpOworcGdf ZGVjbGFyZV9sZXhpY2FsX3Njb3BlX3RhZyhQR19DQVRDSCk7CitwZ19kZWNsYXJlX2xleGljYWxf c2NvcGVfdGFnKFBHX0ZJTkFMTFkpOworCisKIC8qLS0tLS0tLS0tLQogICogQVBJIGZvciBjYXRj aGluZyBlcmVwb3J0KEVSUk9SKSBleGl0cy4gIFVzZSB0aGVzZSBtYWNyb3MgbGlrZSBzbzoKICAq CkBAIC0zOTEsMTIgKzQyNCwxNCBAQCBleHRlcm4gUEdETExJTVBPUlQgRXJyb3JDb250ZXh0Q2Fs bGJhY2sgKmVycm9yX2NvbnRleHRfc3RhY2s7CiAJCWJvb2wgX2RvX3JldGhyb3cjI19fVkFfQVJH U19fID0gZmFsc2U7IFwKIAkJaWYgKHNpZ3NldGptcChfbG9jYWxfc2lnam1wX2J1ZiMjX19WQV9B UkdTX18sIDApID09IDApIFwKIAkJeyBcCisJCQlwZ19zZXRfbGV4aWNhbF9zY29wZV90YWcoUEdf VFJZKTsgXAogCQkJUEdfZXhjZXB0aW9uX3N0YWNrID0gJl9sb2NhbF9zaWdqbXBfYnVmIyNfX1ZB X0FSR1NfXwogCiAjZGVmaW5lIFBHX0NBVENIKC4uLikJXAogCQl9IFwKIAkJZWxzZSBcCiAJCXsg XAorCQkJcGdfc2V0X2xleGljYWxfc2NvcGVfdGFnKFBHX0NBVENIKTsgXAogCQkJUEdfZXhjZXB0 aW9uX3N0YWNrID0gX3NhdmVfZXhjZXB0aW9uX3N0YWNrIyNfX1ZBX0FSR1NfXzsgXAogCQkJZXJy b3JfY29udGV4dF9zdGFjayA9IF9zYXZlX2NvbnRleHRfc3RhY2sjI19fVkFfQVJHU19fCiAKQEAg LTQwNSw2ICs0NDAsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgRXJyb3JDb250ZXh0Q2FsbGJhY2sg KmVycm9yX2NvbnRleHRfc3RhY2s7CiAJCWVsc2UgXAogCQkJX2RvX3JldGhyb3cjI19fVkFfQVJH U19fID0gdHJ1ZTsgXAogCQl7IFwKKwkJCXBnX3NldF9sZXhpY2FsX3Njb3BlX3RhZyhQR19GSU5B TExZKTsgXAogCQkJUEdfZXhjZXB0aW9uX3N0YWNrID0gX3NhdmVfZXhjZXB0aW9uX3N0YWNrIyNf X1ZBX0FSR1NfXzsgXAogCQkJZXJyb3JfY29udGV4dF9zdGFjayA9IF9zYXZlX2NvbnRleHRfc3Rh Y2sjI19fVkFfQVJHU19fCiAKLS0gCjIuNTMuMAoK --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0005-Provide-stack-buffer-API.patch" Content-Disposition: attachment; filename="v2-0005-Provide-stack-buffer-API.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt5r4k5 RnJvbSBmMTI3NTkyY2QxYjA5NWQwM2EwZTM4ZjUzOTk0OGVlNjgyODNkNWIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjcgRmViIDIwMjYgMjI6MjE6MzYgKzEzMDAKU3ViamVjdDogW1BBVENIIHYy IDA1LzE5XSBQcm92aWRlIHN0YWNrIGJ1ZmZlciBBUEkuCgpTZXZlcmFsIHBsYWNlcyB1c2UgYSBm aXhlZC1zaXplIGFycmF5IG9uIHRoZSBzdGFjayBmb3Igbm9uLWVzY2FwaW5nCm1lbW9yeSBvZiBk eW5hbWljIHNpemUsIHdpdGggZmFsbGJhY2sgdG8gcGFsbG9jKCkvcGZyZWUoKS4gIENyZWF0ZSBh CnN0YW5kYXJkIEFQSSBmb3IgdGhhdCwgYW5kIGltcGxlbWVudCBpdCB3aXRoIGFsbG9jYSgpIGlu c3RlYWQgaWYKcG9zc2libGUsIHdoaWxlIGFwcGx5aW5nIG91ciB0cmFkaXRpb25hbCBjYXAgb24g c3RhY2sgZ3Jvd3RoLgoKVGhyZWUgaW1wbGVtZW50YXRpb25zIGFyZSBwcm92aWRlZDoKCiogU1RB Q0tfQlVGRkVSX1VTRV9BTExPQ0E6ICAgICB1c2UgYWxsb2NhKCkgb3IgYnVpbHRpbnMKKiBTVEFD S19CVUZGRVJfVVNFX0FSUkFZOiAgICAgIHRoZSB0cmFkaXRpb2FubCBhcHByb2FjaAoqIFNUQUNL X0JVRkZFUl9VU0VfUEFMTE9DOiAgICAgZGV2ZWxvcG1lbnQvdGVzdGluZwoqIFNUQUNLX0JVRkZF Ul9VU0VfUEFMTE9DX0xPRzogZGV2ZWxvcG1lbnQvdGVzdGluZwoKTGF0ZXIgcGF0Y2hlcyB3aWxs IGFkb3B0IHRoZSBBUEkgaW4gdmFyaW91cyBwYXJ0cyBvZiB0aGUgdHJlZSB0byBzcGVlZAp1cCBj b21tb24gb3BlcmF0aW9ucy4KClJldmlld2VkLWJ5OgpEaXNjdXNzaW9uOgotLS0KIHNyYy9pbmNs dWRlL2MuaCAgICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy9pbmNsdWRlL3V0aWxzL3N0YWNr X2J1ZmZlci5oIHwgNDYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMg Y2hhbmdlZCwgNDcxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVk ZS91dGlscy9zdGFja19idWZmZXIuaAoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBiL3Ny Yy9pbmNsdWRlL2MuaAppbmRleCA1YTUyNDM2NWNjYy4uYzEwNzQzNzFjNDAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTkyMyw2ICs5MjMsMTYg QEAgdHlwZWRlZiBOYW1lRGF0YSAqTmFtZTsKIC8qIHdlIGRvbid0IGN1cnJlbnRseSBuZWVkIHdp ZGVyIHZlcnNpb25zIG9mIHRoZSBvdGhlciBBTElHTiBtYWNyb3MgKi8KICNkZWZpbmUgTUFYQUxJ R042NChMRU4pCQkJVFlQRUFMSUdONjQoTUFYSU1VTV9BTElHTk9GLCAoTEVOKSkKIAorLyoKKyAq IE1BWElNVU1fQUxJR05PRiBpcyByZXNwZWN0ZWQgYnkgcGFsbG9jKCkgYW5kIHNpbWlsYXIuICBU aGUgQyBzdGFuZGFyZAorICogZGVmaW5lcyBtYXhfYWxpZ25fdCBhcyBhIHR5cGUgdG8gYmUgdXNl ZCBmb3Igc2ltaWxhciBwdXJwb3NlcywgYnV0IFZpc3VhbAorICogU3R1ZGlvIGZvcmdvdCB0byBk ZWZpbmUgaXQgaW4gPHN0ZGRlZi5oPi4gIFN1cHBseSB0aGUgZGVmaW5pdGlvbiBDbGFuZyB1c2Vz CisgKiBvbiB0aGF0IHBsYXRmb3JtLCBmb3IgdXNlIGluIGNvbnRleHRzIHRoYXQgcmVmZXIgdG8g dGhlIHN0YW5kYXJkIGxpYnJhcnkgb3IKKyAqIGNvbXBpbGVyJ3MgYmVoYXZpb3IgcmF0aGVyIHRo YW4gUG9zdGdyZVNRTCdzLgorICovCisjaWZkZWYgX01TQ19WRVIKK3R5cGVkZWYgZG91YmxlIG1h eF9hbGlnbl90OworI2VuZGlmCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQkJCVNlY3Rpb24gNjoJYXNzZXJ0 aW9ucwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvc3RhY2tfYnVmZmVyLmggYi9zcmMv aW5jbHVkZS91dGlscy9zdGFja19idWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uZTQwNTdhNDUyZTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9zdGFja19idWZmZXIuaApAQCAtMCwwICsxLDQ2MSBAQAorLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogc3RhY2tfYnVmZmVyLmgKKyAqCQlBbGxvY2F0b3IgZm9yIG9iamVjdHMgdGhhdCBk b24ndCBlc2NhcGUgdGhlIGN1cnJlbnQgbGV4aWNhbCBzY29wZS4KKyAqCisgKiBBIHBhbGxvYygp LWxpa2UgaW50ZXJmYWNlIHRvIGFsbG9jYSgpLCBmb3IgYWxsb2NhdGluZyBtZW1vcnkgZWZmaWNp ZW50bHkgb24KKyAqIHRoZSBzdGFjay4gIFJhdyBhbGxvY2EoKSBpcyB1c3VhbGx5IGNvbnNpZGVy ZWQgZGFuZ2Vyb3VzIGJlY2F1c2Ugb2YgaXRzCisgKiBpbmhlcmVudCBzdGFjayBvdmVyZmxvdyBy aXNrLCBidXQgdGhpcyBpbnRlcmZhY2UgaW1wb3NlcyBsaW1pdHMgb24gc3RhY2sKKyAqIHNpemUg YW5kIGZhbGxzIGJhY2sgdG8gcmVndWxhciBwYWxsb2MoKSB3aGVuIHRoZXkgd291bGQgYmUgZXhj ZWVkZWQuCisgKgorICogTWVtb3J5IHNob3VsZCBzdGlsbCBiZSBmcmVlZCBleHBsaWNpdGx5IHdp dGggc3RhY2tfYnVmZmVyX2ZyZWUoKS4gIEl0IGlzIGEKKyAqIG5vLW9wIGluIHRoZSBjb21tb24g Y2FzZSB0aGF0IHBmcmVlKCkgZG9lc24ndCBuZWVkIHRvIGJlIGNhbGxlZC4KKyAqCisgKiBYWFgg SXQgbWlnaHQgYmUgcG9zc2libGUgdG8gdXNlIHNvbWV0aGluZyBsaWtlICJkZWZlciIgb3IgZXF1 aXZhbGVudAorICogY29tcGlsZXIgZXh0ZW5zaW9ucyB0byBjbGVhbiB1cCBwYWxsb2MoKSdkIG1l bW9yeSBhdXRvbWF0aWNhbGx5LCBpbiBmdXR1cmUKKyAqIHdvcmssIGFuZCB0aGVuIHN0YWNrX2J1 ZmZlcl9mcmVlKCkgd291bGQgbm90IGJlIG5lY2Vzc2FyeS4KKyAqCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK KyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvdXRpbHMvc3RhY2tfYnVmZmVyLmgK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBTVEFDS19CVUZGRVJfSAorI2Rl ZmluZSBTVEFDS19CVUZGRVJfSAorCisjaW5jbHVkZSAidXRpbHMvZWxvZy5oIgorI2luY2x1ZGUg InV0aWxzL3BhbGxvYy5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorCisjaW5jbHVkZSA8bGlt aXRzLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKworLyogI2RlZmluZSBTVEFDS19CVUZGRVJf VVNFX1BBTExPQ19MT0cgIi90bXAvc3RhY2tfYnVmZmVyLmNzdiIgKi8KKworLyogQ2hvb3NlIHdo aWNoIGltcGxlbWVudGF0aW9uIHRvIHVzZSwgaWYgbm90IGRlZmluZWQgbWFudWFsbHkuICovCisj aWYgIWRlZmluZWQoU1RBQ0tfQlVGRkVSX1VTRV9BUlJBWSkgJiYgXAorCSFkZWZpbmVkKFNUQUNL X0JVRkZFUl9VU0VfQUxMT0MpICYmIFwKKwkhZGVmaW5lZChTVEFDS19CVUZGRVJfVVNFX1BBTExP QykgJiYgXAorCSFkZWZpbmVkKFNUQUNLX0JVRkZFUl9VU0VfUEFMTE9DX0xPRykKKyNpZiBwZ19o YXNfYnVpbHRpbihfX2J1aWx0aW5fYWxsb2NhX3dpdGhfYWxpZ24pCisvKiBVc2UgR0NDL0NsYW5n IGJ1aWx0aW4gd2l0aCBleHBsaWNpdCBhbGlnbm1lbnQgYXJndW1lbnQuICovCisjZGVmaW5lIFNU QUNLX0JVRkZFUl9VU0VfQUxMT0NBCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorLyoKKyAqIE1T VkMncyBhbGxvY2EoKSBtYXBzIHRvIGEgYnVpbHRpbiB0aGF0IHdvcmtzIGluIGZ1bmN0aW9uIGFy Z3VtZW50cy4gIFdlIGNhbgorICogYWRqdXN0IGZvciBzdHJpY3Rlci10aGFuLWRlZmF1bHQgYWxp Z25tZW50IG91cnNlbHZlcy4KKyAqLworI2luY2x1ZGUgPG1hbGxvYy5oPiAqLworI2RlZmluZSBT VEFDS19CVUZGRVJfVVNFX0FMTE9DQQorI2Vsc2UKKy8qIFRyYWRpdGlvbmFsIGFwcHJvYWNoLiAq LworI2RlZmluZSBTVEFDS19CVUZGRVJfVVNFX0FSUkFZCisjZW5kaWYKKyNlbmRpZgorCisvKgor ICogQSBkZWZhdWx0IHNpemUgb2YgMTI4IGJ5dGVzIHNob3VsZCBiZSBlbm91Z2ggZm9yIG1hbnkg YXJyYXlzIG9mIGRhdHVtcyBhbmQKKyAqIG51bGwgZmxhZ3MsIHdpdGhvdXQgcG9zaW5nIGEgZGFu Z2VyIHRvIHJlY3Vyc2l2ZSBjb2RlLgorICoKKyAqIElmIHVzaW5nIGFsbG9jYSgpLCB3ZSBkb24n dCBuZWVkIHRvIGJlIHNvIGNhdXRpb3VzOiB1bnVzZWQgY2FwYWNpdHkgZG9lc24ndAorICogY29u c3VtZSBzdGFjayBzcGFjZSwgYW5kIGEgc2Vjb25kYXJ5IGxpbWl0IGlzIGNvbXB1dGVkIGJhc2Vk IG9uIHRoZQorICogcmVtYWluaW5nIHN0YWNrIHNwYWNlLgorICovCisjZGVmaW5lIFNUQUNLX0JV RkZFUl9ERUZBVUxUIFwKKwkoc3RhY2tfYnVmZmVyX3RvdGFsX3NpemVfbGltaXRlZCA/IFNUQUNL X0JVRkZFUl9MQVJHRSA6IDEyOCkKKworLyoKKyAqIFRoaXMgdGlueSBzaXplIGlzIGludGVuZGVk IGZvciBjYXNlcyB0aGF0IHJpc2sgZGVlcCByZWN1cnNpb24sIGJ1dCBjYW4KKyAqIHN0aWxsIG9m dGVuIGJlbmVmaXQgZnJvbSBhdm9pZGluZyBhIHBhbGxvYygpIGNhbGwuCisgKi8KKyNkZWZpbmUg U1RBQ0tfQlVGRkVSX1RJTlkgXAorCShzdGFja19idWZmZXJfdG90YWxfc2l6ZV9saW1pdGVkID8g U1RBQ0tfQlVGRkVSX0xBUkdFIDogMTYpCisKKy8qCisgKiBUaGlzIGxhcmdlciBzaXplIGlzIGlu dGVuZGVkIG9ubHkgZm9yIG5vbi1yZWN1cnNpdmUgdXNlcyBpbmNsdWRpbmcKKyAqIGNvbnZlcnNp b25zIHRvIEMgc3RyaW5nIGZvcm1hdCBiZWZvcmUgY2FsbGluZyBzdGFuZGFyZCBsaWJyYXJ5IHJv dXRpbmVzLgorICogQXZvaWQgYWxsb3dpbmcgbW9yZSB0aGFuIG9uZSBidWZmZXIgb2YgdGhpcyBz aXplIHRvIGJlIGFjdGl2ZSBvbiB0aGUgc3RhY2sKKyAqIGF0IGEgdGltZS4KKyAqLworI2RlZmlu ZSBTVEFDS19CVUZGRVJfTEFSR0UgMTAyNAorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IFB1YmxpYyBzdGFjayBidWZmZXIgQVBJLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisK Ky8qIERlY2xhcmUgYSBzdGFjayBidWZmZXIgb2YgZGVmYXVsdCBzaXplLiAqLworI2RlZmluZSBE RUNMQVJFX1NUQUNLX0JVRkZFUigpIFwKKwlERUNMQVJFX1NUQUNLX0JVRkZFUl9TSVpFKFNUQUNL X0JVRkZFUl9ERUZBVUxUKQorCisvKiBBcyBhYm92ZSwgdXNpbmcgdGhlIHN0YW5kYXJkICJ0aW55 IiBzaXplIChzZWUgbm90ZXMgYWJvdmUpLiAqLworI2RlZmluZSBERUNMQVJFX1NUQUNLX0JVRkZF Ul9USU5ZKCkgXAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSX1NJWkUoU1RBQ0tfQlVGRkVSX1RJTlkp CisKKy8qIEFzIGFib3ZlLCB1c2luZyB0aGUgc3RhbmRhcmQgImxhcmdlIiBzaXplIChzZWUgbm90 ZXMgYWJvdmUpLiAqLworI2RlZmluZSBERUNMQVJFX1NUQUNLX0JVRkZFUl9MQVJHRSgpIFwKKwlE RUNMQVJFX1NUQUNLX0JVRkZFUl9TSVpFKFNUQUNLX0JVRkZFUl9MQVJHRSkKKworLyogQXMgYWJv dmUsIGJ1dCB3aXRoIGEgY2FsbGVyLXNwZWNpZmllZCBsaW1pdCBvbiBzdGFjayB1c2FnZS4gKi8K KyNkZWZpbmUgREVDTEFSRV9TVEFDS19CVUZGRVJfU0laRShzaXplKSBcCisJc2l6ZV90IHN0YWNr X2J1ZmZlcl9sZXRfc2l6ZTsJCS8qIHRlbXAsIGF2b2lkcyBkb3VibGUgZXZhbCAqLwlcCisJYm9v bCBzdGFja19idWZmZXJfbWF5YmVfcGZyZWUgPSBmYWxzZTsJCQkJCQkJCVwKKwlERUNMQVJFX1NU QUNLX0JVRkZFUl9JTVBMKHNpemUpCisKKy8qIEFsbG9jYXRlIG1lbW9yeSwgb3B0aW9uYWxseSB3 aXRoIGV4cGxpY2l0IGFsaWdubWVudC4gKi8KKyNkZWZpbmUgc3RhY2tfYnVmZmVyX2FsbG9jKHNp emUpCQkJCQkJXAorCXN0YWNrX2J1ZmZlcl9hbGxvY19hbGlnbmVkKChzaXplKSwgTUFYSU1VTV9B TElHTk9GKQorI2RlZmluZSBzdGFja19idWZmZXJfYWxsb2NfYWxpZ25lZChzaXplLCBhbGlnbikJ CQkJCQkJXAorCShzdGFja19idWZmZXJfc2FuaXR5X2NoZWNrcygpLAkJCQkJCQkJCQlcCisJIHN0 YWNrX2J1ZmZlcl9sZXRfc2l6ZSA9IChzaXplKSwJCQkJCQkJCQlcCisJIHN0YWNrX2J1ZmZlcl9s ZXRfc2l6ZSA9IE1heChzdGFja19idWZmZXJfbGV0X3NpemUsIDEpLAkJCQlcCisJIHN0YWNrX2J1 ZmZlcl9hbGxvY19hbGlnbmVkX2ltcGwoc3RhY2tfYnVmZmVyX2xldF9zaXplLCAoYWxpZ24pKSkK KworLyogQXMgYWJvdmUsIGJ1dCBhbHNvIHplcm8gdGhlIG1lbW9yeS4gKi8KKyNkZWZpbmUgc3Rh Y2tfYnVmZmVyX2FsbG9jMChzaXplKSBcCisJc3RhY2tfYnVmZmVyX2FsbG9jMF9hbGlnbmVkKChz aXplKSwgTUFYSU1VTV9BTElHTk9GKQorI2RlZmluZSBzdGFja19idWZmZXJfYWxsb2MwX2FsaWdu ZWQoc2l6ZSwgYWxpZ24pIFwKKwkoc3RhY2tfYnVmZmVyX3Nhbml0eV9jaGVja3MoKSwJCQkJCQkJ CQkJXAorCSBzdGFja19idWZmZXJfbGV0X3NpemUgPSAoc2l6ZSksCQkJCQkJCQkJXAorCSBzdGFj a19idWZmZXJfbGV0X3NpemUgPSBNYXgoc3RhY2tfYnVmZmVyX2xldF9zaXplLCAxKSwJCQkJXAor CSBtZW1zZXQoc3RhY2tfYnVmZmVyX2FsbG9jX2FsaWduZWRfaW1wbChzdGFja19idWZmZXJfbGV0 X3NpemUsCQlcCisJCQkJCQkJCQkJCShhbGlnbikpLAkJCQkJXAorCQkJMCwJCQkJCQkJCQkJCQkJ CQlcCisJCQlzdGFja19idWZmZXJfbGV0X3NpemUpKQorCisvKiBBcyBhYm92ZSwgYnV0IGZvciBh IGdpdmVuIHR5cGUgVC4gKi8KKyNkZWZpbmUgc3RhY2tfYnVmZmVyX2FsbG9jX29iamVjdChUKQkJ CVwKKwlzdGFja19idWZmZXJfYWxsb2NfYXJyYXkoVCwgMSkKKyNkZWZpbmUgc3RhY2tfYnVmZmVy X2FsbG9jX2FycmF5KFQsIG4pCQkJCQkJCQlcCisJKChUICopIHN0YWNrX2J1ZmZlcl9hbGxvY19h bGlnbmVkKChuKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSkpCisjZGVmaW5lIHN0YWNrX2J1ZmZl cl9hbGxvYzBfb2JqZWN0KFQpCQkJXAorCXN0YWNrX2J1ZmZlcl9hbGxvYzBfYXJyYXkoVCwgMSkK KyNkZWZpbmUgc3RhY2tfYnVmZmVyX2FsbG9jMF9hcnJheShULCBuKQkJCQkJCQkJCVwKKwkoKFQg Kikgc3RhY2tfYnVmZmVyX2FsbG9jMF9hbGlnbmVkKChuKSAqIHNpemVvZihUKSwgYWxpZ25vZihU KSkpCisKKy8qIENvcHkgYSBzdHJpbmcuICovCisjZGVmaW5lIHN0YWNrX2J1ZmZlcl9zdHJkdXAo Y3N0cikJCQkJCQlcCisJc3RhY2tfYnVmZmVyX3N0cmR1cF93aXRoX2xlbigoY3N0ciksIHN0cmxl bihjc3RyKSkKKyNkZWZpbmUgc3RhY2tfYnVmZmVyX3N0cm5kdXAoY3N0ciwgbikJCQkJCQkJXAor CXN0YWNrX2J1ZmZlcl9zdHJkdXBfd2l0aF9sZW4oKGNzdHIpLCBzdHJubGVuKChjc3RyKSwgKG4p KSkKKyNkZWZpbmUgc3RhY2tfYnVmZmVyX3N0cmR1cF93aXRoX2xlbihkYXRhLCBzaXplKQkJCQkJ CVwKKwkoc3RhY2tfYnVmZmVyX3Nhbml0eV9jaGVja3MoKSwJCQkJCQkJCQkJXAorCSBzdGFja19i dWZmZXJfbGV0X3NpemUgPSAoc2l6ZSksCQkJCQkJCQkJXAorCSBzdGFja19idWZmZXJfc3RyZHVw X3dpdGhfbGVuX2ltcGwoc3RhY2tfYnVmZmVyX2FsbG9jX2FsaWduZWRfaW1wbChzdGFja19idWZm ZXJfbGV0X3NpemUgKyAxLCBcCisJCQkJCQkJCQkJCQkJCQkJCSAgIGFsaWdub2YoY2hhcikpLCBc CisJCQkJCQkJCQkgICAoZGF0YSksCQkJCQkJCVwKKwkJCQkJCQkJCSAgIHN0YWNrX2J1ZmZlcl9s ZXRfc2l6ZSkpCisjZGVmaW5lIHN0YWNrX2J1ZmZlcl90ZXh0X3RvX2NzdHJpbmcodGV4dCkgXAor CXN0YWNrX2J1ZmZlcl9zdHJkdXBfd2l0aF9sZW4oVkFSREFUQV9BTlkodGV4dCksIFZBUlNJWkVf QU5ZX0VYSERSKHRleHQpKQorI2RlZmluZSBzdGFja19idWZmZXJfdGV4dF9kYXR1bV90b19jc3Ry aW5nKGRhdHVtKSBcCisJc3RhY2tfYnVmZmVyX3RleHRfdG9fY3N0cmluZygodGV4dCAqKSBEYXR1 bUdldFBvaW50ZXIoZGF0dW0pKQorCisvKgorICogRnJlZSBtZW1vcnkgYWxsb2NhdGVkIHdpdGgg dGhlIGFib3ZlIGludGVyZmFjZXMuICBXZSBkb24ndCBleHBlY3QgdG8KKyAqIHJlY2VpdmUgcG9p bnRlcnMgYWxsb2NhdGVkIGJ5IHBhbGxvYygpIGRpcmVjdGx5IGFuZCBub3QgdmlhIHRoaXMgQVBJ LiAgVGhhdAorICogd291bGQgYnJlYWsgdGhlIHN0YWNrX2J1ZmZlcl9tYXliZV9wZnJlZSBvcHRp bWl6YXRpb24sIGFuZCBtaWdodCBsaW1pdAorICogZnV0dXJlIGltcGxlbWVudGF0aW9uIHRlY2hu aXF1ZXMuCisgKi8KKyNkZWZpbmUgc3RhY2tfYnVmZmVyX2ZyZWUocHRyKQkJCQkJCQkJCQkJXAor CWRvCQkJCQkJCQkJCQkJCQkJCQlcCisJewkJCQkJCQkJCQkJCQkJCQkJXAorCQlBc3NlcnQoc3Rh Y2tfYnVmZmVyX3N0YWNrX3AocHRyKSB8fCBzdGFja19idWZmZXJfbWF5YmVfcGZyZWUpOwlcCisJ CWlmICh1bmxpa2VseShzdGFja19idWZmZXJfbWF5YmVfcGZyZWUpICYmCQkJCQkJXAorCQkJIXN0 YWNrX2J1ZmZlcl9zdGFja19wKHB0cikpCQkJCQkJCQkJXAorCQkJcGZyZWUocHRyKTsJCQkJCQkJ CQkJCQkJXAorCX0JCQkJCQkJCQkJCQkJCQkJCVwKKwl3aGlsZSAoMCkKKworCisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBQcml2YXRlIGhlbHBlciBjb2RlIGNvbW1vbiB0byBhbGwgaW1wbGVt ZW50YXRpb25zLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qIENhbm5vdCB3b3Jr IGFjcm9zcyBzZXRqbXAoKS9sb25nam1wKCkgZHVlIHRvIHN0YWNrIGNsb2JlcnJpbmcuICovCisj ZGVmaW5lIHN0YWNrX2J1ZmZlcl9zYW5pdHlfY2hlY2tzKCkJCQkJCQkJCQlcCisJKFN0YXRpY0Fz c2VydEV4cHIoIXBnX2luX2xleGljYWxfc2NvcGVfcChQR19UUlkpLAkJCQkJXAorCQkJCQkgICJz dGFjayBidWZmZXIgQVBJIG5vdCBhbGxvd2VkIGluIFBHX1RSWSIpLAkJXAorCSBTdGF0aWNBc3Nl cnRFeHByKCFwZ19pbl9sZXhpY2FsX3Njb3BlX3AoUEdfQ0FUQ0gpLAkJCQkJXAorCQkJCQkgICJz dGFjayBidWZmZXIgQVBJIG5vdCBhbGxvd2VkIGluIFBHX0NBVENIIiksCQlcCisJIFN0YXRpY0Fz c2VydEV4cHIoIXBnX2luX2xleGljYWxfc2NvcGVfcChQR19GSU5BTExZKSwJCQkJXAorCQkJCQkg ICJzdGFjayBidWZmZXIgQVBJIG5vdCBhbGxvd2VkIGluIFBHX0ZJTkFMTFkiKSkKKworLyogUG9z dC1hbGxvY2F0aW9uIHBhcnQgb2Ygc3RhY2tfYnVmZmVyX3N0cmR1cF93aXRoX2xlbigpLiAqLwor c3RhdGljIGlubGluZSBjaGFyICoKK3N0YWNrX2J1ZmZlcl9zdHJkdXBfd2l0aF9sZW5faW1wbChj aGFyICpkc3QsIGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBzaXplKQoreworCW1lbWNweShkc3Qs IGRhdGEsIHNpemUpOworCWRzdFtzaXplXSA9IDA7CisJcmV0dXJuIGRzdDsKK30KKworLyoKKyAq IEFsbG9jYXRlIHdpdGggcGFsbG9jKCkgb3IgcGFsbG9jX2FsaWduZWQoKS4gIFdlIHdhc3RlIGEg cmVnaXN0ZXIKKyAqIHJlbWVtYmVyaW5nIGlmIHdlJ3ZlIGV2ZXIgaGFkIHRvIGRvIHRoaXMsIHRv IGdlbmVyYXRlIGJldHRlciBzdHJhaWdodC1saW5lCisgKiBjb2RlIGZvciB0aGUgY2FzZSB3aGVy ZSB3ZSBkb24ndCBoYXZlIHRvIGZyZWUgYW55dGhpbmcuCisgKi8KKyNkZWZpbmUgc3RhY2tfYnVm ZmVyX3BhbGxvY19hbGlnbmVkKHNpemUsIGFsaWduKSBcCisJKChzdGFja19idWZmZXJfbWF5YmVf cGZyZWUgPSB0cnVlKSwJCQkgXAorCSAoKGFsaWduKSA+IE1BWElNVU1fQUxJR05PRiA/CQkJCQkJ CQkJCVwKKwkgIHBhbGxvY19hbGlnbmVkKChzaXplKSwgKGFsaWduKSwgMCkgOgkJCQkJCQkJXAor CSAgcGFsbG9jKHNpemUpKSkJCQkvKiBjYW4ndCBhc2sgZm9yIHNtYWxsZXIgYWxpZ25tZW50ICov CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogTG93LWxldmVsIGltcGxlbWVudGF0aW9u cyBiZWxvdyB0aGlzIHBvaW50IHN1cHBseSB0aGUgZm9sbG93aW5nIG1hY3JvcywKKyAqIHdoaWNo IHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseToKKyAqCisgKiAxLiBzdGFja19idWZmZXJfdG90 YWxfc2l6ZV9saW1pdGVkICh0cnVlL2ZhbHNlKQorICogMi4gREVDTEFSRV9TVEFDS19CVUZGRVJf SU1QTChzaXplKQorICogMy4gc3RhY2tfYnVmZmVyX2FsbG9jX2FsaWduZWQoc2l6ZSwgYWxpZ24p CisgKiA0LiBzdGFja19idWZmZXJfc3RhY2tfcChwdHIpCisgKgorICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogVG95IGltcGxlbWVudGF0aW9ucyBm b3IgZGVidWdnaW5nLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qIEp1c3QgdXNl IHBhbGxvYy4gKi8KKyNpZmRlZiBTVEFDS19CVUZGRVJfVVNFX1BBTExPQworI2RlZmluZSBzdGFj a19idWZmZXJfdG90YWxfc2l6ZV9saW1pdGVkIGZhbHNlCisjZGVmaW5lIERFQ0xBUkVfU1RBQ0tf QlVGRkVSX0lNUEwoc2l6ZSkKKyNkZWZpbmUgc3RhY2tfYnVmZmVyX2FsbG9jX2FsaWduZWRfaW1w bChzaXplLCBhbGlnbikJXAorCXN0YWNrX2J1ZmZlcl9wYWxsb2NfYWxpZ25lZCgoc2l6ZSksIChh bGlnbikpCisjZGVmaW5lIHN0YWNrX2J1ZmZlcl9zdGFja19wKHB0cikgZmFsc2UKKyNlbmRpZgor CisvKgorICogU2FtZSwgYnV0IGxvZyAibG9jYXRpb24sZnVuY3Rpb24sc2l6ZSxkZXB0aCIgZW50 cmllcyB0byBhIHBhdGggc3BlY2lmaWVkCisgKiBieSB0aGUgU1RBQ0tfQlVGRkVSX1VTRV9QQUxM T0NfTE9HIG1hY3JvLgorICovCisjaWZkZWYgU1RBQ0tfQlVGRkVSX1VTRV9QQUxMT0NfTE9HCisj ZGVmaW5lIHN0YWNrX2J1ZmZlcl90b3RhbF9zaXplX2xpbWl0ZWQgZmFsc2UKKyNkZWZpbmUgREVD TEFSRV9TVEFDS19CVUZGRVJfSU1QTChzaXplKQkJCQkJCQkJCVwKKwlGSUxFICpzdGFja19idWZm ZXJfbG9nCQkJCQkJCQkJCQkJXAorCV9fYXR0cmlidXRlX18oKGNsZWFudXAoc3RhY2tfYnVmZmVy X2Nsb3NlX2xvZykpKSA9CQkJCQlcCisJZm9wZW4oU1RBQ0tfQlVGRkVSX1VTRV9QQUxMT0NfTE9H LCAiYSsiKQorI2RlZmluZSBzdGFja19idWZmZXJfYWxsb2NfYWxpZ25lZF9pbXBsKHNpemUsIGFs aWduKQkJCQkJXAorCShmcHJpbnRmKHN0YWNrX2J1ZmZlcl9sb2csCQkJCQkJCQkJCQlcCisJCQkg IiVzOiVkLCVzLCV6dSwlenVcbiIsCQkJCQkJCQkJCVwKKwkJCSBfX0ZJTEVfXywJCQkJCQkJCQkJ CQkJXAorCQkJIF9fTElORV9fLAkJCQkJCQkJCQkJCQlcCisJCQkgX19mdW5jX18sCQkJCQkJCQkJ CQkJCVwKKwkJCSAoc2l6ZV90KSAoc2l6ZSksCQkJCQkJCQkJCQlcCisJCQkgKChjb25zdCBjaGFy ICopIHN0YWNrX2Jhc2VfcHRyIC0JCQkJCQkJXAorCQkJICAoY29uc3QgY2hhciAqKSBfX2J1aWx0 aW5fc3RhY2tfYWRkcmVzcygpKSksCQkJCVwKKwkgc3RhY2tfYnVmZmVyX3BhbGxvY19hbGlnbmVk KChzaXplKSwgKGFsaWduKSkpCisjZGVmaW5lIHN0YWNrX2J1ZmZlcl9zdGFja19wKHB0cikgZmFs c2UKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3RhY2tfYnVmZmVyX2Nsb3NlX2xvZyhGSUxFICoqZikK K3sKKwlmY2xvc2UoKmYpOworfQorI2VuZGlmCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IFNpbXBsZSBhcnJheS1iYXNlZCBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKiBUaGlzIGlzIGVudGly ZWx5IHN0YW5kYXJkIEMgcmVxdWlyaW5nIG5vIGNvbXBpbGVyIGV4dGVuc2lvbnMsIGJ1dCBpdCBs ZWF2ZXMKKyAqIGEgYmlnIGhvbGUgaW4gdGhlIHN0YWNrIHdoZW4geW91IGNhbGwgYW5vdGhlciBm dW5jdGlvbiBhbmQgaGFzIG5vIGFiaWxpdHkKKyAqIHRvIHJlc3BlY3QgdGhlIHRvdGFsIHN0YWNr IHNpemUgbGltaXQgc28gd2UgaGF2ZSB0byBiZSBtdWNoIG1vcmUgY2F1dGlvdXMKKyAqIGFib3V0 IHNpemluZyB3aGVuIHdlIHVzZSBpdC4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lm ZGVmIFNUQUNLX0JVRkZFUl9VU0VfQVJSQVkKKworI2RlZmluZSBzdGFja19idWZmZXJfdG90YWxf c2l6ZV9saW1pdGVkIGZhbHNlCisKKyNkZWZpbmUgREVDTEFSRV9TVEFDS19CVUZGRVJfSU1QTChz aXplKQkJCQkJCQkJCVwKKwljaGFyIHN0YWNrX2J1ZmZlcl9hcnJheVsoc2l6ZSldOwkJCQkJCQkJ CVwKKwljaGFyICpzdGFja19idWZmZXJfc3AgPSBzdGFja19idWZmZXJfYXJyYXkgKyAoc2l6ZSkK KworI2RlZmluZSBzdGFja19idWZmZXJfYWxsb2NfYWxpZ25lZF9pbXBsKHNpemUsIGFsaWduKQkJ CQlcCisJc3RhY2tfYnVmZmVyX2FsbG9jX2FsaWduZWRfZnJvbV9hcnJheSgmc3RhY2tfYnVmZmVy X2FycmF5WzBdLAlcCisJCQkJCQkJCQkJICAmc3RhY2tfYnVmZmVyX3NwLAkJCVwKKwkJCQkJCQkJ CQkgIChzaXplKSwJCQkJCVwKKwkJCQkJCQkJCQkgIChhbGlnbikpCisKKyNkZWZpbmUgc3RhY2tf YnVmZmVyX3N0YWNrX3AocHRyKQkJCQkJCQkJCQlcCisJKChjaGFyICopIChwdHIpID49ICZzdGFj a19idWZmZXJfYXJyYXlbMF0gJiYJCQkJCQlcCisJIChjaGFyICopIChwdHIpIDwgJnN0YWNrX2J1 ZmZlcl9hcnJheVtzaXplb2Yoc3RhY2tfYnVmZmVyX2FycmF5KV0pCisKK3N0YXRpYyBpbmxpbmUg dm9pZCAqCitzdGFja19idWZmZXJfYWxsb2NfYWxpZ25lZF9mcm9tX2FycmF5KGNvbnN0IGNoYXIg KmFycmF5LAorCQkJCQkJCQkJICBjaGFyICoqc3AsCisJCQkJCQkJCQkgIHNpemVfdCBzaXplLAor CQkJCQkJCQkJICBzaXplX3QgYWxpZ24pCit7CisJaWYgKGxpa2VseShzaXplID49ICh1aW50cHRy X3QpICpzcCkpCS8qIGF2b2lkcyBvdmVyZmxvdyB3aXRoIGh1Z2Ugc2l6ZSAqLworCXsKKwkJY2hh cgkgICAqcmVzdWx0ID0gKnNwIC0gc2l6ZTsKKworCQlpZiAoYWxpZ24gPiAxKQorCQkJcmVzdWx0 ID0gKGNoYXIgKikgVFlQRUFMSUdOX0RPV04oYWxpZ24sIHJlc3VsdCk7CisKKwkJaWYgKGxpa2Vs eShyZXN1bHQgPj0gYXJyYXkpKQorCQl7CisJCQkqc3AgPSByZXN1bHQ7CisJCQlyZXR1cm4gcmVz dWx0OworCQl9CisJfQorCisJcmV0dXJuIHN0YWNrX2J1ZmZlcl9wYWxsb2NfYWxpZ25lZChzaXpl LCBhbGlnbik7Cit9CisKKyNlbmRpZgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBhbGxv Y2EoKS1iYXNlZCBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor I2lmZGVmIFNUQUNLX0JVRkZFUl9VU0VfQUxMT0NBCisKKyNkZWZpbmUgc3RhY2tfYnVmZmVyX3Rv dGFsX3NpemVfbGltaXRlZCB0cnVlCisKKyNkZWZpbmUgREVDTEFSRV9TVEFDS19CVUZGRVJfSU1Q TChzaXplKQkJCQkJCQkJCVwKKwlzdGFja19idWZmZXJfZGVjbGFyZV9pbXBsCQkJCQkJCQkJCQlc CisJY29uc3QgY2hhciAqc3RhY2tfYnVmZmVyX2xpbWl0ID0JCQkJCQkJCQlcCisJCXN0YWNrX2J1 ZmZlcl9sZWFzdF9kZWVwKHN0YWNrX3NvZnRfbGltaXRfcHRyLAkJCQkJXAorCQkJCQkJCQlzdGFj a19idWZmZXJfc3AgKwkJCQkJCVwKKwkJCQkJCQkJKHNpemUpICogUEdfU1RBQ0tfRElSRUNUSU9O KQorCisjZGVmaW5lIHN0YWNrX2J1ZmZlcl9hbGxvY19hbGlnbmVkX2ltcGwoc2l6ZSwgYWxpZ24p CQkJCQlcCisJKGxpa2VseShzdGFja19idWZmZXJfYWxsb2NhX3dvdWxkX2ZpdF9wKChzaXplKSwg KGFsaWduKSkpID8JCQlcCisJIHN0YWNrX2J1ZmZlcl9hbGxvY2FfYWxpZ25lZCgoc2l6ZSksIChh bGlnbikpIDoJCQkJCQlcCisJIHN0YWNrX2J1ZmZlcl9wYWxsb2NfYWxpZ25lZCgoc2l6ZSksIChh bGlnbikpKQorCisjZGVmaW5lIHN0YWNrX2J1ZmZlcl9zdGFja19wKHB0cikJCQkJCVwKKwkoIXN0 YWNrX3B0cl9kZWVwZXJfcCgocHRyKSwgc3RhY2tfYnVmZmVyX3NwKSAmJglcCisJICFzdGFja19w dHJfZGVlcGVyX3Aoc3RhY2tfYnVmZmVyX2Jhc2UsIChwdHIpKSkKKworCisvKiBQb3J0YWJpbGl0 eSBkZXRhaWxzLiAqLworCisvKgorICogQnVpbHRpbnMgZm9yIGludGVyYWN0aW5nIHdpdGggdGhl IHN0YWNrIHJlZ2lzdGVycywgaWYgYXZhaWxhYmxlLiAgRm9yIGFsbAorICogYnV0IF9fYnVpbHRp bl9mcmFtZV9hZGRyZXNzLCB3aGljaCBpcyBvbGRlciBhbmQgdW5saWtlbHkgdG8gZGlmZmVyIGFj cm9zcworICogdGhlIHNlbGVjdGVkIEMsIEMrKyBhbmQgYml0Y29kZSBjb21waWxlcnMsIHVzZSBw Z19oYXNfYnVpbHRpbigpLgorICAqLworI2lmIEhBVkVfX0JVSUxUSU5fRlJBTUVfQUREUkVTUwor I2RlZmluZSBzdGFja19idWZmZXJfYmFzZSAoKGNvbnN0IGNoYXIgKikgX19idWlsdGluX2ZyYW1l X2FkZHJlc3MoMCkpCisjZW5kaWYKKyNpZiBwZ19oYXNfYnVpbHRpbihfX2J1aWx0aW5fc3RhY2tf YWRkcmVzcykKKyNkZWZpbmUgc3RhY2tfYnVmZmVyX3NwICgoY29uc3QgY2hhciAqKSBfX2J1aWx0 aW5fc3RhY2tfYWRkcmVzcygpKQorI2VuZGlmCisjaWYgcGdfaGFzX2J1aWx0aW4oX19idWlsdGlu X2FsbG9jYV93aXRoX2FsaWduKQorI2RlZmluZSBzdGFja19idWZmZXJfYWxsb2NhX2FsaWduZWRf aW1wbChzaXplLCBhbGlnbikJCVwKKwlfX2J1aWx0aW5fYWxsb2NhX3dpdGhfYWxpZ24oKHNpemUp LCAoYWxpZ24pICogQ0hBUl9CSVQpCisjZW5kaWYKKworI2lmICFkZWZpbmVkKHN0YWNrX2J1ZmZl cl9hbGxvY2FfYWxpZ25lZF9pbXBsKQorLyogVXNlIHRyYWRpdGlvbmFsIGFsbG9jYSgpLCB3aXRo IGFkanVzdG1lbnRzIGZvciBzdHJpY3QgYWxpZ25tZW50LiAqLworI2RlZmluZSBzdGFja19idWZm ZXJfYWxsb2NhX2FsaWduZWRfaW1wbChzaXplLCBhbGlnbikJCQkJCVwKKwkoKGFsaWduKSA8PSBz dGFja19idWZmZXJfYWxpZ25vZl9hbGxvY2EgPwkJCQkJCQlcCisJIGFsbG9jYShzaXplKSA6CQkJ CQkJCQkJCQkJCQlcCisJICgodm9pZCAqKSBUWVBFQUxJR04oKGFsaWduKSwgYWxsb2NhKChzaXpl KSArIChhbGlnbikgLSAxKSkpKQorI2VuZGlmCisKKy8qCisgKiBXZSBhc3N1bWUgYWxsb2NhKCkg YW5kIHNpbWlsYXIgaGF2ZSBhbGlnbm1lbnQgYXQgbGVhc3QgYXMgc3RyaWN0IGFzIEMKKyAqIHJl cXVpcmVzLCBmb3IgZXN0aW1hdGlvbiBwdXJwb3Nlcy4KKyAqCisgKiBYWFggSW4gcmVhbCBzeXN0 ZW1zIGl0J3MgdXN1YWxseSBoaWdoZXIgKGVnIDE2IGJ5dGVzIHJhdGhlciB0aGFuIDgpLiAgV2UK KyAqIGNvdWxkIGVzdGltYXRlIG1vcmUgYWNjdXJhdGVseSBpZiB3ZSBoYWQgdGhhdCBpbmZvcm1h dGlvbi4KKyAqLworI2RlZmluZSBzdGFja19idWZmZXJfYWxpZ25vZl9hbGxvY2EgYWxpZ25vZiht YXhfYWxpZ25fdCkKKworLyogRG8gd2UgbmVlZCB2YXJpYWJsZXMgdG8gdHJhY2sgdGhlIGJvdW5k cyBvZiB0aGUgc3RhY2sgYnVmZmVyPyAqLworI2lmIGRlZmluZWQoc3RhY2tfYnVmZmVyX3NwKSAm JiBkZWZpbmVkKHN0YWNrX2J1ZmZlcl9iYXNlKQorLyogQ2FzZSAxOiBub3RoaW5nIHRvIGRvLCB3 ZSBoYXZlICJiYXNlIiBhbmQgInNwIiBidWlsdGlucy4gKi8KKyNkZWZpbmUgc3RhY2tfYnVmZmVy X2RlY2xhcmVfaW1wbAorI2RlZmluZSBzdGFja19idWZmZXJfYWxsb2NhX2FsaWduZWQgc3RhY2tf YnVmZmVyX2FsbG9jYV9hbGlnbmVkX2ltcGwKKyNlbHNlCisvKiBDYXNlcyAyIGFuZCAzOiB3ZSBu ZWVkIHRvIHRyYWNrIG9uZSBvciBib3RoIG9mIHRoZW0gb3Vyc2VsdmVzLi4uICovCisjaWYgZGVm aW5lZChzdGFja19idWZmZXJfYmFzZSkKKy8qCisgKiBDYXNlIDI6IHdlIGhhdmUgYSAiYmFzZSIg YnVpbHRpbiwgYnV0IG5vdCAic3AiLCBzbyB3ZSBuZWVkIGEgdmFyaWFibGUuICBBCisgKiBwb2lu dGVyIHRvIGl0c2VsZiBpcyBhIGdvb2QgaW5pdGlhbCB2YWx1ZS4gIFRoZSByZWFsIHN0YWNrIHBv aW50ZXIgaXMKKyAqIHByb2JhYmx5IGxlc3MgZGVlcCwgYXMgdGhlIGNvbXBpbGVyIHByb2JhYmx5 IGRpZG4ndCBhbGxvY2F0ZSBzcGFjZSBmb3Igc29tZQorICogdmFyaWFibGVzLiAgVGhhdCdzIE9L OiB3ZSBlcnIgb24gdGhlIGNhdXRpb3VzIHNpZGUgb2YgdGhlIHRydXRoLCBhbmQgYWZ0ZXIKKyAq IHRoZSBmaXJzdCBhbGxvY2F0aW9uIHdlJ2xsIGhhdmUgYW4gYWNjdXJhdGUgdmFsdWUuCisgKi8K KyNkZWZpbmUgc3RhY2tfYnVmZmVyX2RlY2xhcmVfaW1wbAkJCQlcCisJY2hhciAqc3RhY2tfYnVm ZmVyX3NwID0gKGNoYXIgKikgJnN0YWNrX2J1ZmZlcl9zcDsKKyNlbHNlCisvKgorICogQ2FzZSAz OiB3ZSBoYXZlIG5laXRoZXIgImJhc2UiIG5vciAic3AiLiAgQXMgY2FzZSAyLCBidXQgd2UnbGwg YWxzbyB1c2UKKyAqIHN0YWNrX2RlcHRoLmMncyBiYXNlIHBvaW50ZXIgd2hpY2ggaXMgY2VydGFp bmx5IGxlc3MgZGVlcCB0aGFuIGFueXRoaW5nIGluCisgKiB0aGlzIHN0YWNrIGZyYW1lLgorICoK KyAqIFhYWCBJZiB3ZSB1c2VkIHRoZSBhZGRyZXNzIG9mIG9uZSBvZiBvdXIgb3duIHN0YWNrIHZh cmlhYmxlcyBhcyBiYXNlLCB3ZSdkCisgKiBuZWVkIGFkZCBzb21lIGtpbmQgb2Ygc2xvcCBmYWN0 b3Igc2luY2UgdGhlIGNvbXBpbGVyIG1pZ2h0IG5vdCBhY3R1YWxseQorICogYWxsb2NhdGUgc3Bh Y2UgdG8gaXQgaWYgaXMgbmV2ZXIgc3BpbGxlZCwgYW5kIHRoZW4gYWxsb2NhKCkgbWlnaHQgcmV0 dXJuIGFuCisgKiBhZGRyZXNzIG9uIHRoZSB3cm9uZyBzaWRlIG9mIGl0LCB3aGljaCB3b3VsZCBi cmVhayBzdGFja19idWZmZXJfc3RhY2tfcCgpLgorICoKKyAqIFhYWCBBbm90aGVyIHdheSB0byBn ZXQgYW4gaW5pdGlhbCB2YWx1ZSBmb3IgYm90aCB2YXJpYWJsZXMgd291bGQgYmUgdG8gbWFrZQor ICogYSBkdW1teSBhbGxvY2EoMSkgY2FsbCwgd2FzdGluZyAocHJvYmFibHkpIDE2IGJ5dGVzIG9m IHN0YWNrLiAgSXQgaXMsIGFmdGVyCisgKiBhbGwsIGEgYnVpbHRpbiB0aGF0IGdpdmVzIHlvdSB0 aGUgc3RhY2sgcG9pbnRlciwgaXQganVzdCBoYXBwZW5zIHRvIGNvbnN1bWUKKyAqIHNwYWNlIHdo aWxlIGRvaW5nIHNvLi4uCisgKi8KKyNkZWZpbmUgc3RhY2tfYnVmZmVyX2RlY2xhcmVfaW1wbAkJ CQkJCQkJCQlcCisJY2hhciAqc3RhY2tfYnVmZmVyX3NwID0gKGNoYXIgKikgJnN0YWNrX2J1ZmZl cl9zcDsJCQkJCVwKKwljaGFyICpzdGFja19idWZmZXJfYmFzZSA9IChjaGFyICopIHN0YWNrX2Jh c2VfcHRyOworI2VuZGlmCisvKiBBbGxvY2F0aW9uIHdyYXBwZXIgZm9yIGNhc2VzIDIgYW5kIDMg dGhhdCB1cGRhdGVzIHN0YWNrX2J1ZmZlcl9zcC4gKi8KKyNkZWZpbmUgc3RhY2tfYnVmZmVyX2Fs bG9jYV9hbGlnbmVkKHNpemUsIGFsaWduKQkJCQkJCVwKKwkoKHN0YWNrX2J1ZmZlcl9zcCA9IHN0 YWNrX2J1ZmZlcl9hbGxvY2FfYWxpZ25lZF9pbXBsKChzaXplKSwJCVwKKwkJCQkJCQkJCQkJCQkJ IChhbGlnbikpKSwJCVwKKwkgKFBHX1NUQUNLX0RJUkVDVElPTiA8IDAgPyBzdGFja19idWZmZXJf c3AgOiAoKHN0YWNrX2J1ZmZlcl9zcCArPQlcCisJCQkJCQkJCQkJCQkgICAoc2l6ZSkpKSAtIChz aXplKSkpCisjZW5kaWYKKworLyogTGlrZSBNaW4oKSwgYnV0IGluIHRoZSBkaXJlY3Rpb24gb2Yg c3RhY2sgZ3Jvd3RoLiAqLworI2RlZmluZSBzdGFja19idWZmZXJfbGVhc3RfZGVlcChwMSwgcDIp CQkJCVwKKwkoc3RhY2tfcHRyX2RlZXBlcl9wKChwMSksIChwMikpID8gKHAyKSA6IChwMSkpCisK Ky8qCisgKiBQcmVkaWN0IG5ldyBlbmQgb2Ygc3RhY2sgYWZ0ZXIgaHlwb3RoZXRpY2FsIGFsbG9j YXRpb24uICBUaGlzIG1pZ2h0CisgKiB1bmRlcnNob290IGJ5IGEgZmV3IGJ5dGVzIGR1ZSBzdGFj a19idWZmZXJfYWxpZ25vZl9hbGxvY2EgYmVpbmcgdG9vIGxvdywKKyAqIGFuZCBiZWNhdXNlIHdl IGRvbid0IGJvdGhlciB0byBkbyBUWVBFQUxJR04oc3RhY2tfYnVmZmVyX2FsaWdub2ZfYWxsb2Nh LAorICogc2l6ZSksIGJ1dCB0aGF0IGRvZXNuJ3QgbWF0dGVyIG11Y2ggZm9yIG91ciBwdXJwb3Nl cy4KKyAqLworc3RhdGljIGlubGluZSBjb25zdCBjaGFyICoKK3N0YWNrX2J1ZmZlcl9ndWVzc19u ZXdfc3AoY29uc3QgY2hhciAqc3AsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ24pCit7CisJaWYg KGFsaWduIDw9IHN0YWNrX2J1ZmZlcl9hbGlnbm9mX2FsbG9jYSkKKwkJcmV0dXJuIHNwICsgc2l6 ZSAqIFBHX1NUQUNLX0RJUkVDVElPTjsKKworCWlmIChQR19TVEFDS19ESVJFQ1RJT04gPCAwKQor CQlyZXR1cm4gKGNvbnN0IGNoYXIgKikgVFlQRUFMSUdOX0RPV04oYWxpZ24sIHNwIC0gc2l6ZSk7 CisJZWxzZQorCQlyZXR1cm4gKGNvbnN0IGNoYXIgKikgVFlQRUFMSUdOKGFsaWduLCBzcCkgKyBz aXplOworfQorCisjZGVmaW5lIHN0YWNrX2J1ZmZlcl9hbGxvY2Ffd291bGRfZml0X3Aoc2l6ZSwg YWxpZ24pCQkJCQlcCisJKHN0YWNrX3B0cl9kZWVwZXJfcChzdGFja19idWZmZXJfbGltaXQsCQkJ CQkJCQlcCisJCQkJCQlzdGFja19idWZmZXJfZ3Vlc3NfbmV3X3NwKHN0YWNrX2J1ZmZlcl9zcCwJ CVwKKwkJCQkJCQkJCQkJCSAgKHNpemUpLAkJCQlcCisJCQkJCQkJCQkJCQkgIChhbGlnbikpKSkK KworI2VuZGlmCisKKyNlbmRpZgotLSAKMi41My4wCgo= --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0006-Use-stack-buffer-in-locale-code.patch" Content-Disposition: attachment; filename="v2-0006-Use-stack-buffer-in-locale-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt5tfn6 RnJvbSBiN2Q3YWU1MDFlNzQxNmQyOWM4NjdmYzhmMTBlN2U0NDdhZjA4NGRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgNSBNYXIgMjAyNiAyMTozODo0NiArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MDYvMTldIFVzZSBzdGFjayBidWZmZXIgaW4gbG9jYWxlIGNvZGUuCgpVc2Ugc3RhY2sgYnVmZmVy cyBmb3IgdGVtcG9yYXJ5IEMgc3RyaW5ncywgd2NoYXJfdCBzdHJpbmdzLCBwZ193Y2hhcgpzdHJp bmdzIHdpdGggdGhlIG5ldyBBUEkuICBTb21lIGNhc2VzIHdlcmUgYWxyZWFkeSB1c2luZyBvcGVu LWNvZGVkCmFycmF5cywgd2hpbGUgb3RoZXJzIG5lYXJieSB3ZXJlIG5vdCBidXQgYXJlIG9idmlv dXMgY2FuZGlkYXRlcywgc28KbGV0J3MgY2hhbmdlIHRoZW0gdG9vLgoKVGhlc2UgY2FzZXMgdXNl ZCBURVhUQlVGTEVOICgxS0IpLCBhbmQgdGhleSBub3cgaW5oZXJpdCB0aGF0IHNhbWUgYW1vdW50 Cm9mIGF2YWlsYWJsZSBzcGFjZSBieSB1c2luZzoKCiAgREVDTEFSRV9TVEFDS19CVUZGRVJfTEFS R0UoKTsKCkRpc2N1c3Npb246Ci0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5j ICAgICAgfCAgIDYgLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9pY3UuYyAgfCAg NTkgKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMgfCAx NTAgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA3MSBpbnNlcnRp b25zKCspLCAxNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3BnX2xvY2FsZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCmluZGV4 IDZjNWMxMDE5ZTFlLi4zYTYxOTA4OTJhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3BnX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwpA QCAtNjAsMTIgKzYwLDYgQEAKICNkZWZpbmUJCVBHTE9DQUxFX1NVUFBPUlRfRVJST1IocHJvdmlk ZXIpIFwKIAllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgY29sbHByb3ZpZGVyIGZvciAlczogJWMi LCBfX2Z1bmNfXywgcHJvdmlkZXIpCiAKLS8qCi0gKiBUaGlzIHNob3VsZCBiZSBsYXJnZSBlbm91 Z2ggdGhhdCBtb3N0IHN0cmluZ3Mgd2lsbCBmaXQsIGJ1dCBzbWFsbCBlbm91Z2gKLSAqIHRoYXQg d2UgZmVlbCBjb21mb3J0YWJsZSBwdXR0aW5nIGl0IG9uIHRoZSBzdGFjawotICovCi0jZGVmaW5l CQlURVhUQlVGTEVOCQkJMTAyNAotCiAjZGVmaW5lCQlNQVhfTDEwTl9EQVRBCQk4MAogCiAvKiBw Z19sb2NhbGVfYnVpbHRpbi5jICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cGdfbG9jYWxlX2ljdS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9pY3UuYwpp bmRleCAzNTJiNGMzODg1Zi4uZTY0YWZmODI3MzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9wZ19sb2NhbGVfaWN1LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xv Y2FsZV9pY3UuYwpAQCAtMzksMTYgKzM5LDkgQEAKICNpbmNsdWRlICJ1dGlscy9mb3JtYXR0aW5n LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9wZ19sb2Nh bGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zdGFja19idWZmZXIuaCIKICNpbmNsdWRlICJ1dGlscy9z eXNjYWNoZS5oIgogCi0vKgotICogU2l6ZSBvZiBzdGFjayBidWZmZXIgdG8gdXNlIGZvciBzdHJp bmcgdHJhbnNmb3JtYXRpb25zLCB1c2VkIHRvIGF2b2lkIGhlYXAKLSAqIGFsbG9jYXRpb25zIGlu IHR5cGljYWwgY2FzZXMuIFRoaXMgc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0aGF0IG1vc3Qgc3Ry aW5ncwotICogd2lsbCBmaXQsIGJ1dCBzbWFsbCBlbm91Z2ggdGhhdCB3ZSBmZWVsIGNvbWZvcnRh YmxlIHB1dHRpbmcgaXQgb24gdGhlCi0gKiBzdGFjay4KLSAqLwotI2RlZmluZQkJVEVYVEJVRkxF TgkJCTEwMjQKLQogZXh0ZXJuIHBnX2xvY2FsZV90IGNyZWF0ZV9wZ19sb2NhbGVfaWN1KE9pZCBj b2xsaWQsIE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiAKICNpZmRlZiBVU0VfSUNVCkBAIC03NTUs MjMgKzc0OCwxNyBAQCBzaXplX3QKIHN0cm54ZnJtX2ljdShjaGFyICpkZXN0LCBzaXplX3QgZGVz dHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQkgcGdfbG9jYWxlX3Qg bG9jYWxlKQogewotCWNoYXIJCXNidWZbVEVYVEJVRkxFTl07Ci0JY2hhcgkgICAqYnVmID0gc2J1 ZjsKIAlVQ2hhcgkgICAqdWNoYXI7CiAJaW50MzJfdAkJdWxlbjsKLQlzaXplX3QJCXVjaGFyX2Jz aXplOwogCVNpemUJCXJlc3VsdF9ic2l6ZTsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSX0xBUkdF KCk7CisKIAlpbml0X2ljdV9jb252ZXJ0ZXIoKTsKIAogCXVsZW4gPSB1Y2hhcl9sZW5ndGgoaWN1 X2NvbnZlcnRlciwgc3JjLCBzcmNsZW4pOwogCi0JdWNoYXJfYnNpemUgPSAodWxlbiArIDEpICog c2l6ZW9mKFVDaGFyKTsKLQotCWlmICh1Y2hhcl9ic2l6ZSA+IFRFWFRCVUZMRU4pCi0JCWJ1ZiA9 IHBhbGxvYyh1Y2hhcl9ic2l6ZSk7Ci0KLQl1Y2hhciA9IChVQ2hhciAqKSBidWY7CisJdWNoYXIg PSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXkoVUNoYXIsIHVsZW4gKyAxKTsKIAogCXVsZW4gPSB1 Y2hhcl9jb252ZXJ0KGljdV9jb252ZXJ0ZXIsIHVjaGFyLCB1bGVuICsgMSwgc3JjLCBzcmNsZW4p OwogCkBAIC03ODYsOCArNzczLDcgQEAgc3Rybnhmcm1faWN1KGNoYXIgKmRlc3QsIHNpemVfdCBk ZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAlBc3NlcnQocmVzdWx0 X2JzaXplID4gMCk7CiAJcmVzdWx0X2JzaXplLS07CiAKLQlpZiAoYnVmICE9IHNidWYpCi0JCXBm cmVlKGJ1Zik7CisJc3RhY2tfYnVmZmVyX2ZyZWUodWNoYXIpOwogCiAJLyogaWYgZGVzdCBpcyBk ZWZpbmVkLCBpdCBzaG91bGQgYmUgbnVsLXRlcm1pbmF0ZWQgKi8KIAlBc3NlcnQocmVzdWx0X2Jz aXplID49IGRlc3RzaXplIHx8IGRlc3RbcmVzdWx0X2JzaXplXSA9PSAnXDAnKTsKQEAgLTEwMjAs MTYgKzEwMDYsMTQgQEAgc3RhdGljIGludAogc3RybmNvbGxfaWN1KGNvbnN0IGNoYXIgKmFyZzEs IHNzaXplX3QgbGVuMSwKIAkJCSBjb25zdCBjaGFyICphcmcyLCBzc2l6ZV90IGxlbjIsIHBnX2xv Y2FsZV90IGxvY2FsZSkKIHsKLQljaGFyCQlzYnVmW1RFWFRCVUZMRU5dOwotCWNoYXIJICAgKmJ1 ZiA9IHNidWY7CiAJaW50MzJfdAkJdWxlbjE7CiAJaW50MzJfdAkJdWxlbjI7Ci0Jc2l6ZV90CQli dWZzaXplMTsKLQlzaXplX3QJCWJ1ZnNpemUyOwogCVVDaGFyCSAgICp1Y2hhcjEsCiAJCQkgICAq dWNoYXIyOwogCWludAkJCXJlc3VsdDsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSX0xBUkdFKCk7 CisKIAkvKiBpZiBlbmNvZGluZyBpcyBVVEY4LCB1c2UgbW9yZSBlZmZpY2llbnQgc3RybmNvbGxf aWN1X3V0ZjggKi8KICNpZmRlZiBIQVZFX1VDT0xfU1RSQ09MTFVURjgKIAlBc3NlcnQoR2V0RGF0 YWJhc2VFbmNvZGluZygpICE9IFBHX1VURjgpOwpAQCAtMTA0MCwxNCArMTAyNCw4IEBAIHN0cm5j b2xsX2ljdShjb25zdCBjaGFyICphcmcxLCBzc2l6ZV90IGxlbjEsCiAJdWxlbjEgPSB1Y2hhcl9s ZW5ndGgoaWN1X2NvbnZlcnRlciwgYXJnMSwgbGVuMSk7CiAJdWxlbjIgPSB1Y2hhcl9sZW5ndGgo aWN1X2NvbnZlcnRlciwgYXJnMiwgbGVuMik7CiAKLQlidWZzaXplMSA9ICh1bGVuMSArIDEpICog c2l6ZW9mKFVDaGFyKTsKLQlidWZzaXplMiA9ICh1bGVuMiArIDEpICogc2l6ZW9mKFVDaGFyKTsK LQotCWlmIChidWZzaXplMSArIGJ1ZnNpemUyID4gVEVYVEJVRkxFTikKLQkJYnVmID0gcGFsbG9j KGJ1ZnNpemUxICsgYnVmc2l6ZTIpOwotCi0JdWNoYXIxID0gKFVDaGFyICopIGJ1ZjsKLQl1Y2hh cjIgPSAoVUNoYXIgKikgKGJ1ZiArIGJ1ZnNpemUxKTsKKwl1Y2hhcjEgPSBzdGFja19idWZmZXJf YWxsb2NfYXJyYXkoVUNoYXIsIHVsZW4xICsgMSk7CisJdWNoYXIyID0gc3RhY2tfYnVmZmVyX2Fs bG9jX2FycmF5KFVDaGFyLCB1bGVuMiArIDEpOwogCiAJdWxlbjEgPSB1Y2hhcl9jb252ZXJ0KGlj dV9jb252ZXJ0ZXIsIHVjaGFyMSwgdWxlbjEgKyAxLCBhcmcxLCBsZW4xKTsKIAl1bGVuMiA9IHVj aGFyX2NvbnZlcnQoaWN1X2NvbnZlcnRlciwgdWNoYXIyLCB1bGVuMiArIDEsIGFyZzIsIGxlbjIp OwpAQCAtMTA1Niw4ICsxMDM0LDggQEAgc3RybmNvbGxfaWN1KGNvbnN0IGNoYXIgKmFyZzEsIHNz aXplX3QgbGVuMSwKIAkJCQkJCSAgdWNoYXIxLCB1bGVuMSwKIAkJCQkJCSAgdWNoYXIyLCB1bGVu Mik7CiAKLQlpZiAoYnVmICE9IHNidWYpCi0JCXBmcmVlKGJ1Zik7CisJc3RhY2tfYnVmZmVyX2Zy ZWUodWNoYXIxKTsKKwlzdGFja19idWZmZXJfZnJlZSh1Y2hhcjIpOwogCiAJcmV0dXJuIHJlc3Vs dDsKIH0KQEAgLTEwNjgsMTYgKzEwNDYsMTUgQEAgc3Rybnhmcm1fcHJlZml4X2ljdShjaGFyICpk ZXN0LCBzaXplX3QgZGVzdHNpemUsCiAJCQkJCWNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNs ZW4sCiAJCQkJCXBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQljaGFyCQlzYnVmW1RFWFRCVUZMRU5d OwotCWNoYXIJICAgKmJ1ZiA9IHNidWY7CiAJVUNoYXJJdGVyYXRvciBpdGVyOwogCXVpbnQzMl90 CXN0YXRlWzJdOwogCVVFcnJvckNvZGUJc3RhdHVzOwogCWludDMyX3QJCXVsZW4gPSAtMTsKIAlV Q2hhcgkgICAqdWNoYXIgPSBOVUxMOwotCXNpemVfdAkJdWNoYXJfYnNpemU7CiAJU2l6ZQkJcmVz dWx0X2JzaXplOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVJfTEFSR0UoKTsKKwogCS8qIGlmIGVu Y29kaW5nIGlzIFVURjgsIHVzZSBtb3JlIGVmZmljaWVudCBzdHJueGZybV9wcmVmaXhfaWN1X3V0 ZjggKi8KIAlBc3NlcnQoR2V0RGF0YWJhc2VFbmNvZGluZygpICE9IFBHX1VURjgpOwogCkBAIC0x MDg1LDEyICsxMDYyLDcgQEAgc3Rybnhmcm1fcHJlZml4X2ljdShjaGFyICpkZXN0LCBzaXplX3Qg ZGVzdHNpemUsCiAKIAl1bGVuID0gdWNoYXJfbGVuZ3RoKGljdV9jb252ZXJ0ZXIsIHNyYywgc3Jj bGVuKTsKIAotCXVjaGFyX2JzaXplID0gKHVsZW4gKyAxKSAqIHNpemVvZihVQ2hhcik7Ci0KLQlp ZiAodWNoYXJfYnNpemUgPiBURVhUQlVGTEVOKQotCQlidWYgPSBwYWxsb2ModWNoYXJfYnNpemUp OwotCi0JdWNoYXIgPSAoVUNoYXIgKikgYnVmOworCXVjaGFyID0gc3RhY2tfYnVmZmVyX2FsbG9j X2FycmF5KFVDaGFyLCB1bGVuICsgMSk7CiAKIAl1bGVuID0gdWNoYXJfY29udmVydChpY3VfY29u dmVydGVyLCB1Y2hhciwgdWxlbiArIDEsIHNyYywgc3JjbGVuKTsKIApAQCAtMTEwOCw4ICsxMDgw LDcgQEAgc3Rybnhmcm1fcHJlZml4X2ljdShjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsCiAJ CQkJKGVycm1zZygic29ydCBrZXkgZ2VuZXJhdGlvbiBmYWlsZWQ6ICVzIiwKIAkJCQkJCXVfZXJy b3JOYW1lKHN0YXR1cykpKSk7CiAKLQlpZiAoYnVmICE9IHNidWYpCi0JCXBmcmVlKGJ1Zik7CisJ c3RhY2tfYnVmZmVyX2ZyZWUodWNoYXIpOwogCiAJcmV0dXJuIHJlc3VsdF9ic2l6ZTsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMKaW5kZXggNzhmNmVhMTYxYTAuLjZmNTFj MzI4MTRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMuYwpAQCAtMjMsNiAr MjMsNyBAQAogI2luY2x1ZGUgInV0aWxzL2Zvcm1hdHRpbmcuaCIKICNpbmNsdWRlICJ1dGlscy9t ZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgorI2luY2x1ZGUgInV0aWxz L3N0YWNrX2J1ZmZlci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKICNpZmRlZiBf X0dMSUJDX18KQEAgLTcyLDE0ICs3Myw2IEBACiAgKiBOQjogdGhlIGNvZGluZyBoZXJlIGFzc3Vt ZXMgcGdfd2NoYXIgaXMgYW4gdW5zaWduZWQgdHlwZS4KICAqLwogCi0vKgotICogU2l6ZSBvZiBz dGFjayBidWZmZXIgdG8gdXNlIGZvciBzdHJpbmcgdHJhbnNmb3JtYXRpb25zLCB1c2VkIHRvIGF2 b2lkIGhlYXAKLSAqIGFsbG9jYXRpb25zIGluIHR5cGljYWwgY2FzZXMuIFRoaXMgc2hvdWxkIGJl IGxhcmdlIGVub3VnaCB0aGF0IG1vc3Qgc3RyaW5ncwotICogd2lsbCBmaXQsIGJ1dCBzbWFsbCBl bm91Z2ggdGhhdCB3ZSBmZWVsIGNvbWZvcnRhYmxlIHB1dHRpbmcgaXQgb24gdGhlCi0gKiBzdGFj ay4KLSAqLwotI2RlZmluZQkJVEVYVEJVRkxFTgkJCTEwMjQKLQogZXh0ZXJuIHBnX2xvY2FsZV90 IGNyZWF0ZV9wZ19sb2NhbGVfbGliYyhPaWQgY29sbGlkLCBNZW1vcnlDb250ZXh0IGNvbnRleHQp OwogCiBzdGF0aWMgaW50CXN0cm5jb2xsX2xpYmMoY29uc3QgY2hhciAqYXJnMSwgc3NpemVfdCBs ZW4xLApAQCAtNTAyLDYgKzQ5NSw4IEBAIHN0cmxvd2VyX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6 ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCXNpemVfdAkJ Y3Vycl9jaGFyOwogCXNpemVfdAkJbWF4X3NpemU7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUl9M QVJHRSgpOworCiAJaWYgKHNyY2xlbiA8IDApCiAJCXNyY2xlbiA9IHN0cmxlbihzcmMpOwogCkBA IC01MTIsNyArNTA3LDcgQEAgc3RybG93ZXJfbGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVz dHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQkJIGVycm1zZygib3V0 IG9mIG1lbW9yeSIpKSk7CiAKIAkvKiBPdXRwdXQgd29ya3NwYWNlIGNhbm5vdCBoYXZlIG1vcmUg Y29kZXMgdGhhbiBpbnB1dCBieXRlcyAqLwotCXdvcmtzcGFjZSA9IHBhbGxvY19hcnJheSh3Y2hh cl90LCBzcmNsZW4gKyAxKTsKKwl3b3Jrc3BhY2UgPSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXko d2NoYXJfdCwgc3JjbGVuICsgMSk7CiAKIAljaGFyMndjaGFyKHdvcmtzcGFjZSwgc3JjbGVuICsg MSwgc3JjLCBzcmNsZW4sIGxvYyk7CiAKQEAgLTUyMyw3ICs1MTgsNyBAQCBzdHJsb3dlcl9saWJj X21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90 IHNyY2xlbiwKIAkgKiBNYWtlIHJlc3VsdCBsYXJnZSBlbm91Z2g7IGNhc2UgY2hhbmdlIG1pZ2h0 IGNoYW5nZSBudW1iZXIgb2YgYnl0ZXMKIAkgKi8KIAltYXhfc2l6ZSA9IGN1cnJfY2hhciAqIHBn X2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgoKTsKLQlyZXN1bHQgPSBwYWxsb2MobWF4X3Np emUgKyAxKTsKKwlyZXN1bHQgPSBzdGFja19idWZmZXJfYWxsb2MobWF4X3NpemUgKyAxKTsKIAog CXJlc3VsdF9zaXplID0gd2NoYXIyY2hhcihyZXN1bHQsIHdvcmtzcGFjZSwgbWF4X3NpemUgKyAx LCBsb2MpOwogCkBAIC01MzMsOCArNTI4LDggQEAgc3RybG93ZXJfbGliY19tYihjaGFyICpkZXN0 LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCWRl c3RbcmVzdWx0X3NpemVdID0gJ1wwJzsKIAl9CiAKLQlwZnJlZSh3b3Jrc3BhY2UpOwotCXBmcmVl KHJlc3VsdCk7CisJc3RhY2tfYnVmZmVyX2ZyZWUod29ya3NwYWNlKTsKKwlzdGFja19idWZmZXJf ZnJlZShyZXN1bHQpOwogCiAJcmV0dXJuIHJlc3VsdF9zaXplOwogfQpAQCAtNjA3LDYgKzYwMiw4 IEBAIHN0cnRpdGxlX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBj aGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCXNpemVfdAkJY3Vycl9jaGFyOwogCXNpemVfdAkJ bWF4X3NpemU7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUl9MQVJHRSgpOworCiAJaWYgKHNyY2xl biA8IDApCiAJCXNyY2xlbiA9IHN0cmxlbihzcmMpOwogCkBAIC02MTcsNyArNjE0LDcgQEAgc3Ry dGl0bGVfbGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNy Yywgc3NpemVfdCBzcmNsZW4sCiAJCQkJIGVycm1zZygib3V0IG9mIG1lbW9yeSIpKSk7CiAKIAkv KiBPdXRwdXQgd29ya3NwYWNlIGNhbm5vdCBoYXZlIG1vcmUgY29kZXMgdGhhbiBpbnB1dCBieXRl cyAqLwotCXdvcmtzcGFjZSA9IHBhbGxvY19hcnJheSh3Y2hhcl90LCBzcmNsZW4gKyAxKTsKKwl3 b3Jrc3BhY2UgPSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXkod2NoYXJfdCwgc3JjbGVuICsgMSk7 CiAKIAljaGFyMndjaGFyKHdvcmtzcGFjZSwgc3JjbGVuICsgMSwgc3JjLCBzcmNsZW4sIGxvYyk7 CiAKQEAgLTYzNCw3ICs2MzEsNyBAQCBzdHJ0aXRsZV9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVf dCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkgKiBNYWtlIHJl c3VsdCBsYXJnZSBlbm91Z2g7IGNhc2UgY2hhbmdlIG1pZ2h0IGNoYW5nZSBudW1iZXIgb2YgYnl0 ZXMKIAkgKi8KIAltYXhfc2l6ZSA9IGN1cnJfY2hhciAqIHBnX2RhdGFiYXNlX2VuY29kaW5nX21h eF9sZW5ndGgoKTsKLQlyZXN1bHQgPSBwYWxsb2MobWF4X3NpemUgKyAxKTsKKwlyZXN1bHQgPSBz dGFja19idWZmZXJfYWxsb2MobWF4X3NpemUgKyAxKTsKIAogCXJlc3VsdF9zaXplID0gd2NoYXIy Y2hhcihyZXN1bHQsIHdvcmtzcGFjZSwgbWF4X3NpemUgKyAxLCBsb2MpOwogCkBAIC02NDQsOCAr NjQxLDggQEAgc3RydGl0bGVfbGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNv bnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCWRlc3RbcmVzdWx0X3NpemVdID0gJ1ww JzsKIAl9CiAKLQlwZnJlZSh3b3Jrc3BhY2UpOwotCXBmcmVlKHJlc3VsdCk7CisJc3RhY2tfYnVm ZmVyX2ZyZWUod29ya3NwYWNlKTsKKwlzdGFja19idWZmZXJfZnJlZShyZXN1bHQpOwogCiAJcmV0 dXJuIHJlc3VsdF9zaXplOwogfQpAQCAtNzAwLDYgKzY5Nyw4IEBAIHN0cnVwcGVyX2xpYmNfbWIo Y2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3Jj bGVuLAogCXNpemVfdAkJY3Vycl9jaGFyOwogCXNpemVfdAkJbWF4X3NpemU7CiAKKwlERUNMQVJF X1NUQUNLX0JVRkZFUl9MQVJHRSgpOworCiAJaWYgKHNyY2xlbiA8IDApCiAJCXNyY2xlbiA9IHN0 cmxlbihzcmMpOwogCkBAIC03MTAsNyArNzA5LDcgQEAgc3RydXBwZXJfbGliY19tYihjaGFyICpk ZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJ CQkJIGVycm1zZygib3V0IG9mIG1lbW9yeSIpKSk7CiAKIAkvKiBPdXRwdXQgd29ya3NwYWNlIGNh bm5vdCBoYXZlIG1vcmUgY29kZXMgdGhhbiBpbnB1dCBieXRlcyAqLwotCXdvcmtzcGFjZSA9IHBh bGxvY19hcnJheSh3Y2hhcl90LCBzcmNsZW4gKyAxKTsKKwl3b3Jrc3BhY2UgPSBzdGFja19idWZm ZXJfYWxsb2NfYXJyYXkod2NoYXJfdCwgc3JjbGVuICsgMSk7CiAKIAljaGFyMndjaGFyKHdvcmtz cGFjZSwgc3JjbGVuICsgMSwgc3JjLCBzcmNsZW4sIGxvYyk7CiAKQEAgLTcyMSw3ICs3MjAsNyBA QCBzdHJ1cHBlcl9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hh ciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkgKiBNYWtlIHJlc3VsdCBsYXJnZSBlbm91Z2g7IGNh c2UgY2hhbmdlIG1pZ2h0IGNoYW5nZSBudW1iZXIgb2YgYnl0ZXMKIAkgKi8KIAltYXhfc2l6ZSA9 IGN1cnJfY2hhciAqIHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgoKTsKLQlyZXN1bHQg PSBwYWxsb2MobWF4X3NpemUgKyAxKTsKKwlyZXN1bHQgPSBzdGFja19idWZmZXJfYWxsb2MobWF4 X3NpemUgKyAxKTsKIAogCXJlc3VsdF9zaXplID0gd2NoYXIyY2hhcihyZXN1bHQsIHdvcmtzcGFj ZSwgbWF4X3NpemUgKyAxLCBsb2MpOwogCkBAIC03MzEsOCArNzMwLDggQEAgc3RydXBwZXJfbGli Y19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVf dCBzcmNsZW4sCiAJCWRlc3RbcmVzdWx0X3NpemVdID0gJ1wwJzsKIAl9CiAKLQlwZnJlZSh3b3Jr c3BhY2UpOwotCXBmcmVlKHJlc3VsdCk7CisJc3RhY2tfYnVmZmVyX2ZyZWUod29ya3NwYWNlKTsK KwlzdGFja19idWZmZXJfZnJlZShyZXN1bHQpOwogCiAJcmV0dXJuIHJlc3VsdF9zaXplOwogfQpA QCAtODk2LDQ4ICs4OTUsMjUgQEAgaW50CiBzdHJuY29sbF9saWJjKGNvbnN0IGNoYXIgKmFyZzEs IHNzaXplX3QgbGVuMSwgY29uc3QgY2hhciAqYXJnMiwgc3NpemVfdCBsZW4yLAogCQkJICBwZ19s b2NhbGVfdCBsb2NhbGUpCiB7Ci0JY2hhcgkJc2J1ZltURVhUQlVGTEVOXTsKLQljaGFyCSAgICpi dWYgPSBzYnVmOwotCXNpemVfdAkJYnVmc2l6ZTEgPSAobGVuMSA9PSAtMSkgPyAwIDogbGVuMSAr IDE7Ci0Jc2l6ZV90CQlidWZzaXplMiA9IChsZW4yID09IC0xKSA/IDAgOiBsZW4yICsgMTsKLQlj b25zdCBjaGFyICphcmcxbjsKLQljb25zdCBjaGFyICphcmcybjsKKwljaGFyCSAgICpjc3RyMSA9 IE5VTEw7CisJY2hhcgkgICAqY3N0cjIgPSBOVUxMOwogCWludAkJCXJlc3VsdDsKIAotCWlmIChi dWZzaXplMSArIGJ1ZnNpemUyID4gVEVYVEJVRkxFTikKLQkJYnVmID0gcGFsbG9jKGJ1ZnNpemUx ICsgYnVmc2l6ZTIpOworCURFQ0xBUkVfU1RBQ0tfQlVGRkVSX0xBUkdFKCk7CiAKIAkvKiBudWwt dGVybWluYXRlIGFyZ3VtZW50cyBpZiBuZWNlc3NhcnkgKi8KLQlpZiAobGVuMSA9PSAtMSkKLQl7 Ci0JCWFyZzFuID0gYXJnMTsKLQl9Ci0JZWxzZQotCXsKLQkJY2hhcgkgICAqYnVmMSA9IGJ1ZjsK KwlpZiAobGVuMSAhPSAtMSkKKwkJYXJnMSA9IGNzdHIxID0gc3RhY2tfYnVmZmVyX3N0cmR1cF93 aXRoX2xlbihhcmcxLCBsZW4xKTsKIAotCQltZW1jcHkoYnVmMSwgYXJnMSwgbGVuMSk7Ci0JCWJ1 ZjFbbGVuMV0gPSAnXDAnOwotCQlhcmcxbiA9IGJ1ZjE7Ci0JfQorCWlmIChsZW4yICE9IC0xKQor CQlhcmcyID0gY3N0cjIgPSBzdGFja19idWZmZXJfc3RyZHVwX3dpdGhfbGVuKGFyZzIsIGxlbjIp OwogCi0JaWYgKGxlbjIgPT0gLTEpCi0JewotCQlhcmcybiA9IGFyZzI7Ci0JfQotCWVsc2UKLQl7 Ci0JCWNoYXIJICAgKmJ1ZjIgPSBidWYgKyBidWZzaXplMTsKLQotCQltZW1jcHkoYnVmMiwgYXJn MiwgbGVuMik7Ci0JCWJ1ZjJbbGVuMl0gPSAnXDAnOwotCQlhcmcybiA9IGJ1ZjI7Ci0JfQorCXJl c3VsdCA9IHN0cmNvbGxfbChhcmcxLCBhcmcyLCBsb2NhbGUtPmx0KTsKIAotCXJlc3VsdCA9IHN0 cmNvbGxfbChhcmcxbiwgYXJnMm4sIGxvY2FsZS0+bHQpOwotCi0JaWYgKGJ1ZiAhPSBzYnVmKQot CQlwZnJlZShidWYpOworCWlmIChjc3RyMSkKKwkJc3RhY2tfYnVmZmVyX2ZyZWUoY3N0cjEpOwor CWlmIChjc3RyMikKKwkJc3RhY2tfYnVmZmVyX2ZyZWUoY3N0cjIpOwogCiAJcmV0dXJuIHJlc3Vs dDsKIH0KQEAgLTk1MywyNSArOTI5LDE3IEBAIHNpemVfdAogc3Rybnhmcm1fbGliYyhjaGFyICpk ZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJ CQkgIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQljaGFyCQlzYnVmW1RFWFRCVUZMRU5dOwotCWNo YXIJICAgKmJ1ZiA9IHNidWY7Ci0Jc2l6ZV90CQlidWZzaXplID0gc3JjbGVuICsgMTsKKwljaGFy CSAgICpjc3RyOwogCXNpemVfdAkJcmVzdWx0OwogCisJREVDTEFSRV9TVEFDS19CVUZGRVJfTEFS R0UoKTsKKwogCWlmIChzcmNsZW4gPT0gLTEpCiAJCXJldHVybiBzdHJ4ZnJtX2woZGVzdCwgc3Jj LCBkZXN0c2l6ZSwgbG9jYWxlLT5sdCk7CiAKLQlpZiAoYnVmc2l6ZSA+IFRFWFRCVUZMRU4pCi0J CWJ1ZiA9IHBhbGxvYyhidWZzaXplKTsKLQotCS8qIG51bC10ZXJtaW5hdGUgYXJndW1lbnQgKi8K LQltZW1jcHkoYnVmLCBzcmMsIHNyY2xlbik7Ci0JYnVmW3NyY2xlbl0gPSAnXDAnOwotCi0JcmVz dWx0ID0gc3RyeGZybV9sKGRlc3QsIGJ1ZiwgZGVzdHNpemUsIGxvY2FsZS0+bHQpOwotCi0JaWYg KGJ1ZiAhPSBzYnVmKQotCQlwZnJlZShidWYpOworCWNzdHIgPSBzdGFja19idWZmZXJfc3RyZHVw X3dpdGhfbGVuKHNyYywgc3JjbGVuKTsKKwlyZXN1bHQgPSBzdHJ4ZnJtX2woZGVzdCwgY3N0ciwg ZGVzdHNpemUsIGxvY2FsZS0+bHQpOworCXN0YWNrX2J1ZmZlcl9mcmVlKGNzdHIpOwogCiAJLyog aWYgZGVzdCBpcyBkZWZpbmVkLCBpdCBzaG91bGQgYmUgbnVsLXRlcm1pbmF0ZWQgKi8KIAlBc3Nl cnQocmVzdWx0ID49IGRlc3RzaXplIHx8IGRlc3RbcmVzdWx0XSA9PSAnXDAnKTsKQEAgLTEwNTcs MTUgKzEwMjUsMTMgQEAgc3RhdGljIGludAogc3RybmNvbGxfbGliY193aW4zMl91dGY4KGNvbnN0 IGNoYXIgKmFyZzEsIHNzaXplX3QgbGVuMSwgY29uc3QgY2hhciAqYXJnMiwKIAkJCQkJCSBzc2l6 ZV90IGxlbjIsIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQljaGFyCQlzYnVmW1RFWFRCVUZMRU5d OwotCWNoYXIJICAgKmJ1ZiA9IHNidWY7Ci0JY2hhcgkgICAqYTFwLAotCQkJICAgKmEycDsKLQlp bnQJCQlhMWxlbjsKLQlpbnQJCQlhMmxlbjsKKwl3Y2hhcl90ICAgICp3MXA7CisJd2NoYXJfdCAg ICAqdzJwOwogCWludAkJCXI7CiAJaW50CQkJcmVzdWx0OwogCisJREVDTEFSRV9TVEFDS19CVUZG RVJfTEFSR0UoKTsKKwogCUFzc2VydChHZXREYXRhYmFzZUVuY29kaW5nKCkgPT0gUEdfVVRGOCk7 CiAKIAlpZiAobGVuMSA9PSAtMSkKQEAgLTEwNzMsNTAgKzEwMzksNDIgQEAgc3RybmNvbGxfbGli Y193aW4zMl91dGY4KGNvbnN0IGNoYXIgKmFyZzEsIHNzaXplX3QgbGVuMSwgY29uc3QgY2hhciAq YXJnMiwKIAlpZiAobGVuMiA9PSAtMSkKIAkJbGVuMiA9IHN0cmxlbihhcmcyKTsKIAotCWExbGVu ID0gbGVuMSAqIDIgKyAyOwotCWEybGVuID0gbGVuMiAqIDIgKyAyOwotCi0JaWYgKGExbGVuICsg YTJsZW4gPiBURVhUQlVGTEVOKQotCQlidWYgPSBwYWxsb2MoYTFsZW4gKyBhMmxlbik7Ci0KLQlh MXAgPSBidWY7Ci0JYTJwID0gYnVmICsgYTFsZW47CisJdzFwID0gc3RhY2tfYnVmZmVyX2FsbG9j X2FycmF5KHdjaGFyX3QsIGxlbjEgKyAxKTsKKwl3MnAgPSBzdGFja19idWZmZXJfYWxsb2NfYXJy YXkod2NoYXJfdCwgbGVuMiArIDEpOwogCiAJLyogQVBJIGRvZXMgbm90IHdvcmsgZm9yIHplcm8t bGVuZ3RoIGlucHV0ICovCiAJaWYgKGxlbjEgPT0gMCkKIAkJciA9IDA7CiAJZWxzZQogCXsKLQkJ ciA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgYXJnMSwgbGVuMSwKLQkJCQkJCQkJ KExQV1NUUikgYTFwLCBhMWxlbiAvIDIpOworCQlyID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9V VEY4LCAwLCBhcmcxLCBsZW4xLCB3MXAsIGxlbjEpOwogCQlpZiAoIXIpCiAJCQllcmVwb3J0KEVS Uk9SLAogCQkJCQkoZXJybXNnKCJjb3VsZCBub3QgY29udmVydCBzdHJpbmcgdG8gVVRGLTE2OiBl cnJvciBjb2RlICVsdSIsCiAJCQkJCQkJR2V0TGFzdEVycm9yKCkpKSk7CiAJfQotCSgoTFBXU1RS KSBhMXApW3JdID0gMDsKKwl3MXBbcl0gPSAwOwogCiAJaWYgKGxlbjIgPT0gMCkKIAkJciA9IDA7 CiAJZWxzZQogCXsKLQkJciA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgYXJnMiwg bGVuMiwKLQkJCQkJCQkJKExQV1NUUikgYTJwLCBhMmxlbiAvIDIpOworCQlyID0gTXVsdGlCeXRl VG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBhcmcyLCBsZW4yLCB3MnAsIGxlbjIpOwogCQlpZiAoIXIp CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJybXNnKCJjb3VsZCBub3QgY29udmVydCBzdHJp bmcgdG8gVVRGLTE2OiBlcnJvciBjb2RlICVsdSIsCiAJCQkJCQkJR2V0TGFzdEVycm9yKCkpKSk7 CiAJfQotCSgoTFBXU1RSKSBhMnApW3JdID0gMDsKKwl3MnBbcl0gPSAwOwogCiAJZXJybm8gPSAw OwotCXJlc3VsdCA9IHdjc2NvbGxfbCgoTFBXU1RSKSBhMXAsIChMUFdTVFIpIGEycCwgbG9jYWxl LT5sdCk7CisJcmVzdWx0ID0gd2NzY29sbF9sKHcxcCwgdzJwLCBsb2NhbGUtPmx0KTsKIAlpZiAo cmVzdWx0ID09IDIxNDc0ODM2NDcpCS8qIF9OTFNDTVBFUlJPUjsgbWlzc2luZyBmcm9tIG1pbmd3 IGhlYWRlcnMgKi8KIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJybXNnKCJjb3VsZCBub3QgY29t cGFyZSBVbmljb2RlIHN0cmluZ3M6ICVtIikpKTsKIAotCWlmIChidWYgIT0gc2J1ZikKLQkJcGZy ZWUoYnVmKTsKKwlzdGFja19idWZmZXJfZnJlZSh3MXApOworCXN0YWNrX2J1ZmZlcl9mcmVlKHcy cCk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpAQCAtMTI4OSw4ICsxMjQ3LDEyIEBAIGNoYXIyd2No YXIod2NoYXJfdCAqdG8sIHNpemVfdCB0b2xlbiwgY29uc3QgY2hhciAqZnJvbSwgc2l6ZV90IGZy b21sZW4sCiAJZWxzZQogI2VuZGlmCQkJCQkJCS8qIFdJTjMyICovCiAJeworCQljaGFyCSAgICpz dHI7CisKKwkJREVDTEFSRV9TVEFDS19CVUZGRVJfTEFSR0UoKTsKKwogCQkvKiBtYnN0b3djcyBy ZXF1aXJlcyBlbmRpbmcgJ1wwJyAqLwotCQljaGFyCSAgICpzdHIgPSBwbnN0cmR1cChmcm9tLCBm cm9tbGVuKTsKKwkJc3RyID0gc3RhY2tfYnVmZmVyX3N0cmR1cF93aXRoX2xlbihmcm9tLCBmcm9t bGVuKTsKIAogCQlpZiAobG9jID09IChsb2NhbGVfdCkgMCkKIAkJewpAQCAtMTMwMyw3ICsxMjY1 LDcgQEAgY2hhcjJ3Y2hhcih3Y2hhcl90ICp0bywgc2l6ZV90IHRvbGVuLCBjb25zdCBjaGFyICpm cm9tLCBzaXplX3QgZnJvbWxlbiwKIAkJCXJlc3VsdCA9IG1ic3Rvd2NzX2wodG8sIHN0ciwgdG9s ZW4sIGxvYyk7CiAJCX0KIAotCQlwZnJlZShzdHIpOworCQlzdGFja19idWZmZXJfZnJlZShzdHIp OwogCX0KIAogCWlmIChyZXN1bHQgPT0gLTEpCi0tIAoyLjUzLjAKCg== --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0007-Use-stack-buffer-in-some-executor-code.patch" Content-Disposition: attachment; filename="v2-0007-Use-stack-buffer-in-some-executor-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt5vnr7 RnJvbSBhNjc2OTdmMDBiNmVhMDU5ODQ1NDQyMTFjOGEyZDljZmEyZmExY2I1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMiBNYXIgMjAyNiAwMzo1NTo1NiArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MDcvMTldIFVzZSBzdGFjayBidWZmZXIgaW4gc29tZSBleGVjdXRvciBjb2RlLgoKTWVjaGFuaWNh bCBjaGFuZ2VzIHRvIHRoZSBhbGxvY2F0aW9uIG9mIG1lbW9yeSB1c2VkIGZvcjoKKiBzdHJpbmcg Y29waWVzCiogZGF0dW1zLCBudWxscywgT2lkcywga2V5cyBhbmQgc2ltaWxhciB2YWx1ZXMgbGlu a2VkIHRvIHRoZQogIG51bWJlciBvZiBhdHRyaWJ1dGVzCgpUaGVzZSBhcmUgYWxsIG5vbi1lc2Nh cGluZyB2YWx1ZXMgdGhhdCBhcmUgbm90IHVzZWQgaW4gcmVjdXJzaXZlCnByb2Nlc3Nlcy4KLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgfCAgNyArKysrKy0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMgICAgfCAxMSArKysrKysrLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jICAgICAgIHwgMTMgKysrKysrKysrLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgIHwgMTQgKysrKysrKystLS0tLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMgICB8ICA3ICsrKysrLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8ICA3ICsrKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL3NwaS5jICAgICAgICAgICB8IDExICsrKysrKystLS0tCiA3IGZpbGVzIGNoYW5nZWQsIDQ2 IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYwppbmRleCBiYWIyOTRmNWU5MS4uNmNjNmQ2ZWE1MTAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJ1dGlscy9wYXJ0 Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9ybHMuaCIKICNpbmNsdWRlICJ1dGlscy9ydWxldXRp bHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zdGFja19idWZmZXIuaCIKIAogCiAvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCkBAIC0yNTE4LDYgKzI1MTksOCBAQCBJbml0RXhlY1BhcnRpdGlvblBydW5l Q29udGV4dHMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAlpbnQJCQluZXdpZHg7 CiAJYm9vbAkJZml4X3N1YnBsYW5fbWFwID0gZmFsc2U7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZF UigpOworCiAJQXNzZXJ0KHBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUpOwogCUFzc2VydChwYXJl bnRfcGxhbiAhPSBOVUxMKTsKIAllc3RhdGUgPSBwYXJlbnRfcGxhbi0+c3RhdGU7CkBAIC0yNTM1 LDcgKzI1MzgsNyBAQCBJbml0RXhlY1BhcnRpdGlvblBydW5lQ29udGV4dHMoUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJICogaW5kZXhlcyB0byBuZXcgb25lcy4gIEZvciBjb252 ZW5pZW5jZSBvZiBpbml0aWFsaXphdGlvbiwgd2UgdXNlCiAJCSAqIDEtYmFzZWQgaW5kZXhlcyBp biB0aGlzIGFycmF5IGFuZCBsZWF2ZSBwcnVuZWQgaXRlbXMgYXMgMC4KIAkJICovCi0JCW5ld19z dWJwbGFuX2luZGV4ZXMgPSBwYWxsb2MwX2FycmF5KGludCwgbl90b3RhbF9zdWJwbGFucyk7CisJ CW5ld19zdWJwbGFuX2luZGV4ZXMgPSBzdGFja19idWZmZXJfYWxsb2MwX2FycmF5KGludCwgbl90 b3RhbF9zdWJwbGFucyk7CiAJCW5ld2lkeCA9IDE7CiAJCWkgPSAtMTsKIAkJd2hpbGUgKChpID0g Ym1zX25leHRfbWVtYmVyKGluaXRpYWxseV92YWxpZF9zdWJwbGFucywgaSkpID49IDApCkBAIC0y NjQ1LDcgKzI2NDgsNyBAQCBJbml0RXhlY1BhcnRpdGlvblBydW5lQ29udGV4dHMoUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJYm1zX2ZyZWUocHJ1bmVzdGF0ZS0+b3RoZXJfc3Vi cGxhbnMpOwogCQlwcnVuZXN0YXRlLT5vdGhlcl9zdWJwbGFucyA9IG5ld19vdGhlcl9zdWJwbGFu czsKIAotCQlwZnJlZShuZXdfc3VicGxhbl9pbmRleGVzKTsKKwkJc3RhY2tfYnVmZmVyX2ZyZWUo bmV3X3N1YnBsYW5faW5kZXhlcyk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVHVwbGVzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMK aW5kZXggYjc2OGVhZTllNTMuLmQxMDUxMjNlM2UxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVHVwbGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxl cy5jCkBAIC02OCw2ICs2OCw3IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9leHBhbmRlZGRhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CisjaW5jbHVkZSAidXRpbHMvc3RhY2tfYnVmZmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2Fj aGUuaCIKIAogc3RhdGljIFR1cGxlRGVzYyBFeGVjVHlwZUZyb21UTEludGVybmFsKExpc3QgKnRh cmdldExpc3QsCkBAIC0yMzMwLDggKzIzMzEsMTAgQEAgQnVpbGRUdXBsZUZyb21DU3RyaW5ncyhB dHRJbk1ldGFkYXRhICphdHRpbm1ldGEsIGNoYXIgKip2YWx1ZXMpCiAJaW50CQkJaTsKIAlIZWFw VHVwbGUJdHVwbGU7CiAKLQlkdmFsdWVzID0gKERhdHVtICopIHBhbGxvYyhuYXR0cyAqIHNpemVv ZihEYXR1bSkpOwotCW51bGxzID0gKGJvb2wgKikgcGFsbG9jKG5hdHRzICogc2l6ZW9mKGJvb2wp KTsKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCisJZHZhbHVlcyA9IHN0YWNrX2J1ZmZlcl9h bGxvY19hcnJheShEYXR1bSwgbmF0dHMpOworCW51bGxzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2Fy cmF5KGJvb2wsIG5hdHRzKTsKIAogCS8qCiAJICogQ2FsbCB0aGUgImluIiBmdW5jdGlvbiBmb3Ig ZWFjaCBub24tZHJvcHBlZCBhdHRyaWJ1dGUsIGV2ZW4gZm9yIG51bGxzLApAQCAtMjM2OCw4ICsy MzcxLDggQEAgQnVpbGRUdXBsZUZyb21DU3RyaW5ncyhBdHRJbk1ldGFkYXRhICphdHRpbm1ldGEs IGNoYXIgKip2YWx1ZXMpCiAJICogUmVsZWFzZSBsb2NhbGx5IHBhbGxvYydkIHNwYWNlLiAgWFhY IHdvdWxkIHByb2JhYmx5IGJlIGdvb2QgdG8gcGZyZWUKIAkgKiB2YWx1ZXMgb2YgcGFzcy1ieS1y ZWZlcmVuY2UgZGF0dW1zLCBhcyB3ZWxsLgogCSAqLwotCXBmcmVlKGR2YWx1ZXMpOwotCXBmcmVl KG51bGxzKTsKKwlzdGFja19idWZmZXJfZnJlZShkdmFsdWVzKTsKKwlzdGFja19idWZmZXJfZnJl ZShudWxscyk7CiAKIAlyZXR1cm4gdHVwbGU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKaW5kZXgg N2Q0ODdhMTY1ZmEuLmZmYzE5OGY1MjZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCkBAIC0yNzMs NiArMjczLDcgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzX21lbW9yeWNodW5rLmgiCisj aW5jbHVkZSAidXRpbHMvc3RhY2tfYnVmZmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKIApAQCAtNDM0NywxMCArNDM0OCwxMiBA QCBidWlsZF9wZXJ0cmFuc19mb3JfYWdncmVmKEFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMsCiAJ ewogCQlPaWQJCSAgICpvcHM7CiAKKwkJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCQlBc3Nl cnQobnVtQXJndW1lbnRzID4gMCk7CiAJCUFzc2VydChsaXN0X2xlbmd0aChhZ2dyZWYtPmFnZ2Rp c3RpbmN0KSA9PSBudW1EaXN0aW5jdENvbHMpOwogCi0JCW9wcyA9IHBhbGxvYyhudW1EaXN0aW5j dENvbHMgKiBzaXplb2YoT2lkKSk7CisJCW9wcyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShP aWQsIG51bURpc3RpbmN0Q29scyk7CiAKIAkJaSA9IDA7CiAJCWZvcmVhY2gobGMsIGFnZ3JlZi0+ YWdnZGlzdGluY3QpCkBAIC00MzY3LDcgKzQzNzAsNyBAQCBidWlsZF9wZXJ0cmFuc19mb3JfYWdn cmVmKEFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMsCiAJCQkJCQkJCQkgICBvcHMsCiAJCQkJCQkJ CQkgICBwZXJ0cmFucy0+c29ydENvbGxhdGlvbnMsCiAJCQkJCQkJCQkgICAmYWdnc3RhdGUtPnNz LnBzKTsKLQkJcGZyZWUob3BzKTsKKwkJc3RhY2tfYnVmZmVyX2ZyZWUob3BzKTsKIAl9CiAKIAlw ZXJ0cmFucy0+c29ydHN0YXRlcyA9IHBhbGxvYzBfYXJyYXkoVHVwbGVzb3J0c3RhdGUgKiwgbnVt R3JvdXBpbmdTZXRzKTsKQEAgLTQzODIsMTEgKzQzODUsMTMgQEAgR2V0QWdnSW5pdFZhbChEYXR1 bSB0ZXh0SW5pdFZhbCwgT2lkIHRyYW5zdHlwZSkKIAljaGFyCSAgICpzdHJJbml0VmFsOwogCURh dHVtCQlpbml0VmFsOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCWdldFR5cGVJbnB1 dEluZm8odHJhbnN0eXBlLCAmdHlwaW5wdXQsICZ0eXBpb3BhcmFtKTsKLQlzdHJJbml0VmFsID0g VGV4dERhdHVtR2V0Q1N0cmluZyh0ZXh0SW5pdFZhbCk7CisJc3RySW5pdFZhbCA9IHN0YWNrX2J1 ZmZlcl90ZXh0X2RhdHVtX3RvX2NzdHJpbmcodGV4dEluaXRWYWwpOwogCWluaXRWYWwgPSBPaWRJ bnB1dEZ1bmN0aW9uQ2FsbCh0eXBpbnB1dCwgc3RySW5pdFZhbCwKIAkJCQkJCQkJICAgdHlwaW9w YXJhbSwgLTEpOwotCXBmcmVlKHN0ckluaXRWYWwpOworCXN0YWNrX2J1ZmZlcl9mcmVlKHN0cklu aXRWYWwpOwogCXJldHVybiBpbml0VmFsOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSGFzaGpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9p bi5jCmluZGV4IDVhYThhMDliMjY1Li5mZDdhNDdkOGI4NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUhhc2hqb2luLmMKQEAgLTE3MSw2ICsxNzEsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NoYXJlZHR1cGxl c3RvcmUuaCIKKyNpbmNsdWRlICJ1dGlscy9zdGFja19idWZmZXIuaCIKICNpbmNsdWRlICJ1dGls cy93YWl0X2V2ZW50LmgiCiAKIApAQCAtODI2LDYgKzgyNyw3IEBAIEV4ZWNJbml0SGFzaEpvaW4o SGFzaEpvaW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlMaXN0Q2VsbCAg ICpsYzsKIAkJaW50CQkJbmtleXM7CiAKKwkJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKIAogCQlo anN0YXRlLT5oal9IYXNoVHVwbGVTbG90ID0gc2xvdDsKIApAQCAtODQwLDkgKzg0Miw5IEBAIEV4 ZWNJbml0SGFzaEpvaW4oSGFzaEpvaW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCQkgKi8KIAkJbmtleXMgPSBsaXN0X2xlbmd0aChub2RlLT5oYXNob3BlcmF0b3JzKTsKIAot CQlvdXRlcl9oYXNoZnVuY2lkID0gcGFsbG9jX2FycmF5KE9pZCwgbmtleXMpOwotCQlpbm5lcl9o YXNoZnVuY2lkID0gcGFsbG9jX2FycmF5KE9pZCwgbmtleXMpOwotCQloYXNoX3N0cmljdCA9IHBh bGxvY19hcnJheShib29sLCBua2V5cyk7CisJCW91dGVyX2hhc2hmdW5jaWQgPSBzdGFja19idWZm ZXJfYWxsb2NfYXJyYXkoT2lkLCBua2V5cyk7CisJCWlubmVyX2hhc2hmdW5jaWQgPSBzdGFja19i dWZmZXJfYWxsb2NfYXJyYXkoT2lkLCBua2V5cyk7CisJCWhhc2hfc3RyaWN0ID0gc3RhY2tfYnVm ZmVyX2FsbG9jX2FycmF5KGJvb2wsIG5rZXlzKTsKIAogCQkvKgogCQkgKiBEZXRlcm1pbmUgdGhl IGhhc2ggZnVuY3Rpb24gZm9yIGVhY2ggc2lkZSBvZiB0aGUgam9pbiBmb3IgdGhlIGdpdmVuCkBA IC05MDUsOSArOTA3LDkgQEAgRXhlY0luaXRIYXNoSm9pbihIYXNoSm9pbiAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCX0KIAogCQkvKiBubyBuZWVkIHRvIGtlZXAgdGhlc2Ug Ki8KLQkJcGZyZWUob3V0ZXJfaGFzaGZ1bmNpZCk7Ci0JCXBmcmVlKGlubmVyX2hhc2hmdW5jaWQp OwotCQlwZnJlZShoYXNoX3N0cmljdCk7CisJCXN0YWNrX2J1ZmZlcl9mcmVlKG91dGVyX2hhc2hm dW5jaWQpOworCQlzdGFja19idWZmZXJfZnJlZShpbm5lcl9oYXNoZnVuY2lkKTsKKwkJc3RhY2tf YnVmZmVyX2ZyZWUoaGFzaF9zdHJpY3QpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l bW9pemUuYwppbmRleCBlZGY1MmVmZDRjMy4uMDlhNWU2NzRkZDcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lbW9pemUuYwpAQCAtNzQsNiArNzQsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisj aW5jbHVkZSAidXRpbHMvc3RhY2tfYnVmZmVyLmgiCiAKIC8qIFN0YXRlcyBvZiB0aGUgRXhlY01l bW9pemUgc3RhdGUgbWFjaGluZSAqLwogI2RlZmluZSBNRU1PX0NBQ0hFX0xPT0tVUAkJCTEJLyog QXR0ZW1wdCB0byBwZXJmb3JtIGEgY2FjaGUgbG9va3VwICovCkBAIC05NTgsNiArOTU5LDggQEAg RXhlY0luaXRNZW1vaXplKE1lbW9pemUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCWludAkJCW5rZXlzOwogCU9pZAkJICAgKmVxZnVuY29pZHM7CiAKKwlERUNMQVJFX1NUQUNL X0JVRkZFUigpOworCiAJLyogY2hlY2sgZm9yIHVuc3VwcG9ydGVkIGZsYWdzICovCiAJQXNzZXJ0 KCEoZWZsYWdzICYgKEVYRUNfRkxBR19CQUNLV0FSRCB8IEVYRUNfRkxBR19NQVJLKSkpOwogCkBA IC0xMDA2LDcgKzEwMDksNyBAQCBFeGVjSW5pdE1lbW9pemUoTWVtb2l6ZSAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJCQkJCSAqIGRhdGEgKi8KIAltc3RhdGUtPmhh c2hmdW5jdGlvbnMgPSAoRm1nckluZm8gKikgcGFsbG9jKG5rZXlzICogc2l6ZW9mKEZtZ3JJbmZv KSk7CiAKLQllcWZ1bmNvaWRzID0gcGFsbG9jKG5rZXlzICogc2l6ZW9mKE9pZCkpOworCWVxZnVu Y29pZHMgPSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXkoT2lkLCBua2V5cyk7CiAKIAlmb3IgKGkg PSAwOyBpIDwgbmtleXM7IGkrKykKIAl7CkBAIC0xMDMzLDcgKzEwMzYsNyBAQCBFeGVjSW5pdE1l bW9pemUoTWVtb2l6ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJ CQkJCQkgICBub2RlLT5wYXJhbV9leHBycywKIAkJCQkJCQkJCQkJCSAgIChQbGFuU3RhdGUgKikg bXN0YXRlKTsKIAotCXBmcmVlKGVxZnVuY29pZHMpOworCXN0YWNrX2J1ZmZlcl9mcmVlKGVxZnVu Y29pZHMpOwogCW1zdGF0ZS0+bWVtX3VzZWQgPSAwOwogCiAJLyogTGltaXQgdGhlIHRvdGFsIG1l bW9yeSBjb25zdW1lZCBieSB0aGUgY2FjaGUgdG8gdGhpcyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVdpbmRvd0FnZy5jCmluZGV4IGQ5YjY0YjBmNDY1Li5lZDM3NDRmNTQ5MyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgInV0aWxz L2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRp bHMvcmVncHJvYy5oIgorI2luY2x1ZGUgInV0aWxzL3N0YWNrX2J1ZmZlci5oIgogI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAid2luZG93YXBpLmgiCiAKQEAgLTMxNjMsMTEg KzMxNjQsMTMgQEAgR2V0QWdnSW5pdFZhbChEYXR1bSB0ZXh0SW5pdFZhbCwgT2lkIHRyYW5zdHlw ZSkKIAljaGFyCSAgICpzdHJJbml0VmFsOwogCURhdHVtCQlpbml0VmFsOwogCisJREVDTEFSRV9T VEFDS19CVUZGRVIoKTsKKwogCWdldFR5cGVJbnB1dEluZm8odHJhbnN0eXBlLCAmdHlwaW5wdXQs ICZ0eXBpb3BhcmFtKTsKLQlzdHJJbml0VmFsID0gVGV4dERhdHVtR2V0Q1N0cmluZyh0ZXh0SW5p dFZhbCk7CisJc3RySW5pdFZhbCA9IHN0YWNrX2J1ZmZlcl90ZXh0X2RhdHVtX3RvX2NzdHJpbmco dGV4dEluaXRWYWwpOwogCWluaXRWYWwgPSBPaWRJbnB1dEZ1bmN0aW9uQ2FsbCh0eXBpbnB1dCwg c3RySW5pdFZhbCwKIAkJCQkJCQkJICAgdHlwaW9wYXJhbSwgLTEpOwotCXBmcmVlKHN0ckluaXRW YWwpOworCXN0YWNrX2J1ZmZlcl9mcmVlKHN0ckluaXRWYWwpOwogCXJldHVybiBpbml0VmFsOwog fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL3NwaS5jCmluZGV4IDMwMTlhM2IyYjk3Li5kYmJiNzEwZjg3NyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv c3BpLmMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2lu Y2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKKyNpbmNsdWRl ICJ1dGlscy9zdGFja19idWZmZXIuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKQEAgLTExMTMsNiArMTExNCw4IEBAIFNQSV9tb2Rp Znl0dXBsZShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXBsZSwgaW50IG5hdHRzLCBpbnQgKmF0 dG51bSwKIAlib29sCSAgICpuOwogCWludAkJCWk7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigp OworCiAJaWYgKHJlbCA9PSBOVUxMIHx8IHR1cGxlID09IE5VTEwgfHwgbmF0dHMgPCAwIHx8IGF0 dG51bSA9PSBOVUxMIHx8IFZhbHVlcyA9PSBOVUxMKQogCXsKIAkJU1BJX3Jlc3VsdCA9IFNQSV9F UlJPUl9BUkdVTUVOVDsKQEAgLTExMzAsOCArMTEzMyw4IEBAIFNQSV9tb2RpZnl0dXBsZShSZWxh dGlvbiByZWwsIEhlYXBUdXBsZSB0dXBsZSwgaW50IG5hdHRzLCBpbnQgKmF0dG51bSwKIAlTUElf cmVzdWx0ID0gMDsKIAogCW51bWJlck9mQXR0cmlidXRlcyA9IHJlbC0+cmRfYXR0LT5uYXR0czsK LQl2ID0gcGFsbG9jX2FycmF5KERhdHVtLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwotCW4gPSBwYWxs b2NfYXJyYXkoYm9vbCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKKwl2ID0gc3RhY2tfYnVmZmVyX2Fs bG9jX2FycmF5KERhdHVtLCBudW1iZXJPZkF0dHJpYnV0ZXMpOworCW4gPSBzdGFja19idWZmZXJf YWxsb2NfYXJyYXkoYm9vbCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAogCS8qIGZldGNoIG9sZCB2 YWx1ZXMgYW5kIG51bGxzICovCiAJaGVhcF9kZWZvcm1fdHVwbGUodHVwbGUsIHJlbC0+cmRfYXR0 LCB2LCBuKTsKQEAgLTExNjMsOCArMTE2Niw4IEBAIFNQSV9tb2RpZnl0dXBsZShSZWxhdGlvbiBy ZWwsIEhlYXBUdXBsZSB0dXBsZSwgaW50IG5hdHRzLCBpbnQgKmF0dG51bSwKIAkJU1BJX3Jlc3Vs dCA9IFNQSV9FUlJPUl9OT0FUVFJJQlVURTsKIAl9CiAKLQlwZnJlZSh2KTsKLQlwZnJlZShuKTsK KwlzdGFja19idWZmZXJfZnJlZSh2KTsKKwlzdGFja19idWZmZXJfZnJlZShuKTsKIAogCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCi0tIAoyLjUzLjAKCg== --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0008-Use-stack-buffer-in-some-adt-code.patch" Content-Disposition: attachment; filename="v2-0008-Use-stack-buffer-in-some-adt-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt5y2r8 RnJvbSA4OWE3YmM2ZTU1NGZjZTNkMzVjMDFlY2NkZDZhMWE2MThlNjYwOGQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMiBNYXIgMjAyNiAwNDowODozMSArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MDgvMTldIFVzZSBzdGFjayBidWZmZXIgaW4gc29tZSBhZHQgY29kZS4KCi0tLQogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYyAgIHwgIDM5ICsrKystLS0tCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvZGF0dW0uYyAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uZnVuY3MuYyAgICB8ICA1MiArKysrKysrKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xp a2Vfc3VwcG9ydC5jIHwgIDU5ICsrKysrKystLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251 bWVyaWMuYyAgICAgIHwgIDE1ICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jvd3R5cGVzLmMg ICAgIHwgMTMzICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jICAgIHwgIDQ3ICsrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC90c3ZlY3Rvcl9vcC5jICB8ICAxMCArLQogOCBmaWxlcyBjaGFuZ2VkLCAyMjMgaW5zZXJ0aW9u cygrKSwgMTM5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9hcnJheWZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jCmluZGV4 IDczNGU1ZmVhNDVlLi5jMjcwNmJlOTI3NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2FycmF5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5j CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgorI2luY2x1 ZGUgInV0aWxzL3N0YWNrX2J1ZmZlci5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAK IApAQCAtMTA1MSw2ICsxMDUyLDggQEAgYXJyYXlfb3V0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJYXJy YXlfaXRlcglpdGVyOwogCUFycmF5TWV0YVN0YXRlICpteV9leHRyYTsKIAorCURFQ0xBUkVfU1RB Q0tfQlVGRkVSKCk7CisKIAkvKgogCSAqIFdlIGFycmFuZ2UgdG8gbG9vayB1cCBpbmZvIGFib3V0 IGVsZW1lbnQgdHlwZSwgaW5jbHVkaW5nIGl0cyBvdXRwdXQKIAkgKiBjb252ZXJzaW9uIHByb2Ms IG9ubHkgb25jZSBwZXIgc2VyaWVzIG9mIGNhbGxzLCBhc3N1bWluZyB0aGUgZWxlbWVudApAQCAt MTExMiw4ICsxMTE1LDggQEAgYXJyYXlfb3V0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJICogYW55IG92 ZXJoZWFkIHN1Y2ggYXMgZXNjYXBpbmcgYmFja3NsYXNoZXMpLCBhbmQgZGV0ZWN0IHdoZXRoZXIg ZWFjaAogCSAqIGl0ZW0gbmVlZHMgZG91YmxlIHF1b3Rlcy4KIAkgKi8KLQl2YWx1ZXMgPSAoY2hh ciAqKikgcGFsbG9jKG5pdGVtcyAqIHNpemVvZihjaGFyICopKTsKLQluZWVkcXVvdGVzID0gKGJv b2wgKikgcGFsbG9jKG5pdGVtcyAqIHNpemVvZihib29sKSk7CisJdmFsdWVzID0gc3RhY2tfYnVm ZmVyX2FsbG9jX2FycmF5KGNoYXIgKiwgbml0ZW1zKTsKKwluZWVkcXVvdGVzID0gc3RhY2tfYnVm ZmVyX2FsbG9jX2FycmF5KGJvb2wsIG5pdGVtcyk7CiAJb3ZlcmFsbF9sZW5ndGggPSAwOwogCiAJ YXJyYXlfaXRlcl9zZXR1cCgmaXRlciwgdiwgdHlwbGVuLCB0eXBieXZhbCwgdHlwYWxpZ24pOwpA QCAtMTI1Nyw4ICsxMjYwLDggQEAgYXJyYXlfb3V0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJLyogQXNz ZXJ0IHRoYXQgd2UgY2FsY3VsYXRlZCB0aGUgc3RyaW5nIGxlbmd0aCBhY2N1cmF0ZWx5ICovCiAJ QXNzZXJ0KG92ZXJhbGxfbGVuZ3RoID09IChwIC0gcmV0dmFsICsgMSkpOwogCi0JcGZyZWUodmFs dWVzKTsKLQlwZnJlZShuZWVkcXVvdGVzKTsKKwlzdGFja19idWZmZXJfZnJlZSh2YWx1ZXMpOwor CXN0YWNrX2J1ZmZlcl9mcmVlKG5lZWRxdW90ZXMpOwogCiAJUEdfUkVUVVJOX0NTVFJJTkcocmV0 dmFsKTsKIH0KQEAgLTMyMzIsNiArMzIzNSw4IEBAIGFycmF5X21hcChEYXR1bSBhcnJheWQsCiAJ RGF0dW0JICAgKnRyYW5zZm9ybV9zb3VyY2UgPSBleHByc3RhdGUtPmlubmVybW9zdF9jYXNldmFs OwogCWJvb2wJICAgKnRyYW5zZm9ybV9zb3VyY2VfaXNudWxsID0gZXhwcnN0YXRlLT5pbm5lcm1v c3RfY2FzZW51bGw7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJaW5wVHlwZSA9IEFB UlJfRUxFTVRZUEUodik7CiAJbmRpbSA9IEFBUlJfTkRJTSh2KTsKIAlkaW0gPSBBQVJSX0RJTVMo dik7CkBAIC0zMjc4LDggKzMyODMsOCBAQCBhcnJheV9tYXAoRGF0dW0gYXJyYXlkLAogCXR5cGFs aWduYnkgPSB0eXBhbGlnbl90b19hbGlnbmJ5KHR5cGFsaWduKTsKIAogCS8qIEFsbG9jYXRlIHRl bXBvcmFyeSBhcnJheXMgZm9yIG5ldyB2YWx1ZXMgKi8KLQl2YWx1ZXMgPSAoRGF0dW0gKikgcGFs bG9jKG5pdGVtcyAqIHNpemVvZihEYXR1bSkpOwotCW51bGxzID0gKGJvb2wgKikgcGFsbG9jKG5p dGVtcyAqIHNpemVvZihib29sKSk7CisJdmFsdWVzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5 KERhdHVtLCBuaXRlbXMpOworCW51bGxzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KGJvb2ws IG5pdGVtcyk7CiAKIAkvKiBMb29wIG92ZXIgc291cmNlIGRhdGEgKi8KIAlhcnJheV9pdGVyX3Nl dHVwKCZpdGVyLCB2LCBpbnBfdHlwbGVuLCBpbnBfdHlwYnl2YWwsIGlucF90eXBhbGlnbik7CkBA IC0zMzQwLDggKzMzNDUsOCBAQCBhcnJheV9tYXAoRGF0dW0gYXJyYXlkLAogCS8qCiAJICogTm90 ZTogZG8gbm90IHJpc2sgdHJ5aW5nIHRvIHBmcmVlIHRoZSByZXN1bHRzIG9mIHRoZSBjYWxsZWQg ZXhwcmVzc2lvbgogCSAqLwotCXBmcmVlKHZhbHVlcyk7Ci0JcGZyZWUobnVsbHMpOworCXN0YWNr X2J1ZmZlcl9mcmVlKHZhbHVlcyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUobnVsbHMpOwogCiAJcmV0 dXJuIFBvaW50ZXJHZXREYXR1bShyZXN1bHQpOwogfQpAQCAtNjQyNCw2ICs2NDI5LDggQEAgYXJy YXlfcmVwbGFjZV9pbnRlcm5hbChBcnJheVR5cGUgKmFycmF5LAogCWJvb2wJCWNoYW5nZWQgPSBm YWxzZTsKIAlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZF UigpOworCiAJZWxlbWVudF90eXBlID0gQVJSX0VMRU1UWVBFKGFycmF5KTsKIAluZGltID0gQVJS X05ESU0oYXJyYXkpOwogCWRpbSA9IEFSUl9ESU1TKGFycmF5KTsKQEAgLTY0ODIsOCArNjQ4OSw4 IEBAIGFycmF5X3JlcGxhY2VfaW50ZXJuYWwoQXJyYXlUeXBlICphcnJheSwKIAkJCQkJCQkgY29s bGF0aW9uLCBOVUxMLCBOVUxMKTsKIAogCS8qIEFsbG9jYXRlIHRlbXBvcmFyeSBhcnJheXMgZm9y IG5ldyB2YWx1ZXMgKi8KLQl2YWx1ZXMgPSAoRGF0dW0gKikgcGFsbG9jKG5pdGVtcyAqIHNpemVv ZihEYXR1bSkpOwotCW51bGxzID0gKGJvb2wgKikgcGFsbG9jKG5pdGVtcyAqIHNpemVvZihib29s KSk7CisJdmFsdWVzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KERhdHVtLCBuaXRlbXMpOwor CW51bGxzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KGJvb2wsIG5pdGVtcyk7CiAKIAkvKiBM b29wIG92ZXIgc291cmNlIGRhdGEgKi8KIAlhcnJheWRhdGFwdHIgPSBBUlJfREFUQV9QVFIoYXJy YXkpOwpAQCAtNjU5OSwxNiArNjYwNiwxNiBAQCBhcnJheV9yZXBsYWNlX2ludGVybmFsKEFycmF5 VHlwZSAqYXJyYXksCiAJICovCiAJaWYgKCFjaGFuZ2VkKQogCXsKLQkJcGZyZWUodmFsdWVzKTsK LQkJcGZyZWUobnVsbHMpOworCQlzdGFja19idWZmZXJfZnJlZSh2YWx1ZXMpOworCQlzdGFja19i dWZmZXJfZnJlZShudWxscyk7CiAJCXJldHVybiBhcnJheTsKIAl9CiAKIAkvKiBJZiBhbGwgZWxl bWVudHMgd2VyZSByZW1vdmVkIHJldHVybiBhbiBlbXB0eSBhcnJheSAqLwogCWlmIChucmVzdWx0 ID09IDApCiAJewotCQlwZnJlZSh2YWx1ZXMpOwotCQlwZnJlZShudWxscyk7CisJCXN0YWNrX2J1 ZmZlcl9mcmVlKHZhbHVlcyk7CisJCXN0YWNrX2J1ZmZlcl9mcmVlKG51bGxzKTsKIAkJcmV0dXJu IGNvbnN0cnVjdF9lbXB0eV9hcnJheShlbGVtZW50X3R5cGUpOwogCX0KIApAQCAtNjY0Myw4ICs2 NjUwLDggQEAgYXJyYXlfcmVwbGFjZV9pbnRlcm5hbChBcnJheVR5cGUgKmFycmF5LAogCQkJCSB0 eXBsZW4sIHR5cGJ5dmFsLCB0eXBhbGlnbiwKIAkJCQkgZmFsc2UpOwogCi0JcGZyZWUodmFsdWVz KTsKLQlwZnJlZShudWxscyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUodmFsdWVzKTsKKwlzdGFja19i dWZmZXJfZnJlZShudWxscyk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2RhdHVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0dW0u YwppbmRleCA4ODMyNzg1NTQwZi4uOGIwNGJhOGI5ZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9kYXR1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXR1bS5jCkBA IC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGls cy9leHBhbmRlZGRhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1 ZGUgInV0aWxzL3N0YWNrX2J1ZmZlci5oIgogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDY0 LDYgKzQ2NSw4IEBAIGRhdHVtU2VyaWFsaXplKERhdHVtIHZhbHVlLCBib29sIGlzbnVsbCwgYm9v bCB0eXBCeVZhbCwgaW50IHR5cExlbiwKIAlFeHBhbmRlZE9iamVjdEhlYWRlciAqZW9oID0gTlVM TDsKIAlpbnQJCQloZWFkZXI7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJLyogV3Jp dGUgaGVhZGVyIHdvcmQuICovCiAJaWYgKGlzbnVsbCkKIAkJaGVhZGVyID0gLTI7CkBAIC00OTYs MTMgKzQ5OSwxMyBAQCBkYXR1bVNlcmlhbGl6ZShEYXR1bSB2YWx1ZSwgYm9vbCBpc251bGwsIGJv b2wgdHlwQnlWYWwsIGludCB0eXBMZW4sCiAJCQkgKiBFT0hfZmxhdHRlbl9pbnRvIGV4cGVjdHMg dGhlIHRhcmdldCBhZGRyZXNzIHRvIGJlIG1heGFsaWduZWQsCiAJCQkgKiBzbyB3ZSBjYW4ndCBz dG9yZSBkaXJlY3RseSB0byAqc3RhcnRfYWRkcmVzcy4KIAkJCSAqLwotCQkJdG1wID0gKGNoYXIg KikgcGFsbG9jKGhlYWRlcik7CisJCQl0bXAgPSAoY2hhciAqKSBzdGFja19idWZmZXJfYWxsb2Mo aGVhZGVyKTsKIAkJCUVPSF9mbGF0dGVuX2ludG8oZW9oLCB0bXAsIGhlYWRlcik7CiAJCQltZW1j cHkoKnN0YXJ0X2FkZHJlc3MsIHRtcCwgaGVhZGVyKTsKIAkJCSpzdGFydF9hZGRyZXNzICs9IGhl YWRlcjsKIAogCQkJLyogYmUgdGlkeS4gKi8KLQkJCXBmcmVlKHRtcCk7CisJCQlzdGFja19idWZm ZXJfZnJlZSh0bXApOwogCQl9CiAJCWVsc2UKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25mdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5j CmluZGV4IGQ1YjY0ZDdmY2E1Li5mMGJlZDUxYTI3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25mdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVu Y3MuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgInV0aWxzL2pzb25mdW5jcy5oIgogI2lu Y2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisj aW5jbHVkZSAidXRpbHMvc3RhY2tfYnVmZmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCkBAIC0xNjgxLDcgKzE2ODIsMTEgQEAg anNvbmJfc2V0X2VsZW1lbnQoSnNvbmIgKmpiLCBjb25zdCBEYXR1bSAqcGF0aCwgaW50IHBhdGhf bGVuLAogewogCUpzb25iSW5TdGF0ZSBzdGF0ZSA9IHswfTsKIAlKc29uYkl0ZXJhdG9yICppdDsK LQlib29sCSAgICpwYXRoX251bGxzID0gcGFsbG9jMF9hcnJheShib29sLCBwYXRoX2xlbik7CisJ Ym9vbAkgICAqcGF0aF9udWxsczsKKworCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKKwlwYXRo X251bGxzID0gc3RhY2tfYnVmZmVyX2FsbG9jMF9hcnJheShib29sLCBwYXRoX2xlbik7CiAKIAlp ZiAobmV3dmFsLT50eXBlID09IGpidkFycmF5ICYmIG5ld3ZhbC0+dmFsLmFycmF5LnJhd1NjYWxh cikKIAkJKm5ld3ZhbCA9IG5ld3ZhbC0+dmFsLmFycmF5LmVsZW1zWzBdOwpAQCAtMTY5Miw3ICsx Njk3LDcgQEAganNvbmJfc2V0X2VsZW1lbnQoSnNvbmIgKmpiLCBjb25zdCBEYXR1bSAqcGF0aCwg aW50IHBhdGhfbGVuLAogCQkJSkJfUEFUSF9DUkVBVEUgfCBKQl9QQVRIX0ZJTExfR0FQUyB8CiAJ CQlKQl9QQVRIX0NPTlNJU1RFTlRfUE9TSVRJT04pOwogCi0JcGZyZWUocGF0aF9udWxscyk7CisJ c3RhY2tfYnVmZmVyX2ZyZWUocGF0aF9udWxscyk7CiAKIAlQR19SRVRVUk5fSlNPTkJfUChKc29u YlZhbHVlVG9Kc29uYihzdGF0ZS5yZXN1bHQpKTsKIH0KQEAgLTI5MjEsNiArMjkyNiw4IEBAIHBv cHVsYXRlX2FycmF5KEFycmF5SU9EYXRhICphaW8sCiAJaW50CQkgICAqbGJzOwogCWludAkJCWk7 CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJY3R4LmFpbyA9IGFpbzsKIAljdHgubWN4 dCA9IG1jeHQ7CiAJY3R4LmFjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKQEAgLTI5NTUsNyAr Mjk2Miw3IEBAIHBvcHVsYXRlX2FycmF5KEFycmF5SU9EYXRhICphaW8sCiAKIAlBc3NlcnQoY3R4 Lm5kaW1zID4gMCk7CiAKLQlsYnMgPSBwYWxsb2NfYXJyYXkoaW50LCBjdHgubmRpbXMpOworCWxi cyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShpbnQsIGN0eC5uZGltcyk7CiAKIAlmb3IgKGkg PSAwOyBpIDwgY3R4Lm5kaW1zOyBpKyspCiAJCWxic1tpXSA9IDE7CkBAIC0yOTY1LDcgKzI5NzIs NyBAQCBwb3B1bGF0ZV9hcnJheShBcnJheUlPRGF0YSAqYWlvLAogCiAJcGZyZWUoY3R4LmRpbXMp OwogCXBmcmVlKGN0eC5zaXplcyk7Ci0JcGZyZWUobGJzKTsKKwlzdGFja19idWZmZXJfZnJlZShs YnMpOwogCiAJKmlzbnVsbCA9IGZhbHNlOwogCXJldHVybiByZXN1bHQ7CkBAIC0zMTI1LDYgKzMx MzIsOSBAQCBwb3B1bGF0ZV9zY2FsYXIoU2NhbGFySU9EYXRhICppbywgT2lkIHR5cGlkLCBpbnQz MiB0eXBtb2QsIEpzVmFsdWUgKmpzdiwKIAlEYXR1bQkJcmVzOwogCWNoYXIJICAgKnN0ciA9IE5V TEw7CiAJY29uc3QgY2hhciAqanNvbiA9IE5VTEw7CisJYm9vbAkJc3RyX3N0YWNrID0gZmFsc2U7 CisKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOwogCiAJaWYgKGpzdi0+aXNfanNvbikKIAl7CkBA IC0zMTQ5LDkgKzMxNTksOCBAQCBwb3B1bGF0ZV9zY2FsYXIoU2NhbGFySU9EYXRhICppbywgT2lk IHR5cGlkLCBpbnQzMiB0eXBtb2QsIEpzVmFsdWUgKmpzdiwKIAkJZWxzZSBpZiAobGVuID49IDAp CiAJCXsKIAkJCS8qIGNyZWF0ZSBhIE5VTC10ZXJtaW5hdGVkIHZlcnNpb24gKi8KLQkJCXN0ciA9 IHBhbGxvYyhsZW4gKyAxKTsKLQkJCW1lbWNweShzdHIsIGpzb24sIGxlbik7Ci0JCQlzdHJbbGVu XSA9ICdcMCc7CisJCQlzdHIgPSBzdGFja19idWZmZXJfc3RybmR1cChqc29uLCBsZW4pOworCQkJ c3RyX3N0YWNrID0gdHJ1ZTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTMxNjQsNyArMzE3MywxMCBA QCBwb3B1bGF0ZV9zY2FsYXIoU2NhbGFySU9EYXRhICppbywgT2lkIHR5cGlkLCBpbnQzMiB0eXBt b2QsIEpzVmFsdWUgKmpzdiwKIAkJSnNvbmJWYWx1ZSAqamJ2ID0ganN2LT52YWwuanNvbmI7CiAK IAkJaWYgKGpidi0+dHlwZSA9PSBqYnZTdHJpbmcgJiYgb21pdF9xdW90ZXMpCi0JCQlzdHIgPSBw bnN0cmR1cChqYnYtPnZhbC5zdHJpbmcudmFsLCBqYnYtPnZhbC5zdHJpbmcubGVuKTsKKwkJewor CQkJc3RyID0gc3RhY2tfYnVmZmVyX3N0cm5kdXAoamJ2LT52YWwuc3RyaW5nLnZhbCwgamJ2LT52 YWwuc3RyaW5nLmxlbik7CisJCQlzdHJfc3RhY2sgPSB0cnVlOworCQl9CiAJCWVsc2UgaWYgKHR5 cGlkID09IEpTT05CT0lEKQogCQl7CiAJCQlKc29uYgkgICAqanNvbmIgPSBKc29uYlZhbHVlVG9K c29uYihqYnYpOyAvKiBkaXJlY3RseSB1c2UganNvbmIgKi8KQEAgLTMxODMsOSArMzE5NSwxNSBA QCBwb3B1bGF0ZV9zY2FsYXIoU2NhbGFySU9EYXRhICppbywgT2lkIHR5cGlkLCBpbnQzMiB0eXBt b2QsIEpzVmFsdWUgKmpzdiwKIAkJCXN0ciA9IEpzb25iVG9DU3RyaW5nKE5VTEwsICZqc29uYi0+ cm9vdCwgVkFSU0laRShqc29uYikpOwogCQl9CiAJCWVsc2UgaWYgKGpidi0+dHlwZSA9PSBqYnZT dHJpbmcpCS8qIHF1b3RlcyBhcmUgc3RyaXBwZWQgKi8KLQkJCXN0ciA9IHBuc3RyZHVwKGpidi0+ dmFsLnN0cmluZy52YWwsIGpidi0+dmFsLnN0cmluZy5sZW4pOworCQl7CisJCQlzdHIgPSBzdGFj a19idWZmZXJfc3RybmR1cChqYnYtPnZhbC5zdHJpbmcudmFsLCBqYnYtPnZhbC5zdHJpbmcubGVu KTsKKwkJCXN0cl9zdGFjayA9IHRydWU7CisJCX0KIAkJZWxzZSBpZiAoamJ2LT50eXBlID09IGpi dkJvb2wpCi0JCQlzdHIgPSBwc3RyZHVwKGpidi0+dmFsLmJvb2xlYW4gPyAidHJ1ZSIgOiAiZmFs c2UiKTsKKwkJeworCQkJc3RyID0gc3RhY2tfYnVmZmVyX3N0cmR1cChqYnYtPnZhbC5ib29sZWFu ID8gInRydWUiIDogImZhbHNlIik7CisJCQlzdHJfc3RhY2sgPSB0cnVlOworCQl9CiAJCWVsc2Ug aWYgKGpidi0+dHlwZSA9PSBqYnZOdW1lcmljKQogCQkJc3RyID0gRGF0dW1HZXRDU3RyaW5nKERp cmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19vdXQsCiAJCQkJCQkJCQkJCQkJICBQb2ludGVyR2V0 RGF0dW0oamJ2LT52YWwubnVtZXJpYykpKTsKQEAgLTMyMDQsNyArMzIyMiw5IEBAIHBvcHVsYXRl X3NjYWxhcihTY2FsYXJJT0RhdGEgKmlvLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgSnNWYWx1 ZSAqanN2LAogCX0KIAogCS8qIGZyZWUgdGVtcG9yYXJ5IGJ1ZmZlciAqLwotCWlmIChzdHIgIT0g anNvbikKKwlpZiAoc3RyX3N0YWNrKQorCQlzdGFja19idWZmZXJfZnJlZShzdHIpOworCWVsc2Ug aWYgKHN0ciAhPSBqc29uKQogCQlwZnJlZShzdHIpOwogCiAJcmV0dXJuIHJlczsKQEAgLTM1Mjgs NiArMzU0OCw4IEBAIHBvcHVsYXRlX3JlY29yZChUdXBsZURlc2MgdHVwZGVzYywKIAlpbnQJCQlu Y29sdW1ucyA9IHR1cGRlc2MtPm5hdHRzOwogCWludAkJCWk7CiAKKwlERUNMQVJFX1NUQUNLX0JV RkZFUigpOworCiAJLyoKIAkgKiBpZiB0aGUgaW5wdXQganNvbiBpcyBlbXB0eSwgd2UgY2FuIG9u bHkgc2tpcCB0aGUgcmVzdCBpZiB3ZSB3ZXJlIHBhc3NlZAogCSAqIGluIGEgbm9uLW51bGwgcmVj b3JkLCBzaW5jZSBvdGhlcndpc2UgdGhlcmUgbWF5IGJlIGlzc3VlcyB3aXRoIGRvbWFpbgpAQCAt MzU1Miw4ICszNTc0LDggQEAgcG9wdWxhdGVfcmVjb3JkKFR1cGxlRGVzYyB0dXBkZXNjLAogCQly ZWNvcmQtPm5jb2x1bW5zID0gbmNvbHVtbnM7CiAJfQogCi0JdmFsdWVzID0gKERhdHVtICopIHBh bGxvYyhuY29sdW1ucyAqIHNpemVvZihEYXR1bSkpOwotCW51bGxzID0gKGJvb2wgKikgcGFsbG9j KG5jb2x1bW5zICogc2l6ZW9mKGJvb2wpKTsKKwl2YWx1ZXMgPSBzdGFja19idWZmZXJfYWxsb2Nf YXJyYXkoRGF0dW0sIG5jb2x1bW5zKTsKKwludWxscyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJh eShib29sLCBuY29sdW1ucyk7CiAKIAlpZiAoZGVmYXVsdHZhbCkKIAl7CkBAIC0zNjE4LDggKzM2 NDAsOCBAQCBwb3B1bGF0ZV9yZWNvcmQoVHVwbGVEZXNjIHR1cGRlc2MsCiAKIAlyZXMgPSBoZWFw X2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscyk7CiAKLQlwZnJlZSh2YWx1ZXMpOwot CXBmcmVlKG51bGxzKTsKKwlzdGFja19idWZmZXJfZnJlZSh2YWx1ZXMpOworCXN0YWNrX2J1ZmZl cl9mcmVlKG51bGxzKTsKIAogCXJldHVybiByZXMtPnRfZGF0YTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9saWtlX3N1cHBvcnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9saWtlX3N1cHBvcnQuYwppbmRleCAwMWNkNmIxMDczMC4uMTE5ZWQ4NDJiZjEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9saWtlX3N1cHBvcnQuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvbGlrZV9zdXBwb3J0LmMKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9wZ19sb2NhbGUuaCIKICNpbmNsdWRl ICJ1dGlscy9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL3N0YWNrX2J1ZmZlci5oIgogI2lu Y2x1ZGUgInV0aWxzL3ZhcmxlbmEuaCIKIAogCkBAIC05OTQsMTIgKzk5NSwxNCBAQCBsaWtlX2Zp eGVkX3ByZWZpeChDb25zdCAqcGF0dF9jb25zdCwgQ29uc3QgKipwcmVmaXhfY29uc3QsCiAJaW50 CQkJcG9zLAogCQkJCW1hdGNoX3BvczsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAkv KiB0aGUgcmlnaHQtaGFuZCBjb25zdCBpcyB0eXBlIHRleHQgb3IgYnl0ZWEgKi8KIAlBc3NlcnQo dHlwZWlkID09IEJZVEVBT0lEIHx8IHR5cGVpZCA9PSBURVhUT0lEKTsKIAogCWlmICh0eXBlaWQg IT0gQllURUFPSUQpCiAJewotCQlwYXR0ID0gVGV4dERhdHVtR2V0Q1N0cmluZyhwYXR0X2NvbnN0 LT5jb25zdHZhbHVlKTsKKwkJcGF0dCA9IHN0YWNrX2J1ZmZlcl90ZXh0X2RhdHVtX3RvX2NzdHJp bmcocGF0dF9jb25zdC0+Y29uc3R2YWx1ZSk7CiAJCXBhdHRsZW4gPSBzdHJsZW4ocGF0dCk7CiAJ fQogCWVsc2UKQEAgLTEwMDcsMTIgKzEwMTAsMTIgQEAgbGlrZV9maXhlZF9wcmVmaXgoQ29uc3Qg KnBhdHRfY29uc3QsIENvbnN0ICoqcHJlZml4X2NvbnN0LAogCQlieXRlYQkgICAqYnN0ciA9IERh dHVtR2V0Qnl0ZWFQUChwYXR0X2NvbnN0LT5jb25zdHZhbHVlKTsKIAogCQlwYXR0bGVuID0gVkFS U0laRV9BTllfRVhIRFIoYnN0cik7Ci0JCXBhdHQgPSAoY2hhciAqKSBwYWxsb2MocGF0dGxlbik7 CisJCXBhdHQgPSAoY2hhciAqKSBzdGFja19idWZmZXJfYWxsb2MocGF0dGxlbik7CiAJCW1lbWNw eShwYXR0LCBWQVJEQVRBX0FOWShic3RyKSwgcGF0dGxlbik7CiAJCUFzc2VydChic3RyID09IERh dHVtR2V0UG9pbnRlcihwYXR0X2NvbnN0LT5jb25zdHZhbHVlKSk7CiAJfQogCi0JbWF0Y2ggPSBw YWxsb2MocGF0dGxlbiArIDEpOworCW1hdGNoID0gc3RhY2tfYnVmZmVyX2FsbG9jKHBhdHRsZW4g KyAxKTsKIAltYXRjaF9wb3MgPSAwOwogCWZvciAocG9zID0gMDsgcG9zIDwgcGF0dGxlbjsgcG9z KyspCiAJewpAQCAtMTA0Miw4ICsxMDQ1LDggQEAgbGlrZV9maXhlZF9wcmVmaXgoQ29uc3QgKnBh dHRfY29uc3QsIENvbnN0ICoqcHJlZml4X2NvbnN0LAogCWlmIChyZXN0X3NlbGVjICE9IE5VTEwp CiAJCSpyZXN0X3NlbGVjID0gbGlrZV9zZWxlY3Rpdml0eSgmcGF0dFtwb3NdLCBwYXR0bGVuIC0g cG9zLCBmYWxzZSk7CiAKLQlwZnJlZShwYXR0KTsKLQlwZnJlZShtYXRjaCk7CisJc3RhY2tfYnVm ZmVyX2ZyZWUocGF0dCk7CisJc3RhY2tfYnVmZmVyX2ZyZWUobWF0Y2gpOwogCiAJLyogaW4gTElL RSwgYW4gZW1wdHkgcGF0dGVybiBpcyBhbiBleGFjdCBtYXRjaCEgKi8KIAlpZiAocG9zID09IHBh dHRsZW4pCkBAIC0xMDc1LDYgKzEwNzgsOCBAQCBsaWtlX2ZpeGVkX3ByZWZpeF9jaShDb25zdCAq cGF0dF9jb25zdCwgT2lkIGNvbGxhdGlvbiwgQ29uc3QgKipwcmVmaXhfY29uc3QsCiAJaW50CQkJ bWF0Y2hfbWJsZW47CiAJcGdfbG9jYWxlX3QgbG9jYWxlID0gMDsKIAorCURFQ0xBUkVfU1RBQ0tf QlVGRkVSKCk7CisKIAkvKiB0aGUgcmlnaHQtaGFuZCBjb25zdCBpcyB0eXBlIHRleHQgb3IgYnl0 ZWEgKi8KIAlBc3NlcnQodHlwZWlkID09IEJZVEVBT0lEIHx8IHR5cGVpZCA9PSBURVhUT0lEKTsK IApAQCAtMTA5NywxMCArMTEwMiwxMCBAQCBsaWtlX2ZpeGVkX3ByZWZpeF9jaShDb25zdCAqcGF0 dF9jb25zdCwgT2lkIGNvbGxhdGlvbiwgQ29uc3QgKipwcmVmaXhfY29uc3QsCiAKIAlsb2NhbGUg PSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGF0aW9uKTsKIAotCXdwYXR0ID0gcGFs bG9jKChuYnl0ZXMgKyAxKSAqIHNpemVvZihwZ193Y2hhcikpOworCXdwYXR0ID0gc3RhY2tfYnVm ZmVyX2FsbG9jX2FycmF5KHBnX3djaGFyLCBuYnl0ZXMgKyAxKTsKIAl3cGF0dGxlbiA9IHBnX21i MndjaGFyX3dpdGhfbGVuKFZBUkRBVEFfQU5ZKHZhbCksIHdwYXR0LCBuYnl0ZXMpOwogCi0Jd21h dGNoID0gcGFsbG9jKChuYnl0ZXMgKyAxKSAqIHNpemVvZihwZ193Y2hhcikpOworCXdtYXRjaCA9 IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShwZ193Y2hhciwgbmJ5dGVzICsgMSk7CiAJZm9yICh3 cG9zID0gMDsgd3BvcyA8IHdwYXR0bGVuOyB3cG9zKyspCiAJewogCQkvKiAlIGFuZCBfIGFyZSB3 aWxkY2FyZCBjaGFyYWN0ZXJzIGluIExJS0UgKi8KQEAgLTExMjgsMTMgKzExMzMsMTMgQEAgbGlr ZV9maXhlZF9wcmVmaXhfY2koQ29uc3QgKnBhdHRfY29uc3QsIE9pZCBjb2xsYXRpb24sIENvbnN0 ICoqcHJlZml4X2NvbnN0LAogCiAJd21hdGNoW3dtYXRjaF9wb3NdID0gJ1wwJzsKIAotCW1hdGNo ID0gcGFsbG9jKHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgoKSAqIHdtYXRjaF9wb3Mg KyAxKTsKKwltYXRjaCA9IHN0YWNrX2J1ZmZlcl9hbGxvYyhwZ19kYXRhYmFzZV9lbmNvZGluZ19t YXhfbGVuZ3RoKCkgKiB3bWF0Y2hfcG9zICsgMSk7CiAJbWF0Y2hfbWJsZW4gPSBwZ193Y2hhcjJt Yl93aXRoX2xlbih3bWF0Y2gsIG1hdGNoLCB3bWF0Y2hfcG9zKTsKIAltYXRjaFttYXRjaF9tYmxl bl0gPSAnXDAnOwotCXBmcmVlKHdtYXRjaCk7CisJc3RhY2tfYnVmZmVyX2ZyZWUod21hdGNoKTsK IAogCSpwcmVmaXhfY29uc3QgPSBzdHJpbmdfdG9fY29uc3QobWF0Y2gsIFRFWFRPSUQpOwotCXBm cmVlKG1hdGNoKTsKKwlzdGFja19idWZmZXJfZnJlZShtYXRjaCk7CiAKIAlpZiAocmVzdF9zZWxl YyAhPSBOVUxMKQogCXsKQEAgLTExNDIsMTQgKzExNDcsMTQgQEAgbGlrZV9maXhlZF9wcmVmaXhf Y2koQ29uc3QgKnBhdHRfY29uc3QsIE9pZCBjb2xsYXRpb24sIENvbnN0ICoqcHJlZml4X2NvbnN0 LAogCQljaGFyCSAgICpyZXN0OwogCQlpbnQJCQlyZXN0X21ibGVuOwogCi0JCXJlc3QgPSBwYWxs b2MocGdfZGF0YWJhc2VfZW5jb2RpbmdfbWF4X2xlbmd0aCgpICogd3Jlc3RsZW4gKyAxKTsKKwkJ cmVzdCA9IHN0YWNrX2J1ZmZlcl9hbGxvYyhwZ19kYXRhYmFzZV9lbmNvZGluZ19tYXhfbGVuZ3Ro KCkgKiB3cmVzdGxlbiArIDEpOwogCQlyZXN0X21ibGVuID0gcGdfd2NoYXIybWJfd2l0aF9sZW4o JndwYXR0W3dtYXRjaF9wb3NdLCByZXN0LCB3cmVzdGxlbik7CiAKIAkJKnJlc3Rfc2VsZWMgPSBs aWtlX3NlbGVjdGl2aXR5KHJlc3QsIHJlc3RfbWJsZW4sIHRydWUpOwotCQlwZnJlZShyZXN0KTsK KwkJc3RhY2tfYnVmZmVyX2ZyZWUocmVzdCk7CiAJfQogCi0JcGZyZWUod3BhdHQpOworCXN0YWNr X2J1ZmZlcl9mcmVlKHdwYXR0KTsKIAogCS8qIGluIExJS0UsIGFuIGVtcHR5IHBhdHRlcm4gaXMg YW4gZXhhY3QgbWF0Y2ghICovCiAJaWYgKHdwb3MgPT0gd3BhdHRsZW4pCkBAIC0xMTY5LDYgKzEx NzQsOCBAQCByZWdleF9maXhlZF9wcmVmaXgoQ29uc3QgKnBhdHRfY29uc3QsIGJvb2wgY2FzZV9p bnNlbnNpdGl2ZSwgT2lkIGNvbGxhdGlvbiwKIAljaGFyCSAgICpwcmVmaXg7CiAJYm9vbAkJZXhh Y3Q7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJLyoKIAkgKiBTaG91bGQgYmUgdW5u ZWNlc3NhcnksIHRoZXJlIGFyZSBubyBieXRlYSByZWdleCBvcGVyYXRvcnMgZGVmaW5lZC4gQXMK IAkgKiBzdWNoLCBpdCBzaG91bGQgYmUgbm90ZWQgdGhhdCB0aGUgcmVzdCBvZiB0aGlzIGZ1bmN0 aW9uIGhhcyAqbm90KiBiZWVuCkBAIC0xMTkwLDEyICsxMTk3LDEyIEBAIHJlZ2V4X2ZpeGVkX3By ZWZpeChDb25zdCAqcGF0dF9jb25zdCwgYm9vbCBjYXNlX2luc2Vuc2l0aXZlLCBPaWQgY29sbGF0 aW9uLAogCiAJCWlmIChyZXN0X3NlbGVjICE9IE5VTEwpCiAJCXsKLQkJCWNoYXIJICAgKnBhdHQg PSBUZXh0RGF0dW1HZXRDU3RyaW5nKHBhdHRfY29uc3QtPmNvbnN0dmFsdWUpOworCQkJY2hhcgkg ICAqcGF0dCA9IHN0YWNrX2J1ZmZlcl90ZXh0X2RhdHVtX3RvX2NzdHJpbmcocGF0dF9jb25zdC0+ Y29uc3R2YWx1ZSk7CiAKIAkJCSpyZXN0X3NlbGVjID0gcmVnZXhfc2VsZWN0aXZpdHkocGF0dCwg c3RybGVuKHBhdHQpLAogCQkJCQkJCQkJCQljYXNlX2luc2Vuc2l0aXZlLAogCQkJCQkJCQkJCQkw KTsKLQkJCXBmcmVlKHBhdHQpOworCQkJc3RhY2tfYnVmZmVyX2ZyZWUocGF0dCk7CiAJCX0KIAog CQlyZXR1cm4gUGF0dGVybl9QcmVmaXhfTm9uZTsKQEAgLTEyMTIsMTIgKzEyMTksMTIgQEAgcmVn ZXhfZml4ZWRfcHJlZml4KENvbnN0ICpwYXR0X2NvbnN0LCBib29sIGNhc2VfaW5zZW5zaXRpdmUs IE9pZCBjb2xsYXRpb24sCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQljaGFyCSAgICpwYXR0ID0gVGV4 dERhdHVtR2V0Q1N0cmluZyhwYXR0X2NvbnN0LT5jb25zdHZhbHVlKTsKKwkJCWNoYXIJICAgKnBh dHQgPSBzdGFja19idWZmZXJfdGV4dF9kYXR1bV90b19jc3RyaW5nKHBhdHRfY29uc3QtPmNvbnN0 dmFsdWUpOwogCiAJCQkqcmVzdF9zZWxlYyA9IHJlZ2V4X3NlbGVjdGl2aXR5KHBhdHQsIHN0cmxl bihwYXR0KSwKIAkJCQkJCQkJCQkJY2FzZV9pbnNlbnNpdGl2ZSwKIAkJCQkJCQkJCQkJc3RybGVu KHByZWZpeCkpOwotCQkJcGZyZWUocGF0dCk7CisJCQlzdGFja19idWZmZXJfZnJlZShwYXR0KTsK IAkJfQogCX0KIApAQCAtMTYxOSw2ICsxNjI2LDggQEAgbWFrZV9ncmVhdGVyX3N0cmluZyhjb25z dCBDb25zdCAqc3RyX2NvbnN0LCBGbWdySW5mbyAqbHRwcm9jLCBPaWQgY29sbGF0aW9uKQogCWNo YXIJICAgKmNtcHR4dCA9IE5VTEw7CiAJbWJjaGFyYWN0ZXJfaW5jcmVtZW50ZXIgY2hhcmluYzsK IAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAkvKgogCSAqIEdldCBhIG1vZGlmaWFibGUg Y29weSBvZiB0aGUgcHJlZml4IHN0cmluZyBpbiBDLXN0cmluZyBmb3JtYXQsIGFuZCBzZXQKIAkg KiB1cCB0aGUgc3RyaW5nIHdlIHdpbGwgY29tcGFyZSB0byBhcyBhIERhdHVtLiAgSW4gQyBsb2Nh bGUgdGhpcyBjYW4ganVzdApAQCAtMTYzMCw3ICsxNjM5LDcgQEAgbWFrZV9ncmVhdGVyX3N0cmlu Zyhjb25zdCBDb25zdCAqc3RyX2NvbnN0LCBGbWdySW5mbyAqbHRwcm9jLCBPaWQgY29sbGF0aW9u KQogCQlieXRlYQkgICAqYnN0ciA9IERhdHVtR2V0Qnl0ZWFQUChzdHJfY29uc3QtPmNvbnN0dmFs dWUpOwogCiAJCWxlbiA9IFZBUlNJWkVfQU5ZX0VYSERSKGJzdHIpOwotCQl3b3Jrc3RyID0gKGNo YXIgKikgcGFsbG9jKGxlbik7CisJCXdvcmtzdHIgPSAoY2hhciAqKSBzdGFja19idWZmZXJfYWxs b2MobGVuKTsKIAkJbWVtY3B5KHdvcmtzdHIsIFZBUkRBVEFfQU5ZKGJzdHIpLCBsZW4pOwogCQlB c3NlcnQoYnN0ciA9PSBEYXR1bUdldFBvaW50ZXIoc3RyX2NvbnN0LT5jb25zdHZhbHVlKSk7CiAJ CWNtcHN0ciA9IHN0cl9jb25zdC0+Y29uc3R2YWx1ZTsKQEAgLTE2NDEsNyArMTY1MCw3IEBAIG1h a2VfZ3JlYXRlcl9zdHJpbmcoY29uc3QgQ29uc3QgKnN0cl9jb25zdCwgRm1nckluZm8gKmx0cHJv YywgT2lkIGNvbGxhdGlvbikKIAkJCXdvcmtzdHIgPSBEYXR1bUdldENTdHJpbmcoRGlyZWN0RnVu Y3Rpb25DYWxsMShuYW1lb3V0LAogCQkJCQkJCQkJCQkJCQkgIHN0cl9jb25zdC0+Y29uc3R2YWx1 ZSkpOwogCQllbHNlCi0JCQl3b3Jrc3RyID0gVGV4dERhdHVtR2V0Q1N0cmluZyhzdHJfY29uc3Qt PmNvbnN0dmFsdWUpOworCQkJd29ya3N0ciA9IHN0YWNrX2J1ZmZlcl90ZXh0X2RhdHVtX3RvX2Nz dHJpbmcoc3RyX2NvbnN0LT5jb25zdHZhbHVlKTsKIAkJbGVuID0gc3RybGVuKHdvcmtzdHIpOwog CQlpZiAobGVuID09IDAgfHwgcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKGNvbGxhdGlvbikt PmNvbGxhdGVfaXNfYykKIAkJCWNtcHN0ciA9IHN0cl9jb25zdC0+Y29uc3R2YWx1ZTsKQEAgLTE2 NjksNyArMTY3OCw3IEBAIG1ha2VfZ3JlYXRlcl9zdHJpbmcoY29uc3QgQ29uc3QgKnN0cl9jb25z dCwgRm1nckluZm8gKmx0cHJvYywgT2lkIGNvbGxhdGlvbikKIAkJCS8qIEFuZCBidWlsZCB0aGUg c3RyaW5nIHRvIGNvbXBhcmUgdG8gKi8KIAkJCWlmIChkYXRhdHlwZSA9PSBOQU1FT0lEKQogCQkJ ewotCQkJCWNtcHR4dCA9IHBhbGxvYyhsZW4gKyAyKTsKKwkJCQljbXB0eHQgPSBzdGFja19idWZm ZXJfYWxsb2MobGVuICsgMik7CiAJCQkJbWVtY3B5KGNtcHR4dCwgd29ya3N0ciwgbGVuKTsKIAkJ CQljbXB0eHRbbGVuXSA9IHN1ZmZpeGNoYXI7CiAJCQkJY21wdHh0W2xlbiArIDFdID0gJ1wwJzsK QEAgLTE2NzcsNyArMTY4Niw3IEBAIG1ha2VfZ3JlYXRlcl9zdHJpbmcoY29uc3QgQ29uc3QgKnN0 cl9jb25zdCwgRm1nckluZm8gKmx0cHJvYywgT2lkIGNvbGxhdGlvbikKIAkJCX0KIAkJCWVsc2UK IAkJCXsKLQkJCQljbXB0eHQgPSBwYWxsb2MoVkFSSERSU1ogKyBsZW4gKyAxKTsKKwkJCQljbXB0 eHQgPSBzdGFja19idWZmZXJfYWxsb2MoVkFSSERSU1ogKyBsZW4gKyAxKTsKIAkJCQlTRVRfVkFS U0laRShjbXB0eHQsIFZBUkhEUlNaICsgbGVuICsgMSk7CiAJCQkJbWVtY3B5KFZBUkRBVEEoY21w dHh0KSwgd29ya3N0ciwgbGVuKTsKIAkJCQkqKFZBUkRBVEEoY21wdHh0KSArIGxlbikgPSBzdWZm aXhjaGFyOwpAQCAtMTcyOSw4ICsxNzM4LDggQEAgbWFrZV9ncmVhdGVyX3N0cmluZyhjb25zdCBD b25zdCAqc3RyX2NvbnN0LCBGbWdySW5mbyAqbHRwcm9jLCBPaWQgY29sbGF0aW9uKQogCQkJewog CQkJCS8qIFN1Y2Nlc3NmdWxseSBtYWRlIGEgc3RyaW5nIGxhcmdlciB0aGFuIGNtcHN0ciAqLwog CQkJCWlmIChjbXB0eHQpCi0JCQkJCXBmcmVlKGNtcHR4dCk7Ci0JCQkJcGZyZWUod29ya3N0cik7 CisJCQkJCXN0YWNrX2J1ZmZlcl9mcmVlKGNtcHR4dCk7CisJCQkJc3RhY2tfYnVmZmVyX2ZyZWUo d29ya3N0cik7CiAJCQkJcmV0dXJuIHdvcmtzdHJfY29uc3Q7CiAJCQl9CiAKQEAgLTE3NDksOCAr MTc1OCw4IEBAIG1ha2VfZ3JlYXRlcl9zdHJpbmcoY29uc3QgQ29uc3QgKnN0cl9jb25zdCwgRm1n ckluZm8gKmx0cHJvYywgT2lkIGNvbGxhdGlvbikKIAogCS8qIEZhaWxlZC4uLiAqLwogCWlmIChj bXB0eHQpCi0JCXBmcmVlKGNtcHR4dCk7Ci0JcGZyZWUod29ya3N0cik7CisJCXN0YWNrX2J1ZmZl cl9mcmVlKGNtcHR4dCk7CisJc3RhY2tfYnVmZmVyX2ZyZWUod29ya3N0cik7CiAKIAlyZXR1cm4g TlVMTDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jCmluZGV4IGQyNWI4YWQ1MDVkLi43NzFlYTJi YTZiMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVk ZSAidXRpbHMvbnVtZXJpYy5oIgogI2luY2x1ZGUgInV0aWxzL3BnX2xzbi5oIgogI2luY2x1ZGUg InV0aWxzL3NvcnRzdXBwb3J0LmgiCisjaW5jbHVkZSAidXRpbHMvc3RhY2tfYnVmZmVyLmgiCiAK IC8qIC0tLS0tLS0tLS0KICAqIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIHRvIGVuYWJsZSBjb21w aWxhdGlvbiBvZiBkdW1wX251bWVyaWMoKQpAQCAtNjc1NSw2ICs2NzU2LDggQEAgc2V0X3Zhcl9m cm9tX3N0cihjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmNwLAogCWludAkJCW9mZnNldDsK IAlOdW1lcmljRGlnaXQgKmRpZ2l0czsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAkv KgogCSAqIFdlIGZpcnN0IHBhcnNlIHRoZSBzdHJpbmcgdG8gZXh0cmFjdCBkZWNpbWFsIGRpZ2l0 cyBhbmQgZGV0ZXJtaW5lIHRoZQogCSAqIGNvcnJlY3QgZGVjaW1hbCB3ZWlnaHQuICBUaGVuIGNv bnZlcnQgdG8gTkJBU0UgcmVwcmVzZW50YXRpb24uCkBAIC02NzgxLDcgKzY3ODQsNyBAQCBzZXRf dmFyX2Zyb21fc3RyKGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqY3AsCiAJaWYgKCFpc2Rp Z2l0KCh1bnNpZ25lZCBjaGFyKSAqY3ApKQogCQlnb3RvIGludmFsaWRfc3ludGF4OwogCi0JZGVj ZGlnaXRzID0gKHVuc2lnbmVkIGNoYXIgKikgcGFsbG9jKHN0cmxlbihjcCkgKyBERUNfRElHSVRT ICogMik7CisJZGVjZGlnaXRzID0gKHVuc2lnbmVkIGNoYXIgKikgc3RhY2tfYnVmZmVyX2FsbG9j KHN0cmxlbihjcCkgKyBERUNfRElHSVRTICogMik7CiAKIAkvKiBsZWFkaW5nIHBhZGRpbmcgZm9y IGRpZ2l0IGFsaWdubWVudCBsYXRlciAqLwogCW1lbXNldChkZWNkaWdpdHMsIDAsIERFQ19ESUdJ VFMpOwpAQCAtNjkxNSw3ICs2OTE4LDcgQEAgc2V0X3Zhcl9mcm9tX3N0cihjb25zdCBjaGFyICpz dHIsIGNvbnN0IGNoYXIgKmNwLAogCQlpICs9IERFQ19ESUdJVFM7CiAJfQogCi0JcGZyZWUoZGVj ZGlnaXRzKTsKKwlzdGFja19idWZmZXJfZnJlZShkZWNkaWdpdHMpOwogCiAJLyogU3RyaXAgYW55 IGxlYWRpbmcvdHJhaWxpbmcgemVyb2VzLCBhbmQgbm9ybWFsaXplIHdlaWdodCBpZiB6ZXJvICov CiAJc3RyaXBfdmFyKGRlc3QpOwpAQCAtODkwMSw2ICs4OTA0LDggQEAgZGl2X3Zhcihjb25zdCBO dW1lcmljVmFyICp2YXIxLCBjb25zdCBOdW1lcmljVmFyICp2YXIyLCBOdW1lcmljVmFyICpyZXN1 bHQsCiAJTnVtZXJpY0RpZ2l0ICpyZXNfZGlnaXRzOwogCWludAkJCWk7CiAKKwlERUNMQVJFX1NU QUNLX0JVRkZFUigpOworCiAJLyoKIAkgKiBGaXJzdCBvZiBhbGwgZGl2aXNpb24gYnkgemVybyBj aGVjazsgd2UgbXVzdCBub3QgYmUgaGFuZGVkIGFuCiAJICogdW5ub3JtYWxpemVkIGRpdmlzb3Iu CkBAIC05MDUwLDggKzkwNTUsOCBAQCBkaXZfdmFyKGNvbnN0IE51bWVyaWNWYXIgKnZhcjEsIGNv bnN0IE51bWVyaWNWYXIgKnZhcjIsIE51bWVyaWNWYXIgKnJlc3VsdCwKIAkgKiB6ZXJvIGFuZCBu b3QgY291bnRlZCBpbiBkaXZfbmRpZ2l0cGFpcnMsIHNvIHRoYXQgdGhlIG1haW4gbG9vcCBiZWxv dwogCSAqIGNhbiBzYWZlbHkgcmVhZCBhbmQgd3JpdGUgdGhlIChxaSsxKSd0aCBkaWdpdCBpbiB0 aGUgYXBwcm94aW1hdGUgY2FzZS4KIAkgKi8KLQlkaXZpZGVuZCA9IChpbnQ2NCAqKSBwYWxsb2Mo KGRpdl9uZGlnaXRwYWlycyArIDEpICogc2l6ZW9mKGludDY0KSArCi0JCQkJCQkJCXZhcjJuZGln aXRwYWlycyAqIHNpemVvZihpbnQzMikpOworCWRpdmlkZW5kID0gKGludDY0ICopIHN0YWNrX2J1 ZmZlcl9hbGxvYygoZGl2X25kaWdpdHBhaXJzICsgMSkgKiBzaXplb2YoaW50NjQpICsKKwkJCQkJ CQkJCQkJdmFyMm5kaWdpdHBhaXJzICogc2l6ZW9mKGludDMyKSk7CiAJZGl2aXNvciA9IChpbnQz MiAqKSAoZGl2aWRlbmQgKyBkaXZfbmRpZ2l0cGFpcnMgKyAxKTsKIAogCS8qIGxvYWQgdmFyMSBp bnRvIGRpdmlkZW5kWzAgLi4gdmFyMW5kaWdpdHBhaXJzLTFdLCB6ZXJvaW5nIHRoZSByZXN0ICov CkBAIC05Mzg5LDcgKzkzOTQsNyBAQCBkaXZfdmFyKGNvbnN0IE51bWVyaWNWYXIgKnZhcjEsIGNv bnN0IE51bWVyaWNWYXIgKnZhcjIsIE51bWVyaWNWYXIgKnJlc3VsdCwKIAl9CiAJQXNzZXJ0KGNh cnJ5ID09IDApOwogCi0JcGZyZWUoZGl2aWRlbmQpOworCXN0YWNrX2J1ZmZlcl9mcmVlKGRpdmlk ZW5kKTsKIAogCS8qCiAJICogRmluYWxseSwgcm91bmQgb3IgdHJ1bmNhdGUgdGhlIHJlc3VsdCB0 byB0aGUgcmVxdWVzdGVkIHByZWNpc2lvbi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9yb3d0eXBlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jvd3R5cGVzLmMKaW5kZXgg ZTRlYjcxMTFlZTcuLmJjY2ViOTk4ZGE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcm93dHlwZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcm93dHlwZXMuYwpAQCAt MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRp bHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGls cy9zdGFja19idWZmZXIuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCiAKQEAgLTg5 LDYgKzkwLDggQEAgcmVjb3JkX2luKFBHX0ZVTkNUSU9OX0FSR1MpCiAJYm9vbAkgICAqbnVsbHM7 CiAJU3RyaW5nSW5mb0RhdGEgYnVmOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCWNo ZWNrX3N0YWNrX2RlcHRoKCk7CQkvKiByZWN1cnNlcyBmb3IgcmVjb3JkLXR5cGUgY29sdW1ucyAq LwogCiAJLyoKQEAgLTE0MCw4ICsxNDMsOCBAQCByZWNvcmRfaW4oUEdfRlVOQ1RJT05fQVJHUykK IAkJbXlfZXh0cmEtPm5jb2x1bW5zID0gbmNvbHVtbnM7CiAJfQogCi0JdmFsdWVzID0gcGFsbG9j X2FycmF5KERhdHVtLCBuY29sdW1ucyk7Ci0JbnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgbmNv bHVtbnMpOworCXZhbHVlcyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShEYXR1bSwgbmNvbHVt bnMpOworCW51bGxzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KGJvb2wsIG5jb2x1bW5zKTsK IAogCS8qCiAJICogU2NhbiB0aGUgc3RyaW5nLiAgV2UgdXNlICJidWYiIHRvIGFjY3VtdWxhdGUg dGhlIGRlLXF1b3RlZCBkYXRhIGZvcgpAQCAtMzEwLDggKzMxMyw4IEBAIHJlY29yZF9pbihQR19G VU5DVElPTl9BUkdTKQogCiAJaGVhcF9mcmVldHVwbGUodHVwbGUpOwogCXBmcmVlKGJ1Zi5kYXRh KTsKLQlwZnJlZSh2YWx1ZXMpOwotCXBmcmVlKG51bGxzKTsKKwlzdGFja19idWZmZXJfZnJlZSh2 YWx1ZXMpOworCXN0YWNrX2J1ZmZlcl9mcmVlKG51bGxzKTsKIAlSZWxlYXNlVHVwbGVEZXNjKHR1 cGRlc2MpOwogCiAJUEdfUkVUVVJOX0hFQVBUVVBMRUhFQURFUihyZXN1bHQpOwpAQCAtMzQxLDYg KzM0NCw4IEBAIHJlY29yZF9vdXQoUEdfRlVOQ1RJT05fQVJHUykKIAlib29sCSAgICpudWxsczsK IAlTdHJpbmdJbmZvRGF0YSBidWY7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJY2hl Y2tfc3RhY2tfZGVwdGgoKTsJCS8qIHJlY3Vyc2VzIGZvciByZWNvcmQtdHlwZSBjb2x1bW5zICov CiAKIAkvKiBFeHRyYWN0IHR5cGUgaW5mbyBmcm9tIHRoZSB0dXBsZSBpdHNlbGYgKi8KQEAgLTM4 Myw4ICszODgsOCBAQCByZWNvcmRfb3V0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW15X2V4dHJhLT5u Y29sdW1ucyA9IG5jb2x1bW5zOwogCX0KIAotCXZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwg bmNvbHVtbnMpOwotCW51bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIG5jb2x1bW5zKTsKKwl2YWx1 ZXMgPSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXkoRGF0dW0sIG5jb2x1bW5zKTsKKwludWxscyA9 IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShib29sLCBuY29sdW1ucyk7CiAKIAkvKiBCcmVhayBk b3duIHRoZSB0dXBsZSBpbnRvIGZpZWxkcyAqLwogCWhlYXBfZGVmb3JtX3R1cGxlKCZ0dXBsZSwg dHVwZGVzYywgdmFsdWVzLCBudWxscyk7CkBAIC00NjYsOCArNDcxLDggQEAgcmVjb3JkX291dChQ R19GVU5DVElPTl9BUkdTKQogCiAJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIAot CXBmcmVlKHZhbHVlcyk7Ci0JcGZyZWUobnVsbHMpOworCXN0YWNrX2J1ZmZlcl9mcmVlKHZhbHVl cyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUobnVsbHMpOwogCVJlbGVhc2VUdXBsZURlc2ModHVwZGVz Yyk7CiAKIAlQR19SRVRVUk5fQ1NUUklORyhidWYuZGF0YSk7CkBAIC00OTMsNiArNDk4LDggQEAg cmVjb3JkX3JlY3YoUEdfRlVOQ1RJT05fQVJHUykKIAlEYXR1bQkgICAqdmFsdWVzOwogCWJvb2wJ ICAgKm51bGxzOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCWNoZWNrX3N0YWNrX2Rl cHRoKCk7CQkvKiByZWN1cnNlcyBmb3IgcmVjb3JkLXR5cGUgY29sdW1ucyAqLwogCiAJLyoKQEAg LTUzOSw4ICs1NDYsOCBAQCByZWNvcmRfcmVjdihQR19GVU5DVElPTl9BUkdTKQogCQlteV9leHRy YS0+bmNvbHVtbnMgPSBuY29sdW1uczsKIAl9CiAKLQl2YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0 dW0sIG5jb2x1bW5zKTsKLQludWxscyA9IHBhbGxvY19hcnJheShib29sLCBuY29sdW1ucyk7CisJ dmFsdWVzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KERhdHVtLCBuY29sdW1ucyk7CisJbnVs bHMgPSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXkoYm9vbCwgbmNvbHVtbnMpOwogCiAJLyogRmV0 Y2ggbnVtYmVyIG9mIGNvbHVtbnMgdXNlciB0aGlua3MgaXQgaGFzICovCiAJdXNlcmNvbHMgPSBw cV9nZXRtc2dpbnQoYnVmLCA0KTsKQEAgLTY3Myw4ICs2ODAsOCBAQCByZWNvcmRfcmVjdihQR19G VU5DVElPTl9BUkdTKQogCW1lbWNweShyZXN1bHQsIHR1cGxlLT50X2RhdGEsIHR1cGxlLT50X2xl bik7CiAKIAloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7Ci0JcGZyZWUodmFsdWVzKTsKLQlwZnJlZShu dWxscyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUodmFsdWVzKTsKKwlzdGFja19idWZmZXJfZnJlZShu dWxscyk7CiAJUmVsZWFzZVR1cGxlRGVzYyh0dXBkZXNjKTsKIAogCVBHX1JFVFVSTl9IRUFQVFVQ TEVIRUFERVIocmVzdWx0KTsKQEAgLTY5OSw2ICs3MDYsOCBAQCByZWNvcmRfc2VuZChQR19GVU5D VElPTl9BUkdTKQogCWJvb2wJICAgKm51bGxzOwogCVN0cmluZ0luZm9EYXRhIGJ1ZjsKIAorCURF Q0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAljaGVja19zdGFja19kZXB0aCgpOwkJLyogcmVjdXJz ZXMgZm9yIHJlY29yZC10eXBlIGNvbHVtbnMgKi8KIAogCS8qIEV4dHJhY3QgdHlwZSBpbmZvIGZy b20gdGhlIHR1cGxlIGl0c2VsZiAqLwpAQCAtNzQxLDggKzc1MCw4IEBAIHJlY29yZF9zZW5kKFBH X0ZVTkNUSU9OX0FSR1MpCiAJCW15X2V4dHJhLT5uY29sdW1ucyA9IG5jb2x1bW5zOwogCX0KIAot CXZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbmNvbHVtbnMpOwotCW51bGxzID0gcGFsbG9j X2FycmF5KGJvb2wsIG5jb2x1bW5zKTsKKwl2YWx1ZXMgPSBzdGFja19idWZmZXJfYWxsb2NfYXJy YXkoRGF0dW0sIG5jb2x1bW5zKTsKKwludWxscyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShi b29sLCBuY29sdW1ucyk7CiAKIAkvKiBCcmVhayBkb3duIHRoZSB0dXBsZSBpbnRvIGZpZWxkcyAq LwogCWhlYXBfZGVmb3JtX3R1cGxlKCZ0dXBsZSwgdHVwZGVzYywgdmFsdWVzLCBudWxscyk7CkBA IC04MDAsOCArODA5LDggQEAgcmVjb3JkX3NlbmQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJIFZB UlNJWkUob3V0cHV0Ynl0ZXMpIC0gVkFSSERSU1opOwogCX0KIAotCXBmcmVlKHZhbHVlcyk7Ci0J cGZyZWUobnVsbHMpOworCXN0YWNrX2J1ZmZlcl9mcmVlKHZhbHVlcyk7CisJc3RhY2tfYnVmZmVy X2ZyZWUobnVsbHMpOwogCVJlbGVhc2VUdXBsZURlc2ModHVwZGVzYyk7CiAKIAlQR19SRVRVUk5f QllURUFfUChwcV9lbmR0eXBzZW5kKCZidWYpKTsKQEAgLTg0NSw2ICs4NTQsOCBAQCByZWNvcmRf Y21wKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCWludAkJCWkyOwogCWludAkJCWo7CiAKKwlE RUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJY2hlY2tfc3RhY2tfZGVwdGgoKTsJCS8qIHJlY3Vy c2VzIGZvciByZWNvcmQtdHlwZSBjb2x1bW5zICovCiAKIAkvKiBFeHRyYWN0IHR5cGUgaW5mbyBm cm9tIHRoZSB0dXBsZXMgKi8KQEAgLTkwMSwxMSArOTEyLDExIEBAIHJlY29yZF9jbXAoRnVuY3Rp b25DYWxsSW5mbyBmY2luZm8pCiAJfQogCiAJLyogQnJlYWsgZG93biB0aGUgdHVwbGVzIGludG8g ZmllbGRzICovCi0JdmFsdWVzMSA9IChEYXR1bSAqKSBwYWxsb2MobmNvbHVtbnMxICogc2l6ZW9m KERhdHVtKSk7Ci0JbnVsbHMxID0gKGJvb2wgKikgcGFsbG9jKG5jb2x1bW5zMSAqIHNpemVvZihi b29sKSk7CisJdmFsdWVzMSA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShEYXR1bSwgbmNvbHVt bnMxKTsKKwludWxsczEgPSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXkoYm9vbCwgbmNvbHVtbnMx KTsKIAloZWFwX2RlZm9ybV90dXBsZSgmdHVwbGUxLCB0dXBkZXNjMSwgdmFsdWVzMSwgbnVsbHMx KTsKLQl2YWx1ZXMyID0gKERhdHVtICopIHBhbGxvYyhuY29sdW1uczIgKiBzaXplb2YoRGF0dW0p KTsKLQludWxsczIgPSAoYm9vbCAqKSBwYWxsb2MobmNvbHVtbnMyICogc2l6ZW9mKGJvb2wpKTsK Kwl2YWx1ZXMyID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KERhdHVtLCBuY29sdW1uczIpOwor CW51bGxzMiA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShib29sLCBuY29sdW1uczIpOwogCWhl YXBfZGVmb3JtX3R1cGxlKCZ0dXBsZTIsIHR1cGRlc2MyLCB2YWx1ZXMyLCBudWxsczIpOwogCiAJ LyoKQEAgLTEwNDAsMTAgKzEwNTEsMTAgQEAgcmVjb3JkX2NtcChGdW5jdGlvbkNhbGxJbmZvIGZj aW5mbykKIAkJCQkJIGVycm1zZygiY2Fubm90IGNvbXBhcmUgcmVjb3JkIHR5cGVzIHdpdGggZGlm ZmVyZW50IG51bWJlcnMgb2YgY29sdW1ucyIpKSk7CiAJfQogCi0JcGZyZWUodmFsdWVzMSk7Ci0J cGZyZWUobnVsbHMxKTsKLQlwZnJlZSh2YWx1ZXMyKTsKLQlwZnJlZShudWxsczIpOworCXN0YWNr X2J1ZmZlcl9mcmVlKHZhbHVlczEpOworCXN0YWNrX2J1ZmZlcl9mcmVlKG51bGxzMSk7CisJc3Rh Y2tfYnVmZmVyX2ZyZWUodmFsdWVzMik7CisJc3RhY2tfYnVmZmVyX2ZyZWUobnVsbHMyKTsKIAlS ZWxlYXNlVHVwbGVEZXNjKHR1cGRlc2MxKTsKIAlSZWxlYXNlVHVwbGVEZXNjKHR1cGRlc2MyKTsK IApAQCAtMTA4OSw2ICsxMTAwLDggQEAgcmVjb3JkX2VxKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaW50 CQkJaTI7CiAJaW50CQkJajsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAljaGVja19z dGFja19kZXB0aCgpOwkJLyogcmVjdXJzZXMgZm9yIHJlY29yZC10eXBlIGNvbHVtbnMgKi8KIAog CS8qIEV4dHJhY3QgdHlwZSBpbmZvIGZyb20gdGhlIHR1cGxlcyAqLwpAQCAtMTE0NSwxMSArMTE1 OCwxMSBAQCByZWNvcmRfZXEoUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAkvKiBCcmVhayBkb3du IHRoZSB0dXBsZXMgaW50byBmaWVsZHMgKi8KLQl2YWx1ZXMxID0gKERhdHVtICopIHBhbGxvYyhu Y29sdW1uczEgKiBzaXplb2YoRGF0dW0pKTsKLQludWxsczEgPSAoYm9vbCAqKSBwYWxsb2MobmNv bHVtbnMxICogc2l6ZW9mKGJvb2wpKTsKKwl2YWx1ZXMxID0gc3RhY2tfYnVmZmVyX2FsbG9jX2Fy cmF5KERhdHVtLCBuY29sdW1uczEpOworCW51bGxzMSA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJh eShib29sLCBuY29sdW1uczEpOwogCWhlYXBfZGVmb3JtX3R1cGxlKCZ0dXBsZTEsIHR1cGRlc2Mx LCB2YWx1ZXMxLCBudWxsczEpOwotCXZhbHVlczIgPSAoRGF0dW0gKikgcGFsbG9jKG5jb2x1bW5z MiAqIHNpemVvZihEYXR1bSkpOwotCW51bGxzMiA9IChib29sICopIHBhbGxvYyhuY29sdW1uczIg KiBzaXplb2YoYm9vbCkpOworCXZhbHVlczIgPSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXkoRGF0 dW0sIG5jb2x1bW5zMik7CisJbnVsbHMyID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KGJvb2ws IG5jb2x1bW5zMik7CiAJaGVhcF9kZWZvcm1fdHVwbGUoJnR1cGxlMiwgdHVwZGVzYzIsIHZhbHVl czIsIG51bGxzMik7CiAKIAkvKgpAQCAtMTI2NSwxMCArMTI3OCwxMCBAQCByZWNvcmRfZXEoUEdf RlVOQ1RJT05fQVJHUykKIAkJCQkJIGVycm1zZygiY2Fubm90IGNvbXBhcmUgcmVjb3JkIHR5cGVz IHdpdGggZGlmZmVyZW50IG51bWJlcnMgb2YgY29sdW1ucyIpKSk7CiAJfQogCi0JcGZyZWUodmFs dWVzMSk7Ci0JcGZyZWUobnVsbHMxKTsKLQlwZnJlZSh2YWx1ZXMyKTsKLQlwZnJlZShudWxsczIp OworCXN0YWNrX2J1ZmZlcl9mcmVlKHZhbHVlczEpOworCXN0YWNrX2J1ZmZlcl9mcmVlKG51bGxz MSk7CisJc3RhY2tfYnVmZmVyX2ZyZWUodmFsdWVzMik7CisJc3RhY2tfYnVmZmVyX2ZyZWUobnVs bHMyKTsKIAlSZWxlYXNlVHVwbGVEZXNjKHR1cGRlc2MxKTsKIAlSZWxlYXNlVHVwbGVEZXNjKHR1 cGRlc2MyKTsKIApAQCAtMTM3MSw2ICsxMzg0LDggQEAgcmVjb3JkX2ltYWdlX2NtcChGdW5jdGlv bkNhbGxJbmZvIGZjaW5mbykKIAlpbnQJCQlpMjsKIAlpbnQJCQlqOwogCisJREVDTEFSRV9TVEFD S19CVUZGRVIoKTsKKwogCS8qIEV4dHJhY3QgdHlwZSBpbmZvIGZyb20gdGhlIHR1cGxlcyAqLwog CXR1cFR5cGUxID0gSGVhcFR1cGxlSGVhZGVyR2V0VHlwZUlkKHJlY29yZDEpOwogCXR1cFR5cG1v ZDEgPSBIZWFwVHVwbGVIZWFkZXJHZXRUeXBNb2QocmVjb3JkMSk7CkBAIC0xNDI1LDExICsxNDQw LDExIEBAIHJlY29yZF9pbWFnZV9jbXAoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJfQogCiAJ LyogQnJlYWsgZG93biB0aGUgdHVwbGVzIGludG8gZmllbGRzICovCi0JdmFsdWVzMSA9IChEYXR1 bSAqKSBwYWxsb2MobmNvbHVtbnMxICogc2l6ZW9mKERhdHVtKSk7Ci0JbnVsbHMxID0gKGJvb2wg KikgcGFsbG9jKG5jb2x1bW5zMSAqIHNpemVvZihib29sKSk7CisJdmFsdWVzMSA9IHN0YWNrX2J1 ZmZlcl9hbGxvY19hcnJheShEYXR1bSwgbmNvbHVtbnMxKTsKKwludWxsczEgPSBzdGFja19idWZm ZXJfYWxsb2NfYXJyYXkoYm9vbCwgbmNvbHVtbnMxKTsKIAloZWFwX2RlZm9ybV90dXBsZSgmdHVw bGUxLCB0dXBkZXNjMSwgdmFsdWVzMSwgbnVsbHMxKTsKLQl2YWx1ZXMyID0gKERhdHVtICopIHBh bGxvYyhuY29sdW1uczIgKiBzaXplb2YoRGF0dW0pKTsKLQludWxsczIgPSAoYm9vbCAqKSBwYWxs b2MobmNvbHVtbnMyICogc2l6ZW9mKGJvb2wpKTsKKwl2YWx1ZXMyID0gc3RhY2tfYnVmZmVyX2Fs bG9jX2FycmF5KERhdHVtLCBuY29sdW1uczIpOworCW51bGxzMiA9IHN0YWNrX2J1ZmZlcl9hbGxv Y19hcnJheShib29sLCBuY29sdW1uczIpOwogCWhlYXBfZGVmb3JtX3R1cGxlKCZ0dXBsZTIsIHR1 cGRlc2MyLCB2YWx1ZXMyLCBudWxsczIpOwogCiAJLyoKQEAgLTE1NjgsMTAgKzE1ODMsMTAgQEAg cmVjb3JkX2ltYWdlX2NtcChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAkJCQkJIGVycm1zZygi Y2Fubm90IGNvbXBhcmUgcmVjb3JkIHR5cGVzIHdpdGggZGlmZmVyZW50IG51bWJlcnMgb2YgY29s dW1ucyIpKSk7CiAJfQogCi0JcGZyZWUodmFsdWVzMSk7Ci0JcGZyZWUobnVsbHMxKTsKLQlwZnJl ZSh2YWx1ZXMyKTsKLQlwZnJlZShudWxsczIpOworCXN0YWNrX2J1ZmZlcl9mcmVlKHZhbHVlczEp OworCXN0YWNrX2J1ZmZlcl9mcmVlKG51bGxzMSk7CisJc3RhY2tfYnVmZmVyX2ZyZWUodmFsdWVz Mik7CisJc3RhY2tfYnVmZmVyX2ZyZWUobnVsbHMyKTsKIAlSZWxlYXNlVHVwbGVEZXNjKHR1cGRl c2MxKTsKIAlSZWxlYXNlVHVwbGVEZXNjKHR1cGRlc2MyKTsKIApAQCAtMTYxNyw2ICsxNjMyLDgg QEAgcmVjb3JkX2ltYWdlX2VxKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaW50CQkJaTI7CiAJaW50CQkJ ajsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAkvKiBFeHRyYWN0IHR5cGUgaW5mbyBm cm9tIHRoZSB0dXBsZXMgKi8KIAl0dXBUeXBlMSA9IEhlYXBUdXBsZUhlYWRlckdldFR5cGVJZChy ZWNvcmQxKTsKIAl0dXBUeXBtb2QxID0gSGVhcFR1cGxlSGVhZGVyR2V0VHlwTW9kKHJlY29yZDEp OwpAQCAtMTY3MSwxMSArMTY4OCwxMSBAQCByZWNvcmRfaW1hZ2VfZXEoUEdfRlVOQ1RJT05fQVJH UykKIAl9CiAKIAkvKiBCcmVhayBkb3duIHRoZSB0dXBsZXMgaW50byBmaWVsZHMgKi8KLQl2YWx1 ZXMxID0gKERhdHVtICopIHBhbGxvYyhuY29sdW1uczEgKiBzaXplb2YoRGF0dW0pKTsKLQludWxs czEgPSAoYm9vbCAqKSBwYWxsb2MobmNvbHVtbnMxICogc2l6ZW9mKGJvb2wpKTsKKwl2YWx1ZXMx ID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KERhdHVtLCBuY29sdW1uczEpOworCW51bGxzMSA9 IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShib29sLCBuY29sdW1uczEpOwogCWhlYXBfZGVmb3Jt X3R1cGxlKCZ0dXBsZTEsIHR1cGRlc2MxLCB2YWx1ZXMxLCBudWxsczEpOwotCXZhbHVlczIgPSAo RGF0dW0gKikgcGFsbG9jKG5jb2x1bW5zMiAqIHNpemVvZihEYXR1bSkpOwotCW51bGxzMiA9IChi b29sICopIHBhbGxvYyhuY29sdW1uczIgKiBzaXplb2YoYm9vbCkpOworCXZhbHVlczIgPSBzdGFj a19idWZmZXJfYWxsb2NfYXJyYXkoRGF0dW0sIG5jb2x1bW5zMik7CisJbnVsbHMyID0gc3RhY2tf YnVmZmVyX2FsbG9jX2FycmF5KGJvb2wsIG5jb2x1bW5zMik7CiAJaGVhcF9kZWZvcm1fdHVwbGUo JnR1cGxlMiwgdHVwZGVzYzIsIHZhbHVlczIsIG51bGxzMik7CiAKIAkvKgpAQCAtMTc1MywxMCAr MTc3MCwxMCBAQCByZWNvcmRfaW1hZ2VfZXEoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJIGVycm1z ZygiY2Fubm90IGNvbXBhcmUgcmVjb3JkIHR5cGVzIHdpdGggZGlmZmVyZW50IG51bWJlcnMgb2Yg Y29sdW1ucyIpKSk7CiAJfQogCi0JcGZyZWUodmFsdWVzMSk7Ci0JcGZyZWUobnVsbHMxKTsKLQlw ZnJlZSh2YWx1ZXMyKTsKLQlwZnJlZShudWxsczIpOworCXN0YWNrX2J1ZmZlcl9mcmVlKHZhbHVl czEpOworCXN0YWNrX2J1ZmZlcl9mcmVlKG51bGxzMSk7CisJc3RhY2tfYnVmZmVyX2ZyZWUodmFs dWVzMik7CisJc3RhY2tfYnVmZmVyX2ZyZWUobnVsbHMyKTsKIAlSZWxlYXNlVHVwbGVEZXNjKHR1 cGRlc2MxKTsKIAlSZWxlYXNlVHVwbGVEZXNjKHR1cGRlc2MyKTsKIApAQCAtMTgyMiw2ICsxODM5 LDggQEAgaGFzaF9yZWNvcmQoUEdfRlVOQ1RJT05fQVJHUykKIAlEYXR1bQkgICAqdmFsdWVzOwog CWJvb2wJICAgKm51bGxzOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCWNoZWNrX3N0 YWNrX2RlcHRoKCk7CQkvKiByZWN1cnNlcyBmb3IgcmVjb3JkLXR5cGUgY29sdW1ucyAqLwogCiAJ LyogRXh0cmFjdCB0eXBlIGluZm8gZnJvbSB0dXBsZSAqLwpAQCAtMTg2Myw4ICsxODgyLDggQEAg aGFzaF9yZWNvcmQoUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAkvKiBCcmVhayBkb3duIHRoZSB0 dXBsZSBpbnRvIGZpZWxkcyAqLwotCXZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbmNvbHVt bnMpOwotCW51bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIG5jb2x1bW5zKTsKKwl2YWx1ZXMgPSBz dGFja19idWZmZXJfYWxsb2NfYXJyYXkoRGF0dW0sIG5jb2x1bW5zKTsKKwludWxscyA9IHN0YWNr X2J1ZmZlcl9hbGxvY19hcnJheShib29sLCBuY29sdW1ucyk7CiAJaGVhcF9kZWZvcm1fdHVwbGUo JnR1cGxlLCB0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsKIAogCWZvciAoaW50IGkgPSAwOyBpIDwg bmNvbHVtbnM7IGkrKykKQEAgLTE5MTgsOCArMTkzNyw4IEBAIGhhc2hfcmVjb3JkKFBHX0ZVTkNU SU9OX0FSR1MpCiAJCXJlc3VsdCA9IChyZXN1bHQgPDwgNSkgLSByZXN1bHQgKyBlbGVtZW50X2hh c2g7CiAJfQogCi0JcGZyZWUodmFsdWVzKTsKLQlwZnJlZShudWxscyk7CisJc3RhY2tfYnVmZmVy X2ZyZWUodmFsdWVzKTsKKwlzdGFja19idWZmZXJfZnJlZShudWxscyk7CiAJUmVsZWFzZVR1cGxl RGVzYyh0dXBkZXNjKTsKIAogCS8qIEF2b2lkIGxlYWtpbmcgbWVtb3J5IHdoZW4gaGFuZGVkIHRv YXN0ZWQgaW5wdXQuICovCkBAIC0xOTQzLDYgKzE5NjIsOCBAQCBoYXNoX3JlY29yZF9leHRlbmRl ZChQR19GVU5DVElPTl9BUkdTKQogCURhdHVtCSAgICp2YWx1ZXM7CiAJYm9vbAkgICAqbnVsbHM7 CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJY2hlY2tfc3RhY2tfZGVwdGgoKTsJCS8q IHJlY3Vyc2VzIGZvciByZWNvcmQtdHlwZSBjb2x1bW5zICovCiAKIAkvKiBFeHRyYWN0IHR5cGUg aW5mbyBmcm9tIHR1cGxlICovCkBAIC0xOTg0LDggKzIwMDUsOCBAQCBoYXNoX3JlY29yZF9leHRl bmRlZChQR19GVU5DVElPTl9BUkdTKQogCX0KIAogCS8qIEJyZWFrIGRvd24gdGhlIHR1cGxlIGlu dG8gZmllbGRzICovCi0JdmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBuY29sdW1ucyk7Ci0J bnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgbmNvbHVtbnMpOworCXZhbHVlcyA9IHN0YWNrX2J1 ZmZlcl9hbGxvY19hcnJheShEYXR1bSwgbmNvbHVtbnMpOworCW51bGxzID0gc3RhY2tfYnVmZmVy X2FsbG9jX2FycmF5KGJvb2wsIG5jb2x1bW5zKTsKIAloZWFwX2RlZm9ybV90dXBsZSgmdHVwbGUs IHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOwogCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBuY29sdW1u czsgaSsrKQpAQCAtMjA0MSw4ICsyMDYyLDggQEAgaGFzaF9yZWNvcmRfZXh0ZW5kZWQoUEdfRlVO Q1RJT05fQVJHUykKIAkJcmVzdWx0ID0gKHJlc3VsdCA8PCA1KSAtIHJlc3VsdCArIGVsZW1lbnRf aGFzaDsKIAl9CiAKLQlwZnJlZSh2YWx1ZXMpOwotCXBmcmVlKG51bGxzKTsKKwlzdGFja19idWZm ZXJfZnJlZSh2YWx1ZXMpOworCXN0YWNrX2J1ZmZlcl9mcmVlKG51bGxzKTsKIAlSZWxlYXNlVHVw bGVEZXNjKHR1cGRlc2MpOwogCiAJLyogQXZvaWQgbGVha2luZyBtZW1vcnkgd2hlbiBoYW5kZWQg dG9hc3RlZCBpbnB1dC4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCA2Mjk4YTM3 Zjg4ZS4uOGU4N2QzNzA1OGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTY3LDYg KzY3LDcgQEAKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9ydWxldXRp bHMuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvc3RhY2tf YnVmZmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90 eXBjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3ZhcmxlbmEuaCIKQEAgLTEyOTgsNiArMTI5OSw4 IEBAIHBnX2dldF9pbmRleGRlZl93b3JrZXIoT2lkIGluZGV4cmVsaWQsIGludCBjb2xubywKIAlj aGFyCSAgICpzdHI7CiAJY2hhcgkgICAqc2VwOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsK KwogCS8qCiAJICogRmV0Y2ggdGhlIHBnX2luZGV4IHR1cGxlIGJ5IHRoZSBPaWQgb2YgdGhlIGlu ZGV4CiAJICovCkBAIC0xMzU4LDkgKzEzNjEsOSBAQCBwZ19nZXRfaW5kZXhkZWZfd29ya2VyKE9p ZCBpbmRleHJlbGlkLCBpbnQgY29sbm8sCiAKIAkJZXhwcnNEYXR1bSA9IFN5c0NhY2hlR2V0QXR0 ck5vdE51bGwoSU5ERVhSRUxJRCwgaHRfaWR4LAogCQkJCQkJCQkJCQlBbnVtX3BnX2luZGV4X2lu ZGV4cHJzKTsKLQkJZXhwcnNTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGV4cHJzRGF0dW0p OworCQlleHByc1N0cmluZyA9IHN0YWNrX2J1ZmZlcl90ZXh0X2RhdHVtX3RvX2NzdHJpbmcoZXhw cnNEYXR1bSk7CiAJCWluZGV4cHJzID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKGV4cHJzU3RyaW5n KTsKLQkJcGZyZWUoZXhwcnNTdHJpbmcpOworCQlzdGFja19idWZmZXJfZnJlZShleHByc1N0cmlu Zyk7CiAJfQogCWVsc2UKIAkJaW5kZXhwcnMgPSBOSUw7CkBAIC0xNTU0LDkgKzE1NTcsOSBAQCBw Z19nZXRfaW5kZXhkZWZfd29ya2VyKE9pZCBpbmRleHJlbGlkLCBpbnQgY29sbm8sCiAJCQkvKiBD b252ZXJ0IHRleHQgc3RyaW5nIHRvIG5vZGUgdHJlZSAqLwogCQkJcHJlZERhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyTm90TnVsbChJTkRFWFJFTElELCBodF9pZHgsCiAJCQkJCQkJCQkJCSAgIEFudW1f cGdfaW5kZXhfaW5kcHJlZCk7Ci0JCQlwcmVkU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhw cmVkRGF0dW0pOworCQkJcHJlZFN0cmluZyA9IHN0YWNrX2J1ZmZlcl90ZXh0X2RhdHVtX3RvX2Nz dHJpbmcocHJlZERhdHVtKTsKIAkJCW5vZGUgPSAoTm9kZSAqKSBzdHJpbmdUb05vZGUocHJlZFN0 cmluZyk7Ci0JCQlwZnJlZShwcmVkU3RyaW5nKTsKKwkJCXN0YWNrX2J1ZmZlcl9mcmVlKHByZWRT dHJpbmcpOwogCiAJCQkvKiBEZXBhcnNlICovCiAJCQlzdHIgPSBkZXBhcnNlX2V4cHJlc3Npb25f cHJldHR5KG5vZGUsIGNvbnRleHQsIGZhbHNlLCBmYWxzZSwKQEAgLTE2NzEsNiArMTY3NCw4IEBA IHBnX2dldF9zdGF0aXN0aWNzb2JqX3dvcmtlcihPaWQgc3RhdGV4dGlkLCBib29sIGNvbHVtbnNf b25seSwgYm9vbCBtaXNzaW5nX29rKQogCWJvb2wJCWhhc19leHByczsKIAlpbnQJCQluY29sdW1u czsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAlzdGF0ZXh0dHVwID0gU2VhcmNoU3lz Q2FjaGUxKFNUQVRFWFRPSUQsIE9iamVjdElkR2V0RGF0dW0oc3RhdGV4dGlkKSk7CiAKIAlpZiAo IUhlYXBUdXBsZUlzVmFsaWQoc3RhdGV4dHR1cCkpCkBAIC0xNjk3LDkgKzE3MDIsOSBAQCBwZ19n ZXRfc3RhdGlzdGljc29ial93b3JrZXIoT2lkIHN0YXRleHRpZCwgYm9vbCBjb2x1bW5zX29ubHks IGJvb2wgbWlzc2luZ19vaykKIAogCQlleHByc0RhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVs bChTVEFURVhUT0lELCBzdGF0ZXh0dHVwLAogCQkJCQkJCQkJCQlBbnVtX3BnX3N0YXRpc3RpY19l eHRfc3R4ZXhwcnMpOwotCQlleHByc1N0cmluZyA9IFRleHREYXR1bUdldENTdHJpbmcoZXhwcnNE YXR1bSk7CisJCWV4cHJzU3RyaW5nID0gc3RhY2tfYnVmZmVyX3RleHRfZGF0dW1fdG9fY3N0cmlu ZyhleHByc0RhdHVtKTsKIAkJZXhwcnMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUoZXhwcnNTdHJp bmcpOwotCQlwZnJlZShleHByc1N0cmluZyk7CisJCXN0YWNrX2J1ZmZlcl9mcmVlKGV4cHJzU3Ry aW5nKTsKIAl9CiAJZWxzZQogCQlleHBycyA9IE5JTDsKQEAgLTE4NDgsNiArMTg1Myw4IEBAIHBn X2dldF9zdGF0aXN0aWNzb2JqZGVmX2V4cHJlc3Npb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJY2hh cgkgICAqdG1wOwogCUFycmF5QnVpbGRTdGF0ZSAqYXN0YXRlID0gTlVMTDsKIAorCURFQ0xBUkVf U1RBQ0tfQlVGRkVSKCk7CisKIAlzdGF0ZXh0dHVwID0gU2VhcmNoU3lzQ2FjaGUxKFNUQVRFWFRP SUQsIE9iamVjdElkR2V0RGF0dW0oc3RhdGV4dGlkKSk7CiAKIAlpZiAoIUhlYXBUdXBsZUlzVmFs aWQoc3RhdGV4dHR1cCkpCkBAIC0xODcwLDkgKzE4NzcsOSBAQCBwZ19nZXRfc3RhdGlzdGljc29i amRlZl9leHByZXNzaW9ucyhQR19GVU5DVElPTl9BUkdTKQogCSAqLwogCWRhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyTm90TnVsbChTVEFURVhUT0lELCBzdGF0ZXh0dHVwLAogCQkJCQkJCQkgICBBbnVt X3BnX3N0YXRpc3RpY19leHRfc3R4ZXhwcnMpOwotCXRtcCA9IFRleHREYXR1bUdldENTdHJpbmco ZGF0dW0pOworCXRtcCA9IHN0YWNrX2J1ZmZlcl90ZXh0X2RhdHVtX3RvX2NzdHJpbmcoZGF0dW0p OwogCWV4cHJzID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKHRtcCk7Ci0JcGZyZWUodG1wKTsKKwlz dGFja19idWZmZXJfZnJlZSh0bXApOwogCiAJY29udGV4dCA9IGRlcGFyc2VfY29udGV4dF9mb3Io Z2V0X3JlbGF0aW9uX25hbWUoc3RhdGV4dHJlYy0+c3R4cmVsaWQpLAogCQkJCQkJCQkgIHN0YXRl eHRyZWMtPnN0eHJlbGlkKTsKQEAgLTE5NTAsNiArMTk1Nyw4IEBAIHBnX2dldF9wYXJ0a2V5ZGVm X3dvcmtlcihPaWQgcmVsaWQsIGludCBwcmV0dHlGbGFncywKIAljaGFyCSAgICpzdHI7CiAJY2hh cgkgICAqc2VwOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCXR1cGxlID0gU2VhcmNo U3lzQ2FjaGUxKFBBUlRSRUxJRCwgT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOwogCWlmICghSGVh cFR1cGxlSXNWYWxpZCh0dXBsZSkpCiAJewpAQCAtMTk4NCwxNCArMTk5MywxNCBAQCBwZ19nZXRf cGFydGtleWRlZl93b3JrZXIoT2lkIHJlbGlkLCBpbnQgcHJldHR5RmxhZ3MsCiAKIAkJZXhwcnNE YXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoUEFSVFJFTElELCB0dXBsZSwKIAkJCQkJCQkJ CQkJQW51bV9wZ19wYXJ0aXRpb25lZF90YWJsZV9wYXJ0ZXhwcnMpOwotCQlleHByc1N0cmluZyA9 IFRleHREYXR1bUdldENTdHJpbmcoZXhwcnNEYXR1bSk7CisJCWV4cHJzU3RyaW5nID0gc3RhY2tf YnVmZmVyX3RleHRfZGF0dW1fdG9fY3N0cmluZyhleHByc0RhdHVtKTsKIAkJcGFydGV4cHJzID0g KExpc3QgKikgc3RyaW5nVG9Ob2RlKGV4cHJzU3RyaW5nKTsKIAogCQlpZiAoIUlzQShwYXJ0ZXhw cnMsIExpc3QpKQogCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgbm9kZSB0eXBlIGZvdW5kIGlu IHBhcnRleHByczogJWQiLAogCQkJCSAoaW50KSBub2RlVGFnKHBhcnRleHBycykpOwogCi0JCXBm cmVlKGV4cHJzU3RyaW5nKTsKKwkJc3RhY2tfYnVmZmVyX2ZyZWUoZXhwcnNTdHJpbmcpOwogCX0K IAllbHNlCiAJCXBhcnRleHBycyA9IE5JTDsKQEAgLTI3MTcsMTMgKzI3MjYsMTUgQEAgcGdfZ2V0 X2V4cHJfd29ya2VyKHRleHQgKmV4cHIsIE9pZCByZWxpZCwgaW50IHByZXR0eUZsYWdzKQogCVJl bGF0aW9uCXJlbCA9IE5VTEw7CiAJY2hhcgkgICAqc3RyOwogCisJREVDTEFSRV9TVEFDS19CVUZG RVIoKTsKKwogCS8qIENvbnZlcnQgaW5wdXQgcGdfbm9kZV90cmVlIChyZWFsbHkgVEVYVCkgb2Jq ZWN0IHRvIEMgc3RyaW5nICovCi0JZXhwcnN0ciA9IHRleHRfdG9fY3N0cmluZyhleHByKTsKKwll eHByc3RyID0gc3RhY2tfYnVmZmVyX3RleHRfdG9fY3N0cmluZyhleHByKTsKIAogCS8qIENvbnZl cnQgZXhwcmVzc2lvbiB0byBub2RlIHRyZWUgKi8KIAlub2RlID0gKE5vZGUgKikgc3RyaW5nVG9O b2RlKGV4cHJzdHIpOwogCi0JcGZyZWUoZXhwcnN0cik7CisJc3RhY2tfYnVmZmVyX2ZyZWUoZXhw cnN0cik7CiAKIAkvKgogCSAqIFRocm93IGVycm9yIGlmIHRoZSBpbnB1dCBpcyBhIHF1ZXJ5dHJl ZSByYXRoZXIgdGhhbiBhbiBleHByZXNzaW9uIHRyZWUuCkBAIC0zMzE1LDYgKzMzMjYsOCBAQCBw cmludF9mdW5jdGlvbl9hcmd1bWVudHMoU3RyaW5nSW5mbyBidWYsIEhlYXBUdXBsZSBwcm9jdHVw LAogCUxpc3RDZWxsICAgKm5leHRhcmdkZWZhdWx0ID0gTlVMTDsKIAlpbnQJCQlpOwogCisJREVD TEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCW51bWFyZ3MgPSBnZXRfZnVuY19hcmdfaW5mbyhwcm9j dHVwLAogCQkJCQkJCQkmYXJndHlwZXMsICZhcmduYW1lcywgJmFyZ21vZGVzKTsKIApAQCAtMzMz MSw5ICszMzQ0LDkgQEAgcHJpbnRfZnVuY3Rpb25fYXJndW1lbnRzKFN0cmluZ0luZm8gYnVmLCBI ZWFwVHVwbGUgcHJvY3R1cCwKIAkJewogCQkJY2hhcgkgICAqc3RyOwogCi0JCQlzdHIgPSBUZXh0 RGF0dW1HZXRDU3RyaW5nKHByb2FyZ2RlZmF1bHRzKTsKKwkJCXN0ciA9IHN0YWNrX2J1ZmZlcl90 ZXh0X2RhdHVtX3RvX2NzdHJpbmcocHJvYXJnZGVmYXVsdHMpOwogCQkJYXJnZGVmYXVsdHMgPSBj YXN0Tm9kZShMaXN0LCBzdHJpbmdUb05vZGUoc3RyKSk7Ci0JCQlwZnJlZShzdHIpOworCQkJc3Rh Y2tfYnVmZmVyX2ZyZWUoc3RyKTsKIAkJCW5leHRhcmdkZWZhdWx0ID0gbGlzdF9oZWFkKGFyZ2Rl ZmF1bHRzKTsKIAkJCS8qIG5sYWNrZGVmYXVsdHMgY291bnRzIG9ubHkgKmlucHV0KiBhcmd1bWVu dHMgbGFja2luZyBkZWZhdWx0cyAqLwogCQkJbmxhY2tkZWZhdWx0cyA9IHByb2MtPnByb25hcmdz IC0gbGlzdF9sZW5ndGgoYXJnZGVmYXVsdHMpOwpAQCAtMzUwNiw2ICszNTE5LDggQEAgcGdfZ2V0 X2Z1bmN0aW9uX2FyZ19kZWZhdWx0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJYm9vbAkJaXNudWxsOwog CWludAkJCW50aF9kZWZhdWx0OwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCXByb2N0 dXAgPSBTZWFyY2hTeXNDYWNoZTEoUFJPQ09JRCwgT2JqZWN0SWRHZXREYXR1bShmdW5jaWQpKTsK IAlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocHJvY3R1cCkpCiAJCVBHX1JFVFVSTl9OVUxMKCk7CkBA IC0zNTMxLDkgKzM1NDYsOSBAQCBwZ19nZXRfZnVuY3Rpb25fYXJnX2RlZmF1bHQoUEdfRlVOQ1RJ T05fQVJHUykKIAkJUEdfUkVUVVJOX05VTEwoKTsKIAl9CiAKLQlzdHIgPSBUZXh0RGF0dW1HZXRD U3RyaW5nKHByb2FyZ2RlZmF1bHRzKTsKKwlzdHIgPSBzdGFja19idWZmZXJfdGV4dF9kYXR1bV90 b19jc3RyaW5nKHByb2FyZ2RlZmF1bHRzKTsKIAlhcmdkZWZhdWx0cyA9IGNhc3ROb2RlKExpc3Qs IHN0cmluZ1RvTm9kZShzdHIpKTsKLQlwZnJlZShzdHIpOworCXN0YWNrX2J1ZmZlcl9mcmVlKHN0 cik7CiAKIAlwcm9jID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHByb2N0dXApOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHN2ZWN0b3Jfb3AuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC90c3ZlY3Rvcl9vcC5jCmluZGV4IDcxYzdjN2QzYjNjLi44NmMyOWY3MzBiYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yX29wLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yX29wLmMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL3JlZ3Byb2MuaCIKICNpbmNs dWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9zdGFja19idWZmZXIuaCIKIAogCiB0 eXBlZGVmIHN0cnVjdApAQCAtMjUzNyw2ICsyNTM4LDggQEAgdHNfcHJvY2Vzc19jYWxsKEZ1bmND YWxsQ29udGV4dCAqZnVuY2N0eCkKIAlUU1ZlY3RvclN0YXQgKnN0OwogCVN0YXRFbnRyeSAgKmVu dHJ5OwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCXN0ID0gKFRTVmVjdG9yU3RhdCAq KSBmdW5jY3R4LT51c2VyX2ZjdHg7CiAKIAllbnRyeSA9IHdhbGtTdGF0RW50cnlUcmVlKHN0KTsK QEAgLTI1NDksOSArMjU1Miw4IEBAIHRzX3Byb2Nlc3NfY2FsbChGdW5jQ2FsbENvbnRleHQgKmZ1 bmNjdHgpCiAJCWNoYXIJCW5lbnRyeVsxNl07CiAJCUhlYXBUdXBsZQl0dXBsZTsKIAotCQl2YWx1 ZXNbMF0gPSBwYWxsb2MoZW50cnktPmxlbmxleGVtZSArIDEpOwotCQltZW1jcHkodmFsdWVzWzBd LCBlbnRyeS0+bGV4ZW1lLCBlbnRyeS0+bGVubGV4ZW1lKTsKLQkJKHZhbHVlc1swXSlbZW50cnkt PmxlbmxleGVtZV0gPSAnXDAnOworCQl2YWx1ZXNbMF0gPSBzdGFja19idWZmZXJfc3RyZHVwX3dp dGhfbGVuKGVudHJ5LT5sZXhlbWUsCisJCQkJCQkJCQkJCQkgZW50cnktPmxlbmxleGVtZSk7CiAJ CXNwcmludGYobmRvYywgIiVkIiwgZW50cnktPm5kb2MpOwogCQl2YWx1ZXNbMV0gPSBuZG9jOwog CQlzcHJpbnRmKG5lbnRyeSwgIiVkIiwgZW50cnktPm5lbnRyeSk7CkBAIC0yNTYwLDcgKzI1NjIs NyBAQCB0c19wcm9jZXNzX2NhbGwoRnVuY0NhbGxDb250ZXh0ICpmdW5jY3R4KQogCQl0dXBsZSA9 IEJ1aWxkVHVwbGVGcm9tQ1N0cmluZ3MoZnVuY2N0eC0+YXR0aW5tZXRhLCB2YWx1ZXMpOwogCQly ZXN1bHQgPSBIZWFwVHVwbGVHZXREYXR1bSh0dXBsZSk7CiAKLQkJcGZyZWUodmFsdWVzWzBdKTsK KwkJc3RhY2tfYnVmZmVyX2ZyZWUodmFsdWVzWzBdKTsKIAogCQkvKiBtYXJrIGVudHJ5IGFzIGFs cmVhZHkgdmlzaXRlZCAqLwogCQllbnRyeS0+bmRvYyA9IDA7Ci0tIAoyLjUzLjAKCg== --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0009-Use-stack-buffer-in-some-access-method-code.patch" Content-Disposition: attachment; filename="v2-0009-Use-stack-buffer-in-some-access-method-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt60i59 RnJvbSA5NDMwNjBmOTFkM2VkY2IxYzk0ODM3YTA5ZGZiNTU2NmJmMmRhZGVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMiBNYXIgMjAyNiAwNDoxNTowNSArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MDkvMTldIFVzZSBzdGFjayBidWZmZXIgaW4gc29tZSBhY2Nlc3MgbWV0aG9kIGNvZGUuCgpNZWNo YW5pY2FsIGNoYW5nZXMgaW5jbHVkaW5nOgoqIHRlbXBvcmFyeSBzdHJpbmdzCiogdGVtcG9yYXJ5 IGRhdHVtLCBudWxsLCBrZXkgbGlzdHMgZXRjCiogV0FMIGNvbnN0cnVjdGlvbgotLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fdHVwbGUuYyAgICAgICAgICB8IDE5ICsrKysrKysrKy0t LS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYyAgICAgICAgIHwgMjEg KysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luc2Nhbi5jICAgICAg ICAgICAgICB8ICA3ICsrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGZ1bmMuYyAg ICAgICAgICAgIHwgMTIgKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMgICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgMTEgKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aW5kZXgvZ2VuYW0uYyAgICAgICAgICAgICAgfCAyMyArKysrKysrKysrKystLS0tLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHByZXByb2Nlc3NrZXlzLmMgfCAyMyArKysrKysrKysr Ky0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyAgICAgICAgICAg fCAgOSArKysrKy0tLQogOSBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCA1MCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxl LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMKaW5kZXggNjljMjMzYzYy ZWIuLjEzZmYxZDNmNWQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu X3R1cGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jCkBAIC00 MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3R1cG1hY3MuaCIKICNpbmNsdWRlICJ1dGls cy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMv c3RhY2tfYnVmZmVyLmgiCiAKIAogLyoKQEAgLTExNywxNCArMTE4LDE2IEBAIGJyaW5fZm9ybV90 dXBsZShCcmluRGVzYyAqYnJkZXNjLCBCbG9ja051bWJlciBibGtubywgQnJpbk1lbVR1cGxlICp0 dXBsZSwKIAlpbnQJCQludW50b2FzdGVkID0gMDsKICNlbmRpZgogCisJREVDTEFSRV9TVEFDS19C VUZGRVIoKTsKKwogCUFzc2VydChicmRlc2MtPmJkX3RvdGFsc3RvcmVkID4gMCk7CiAKLQl2YWx1 ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGJyZGVzYy0+YmRfdG90YWxzdG9yZWQpOwotCW51bGxz ID0gcGFsbG9jMF9hcnJheShib29sLCBicmRlc2MtPmJkX3RvdGFsc3RvcmVkKTsKLQlwaG9ueV9u dWxsYml0bWFwID0gcGFsbG9jX2FycmF5KGJpdHM4LCBCSVRNQVBMRU4oYnJkZXNjLT5iZF90b3Rh bHN0b3JlZCkpOworCXZhbHVlcyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShEYXR1bSwgYnJk ZXNjLT5iZF90b3RhbHN0b3JlZCk7CisJbnVsbHMgPSBzdGFja19idWZmZXJfYWxsb2MwX2FycmF5 KGJvb2wsIGJyZGVzYy0+YmRfdG90YWxzdG9yZWQpOworCXBob255X251bGxiaXRtYXAgPSBzdGFj a19idWZmZXJfYWxsb2NfYXJyYXkoYml0czgsIEJJVE1BUExFTihicmRlc2MtPmJkX3RvdGFsc3Rv cmVkKSk7CiAKICNpZmRlZiBUT0FTVF9JTkRFWF9IQUNLCi0JdW50b2FzdGVkX3ZhbHVlcyA9IHBh bGxvY19hcnJheShEYXR1bSwgYnJkZXNjLT5iZF90b3RhbHN0b3JlZCk7CisJdW50b2FzdGVkX3Zh bHVlcyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShEYXR1bSwgYnJkZXNjLT5iZF90b3RhbHN0 b3JlZCk7CiAjZW5kaWYKIAogCS8qCkBAIC0zMDcsMTMgKzMxMCwxNSBAQCBicmluX2Zvcm1fdHVw bGUoQnJpbkRlc2MgKmJyZGVzYywgQmxvY2tOdW1iZXIgYmxrbm8sIEJyaW5NZW1UdXBsZSAqdHVw bGUsCiAJCQkJCXBob255X251bGxiaXRtYXApOwogCiAJLyogZG9uZSB3aXRoIHRoZXNlICovCi0J cGZyZWUodmFsdWVzKTsKLQlwZnJlZShudWxscyk7Ci0JcGZyZWUocGhvbnlfbnVsbGJpdG1hcCk7 CisJc3RhY2tfYnVmZmVyX2ZyZWUodmFsdWVzKTsKKwlzdGFja19idWZmZXJfZnJlZShudWxscyk7 CisJc3RhY2tfYnVmZmVyX2ZyZWUocGhvbnlfbnVsbGJpdG1hcCk7CiAKICNpZmRlZiBUT0FTVF9J TkRFWF9IQUNLCiAJZm9yIChpID0gMDsgaSA8IG51bnRvYXN0ZWQ7IGkrKykKIAkJcGZyZWUoRGF0 dW1HZXRQb2ludGVyKHVudG9hc3RlZF92YWx1ZXNbaV0pKTsKKworCXN0YWNrX2J1ZmZlcl9mcmVl KHVudG9hc3RlZF92YWx1ZXMpOwogI2VuZGlmCiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v aGVhcHR1cGxlLmMKaW5kZXggMTFiZWMyMGU4MmUuLjEyZjgyMDA1NmJhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9jb21tb24vaGVhcHR1cGxlLmMKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJ1dGls cy9leHBhbmRlZGRhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvc3RhY2tfYnVmZmVyLmgiCiAKIAog LyoKQEAgLTEyMTksNiArMTIyMCw4IEBAIGhlYXBfbW9kaWZ5X3R1cGxlKEhlYXBUdXBsZSB0dXBs ZSwKIAlib29sCSAgICppc251bGw7CiAJSGVhcFR1cGxlCW5ld1R1cGxlOwogCisJREVDTEFSRV9T VEFDS19CVUZGRVIoKTsKKwogCS8qCiAJICogYWxsb2NhdGUgYW5kIGZpbGwgdmFsdWVzIGFuZCBp c251bGwgYXJyYXlzIGZyb20gZWl0aGVyIHRoZSB0dXBsZSBvciB0aGUKIAkgKiByZXBsIGluZm9y bWF0aW9uLCBhcyBhcHByb3ByaWF0ZS4KQEAgLTEyMzAsOCArMTIzMyw4IEBAIGhlYXBfbW9kaWZ5 X3R1cGxlKEhlYXBUdXBsZSB0dXBsZSwKIAkgKiBPKE5eMikgaWYgdGhlcmUgYXJlIG1hbnkgbm9u LXJlcGxhY2VkIGNvbHVtbnMsIHNvIGl0IHNlZW1zIGJldHRlciB0bwogCSAqIGVyciBvbiB0aGUg c2lkZSBvZiBsaW5lYXIgY29zdC4KIAkgKi8KLQl2YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0s IG51bWJlck9mQXR0cmlidXRlcyk7Ci0JaXNudWxsID0gcGFsbG9jX2FycmF5KGJvb2wsIG51bWJl ck9mQXR0cmlidXRlcyk7CisJdmFsdWVzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KERhdHVt LCBudW1iZXJPZkF0dHJpYnV0ZXMpOworCWlzbnVsbCA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJh eShib29sLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwogCiAJaGVhcF9kZWZvcm1fdHVwbGUodHVwbGUs IHR1cGxlRGVzYywgdmFsdWVzLCBpc251bGwpOwogCkBAIC0xMjQ5LDggKzEyNTIsOCBAQCBoZWFw X21vZGlmeV90dXBsZShIZWFwVHVwbGUgdHVwbGUsCiAJICovCiAJbmV3VHVwbGUgPSBoZWFwX2Zv cm1fdHVwbGUodHVwbGVEZXNjLCB2YWx1ZXMsIGlzbnVsbCk7CiAKLQlwZnJlZSh2YWx1ZXMpOwot CXBmcmVlKGlzbnVsbCk7CisJc3RhY2tfYnVmZmVyX2ZyZWUodmFsdWVzKTsKKwlzdGFja19idWZm ZXJfZnJlZShpc251bGwpOwogCiAJLyoKIAkgKiBjb3B5IHRoZSBpZGVudGlmaWNhdGlvbiBpbmZv IG9mIHRoZSBvbGQgdHVwbGU6IHRfY3RpZCwgdF9zZWxmCkBAIC0xMjg4LDEyICsxMjkxLDE0IEBA IGhlYXBfbW9kaWZ5X3R1cGxlX2J5X2NvbHMoSGVhcFR1cGxlIHR1cGxlLAogCUhlYXBUdXBsZQlu ZXdUdXBsZTsKIAlpbnQJCQlpOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCS8qCiAJ ICogYWxsb2NhdGUgYW5kIGZpbGwgdmFsdWVzIGFuZCBpc251bGwgYXJyYXlzIGZyb20gdGhlIHR1 cGxlLCB0aGVuIHJlcGxhY2UKIAkgKiBzZWxlY3RlZCBjb2x1bW5zIGZyb20gdGhlIGlucHV0IGFy cmF5cy4KIAkgKi8KLQl2YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIG51bWJlck9mQXR0cmli dXRlcyk7Ci0JaXNudWxsID0gcGFsbG9jX2FycmF5KGJvb2wsIG51bWJlck9mQXR0cmlidXRlcyk7 CisJdmFsdWVzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KERhdHVtLCBudW1iZXJPZkF0dHJp YnV0ZXMpOworCWlzbnVsbCA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShib29sLCBudW1iZXJP ZkF0dHJpYnV0ZXMpOwogCiAJaGVhcF9kZWZvcm1fdHVwbGUodHVwbGUsIHR1cGxlRGVzYywgdmFs dWVzLCBpc251bGwpOwogCkBAIC0xMzEyLDggKzEzMTcsOCBAQCBoZWFwX21vZGlmeV90dXBsZV9i eV9jb2xzKEhlYXBUdXBsZSB0dXBsZSwKIAkgKi8KIAluZXdUdXBsZSA9IGhlYXBfZm9ybV90dXBs ZSh0dXBsZURlc2MsIHZhbHVlcywgaXNudWxsKTsKIAotCXBmcmVlKHZhbHVlcyk7Ci0JcGZyZWUo aXNudWxsKTsKKwlzdGFja19idWZmZXJfZnJlZSh2YWx1ZXMpOworCXN0YWNrX2J1ZmZlcl9mcmVl KGlzbnVsbCk7CiAKIAkvKgogCSAqIGNvcHkgdGhlIGlkZW50aWZpY2F0aW9uIGluZm8gb2YgdGhl IG9sZCB0dXBsZTogdF9jdGlkLCB0X3NlbGYKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luc2Nhbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5zY2FuLmMKaW5kZXgg ZmI5Mjk3NjFhYjcuLjZkM2QyNzM3MDgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnNjYW4uYwpAQCAt MjAsNiArMjAsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0 aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvc3RhY2tfYnVm ZmVyLmgiCiAKIAogSW5kZXhTY2FuRGVzYwpAQCAtNDIwLDEwICs0MjEsMTIgQEAgZ2luTmV3U2Nh bktleShJbmRleFNjYW5EZXNjIHNjYW4pCiAJCWludAkJCWlOb3JtYWxLZXk7CiAJCWludAkJCWlF eGNsdWRlT25seTsKIAorCQlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJCS8qIFdlJ2QgYmV0 dGVyIGhhdmUgbWFkZSBhdCBsZWFzdCBvbmUgbm9ybWFsIGtleSAqLwogCQlBc3NlcnQobnVtRXhj bHVkZU9ubHkgPCBzby0+bmtleXMpOwogCQkvKiBNYWtlIGEgdGVtcG9yYXJ5IGFycmF5IHRvIGhv bGQgdGhlIHJlLW9yZGVyZWQgc2NhbiBrZXlzICovCi0JCXRtcGtleXMgPSAoR2luU2NhbktleSkg cGFsbG9jKHNvLT5ua2V5cyAqIHNpemVvZihHaW5TY2FuS2V5RGF0YSkpOworCQl0bXBrZXlzID0g c3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KEdpblNjYW5LZXlEYXRhLCBzby0+bmtleXMpOwogCQkv KiBSZS1vcmRlciB0aGUga2V5cyAuLi4gKi8KIAkJaU5vcm1hbEtleSA9IDA7CiAJCWlFeGNsdWRl T25seSA9IHNvLT5ua2V5cyAtIG51bUV4Y2x1ZGVPbmx5OwpAQCAtNDQ2LDcgKzQ0OSw3IEBAIGdp bk5ld1NjYW5LZXkoSW5kZXhTY2FuRGVzYyBzY2FuKQogCQlBc3NlcnQoaUV4Y2x1ZGVPbmx5ID09 IHNvLT5ua2V5cyk7CiAJCS8qIC4uLiBhbmQgY29weSB0aGVtIGJhY2sgdG8gc28tPmtleXNbXSAq LwogCQltZW1jcHkoc28tPmtleXMsIHRtcGtleXMsIHNvLT5ua2V5cyAqIHNpemVvZihHaW5TY2Fu S2V5RGF0YSkpOwotCQlwZnJlZSh0bXBrZXlzKTsKKwkJc3RhY2tfYnVmZmVyX2ZyZWUodG1wa2V5 cyk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hm dW5jLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoZnVuYy5jCmluZGV4IDU3NTM0MmEy MWI2Li5jZGE5Y2UyODc4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFz aGZ1bmMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoZnVuYy5jCkBAIC0zMSw2 ICszMSw3IEBACiAjaW5jbHVkZSAidXRpbHMvZmxvYXQuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdy cHJvdG9zLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfbG9jYWxlLmgiCisjaW5jbHVkZSAidXRpbHMv c3RhY2tfYnVmZmVyLmgiCiAjaW5jbHVkZSAidmFyYXR0LmgiCiAKIC8qCkBAIC0yOTUsOSArMjk2 LDEwIEBAIGhhc2h0ZXh0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNvbnN0IGNoYXIgKmtleWRhdGEg PSBWQVJEQVRBX0FOWShrZXkpOwogCQlzaXplX3QJCWtleWxlbiA9IFZBUlNJWkVfQU5ZX0VYSERS KGtleSk7CiAKKwkJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKIAogCQlic2l6ZSA9IHBnX3N0cm54 ZnJtKE5VTEwsIDAsIGtleWRhdGEsIGtleWxlbiwgbXlsb2NhbGUpOwotCQlidWYgPSBwYWxsb2Mo YnNpemUgKyAxKTsKKwkJYnVmID0gc3RhY2tfYnVmZmVyX2FsbG9jKGJzaXplICsgMSk7CiAKIAkJ cnNpemUgPSBwZ19zdHJueGZybShidWYsIGJzaXplICsgMSwga2V5ZGF0YSwga2V5bGVuLCBteWxv Y2FsZSk7CiAKQEAgLTMxMiw3ICszMTQsNyBAQCBoYXNodGV4dChQR19GVU5DVElPTl9BUkdTKQog CQkgKi8KIAkJcmVzdWx0ID0gaGFzaF9hbnkoKHVpbnQ4X3QgKikgYnVmLCBic2l6ZSArIDEpOwog Ci0JCXBmcmVlKGJ1Zik7CisJCXN0YWNrX2J1ZmZlcl9mcmVlKGJ1Zik7CiAJfQogCiAJLyogQXZv aWQgbGVha2luZyBtZW1vcnkgZm9yIHRvYXN0ZWQgaW5wdXRzICovCkBAIC0zNTEsOCArMzUzLDEw IEBAIGhhc2h0ZXh0ZXh0ZW5kZWQoUEdfRlVOQ1RJT05fQVJHUykKIAkJY29uc3QgY2hhciAqa2V5 ZGF0YSA9IFZBUkRBVEFfQU5ZKGtleSk7CiAJCXNpemVfdAkJa2V5bGVuID0gVkFSU0laRV9BTllf RVhIRFIoa2V5KTsKIAorCQlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJCWJzaXplID0gcGdf c3Rybnhmcm0oTlVMTCwgMCwga2V5ZGF0YSwga2V5bGVuLCBteWxvY2FsZSk7Ci0JCWJ1ZiA9IHBh bGxvYyhic2l6ZSArIDEpOworCQlidWYgPSBzdGFja19idWZmZXJfYWxsb2MoYnNpemUgKyAxKTsK IAogCQlyc2l6ZSA9IHBnX3N0cm54ZnJtKGJ1ZiwgYnNpemUgKyAxLCBrZXlkYXRhLCBrZXlsZW4s IG15bG9jYWxlKTsKIApAQCAtMzY4LDcgKzM3Miw3IEBAIGhhc2h0ZXh0ZXh0ZW5kZWQoUEdfRlVO Q1RJT05fQVJHUykKIAkJcmVzdWx0ID0gaGFzaF9hbnlfZXh0ZW5kZWQoKHVpbnQ4X3QgKikgYnVm LCBic2l6ZSArIDEsCiAJCQkJCQkJCSAgIFBHX0dFVEFSR19JTlQ2NCgxKSk7CiAKLQkJcGZyZWUo YnVmKTsKKwkJc3RhY2tfYnVmZmVyX2ZyZWUoYnVmKTsKIAl9CiAKIAlQR19GUkVFX0lGX0NPUFko a2V5LCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggOGYxYzExYTkzNTAuLjEzMTcx ZGYxODNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNTMsNiArNTMsNyBAQAogI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CiAjaW5jbHVkZSAidXRpbHMvc3BjY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zdGFja19idWZm ZXIuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCiAKQEAgLTg3NjgsMTEgKzg3Njks MTMgQEAgYm90dG9tdXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRl KQogCWludAkJCW5jb3BpZWQgPSAwOwogCWludAkJCW5ibG9ja3NmYXZvcmFibGUgPSAwOwogCisJ REVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCUFzc2VydChkZWxzdGF0ZS0+Ym90dG9tdXApOwog CUFzc2VydChkZWxzdGF0ZS0+bmRlbHRpZHMgPiAwKTsKIAogCS8qIENhbGN1bGF0ZSBwZXItaGVh cC1ibG9jayBjb3VudCBvZiBUSURzICovCi0JYmxvY2tncm91cHMgPSBwYWxsb2NfYXJyYXkoSW5k ZXhEZWxldGVDb3VudHMsIGRlbHN0YXRlLT5uZGVsdGlkcyk7CisJYmxvY2tncm91cHMgPSBzdGFj a19idWZmZXJfYWxsb2NfYXJyYXkoSW5kZXhEZWxldGVDb3VudHMsIGRlbHN0YXRlLT5uZGVsdGlk cyk7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBkZWxzdGF0ZS0+bmRlbHRpZHM7IGkrKykKIAl7CiAJ CVRNX0luZGV4RGVsZXRlICppZGVsdGlkID0gJmRlbHN0YXRlLT5kZWx0aWRzW2ldOwpAQCAtODg0 NSw3ICs4ODQ4LDggQEAgYm90dG9tdXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVsZXRlT3Ag KmRlbHN0YXRlKQogCS8qIFNvcnQgZ3JvdXBzIGFuZCByZWFycmFuZ2UgY2FsbGVyJ3MgZGVsdGlk cyBhcnJheSAqLwogCXFzb3J0KGJsb2NrZ3JvdXBzLCBuYmxvY2tncm91cHMsIHNpemVvZihJbmRl eERlbGV0ZUNvdW50cyksCiAJCSAgYm90dG9tdXBfc29ydF9hbmRfc2hyaW5rX2NtcCk7Ci0JcmVv cmRlcmVkZGVsdGlkcyA9IHBhbGxvYyhkZWxzdGF0ZS0+bmRlbHRpZHMgKiBzaXplb2YoVE1fSW5k ZXhEZWxldGUpKTsKKwlyZW9yZGVyZWRkZWx0aWRzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5 KFRNX0luZGV4RGVsZXRlLAorCQkJCQkJCQkJCQkJZGVsc3RhdGUtPm5kZWx0aWRzKTsKIAogCW5i bG9ja2dyb3VwcyA9IE1pbihCT1RUT01VUF9NQVhfTkJMT0NLUywgbmJsb2NrZ3JvdXBzKTsKIAkv KiBEZXRlcm1pbmUgbnVtYmVyIG9mIGZhdm9yYWJsZSBibG9ja3MgYXQgdGhlIHN0YXJ0IG9mIGZp bmFsIGRlbHRpZHMgKi8KQEAgLTg4NjcsOCArODg3MSw4IEBAIGJvdHRvbXVwX3NvcnRfYW5kX3No cmluayhUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSkKIAkJICAgc2l6ZW9mKFRNX0luZGV4RGVs ZXRlKSAqIG5jb3BpZWQpOwogCWRlbHN0YXRlLT5uZGVsdGlkcyA9IG5jb3BpZWQ7CiAKLQlwZnJl ZShyZW9yZGVyZWRkZWx0aWRzKTsKLQlwZnJlZShibG9ja2dyb3Vwcyk7CisJc3RhY2tfYnVmZmVy X2ZyZWUocmVvcmRlcmVkZGVsdGlkcyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUoYmxvY2tncm91cHMp OwogCiAJcmV0dXJuIG5ibG9ja3NmYXZvcmFibGU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYwppbmRleCA1MTM3ZDI1MTBlYS4uY2ZiMDZhYjgyYWMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtNDUsNiArNDUsNyBAQAogI2lu Y2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvc3RhY2tfYnVmZmVyLmgiCiAKIHN0 YXRpYyB2b2lkIHJlZm9ybV9hbmRfcmV3cml0ZV90dXBsZShIZWFwVHVwbGUgdHVwbGUsCiAJCQkJ CQkJCQkgUmVsYXRpb24gT2xkSGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKQEAgLTcwNiw2ICs3MDcs OCBAQCBoZWFwYW1fcmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRIZWFwLCBS ZWxhdGlvbiBOZXdIZWFwLAogCUJ1ZmZlckhlYXBUdXBsZVRhYmxlU2xvdCAqaHNsb3Q7CiAJQmxv Y2tOdW1iZXIgcHJldl9jYmxvY2sgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CiAKKwlERUNMQVJFX1NU QUNLX0JVRkZFUigpOworCiAJLyogUmVtZW1iZXIgaWYgaXQncyBhIHN5c3RlbSBjYXRhbG9nICov CiAJaXNfc3lzdGVtX2NhdGFsb2cgPSBJc1N5c3RlbVJlbGF0aW9uKE9sZEhlYXApOwogCkBAIC03 MTcsOCArNzIwLDggQEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24g T2xkSGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKIAogCS8qIFByZWFsbG9jYXRlIHZhbHVlcy9pc251 bGwgYXJyYXlzICovCiAJbmF0dHMgPSBuZXdUdXBEZXNjLT5uYXR0czsKLQl2YWx1ZXMgPSBwYWxs b2NfYXJyYXkoRGF0dW0sIG5hdHRzKTsKLQlpc251bGwgPSBwYWxsb2NfYXJyYXkoYm9vbCwgbmF0 dHMpOworCXZhbHVlcyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShEYXR1bSwgbmF0dHMpOwor CWlzbnVsbCA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShib29sLCBuYXR0cyk7CiAKIAkvKiBJ bml0aWFsaXplIHRoZSByZXdyaXRlIG9wZXJhdGlvbiAqLwogCXJ3c3RhdGUgPSBiZWdpbl9oZWFw X3Jld3JpdGUoT2xkSGVhcCwgTmV3SGVhcCwgT2xkZXN0WG1pbiwgKnhpZF9jdXRvZmYsCkBAIC0x MDAyLDggKzEwMDUsOCBAQCBoZWFwYW1fcmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlv biBPbGRIZWFwLCBSZWxhdGlvbiBOZXdIZWFwLAogCWVuZF9oZWFwX3Jld3JpdGUocndzdGF0ZSk7 CiAKIAkvKiBDbGVhbiB1cCAqLwotCXBmcmVlKHZhbHVlcyk7Ci0JcGZyZWUoaXNudWxsKTsKKwlz dGFja19idWZmZXJfZnJlZSh2YWx1ZXMpOworCXN0YWNrX2J1ZmZlcl9mcmVlKGlzbnVsbCk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCmluZGV4IDVlODliODZhNjJjLi4zMGRmMGI4 ODE5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs dWRlICJ1dGlscy9ybHMuaCIKICNpbmNsdWRlICJ1dGlscy9ydWxldXRpbHMuaCIKICNpbmNsdWRl ICJ1dGlscy9zbmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvc3RhY2tfYnVmZmVyLmgiCiAKIAog LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpAQCAtMzAzLDYgKzMwNCw4IEBAIGluZGV4X2NvbXB1dGVfeGlkX2hvcml6b25f Zm9yX3R1cGxlcyhSZWxhdGlvbiBpcmVsLAogCVBhZ2UJCWlwYWdlID0gQnVmZmVyR2V0UGFnZShp YnVmKTsKIAlJbmRleFR1cGxlCWl0dXA7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJ QXNzZXJ0KG5pdGVtcyA+IDApOwogCiAJZGVsc3RhdGUuaXJlbCA9IGlyZWw7CkBAIC0zMTAsOCAr MzEzLDggQEAgaW5kZXhfY29tcHV0ZV94aWRfaG9yaXpvbl9mb3JfdHVwbGVzKFJlbGF0aW9uIGly ZWwsCiAJZGVsc3RhdGUuYm90dG9tdXAgPSBmYWxzZTsKIAlkZWxzdGF0ZS5ib3R0b211cGZyZWVz cGFjZSA9IDA7CiAJZGVsc3RhdGUubmRlbHRpZHMgPSAwOwotCWRlbHN0YXRlLmRlbHRpZHMgPSBw YWxsb2NfYXJyYXkoVE1fSW5kZXhEZWxldGUsIG5pdGVtcyk7Ci0JZGVsc3RhdGUuc3RhdHVzID0g cGFsbG9jX2FycmF5KFRNX0luZGV4U3RhdHVzLCBuaXRlbXMpOworCWRlbHN0YXRlLmRlbHRpZHMg PSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXkoVE1fSW5kZXhEZWxldGUsIG5pdGVtcyk7CisJZGVs c3RhdGUuc3RhdHVzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KFRNX0luZGV4U3RhdHVzLCBu aXRlbXMpOwogCiAJLyogaWRlbnRpZnkgd2hhdCB0aGUgaW5kZXggdHVwbGVzIGFib3V0IHRvIGJl IGRlbGV0ZWQgcG9pbnQgdG8gKi8KIAlmb3IgKGludCBpID0gMDsgaSA8IG5pdGVtczsgaSsrKQpA QCAtMzQwLDggKzM0Myw4IEBAIGluZGV4X2NvbXB1dGVfeGlkX2hvcml6b25fZm9yX3R1cGxlcyhS ZWxhdGlvbiBpcmVsLAogCS8qIGFzc2VydCB0YWJsZWFtIGFncmVlcyB0aGF0IGFsbCBpdGVtcyBh cmUgZGVsZXRhYmxlICovCiAJQXNzZXJ0KGRlbHN0YXRlLm5kZWx0aWRzID09IG5pdGVtcyk7CiAK LQlwZnJlZShkZWxzdGF0ZS5kZWx0aWRzKTsKLQlwZnJlZShkZWxzdGF0ZS5zdGF0dXMpOworCXN0 YWNrX2J1ZmZlcl9mcmVlKGRlbHN0YXRlLmRlbHRpZHMpOworCXN0YWNrX2J1ZmZlcl9mcmVlKGRl bHN0YXRlLnN0YXR1cyk7CiAKIAlyZXR1cm4gc25hcHNob3RDb25mbGljdEhvcml6b247CiB9CkBA IC00MzMsNyArNDM2LDkgQEAgc3lzdGFibGVfYmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKIAkJaW50CQkJaTsKIAkJU2NhbktleQkJaWR4a2V5OwogCi0JCWlkeGtleSA9IHBhbGxvY19h cnJheShTY2FuS2V5RGF0YSwgbmtleXMpOworCQlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCisJ CWlkeGtleSA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShTY2FuS2V5RGF0YSwgbmtleXMpOwog CiAJCS8qIENvbnZlcnQgYXR0cmlidXRlIG51bWJlcnMgdG8gYmUgaW5kZXggY29sdW1uIG51bWJl cnMuICovCiAJCWZvciAoaSA9IDA7IGkgPCBua2V5czsgaSsrKQpAQCAtNDU5LDcgKzQ2NCw3IEBA IHN5c3RhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCWluZGV4X3Jlc2Nh bihzeXNzY2FuLT5pc2NhbiwgaWR4a2V5LCBua2V5cywgTlVMTCwgMCk7CiAJCXN5c3NjYW4tPnNj YW4gPSBOVUxMOwogCi0JCXBmcmVlKGlkeGtleSk7CisJCXN0YWNrX2J1ZmZlcl9mcmVlKGlkeGtl eSk7CiAJfQogCWVsc2UKIAl7CkBAIC02NTYsNiArNjYxLDggQEAgc3lzdGFibGVfYmVnaW5zY2Fu X29yZGVyZWQoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCWludAkJCWk7CiAJU2NhbktleQkJaWR4 a2V5OwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCS8qIFJFSU5ERVggY2FuIHByb2Jh Ymx5IGJlIGEgaGFyZCBlcnJvciBoZXJlIC4uLiAqLwogCWlmIChSZWluZGV4SXNQcm9jZXNzaW5n SW5kZXgoUmVsYXRpb25HZXRSZWxpZChpbmRleFJlbGF0aW9uKSkpCiAJCWVyZXBvcnQoRVJST1Is CkBAIC02ODYsNyArNjkzLDcgQEAgc3lzdGFibGVfYmVnaW5zY2FuX29yZGVyZWQoUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCQlzeXNzY2FuLT5zbmFwc2hvdCA9IE5VTEw7CiAJfQogCi0JaWR4a2V5 ID0gcGFsbG9jX2FycmF5KFNjYW5LZXlEYXRhLCBua2V5cyk7CisJaWR4a2V5ID0gc3RhY2tfYnVm ZmVyX2FsbG9jX2FycmF5KFNjYW5LZXlEYXRhLCBua2V5cyk7CiAKIAkvKiBDb252ZXJ0IGF0dHJp YnV0ZSBudW1iZXJzIHRvIGJlIGluZGV4IGNvbHVtbiBudW1iZXJzLiAqLwogCWZvciAoaSA9IDA7 IGkgPCBua2V5czsgaSsrKQpAQCAtNzIwLDcgKzcyNyw3IEBAIHN5c3RhYmxlX2JlZ2luc2Nhbl9v cmRlcmVkKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlpbmRleF9yZXNjYW4oc3lzc2Nhbi0+aXNj YW4sIGlkeGtleSwgbmtleXMsIE5VTEwsIDApOwogCXN5c3NjYW4tPnNjYW4gPSBOVUxMOwogCi0J cGZyZWUoaWR4a2V5KTsKKwlzdGFja19idWZmZXJfZnJlZShpZHhrZXkpOwogCiAJcmV0dXJuIHN5 c3NjYW47CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHByZXBy b2Nlc3NrZXlzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHByZXByb2Nlc3NrZXlz LmMKaW5kZXggMzljMGE1ZDYxMGYuLmI2MmU2ODkyMzQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHByZXByb2Nlc3NrZXlzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRwcmVwcm9jZXNza2V5cy5jCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNs dWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9zdGFja19idWZmZXIuaCIKIAogdHlw ZWRlZiBzdHJ1Y3QgQlRTY2FuS2V5UHJlcHJvYwogewpAQCAtMTU1Nyw2ICsxNTU4LDggQEAgX2J0 X3VubWFya19rZXlzKEluZGV4U2NhbkRlc2Mgc2NhbiwgaW50ICprZXlEYXRhTWFwKQogCQkJCWhh dmVSZXFGb3J3YXJkLAogCQkJCWhhdmVSZXFCYWNrd2FyZDsKIAorCURFQ0xBUkVfU1RBQ0tfQlVG RkVSKCk7CisKIAkvKgogCSAqIERvIGFuIGluaXRpYWwgcGFzcyBvdmVyIHNvLT5rZXlEYXRhW10g dGhhdCBkZXRlcm1pbmVzIHdoaWNoIGtleXMgdG8KIAkgKiBrZWVwIGFzIHJlcXVpcmVkLiAgV2Ug ZXhwZWN0IHNvLT5rZXlEYXRhW10gdG8gc3RpbGwgYmUgaW4gYXR0cmlidXRlCkBAIC0xNTY4LDcg KzE1NzEsNyBAQCBfYnRfdW5tYXJrX2tleXMoSW5kZXhTY2FuRGVzYyBzY2FuLCBpbnQgKmtleURh dGFNYXApCiAJICogQW55IHJlcXVpcmVkbmVzcyBtYXJraW5ncyB0aGF0IHdlIG1pZ2h0IGxlYXZl IG9uIGxhdGVyIGtleXMvYXR0cmlidXRlcwogCSAqIGFyZSBwcmVkaWNhdGVkIG9uIHRoZXJlIGJl aW5nIHJlcXVpcmVkID0ga2V5cyBvbiBhbGwgcHJpb3IgY29sdW1ucy4KIAkgKi8KLQl1bm1hcmtp a2V5ID0gcGFsbG9jMChzby0+bnVtYmVyT2ZLZXlzICogc2l6ZW9mKGJvb2wpKTsKKwl1bm1hcmtp a2V5ID0gc3RhY2tfYnVmZmVyX2FsbG9jMF9hcnJheShib29sLCBzby0+bnVtYmVyT2ZLZXlzKTsK IAludW5tYXJrID0gMDsKIAogCS8qIFNldCB0aGluZ3MgdXAgZm9yIGZpcnN0IGtleSdzIGF0dHJp YnV0ZSAqLwpAQCAtMTY1MywxNCArMTY1NiwxNCBAQCBfYnRfdW5tYXJrX2tleXMoSW5kZXhTY2Fu RGVzYyBzY2FuLCBpbnQgKmtleURhdGFNYXApCiAJICogTmV4dCwgYWxsb2NhdGUgdGVtcCBhcnJh eXM6IG9uZSBmb3IgcmVxdWlyZWQga2V5cyB0aGF0J2xsIHJlbWFpbgogCSAqIHJlcXVpcmVkLCB0 aGUgb3RoZXIgZm9yIGFsbCByZW1haW5pbmcga2V5cwogCSAqLwotCXVubWFya0tleXMgPSBwYWxs b2MobnVubWFyayAqIHNpemVvZihTY2FuS2V5RGF0YSkpOwotCWtlZXBLZXlzID0gcGFsbG9jKChz by0+bnVtYmVyT2ZLZXlzIC0gbnVubWFyaykgKiBzaXplb2YoU2NhbktleURhdGEpKTsKKwl1bm1h cmtLZXlzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KFNjYW5LZXlEYXRhLCBudW5tYXJrKTsK KwlrZWVwS2V5cyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShTY2FuS2V5RGF0YSwgc28tPm51 bWJlck9mS2V5cyAtIG51bm1hcmspOwogCW51bm1hcmtlZCA9IDA7CiAJbmtlcHQgPSAwOwogCWlm IChzby0+bnVtQXJyYXlLZXlzKQogCXsKLQkJdW5tYXJrT3JkZXJQcm9jcyA9IHBhbGxvYyhudW5t YXJrICogc2l6ZW9mKEZtZ3JJbmZvKSk7Ci0JCWtlZXBPcmRlclByb2NzID0gcGFsbG9jKChzby0+ bnVtYmVyT2ZLZXlzIC0gbnVubWFyaykgKiBzaXplb2YoRm1nckluZm8pKTsKKwkJdW5tYXJrT3Jk ZXJQcm9jcyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShGbWdySW5mbywgbnVubWFyayk7CisJ CWtlZXBPcmRlclByb2NzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KEZtZ3JJbmZvLCBzby0+ bnVtYmVyT2ZLZXlzIC0gbnVubWFyayk7CiAJfQogCiAJLyoKQEAgLTE3NTEsOSArMTc1NCw5IEBA IF9idF91bm1hcmtfa2V5cyhJbmRleFNjYW5EZXNjIHNjYW4sIGludCAqa2V5RGF0YU1hcCkKIAlt ZW1jcHkoc28tPmtleURhdGEgKyBua2VwdCwgdW5tYXJrS2V5cywgc2l6ZW9mKFNjYW5LZXlEYXRh KSAqIG51bm1hcmtlZCk7CiAKIAkvKiBEb25lIHdpdGggdGVtcCBhcnJheXMgKi8KLQlwZnJlZSh1 bm1hcmtpa2V5KTsKLQlwZnJlZShrZWVwS2V5cyk7Ci0JcGZyZWUodW5tYXJrS2V5cyk7CisJc3Rh Y2tfYnVmZmVyX2ZyZWUodW5tYXJraWtleSk7CisJc3RhY2tfYnVmZmVyX2ZyZWUoa2VlcEtleXMp OworCXN0YWNrX2J1ZmZlcl9mcmVlKHVubWFya0tleXMpOwogCiAJLyoKIAkgKiBOb3cgY29weSBz by0+b3JkZXJQcm9jc1tdIHRlbXAgZW50cmllcyBuZWVkZWQgYnkgc2NhbnMgd2l0aCA9IGFycmF5 CkBAIC0xNzgxLDggKzE3ODQsOCBAQCBfYnRfdW5tYXJrX2tleXMoSW5kZXhTY2FuRGVzYyBzY2Fu LCBpbnQgKmtleURhdGFNYXApCiAJCQkgIF9idF9yZW9yZGVyX2FycmF5X2NtcCk7CiAKIAkJLyog RG9uZSB3aXRoIHRlbXAgYXJyYXlzICovCi0JCXBmcmVlKHVubWFya09yZGVyUHJvY3MpOwotCQlw ZnJlZShrZWVwT3JkZXJQcm9jcyk7CisJCXN0YWNrX2J1ZmZlcl9mcmVlKHVubWFya09yZGVyUHJv Y3MpOworCQlzdGFja19idWZmZXJfZnJlZShrZWVwT3JkZXJQcm9jcyk7CiAJfQogfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCmluZGV4IGRmZjdkMjg2ZmM4Li4xNGJkMGZkMmZkMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNs dWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5LmgiCiAj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zdGFja19idWZmZXIu aCIKIAogc3RhdGljIE1lbW9yeUNvbnRleHQgb3BDdHg7CQkvKiB3b3JraW5nIG1lbW9yeSBmb3Ig b3BlcmF0aW9ucyAqLwogCkBAIC01NTEsMTMgKzU1MiwxNSBAQCBidHJlZV94bG9nX3VwZGF0ZXMo UGFnZSBwYWdlLCBPZmZzZXROdW1iZXIgKnVwZGF0ZWRvZmZzZXRzLAogCUl0ZW1JZAkJaXRlbWlk OwogCVNpemUJCWl0ZW1zejsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAlmb3IgKGlu dCBpID0gMDsgaSA8IG51cGRhdGVkOyBpKyspCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlk KHBhZ2UsIHVwZGF0ZWRvZmZzZXRzW2ldKTsKIAkJb3JpZ3R1cGxlID0gKEluZGV4VHVwbGUpIFBh Z2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJdmFjcG9zdGluZyA9IHBhbGxvYyhvZmZzZXRv ZihCVFZhY3V1bVBvc3RpbmdEYXRhLCBkZWxldGV0aWRzKSArCi0JCQkJCQkJdXBkYXRlcy0+bmRl bGV0ZWR0aWRzICogc2l6ZW9mKHVpbnQxNikpOworCQl2YWNwb3N0aW5nID0gc3RhY2tfYnVmZmVy X2FsbG9jKG9mZnNldG9mKEJUVmFjdXVtUG9zdGluZ0RhdGEsIGRlbGV0ZXRpZHMpICsKKwkJCQkJ CQkJCQl1cGRhdGVzLT5uZGVsZXRlZHRpZHMgKiBzaXplb2YodWludDE2KSk7CiAJCXZhY3Bvc3Rp bmctPnVwZGF0ZWRvZmZzZXQgPSB1cGRhdGVkb2Zmc2V0c1tpXTsKIAkJdmFjcG9zdGluZy0+aXR1 cCA9IG9yaWd0dXBsZTsKIAkJdmFjcG9zdGluZy0+bmRlbGV0ZWR0aWRzID0gdXBkYXRlcy0+bmRl bGV0ZWR0aWRzOwpAQCAtNTczLDcgKzU3Niw3IEBAIGJ0cmVlX3hsb2dfdXBkYXRlcyhQYWdlIHBh Z2UsIE9mZnNldE51bWJlciAqdXBkYXRlZG9mZnNldHMsCiAJCQllbG9nKFBBTklDLCAiZmFpbGVk IHRvIHVwZGF0ZSBwYXJ0aWFsbHkgZGVhZCBpdGVtIik7CiAKIAkJcGZyZWUodmFjcG9zdGluZy0+ aXR1cCk7Ci0JCXBmcmVlKHZhY3Bvc3RpbmcpOworCQlzdGFja19idWZmZXJfZnJlZSh2YWNwb3N0 aW5nKTsKIAogCQkvKiBhZHZhbmNlIHRvIG5leHQgeGxfYnRyZWVfdXBkYXRlIGZyb20gYXJyYXkg Ki8KIAkJdXBkYXRlcyA9ICh4bF9idHJlZV91cGRhdGUgKikKLS0gCjIuNTMuMAoK --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0010-Use-stack_buffer-in-LLVM-code.patch" Content-Disposition: attachment; filename="v2-0010-Use-stack_buffer-in-LLVM-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt62zb10 RnJvbSBjZWQzZTVmZDE4MDllMzg5ODZlNzY5Mzg0ZjEzYzJiNjg5Y2Q1MzMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTAgTWFyIDIwMjYgMTc6MzU6MTcgKzEzMDAKU3ViamVjdDogW1BBVENIIHYy IDEwLzE5XSBVc2Ugc3RhY2tfYnVmZmVyIGluIExMVk0gY29kZS4KCi0tLQogc3JjL2JhY2tlbmQv aml0L2xsdm0vbGx2bWppdC5jICAgICAgfCAyMSArKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9i YWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jIHwgIDcgKysrKystLQogMiBmaWxlcyBjaGFu Z2VkLCAxOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2ppdC9sbHZtL2xsdm1qaXQuYyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXQu YwppbmRleCAyZThhYTQ3NDlkYi4uOTU3MjQxYzY0YjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2ppdC9sbHZtL2xsdm1qaXQuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0LmMK QEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKKyNpbmNsdWRlICJ1 dGlscy9zdGFja19idWZmZXIuaCIKIAogI2RlZmluZSBMTFZNSklUX0xMVk1fQ09OVEVYVF9SRVVT RV9NQVggMTAwCiAKQEAgLTQ5NSwxOCArNDk2LDIwIEBAIGxsdm1fY29weV9hdHRyaWJ1dGVzX2F0 X2luZGV4KExMVk1WYWx1ZVJlZiB2X2Zyb20sIExMVk1WYWx1ZVJlZiB2X3RvLCB1aW50MzIgaW5k CiAJaW50CQkJbnVtX2F0dHJpYnV0ZXM7CiAJTExWTUF0dHJpYnV0ZVJlZiAqYXR0cnM7CiAKKwlE RUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJbnVtX2F0dHJpYnV0ZXMgPSBMTFZNR2V0QXR0cmli dXRlQ291bnRBdEluZGV4KHZfZnJvbSwgaW5kZXgpOwogCiAJaWYgKG51bV9hdHRyaWJ1dGVzID09 IDApCiAJCXJldHVybjsKIAotCWF0dHJzID0gcGFsbG9jX2FycmF5KExMVk1BdHRyaWJ1dGVSZWYs IG51bV9hdHRyaWJ1dGVzKTsKKwlhdHRycyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShMTFZN QXR0cmlidXRlUmVmLCBudW1fYXR0cmlidXRlcyk7CiAJTExWTUdldEF0dHJpYnV0ZXNBdEluZGV4 KHZfZnJvbSwgaW5kZXgsIGF0dHJzKTsKIAogCWZvciAoaW50IGF0dG5vID0gMDsgYXR0bm8gPCBu dW1fYXR0cmlidXRlczsgYXR0bm8rKykKIAkJTExWTUFkZEF0dHJpYnV0ZUF0SW5kZXgodl90bywg aW5kZXgsIGF0dHJzW2F0dG5vXSk7CiAKLQlwZnJlZShhdHRycyk7CisJc3RhY2tfYnVmZmVyX2Zy ZWUoYXR0cnMpOwogfQogCiAvKgpAQCAtMTEyNiwxMyArMTEyOSwxNyBAQCBsbHZtX3Jlc29sdmVf c3ltYm9scyhMTFZNT3JjRGVmaW5pdGlvbkdlbmVyYXRvclJlZiBHZW5lcmF0b3JPYmosIHZvaWQg KkN0eCwKIAkJCQkJIExMVk1PcmNKSVREeWxpYlJlZiBKRCwgTExWTU9yY0pJVER5bGliTG9va3Vw RmxhZ3MgSkRMb29rdXBGbGFncywKIAkJCQkJIExMVk1PcmNDTG9va3VwU2V0IExvb2t1cFNldCwg c2l6ZV90IExvb2t1cFNldFNpemUpCiB7CisJTExWTUVycm9yUmVmIGVycm9yOworCUxMVk1PcmNN YXRlcmlhbGl6YXRpb25Vbml0UmVmIG11OworCUxMVk1PcmNDU3ltYm9sTWFwUGFpcnMgc3ltYm9s czsKKworCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKICNpZiBMTFZNX1ZFUlNJT05fTUFKT1Ig PiAxNAotCUxMVk1PcmNDU3ltYm9sTWFwUGFpcnMgc3ltYm9scyA9IHBhbGxvYzBfYXJyYXkoTExW TU9yY0NTeW1ib2xNYXBQYWlyLCBMb29rdXBTZXRTaXplKTsKKwlzeW1ib2xzID0gc3RhY2tfYnVm ZmVyX2FsbG9jMF9hcnJheShMTFZNT3JjQ1N5bWJvbE1hcFBhaXIsIExvb2t1cFNldFNpemUpOwog I2Vsc2UKLQlMTFZNT3JjQ1N5bWJvbE1hcFBhaXJzIHN5bWJvbHMgPSBwYWxsb2MwX2FycmF5KExM Vk1KSVRDU3ltYm9sTWFwUGFpciwgTG9va3VwU2V0U2l6ZSk7CisJc3ltYm9scyA9IHN0YWNrX2J1 ZmZlcl9hbGxvYzBfYXJyYXkoTExWTUpJVENTeW1ib2xNYXBQYWlyLCBMb29rdXBTZXRTaXplKTsK ICNlbmRpZgotCUxMVk1FcnJvclJlZiBlcnJvcjsKLQlMTFZNT3JjTWF0ZXJpYWxpemF0aW9uVW5p dFJlZiBtdTsKIAogCWZvciAoaW50IGkgPSAwOyBpIDwgTG9va3VwU2V0U2l6ZTsgaSsrKQogCXsK QEAgLTExNDksNyArMTE1Niw3IEBAIGxsdm1fcmVzb2x2ZV9zeW1ib2xzKExMVk1PcmNEZWZpbml0 aW9uR2VuZXJhdG9yUmVmIEdlbmVyYXRvck9iaiwgdm9pZCAqQ3R4LAogCWlmIChlcnJvciAhPSBM TFZNRXJyb3JTdWNjZXNzKQogCQlMTFZNT3JjRGlzcG9zZU1hdGVyaWFsaXphdGlvblVuaXQobXUp OwogCi0JcGZyZWUoc3ltYm9scyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUoc3ltYm9scyk7CiAKIAly ZXR1cm4gZXJyb3I7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0 X2V4cHIuYyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCmluZGV4IDY1MGYx ZDQyYTkzLi40MTFlNDc0NmVlOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2 bWppdF9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKQEAg LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJ1dGlscy9mbWdydGFiLmgiCiAjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1 dGlscy9zdGFja19idWZmZXIuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNs dWRlICJ1dGlscy90eXBjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3htbC5oIgpAQCAtMzA2Mywx MiArMzA2NCwxNCBAQCBidWlsZF9FdmFsWEZ1bmNJbnQoTExWTUJ1aWxkZXJSZWYgYiwgTExWTU1v ZHVsZVJlZiBtb2QsIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAogCWludAkJCWFyZ25vID0gMDsKIAlM TFZNVmFsdWVSZWYgdl9yZXQ7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJLyogY2hl YXAgcHJlLWNoZWNrIGFzIGxsdm0ganVzdCBhc3NlcnRzIG91dCAqLwogCWlmIChMTFZNQ291bnRQ YXJhbXModl9mbikgIT0gKG5hcmdzICsgMikpCiAJCWVsb2coRVJST1IsICJwYXJhbWV0ZXIgbWlz bWF0Y2g6ICVzIGV4cGVjdHMgJWQgcGFzc2VkICVkIiwKIAkJCSBmdW5jbmFtZSwgTExWTUNvdW50 UGFyYW1zKHZfZm4pLCBuYXJncyArIDIpOwogCi0JcGFyYW1zID0gcGFsbG9jX2FycmF5KExMVk1W YWx1ZVJlZiwgKDIgKyBuYXJncykpOworCXBhcmFtcyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJh eShMTFZNVmFsdWVSZWYsICgyICsgbmFyZ3MpKTsKIAogCXBhcmFtc1thcmdubysrXSA9IHZfc3Rh dGU7CiAJcGFyYW1zW2FyZ25vKytdID0gbF9wdHJfY29uc3Qob3AsIGxfcHRyKFN0cnVjdEV4cHJF dmFsU3RlcCkpOwpAQCAtMzA3OCw3ICszMDgxLDcgQEAgYnVpbGRfRXZhbFhGdW5jSW50KExMVk1C dWlsZGVyUmVmIGIsIExMVk1Nb2R1bGVSZWYgbW9kLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIAog CXZfcmV0ID0gbF9jYWxsKGIsIExMVk1HZXRGdW5jdGlvblR5cGUodl9mbiksIHZfZm4sIHBhcmFt cywgYXJnbm8sICIiKTsKIAotCXBmcmVlKHBhcmFtcyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUocGFy YW1zKTsKIAogCXJldHVybiB2X3JldDsKIH0KLS0gCjIuNTMuMAoK --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0011-Use-stack-buffer-in-transam-xact.c.patch" Content-Disposition: attachment; filename="v2-0011-Use-stack-buffer-in-transam-xact.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt65jd11 RnJvbSA0YTNjNTRjYWRkNDU5ZDRhYzZiNjVlN2IzMjM3NzVkODQ3MTQ2NDliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTAgTWFyIDIwMjYgMTc6Mzc6MjkgKzEzMDAKU3ViamVjdDogW1BBVENIIHYy IDExLzE5XSBVc2Ugc3RhY2sgYnVmZmVyIGluIHRyYW5zYW0veGFjdC5jLgoKLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgfCAxMyArKysrKysrKysrLS0tCiAxIGZpbGUgY2hh bmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94YWN0LmMKaW5kZXggYWFmYzUzZTAxNjQuLjkxYWRjZWQ1ZmI5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGFjdC5jCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKICNpbmNsdWRlICJ1dGlscy9yZWxtYXBwZXIuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdy LmgiCisjaW5jbHVkZSAidXRpbHMvc3RhY2tfYnVmZmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvdGlt ZW91dC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3R5 cGNhY2hlLmgiCkBAIC02NDAsNiArNjQxLDggQEAgQXNzaWduVHJhbnNhY3Rpb25JZChUcmFuc2Fj dGlvblN0YXRlIHMpCiAJUmVzb3VyY2VPd25lciBjdXJyZW50T3duZXI7CiAJYm9vbAkJbG9nX3Vu a25vd25fdG9wID0gZmFsc2U7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJLyogQXNz ZXJ0IHRoYXQgY2FsbGVyIGRpZG4ndCBzY3JldyB1cCAqLwogCUFzc2VydCghRnVsbFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKHMtPmZ1bGxUcmFuc2FjdGlvbklkKSk7CiAJQXNzZXJ0KHMtPnN0YXRlID09 IFRSQU5TX0lOUFJPR1JFU1MpOwpAQCAtNjY1LDcgKzY2OCw3IEBAIEFzc2lnblRyYW5zYWN0aW9u SWQoVHJhbnNhY3Rpb25TdGF0ZSBzKQogCQlUcmFuc2FjdGlvblN0YXRlICpwYXJlbnRzOwogCQlz aXplX3QJCXBhcmVudE9mZnNldCA9IDA7CiAKLQkJcGFyZW50cyA9IHBhbGxvY19hcnJheShUcmFu c2FjdGlvblN0YXRlLCBzLT5uZXN0aW5nTGV2ZWwpOworCQlwYXJlbnRzID0gc3RhY2tfYnVmZmVy X2FsbG9jX2FycmF5KFRyYW5zYWN0aW9uU3RhdGUsIHMtPm5lc3RpbmdMZXZlbCk7CiAJCXdoaWxl IChwICE9IE5VTEwgJiYgIUZ1bGxUcmFuc2FjdGlvbklkSXNWYWxpZChwLT5mdWxsVHJhbnNhY3Rp b25JZCkpCiAJCXsKIAkJCXBhcmVudHNbcGFyZW50T2Zmc2V0KytdID0gcDsKQEAgLTY3OSw3ICs2 ODIsNyBAQCBBc3NpZ25UcmFuc2FjdGlvbklkKFRyYW5zYWN0aW9uU3RhdGUgcykKIAkJd2hpbGUg KHBhcmVudE9mZnNldCAhPSAwKQogCQkJQXNzaWduVHJhbnNhY3Rpb25JZChwYXJlbnRzWy0tcGFy ZW50T2Zmc2V0XSk7CiAKLQkJcGZyZWUocGFyZW50cyk7CisJCXN0YWNrX2J1ZmZlcl9mcmVlKHBh cmVudHMpOwogCX0KIAogCS8qCkBAIC01NTY4LDYgKzU1NzEsOCBAQCBTZXJpYWxpemVUcmFuc2Fj dGlvblN0YXRlKFNpemUgbWF4c2l6ZSwgY2hhciAqc3RhcnRfYWRkcmVzcykKIAlUcmFuc2FjdGlv bklkICp3b3Jrc3BhY2U7CiAJU2VyaWFsaXplZFRyYW5zYWN0aW9uU3RhdGUgKnJlc3VsdDsKIAor CURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAlyZXN1bHQgPSAoU2VyaWFsaXplZFRyYW5zYWN0 aW9uU3RhdGUgKikgc3RhcnRfYWRkcmVzczsKIAogCXJlc3VsdC0+eGFjdElzb0xldmVsID0gWGFj dElzb0xldmVsOwpAQCAtNTYwNCw3ICs1NjA5LDcgQEAgU2VyaWFsaXplVHJhbnNhY3Rpb25TdGF0 ZShTaXplIG1heHNpemUsIGNoYXIgKnN0YXJ0X2FkZHJlc3MpCiAJCSAgIDw9IG1heHNpemUpOwog CiAJLyogQ29weSB0aGVtIHRvIG91ciBzY3JhdGNoIHNwYWNlLiAqLwotCXdvcmtzcGFjZSA9IHBh bGxvYyhueGlkcyAqIHNpemVvZihUcmFuc2FjdGlvbklkKSk7CisJd29ya3NwYWNlID0gc3RhY2tf YnVmZmVyX2FsbG9jX2FycmF5KFRyYW5zYWN0aW9uSWQsIG54aWRzKTsKIAlmb3IgKHMgPSBDdXJy ZW50VHJhbnNhY3Rpb25TdGF0ZTsgcyAhPSBOVUxMOyBzID0gcy0+cGFyZW50KQogCXsKIAkJaWYg KEZ1bGxUcmFuc2FjdGlvbklkSXNWYWxpZChzLT5mdWxsVHJhbnNhY3Rpb25JZCkpCkBAIC01NjIz LDYgKzU2MjgsOCBAQCBTZXJpYWxpemVUcmFuc2FjdGlvblN0YXRlKFNpemUgbWF4c2l6ZSwgY2hh ciAqc3RhcnRfYWRkcmVzcykKIAlyZXN1bHQtPm5QYXJhbGxlbEN1cnJlbnRYaWRzID0gbnhpZHM7 CiAJbWVtY3B5KCZyZXN1bHQtPnBhcmFsbGVsQ3VycmVudFhpZHNbMF0sIHdvcmtzcGFjZSwKIAkJ ICAgbnhpZHMgKiBzaXplb2YoVHJhbnNhY3Rpb25JZCkpOworCisJc3RhY2tfYnVmZmVyX2ZyZWUo d29ya3NwYWNlKTsKIH0KIAogLyoKLS0gCjIuNTMuMAoK --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0012-Use-stack-buffer-in-a-few-places-in-the-parser.patch" Content-Disposition: attachment; filename="v2-0012-Use-stack-buffer-in-a-few-places-in-the-parser.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt67zl12 RnJvbSBlMDc1OTM0NzNmYWQwNDJjZmE5ZGE2ZjViNTY1NDQzNzI4YWY3NjU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTAgTWFyIDIwMjYgMTc6NDE6NDkgKzEzMDAKU3ViamVjdDogW1BBVENIIHYy IDEyLzE5XSBVc2Ugc3RhY2sgYnVmZmVyIGluIGEgZmV3IHBsYWNlcyBpbiB0aGUgcGFyc2VyLgoK TWVjaGFuaWNhbCBDIHN0cmluZyBjb252ZXJzaW9ucyBhbmQgYSBzbWFsbCB0ZW1wb3JhcnkgYXJy YXkuCi0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jIHwgNyArKysrKy0tCiBz cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jICAgfCA3ICsrKysrLS0KIHNyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV90eXBlLmMgICB8IDcgKysrKystLQogMyBmaWxlcyBjaGFuZ2VkLCAxNSBp bnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9jbGF1c2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwpp bmRleCAwNmI2NWQ0YTYwNS4uNzM2MGRhMmIwNGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9jbGF1c2UuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNl LmMKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJ1dGlscy9jYXRjYWNoZS5oIgogI2luY2x1 ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUg InV0aWxzL3N0YWNrX2J1ZmZlci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKIApA QCAtNjkzLDYgKzY5NCw4IEBAIHRyYW5zZm9ybVJhbmdlVGFibGVGdW5jKFBhcnNlU3RhdGUgKnBz dGF0ZSwgUmFuZ2VUYWJsZUZ1bmMgKnJ0ZikKIAljaGFyCSAgKipuYW1lczsKIAlpbnQJCQljb2xu bzsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAkvKgogCSAqIEN1cnJlbnRseSB3ZSBv bmx5IHN1cHBvcnQgWE1MVEFCTEUgaGVyZS4gIFNlZSB0cmFuc2Zvcm1Kc29uVGFibGUoKSBmb3IK IAkgKiBKU09OX1RBQkxFIHN1cHBvcnQuCkBAIC03MzMsNyArNzM2LDcgQEAgdHJhbnNmb3JtUmFu Z2VUYWJsZUZ1bmMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSYW5nZVRhYmxlRnVuYyAqcnRmKQogCXRm LT5vcmRpbmFsaXR5Y29sID0gLTE7CiAKIAkvKiBQcm9jZXNzIGNvbHVtbiBzcGVjcyAqLwotCW5h bWVzID0gcGFsbG9jX2FycmF5KGNoYXIgKiwgbGlzdF9sZW5ndGgocnRmLT5jb2x1bW5zKSk7CisJ bmFtZXMgPSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXkoY2hhciAqLCBsaXN0X2xlbmd0aChydGYt PmNvbHVtbnMpKTsKIAogCWNvbG5vID0gMDsKIAlmb3JlYWNoKGNvbCwgcnRmLT5jb2x1bW5zKQpA QCAtODI1LDcgKzgyOCw3IEBAIHRyYW5zZm9ybVJhbmdlVGFibGVGdW5jKFBhcnNlU3RhdGUgKnBz dGF0ZSwgUmFuZ2VUYWJsZUZ1bmMgKnJ0ZikKIAogCQljb2xubysrOwogCX0KLQlwZnJlZShuYW1l cyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUobmFtZXMpOwogCiAJLyogTmFtZXNwYWNlcywgaWYgYW55 LCBhbHNvIG5lZWQgdG8gYmUgdHJhbnNmb3JtZWQgKi8KIAlpZiAocnRmLT5uYW1lc3BhY2VzICE9 IE5JTCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IDI0ZjY3NDU5MjNiLi4yZjYzY2U1NWEy MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi cGFyc2VyL3BhcnNlX3R5cGUuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1 ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3N0YWNrX2J1ZmZlci5oIgog I2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKIApAQCAtMTc1OSwxNSArMTc2MCwxNyBAQCBm dW5jX2dldF9kZXRhaWwoTGlzdCAqZnVuY25hbWUsCiAJCQljaGFyCSAgICpzdHI7CiAJCQlMaXN0 CSAgICpkZWZhdWx0czsKIAorCQkJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCQkJLyogc2hv dWxkbid0IGhhcHBlbiwgRnVuY25hbWVHZXRDYW5kaWRhdGVzIG1lc3NlZCB1cCAqLwogCQkJaWYg KGJlc3RfY2FuZGlkYXRlLT5uZGFyZ3MgPiBwZm9ybS0+cHJvbmFyZ2RlZmF1bHRzKQogCQkJCWVs b2coRVJST1IsICJub3QgZW5vdWdoIGRlZmF1bHQgYXJndW1lbnRzIik7CiAKIAkJCXByb2FyZ2Rl ZmF1bHRzID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChQUk9DT0lELCBmdHVwLAogCQkJCQkJCQkJ CQkJCUFudW1fcGdfcHJvY19wcm9hcmdkZWZhdWx0cyk7Ci0JCQlzdHIgPSBUZXh0RGF0dW1HZXRD U3RyaW5nKHByb2FyZ2RlZmF1bHRzKTsKKwkJCXN0ciA9IHN0YWNrX2J1ZmZlcl90ZXh0X2RhdHVt X3RvX2NzdHJpbmcocHJvYXJnZGVmYXVsdHMpOwogCQkJZGVmYXVsdHMgPSBjYXN0Tm9kZShMaXN0 LCBzdHJpbmdUb05vZGUoc3RyKSk7Ci0JCQlwZnJlZShzdHIpOworCQkJc3RhY2tfYnVmZmVyX2Zy ZWUoc3RyKTsKIAogCQkJLyogRGVsZXRlIGFueSB1bnVzZWQgZGVmYXVsdHMgZnJvbSB0aGUgcmV0 dXJuZWQgbGlzdCAqLwogCQkJaWYgKGJlc3RfY2FuZGlkYXRlLT5hcmdudW1iZXJzICE9IE5VTEwp CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3R5cGUuYwppbmRleCBiYjdlY2NkZTlmZC4uMzUyMzQzMzEwNzAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90eXBlLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3R5cGUuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgInV0aWxz L2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zdGFja19idWZmZXIuaCIKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgogCiBzdGF0aWMgaW50MzIgdHlwZW5hbWVUeXBlTW9kKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgY29uc3QgVHlwZU5hbWUgKnR5cGVOYW1lLApAQCAtMzM5LDYgKzM0MCw4IEBA IHR5cGVuYW1lVHlwZU1vZChQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IFR5cGVOYW1lICp0eXBl TmFtZSwgVHlwZSB0eXApCiAJQXJyYXlUeXBlICAqYXJydHlwbW9kOwogCVBhcnNlQ2FsbGJhY2tT dGF0ZSBwY2JzdGF0ZTsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAkvKiBSZXR1cm4g cHJlc3BlY2lmaWVkIHR5cG1vZCBpZiBubyB0eXBtb2QgZXhwcmVzc2lvbnMgKi8KIAlpZiAodHlw ZU5hbWUtPnR5cG1vZHMgPT0gTklMKQogCQlyZXR1cm4gdHlwZU5hbWUtPnR5cGVtb2Q7CkBAIC0z NjksNyArMzcyLDcgQEAgdHlwZW5hbWVUeXBlTW9kKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3Qg VHlwZU5hbWUgKnR5cGVOYW1lLCBUeXBlIHR5cCkKIAkgKiBDdXJyZW50bHksIHdlIGFsbG93IHNp bXBsZSBudW1lcmljIGNvbnN0YW50cywgc3RyaW5nIGxpdGVyYWxzLCBhbmQKIAkgKiBpZGVudGlm aWVyczsgcG9zc2libHkgdGhpcyBsaXN0IGNvdWxkIGJlIGV4dGVuZGVkLgogCSAqLwotCWRhdHVt cyA9IHBhbGxvY19hcnJheShEYXR1bSwgbGlzdF9sZW5ndGgodHlwZU5hbWUtPnR5cG1vZHMpKTsK KwlkYXR1bXMgPSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXkoRGF0dW0sIGxpc3RfbGVuZ3RoKHR5 cGVOYW1lLT50eXBtb2RzKSk7CiAJbiA9IDA7CiAJZm9yZWFjaChsLCB0eXBlTmFtZS0+dHlwbW9k cykKIAl7CkBAIC00MjEsNyArNDI0LDcgQEAgdHlwZW5hbWVUeXBlTW9kKFBhcnNlU3RhdGUgKnBz dGF0ZSwgY29uc3QgVHlwZU5hbWUgKnR5cGVOYW1lLCBUeXBlIHR5cCkKIAogCWNhbmNlbF9wYXJz ZXJfZXJycG9zaXRpb25fY2FsbGJhY2soJnBjYnN0YXRlKTsKIAotCXBmcmVlKGRhdHVtcyk7CisJ c3RhY2tfYnVmZmVyX2ZyZWUoZGF0dW1zKTsKIAlwZnJlZShhcnJ0eXBtb2QpOwogCiAJcmV0dXJu IHJlc3VsdDsKLS0gCjIuNTMuMAoK --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0013-Use-stack-buffer-in-fmgr.c.patch" Content-Disposition: attachment; filename="v2-0013-Use-stack-buffer-in-fmgr.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt6ac713 RnJvbSA2NzRiMzU0ZGMxMjBlM2ZkOTM4YzJiOWY2ZjhhOGRiYjM2NGM4ZWQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTAgTWFyIDIwMjYgMTc6NDI6NDYgKzEzMDAKU3ViamVjdDogW1BBVENIIHYy IDEzLzE5XSBVc2Ugc3RhY2sgYnVmZmVyIGluIGZtZ3IuYy4KCk1lY2hhbmljYWwgQyBzdHJpbmcg Y29udmVyc2lvbnMuCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMgfCAxNyArKysr KysrKysrKy0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDYgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMgYi9zcmMv YmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYwppbmRleCA0ZTI2ZGY3YzYzYS4uMTYxNGE2ODM4Nzcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAidXRpbHMv Zm1ncnRhYi5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3N0YWNrX2J1ZmZlci5oIgogI2luY2x1ZGUgInV0aWxz L3N5c2NhY2hlLmgiCiAKIC8qCkBAIC0xNTQsNiArMTU1LDggQEAgZm1ncl9pbmZvX2N4dF9zZWN1 cml0eShPaWQgZnVuY3Rpb25JZCwgRm1nckluZm8gKmZpbmZvLCBNZW1vcnlDb250ZXh0IG1jeHQs CiAJRGF0dW0JCXByb3NyY2RhdHVtOwogCWNoYXIJICAgKnByb3NyYzsKIAorCURFQ0xBUkVfU1RB Q0tfQlVGRkVSKCk7CisKIAkvKgogCSAqIGZuX29pZCAqbXVzdCogYmUgZmlsbGVkIGluIGxhc3Qu ICBTb21lIGNvZGUgYXNzdW1lcyB0aGF0IGlmIGZuX29pZCBpcwogCSAqIHZhbGlkLCB0aGUgd2hv bGUgc3RydWN0IGlzIHZhbGlkLiAgU29tZSBGbWdySW5mbyBzdHJ1Y3QncyBkbyBzdXJ2aXZlCkBA IC0yMjksMTQgKzIzMiwxNCBAQCBmbWdyX2luZm9fY3h0X3NlY3VyaXR5KE9pZCBmdW5jdGlvbklk LCBGbWdySW5mbyAqZmluZm8sIE1lbW9yeUNvbnRleHQgbWN4dCwKIAkJCSAqLwogCQkJcHJvc3Jj ZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKFBST0NPSUQsIHByb2NlZHVyZVR1cGxlLAog CQkJCQkJCQkJCQkJIEFudW1fcGdfcHJvY19wcm9zcmMpOwotCQkJcHJvc3JjID0gVGV4dERhdHVt R2V0Q1N0cmluZyhwcm9zcmNkYXR1bSk7CisJCQlwcm9zcmMgPSBzdGFja19idWZmZXJfdGV4dF9k YXR1bV90b19jc3RyaW5nKHByb3NyY2RhdHVtKTsKIAkJCWZicCA9IGZtZ3JfbG9va3VwQnlOYW1l KHByb3NyYyk7CiAJCQlpZiAoZmJwID09IE5VTEwpCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0ZVTkNUSU9OKSwKIAkJCQkJCSBlcnJtc2coImlu dGVybmFsIGZ1bmN0aW9uIFwiJXNcIiBpcyBub3QgaW4gaW50ZXJuYWwgbG9va3VwIHRhYmxlIiwK IAkJCQkJCQkJcHJvc3JjKSkpOwotCQkJcGZyZWUocHJvc3JjKTsKKwkJCXN0YWNrX2J1ZmZlcl9m cmVlKHByb3NyYyk7CiAJCQkvKiBTaG91bGQgd2UgY2hlY2sgdGhhdCBuYXJncywgc3RyaWN0LCBy ZXRzZXQgbWF0Y2ggdGhlIHRhYmxlPyAqLwogCQkJZmluZm8tPmZuX2FkZHIgPSBmYnAtPmZ1bmM7 CiAJCQkvKiBub3RlIHRoaXMgcG9saWN5IGlzIGFsc28gYXNzdW1lZCBpbiBmYXN0IHBhdGggYWJv dmUgKi8KQEAgLTM3MCw2ICszNzMsOCBAQCBmbWdyX2luZm9fQ19sYW5nKE9pZCBmdW5jdGlvbklk LCBGbWdySW5mbyAqZmluZm8sIEhlYXBUdXBsZSBwcm9jZWR1cmVUdXBsZSkKIAkJCQkgICAqcHJv Ymluc3RyaW5nOwogCQl2b2lkCSAgICpsaWJyYXJ5aGFuZGxlOwogCisJCURFQ0xBUkVfU1RBQ0tf QlVGRkVSKCk7CisKIAkJLyoKIAkJICogR2V0IHByb3NyYyBhbmQgcHJvYmluIHN0cmluZ3MgKGxp bmsgc3ltYm9sIGFuZCBsaWJyYXJ5IGZpbGVuYW1lKS4KIAkJICogV2hpbGUgaW4gZ2VuZXJhbCB0 aGVzZSBjb2x1bW5zIG1pZ2h0IGJlIG51bGwsIHRoYXQncyBub3QgYWxsb3dlZApAQCAtMzc3LDEx ICszODIsMTEgQEAgZm1ncl9pbmZvX0NfbGFuZyhPaWQgZnVuY3Rpb25JZCwgRm1nckluZm8gKmZp bmZvLCBIZWFwVHVwbGUgcHJvY2VkdXJlVHVwbGUpCiAJCSAqLwogCQlwcm9zcmNhdHRyID0gU3lz Q2FjaGVHZXRBdHRyTm90TnVsbChQUk9DT0lELCBwcm9jZWR1cmVUdXBsZSwKIAkJCQkJCQkJCQkJ QW51bV9wZ19wcm9jX3Byb3NyYyk7Ci0JCXByb3NyY3N0cmluZyA9IFRleHREYXR1bUdldENTdHJp bmcocHJvc3JjYXR0cik7CisJCXByb3NyY3N0cmluZyA9IHN0YWNrX2J1ZmZlcl90ZXh0X2RhdHVt X3RvX2NzdHJpbmcocHJvc3JjYXR0cik7CiAKIAkJcHJvYmluYXR0ciA9IFN5c0NhY2hlR2V0QXR0 ck5vdE51bGwoUFJPQ09JRCwgcHJvY2VkdXJlVHVwbGUsCiAJCQkJCQkJCQkJCUFudW1fcGdfcHJv Y19wcm9iaW4pOwotCQlwcm9iaW5zdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHByb2JpbmF0 dHIpOworCQlwcm9iaW5zdHJpbmcgPSBzdGFja19idWZmZXJfdGV4dF9kYXR1bV90b19jc3RyaW5n KHByb2JpbmF0dHIpOwogCiAJCS8qIExvb2sgdXAgdGhlIGZ1bmN0aW9uIGl0c2VsZiAqLwogCQl1 c2VyX2ZuID0gbG9hZF9leHRlcm5hbF9mdW5jdGlvbihwcm9iaW5zdHJpbmcsIHByb3NyY3N0cmlu ZywgdHJ1ZSwKQEAgLTM5Myw4ICszOTgsOCBAQCBmbWdyX2luZm9fQ19sYW5nKE9pZCBmdW5jdGlv bklkLCBGbWdySW5mbyAqZmluZm8sIEhlYXBUdXBsZSBwcm9jZWR1cmVUdXBsZSkKIAkJLyogQ2Fj aGUgdGhlIGFkZHJlc3NlcyBmb3IgbGF0ZXIgY2FsbHMgKi8KIAkJcmVjb3JkX0NfZnVuYyhwcm9j ZWR1cmVUdXBsZSwgdXNlcl9mbiwgaW5mb3JlYyk7CiAKLQkJcGZyZWUocHJvc3Jjc3RyaW5nKTsK LQkJcGZyZWUocHJvYmluc3RyaW5nKTsKKwkJc3RhY2tfYnVmZmVyX2ZyZWUocHJvc3Jjc3RyaW5n KTsKKwkJc3RhY2tfYnVmZmVyX2ZyZWUocHJvYmluc3RyaW5nKTsKIAl9CiAKIAlzd2l0Y2ggKGlu Zm9yZWMtPmFwaV92ZXJzaW9uKQotLSAKMi41My4wCgo= --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0014-Use-stack-buffer-in-logical-replication.patch" Content-Disposition: attachment; filename="v2-0014-Use-stack-buffer-in-logical-replication.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt6cmo14 RnJvbSBiOTRmZWQ1ZWE2ODljNjgwMzI5YTZiNDM2ZTVlMTYxNzFlMGE1YzdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMiBNYXIgMjAyNiAwNDoxOTo1NCArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MTQvMTldIFVzZSBzdGFjayBidWZmZXIgaW4gbG9naWNhbCByZXBsaWNhdGlvbi4KCk1lY2hhbmlj YWwgY2hhbmdlcyB0byB0ZW1wb3JhcnkgZGF0dW0gYW5kIG51bGwgYXJyYXlzLgotLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIHwgMTYgKysrKysrKysr LS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgICAg fCAxMCArKysrKysrKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDkgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9y ZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYwppbmRleCA0YzIzMGJjYzhlNC4uNWYwODg4ZmMxNTkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0xMTMsNiArMTEzLDcg QEAKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgog I2luY2x1ZGUgInV0aWxzL3JlbGZpbGVudW1iZXJtYXAuaCIKKyNpbmNsdWRlICJ1dGlscy9zdGFj a19idWZmZXIuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKIC8qCkBAIC01MDky LDYgKzUwOTMsOCBAQCBSZW9yZGVyQnVmZmVyVG9hc3RSZXBsYWNlKFJlb3JkZXJCdWZmZXIgKnJi LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJSGVhcFR1cGxlCW5ld3R1cDsKIAlTaXplCQlvbGRf c2l6ZTsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAkvKiBubyB0b2FzdCB0dXBsZXMg Y2hhbmdlZCAqLwogCWlmICh0eG4tPnRvYXN0X2hhc2ggPT0gTlVMTCkKIAkJcmV0dXJuOwpAQCAt NTEyMiwxMCArNTEyNSw5IEBAIFJlb3JkZXJCdWZmZXJUb2FzdFJlcGxhY2UoUmVvcmRlckJ1ZmZl ciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAogCXRvYXN0X2Rlc2MgPSBSZWxhdGlvbkdl dERlc2NyKHRvYXN0X3JlbCk7CiAKLQkvKiBzaG91bGQgd2UgYWxsb2NhdGUgZnJvbSBzdGFjayBp bnN0ZWFkPyAqLwotCWF0dHJzID0gcGFsbG9jMF9hcnJheShEYXR1bSwgZGVzYy0+bmF0dHMpOwot CWlzbnVsbCA9IHBhbGxvYzBfYXJyYXkoYm9vbCwgZGVzYy0+bmF0dHMpOwotCWZyZWUgPSBwYWxs b2MwX2FycmF5KGJvb2wsIGRlc2MtPm5hdHRzKTsKKwlhdHRycyA9IHN0YWNrX2J1ZmZlcl9hbGxv YzBfYXJyYXkoRGF0dW0sIGRlc2MtPm5hdHRzKTsKKwlpc251bGwgPSBzdGFja19idWZmZXJfYWxs b2MwX2FycmF5KGJvb2wsIGRlc2MtPm5hdHRzKTsKKwlmcmVlID0gc3RhY2tfYnVmZmVyX2FsbG9j MF9hcnJheShib29sLCBkZXNjLT5uYXR0cyk7CiAKIAluZXd0dXAgPSBjaGFuZ2UtPmRhdGEudHAu bmV3dHVwbGU7CiAKQEAgLTUyNDcsOSArNTI0OSw5IEBAIFJlb3JkZXJCdWZmZXJUb2FzdFJlcGxh Y2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJaWYgKGZyZWVb bmF0dF0pCiAJCQlwZnJlZShEYXR1bUdldFBvaW50ZXIoYXR0cnNbbmF0dF0pKTsKIAl9Ci0JcGZy ZWUoYXR0cnMpOwotCXBmcmVlKGZyZWUpOwotCXBmcmVlKGlzbnVsbCk7CisJc3RhY2tfYnVmZmVy X2ZyZWUoYXR0cnMpOworCXN0YWNrX2J1ZmZlcl9mcmVlKGZyZWUpOworCXN0YWNrX2J1ZmZlcl9m cmVlKGlzbnVsbCk7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDAzMzg1ODc1MmQ5Li41 NDgyOGNiN2UwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBA IC0yOTQsNiArMjk0LDcgQEAKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGls cy9ybHMuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvc3Rh Y2tfYnVmZmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy91c2VyY29udGV4dC5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKQEAgLTk3Miwx NCArOTczLDE2IEBAIHNsb3RfZmlsbF9kZWZhdWx0cyhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJl bCwgRVN0YXRlICplc3RhdGUsCiAJRXhwclN0YXRlICoqZGVmZXhwcnM7CiAJRXhwckNvbnRleHQg KmVjb250ZXh0OwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCWVjb250ZXh0ID0gR2V0 UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpOwogCiAJLyogV2UgZ290IGFsbCB0aGUgZGF0YSB2 aWEgcmVwbGljYXRpb24sIG5vIG5lZWQgdG8gZXZhbHVhdGUgYW55dGhpbmcuICovCiAJaWYgKG51 bV9waHlzX2F0dHJzID09IHJlbC0+cmVtb3RlcmVsLm5hdHRzKQogCQlyZXR1cm47CiAKLQlkZWZt YXAgPSBwYWxsb2NfYXJyYXkoaW50LCBudW1fcGh5c19hdHRycyk7Ci0JZGVmZXhwcnMgPSBwYWxs b2NfYXJyYXkoRXhwclN0YXRlICosIG51bV9waHlzX2F0dHJzKTsKKwlkZWZtYXAgPSBzdGFja19i dWZmZXJfYWxsb2NfYXJyYXkoaW50LCBudW1fcGh5c19hdHRycyk7CisJZGVmZXhwcnMgPSBzdGFj a19idWZmZXJfYWxsb2NfYXJyYXkoRXhwclN0YXRlICosIG51bV9waHlzX2F0dHJzKTsKIAogCUFz c2VydChyZWwtPmF0dHJtYXAtPm1hcGxlbiA9PSBudW1fcGh5c19hdHRycyk7CiAJZm9yIChhdHRu dW0gPSAwOyBhdHRudW0gPCBudW1fcGh5c19hdHRyczsgYXR0bnVtKyspCkBAIC0xMDEwLDYgKzEw MTMsOSBAQCBzbG90X2ZpbGxfZGVmYXVsdHMoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwsIEVT dGF0ZSAqZXN0YXRlLAogCWZvciAoaSA9IDA7IGkgPCBudW1fZGVmYXVsdHM7IGkrKykKIAkJc2xv dC0+dHRzX3ZhbHVlc1tkZWZtYXBbaV1dID0KIAkJCUV4ZWNFdmFsRXhwcihkZWZleHByc1tpXSwg ZWNvbnRleHQsICZzbG90LT50dHNfaXNudWxsW2RlZm1hcFtpXV0pOworCisJc3RhY2tfYnVmZmVy X2ZyZWUoZGVmbWFwKTsKKwlzdGFja19idWZmZXJfZnJlZShkZWZleHBycyk7CiB9CiAKIC8qCi0t IAoyLjUzLjAKCg== --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0015-Use-stack-buffer-in-some-FDW-code.patch" Content-Disposition: attachment; filename="v2-0015-Use-stack-buffer-in-some-FDW-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt6ev615 RnJvbSBkY2MyZWI2OTNjNzA5MzY2MjdlOGM5YWYzMmI5M2JjYzM1ZDZjZDVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMiBNYXIgMjAyNiAwNDoyMTowMiArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MTUvMTldIFVzZSBzdGFjayBidWZmZXIgaW4gc29tZSBGRFcgY29kZS4KCk1lY2hhbmljYWwgY2hh bmdlcyB0byB0ZW1wb3JhcnkgZGF0dW0gYW5kIG51bGwgYXJyYXlzLgotLS0KIGNvbnRyaWIvZmls ZV9mZHcvZmlsZV9mZHcuYyAgICAgICAgIHwgMTEgKysrKysrKy0tLS0KIGNvbnRyaWIvcG9zdGdy ZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIHwgIDkgKysrKysrKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDE0 IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9maWxl X2Zkdy9maWxlX2Zkdy5jIGIvY29udHJpYi9maWxlX2Zkdy9maWxlX2Zkdy5jCmluZGV4IDMzYTM3 ZDgzMmNlLi5hNjk1OGQ2YTRjMCAxMDA2NDQKLS0tIGEvY29udHJpYi9maWxlX2Zkdy9maWxlX2Zk dy5jCisrKyBiL2NvbnRyaWIvZmlsZV9mZHcvZmlsZV9mZHcuYwpAQCAtNDAsNiArNDAsNyBAQAog I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5j bHVkZSAidXRpbHMvc2FtcGxpbmcuaCIKKyNpbmNsdWRlICJ1dGlscy9zdGFja19idWZmZXIuaCIK ICNpbmNsdWRlICJ1dGlscy92YXJsZW5hLmgiCiAKIFBHX01PRFVMRV9NQUdJQ19FWFQoCkBAIC0x MjAyLDEyICsxMjAzLDE0IEBAIGZpbGVfYWNxdWlyZV9zYW1wbGVfcm93cyhSZWxhdGlvbiBvbmVy ZWwsIGludCBlbGV2ZWwsCiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0ID0gQ3VycmVudE1lbW9y eUNvbnRleHQ7CiAJTWVtb3J5Q29udGV4dCB0dXBjb250ZXh0OwogCisJREVDTEFSRV9TVEFDS19C VUZGRVIoKTsKKwogCUFzc2VydChvbmVyZWwpOwogCUFzc2VydCh0YXJncm93cyA+IDApOwogCiAJ dHVwRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3Iob25lcmVsKTsKLQl2YWx1ZXMgPSAoRGF0dW0gKikg cGFsbG9jKHR1cERlc2MtPm5hdHRzICogc2l6ZW9mKERhdHVtKSk7Ci0JbnVsbHMgPSAoYm9vbCAq KSBwYWxsb2ModHVwRGVzYy0+bmF0dHMgKiBzaXplb2YoYm9vbCkpOworCXZhbHVlcyA9IHN0YWNr X2J1ZmZlcl9hbGxvY19hcnJheShEYXR1bSwgdHVwRGVzYy0+bmF0dHMpOworCW51bGxzID0gc3Rh Y2tfYnVmZmVyX2FsbG9jX2FycmF5KGJvb2wsIHR1cERlc2MtPm5hdHRzKTsKIAogCS8qIEZldGNo IG9wdGlvbnMgb2YgZm9yZWlnbiB0YWJsZSAqLwogCWZpbGVHZXRPcHRpb25zKFJlbGF0aW9uR2V0 UmVsaWQob25lcmVsKSwgJmZpbGVuYW1lLCAmaXNfcHJvZ3JhbSwgJm9wdGlvbnMpOwpAQCAtMTMy NCw4ICsxMzI3LDggQEAgZmlsZV9hY3F1aXJlX3NhbXBsZV9yb3dzKFJlbGF0aW9uIG9uZXJlbCwg aW50IGVsZXZlbCwKIAogCUVuZENvcHlGcm9tKGNzdGF0ZSk7CiAKLQlwZnJlZSh2YWx1ZXMpOwot CXBmcmVlKG51bGxzKTsKKwlzdGFja19idWZmZXJfZnJlZSh2YWx1ZXMpOworCXN0YWNrX2J1ZmZl cl9mcmVlKG51bGxzKTsKIAogCS8qCiAJICogRW1pdCBzb21lIGludGVyZXN0aW5nIHJlbGF0aW9u IGluZm8KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIv Y29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKaW5kZXggNjBkOTAzMjlhNjUuLmM4 MTdiNzE4NjE2IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcu YworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtNDgsNiArNDgs NyBAQAogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NhbXBsaW5nLmgi CiAjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlscy9zdGFja19idWZm ZXIuaCIKIAogUEdfTU9EVUxFX01BR0lDX0VYVCgKIAkJCQkJLm5hbWUgPSAicG9zdGdyZXNfZmR3 IiwKQEAgLTc1MDcsNiArNzUwOCw4IEBAIG1ha2VfdHVwbGVfZnJvbV9yZXN1bHRfcm93KFBHcmVz dWx0ICpyZXMsCiAJTGlzdENlbGwgICAqbGM7CiAJaW50CQkJajsKIAorCURFQ0xBUkVfU1RBQ0tf QlVGRkVSKCk7CisKIAlBc3NlcnQocm93IDwgUFFudHVwbGVzKHJlcykpOwogCiAJLyoKQEAgLTc1 MjgsOCArNzUzMSw4IEBAIG1ha2VfdHVwbGVfZnJvbV9yZXN1bHRfcm93KFBHcmVzdWx0ICpyZXMs CiAJCXR1cGRlc2MgPSBmc3N0YXRlLT5zcy5zc19TY2FuVHVwbGVTbG90LT50dHNfdHVwbGVEZXNj cmlwdG9yOwogCX0KIAotCXZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2MwKHR1cGRlc2MtPm5hdHRz ICogc2l6ZW9mKERhdHVtKSk7Ci0JbnVsbHMgPSAoYm9vbCAqKSBwYWxsb2ModHVwZGVzYy0+bmF0 dHMgKiBzaXplb2YoYm9vbCkpOworCXZhbHVlcyA9IHN0YWNrX2J1ZmZlcl9hbGxvYzBfYXJyYXko RGF0dW0sIHR1cGRlc2MtPm5hdHRzKTsKKwludWxscyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJh eShib29sLCB0dXBkZXNjLT5uYXR0cyk7CiAJLyogSW5pdGlhbGl6ZSB0byBudWxscyBmb3IgYW55 IGNvbHVtbnMgbm90IHByZXNlbnQgaW4gcmVzdWx0ICovCiAJbWVtc2V0KG51bGxzLCB0cnVlLCB0 dXBkZXNjLT5uYXR0cyAqIHNpemVvZihib29sKSk7CiAKQEAgLTc2MzEsNiArNzYzNCw4IEBAIG1h a2VfdHVwbGVfZnJvbV9yZXN1bHRfcm93KFBHcmVzdWx0ICpyZXMsCiAJSGVhcFR1cGxlSGVhZGVy U2V0Q21pbih0dXBsZS0+dF9kYXRhLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CiAKIAkvKiBDbGVh biB1cCAqLworCXN0YWNrX2J1ZmZlcl9mcmVlKHZhbHVlcyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUo bnVsbHMpOwogCU1lbW9yeUNvbnRleHRSZXNldCh0ZW1wX2NvbnRleHQpOwogCiAJcmV0dXJuIHR1 cGxlOwotLSAKMi41My4wCgo= --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0016-Use-stack-buffer-in-partition-pruning.patch" Content-Disposition: attachment; filename="v2-0016-Use-stack-buffer-in-partition-pruning.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt6m3j16 RnJvbSA2ZTg5NjhjYmFkZWVjNjUxOTYzZWQ5YjMxMDU1MTY4NTc5OWJmMzY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMiBNYXIgMjAyNiAwNDo0NDozMyArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MTYvMTldIFVzZSBzdGFjayBidWZmZXIgaW4gcGFydGl0aW9uIHBydW5pbmcuCgotLS0KIHNyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgfCA2MCArKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0KIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyAgfCAxNyArKysr Ky0tLQogMiBmaWxlcyBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIvc3Jj L2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCAwY2EzMTJhYzI3ZC4uZmMw YWU0ODlhYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRz LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwpAQCAtMzksNiAr MzksNyBAQAogI2luY2x1ZGUgInV0aWxzL3BhcnRjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3J1 bGV1dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9z dGFja19idWZmZXIuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCiAvKgpAQCAtMzU0 LDEzICszNTUsMTUgQEAgY3JlYXRlX2hhc2hfYm91bmRzKFBhcnRpdGlvbkJvdW5kU3BlYyAqKmJv dW5kc3BlY3MsIGludCBucGFydHMsCiAJaW50CQkJZ3JlYXRlc3RfbW9kdWx1czsKIAlEYXR1bQkg ICAqYm91bmREYXR1bXM7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJYm91bmRpbmZv ID0gcGFsbG9jMF9vYmplY3QoUGFydGl0aW9uQm91bmRJbmZvRGF0YSk7CiAJYm91bmRpbmZvLT5z dHJhdGVneSA9IGtleS0+c3RyYXRlZ3k7CiAJLyogTm8gc3BlY2lhbCBoYXNoIHBhcnRpdGlvbnMu ICovCiAJYm91bmRpbmZvLT5udWxsX2luZGV4ID0gLTE7CiAJYm91bmRpbmZvLT5kZWZhdWx0X2lu ZGV4ID0gLTE7CiAKLQloYm91bmRzID0gcGFsbG9jX2FycmF5KFBhcnRpdGlvbkhhc2hCb3VuZCwg bnBhcnRzKTsKKwloYm91bmRzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KFBhcnRpdGlvbkhh c2hCb3VuZCwgbnBhcnRzKTsKIAogCS8qIENvbnZlcnQgZnJvbSBub2RlIHRvIHRoZSBpbnRlcm5h bCByZXByZXNlbnRhdGlvbiAqLwogCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKQEAgLTQy Miw3ICs0MjUsNyBAQCBjcmVhdGVfaGFzaF9ib3VuZHMoUGFydGl0aW9uQm91bmRTcGVjICoqYm91 bmRzcGVjcywgaW50IG5wYXJ0cywKIAogCQkoKm1hcHBpbmcpW2hib3VuZHNbaV0uaW5kZXhdID0g aTsKIAl9Ci0JcGZyZWUoaGJvdW5kcyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUoaGJvdW5kcyk7CiAK IAlyZXR1cm4gYm91bmRpbmZvOwogfQpAQCAtNDcxLDYgKzQ3NCw4IEBAIGNyZWF0ZV9saXN0X2Jv dW5kcyhQYXJ0aXRpb25Cb3VuZFNwZWMgKipib3VuZHNwZWNzLCBpbnQgbnBhcnRzLAogCWludAkJ CW51bGxfaW5kZXggPSAtMTsKIAlEYXR1bQkgICAqYm91bmREYXR1bXM7CiAKKwlERUNMQVJFX1NU QUNLX0JVRkZFUigpOworCiAJYm91bmRpbmZvID0gcGFsbG9jMF9vYmplY3QoUGFydGl0aW9uQm91 bmRJbmZvRGF0YSk7CiAJYm91bmRpbmZvLT5zdHJhdGVneSA9IGtleS0+c3RyYXRlZ3k7CiAJLyog V2lsbCBiZSBzZXQgY29ycmVjdGx5IGJlbG93LiAqLwpAQCAtNDc5LDcgKzQ4NCw3IEBAIGNyZWF0 ZV9saXN0X2JvdW5kcyhQYXJ0aXRpb25Cb3VuZFNwZWMgKipib3VuZHNwZWNzLCBpbnQgbnBhcnRz LAogCiAJbmRhdHVtcyA9IGdldF9ub25fbnVsbF9saXN0X2RhdHVtX2NvdW50KGJvdW5kc3BlY3Ms IG5wYXJ0cyk7CiAJYWxsX3ZhbHVlcyA9IChQYXJ0aXRpb25MaXN0VmFsdWUgKikKLQkJcGFsbG9j KG5kYXR1bXMgKiBzaXplb2YoUGFydGl0aW9uTGlzdFZhbHVlKSk7CisJCXN0YWNrX2J1ZmZlcl9h bGxvY19hcnJheShQYXJ0aXRpb25MaXN0VmFsdWUsIG5kYXR1bXMpOwogCiAJLyogQ3JlYXRlIGEg dW5pZmllZCBsaXN0IG9mIG5vbi1udWxsIHZhbHVlcyBhY3Jvc3MgYWxsIHBhcnRpdGlvbnMuICov CiAJZm9yIChqID0gMCwgaSA9IDA7IGkgPCBucGFydHM7IGkrKykKQEAgLTU2Niw3ICs1NzEsNyBA QCBjcmVhdGVfbGlzdF9ib3VuZHMoUGFydGl0aW9uQm91bmRTcGVjICoqYm91bmRzcGVjcywgaW50 IG5wYXJ0cywKIAkJYm91bmRpbmZvLT5pbmRleGVzW2ldID0gKCptYXBwaW5nKVtvcmlnX2luZGV4 XTsKIAl9CiAKLQlwZnJlZShhbGxfdmFsdWVzKTsKKwlzdGFja19idWZmZXJfZnJlZShhbGxfdmFs dWVzKTsKIAogCS8qCiAJICogU2V0IHRoZSBjYW5vbmljYWwgdmFsdWUgZm9yIG51bGxfaW5kZXgs IGlmIGFueS4KQEAgLTY4OCw2ICs2OTMsOCBAQCBjcmVhdGVfcmFuZ2VfYm91bmRzKFBhcnRpdGlv bkJvdW5kU3BlYyAqKmJvdW5kc3BlY3MsIGludCBucGFydHMsCiAJRGF0dW0JICAgKmJvdW5kRGF0 dW1zOwogCVBhcnRpdGlvblJhbmdlRGF0dW1LaW5kICpib3VuZEtpbmRzOwogCisJREVDTEFSRV9T VEFDS19CVUZGRVIoKTsKKwogCWJvdW5kaW5mbyA9IHBhbGxvYzBfb2JqZWN0KFBhcnRpdGlvbkJv dW5kSW5mb0RhdGEpOwogCWJvdW5kaW5mby0+c3RyYXRlZ3kgPSBrZXktPnN0cmF0ZWd5OwogCS8q IFRoZXJlIGlzIG5vIHNwZWNpYWwgbnVsbC1hY2NlcHRpbmcgcmFuZ2UgcGFydGl0aW9uLiAqLwpA QCAtNjk1LDcgKzcwMiw3IEBAIGNyZWF0ZV9yYW5nZV9ib3VuZHMoUGFydGl0aW9uQm91bmRTcGVj ICoqYm91bmRzcGVjcywgaW50IG5wYXJ0cywKIAkvKiBXaWxsIGJlIHNldCBjb3JyZWN0bHkgYmVs b3cuICovCiAJYm91bmRpbmZvLT5kZWZhdWx0X2luZGV4ID0gLTE7CiAKLQlhbGxfYm91bmRzID0g cGFsbG9jMF9hcnJheShQYXJ0aXRpb25SYW5nZUJvdW5kICosIDIgKiBucGFydHMpOworCWFsbF9i b3VuZHMgPSBzdGFja19idWZmZXJfYWxsb2MwX2FycmF5KFBhcnRpdGlvblJhbmdlQm91bmQgKiwg MiAqIG5wYXJ0cyk7CiAKIAkvKiBDcmVhdGUgYSB1bmlmaWVkIGxpc3Qgb2YgcmFuZ2UgYm91bmRz IGFjcm9zcyBhbGwgdGhlIHBhcnRpdGlvbnMuICovCiAJbmRhdHVtcyA9IDA7CkBAIC03MzUsOCAr NzQyLDcgQEAgY3JlYXRlX3JhbmdlX2JvdW5kcyhQYXJ0aXRpb25Cb3VuZFNwZWMgKipib3VuZHNw ZWNzLCBpbnQgbnBhcnRzLAogCQkJICBrZXkpOwogCiAJLyogU2F2ZSBkaXN0aW5jdCBib3VuZHMg ZnJvbSBhbGxfYm91bmRzIGludG8gcmJvdW5kcy4gKi8KLQlyYm91bmRzID0gKFBhcnRpdGlvblJh bmdlQm91bmQgKiopCi0JCXBhbGxvYyhuZGF0dW1zICogc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91 bmQgKikpOworCXJib3VuZHMgPSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXkoUGFydGl0aW9uUmFu Z2VCb3VuZCAqLCBuZGF0dW1zKTsKIAlrID0gMDsKIAlwcmV2ID0gTlVMTDsKIAlmb3IgKGkgPSAw OyBpIDwgbmRhdHVtczsgaSsrKQpAQCAtNzg1LDcgKzc5MSw3IEBAIGNyZWF0ZV9yYW5nZV9ib3Vu ZHMoUGFydGl0aW9uQm91bmRTcGVjICoqYm91bmRzcGVjcywgaW50IG5wYXJ0cywKIAkJcHJldiA9 IGN1cjsKIAl9CiAKLQlwZnJlZShhbGxfYm91bmRzKTsKKwlzdGFja19idWZmZXJfZnJlZShhbGxf Ym91bmRzKTsKIAogCS8qIFVwZGF0ZSBuZGF0dW1zIHRvIGhvbGQgdGhlIGNvdW50IG9mIGRpc3Rp bmN0IGRhdHVtcy4gKi8KIAluZGF0dW1zID0gazsKQEAgLTg1OCw3ICs4NjQsNyBAQCBjcmVhdGVf cmFuZ2VfYm91bmRzKFBhcnRpdGlvbkJvdW5kU3BlYyAqKmJvdW5kc3BlY3MsIGludCBucGFydHMs CiAJCX0KIAl9CiAKLQlwZnJlZShyYm91bmRzKTsKKwlzdGFja19idWZmZXJfZnJlZShyYm91bmRz KTsKIAogCS8qIFNldCB0aGUgY2Fub25pY2FsIHZhbHVlIGZvciBkZWZhdWx0X2luZGV4LCBpZiBh bnkuICovCiAJaWYgKGRlZmF1bHRfaW5kZXggIT0gLTEpCkBAIC0yMzg0LDkgKzIzOTAsMTEgQEAg Zml4X21lcmdlZF9pbmRleGVzKFBhcnRpdGlvbk1hcCAqb3V0ZXJfbWFwLCBQYXJ0aXRpb25NYXAg KmlubmVyX21hcCwKIAlpbnQJCQlpOwogCUxpc3RDZWxsICAgKmxjOwogCisJREVDTEFSRV9TVEFD S19CVUZGRVIoKTsKKwogCUFzc2VydChubWVyZ2VkID4gMCk7CiAKLQluZXdfaW5kZXhlcyA9IHBh bGxvY19hcnJheShpbnQsIG5tZXJnZWQpOworCW5ld19pbmRleGVzID0gc3RhY2tfYnVmZmVyX2Fs bG9jX2FycmF5KGludCwgbm1lcmdlZCk7CiAJZm9yIChpID0gMDsgaSA8IG5tZXJnZWQ7IGkrKykK IAkJbmV3X2luZGV4ZXNbaV0gPSAtMTsKIApAQCAtMjQxOSw3ICsyNDI3LDcgQEAgZml4X21lcmdl ZF9pbmRleGVzKFBhcnRpdGlvbk1hcCAqb3V0ZXJfbWFwLCBQYXJ0aXRpb25NYXAgKmlubmVyX21h cCwKIAkJCWxmaXJzdF9pbnQobGMpID0gbmV3X2luZGV4ZXNbbWVyZ2VkX2luZGV4XTsKIAl9CiAK LQlwZnJlZShuZXdfaW5kZXhlcyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUobmV3X2luZGV4ZXMpOwog fQogCiAvKgpAQCAtMjQ0MiwxMiArMjQ1MCwxNCBAQCBnZW5lcmF0ZV9tYXRjaGluZ19wYXJ0X3Bh aXJzKFJlbE9wdEluZm8gKm91dGVyX3JlbCwgUmVsT3B0SW5mbyAqaW5uZXJfcmVsLAogCWludAkJ CW1heF9ucGFydHM7CiAJaW50CQkJaTsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAlB c3NlcnQobm1lcmdlZCA+IDApOwogCUFzc2VydCgqb3V0ZXJfcGFydHMgPT0gTklMKTsKIAlBc3Nl cnQoKmlubmVyX3BhcnRzID09IE5JTCk7CiAKLQlvdXRlcl9pbmRleGVzID0gcGFsbG9jX2FycmF5 KGludCwgbm1lcmdlZCk7Ci0JaW5uZXJfaW5kZXhlcyA9IHBhbGxvY19hcnJheShpbnQsIG5tZXJn ZWQpOworCW91dGVyX2luZGV4ZXMgPSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXkoaW50LCBubWVy Z2VkKTsKKwlpbm5lcl9pbmRleGVzID0gc3RhY2tfYnVmZmVyX2FsbG9jX2FycmF5KGludCwgbm1l cmdlZCk7CiAJZm9yIChpID0gMDsgaSA8IG5tZXJnZWQ7IGkrKykKIAkJb3V0ZXJfaW5kZXhlc1tp XSA9IGlubmVyX2luZGV4ZXNbaV0gPSAtMTsKIApAQCAtMjUwMCw4ICsyNTEwLDggQEAgZ2VuZXJh dGVfbWF0Y2hpbmdfcGFydF9wYWlycyhSZWxPcHRJbmZvICpvdXRlcl9yZWwsIFJlbE9wdEluZm8g KmlubmVyX3JlbCwKIAkJCQkJCQkgICBpbm5lcl9yZWwtPnBhcnRfcmVsc1tpbm5lcl9pbmRleF0g OiBOVUxMKTsKIAl9CiAKLQlwZnJlZShvdXRlcl9pbmRleGVzKTsKLQlwZnJlZShpbm5lcl9pbmRl eGVzKTsKKwlzdGFja19idWZmZXJfZnJlZShvdXRlcl9pbmRleGVzKTsKKwlzdGFja19idWZmZXJf ZnJlZShpbm5lcl9pbmRleGVzKTsKIH0KIAogLyoKQEAgLTUxMDQsNiArNTExNCw4IEBAIGNhbGN1 bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKIAlQYXJ0aXRp b25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKIAlQYXJ0aXRpb25C b3VuZFNwZWMgKmJvdW5kOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCUFzc2VydCgh c3BlYy0+aXNfZGVmYXVsdCk7CiAKIAlzd2l0Y2ggKGtleS0+c3RyYXRlZ3kpCkBAIC01MTE1LDcg KzUxMjcsNyBAQCBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBw YXJlbnQsCiAJCQkJaW50CQkJbnBhcnRzID0gbGlzdF9sZW5ndGgocGFydE9pZHMpOwogCQkJCUxp c3QJICAgKmJvdW5kcyA9IE5JTDsKIAotCQkJCWxvd2VyX2JvdW5kcyA9IHBhbGxvYzBfYXJyYXko UGFydGl0aW9uUmFuZ2VCb3VuZCAqLCBucGFydHMpOworCQkJCWxvd2VyX2JvdW5kcyA9IHN0YWNr X2J1ZmZlcl9hbGxvYzBfYXJyYXkoUGFydGl0aW9uUmFuZ2VCb3VuZCAqLCBucGFydHMpOwogCiAJ CQkJLyoKIAkJCQkgKiBDcmVhdGUgYW4gYXJyYXkgb2YgbG93ZXIgYm91bmRzIGFuZCBhIGxpc3Qg b2YKQEAgLTUxNjQsNyArNTE3Niw3IEBAIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21l cmdlKFJlbGF0aW9uIHBhcmVudCwKIAkJCQlzcGVjLT51cHBlcmRhdHVtcyA9CiAJCQkJCSgoUGFy dGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93ZXJfYm91bmRzW25wYXJ0cyAt IDFdLT5pbmRleCkpLT51cHBlcmRhdHVtczsKIAotCQkJCXBmcmVlKGxvd2VyX2JvdW5kcyk7CisJ CQkJc3RhY2tfYnVmZmVyX2ZyZWUobG93ZXJfYm91bmRzKTsKIAkJCQlsaXN0X2ZyZWUoYm91bmRz KTsKIAkJCQlicmVhazsKIAkJCX0KQEAgLTU3NDEsNiArNTc1Myw4IEBAIGNoZWNrX3BhcnRpdGlv bnNfZm9yX3NwbGl0KFJlbGF0aW9uIHBhcmVudCwKIAkgKi8KIAlpbnQJCQlucGFydHMgPSAwOwog CisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCWtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9u S2V5KHBhcmVudCk7CiAJc3RyYXRlZ3kgPSBnZXRfcGFydGl0aW9uX3N0cmF0ZWd5KGtleSk7CiAK QEAgLTU3NTQsNyArNTc2OCw3IEBAIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0aW9u IHBhcmVudCwKIAkgKiBNYWtlIGFuIGFycmF5IG5ld19wYXJ0cyB3aXRoIG5ldyBwYXJ0aXRpb25z IGV4Y2VwdCB0aGUgREVGQVVMVAogCSAqIHBhcnRpdGlvbi4KIAkgKi8KLQluZXdfcGFydHMgPSBw YWxsb2MwX2FycmF5KFNpbmdsZVBhcnRpdGlvblNwZWMgKiwgbGlzdF9sZW5ndGgocGFydGxpc3Qp KTsKKwluZXdfcGFydHMgPSBzdGFja19idWZmZXJfYWxsb2MwX2FycmF5KFNpbmdsZVBhcnRpdGlv blNwZWMgKiwgbGlzdF9sZW5ndGgocGFydGxpc3QpKTsKIAogCS8qIGlzU3BsaXRQYXJ0RGVmYXVs dCBmbGFnOiBpcyBzcGxpdCBwYXJ0aXRpb24gYSBERUZBVUxUIHBhcnRpdGlvbj8gKi8KIAlpc1Nw bGl0UGFydERlZmF1bHQgPSAoZGVmYXVsdFBhcnRPaWQgPT0gc3BsaXRQYXJ0T2lkKTsKQEAgLTU3 ODQsNyArNTc5OCw3IEBAIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0aW9uIHBhcmVu dCwKIAkJICogYWxsIHBhcnRpdGlvbnMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHRoZWlyIGJvdW5k cyAod2UgY29tcGFyZSB0aGUKIAkJICogbG93ZXIgYm91bmQgb25seSkuCiAJCSAqLwotCQlsb3dl cl9ib3VuZHMgPSBwYWxsb2MwX2FycmF5KFBhcnRpdGlvblJhbmdlQm91bmQgKiwgbnBhcnRzKTsK KwkJbG93ZXJfYm91bmRzID0gc3RhY2tfYnVmZmVyX2FsbG9jMF9hcnJheShQYXJ0aXRpb25SYW5n ZUJvdW5kICosIG5wYXJ0cyk7CiAKIAkJLyogQ3JlYXRlIGFuIGFycmF5IG9mIGxvd2VyIGJvdW5k cy4gKi8KIAkJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQpAQCAtNTc5OSwxMiArNTgxMywx MiBAQCBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChSZWxhdGlvbiBwYXJlbnQsCiAKIAkJLyog UmVvcmRlciB0aGUgYXJyYXkgb2YgcGFydGl0aW9ucy4gKi8KIAkJdG1wX25ld19wYXJ0cyA9IG5l d19wYXJ0czsKLQkJbmV3X3BhcnRzID0gcGFsbG9jMF9hcnJheShTaW5nbGVQYXJ0aXRpb25TcGVj ICosIG5wYXJ0cyk7CisJCW5ld19wYXJ0cyA9IHN0YWNrX2J1ZmZlcl9hbGxvYzBfYXJyYXkoU2lu Z2xlUGFydGl0aW9uU3BlYyAqLCBucGFydHMpOwogCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBp KyspCiAJCQluZXdfcGFydHNbaV0gPSB0bXBfbmV3X3BhcnRzW2xvd2VyX2JvdW5kc1tpXS0+aW5k ZXhdOwogCi0JCXBmcmVlKHRtcF9uZXdfcGFydHMpOwotCQlwZnJlZShsb3dlcl9ib3VuZHMpOwor CQlzdGFja19idWZmZXJfZnJlZSh0bXBfbmV3X3BhcnRzKTsKKwkJc3RhY2tfYnVmZmVyX2ZyZWUo bG93ZXJfYm91bmRzKTsKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCkBAIC01 ODcxLDUgKzU4ODUsNSBAQCBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChSZWxhdGlvbiBwYXJl bnQsCiAJCQkJCQkJCQkJCQkgIG5ld19wYXJ0cywgbnBhcnRzLCBwc3RhdGUpOwogCX0KIAotCXBm cmVlKG5ld19wYXJ0cyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUobmV3X3BhcnRzKTsKIH0KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCA2ZDk3OWEwOGZkMy4uOGM0YmYxZDY1N2Ug MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYworKysgYi9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKQEAgLTU0LDYgKzU0LDcgQEAKICNp bmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydHBydW5lLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXku aCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zdGFja19i dWZmZXIuaCIKIAogCiAvKgpAQCAtMjMzLDYgKzIzNCw4IEBAIG1ha2VfcGFydGl0aW9uX3BydW5l aW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCUxpc3RDZWxs ICAgKmxjOwogCWludAkJCWk7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJLyoKIAkg KiBTY2FuIHRoZSBzdWJwYXRocyB0byBzZWUgd2hpY2ggb25lcyBhcmUgc2NhbnMgb2YgcGFydGl0 aW9uIGNoaWxkCiAJICogcmVsYXRpb25zLCBhbmQgaWRlbnRpZnkgdGhlaXIgcGFyZW50IHBhcnRp dGlvbmVkIHJlbHMuICAoTm90ZTogd2UgbXVzdApAQCAtMjQ2LDcgKzI0OSw4IEBAIG1ha2VfcGFy dGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVs LAogCSAqIHRoYXQgemVybyBjYW4gcmVwcmVzZW50IGFuIHVuLWZpbGxlZCBhcnJheSBlbnRyeS4K IAkgKi8KIAlhbGxwYXJ0cmVsaWRzID0gTklMOwotCXJlbGlkX3N1YnBsYW5fbWFwID0gcGFsbG9j MF9hcnJheShpbnQsIHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlfc2l6ZSk7CisJcmVsaWRfc3VicGxh bl9tYXAgPSBzdGFja19idWZmZXJfYWxsb2MwX2FycmF5KGludCwKKwkJCQkJCQkJCQkJCSAgcm9v dC0+c2ltcGxlX3JlbF9hcnJheV9zaXplKTsKIAogCWkgPSAxOwogCWZvcmVhY2gobGMsIHN1YnBh dGhzKQpAQCAtMzI3LDcgKzMzMSw3IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQl9CiAJfQogCi0JcGZyZWUocmVs aWRfc3VicGxhbl9tYXApOworCXN0YWNrX2J1ZmZlcl9mcmVlKHJlbGlkX3N1YnBsYW5fbWFwKTsK IAogCS8qCiAJICogSWYgbm9uZSBvZiB0aGUgcGFydGl0aW9uIGhpZXJhcmNoaWVzIGhhZCBhbnkg dXNlZnVsIHJ1bi10aW1lIHBydW5pbmcKQEAgLTQ1Nyw2ICs0NjEsOCBAQCBtYWtlX3BhcnRpdGlv bmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVs LAogCWludAkJCXJ0aTsKIAlpbnQJCQlpOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwog CS8qCiAJICogRXhhbWluZSBlYWNoIHBhcnRpdGlvbmVkIHJlbCwgY29uc3RydWN0aW5nIGEgdGVt cG9yYXJ5IGFycmF5IHRvIG1hcAogCSAqIGZyb20gcGxhbm5lciByZWxpZHMgdG8gaW5kZXggb2Yg dGhlIHBhcnRpdGlvbmVkIHJlbCwgYW5kIGJ1aWxkaW5nIGEKQEAgLTQ2NSw3ICs0NzEsOCBAQCBt YWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcGFyZW50cmVsLAogCSAqIEluIHRoaXMgcGhhc2Ugd2UgZGlzY292ZXIgd2hldGhlciBydW50 aW1lIHBydW5pbmcgaXMgbmVlZGVkIGF0IGFsbDsgaWYKIAkgKiBub3QsIHdlIGNhbiBhdm9pZCBk b2luZyBmdXJ0aGVyIHdvcmsuCiAJICovCi0JcmVsaWRfc3VicGFydF9tYXAgPSBwYWxsb2MwX2Fy cmF5KGludCwgcm9vdC0+c2ltcGxlX3JlbF9hcnJheV9zaXplKTsKKwlyZWxpZF9zdWJwYXJ0X21h cCA9IHN0YWNrX2J1ZmZlcl9hbGxvYzBfYXJyYXkoaW50LAorCQkJCQkJCQkJCQkJICByb290LT5z aW1wbGVfcmVsX2FycmF5X3NpemUpOwogCiAJaSA9IDE7CiAJcnRpID0gLTE7CkBAIC02MjQsNyAr NjMxLDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAlpZiAoIWRvcnVudGltZXBydW5lKQogCXsKIAkJLyog Tm8gcnVuLXRpbWUgcHJ1bmluZyByZXF1aXJlZC4gKi8KLQkJcGZyZWUocmVsaWRfc3VicGFydF9t YXApOworCQlzdGFja19idWZmZXJfZnJlZShyZWxpZF9zdWJwYXJ0X21hcCk7CiAJCXJldHVybiBO SUw7CiAJfQogCkBAIC03MTksNyArNzI2LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWlu Zm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJcGluZm8tPmxl YWZwYXJ0X3J0aV9tYXAgPSBsZWFmcGFydF9ydGlfbWFwOwogCX0KIAotCXBmcmVlKHJlbGlkX3N1 YnBhcnRfbWFwKTsKKwlzdGFja19idWZmZXJfZnJlZShyZWxpZF9zdWJwYXJ0X21hcCk7CiAKIAkq bWF0Y2hlZHN1YnBsYW5zID0gc3VicGxhbnNmb3VuZDsKIAotLSAKMi41My4wCgo= --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0017-Use-stack-buffer-for-simple-arrays-in-planner.patch" Content-Disposition: attachment; filename="v2-0017-Use-stack-buffer-for-simple-arrays-in-planner.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt6r1617 RnJvbSA1Y2VmNzAwNjljYThlMGIwZTVhMmU0NWJkZDdjZjE3NzQwNGE4ODJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMiBNYXIgMjAyNiAwMzozOToxMSArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MTcvMTldIFVzZSBzdGFjayBidWZmZXIgZm9yIHNpbXBsZSBhcnJheXMgaW4gcGxhbm5lci4KCi0t LQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYyAgICAgfCAgNyArKystLQog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jICAgfCAgOSArKysrLS0KIHNy Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgICAgIHwgMTQgKysrKysrLS0tCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9wYXRoa2V5cy5jICAgICB8IDE1ICsrKysrLS0tLQog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMgfCAgNyArKysrLQogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgfCAzNyArKysrKysrKysrKysr Ky0tLS0tLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGFnZy5jICAgICAgfCAg NyArKystLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHVuaW9uLmMgICAgfCAgNyAr KystLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jICAgICAgfCAxNyArKysr KysrLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgICAgfCAgNyAr KystLQogMTAgZmlsZXMgY2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKaW5kZXggNWVjZWIzMjE4MjguLjFj OGVmYzVlM2NkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRo cy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKQEAgLTQ5LDYg KzQ5LDcgQEAKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNzLmgiCisjaW5jbHVkZSAi dXRpbHMvc3RhY2tfYnVmZmVyLmgiCiAKIAogLyogQml0bWFzayBmbGFncyBmb3IgcHVzaGRvd25f c2FmZXR5X2luZm8udW5zYWZlRmxhZ3MgKi8KQEAgLTEwMjEsNiArMTAyMiw4IEBAIHNldF9hcHBl bmRfcmVsX3NpemUoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAlpbnQJCQlu YXR0cnM7CiAJTGlzdENlbGwgICAqbDsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAkv KiBHdWFyZCBhZ2FpbnN0IHN0YWNrIG92ZXJmbG93IGR1ZSB0byBvdmVybHkgZGVlcCBpbmhlcml0 YW5jZSB0cmVlLiAqLwogCWNoZWNrX3N0YWNrX2RlcHRoKCk7CiAKQEAgLTEwNjUsNyArMTA2OCw3 IEBAIHNldF9hcHBlbmRfcmVsX3NpemUoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJl bCwKIAlwYXJlbnRfcm93cyA9IDA7CiAJcGFyZW50X3NpemUgPSAwOwogCW5hdHRycyA9IHJlbC0+ bWF4X2F0dHIgLSByZWwtPm1pbl9hdHRyICsgMTsKLQlwYXJlbnRfYXR0cnNpemVzID0gKGRvdWJs ZSAqKSBwYWxsb2MwKG5hdHRycyAqIHNpemVvZihkb3VibGUpKTsKKwlwYXJlbnRfYXR0cnNpemVz ID0gc3RhY2tfYnVmZmVyX2FsbG9jMF9hcnJheShkb3VibGUsIG5hdHRycyk7CiAKIAlmb3JlYWNo KGwsIHJvb3QtPmFwcGVuZF9yZWxfbGlzdCkKIAl7CkBAIC0xMjk2LDcgKzEyOTksNyBAQCBzZXRf YXBwZW5kX3JlbF9zaXplKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCXNl dF9kdW1teV9yZWxfcGF0aGxpc3QocmVsKTsKIAl9CiAKLQlwZnJlZShwYXJlbnRfYXR0cnNpemVz KTsKKwlzdGFja19idWZmZXJfZnJlZShwYXJlbnRfYXR0cnNpemVzKTsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYwppbmRleCBlMzY5N2RmNTFhMi4uMjhhMzE2 MmI5OGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3Mu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMKQEAgLTMyLDYg KzMyLDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgiCiAjaW5jbHVkZSAi cmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNp bmNsdWRlICJ1dGlscy9zdGFja19idWZmZXIuaCIKIAogCiBzdGF0aWMgRXF1aXZhbGVuY2VNZW1i ZXIgKm1ha2VfZXFfbWVtYmVyKEVxdWl2YWxlbmNlQ2xhc3MgKmVjLApAQCAtMTM3Myw2ICsxMzc0 LDggQEAgZ2VuZXJhdGVfYmFzZV9pbXBsaWVkX2VxdWFsaXRpZXNfbm9fY29uc3QoUGxhbm5lcklu Zm8gKnJvb3QsCiAJRXF1aXZhbGVuY2VNZW1iZXIgKipwcmV2X2VtczsKIAlMaXN0Q2VsbCAgICps YzsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAkvKgogCSAqIFdlIHNjYW4gdGhlIEVD IG1lbWJlcnMgb25jZSBhbmQgdHJhY2sgdGhlIGxhc3Qtc2VlbiBtZW1iZXIgZm9yIGVhY2gKIAkg KiBiYXNlIHJlbGF0aW9uLiAgV2hlbiB3ZSBzZWUgYW5vdGhlciBtZW1iZXIgb2YgdGhlIHNhbWUg YmFzZSByZWxhdGlvbiwKQEAgLTEzODEsOCArMTM4NCw4IEBAIGdlbmVyYXRlX2Jhc2VfaW1wbGll ZF9lcXVhbGl0aWVzX25vX2NvbnN0KFBsYW5uZXJJbmZvICpyb290LAogCSAqIG9yZGVyaW5nIHdv dWxkIHN1Y2NlZWQuICBYWFggRklYTUU6IHVzZSBhIFVOSU9OLUZJTkQgYWxnb3JpdGhtIHNpbWls YXIKIAkgKiB0byB0aGUgd2F5IHdlIGJ1aWxkIG1lcmdlZCBFQ3MuICAoVXNlIGEgbGlzdC1vZi1s aXN0cyBmb3IgZWFjaCByZWwuKQogCSAqLwotCXByZXZfZW1zID0gKEVxdWl2YWxlbmNlTWVtYmVy ICoqKQotCQlwYWxsb2MwKHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlfc2l6ZSAqIHNpemVvZihFcXVp dmFsZW5jZU1lbWJlciAqKSk7CisJcHJldl9lbXMgPSBzdGFja19idWZmZXJfYWxsb2MwX2FycmF5 KEVxdWl2YWxlbmNlTWVtYmVyICosCisJCQkJCQkJCQkJIHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlf c2l6ZSk7CiAKIAkvKiBXZSBkb24ndCBleHBlY3QgYW55IGNoaWxkcmVuIHlldCAqLwogCUFzc2Vy dChlYy0+ZWNfY2hpbGRtZW1iZXJzID09IE5VTEwpOwpAQCAtMTQ0NCw3ICsxNDQ3LDcgQEAgZ2Vu ZXJhdGVfYmFzZV9pbXBsaWVkX2VxdWFsaXRpZXNfbm9fY29uc3QoUGxhbm5lckluZm8gKnJvb3Qs CiAJCXByZXZfZW1zW3JlbGlkXSA9IGN1cl9lbTsKIAl9CiAKLQlwZnJlZShwcmV2X2Vtcyk7CisJ c3RhY2tfYnVmZmVyX2ZyZWUocHJldl9lbXMpOwogCiAJLyoKIAkgKiBXZSBhbHNvIGhhdmUgdG8g bWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBWYXJzIHVzZWQgaW4gdGhlIG1lbWJlciBjbGF1c2VzCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYwppbmRleCA2N2Q5ZGMzNWY0NC4uYjAxYzQ4 NjUwYzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYwpAQCAtMzQsNiArMzQs NyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9yZXN0cmljdGluZm8uaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0 aWxzL3N0YWNrX2J1ZmZlci5oIgogCiAKIC8qIFhYWCBzZWUgUGFydENvbGxNYXRjaGVzRXhwckNv bGwgKi8KQEAgLTEyODEsNiArMTI4Miw4IEBAIGdyb3VwX3NpbWlsYXJfb3JfYXJncyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBSZXN0cmljdEluZm8gKnJpbmZvKQogCUxpc3QJ ICAgKnJlc3VsdCA9IE5JTDsKIAlJbmRleAkJcmVsaWQgPSByZWwtPnJlbGlkOwogCisJREVDTEFS RV9TVEFDS19CVUZGRVIoKTsKKwogCUFzc2VydChJc0EocmluZm8tPm9yY2xhdXNlLCBCb29sRXhw cikpOwogCW9yYXJncyA9ICgoQm9vbEV4cHIgKikgcmluZm8tPm9yY2xhdXNlKS0+YXJnczsKIAlu ID0gbGlzdF9sZW5ndGgob3JhcmdzKTsKQEAgLTEyOTEsNyArMTI5NCw3IEBAIGdyb3VwX3NpbWls YXJfb3JfYXJncyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBSZXN0cmljdElu Zm8gKnJpbmZvKQogCSAqIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBzb3J0IHRoZXNlIGFyZ3VtZW50 cyBhdCB0aGUgbmV4dCBzdGVwLgogCSAqLwogCWkgPSAtMTsKLQltYXRjaGVzID0gcGFsbG9jX2Fy cmF5KE9yQXJnSW5kZXhNYXRjaCwgbik7CisJbWF0Y2hlcyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19h cnJheShPckFyZ0luZGV4TWF0Y2gsIG4pOwogCWZvcmVhY2gobGMsIG9yYXJncykKIAl7CiAJCU5v ZGUJICAgKmFyZyA9IGxmaXJzdChsYyk7CkBAIC0xNDIxLDcgKzE0MjQsNyBAQCBncm91cF9zaW1p bGFyX29yX2FyZ3MoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwgUmVzdHJpY3RJ bmZvICpyaW5mbykKIAkgKi8KIAlpZiAoIW1hdGNoZWQpCiAJewotCQlwZnJlZShtYXRjaGVzKTsK KwkJc3RhY2tfYnVmZmVyX2ZyZWUobWF0Y2hlcyk7CiAJCXJldHVybiBvcmFyZ3M7CiAJfQogCkBA IC0xNTI2LDcgKzE1MjksNyBAQCBncm91cF9zaW1pbGFyX29yX2FyZ3MoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwgUmVzdHJpY3RJbmZvICpyaW5mbykKIAkJCWdyb3VwX3N0YXJ0 ID0gaTsKIAkJfQogCX0KLQlwZnJlZShtYXRjaGVzKTsKKwlzdGFja19idWZmZXJfZnJlZShtYXRj aGVzKTsKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNzk0LDYgKzE3OTcsOCBAQCBjaG9vc2Vf Yml0bWFwX2FuZChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBMaXN0ICpwYXRo cykKIAkJCQlqOwogCUxpc3RDZWxsICAgKmw7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOwor CiAJQXNzZXJ0KG5wYXRocyA+IDApOwkJCS8qIGVsc2UgY2FsbGVyIGVycm9yICovCiAJaWYgKG5w YXRocyA9PSAxKQogCQlyZXR1cm4gKFBhdGggKikgbGluaXRpYWwocGF0aHMpOwkvKiBlYXN5IGNh c2UgKi8KQEAgLTE4NTMsNyArMTg1OCw3IEBAIGNob29zZV9iaXRtYXBfYW5kKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpyZWwsIExpc3QgKnBhdGhzKQogCSAqIHNhbWUgc2V0IG9mIGNs YXVzZXM7IGtlZXAgb25seSB0aGUgY2hlYXBlc3QtdG8tc2NhbiBvZiBhbnkgc3VjaCBncm91cHMu CiAJICogVGhlIHN1cnZpdmluZyBwYXRocyBhcmUgcHV0IGludG8gYW4gYXJyYXkgZm9yIHFzb3J0 J2luZy4KIAkgKi8KLQlwYXRoaW5mb2FycmF5ID0gcGFsbG9jX2FycmF5KFBhdGhDbGF1c2VVc2Fn ZSAqLCBucGF0aHMpOworCXBhdGhpbmZvYXJyYXkgPSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXko UGF0aENsYXVzZVVzYWdlICosIG5wYXRocyk7CiAJY2xhdXNlbGlzdCA9IE5JTDsKIAlucGF0aHMg PSAwOwogCWZvcmVhY2gobCwgcGF0aHMpCkBAIC0xOTc5LDYgKzE5ODQsNyBAQCBjaG9vc2VfYml0 bWFwX2FuZChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBMaXN0ICpwYXRocykK IAkJLyogc29tZSBlYXN5IGNsZWFudXAgKHdlIGRvbid0IHRyeSByZWFsIGhhcmQgdGhvdWdoKSAq LwogCQlsaXN0X2ZyZWUocXVhbHNvZmFyKTsKIAl9CisJc3RhY2tfYnVmZmVyX2ZyZWUocGF0aGlu Zm9hcnJheSk7CiAKIAlpZiAobGlzdF9sZW5ndGgoYmVzdHBhdGhzKSA9PSAxKQogCQlyZXR1cm4g KFBhdGggKikgbGluaXRpYWwoYmVzdHBhdGhzKTsJLyogbm8gbmVlZCBmb3IgQU5EICovCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9wYXRoa2V5cy5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvcGF0aGtleXMuYwppbmRleCA1ZWI3MTYzNWQxNS4uYTBlMzE5NGY2 ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvcGF0aGtleXMuYwpAQCAtMjYsNiArMjYsNyBA QAogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9w YXJ0Ym91bmRzLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKKyNpbmNsdWRl ICJ1dGlscy9zdGFja19idWZmZXIuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKIAog LyogQ29uc2lkZXIgcmVvcmRlcmluZyBvZiBHUk9VUCBCWSBrZXlzPyAqLwpAQCAtMTY2OCw2ICsx NjY5LDggQEAgc2VsZWN0X291dGVyX3BhdGhrZXlzX2Zvcl9tZXJnZShQbGFubmVySW5mbyAqcm9v dCwKIAlMaXN0Q2VsbCAgICpsYzsKIAlpbnQJCQlqOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIo KTsKKwogCS8qIE1pZ2h0IGhhdmUgbm8gbWVyZ2VjbGF1c2VzICovCiAJaWYgKG5DbGF1c2VzID09 IDApCiAJCXJldHVybiBOSUw7CkBAIC0xNjc2LDggKzE2NzksOCBAQCBzZWxlY3Rfb3V0ZXJfcGF0 aGtleXNfZm9yX21lcmdlKFBsYW5uZXJJbmZvICpyb290LAogCSAqIE1ha2UgYXJyYXlzIG9mIHRo ZSBFQ3MgdXNlZCBieSB0aGUgbWVyZ2VjbGF1c2VzIChkcm9wcGluZyBhbnkKIAkgKiBkdXBsaWNh dGVzKSBhbmQgdGhlaXIgInBvcHVsYXJpdHkiIHNjb3Jlcy4KIAkgKi8KLQllY3MgPSAoRXF1aXZh bGVuY2VDbGFzcyAqKikgcGFsbG9jKG5DbGF1c2VzICogc2l6ZW9mKEVxdWl2YWxlbmNlQ2xhc3Mg KikpOwotCXNjb3JlcyA9IChpbnQgKikgcGFsbG9jKG5DbGF1c2VzICogc2l6ZW9mKGludCkpOwor CWVjcyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShFcXVpdmFsZW5jZUNsYXNzICosIG5DbGF1 c2VzKTsKKwlzY29yZXMgPSBzdGFja19idWZmZXJfYWxsb2NfYXJyYXkoaW50LCBuQ2xhdXNlcyk7 CiAJbmVjcyA9IDA7CiAKIAlmb3JlYWNoKGxjLCBtZXJnZWNsYXVzZXMpCkBAIC0xNzg0LDggKzE3 ODcsOCBAQCBzZWxlY3Rfb3V0ZXJfcGF0aGtleXNfZm9yX21lcmdlKFBsYW5uZXJJbmZvICpyb290 LAogCQkJcGF0aGtleXMgPSBsaXN0X2NvcHlfaGVhZChyb290LT5xdWVyeV9wYXRoa2V5cywgbWF0 Y2hlcyk7CiAKIAkJCS8qIHdlIGhhdmUgYWxsIG9mIHRoZSBqb2luIHBhdGhrZXlzLCBzbyBub3Ro aW5nIG1vcmUgdG8gZG8gKi8KLQkJCXBmcmVlKGVjcyk7Ci0JCQlwZnJlZShzY29yZXMpOworCQkJ c3RhY2tfYnVmZmVyX2ZyZWUoZWNzKTsKKwkJCXN0YWNrX2J1ZmZlcl9mcmVlKHNjb3Jlcyk7CiAK IAkJCXJldHVybiBwYXRoa2V5czsKIAkJfQpAQCAtMTgyNyw4ICsxODMwLDggQEAgc2VsZWN0X291 dGVyX3BhdGhrZXlzX2Zvcl9tZXJnZShQbGFubmVySW5mbyAqcm9vdCwKIAkJcGF0aGtleXMgPSBs YXBwZW5kKHBhdGhrZXlzLCBwYXRoa2V5KTsKIAl9CiAKLQlwZnJlZShlY3MpOwotCXBmcmVlKHNj b3Jlcyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUoZWNzKTsKKwlzdGFja19idWZmZXJfZnJlZShzY29y ZXMpOwogCiAJcmV0dXJuIHBhdGhrZXlzOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9h bmFseXplam9pbnMuYwppbmRleCAxMmU5ZWQwZDBjNy4uZTNkNDYyYWY0MTYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j bHVkZSAicGFyc2VyL3BhcnNlX2FnZy5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlw LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3RhY2tf YnVmZmVyLmgiCiAKIC8qCiAgKiBVdGlsaXR5IHN0cnVjdHVyZS4gIEEgc29ydGluZyBwcm9jZWR1 cmUgaXMgbmVlZGVkIHRvIHNpbXBsaWZ5IHRoZSBzZWFyY2gKQEAgLTIzMTQsNiArMjMxNSw4IEBA IHJlbW92ZV9zZWxmX2pvaW5zX3JlY3Vyc2UoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmpvaW5s aXN0LCBSZWxpZHMgdG9SZW1vdmUpCiAJaW50CQkJajsKIAlpbnQJCQludW1SZWxzOwogCisJREVD TEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCS8qIENvbGxlY3QgaW5kZXhlcyBvZiBiYXNlIHJlbGF0 aW9ucyBvZiB0aGUgam9pbiB0cmVlICovCiAJZm9yZWFjaChqbCwgam9pbmxpc3QpCiAJewpAQCAt MjM2Myw3ICsyMzY2LDcgQEAgcmVtb3ZlX3NlbGZfam9pbnNfcmVjdXJzZShQbGFubmVySW5mbyAq cm9vdCwgTGlzdCAqam9pbmxpc3QsIFJlbGlkcyB0b1JlbW92ZSkKIAkgKiBJbiBvcmRlciB0byBm aW5kIHJlbGF0aW9ucyB3aXRoIHRoZSBzYW1lIG9pZCB3ZSBmaXJzdCBidWlsZCBhbiBhcnJheSBv ZgogCSAqIGNhbmRpZGF0ZXMgYW5kIHRoZW4gc29ydCBpdCBieSBvaWQuCiAJICovCi0JY2FuZGlk YXRlcyA9IHBhbGxvY19hcnJheShTZWxmSm9pbkNhbmRpZGF0ZSwgbnVtUmVscyk7CisJY2FuZGlk YXRlcyA9IHN0YWNrX2J1ZmZlcl9hbGxvY19hcnJheShTZWxmSm9pbkNhbmRpZGF0ZSwgbnVtUmVs cyk7CiAJaSA9IC0xOwogCWogPSAwOwogCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihyZWxp ZHMsIGkpKSA+PSAwKQpAQCAtMjQzMSw2ICsyNDM0LDggQEAgcmVtb3ZlX3NlbGZfam9pbnNfcmVj dXJzZShQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqam9pbmxpc3QsIFJlbGlkcyB0b1JlbW92ZSkK IAogCUFzc2VydChibXNfaXNfZW1wdHkocmVsaWRzKSk7CiAKKwlzdGFja19idWZmZXJfZnJlZShj YW5kaWRhdGVzKTsKKwogCXJldHVybiB0b1JlbW92ZTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm5lci5jCmluZGV4IDQyNjA0YTBmNzVjLi4yNGFkNDFkNGVjNiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgInV0aWxz L2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3Nl bGZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvc3RhY2tfYnVmZmVyLmgiCiAKIC8qIEdVQyBwYXJh bWV0ZXJzICovCiBkb3VibGUJCWN1cnNvcl90dXBsZV9mcmFjdGlvbiA9IERFRkFVTFRfQ1VSU09S X1RVUExFX0ZSQUNUSU9OOwpAQCAtMzAyMCw2ICszMDIxLDggQEAgZXh0cmFjdF9yb2xsdXBfc2V0 cyhMaXN0ICpncm91cGluZ1NldHMpCiAJTGlzdENlbGwgICAqbGMxID0gbGlzdF9oZWFkKGdyb3Vw aW5nU2V0cyk7CiAJTGlzdENlbGwgICAqbGM7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOwor CiAJLyoKIAkgKiBTdGFydCBieSBzdHJpcHBpbmcgb3V0IGVtcHR5IHNldHMuICBUaGUgYWxnb3Jp dGhtIGRvZXNuJ3QgcmVxdWlyZSB0aGlzLAogCSAqIGJ1dCB0aGUgcGxhbm5lciBjdXJyZW50bHkg bmVlZHMgYWxsIGVtcHR5IHNldHMgdG8gYmUgcmV0dXJuZWQgaW4gdGhlCkBAIC0zMDUzLDEwICsz MDU2LDEwIEBAIGV4dHJhY3Rfcm9sbHVwX3NldHMoTGlzdCAqZ3JvdXBpbmdTZXRzKQogCSAqIHRv IGxlYXZlIDAgZnJlZSBmb3IgdGhlIE5JTCBub2RlIGluIHRoZSBncmFwaCBhbGdvcml0aG0uCiAJ ICotLS0tLS0tLS0tCiAJICovCi0Jb3JpZ19zZXRzID0gcGFsbG9jMCgobnVtX3NldHNfcmF3ICsg MSkgKiBzaXplb2YoTGlzdCAqKSk7Ci0Jc2V0X21hc2tzID0gcGFsbG9jMCgobnVtX3NldHNfcmF3 ICsgMSkgKiBzaXplb2YoQml0bWFwc2V0ICopKTsKLQlhZGphY2VuY3kgPSBwYWxsb2MwKChudW1f c2V0c19yYXcgKyAxKSAqIHNpemVvZihzaG9ydCAqKSk7Ci0JYWRqYWNlbmN5X2J1ZiA9IHBhbGxv YygobnVtX3NldHNfcmF3ICsgMSkgKiBzaXplb2Yoc2hvcnQpKTsKKwlvcmlnX3NldHMgPSBzdGFj a19idWZmZXJfYWxsb2MwX2FycmF5KExpc3QgKiwgbnVtX3NldHNfcmF3ICsgMSk7CisJc2V0X21h c2tzID0gc3RhY2tfYnVmZmVyX2FsbG9jMF9hcnJheShCaXRtYXBzZXQgKiwgbnVtX3NldHNfcmF3 ICsgMSk7CisJYWRqYWNlbmN5ID0gc3RhY2tfYnVmZmVyX2FsbG9jMF9hcnJheShzaG9ydCAqLCBu dW1fc2V0c19yYXcgKyAxKTsKKwlhZGphY2VuY3lfYnVmID0gc3RhY2tfYnVmZmVyX2FsbG9jX2Fy cmF5KHNob3J0LCBudW1fc2V0c19yYXcgKyAxKTsKIAogCWpfc2l6ZSA9IDA7CiAJaiA9IDA7CkBA IC0zMTQxLDcgKzMxNDQsNyBAQCBleHRyYWN0X3JvbGx1cF9zZXRzKExpc3QgKmdyb3VwaW5nU2V0 cykKIAkgKiBwYWlyX3Z1W3ZdID0gdSAoYm90aCB3aWxsIGJlIHRydWUsIGJ1dCB3ZSBjaGVjayBi b3RoIHNvIHRoYXQgd2UgY2FuIGRvCiAJICogaXQgaW4gb25lIHBhc3MpCiAJICovCi0JY2hhaW5z ID0gcGFsbG9jMCgobnVtX3NldHMgKyAxKSAqIHNpemVvZihpbnQpKTsKKwljaGFpbnMgPSBzdGFj a19idWZmZXJfYWxsb2MwX2FycmF5KGludCwgbnVtX3NldHMgKyAxKTsKIAogCWZvciAoaSA9IDE7 IGkgPD0gbnVtX3NldHM7ICsraSkKIAl7CkBAIC0zMTU3LDcgKzMxNjAsNyBAQCBleHRyYWN0X3Jv bGx1cF9zZXRzKExpc3QgKmdyb3VwaW5nU2V0cykKIAl9CiAKIAkvKiBidWlsZCByZXN1bHQgbGlz dHMuICovCi0JcmVzdWx0cyA9IHBhbGxvYzAoKG51bV9jaGFpbnMgKyAxKSAqIHNpemVvZihMaXN0 ICopKTsKKwlyZXN1bHRzID0gc3RhY2tfYnVmZmVyX2FsbG9jMF9hcnJheShMaXN0ICosIChudW1f Y2hhaW5zICsgMSkpOwogCiAJZm9yIChpID0gMTsgaSA8PSBudW1fc2V0czsgKytpKQogCXsKQEAg LTMxODMsMTcgKzMxODYsMTcgQEAgZXh0cmFjdF9yb2xsdXBfc2V0cyhMaXN0ICpncm91cGluZ1Nl dHMpCiAJICogdGllZCB1cCBhIG5vbnRyaXZpYWwgYW1vdW50IG9mIG1lbW9yeS4pCiAJICovCiAJ QmlwYXJ0aXRlTWF0Y2hGcmVlKHN0YXRlKTsKLQlwZnJlZShyZXN1bHRzKTsKLQlwZnJlZShjaGFp bnMpOworCXN0YWNrX2J1ZmZlcl9mcmVlKHJlc3VsdHMpOworCXN0YWNrX2J1ZmZlcl9mcmVlKGNo YWlucyk7CiAJZm9yIChpID0gMTsgaSA8PSBudW1fc2V0czsgKytpKQogCQlpZiAoYWRqYWNlbmN5 W2ldKQogCQkJcGZyZWUoYWRqYWNlbmN5W2ldKTsKLQlwZnJlZShhZGphY2VuY3kpOwotCXBmcmVl KGFkamFjZW5jeV9idWYpOwotCXBmcmVlKG9yaWdfc2V0cyk7CisJc3RhY2tfYnVmZmVyX2ZyZWUo YWRqYWNlbmN5KTsKKwlzdGFja19idWZmZXJfZnJlZShhZGphY2VuY3lfYnVmKTsKKwlzdGFja19i dWZmZXJfZnJlZShvcmlnX3NldHMpOwogCWZvciAoaSA9IDE7IGkgPD0gbnVtX3NldHM7ICsraSkK IAkJYm1zX2ZyZWUoc2V0X21hc2tzW2ldKTsKLQlwZnJlZShzZXRfbWFza3MpOworCXN0YWNrX2J1 ZmZlcl9mcmVlKHNldF9tYXNrcyk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpAQCAtNjAzMyw4ICs2 MDM2LDEyIEBAIHNlbGVjdF9hY3RpdmVfd2luZG93cyhQbGFubmVySW5mbyAqcm9vdCwgV2luZG93 RnVuY0xpc3RzICp3Zmxpc3RzKQogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKIAlMaXN0Q2VsbCAg ICpsYzsKIAlpbnQJCQluQWN0aXZlID0gMDsKLQlXaW5kb3dDbGF1c2VTb3J0RGF0YSAqYWN0aXZl cyA9IHBhbGxvY19hcnJheShXaW5kb3dDbGF1c2VTb3J0RGF0YSwKLQkJCQkJCQkJCQkJCSBsaXN0 X2xlbmd0aCh3aW5kb3dDbGF1c2UpKTsKKwlXaW5kb3dDbGF1c2VTb3J0RGF0YSAqYWN0aXZlczsK KworCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKKwlhY3RpdmVzID0gc3RhY2tfYnVmZmVyX2Fs bG9jX2FycmF5KFdpbmRvd0NsYXVzZVNvcnREYXRhLAorCQkJCQkJCQkJICAgbGlzdF9sZW5ndGgo d2luZG93Q2xhdXNlKSk7CiAKIAkvKiBGaXJzdCwgY29uc3RydWN0IGFuIGFycmF5IG9mIHRoZSBh Y3RpdmUgd2luZG93cyAqLwogCWZvcmVhY2gobGMsIHdpbmRvd0NsYXVzZSkKQEAgLTYwOTMsNyAr NjEwMCw3IEBAIHNlbGVjdF9hY3RpdmVfd2luZG93cyhQbGFubmVySW5mbyAqcm9vdCwgV2luZG93 RnVuY0xpc3RzICp3Zmxpc3RzKQogCWZvciAoaW50IGkgPSAwOyBpIDwgbkFjdGl2ZTsgaSsrKQog CQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgYWN0aXZlc1tpXS53Yyk7CiAKLQlwZnJlZShhY3Rp dmVzKTsKKwlzdGFja19idWZmZXJfZnJlZShhY3RpdmVzKTsKIAogCXJldHVybiByZXN1bHQ7CiB9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwYWdnLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwYWdnLmMKaW5kZXggMzczN2NjMTViYTEuLmYxZDA0 NjY1MDRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwYWdnLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGFnZy5jCkBAIC00OSw2ICs0OSw3 IEBACiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2Fj aGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3N0YWNr X2J1ZmZlci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKIHN0YXRpYyBib29sIHBy ZXByb2Nlc3NfYWdncmVmc193YWxrZXIoTm9kZSAqbm9kZSwgUGxhbm5lckluZm8gKnJvb3QpOwpA QCAtNTI1LDExICs1MjYsMTMgQEAgR2V0QWdnSW5pdFZhbChEYXR1bSB0ZXh0SW5pdFZhbCwgT2lk IHRyYW5zdHlwZSkKIAljaGFyCSAgICpzdHJJbml0VmFsOwogCURhdHVtCQlpbml0VmFsOwogCisJ REVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCWdldFR5cGVJbnB1dEluZm8odHJhbnN0eXBlLCAm dHlwaW5wdXQsICZ0eXBpb3BhcmFtKTsKLQlzdHJJbml0VmFsID0gVGV4dERhdHVtR2V0Q1N0cmlu Zyh0ZXh0SW5pdFZhbCk7CisJc3RySW5pdFZhbCA9IHN0YWNrX2J1ZmZlcl90ZXh0X2RhdHVtX3Rv X2NzdHJpbmcodGV4dEluaXRWYWwpOwogCWluaXRWYWwgPSBPaWRJbnB1dEZ1bmN0aW9uQ2FsbCh0 eXBpbnB1dCwgc3RySW5pdFZhbCwKIAkJCQkJCQkJICAgdHlwaW9wYXJhbSwgLTEpOwotCXBmcmVl KHN0ckluaXRWYWwpOworCXN0YWNrX2J1ZmZlcl9mcmVlKHN0ckluaXRWYWwpOwogCXJldHVybiBp bml0VmFsOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVw dW5pb24uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXB1bmlvbi5jCmluZGV4IGY1 MGMyOTZlM2Q5Li45ODE2ZTMxNWJhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3ByZXAvcHJlcHVuaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHVu aW9uLmMKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvdGxpc3QuaCIKICNp bmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgiCiAjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3Mu aCIKKyNpbmNsdWRlICJ1dGlscy9zdGFja19idWZmZXIuaCIKIAogCiBzdGF0aWMgUmVsT3B0SW5m byAqcmVjdXJzZV9zZXRfb3BlcmF0aW9ucyhOb2RlICpzZXRPcCwgUGxhbm5lckluZm8gKnJvb3Qs CkBAIC0xNjI4LDEzICsxNjI5LDE1IEBAIGdlbmVyYXRlX2FwcGVuZF90bGlzdChMaXN0ICpjb2xU eXBlcywgTGlzdCAqY29sQ29sbGF0aW9ucywKIAlMaXN0Q2VsbCAgICp0bGlzdGw7CiAJaW50MzIJ ICAgKmNvbFR5cG1vZHM7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJLyoKIAkgKiBG aXJzdCBleHRyYWN0IHR5cG1vZHMgdG8gdXNlLgogCSAqCiAJICogSWYgdGhlIGlucHV0cyBhbGwg YWdyZWUgb24gdHlwZSBhbmQgdHlwbW9kIG9mIGEgcGFydGljdWxhciBjb2x1bW4sIHVzZQogCSAq IHRoYXQgdHlwbW9kOyBlbHNlIHVzZSAtMS4KIAkgKi8KLQljb2xUeXBtb2RzID0gcGFsbG9jX2Fy cmF5KGludDMyLCBsaXN0X2xlbmd0aChjb2xUeXBlcykpOworCWNvbFR5cG1vZHMgPSBzdGFja19i dWZmZXJfYWxsb2NfYXJyYXkoaW50MzIsIGxpc3RfbGVuZ3RoKGNvbFR5cGVzKSk7CiAKIAlmb3Jl YWNoKHRsaXN0bCwgaW5wdXRfdGxpc3RzKQogCXsKQEAgLTE3MDUsNyArMTcwOCw3IEBAIGdlbmVy YXRlX2FwcGVuZF90bGlzdChMaXN0ICpjb2xUeXBlcywgTGlzdCAqY29sQ29sbGF0aW9ucywKIAkJ dGxpc3QgPSBsYXBwZW5kKHRsaXN0LCB0bGUpOwogCX0KIAotCXBmcmVlKGNvbFR5cG1vZHMpOwor CXN0YWNrX2J1ZmZlcl9mcmVlKGNvbFR5cG1vZHMpOwogCiAJcmV0dXJuIHRsaXN0OwogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCmluZGV4IGYwZjhlMjUxNWVjLi40YjUwYzU2OTkx ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwpAQCAtNTksNiArNTksNyBAQAog I2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zdGFja19idWZm ZXIuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNh Y2hlLmgiCiAKQEAgLTUwNjksMTEgKzUwNzAsMTMgQEAgZmV0Y2hfZnVuY3Rpb25fZGVmYXVsdHMo SGVhcFR1cGxlIGZ1bmNfdHVwbGUpCiAJRGF0dW0JCXByb2FyZ2RlZmF1bHRzOwogCWNoYXIJICAg KnN0cjsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAlwcm9hcmdkZWZhdWx0cyA9IFN5 c0NhY2hlR2V0QXR0ck5vdE51bGwoUFJPQ09JRCwgZnVuY190dXBsZSwKIAkJCQkJCQkJCQkJQW51 bV9wZ19wcm9jX3Byb2FyZ2RlZmF1bHRzKTsKLQlzdHIgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHBy b2FyZ2RlZmF1bHRzKTsKKwlzdHIgPSBzdGFja19idWZmZXJfdGV4dF9kYXR1bV90b19jc3RyaW5n KHByb2FyZ2RlZmF1bHRzKTsKIAlkZWZhdWx0cyA9IGNhc3ROb2RlKExpc3QsIHN0cmluZ1RvTm9k ZShzdHIpKTsKLQlwZnJlZShzdHIpOworCXN0YWNrX2J1ZmZlcl9mcmVlKHN0cik7CiAJcmV0dXJu IGRlZmF1bHRzOwogfQogCkBAIC02MjczLDEwICs2Mjc2LDEyIEBAIG1ha2VfU0FPUF9leHByKE9p ZCBvcGVyLCBOb2RlICpsZWZ0ZXhwciwgT2lkIGNvbHR5cGUsIE9pZCBhcnJheWNvbGxpZCwKIAkJ aW50CQkJZGltc1sxXSA9IHtsaXN0X2xlbmd0aChleHBycyl9OwogCQlpbnQJCQlsYnNbMV0gPSB7 MX07CiAKKwkJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCQlnZXRfdHlwbGVuYnl2YWxhbGln bihjb2x0eXBlLCAmdHlwbGVuLCAmdHlwYnl2YWwsICZ0eXBhbGlnbik7CiAKLQkJZWxlbXMgPSBw YWxsb2NfYXJyYXkoRGF0dW0sIGxpc3RfbGVuZ3RoKGV4cHJzKSk7Ci0JCW51bGxzID0gcGFsbG9j X2FycmF5KGJvb2wsIGxpc3RfbGVuZ3RoKGV4cHJzKSk7CisJCWVsZW1zID0gc3RhY2tfYnVmZmVy X2FsbG9jX2FycmF5KERhdHVtLCBsaXN0X2xlbmd0aChleHBycykpOworCQludWxscyA9IHN0YWNr X2J1ZmZlcl9hbGxvY19hcnJheShib29sLCBsaXN0X2xlbmd0aChleHBycykpOwogCQlmb3JlYWNo X25vZGUoQ29uc3QsIHZhbHVlLCBleHBycykKIAkJewogCQkJZWxlbXNbaV0gPSB2YWx1ZS0+Y29u c3R2YWx1ZTsKQEAgLTYyODksOCArNjI5NCw4IEBAIG1ha2VfU0FPUF9leHByKE9pZCBvcGVyLCBO b2RlICpsZWZ0ZXhwciwgT2lkIGNvbHR5cGUsIE9pZCBhcnJheWNvbGxpZCwKIAkJCQkJCQkJCSAg IC0xLCBQb2ludGVyR2V0RGF0dW0oYXJyYXlDb25zdCksCiAJCQkJCQkJCQkgICBmYWxzZSwgZmFs c2UpOwogCi0JCXBmcmVlKGVsZW1zKTsKLQkJcGZyZWUobnVsbHMpOworCQlzdGFja19idWZmZXJf ZnJlZShlbGVtcyk7CisJCXN0YWNrX2J1ZmZlcl9mcmVlKG51bGxzKTsKIAkJbGlzdF9mcmVlKGV4 cHJzKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5j YXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCBiMmZiZDZh MDgyYi4uYTA4MGJhMGYyNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3BsYW5jYXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAg LTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1 dGlscy9wYXJ0Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGls cy9zdGFja19idWZmZXIuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAjaW5jbHVkZSAi dXRpbHMvc3lzY2FjaGUuaCIKIApAQCAtMTc4OCw5ICsxNzg5LDExIEBAIGdldF9yZWxhdGlvbl9z dGF0aXN0aWNzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQl7CiAJCQkJ Y2hhcgkgICAqZXhwcnNTdHJpbmc7CiAKLQkJCQlleHByc1N0cmluZyA9IFRleHREYXR1bUdldENT dHJpbmcoZGF0dW0pOworCQkJCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKKwkJCQlleHByc1N0 cmluZyA9IHN0YWNrX2J1ZmZlcl90ZXh0X2RhdHVtX3RvX2NzdHJpbmcoZGF0dW0pOwogCQkJCWV4 cHJzID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKGV4cHJzU3RyaW5nKTsKLQkJCQlwZnJlZShleHBy c1N0cmluZyk7CisJCQkJc3RhY2tfYnVmZmVyX2ZyZWUoZXhwcnNTdHJpbmcpOwogCiAJCQkJLyoK IAkJCQkgKiBNb2RpZnkgdGhlIGNvcGllcyB3ZSBvYnRhaW4gZnJvbSB0aGUgcmVsY2FjaGUgdG8g aGF2ZSB0aGUKLS0gCjIuNTMuMAoK --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0018-Use-stack-buffer-for-tlist-indexes-in-planner.patch" Content-Disposition: attachment; filename="v2-0018-Use-stack-buffer-for-tlist-indexes-in-planner.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt6thr18 RnJvbSA5YThkMGJkMTgwNjY5NDY1MWIwMmNjOTk0ODEwYmM5NzNkY2ZjMDI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMiBNYXIgMjAyNiAwMjozNTowMyArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MTgvMTldIFVzZSBzdGFjayBidWZmZXIgZm9yIHRsaXN0IGluZGV4ZXMgaW4gcGxhbm5lci4KCi0t LQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIHwgODYgKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDI4IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJl ZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCAxYjViOWI1 ZWQ5Yy4uYmMwNDhjMzk3YTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3NldHJlZnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAg LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNs dWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUgInRjb3AvdXRpbGl0eS5oIgor I2luY2x1ZGUgInV0aWxzL3N0YWNrX2J1ZmZlci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hl LmgiCiAKIApAQCAtMTY2LDcgKzE2NywxNSBAQCBzdGF0aWMgdm9pZCBzZXRfdXBwZXJfcmVmZXJl bmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbiwgaW50IHJ0b2Zmc2V0KTsKIHN0YXRp YyB2b2lkIHNldF9wYXJhbV9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFu KTsKIHN0YXRpYyBOb2RlICpjb252ZXJ0X2NvbWJpbmluZ19hZ2dyZWZzKE5vZGUgKm5vZGUsIHZv aWQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgc2V0X2R1bW15X3RsaXN0X3JlZmVyZW5jZXMoUGxh biAqcGxhbiwgaW50IHJ0b2Zmc2V0KTsKLXN0YXRpYyBpbmRleGVkX3RsaXN0ICpidWlsZF90bGlz dF9pbmRleChMaXN0ICp0bGlzdCk7CitzdGF0aWMgc2l6ZV90IHRsaXN0X2luZGV4X3NpemUoTGlz dCAqdGxpc3QpOworc3RhdGljIGluZGV4ZWRfdGxpc3QgKmZpbGxfdGxpc3RfaW5kZXgoaW5kZXhl ZF90bGlzdCAqaXRsaXN0LCBMaXN0ICp0bGlzdCk7CisjZGVmaW5lIGJ1aWxkX3RsaXN0X2luZGV4 KHRsaXN0KSBcCisJZmlsbF90bGlzdF9pbmRleChzdGFja19idWZmZXJfYWxsb2ModGxpc3RfaW5k ZXhfc2l6ZSh0bGlzdCkpLCAodGxpc3QpKQorI2RlZmluZSBidWlsZF90bGlzdF9pbmRleF9vdGhl cl92YXJzKHRsaXN0LCBpZ25vcmVfcmVsKSBcCisJZmlsbF90bGlzdF9pbmRleF9vdGhlcl92YXJz KHN0YWNrX2J1ZmZlcl9hbGxvYyh0bGlzdF9pbmRleF9zaXplKHRsaXN0KSksIFwKKwkJCQkJCQkJ KHRsaXN0KSwgKGlnbm9yZV9yZWwpKQorI2RlZmluZSBmcmVlX3RsaXN0X2luZGV4KGl0bGlzdCkg XAorCXN0YWNrX2J1ZmZlcl9mcmVlKGl0bGlzdCkKIHN0YXRpYyBWYXIgKnNlYXJjaF9pbmRleGVk X3RsaXN0X2Zvcl92YXIoVmFyICp2YXIsCiAJCQkJCQkJCQkJIGluZGV4ZWRfdGxpc3QgKml0bGlz dCwKIAkJCQkJCQkJCQkgaW50IG5ld3Zhcm5vLApAQCAtNjQzLDYgKzY1Miw4IEBAIHNldF9wbGFu X3JlZnMoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4sIGludCBydG9mZnNldCkKIHsKIAlM aXN0Q2VsbCAgICpsOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCWlmIChwbGFuID09 IE5VTEwpCiAJCXJldHVybiBOVUxMOwogCkBAIC0xMTgyLDcgKzExOTMsNyBAQCBzZXRfcGxhbl9y ZWZzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLCBpbnQgcnRvZmZzZXQpCiAJCQkJCQkJ CQkgIGxpbml0aWFsX2ludChzcGxhbi0+cmVzdWx0UmVsYXRpb25zKSwKIAkJCQkJCQkJCSAgcnRv ZmZzZXQsIE5STV9FUVVBTCwgTlVNX0VYRUNfUVVBTChwbGFuKSk7CiAKLQkJCQkJcGZyZWUoaXRs aXN0KTsKKwkJCQkJZnJlZV90bGlzdF9pbmRleChpdGxpc3QpOwogCiAJCQkJCXNwbGFuLT5leGNs UmVsVGxpc3QgPQogCQkJCQkJZml4X3NjYW5fbGlzdChyb290LCBzcGxhbi0+ZXhjbFJlbFRsaXN0 LCBydG9mZnNldCwgMSk7CkBAIC0xMzgzLDYgKzEzOTQsOCBAQCBzZXRfaW5kZXhvbmx5c2Nhbl9y ZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCUxpc3QJICAgKnN0cmlwcGVkX2luZGV4dGxp c3Q7CiAJTGlzdENlbGwgICAqbGM7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJLyoK IAkgKiBWYXJzIGluIHRoZSBwbGFuIG5vZGUncyB0YXJnZXRsaXN0LCBxdWFsLCBhbmQgcmVjaGVj a3F1YWwgbXVzdCBvbmx5CiAJICogcmVmZXJlbmNlIGNvbHVtbnMgdGhhdCB0aGUgaW5kZXggQU0g Y2FuIGFjdHVhbGx5IHJldHVybi4gIFRvIGVuc3VyZQpAQCAtMTQzNiw3ICsxNDQ5LDcgQEAgc2V0 X2luZGV4b25seXNjYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlwbGFuLT5pbmRl eHRsaXN0ID0gZml4X3NjYW5fbGlzdChyb290LCBwbGFuLT5pbmRleHRsaXN0LAogCQkJCQkJCQkJ IHJ0b2Zmc2V0LCBOVU1fRVhFQ19UTElTVCgoUGxhbiAqKSBwbGFuKSk7CiAKLQlwZnJlZShpbmRl eF9pdGxpc3QpOworCWZyZWVfdGxpc3RfaW5kZXgoaW5kZXhfaXRsaXN0KTsKIAogCXJldHVybiAo UGxhbiAqKSBwbGFuOwogfQpAQCAtMTY0Myw2ICsxNjU2LDggQEAgc2V0X2ZvcmVpZ25zY2FuX3Jl ZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkgICBGb3JlaWduU2NhbiAqZnNjYW4s CiAJCQkJCQkgICBpbnQgcnRvZmZzZXQpCiB7CisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwog CS8qIEFkanVzdCBzY2FucmVsaWQgaWYgaXQncyB2YWxpZCAqLwogCWlmIChmc2Nhbi0+c2Nhbi5z Y2FucmVsaWQgPiAwKQogCQlmc2Nhbi0+c2Nhbi5zY2FucmVsaWQgKz0gcnRvZmZzZXQ7CkBAIC0x Njg3LDcgKzE3MDIsNyBAQCBzZXRfZm9yZWlnbnNjYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAq cm9vdCwKIAkJCQkJCSAgIHJ0b2Zmc2V0LAogCQkJCQkJICAgTlJNX0VRVUFMLAogCQkJCQkJICAg TlVNX0VYRUNfUVVBTCgoUGxhbiAqKSBmc2NhbikpOwotCQlwZnJlZShpdGxpc3QpOworCQlmcmVl X3RsaXN0X2luZGV4KGl0bGlzdCk7CiAJCS8qIGZkd19zY2FuX3RsaXN0IGl0c2VsZiBqdXN0IG5l ZWRzIGZpeF9zY2FuX2xpc3QoKSBhZGp1c3RtZW50cyAqLwogCQlmc2Nhbi0+ZmR3X3NjYW5fdGxp c3QgPQogCQkJZml4X3NjYW5fbGlzdChyb290LCBmc2Nhbi0+ZmR3X3NjYW5fdGxpc3QsCkBAIC0x NzMyLDYgKzE3NDcsOCBAQCBzZXRfY3VzdG9tc2Nhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpy b290LAogewogCUxpc3RDZWxsICAgKmxjOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwog CS8qIEFkanVzdCBzY2FucmVsaWQgaWYgaXQncyB2YWxpZCAqLwogCWlmIChjc2Nhbi0+c2Nhbi5z Y2FucmVsaWQgPiAwKQogCQljc2Nhbi0+c2Nhbi5zY2FucmVsaWQgKz0gcnRvZmZzZXQ7CkBAIC0x NzY1LDcgKzE3ODIsNyBAQCBzZXRfY3VzdG9tc2Nhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpy b290LAogCQkJCQkJICAgcnRvZmZzZXQsCiAJCQkJCQkgICBOUk1fRVFVQUwsCiAJCQkJCQkgICBO VU1fRVhFQ19RVUFMKChQbGFuICopIGNzY2FuKSk7Ci0JCXBmcmVlKGl0bGlzdCk7CisJCWZyZWVf dGxpc3RfaW5kZXgoaXRsaXN0KTsKIAkJLyogY3VzdG9tX3NjYW5fdGxpc3QgaXRzZWxmIGp1c3Qg bmVlZHMgZml4X3NjYW5fbGlzdCgpIGFkanVzdG1lbnRzICovCiAJCWNzY2FuLT5jdXN0b21fc2Nh bl90bGlzdCA9CiAJCQlmaXhfc2Nhbl9saXN0KHJvb3QsIGNzY2FuLT5jdXN0b21fc2Nhbl90bGlz dCwKQEAgLTIwMjgsNiArMjA0NSw4IEBAIHNldF9oYXNoX3JlZmVyZW5jZXMoUGxhbm5lckluZm8g KnJvb3QsIFBsYW4gKnBsYW4sIGludCBydG9mZnNldCkKIAlQbGFuCSAgICpvdXRlcl9wbGFuID0g cGxhbi0+bGVmdHRyZWU7CiAJaW5kZXhlZF90bGlzdCAqb3V0ZXJfaXRsaXN0OwogCisJREVDTEFS RV9TVEFDS19CVUZGRVIoKTsKKwogCS8qCiAJICogSGFzaCdzIGhhc2hrZXlzIGFyZSB1c2VkIHdo ZW4gZmVlZGluZyB0dXBsZXMgaW50byB0aGUgaGFzaHRhYmxlLAogCSAqIHRoZXJlZm9yZSBoYXZl IHRoZW0gcmVmZXJlbmNlIEhhc2gncyBvdXRlciBwbGFuICh3aGljaCBpdHNlbGYgaXMgdGhlCkBA IC0yMDQyLDYgKzIwNjEsNyBAQCBzZXRfaGFzaF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290 LCBQbGFuICpwbGFuLCBpbnQgcnRvZmZzZXQpCiAJCQkJCSAgIHJ0b2Zmc2V0LAogCQkJCQkgICBO Uk1fRVFVQUwsCiAJCQkJCSAgIE5VTV9FWEVDX1FVQUwocGxhbikpOworCWZyZWVfdGxpc3RfaW5k ZXgob3V0ZXJfaXRsaXN0KTsKIAogCS8qIEhhc2ggZG9lc24ndCBwcm9qZWN0ICovCiAJc2V0X2R1 bW15X3RsaXN0X3JlZmVyZW5jZXMocGxhbiwgcnRvZmZzZXQpOwpAQCAtMjQwOCw2ICsyNDI4LDgg QEAgc2V0X2pvaW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgSm9pbiAqam9pbiwgaW50 IHJ0b2Zmc2V0KQogCWluZGV4ZWRfdGxpc3QgKm91dGVyX2l0bGlzdDsKIAlpbmRleGVkX3RsaXN0 ICppbm5lcl9pdGxpc3Q7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJb3V0ZXJfaXRs aXN0ID0gYnVpbGRfdGxpc3RfaW5kZXgob3V0ZXJfcGxhbi0+dGFyZ2V0bGlzdCk7CiAJaW5uZXJf aXRsaXN0ID0gYnVpbGRfdGxpc3RfaW5kZXgoaW5uZXJfcGxhbi0+dGFyZ2V0bGlzdCk7CiAKQEAg LTI1MjcsOCArMjU0OSw4IEBAIHNldF9qb2luX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3Qs IEpvaW4gKmpvaW4sIGludCBydG9mZnNldCkKIAkJCQkJCQkJCShqb2luLT5qb2ludHlwZSA9PSBK T0lOX0lOTkVSID8gTlJNX0VRVUFMIDogTlJNX1NVUEVSU0VUKSwKIAkJCQkJCQkJCU5VTV9FWEVD X1FVQUwoKFBsYW4gKikgam9pbikpOwogCi0JcGZyZWUob3V0ZXJfaXRsaXN0KTsKLQlwZnJlZShp bm5lcl9pdGxpc3QpOworCWZyZWVfdGxpc3RfaW5kZXgob3V0ZXJfaXRsaXN0KTsKKwlmcmVlX3Rs aXN0X2luZGV4KGlubmVyX2l0bGlzdCk7CiB9CiAKIC8qCkBAIC0yNTU3LDYgKzI1NzksOCBAQCBz ZXRfdXBwZXJfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbiwgaW50IHJ0 b2Zmc2V0KQogCUxpc3QJICAgKm91dHB1dF90YXJnZXRsaXN0OwogCUxpc3RDZWxsICAgKmw7CiAK KwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJc3VicGxhbl9pdGxpc3QgPSBidWlsZF90bGlz dF9pbmRleChzdWJwbGFuLT50YXJnZXRsaXN0KTsKIAogCS8qCkBAIC0yNjI3LDcgKzI2NTEsNyBA QCBzZXRfdXBwZXJfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbiwgaW50 IHJ0b2Zmc2V0KQogCQkJCQkgICBOUk1fRVFVQUwsCiAJCQkJCSAgIE5VTV9FWEVDX1FVQUwocGxh bikpOwogCi0JcGZyZWUoc3VicGxhbl9pdGxpc3QpOworCWZyZWVfdGxpc3RfaW5kZXgoc3VicGxh bl9pdGxpc3QpOwogfQogCiAvKgpAQCAtMjgxNSw3ICsyODM5LDE5IEBAIHNldF9kdW1teV90bGlz dF9yZWZlcmVuY2VzKFBsYW4gKnBsYW4sIGludCBydG9mZnNldCkKIAogCiAvKgotICogYnVpbGRf dGxpc3RfaW5kZXggLS0tIGJ1aWxkIGFuIGluZGV4IGRhdGEgc3RydWN0dXJlIGZvciBhIGNoaWxk IHRsaXN0CisgKiB0bGlzdF9pbmRleF9zaXplIC0tLSBjb21wdXRlIG1lbW9yeSByZXF1aXJlZCB0 byBhbiBpbmRleGVkX3RsaXN0LgorICovCitzdGF0aWMgc2l6ZV90Cit0bGlzdF9pbmRleF9zaXpl KExpc3QgKnRsaXN0KQoreworCS8qIFJlcXVpcmUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBlbm91Z2gg c2xvdHMgZm9yIGFsbCB0bGlzdCBlbnRyaWVzICovCisJcmV0dXJuIG9mZnNldG9mKGluZGV4ZWRf dGxpc3QsIHZhcnMpICsKKwkJbGlzdF9sZW5ndGgodGxpc3QpICogc2l6ZW9mKHRsaXN0X3ZpbmZv KTsKK30KKworCisvKgorICogZmlsbF90bGlzdF9pbmRleCAtLS0gYnVpbGQgYW4gaW5kZXggZGF0 YSBzdHJ1Y3R1cmUgZm9yIGEgY2hpbGQgdGxpc3QKICAqCiAgKiBJbiBtb3N0IGNhc2VzLCBzdWJw bGFuIHRsaXN0cyB3aWxsIGJlICJmbGF0IiB0bGlzdHMgd2l0aCBvbmx5IFZhcnMsCiAgKiBzbyB3 ZSB0cnkgdG8gb3B0aW1pemUgdGhhdCBjYXNlIGJ5IGV4dHJhY3RpbmcgaW5mb3JtYXRpb24gYWJv dXQgVmFycwpAQCAtMjgyNSwyMCArMjg2MSwxNiBAQCBzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNl cyhQbGFuICpwbGFuLCBpbnQgcnRvZmZzZXQpCiAgKgogICogVGhlIHJlc3VsdCBvZiB0aGlzIGZ1 bmN0aW9uIGlzIGFuIGluZGV4ZWRfdGxpc3Qgc3RydWN0IHRvIHBhc3MgdG8KICAqIHNlYXJjaF9p bmRleGVkX3RsaXN0X2Zvcl92YXIoKSBhbmQgc2libGluZ3MuCi0gKiBXaGVuIGRvbmUsIHRoZSBp bmRleGVkX3RsaXN0IG1heSBiZSBmcmVlZCB3aXRoIGEgc2luZ2xlIHBmcmVlKCkuCisgKgorICog VGhlIG1hY3JvIGJ1aWxkX3RsaXN0X2luZGV4KCkgY2FuIGJlIHVzZWQgdG8gYWxsb2NhdGUgbWVt b3J5IGluIGEgc3RhY2sKKyAqIGJ1ZmZlci4gIFdoZW4gZG9uZSwgdGhlIGluZGV4ZWRfdGxpc3Qg bWF5IGJlIGZyZWVkIHdpdGggZnJlZV90bGlzdF9pbmRleCgpLgogICovCiBzdGF0aWMgaW5kZXhl ZF90bGlzdCAqCi1idWlsZF90bGlzdF9pbmRleChMaXN0ICp0bGlzdCkKK2ZpbGxfdGxpc3RfaW5k ZXgoaW5kZXhlZF90bGlzdCAqaXRsaXN0LCBMaXN0ICp0bGlzdCkKIHsKLQlpbmRleGVkX3RsaXN0 ICppdGxpc3Q7CiAJdGxpc3RfdmluZm8gKnZpbmZvOwogCUxpc3RDZWxsICAgKmw7CiAKLQkvKiBD cmVhdGUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBlbm91Z2ggc2xvdHMgZm9yIGFsbCB0bGlzdCBlbnRy aWVzICovCi0JaXRsaXN0ID0gKGluZGV4ZWRfdGxpc3QgKikKLQkJcGFsbG9jKG9mZnNldG9mKGlu ZGV4ZWRfdGxpc3QsIHZhcnMpICsKLQkJCSAgIGxpc3RfbGVuZ3RoKHRsaXN0KSAqIHNpemVvZih0 bGlzdF92aW5mbykpOwotCiAJaXRsaXN0LT50bGlzdCA9IHRsaXN0OwogCWl0bGlzdC0+aGFzX3Bo X3ZhcnMgPSBmYWxzZTsKIAlpdGxpc3QtPmhhc19ub25fdmFycyA9IGZhbHNlOwpAQCAtMjg3MSwy NSArMjkwMywxOSBAQCBidWlsZF90bGlzdF9pbmRleChMaXN0ICp0bGlzdCkKIH0KIAogLyoKLSAq IGJ1aWxkX3RsaXN0X2luZGV4X290aGVyX3ZhcnMgLS0tIGJ1aWxkIGEgcmVzdHJpY3RlZCB0bGlz dCBpbmRleAorICogZmlsbF90bGlzdF9pbmRleF9vdGhlcl92YXJzIC0tLSBidWlsZCBhIHJlc3Ry aWN0ZWQgdGxpc3QgaW5kZXgKICAqCi0gKiBUaGlzIGlzIGxpa2UgYnVpbGRfdGxpc3RfaW5kZXgs IGJ1dCB3ZSBvbmx5IGluZGV4IHRsaXN0IGVudHJpZXMgdGhhdAorICogVGhpcyBpcyBsaWtlIGZp bGxfdGxpc3RfaW5kZXgsIGJ1dCB3ZSBvbmx5IGluZGV4IHRsaXN0IGVudHJpZXMgdGhhdAogICog YXJlIFZhcnMgYmVsb25naW5nIHRvIHNvbWUgcmVsIG90aGVyIHRoYW4gdGhlIG9uZSBzcGVjaWZp ZWQuICBXZSB3aWxsIHNldAogICogaGFzX3BoX3ZhcnMgKGFsbG93aW5nIFBsYWNlSG9sZGVyVmFy cyB0byBiZSBtYXRjaGVkKSwgYnV0IG5vdCBoYXNfbm9uX3ZhcnMKICAqIChzbyBub3RoaW5nIG90 aGVyIHRoYW4gVmFycyBhbmQgUGxhY2VIb2xkZXJWYXJzIGNhbiBiZSBtYXRjaGVkKS4KICAqLwog c3RhdGljIGluZGV4ZWRfdGxpc3QgKgotYnVpbGRfdGxpc3RfaW5kZXhfb3RoZXJfdmFycyhMaXN0 ICp0bGlzdCwgaW50IGlnbm9yZV9yZWwpCitmaWxsX3RsaXN0X2luZGV4X290aGVyX3ZhcnMoaW5k ZXhlZF90bGlzdCAqaXRsaXN0LCBMaXN0ICp0bGlzdCwgaW50IGlnbm9yZV9yZWwpCiB7Ci0JaW5k ZXhlZF90bGlzdCAqaXRsaXN0OwogCXRsaXN0X3ZpbmZvICp2aW5mbzsKIAlMaXN0Q2VsbCAgICps OwogCi0JLyogQ3JlYXRlIGRhdGEgc3RydWN0dXJlIHdpdGggZW5vdWdoIHNsb3RzIGZvciBhbGwg dGxpc3QgZW50cmllcyAqLwotCWl0bGlzdCA9IChpbmRleGVkX3RsaXN0ICopCi0JCXBhbGxvYyhv ZmZzZXRvZihpbmRleGVkX3RsaXN0LCB2YXJzKSArCi0JCQkgICBsaXN0X2xlbmd0aCh0bGlzdCkg KiBzaXplb2YodGxpc3RfdmluZm8pKTsKLQogCWl0bGlzdC0+dGxpc3QgPSB0bGlzdDsKIAlpdGxp c3QtPmhhc19waF92YXJzID0gZmFsc2U7CiAJaXRsaXN0LT5oYXNfbm9uX3ZhcnMgPSBmYWxzZTsK QEAgLTM0NzYsNiArMzUwMiw4IEBAIHNldF9yZXR1cm5pbmdfY2xhdXNlX3JlZmVyZW5jZXMoUGxh bm5lckluZm8gKnJvb3QsCiB7CiAJaW5kZXhlZF90bGlzdCAqaXRsaXN0OwogCisJREVDTEFSRV9T VEFDS19CVUZGRVIoKTsKKwogCS8qCiAJICogV2UgY2FuIHBlcmZvcm0gdGhlIGRlc2lyZWQgVmFy IGZpeHVwIGJ5IGFidXNpbmcgdGhlIGZpeF9qb2luX2V4cHIKIAkgKiBtYWNoaW5lcnkgdGhhdCBm b3JtZXJseSBoYW5kbGVkIGlubmVyIGluZGV4c2NhbiBmaXh1cC4gIFdlIHNlYXJjaCB0aGUKQEAg LTM1MDEsNyArMzUyOSw3IEBAIHNldF9yZXR1cm5pbmdfY2xhdXNlX3JlZmVyZW5jZXMoUGxhbm5l ckluZm8gKnJvb3QsCiAJCQkJCQkgIE5STV9FUVVBTCwKIAkJCQkJCSAgTlVNX0VYRUNfVExJU1Qo dG9wcGxhbikpOwogCi0JcGZyZWUoaXRsaXN0KTsKKwlmcmVlX3RsaXN0X2luZGV4KGl0bGlzdCk7 CiAKIAlyZXR1cm4gcmxpc3Q7CiB9CkBAIC0zNTcwLDExICszNTk4LDEzIEBAIHNldF93aW5kb3dh Z2dfcnVuY29uZGl0aW9uX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJTGlzdAkgICAq bmV3bGlzdDsKIAlpbmRleGVkX3RsaXN0ICppdGxpc3Q7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZF UigpOworCiAJaXRsaXN0ID0gYnVpbGRfdGxpc3RfaW5kZXgocGxhbi0+dGFyZ2V0bGlzdCk7CiAK IAluZXdsaXN0ID0gZml4X3dpbmRvd2FnZ19jb25kaXRpb25fZXhwcihyb290LCBydW5jb25kaXRp b24sIGl0bGlzdCk7CiAKLQlwZnJlZShpdGxpc3QpOworCWZyZWVfdGxpc3RfaW5kZXgoaXRsaXN0 KTsKIAogCXJldHVybiBuZXdsaXN0OwogfQotLSAKMi41My4wCgo= --000000000000e053ac064cca0224 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0019-Use-stack-buffer-for-AppendRelInfos-in-planner.patch" Content-Disposition: attachment; filename="v2-0019-Use-stack-buffer-for-AppendRelInfos-in-planner.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmt6vww19 RnJvbSA1ZTg4OWQyZjUyYzlmNGI1ZjRhNzZmNmY2ZDg5YWZiZTA5MWQ0ZjFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMiBNYXIgMjAyNiAxMToyNDozNCArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MTkvMTldIFVzZSBzdGFjayBidWZmZXIgZm9yIEFwcGVuZFJlbEluZm9zIGluIHBsYW5uZXIuCgot LS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMgICB8IDE4ICsrKysrKy0t LQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgIHwgMjMgKysrKysrKyst LS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgfCAzMiArKysrKysr KysrLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgICAgfCAxMyAr KysrLS0tCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oICAgICAgfCA0OSArKysr KysrKysrKysrKysrKysrKysrKystCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAg ICAgICAgfCAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCAzMSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVs cy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYwppbmRleCA0NDNlMmRj YTdjMC4uYzU0ZDc3MWVkYTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2pvaW5yZWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYwpA QCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCiAjaW5jbHVk ZSAicGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5o IgorI2luY2x1ZGUgInV0aWxzL3N0YWNrX2J1ZmZlci5oIgogCiAKIHN0YXRpYyB2b2lkIG1ha2Vf cmVsc19ieV9jbGF1c2Vfam9pbnMoUGxhbm5lckluZm8gKnJvb3QsCkBAIC0xNjE5LDYgKzE2MjAs OSBAQCB0cnlfcGFydGl0aW9ud2lzZV9qb2luKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwxLCBSZWxPcHRJbmZvICpyZWwyLAogCUxpc3RDZWxsICAgKmxjcjEgPSBOVUxMOwogCUxp c3RDZWxsICAgKmxjcjIgPSBOVUxMOwogCWludAkJCWNudF9wYXJ0czsKKwlBcHBlbmRSZWxJbmZv QnVmZmVyIGFwcGluZm9zX2J1ZmZlciA9IHswfTsKKworCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7 CiAKIAkvKiBHdWFyZCBhZ2FpbnN0IHN0YWNrIG92ZXJmbG93IGR1ZSB0byBvdmVybHkgZGVlcCBw YXJ0aXRpb24gaGllcmFyY2h5LiAqLwogCWNoZWNrX3N0YWNrX2RlcHRoKCk7CkBAIC0xNzc0LDgg KzE3NzgsMTAgQEAgdHJ5X3BhcnRpdGlvbndpc2Vfam9pbihQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsMSwgUmVsT3B0SW5mbyAqcmVsMiwKIAogCQkvKiBGaW5kIHRoZSBBcHBlbmRS ZWxJbmZvIHN0cnVjdHVyZXMgKi8KIAkJY2hpbGRfcmVsaWRzID0gYm1zX3VuaW9uKGNoaWxkX3Jl bDEtPnJlbGlkcywgY2hpbGRfcmVsMi0+cmVsaWRzKTsKLQkJYXBwaW5mb3MgPSBmaW5kX2FwcGlu Zm9zX2J5X3JlbGlkcyhyb290LCBjaGlsZF9yZWxpZHMsCi0JCQkJCQkJCQkJICAgJm5hcHBpbmZv cyk7CisJCWFwcGluZm9zID0gZmluZF9hcHBpbmZvc19ieV9yZWxpZHNfd2l0aF9idWZmZXIoJmFw cGluZm9zX2J1ZmZlciwKKwkJCQkJCQkJCQkJCQkgICByb290LAorCQkJCQkJCQkJCQkJCSAgIGNo aWxkX3JlbGlkcywKKwkJCQkJCQkJCQkJCQkgICAmbmFwcGluZm9zKTsKIAogCQkvKgogCQkgKiBD b25zdHJ1Y3QgcmVzdHJpY3Rpb25zIGFwcGxpY2FibGUgdG8gdGhlIGNoaWxkIGpvaW4gZnJvbSB0 aG9zZQpAQCAtMTgyMCwxMCArMTgyNiwxMCBAQCB0cnlfcGFydGl0aW9ud2lzZV9qb2luKFBsYW5u ZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwxLCBSZWxPcHRJbmZvICpyZWwyLAogCQkgKiBh cmUgb25seSBuZWVkZWQgd2l0aGluIHRoZSBsb29wLiAgRnJlZSB0aGVzZSBsb2NhbCBvYmplY3Rz IGVhZ2VybHkKIAkJICogYXQgdGhlIGVuZCBvZiBlYWNoIGl0ZXJhdGlvbi4KIAkJICovCi0JCXBm cmVlKGFwcGluZm9zKTsKIAkJYm1zX2ZyZWUoY2hpbGRfcmVsaWRzKTsKIAkJZnJlZV9jaGlsZF9q b2luX3NqaW5mbyhjaGlsZF9zamluZm8sIHBhcmVudF9zamluZm8pOwogCX0KKwlmcmVlX2FwcGlu Zm9zX2J1ZmZlcigmYXBwaW5mb3NfYnVmZmVyKTsKIH0KIAogLyoKQEAgLTE4NDQsNiArMTg1MCw4 IEBAIGJ1aWxkX2NoaWxkX2pvaW5fc2ppbmZvKFBsYW5uZXJJbmZvICpyb290LCBTcGVjaWFsSm9p bkluZm8gKnBhcmVudF9zamluZm8sCiAJQXBwZW5kUmVsSW5mbyAqKnJpZ2h0X2FwcGluZm9zOwog CWludAkJCXJpZ2h0X25hcHBpbmZvczsKIAorCURFQ0xBUkVfU1RBQ0tfQlVGRkVSKCk7CisKIAkv KiBEdW1teSBTcGVjaWFsSm9pbkluZm9zIGNhbiBiZSBjcmVhdGVkIHdpdGhvdXQgYW55IHRyYW5z bGF0aW9uLiAqLwogCWlmIChwYXJlbnRfc2ppbmZvLT5qb2ludHlwZSA9PSBKT0lOX0lOTkVSKQog CXsKQEAgLTE4NzQsOCArMTg4Miw4IEBAIGJ1aWxkX2NoaWxkX2pvaW5fc2ppbmZvKFBsYW5uZXJJ bmZvICpyb290LCBTcGVjaWFsSm9pbkluZm8gKnBhcmVudF9zamluZm8sCiAJCQkJCQkJCQkJCQkJ CQkgcmlnaHRfbmFwcGluZm9zLAogCQkJCQkJCQkJCQkJCQkJIHJpZ2h0X2FwcGluZm9zKTsKIAot CXBmcmVlKGxlZnRfYXBwaW5mb3MpOwotCXBmcmVlKHJpZ2h0X2FwcGluZm9zKTsKKwlmcmVlX2Fw cGluZm9zKGxlZnRfYXBwaW5mb3MpOworCWZyZWVfYXBwaW5mb3MocmlnaHRfYXBwaW5mb3MpOwog CiAJcmV0dXJuIHNqaW5mbzsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRl eCAyNGFkNDFkNGVjNi4uNjRiNGU5ODYzOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMKQEAgLTc5NjYsNiArNzk2Niw4IEBAIGFwcGx5X3NjYW5qb2luX3RhcmdldF90b19wYXRo cyhQbGFubmVySW5mbyAqcm9vdCwKIAlQYXRoVGFyZ2V0ICpzY2Fuam9pbl90YXJnZXQ7CiAJTGlz dENlbGwgICAqbGM7CiAKKwlERUNMQVJFX1NUQUNLX0JVRkZFUigpOworCiAJLyogVGhpcyByZWN1 cnNlcywgc28gYmUgcGFyYW5vaWQuICovCiAJY2hlY2tfc3RhY2tfZGVwdGgoKTsKIApAQCAtODEx MSw2ICs4MTEzLDcgQEAgYXBwbHlfc2NhbmpvaW5fdGFyZ2V0X3RvX3BhdGhzKFBsYW5uZXJJbmZv ICpyb290LAogCXsKIAkJTGlzdAkgICAqbGl2ZV9jaGlsZHJlbiA9IE5JTDsKIAkJaW50CQkJaTsK KwkJQXBwZW5kUmVsSW5mb0J1ZmZlciBhcHBpbmZvc19idWZmZXIgPSB7MH07CiAKIAkJLyogQWRq dXN0IGVhY2ggcGFydGl0aW9uLiAqLwogCQlpID0gLTE7CkBAIC04MTI4LDggKzgxMzEsMTAgQEAg YXBwbHlfc2NhbmpvaW5fdGFyZ2V0X3RvX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCWNv bnRpbnVlOwogCiAJCQkvKiBUcmFuc2xhdGUgc2Nhbi9qb2luIHRhcmdldHMgZm9yIHRoaXMgY2hp bGQuICovCi0JCQlhcHBpbmZvcyA9IGZpbmRfYXBwaW5mb3NfYnlfcmVsaWRzKHJvb3QsIGNoaWxk X3JlbC0+cmVsaWRzLAotCQkJCQkJCQkJCQkgICAmbmFwcGluZm9zKTsKKwkJCWFwcGluZm9zID0g ZmluZF9hcHBpbmZvc19ieV9yZWxpZHNfd2l0aF9idWZmZXIoJmFwcGluZm9zX2J1ZmZlciwKKwkJ CQkJCQkJCQkJCQkJICAgcm9vdCwKKwkJCQkJCQkJCQkJCQkJICAgY2hpbGRfcmVsLT5yZWxpZHMs CisJCQkJCQkJCQkJCQkJCSAgICZuYXBwaW5mb3MpOwogCQkJZm9yZWFjaChsYywgc2NhbmpvaW5f dGFyZ2V0cykKIAkJCXsKIAkJCQlQYXRoVGFyZ2V0ICp0YXJnZXQgPSBsZmlyc3Rfbm9kZShQYXRo VGFyZ2V0LCBsYyk7CkBAIC04MTQyLDcgKzgxNDcsNiBAQCBhcHBseV9zY2Fuam9pbl90YXJnZXRf dG9fcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJY2hpbGRfc2NhbmpvaW5fdGFyZ2V0cyA9 IGxhcHBlbmQoY2hpbGRfc2NhbmpvaW5fdGFyZ2V0cywKIAkJCQkJCQkJCQkJCSB0YXJnZXQpOwog CQkJfQotCQkJcGZyZWUoYXBwaW5mb3MpOwogCiAJCQkvKiBSZWN1cnNpb24gZG9lcyB0aGUgcmVh bCB3b3JrLiAqLwogCQkJYXBwbHlfc2NhbmpvaW5fdGFyZ2V0X3RvX3BhdGhzKHJvb3QsIGNoaWxk X3JlbCwKQEAgLTgxNTUsNiArODE1OSw3IEBAIGFwcGx5X3NjYW5qb2luX3RhcmdldF90b19wYXRo cyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCWlmICghSVNfRFVNTVlfUkVMKGNoaWxkX3JlbCkpCiAJ CQkJbGl2ZV9jaGlsZHJlbiA9IGxhcHBlbmQobGl2ZV9jaGlsZHJlbiwgY2hpbGRfcmVsKTsKIAkJ fQorCQlmcmVlX2FwcGluZm9zX2J1ZmZlcigmYXBwaW5mb3NfYnVmZmVyKTsKIAogCQkvKiBCdWls ZCBuZXcgcGF0aHMgZm9yIHRoaXMgcmVsYXRpb24gYnkgYXBwZW5kaW5nIGNoaWxkIHBhdGhzLiAq LwogCQlhZGRfcGF0aHNfdG9fYXBwZW5kX3JlbChyb290LCByZWwsIGxpdmVfY2hpbGRyZW4pOwpA QCAtODIxMCw2ICs4MjE1LDkgQEAgY3JlYXRlX3BhcnRpdGlvbndpc2VfZ3JvdXBpbmdfcGF0aHMo UGxhbm5lckluZm8gKnJvb3QsCiAJUGF0aFRhcmdldCAqdGFyZ2V0ID0gZ3JvdXBlZF9yZWwtPnJl bHRhcmdldDsKIAlib29sCQlwYXJ0aWFsX2dyb3VwaW5nX3ZhbGlkID0gdHJ1ZTsKIAlpbnQJCQlp OworCUFwcGVuZFJlbEluZm9CdWZmZXIgYXBwaW5mb3NfYnVmZmVyID0gezB9OworCisJREVDTEFS RV9TVEFDS19CVUZGRVIoKTsKIAogCUFzc2VydChwYXR5cGUgIT0gUEFSVElUSU9OV0lTRV9BR0dS RUdBVEVfTk9ORSk7CiAJQXNzZXJ0KHBhdHlwZSAhPSBQQVJUSVRJT05XSVNFX0FHR1JFR0FURV9Q QVJUSUFMIHx8CkBAIC04MjQxLDggKzgyNDksMTAgQEAgY3JlYXRlX3BhcnRpdGlvbndpc2VfZ3Jv dXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJCSAqLwogCQltZW1jcHkoJmNoaWxkX2V4 dHJhLCBleHRyYSwgc2l6ZW9mKGNoaWxkX2V4dHJhKSk7CiAKLQkJYXBwaW5mb3MgPSBmaW5kX2Fw cGluZm9zX2J5X3JlbGlkcyhyb290LCBjaGlsZF9pbnB1dF9yZWwtPnJlbGlkcywKLQkJCQkJCQkJ CQkgICAmbmFwcGluZm9zKTsKKwkJYXBwaW5mb3MgPSBmaW5kX2FwcGluZm9zX2J5X3JlbGlkc193 aXRoX2J1ZmZlcigmYXBwaW5mb3NfYnVmZmVyLAorCQkJCQkJCQkJCQkJCSAgIHJvb3QsCisJCQkJ CQkJCQkJCQkJICAgY2hpbGRfaW5wdXRfcmVsLT5yZWxpZHMsCisJCQkJCQkJCQkJCQkJICAgJm5h cHBpbmZvcyk7CiAKIAkJY2hpbGRfdGFyZ2V0LT5leHBycyA9IChMaXN0ICopCiAJCQlhZGp1c3Rf YXBwZW5kcmVsX2F0dHJzKHJvb3QsCkBAIC04Mjk2LDkgKzgzMDYsOCBAQCBjcmVhdGVfcGFydGl0 aW9ud2lzZV9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCWdyb3VwZWRfbGl2 ZV9jaGlsZHJlbiA9IGxhcHBlbmQoZ3JvdXBlZF9saXZlX2NoaWxkcmVuLAogCQkJCQkJCQkJCQlj aGlsZF9ncm91cGVkX3JlbCk7CiAJCX0KLQotCQlwZnJlZShhcHBpbmZvcyk7CiAJfQorCWZyZWVf YXBwaW5mb3NfYnVmZmVyKCZhcHBpbmZvc19idWZmZXIpOwogCiAJLyoKIAkgKiBUcnkgdG8gY3Jl YXRlIGFwcGVuZCBwYXRocyBmb3IgcGFydGlhbGx5IGdyb3VwZWQgY2hpbGRyZW4uIEZvciBmdWxs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKaW5kZXggZWFkZWNkMGJiOTIu LjEwNzYwMjM1Njk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBl bmRpbmZvLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jCkBA IC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0 aWxzL3N0YWNrX2J1ZmZlci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKIApAQCAt NjAwLDYgKzYwMSw4IEBAIGFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXVsdGlsZXZlbChQbGFubmVy SW5mbyAqcm9vdCwgTm9kZSAqbm9kZSwKIAlBcHBlbmRSZWxJbmZvICoqYXBwaW5mb3M7CiAJaW50 CQkJbmFwcGluZm9zOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCS8qIFJlY3Vyc2Ug aWYgaW1tZWRpYXRlIHBhcmVudCBpcyBub3QgdGhlIHRvcCBwYXJlbnQuICovCiAJaWYgKGNoaWxk cmVsLT5wYXJlbnQgIT0gcGFyZW50cmVsKQogCXsKQEAgLTYxMiwxMSArNjE1LDEyIEBAIGFkanVz dF9hcHBlbmRyZWxfYXR0cnNfbXVsdGlsZXZlbChQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9k ZSwKIAl9CiAKIAkvKiBOb3cgdHJhbnNsYXRlIGZvciB0aGlzIGNoaWxkLiAqLwotCWFwcGluZm9z ID0gZmluZF9hcHBpbmZvc19ieV9yZWxpZHMocm9vdCwgY2hpbGRyZWwtPnJlbGlkcywgJm5hcHBp bmZvcyk7CisJYXBwaW5mb3MgPSBmaW5kX2FwcGluZm9zX2J5X3JlbGlkcyhyb290LCBjaGlsZHJl bC0+cmVsaWRzLAorCQkJCQkJCQkJICAgJm5hcHBpbmZvcyk7CiAKIAlub2RlID0gYWRqdXN0X2Fw cGVuZHJlbF9hdHRycyhyb290LCBub2RlLCBuYXBwaW5mb3MsIGFwcGluZm9zKTsKIAotCXBmcmVl KGFwcGluZm9zKTsKKwlmcmVlX2FwcGluZm9zKGFwcGluZm9zKTsKIAogCXJldHVybiBub2RlOwog fQpAQCAtNjY3LDYgKzY3MSw4IEBAIGFkanVzdF9jaGlsZF9yZWxpZHNfbXVsdGlsZXZlbChQbGFu bmVySW5mbyAqcm9vdCwgUmVsaWRzIHJlbGlkcywKIAlBcHBlbmRSZWxJbmZvICoqYXBwaW5mb3M7 CiAJaW50CQkJbmFwcGluZm9zOwogCisJREVDTEFSRV9TVEFDS19CVUZGRVIoKTsKKwogCS8qCiAJ ICogSWYgdGhlIGdpdmVuIHJlbGlkcyBzZXQgZG9lc24ndCBjb250YWluIGFueSBvZiB0aGUgcGFy ZW50IHJlbGlkcywgaXQKIAkgKiB3aWxsIHJlbWFpbiB1bmNoYW5nZWQuCkBAIC02ODYsMTEgKzY5 MiwxMyBAQCBhZGp1c3RfY2hpbGRfcmVsaWRzX211bHRpbGV2ZWwoUGxhbm5lckluZm8gKnJvb3Qs IFJlbGlkcyByZWxpZHMsCiAJfQogCiAJLyogTm93IHRyYW5zbGF0ZSBmb3IgdGhpcyBjaGlsZC4g Ki8KLQlhcHBpbmZvcyA9IGZpbmRfYXBwaW5mb3NfYnlfcmVsaWRzKHJvb3QsIGNoaWxkcmVsLT5y ZWxpZHMsICZuYXBwaW5mb3MpOworCWFwcGluZm9zID0gZmluZF9hcHBpbmZvc19ieV9yZWxpZHMo cm9vdCwKKwkJCQkJCQkJCSAgIGNoaWxkcmVsLT5yZWxpZHMsCisJCQkJCQkJCQkgICAmbmFwcGlu Zm9zKTsKIAogCXJlbGlkcyA9IGFkanVzdF9jaGlsZF9yZWxpZHMocmVsaWRzLCBuYXBwaW5mb3Ms IGFwcGluZm9zKTsKIAotCXBmcmVlKGFwcGluZm9zKTsKKwlmcmVlX2FwcGluZm9zKGFwcGluZm9z KTsKIAogCXJldHVybiByZWxpZHM7CiB9CkBAIC04MDEsMTkgKzgwOSwxOSBAQCBnZXRfdHJhbnNs YXRlZF91cGRhdGVfdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCwgSW5kZXggcmVsaWQsCiAg KiBpbmNsdWRlIG91dGVyLWpvaW4gUlQgaW5kZXhlcyBpbiBhZGRpdGlvbiB0byBiYXNlcmVscy4g IFdlIHNpbGVudGx5CiAgKiBpZ25vcmUgdGhlIG91dGVyIGpvaW5zLgogICoKLSAqIFRoZSBBcHBl bmRSZWxJbmZvcyBhcmUgcmV0dXJuZWQgaW4gYW4gYXJyYXksIHdoaWNoIGNhbiBiZSBwZnJlZSdk IGJ5IHRoZQotICogY2FsbGVyLiAqbmFwcGluZm9zIGlzIHNldCB0byB0aGUgbnVtYmVyIG9mIGVu dHJpZXMgaW4gdGhlIGFycmF5LgorICogQSBjYWxsZXItc3VwcGxpZWQgb3V0cHV0IGFycmF5IG11 c3QgaGF2ZSBlbm91Z2ggc3BhY2UgZm9yCisgKiBibXNfbnVtX21lbWJlcnMocmVsaWRzKSBBcHBl bmRSZWxJbmZvIHBvaW50ZXIuICBUaGUgZGVzdGluYXRpb24gYWRkcmVzcyBpcworICogcmV0dXJu ZWQuCiAgKi8KIEFwcGVuZFJlbEluZm8gKioKLWZpbmRfYXBwaW5mb3NfYnlfcmVsaWRzKFBsYW5u ZXJJbmZvICpyb290LCBSZWxpZHMgcmVsaWRzLCBpbnQgKm5hcHBpbmZvcykKK2ZpbmRfYXBwaW5m b3NfYnlfcmVsaWRzX2luX3BsYWNlKEFwcGVuZFJlbEluZm8gKiphcHBpbmZvcywKKwkJCQkJCQkJ IFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkgUmVsaWRzIHJlbGlkcywKKwkJCQkJCQkJIGlu dCAqbmFwcGluZm9zKQogewotCUFwcGVuZFJlbEluZm8gKiphcHBpbmZvczsKIAlpbnQJCQljbnQg PSAwOwogCWludAkJCWk7CiAKLQkvKiBBbGxvY2F0ZSBhbiBhcnJheSB0aGF0J3MgY2VydGFpbmx5 IGJpZyBlbm91Z2ggKi8KLQlhcHBpbmZvcyA9IHBhbGxvY19hcnJheShBcHBlbmRSZWxJbmZvICos IGJtc19udW1fbWVtYmVycyhyZWxpZHMpKTsKLQogCWkgPSAtMTsKIAl3aGlsZSAoKGkgPSBibXNf bmV4dF9tZW1iZXIocmVsaWRzLCBpKSkgPj0gMCkKIAl7CkBAIC04MzAsMTEgKzgzOCwxMSBAQCBm aW5kX2FwcGluZm9zX2J5X3JlbGlkcyhQbGFubmVySW5mbyAqcm9vdCwgUmVsaWRzIHJlbGlkcywg aW50ICpuYXBwaW5mb3MpCiAKIAkJYXBwaW5mb3NbY250KytdID0gYXBwaW5mbzsKIAl9CisKIAkq bmFwcGluZm9zID0gY250OwogCXJldHVybiBhcHBpbmZvczsKIH0KIAotCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKICAqCiAgKgkJUk9XLUlERU5USVRZIFZBUklBQkxFIE1BTkFHRU1FTlQKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCA4YzRiZjFkNjU3ZS4uNTg0Nzg3NDc1MTMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYworKysgYi9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKQEAgLTQ2MCw2ICs0NjAsNyBAQCBt YWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcGFyZW50cmVsLAogCUxpc3RDZWxsICAgKmxjOwogCWludAkJCXJ0aTsKIAlpbnQJCQlpOwor CUFwcGVuZFJlbEluZm9CdWZmZXIgYXBwaW5mb3NfYnVmZmVyID0gezB9OwogCiAJREVDTEFSRV9T VEFDS19CVUZGRVIoKTsKIApAQCAtNTE3LDE2ICs1MTgsMTcgQEAgbWFrZV9wYXJ0aXRpb25lZHJl bF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJ CWlmICghYm1zX2VxdWFsKHBhcmVudHJlbC0+cmVsaWRzLCBzdWJwYXJ0LT5yZWxpZHMpKQogCQkJ ewogCQkJCWludAkJCW5hcHBpbmZvczsKLQkJCQlBcHBlbmRSZWxJbmZvICoqYXBwaW5mb3MgPSBm aW5kX2FwcGluZm9zX2J5X3JlbGlkcyhyb290LAotCQkJCQkJCQkJCQkJCQkJCSAgIHN1YnBhcnQt PnJlbGlkcywKLQkJCQkJCQkJCQkJCQkJCQkgICAmbmFwcGluZm9zKTsKKwkJCQlBcHBlbmRSZWxJ bmZvICoqYXBwaW5mb3M7CisKKwkJCQlhcHBpbmZvcyA9IGZpbmRfYXBwaW5mb3NfYnlfcmVsaWRz X3dpdGhfYnVmZmVyKCZhcHBpbmZvc19idWZmZXIsCisJCQkJCQkJCQkJCQkJCQkgICByb290LAor CQkJCQkJCQkJCQkJCQkJICAgc3VicGFydC0+cmVsaWRzLAorCQkJCQkJCQkJCQkJCQkJICAgJm5h cHBpbmZvcyk7CiAKIAkJCQlwcnVuZXF1YWwgPSAoTGlzdCAqKSBhZGp1c3RfYXBwZW5kcmVsX2F0 dHJzKHJvb3QsIChOb2RlICopCiAJCQkJCQkJCQkJCQkJCQlwcnVuZXF1YWwsCiAJCQkJCQkJCQkJ CQkJCQluYXBwaW5mb3MsCiAJCQkJCQkJCQkJCQkJCQlhcHBpbmZvcyk7Ci0KLQkJCQlwZnJlZShh cHBpbmZvcyk7CiAJCQl9CiAKIAkJCXBhcnRwcnVuZXF1YWwgPSBwcnVuZXF1YWw7CkBAIC01NDQs NiArNTQ2LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkJCSAgc3VicGFydCwKIAkJCQkJ CQkJCQkJCSAgdGFyZ2V0cGFydCk7CiAJCX0KKwkJZnJlZV9hcHBpbmZvc19idWZmZXIoJmFwcGlu Zm9zX2J1ZmZlcik7CiAKIAkJLyoKIAkJICogQ29udmVydCBwcnVuaW5nIHF1YWwgdG8gcHJ1bmlu ZyBzdGVwcy4gIFdlIG1heSBuZWVkIHRvIGRvIHRoaXMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L29wdGltaXplci9hcHBlbmRpbmZvLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5m by5oCmluZGV4IGI1OWE2MjE4ODUzLi4wM2Q0NGM1YmE3NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvb3B0aW1pemVyL2FwcGVuZGluZm8uaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBw ZW5kaW5mby5oCkBAIC0zOCw4ICszOCwxMCBAQCBleHRlcm4gTGlzdCAqYWRqdXN0X2luaGVyaXRl ZF9hdHRudW1zX211bHRpbGV2ZWwoUGxhbm5lckluZm8gKnJvb3QsCiBleHRlcm4gdm9pZCBnZXRf dHJhbnNsYXRlZF91cGRhdGVfdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCwgSW5kZXggcmVs aWQsCiAJCQkJCQkJCQkJCSBMaXN0ICoqcHJvY2Vzc2VkX3RsaXN0LAogCQkJCQkJCQkJCQkgTGlz dCAqKnVwZGF0ZV9jb2xub3MpOwotZXh0ZXJuIEFwcGVuZFJlbEluZm8gKipmaW5kX2FwcGluZm9z X2J5X3JlbGlkcyhQbGFubmVySW5mbyAqcm9vdCwKLQkJCQkJCQkJCQkJICAgUmVsaWRzIHJlbGlk cywgaW50ICpuYXBwaW5mb3MpOworZXh0ZXJuIEFwcGVuZFJlbEluZm8gKipmaW5kX2FwcGluZm9z X2J5X3JlbGlkc19pbl9wbGFjZShBcHBlbmRSZWxJbmZvICoqYXBwaW5mb3MsCisJCQkJCQkJCQkJ CQkJCVBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJCQkJCQlSZWxpZHMgcmVsaWRzLAorCQkJ CQkJCQkJCQkJCQlpbnQgKm5hcHBpbmZvcyk7CiBleHRlcm4gdm9pZCBhZGRfcm93X2lkZW50aXR5 X3ZhcihQbGFubmVySW5mbyAqcm9vdCwgVmFyICpvcmlnX3ZhciwKIAkJCQkJCQkJIEluZGV4IHJ0 aW5kZXgsIGNvbnN0IGNoYXIgKnJvd2lkX25hbWUpOwogZXh0ZXJuIHZvaWQgYWRkX3Jvd19pZGVu dGl0eV9jb2x1bW5zKFBsYW5uZXJJbmZvICpyb290LCBJbmRleCBydGluZGV4LApAQCAtNDcsNCAr NDksNDcgQEAgZXh0ZXJuIHZvaWQgYWRkX3Jvd19pZGVudGl0eV9jb2x1bW5zKFBsYW5uZXJJbmZv ICpyb290LCBJbmRleCBydGluZGV4LAogCQkJCQkJCQkJIFJlbGF0aW9uIHRhcmdldF9yZWxhdGlv bik7CiBleHRlcm4gdm9pZCBkaXN0cmlidXRlX3Jvd19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZv ICpyb290KTsKIAordHlwZWRlZiBzdHJ1Y3QgQXBwZW5kUmVsSW5mb0J1ZmZlcgoreworCUFwcGVu ZFJlbEluZm8gKiphcHBpbmZvczsKKwlpbnQJCQljYXBhY2l0eTsKKwlpbnQJCQl3YW50OworfSBB cHBlbmRSZWxJbmZvQnVmZmVyOworCisvKgorICogVGhlIGZvbGxvd2luZyBhcmUgd3JpdHRlbiBh cyBhIG1hY3JvcyBzbyB0aGV5IGNhbiB1c2UgYSBzdGFjayBidWZmZXIgdG8KKyAqIHBsYWNlIHRo ZSByZXN1bHRzIGluIHRoZSBjYWxsaW5nIHN0YWNrIGZyYW1lIGlmIHBvc3NpYmxlLiAgQSBzdGFj ayBidWZmZXIKKyAqIG11c3QgYmUgZGVjbGFyZWQgaW4gdGhlIGN1cnJlbnQgc2NvcGUgdG8gdXNl IHRoZW0uCisgKi8KKworI2RlZmluZSBmaW5kX2FwcGluZm9zX2J5X3JlbGlkcyhyb290LCByZWxp ZHMsIG5hcHBpbmZvcykJCQkJXAorCWZpbmRfYXBwaW5mb3NfYnlfcmVsaWRzX2luX3BsYWNlKHN0 YWNrX2J1ZmZlcl9hbGxvY19hcnJheShBcHBlbmRSZWxJbmZvICosIFwKKwkJCQkJCQkJCQkJCQkJ CSAgYm1zX251bV9tZW1iZXJzKHJlbGlkcykpLCBcCisJCQkJCQkJCQkgKHJvb3QpLAkJCQkJCQlc CisJCQkJCQkJCQkgKHJlbGlkcyksCQkJCQkJCVwKKwkJCQkJCQkJCSAobmFwcGluZm9zKSkKKyNk ZWZpbmUgZnJlZV9hcHBpbmZvcyhhcHBpbmZvcykJCQkJCVwKKwlpZiAoYXBwaW5mb3MpCQkJCQkJ CQlcCisJCXN0YWNrX2J1ZmZlcl9mcmVlKGFwcGluZm9zKQorCisjZGVmaW5lIGZpbmRfYXBwaW5m b3NfYnlfcmVsaWRzX3dpdGhfYnVmZmVyKGJ1ZmZlciwgcm9vdCwgcmVsaWRzLCBuYXBwaW5mb3Mp IFwKKwkoKGJ1ZmZlciktPndhbnQgPSBibXNfbnVtX21lbWJlcnMocmVsaWRzKSwJCQkJCQkJXAor CSAoYnVmZmVyKS0+YXBwaW5mb3MgPSAoKGJ1ZmZlciktPmNhcGFjaXR5ID49IChidWZmZXIpLT53 YW50ID8JCVwKKwkJCQkJCSAgIChidWZmZXIpLT5hcHBpbmZvcyA6CQkJCQkJCVwKKwkJCQkJCSAg ICgoYnVmZmVyKS0+Y2FwYWNpdHkgPSAoYnVmZmVyKS0+d2FudCwJCVwKKwkJCQkJCQlzdGFja19i dWZmZXJfYWxsb2NfYXJyYXkoQXBwZW5kUmVsSW5mbyAqLAlcCisJCQkJCQkJCQkJCQkJIChidWZm ZXIpLT5jYXBhY2l0eSkpKSwgXAorCSBmaW5kX2FwcGluZm9zX2J5X3JlbGlkc19pbl9wbGFjZSgo YnVmZmVyKS0+YXBwaW5mb3MsCQkJCVwKKwkJCQkJCQkJCSAgKHJvb3QpLAkJCQkJCQlcCisJCQkJ CQkJCQkgIChyZWxpZHMpLAkJCQkJCQlcCisJCQkJCQkJCQkgIChuYXBwaW5mb3MpKSkKKworI2Rl ZmluZSBmcmVlX2FwcGluZm9zX2J1ZmZlcihidWZmZXIpCQkJCVwKKwlpZiAoKGJ1ZmZlciktPmFw cGluZm9zKQkJCQkJCQlcCisJewkJCQkJCQkJCQkJCVwKKwkJc3RhY2tfYnVmZmVyX2ZyZWUoKGJ1 ZmZlciktPmFwcGluZm9zKTsJCVwKKwkJKGJ1ZmZlciktPmFwcGluZm9zID0gTlVMTDsJCQkJCVwK KwkJKGJ1ZmZlciktPmNhcGFjaXR5ID0gMDsJCQkJCQlcCisJfQorCiAjZW5kaWYJCQkJCQkJLyog QVBQRU5ESU5GT19IICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDE0MWI5ZDZlMDc3 Li41YjliNTZkNmEwZSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTEyNyw2ICsxMjcs NyBAQCBBcHBlbmQKIEFwcGVuZFBhdGgKIEFwcGVuZFBhdGhJbnB1dAogQXBwZW5kUmVsSW5mbwor QXBwZW5kUmVsSW5mb0J1ZmZlcgogQXBwZW5kU3RhdGUKIEFwcGx5RXJyb3JDYWxsYmFja0FyZwog QXBwbHlFeGVjdXRpb25EYXRhCi0tIAoyLjUzLjAKCg== --000000000000e053ac064cca0224--