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 1vyefl-000InB-1c for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Mar 2026 23:33:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vyefj-007Rs9-37 for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Mar 2026 23:33:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vyefj-007Rru-1O for pgsql-hackers@lists.postgresql.org; Fri, 06 Mar 2026 23:33:32 +0000 Received: from mail-ed1-x530.google.com ([2a00:1450:4864:20::530]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vyefd-00000001Ga2-3OdG for pgsql-hackers@lists.postgresql.org; Fri, 06 Mar 2026 23:33:31 +0000 Received: by mail-ed1-x530.google.com with SMTP id 4fb4d7f45d1cf-660a58841d4so5585967a12.0 for ; Fri, 06 Mar 2026 15:33:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772840005; cv=none; d=google.com; s=arc-20240605; b=LJorfUIVzTyx7Tu7OZHbKRTxGQW0uGNWC/dBfUauRXSh7vnixVaZvd5Z558LL35nUL /TZLuWjkGZA2QZ2dXLeYgQ4JqJP1eSkIxDhdW2lFd24t9/g2xB8ph6cbaN6DWS0nMhjq 28B30I88EXwvs7CXU4I99YQJn3iPSGRmhsSVWNxVhFrYS6qMtO+ITPe3ME7sTVpGZJow lyv5n7Clb9nWxL/PRWbp3tX1iJenj3pI4tgS4yr596w1V33+kt4MuPAK4nw+TAVSd2jT JXoHpLUtmp74rfC3shQu8sCF940nYjS0/z6D5ACVI1oPZwMmOYiFOecku2UojhhjvJ/4 yfIA== 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=3eaREGwOkQclfR23fj5iO4aD6XMiCwdpfv2gBojG7eg=; fh=YwYLSiyZjqCs+FOCADvYH7bUyAmoo2U35ct2TidrHzM=; b=T+gMKq6BV3NVccKeP1d/osLhUumJ/GYr2W0Tq2aoI4X1lhXEvs4M3LD80L3HbFCU8J O6HvEM/tf2b+3ePJr36zJiGfc9HdkbEubdMX3OsEyu/JY3rzKXjURPTFyr4s+lNCRHzL NPW4MJPEKle1KfhOfhD7hw4YS9dFFVf3vAYhgODjOxya7zVSsP7FzaqMMOEmxjXBPZdo is1cfpsfAGlP5GEvr0oCngrn5Mv1psWhcg7VJwVTOze18K6hsw5UmRZ2+dnS7bfJQN29 xIoiw/ODzgdCorPsMt0pfgYylF2fwMGPzTmyHkIUvo0F6mH1KwOs0/uMeoguAwuh6jOx 3ZEA==; 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=1772840005; x=1773444805; 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=3eaREGwOkQclfR23fj5iO4aD6XMiCwdpfv2gBojG7eg=; b=dCkq0e7iPm8UXzrZhNfZExtyDYULnZVgzQvTMKw8KTKCsCY8HShE2E69jdWzNb2wgN LJZ3haQgpnQ5dLbnhm2Sjtg+bIYDBF+AQmwDyf0yIgBGVeY801fYIHFNKQL7H0C5T5ZS br89fSSRJm8gGEX9zFkuMwwfyaQULNhm9RIf37J9U24Xg9f3ahm2p7UeWYZ1JzdGlMlG 0K3wXs4ur2SZqvQLqihWpkTwqq5aFL5/Kjo06EdEwOuMd/WSNjCDz7BtYmPya0kqJSbS 2eHzo/zjNCTJX03cAtbktjGqcQSBKK0MbhCAwYHvmkTPD0qagJmrHLn2JBM8RoVzTyvV kfnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772840005; x=1773444805; 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=3eaREGwOkQclfR23fj5iO4aD6XMiCwdpfv2gBojG7eg=; b=YnPrPDF2aDjXi8seSBg6fTB75qNTBhPTTwmZXeHTN3qVfrfnXw4Sva390IguQtHTrf lKReazS7d5rSZb1SaBsjBzVA2XJPnjUc2ovX3JzqFJItbrKbXpi+jB654vic2TOXT8tV rfTkmFST0fRuufZ8MfjcDXafjruaOHyV44nR163akXt0ObaQWGwmfoiRHBwvZSXnF9uV LN4VN2BYburT7BeZ1EA+qpnKSpGCEtCc8wwbesms3Z9Uxy7QoU7Q6wgkUkq+PYHkQBhi IIIjZxaWBAaBjubNI5oVoG8s3g9xZDhCFqcPe+arIttAiUrGzEqU2R2uGrHpVF22sWik EqDg== X-Forwarded-Encrypted: i=1; AJvYcCWxtyuD7s7qxdItJs5OGQMrgkrZwtfxx6/sLlzrSLatEdxUR6IcOdqy1X5ksyYKtmW8lGkzUHzSVBP3jp9d@lists.postgresql.org X-Gm-Message-State: AOJu0Yzv9ZY2ahMgJ3VyRG0O9Y+wg5bpiYZ4gWiwVpP1/ROzylO0WlEL YrofdI1bVkgbyIdswtmCqsFmQbz31ZjgMYb5E/eUS3ib4WwkcQGWRJHzfm3AHI5pH3t+M0hPuP3 Rd8Ic0wIdb5PJDX4AtM4cgwv67VCdpD4= X-Gm-Gg: ATEYQzxvcaf1WzegKm72Jh8EJOTBzXb8Zr4feO0xFXFy0FHah+VrIMEUmo63E7IHGEP ehMKcer/mYv4RcKDbyaTpZzhTiMtFYZ8ISWb25dqzG0RQAXdF734/iCCpLfk6RFVYqYQPlSV3KO uZbcHLqy2ugTcKm3BgKANiqJLaLC5rKh82btenq4X7rbkjc5z/uBbCwBrZUxnSVdYZWllVb9I9H KtjelqXbbMGoW7gJJzTCEtdo2ISNWQKUEksHoI4hrDm/gq6b6Ra5LeIiDMdzzsCiUUcrrPhBWFC /V6BiN5dBsnSt+qi1MgTLOonmiTMN1RlK/WzLsyKYG9dqGZ1BE5K9VlQ3qeV4OQipDp98BY2IOQ LF3ggYUgkl4gDVCcELwQ= X-Received: by 2002:a05:6402:5215:b0:659:449e:87ff with SMTP id 4fb4d7f45d1cf-6619d49f900mr1965760a12.14.1772840004372; Fri, 06 Mar 2026 15:33:24 -0800 (PST) MIME-Version: 1.0 References: <6BC5DBAB-6084-4BB8-8450-52E9648AB021@gmail.com> <7F5BCD7A-764D-4D8D-8E27-6F2CAAEA1CEE@gmail.com> <4379FDA3-9446-4E2C-9C15-32EFE8D4F31B@yandex-team.ru> <7ib3sa55sapwjlaz4sijbiq7iezna27kjvvvar4dpgkmadml6t@gfpkkwmdnepx> <81DAFACF-7D55-4A84-ACB0-0425D1669DB4@gmail.com> In-Reply-To: From: Melanie Plageman Date: Fri, 6 Mar 2026 18:33:10 -0500 X-Gm-Features: AaiRm50wEIYFJAtloXLtkqwf4xDuUpcUdOCYUe10jCpKdVQmWG_jPXoHPG9_kHw Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Chao Li Cc: Andres Freund , Andrey Borodin , Kirill Reshke , Xuneng Zhou , Robert Haas , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="000000000000b506a0064c637a4a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b506a0064c637a4a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the review! Attached is v36. I've pushed some of the early patches in the set and this is what is left. I've also done some of the performance evaluation and microbenchmarking of the "worst case" scenario promised in my earlier reply to Andres [1]. I used the following to test the worst-case performance of my patch: pgbench -n -r -t 9 -f - <<'SQL' checkpoint; DROP TABLE IF EXISTS foo; CREATE TABLE foo(a int, cnt int, data text) WITH (autovacuum_enabled =3D false, fillfactor =3D 10); ALTER TABLE foo ALTER COLUMN data SET STORAGE PLAIN; CREATE INDEX ON foo(a); INSERT INTO foo SELECT i, 1, repeat(' ', 8192/10) FROM generate_series(1,100000) i; vacuum (freeze) foo; update foo set cnt =3D cnt + 1; select * from foo offset 100000000; update foo set cnt =3D cnt + 1; SQL What I see is an expected slowdown for the SELECT * FROM foo OFFSET -- because it emits slightly more WAL and pins and dirties a few more buffers. And a slight slowdown for the UPDATE following the SELECT because it then must clear those VM bits. (This is no different than if you had run a vacuum before doing the update). These slowdowns are expected since this microbenchmark is designed to be a worst case. Every buffer has a single tuple and the SELECT needs to access no tuples because of the OFFSET. This minimizes all other overheads to magnify the overhead of setting and clearing the VM. I also tested if unconditionally pinning the VM even when we don't set it had any impact on performance of on-access pruning for logged tables. I used the setup above but patched the code to not set the VM on-access. I found that there is no negative performance impact to the SELECT * OFFSET. If foo is an unlogged table I do see a very slight overhead for the SELECT * OFFSET. And in all cases, with the patch, the vacuum above is faster because of using the combined WAL record. I believe I've addressed all of your review feedback. Below are combined inline remarks to all three of your emails: On Wed, Mar 4, 2026 at 4:00=E2=80=AFAM Chao Li wro= te: > > * Caller must have pin on the buffer, and must *not* have a lock on it. > */ > void > -heap_page_prune_opt(Relation relation, Buffer buffer) > +heap_page_prune_opt(Relation relation, Buffer buffer, Buffer *vmbuffer) > ``` > > I don=E2=80=99t see why vmbuffer has to be of pointer type. Buffer type i= s underlying int, I checked the last commit, vmbuffer only passes in data i= nto the function without passing out anything. We want to save the vmbuffer in the scan descriptor so we can use it across calls to heap_page_prune_opt(). Therefore we have to pass it by reference. We pin the VM in heap_page_prune_opt() and if we don't save a reference to it, we'll have to pin it again on the next call (see visibilitymap_pin() code). > As we add the new parameter vmbuffer, though it=E2=80=99s not used in thi= s commit, I think it=E2=80=99d be better to update the header commit to exp= lain what this parameter will do. Thanks, I've updated the header comment. > + * heap_fix_vm_corruption() makes changes to the VM and, potentially, th= e heap > + * page, but it does not need to be done in a critical section because > + * clearing the VM is not WAL-logged. > + */ > +static void > +heap_fix_vm_corruption(PruneState *prstate, OffsetNumber offnum) > > Nit: why the last paragraph of the header comments uses the function name= instead of =E2=80=9Cthis function=E2=80=9D? Looks like a copy-pasto. Fixed. > 6 - 0006 > ``` > + if (prstate->lpdead_items > 0) > + { > + ereport(WARNING, > + (errcode(ERRCODE_DATA_CORRUPTED), > + errmsg("LP_DEAD item found on pa= ge marked as all-visible"), > + errdetail("relation \"%s\", page= %u, tuple %u", > + RelationGetRel= ationName(prstate->relation), > + prstate->block= , offnum))); > + } > + else > + { > + ereport(WARNING, > + (errcode(ERRCODE_DATA_CORRUPTED), > + errmsg("tuple not visible to all= found on page marked as all-visible"), > + errdetail("relation \"%s\", page= %u, tuple %u", > + RelationGetRel= ationName(prstate->relation), > + prstate->block= , offnum))); > + } > ``` > > I recently just learned that a detail message should use complete sentenc= es, and end each with a period, and capitalize the first word of sentences.= See https://www.postgresql.org/docs/current/error-style-guide.html. Ah thanks for noticing. I've gone ahead and changed them to errcontext instead of errdetail. I think the messages are more compliant now. > + else if (prstate->vmbits & VISIBILITYMAP_VALID_BITS) > + { > + /* > + * As of PostgreSQL 9.2, the visibility map bit should ne= ver be set if > + * the page-level bit is clear. However, it's possible t= hat the bit > + * got cleared after heap_vac_scan_next_block() was calle= d, so we must > + * recheck with buffer lock before concluding that the VM= is corrupt. > + */ > + ereport(WARNING, > + (errcode(ERRCODE_DATA_CORRUPTED), > + errmsg("page %u in \"%s\" is not marked = all-visible but visibility map bit is set", > + prstate->block, > + RelationGetRelationName(p= rstate->relation)))); > + } > > The comment says =E2=80=9Cwe must recheck with buffer lock before=E2=80= =A6=E2=80=9D, but it only log a warning message. Is the comment stale? We have the buffer lock here. The comment means that we need to check now -- a time when we have the buffer lock because when we checked in heap_vac_scan_next_block() we did not have the buffer lock. I've updated the comment to try to make that more clear. > +static void > +heap_page_bypass_prune_freeze(PruneState *prstate, PruneFreezeResult *pr= esult) > +{ > > * Given this function has done PageIsEmpty(page), that that is true, we d= on=E2=80=99t need to count live_tuples, right? That could be a tiny optimiz= ation. Okay, I've tried this. I didn't want a lot of indentation, so I reorganized the code. I'm not sure if it is more error-prone now, though... > * I see heap_page_bypass_prune_freeze() is only called in one place and i= mmediately after prune_freeze_setup() and heap_fix_vm_corruption(), so prst= ate->vmbits must be 0, so do we need to do presult->vmbits =3D prstate->vmb= its;? Actually vmbits can't be zero, otherwise we won't reach the fast path code. Or do you mean something else? > * Do we need to set all_visible and all_frozen to presult? I memset to 0 the other fields, so it isn't needed. On Thu, Mar 5, 2026 at 3:53=E2=80=AFAM Chao Li wro= te: > > 9 - 0009 > =C2=B7=C2=B7=C2=B7 > + * Currently, only VACUUM performs freezing, but other callers ma= y in the > + * future. Other callers must initialize prstate.all_frozen to fa= lse, > =C2=B7=C2=B7=C2=B7 > > Nit: prstate.all_frozen -> prstate.set_all_frozen > > I saw you have fixed this in 0010, but I think it=E2=80=99s better also f= ix it here. Done. > 10 - 0010 > ``` > + * Whether or not the page was newly set all-visible and all-froz= en during > + * phase I of vacuuming. > */ > - uint8 vmbits; > + BlockNumber new_all_visible_pages; > + BlockNumber new_all_visible_frozen_pages; > + BlockNumber new_all_frozen_pages; > ``` > > These 3 fields are actually counts rather than pointers to blocks, using = type BlockNumber are quite confusing, though underlying BlockNumber is uint= 32. I think they can be just int type. Covered in [2]. > + BlockNumber new_all_visible_pages; > + BlockNumber new_all_visible_frozen_pages; > + BlockNumber new_all_frozen_pages; > > I don=E2=80=99t see where these 3 fields are initialized. In lazy_scan_pr= une(), presult is defined as: > PruneFreezeResult presult; > So, those fields will hold random values. Yes, thank you. I've fixed that. > 13 - 0012 - bufmask.c > ``` > + * we don't mark the page all-visible. See heap_xlog_prune_and_fr= eeze() > + * for more details. > ``` > > I don=E2=80=99t find a function named heap_xlog_prune_and_freeze(). Fixed in both places (-> heap_xlog_prune_freeze()). On Thu, Mar 5, 2026 at 9:41=E2=80=AFPM Chao Li wro= te: > > 15 - 0014 - execMain.c > ``` > @@ -3027,6 +3035,7 @@ EvalPlanQualStart(EPQState *epqstate, Plan *planTre= e) > rcestate->es_range_table_size =3D parentestate->es_range_table_si= ze; > rcestate->es_relations =3D parentestate->es_relations; > rcestate->es_rowmarks =3D parentestate->es_rowmarks; > + rcestate->es_modified_relids =3D parentestate->es_modified_relids= ; > ``` > > Here it just assigns the BMS pointer to rcestate->es_modified_relids. I a= m not sure if further bms_add_member() will still happen, if yes, it might = be safer to do bms_copy(parentestate->es_modified_relids), because a furthe= r bms_add_member() may cause a new memory allocated and the old pointer sta= le. Yes, it's at least a bit of future proofing. Done in v36. > 16 - 0014 - execUtils.c > for (rti =3D 1; rti <=3D estate->es_range_table_size; rti++) > > Nit: I have seen several recent commits that performed cleanups to switch= to use for loop var like: > for (Index rti =3D 1; rti <=3D estate->es_range_table_size; rti++) Updated. > 17 - 0015 > > The commit message subject line says =E2=80=9CMake begin_scan() functions= take a flags argument=E2=80=9D, where begin_scan() seems inaccurate, for e= xample, table_index_fetch_begin() is not =E2=80=9Cbegin scan=E2=80=9D. > > Otherwise 0015 LGTM. I've rewritten the commit message. > 20 - 0018 > In heap_insert(), you do: > + if (TransactionIdIsNormal(xid) && !(options & HEAP_INSERT_FROZEN)= ) > + PageSetPrunable(page, xid); > > But in heap_multi_insert(), you do: > + if (!all_frozen_set && TransactionIdIsNormal(xid)) > + PageSetPrunable(page, xid); > > Is the option check " !(options & HEAP_INSERT_FROZEN))=E2=80=9D also need= ed by heap_multi_insert? heap_multi_insert() incorporates that into the variable all_frozen_set, so it is not needed. I've now also added setting prune hint for the new page on updates -- which I forgot before. - Melanie [1] https://www.postgresql.org/message-id/CAAKRu_a1V7TUUYM7qO2c5Z-JyTKOsrry= QBrk7Eu69ESzhqgd9w%40mail.gmail.com [2] https://www.postgresql.org/message-id/flat/CA%2BFpmFdrM%3DL5f%3De7%2Bwq= OkFkYK6r_S%3DTdKrHQ5qPbTNaoVG9PUA%40mail.gmail.com#e3420a65f192d59b72a33e56= a8c2a50f --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0001-Use-the-newest-to-be-frozen-xid-as-the-conflict-.patch" Content-Disposition: attachment; filename="v36-0001-Use-the-newest-to-be-frozen-xid-as-the-conflict-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfiozsf0 RnJvbSA2ZmU5OTkwNDhlMGMzZDViMjY4ZTViMzRmYjFhZjhhNDYyMWQyNGZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIgTWFyIDIwMjYgMTE6Mzk6MjggLTA1MDAKU3ViamVjdDogW1BB VENIIHYzNiAwMS8xNl0gVXNlIHRoZSBuZXdlc3QgdG8tYmUtZnJvemVuIHhpZCBhcyB0aGUgY29u ZmxpY3QKIGhvcml6b24gZm9yIGZyZWV6aW5nCgpQcmV2aW91c2x5IFdBTCByZWNvcmRzIHRoYXQg ZnJvemUgdHVwbGVzIHVzZWQgT2xkZXN0WG1pbiBhcyB0aGUgc25hcHNob3QKY29uZmxpY3QgaG9y aXpvbi4gSG93ZXZlciwgT2xkZXN0WG1pbiBpcyBuZXdlciB0aGFuIHRoZSBuZXdlc3QgZnJvemVu CnR1cGxlJ3MgeGlkLiBCeSB0cmFja2luZyB0aGUgbmV3ZXN0IHRvLWJlLWZyb3plbiB4aWQgYW5k IHVzaW5nIGl0IGFzIHRoZQpzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIGluc3RlYWQsIHdlIGVu ZCB1cCB3aXRoIGFuIG9sZGVyIGhvcml6b24gdGhhdAp3aWxsIHJlc3VsdCBpbiBmZXdlciBxdWVy eSBjYW5jZWxsYXRpb25zIG9uIHRoZSBzdGFuZGJ5LgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFu IDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogUGV0ZXIgR2VvZ2hlZ2Fu IDxwZ0Bib3d0LmllPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNv bT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUFLUnVfYmJhVVY4T1VqQWZWYV9p QUxnS25UU2ZCNGdPM2pua2ZwY0ZncnhFcFNHSlElNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgIHwgMTIgKysrKysrKysrKwogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgfCAzNCArKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgfCAgOCArKysrKysrCiAz IGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggYTIzMTU2M2YwZGYuLjY0OWVlNmU3NjY5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNjc4MSw2ICs2NzgxLDEwIEBAIGhlYXBfaW5wbGFjZV91 bmxvY2soUmVsYXRpb24gcmVsYXRpb24sCiAgKiBOQjogQ2FsbGVyIHNob3VsZCBhdm9pZCBuZWVk bGVzc2x5IGNhbGxpbmcgaGVhcF90dXBsZV9zaG91bGRfZnJlZXplIHdoZW4gd2UKICAqIGhhdmUg YWxyZWFkeSBmb3JjZWQgcGFnZS1sZXZlbCBmcmVlemluZywgc2luY2UgdGhhdCBtaWdodCBpbmN1 ciB0aGUgc2FtZQogICogU0xSVSBidWZmZXIgbWlzc2VzIHRoYXQgd2Ugc3BlY2lmaWNhbGx5IGlu dGVuZGVkIHRvIGF2b2lkIGJ5IGZyZWV6aW5nLgorICoKKyAqIFdlIHdvbid0IHVwZGF0ZSB0aGUg RnJlZXplUGFnZUNvbmZsaWN0WGlkIGJlY2F1c2UgYW55IGxvY2tlcnMgZG9uJ3QgYWZmZWN0Cisg KiB2aXNpYmlsaXR5IG9uIHRoZSBzdGFuZGJ5LCBhbmQgd2UgZG9uJ3QgYWh2ZSB0byB3b3JyeSBh Ym91dCB0aGUgdXBkYXRlIFhJRAorICogc2luY2UgdGhlIG9ubHkgd2F5IGl0IGNhbiBiZSBvbGRl ciB0aGFuIE9sZGVzdFhtaW4gaXMgaWYgaXQgaXMgYWJvcnRlZC4KICAqLwogc3RhdGljIFRyYW5z YWN0aW9uSWQKIEZyZWV6ZU11bHRpWGFjdElkKE11bHRpWGFjdElkIG11bHRpLCB1aW50MTYgdF9p bmZvbWFzaywKQEAgLTcxNzMsNyArNzE3NywxMSBAQCBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxl KEhlYXBUdXBsZUhlYWRlciB0dXBsZSwKIAogCQkvKiBWZXJpZnkgdGhhdCB4bWluIGNvbW1pdHRl ZCBpZiBhbmQgd2hlbiBmcmVlemUgcGxhbiBpcyBleGVjdXRlZCAqLwogCQlpZiAoZnJlZXplX3ht aW4pCisJCXsKIAkJCWZyei0+Y2hlY2tmbGFncyB8PSBIRUFQX0ZSRUVaRV9DSEVDS19YTUlOX0NP TU1JVFRFRDsKKwkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyh4aWQsIHBhZ2VmcnotPkZyZWV6 ZVBhZ2VDb25mbGljdFhpZCkpCisJCQkJcGFnZWZyei0+RnJlZXplUGFnZUNvbmZsaWN0WGlkID0g eGlkOworCQl9CiAJfQogCiAJLyoKQEAgLTcxOTIsNiArNzIwMCw5IEBAIGhlYXBfcHJlcGFyZV9m cmVlemVfdHVwbGUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLAogCQkgKi8KIAkJcmVwbGFjZV94dmFj ID0gcGFnZWZyei0+ZnJlZXplX3JlcXVpcmVkID0gdHJ1ZTsKIAorCQlpZiAoVHJhbnNhY3Rpb25J ZEZvbGxvd3MoeGlkLCBwYWdlZnJ6LT5GcmVlemVQYWdlQ29uZmxpY3RYaWQpKQorCQkJcGFnZWZy ei0+RnJlZXplUGFnZUNvbmZsaWN0WGlkID0geGlkOworCiAJCS8qIFdpbGwgc2V0IHJlcGxhY2Vf eHZhYyBmbGFncyBpbiBmcmVlemUgcGxhbiBiZWxvdyAqLwogCX0KIApAQCAtNzUwMSw2ICs3NTEy LDcgQEAgaGVhcF9mcmVlemVfdHVwbGUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLAogCXBhZ2Vmcnou ZnJlZXplX3JlcXVpcmVkID0gdHJ1ZTsKIAlwYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQg PSBGcmVlemVMaW1pdDsKIAlwYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxtaW5NeGlkID0gTXVsdGlYYWN0 Q3V0b2ZmOworCXBhZ2VmcnouRnJlZXplUGFnZUNvbmZsaWN0WGlkID0gSW52YWxpZFRyYW5zYWN0 aW9uSWQ7CiAJcGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQgPSBGcmVlemVMaW1pdDsK IAlwYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbG1pbk14aWQgPSBNdWx0aVhhY3RDdXRvZmY7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNjVjOWYzOTNmNDEuLmVlYmQ2Y2Y1N2Vh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMzc3LDYgKzM3Nyw3IEBAIHBy dW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJLyogaW5pdGlh bGl6ZSBwYWdlIGZyZWV6aW5nIHdvcmtpbmcgc3RhdGUgKi8KIAlwcnN0YXRlLT5wYWdlZnJ6LmZy ZWV6ZV9yZXF1aXJlZCA9IGZhbHNlOworCXByc3RhdGUtPnBhZ2VmcnouRnJlZXplUGFnZUNvbmZs aWN0WGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJaWYgKHByc3RhdGUtPmF0dGVtcHRfZnJl ZXplKQogCXsKIAkJQXNzZXJ0KG5ld19yZWxmcm96ZW5feGlkICYmIG5ld19yZWxtaW5fbXhpZCk7 CkBAIC00MDcsNyArNDA4LDYgQEAgcHJ1bmVfZnJlZXplX3NldHVwKFBydW5lRnJlZXplUGFyYW1z ICpwYXJhbXMsCiAJICogUHJ1bmVTdGF0ZS4KIAkgKi8KIAlwcnN0YXRlLT5kZWFkb2Zmc2V0cyA9 IHByZXN1bHQtPmRlYWRvZmZzZXRzOwotCXByc3RhdGUtPmZyel9jb25mbGljdF9ob3Jpem9uID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKgogCSAqIFZhY3V1bSBtYXkgdXBkYXRlIHRoZSBW TSBhZnRlciB3ZSdyZSBkb25lLiAgV2UgY2FuIGtlZXAgdHJhY2sgb2YKQEAgLTc0NiwyMiArNzQ2 LDggQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLAogCQkg KiBjcml0aWNhbCBzZWN0aW9uLgogCQkgKi8KIAkJaGVhcF9wcmVfZnJlZXplX2NoZWNrcyhwcnN0 YXRlLT5idWZmZXIsIHByc3RhdGUtPmZyb3plbiwgcHJzdGF0ZS0+bmZyb3plbik7Ci0KLQkJLyoK LQkJICogQ2FsY3VsYXRlIHdoYXQgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gc2hvdWxk IGJlIGZvciBhIHJlY29yZAotCQkgKiBmcmVlemluZyB0dXBsZXMuIFdlIGNhbiB1c2UgdGhlIHZp c2liaWxpdHlfY3V0b2ZmX3hpZCBhcyBvdXIgY3V0b2ZmCi0JCSAqIGZvciBjb25mbGljdHMgd2hl biB0aGUgd2hvbGUgcGFnZSBpcyBlbGlnaWJsZSB0byBiZWNvbWUgYWxsLWZyb3plbgotCQkgKiBp biB0aGUgVk0gb25jZSB3ZSdyZSBkb25lIHdpdGggaXQuIE90aGVyd2lzZSwgd2UgZ2VuZXJhdGUg YQotCQkgKiBjb25zZXJ2YXRpdmUgY3V0b2ZmIGJ5IHN0ZXBwaW5nIGJhY2sgZnJvbSBPbGRlc3RY bWluLgotCQkgKi8KLQkJaWYgKHByc3RhdGUtPnNldF9hbGxfZnJvemVuKQotCQkJcHJzdGF0ZS0+ ZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQ7Ci0J CWVsc2UKLQkJewotCQkJLyogQXZvaWRzIGZhbHNlIGNvbmZsaWN0cyB3aGVuIGhvdF9zdGFuZGJ5 X2ZlZWRiYWNrIGluIHVzZSAqLwotCQkJcHJzdGF0ZS0+ZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBw cnN0YXRlLT5jdXRvZmZzLT5PbGRlc3RYbWluOwotCQkJVHJhbnNhY3Rpb25JZFJldHJlYXQocHJz dGF0ZS0+ZnJ6X2NvbmZsaWN0X2hvcml6b24pOwotCQl9CisJCUFzc2VydChUcmFuc2FjdGlvbklk UHJlY2VkZXMocHJzdGF0ZS0+cGFnZWZyei5GcmVlemVQYWdlQ29uZmxpY3RYaWQsCisJCQkJCQkJ CQkgcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbikpOwogCX0KIAllbHNlIGlmIChwcnN0YXRl LT5uZnJvemVuID4gMCkKIAl7CkBAIC05NTMsMTcgKzkzOSwxNyBAQCBoZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJICogVGhlIHNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUKIAkJCSAq IG1vc3QgY29uc2VydmF0aXZlIG9mIGFsbCB0aGUgaG9yaXpvbnMgY2FsY3VsYXRlZCBmb3IgYW55 IG9mIHRoZQogCQkJICogcG9zc2libGUgbW9kaWZpY2F0aW9ucy4gIElmIHRoaXMgcmVjb3JkIHdp bGwgcHJ1bmUgdHVwbGVzLCBhbnkKLQkJCSAqIHRyYW5zYWN0aW9ucyBvbiB0aGUgc3RhbmRieSBv bGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB4bWF4IG9mIHRoZQotCQkJICogbW9zdCByZWNlbnRseSBy ZW1vdmVkIHR1cGxlIHRoaXMgcmVjb3JkIHdpbGwgcHJ1bmUgd2lsbAotCQkJICogY29uZmxpY3Qu ICBJZiB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZSB0dXBsZXMsIGFueSB0cmFuc2FjdGlvbnMKLQkJ CSAqIG9uIHRoZSBzdGFuZGJ5IHdpdGggeGlkcyBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB0dXBs ZSB0aGlzCi0JCQkgKiByZWNvcmQgd2lsbCBmcmVlemUgd2lsbCBjb25mbGljdC4KKwkJCSAqIHF1 ZXJpZXMgb24gdGhlIHN0YW5kYnkgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgeGlkIG9mIHRoZSBt b3N0CisJCQkgKiByZWNlbnRseSByZW1vdmVkIHR1cGxlIHRoaXMgcmVjb3JkIHdpbGwgcHJ1bmUg d2lsbCBjb25mbGljdC4gSWYKKwkJCSAqIHRoaXMgcmVjb3JkIHdpbGwgZnJlZXplIHR1cGxlcywg YW55IHF1ZXJpZXMgb24gdGhlIHN0YW5kYnkgd2l0aAorCQkJICogeGlkcyBvbGRlciB0aGFuIHRo ZSB5b3VuZ2VzdCB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsCisJCQkgKiBjb25m bGljdC4KIAkJCSAqLwogCQkJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQ7CiAKLQkJCWlmIChU cmFuc2FjdGlvbklkRm9sbG93cyhwcnN0YXRlLmZyel9jb25mbGljdF9ob3Jpem9uLAorCQkJaWYg KFRyYW5zYWN0aW9uSWRGb2xsb3dzKHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlQ29uZmxpY3RY aWQsCiAJCQkJCQkJCQkgcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQpKQotCQkJCWNvbmZsaWN0 X3hpZCA9IHByc3RhdGUuZnJ6X2NvbmZsaWN0X2hvcml6b247CisJCQkJY29uZmxpY3RfeGlkID0g cHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VDb25mbGljdFhpZDsKIAkJCWVsc2UKIAkJCQljb25m bGljdF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmlu ZGV4IDI0YTI3Y2MwNDNhLi5kMDgzZjgyNWIzOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMjA4LDYg KzIwOCwxNCBAQCB0eXBlZGVmIHN0cnVjdCBIZWFwUGFnZUZyZWV6ZQogCVRyYW5zYWN0aW9uSWQg RnJlZXplUGFnZVJlbGZyb3plblhpZDsKIAlNdWx0aVhhY3RJZCBGcmVlemVQYWdlUmVsbWluTXhp ZDsKIAorCS8qCisJICogVGhlIHlvdW5nZXN0IFhJRCB0aGF0IHdpbGwgYmUgZnJvemVuIG9yIHJl bW92ZWQgZHVyaW5nIGZyZWV6aW5nLiBJdCBpcworCSAqIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBz bmFwc2hvdCBjb25mbGljdCBob3Jpem9uIGZvciBhIFdBTCByZWNvcmQKKwkgKiBmcmVlemluZyB0 dXBsZXMuIEJlY2F1c2UgaXQgaXMgb25seSB1c2VkIGlmIHdlIGRvIGVuZCB1cCBmcmVlemluZwor CSAqIHR1cGxlcywgdGhlcmUgaXMgbm8gbmVlZCBmb3IgYSAibm8gZnJlZXplIiB2ZXJzaW9uLgor CSAqLworCVRyYW5zYWN0aW9uSWQgRnJlZXplUGFnZUNvbmZsaWN0WGlkOworCiAJLyoKIAkgKiAi Tm8gZnJlZXplIiBOZXdSZWxmcm96ZW5YaWQvTmV3UmVsbWluTXhpZCB0cmFja2Vycy4KIAkgKgot LSAKMi40My4wCgo= --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0002-Save-vmbuffer-in-heap-specific-scan-descriptors-.patch" Content-Disposition: attachment; filename="v36-0002-Save-vmbuffer-in-heap-specific-scan-descriptors-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfip4xm1 RnJvbSA5ZmViMzliYzM4NDA1MzYwNjg3OTU2M2U4MWM4MzkyMGFiNmM1NTY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDI3IEZlYiAyMDI2IDE2OjIzOjU3IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzYgMDIvMTZdIFNhdmUgdm1idWZmZXIgaW4gaGVhcC1zcGVjaWZpYyBzY2FuIGRlc2Ny aXB0b3JzIGZvcgogb24tYWNjZXNzIHBydW5pbmcKCkZ1dHVyZSBjb21taXRzIHdpbGwgdXNlIHRo ZSB2aXNpYmlsaXR5IG1hcCBpbiBvbi1hY2Nlc3MgcHJ1bmluZyB0byBhdm9pZApwcnVuaW5nIHdo ZW4gYSBwYWdlIGlzIGFsbC12aXNpYmxlLCBmaXggVk0gY29ycnVwdGlvbiwgYW5kIHNldCB0aGUg Vk0gaWYKdGhlIHBhZ2UgaXMgYWxsLXZpc2libGUuCgpTYXZpbmcgdGhlIHZtYnVmZmVyIGluIHRo ZSBzY2FuIGRlc2NyaXB0b3IgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHRpbWVzCml0IHdvdWxkIG5l ZWQgdG8gYmUgcGlubmVkIGFuZCB1bnBpbm5lZCwgbWFraW5nIHRoZSBvdmVyaGVhZCBvZiBkb2lu ZyBzbwpuZWdsaWdpYmxlLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2Vt YW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNv bT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgIHwgMTIgKysr KysrKysrKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIHwgMTIg KysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgIHwg IDYgKysrKystCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgICAgIHwgMTkg KysrKysrKysrKysrKysrKy0tLQogNCBmaWxlcyBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspLCA3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNjQ5ZWU2ZTc2Njku LjU0Y2Q4ZDZhNDk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNjMzLDcgKzYzMyw3 IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCS8qCiAJICog UHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9z c2libGUuCiAJICovCi0JaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNlLnJzX3JkLCBi dWZmZXIpOworCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfYmFzZS5yc19yZCwgYnVmZmVy LCAmc2Nhbi0+cnNfdm1idWZmZXIpOwogCiAJLyoKIAkgKiBXZSBtdXN0IGhvbGQgc2hhcmUgbG9j ayBvbiB0aGUgYnVmZmVyIGNvbnRlbnQgd2hpbGUgZXhhbWluaW5nIHR1cGxlCkBAIC0xMzEwLDYg KzEzMTAsNyBAQCBoZWFwX2JlZ2luc2NhbihSZWxhdGlvbiByZWxhdGlvbiwgU25hcHNob3Qgc25h cHNob3QsCiAJCQkJCQkJCQkJCQkJCSAgc2l6ZW9mKFRCTUl0ZXJhdGVSZXN1bHQpKTsKIAl9CiAK KwlzY2FuLT5yc192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKIAlyZXR1cm4gKFRhYmxlU2Nh bkRlc2MpIHNjYW47CiB9CkBAIC0xMzQ4LDYgKzEzNDksMTIgQEAgaGVhcF9yZXNjYW4oVGFibGVT Y2FuRGVzYyBzc2NhbiwgU2NhbktleSBrZXksIGJvb2wgc2V0X3BhcmFtcywKIAkJc2Nhbi0+cnNf Y2J1ZiA9IEludmFsaWRCdWZmZXI7CiAJfQogCisJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNf dm1idWZmZXIpKQorCXsKKwkJUmVsZWFzZUJ1ZmZlcihzY2FuLT5yc192bWJ1ZmZlcik7CisJCXNj YW4tPnJzX3ZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwl9CisKIAkvKgogCSAqIFNPX1RZUEVf QklUTUFQU0NBTiB3b3VsZCBiZSBjbGVhbmVkIHVwIGhlcmUsIGJ1dCBpdCBkb2VzIG5vdCBob2xk IGFueQogCSAqIGFkZGl0aW9uYWwgZGF0YSB2cyBhIG5vcm1hbCBIZWFwU2NhbgpAQCAtMTM4MCw2 ICsxMzg3LDkgQEAgaGVhcF9lbmRzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJaWYgKEJ1ZmZl cklzVmFsaWQoc2Nhbi0+cnNfY2J1ZikpCiAJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfY2J1Zik7 CiAKKwlpZiAoQnVmZmVySXNWYWxpZChzY2FuLT5yc192bWJ1ZmZlcikpCisJCVJlbGVhc2VCdWZm ZXIoc2Nhbi0+cnNfdm1idWZmZXIpOworCiAJLyoKIAkgKiBNdXN0IGZyZWUgdGhlIHJlYWQgc3Ry ZWFtIGJlZm9yZSBmcmVlaW5nIHRoZSBCdWZmZXJBY2Nlc3NTdHJhdGVneS4KIAkgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDNmZjM2ZjU5YmY4Li40NzYy NDE5NGY5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC04 NSw2ICs4NSw3IEBAIGhlYXBhbV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwpCiAKIAlo c2Nhbi0+eHNfYmFzZS5yZWwgPSByZWw7CiAJaHNjYW4tPnhzX2NidWYgPSBJbnZhbGlkQnVmZmVy OworCWhzY2FuLT54c192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKIAlyZXR1cm4gJmhzY2Fu LT54c19iYXNlOwogfQpAQCAtOTksNiArMTAwLDEyIEBAIGhlYXBhbV9pbmRleF9mZXRjaF9yZXNl dChJbmRleEZldGNoVGFibGVEYXRhICpzY2FuKQogCQlSZWxlYXNlQnVmZmVyKGhzY2FuLT54c19j YnVmKTsKIAkJaHNjYW4tPnhzX2NidWYgPSBJbnZhbGlkQnVmZmVyOwogCX0KKworCWlmIChCdWZm ZXJJc1ZhbGlkKGhzY2FuLT54c192bWJ1ZmZlcikpCisJeworCQlSZWxlYXNlQnVmZmVyKGhzY2Fu LT54c192bWJ1ZmZlcik7CisJCWhzY2FuLT54c192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJ fQogfQogCiBzdGF0aWMgdm9pZApAQCAtMTM4LDcgKzE0NSw4IEBAIGhlYXBhbV9pbmRleF9mZXRj aF90dXBsZShzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiwKIAkJICogUHJ1bmUgcGFn ZSwgYnV0IG9ubHkgaWYgd2Ugd2VyZW4ndCBhbHJlYWR5IG9uIHRoaXMgcGFnZQogCQkgKi8KIAkJ aWYgKHByZXZfYnVmICE9IGhzY2FuLT54c19jYnVmKQotCQkJaGVhcF9wYWdlX3BydW5lX29wdCho c2Nhbi0+eHNfYmFzZS5yZWwsIGhzY2FuLT54c19jYnVmKTsKKwkJCWhlYXBfcGFnZV9wcnVuZV9v cHQoaHNjYW4tPnhzX2Jhc2UucmVsLCBoc2Nhbi0+eHNfY2J1ZiwKKwkJCQkJCQkJJmhzY2FuLT54 c192bWJ1ZmZlcik7CiAJfQogCiAJLyogT2J0YWluIHNoYXJlLWxvY2sgb24gdGhlIGJ1ZmZlciBz byB3ZSBjYW4gZXhhbWluZSB2aXNpYmlsaXR5ICovCkBAIC0yNTMzLDcgKzI1NDEsNyBAQCBCaXRt YXBIZWFwU2Nhbk5leHRCbG9jayhUYWJsZVNjYW5EZXNjIHNjYW4sCiAJLyoKIAkgKiBQcnVuZSBh bmQgcmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4K IAkgKi8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIpOworCWhlYXBf cGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfcmQsIGJ1ZmZlciwgJmhzY2FuLT5yc192bWJ1ZmZlcik7 CiAKIAkvKgogCSAqIFdlIG11c3QgaG9sZCBzaGFyZSBsb2NrIG9uIHRoZSBidWZmZXIgY29udGVu dCB3aGlsZSBleGFtaW5pbmcgdHVwbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5k ZXggZWViZDZjZjU3ZWEuLjhiNTA0NDU2N2JmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYwpAQCAtMjE0LDkgKzIxNCwxMyBAQCBzdGF0aWMgYm9vbCBoZWFwX3BhZ2Vfd2lsbF9mcmVl emUoYm9vbCBkaWRfdHVwbGVfaGludF9mcGksIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZAogICogaWYg dGhlcmUncyBub3QgYW55IHVzZSBpbiBwcnVuaW5nLgogICoKICAqIENhbGxlciBtdXN0IGhhdmUg cGluIG9uIHRoZSBidWZmZXIsIGFuZCBtdXN0ICpub3QqIGhhdmUgYSBsb2NrIG9uIGl0LgorICoK KyAqIFRoaXMgZnVuY3Rpb24gbWF5IHBpbiAqdm1idWZmZXIuIEl0J3MgcGFzc2VkIGJ5IHJlZmVy ZW5jZSBzbyB0aGUgY2FsbGVyIGNhbgorICogcmV1c2UgdGhlIHBpbiBhY3Jvc3MgY2FsbHMsIGF2 b2lkaW5nIHJlcGVhdGVkIHBpbi91bnBpbiBjeWNsZXMuIENhbGxlciBpcworICogcmVzcG9uc2li bGUgZm9yIHVucGlubmluZyBpdC4KICAqLwogdm9pZAotaGVhcF9wYWdlX3BydW5lX29wdChSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKK2hlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRp b24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsIEJ1ZmZlciAqdm1idWZmZXIpCiB7CiAJUGFnZQkJ cGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlUcmFuc2FjdGlvbklkIHBydW5lX3hpZDsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaAppbmRleCBkMDgzZjgyNWIzOS4uMjgxY2RkNWVlNTkgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmgKQEAgLTk0LDYgKzk0LDEyIEBAIHR5cGVkZWYgc3RydWN0IEhlYXBTY2FuRGVzY0RhdGEK IAkgKi8KIAlQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAqcnNfcGFyYWxsZWx3b3Jr ZXJkYXRhOwogCisJLyoKKwkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBhbmQgYml0bWFwIGhlYXAg c2NhbnMuIFRoZSBjdXJyZW50IGhlYXAgYmxvY2sncworCSAqIGNvcnJlc3BvbmRpbmcgcGFnZSBp biB0aGUgdmlzaWJpbGl0eSBtYXAuCisJICovCisJQnVmZmVyCQlyc192bWJ1ZmZlcjsKKwogCS8q IHRoZXNlIGZpZWxkcyBvbmx5IHVzZWQgaW4gcGFnZS1hdC1hLXRpbWUgbW9kZSBhbmQgZm9yIGJp dG1hcCBzY2FucyAqLwogCXVpbnQzMgkJcnNfY2luZGV4OwkJLyogY3VycmVudCB0dXBsZSdzIGlu ZGV4IGluIHZpc3R1cGxlcyAqLwogCXVpbnQzMgkJcnNfbnR1cGxlczsJCS8qIG51bWJlciBvZiB2 aXNpYmxlIHR1cGxlcyBvbiBwYWdlICovCkBAIC0xMTYsOCArMTIyLDE0IEBAIHR5cGVkZWYgc3Ry dWN0IEluZGV4RmV0Y2hIZWFwRGF0YQogewogCUluZGV4RmV0Y2hUYWJsZURhdGEgeHNfYmFzZTsJ LyogQU0gaW5kZXBlbmRlbnQgcGFydCBvZiB0aGUgZGVzY3JpcHRvciAqLwogCi0JQnVmZmVyCQl4 c19jYnVmOwkJLyogY3VycmVudCBoZWFwIGJ1ZmZlciBpbiBzY2FuLCBpZiBhbnkgKi8KLQkvKiBO QjogaWYgeHNfY2J1ZiBpcyBub3QgSW52YWxpZEJ1ZmZlciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0 IGJ1ZmZlciAqLworCS8qCisJICogQ3VycmVudCBoZWFwIGJ1ZmZlciBpbiBzY2FuLCBpZiBhbnku IE5COiBpZiB4c19jYnVmIGlzIG5vdAorCSAqIEludmFsaWRCdWZmZXIsIHdlIGhvbGQgYSBwaW4g b24gdGhhdCBidWZmZXIuCisJICovCisJQnVmZmVyCQl4c19jYnVmOworCisJLyogQ3VycmVudCBo ZWFwIGJsb2NrJ3MgY29ycmVzcG9uZGluZyBwYWdlIGluIHRoZSB2aXNpYmlsaXR5IG1hcCAqLwor CUJ1ZmZlcgkJeHNfdm1idWZmZXI7CiB9IEluZGV4RmV0Y2hIZWFwRGF0YTsKIAogLyogUmVzdWx0 IGNvZGVzIGZvciBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0gKi8KQEAgLTQxOCw3ICs0MzAsOCBA QCBleHRlcm4gVHJhbnNhY3Rpb25JZCBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMoUmVsYXRpb24g cmVsLAogCQkJCQkJCQkJCQkgIFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKTsKIAogLyogaW4g aGVhcC9wcnVuZWhlYXAuYyAqLwotZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcik7CitleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1 bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQlCdWZmZXIg KnZtYnVmZmVyKTsKIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5l RnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJl c3VsdCwKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqb2ZmX2xvYywKLS0gCjIuNDMuMAoK --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0003-Fix-visibility-map-corruption-in-more-cases.patch" Content-Disposition: attachment; filename="v36-0003-Fix-visibility-map-corruption-in-more-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfipd6a2 RnJvbSBmYjM0ZWQ0NDY2ZGFiODVmYjE2Yzk0OGZkYTM3NzNmNWE1OTAwMTRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI1IEZlYiAyMDI2IDE2OjIzOjA5IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzYgMDMvMTZdIEZpeCB2aXNpYmlsaXR5IG1hcCBjb3JydXB0aW9uIGluIG1vcmUgY2Fz ZXMKCk1vdmUgVk0gY29ycnVwdGlvbiBkZXRlY3Rpb24gYW5kIHJlcGFpciBpbnRvIHBydW5pbmcu IFRoaXMgYWxsb3dzIFZNCnJlcGFpciBkdXJpbmcgb24tYWNjZXNzIHBydW5pbmcsIG5vdCBvbmx5 IGR1cmluZyB2YWN1dW0uCgpBbHNvLCBleHBhbmQgY29ycnVwdGlvbiBkZXRlY3Rpb24gdG8gY292 ZXIgcGFnZXMgbWFya2VkIGFsbC12aXNpYmxlIHRoYXQKY29udGFpbiBkZWFkIHR1cGxlcyBhbmQg dHVwbGVzIGluc2VydGVkIG9yIHVwZGF0ZWQgYnkgaW4tcHJvZ3Jlc3MKdHJhbnNhY3Rpb25zLCBy YXRoZXIgdGhhbiBvbmx5IGFsbC12aXNpYmxlIHBhZ2VzIHdpdGggTFBfREVBRCBpdGVtcy4KClBp bm5pbmcgdGhlIGNvcnJlY3QgVk0gcGFnZSBiZWZvcmUgb24tYWNjZXNzIHBydW5pbmcgaXMgY2hl YXAgd2hlbgpjb21wYXJlZCB0byB0aGUgY29zdCBvZiBhY3R1YWxseSBwcnVuaW5nLiBUaGUgdm1i dWZmZXIgaXMgc2F2ZWQgaW4gdGhlCnNjYW4gZGVzY3JpcHRvciwgc28gYSBxdWVyeSBzaG91bGQg b25seSBuZWVkIHRvIHBpbiBlYWNoIFZNIHBhZ2Ugb25jZQphbmQgYSBzaW5nbGUgVk0gcGFnZSBj b3ZlcnMgYSBsYXJnZSBudW1iZXIgb2YgaGVhcCBwYWdlcy4KCkF1dGhvcjogTWVsYW5pZSBQbGFn ZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxp LmV2YW4uY2hhb0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgIHwgMTc2ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgIDg5ICstLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmggICAgICAgICAgfCAgMTIgKysKIDMgZmlsZXMgY2hhbmdlZCwgMTc1IGlu c2VydGlvbnMoKyksIDEwMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVh cC5jCmluZGV4IDhiNTA0NDU2N2JmLi42ZWNhMTQ3NGEyZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMKQEAgLTE5LDcgKzE5LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRh aWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIgogI2luY2x1ZGUgImFjY2Vzcy90 cmFuc2FtLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgiCisjaW5jbHVk ZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2lu Y2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgi CkBAIC0xMjEsNiArMTIxLDIxIEBAIHR5cGVkZWYgc3RydWN0CiAJICovCiAJVHJhbnNhY3Rpb25J ZCBmcnpfY29uZmxpY3RfaG9yaXpvbjsKIAorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAqIFdvcmtpbmcgc3RhdGUgZm9yIHZpc2li aWxpdHkgbWFwIHByb2Nlc3NpbmcKKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkgKi8KKworCS8qCisJICogQ2FsbGVyIG11c3QgcHJv dmlkZSBhIHBpbm5lZCB2bWJ1ZmZlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBoZWFwIGJsb2NrCisJ ICogcGFzc2VkIHRvIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuIFdlIHdpbGwgZml4IGFu eSBjb3JydXB0aW9uCisJICogZm91bmQgaW4gdGhlIFZNLgorCSAqLworCUJ1ZmZlcgkJdm1idWZm ZXI7CisKKwkvKiBCaXRzIGluIHRoZSB2bWJ1ZmZlciBmb3IgdGhpcyBoZWFwIHBhZ2UgKi8KKwl1 aW50OAkJdm1iaXRzOworCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAJICogSW5mb3JtYXRpb24gYWJvdXQgd2hhdCB3YXMgZG9uZQog CSAqCkBAIC0xNzUsNiArMTkwLDcgQEAgc3RhdGljIHZvaWQgcHJ1bmVfZnJlZXplX3NldHVwKFBy dW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxt aW5fbXhpZCwKIAkJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKIAkJCQkJCQkg ICBQcnVuZVN0YXRlICpwcnN0YXRlKTsKK3N0YXRpYyB2b2lkIGhlYXBfZml4X3ZtX2NvcnJ1cHRp b24oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSk7CiBzdGF0aWMgdm9p ZCBwcnVuZV9mcmVlemVfcGxhbihQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJCQkJCSAgT2Zmc2V0 TnVtYmVyICpvZmZfbG9jKTsKIHN0YXRpYyBIVFNWX1Jlc3VsdCBoZWFwX3BydW5lX3NhdGlzZmll c192YWN1dW0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKQEAgLTE4Miw3ICsxOTgsOCBAQCBzdGF0aWMg SFRTVl9SZXN1bHQgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKFBydW5lU3RhdGUgKnByc3Rh dGUsCiBzdGF0aWMgaW5saW5lIEhUU1ZfUmVzdWx0IGh0c3ZfZ2V0X3ZhbGlkX3N0YXR1cyhpbnQg c3RhdHVzKTsKIHN0YXRpYyB2b2lkIGhlYXBfcHJ1bmVfY2hhaW4oT2Zmc2V0TnVtYmVyIG1heG9m ZiwKIAkJCQkJCQkgT2Zmc2V0TnVtYmVyIHJvb3RvZmZudW0sIFBydW5lU3RhdGUgKnByc3RhdGUp Owotc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfcHJ1bmFibGUoUHJ1bmVTdGF0ZSAqcHJz dGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpOworc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRf cHJ1bmFibGUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJ CQkgICBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIHN0YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVjb3Jk X3JlZGlyZWN0KFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIg b2ZmbnVtLCBPZmZzZXROdW1iZXIgcmRvZmZudW0sCiAJCQkJCQkJCQkgICBib29sIHdhc19ub3Jt YWwpOwpAQCAtMjE2LDggKzIzMyw5IEBAIHN0YXRpYyBib29sIGhlYXBfcGFnZV93aWxsX2ZyZWV6 ZShib29sIGRpZF90dXBsZV9oaW50X2ZwaSwgYm9vbCBkb19wcnVuZSwgYm9vbCBkCiAgKiBDYWxs ZXIgbXVzdCBoYXZlIHBpbiBvbiB0aGUgYnVmZmVyLCBhbmQgbXVzdCAqbm90KiBoYXZlIGEgbG9j ayBvbiBpdC4KICAqCiAgKiBUaGlzIGZ1bmN0aW9uIG1heSBwaW4gKnZtYnVmZmVyLiBJdCdzIHBh c3NlZCBieSByZWZlcmVuY2Ugc28gdGhlIGNhbGxlciBjYW4KLSAqIHJldXNlIHRoZSBwaW4gYWNy b3NzIGNhbGxzLCBhdm9pZGluZyByZXBlYXRlZCBwaW4vdW5waW4gY3ljbGVzLiBDYWxsZXIgaXMK LSAqIHJlc3BvbnNpYmxlIGZvciB1bnBpbm5pbmcgaXQuCisgKiByZXVzZSB0aGUgcGluIGFjcm9z cyBjYWxscywgYXZvaWRpbmcgcmVwZWF0ZWQgcGluL3VucGluIGN5Y2xlcy4gSWYgd2UgZmluZAor ICogVk0gY29ycnVwdGlvbiBkdXJpbmcgcHJ1bmluZywgd2Ugd2lsbCBmaXggaXQuIENhbGxlciBp cyByZXNwb25zaWJsZSBmb3IKKyAqIHVucGlubmluZyAqdm1idWZmZXIuCiAgKi8KIHZvaWQKIGhl YXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsIEJ1ZmZl ciAqdm1idWZmZXIpCkBAIC0yODQsNiArMzAyLDE2IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsIEJ1ZmZlciAqdm1idWZmZXIpCiAJCXsKIAkJ CU9mZnNldE51bWJlciBkdW1teV9vZmZfbG9jOwogCQkJUHJ1bmVGcmVlemVSZXN1bHQgcHJlc3Vs dDsKKwkJCVBydW5lRnJlZXplUGFyYW1zIHBhcmFtczsKKworCQkJdmlzaWJpbGl0eW1hcF9waW4o cmVsYXRpb24sIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksIHZtYnVmZmVyKTsKKworCQkJ cGFyYW1zLnJlbGF0aW9uID0gcmVsYXRpb247CisJCQlwYXJhbXMuYnVmZmVyID0gYnVmZmVyOwor CQkJcGFyYW1zLnZtYnVmZmVyID0gKnZtYnVmZmVyOworCQkJcGFyYW1zLnJlYXNvbiA9IFBSVU5F X09OX0FDQ0VTUzsKKwkJCXBhcmFtcy52aXN0ZXN0ID0gdmlzdGVzdDsKKwkJCXBhcmFtcy5jdXRv ZmZzID0gTlVMTDsKIAogCQkJLyoKIAkJCSAqIFdlIGRvbid0IHBhc3MgdGhlIEhFQVBfUEFHRV9Q UlVORV9NQVJLX1VOVVNFRF9OT1cgb3B0aW9uCkBAIC0yOTEsMTQgKzMxOSw3IEBAIGhlYXBfcGFn ZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsIEJ1ZmZlciAqdm1i dWZmZXIpCiAJCQkgKiBjYW5ub3Qgc2FmZWx5IGRldGVybWluZSB0aGF0IGR1cmluZyBvbi1hY2Nl c3MgcHJ1bmluZyB3aXRoIHRoZQogCQkJICogY3VycmVudCBpbXBsZW1lbnRhdGlvbi4KIAkJCSAq LwotCQkJUHJ1bmVGcmVlemVQYXJhbXMgcGFyYW1zID0gewotCQkJCS5yZWxhdGlvbiA9IHJlbGF0 aW9uLAotCQkJCS5idWZmZXIgPSBidWZmZXIsCi0JCQkJLnJlYXNvbiA9IFBSVU5FX09OX0FDQ0VT UywKLQkJCQkub3B0aW9ucyA9IDAsCi0JCQkJLnZpc3Rlc3QgPSB2aXN0ZXN0LAotCQkJCS5jdXRv ZmZzID0gTlVMTCwKLQkJCX07CisJCQlwYXJhbXMub3B0aW9ucyA9IDA7CiAKIAkJCWhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKCZwYXJhbXMsICZwcmVzdWx0LCAmZHVtbXlfb2ZmX2xvYywKIAkJ CQkJCQkJCSAgIE5VTEwsIE5VTEwpOwpAQCAtMzYxLDYgKzM4MiwxMiBAQCBwcnVuZV9mcmVlemVf c2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlwcnN0YXRlLT5idWZmZXIgPSBwYXJh bXMtPmJ1ZmZlcjsKIAlwcnN0YXRlLT5wYWdlID0gQnVmZmVyR2V0UGFnZShwYXJhbXMtPmJ1ZmZl cik7CiAKKwlBc3NlcnQoQnVmZmVySXNWYWxpZChwYXJhbXMtPnZtYnVmZmVyKSk7CisJcHJzdGF0 ZS0+dm1idWZmZXIgPSBwYXJhbXMtPnZtYnVmZmVyOworCXByc3RhdGUtPnZtYml0cyA9IHZpc2li aWxpdHltYXBfZ2V0X3N0YXR1cyhwcnN0YXRlLT5yZWxhdGlvbiwKKwkJCQkJCQkJCQkJICAgcHJz dGF0ZS0+YmxvY2ssCisJCQkJCQkJCQkJCSAgICZwcnN0YXRlLT52bWJ1ZmZlcik7CisKIAkvKgog CSAqIE91ciBzdHJhdGVneSBpcyB0byBzY2FuIHRoZSBwYWdlIGFuZCBtYWtlIGxpc3RzIG9mIGl0 ZW1zIHRvIGNoYW5nZSwKIAkgKiB0aGVuIGFwcGx5IHRoZSBjaGFuZ2VzIHdpdGhpbiBhIGNyaXRp Y2FsIHNlY3Rpb24uICBUaGlzIGtlZXBzIGFzIG11Y2gKQEAgLTc3Nyw2ICs4MDQsOTAgQEAgaGVh cF9wYWdlX3dpbGxfZnJlZXplKGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLAogCXJldHVybiBkb19m cmVlemU7CiB9CiAKKy8qCisgKiBIZWxwZXIgdG8gZml4IHZpc2liaWxpdHktcmVsYXRlZCBjb3Jy dXB0aW9uIG9uIGEgaGVhcCBwYWdlIGFuZCBpdHMKKyAqIGNvcnJlc3BvbmRpbmcgVk0gcGFnZS4g QW4gYWxsLXZpc2libGUgcGFnZSBjYW5ub3QgaGF2ZSBkZWFkIGl0ZW1zIG5vciBjYW4KKyAqIGl0 IGhhdmUgdHVwbGVzIHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIGFsbCBydW5uaW5nIHRyYW5zYWN0 aW9ucy4gSXQgY2xlYXJzCisgKiB0aGUgVk0gY29ycnVwdGlvbiBhcyB3ZWxsIGFzIHJlc2V0dGlu ZyB0aGUgdm1iaXRzIHVzZWQgZHVyaW5nIHBydW5pbmcuCisgKgorICogVGhpcyBmdW5jdGlvbiBt dXN0IGJlIGNhbGxlZCB3aGlsZSBob2xkaW5nIGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIHRoZSBoZWFw CisgKiBidWZmZXIsIGFuZCBhbnkgZGVhZCBpdGVtcyBtdXN0IGhhdmUgYmVlbiBkaXNjb3ZlcmVk IHVuZGVyIHRoYXQgc2FtZSBsb2NrLgorICogQWx0aG91Z2ggd2UgZG8gbm90IGhvbGQgYSBsb2Nr IG9uIHRoZSBWTSBidWZmZXIsIGl0IGlzIHBpbm5lZCwgYW5kIHRoZSBoZWFwCisgKiBidWZmZXIg aXMgZXhjbHVzaXZlbHkgbG9ja2VkLCBlbnN1cmluZyB0aGF0IG5vIG90aGVyIGJhY2tlbmQgY2Fu IHVwZGF0ZSB0aGUKKyAqIFZNIGJpdHMgY29ycmVzcG9uZGluZyB0byB0aGlzIGhlYXAgcGFnZS4K KyAqCisgKiBUaGlzIGZ1bmN0aW9uIG1ha2VzIGNoYW5nZXMgdG8gdGhlIFZNIGFuZCwgcG90ZW50 aWFsbHksIHRoZSBoZWFwIHBhZ2UsIGJ1dAorICogaXQgZG9lcyBub3QgbmVlZCB0byBiZSBkb25l IGluIGEgY3JpdGljYWwgc2VjdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK2hlYXBfZml4X3ZtX2Nv cnJ1cHRpb24oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSkKK3sKKwlj b25zdCBjaGFyICpyZWxuYW1lID0gUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocHJzdGF0ZS0+cmVs YXRpb24pOworCisJQXNzZXJ0KEJ1ZmZlcklzTG9ja2VkQnlNZUluTW9kZShwcnN0YXRlLT5idWZm ZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSkpOworCisJaWYgKFBhZ2VJc0FsbFZpc2libGUocHJz dGF0ZS0+cGFnZSkpCisJeworCQkvKgorCQkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUgdmFsdWUg cmV0dXJuZWQgYnkKKwkJICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRv IG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAorCQkgKiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1 cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0bworCQkgKiBldmVyeW9uZSB5ZXQs IHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZlCisJCSAq IHhtaW4gdmFsdWUgbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQKKwkJICogR2V0T2xkZXN0Tm9u UmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzIGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRpbWVzCisJ CSAqIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwgc28gaWYgd2Ug c2VlIHRoYXQKKwkJICogY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxl cyB0aGF0IHdlIHRoaW5rIGFyZSBub3QKKwkJICogdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0 dWFsbHkgYXJlLCBhbmQgdGhlIFBEX0FMTF9WSVNJQkxFIGZsYWcKKwkJICogaXMgY29ycmVjdC4K KwkJICoKKwkJICogSG93ZXZlciwgdGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMs IGRlYWQgdHVwbGUgdmVyc2lvbnMsCisJCSAqIG9yIHR1cGxlcyBpbnNlcnRlZCBieSBhbiBpbi1w cm9ncmVzcyB0cmFuc2FjdGlvbiBvbiBhIHBhZ2Ugd2l0aAorCQkgKiBQRF9BTExfVklTSUJMRSBz ZXQuCisJCSAqLworCQlpZiAocHJzdGF0ZS0+bHBkZWFkX2l0ZW1zID4gMCkKKwkJeworCQkJZXJl cG9ydChXQVJOSU5HLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJ CQkJIGVycm1zZygiZGVhZCBsaW5lIHBvaW50ZXIgZm91bmQgb24gcGFnZSBtYXJrZWQgYWxsLXZp c2libGUiKSwKKwkJCQkJIGVycmNvbnRleHQoInJlbGF0aW9uIFwiJXNcIiwgcGFnZSAldSwgdHVw bGUgJXUiLAorCQkJCQkJCQlyZWxuYW1lLCBwcnN0YXRlLT5ibG9jaywgb2ZmbnVtKSkpOworCQl9 CisJCWVsc2UKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0RBVEFfQ09SUlVQVEVEKSwKKwkJCQkJIGVycm1zZygidHVwbGUgbm90IHZpc2libGUgdG8gYWxs IHRyYW5zYWN0aW9ucyBmb3VuZCBvbiBwYWdlIG1hcmtlZCBhbGwtdmlzaWJsZSIpLAorCQkJCQkg ZXJyY29udGV4dCgicmVsYXRpb24gXCIlc1wiLCBwYWdlICV1LCB0dXBsZSAldSIsCisJCQkJCQkJ CXJlbG5hbWUsIHByc3RhdGUtPmJsb2NrLCBvZmZudW0pKSk7CisJCX0KKworCQkvKgorCQkgKiBN YXJrIHRoZSBidWZmZXIgZGlydHkgbm93IGluIGNhc2Ugd2UgbWFrZSBubyBmdXJ0aGVyIGNoYW5n ZXMgYW5kCisJCSAqIHRoZXJlZm9yZSB3b3VsZCBub3QgbWFyayBpdCBkaXJ0eSBsYXRlci4KKwkJ ICovCisJCVBhZ2VDbGVhckFsbFZpc2libGUocHJzdGF0ZS0+cGFnZSk7CisJCU1hcmtCdWZmZXJE aXJ0eUhpbnQocHJzdGF0ZS0+YnVmZmVyLCB0cnVlKTsKKwl9CisJZWxzZSBpZiAocHJzdGF0ZS0+ dm1iaXRzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQorCXsKKwkJLyoKKwkJICogQXMgb2Yg UG9zdGdyZVNRTCA5LjIsIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNl dCBpZgorCQkgKiB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIuIEhvd2V2ZXIsIGl0J3MgcG9z c2libGUgdGhhdCB0aGUgYml0CisJCSAqIGdvdCBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5f bmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QKKwkJICogcmVjaGVjayBub3cgdGhh dCB3ZSBoYXZlIHRoZSBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRoZQorCQkg KiBWTSBpcyBjb3JydXB0LgorCQkgKi8KKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBlcnJtc2coInBhZ2UgaXMgbm90IG1hcmtl ZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCIpLAorCQkJCSBlcnJj b250ZXh0KCJyZWxhdGlvbiBcIiVzXCIsIHBhZ2UgJXUiLAorCQkJCQkJCXJlbG5hbWUsIHByc3Rh dGUtPmJsb2NrKSkpOworCX0KKworCXZpc2liaWxpdHltYXBfY2xlYXIocHJzdGF0ZS0+cmVsYXRp b24sIHByc3RhdGUtPmJsb2NrLCBwcnN0YXRlLT52bWJ1ZmZlciwKKwkJCQkJCVZJU0lCSUxJVFlN QVBfVkFMSURfQklUUyk7CisJcHJzdGF0ZS0+dm1iaXRzID0gMDsKK30KIAogLyoKICAqIFBydW5l IGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBv biB0aGUKQEAgLTgzNyw2ICs5NDgsMTAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1 bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJICAgbmV3X3JlbGZyb3plbl94aWQsIG5ld19y ZWxtaW5fbXhpZCwKIAkJCQkJICAgcHJlc3VsdCwgJnByc3RhdGUpOwogCisJaWYgKChwcnN0YXRl LnZtYml0cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgJiYKKwkJIVBhZ2VJc0FsbFZpc2li bGUocHJzdGF0ZS5wYWdlKSkKKwkJaGVhcF9maXhfdm1fY29ycnVwdGlvbigmcHJzdGF0ZSwgSW52 YWxpZE9mZnNldE51bWJlcik7CisKIAkvKgogCSAqIEV4YW1pbmUgYWxsIGxpbmUgcG9pbnRlcnMg YW5kIHR1cGxlIHZpc2liaWxpdHkgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lCiAJICogd2hpY2gg bGluZSBwb2ludGVycyBzaG91bGQgY2hhbmdlIHN0YXRlIGFuZCB3aGljaCB0dXBsZXMgbWF5IGJl IGZyb3plbi4KQEAgLTk4MCw2ICsxMDk1LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo UHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlwcmVzdWx0LT5zZXRfYWxsX3Zpc2libGUgPSBw cnN0YXRlLnNldF9hbGxfdmlzaWJsZTsKIAlwcmVzdWx0LT5zZXRfYWxsX2Zyb3plbiA9IHByc3Rh dGUuc2V0X2FsbF9mcm96ZW47CiAJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7CisJ cHJlc3VsdC0+dm1iaXRzID0gcHJzdGF0ZS52bWJpdHM7CiAKIAkvKgogCSAqIEZvciBjYWxsZXJz IHBsYW5uaW5nIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoZSBjb25mbGljdCBob3Jp em9uCkBAIC0xMzAyLDcgKzE0MTgsOCBAQCBwcm9jZXNzX2NoYWluOgogCiAvKiBSZWNvcmQgbG93 ZXN0IHNvb24tcHJ1bmFibGUgWElEICovCiBzdGF0aWMgdm9pZAotaGVhcF9wcnVuZV9yZWNvcmRf cHJ1bmFibGUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCitoZWFwX3By dW5lX3JlY29yZF9wcnVuYWJsZShQcnVuZVN0YXRlICpwcnN0YXRlLCBUcmFuc2FjdGlvbklkIHhp ZCwKKwkJCQkJCSAgIE9mZnNldE51bWJlciBvZmZudW0pCiB7CiAJLyoKIAkgKiBUaGlzIHNob3Vs ZCBleGFjdGx5IG1hdGNoIHRoZSBQYWdlU2V0UHJ1bmFibGUgbWFjcm8uICBXZSBjYW4ndCBzdG9y ZQpAQCAtMTMxMiw2ICsxNDI5LDEzIEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3BydW5hYmxlKFBydW5l U3RhdGUgKnByc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKQogCWlmICghVHJhbnNhY3Rpb25JZElz VmFsaWQocHJzdGF0ZS0+bmV3X3BydW5lX3hpZCkgfHwKIAkJVHJhbnNhY3Rpb25JZFByZWNlZGVz KHhpZCwgcHJzdGF0ZS0+bmV3X3BydW5lX3hpZCkpCiAJCXByc3RhdGUtPm5ld19wcnVuZV94aWQg PSB4aWQ7CisKKwkvKgorCSAqIEl0J3MgaW5jb3JyZWN0IGZvciBhIHBhZ2UgdG8gYmUgbWFya2Vk IGFsbC12aXNpYmxlIGlmIGl0IGNvbnRhaW5zCisJICogcHJ1bmFibGUgaXRlbXMuCisJICovCisJ aWYgKFBhZ2VJc0FsbFZpc2libGUocHJzdGF0ZS0+cGFnZSkpCisJCWhlYXBfZml4X3ZtX2NvcnJ1 cHRpb24ocHJzdGF0ZSwgb2ZmbnVtKTsKIH0KIAogLyogUmVjb3JkIGxpbmUgcG9pbnRlciB0byBi ZSByZWRpcmVjdGVkICovCkBAIC0xMzk1LDYgKzE1MTksMTUgQEAgaGVhcF9wcnVuZV9yZWNvcmRf ZGVhZF9vcl91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSwK IAkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIG9mZm51bSwgd2FzX25vcm1hbCk7 CiAJZWxzZQogCQloZWFwX3BydW5lX3JlY29yZF9kZWFkKHByc3RhdGUsIG9mZm51bSwgd2FzX25v cm1hbCk7CisKKwkvKgorCSAqIEl0J3MgaW5jb3JyZWN0IGZvciB0aGUgcGFnZSB0byBiZSBzZXQg YWxsLXZpc2libGUgaWYgaXQgY29udGFpbnMgZGVhZAorCSAqIGl0ZW1zLiBGaXggdGhhdCBvbiB0 aGUgaGVhcCBwYWdlIGFuZCBjaGVjayB0aGUgVk0gZm9yIGNvcnJ1cHRpb24gYXMKKwkgKiB3ZWxs LiBEbyB0aGF0IGhlcmUgcmF0aGVyIHRoYW4gaW4gaGVhcF9wcnVuZV9yZWNvcmRfZGVhZCgpIHNv IHdlIGFsc28KKwkgKiBjb3ZlciB0dXBsZXMgdGhhdCBhcmUgZGlyZWN0bHkgbWFya2VkIExQX1VO VVNFRCB2aWEgbWFya191bnVzZWRfbm93LgorCSAqLworCWlmIChQYWdlSXNBbGxWaXNpYmxlKHBy c3RhdGUtPnBhZ2UpKQorCQloZWFwX2ZpeF92bV9jb3JydXB0aW9uKHByc3RhdGUsIG9mZm51bSk7 CiB9CiAKIC8qIFJlY29yZCBsaW5lIHBvaW50ZXIgdG8gYmUgbWFya2VkIHVudXNlZCAqLwpAQCAt MTUzNCw3ICsxNjY3LDggQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQ cnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQogCQkJICogdGhhdCB0aGUg cGFnZSBpcyByZWNvbnNpZGVyZWQgZm9yIHBydW5pbmcgaW4gZnV0dXJlLgogCQkJICovCiAJCQlo ZWFwX3BydW5lX3JlY29yZF9wcnVuYWJsZShwcnN0YXRlLAotCQkJCQkJCQkJICAgSGVhcFR1cGxl SGVhZGVyR2V0VXBkYXRlWGlkKGh0dXApKTsKKwkJCQkJCQkJCSAgIEhlYXBUdXBsZUhlYWRlckdl dFVwZGF0ZVhpZChodHVwKSwKKwkJCQkJCQkJCSAgIG9mZm51bSk7CiAJCQlicmVhazsKIAogCQlj YXNlIEhFQVBUVVBMRV9JTlNFUlRfSU5fUFJPR1JFU1M6CkBAIC0xNTQ5LDYgKzE2ODMsMTAgQEAg aGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQcnVuZVN0YXRlICpwcnN0YXRl LCBPZmZzZXROdW1iZXIgb2ZmbnVtKQogCQkJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFs c2U7CiAJCQlwcnN0YXRlLT5zZXRfYWxsX2Zyb3plbiA9IGZhbHNlOwogCisJCQkvKiBUaGUgcGFn ZSBzaG91bGQgbm90IGJlIG1hcmtlZCBhbGwtdmlzaWJsZSAqLworCQkJaWYgKFBhZ2VJc0FsbFZp c2libGUocGFnZSkpCisJCQkJaGVhcF9maXhfdm1fY29ycnVwdGlvbihwcnN0YXRlLCBvZmZudW0p OworCiAJCQkvKgogCQkJICogSWYgd2Ugd2FudGVkIHRvIG9wdGltaXplIGZvciBhYm9ydHMsIHdl IG1pZ2h0IGNvbnNpZGVyIG1hcmtpbmcKIAkJCSAqIHRoZSBwYWdlIHBydW5hYmxlIHdoZW4gd2Ug c2VlIElOU0VSVF9JTl9QUk9HUkVTUy4gIEJ1dCB3ZQpAQCAtMTU3Myw3ICsxNzExLDggQEAgaGVh cF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQcnVuZVN0YXRlICpwcnN0YXRlLCBP ZmZzZXROdW1iZXIgb2ZmbnVtKQogCQkJICogdGhlIHBhZ2UgaXMgcmVjb25zaWRlcmVkIGZvciBw cnVuaW5nIGluIGZ1dHVyZS4KIAkJCSAqLwogCQkJaGVhcF9wcnVuZV9yZWNvcmRfcHJ1bmFibGUo cHJzdGF0ZSwKLQkJCQkJCQkJCSAgIEhlYXBUdXBsZUhlYWRlckdldFVwZGF0ZVhpZChodHVwKSk7 CisJCQkJCQkJCQkgICBIZWFwVHVwbGVIZWFkZXJHZXRVcGRhdGVYaWQoaHR1cCksCisJCQkJCQkJ CQkgICBvZmZudW0pOwogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKQEAgLTE2MzksNiArMTc3OCwx MyBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQcnVuZVN0YXRlICpwcnN0 YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQogCiAJLyogUmVjb3JkIHRoZSBkZWFkIG9mZnNldCBm b3IgdmFjdXVtICovCiAJcHJzdGF0ZS0+ZGVhZG9mZnNldHNbcHJzdGF0ZS0+bHBkZWFkX2l0ZW1z KytdID0gb2ZmbnVtOworCisJLyoKKwkgKiBJdCdzIGluY29ycmVjdCBmb3IgYSBwYWdlIHRvIGJl IG1hcmtlZCBhbGwtdmlzaWJsZSBpZiBpdCBjb250YWlucyBkZWFkCisJICogaXRlbXMuCisJICov CisJaWYgKFBhZ2VJc0FsbFZpc2libGUocHJzdGF0ZS0+cGFnZSkpCisJCWhlYXBfZml4X3ZtX2Nv cnJ1cHRpb24ocHJzdGF0ZSwgb2ZmbnVtKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYwppbmRleCA4MmM1YjI4ZTBhZC4uOTU3MzIyNjQ4Y2EgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTQyNSwxMSArNDI1LDYgQEAgc3RhdGljIHZvaWQgZmlu ZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNh bGx2aXMpOwogc3RhdGljIGJvb2wgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2 YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBh Z2UsCiAJCQkJCQkJCSAgIGJvb2wgc2hhcmVsb2NrLCBCdWZmZXIgdm1idWZmZXIpOwotc3RhdGlj IHZvaWQgaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGhlYXBfYnVmZmVyLAotCQkJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBQYWdlIGhl YXBfcGFnZSwKLQkJCQkJCQkJCQkgICBpbnQgbmxwZGVhZF9pdGVtcywKLQkJCQkJCQkJCQkgICBC dWZmZXIgdm1idWZmZXIsCi0JCQkJCQkJCQkJICAgdWludDggKnZtYml0cyk7CiBzdGF0aWMgaW50 CWxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJ QmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQlCdWZmZXIgdm1idWZmZXIsCkBA IC0xOTY0LDgxICsxOTU5LDYgQEAgY21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lkICphLCBjb25z dCB2b2lkICpiKQogCXJldHVybiBwZ19jbXBfdTE2KCooY29uc3QgT2Zmc2V0TnVtYmVyICopIGEs ICooY29uc3QgT2Zmc2V0TnVtYmVyICopIGIpOwogfQogCi0vKgotICogSGVscGVyIHRvIGNvcnJl Y3QgYW55IGNvcnJ1cHRpb24gZGV0ZWN0ZWQgb24gYSBoZWFwIHBhZ2UgYW5kIGl0cwotICogY29y cmVzcG9uZGluZyB2aXNpYmlsaXR5IG1hcCBwYWdlIGFmdGVyIHBydW5pbmcgYnV0IGJlZm9yZSBz ZXR0aW5nIHRoZQotICogdmlzaWJpbGl0eSBtYXAuIEl0IGV4YW1pbmVzIHRoZSBoZWFwIHBhZ2Us IHRoZSBhc3NvY2lhdGVkIFZNIHBhZ2UsIGFuZCB0aGUKLSAqIG51bWJlciBvZiBkZWFkIGl0ZW1z IHByZXZpb3VzbHkgaWRlbnRpZmllZC4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2Fs bGVkIHdoaWxlIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGxvY2sgb24gdGhlIGhlYXAKLSAqIGJ1ZmZl ciwgYW5kIHRoZSBkZWFkIGl0ZW1zIG11c3QgaGF2ZSBiZWVuIGRpc2NvdmVyZWQgdW5kZXIgdGhh dCBzYW1lIGxvY2suCi0KLSAqIFRoZSBwcm92aWRlZCB2bWJpdHMgbXVzdCByZWZsZWN0IHRoZSBj dXJyZW50IHN0YXRlIG9mIHRoZSBWTSBibG9jawotICogcmVmZXJlbmNlZCBieSB2bWJ1ZmZlci4g QWx0aG91Z2ggd2UgZG8gbm90IGhvbGQgYSBsb2NrIG9uIHRoZSBWTSBidWZmZXIsIGl0Ci0gKiBp cyBwaW5uZWQsIGFuZCB0aGUgaGVhcCBidWZmZXIgaXMgZXhjbHVzaXZlbHkgbG9ja2VkLCBlbnN1 cmluZyB0aGF0IG5vCi0gKiBvdGhlciBiYWNrZW5kIGNhbiB1cGRhdGUgdGhlIFZNIGJpdHMgY29y cmVzcG9uZGluZyB0byB0aGlzIGhlYXAgcGFnZS4KLSAqCi0gKiBJZiBpdCBjbGVhcnMgY29ycnVw dGlvbiwgaXQgd2lsbCB6ZXJvIG91dCB2bWJpdHMuCi0gKi8KLXN0YXRpYyB2b2lkCi1pZGVudGlm eV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIs Ci0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIFBhZ2UgaGVhcF9wYWdlLAotCQkJCQkJ CSAgIGludCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKLQkJCQkJ CQkgICB1aW50OCAqdm1iaXRzKQotewotCUFzc2VydCh2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMo cmVsLCBoZWFwX2JsaywgJnZtYnVmZmVyKSA9PSAqdm1iaXRzKTsKLQotCUFzc2VydChCdWZmZXJJ c0xvY2tlZEJ5TWVJbk1vZGUoaGVhcF9idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSkpOwot Ci0JLyoKLQkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBz aG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAg SG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0JICogY2xlYXJlZCBhZnRl ciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hl Y2sKLQkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlz IGNvcnJ1cHQuCi0JICovCi0JaWYgKCFQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKLQkJ KCgqdm1iaXRzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSAhPSAwKSkKLQl7Ci0JCWVyZXBv cnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkg ZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFw IGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJCQkJUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7Ci0KLQkJdmlzaWJpbGl0eW1hcF9jbGVh cihyZWwsIGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJ VFMpOwotCQkqdm1iaXRzID0gMDsKLQl9Ci0KLQkvKgotCSAqIEl0J3MgcG9zc2libGUgZm9yIHRo ZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9u SWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKLQkgKiB3cm9uZyBmb3IgdXMgdG8g c2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9uZQotCSAq IHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFsIHNhZmUg eG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVzdE5vblJl bW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRpbWVz IHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKLQkgKiBzbyBpZiB3 ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVwbGVzIHRo YXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVhbGx5 IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4KLQkgKgot CSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3aXRoIFBE X0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAqLwotCWVsc2UgaWYgKFBhZ2VJc0Fs bFZpc2libGUoaGVhcF9wYWdlKSAmJiBubHBkZWFkX2l0ZW1zID4gMCkKLQl7Ci0JCWVyZXBvcnQo V0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJy bXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZpc2li bGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUocmVsKSwgaGVhcF9ibGspKSk7Ci0KLQkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFwX3Bh Z2UpOwotCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOwotCQl2aXNpYmlsaXR5bWFwX2Ns ZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURf QklUUyk7Ci0JCSp2bWJpdHMgPSAwOwotCX0KLX0KLQogLyoKICAqCWxhenlfc2Nhbl9wcnVuZSgp IC0tIGxhenlfc2Nhbl9oZWFwKCkgcHJ1bmluZyBhbmQgZnJlZXppbmcuCiAgKgpAQCAtMjA3MCw2 ICsxOTkwLDcgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAlQcnVuZUZy ZWV6ZVBhcmFtcyBwYXJhbXMgPSB7CiAJCS5yZWxhdGlvbiA9IHJlbCwKIAkJLmJ1ZmZlciA9IGJ1 ZiwKKwkJLnZtYnVmZmVyID0gdm1idWZmZXIsCiAJCS5yZWFzb24gPSBQUlVORV9WQUNVVU1fU0NB TiwKIAkJLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLAogCQkudmlzdGVzdCA9IHZh Y3JlbC0+dmlzdGVzdCwKQEAgLTIxNzksMTggKzIxMDAsMTIgQEAgbGF6eV9zY2FuX3BydW5lKExW UmVsU3RhdGUgKnZhY3JlbCwKIAlBc3NlcnQoIXByZXN1bHQuc2V0X2FsbF92aXNpYmxlIHx8ICEo Kmhhc19scGRlYWRfaXRlbXMpKTsKIAlBc3NlcnQoIXByZXN1bHQuc2V0X2FsbF9mcm96ZW4gfHwg cHJlc3VsdC5zZXRfYWxsX3Zpc2libGUpOwogCi0Jb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBf Z2V0X3N0YXR1cyh2YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcik7Ci0KLQlpZGVudGlmeV9h bmRfZml4X3ZtX2NvcnJ1cHRpb24odmFjcmVsLT5yZWwsIGJ1ZiwgYmxrbm8sIHBhZ2UsCi0JCQkJ CQkJCSAgIHByZXN1bHQubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlciwKLQkJCQkJCQkJICAgJm9sZF92 bWJpdHMpOwotCiAJaWYgKCFwcmVzdWx0LnNldF9hbGxfdmlzaWJsZSkKIAkJcmV0dXJuIHByZXN1 bHQubmRlbGV0ZWQ7CiAKIAkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2li aWxpdHkgaGludCAqLworCW9sZF92bWJpdHMgPSBwcmVzdWx0LnZtYml0czsKIAluZXdfdm1iaXRz ID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKLQogCWlmIChwcmVzdWx0LnNldF9hbGxfZnJv emVuKQogCQluZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKIApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oCmluZGV4IDI4MWNkZDVlZTU5Li41NjgzNThhMDYwYSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApA QCAtMjU4LDYgKzI1OCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVBhcmFtcwogCVJl bGF0aW9uCXJlbGF0aW9uOwkJLyogcmVsYXRpb24gY29udGFpbmluZyBidWZmZXIgdG8gYmUgcHJ1 bmVkICovCiAJQnVmZmVyCQlidWZmZXI7CQkJLyogYnVmZmVyIHRvIGJlIHBydW5lZCAqLwogCisJ LyoKKwkgKiBDYWxsZXJzIHNob3VsZCBwcm92aWRlIGEgcGlubmVkIHZtYnVmZmVyIGNvcnJlc3Bv bmRpbmcgdG8gdGhlIGhlYXAKKwkgKiBibG9jayBpbiBidWZmZXIuIFdlIHdpbGwgY2hlY2sgZm9y IGFuZCByZXBhaXIgYW55IGNvcnJ1cHRpb24gaW4gdGhlIFZNLgorCSAqLworCUJ1ZmZlcgkJdm1i dWZmZXI7CisKIAkvKgogCSAqIFRoZSByZWFzb24gcHJ1bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQg aXMgdXNlZCB0byBzZXQgdGhlIFdBTCByZWNvcmQKIAkgKiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBm b3IgZGVidWdnaW5nIGFuZCBhbmFseXNpcyBwdXJwb3Nlcy4KQEAgLTMyMCw2ICszMjYsMTIgQEAg dHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlib29sCQlzZXRfYWxsX2Zyb3plbjsK IAlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b247CiAKKwkvKgorCSAqIHZtYml0cyBp cyB0aGUgdmFsdWUgb2YgdGhlIHZtYnVmZmVyJ3Mgdm1iaXRzIGF0IHRoZSBiZWdpbm5pbmcgb2YK KwkgKiBwcnVuaW5nLiBJdCBpcyBjbGVhcmVkIGlmIFZNIGNvcnJ1cHRpb24gaXMgZm91bmQgYW5k IGNvcnJlY3RlZC4KKwkgKi8KKwl1aW50OAkJdm1iaXRzOworCiAJLyoKIAkgKiBXaGV0aGVyIG9y IG5vdCB0aGUgcGFnZSBtYWtlcyByZWwgdHJ1bmNhdGlvbiB1bnNhZmUuICBUaGlzIGlzIHNldCB0 bwogCSAqICd0cnVlJywgZXZlbiBpZiB0aGUgcGFnZSBjb250YWlucyBMUF9ERUFEIGl0ZW1zLiAg VkFDVVVNIHdpbGwgcmVtb3ZlCi0tIAoyLjQzLjAKCg== --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0004-Add-pruning-fast-path-for-all-visible-and-all-fr.patch" Content-Disposition: attachment; filename="v36-0004-Add-pruning-fast-path-for-all-visible-and-all-fr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfiphl53 RnJvbSBlZDk1MDk1MThkOGI1YTA3NzIxMzNkMTNlOTcxNDE1M2RkNTI2ODU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI1IEZlYiAyMDI2IDE2OjQ4OjE5IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzYgMDQvMTZdIEFkZCBwcnVuaW5nIGZhc3QgcGF0aCBmb3IgYWxsLXZpc2libGUgYW5k CiBhbGwtZnJvemVuIHBhZ2VzCgpCZWNhdXNlIG9mIHRoZSBTS0lQX1BBR0VTX1RIUkVTSE9MRCBv cHRpbWl6YXRpb24gb3IgYSBzdGFsZSBwcnVuZSBYSUQsCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKCkgY2FuIGJlIGludm9rZWQgZm9yIHBhZ2VzIHdpdGggbm8gcHJ1bmluZyBvcgpmcmVlemlu ZyB3b3JrLiBUbyBhdm9pZCB0aGlzLCBpZiBhIHBhZ2UgaXMgYWxyZWFkeSBhbGwtZnJvemVuIG9y IGl0IGlzCmFsbC12aXNpYmxlIGFuZCBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgd2Ug ZXhpdCBlYXJseS4KCkF1dGhvcjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdt YWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+Ci0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgfCA3NSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDZlY2ExNDc0YTJmLi4yY2Q2ODQ4NzNjMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE5MSw2ICsxOTEsNyBAQCBzdGF0 aWMgdm9pZCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJ CQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKIAkJCQkJCQkgICBQcnVuZVN0YXRl ICpwcnN0YXRlKTsKIHN0YXRpYyB2b2lkIGhlYXBfZml4X3ZtX2NvcnJ1cHRpb24oUHJ1bmVTdGF0 ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSk7CitzdGF0aWMgdm9pZCBoZWFwX3BhZ2Vf YnlwYXNzX3BydW5lX2ZyZWV6ZShQcnVuZVN0YXRlICpwcnN0YXRlLCBQcnVuZUZyZWV6ZVJlc3Vs dCAqcHJlc3VsdCk7CiBzdGF0aWMgdm9pZCBwcnVuZV9mcmVlemVfcGxhbihQcnVuZVN0YXRlICpw cnN0YXRlLAogCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICpvZmZfbG9jKTsKIHN0YXRpYyBIVFNWX1Jl c3VsdCBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKQEAg LTg4OSw2ICs4OTAsNjggQEAgaGVhcF9maXhfdm1fY29ycnVwdGlvbihQcnVuZVN0YXRlICpwcnN0 YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQogCXByc3RhdGUtPnZtYml0cyA9IDA7CiB9CiAKKy8q CisgKiBJZiB0aGUgcGFnZSBpcyBhbHJlYWR5IGFsbC1mcm96ZW4sIG9yIGFscmVhZHkgYWxsLXZp c2libGUgYW5kIGZyZWV6aW5nCisgKiBpcyBub3QgYmVpbmcgYXR0ZW1wdGVkLCB0aGVyZSBpcyBu byByZW1haW5pbmcgd29yayBhbmQgd2UgY2FuIGJ5cGFzcyB0aGUKKyAqIGV4cGVuc2l2ZSBvdmVy aGVhZCBvZiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLgorICoKKyAqIFRoaXMgY2FuIGhh cHBlbiB3aGVuIHRoZSBwYWdlIGhhcyBhIHN0YWxlIHBydW5lIGhpbnQsIG9yIGlmIFZBQ1VVTSBp cworICogc2Nhbm5pbmcgYW4gYWxyZWFkeSBhbGwtZnJvemVuIHBhZ2UgZHVlIHRvIFNLSVBfUEFH RVNfVEhSRVNIT0xELgorICoKKyAqIFRoZSBjYWxsZXIgbXVzdCBhbHJlYWR5IGhhdmUgZXhhbWlu ZWQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBzYXZlZCB0aGUKKyAqIHN0YXR1cyBmb3IgdGhlIHBh Z2UncyBWTSBiaXRzIGluIHByc3RhdGUtPnZtYml0cy4gQ2FsbGVyIG11c3QgaG9sZCBhCisgKiBj b250ZW50IGxvY2sgb24gdGhlIGhlYXAgcGFnZSBzaW5jZSBpdCB3aWxsIGV4YW1pbmUgbGluZSBw b2ludGVycy4KKyAqCisgKiBCZWZvcmUgY2FsbGluZyBoZWFwX3BhZ2VfYnlwYXNzX3BydW5lX2Zy ZWV6ZSgpLCB0aGUgY2FsbGVyIHNob3VsZCBmaXJzdAorICogY2hlY2sgZm9yIGFuZCBmaXggYW55 IGRpc2NyZXBhbmN5IGJldHdlZW4gdGhlIHBhZ2UtbGV2ZWwgdmlzaWJpbGl0eSBoaW50CisgKiBh bmQgdGhlIHZpc2liaWxpdHkgbWFwLiBPdGhlcndpc2UsIHRoZSBmYXN0IHBhdGggd2lsbCBhbHdh eXMgcHJldmVudCB1cworICogZnJvbSBnZXR0aW5nIHRoZW0gaW4gc3luYy4gTm90ZSB0aGF0IGlm IHRoZXJlIGFyZSB0dXBsZXMgb24gdGhlIHBhZ2UgdGhhdAorICogYXJlIG5vdCB2aXNpYmxlIHRv IGFsbCBidXQgdGhlIFZNIGlzIGluY29ycmVjdGx5IG1hcmtlZAorICogYWxsLXZpc2libGUvYWxs LWZyb3plbiwgd2Ugd2lsbCBub3QgZ2V0IHRoZSBjaGFuY2UgdG8gZml4IHRoYXQgY29ycnVwdGlv bgorICogd2hlbiB1c2luZyB0aGUgZmFzdCBwYXRoLgorICovCitzdGF0aWMgdm9pZAoraGVhcF9w YWdlX2J5cGFzc19wcnVuZV9mcmVlemUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgUHJ1bmVGcmVlemVS ZXN1bHQgKnByZXN1bHQpCit7CisJT2Zmc2V0TnVtYmVyIG1heG9mZiA9IFBhZ2VHZXRNYXhPZmZz ZXROdW1iZXIocHJzdGF0ZS0+cGFnZSk7CisJUGFnZQkJcGFnZSA9IHByc3RhdGUtPnBhZ2U7CisK KwlBc3NlcnQocHJzdGF0ZS0+dm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOIHx8CisJ CSAgIChwcnN0YXRlLT52bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFICYmCisJCQkh cHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpKTsKKworCS8qIFdlJ2xsIGZpbGwgaW4gcHJlc3VsdCBm b3IgdGhlIGNhbGxlciAqLworCW1lbXNldChwcmVzdWx0LCAwLCBzaXplb2YoUHJ1bmVGcmVlemVS ZXN1bHQpKTsKKworCXByZXN1bHQtPnZtYml0cyA9IHByc3RhdGUtPnZtYml0czsKKworCS8qIENs ZWFyIGFueSBzdGFsZSBwcnVuZSBoaW50ICovCisJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKFBh Z2VHZXRQcnVuZVhpZChwYWdlKSkpCisJeworCQlQYWdlQ2xlYXJQcnVuYWJsZShwYWdlKTsKKwkJ TWFya0J1ZmZlckRpcnR5SGludChwcnN0YXRlLT5idWZmZXIsIHRydWUpOworCX0KKworCWlmIChQ YWdlSXNFbXB0eShwYWdlKSkKKwkJcmV0dXJuOworCisJcHJlc3VsdC0+aGFzdHVwID0gdHJ1ZTsK KworCS8qCisJICogU2luY2UgdGhlIHBhZ2UgaXMgYWxsLXZpc2libGUsIGEgY291bnQgb2YgdGhl IG5vcm1hbCBJdGVtSWRzIG9uIHRoZQorCSAqIHBhZ2Ugc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9y IHZhY3V1bSdzIGxpdmUgdHVwbGUgY291bnQuCisJICovCisJZm9yIChPZmZzZXROdW1iZXIgb2Zm ID0gRmlyc3RPZmZzZXROdW1iZXI7CisJCSBvZmYgPD0gbWF4b2ZmOworCQkgb2ZmID0gT2Zmc2V0 TnVtYmVyTmV4dChvZmYpKQorCXsKKwkJaWYgKEl0ZW1JZElzTm9ybWFsKFBhZ2VHZXRJdGVtSWQo cGFnZSwgb2ZmKSkpCisJCQlwcnN0YXRlLT5saXZlX3R1cGxlcysrOworCX0KKworCXByZXN1bHQt PmxpdmVfdHVwbGVzID0gcHJzdGF0ZS0+bGl2ZV90dXBsZXM7Cit9CisKIC8qCiAgKiBQcnVuZSBh bmQgcmVwYWlyIGZyYWdtZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24g dGhlCiAgKiBzcGVjaWZpZWQgcGFnZS4KQEAgLTk1Miw2ICsxMDE1LDE4IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCSFQYWdlSXNBbGxW aXNpYmxlKHByc3RhdGUucGFnZSkpCiAJCWhlYXBfZml4X3ZtX2NvcnJ1cHRpb24oJnByc3RhdGUs IEludmFsaWRPZmZzZXROdW1iZXIpOwogCisJLyoKKwkgKiBJZiB0aGUgcGFnZSBpcyBhbHJlYWR5 IGFsbC1mcm96ZW4sIG9yIGFscmVhZHkgYWxsLXZpc2libGUgd2hlbiBmcmVlemluZworCSAqIGlz IG5vdCBiZWluZyBhdHRlbXB0ZWQsIHdlIGNhbiBleGl0IGVhcmx5LiBEbyB0aGlzIGFmdGVyIGZp eGluZyBhbnkKKwkgKiBkaXNjcmVwYW5jeSBiZXR3ZWVuIHRoZSBwYWdlLWxldmVsIHZpc2liaWxp dHkgaGludCBhbmQgdGhlIFZNLgorCSAqLworCWlmIChwcnN0YXRlLnZtYml0cyAmIFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTiB8fAorCQkocHJzdGF0ZS52bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFICYmICFwcnN0YXRlLmF0dGVtcHRfZnJlZXplKSkKKwl7CisJCWhlYXBfcGFnZV9i eXBhc3NfcHJ1bmVfZnJlZXplKCZwcnN0YXRlLCBwcmVzdWx0KTsKKwkJcmV0dXJuOworCX0KKwog CS8qCiAJICogRXhhbWluZSBhbGwgbGluZSBwb2ludGVycyBhbmQgdHVwbGUgdmlzaWJpbGl0eSBp bmZvcm1hdGlvbiB0byBkZXRlcm1pbmUKIAkgKiB3aGljaCBsaW5lIHBvaW50ZXJzIHNob3VsZCBj aGFuZ2Ugc3RhdGUgYW5kIHdoaWNoIHR1cGxlcyBtYXkgYmUgZnJvemVuLgotLSAKMi40My4wCgo= --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="UTF-8"; name="v36-0005-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v36-0005-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfipmgo4 RnJvbSA4OWE3NmNlZWRkMjUxZTc0NzQyNDUyZjFiNmZhNTc2NTNjNzIxOWI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE3IERlYyAyMDI1IDE2OjUxOjA1IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzYgMDUvMTZdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKCkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQg cGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxlcycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2Ug Y2FuIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2 aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBhcmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUg WElEIGNob3NlbiBhdAp0aGUgc3RhcnQgb2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVz ZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2ggYWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0 aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhh dmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxz byBiZW5lZml0cyB2YWN1dW06IGluIHNvbWUgY2FzZXMsIEdsb2JhbFZpc1N0YXRlIG1heSBhZHZh bmNlCmR1cmluZyBhIHZhY3V1bSwgYWxsb3dpbmcgbW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lk ZXJlZCBhbGwtdmlzaWJsZS4KQW5kLCBpbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBlYXNpbHkgYWRk IGEgaGV1cmlzdGljIHRvIHVwZGF0ZQpHbG9iYWxWaXNTdGF0ZSBtb3JlIGZyZXF1ZW50bHkgZHVy aW5nIHZhY3V1bXMgb2YgbGFyZ2UgdGFibGVzLgoKT2xkZXN0WG1pbiBpcyBzdGlsbCB1c2VkIGZv ciBmcmVlemluZyBhbmQgYXMgYSBiYWNrc3RvcCB0byBlbnN1cmUgd2UKZG9uJ3QgZnJlZXplIGEg ZGVhZCB0dXBsZSB0aGF0IHdhc24ndCB5ZXQgcHJ1bmFibGUgYWNjb3JkaW5nIHRvCkdsb2JhbFZp c1N0YXRlIGluIHRoZSByYXJlIG9jY3VycmVuY2VzIHdoZXJlIEdsb2JhbFZpc1N0YXRlIG1vdmVz CmJhY2t3YXJkcy4KCkJlY2F1c2UgY29tcGFyaW5nIGEgdHJhbnNhY3Rpb24gSUQgYWdhaW5zdCBH bG9iYWxWaXNTdGF0ZSBpcyBtb3JlCmV4cGVuc2l2ZSB0aGFuIGNvbXBhcmluZyBhZ2FpbnN0IGEg c2luZ2xlIFhJRCwgd2UgZGVmZXIgdGhpcyBjaGVjayB1bnRpbAphZnRlciBzY2FubmluZyBhbGwg dHVwbGVzIG9uIHRoZSBwYWdlLiBUaGVyZWZvcmUsIHdlIHBlcmZvcm0gdGhlCkdsb2JhbFZpc1N0 YXRlIGNoZWNrIG9ubHkgb25jZSBwZXIgcGFnZS4gVGhpcyBpcyBzYWZlIGJlY2F1c2UKdmlzaWJp bGl0eV9jdXRvZmZfeGlkIHJlY29yZHMgdGhlIG5ld2VzdCBsaXZlIHhtaW4gb24gdGhlIHBhZ2U7 CmlmIGl0IGlzIGdsb2JhbGx5IHZpc2libGUsIHRoZW4gdGhlIGVudGlyZSBwYWdlIGlzIGFsbC12 aXNpYmxlLgoKVXNpbmcgR2xvYmFsVmlzU3RhdGUgbWVhbnMgb24tYWNjZXNzIHBydW5pbmcgY2Fu IGFsc28gbWFpbnRhaW4KdmlzaWJpbGl0eV9jdXRvZmZfeGlkLiBUaGlzIGFwcHJvYWNoIHdpbGwg cmVzdWx0IGluIGV4YW1pbmluZyBtb3JlIHR1cGxlCnhtaW5zIHRoYW4gYmVmb3JlOyBob3dldmVy LCB0aGUgYWRkaXRpb25hbCBjb3N0IHNob3VsZCBub3QgYmUKc2lnbmlmaWNhbnQuIEFuZCBkb2lu ZyBzbyB3aWxsIGVuYWJsZSB1cyB0byBzZXQgdGhlIHZpc2liaWxpdHkgbWFwIG9uCmFjY2VzcyBp biB0aGUgZnV0dXJlLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5A Z21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRl PgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0L2JxYzRraDVtaWRmbjQ0Z25qaXFlejNianF2NHpv Z3lkZ3V2ZG40NDZyaXc0NWpjZjN5JTQwNGV6NjZpbDdlYnZrI2M3NTVlZjE1MTUwN2FiYTU4NDcx ZmZhY2E2MDdlNDkzCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxp dHkuYyB8IDIyICsrKysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg ICAgICAgICB8IDM3ICsrKysrKystLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jICAgICAgICB8IDUxICsrKysrKysrKysrKystLS0tLS0tLQogc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICB8ICAyICsKIDQgZmlsZXMgY2hhbmdlZCwg NzIgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKaW5kZXggNzVhZTI2OGQ3NTMuLmFlZTg4OTQ3MzkzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKQEAgLTEwNjAs NiArMTA2MCwyOCBAQCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICogV3JhcHBl ciBhcm91bmQgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgZm9yIHVzZSB3aGVuIGV4YW1p bmluZyBsaXZlCisgKiB0dXBsZXMuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gWElEIG1heSBi ZSBjb25zaWRlcmVkIHJ1bm5pbmcgYnkgYXQgbGVhc3QKKyAqIG9uZSBzbmFwc2hvdC4KKyAqCisg KiBUaGlzIGZ1bmN0aW9uIGFsb25lIGlzIGluc3VmZmljaWVudCB0byBkZXRlcm1pbmUgdHVwbGUg dmlzaWJpbGl0eTsgY2FsbGVycworICogbXVzdCBhbHNvIGNvbnNpZGVyIHRoZSBYSUQncyBjb21t aXQgc3RhdHVzLiBJdHMgcHVycG9zZSBpcyBwdXJlbHkgc2VtYW50aWM6CisgKiB3aGVuIGFwcGxp ZWQgdG8gbGl2ZSB0dXBsZXMsIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpIGlzIGNoZWNr aW5nCisgKiB3aGV0aGVyIHRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24gaXMgc3RpbGwgY29uc2lk ZXJlZCBydW5uaW5nLCBub3Qgd2hldGhlcgorICogdGhlIHR1cGxlIGlzIHJlbW92YWJsZS4gTGl2 ZSB0dXBsZXMgYXJlLCBieSBkZWZpbml0aW9uLCBub3QgcmVtb3ZhYmxlLCBidXQKKyAqIHRoZSBz bmFwc2hvdCBjcml0ZXJpYSBmb3Ig4oCcdHJhbnNhY3Rpb24gc3RpbGwgcnVubmluZ+KAnSBhcmUg aWRlbnRpY2FsIHRvCisgKiB0aG9zZSB1c2VkIGZvciByZW1vdmFsIFhJRHMuCisgKgorICogU2Vl IHRoZSBjb21tZW50IGFib3ZlIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVtGdWxsXVhpZCgpIGZv ciBkZXRhaWxzIG9uIHRoZQorICogcmVxdWlyZWQgcHJlY29uZGl0aW9ucyBmb3IgY2FsbGluZyB0 aGlzIGZ1bmN0aW9uLgorICovCitib29sCitHbG9iYWxWaXNUZXN0WGlkTWF5YmVSdW5uaW5nKEds b2JhbFZpc1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJcmV0dXJuICFHbG9i YWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc3RhdGUsIHhpZCk7Cit9CisKIC8qCiAgKiBXb3JrIGhv cnNlIGZvciBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0gYW5kIHNpbWlsYXIgcm91dGluZXMuCiAg KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCAyY2Q2ODQ4NzNjMC4uZjdlOWZk NTFhYzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xMDM1LDYgKzEwMzUs MTcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFt cywKIAkgKi8KIAlwcnVuZV9mcmVlemVfcGxhbigmcHJzdGF0ZSwgb2ZmX2xvYyk7CiAKKwkvKgor CSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYg dGhlIG5ld2VzdCB4bWluCisJICogYW1vbmdzdCB0aGVtIG1heSBiZSBjb25zaWRlcmVkIHJ1bm5p bmcgYnkgYW55IHNuYXBzaG90LCB0aGUgcGFnZSBjYW5ub3QKKwkgKiBiZSBhbGwtdmlzaWJsZS4K KwkgKi8KKwlpZiAocHJzdGF0ZS5zZXRfYWxsX3Zpc2libGUgJiYKKwkJVHJhbnNhY3Rpb25JZElz Tm9ybWFsKHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgorCQlHbG9iYWxWaXNUZXN0 WGlkTWF5YmVSdW5uaW5nKHByc3RhdGUudmlzdGVzdCwKKwkJCQkJCQkJCSBwcnN0YXRlLnZpc2li aWxpdHlfY3V0b2ZmX3hpZCkpCisJCXByc3RhdGUuc2V0X2FsbF92aXNpYmxlID0gcHJzdGF0ZS5z ZXRfYWxsX2Zyb3plbiA9IGZhbHNlOworCiAJLyoKIAkgKiBJZiBjaGVja3N1bXMgYXJlIGVuYWJs ZWQsIGNhbGxpbmcgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkgd2hpbGUKIAkgKiBjaGVj a2luZyB0dXBsZSB2aXNpYmlsaXR5IGluZm9ybWF0aW9uIGluIHBydW5lX2ZyZWV6ZV9wbGFuKCkg bWF5IGhhdmUKQEAgLTE3MDIsMjkgKzE3MTMsMTUgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFu Z2VkX2xwX25vcm1hbChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQog CQkJCX0KIAogCQkJCS8qCi0JCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVk LiAgQnV0IGlzIGl0IG9sZCBlbm91Z2gKLQkJCQkgKiB0aGF0IGV2ZXJ5b25lIHNlZXMgaXQgYXMg Y29tbWl0dGVkPyAgQSBGcm96ZW5UcmFuc2FjdGlvbklkCi0JCQkJICogaXMgc2VlbiBhcyBjb21t aXR0ZWQgdG8gZXZlcnlvbmUuICBPdGhlcndpc2UsIHdlIGNoZWNrIGlmCi0JCQkJICogdGhlcmUg aXMgYSBzbmFwc2hvdCB0aGF0IGNvbnNpZGVycyB0aGlzIHhpZCB0byBzdGlsbCBiZQotCQkJCSAq IHJ1bm5pbmcsIGFuZCBpZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlIHBhZ2UgYWxsLXZpc2li bGUuCisJCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVkLiBCdXQgd2UgZG9u J3Qga25vdyBpZiBpdAorCQkJCSAqIGlzIG9sZCBlbm91Z2ggdGhhdCBldmVyeW9uZSBzZWVzIGl0 IGFzIGNvbW1pdHRlZC4gTGF0ZXIsCisJCQkJICogYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIHR1 cGxlcyBvbiB0aGUgcGFnZSwgd2UnbGwgY2hlY2sgaWYKKwkJCQkgKiB0aGVyZSBpcyBhbnkgc25h cHNob3QgdGhhdCBzdGlsbCBjb25zaWRlcnMgdGhlIG5ld2VzdCB4aWQKKwkJCQkgKiBvbiB0aGUg cGFnZSB0byBiZSBydW5uaW5nLiBJZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlCisJCQkJICog cGFnZSBhbGwtdmlzaWJsZS4KIAkJCQkgKi8KIAkJCQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0 WG1pbihodHVwKTsKIAotCQkJCS8qCi0JCQkJICogRm9yIG5vdyBhbHdheXMgdXNlIHByc3RhdGUt PmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQotCQkJCSAqIHdlIG9ubHkgdXBkYXRlICdz ZXRfYWxsX3Zpc2libGUnIGFuZCAnc2V0X2FsbF9mcm96ZW4nIHdoZW4KLQkJCQkgKiBmcmVlemlu ZyBpcyByZXF1ZXN0ZWQuIFdlIGNvdWxkIHVzZQotCQkJCSAqIEdsb2JhbFZpc1Rlc3RJc1JlbW92 YWJsZVhpZCBpbnN0ZWFkLCBpZiBhIG5vbi1mcmVlemluZwotCQkJCSAqIGNhbGxlciB3YW50ZWQg dG8gc2V0IHRoZSBWTSBiaXQuCi0JCQkJICovCi0JCQkJQXNzZXJ0KHByc3RhdGUtPmN1dG9mZnMp OwotCQkJCWlmICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sIHByc3RhdGUtPmN1dG9mZnMt Pk9sZGVzdFhtaW4pKQotCQkJCXsKLQkJCQkJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFs c2U7Ci0JCQkJCXByc3RhdGUtPnNldF9hbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJCWJyZWFrOwot CQkJCX0KLQogCQkJCS8qIFRyYWNrIG5ld2VzdCB4bWluIG9uIHBhZ2UuICovCiAJCQkJaWYgKFRy YW5zYWN0aW9uSWRGb2xsb3dzKHhtaW4sIHByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkg JiYKIAkJCQkJVHJhbnNhY3Rpb25JZElzTm9ybWFsKHhtaW4pKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCmluZGV4IDk1NzMyMjY0OGNhLi5hZDg1ZTFlMTczOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDYxLDEzICs0NjEsMTMgQEAgc3RhdGljIHZvaWQg ZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiAKICNpZmRlZiBVU0VfQVNT RVJUX0NIRUNLSU5HCiBzdGF0aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwK KwkJCQkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkJCSBib29sICphbGxf ZnJvemVuLAogCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwK IAkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKICNlbmRpZgogc3RhdGlj IGJvb2wgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwKLQkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJ ICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpk ZWFkb2Zmc2V0cywKIAkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAg IGJvb2wgKmFsbF9mcm96ZW4sCkBAIC0yMDU0LDEzICsyMDU0LDEwIEBAIGxhenlfc2Nhbl9wcnVu ZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJCUFzc2VydChwcmVzdWx0LmxwZGVhZF9pdGVtcyA9PSAw KTsKIAogCQlBc3NlcnQoaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWYs Ci0JCQkJCQkJCQkJdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sICZkZWJ1Z19hbGxfZnJvemVu LAorCQkJCQkJCQkJCXZhY3JlbC0+dmlzdGVzdCwgJmRlYnVnX2FsbF9mcm96ZW4sCiAJCQkJCQkJ CQkJJmRlYnVnX2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSk7CiAKIAkJQXNzZXJ0KHByZXN1bHQu c2V0X2FsbF9mcm96ZW4gPT0gZGVidWdfYWxsX2Zyb3plbik7Ci0KLQkJQXNzZXJ0KCFUcmFuc2Fj dGlvbklkSXNWYWxpZChkZWJ1Z19jdXRvZmYpIHx8Ci0JCQkgICBkZWJ1Z19jdXRvZmYgPT0gcHJl c3VsdC52bV9jb25mbGljdF9ob3Jpem9uKTsKIAl9CiAjZW5kaWYKIApAQCAtMjgxNiw3ICsyODEz LDcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1i ZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJICogZG9uZSBvdXRzaWRlIHRoZSBjcml0aWNhbCBz ZWN0aW9uLgogCSAqLwogCWlmIChoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUodmFjcmVs LT5yZWwsIGJ1ZmZlciwKLQkJCQkJCQkJCSAgIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluLAor CQkJCQkJCQkJICAgdmFjcmVsLT52aXN0ZXN0LAogCQkJCQkJCQkJICAgZGVhZG9mZnNldHMsIG51 bV9vZmZzZXRzLAogCQkJCQkJCQkJICAgJmFsbF9mcm96ZW4sICZ2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCiAJCQkJCQkJCQkgICAmdmFjcmVsLT5vZmZudW0pKQpAQCAtMzU3NywxNCArMzU3NCwxNCBA QCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogICovCiBzdGF0aWMgYm9v bAogaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJ CQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZp c3Rlc3QsCiAJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKIAkJCQkJCSBUcmFuc2FjdGlvbklkICp2 aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51 bSkKIHsKIAogCXJldHVybiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUocmVsLCBidWYs Ci0JCQkJCQkJCQkJICBPbGRlc3RYbWluLAorCQkJCQkJCQkJCSAgdmlzdGVzdCwKIAkJCQkJCQkJ CQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBhbGxfZnJvemVuLAogCQkJCQkJCQkJCSAgdmlzaWJp bGl0eV9jdXRvZmZfeGlkLApAQCAtMzYwNSw3ICszNjAyLDcgQEAgaGVhcF9wYWdlX2lzX2FsbF92 aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUg cGFnZSBpcyBhbGwtdmlzaWJsZSBvdGhlciB0aGFuIHRoZSBwcm92aWRlZAogICogZGVhZG9mZnNl dHMgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAqCi0gKiBPbGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0 ZXJtaW5lIHZpc2liaWxpdHkuCisgKiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2li aWxpdHkuCiAgKgogICogT3V0cHV0IHBhcmFtZXRlcnM6CiAgKgpAQCAtMzYyNCw3ICszNjIxLDcg QEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAq Lwogc3RhdGljIGJvb2wKIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJ CQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCSAgIE9mZnNldE51bWJlciAq ZGVhZG9mZnNldHMsCiAJCQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJCQkgICBib29s ICphbGxfZnJvemVuLApAQCAtMzcwNSw3ICszNzAyLDcgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2Fs bF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQl7CiAJCQkJCVRyYW5zYWN0 aW9uSWQgeG1pbjsKIAotCQkJCQkvKiBDaGVjayBjb21tZW50cyBpbiBsYXp5X3NjYW5fcHJ1bmUu ICovCisJCQkJCS8qIENoZWNrIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwg Y29tbWVudHMgKi8KIAkJCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0dGVkKHR1cGxl LnRfZGF0YSkpCiAJCQkJCXsKIAkJCQkJCWFsbF92aXNpYmxlID0gZmFsc2U7CkBAIC0zNzE0LDE2 ICszNzExLDE3IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWws IEJ1ZmZlciBidWYsCiAJCQkJCX0KIAogCQkJCQkvKgotCQkJCQkgKiBUaGUgaW5zZXJ0ZXIgZGVm aW5pdGVseSBjb21taXR0ZWQuIEJ1dCBpcyBpdCBvbGQgZW5vdWdoCi0JCQkJCSAqIHRoYXQgZXZl cnlvbmUgc2VlcyBpdCBhcyBjb21taXR0ZWQ/CisJCQkJCSAqIFRoZSBpbnNlcnRlciBkZWZpbml0 ZWx5IGNvbW1pdHRlZC4gQnV0IHdlIGRvbid0IGtub3cgaWYKKwkJCQkJICogaXQgaXMgb2xkIGVu b3VnaCB0aGF0IGV2ZXJ5b25lIHNlZXMgaXQgYXMgY29tbWl0dGVkLgorCQkJCQkgKiBEb24ndCBj aGVjayB0aGF0IG5vdy4KKwkJCQkJICoKKwkJCQkJICogSWYgd2Ugc2NhbiBhbGwgdHVwbGVzIHdp dGhvdXQgZmluZGluZyBvbmUgdGhhdCBwcmV2ZW50cworCQkJCQkgKiB0aGUgcGFnZSBmcm9tIGJl aW5nIGFsbC12aXNpYmxlLCB3ZSB0aGVuIGNoZWNrIHdoZXRoZXIKKwkJCQkJICogYW55IHNuYXBz aG90IHN0aWxsIGNvbnNpZGVycyB0aGUgbmV3ZXN0IFhJRCBvbiB0aGUgcGFnZQorCQkJCQkgKiB0 byBiZSBydW5uaW5nLiBJbiB0aGF0IGNhc2UsIHRoZSBwYWdlIGlzIG5vdCBjb25zaWRlcmVkCisJ CQkJCSAqIGFsbC12aXNpYmxlLgogCQkJCQkgKi8KIAkJCQkJeG1pbiA9IEhlYXBUdXBsZUhlYWRl ckdldFhtaW4odHVwbGUudF9kYXRhKTsKLQkJCQkJaWYgKCFUcmFuc2FjdGlvbklkUHJlY2VkZXMo eG1pbiwgT2xkZXN0WG1pbikpCi0JCQkJCXsKLQkJCQkJCWFsbF92aXNpYmxlID0gZmFsc2U7Ci0J CQkJCQkqYWxsX2Zyb3plbiA9IGZhbHNlOwotCQkJCQkJYnJlYWs7Ci0JCQkJCX0KIAogCQkJCQkv KiBUcmFjayBuZXdlc3QgeG1pbiBvbiBwYWdlLiAqLwogCQkJCQlpZiAoVHJhbnNhY3Rpb25JZEZv bGxvd3MoeG1pbiwgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKQEAgLTM3NTIsNiArMzc1MCwx OSBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIg YnVmLAogCQl9CiAJfQkJCQkJCQkvKiBzY2FuIGFsb25nIHBhZ2UgKi8KIAorCS8qCisJICogQWZ0 ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLCBpZiB0aGUgbmV3 ZXN0IHhtaW4KKwkgKiBhbW9uZyB0aGVtIG1heSBzdGlsbCBiZSBjb25zaWRlcmVkIHJ1bm5pbmcg YnkgYW55IHNuYXBzaG90LCB0aGUgcGFnZQorCSAqIGNhbm5vdCBiZSBhbGwtdmlzaWJsZS4KKwkg Ki8KKwlpZiAoYWxsX3Zpc2libGUgJiYKKwkJVHJhbnNhY3Rpb25JZElzTm9ybWFsKCp2aXNpYmls aXR5X2N1dG9mZl94aWQpICYmCisJCUdsb2JhbFZpc1Rlc3RYaWRNYXliZVJ1bm5pbmcodmlzdGVz dCwgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpCisJeworCQlhbGxfdmlzaWJsZSA9IGZhbHNlOwor CQkqYWxsX2Zyb3plbiA9IGZhbHNlOworCX0KKwogCS8qIENsZWFyIHRoZSBvZmZzZXQgaW5mb3Jt YXRpb24gb25jZSB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgZ2l2ZW4gcGFnZS4gKi8KIAkqbG9nZ2lu Z19vZmZudW0gPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggNTY4 MzU4YTA2MGEuLjg0OWVkODJiY2YyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC00NzUsNiArNDc1LDgg QEAgZXh0ZXJuIFRNX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNVcGRhdGUoSGVhcFR1cGxlIGh0 dXAsIENvbW1hbmRJZCBjdXJjaWQsCiAJCQkJCQkJCQkJICBCdWZmZXIgYnVmZmVyKTsKIGV4dGVy biBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkJCQkJQnVmZmVyIGJ1ZmZlcik7CisKK2V4 dGVybiBib29sIEdsb2JhbFZpc1Rlc3RYaWRNYXliZVJ1bm5pbmcoR2xvYmFsVmlzU3RhdGUgKnN0 YXRlLCBUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0 aXNmaWVzVmFjdXVtSG9yaXpvbihIZWFwVHVwbGUgaHR1cCwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJ CQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKmRlYWRfYWZ0ZXIpOwogZXh0ZXJuIHZvaWQgSGVhcFR1 cGxlU2V0SGludEJpdHMoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLCBCdWZmZXIgYnVmZmVyLAotLSAK Mi40My4wCgo= --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0006-Keep-newest-live-XID-up-to-date-even-if-page-not.patch" Content-Disposition: attachment; filename="v36-0006-Keep-newest-live-XID-up-to-date-even-if-page-not.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfipqtx5 RnJvbSBlZWRkNDVjYmE4M2IwZmYyMjBiMDMyMzViYmI0OGFmNjYxZTdkYzkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI4IEZlYiAyMDI2IDE2OjA2OjUxIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzYgMDYvMTZdIEtlZXAgbmV3ZXN0IGxpdmUgWElEIHVwLXRvLWRhdGUgZXZlbiBpZiBw YWdlIG5vdAogYWxsLXZpc2libGUKCkR1cmluZyBwcnVuaW5nLCB3ZSBrZWVwIHRyYWNrIG9mIHRo ZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUKcGFnZSB2aXNpYmxlIHRvIGFsbCBy dW5uaW5nIGFuZCBmdXR1cmUgdHJhbnNhY3Rpb25zIHNvIHRoYXQgd2UgY2FuIHVzZQppdCBsYXRl ciBhcyB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIGlm IHRoZQpwYWdlIHR1cm5zIG91dCB0byBiZSBhbGwtdmlzaWJsZS4KClByZXZpb3VzbHksIHdlIHN0 b3BwZWQgdXBkYXRpbmcgdGhpcyB2YWx1ZSBvbmNlIHdlIGRldGVybWluZWQgdGhlIHBhZ2UKd2Fz IG5vdCBhbGwtdmlzaWJsZS4gSG93ZXZlciwgbWFpbnRhaW5pbmcgaXQgZXZlbiB3aGVuIHRoZSBw YWdlIGlzIG5vdAphbGwtdmlzaWJsZSBpcyBpbmV4cGVuc2l2ZSBhbmQgbWFrZXMgdGhlIHNuYXBz aG90IGNvbmZsaWN0IGhvcml6b24KY2FsY3VsYXRpb24gY2xlYXJlci4gVGhpcyBndWFyYW50ZWVz IGl0IHdvbid0IGNvbnRhaW4gYSBzdGFsZSB2YWx1ZS4KClNpbmNlIHdlJ2xsIGtlZXAgaXQgdXAg dG8gZGF0ZSBhbGwgdGhlIHRpbWUgbm93IGFueXdheSwgdGhlcmUncyBubwpyZWFzb24gbm90IHRv IG1haW50YWluIGFsbF92aXNpYmxlIGZvciBvbi1hY2Nlc3MgcHJ1bmluZy4gVGhpcyB3aWxsCmFs bG93IHVzIHRvIHNldCB0aGUgVk0gb24tYWNjZXNzIGluIHRoZSBmdXR1cmUuCgpBdXRob3I6IE1l bGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmlld2VkLWJ5OiBDaGFvIExpIDxs aS5ldmFuLmNoYW9AZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2Jx YzRraDVtaWRmbjQ0Z25qaXFlejNianF2NHpvZ3lkZ3V2ZG40NDZyaXc0NWpjZjN5JTQwNGV6NjZp bDdlYnZrCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwgMTI3ICsr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jIHwgIDMwICsrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwg OTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBmN2U5 ZmQ1MWFjOS4uMGRlMTRhNDY4ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBA IC0xMzYsNiArMTM2LDkgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkvKiBCaXRzIGluIHRoZSB2bWJ1ZmZl ciBmb3IgdGhpcyBoZWFwIHBhZ2UgKi8KIAl1aW50OAkJdm1iaXRzOwogCisJLyogVGhlIG5ld2Vz dCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlICovCisJVHJhbnNhY3Rpb25JZCBuZXdl c3RfbGl2ZV94aWQ7CisKIAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIAkgKiBJbmZvcm1hdGlvbiBhYm91dCB3aGF0IHdhcyBkb25lCiAJ ICoKQEAgLTE2NywxMSArMTcwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKiBhbGwtZnJvemVuIGJp dHMgaW4gdGhlIHZpc2liaWxpdHkgbWFwIGNhbiBiZSBzZXQgZm9yIHRoaXMgcGFnZSBhZnRlcgog CSAqIHBydW5pbmcuCiAJICoKLQkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5ld2Vz dCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLgotCSAqIFRoZSBjYWxsZXIgY2FuIHVz ZSBpdCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiwgd2hlbiBzZXR0aW5nIHRoZSBWTQotCSAqIGJp dHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzLCBhbmQgc2V0X2Fs bF9mcm96ZW4gaXMKLQkgKiB0cnVlLgotCSAqCiAJICogTk9URTogc2V0X2FsbF92aXNpYmxlIGFu ZCBzZXRfYWxsX2Zyb3plbiBpbml0aWFsbHkgZG9uJ3QgaW5jbHVkZQogCSAqIExQX0RFQUQgaXRl bXMuIFRoYXQncyBjb252ZW5pZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRv CiAJICogdXNlIHRoZW0gdG8gZGVjaWRlIHdoZXRoZXIgdG8gZnJlZXplIHRoZSBwYWdlIG9yIG5v dC4gIFRoZQpAQCAtMTgxLDcgKzE3OSw2IEBAIHR5cGVkZWYgc3RydWN0CiAJICovCiAJYm9vbAkJ c2V0X2FsbF92aXNpYmxlOwogCWJvb2wJCXNldF9hbGxfZnJvemVuOwotCVRyYW5zYWN0aW9uSWQg dmlzaWJpbGl0eV9jdXRvZmZfeGlkOwogfSBQcnVuZVN0YXRlOwogCiAvKiBMb2NhbCBmdW5jdGlv bnMgKi8KQEAgLTQ0Miw1MyArNDM5LDM1IEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6 ZVBhcmFtcyAqcGFyYW1zLAogCXByc3RhdGUtPmRlYWRvZmZzZXRzID0gcHJlc3VsdC0+ZGVhZG9m ZnNldHM7CiAKIAkvKgotCSAqIFZhY3V1bSBtYXkgdXBkYXRlIHRoZSBWTSBhZnRlciB3ZSdyZSBk b25lLiAgV2UgY2FuIGtlZXAgdHJhY2sgb2YKLQkgKiB3aGV0aGVyIHRoZSBwYWdlIHdpbGwgYmUg YWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYWZ0ZXIgcHJ1bmluZyBhbmQKLQkgKiBmcmVlemlu ZyB0byBoZWxwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KLQkgKgotCSAqIEN1cnJlbnRseSwgb25s eSBWQUNVVU0gc2V0cyB0aGUgVk0gYml0cy4gIFRvIHNhdmUgdGhlIGVmZm9ydCwgb25seSBkbwot CSAqIHRoZSBib29ra2VlcGluZyBpZiB0aGUgY2FsbGVyIG5lZWRzIGl0LiAgQ3VycmVudGx5LCB0 aGF0J3MgdGllZCB0bwotCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsIGJ1dCBpdCBjb3VsZCBi ZSBhIHNlcGFyYXRlIGZsYWcgaWYgeW91IHdhbnRlZAotCSAqIHRvIHVwZGF0ZSB0aGUgVk0gYml0 cyB3aXRob3V0IGFsc28gZnJlZXppbmcgb3IgZnJlZXplIHdpdGhvdXQgYWxzbwotCSAqIHNldHRp bmcgdGhlIFZNIGJpdHMuCisJICogV2UgdHJhY2sgd2hldGhlciB0aGUgcGFnZSB3aWxsIGJlIGFs bC12aXNpYmxlL2FsbC1mcm96ZW4gYXQgdGhlIGVuZCBvZgorCSAqIHBydW5pbmcgYW5kIGZyZWV6 aW5nLiBXaGlsZSBleGFtaW5pbmcgdHVwbGUgdmlzaWJpbGl0eSwgd2UnbGwgc2V0CisJICogc2V0 X2FsbF92aXNpYmxlIHRvIGZhbHNlIGlmIHRoZXJlIGFyZSB0dXBsZXMgb24gdGhlIHBhZ2Ugbm90 IHZpc2libGUgdG8KKwkgKiBhbGwgcnVubmluZyBhbmQgZnV0dXJlIHRyYW5zYWN0aW9ucy4gc2V0 X2FsbF92aXNpYmxlIGlzIGFsd2F5cworCSAqIG1haW50YWluZWQgYnV0IG9ubHkgVkFDVVVNIHdp bGwgc2V0IHRoZSBWTSBpZiB0aGUgcGFnZSBlbmRzIHVwIGJlaW5nCisJICogYWxsLXZpc2libGUu CiAJICoKLQkgKiBJbiBhZGRpdGlvbiB0byB0ZWxsaW5nIHRoZSBjYWxsZXIgd2hldGhlciBpdCBj YW4gc2V0IHRoZSBWTSBiaXQsIHdlCi0JICogYWxzbyB1c2UgJ3NldF9hbGxfdmlzaWJsZScgYW5k ICdzZXRfYWxsX2Zyb3plbicgZm9yIG91ciBvd24KLQkgKiBkZWNpc2lvbi1tYWtpbmcuIElmIHRo ZSB3aG9sZSBwYWdlIHdvdWxkIGJlY29tZSBmcm96ZW4sIHdlIGNvbnNpZGVyCi0JICogb3Bwb3J0 dW5pc3RpY2FsbHkgZnJlZXppbmcgdHVwbGVzLiAgV2Ugd2lsbCBub3QgYmUgYWJsZSB0byBmcmVl emUgdGhlCi0JICogd2hvbGUgcGFnZSBpZiB0aGVyZSBhcmUgdHVwbGVzIHByZXNlbnQgdGhhdCBh cmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUKLQkgKiBvciBpZiB0aGVyZSBhcmUgZGVhZCB0dXBs ZXMgd2hpY2ggYXJlIG5vdCB5ZXQgcmVtb3ZhYmxlLiAgSG93ZXZlciwgZGVhZAotCSAqIHR1cGxl cyB3aGljaCB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW1pbmcgc2hvdWxkIG5v dAotCSAqIHByZWNsdWRlIHVzIGZyb20gb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXppbmcuICBCZWNh dXNlIG9mIHRoYXQsIHdlIGRvCi0JICogbm90IGltbWVkaWF0ZWx5IGNsZWFyIHNldF9hbGxfdmlz aWJsZSBhbmQgc2V0X2FsbF9mcm96ZW4gd2hlbiB3ZSBzZWUKLQkgKiBMUF9ERUFEIGl0ZW1zLiAg V2UgZml4IHRoYXQgYWZ0ZXIgc2Nhbm5pbmcgdGhlIGxpbmUgcG9pbnRlcnMuIFdlIG11c3QKLQkg KiBjb3JyZWN0IHNldF9hbGxfdmlzaWJsZSBhbmQgc2V0X2FsbF9mcm96ZW4gYmVmb3JlIHdlIHJl dHVybiB0aGVtIHRvIHRoZQotCSAqIGNhbGxlciwgc28gdGhhdCB0aGUgY2FsbGVyIGRvZXNuJ3Qg c2V0IHRoZSBWTSBiaXRzIGluY29ycmVjdGx5LgorCSAqIFdlIGFsc28ga2VlcCB0cmFjayBvZiB0 aGUgbmV3ZXN0IGxpdmUgWElELCB3aGljaCBpcyB1c2VkIHRvIGNhbGN1bGF0ZQorCSAqIHRoZSBz bmFwc2hvdCBjb25mbGljdCBob3Jpem9uIGZvciBhIFdBTCByZWNvcmQgc2V0dGluZyB0aGUgVk0u CiAJICovCi0JaWYgKHByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQotCXsKLQkJcHJzdGF0ZS0+c2V0 X2FsbF92aXNpYmxlID0gdHJ1ZTsKLQkJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSB0cnVlOwot CX0KLQllbHNlCi0JewotCQkvKgotCQkgKiBJbml0aWFsaXppbmcgdG8gZmFsc2UgYWxsb3dzIHNr aXBwaW5nIHRoZSB3b3JrIHRvIHVwZGF0ZSB0aGVtIGluCi0JCSAqIGhlYXBfcHJ1bmVfcmVjb3Jk X3VuY2hhbmdlZF9scF9ub3JtYWwoKS4KLQkJICovCi0JCXByc3RhdGUtPnNldF9hbGxfdmlzaWJs ZSA9IGZhbHNlOwotCQlwcnN0YXRlLT5zZXRfYWxsX2Zyb3plbiA9IGZhbHNlOwotCX0KKwlwcnN0 YXRlLT5zZXRfYWxsX3Zpc2libGUgPSB0cnVlOworCXByc3RhdGUtPm5ld2VzdF9saXZlX3hpZCA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyoKLQkgKiBUaGUgdmlzaWJpbGl0eSBjdXRvZmYg eGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUKLQkgKiBwYWdlLiAg SW4gdGhlIGNvbW1vbiBjYXNlLCB0aGlzIHdpbGwgYmUgc2V0IGFzIHRoZSBjb25mbGljdCBob3Jp em9uIHRoZQotCSAqIGNhbGxlciBjYW4gdXNlIGZvciB1cGRhdGluZyB0aGUgVk0uICBJZiwgYXQg dGhlIGVuZCBvZiBmcmVlemluZyBhbmQKLQkgKiBwcnVuaW5nLCB0aGUgcGFnZSBpcyBhbGwtZnJv emVuLCB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSB0aGF0IGFueQotCSAqIHJ1bm5pbmcgdHJhbnNh Y3Rpb24gb24gdGhlIHN0YW5kYnkgZG9lcyBub3Qgc2VlIHR1cGxlcyBvbiB0aGUgcGFnZSBhcwot CSAqIGFsbC12aXNpYmxlLCBzbyB0aGUgY29uZmxpY3QgaG9yaXpvbiByZW1haW5zIEludmFsaWRU cmFuc2FjdGlvbklkLgorCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gcGVyZm9ybXMgZnJlZXpp bmcsIGJ1dCBvdGhlciBjYWxsZXJzIG1heSBpbiB0aGUKKwkgKiBmdXR1cmUuIE90aGVyIGNhbGxl cnMgbXVzdCBpbml0aWFsaXplIHByc3RhdGUuc2V0X2FsbF9mcm96ZW4gdG8gZmFsc2UsCisJICog c2luY2Ugd2Ugd2lsbCBub3QgY2FsbCBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlKCkgZm9yIGVh Y2ggdHVwbGUuCisJICoKKwkgKiBXZSBvbmx5IGNvbnNpZGVyIG9wcG9ydHVuaXN0aWMgZnJlZXpp bmcgaWYgdGhlIHBhZ2Ugd291bGQgYmVjb21lCisJICogYWxsLWZyb3plbiwgb3IgaWYgaXQgd291 bGQgYmUgYWxsLWZyb3plbiBleGNlcHQgZm9yIGRlYWQgdHVwbGVzIHRoYXQKKwkgKiBWQUNVVU0g d2lsbCByZW1vdmUuCisJICoKKwkgKiBEZWFkIHR1cGxlcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBi eSB0aGUgZW5kIG9mIHZhY3V1bSBzaG91bGQgbm90CisJICogcHJldmVudCBvcHBvcnR1bmlzdGlj IGZyZWV6aW5nLiBUaGVyZWZvcmUsIHdlIGRvIG5vdCBjbGVhcgorCSAqIHNldF9hbGxfdmlzaWJs ZSBhbmQgc2V0X2FsbF9mcm96ZW4gd2hlbiB3ZSBlbmNvdW50ZXIgTFBfREVBRCBpdGVtcy4KKwkg KiBJbnN0ZWFkLCB3ZSBjb3JyZWN0IHRoZW0gYWZ0ZXIgZGVjaWRpbmcgd2hldGhlciB0byBmcmVl emUsIGJ1dCBiZWZvcmUKKwkgKiB1cGRhdGluZyB0aGUgVk0sIHRvIGF2b2lkIHNldHRpbmcgdGhl IFZNIGJpdHMgaW5jb3JyZWN0bHkuCiAJICovCi0JcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZf eGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBw cnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSA/IHRydWUgOiBmYWxzZTsKIH0KIAogLyoKQEAgLTcxOCw3 ICs2OTcsNiBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoYm9vbCBkaWRfdHVwbGVfaGludF9mcGks CiAJaWYgKCFwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCUFzc2VydCghcHJzdGF0ZS0+ c2V0X2FsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3plbiA9PSAwKTsKLQkJQXNzZXJ0KHByc3Rh dGUtPmxwZGVhZF9pdGVtcyA9PSAwIHx8ICFwcnN0YXRlLT5zZXRfYWxsX3Zpc2libGUpOwogCQly ZXR1cm4gZmFsc2U7CiAJfQogCkBAIC05NzMsOSArOTUxLDggQEAgaGVhcF9wYWdlX2J5cGFzc19w cnVuZV9mcmVlemUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1 bHQpCiAgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBwYXNzZWQsIHdlIGFsc28g c2V0CiAgKiBwcmVzdWx0LT5zZXRfYWxsX3Zpc2libGUgYW5kIHByZXN1bHQtPnNldF9hbGxfZnJv emVuIGFmdGVyIGRldGVybWluaW5nCiAgKiB3aGV0aGVyIG9yIG5vdCB0byBvcHBvcnR1bmlzdGlj YWxseSBmcmVlemUsIHRvIGluZGljYXRlIGlmIHRoZSBWTSBiaXRzIGNhbgotICogYmUgc2V0LiAg VGhleSBhcmUgYWx3YXlzIHNldCB0byBmYWxzZSB3aGVuIHRoZSBIRUFQX1BBR0VfUFJVTkVfRlJF RVpFCi0gKiBvcHRpb24gaXMgbm90IHBhc3NlZCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkg Y2FsbGVycyB0aGF0IGFsc28gZnJlZXplCi0gKiBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCisgKiBi ZSBzZXQuICdhbGwtZnJvemVuJyBpcyBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlIEhFQVBf UEFHRV9QUlVORV9GUkVFWkUKKyAqIG9wdGlvbiBpcyBub3QgcGFzc2VkLgogICoKICAqIHByZXN1 bHQgY29udGFpbnMgb3V0cHV0IHBhcmFtZXRlcnMgbmVlZGVkIGJ5IGNhbGxlcnMsIHN1Y2ggYXMg dGhlIG51bWJlciBvZgogICogdHVwbGVzIHJlbW92ZWQgYW5kIHRoZSBvZmZzZXRzIG9mIGRlYWQg aXRlbXMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4KQEAgLTEwNDEsOSArMTAxOCw5IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICog YmUgYWxsLXZpc2libGUuCiAJICovCiAJaWYgKHByc3RhdGUuc2V0X2FsbF92aXNpYmxlICYmCi0J CVRyYW5zYWN0aW9uSWRJc05vcm1hbChwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYK KwkJVHJhbnNhY3Rpb25JZElzTm9ybWFsKHByc3RhdGUubmV3ZXN0X2xpdmVfeGlkKSAmJgogCQlH bG9iYWxWaXNUZXN0WGlkTWF5YmVSdW5uaW5nKHByc3RhdGUudmlzdGVzdCwKLQkJCQkJCQkJCSBw cnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpCisJCQkJCQkJCQkgcHJzdGF0ZS5uZXdlc3Rf bGl2ZV94aWQpKQogCQlwcnN0YXRlLnNldF9hbGxfdmlzaWJsZSA9IHByc3RhdGUuc2V0X2FsbF9m cm96ZW4gPSBmYWxzZTsKIAogCS8qCkBAIC0xMTk0LDcgKzExNzEsNyBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCWlmIChwcmVzdWx0LT5z ZXRfYWxsX2Zyb3plbikKIAkJcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRU cmFuc2FjdGlvbklkOwogCWVsc2UKLQkJcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiA9IHBy c3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jp em9uID0gcHJzdGF0ZS5uZXdlc3RfbGl2ZV94aWQ7CiAKIAlwcmVzdWx0LT5scGRlYWRfaXRlbXMg PSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKIAkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJy YXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCkBAIC0xNjU0LDYgKzE2MzEsNyBAQCBzdGF0aWMg dm9pZAogaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQcnVuZVN0YXRlICpw cnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQogewogCUhlYXBUdXBsZUhlYWRlciBodHVwOwor CVRyYW5zYWN0aW9uSWQgeG1pbjsKIAlQYWdlCQlwYWdlID0gcHJzdGF0ZS0+cGFnZTsKIAogCUFz c2VydCghcHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pOwpAQCAtMTcwMSwzMiArMTY3OSwyNyBA QCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBydW5lU3RhdGUgKnByc3Rh dGUsIE9mZnNldE51bWJlciBvZmZudW0pCiAJCQkgKiBTZWUgU2V0SGludEJpdHMgZm9yIG1vcmUg aW5mby4gIENoZWNrIHRoYXQgdGhlIHR1cGxlIGlzIGhpbnRlZAogCQkJICogeG1pbi1jb21taXR0 ZWQgYmVjYXVzZSBvZiB0aGF0LgogCQkJICovCi0JCQlpZiAocHJzdGF0ZS0+c2V0X2FsbF92aXNp YmxlKQorCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0dGVkKGh0dXApKQogCQkJewot CQkJCVRyYW5zYWN0aW9uSWQgeG1pbjsKKwkJCQlwcnN0YXRlLT5zZXRfYWxsX3Zpc2libGUgPSBm YWxzZTsKKwkJCQlwcnN0YXRlLT5zZXRfYWxsX2Zyb3plbiA9IGZhbHNlOworCQkJCWJyZWFrOwor CQkJfQogCi0JCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0dGVkKGh0dXApKQotCQkJ CXsKLQkJCQkJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFsc2U7Ci0JCQkJCXByc3RhdGUt PnNldF9hbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJCWJyZWFrOwotCQkJCX0KKwkJCS8qCisJCQkg KiBUaGUgaW5zZXJ0ZXIgZGVmaW5pdGVseSBjb21taXR0ZWQuIEJ1dCB3ZSBkb24ndCBrbm93IGlm IGl0IGlzCisJCQkgKiBvbGQgZW5vdWdoIHRoYXQgZXZlcnlvbmUgc2VlcyBpdCBhcyBjb21taXR0 ZWQuIExhdGVyLCBhZnRlcgorCQkJICogcHJvY2Vzc2luZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUg cGFnZSwgd2UnbGwgY2hlY2sgaWYgdGhlcmUgaXMKKwkJCSAqIGFueSBzbmFwc2hvdCB0aGF0IHN0 aWxsIGNvbnNpZGVycyB0aGUgbmV3ZXN0IHhpZCBvbiB0aGUgcGFnZSB0bworCQkJICogYmUgcnVu bmluZy4gSWYgc28sIHdlIGRvbid0IGNvbnNpZGVyIHRoZSBwYWdlIGFsbC12aXNpYmxlLgorCQkJ ICovCisJCQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1pbihodHVwKTsKIAotCQkJCS8qCi0J CQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVkLiBCdXQgd2UgZG9uJ3Qga25v dyBpZiBpdAotCQkJCSAqIGlzIG9sZCBlbm91Z2ggdGhhdCBldmVyeW9uZSBzZWVzIGl0IGFzIGNv bW1pdHRlZC4gTGF0ZXIsCi0JCQkJICogYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIHR1cGxlcyBv biB0aGUgcGFnZSwgd2UnbGwgY2hlY2sgaWYKLQkJCQkgKiB0aGVyZSBpcyBhbnkgc25hcHNob3Qg dGhhdCBzdGlsbCBjb25zaWRlcnMgdGhlIG5ld2VzdCB4aWQKLQkJCQkgKiBvbiB0aGUgcGFnZSB0 byBiZSBydW5uaW5nLiBJZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlCi0JCQkJICogcGFnZSBh bGwtdmlzaWJsZS4KLQkJCQkgKi8KLQkJCQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1pbiho dHVwKTsKKwkJCS8qIFRyYWNrIG5ld2VzdCB4bWluIG9uIHBhZ2UuICovCisJCQlpZiAoVHJhbnNh Y3Rpb25JZEZvbGxvd3MoeG1pbiwgcHJzdGF0ZS0+bmV3ZXN0X2xpdmVfeGlkKSAmJgorCQkJCVRy YW5zYWN0aW9uSWRJc05vcm1hbCh4bWluKSkKKwkJCQlwcnN0YXRlLT5uZXdlc3RfbGl2ZV94aWQg PSB4bWluOwogCi0JCQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4gb24gcGFnZS4gKi8KLQkJCQlpZiAo VHJhbnNhY3Rpb25JZEZvbGxvd3MoeG1pbiwgcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlk KSAmJgotCQkJCQlUcmFuc2FjdGlvbklkSXNOb3JtYWwoeG1pbikpCi0JCQkJCXByc3RhdGUtPnZp c2liaWxpdHlfY3V0b2ZmX3hpZCA9IHhtaW47Ci0JCQl9CiAJCQlicmVhazsKIAogCQljYXNlIEhF QVBUVVBMRV9SRUNFTlRMWV9ERUFEOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmlu ZGV4IGFkODVlMWUxNzM4Li4yMzQwMmU3ZTI2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYwpAQCAtNDYzLDcgKzQ2Myw3IEBAIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfY2xlYW51 cChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNp YmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAq dmlzdGVzdCwKIAkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAotCQkJCQkJCQkJIFRyYW5zYWN0 aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICpu ZXdlc3RfbGl2ZV94aWQsCiAJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7 CiAjZW5kaWYKIHN0YXRpYyBib29sIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxh dGlvbiByZWwsIEJ1ZmZlciBidWYsCkBAIC00NzEsNyArNDcxLDcgQEAgc3RhdGljIGJvb2wgaGVh cF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJ CQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAgIGludCBu ZGVhZG9mZnNldHMsCiAJCQkJCQkJCQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKLQkJCQkJCQkJCQkg ICBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkJICAgVHJh bnNhY3Rpb25JZCAqbmV3ZXN0X2xpdmVfeGlkLAogCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAq bG9nZ2luZ19vZmZudW0pOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbHN0YXRzX2FsbF9pbmRleGVz KExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCB2YWN1dW1fZXJyb3JfY2FsbGJhY2so dm9pZCAqYXJnKTsKQEAgLTI3ODksNyArMjc4OSw3IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShM VlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCVBh Z2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJT2Zmc2V0TnVtYmVyIHVudXNlZFtN YXhIZWFwVHVwbGVzUGVyUGFnZV07CiAJaW50CQkJbnVudXNlZCA9IDA7Ci0JVHJhbnNhY3Rpb25J ZCB2aXNpYmlsaXR5X2N1dG9mZl94aWQ7CisJVHJhbnNhY3Rpb25JZCBuZXdlc3RfbGl2ZV94aWQ7 CiAJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAli b29sCQlhbGxfZnJvemVuOwogCUxWU2F2ZWRFcnJJbmZvIHNhdmVkX2Vycl9pbmZvOwpAQCAtMjgx NSwxNCArMjgxNSwxNCBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVs LCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAlpZiAoaGVhcF9wYWdlX3dvdWxk X2JlX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWZmZXIsCiAJCQkJCQkJCQkgICB2YWNyZWwt PnZpc3Rlc3QsCiAJCQkJCQkJCQkgICBkZWFkb2Zmc2V0cywgbnVtX29mZnNldHMsCi0JCQkJCQkJ CQkgICAmYWxsX2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCSAgICZh bGxfZnJvemVuLCAmbmV3ZXN0X2xpdmVfeGlkLAogCQkJCQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVt KSkKIAl7CiAJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKIAkJaWYgKGFs bF9mcm96ZW4pCiAJCXsKIAkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOwot CQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZCh2aXNpYmlsaXR5X2N1dG9mZl94aWQpKTsK KwkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQobmV3ZXN0X2xpdmVfeGlkKSk7CiAJCX0K IAogCQkvKgpAQCAtMjg2Myw3ICsyODYzLDcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVs U3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJCXZpc2li aWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKIAkJCQkJCQkJIHZtYnVmZmVyLCB2bWZsYWdzLAog CQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOwotCQljb25mbGljdF94aWQgPSB2aXNp YmlsaXR5X2N1dG9mZl94aWQ7CisJCWNvbmZsaWN0X3hpZCA9IG5ld2VzdF9saXZlX3hpZDsKIAl9 CiAKIAkvKgpAQCAtMzU3Niw3ICszNTc2LDcgQEAgc3RhdGljIGJvb2wKIGhlYXBfcGFnZV9pc19h bGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkgR2xvYmFsVmlzU3Rh dGUgKnZpc3Rlc3QsCiAJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKLQkJCQkJCSBUcmFuc2FjdGlv bklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkgVHJhbnNhY3Rpb25JZCAqbmV3ZXN0 X2xpdmVfeGlkLAogCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pCiB7CiAKQEAg LTM1ODQsNyArMzU4NCw3IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWws IEJ1ZmZlciBidWYsCiAJCQkJCQkJCQkJICB2aXN0ZXN0LAogCQkJCQkJCQkJCSAgTlVMTCwgMCwK IAkJCQkJCQkJCQkgIGFsbF9mcm96ZW4sCi0JCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCisJCQkJCQkJCQkJICBuZXdlc3RfbGl2ZV94aWQsCiAJCQkJCQkJCQkJICBsb2dnaW5nX29m Zm51bSk7CiB9CiAjZW5kaWYKQEAgLTM2MDcsNyArMzYwNyw3IEBAIGhlYXBfcGFnZV9pc19hbGxf dmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAgKiBPdXRwdXQgcGFyYW1ldGVyczoK ICAqCiAgKiAgLSAqYWxsX2Zyb3plbjogdHJ1ZSBpZiBldmVyeSB0dXBsZSBvbiB0aGUgcGFnZSBp cyBmcm96ZW4KLSAqICAtICp2aXNpYmlsaXR5X2N1dG9mZl94aWQ6IG5ld2VzdCB4bWluOyB2YWxp ZCBvbmx5IGlmIHBhZ2UgaXMgYWxsLXZpc2libGUKKyAqICAtICpuZXdlc3RfbGl2ZV94aWQ6IG5l d2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlCiAgKiAgLSAqbG9nZ2luZ19vZmZu dW06IE9mZnNldE51bWJlciBvZiBjdXJyZW50IHR1cGxlIGJlaW5nIHByb2Nlc3NlZDsKICAqICAg ICB1c2VkIGJ5IHZhY3V1bSdzIGVycm9yIGNhbGxiYWNrIHN5c3RlbS4KICAqCkBAIC0zNjI1LDcg KzM2MjUsNyBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBC dWZmZXIgYnVmLAogCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCiAJCQkJCQkJ ICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAotCQkJCQkJ CSAgIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkgICBUcmFu c2FjdGlvbklkICpuZXdlc3RfbGl2ZV94aWQsCiAJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpsb2dn aW5nX29mZm51bSkKIHsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwpAQCAtMzYz NSw3ICszNjM1LDcgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1ZiwKIAlib29sCQlhbGxfdmlzaWJsZSA9IHRydWU7CiAJaW50CQkJbWF0Y2hl ZF9kZWFkX2NvdW50ID0gMDsKIAotCSp2aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKKwkqbmV3ZXN0X2xpdmVfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJ KmFsbF9mcm96ZW4gPSB0cnVlOwogCiAJQXNzZXJ0KG5kZWFkb2Zmc2V0cyA9PSAwIHx8IGRlYWRv ZmZzZXRzKTsKQEAgLTM3MjQsOSArMzcyNCw5IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlz aWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCXhtaW4gPSBIZWFwVHVwbGVIZWFk ZXJHZXRYbWluKHR1cGxlLnRfZGF0YSk7CiAKIAkJCQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4gb24g cGFnZS4gKi8KLQkJCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKHhtaW4sICp2aXNpYmlsaXR5 X2N1dG9mZl94aWQpICYmCisJCQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyh4bWluLCAqbmV3 ZXN0X2xpdmVfeGlkKSAmJgogCQkJCQkJVHJhbnNhY3Rpb25JZElzTm9ybWFsKHhtaW4pKQotCQkJ CQkJKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IHhtaW47CisJCQkJCQkqbmV3ZXN0X2xpdmVfeGlk ID0geG1pbjsKIAogCQkJCQkvKiBDaGVjayB3aGV0aGVyIHRoaXMgdHVwbGUgaXMgYWxyZWFkeSBm cm96ZW4gb3Igbm90ICovCiAJCQkJCWlmIChhbGxfdmlzaWJsZSAmJiAqYWxsX2Zyb3plbiAmJgpA QCAtMzc1Niw4ICszNzU2LDggQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkgKiBjYW5ub3QgYmUgYWxsLXZpc2libGUuCiAJICovCiAJ aWYgKGFsbF92aXNpYmxlICYmCi0JCVRyYW5zYWN0aW9uSWRJc05vcm1hbCgqdmlzaWJpbGl0eV9j dXRvZmZfeGlkKSAmJgotCQlHbG9iYWxWaXNUZXN0WGlkTWF5YmVSdW5uaW5nKHZpc3Rlc3QsICp2 aXNpYmlsaXR5X2N1dG9mZl94aWQpKQorCQlUcmFuc2FjdGlvbklkSXNOb3JtYWwoKm5ld2VzdF9s aXZlX3hpZCkgJiYKKwkJR2xvYmFsVmlzVGVzdFhpZE1heWJlUnVubmluZyh2aXN0ZXN0LCAqbmV3 ZXN0X2xpdmVfeGlkKSkKIAl7CiAJCWFsbF92aXNpYmxlID0gZmFsc2U7CiAJCSphbGxfZnJvemVu ID0gZmFsc2U7Ci0tIAoyLjQzLjAKCg== --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v36-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfipunu6 RnJvbSBhOTY4MjVmOTAyNmM0ZTlkOGM4ZjU1NjMzYjBlNmRjZjZmODNjMTU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6MDc6NDIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzNiAwNy8xNl0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmll d2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog S2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8g TGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhk SzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgIHwgMzI1ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgMTA3ICstLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oICAgICAgICAgIHwgIDM4ICsrLS0KIDMgZmlsZXMgY2hhbmdlZCwgMjcxIGluc2Vy dGlvbnMoKyksIDE5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CmluZGV4IDBkZTE0YTQ2OGY2Li5lYzU4ZjcxN2MwYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKQEAgLTcyLDYgKzcyLDIxIEBAIHR5cGVkZWYgc3RydWN0CiAJT2Zmc2V0TnVtYmVy IG5vd3VudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07CiAJSGVhcFR1cGxlRnJlZXplIGZyb3pl bltNYXhIZWFwVHVwbGVzUGVyUGFnZV07CiAKKwkvKgorCSAqIHNldF9hbGxfdmlzaWJsZSBhbmQg c2V0X2FsbF9mcm96ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZAorCSAqIGFsbC1m cm96ZW4gYml0cyBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBwYWdl IGFmdGVyCisJICogcHJ1bmluZy4KKwkgKgorCSAqIE5PVEU6IHNldF9hbGxfdmlzaWJsZSBhbmQg c2V0X2FsbF9mcm96ZW4gaW5pdGlhbGx5IGRvbid0IGluY2x1ZGUKKwkgKiBMUF9ERUFEIGl0ZW1z LiBUaGF0J3MgY29udmVuaWVudCBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0bwor CSAqIHVzZSB0aGVtIHRvIGRlY2lkZSB3aGV0aGVyIHRvIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6 ZSB0aGUgcGFnZSBvciBub3QuCisJICogVGhlIHNldF9hbGxfdmlzaWJsZSBhbmQgc2V0X2FsbF9m cm96ZW4gdmFsdWVzIHVsdGltYXRlbHkgdXNlZCB0byBzZXQKKwkgKiB0aGUgVk0gYXJlIGFkanVz dGVkIHRvIGluY2x1ZGUgTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlcgor CSAqIG9yIG5vdCB0byBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUuCisJICovCisJYm9vbAkJc2V0 X2FsbF92aXNpYmxlOworCWJvb2wJCXNldF9hbGxfZnJvemVuOworCiAJLyotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAJICogV29ya2luZyBz dGF0ZSBmb3IgSE9UIGNoYWluIHByb2Nlc3NpbmcKIAkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEyOSwxMiArMTQ0LDE2IEBAIHR5 cGVkZWYgc3RydWN0CiAJLyoKIAkgKiBDYWxsZXIgbXVzdCBwcm92aWRlIGEgcGlubmVkIHZtYnVm ZmVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGhlYXAgYmxvY2sKIAkgKiBwYXNzZWQgdG8gaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoKS4gV2Ugd2lsbCBmaXggYW55IGNvcnJ1cHRpb24KLQkgKiBm b3VuZCBpbiB0aGUgVk0uCisJICogZm91bmQgaW4gdGhlIFZNIGFuZCBzZXQgdGhlIFZNIGlmIHRo ZSBwYWdlIGlzIGFsbC12aXNpYmxlL2FsbC1mcm96ZW4uCiAJICovCiAJQnVmZmVyCQl2bWJ1ZmZl cjsKIAotCS8qIEJpdHMgaW4gdGhlIHZtYnVmZmVyIGZvciB0aGlzIGhlYXAgcGFnZSAqLwotCXVp bnQ4CQl2bWJpdHM7CisJLyoKKwkgKiBUaGUgc3RhdGUgb2YgdGhlIFZNIGJpdHMgYXQgdGhlIGJl Z2lubmluZyBvZiBwcnVuaW5nIGFuZCB0aGUgc3RhdGUgdGhleQorCSAqIHdpbGwgYmUgaW4gYXQg dGhlIGVuZC4KKwkgKi8KKwl1aW50OAkJb2xkX3ZtYml0czsKKwl1aW50OAkJbmV3X3ZtYml0czsK IAogCS8qIFRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSAqLwogCVRy YW5zYWN0aW9uSWQgbmV3ZXN0X2xpdmVfeGlkOwpAQCAtMTY0LDIxICsxODMsNiBAQCB0eXBlZGVm IHN0cnVjdAogCSAqLwogCWludAkJCWxwZGVhZF9pdGVtczsJLyogbnVtYmVyIG9mIGl0ZW1zIGlu IHRoZSBhcnJheSAqLwogCU9mZnNldE51bWJlciAqZGVhZG9mZnNldHM7CS8qIHBvaW50cyBkaXJl Y3RseSB0byBwcmVzdWx0LT5kZWFkb2Zmc2V0cyAqLwotCi0JLyoKLQkgKiBzZXRfYWxsX3Zpc2li bGUgYW5kIHNldF9hbGxfZnJvemVuIGluZGljYXRlIGlmIHRoZSBhbGwtdmlzaWJsZSBhbmQKLQkg KiBhbGwtZnJvemVuIGJpdHMgaW4gdGhlIHZpc2liaWxpdHkgbWFwIGNhbiBiZSBzZXQgZm9yIHRo aXMgcGFnZSBhZnRlcgotCSAqIHBydW5pbmcuCi0JICoKLQkgKiBOT1RFOiBzZXRfYWxsX3Zpc2li bGUgYW5kIHNldF9hbGxfZnJvemVuIGluaXRpYWxseSBkb24ndCBpbmNsdWRlCi0JICogTFBfREVB RCBpdGVtcy4gVGhhdCdzIGNvbnZlbmllbnQgZm9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KCkgdG8KLQkgKiB1c2UgdGhlbSB0byBkZWNpZGUgd2hldGhlciB0byBmcmVlemUgdGhlIHBhZ2Ug b3Igbm90LiAgVGhlCi0JICogc2V0X2FsbF92aXNpYmxlIGFuZCBzZXRfYWxsX2Zyb3plbiB2YWx1 ZXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBhcmUKLQkgKiBhZGp1c3RlZCB0byBpbmNsdWRlIExQ X0RFQUQgaXRlbXMgYWZ0ZXIgd2UgZGV0ZXJtaW5lIHdoZXRoZXIgdG8KLQkgKiBvcHBvcnR1bmlz dGljYWxseSBmcmVlemUuCi0JICovCi0JYm9vbAkJc2V0X2FsbF92aXNpYmxlOwotCWJvb2wJCXNl dF9hbGxfZnJvemVuOwogfSBQcnVuZVN0YXRlOwogCiAvKiBMb2NhbCBmdW5jdGlvbnMgKi8KQEAg LTIxNiw2ICsyMjAsMTIgQEAgc3RhdGljIHZvaWQgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBhZ2Ug cGFnZSk7CiAKIHN0YXRpYyBib29sIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShib29sIGRpZF90dXBs ZV9oaW50X2ZwaSwgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19oaW50X3BydW5lLAogCQkJCQkJCQkg IFBydW5lU3RhdGUgKnByc3RhdGUpOworc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3Zt KFBydW5lU3RhdGUgKnByc3RhdGUsIFBydW5lUmVhc29uIHJlYXNvbik7CitzdGF0aWMgVHJhbnNh Y3Rpb25JZCBnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLCBi b29sIGRvX3NldF92bSwKKwkJCQkJCQkJCSAgdWludDggb2xkX3ZtYml0cywgdWludDggbmV3X3Zt Yml0cywKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBsYXRlc3RfeGlkX3JlbW92ZWQsCisJCQkJ CQkJCQkgIFRyYW5zYWN0aW9uSWQgbmV3ZXN0X2Zyb3plbl94aWQsCisJCQkJCQkJCQkgIFRyYW5z YWN0aW9uSWQgbmV3ZXN0X2xpdmVfeGlkKTsKIAogCiAvKgpAQCAtMzgyLDkgKzM5MiwxMCBAQCBw cnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAogCUFzc2VydChC dWZmZXJJc1ZhbGlkKHBhcmFtcy0+dm1idWZmZXIpKTsKIAlwcnN0YXRlLT52bWJ1ZmZlciA9IHBh cmFtcy0+dm1idWZmZXI7Ci0JcHJzdGF0ZS0+dm1iaXRzID0gdmlzaWJpbGl0eW1hcF9nZXRfc3Rh dHVzKHByc3RhdGUtPnJlbGF0aW9uLAotCQkJCQkJCQkJCQkgICBwcnN0YXRlLT5ibG9jaywKLQkJ CQkJCQkJCQkJICAgJnByc3RhdGUtPnZtYnVmZmVyKTsKKwlwcnN0YXRlLT5uZXdfdm1iaXRzID0g MDsKKwlwcnN0YXRlLT5vbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHByc3Rh dGUtPnJlbGF0aW9uLAorCQkJCQkJCQkJCQkJICAgcHJzdGF0ZS0+YmxvY2ssCisJCQkJCQkJCQkJ CQkgICAmcHJzdGF0ZS0+dm1idWZmZXIpOwogCiAJLyoKIAkgKiBPdXIgc3RyYXRlZ3kgaXMgdG8g c2NhbiB0aGUgcGFnZSBhbmQgbWFrZSBsaXN0cyBvZiBpdGVtcyB0byBjaGFuZ2UsCkBAIC03ODMs NiArNzk0LDY2IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShib29sIGRpZF90dXBsZV9oaW50X2Zw aSwKIAlyZXR1cm4gZG9fZnJlZXplOwogfQogCisvKgorICogQ2FsY3VsYXRlIHRoZSBjb25mbGlj dCBob3Jpem9uIGZvciB0aGUgd2hvbGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgorICog b3IgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1MgcmVjb3JkLgorICovCitzdGF0aWMgVHJhbnNh Y3Rpb25JZAorZ2V0X2NvbmZsaWN0X3hpZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwg Ym9vbCBkb19zZXRfdm0sCisJCQkJIHVpbnQ4IG9sZF92bWJpdHMsIHVpbnQ4IG5ld192bWJpdHMs CisJCQkJIFRyYW5zYWN0aW9uSWQgbGF0ZXN0X3hpZF9yZW1vdmVkLAorCQkJCSBUcmFuc2FjdGlv bklkIG5ld2VzdF9mcm96ZW5feGlkLAorCQkJCSBUcmFuc2FjdGlvbklkIG5ld2VzdF9saXZlX3hp ZCkKK3sKKwlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklk OworCisJLyoKKwkgKiBXZSBjYW4gb21pdCB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBp ZiB3ZSBhcmUgbm90IHBydW5pbmcgb3IKKwkgKiBmcmVlemluZyBhbnkgdHVwbGVzIGFuZCBhcmUg c2V0dGluZyBhbiBhbHJlYWR5IGFsbC12aXNpYmxlIHBhZ2UKKwkgKiBhbGwtZnJvemVuIGluIHRo ZSBWTS4gSW4gdGhpcyBjYXNlLCBhbGwgb2YgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZSBtdXN0CisJ ICogYWxyZWFkeSBiZSBzZWVuIGFzIGZyb3plbiBieSBhbGwgTVZDQyBzbmFwc2hvdHMgb24gdGhl IHN0YW5kYnkgKGFueQorCSAqIGNvbmZsaWN0IHdvdWxkIGhhdmUgYmVlbiBoYW5kbGVkIGluIHJl YWN0aW9uIHRvIHRoZSBXQUwgcmVjb3JkIGZyZWV6aW5nCisJICogdGhvc2UgdHVwbGVzKS4KKwkg Ki8KKwlpZiAoIWRvX3BydW5lICYmCisJCSFkb19mcmVlemUgJiYKKwkJKG9sZF92bWJpdHMgJiBW SVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAmJgorCQkobmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlN QVBfQUxMX0ZST1pFTikpCisJCXJldHVybiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKworCS8qCisJ ICogVGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gZm9yIHRoZSB3aG9sZSByZWNvcmQgc2hv dWxkIGJlIHRoZSBtb3N0CisJICogY29uc2VydmF0aXZlIChuZXdlc3QpIG9mIGFsbCB0aGUgaG9y aXpvbnMgY2FsY3VsYXRlZCBmb3IgYW55IG9mIHRoZQorCSAqIHBvc3NpYmxlIG1vZGlmaWNhdGlv bnMuIElmIHRoaXMgcmVjb3JkIHdpbGwgcHJ1bmUgdHVwbGVzLCBhbnkgcXVlcmllcworCSAqIG9u IHRoZSBzdGFuZGJ5IHdpdGggeG1pbiBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCBYSUQgb2YgdGhl IG1vc3QKKwkgKiByZWNlbnRseSByZW1vdmVkIHR1cGxlIHRoaXMgcmVjb3JkIHdpbGwgcHJ1bmUg d2lsbCBjb25mbGljdC4gIElmIHRoaXMKKwkgKiByZWNvcmQgd2lsbCBmcmVlemUgdHVwbGVzLCBh bnkgcXVlcmllcyBvbiB0aGUgc3RhbmRieSB3aXRoIHhtaW4gb2xkZXIKKwkgKiB0aGFuIHRoZSB5 b3VuZ2VzdCB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgorCSAq CisJICogSWYgd2UgYXJlIHNldHRpbmcgdGhlIFZNLCB0aGUgY29uZmxpY3QgaG9yaXpvbiBpcyBh bG1vc3QgYWx3YXlzIHRoZQorCSAqIG5ld2VzdCBsaXZlIFhJRCwgZXhjZXB0IGluIHRoZSBzaXR1 YXRpb24gZGVzY3JpYmVkIGFib3ZlLgorCSAqCisJICogQnkgcGlja2luZyB0aGUgbmV3ZXN0IG9m IGFsbCBvZiB0aG9zZSwgd2UgY2FuIGVuc3VyZSB0aGF0IGFsbCBjaGFuZ2VzCisJICogaW4gdGhl IHJlY29yZCBoYXZlIGJlZW4gdGFrZW4gaW50byBhY2NvdW50LgorCSAqLworCWlmIChkb19zZXRf dm0pCisJCWNvbmZsaWN0X3hpZCA9IG5ld2VzdF9saXZlX3hpZDsKKwlpZiAoZG9fZnJlZXplICYm IFRyYW5zYWN0aW9uSWRGb2xsb3dzKG5ld2VzdF9mcm96ZW5feGlkLCBjb25mbGljdF94aWQpKQor CQljb25mbGljdF94aWQgPSBuZXdlc3RfZnJvemVuX3hpZDsKKworCS8qCisJICogSWYgd2UgYXJl IHJlbW92aW5nIHR1cGxlcyB3aXRoIGEgeW91bmdlciBYSUQgdGhhbiBvdXIgc28gZmFyIGNhbGN1 bGF0ZWQKKwkgKiBjb25mbGljdF94aWQsIHdlIG11c3QgdXNlIHRoaXMgYXMgb3VyIGhvcml6b24u CisJICovCisJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGxhdGVzdF94aWRfcmVtb3ZlZCwgY29u ZmxpY3RfeGlkKSkKKwl7CisJCUFzc2VydChkb19wcnVuZSk7CisJCWNvbmZsaWN0X3hpZCA9IGxh dGVzdF94aWRfcmVtb3ZlZDsKKwl9CisKKwlyZXR1cm4gY29uZmxpY3RfeGlkOworfQorCiAvKgog ICogSGVscGVyIHRvIGZpeCB2aXNpYmlsaXR5LXJlbGF0ZWQgY29ycnVwdGlvbiBvbiBhIGhlYXAg cGFnZSBhbmQgaXRzCiAgKiBjb3JyZXNwb25kaW5nIFZNIHBhZ2UuIEFuIGFsbC12aXNpYmxlIHBh Z2UgY2Fubm90IGhhdmUgZGVhZCBpdGVtcyBub3IgY2FuCkBAIC04NDcsNyArOTE4LDcgQEAgaGVh cF9maXhfdm1fY29ycnVwdGlvbihQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2Zm bnVtKQogCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKHByc3RhdGUtPnBhZ2UpOwogCQlNYXJrQnVmZmVy RGlydHlIaW50KHByc3RhdGUtPmJ1ZmZlciwgdHJ1ZSk7CiAJfQotCWVsc2UgaWYgKHByc3RhdGUt PnZtYml0cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykKKwllbHNlIGlmIChwcnN0YXRlLT5v bGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQogCXsKIAkJLyoKIAkJICogQXMg b2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJl IHNldCBpZgpAQCAtODY1LDcgKzkzNiw0MyBAQCBoZWFwX2ZpeF92bV9jb3JydXB0aW9uKFBydW5l U3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pCiAKIAl2aXNpYmlsaXR5bWFwX2Ns ZWFyKHByc3RhdGUtPnJlbGF0aW9uLCBwcnN0YXRlLT5ibG9jaywgcHJzdGF0ZS0+dm1idWZmZXIs CiAJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwotCXByc3RhdGUtPnZtYml0cyA9IDA7 CisJcHJzdGF0ZS0+b2xkX3ZtYml0cyA9IDA7Cit9CisKKy8qCisgKiBEZWNpZGUgd2hldGhlciB0 byBzZXQgdGhlIHZpc2liaWxpdHkgbWFwIGJpdHMgKGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVu KQorICogZm9yIGhlYXBfYmxrIHVzaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIFBydW5lU3RhdGUg YW5kIFZNLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgYWN0dWFsbHkgc2V0IHRoZSBW TSBiaXRzIG9yIHBhZ2UtbGV2ZWwgdmlzaWJpbGl0eQorICogaGludCwgUERfQUxMX1ZJU0lCTEUu CisgKgorICogUmV0dXJucyB0cnVlIGlmIG9uZSBvciBib3RoIFZNIGJpdHMgc2hvdWxkIGJlIHNl dCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX3dpbGxf c2V0X3ZtKFBydW5lU3RhdGUgKnByc3RhdGUsIFBydW5lUmVhc29uIHJlYXNvbikKK3sKKwkvKgor CSAqIFRob3VnaCBvbi1hY2Nlc3MgcHJ1bmluZyBtYWludGFpbnMgcHJzdGF0ZS0+c2V0X2FsbF92 aXNpYmxlLCB3ZSBkb24ndAorCSAqIGNvbnNpZGVyIHNldHRpbmcgdGhlIFZNLgorCSAqLworCWlm IChyZWFzb24gPT0gUFJVTkVfT05fQUNDRVNTKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoIXBy c3RhdGUtPnNldF9hbGxfdmlzaWJsZSkKKwkJcmV0dXJuIGZhbHNlOworCisJcHJzdGF0ZS0+bmV3 X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisKKwlpZiAocHJzdGF0ZS0+c2V0 X2FsbF9mcm96ZW4pCisJCXByc3RhdGUtPm5ld192bWJpdHMgfD0gVklTSUJJTElUWU1BUF9BTExf RlJPWkVOOworCisJaWYgKHByc3RhdGUtPm5ld192bWJpdHMgPT0gcHJzdGF0ZS0+b2xkX3ZtYml0 cykKKwl7CisJCXByc3RhdGUtPm5ld192bWJpdHMgPSAwOworCQlyZXR1cm4gZmFsc2U7CisJfQor CisJcmV0dXJuIHRydWU7CiB9CiAKIC8qCkBAIC04OTQsMTUgKzEwMDEsMTMgQEAgaGVhcF9wYWdl X2J5cGFzc19wcnVuZV9mcmVlemUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgUHJ1bmVGcmVlemVSZXN1 bHQgKnByZXN1bHQpCiAJT2Zmc2V0TnVtYmVyIG1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1i ZXIocHJzdGF0ZS0+cGFnZSk7CiAJUGFnZQkJcGFnZSA9IHByc3RhdGUtPnBhZ2U7CiAKLQlBc3Nl cnQocHJzdGF0ZS0+dm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOIHx8Ci0JCSAgIChw cnN0YXRlLT52bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFICYmCisJQXNzZXJ0KHBy c3RhdGUtPm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4gfHwKKwkJICAgKHBy c3RhdGUtPm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFICYmCiAJCQkhcHJz dGF0ZS0+YXR0ZW1wdF9mcmVlemUpKTsKIAogCS8qIFdlJ2xsIGZpbGwgaW4gcHJlc3VsdCBmb3Ig dGhlIGNhbGxlciAqLwogCW1lbXNldChwcmVzdWx0LCAwLCBzaXplb2YoUHJ1bmVGcmVlemVSZXN1 bHQpKTsKIAotCXByZXN1bHQtPnZtYml0cyA9IHByc3RhdGUtPnZtYml0czsKLQogCS8qIENsZWFy IGFueSBzdGFsZSBwcnVuZSBoaW50ICovCiAJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKFBhZ2VH ZXRQcnVuZVhpZChwYWdlKSkpCiAJewpAQCAtOTMyLDcgKzEwMzcsOCBAQCBoZWFwX3BhZ2VfYnlw YXNzX3BydW5lX2ZyZWV6ZShQcnVuZVN0YXRlICpwcnN0YXRlLCBQcnVuZUZyZWV6ZVJlc3VsdCAq cHJlc3VsdCkKIAogLyoKICAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90 ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBvbiB0aGUKLSAqIHNwZWNpZmllZCBwYWdlLgorICogc3Bl Y2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5nZWQs IHVwZGF0ZSBpdCBpbgorICogdGhlIFZNLgogICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIGFu ZCBidWZmZXIgY2xlYW51cCBsb2NrIG9uIHRoZSBwYWdlLiAgTm90ZSB0aGF0IHdlCiAgKiBkb24n dCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1hdGlvbiBmb3IgcGFnZSBvbiBjYWxsZXIncyBiZWhhbGYu ICBDYWxsZXIgbWlnaHQKQEAgLTk0NywxMiArMTA1MywxMCBAQCBoZWFwX3BhZ2VfYnlwYXNzX3By dW5lX2ZyZWV6ZShQcnVuZVN0YXRlICpwcnN0YXRlLCBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3Vs dCkKICAqIHR1cGxlcyBpZiBpdCdzIHJlcXVpcmVkIGluIG9yZGVyIHRvIGFkdmFuY2UgcmVsZnJv emVueGlkIC8gcmVsbWlubXhpZCwgb3IKICAqIGlmIGl0J3MgY29uc2lkZXJlZCBhZHZhbnRhZ2Vv dXMgZm9yIG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRvIHNvCiAgKiBub3cuICBUaGUg J3BhcmFtcy5jdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFuZAotICog J25ld19yZWxtaW5fbXhpZCcgYXJndW1lbnRzIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6aW5nLiAg V2hlbgotICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgcGFzc2VkLCB3ZSBhbHNv IHNldAotICogcHJlc3VsdC0+c2V0X2FsbF92aXNpYmxlIGFuZCBwcmVzdWx0LT5zZXRfYWxsX2Zy b3plbiBhZnRlciBkZXRlcm1pbmluZwotICogd2hldGhlciBvciBub3QgdG8gb3Bwb3J0dW5pc3Rp Y2FsbHkgZnJlZXplLCB0byBpbmRpY2F0ZSBpZiB0aGUgVk0gYml0cyBjYW4KLSAqIGJlIHNldC4g J2FsbC1mcm96ZW4nIGlzIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgSEVBUF9QQUdFX1BS VU5FX0ZSRUVaRQotICogb3B0aW9uIGlzIG5vdCBwYXNzZWQuCisgKiAnbmV3X3JlbG1pbl9teGlk JyBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuCisgKgorICogQSB2bWJ1ZmZl ciBjb3JyZXNwb25kaW5nIHRvIHRoZSBoZWFwIHBhZ2UgaXMgYWxzbyBpcyBwYXNzZWQgYW5kIGlm IHRoZSBwYWdlCisgKiBpcyBmb3VuZCB0byBiZSBhbGwtdmlzaWJsZS9hbGwtZnJvemVuLCB3ZSB3 aWxsIHNldCBpdCBpbiB0aGUgVk0uCiAgKgogICogcHJlc3VsdCBjb250YWlucyBvdXRwdXQgcGFy YW1ldGVycyBuZWVkZWQgYnkgY2FsbGVycywgc3VjaCBhcyB0aGUgbnVtYmVyIG9mCiAgKiB0dXBs ZXMgcmVtb3ZlZCBhbmQgdGhlIG9mZnNldHMgb2YgZGVhZCBpdGVtcyBvbiB0aGUgcGFnZSBhZnRl ciBwcnVuaW5nLgpAQCAtOTgwLDE1ICsxMDg0LDE3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJ CWRvX3BydW5lOwogCWJvb2wJCWRvX2hpbnRfcHJ1bmU7CisJYm9vbAkJZG9fc2V0X3ZtOwogCWJv b2wJCWRpZF90dXBsZV9oaW50X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uu d2FsX2ZwaTsKKwlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKIAogCS8qIEluaXRpYWxpemUg cHJzdGF0ZSAqLwogCXBydW5lX2ZyZWV6ZV9zZXR1cChwYXJhbXMsCiAJCQkJCSAgIG5ld19yZWxm cm96ZW5feGlkLCBuZXdfcmVsbWluX214aWQsCiAJCQkJCSAgIHByZXN1bHQsICZwcnN0YXRlKTsK IAotCWlmICgocHJzdGF0ZS52bWJpdHMgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpICYmCisJ aWYgKChwcnN0YXRlLm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpICYmCiAJ CSFQYWdlSXNBbGxWaXNpYmxlKHByc3RhdGUucGFnZSkpCiAJCWhlYXBfZml4X3ZtX2NvcnJ1cHRp b24oJnByc3RhdGUsIEludmFsaWRPZmZzZXROdW1iZXIpOwogCkBAIC05OTcsOCArMTEwMyw4IEBA IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ ICogaXMgbm90IGJlaW5nIGF0dGVtcHRlZCwgd2UgY2FuIGV4aXQgZWFybHkuIERvIHRoaXMgYWZ0 ZXIgZml4aW5nIGFueQogCSAqIGRpc2NyZXBhbmN5IGJldHdlZW4gdGhlIHBhZ2UtbGV2ZWwgdmlz aWJpbGl0eSBoaW50IGFuZCB0aGUgVk0uCiAJICovCi0JaWYgKHByc3RhdGUudm1iaXRzICYgVklT SUJJTElUWU1BUF9BTExfRlJPWkVOIHx8Ci0JCShwcnN0YXRlLnZtYml0cyAmIFZJU0lCSUxJVFlN QVBfQUxMX1ZJU0lCTEUgJiYgIXByc3RhdGUuYXR0ZW1wdF9mcmVlemUpKQorCWlmIChwcnN0YXRl Lm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4gfHwKKwkJKHByc3RhdGUub2xk X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgJiYgIXByc3RhdGUuYXR0ZW1wdF9m cmVlemUpKQogCXsKIAkJaGVhcF9wYWdlX2J5cGFzc19wcnVuZV9mcmVlemUoJnByc3RhdGUsIHBy ZXN1bHQpOwogCQlyZXR1cm47CkBAIC0xMDY4LDYgKzExNzQsMjUgQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJcHJzdGF0ZS5zZXRfYWxs X3Zpc2libGUgPSBwcnN0YXRlLnNldF9hbGxfZnJvemVuID0gZmFsc2U7CiAKIAlBc3NlcnQoIXBy c3RhdGUuc2V0X2FsbF9mcm96ZW4gfHwgcHJzdGF0ZS5zZXRfYWxsX3Zpc2libGUpOworCUFzc2Vy dCghcHJzdGF0ZS5zZXRfYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDAp KTsKKworCWRvX3NldF92bSA9IGhlYXBfcGFnZV93aWxsX3NldF92bSgmcHJzdGF0ZSwgcGFyYW1z LT5yZWFzb24pOworCisJLyoKKwkgKiBuZXdfdm1iaXRzIHNob3VsZCBiZSAwIHJlZ2FyZGxlc3Mg b2Ygd2hldGhlciBvciBub3QgdGhlIHBhZ2UgaXMKKwkgKiBhbGwtdmlzaWJsZSBpZiB3ZSBkbyBu b3QgaW50ZW5kIHRvIHNldCB0aGUgVk0uCisJICovCisJQXNzZXJ0KGRvX3NldF92bSB8fCBwcnN0 YXRlLm5ld192bWJpdHMgPT0gMCk7CisKKwljb25mbGljdF94aWQgPSBnZXRfY29uZmxpY3RfeGlk KGRvX3BydW5lLCBkb19mcmVlemUsIGRvX3NldF92bSwKKwkJCQkJCQkJCXByc3RhdGUub2xkX3Zt Yml0cywgcHJzdGF0ZS5uZXdfdm1iaXRzLAorCQkJCQkJCQkJcHJzdGF0ZS5sYXRlc3RfeGlkX3Jl bW92ZWQsCisJCQkJCQkJCQlwcnN0YXRlLnBhZ2VmcnouRnJlZXplUGFnZUNvbmZsaWN0WGlkLAor CQkJCQkJCQkJcHJzdGF0ZS5uZXdlc3RfbGl2ZV94aWQpOworCisJLyogTG9jayB2bWJ1ZmZlciBi ZWZvcmUgZW50ZXJpbmcgYSBjcml0aWNhbCBzZWN0aW9uICovCisJaWYgKGRvX3NldF92bSkKKwkJ TG9ja0J1ZmZlcihwcnN0YXRlLnZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOwogCiAJ LyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGlzIGNyaXRpY2FsICovCiAJ U1RBUlRfQ1JJVF9TRUNUSU9OKCk7CkBAIC0xMDg5LDE0ICsxMjE0LDE3IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAKIAkJLyoKIAkJICog SWYgdGhhdCdzIGFsbCB3ZSBoYWQgdG8gZG8gdG8gdGhlIHBhZ2UsIHRoaXMgaXMgYSBub24tV0FM LWxvZ2dlZAotCQkgKiBoaW50LiAgSWYgd2UgYXJlIGdvaW5nIHRvIGZyZWV6ZSBvciBwcnVuZSB0 aGUgcGFnZSwgd2Ugd2lsbCBtYXJrCi0JCSAqIHRoZSBidWZmZXIgZGlydHkgYmVsb3cuCisJCSAq IGhpbnQuICBJZiB3ZSBhcmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5lIHRoZSBwYWdlIG9yIHNl dAorCQkgKiBQRF9BTExfVklTSUJMRSwgd2Ugd2lsbCBtYXJrIHRoZSBidWZmZXIgZGlydHkgYmVs b3cuCisJCSAqCisJCSAqIFNldHRpbmcgUERfQUxMX1ZJU0lCTEUgaXMgZnVsbHkgV0FMLWxvZ2dl ZCBiZWNhdXNlIGl0IGlzIGZvcmJpZGRlbgorCQkgKiBmb3IgdGhlIFZNIHRvIGJlIHNldCBhbmQg UERfQUxMX1ZJU0lCTEUgdG8gYmUgY2xlYXIuCiAJCSAqLwotCQlpZiAoIWRvX2ZyZWV6ZSAmJiAh ZG9fcHJ1bmUpCisJCWlmICghZG9fZnJlZXplICYmICFkb19wcnVuZSAmJiAhZG9fc2V0X3ZtKQog CQkJTWFya0J1ZmZlckRpcnR5SGludChwcnN0YXRlLmJ1ZmZlciwgdHJ1ZSk7CiAJfQogCi0JaWYg KGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSkKKwlpZiAoZG9fcHJ1bmUgfHwgZG9fZnJlZXplIHx8IGRv X3NldF92bSkKIAl7CiAJCS8qIEFwcGx5IHRoZSBwbGFubmVkIGl0ZW0gY2hhbmdlcyBhbmQgcmVw YWlyIHBhZ2UgZnJhZ21lbnRhdGlvbi4gKi8KIAkJaWYgKGRvX3BydW5lKQpAQCAtMTExMCw2ICsx MjM4LDI3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpw YXJhbXMsCiAJCWlmIChkb19mcmVlemUpCiAJCQloZWFwX2ZyZWV6ZV9wcmVwYXJlZF90dXBsZXMo cHJzdGF0ZS5idWZmZXIsIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4pOwogCisJCS8q IFNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHBhZ2UgdmlzaWJpbGl0eSBoaW50ICovCisJCWlm IChkb19zZXRfdm0pCisJCXsKKwkJCS8qCisJCQkgKiBXaGlsZSBpdCBpcyB2YWxpZCBmb3IgUERf QUxMX1ZJU0lCTEUgdG8gYmUgc2V0IHdoZW4gdGhlCisJCQkgKiBjb3JyZXNwb25kaW5nIFZNIGJp dCBpcyBjbGVhciwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbQorCQkJICogaW4gc3lu Yy4KKwkJCSAqCisJCQkgKiBUaGUgaGVhcCBidWZmZXIgbXVzdCBiZSBtYXJrZWQgZGlydHkgYmVm b3JlIGFkZGluZyBpdCB0byB0aGUKKwkJCSAqIFdBTCBjaGFpbiB3aGVuIHNldHRpbmcgdGhlIFZN LiBXZSBkb24ndCB3b3JyeSBhYm91dAorCQkJICogdW5uZWNlc3NhcmlseSBkaXJ0eWluZyB0aGUg aGVhcCBidWZmZXIgaWYgUERfQUxMX1ZJU0lCTEUgaXMKKwkJCSAqIGFscmVhZHkgc2V0LCB0aG91 Z2guIEl0IGlzIGV4dHJlbWVseSByYXJlIHRvIGhhdmUgYSBjbGVhbiBoZWFwCisJCQkgKiBidWZm ZXIgd2l0aCBQRF9BTExfVklTSUJMRSBhbHJlYWR5IHNldCBhbmQgdGhlIFZNIGJpdHMgY2xlYXIs CisJCQkgKiBzbyB0aGVyZSBpcyBubyBwb2ludCBpbiBvcHRpbWl6aW5nIGl0LgorCQkJICovCisJ CQlQYWdlU2V0QWxsVmlzaWJsZShwcnN0YXRlLnBhZ2UpOworCQkJUGFnZUNsZWFyUHJ1bmFibGUo cHJzdGF0ZS5wYWdlKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhwcnN0YXRlLmJsb2Nr LCBwcnN0YXRlLnZtYnVmZmVyLCBwcnN0YXRlLm5ld192bWJpdHMsCisJCQkJCQkJCQkgcHJzdGF0 ZS5yZWxhdGlvbi0+cmRfbG9jYXRvcik7CisJCX0KKwogCQlNYXJrQnVmZmVyRGlydHkocHJzdGF0 ZS5idWZmZXIpOwogCiAJCS8qCkBAIC0xMTE3LDI5ICsxMjY2LDEyIEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCSAqLwogCQlpZiAoUmVs YXRpb25OZWVkc1dBTChwcnN0YXRlLnJlbGF0aW9uKSkKIAkJewotCQkJLyoKLQkJCSAqIFRoZSBz bmFwc2hvdENvbmZsaWN0SG9yaXpvbiBmb3IgdGhlIHdob2xlIHJlY29yZCBzaG91bGQgYmUgdGhl Ci0JCQkgKiBtb3N0IGNvbnNlcnZhdGl2ZSBvZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQg Zm9yIGFueSBvZiB0aGUKLQkJCSAqIHBvc3NpYmxlIG1vZGlmaWNhdGlvbnMuICBJZiB0aGlzIHJl Y29yZCB3aWxsIHBydW5lIHR1cGxlcywgYW55Ci0JCQkgKiBxdWVyaWVzIG9uIHRoZSBzdGFuZGJ5 IG9sZGVyIHRoYW4gdGhlIHlvdW5nZXN0IHhpZCBvZiB0aGUgbW9zdAotCQkJICogcmVjZW50bHkg cmVtb3ZlZCB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHdpbGwgY29uZmxpY3QuIElmCi0J CQkgKiB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZSB0dXBsZXMsIGFueSBxdWVyaWVzIG9uIHRoZSBz dGFuZGJ5IHdpdGgKLQkJCSAqIHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgdHVwbGUgdGhp cyByZWNvcmQgd2lsbCBmcmVlemUgd2lsbAotCQkJICogY29uZmxpY3QuCi0JCQkgKi8KLQkJCVRy YW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkOwotCi0JCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3Mo cHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VDb25mbGljdFhpZCwKLQkJCQkJCQkJCSBwcnN0YXRl LmxhdGVzdF94aWRfcmVtb3ZlZCkpCi0JCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5wYWdlZnJ6 LkZyZWV6ZVBhZ2VDb25mbGljdFhpZDsKLQkJCWVsc2UKLQkJCQljb25mbGljdF94aWQgPSBwcnN0 YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKLQogCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShw cnN0YXRlLnJlbGF0aW9uLCBwcnN0YXRlLmJ1ZmZlciwKLQkJCQkJCQkJCSAgSW52YWxpZEJ1ZmZl ciwJLyogdm1idWZmZXIgKi8KLQkJCQkJCQkJCSAgMCwJLyogdm1mbGFncyAqLworCQkJCQkJCQkJ ICBkb19zZXRfdm0gPyBwcnN0YXRlLnZtYnVmZmVyIDogSW52YWxpZEJ1ZmZlciwKKwkJCQkJCQkJ CSAgZG9fc2V0X3ZtID8gcHJzdGF0ZS5uZXdfdm1iaXRzIDogMCwKIAkJCQkJCQkJCSAgY29uZmxp Y3RfeGlkLAotCQkJCQkJCQkJICB0cnVlLCBwYXJhbXMtPnJlYXNvbiwKKwkJCQkJCQkJCSAgdHJ1 ZSwgLyogY2xlYW51cCBsb2NrICovCisJCQkJCQkJCQkgIHBhcmFtcy0+cmVhc29uLAogCQkJCQkJ CQkJICBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuLAogCQkJCQkJCQkJICBwcnN0YXRl LnJlZGlyZWN0ZWQsIHByc3RhdGUubnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkgIHByc3RhdGUubm93 ZGVhZCwgcHJzdGF0ZS5uZGVhZCwKQEAgLTExNDksMzMgKzEyODEsNzAgQEAgaGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAogCUVORF9DUklUX1NF Q1RJT04oKTsKIAorCWlmIChkb19zZXRfdm0pCisJCUxvY2tCdWZmZXIocHJzdGF0ZS52bWJ1ZmZl ciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKworCS8qCisJICogRHVyaW5nIGl0cyBzZWNvbmQgcGFz cyBvdmVyIHRoZSBoZWFwLCBWQUNVVU0gY2FsbHMKKwkgKiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxs X3Zpc2libGUoKSB0byBkZXRlcm1pbmUgd2hldGhlciBhIHBhZ2UgaXMKKwkgKiBhbGwtdmlzaWJs ZSBhbmQgYWxsLWZyb3plbi4gVGhlIGxvZ2ljIGhlcmUgaXMgc2ltaWxhci4gQWZ0ZXIgY29tcGxl dGluZworCSAqIHBydW5pbmcgYW5kIGZyZWV6aW5nLCB1c2UgYW4gYXNzZXJ0aW9uIHRvIHZlcmlm eSB0aGF0IG91ciByZXN1bHRzCisJICogcmVtYWluIGNvbnNpc3RlbnQgd2l0aCBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUoKS4KKwkgKi8KKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5H CisJaWYgKHByc3RhdGUuc2V0X2FsbF92aXNpYmxlKQorCXsKKwkJVHJhbnNhY3Rpb25JZCBkZWJ1 Z19jdXRvZmY7CisJCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47CisKKwkJQXNzZXJ0KHByc3RhdGUu bHBkZWFkX2l0ZW1zID09IDApOworCisJCUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUo cHJzdGF0ZS5yZWxhdGlvbiwgcHJzdGF0ZS5idWZmZXIsCisJCQkJCQkJCQkJcHJzdGF0ZS52aXN0 ZXN0LAorCQkJCQkJCQkJCSZkZWJ1Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJCSZkZWJ1Z19jdXRv ZmYsIG9mZl9sb2MpKTsKKworCQkvKgorCQkgKiBJdCdzIHBvc3NpYmxlIHRoZSBwYWdlIGlzIGNv bXBvc2VkIGVudGlyZWx5IG9mIGZyb3plbiB0dXBsZXMgYnV0IGlzCisJCSAqIG5vdCBzZXQgYWxs LWZyb3plbiBpbiB0aGUgVk0gYW5kIGRpZCBub3QgcGFzcworCQkgKiBIRUFQX1BBR0VfUFJVTkVf RlJFRVpFLiBJbiB0aGlzIGNhc2UsIGl0J3MgcG9zc2libGUKKwkJICogaGVhcF9wYWdlX2lzX2Fs bF92aXNpYmxlKCkgZmluZHMgdGhlIHBhZ2UgY29tcGxldGVseSBmcm96ZW4sIGV2ZW4KKwkJICog dGhvdWdoIHByc3RhdGUuYWxsX2Zyb3plbiBpcyBmYWxzZS4KKwkJICovCisJCUFzc2VydCghcHJz dGF0ZS5zZXRfYWxsX2Zyb3plbiB8fCBkZWJ1Z19hbGxfZnJvemVuKTsKKwl9CisjZW5kaWYKKwog CS8qIENvcHkgaW5mb3JtYXRpb24gYmFjayBmb3IgY2FsbGVyICovCiAJcHJlc3VsdC0+bmRlbGV0 ZWQgPSBwcnN0YXRlLm5kZWxldGVkOwogCXByZXN1bHQtPm5uZXdscGRlYWQgPSBwcnN0YXRlLm5k ZWFkOwogCXByZXN1bHQtPm5mcm96ZW4gPSBwcnN0YXRlLm5mcm96ZW47CiAJcHJlc3VsdC0+bGl2 ZV90dXBsZXMgPSBwcnN0YXRlLmxpdmVfdHVwbGVzOwogCXByZXN1bHQtPnJlY2VudGx5X2RlYWRf dHVwbGVzID0gcHJzdGF0ZS5yZWNlbnRseV9kZWFkX3R1cGxlczsKLQlwcmVzdWx0LT5zZXRfYWxs X3Zpc2libGUgPSBwcnN0YXRlLnNldF9hbGxfdmlzaWJsZTsKLQlwcmVzdWx0LT5zZXRfYWxsX2Zy b3plbiA9IHByc3RhdGUuc2V0X2FsbF9mcm96ZW47CiAJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0 ZS5oYXN0dXA7Ci0JcHJlc3VsdC0+dm1iaXRzID0gcHJzdGF0ZS52bWJpdHM7Ci0KLQkvKgotCSAq IEZvciBjYWxsZXJzIHBsYW5uaW5nIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoZSBj b25mbGljdCBob3Jpem9uCi0JICogZm9yIHRoYXQgcmVjb3JkIG11c3QgYmUgdGhlIG5ld2VzdCB4 bWluIG9uIHRoZSBwYWdlLiAgSG93ZXZlciwgaWYgdGhlCi0JICogcGFnZSBpcyBjb21wbGV0ZWx5 IGZyb3plbiwgdGhlcmUgY2FuIGJlIG5vIGNvbmZsaWN0IGFuZCB0aGUKLQkgKiB2bV9jb25mbGlj dF9ob3Jpem9uIHNob3VsZCByZW1haW4gSW52YWxpZFRyYW5zYWN0aW9uSWQuICBUaGlzIGluY2x1 ZGVzCi0JICogdGhlIGNhc2UgdGhhdCB3ZSBqdXN0IGZyb3plIGFsbCB0aGUgdHVwbGVzOyB0aGUg cHJ1bmUtZnJlZXplIHJlY29yZAotCSAqIGluY2x1ZGVkIHRoZSBjb25mbGljdCBYSUQgYWxyZWFk eSBzbyB0aGUgY2FsbGVyIGRvZXNuJ3QgbmVlZCBpdC4KLQkgKi8KLQlpZiAocHJlc3VsdC0+c2V0 X2FsbF9mcm96ZW4pCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKLQllbHNlCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24gPSBwcnN0 YXRlLm5ld2VzdF9saXZlX3hpZDsKIAogCXByZXN1bHQtPmxwZGVhZF9pdGVtcyA9IHByc3RhdGUu bHBkZWFkX2l0ZW1zOwogCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMgYWxy ZWFkeSBmaWxsZWQgaW4gKi8KIAorCWlmIChkb19zZXRfdm0pCisJeworCQlpZiAoKHByc3RhdGUu b2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCisJCXsKKwkJCXBy ZXN1bHQtPm5ld19hbGxfdmlzaWJsZV9wYWdlcyA9IDE7CisJCQlpZiAocHJzdGF0ZS5zZXRfYWxs X2Zyb3plbikKKwkJCQlwcmVzdWx0LT5uZXdfYWxsX3Zpc2libGVfZnJvemVuX3BhZ2VzID0gMTsK KwkJfQorCQllbHNlIGlmICgocHJzdGF0ZS5vbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOKSA9PSAwICYmCisJCQkJIHByc3RhdGUuc2V0X2FsbF9mcm96ZW4pCisJCQlwcmVzdWx0 LT5uZXdfYWxsX2Zyb3plbl9wYWdlcyA9IDE7CisJfQorCWVsc2UKKwl7CisJCXByZXN1bHQtPm5l d19hbGxfdmlzaWJsZV9wYWdlcyA9IDA7CisJCXByZXN1bHQtPm5ld19hbGxfZnJvemVuX3BhZ2Vz ID0gMDsKKwkJcHJlc3VsdC0+bmV3X2FsbF92aXNpYmxlX2Zyb3plbl9wYWdlcyA9IDA7CisJfQor CiAJaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUpCiAJewogCQlpZiAocHJlc3VsdC0+bmZyb3pl biA+IDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMjM0MDJlN2UyNmMu LjZiNTIxMGQ2MzkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NTks MTMgKzQ1OSw2IEBAIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfYWRkKExWUmVsU3RhdGUgKnZhY3Jl bCwgQmxvY2tOdW1iZXIgYmxrbm8sIE9mZnNldE51bWJlciAqCiBzdGF0aWMgdm9pZCBkZWFkX2l0 ZW1zX3Jlc2V0KExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2Ns ZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIAotI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcK LXN0YXRpYyBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsCi0JCQkJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCi0JCQkJCQkJCQkgYm9v bCAqYWxsX2Zyb3plbiwKLQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICpuZXdlc3RfbGl2ZV94aWQs Ci0JCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7Ci0jZW5kaWYKIHN0YXRp YyBib29sIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsCiAJCQkJCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkJ ICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKQEAgLTE5OTYsOCArMTk4OSw2IEBAIGxhenlf c2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJCS52aXN0ZXN0ID0gdmFjcmVsLT52aXN0 ZXN0LAogCQkuY3V0b2ZmcyA9ICZ2YWNyZWwtPmN1dG9mZnMsCiAJfTsKLQl1aW50OAkJb2xkX3Zt Yml0cyA9IDA7Ci0JdWludDgJCW5ld192bWJpdHMgPSAwOwogCiAJQXNzZXJ0KEJ1ZmZlckdldEJs b2NrTnVtYmVyKGJ1ZikgPT0gYmxrbm8pOwogCkBAIC0yMDM4LDI5ICsyMDI5LDYgQEAgbGF6eV9z Y2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJdmFjcmVsLT5uZXdfZnJvemVuX3R1cGxl X3BhZ2VzKys7CiAJfQogCi0JLyoKLQkgKiBWQUNVVU0gd2lsbCBjYWxsIGhlYXBfcGFnZV9pc19h bGxfdmlzaWJsZSgpIGR1cmluZyB0aGUgc2Vjb25kIHBhc3Mgb3ZlcgotCSAqIHRoZSBoZWFwIHRv IGRldGVybWluZSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBmb3IgdGhlIHBhZ2UgLS0gdGhp cwotCSAqIGlzIGEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbG9naWMgZnJvbSB0aGlzIGZ1 bmN0aW9uLiAgTm93IHRoYXQKLQkgKiB3ZSd2ZSBmaW5pc2hlZCBwcnVuaW5nIGFuZCBmcmVlemlu ZywgbWFrZSBzdXJlIHRoYXQgd2UncmUgaW4gdG90YWwKLQkgKiBhZ3JlZW1lbnQgd2l0aCBoZWFw X3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1c2luZyBhbiBhc3NlcnRpb24uCi0JICovCi0jaWZkZWYg VVNFX0FTU0VSVF9DSEVDS0lORwotCWlmIChwcmVzdWx0LnNldF9hbGxfdmlzaWJsZSkKLQl7Ci0J CVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOwotCQlib29sCQlkZWJ1Z19hbGxfZnJvemVuOwot Ci0JCUFzc2VydChwcmVzdWx0LmxwZGVhZF9pdGVtcyA9PSAwKTsKLQotCQlBc3NlcnQoaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWYsCi0JCQkJCQkJCQkJdmFjcmVsLT52 aXN0ZXN0LCAmZGVidWdfYWxsX2Zyb3plbiwKLQkJCQkJCQkJCQkmZGVidWdfY3V0b2ZmLCAmdmFj cmVsLT5vZmZudW0pKTsKLQotCQlBc3NlcnQocHJlc3VsdC5zZXRfYWxsX2Zyb3plbiA9PSBkZWJ1 Z19hbGxfZnJvemVuKTsKLQl9Ci0jZW5kaWYKLQogCS8qCiAJICogTm93IHNhdmUgZGV0YWlscyBv ZiB0aGUgTFBfREVBRCBpdGVtcyBmcm9tIHRoZSBwYWdlIGluIHZhY3JlbAogCSAqLwpAQCAtMjA4 MSw2ICsyMDQ5LDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJfQog CiAJLyogRmluYWxseSwgYWRkIHBhZ2UtbG9jYWwgY291bnRzIHRvIHdob2xlLVZBQ1VVTSBjb3Vu dHMgKi8KKwl2YWNyZWwtPm5ld19hbGxfdmlzaWJsZV9wYWdlcyArPSBwcmVzdWx0Lm5ld19hbGxf dmlzaWJsZV9wYWdlczsKKwl2YWNyZWwtPm5ld19hbGxfdmlzaWJsZV9hbGxfZnJvemVuX3BhZ2Vz ICs9IHByZXN1bHQubmV3X2FsbF92aXNpYmxlX2Zyb3plbl9wYWdlczsKKwl2YWNyZWwtPm5ld19h bGxfZnJvemVuX3BhZ2VzICs9IHByZXN1bHQubmV3X2FsbF9mcm96ZW5fcGFnZXM7CisKKwkvKiBD YXB0dXJlIGlmIHRoZSBwYWdlIHdhcyBuZXdseSBzZXQgZnJvemVuICovCisJKnZtX3BhZ2VfZnJv emVuID0gcHJlc3VsdC5uZXdfYWxsX3Zpc2libGVfZnJvemVuX3BhZ2VzID4gMCB8fAorCQlwcmVz dWx0Lm5ld19hbGxfZnJvemVuX3BhZ2VzID4gMDsKKwogCXZhY3JlbC0+dHVwbGVzX2RlbGV0ZWQg Kz0gcHJlc3VsdC5uZGVsZXRlZDsKIAl2YWNyZWwtPnR1cGxlc19mcm96ZW4gKz0gcHJlc3VsdC5u ZnJvemVuOwogCXZhY3JlbC0+bHBkZWFkX2l0ZW1zICs9IHByZXN1bHQubHBkZWFkX2l0ZW1zOwpA QCAtMjA5NCw3MSArMjA3MCw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJLyogRGlkIHdlIGZpbmQgTFBfREVBRCBpdGVtcz8gKi8KIAkqaGFzX2xwZGVhZF9pdGVtcyA9 IChwcmVzdWx0LmxwZGVhZF9pdGVtcyA+IDApOwogCi0JQXNzZXJ0KCFwcmVzdWx0LnNldF9hbGxf dmlzaWJsZSB8fCAhKCpoYXNfbHBkZWFkX2l0ZW1zKSk7Ci0JQXNzZXJ0KCFwcmVzdWx0LnNldF9h bGxfZnJvemVuIHx8IHByZXN1bHQuc2V0X2FsbF92aXNpYmxlKTsKLQotCWlmICghcHJlc3VsdC5z ZXRfYWxsX3Zpc2libGUpCi0JCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwotCi0JLyogU2V0IHRo ZSB2aXNpYmlsaXR5IG1hcCBhbmQgcGFnZSB2aXNpYmlsaXR5IGhpbnQgKi8KLQlvbGRfdm1iaXRz ID0gcHJlc3VsdC52bWJpdHM7Ci0JbmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lC TEU7Ci0JaWYgKHByZXN1bHQuc2V0X2FsbF9mcm96ZW4pCi0JCW5ld192bWJpdHMgfD0gVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOOwotCi0JLyogTm90aGluZyB0byBkbyAqLwotCWlmIChvbGRfdm1i aXRzID09IG5ld192bWJpdHMpCi0JCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwotCi0JLyoKLQkg KiBJdCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFn ZSBpcyBzZXQgd2hpbGUKLQkgKiB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIgKGFuZCBpZiBz bywgd2UgY2xlYXJlZCBpdCBhYm92ZSksIGJ1dCB0aGUKLQkgKiByZXZlcnNlIGlzIGFsbG93ZWQg KGlmIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQpLiBSZWdhcmRsZXNzLCBzZXQgYm90aAotCSAq IGJpdHMgc28gdGhhdCB3ZSBnZXQgYmFjayBpbiBzeW5jLgotCSAqCi0JICogVGhlIGhlYXAgYnVm ZmVyIG11c3QgYmUgbWFya2VkIGRpcnR5IGJlZm9yZSBhZGRpbmcgaXQgdG8gdGhlIFdBTCBjaGFp bgotCSAqIHdoZW4gc2V0dGluZyB0aGUgVk0uIFdlIGRvbid0IHdvcnJ5IGFib3V0IHVubmVjZXNz YXJpbHkgZGlydHlpbmcgdGhlCi0JICogaGVhcCBidWZmZXIgaWYgUERfQUxMX1ZJU0lCTEUgaXMg YWxyZWFkeSBzZXQsIHRob3VnaC4gSXQgaXMgZXh0cmVtZWx5Ci0JICogcmFyZSB0byBoYXZlIGEg Y2xlYW4gaGVhcCBidWZmZXIgd2l0aCBQRF9BTExfVklTSUJMRSBhbHJlYWR5IHNldCBhbmQKLQkg KiB0aGUgVk0gYml0cyBjbGVhciwgc28gdGhlcmUgaXMgbm8gcG9pbnQgaW4gb3B0aW1pemluZyBp dC4KLQkgKi8KLQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQlQYWdlQ2xlYXJQcnVuYWJsZShw YWdlKTsKLQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQotCS8qCi0JICogSWYgdGhlIHBhZ2UgaXMg YmVpbmcgc2V0IGFsbC1mcm96ZW4sIHdlIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMKLQkg KiB0aGUgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHN1ZmZp Y2llbnQgdG8gbWFrZQotCSAqIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdo ZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZSBmcm96ZW4uCi0JICovCi0JQXNzZXJ0KCFwcmVzdWx0 LnNldF9hbGxfZnJvemVuIHx8Ci0JCSAgICFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZt X2NvbmZsaWN0X2hvcml6b24pKTsKLQotCXZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBi bGtubywgYnVmLAotCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkgIHZtYnVmZmVyLCBw cmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24sCi0JCQkJCSAgbmV3X3ZtYml0cyk7Ci0KLQkvKgot CSAqIElmIHRoZSBwYWdlIHdhc24ndCBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxs LWZyb3plbiBpbiB0aGUgVk0sCi0JICogY291bnQgaXQgYXMgbmV3bHkgc2V0IGZvciBsb2dnaW5n LgotCSAqLwotCWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09 IDApCi0JewotCQl2YWNyZWwtPm5ld19hbGxfdmlzaWJsZV9wYWdlcysrOwotCQlpZiAocHJlc3Vs dC5zZXRfYWxsX2Zyb3plbikKLQkJewotCQkJdmFjcmVsLT5uZXdfYWxsX3Zpc2libGVfYWxsX2Zy b3plbl9wYWdlcysrOwotCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJfQotCX0KLQllbHNl IGlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgPT0gMCAmJgotCQkJ IHByZXN1bHQuc2V0X2FsbF9mcm96ZW4pCi0JewotCQl2YWNyZWwtPm5ld19hbGxfZnJvemVuX3Bh Z2VzKys7Ci0JCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JfQotCiAJcmV0dXJuIHByZXN1bHQu bmRlbGV0ZWQ7CiB9CiAKQEAgLTM1NzIsNyArMzQ4Myw3IEBAIGRlYWRfaXRlbXNfY2xlYW51cChM VlJlbFN0YXRlICp2YWNyZWwpCiAgKiB0aGF0IGV4cGVjdCBubyBMUF9ERUFEIG9uIHRoZSBwYWdl LiBDdXJyZW50bHkgYXNzZXJ0LW9ubHksIGJ1dCB0aGVyZSBpcyBubwogICogcmVhc29uIG5vdCB0 byB1c2UgaXQgb3V0c2lkZSBvZiBhc3NlcnRzLgogICovCi1zdGF0aWMgYm9vbAorYm9vbAogaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCSBH bG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSBib29sICphbGxfZnJvemVuLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oCmluZGV4IDg0OWVkODJiY2YyLi43ZWY0Y2JiZmIxZSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApA QCAtMjYwLDcgKzI2MCw4IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCiAKIAkv KgogCSAqIENhbGxlcnMgc2hvdWxkIHByb3ZpZGUgYSBwaW5uZWQgdm1idWZmZXIgY29ycmVzcG9u ZGluZyB0byB0aGUgaGVhcAotCSAqIGJsb2NrIGluIGJ1ZmZlci4gV2Ugd2lsbCBjaGVjayBmb3Ig YW5kIHJlcGFpciBhbnkgY29ycnVwdGlvbiBpbiB0aGUgVk0uCisJICogYmxvY2sgaW4gYnVmZmVy LiBXZSB3aWxsIGNoZWNrIGZvciBhbmQgcmVwYWlyIGFueSBjb3JydXB0aW9uIGluIHRoZSBWTQor CSAqIGFuZCBzZXQgdGhlIFZNIGFmdGVyIHBydW5pbmcgaWYgdGhlIHBhZ2UgaXMgYWxsLXZpc2li bGUvYWxsLWZyb3plbi4KIAkgKi8KIAlCdWZmZXIJCXZtYnVmZmVyOwogCkBAIC0yNzYsOCArMjc3 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVQYXJhbXMKIAkgKiBIRUFQX1BBR0VfUFJV TkVfTUFSS19VTlVTRURfTk9XIGluZGljYXRlcyB0aGF0IGRlYWQgaXRlbXMgY2FuIGJlIHNldAog CSAqIExQX1VOVVNFRCBkdXJpbmcgcHJ1bmluZy4KIAkgKgotCSAqIEhFQVBfUEFHRV9QUlVORV9G UkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZAotCSAq IHdpbGwgcmV0dXJuICdhbGxfdmlzaWJsZScsICdhbGxfZnJvemVuJyBmbGFncyB0byB0aGUgY2Fs bGVyLgorCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBh bHNvIGZyZWV6ZSB0dXBsZXMuCiAJICovCiAJaW50CQkJb3B0aW9uczsKIApAQCAtMzExLDI2ICsz MTEsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlpbnQJCQlyZWNlbnRs eV9kZWFkX3R1cGxlczsKIAogCS8qCi0JICogc2V0X2FsbF92aXNpYmxlIGFuZCBzZXRfYWxsX2Zy b3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kCi0JICogYWxsLWZyb3plbiBiaXRz IGluIHRoZSB2aXNpYmlsaXR5IG1hcCBzaG91bGQgYmUgc2V0IGZvciB0aGlzIHBhZ2UgYWZ0ZXIK LQkgKiBwcnVuaW5nLgotCSAqCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBpcyB0aGUgbmV3ZXN0 IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuICBUaGUKLQkgKiBjYWxsZXIgY2FuIHVz ZSBpdCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIGJpdHMuICBJ dAotCSAqIGlzIG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMgKG5mcm96ZW4gPiAw KSwgYW5kIHNldF9hbGxfZnJvemVuCi0JICogaXMgdHJ1ZS4KLQkgKgotCSAqIFRoZXNlIGFyZSBv bmx5IHNldCBpZiB0aGUgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LgotCSAq LwotCWJvb2wJCXNldF9hbGxfdmlzaWJsZTsKLQlib29sCQlzZXRfYWxsX2Zyb3plbjsKLQlUcmFu c2FjdGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b247Ci0KLQkvKgotCSAqIHZtYml0cyBpcyB0aGUg dmFsdWUgb2YgdGhlIHZtYnVmZmVyJ3Mgdm1iaXRzIGF0IHRoZSBiZWdpbm5pbmcgb2YKLQkgKiBw cnVuaW5nLiBJdCBpcyBjbGVhcmVkIGlmIFZNIGNvcnJ1cHRpb24gaXMgZm91bmQgYW5kIGNvcnJl Y3RlZC4KKwkgKiBXaGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgbmV3bHkgc2V0IGFsbC12aXNp YmxlIGFuZCBhbGwtZnJvemVuIGR1cmluZworCSAqIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgogCSAq LwotCXVpbnQ4CQl2bWJpdHM7CisJQmxvY2tOdW1iZXIgbmV3X2FsbF92aXNpYmxlX3BhZ2VzOwor CUJsb2NrTnVtYmVyIG5ld19hbGxfdmlzaWJsZV9mcm96ZW5fcGFnZXM7CisJQmxvY2tOdW1iZXIg bmV3X2FsbF9mcm96ZW5fcGFnZXM7CiAKIAkvKgogCSAqIFdoZXRoZXIgb3Igbm90IHRoZSBwYWdl IG1ha2VzIHJlbCB0cnVuY2F0aW9uIHVuc2FmZS4gIFRoaXMgaXMgc2V0IHRvCkBAIC00NjcsNyAr NDUzLDEzIEBAIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAvKiBpbiBoZWFwL3ZhY3V1bWxhenkuYyAqLwogZXh0 ZXJuIHZvaWQgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBWYWN1 dW1QYXJhbXMgcGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOwotCisjaWZk ZWYgVVNFX0FTU0VSVF9DSEVDS0lORworZXh0ZXJuIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNp YmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAq dmlzdGVzdCwKKwkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAorCQkJCQkJCQkJIFRyYW5zYWN0 aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxv Z2dpbmdfb2ZmbnVtKTsKKyNlbmRpZgogLyogaW4gaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jICov CiBleHRlcm4gYm9vbCBIZWFwVHVwbGVTYXRpc2ZpZXNWaXNpYmlsaXR5KEhlYXBUdXBsZSBodHVw LCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkgQnVmZmVyIGJ1ZmZlcik7Ci0tIAoyLjQz LjAKCg== --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0008-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v36-0008-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfipyus7 RnJvbSA4OWZkZTgzNWY1OTA0NWFlNzQ5MGNiYmRjZmM0NjFiZWY1YzI0ODQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzYgMDgvMTZdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8 YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdt YWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAzNSAr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggNmI1MjEwZDYzOTMuLjE0NTFjOTQzNjQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0xOTAzLDkgKzE5MDMsMTIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkgKi8KIAkJ aWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJl Zm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICovCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVy LCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAot CQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdyaXRpbmcgYSBXQUwgcmVjb3JkICovCisJ CQkvKiBNYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGluZyBhbnkgV0FMIHJlY29yZHMgKi8K IAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCiAJCQkvKgpAQCAtMTkyMywxMyArMTkyNiwzMyBA QCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1Ziwg QmxvY2tOdW1iZXIgYmxrbm8sCiAKIAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwogCQkJUGFn ZUNsZWFyUHJ1bmFibGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwg Ymxrbm8sIGJ1ZiwKLQkJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCSAgdm1idWZm ZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklT SUJMRSB8Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOworCQkJdmlzaWJpbGl0 eW1hcF9zZXRfdm1iaXRzKGJsa25vLAorCQkJCQkJCQkJIHZtYnVmZmVyLAorCQkJCQkJCQkJIFZJ U0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTiwKKwkJCQkJCQkJCSB2YWNyZWwtPnJlbC0+cmRfbG9jYXRvcik7CisKKwkJCS8qCisJCQkg KiBFbWl0IFdBTCBmb3Igc2V0dGluZyBQRF9BTExfVklTSUJMRSBvbiB0aGUgaGVhcCBwYWdlIGFu ZAorCQkJICogc2V0dGluZyB0aGUgVk0uCisJCQkgKi8KKwkJCWlmIChSZWxhdGlvbk5lZWRzV0FM KHZhY3JlbC0+cmVsKSkKKwkJCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHZhY3JlbC0+cmVs LCBidWYsCisJCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfAorCQkJCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJ CQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQsIC8qIGNvbmZsaWN0IHhpZCAqLworCQkJCQkJ CQkJCSAgZmFsc2UsCS8qIGNsZWFudXAgbG9jayAqLworCQkJCQkJCQkJCSAgUFJVTkVfVkFDVVVN X1NDQU4sCS8qIHJlYXNvbiAqLworCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5V TEwsIDAsCisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCk7CisKIAkJ CUVORF9DUklUX1NFQ1RJT04oKTsKIAorCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xP Q0tfVU5MT0NLKTsKKwogCQkJLyogQ291bnQgdGhlIG5ld2x5IGFsbC1mcm96ZW4gcGFnZXMgZm9y IGxvZ2dpbmcgKi8KIAkJCXZhY3JlbC0+bmV3X2FsbF92aXNpYmxlX3BhZ2VzKys7CiAJCQl2YWNy ZWwtPm5ld19hbGxfdmlzaWJsZV9hbGxfZnJvemVuX3BhZ2VzKys7Ci0tIAoyLjQzLjAKCg== --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0009-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v36-0009-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfiq2sj8 RnJvbSBkOWFjZmRlMDc3NWVkZWZiNDYzZGYyYjM3M2IyNGNhZmRkOGJhNTMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzYgMDkvMTZdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKClRoZXJl IGFyZSBubyByZW1haW5pbmcgdXNlcnMgdGhhdCBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNv cmRzLCBzbyBpdApjYW4gYmUgcmVtb3ZlZC4gVGhpcyBpbmNsdWRlcyBkZWxldGluZyB0aGUgeGxf aGVhcF92aXNpYmxlIHN0cnVjdCBhbmQKYWxsIGZ1bmN0aW9ucyByZXNwb25zaWJsZSBmb3IgZW1p dHRpbmcgb3IgcmVwbGF5aW5nIFhMT0dfSEVBUDJfVklTSUJMRQpyZWNvcmRzLgoKVGhpcyBjaGFu Z2VzIHRoZSB2aXNpYmlsaXR5IG1hcCBBUEksIHNvIGFueSBleHRlcm5hbCB1c2Vycy9jb25zdW1l cnMgb2YKdGhlIFZNLW9ubHkgV0FMIHJlY29yZCB3aWxsIG5lZWQgdG8gY2hhbmdlLgoKQXV0aG9y OiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1i eTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRleC10ZWFtLnJ1PgpSZXZpZXdlZC1ieTogQW5k cmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGku ZXZhbi5jaGFvQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1h c2suYyAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAg ICAgIHwgIDU0ICstLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5j ICAgIHwgMTU2ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYyAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgICAgIHwgIDE2ICstLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0 eW1hcC5jICB8IDExMCArLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRl c2MvaGVhcGRlc2MuYyAgIHwgIDEwIC0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RlY29kZS5jIHwgICAxIC0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAg ICAgfCAgMTIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgICAgfCAg MjAgLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oICAgICAgIHwgIDEzICst CiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCAgIHwgICA5IC0tCiBzcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgIHwgICAxIC0KIDEzIGZpbGVzIGNo YW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDM3MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vYnVmbWFzay5jCmluZGV4IDFhOWU3YmVhNWQyLi5hNzAwNWI1N2U2MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKQEAgLTU2LDggKzU2LDggQEAgbWFza19wYWdlX2hpbnRf Yml0cyhQYWdlIHBhZ2UpCiAKIAkvKgogCSAqIER1cmluZyByZXBsYXksIGlmIHRoZSBwYWdlIExT TiBoYXMgYWR2YW5jZWQgcGFzdCBvdXIgWExPRyByZWNvcmQncyBMU04sCi0JICogd2UgZG9uJ3Qg bWFyayB0aGUgcGFnZSBhbGwtdmlzaWJsZS4gU2VlIGhlYXBfeGxvZ192aXNpYmxlKCkgZm9yCi0J ICogZGV0YWlscy4KKwkgKiB3ZSBkb24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUg aGVhcF94bG9nX3BydW5lX2ZyZWV6ZSgpIGZvcgorCSAqIG1vcmUgZGV0YWlscy4KIAkgKi8KIAlQ YWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRl eCA1NGNkOGQ2YTQ5Ny4uMTQ5Y2ZmZDFhNTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBA IC0yNTg5LDExICsyNTg5LDExIEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9u LCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJewogCQkJUGFnZVNldEFs bFZpc2libGUocGFnZSk7CiAJCQlQYWdlQ2xlYXJQcnVuYWJsZShwYWdlKTsKLQkJCXZpc2liaWxp dHltYXBfc2V0X3ZtYml0cyhCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAotCQkJCQkJCQkJ IHZtYnVmZmVyLAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJ CQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKLQkJCQkJCQkJCSByZWxhdGlvbi0+cmRfbG9j YXRvcik7CisJCQl2aXNpYmlsaXR5bWFwX3NldChCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIp LAorCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxF IHwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkgIHJlbGF0aW9u LT5yZF9sb2NhdG9yKTsKIAkJfQogCiAJCS8qCkBAIC04ODkwLDUwICs4ODkwLDYgQEAgYm90dG9t dXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogCXJldHVybiBu YmxvY2tzZmF2b3JhYmxlOwogfQogCi0vKgotICogUGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhl YXAtdmlzaWJsZSBvcGVyYXRpb24uICAnYmxvY2snIGlzIHRoZSBibG9jawotICogYmVpbmcgbWFy a2VkIGFsbC12aXNpYmxlLCBhbmQgdm1fYnVmZmVyIGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0 aGUKLSAqIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgYmxvY2suICBCb3RoIHNob3VsZCBo YXZlIGFscmVhZHkgYmVlbiBtb2RpZmllZAotICogYW5kIGRpcnRpZWQuCi0gKgotICogc25hcHNo b3RDb25mbGljdEhvcml6b24gY29tZXMgZnJvbSB0aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdl IGJlaW5nCi0gKiBtYXJrZWQgYWxsLXZpc2libGUuICBSRURPIHJvdXRpbmUgdXNlcyBpdCB0byBn ZW5lcmF0ZSByZWNvdmVyeSBjb25mbGljdHMuCi0gKgotICogSWYgY2hlY2tzdW1zIG9yIHdhbF9s b2dfaGludHMgYXJlIGVuYWJsZWQsIHdlIG1heSBhbHNvIGdlbmVyYXRlIGEgZnVsbC1wYWdlCi0g KiBpbWFnZSBvZiBoZWFwX2J1ZmZlci4gT3RoZXJ3aXNlLCB3ZSBvcHRpbWl6ZSBhd2F5IHRoZSBG UEkgKGJ5IHNwZWNpZnlpbmcKLSAqIFJFR0JVRl9OT19JTUFHRSBmb3IgdGhlIGhlYXAgYnVmZmVy KSwgaW4gd2hpY2ggY2FzZSB0aGUgY2FsbGVyIHNob3VsZCAqbm90KgotICogdXBkYXRlIHRoZSBo ZWFwIHBhZ2UncyBMU04uCi0gKi8KLVhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsYXRp b24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJIFRyYW5z YWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sIHVpbnQ4IHZtZmxhZ3MpCi17Ci0JeGxf aGVhcF92aXNpYmxlIHhscmVjOwotCVhMb2dSZWNQdHIJcmVjcHRyOwotCXVpbnQ4CQlmbGFnczsK LQotCUFzc2VydChCdWZmZXJJc1ZhbGlkKGhlYXBfYnVmZmVyKSk7Ci0JQXNzZXJ0KEJ1ZmZlcklz VmFsaWQodm1fYnVmZmVyKSk7Ci0KLQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uOwotCXhscmVjLmZsYWdzID0gdm1mbGFnczsKLQlpZiAoUmVs YXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpKQotCQl4bHJlYy5mbGFncyB8 PSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUw7Ci0JWExvZ0JlZ2luSW5zZXJ0KCk7Ci0J WExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVPZkhlYXBWaXNpYmxlKTsKLQotCVhMb2dSZWdp c3RlckJ1ZmZlcigwLCB2bV9idWZmZXIsIDApOwotCi0JZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7 Ci0JaWYgKCFYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCWZsYWdzIHw9IFJFR0JVRl9OT19JTUFH RTsKLQlYTG9nUmVnaXN0ZXJCdWZmZXIoMSwgaGVhcF9idWZmZXIsIGZsYWdzKTsKLQotCXJlY3B0 ciA9IFhMb2dJbnNlcnQoUk1fSEVBUDJfSUQsIFhMT0dfSEVBUDJfVklTSUJMRSk7Ci0KLQlyZXR1 cm4gcmVjcHRyOwotfQotCiAvKgogICogUGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdXBk YXRlIG9wZXJhdGlvbi4gIENhbGxlciBtdXN0IGFscmVhZHkKICAqIGhhdmUgbW9kaWZpZWQgdGhl IGJ1ZmZlcihzKSBhbmQgbWFya2VkIHRoZW0gZGlydHkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwppbmRleCA2ZDM5YTVmZmY3Yy4uYTgzZjZiMDNkNjkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtMjM5LDcgKzIzOSw3IEBAIGhlYXBfeGxvZ19wcnVu ZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWlmIChQYWdlSXNOZXcodm1wYWdl KSkKIAkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKIAotCQl2aXNpYmlsaXR5bWFwX3Nl dF92bWJpdHMoYmxrbm8sIHZtYnVmZmVyLCB2bWZsYWdzLCBybG9jYXRvcik7CisJCXZpc2liaWxp dHltYXBfc2V0KGJsa25vLCB2bWJ1ZmZlciwgdm1mbGFncywgcmxvY2F0b3IpOwogCiAJCUFzc2Vy dChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CiAJCVBhZ2VTZXRMU04odm1wYWdlLCBsc24pOwpA QCAtMjUyLDE0MyArMjUyLDYgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAkJWExvZ1JlY29yZFBhZ2VXaXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtu bywgZnJlZXNwYWNlKTsKIH0KIAotLyoKLSAqIFJlcGxheSBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVj b3Jkcy4KLSAqCi0gKiBUaGUgY3JpdGljYWwgaW50ZWdyaXR5IHJlcXVpcmVtZW50IGhlcmUgaXMg dGhhdCB3ZSBtdXN0IG5ldmVyIGVuZCB1cCB3aXRoCi0gKiBhIHNpdHVhdGlvbiB3aGVyZSB0aGUg dmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCwgYW5kIHRoZSBwYWdlLWxldmVsCi0gKiBQRF9BTExf VklTSUJMRSBiaXQgaXMgY2xlYXIuICBJZiB0aGF0IHdlcmUgdG8gb2NjdXIsIHRoZW4gYSBzdWJz ZXF1ZW50Ci0gKiBwYWdlIG1vZGlmaWNhdGlvbiB3b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSB2aXNp YmlsaXR5IG1hcCBiaXQuCi0gKi8KLXN0YXRpYyB2b2lkCi1oZWFwX3hsb2dfdmlzaWJsZShYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCkKLXsKLQlYTG9nUmVjUHRyCWxzbiA9IHJlY29yZC0+RW5kUmVj UHRyOwotCXhsX2hlYXBfdmlzaWJsZSAqeGxyZWMgPSAoeGxfaGVhcF92aXNpYmxlICopIFhMb2dS ZWNHZXREYXRhKHJlY29yZCk7Ci0JQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7Ci0J QnVmZmVyCQlidWZmZXI7Ci0JUGFnZQkJcGFnZTsKLQlSZWxGaWxlTG9jYXRvciBybG9jYXRvcjsK LQlCbG9ja051bWJlciBibGtubzsKLQlYTG9nUmVkb0FjdGlvbiBhY3Rpb247Ci0KLQlBc3NlcnQo KHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfWExPR19WQUxJRF9CSVRTKSA9PSB4bHJlYy0+ ZmxhZ3MpOwotCi0JWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMSwgJnJsb2NhdG9yLCBOVUxM LCAmYmxrbm8pOwotCi0JLyoKLQkgKiBJZiB0aGVyZSBhcmUgYW55IEhvdCBTdGFuZGJ5IHRyYW5z YWN0aW9ucyBydW5uaW5nIHRoYXQgaGF2ZSBhbiB4bWluCi0JICogaG9yaXpvbiBvbGQgZW5vdWdo IHRoYXQgdGhpcyBwYWdlIGlzbid0IGFsbC12aXNpYmxlIGZvciB0aGVtLCB0aGV5Ci0JICogbWln aHQgaW5jb3JyZWN0bHkgZGVjaWRlIHRoYXQgYW4gaW5kZXgtb25seSBzY2FuIGNhbiBza2lwIGEg aGVhcCBmZXRjaC4KLQkgKgotCSAqIE5COiBJdCBtaWdodCBiZSBiZXR0ZXIgdG8gdGhyb3cgc29t ZSBraW5kIG9mICJzb2Z0IiBjb25mbGljdCBoZXJlIHRoYXQKLQkgKiBmb3JjZXMgYW55IGluZGV4 LW9ubHkgc2NhbiB0aGF0IGlzIGluIGZsaWdodCB0byBwZXJmb3JtIGhlYXAgZmV0Y2hlcywKLQkg KiByYXRoZXIgdGhhbiBraWxsaW5nIHRoZSB0cmFuc2FjdGlvbiBvdXRyaWdodC4KLQkgKi8KLQlp ZiAoSW5Ib3RTdGFuZGJ5KQotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4 bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCQkJCXhscmVjLT5mbGFncyAm IFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JFTCwKLQkJCQkJCQkJCQkJcmxvY2F0b3IpOwot Ci0JLyoKLQkgKiBSZWFkIHRoZSBoZWFwIHBhZ2UsIGlmIGl0IHN0aWxsIGV4aXN0cy4gSWYgdGhl IGhlYXAgZmlsZSBoYXMgZHJvcHBlZCBvcgotCSAqIHRydW5jYXRlZCBsYXRlciBpbiByZWNvdmVy eSwgd2UgZG9uJ3QgbmVlZCB0byB1cGRhdGUgdGhlIHBhZ2UsIGJ1dCB3ZSdkCi0JICogYmV0dGVy IHN0aWxsIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAuCi0JICovCi0JYWN0aW9uID0gWExvZ1Jl YWRCdWZmZXJGb3JSZWRvKHJlY29yZCwgMSwgJmJ1ZmZlcik7Ci0JaWYgKGFjdGlvbiA9PSBCTEtf TkVFRFNfUkVETykKLQl7Ci0JCS8qCi0JCSAqIFdlIGRvbid0IGJ1bXAgdGhlIExTTiBvZiB0aGUg aGVhcCBwYWdlIHdoZW4gc2V0dGluZyB0aGUgdmlzaWJpbGl0eQotCQkgKiBtYXAgYml0ICh1bmxl c3MgY2hlY2tzdW1zIG9yIHdhbF9oaW50X2JpdHMgaXMgZW5hYmxlZCwgaW4gd2hpY2gKLQkJICog Y2FzZSB3ZSBtdXN0KS4gVGhpcyBleHBvc2VzIHVzIHRvIHRvcm4gcGFnZSBoYXphcmRzLCBidXQg c2luY2UKLQkJICogd2UncmUgbm90IGluc3BlY3RpbmcgdGhlIGV4aXN0aW5nIHBhZ2UgY29udGVu dHMgaW4gYW55IHdheSwgd2UKLQkJICogZG9uJ3QgY2FyZS4KLQkJICovCi0JCXBhZ2UgPSBCdWZm ZXJHZXRQYWdlKGJ1ZmZlcik7Ci0KLQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCVBhZ2VD bGVhclBydW5hYmxlKHBhZ2UpOwotCi0JCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQlQ YWdlU2V0TFNOKHBhZ2UsIGxzbik7Ci0KLQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7Ci0JfQot CWVsc2UgaWYgKGFjdGlvbiA9PSBCTEtfUkVTVE9SRUQpCi0JewotCQkvKgotCQkgKiBJZiBoZWFw IGJsb2NrIHdhcyBiYWNrZWQgdXAsIHdlIGFscmVhZHkgcmVzdG9yZWQgaXQgYW5kIHRoZXJlJ3MK LQkJICogbm90aGluZyBtb3JlIHRvIGRvLiAoVGhpcyBjYW4gb25seSBoYXBwZW4gd2l0aCBjaGVj a3N1bXMgb3IKLQkJICogd2FsX2xvZ19oaW50cyBlbmFibGVkLikKLQkJICovCi0JfQotCi0JaWYg KEJ1ZmZlcklzVmFsaWQoYnVmZmVyKSkKLQl7Ci0JCVNpemUJCXNwYWNlID0gUGFnZUdldEZyZWVT cGFjZShCdWZmZXJHZXRQYWdlKGJ1ZmZlcikpOwotCi0JCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVm ZmVyKTsKLQotCQkvKgotCQkgKiBTaW5jZSBGU00gaXMgbm90IFdBTC1sb2dnZWQgYW5kIG9ubHkg dXBkYXRlZCBoZXVyaXN0aWNhbGx5LCBpdAotCQkgKiBlYXNpbHkgYmVjb21lcyBzdGFsZSBpbiBz dGFuZGJ5cy4gIElmIHRoZSBzdGFuZGJ5IGlzIGxhdGVyIHByb21vdGVkCi0JCSAqIGFuZCBydW5z IFZBQ1VVTSwgaXQgd2lsbCBza2lwIHVwZGF0aW5nIGluZGl2aWR1YWwgZnJlZSBzcGFjZQotCQkg KiBmaWd1cmVzIGZvciBwYWdlcyB0aGF0IGJlY2FtZSBhbGwtdmlzaWJsZSAob3IgYWxsLWZyb3pl biwgZGVwZW5kaW5nCi0JCSAqIG9uIHRoZSB2YWN1dW0gbW9kZSwpIHdoaWNoIGlzIHRyb3VibGVz b21lIHdoZW4gRnJlZVNwYWNlTWFwVmFjdXVtCi0JCSAqIHByb3BhZ2F0ZXMgdG9vIG9wdGltaXN0 aWMgZnJlZSBzcGFjZSB2YWx1ZXMgdG8gdXBwZXIgRlNNIGxheWVyczsKLQkJICogbGF0ZXIgaW5z ZXJ0ZXJzIHRyeSB0byB1c2Ugc3VjaCBwYWdlcyBvbmx5IHRvIGZpbmQgb3V0IHRoYXQgdGhleQot CQkgKiBhcmUgdW51c2FibGUuICBUaGlzIGNhbiBjYXVzZSBsb25nIHN0YWxscyB3aGVuIHRoZXJl IGFyZSBtYW55IHN1Y2gKLQkJICogcGFnZXMuCi0JCSAqCi0JCSAqIEZvcmVzdGFsbCB0aG9zZSBw cm9ibGVtcyBieSB1cGRhdGluZyBGU00ncyBpZGVhIGFib3V0IGEgcGFnZSB0aGF0Ci0JCSAqIGlz IGJlY29taW5nIGFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4uCi0JCSAqCi0JCSAqIERvIHRoaXMg cmVnYXJkbGVzcyBvZiBhIGZ1bGwtcGFnZSBpbWFnZSBiZWluZyBhcHBsaWVkLCBzaW5jZSB0aGUK LQkJICogRlNNIGRhdGEgaXMgbm90IGluIHRoZSBwYWdlIGFueXdheS4KLQkJICovCi0JCWlmICh4 bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCi0JCQlYTG9nUmVjb3JkUGFn ZVdpdGhGcmVlU3BhY2UocmxvY2F0b3IsIGJsa25vLCBzcGFjZSk7Ci0JfQotCi0JLyoKLQkgKiBF dmVuIGlmIHdlIHNraXBwZWQgdGhlIGhlYXAgcGFnZSB1cGRhdGUgZHVlIHRvIHRoZSBMU04gaW50 ZXJsb2NrLCBpdCdzCi0JICogc3RpbGwgc2FmZSB0byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFw LiAgQW55IFdBTCByZWNvcmQgdGhhdCBjbGVhcnMKLQkgKiB0aGUgdmlzaWJpbGl0eSBtYXAgYml0 IGRvZXMgc28gYmVmb3JlIGNoZWNraW5nIHRoZSBwYWdlIExTTiwgc28gYW55Ci0JICogYml0cyB0 aGF0IG5lZWQgdG8gYmUgY2xlYXJlZCB3aWxsIHN0aWxsIGJlIGNsZWFyZWQuCi0JICovCi0JaWYg KFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMCwgUkJNX1pFUk9fT05fRVJS T1IsIGZhbHNlLAotCQkJCQkJCQkJICAmdm1idWZmZXIpID09IEJMS19ORUVEU19SRURPKQotCXsK LQkJUGFnZQkJdm1wYWdlID0gQnVmZmVyR2V0UGFnZSh2bWJ1ZmZlcik7Ci0JCVJlbGF0aW9uCXJl bG47Ci0JCXVpbnQ4CQl2bWJpdHM7Ci0KLQkJLyogaW5pdGlhbGl6ZSB0aGUgcGFnZSBpZiBpdCB3 YXMgcmVhZCBhcyB6ZXJvcyAqLwotCQlpZiAoUGFnZUlzTmV3KHZtcGFnZSkpCi0JCQlQYWdlSW5p dCh2bXBhZ2UsIEJMQ0tTWiwgMCk7Ci0KLQkJLyogcmVtb3ZlIFZJU0lCSUxJVFlNQVBfWExPR18q ICovCi0JCXZtYml0cyA9IHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsK LQotCQkvKgotCQkgKiBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZCBsb2NrZWQgdGhlIGJ1 ZmZlci4gQnV0Ci0JCSAqIHZpc2liaWxpdHltYXBfc2V0IHdpbGwgaGFuZGxlIGxvY2tpbmcgaXRz ZWxmLgotCQkgKi8KLQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsK LQotCQlyZWxuID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOwotCi0JCXZpc2li aWxpdHltYXBfc2V0KHJlbG4sIGJsa25vLCBJbnZhbGlkQnVmZmVyLCBsc24sIHZtYnVmZmVyLAot CQkJCQkJICB4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sIHZtYml0cyk7Ci0KLQkJUmVs ZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci0JCUZyZWVGYWtlUmVsY2FjaGVFbnRyeShyZWxuKTsKLQl9 Ci0JZWxzZSBpZiAoQnVmZmVySXNWYWxpZCh2bWJ1ZmZlcikpCi0JCVVubG9ja1JlbGVhc2VCdWZm ZXIodm1idWZmZXIpOwotfQotCiAvKgogICogR2l2ZW4gYW4gImluZm9iaXRzIiBmaWVsZCBmcm9t IGFuIFhMb2cgcmVjb3JkLCBzZXQgdGhlIGNvcnJlY3QgYml0cyBpbiB0aGUKICAqIGdpdmVuIGlu Zm9tYXNrIGFuZCBpbmZvbWFzazIgZm9yIHRoZSB0dXBsZSB0b3VjaGVkIGJ5IHRoZSByZWNvcmQu CkBAIC03NjksOCArNjMyLDggQEAgaGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAkgKgogCSAqIER1cmluZyByZWNvdmVyeSwgaG93ZXZlciwgbm8gY29uY3Vy cmVudCB3cml0ZXJzIGV4aXN0LiBUaGVyZWZvcmUsCiAJICogdXBkYXRpbmcgdGhlIFZNIHdpdGhv dXQgaG9sZGluZyB0aGUgaGVhcCBwYWdlIGxvY2sgaXMgc2FmZSBlbm91Z2guIFRoaXMKLQkgKiBz YW1lIGFwcHJvYWNoIGlzIHRha2VuIHdoZW4gcmVwbGF5aW5nIHhsX2hlYXBfdmlzaWJsZSByZWNv cmRzIChzZWUKLQkgKiBoZWFwX3hsb2dfdmlzaWJsZSgpKS4KKwkgKiBzYW1lIGFwcHJvYWNoIGlz IHRha2VuIHdoZW4gcmVwbGF5aW5nIFhMT0dfSEVBUDJfUFJVTkUqIHJlY29yZHMgKHNlZQorCSAq IGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoKSkuCiAJICovCiAJaWYgKCh4bHJlYy0+ZmxhZ3MgJiBY TEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUKSAmJgogCQlYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRl bmRlZChyZWNvcmQsIDEsIFJCTV9aRVJPX09OX0VSUk9SLCBmYWxzZSwKQEAgLTc4MiwxMSArNjQ1 LDExIEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJ CWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAwKTsK IAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0JCQkJCQkJCSB2bWJ1ZmZlciwK LQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkgVklTSUJJTElU WU1BUF9BTExfRlJPWkVOLAotCQkJCQkJCQkgcmxvY2F0b3IpOworCQl2aXNpYmlsaXR5bWFwX3Nl dChibGtubywKKwkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJ U0lCTEUgfAorCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCisJCQkJCQkgIHJsb2Nh dG9yKTsKIAogCQlBc3NlcnQoQnVmZmVySXNEaXJ0eSh2bWJ1ZmZlcikpOwogCQlQYWdlU2V0TFNO KHZtcGFnZSwgbHNuKTsKQEAgLTEzNjcsOSArMTIzMCw2IEBAIGhlYXAyX3JlZG8oWExvZ1JlYWRl clN0YXRlICpyZWNvcmQpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoK IAkJCWhlYXBfeGxvZ19wcnVuZV9mcmVlemUocmVjb3JkKTsKIAkJCWJyZWFrOwotCQljYXNlIFhM T0dfSEVBUDJfVklTSUJMRToKLQkJCWhlYXBfeGxvZ192aXNpYmxlKHJlY29yZCk7Ci0JCQlicmVh azsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWhlYXBfeGxvZ19tdWx0aV9p bnNlcnQocmVjb3JkKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpp bmRleCBlYzU4ZjcxN2MwYi4uMTg0ZDdlOTgwNjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jCkBAIC0xMjU1LDggKzEyNTUsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQ cnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJICovCiAJCQlQYWdlU2V0QWxsVmlzaWJsZShw cnN0YXRlLnBhZ2UpOwogCQkJUGFnZUNsZWFyUHJ1bmFibGUocHJzdGF0ZS5wYWdlKTsKLQkJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyhwcnN0YXRlLmJsb2NrLCBwcnN0YXRlLnZtYnVmZmVyLCBw cnN0YXRlLm5ld192bWJpdHMsCi0JCQkJCQkJCQkgcHJzdGF0ZS5yZWxhdGlvbi0+cmRfbG9jYXRv cik7CisJCQl2aXNpYmlsaXR5bWFwX3NldChwcnN0YXRlLmJsb2NrLCBwcnN0YXRlLnZtYnVmZmVy LCBwcnN0YXRlLm5ld192bWJpdHMsCisJCQkJCQkJICBwcnN0YXRlLnJlbGF0aW9uLT5yZF9sb2Nh dG9yKTsKIAkJfQogCiAJCU1hcmtCdWZmZXJEaXJ0eShwcnN0YXRlLmJ1ZmZlcik7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMTQ1MWM5NDM2NDQuLjhiZDE3OGFlN2U2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xOTI2LDExICsxOTI2LDExIEBA IGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBC bG9ja051bWJlciBibGtubywKIAogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CiAJCQlQYWdl Q2xlYXJQcnVuYWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywK LQkJCQkJCQkJCSB2bWJ1ZmZlciwKLQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxF IHwKLQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCi0JCQkJCQkJCQkgdmFjcmVs LT5yZWwtPnJkX2xvY2F0b3IpOworCQkJdmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sCisJCQkJCQkJ ICB2bWJ1ZmZlciwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJ CSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJCSAgdmFjcmVsLT5yZWwtPnJkX2xv Y2F0b3IpOwogCiAJCQkvKgogCQkJICogRW1pdCBXQUwgZm9yIHNldHRpbmcgUERfQUxMX1ZJU0lC TEUgb24gdGhlIGhlYXAgcGFnZSBhbmQKQEAgLTI3OTQsOSArMjc5NCw5IEBAIGxhenlfdmFjdXVt X2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIg YnVmZmVyLAogCQkgKi8KIAkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CiAJCVBhZ2VDbGVhclBy dW5hYmxlKHBhZ2UpOwotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0JCQkJCQkJ CSB2bWJ1ZmZlciwgdm1mbGFncywKLQkJCQkJCQkJIHZhY3JlbC0+cmVsLT5yZF9sb2NhdG9yKTsK KwkJdmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzLAor CQkJCQkJICB2YWNyZWwtPnJlbC0+cmRfbG9jYXRvcik7CiAJCWNvbmZsaWN0X3hpZCA9IG5ld2Vz dF9saXZlX3hpZDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zp c2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpp bmRleCAzMDQ3YmQ0NmRlZi4uZmM3NGUzOWUwNjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 aXNpYmlsaXR5bWFwLmMKQEAgLTE0LDggKzE0LDcgQEAKICAqCQl2aXNpYmlsaXR5bWFwX2NsZWFy ICAtIGNsZWFyIGJpdHMgZm9yIG9uZSBwYWdlIGluIHRoZSB2aXNpYmlsaXR5IG1hcAogICoJCXZp c2liaWxpdHltYXBfcGluCSAtIHBpbiBhIG1hcCBwYWdlIGZvciBzZXR0aW5nIGEgYml0CiAgKgkJ dmlzaWJpbGl0eW1hcF9waW5fb2sgLSBjaGVjayB3aGV0aGVyIGNvcnJlY3QgbWFwIHBhZ2UgaXMg YWxyZWFkeSBwaW5uZWQKLSAqCQl2aXNpYmlsaXR5bWFwX3NldAkgLSBzZXQgYml0KHMpIGluIGEg cHJldmlvdXNseSBwaW5uZWQgcGFnZSBhbmQgbG9nCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXRfdm1i aXRzIC0gc2V0IGJpdChzKSBpbiBhIHBpbm5lZCBwYWdlCisgKgkJdmlzaWJpbGl0eW1hcF9zZXQJ IC0gc2V0IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UKICAqCQl2aXNpYmlsaXR5 bWFwX2dldF9zdGF0dXMgLSBnZXQgc3RhdHVzIG9mIGJpdHMKICAqCQl2aXNpYmlsaXR5bWFwX2Nv dW50ICAtIGNvdW50IG51bWJlciBvZiBiaXRzIHNldCBpbiB2aXNpYmlsaXR5IG1hcAogICoJCXZp c2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZSAtCkBAIC0yMjAsMTEyICsyMTksMTEgQEAgdmlz aWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZtYnVmKQogCXJl dHVybiBCdWZmZXJJc1ZhbGlkKHZtYnVmKSAmJiBCdWZmZXJHZXRCbG9ja051bWJlcih2bWJ1Zikg PT0gbWFwQmxvY2s7CiB9CiAKLS8qCi0gKgl2aXNpYmlsaXR5bWFwX3NldCAtIHNldCBiaXQocykg b24gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlCi0gKgotICogcmVjcHRyIGlzIHRoZSBMU04gb2Yg dGhlIFhMT0cgcmVjb3JkIHdlJ3JlIHJlcGxheWluZywgaWYgd2UncmUgaW4gcmVjb3ZlcnksCi0g KiBvciBJbnZhbGlkWExvZ1JlY1B0ciBpbiBub3JtYWwgcnVubmluZy4gIFRoZSBWTSBwYWdlIExT TiBpcyBhZHZhbmNlZCB0byB0aGUKLSAqIG9uZSBwcm92aWRlZDsgaW4gbm9ybWFsIHJ1bm5pbmcs IHdlIGdlbmVyYXRlIGEgbmV3IFhMT0cgcmVjb3JkIGFuZCBzZXQgdGhlCi0gKiBwYWdlIExTTiB0 byB0aGF0IHZhbHVlICh0aG91Z2ggdGhlIGhlYXAgcGFnZSdzIExTTiBtYXkgKm5vdCogYmUgdXBk YXRlZDsKLSAqIHNlZSBiZWxvdykuICBjdXRvZmZfeGlkIGlzIHRoZSBsYXJnZXN0IHhtaW4gb24g dGhlIHBhZ2UgYmVpbmcgbWFya2VkCi0gKiBhbGwtdmlzaWJsZTsgaXQgaXMgbmVlZGVkIGZvciBI b3QgU3RhbmRieSwgYW5kIGNhbiBiZSBJbnZhbGlkVHJhbnNhY3Rpb25JZAotICogaWYgdGhlIHBh Z2UgY29udGFpbnMgbm8gdHVwbGVzLiAgSXQgY2FuIGFsc28gYmUgc2V0IHRvIEludmFsaWRUcmFu c2FjdGlvbklkCi0gKiB3aGVuIGEgcGFnZSB0aGF0IGlzIGFscmVhZHkgYWxsLXZpc2libGUgaXMg YmVpbmcgbWFya2VkIGFsbC1mcm96ZW4uCi0gKgotICogQ2FsbGVyIGlzIGV4cGVjdGVkIHRvIHNl dCB0aGUgaGVhcCBwYWdlJ3MgUERfQUxMX1ZJU0lCTEUgYml0IGJlZm9yZSBjYWxsaW5nCi0gKiB0 aGlzIGZ1bmN0aW9uLiBFeGNlcHQgaW4gcmVjb3ZlcnksIGNhbGxlciBzaG91bGQgYWxzbyBwYXNz IHRoZSBoZWFwCi0gKiBidWZmZXIuIFdoZW4gY2hlY2tzdW1zIGFyZSBlbmFibGVkIGFuZCB3ZSdy ZSBub3QgaW4gcmVjb3ZlcnksIHdlIG11c3QgYWRkCi0gKiB0aGUgaGVhcCBidWZmZXIgdG8gdGhl IFdBTCBjaGFpbiB0byBwcm90ZWN0IGl0IGZyb20gYmVpbmcgdG9ybi4KLSAqCi0gKiBZb3UgbXVz dCBwYXNzIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNvcnJlY3QgbWFwIHBhZ2UgdG8gdGhpcyBm dW5jdGlvbi4KLSAqIENhbGwgdmlzaWJpbGl0eW1hcF9waW4gZmlyc3QgdG8gcGluIHRoZSByaWdo dCBvbmUuIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBkbwotICogYW55IEkvTy4KLSAqLwotdm9pZAot dmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZm ZXIgaGVhcEJ1ZiwKLQkJCQkgIFhMb2dSZWNQdHIgcmVjcHRyLCBCdWZmZXIgdm1CdWYsIFRyYW5z YWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkgIHVpbnQ4IGZsYWdzKQotewotCUJsb2NrTnVtYmVy IG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxrKTsKLQl1aW50MzIJCW1hcEJ5 dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7Ci0JdWludDgJCW1hcE9mZnNldCA9IEhF QVBCTEtfVE9fT0ZGU0VUKGhlYXBCbGspOwotCVBhZ2UJCXBhZ2U7Ci0JdWludDgJICAgKm1hcDsK LQl1aW50OAkJc3RhdHVzOwotCi0jaWZkZWYgVFJBQ0VfVklTSUJJTElUWU1BUAotCWVsb2coREVC VUcxLCAidm1fc2V0IGZsYWdzIDB4JTAyWCBmb3IgJXMgJWQiLAotCQkgZmxhZ3MsIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCksIGhlYXBCbGspOwotI2VuZGlmCi0KLQlBc3NlcnQoSW5SZWNv dmVyeSB8fCAhWExvZ1JlY1B0cklzVmFsaWQocmVjcHRyKSk7Ci0JQXNzZXJ0KEluUmVjb3Zlcnkg fHwgUGFnZUlzQWxsVmlzaWJsZShCdWZmZXJHZXRQYWdlKGhlYXBCdWYpKSk7Ci0JQXNzZXJ0KChm bGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0gZmxhZ3MpOwotCi0JLyogTXVzdCBu ZXZlciBzZXQgYWxsX2Zyb3plbiBiaXQgd2l0aG91dCBhbHNvIHNldHRpbmcgYWxsX3Zpc2libGUg Yml0ICovCi0JQXNzZXJ0KGZsYWdzICE9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0KLQkv KiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGhlYXAgcGFnZSBwaW5uZWQsIGlmIHByZXNl bnQgKi8KLQlpZiAoQnVmZmVySXNWYWxpZChoZWFwQnVmKSAmJiBCdWZmZXJHZXRCbG9ja051bWJl cihoZWFwQnVmKSAhPSBoZWFwQmxrKQotCQllbG9nKEVSUk9SLCAid3JvbmcgaGVhcCBidWZmZXIg cGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0Iik7Ci0KLQlBc3NlcnQoIUJ1ZmZlcklzVmFsaWQo aGVhcEJ1ZikgfHwKLQkJICAgQnVmZmVySXNMb2NrZWRCeU1lSW5Nb2RlKGhlYXBCdWYsIEJVRkZF Ul9MT0NLX0VYQ0xVU0lWRSkpOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBW TSBwYWdlIHBpbm5lZCAqLwotCWlmICghQnVmZmVySXNWYWxpZCh2bUJ1ZikgfHwgQnVmZmVyR2V0 QmxvY2tOdW1iZXIodm1CdWYpICE9IG1hcEJsb2NrKQotCQllbG9nKEVSUk9SLCAid3JvbmcgVk0g YnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JcGFnZSA9IEJ1ZmZlckdl dFBhZ2Uodm1CdWYpOwotCW1hcCA9ICh1aW50OCAqKSBQYWdlR2V0Q29udGVudHMocGFnZSk7Ci0J TG9ja0J1ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKLQotCXN0YXR1cyA9ICht YXBbbWFwQnl0ZV0gPj4gbWFwT2Zmc2V0KSAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsKLQlp ZiAoZmxhZ3MgIT0gc3RhdHVzKQotCXsKLQkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7Ci0KLQkJbWFw W21hcEJ5dGVdIHw9IChmbGFncyA8PCBtYXBPZmZzZXQpOwotCQlNYXJrQnVmZmVyRGlydHkodm1C dWYpOwotCi0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCi0JCXsKLQkJCWlmICghWExvZ1Jl Y1B0cklzVmFsaWQocmVjcHRyKSkKLQkJCXsKLQkJCQlBc3NlcnQoIUluUmVjb3ZlcnkpOwotCQkJ CXJlY3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLCBoZWFwQnVmLCB2bUJ1ZiwgY3V0b2ZmX3hp ZCwgZmxhZ3MpOwotCi0JCQkJLyoKLQkJCQkgKiBJZiBkYXRhIGNoZWNrc3VtcyBhcmUgZW5hYmxl ZCAob3Igd2FsX2xvZ19oaW50cz1vbiksIHdlCi0JCQkJICogbmVlZCB0byBwcm90ZWN0IHRoZSBo ZWFwIHBhZ2UgZnJvbSBiZWluZyB0b3JuLgotCQkJCSAqCi0JCQkJICogSWYgbm90LCB0aGVuIHdl IG11c3QgKm5vdCogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uIEluCi0JCQkJICogdGhpcyBj YXNlLCB0aGUgRlBJIGZvciB0aGUgaGVhcCBwYWdlIHdhcyBvbWl0dGVkIGZyb20gdGhlCi0JCQkJ ICogV0FMIHJlY29yZCBpbnNlcnRlZCBhYm92ZSwgc28gaXQgd291bGQgYmUgaW5jb3JyZWN0IHRv Ci0JCQkJICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCi0JCQkJICovCi0JCQkJaWYgKFhM b2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJCQl7Ci0JCQkJCVBhZ2UJCWhlYXBQYWdlID0gQnVmZmVy R2V0UGFnZShoZWFwQnVmKTsKLQotCQkJCQlQYWdlU2V0TFNOKGhlYXBQYWdlLCByZWNwdHIpOwot CQkJCX0KLQkJCX0KLQkJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRyKTsKLQkJfQotCi0JCUVORF9D UklUX1NFQ1RJT04oKTsKLQl9Ci0KLQlMb2NrQnVmZmVyKHZtQnVmLCBCVUZGRVJfTE9DS19VTkxP Q0spOwotfQotCiAvKgogICogU2V0IFZNICh2aXNpYmlsaXR5IG1hcCkgZmxhZ3MgaW4gdGhlIFZN IGJsb2NrIGluIHZtQnVmLgogICoKICAqIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIGNh bGxlcnMgdGhhdCBsb2cgVk0gY2hhbmdlcyB0b2dldGhlcgogICogd2l0aCB0aGUgaGVhcCBwYWdl IG1vZGlmaWNhdGlvbnMgdGhhdCByZW5kZXJlZCB0aGUgcGFnZSBhbGwtdmlzaWJsZS4KLSAqIENh bGxlcnMgdGhhdCBsb2cgVk0gY2hhbmdlcyBzZXBhcmF0ZWx5IHNob3VsZCB1c2UgdmlzaWJpbGl0 eW1hcF9zZXQoKS4KICAqCiAgKiB2bUJ1ZiBtdXN0IGJlIHBpbm5lZCBhbmQgZXhjbHVzaXZlbHkg bG9ja2VkLCBhbmQgaXQgbXVzdCBjb3ZlciB0aGUgVk0gYml0cwogICogY29ycmVzcG9uZGluZyB0 byBoZWFwQmxrLgpAQCAtMzQxLDkgKzIzOSw5IEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAgKiBybG9jYXRvciBp cyB1c2VkIG9ubHkgZm9yIGRlYnVnZ2luZyBtZXNzYWdlcy4KICAqLwogdm9pZAotdmlzaWJpbGl0 eW1hcF9zZXRfdm1iaXRzKEJsb2NrTnVtYmVyIGhlYXBCbGssCi0JCQkJCQkgQnVmZmVyIHZtQnVm LCB1aW50OCBmbGFncywKLQkJCQkJCSBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcikKK3Zp c2liaWxpdHltYXBfc2V0KEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJICBCdWZmZXIgdm1CdWYs IHVpbnQ4IGZsYWdzLAorCQkJCSAgY29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpCiB7CiAJ QmxvY2tOdW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxLX1RPX01BUEJMT0NLKGhlYXBCbGspOwogCXVp bnQzMgkJbWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQQllURShoZWFwQmxrKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggMDJhZTkxNjUzYzEuLjc1YWU2ZjlkMzc1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpAQCAtMzQ5LDEzICszNDksNiBA QCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJ CX0KIAkJfQogCX0KLQllbHNlIGlmIChpbmZvID09IFhMT0dfSEVBUDJfVklTSUJMRSkKLQl7Ci0J CXhsX2hlYXBfdmlzaWJsZSAqeGxyZWMgPSAoeGxfaGVhcF92aXNpYmxlICopIHJlYzsKLQotCQlh cHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOiAldSwgZmxhZ3M6 IDB4JTAyWCIsCi0JCQkJCQkgeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB4bHJlYy0+ ZmxhZ3MpOwotCX0KIAllbHNlIGlmIChpbmZvID09IFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUKQog CXsKIAkJeGxfaGVhcF9tdWx0aV9pbnNlcnQgKnhscmVjID0gKHhsX2hlYXBfbXVsdGlfaW5zZXJ0 ICopIHJlYzsKQEAgLTQ2MSw5ICs0NTQsNiBAQCBoZWFwMl9pZGVudGlmeSh1aW50OCBpbmZvKQog CQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVA6CiAJCQlpZCA9ICJQUlVORV9W QUNVVU1fQ0xFQU5VUCI7CiAJCQlicmVhazsKLQkJY2FzZSBYTE9HX0hFQVAyX1ZJU0lCTEU6Ci0J CQlpZCA9ICJWSVNJQkxFIjsKLQkJCWJyZWFrOwogCQljYXNlIFhMT0dfSEVBUDJfTVVMVElfSU5T RVJUOgogCQkJaWQgPSAiTVVMVElfSU5TRVJUIjsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggMjFmMDM4NjRhNjYuLjNjMDI3YmNiMmY3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTQ0OCw3ICs0NDgs NiBAQCBoZWFwMl9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3Jk QnVmZmVyICpidWYpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1M6CiAJCWNhc2Ug WExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTjoKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZB Q1VVTV9DTEVBTlVQOgotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKIAkJY2FzZSBYTE9HX0hF QVAyX0xPQ0tfVVBEQVRFRDoKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c3RhbmRieS5jCmluZGV4IGYzYWQ5MGM3YzdhLi42NmVkNTFhOGFhMSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3N0YW5kYnkuYwpAQCAtNDc3LDEyICs0NzcsMTIgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKIAkg KiBJZiB3ZSBnZXQgcGFzc2VkIEludmFsaWRUcmFuc2FjdGlvbklkIHRoZW4gd2UgZG8gbm90aGlu ZyAobm8gY29uZmxpY3QpLgogCSAqCiAJICogVGhpcyBjYW4gaGFwcGVuIHdoZW4gcmVwbGF5aW5n IGFscmVhZHktYXBwbGllZCBXQUwgcmVjb3JkcyBhZnRlciBhCi0JICogc3RhbmRieSBjcmFzaCBv ciByZXN0YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhbiBYTE9HX0hFQVAyX1ZJU0lCTEUKLQkgKiBy ZWNvcmQgdGhhdCBtYXJrcyBhcyBmcm96ZW4gYSBwYWdlIHdoaWNoIHdhcyBhbHJlYWR5IGFsbC12 aXNpYmxlLiAgSXQncwotCSAqIGFsc28gcXVpdGUgY29tbW9uIHdpdGggcmVjb3JkcyBnZW5lcmF0 ZWQgZHVyaW5nIGluZGV4IGRlbGV0aW9uCi0JICogKG9yaWdpbmFsIGV4ZWN1dGlvbiBvZiB0aGUg ZGVsZXRpb24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3ZlcnkgY29uZmxpY3QKLQkgKiB3aGljaCBp cyBzdWZmaWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3BlcmF0aW9uIG11c3QgdGFrZSBwbGFjZSBi ZWZvcmUKLQkgKiByZXBsYXkgb2YgdGhlIGRlbGV0aW9uIHJlY29yZCBpdHNlbGYpLgorCSAqIHN0 YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Igd2hlbiByZXBsYXlpbmcgYSByZWNvcmQgdGhhdCBt YXJrcyBhcworCSAqIGZyb3plbiBhIHBhZ2Ugd2hpY2ggd2FzIGFscmVhZHkgbWFya2VkIGFsbC12 aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5CisJICogbWFwLiAgSXQncyBhbHNvIHF1aXRlIGNvbW1v biB3aXRoIHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRleAorCSAqIGRlbGV0aW9uIChvcmln aW5hbCBleGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiByZWFzb24gdGhhdCBhIHJlY292ZXJ5 CisJICogY29uZmxpY3Qgd2hpY2ggaXMgc3VmZmljaWVudCBmb3IgdGhlIGRlbGV0aW9uIG9wZXJh dGlvbiBtdXN0IHRha2UgcGxhY2UKKwkgKiBiZWZvcmUgcmVwbGF5IG9mIHRoZSBkZWxldGlvbiBy ZWNvcmQgaXRzZWxmKS4KIAkgKi8KIAlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uKSkKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbV94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAppbmRl eCBjZTM1NjZiYTk0OS4uNWVlZDU2N2E4ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW1feGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCkBA IC02MCw3ICs2MCw2IEBACiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfT05fQUNDRVNTCQkweDEw CiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU4JMHgyMAogI2RlZmluZSBYTE9H X0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQCTB4MzAKLSNkZWZpbmUgWExPR19IRUFQMl9WSVNJ QkxFCQkweDQwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUIDB4NTAKICNkZWZpbmUg WExPR19IRUFQMl9MT0NLX1VQREFURUQgMHg2MAogI2RlZmluZSBYTE9HX0hFQVAyX05FV19DSUQJ CTB4NzAKQEAgLTQ0MywyMCArNDQyLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9pbnBsYWNl CiAKICNkZWZpbmUgTWluU2l6ZU9mSGVhcElucGxhY2UJKG9mZnNldG9mKHhsX2hlYXBfaW5wbGFj ZSwgbm1zZ3MpICsgc2l6ZW9mKGludCkpCiAKLS8qCi0gKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0 byBrbm93IGFib3V0IHNldHRpbmcgYSB2aXNpYmlsaXR5IG1hcCBiaXQKLSAqCi0gKiBCYWNrdXAg YmxrIDA6IHZpc2liaWxpdHkgbWFwIGJ1ZmZlcgotICogQmFja3VwIGJsayAxOiBoZWFwIGJ1ZmZl cgotICovCi10eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3Zpc2libGUKLXsKLQlUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwotCXVpbnQ4CQlmbGFnczsKLX0geGxfaGVhcF92aXNp YmxlOwotCi0jZGVmaW5lIFNpemVPZkhlYXBWaXNpYmxlIChvZmZzZXRvZih4bF9oZWFwX3Zpc2li bGUsIGZsYWdzKSArIHNpemVvZih1aW50OCkpCi0KIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfbmV3 X2NpZAogewogCS8qCkBAIC01MDAsMTEgKzQ4NSw2IEBAIGV4dGVybiB2b2lkIGhlYXAyX2Rlc2Mo U3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiBjb25zdCBj aGFyICpoZWFwMl9pZGVudGlmeSh1aW50OCBpbmZvKTsKIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19s b2dpY2FsX3Jld3JpdGUoWExvZ1JlYWRlclN0YXRlICpyKTsKIAotZXh0ZXJuIFhMb2dSZWNQdHIg bG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKLQkJCQkJ CQkJICAgQnVmZmVyIHZtX2J1ZmZlciwKLQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJICAgdWludDggdm1mbGFncyk7Ci0KIC8qIGluIGhl YXBkZXNjLmMsIHNvIGl0IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBmcm9udGVuZC9iYWNrZW5kIGNv ZGUgKi8KIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXpl KGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCQkJCQkJCQkJCQkJICAgaW50ICpucGxhbnMs IHhsaHBfZnJlZXplX3BsYW4gKipwbGFucywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy92aXNpYmlsaXR5bWFwLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCmlu ZGV4IGEwMTY2YzViNDEwLi4wMDFhZmIwMzdmMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3Zpc2liaWxpdHltYXAuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1h cC5oCkBAIC0xNSw3ICsxNSw2IEBACiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBfSAogCiAjaW5jbHVk ZSAiYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZz LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9ibG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9yZWxmaWxlbG9jYXRvci5oIgpAQCAtMzIsMTUgKzMxLDkgQEAg ZXh0ZXJuIGJvb2wgdmlzaWJpbGl0eW1hcF9jbGVhcihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGhlYXBCbGssCiBleHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX3BpbihSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIGhlYXBCbGssCiAJCQkJCQkJICBCdWZmZXIgKnZtYnVmKTsKIGV4dGVybiBib29s IHZpc2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1Zik7 Ci1leHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsCi0JCQkJCQkJICBC bG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKLQkJCQkJCQkgIFhMb2dSZWNQdHIg cmVjcHRyLAotCQkJCQkJCSAgQnVmZmVyIHZtQnVmLAotCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBj dXRvZmZfeGlkLAotCQkJCQkJCSAgdWludDggZmxhZ3MpOwotZXh0ZXJuIHZvaWQgdmlzaWJpbGl0 eW1hcF9zZXRfdm1iaXRzKEJsb2NrTnVtYmVyIGhlYXBCbGssCi0JCQkJCQkJCQkgQnVmZmVyIHZt QnVmLCB1aW50OCBmbGFncywKLQkJCQkJCQkJCSBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRv cik7CitleHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX3NldChCbG9ja051bWJlciBoZWFwQmxrLAor CQkJCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKKwkJCQkJCQkgIGNvbnN0IFJlbEZp bGVMb2NhdG9yIHJsb2NhdG9yKTsKIGV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX2dldF9zdGF0 dXMoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgKnZtYnVmKTsKIGV4 dGVybiB2b2lkIHZpc2liaWxpdHltYXBfY291bnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciAq YWxsX3Zpc2libGUsIEJsb2NrTnVtYmVyICphbGxfZnJvemVuKTsKIGV4dGVybiBCbG9ja051bWJl ciB2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaAppbmRleCA4OTE1M2IzY2Q5YS4uZTU3OTRjODU1OWUg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCkBAIC0yMSwxNCArMjEsNSBA QAogI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4JMHgwMgogI2RlZmluZSBWSVNJQklM SVRZTUFQX1ZBTElEX0JJVFMJMHgwMwkvKiBPUiBvZiBhbGwgdmFsaWQgdmlzaWJpbGl0eW1hcAog CQkJCQkJCQkJCQkgKiBmbGFncyBiaXRzICovCi0vKgotICogVG8gZGV0ZWN0IHJlY292ZXJ5IGNv bmZsaWN0cyBkdXJpbmcgbG9naWNhbCBkZWNvZGluZyBvbiBhIHN0YW5kYnksIHdlIG5lZWQKLSAq IHRvIGtub3cgaWYgYSB0YWJsZSBpcyBhIHVzZXIgY2F0YWxvZyB0YWJsZS4gRm9yIHRoYXQgd2Ug YWRkIGFuIGFkZGl0aW9uYWwKLSAqIGJpdCBpbnRvIHhsX2hlYXBfdmlzaWJsZS5mbGFncywgaW4g YWRkaXRpb24gdG8gdGhlIGFib3ZlLgotICoKLSAqIE5COiBWSVNJQklMSVRZTUFQX1hMT0dfKiBt YXkgbm90IGJlIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCgpLgotICovCi0jZGVmaW5lIFZJ U0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JFTAkweDA0Ci0jZGVmaW5lIFZJU0lCSUxJVFlNQVBf WExPR19WQUxJRF9CSVRTCShWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMgfCBWSVNJQklMSVRZTUFQ X1hMT0dfQ0FUQUxPR19SRUwpCiAKICNlbmRpZgkJCQkJCQkvKiBWSVNJQklMSVRZTUFQREVGU19I ICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDMyNTA1NjRkNGZmLi4zYmJiZGM2Mjc0 MyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTQzNTcsNyArNDM1Nyw2IEBAIHhsX2hl YXBfcHJ1bmUKIHhsX2hlYXBfcmV3cml0ZV9tYXBwaW5nCiB4bF9oZWFwX3RydW5jYXRlCiB4bF9o ZWFwX3VwZGF0ZQoteGxfaGVhcF92aXNpYmxlCiB4bF9pbnZhbGlkX3BhZ2UKIHhsX2ludmFsaWRf cGFnZV9rZXkKIHhsX2ludmFsaWRhdGlvbnMKLS0gCjIuNDMuMAoK --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0010-Initialize-missing-fields-in-CreateExecutorState.patch" Content-Disposition: attachment; filename="v36-0010-Initialize-missing-fields-in-CreateExecutorState.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfiq6w89 RnJvbSA4MWUyZmZjMTE5ZTA0MDllNDBkYTI2YjVhZDZjZDE0NWVlY2M2YWMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTdW4sIDEgTWFyIDIwMjYgMTY6NDg6MTkgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzNiAxMC8xNl0gSW5pdGlhbGl6ZSBtaXNzaW5nIGZpZWxkcyBpbiBDcmVhdGVFeGVjdXRv clN0YXRlKCkKCmQ0N2NiZjQ3NGVjYmQ0NDlhNCBmb3Jnb3QgdG8gaW5pdGlhbGl6ZSBhIGZldyBm aWVsZHMgaXQgaW50cm9kdWNlZCBpbgp0aGUgRVN0YXRlLCBzbyBkbyB0aGF0IG5vdy4KCkF1dGhv cjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1V0aWxzLmMgfCAzICsrKwogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygr KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggYTc5NTVlNDc2ZjkuLmNkNGQ1NDUyY2Zi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAtMTE5LDYgKzExOSw5IEBAIENyZWF0ZUV4 ZWN1dG9yU3RhdGUodm9pZCkKIAllc3RhdGUtPmVzX3J0ZXBlcm1pbmZvcyA9IE5JTDsKIAllc3Rh dGUtPmVzX3BsYW5uZWRzdG10ID0gTlVMTDsKIAllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3Mg PSBOSUw7CisJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcyA9IE5JTDsKKwllc3RhdGUtPmVz X3BhcnRfcHJ1bmVfcmVzdWx0cyA9IE5JTDsKKwllc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9 IE5VTEw7CiAKIAllc3RhdGUtPmVzX2p1bmtGaWx0ZXIgPSBOVUxMOwogCi0tIAoyLjQzLjAKCg== --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0011-Track-which-relations-are-modified-by-a-query.patch" Content-Disposition: attachment; filename="v36-0011-Track-which-relations-are-modified-by-a-query.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfiqa9010 RnJvbSA5ZjcwOTgxMTFkODUyMGE5NTViMGI0ZDZkNGQ2MmM0YTc5YTU0OTdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MDc6MjQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzNiAxMS8xNl0gVHJhY2sgd2hpY2ggcmVsYXRpb25zIGFyZSBtb2RpZmllZCBieSBhIHF1 ZXJ5CgpTYXZlIHRoZSByZWxpZHMgaW4gYSBiaXRtYXAgaW4gdGhlIGVzdGF0ZS4gQSBsYXRlciBj b21taXQgd2lsbCBwYXNzIHRoaXMKaW5mb3JtYXRpb24gZG93biB0byBzY2FuIG5vZGVzIHRvIGNv bnRyb2wgd2hldGhlciBvciBub3QgdGhlIHNjYW4gYWxsb3dzCnNldHRpbmcgdGhlIHZpc2liaWxp dHkgbWFwIHdoaWxlIG9uLWFjY2VzcyBwcnVuaW5nLiBXZSBkb24ndCB3YW50IHRvIHNldAp0aGUg dmlzaWJpbGl0eSBtYXAgaWYgdGhlIHF1ZXJ5IGlzIGp1c3QgZ29pbmcgdG8gbW9kaWZ5IHRoZSBw YWdlCmltbWVkaWF0ZWx5IGFmdGVyLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmll cGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFu YXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4K RGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9GNUNERDFCNS02MjhDLTQ0QTEtOUY4NS0z OTU4QzYyNkY2QTklNDBnbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jICB8IDE4ICsrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMgfCAzMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjdXRvci5oICB8ICAzICsrKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmggICAgfCAgNiArKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jCmluZGV4IGJmZDNlYmM2MDFlLi41N2RjZGVkYTA1NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jCkBAIC05MjAsNiArOTIwLDEwIEBAIEluaXRQbGFuKFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJCQlicmVhazsKIAkJCX0KIAorCQkJLyogSWYg aXQgaGFzIGEgcm93bWFyaywgdGhlIHJlbGF0aW9uIG1heSBiZSBtb2RpZmllZCAqLworCQkJZXN0 YXRlLT5lc19tb2RpZmllZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihlc3RhdGUtPmVzX21vZGlm aWVkX3JlbGlkcywKKwkJCQkJCQkJCQkJCQkJcmMtPnJ0aSk7CisKIAkJCS8qIENoZWNrIHRoYXQg cmVsYXRpb24gaXMgYSBsZWdhbCB0YXJnZXQgZm9yIG1hcmtpbmcgKi8KIAkJCWlmIChyZWxhdGlv bikKIAkJCQlDaGVja1ZhbGlkUm93TWFya1JlbChyZWxhdGlvbiwgcmMtPm1hcmtUeXBlKTsKQEAg LTk5MCw2ICs5OTQsMTAgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxh Z3MpCiAJICovCiAJcGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHBsYW4sIGVzdGF0ZSwgZWZsYWdz KTsKIAorI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlDcm9zc0NoZWNrTW9kaWZpZWRSZWxp ZHMoZXN0YXRlKTsKKyNlbmRpZgorCiAJLyoKIAkgKiBHZXQgdGhlIHR1cGxlIGRlc2NyaXB0b3Ig ZGVzY3JpYmluZyB0aGUgdHlwZSBvZiB0dXBsZXMgdG8gcmV0dXJuLgogCSAqLwpAQCAtMzAzMyw2 ICszMDQxLDEyIEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAq cGxhblRyZWUpCiAJcmNlc3RhdGUtPmVzX291dHB1dF9jaWQgPSBwYXJlbnRlc3RhdGUtPmVzX291 dHB1dF9jaWQ7CiAJcmNlc3RhdGUtPmVzX3F1ZXJ5RW52ID0gcGFyZW50ZXN0YXRlLT5lc19xdWVy eUVudjsKIAorCS8qCisJICogVXNlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIHN0YWxlIHBvaW50ZXJz IHNpbmNlIGJtc19hZGRfbWVtYmVyKCkgbWF5CisJICogcmVhbGxvY2F0ZSB0aGUgYml0bWFwLgor CSAqLworCXJjZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMgPSBibXNfY29weShwYXJlbnRlc3Rh dGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CisKIAkvKgogCSAqIFJlc3VsdFJlbEluZm9zIG5lZWRl ZCBieSBzdWJwbGFucyBhcmUgaW5pdGlhbGl6ZWQgZnJvbSBzY3JhdGNoIHdoZW4gdGhlCiAJICog c3VicGxhbnMgdGhlbXNlbHZlcyBhcmUgaW5pdGlhbGl6ZWQuCkBAIC0zMTY1LDYgKzMxNzksMTAg QEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSkK IAkgKi8KIAllcHFzdGF0ZS0+cmVjaGVja3BsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShwbGFuVHJl ZSwgcmNlc3RhdGUsIDApOwogCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCUNyb3NzQ2hl Y2tNb2RpZmllZFJlbGlkcyhyY2VzdGF0ZSk7CisjZW5kaWYKKwogCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjb250ZXh0KTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCBjZDRk NTQ1MmNmYi4uMGY4MzY0Yjg3MjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xMjMs NiArMTIzLDggQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0ZS0+ZXNfcGFydF9w cnVuZV9yZXN1bHRzID0gTklMOwogCWVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzID0gTlVMTDsK IAorCWVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzID0gTlVMTDsKKwogCWVzdGF0ZS0+ZXNfanVu a0ZpbHRlciA9IE5VTEw7CiAKIAllc3RhdGUtPmVzX291dHB1dF9jaWQgPSAoQ29tbWFuZElkKSAw OwpAQCAtODcxLDYgKzg3MywzMyBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAq ZXN0YXRlLCBJbmRleCBydGksIGJvb2wgaXNSZXN1bHRSZWwpCiAJcmV0dXJuIHJlbDsKIH0KIAor I2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKy8qCisgKiBBc3NlcnQgdGhhdCBlc19tb2RpZmll ZF9yZWxpZHMgaW5jbHVkZXMgYWxsIHBvdGVudGlhbGx5IG1vZGlmaWVkIFJUCisgKiBpbmRleGVz LgorICovCit2b2lkCitDcm9zc0NoZWNrTW9kaWZpZWRSZWxpZHMoRVN0YXRlICplc3RhdGUpCit7 CisJQml0bWFwc2V0ICAqZXhwZWN0ZWQgPSBOVUxMOworCUxpc3RDZWxsICAgKmxjOworCisJZm9y ZWFjaChsYywgZXN0YXRlLT5lc19vcGVuZWRfcmVzdWx0X3JlbGF0aW9ucykKKwl7CisJCVJlc3Vs dFJlbEluZm8gKnJyaSA9IGxmaXJzdF9ub2RlKFJlc3VsdFJlbEluZm8sIGxjKTsKKworCQlleHBl Y3RlZCA9IGJtc19hZGRfbWVtYmVyKGV4cGVjdGVkLCBycmktPnJpX1JhbmdlVGFibGVJbmRleCk7 CisJfQorCWlmIChlc3RhdGUtPmVzX3Jvd21hcmtzKQorCXsKKwkJZm9yIChJbmRleCBydGkgPSAx OyBydGkgPD0gZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXplOyBydGkrKykKKwkJCWlmIChlc3Rh dGUtPmVzX3Jvd21hcmtzW3J0aSAtIDFdICE9IE5VTEwpCisJCQkJZXhwZWN0ZWQgPSBibXNfYWRk X21lbWJlcihleHBlY3RlZCwgcnRpKTsKKwl9CisJQXNzZXJ0KGJtc19pc19zdWJzZXQoZXhwZWN0 ZWQsIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSk7Cit9CisjZW5kaWYKKwogLyoKICAqIEV4 ZWNJbml0UmVzdWx0UmVsYXRpb24KICAqCQlPcGVuIHJlbGF0aW9uIGdpdmVuIGJ5IHRoZSBwYXNz ZWQtaW4gUlQgaW5kZXggYW5kIGZpbGwgaXRzCkBAIC04OTYsNiArOTI1LDggQEAgRXhlY0luaXRS ZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywKIAkJZXN0YXRlLT5lc19yZXN1bHRfcmVsYXRpb25zID0gKFJlc3VsdFJlbEluZm8gKiopCiAJ CQlwYWxsb2MwKGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGVfc2l6ZSAqIHNpemVvZihSZXN1bHRSZWxJ bmZvICopKTsKIAllc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbnNbcnRpIC0gMV0gPSByZXN1bHRS ZWxJbmZvOworCWVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXIoZXN0 YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJCQkJCQkJCQlydGkpOwogCiAJLyoKIAkgKiBT YXZpbmcgaW4gdGhlIGxpc3QgYWxsb3dzIHRvIGF2b2lkIG5lZWRsZXNzbHkgdHJhdmVyc2luZyB0 aGUgd2hvbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9z cmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IGQ0NmJhNTk4OTVkLi4wNWYwMzJi YWVhYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9z cmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC03MDMsNiArNzAzLDkgQEAgZXh0ZXJu IFJlbGF0aW9uIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4 IHJ0aSwKIAkJCQkJCQkJCQkgIGJvb2wgaXNSZXN1bHRSZWwpOwogZXh0ZXJuIHZvaWQgRXhlY0lu aXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVs SW5mbywKIAkJCQkJCQkJICAgSW5kZXggcnRpKTsKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5H CitleHRlcm4gdm9pZCBDcm9zc0NoZWNrTW9kaWZpZWRSZWxpZHMoRVN0YXRlICplc3RhdGUpOwor I2VuZGlmCiAKIGV4dGVybiBpbnQJZXhlY3V0b3JfZXJycG9zaXRpb24oRVN0YXRlICplc3RhdGUs IGludCBsb2NhdGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNjNjMDY3ZDVhYWUuLjYx MDM4NWRmMTJiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjc5LDYgKzY3OSwxMiBAQCB0eXBl ZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgKi8K IAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVz YyAqLwogCisJLyoKKwkgKiBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyBtb2RpZmllZCBieSB0aGUg cXVlcnkgdGhyb3VnaCBhCisJICogVVBEQVRFL0RFTEVURS9JTlNFUlQvTUVSR0Ugb3IgdGFyZ2V0 ZWQgYnkgYSBTRUxFQ1QgRk9SIFVQREFURS4KKwkgKi8KKwlCaXRtYXBzZXQgICplc19tb2RpZmll ZF9yZWxpZHM7CisKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwganVu ayBmaWx0ZXIsIGlmIGFueSAqLwogCiAJLyogSWYgcXVlcnkgY2FuIGluc2VydC9kZWxldGUgdHVw bGVzLCB0aGUgY29tbWFuZCBJRCB0byBtYXJrIHRoZW0gd2l0aCAqLwotLSAKMi40My4wCgo= --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0012-Thread-flags-through-begin-scan-APIs.patch" Content-Disposition: attachment; filename="v36-0012-Thread-flags-through-begin-scan-APIs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfiqd3011 RnJvbSAyOWNlZjA3ZWQ5ZWMxODU4ZmQ4MTk1N2YyYjdhOGI0MjJlYzgxOTY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIgTWFyIDIwMjYgMTY6MzE6MTcgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzNiAxMi8xNl0gVGhyZWFkIGZsYWdzIHRocm91Z2ggYmVnaW4tc2NhbiBBUElzCgpBZGQg YSBmbGFncyBwYXJhbWV0ZXIgdG8gdGhlIGluZGV4X2ZldGNoX2JlZ2luKCkgdGFibGUgQU0gY2Fs bGJhY2sgYW5kCnRoZSBiZWdpbi1zY2FuIGhlbHBlcnMgc28gdGhlIGV4ZWN1dG9yIGNhbiBwYXNz IGNvbnRleHQgZm9yIGJ1aWxkaW5nCnNjYW4gZGVzY3JpcHRvcnMuIFRoaXMgaW50cm9kdWNlcyBh biBleHRlbnNpb24gcG9pbnQgZm9yIGZvbGxvdy11cCB3b3JrCnRvIG1hcmsgcmVsYXRpb25zIGFz IHJlYWQtb25seSBmb3IgdGhlIGN1cnJlbnQgcXVlcnksIHdpdGhvdXQgY2hhbmdpbmcKYmVoYXZp b3IgaW4gdGhpcyBwYXRjaC4KCkF1dGhvcjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdl bWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5j b20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vRjVDREQxQjUtNjI4Qy00NEExLTlG ODUtMzk1OEM2MjZGNkE5JTQwZ21haWwuY29tCi0tLQogY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93 bG9ja3MuYyAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5j ICAgICAgICAgICAgfCAgMyArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMg ICAgICAgIHwgIDMgKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j ICB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAg fCAgNCArKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jICAgICAgICB8ICA2 ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAgfCAgNyArKysrLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMgICAgICAgICB8ICAyICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICB8ICA4ICsrKystLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90eXBlY21kcy5jICAgICAgICAgICB8ICA0ICsrLS0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNJbmRleGluZy5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNSZXBsaWNhdGlvbi5jICAgIHwgIDggKysrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVCaXRtYXBIZWFwc2Nhbi5jIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleG9ubHlzY2FuLmMgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNj YW4uYyAgICAgIHwgIDQgKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAg ICAgICAgfCAgNiArKystLS0KIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMg ICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jICAgICAgICAgIHwg IDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oICAgICAgICAgICAgICAgIHwgIDIgKy0K IHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgIHwgMTcgKysrKysrKysr LS0tLS0tLS0KIDIyIGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tzLmMgYi9jb250 cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCmluZGV4IGY4ODI2OTMzMmI2Li4yN2YwMWQ4MDU1 ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYworKysgYi9jb250 cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCkBAIC0xMTQsNyArMTE0LDcgQEAgcGdyb3dsb2Nr cyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp KTsKIAogCS8qIFNjYW4gdGhlIHJlbGF0aW9uICovCi0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbihy ZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNj YW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgpLCAwLCBOVUxMLCAwKTsKIAloc2NhbiA9IChIZWFw U2NhbkRlc2MpIHNjYW47CiAKIAlhdHRpbm1ldGEgPSBUdXBsZURlc2NHZXRBdHRJbk1ldGFkYXRh KHJzaW5mby0+c2V0RGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggMTQ2ZWU5N2E0N2Qu LmRlODM1NjA0Y2JkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yODQ1LDcgKzI4NDUsOCBA QCBfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChCcmluQnVpbGRTdGF0ZSAqc3RhdGUsCiAJ aW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnJpbnNoYXJlZC0+aXNjb25jdXJyZW50OwogCiAJ c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwLAotCQkJCQkJCQkJUGFyYWxsZWxU YWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSk7CisJCQkJCQkJCQlQYXJhbGxlbFRh YmxlU2NhbkZyb21CcmluU2hhcmVkKGJyaW5zaGFyZWQpLAorCQkJCQkJCQkJMCk7CiAKIAlyZWx0 dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRleEluZm8sIHRy dWUsIHRydWUsCiAJCQkJCQkJCQkgICBicmluYnVpbGRDYWxsYmFja1BhcmFsbGVsLCBzdGF0ZSwg c2Nhbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCBjN2UzOGRiZTE5My4uZDQ4 Yzg1ZTg5NWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtMjA2MSw3ICsyMDYx LDggQEAgX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChHaW5CdWlsZFN0YXRlICpzdGF0ZSwK IAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBnaW5zaGFyZWQtPmlzY29uY3VycmVudDsKIAog CXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoaGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVs VGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCkpOworCQkJCQkJCQkJUGFyYWxs ZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFyZWQoZ2luc2hhcmVkKSwKKwkJCQkJCQkJCTApOwog CiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRleCwgaW5kZXhJ bmZvLCB0cnVlLCBwcm9ncmVzcywKIAkJCQkJCQkJCSAgIGdpbkJ1aWxkQ2FsbGJhY2tQYXJhbGxl bCwgc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMK aW5kZXggNDc2MjQxOTRmOTMuLmViZTJlODdhMjhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMKQEAgLTc5LDcgKzc5LDcgQEAgaGVhcGFtX3Nsb3RfY2FsbGJhY2tz KFJlbGF0aW9uIHJlbGF0aW9uKQogICovCiAKIHN0YXRpYyBJbmRleEZldGNoVGFibGVEYXRhICoK LWhlYXBhbV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwpCitoZWFwYW1faW5kZXhfZmV0 Y2hfYmVnaW4oUmVsYXRpb24gcmVsLCB1aW50MzIgZmxhZ3MpCiB7CiAJSW5kZXhGZXRjaEhlYXBE YXRhICpoc2NhbiA9IHBhbGxvYzBfb2JqZWN0KEluZGV4RmV0Y2hIZWFwRGF0YSk7CiAKQEAgLTc2 MSw3ICs3NjEsNyBAQCBoZWFwYW1fcmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBP bGRIZWFwLCBSZWxhdGlvbiBOZXdIZWFwLAogCiAJCXRhYmxlU2NhbiA9IE5VTEw7CiAJCWhlYXBT Y2FuID0gTlVMTDsKLQkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5zY2FuKE9sZEhlYXAsIE9sZElu ZGV4LCBTbmFwc2hvdEFueSwgTlVMTCwgMCwgMCk7CisJCWluZGV4U2NhbiA9IGluZGV4X2JlZ2lu c2NhbihPbGRIZWFwLCBPbGRJbmRleCwgU25hcHNob3RBbnksIE5VTEwsIDAsIDAsIDApOwogCQlp bmRleF9yZXNjYW4oaW5kZXhTY2FuLCBOVUxMLCAwLCBOVUxMLCAwKTsKIAl9CiAJZWxzZQpAQCAt NzcwLDcgKzc3MCw3IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9u IE9sZEhlYXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFy YW0oUFJPR1JFU1NfQ0xVU1RFUl9QSEFTRSwKIAkJCQkJCQkJCSBQUk9HUkVTU19DTFVTVEVSX1BI QVNFX1NFUV9TQ0FOX0hFQVApOwogCi0JCXRhYmxlU2NhbiA9IHRhYmxlX2JlZ2luc2NhbihPbGRI ZWFwLCBTbmFwc2hvdEFueSwgMCwgKFNjYW5LZXkpIE5VTEwpOworCQl0YWJsZVNjYW4gPSB0YWJs ZV9iZWdpbnNjYW4oT2xkSGVhcCwgU25hcHNob3RBbnksIDAsIChTY2FuS2V5KSBOVUxMLCAwKTsK IAkJaGVhcFNjYW4gPSAoSGVhcFNjYW5EZXNjKSB0YWJsZVNjYW47CiAJCWluZGV4U2NhbiA9IE5V TEw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKaW5kZXggNWU4OWI4NmE2MmMuLjFmZTdmZmIy NDg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwpAQCAtNDU1LDcgKzQ1NSw3IEBAIHN5c3Rh YmxlX2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCX0KIAogCQlzeXNzY2FuLT5p c2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwUmVsYXRpb24sIGlyZWwsCi0JCQkJCQkJCQkJIHNu YXBzaG90LCBOVUxMLCBua2V5cywgMCk7CisJCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5 cywgMCwgMCk7CiAJCWluZGV4X3Jlc2NhbihzeXNzY2FuLT5pc2NhbiwgaWR4a2V5LCBua2V5cywg TlVMTCwgMCk7CiAJCXN5c3NjYW4tPnNjYW4gPSBOVUxMOwogCkBAIC03MTYsNyArNzE2LDcgQEAg c3lzdGFibGVfYmVnaW5zY2FuX29yZGVyZWQoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlic3lz c2NhbiA9IHRydWU7CiAKIAlzeXNzY2FuLT5pc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwUmVs YXRpb24sIGluZGV4UmVsYXRpb24sCi0JCQkJCQkJCQkgc25hcHNob3QsIE5VTEwsIG5rZXlzLCAw KTsKKwkJCQkJCQkJCSBzbmFwc2hvdCwgTlVMTCwgbmtleXMsIDAsIDApOwogCWluZGV4X3Jlc2Nh bihzeXNzY2FuLT5pc2NhbiwgaWR4a2V5LCBua2V5cywgTlVMTCwgMCk7CiAJc3lzc2Nhbi0+c2Nh biA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFt LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCmluZGV4IDQzZjY0YTBlNzIx Li4xODI3MjA4Mzk2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4 YW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCkBAIC0yNTcsNyAr MjU3LDcgQEAgaW5kZXhfYmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQlSZWxh dGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCUluZGV4U2Nh bkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKLQkJCQlpbnQgbmtleXMsIGludCBub3JkZXJi eXMpCisJCQkJaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLCB1aW50MzIgZmxhZ3MpCiB7CiAJSW5k ZXhTY2FuRGVzYyBzY2FuOwogCkBAIC0yODQsNyArMjg0LDcgQEAgaW5kZXhfYmVnaW5zY2FuKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlzY2FuLT5pbnN0cnVtZW50ID0gaW5zdHJ1bWVudDsKIAog CS8qIHByZXBhcmUgdG8gZmV0Y2ggaW5kZXggbWF0Y2hlcyBmcm9tIHRhYmxlICovCi0Jc2Nhbi0+ eHNfaGVhcGZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4oaGVhcFJlbGF0aW9uKTsKKwlz Y2FuLT54c19oZWFwZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFwUmVsYXRpb24s IGZsYWdzKTsKIAogCXJldHVybiBzY2FuOwogfQpAQCAtNjE1LDcgKzYxNSw3IEBAIGluZGV4X2Jl Z2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBpbmRleHJlbCwKIAlz Y2FuLT5pbnN0cnVtZW50ID0gaW5zdHJ1bWVudDsKIAogCS8qIHByZXBhcmUgdG8gZmV0Y2ggaW5k ZXggbWF0Y2hlcyBmcm9tIHRhYmxlICovCi0Jc2Nhbi0+eHNfaGVhcGZldGNoID0gdGFibGVfaW5k ZXhfZmV0Y2hfYmVnaW4oaGVhcHJlbCk7CisJc2Nhbi0+eHNfaGVhcGZldGNoID0gdGFibGVfaW5k ZXhfZmV0Y2hfYmVnaW4oaGVhcHJlbCwgMCk7CiAKIAlyZXR1cm4gc2NhbjsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggNjllZjE1MjdlMDYuLmJjNGVlZGJhNGFjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtMTkyNyw3ICsxOTI3LDcgQEAgX2J0X3Bh cmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIs CiAJaW5kZXhJbmZvID0gQnVpbGRJbmRleEluZm8oYnRzcG9vbC0+aW5kZXgpOwogCWluZGV4SW5m by0+aWlfQ29uY3VycmVudCA9IGJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQ7CiAJc2NhbiA9IHRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbChidHNwb29sLT5oZWFwLAotCQkJCQkJCQkJUGFyYWxsZWxUYWJs ZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpKTsKKwkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2Fu RnJvbUJUU2hhcmVkKGJ0c2hhcmVkKSwgMCk7CiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVp bGRfc2NhbihidHNwb29sLT5oZWFwLCBidHNwb29sLT5pbmRleCwgaW5kZXhJbmZvLAogCQkJCQkJ CQkJICAgdHJ1ZSwgcHJvZ3Jlc3MsIF9idF9idWlsZF9jYWxsYmFjaywKIAkJCQkJCQkJCSAgICZi dWlsZHN0YXRlLCBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90 YWJsZWFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCmluZGV4IGRmZGEx YWY0MTJlLi5iM2FlZWUzNmNlNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxl L3RhYmxlYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCkBAIC0x NjMsMTAgKzE2MywxMSBAQCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiBy ZWwsIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKIH0KIAogVGFibGVTY2FuRGVzYwotdGFi bGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2Nh bkRlc2MgcHNjYW4pCit0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRpb24s IFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwgdWludDMyIGZsYWdzKQogewogCVNuYXBzaG90 CXNuYXBzaG90OwotCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfAorCisJZmxhZ3Mg fD0gU09fVFlQRV9TRVFTQ0FOIHwKIAkJU09fQUxMT1dfU1RSQVQgfCBTT19BTExPV19TWU5DIHwg U09fQUxMT1dfUEFHRU1PREU7CiAKIAlBc3NlcnQoUmVsRmlsZUxvY2F0b3JFcXVhbHMocmVsYXRp b24tPnJkX2xvY2F0b3IsIHBzY2FuLT5waHNfbG9jYXRvcikpOwpAQCAtMjQ4LDcgKzI0OSw3IEBA IHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlX2NoZWNrKFJlbGF0aW9uIHJlbCwKIAlib29sCQlmb3Vu ZDsKIAogCXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZWwsIE5VTEwpOwotCXNjYW4gPSB0YWJs ZV9pbmRleF9mZXRjaF9iZWdpbihyZWwpOworCXNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdp bihyZWwsIDApOwogCWZvdW5kID0gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoc2NhbiwgdGlkLCBz bmFwc2hvdCwgc2xvdCwgJmNhbGxfYWdhaW4sCiAJCQkJCQkJCQlhbGxfZGVhZCk7CiAJdGFibGVf aW5kZXhfZmV0Y2hfZW5kKHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29uc3RyYWludC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29uc3RyYWludC5jCmluZGV4IGNj MTFjNDdiNmYyLi4zN2NmYmQ2MzkzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29uc3RyYWludC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYwpAQCAt MTA2LDcgKzEwNiw3IEBAIHVuaXF1ZV9rZXlfcmVjaGVjayhQR19GVU5DVElPTl9BUkdTKQogCSAq LwogCXRtcHRpZCA9IGNoZWNrdGlkOwogCXsKLQkJSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiA9 IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKHRyaWdkYXRhLT50Z19yZWxhdGlvbik7CisJCUluZGV4 RmV0Y2hUYWJsZURhdGEgKnNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbih0cmlnZGF0YS0+ dGdfcmVsYXRpb24sIDApOwogCQlib29sCQljYWxsX2FnYWluID0gZmFsc2U7CiAKIAkJaWYgKCF0 YWJsZV9pbmRleF9mZXRjaF90dXBsZShzY2FuLCAmdG1wdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3Qs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IGQ2ZWY3Mjc1YTY0Li45MDAxOTlkYmUyOSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weXRvLmMKQEAgLTExNTksNyArMTE1OSw3IEBAIENvcHlSZWxhdGlvblRvKENvcHlU b1N0YXRlIGNzdGF0ZSwgUmVsYXRpb24gcmVsLCBSZWxhdGlvbiByb290X3JlbCwgdWludDY0ICpw cm9jCiAJQXR0ck1hcCAgICAqbWFwID0gTlVMTDsKIAlUdXBsZVRhYmxlU2xvdCAqcm9vdF9zbG90 ID0gTlVMTDsKIAotCXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25h cHNob3QoKSwgMCwgTlVMTCk7CisJc2NhbmRlc2MgPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBHZXRB Y3RpdmVTbmFwc2hvdCgpLCAwLCBOVUxMLCAwKTsKIAlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUo cmVsLCBOVUxMKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDg1MjQyZGNj MjQ1Li4wOTc5NmZhNDMwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTYzODgsNyAr NjM4OCw3IEBAIEFUUmV3cml0ZVRhYmxlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgT2lkIE9JRE5l d0hlYXApCiAJCSAqIGNoZWNraW5nIGFsbCB0aGUgY29uc3RyYWludHMuCiAJCSAqLwogCQlzbmFw c2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0 YWJsZV9iZWdpbnNjYW4ob2xkcmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisJCXNjYW4gPSB0YWJs ZV9iZWdpbnNjYW4ob2xkcmVsLCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAkJLyoKIAkJICog U3dpdGNoIHRvIHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVhY2gg dHVwbGUKQEAgLTEzNzY1LDcgKzEzNzY1LDcgQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWlu dChjaGFyICpjb25uYW1lLAogCSAqLwogCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRM YXRlc3RTbmFwc2hvdCgpKTsKIAlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsK LQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCXNjYW4g PSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAlwZXJUdXBD eHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCiAJCQkJCQkJ CQkgICJ2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50IiwKQEAgLTIyNjY3LDcgKzIyNjY3LDcg QEAgTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MoTGlzdCAqKndxdWV1ZSwgTGlzdCAqbWVyZ2luZ1Bh cnRpdGlvbnMsIFJlbGF0aW9uIG5ld1BhcnQKIAogCQkvKiBTY2FuIHRocm91Z2ggdGhlIHJvd3Mu ICovCiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsK LQkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihtZXJnaW5nUGFydGl0aW9uLCBzbmFwc2hvdCwgMCwg TlVMTCk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4obWVyZ2luZ1BhcnRpdGlvbiwgc25hcHNo b3QsIDAsIE5VTEwsIDApOwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5 IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCkBAIC0yMzEzMSw3ICsyMzEzMSw3 IEBAIFNwbGl0UGFydGl0aW9uTW92ZVJvd3MoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiBzcGxpdFJlbCwKIAogCS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93cy4gKi8KIAlzbmFw c2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0Jc2NhbiA9IHRh YmxlX2JlZ2luc2NhbihzcGxpdFJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCXNjYW4gPSB0YWJs ZV9iZWdpbnNjYW4oc3BsaXRSZWwsIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAogCS8qCiAJICog U3dpdGNoIHRvIHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVhY2gg dHVwbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCmluZGV4IDNkYWI2YmI1YTc5Li41MzE2Y2VhN2Nl YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCkBAIC0zMTg1LDcgKzMxODUsNyBAQCB2YWxpZGF0 ZURvbWFpbk5vdE51bGxDb25zdHJhaW50KE9pZCBkb21haW5vaWQpCiAKIAkJLyogU2NhbiBhbGwg dHVwbGVzIGluIHRoaXMgcmVsYXRpb24gKi8KIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90 KEdldExhdGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHRlc3RyZWws IHNuYXBzaG90LCAwLCBOVUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0ZXN0cmVsLCBz bmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAJCXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZSh0ZXN0cmVs LCBOVUxMKTsKIAkJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNj YW5EaXJlY3Rpb24sIHNsb3QpKQogCQl7CkBAIC0zMjY2LDcgKzMyNjYsNyBAQCB2YWxpZGF0ZURv bWFpbkNoZWNrQ29uc3RyYWludChPaWQgZG9tYWlub2lkLCBjb25zdCBjaGFyICpjY2JpbiwgTE9D S01PREUgbG9ja21vZAogCiAJCS8qIFNjYW4gYWxsIHR1cGxlcyBpbiB0aGlzIHJlbGF0aW9uICov CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKLQkJ c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0ZXN0cmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisJCXNj YW4gPSB0YWJsZV9iZWdpbnNjYW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwsIDApOwogCQlz bG90ID0gdGFibGVfc2xvdF9jcmVhdGUodGVzdHJlbCwgTlVMTCk7CiAJCXdoaWxlICh0YWJsZV9z Y2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkKIAkJewpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCA5ZDA3MWU0OTVjNi4uY2IzZTRmNjdl YTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC04MTUsNyArODE1LDcgQEAg Y2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LAogcmV0cnk6CiAJY29uZmxpY3QgPSBmYWxzZTsKIAlmb3VuZF9zZWxmID0gZmFs c2U7Ci0JaW5kZXhfc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwLCBpbmRleCwgJkRpcnR5U25h cHNob3QsIE5VTEwsIGluZG5rZXlhdHRzLCAwKTsKKwlpbmRleF9zY2FuID0gaW5kZXhfYmVnaW5z Y2FuKGhlYXAsIGluZGV4LCAmRGlydHlTbmFwc2hvdCwgTlVMTCwgaW5kbmtleWF0dHMsIDAsIDAp OwogCWluZGV4X3Jlc2NhbihpbmRleF9zY2FuLCBzY2Fua2V5cywgaW5kbmtleWF0dHMsIE5VTEws IDApOwogCiAJd2hpbGUgKGluZGV4X2dldG5leHRfc2xvdChpbmRleF9zY2FuLCBGb3J3YXJkU2Nh bkRpcmVjdGlvbiwgZXhpc3Rpbmdfc2xvdCkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNh dGlvbi5jCmluZGV4IDI0OTdlZTdlZGM1Li41YjhjYTFhYmY2MiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTIwNSw3ICsyMDUsNyBAQCBSZWxhdGlvbkZpbmRSZXBs VHVwbGVCeUluZGV4KFJlbGF0aW9uIHJlbCwgT2lkIGlkeG9pZCwKIAlza2V5X2F0dG9mZiA9IGJ1 aWxkX3JlcGxpbmRleF9zY2FuX2tleShza2V5LCByZWwsIGlkeHJlbCwgc2VhcmNoc2xvdCk7CiAK IAkvKiBTdGFydCBhbiBpbmRleCBzY2FuLiAqLwotCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4ocmVs LCBpZHhyZWwsICZzbmFwLCBOVUxMLCBza2V5X2F0dG9mZiwgMCk7CisJc2NhbiA9IGluZGV4X2Jl Z2luc2NhbihyZWwsIGlkeHJlbCwgJnNuYXAsIE5VTEwsIHNrZXlfYXR0b2ZmLCAwLCAwKTsKIAog cmV0cnk6CiAJZm91bmQgPSBmYWxzZTsKQEAgLTM4Myw3ICszODMsNyBAQCBSZWxhdGlvbkZpbmRS ZXBsVHVwbGVTZXEoUmVsYXRpb24gcmVsLCBMb2NrVHVwbGVNb2RlIGxvY2ttb2RlLAogCiAJLyog U3RhcnQgYSBoZWFwIHNjYW4uICovCiAJSW5pdERpcnR5U25hcHNob3Qoc25hcCk7Ci0Jc2NhbiA9 IHRhYmxlX2JlZ2luc2NhbihyZWwsICZzbmFwLCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVn aW5zY2FuKHJlbCwgJnNuYXAsIDAsIE5VTEwsIDApOwogCXNjYW5zbG90ID0gdGFibGVfc2xvdF9j cmVhdGUocmVsLCBOVUxMKTsKIAogcmV0cnk6CkBAIC02MDIsNyArNjAyLDcgQEAgUmVsYXRpb25G aW5kRGVsZXRlZFR1cGxlSW5mb1NlcShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzZWFy Y2hzbG90LAogCSAqIG5vdCB5ZXQgY29tbWl0dGVkIG9yIHRob3NlIGp1c3QgY29tbWl0dGVkIHBy aW9yIHRvIHRoZSBzY2FuIGFyZQogCSAqIGV4Y2x1ZGVkIGluIHVwZGF0ZV9tb3N0X3JlY2VudF9k ZWxldGlvbl9pbmZvKCkuCiAJICovCi0Jc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIFNuYXBz aG90QW55LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgU25hcHNob3RB bnksIDAsIE5VTEwsIDApOwogCXNjYW5zbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxM KTsKIAogCXRhYmxlX3Jlc2NhbihzY2FuLCBOVUxMKTsKQEAgLTY2Niw3ICs2NjYsNyBAQCBSZWxh dGlvbkZpbmREZWxldGVkVHVwbGVJbmZvQnlJbmRleChSZWxhdGlvbiByZWwsIE9pZCBpZHhvaWQs CiAJICogbm90IHlldCBjb21taXR0ZWQgb3IgdGhvc2UganVzdCBjb21taXR0ZWQgcHJpb3IgdG8g dGhlIHNjYW4gYXJlCiAJICogZXhjbHVkZWQgaW4gdXBkYXRlX21vc3RfcmVjZW50X2RlbGV0aW9u X2luZm8oKS4KIAkgKi8KLQlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCBTbmFw c2hvdEFueSwgTlVMTCwgc2tleV9hdHRvZmYsIDApOworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4o cmVsLCBpZHhyZWwsIFNuYXBzaG90QW55LCBOVUxMLCBza2V5X2F0dG9mZiwgMCwgMCk7CiAKIAlp bmRleF9yZXNjYW4oc2Nhbiwgc2tleSwgc2tleV9hdHRvZmYsIE5VTEwsIDApOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmluZGV4IGUwYjZkZjY0NzY3Li5iM2I2 ZGEzZDdlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBz Y2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAg LTEwOCw3ICsxMDgsNyBAQCBCaXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRl ICpub2RlKQogCQkJdGFibGVfYmVnaW5zY2FuX2JtKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlv biwKIAkJCQkJCQkgICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJCQkJICAg MCwKLQkJCQkJCQkgICBOVUxMKTsKKwkJCQkJCQkgICBOVUxMLCAwKTsKIAl9CiAKIAlub2RlLT5z cy5zc19jdXJyZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJhdG9yID0gdGJtaXRlcmF0b3I7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwppbmRleCBjMmQwOTM3NDUxNy4u Y2Y0ZDlhNGY4MzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9u bHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpA QCAtOTQsNyArOTQsNyBAQCBJbmRleE9ubHlOZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkK IAkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlvc3Nf SW5zdHJ1bWVudCwKIAkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1TY2FuS2V5cywKLQkJCQkJCQkJ ICAgbm9kZS0+aW9zc19OdW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlvc3NfTnVt T3JkZXJCeUtleXMsIDApOwogCiAJCW5vZGUtPmlvc3NfU2NhbkRlc2MgPSBzY2FuZGVzYzsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4IGE2MTZhYmZmMDRjLi5hN2FmMmY2 NjI4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwpAQCAtMTExLDcgKzExMSw3 IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAgZXN0YXRlLT5l c19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlzc19JbnN0cnVtZW50LAogCQkJCQkJCQkg ICBub2RlLT5pc3NfTnVtU2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5 S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywgMCk7CiAKIAkJbm9k ZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKQEAgLTIwNyw3ICsyMDcsNyBAQCBJbmRleE5l eHRXaXRoUmVvcmRlcihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAgZXN0YXRlLT5l c19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlzc19JbnN0cnVtZW50LAogCQkJCQkJCQkg ICBub2RlLT5pc3NfTnVtU2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5 S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywgMCk7CiAKIAkJbm9k ZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5j CmluZGV4IGFmM2M3ODhjZThiLi5kOWQ3ZWMwNTE2YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vx c2Nhbi5jCkBAIC03MSw3ICs3MSw3IEBAIFNlcU5leHQoU2VxU2NhblN0YXRlICpub2RlKQogCQkg Ki8KIAkJc2NhbmRlc2MgPSB0YWJsZV9iZWdpbnNjYW4obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0 aW9uLAogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICAwLCBOVUxM KTsKKwkJCQkJCQkJICAgMCwgTlVMTCwgMCk7CiAJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVz YyA9IHNjYW5kZXNjOwogCX0KIApAQCAtMzc0LDcgKzM3NCw3IEBAIEV4ZWNTZXFTY2FuSW5pdGlh bGl6ZURTTShTZXFTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFwc2hv dCk7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX25v ZGVfaWQsIHBzY2FuKTsKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQotCQl0YWJsZV9i ZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2Nhbik7CisJ CXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBz Y2FuLCAwKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDA3LDUgKzQwNyw1IEBAIEV4ZWNTZXFTY2Fu SW5pdGlhbGl6ZVdvcmtlcihTZXFTY2FuU3RhdGUgKm5vZGUsCiAKIAlwc2NhbiA9IHNobV90b2Nf bG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2Up OwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJh bGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKKwkJdGFibGVfYmVnaW5z Y2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwgcHNjYW4sIDApOwogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBiL3NyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggMGNhMzEyYWMyN2QuLmI3YzRl NmQxMDcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTMzNjIsNyAr MzM2Miw3IEBAIGNoZWNrX2RlZmF1bHRfcGFydGl0aW9uX2NvbnRlbnRzKFJlbGF0aW9uIHBhcmVu dCwgUmVsYXRpb24gZGVmYXVsdF9yZWwsCiAJCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29u dGV4dChlc3RhdGUpOwogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25h cHNob3QoKSk7CiAJCXR1cHNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShwYXJ0X3JlbCwgJmVzdGF0 ZS0+ZXNfdHVwbGVUYWJsZSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocGFydF9yZWwsIHNu YXBzaG90LCAwLCBOVUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihwYXJ0X3JlbCwgc25h cHNob3QsIDAsIE5VTEwsIDApOwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVt b3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxm dW5jcy5jCmluZGV4IGQ0ZGEwZThkZWE5Li41YjIxNjVjMjY3ZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Nl bGZ1bmNzLmMKQEAgLTcxNjEsNyArNzE2MSw3IEBAIGdldF9hY3R1YWxfdmFyaWFibGVfZW5kcG9p bnQoUmVsYXRpb24gaGVhcFJlbCwKIAogCWluZGV4X3NjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVh cFJlbCwgaW5kZXhSZWwsCiAJCQkJCQkJCSAmU25hcHNob3ROb25WYWN1dW1hYmxlLCBOVUxMLAot CQkJCQkJCQkgMSwgMCk7CisJCQkJCQkJCSAxLCAwLCAwKTsKIAkvKiBTZXQgaXQgdXAgZm9yIGlu ZGV4LW9ubHkgc2NhbiAqLwogCWluZGV4X3NjYW4tPnhzX3dhbnRfaXR1cCA9IHRydWU7CiAJaW5k ZXhfcmVzY2FuKGluZGV4X3NjYW4sIHNjYW5rZXlzLCAxLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgK aW5kZXggNGMwNDI5Y2M2MTMuLjM5MzRmYTQ0NzkzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtMTU2LDcg KzE1Niw3IEBAIGV4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBo ZWFwUmVsYXRpb24sCiAJCQkJCQkJCQkgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkJ CSBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCSBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24g Kmluc3RydW1lbnQsCi0JCQkJCQkJCQkgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKTsKKwkJCQkJ CQkJCSBpbnQgbmtleXMsIGludCBub3JkZXJieXMsIHVpbnQzMiBmbGFncyk7CiBleHRlcm4gSW5k ZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGluZGV4UmVsYXRpb24s CiAJCQkJCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQlJbmRleFNjYW5JbnN0 cnVtZW50YXRpb24gKmluc3RydW1lbnQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv dGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCAwNjA4NDc1MjI0 NS4uZTg4MWU0ZjgyYTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNDIwLDcgKzQyMCw3IEBAIHR5 cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJICoKIAkgKiBUdXBsZXMgZm9yIGFuIGluZGV4 IHNjYW4gY2FuIHRoZW4gYmUgZmV0Y2hlZCB2aWEgaW5kZXhfZmV0Y2hfdHVwbGUuCiAJICovCi0J c3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEgKigqaW5kZXhfZmV0Y2hfYmVnaW4pIChSZWxhdGlv biByZWwpOworCXN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICooKmluZGV4X2ZldGNoX2JlZ2lu KSAoUmVsYXRpb24gcmVsLCB1aW50MzIgZmxhZ3MpOwogCiAJLyoKIAkgKiBSZXNldCBpbmRleCBm ZXRjaC4gVHlwaWNhbGx5IHRoaXMgd2lsbCByZWxlYXNlIGNyb3NzIGluZGV4IGZldGNoCkBAIC04 OTQsOSArODk0LDkgQEAgdGFibGVfYmVnaW5zY2FuX2NvbW1vbihSZWxhdGlvbiByZWwsIFNuYXBz aG90IHNuYXBzaG90LCBpbnQgbmtleXMsCiAgKi8KIHN0YXRpYyBpbmxpbmUgVGFibGVTY2FuRGVz YwogdGFibGVfYmVnaW5zY2FuKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJ aW50IG5rZXlzLCBTY2FuS2V5RGF0YSAqa2V5KQorCQkJCWludCBua2V5cywgU2NhbktleURhdGEg KmtleSwgdWludDMyIGZsYWdzKQogewotCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4g fAorCWZsYWdzIHw9IFNPX1RZUEVfU0VRU0NBTiB8CiAJCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxM T1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOwogCiAJcmV0dXJuIHRhYmxlX2JlZ2luc2Nhbl9j b21tb24ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtleSwgTlVMTCwgZmxhZ3MpOwpAQCAtOTM5LDkg KzkzOSw5IEBAIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNu YXBzaG90LAogICovCiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nh bl9ibShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCSAgIGludCBua2V5cywg U2NhbktleURhdGEgKmtleSkKKwkJCQkgICBpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVp bnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09f QUxMT1dfUEFHRU1PREU7CisJZmxhZ3MgfD0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1df UEFHRU1PREU7CiAKIAlyZXR1cm4gdGFibGVfYmVnaW5zY2FuX2NvbW1vbihyZWwsIHNuYXBzaG90 LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7CiB9CkBAIC0xMTM5LDcgKzExMzksOCBAQCBleHRl cm4gdm9pZCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAgKiBD YWxsZXIgbXVzdCBob2xkIGEgc3VpdGFibGUgbG9jayBvbiB0aGUgcmVsYXRpb24uCiAgKi8KIGV4 dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxh dGlvbiwKLQkJCQkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pOworCQkJCQkJ CQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJICB1aW50MzIg ZmxhZ3MpOwogCiAvKgogICogQmVnaW4gYSBwYXJhbGxlbCB0aWQgcmFuZ2Ugc2Nhbi4gYHBzY2Fu YCBuZWVkcyB0byBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQKQEAgLTExNzUsNyArMTE3Niw3IEBAIHRh YmxlX3BhcmFsbGVsc2Nhbl9yZWluaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxl U2NhbkRlc2MgcHNjYW4pCiAgKiBUdXBsZXMgZm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUg ZmV0Y2hlZCB2aWEgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoKS4KICAqLwogc3RhdGljIGlubGlu ZSBJbmRleEZldGNoVGFibGVEYXRhICoKLXRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9u IHJlbCkKK3RhYmxlX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCwgdWludDMyIGZsYWdz KQogewogCS8qCiAJICogV2UgZG9uJ3QgYWxsb3cgc2NhbnMgdG8gYmUgc3RhcnRlZCB3aGlsZSBD aGVja1hpZEFsaXZlIGlzIHNldCwgZXhjZXB0CkBAIC0xMTg1LDcgKzExODYsNyBAQCB0YWJsZV9p bmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwpCiAJaWYgKHVubGlrZWx5KFRyYW5zYWN0aW9u SWRJc1ZhbGlkKENoZWNrWGlkQWxpdmUpICYmICFic3lzc2NhbikpCiAJCWVsb2coRVJST1IsICJz Y2FuIHN0YXJ0ZWQgZHVyaW5nIGxvZ2ljYWwgZGVjb2RpbmciKTsKIAotCXJldHVybiByZWwtPnJk X3RhYmxlYW0tPmluZGV4X2ZldGNoX2JlZ2luKHJlbCk7CisJcmV0dXJuIHJlbC0+cmRfdGFibGVh bS0+aW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCBmbGFncyk7CiB9CiAKIC8qCi0tIAoyLjQzLjAKCg== --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0013-Pass-down-information-on-table-modification-to-s.patch" Content-Disposition: attachment; filename="v36-0013-Pass-down-information-on-table-modification-to-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfiqjyu12 RnJvbSAwOTllYTNjNDY4NDcxOTZlYmExMzIzNDRjZTg2MWY5ZDc0YjAxYmUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIgTWFyIDIwMjYgMTY6MzE6MzMgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzNiAxMy8xNl0gUGFzcyBkb3duIGluZm9ybWF0aW9uIG9uIHRhYmxlIG1vZGlmaWNhdGlv biB0byBzY2FuCiBub2RlCgpQYXNzIGRvd24gaW5mb3JtYXRpb24gdG8gc2VxdWVudGlhbCBzY2Fu LCBpbmRleCBbb25seV0gc2NhbiwgYW5kIGJpdG1hcAp0YWJsZSBzY2FuIG5vZGVzIG9uIHdoZXRo ZXIgb3Igbm90IHRoZSBxdWVyeSBtb2RpZmllcyB0aGUgcmVsYXRpb24gYmVpbmcKc2Nhbm5lZC4g QSBsYXRlciBjb21taXQgd2lsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byB1cGRhdGUgdGhlIFZN CmR1cmluZyBvbi1hY2Nlc3MgcHJ1bmluZyBvbmx5IGlmIHRoZSByZWxhdGlvbiBpcyBub3QgbW9k aWZpZWQgYnkgdGhlCnF1ZXJ5LgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxh Z2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJh emVsLmRlPgpSZXZpZXdlZC1ieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRleC10ZWFtLnJ1 PgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS80Mzc5RkRBMy05NDQ2LTRFMkMtOUMxNS0zMkVGRThENEYz MUIlNDB5YW5kZXgtdGVhbS5ydQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2Fu LmMgfCAgOSArKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YyAgfCAgOSArKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jICAg ICAgfCAxOCArKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nh bi5jICAgICAgICB8IDI2ICsrKysrKysrKysrKysrKysrKysrLS0tCiBzcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmggICAgICAgICAgICAgICB8ICA2ICsrKysrKwogc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaCAgICAgICAgICAgICAgfCAgMyArKysKIDcgZmlsZXMgY2hhbmdlZCwgNjUgaW5z ZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYwppbmRleCBlYmUyZTg3YTI4Yi4uM2E4ZWI5ZDhiNjEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtODYsNiArODYsNyBAQCBoZWFwYW1faW5k ZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24gcmVsLCB1aW50MzIgZmxhZ3MpCiAJaHNjYW4tPnhzX2Jh c2UucmVsID0gcmVsOwogCWhzY2FuLT54c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAloc2Nhbi0+ eHNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCWhzY2FuLT5tb2RpZmllc19iYXNlX3JlbCA9 ICEoZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09OTFkpOwogCiAJcmV0dXJuICZoc2Nhbi0+eHNf YmFzZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFw c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKaW5kZXgg YjNiNmRhM2Q3ZTQuLjliY2Y5YTY4MTgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQml0bWFwSGVhcHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwSGVhcHNjYW4uYwpAQCAtMTA0LDExICsxMDQsMTggQEAgQml0bWFwVGFibGVTY2FuU2V0dXAo Qml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIAkgKi8KIAlpZiAoIW5vZGUtPnNzLnNzX2N1cnJl bnRTY2FuRGVzYykKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJCWlmICghYm1zX2lzX21l bWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCSAgIG5v ZGUtPnNzLnBzLnN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpKQorCQkJZmxhZ3MgPSBTT19ISU5U X1JFTF9SRUFEX09OTFk7CisKIAkJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KIAkJCXRh YmxlX2JlZ2luc2Nhbl9ibShub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCiAJCQkJCQkJICAg bm9kZS0+c3MucHMuc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCSAgIDAsCi0JCQkJCQkJICAg TlVMTCwgMCk7CisJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICBmbGFncyk7CiAJfQogCiAJbm9k ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjLT5zdC5yc190Ym1pdGVyYXRvciA9IHRibWl0ZXJhdG9y OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKaW5kZXggY2Y0ZDlhNGY4 MzIuLjJmZTcyNGEzMjNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhvbmx5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2Fu LmMKQEAgLTg0LDYgKzg0LDEyIEBAIEluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpu b2RlKQogCiAJaWYgKHNjYW5kZXNjID09IE5VTEwpCiAJeworCQl1aW50MzIJCWZsYWdzID0gMDsK KworCQlpZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2Fu cmVsaWQsCisJCQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCQlmbGFncyA9 IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQkvKgogCQkgKiBXZSByZWFjaCBoZXJlIGlmIHRo ZSBpbmRleCBvbmx5IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJp YWxseSBleGVjdXRpbmcgYW4gaW5kZXggb25seSBzY2FuIHRoYXQgd2FzIHBsYW5uZWQgdG8gYmUK QEAgLTk0LDcgKzEwMCw4IEBAIEluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpub2Rl KQogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCQkgICAmbm9kZS0+aW9z c19JbnN0cnVtZW50LAogCQkJCQkJCQkgICBub2RlLT5pb3NzX051bVNjYW5LZXlzLAotCQkJCQkJ CQkgICBub2RlLT5pb3NzX051bU9yZGVyQnlLZXlzLCAwKTsKKwkJCQkJCQkJICAgbm9kZS0+aW9z c19OdW1PcmRlckJ5S2V5cywKKwkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCW5vZGUtPmlvc3NfU2Nh bkRlc2MgPSBzY2FuZGVzYzsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4 IGE3YWYyZjY2MjhhLi44NzMwZGFiNzQ2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNj YW4uYwpAQCAtMTAyLDYgKzEwMiwxMiBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUp CiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJ CWlmICghYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxp ZCwKKwkJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09f SElOVF9SRUxfUkVBRF9PTkxZOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGlu ZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxseSBleGVj dXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgpAQCAt MTExLDcgKzExNyw4IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJ ICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlzc19JbnN0cnVtZW50 LAogCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtU2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlz c19OdW1PcmRlckJ5S2V5cywgMCk7CisJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5 cywKKwkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNj OwogCkBAIC0xOTgsNiArMjA1LDEyIEBAIEluZGV4TmV4dFdpdGhSZW9yZGVyKEluZGV4U2NhblN0 YXRlICpub2RlKQogCiAJaWYgKHNjYW5kZXNjID09IE5VTEwpCiAJeworCQl1aW50MzIJCWZsYWdz ID0gMDsKKworCQlpZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4p LT5zY2FucmVsaWQsCisJCQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCQlm bGFncyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQkvKgogCQkgKiBXZSByZWFjaCBoZXJl IGlmIHRoZSBpbmRleCBzY2FuIGlzIG5vdCBwYXJhbGxlbCwgb3IgaWYgd2UncmUKIAkJICogc2Vy aWFsbHkgZXhlY3V0aW5nIGFuIGluZGV4IHNjYW4gdGhhdCB3YXMgcGxhbm5lZCB0byBiZSBwYXJh bGxlbC4KQEAgLTIwNyw3ICsyMjAsOCBAQCBJbmRleE5leHRXaXRoUmVvcmRlcihJbmRleFNjYW5T dGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAg Jm5vZGUtPmlzc19JbnN0cnVtZW50LAogCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtU2NhbktleXMs Ci0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywgMCk7CisJCQkJCQkJCSAgIG5v ZGUtPmlzc19OdW1PcmRlckJ5S2V5cywKKwkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCW5vZGUtPmlz c19TY2FuRGVzYyA9IHNjYW5kZXNjOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRl eCBkOWQ3ZWMwNTE2YS4uMzM2MzU0OTIyYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4u YwpAQCAtNjUsMTMgKzY1LDIwIEBAIFNlcU5leHQoU2VxU2NhblN0YXRlICpub2RlKQogCiAJaWYg KHNjYW5kZXNjID09IE5VTEwpCiAJeworCQl1aW50MzIJCWZsYWdzID0gMDsKKworCQlpZiAoIWJt c19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJ CQkgICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCQlmbGFncyA9IFNPX0hJTlRfUkVM X1JFQURfT05MWTsKKwogCQkvKgogCQkgKiBXZSByZWFjaCBoZXJlIGlmIHRoZSBzY2FuIGlzIG5v dCBwYXJhbGxlbCwgb3IgaWYgd2UncmUgc2VyaWFsbHkKIAkJICogZXhlY3V0aW5nIGEgc2NhbiB0 aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgogCQkgKi8KIAkJc2NhbmRlc2MgPSB0YWJs ZV9iZWdpbnNjYW4obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgICBlc3Rh dGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICAwLCBOVUxMLCAwKTsKKwkJCQkJCQkJICAgMCwg TlVMTCwgZmxhZ3MpOworCiAJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IHNjYW5kZXNj OwogCX0KIApAQCAtMzY3LDE0ICszNzQsMjAgQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNl cVNjYW5TdGF0ZSAqbm9kZSwKIHsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0 YXRlOwogCVBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKKwl1aW50MzIJCWZsYWdzID0gMDsK IAogCXBzY2FuID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIG5vZGUtPnBzY2FuX2xlbik7 CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0 aW9uLAogCQkJCQkJCQkgIHBzY2FuLAogCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QpOwog CXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lk LCBwc2Nhbik7CisJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFu KS0+c2NhbnJlbGlkLAorCQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCWZs YWdzID0gU09fSElOVF9SRUxfUkVBRF9PTkxZOworCiAJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5E ZXNjID0KLQkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxh dGlvbiwgcHNjYW4sIDApOworCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3Nf Y3VycmVudFJlbGF0aW9uLCBwc2NhbiwKKwkJCQkJCQkJIGZsYWdzKTsKIH0KIAogLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpAQCAtNDA0LDggKzQxNywxNSBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2Nh blN0YXRlICpub2RlLAogCQkJCQkJCVBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQpCiB7CiAJ UGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOworCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJaWYg KCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAor CQkJCQkgICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJZmxhZ3Mg PSBTT19ISU5UX1JFTF9SRUFEX09OTFk7CiAKIAlwc2NhbiA9IHNobV90b2NfbG9va3VwKHB3Y3h0 LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2UpOwogCW5vZGUtPnNz LnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5z cy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuLCAwKTsKKwkJdGFibGVfYmVnaW5zY2FuX3BhcmFs bGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJIHBzY2FuLAorCQkJCQkJ CQkgZmxhZ3MpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDdlZjRjYmJmYjFlLi5jMjAyMThmODE5 MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMTMwLDYgKzEzMCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBJ bmRleEZldGNoSGVhcERhdGEKIAogCS8qIEN1cnJlbnQgaGVhcCBibG9jaydzIGNvcnJlc3BvbmRp bmcgcGFnZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgKi8KIAlCdWZmZXIJCXhzX3ZtYnVmZmVyOwor CisJLyoKKwkgKiBTb21lIG9wdGltaXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRo ZSBxdWVyeSBkb2VzIG5vdCBtb2RpZnkKKwkgKiB0aGUgdW5kZXJseWluZyByZWxhdGlvbi4gVHJh Y2sgdGhhdCBoZXJlLgorCSAqLworCWJvb2wJCW1vZGlmaWVzX2Jhc2VfcmVsOwogfSBJbmRleEZl dGNoSGVhcERhdGE7CiAKIC8qIFJlc3VsdCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFj dXVtICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBlODgxZTRmODJhMC4uNTFkZmQxMjIzMDcgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3RhYmxlYW0uaApAQCAtNjMsNiArNjMsOSBAQCB0eXBlZGVmIGVudW0gU2Nhbk9wdGlv bnMKIAogCS8qIHVucmVnaXN0ZXIgc25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJU09fVEVNUF9T TkFQU0hPVCA9IDEgPDwgOSwKKworCS8qIHNldCBpZiB0aGUgcXVlcnkgZG9lc24ndCBtb2RpZnkg dGhlIHJlbGF0aW9uICovCisJU09fSElOVF9SRUxfUkVBRF9PTkxZID0gMSA8PCAxMCwKIH0JCQlT Y2FuT3B0aW9uczsKIAogLyoKLS0gCjIuNDMuMAoK --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0014-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v36-0014-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfiqmmj13 RnJvbSBmNTk3Yjc1N2M1NWZlZTQ0NWI1ZjdmMDhkNWNkZTU1YTM4ZTE5N2ZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDI3IEZlYiAyMDI2IDE2OjMzOjQwIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzYgMTQvMTZdIEFsbG93IG9uLWFjY2VzcyBwcnVuaW5nIHRvIHNldCBwYWdlcyBhbGwt dmlzaWJsZQoKTWFueSBxdWVyaWVzIGRvIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgcmVsYXRp b24uIEZvciBzdWNoIHF1ZXJpZXMsIGlmCm9uLWFjY2VzcyBwcnVuaW5nIG9jY3VycyBkdXJpbmcg dGhlIHNjYW4sIHdlIGNhbiBjaGVjayB3aGV0aGVyIHRoZSBwYWdlCmhhcyBiZWNvbWUgYWxsLXZp c2libGUgYW5kIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYWNjb3JkaW5nbHkuClByZXZpb3Vz bHksIG9ubHkgdmFjdXVtIGFuZCBDT1BZIEZSRUVaRSBtYXJrZWQgcGFnZXMgYXMgYWxsLXZpc2li bGUgb3IKYWxsLWZyb3plbi4KClRoaXMgY29tbWl0IGltcGxlbWVudHMgb24tYWNjZXNzIFZNIHNl dHRpbmcgZm9yIHNlcXVlbnRpYWwgc2NhbnMgYXMgd2VsbAphcyBmb3IgdGhlIHVuZGVybHlpbmcg aGVhcCByZWxhdGlvbiBpbiBpbmRleCBzY2FucyBhbmQgYml0bWFwIGhlYXAKc2NhbnMuCgpBdXRo b3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmlld2VkLWJ5OiBLaXJp bGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8 bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9m bGF0L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NNT014MURoM1ZNaHA4LVY3U09MeGRLOS1n JTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAg ICAgICAgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYyAgICAgIHwgIDYgKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAg ICAgICAgICAgfCA0MSArKysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bS5oICAgICAgICAgICAgICAgICAgIHwgMTIgKysrKy0tCiAuLi4vdC8wMzVfc3RhbmRieV9sb2dp Y2FsX2RlY29kaW5nLnBsICAgICAgICAgfCAgMyArLQogNiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNl cnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4 IDE0OWNmZmQxYTU3Li44MjczNDE0YjQzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAg LTYzMyw3ICs2MzMsOCBAQCBoZWFwX3ByZXBhcmVfcGFnZXNjYW4oVGFibGVTY2FuRGVzYyBzc2Nh bikKIAkvKgogCSAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBmb3IgdGhlIHdob2xl IHBhZ2UsIGlmIHBvc3NpYmxlLgogCSAqLwotCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNf YmFzZS5yc19yZCwgYnVmZmVyLCAmc2Nhbi0+cnNfdm1idWZmZXIpOworCWhlYXBfcGFnZV9wcnVu ZV9vcHQoc2Nhbi0+cnNfYmFzZS5yc19yZCwgYnVmZmVyLCAmc2Nhbi0+cnNfdm1idWZmZXIsCisJ CQkJCQkoc3NjYW4tPnJzX2ZsYWdzICYgU09fSElOVF9SRUxfUkVBRF9PTkxZKSk7CiAKIAkvKgog CSAqIFdlIG11c3QgaG9sZCBzaGFyZSBsb2NrIG9uIHRoZSBidWZmZXIgY29udGVudCB3aGlsZSBl eGFtaW5pbmcgdHVwbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmlu ZGV4IDNhOGViOWQ4YjYxLi42NzNmNjU5OTYxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jCkBAIC0xNDcsNyArMTQ3LDggQEAgaGVhcGFtX2luZGV4X2ZldGNoX3R1 cGxlKHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICpzY2FuLAogCQkgKi8KIAkJaWYgKHByZXZf YnVmICE9IGhzY2FuLT54c19jYnVmKQogCQkJaGVhcF9wYWdlX3BydW5lX29wdChoc2Nhbi0+eHNf YmFzZS5yZWwsIGhzY2FuLT54c19jYnVmLAotCQkJCQkJCQkmaHNjYW4tPnhzX3ZtYnVmZmVyKTsK KwkJCQkJCQkJJmhzY2FuLT54c192bWJ1ZmZlciwKKwkJCQkJCQkJIWhzY2FuLT5tb2RpZmllc19i YXNlX3JlbCk7CiAJfQogCiAJLyogT2J0YWluIHNoYXJlLWxvY2sgb24gdGhlIGJ1ZmZlciBzbyB3 ZSBjYW4gZXhhbWluZSB2aXNpYmlsaXR5ICovCkBAIC0yNTQyLDcgKzI1NDMsOCBAQCBCaXRtYXBI ZWFwU2Nhbk5leHRCbG9jayhUYWJsZVNjYW5EZXNjIHNjYW4sCiAJLyoKIAkgKiBQcnVuZSBhbmQg cmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkg Ki8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsICZoc2Nhbi0+cnNf dm1idWZmZXIpOworCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfcmQsIGJ1ZmZlciwgJmhz Y2FuLT5yc192bWJ1ZmZlciwKKwkJCQkJCXNjYW4tPnJzX2ZsYWdzICYgU09fSElOVF9SRUxfUkVB RF9PTkxZKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZl ciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYwppbmRleCAxODRkN2U5ODA2NC4uMDY0MjY0YWYxZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jCkBAIC00NCw2ICs0NCw4IEBAIHR5cGVkZWYgc3RydWN0CiAJYm9vbAkJbWFy a191bnVzZWRfbm93OwogCS8qIHdoZXRoZXIgdG8gYXR0ZW1wdCBmcmVlemluZyB0dXBsZXMgKi8K IAlib29sCQlhdHRlbXB0X2ZyZWV6ZTsKKwkvKiB3aGV0aGVyIHRvIGF0dGVtcHQgc2V0dGluZyB0 aGUgVk0gKi8KKwlib29sCQlhdHRlbXB0X3NldF92bTsKIAlzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAq Y3V0b2ZmczsKIAlSZWxhdGlvbglyZWxhdGlvbjsKIApAQCAtMjIwLDcgKzIyMiw4IEBAIHN0YXRp YyB2b2lkIHBhZ2VfdmVyaWZ5X3JlZGlyZWN0cyhQYWdlIHBhZ2UpOwogCiBzdGF0aWMgYm9vbCBo ZWFwX3BhZ2Vfd2lsbF9mcmVlemUoYm9vbCBkaWRfdHVwbGVfaGludF9mcGksIGJvb2wgZG9fcHJ1 bmUsIGJvb2wgZG9faGludF9wcnVuZSwKIAkJCQkJCQkJICBQcnVuZVN0YXRlICpwcnN0YXRlKTsK LXN0YXRpYyBib29sIGhlYXBfcGFnZV93aWxsX3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLCBQ cnVuZVJlYXNvbiByZWFzb24pOworc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBy dW5lU3RhdGUgKnByc3RhdGUsIFBydW5lUmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJICBib29sIGRv X3BydW5lLCBib29sIGRvX2ZyZWV6ZSk7CiBzdGF0aWMgVHJhbnNhY3Rpb25JZCBnZXRfY29uZmxp Y3RfeGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92bSwKIAkJ CQkJCQkJCSAgdWludDggb2xkX3ZtYml0cywgdWludDggbmV3X3ZtYml0cywKIAkJCQkJCQkJCSAg VHJhbnNhY3Rpb25JZCBsYXRlc3RfeGlkX3JlbW92ZWQsCkBAIC0yNDYsNyArMjQ5LDggQEAgc3Rh dGljIFRyYW5zYWN0aW9uSWQgZ2V0X2NvbmZsaWN0X3hpZChib29sIGRvX3BydW5lLCBib29sIGRv X2ZyZWV6ZSwgYm9vbCBkb19zZXQKICAqIHVucGlubmluZyAqdm1idWZmZXIuCiAgKi8KIHZvaWQK LWhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsIEJ1 ZmZlciAqdm1idWZmZXIpCitoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyLCBCdWZmZXIgKnZtYnVmZmVyLAorCQkJCQlib29sIHJlbF9yZWFkX29ubHkp CiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlUcmFuc2FjdGlvbklk IHBydW5lX3hpZDsKQEAgLTMyOCw2ICszMzIsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLCBCdWZmZXIgKnZtYnVmZmVyKQogCQkJICogY3Vy cmVudCBpbXBsZW1lbnRhdGlvbi4KIAkJCSAqLwogCQkJcGFyYW1zLm9wdGlvbnMgPSAwOworCQkJ aWYgKHJlbF9yZWFkX29ubHkpCisJCQkJcGFyYW1zLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVf U0VUX1ZNOwogCiAJCQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgmcGFyYW1zLCAmcHJlc3Vs dCwgJmR1bW15X29mZl9sb2MsCiAJCQkJCQkJCQkgICBOVUxMLCBOVUxMKTsKQEAgLTM4NCw2ICsz OTAsNyBAQCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkv KiBjdXRvZmZzIG11c3QgYmUgcHJvdmlkZWQgaWYgd2Ugd2lsbCBhdHRlbXB0IGZyZWV6aW5nICov CiAJQXNzZXJ0KCEocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgfHwg cGFyYW1zLT5jdXRvZmZzKTsKIAlwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSA9IChwYXJhbXMtPm9w dGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUtPmF0dGVtcHRf c2V0X3ZtID0gKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9TRVRfVk0pICE9IDA7 CiAJcHJzdGF0ZS0+Y3V0b2ZmcyA9IHBhcmFtcy0+Y3V0b2ZmczsKIAlwcnN0YXRlLT5yZWxhdGlv biA9IHBhcmFtcy0+cmVsYXRpb247CiAJcHJzdGF0ZS0+YmxvY2sgPSBCdWZmZXJHZXRCbG9ja051 bWJlcihwYXJhbXMtPmJ1ZmZlcik7CkBAIC05NDYsMjEgKzk1MywzNyBAQCBoZWFwX2ZpeF92bV9j b3JydXB0aW9uKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pCiAgKiBU aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGFjdHVhbGx5IHNldCB0aGUgVk0gYml0cyBvciBwYWdlLWxl dmVsIHZpc2liaWxpdHkKICAqIGhpbnQsIFBEX0FMTF9WSVNJQkxFLgogICoKKyAqIFRoaXMgc2hv dWxkIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRvX2ZyZWV6ZSBoYXMgYmVlbiBkZWNpZGVkIChhbmQg ZG9fcHJ1bmUKKyAqIGhhcyBiZWVuIHNldCksIGFzIHRoZXNlIGZhY3RvciBpbnRvIG91ciBoZXVy aXN0aWMtYmFzZWQgZGVjaXNpb24uCisgKgogICogUmV0dXJucyB0cnVlIGlmIG9uZSBvciBib3Ro IFZNIGJpdHMgc2hvdWxkIGJlIHNldCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogICovCiBzdGF0aWMg Ym9vbAotaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5lU3RhdGUgKnByc3RhdGUsIFBydW5lUmVh c29uIHJlYXNvbikKK2hlYXBfcGFnZV93aWxsX3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLCBQ cnVuZVJlYXNvbiByZWFzb24sCisJCQkJCSAgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUp CiB7Ci0JLyoKLQkgKiBUaG91Z2ggb24tYWNjZXNzIHBydW5pbmcgbWFpbnRhaW5zIHByc3RhdGUt PnNldF9hbGxfdmlzaWJsZSwgd2UgZG9uJ3QKLQkgKiBjb25zaWRlciBzZXR0aW5nIHRoZSBWTS4K LQkgKi8KLQlpZiAocmVhc29uID09IFBSVU5FX09OX0FDQ0VTUykKKwlpZiAoIXByc3RhdGUtPmF0 dGVtcHRfc2V0X3ZtKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoIXByc3RhdGUtPnNldF9hbGxf dmlzaWJsZSkKIAkJcmV0dXJuIGZhbHNlOwogCisJLyoKKwkgKiBJZiB0aGlzIGlzIGFuIG9uLWFj Y2VzcyBjYWxsIGFuZCB3ZSdyZSBub3QgYWN0dWFsbHkgcHJ1bmluZywgYXZvaWQKKwkgKiBzZXR0 aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCBpZiBpdCB3b3VsZCBuZXdseSBkaXJ0eSB0aGUgaGVhcCBw YWdlIG9yLCBpZgorCSAqIHRoZSBwYWdlIGlzIGFscmVhZHkgZGlydHksIGlmIGRvaW5nIHNvIHdv dWxkIHJlcXVpcmUgaW5jbHVkaW5nIGEKKwkgKiBmdWxsLXBhZ2UgaW1hZ2UgKEZQSSkgb2YgdGhl IGhlYXAgcGFnZSBpbiB0aGUgV0FMLiBUaGlzIHNpdHVhdGlvbgorCSAqIHNob3VsZCBiZSByYXJl LCBhcyBvbi1hY2Nlc3MgcHJ1bmluZyBpcyBvbmx5IGF0dGVtcHRlZCB3aGVuCisJICogcGRfcHJ1 bmVfeGlkIGlzIHZhbGlkLgorCSAqLworCWlmIChyZWFzb24gPT0gUFJVTkVfT05fQUNDRVNTICYm ICFkb19wcnVuZSAmJiAhZG9fZnJlZXplICYmCisJCSghQnVmZmVySXNEaXJ0eShwcnN0YXRlLT5i dWZmZXIpIHx8IFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKHByc3RhdGUtPmJ1ZmZlcikpKQor CXsKKwkJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUtPnNldF9h bGxfZnJvemVuID0gZmFsc2U7CisJCXJldHVybiBmYWxzZTsKKwl9CisKIAlwcnN0YXRlLT5uZXdf dm1iaXRzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKIAogCWlmIChwcnN0YXRlLT5zZXRf YWxsX2Zyb3plbikKQEAgLTExNzYsNyArMTE5OSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQXNzZXJ0KCFwcnN0YXRlLnNldF9hbGxf ZnJvemVuIHx8IHByc3RhdGUuc2V0X2FsbF92aXNpYmxlKTsKIAlBc3NlcnQoIXByc3RhdGUuc2V0 X2FsbF92aXNpYmxlIHx8IChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKSk7CiAKLQlkb19zZXRf dm0gPSBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oJnByc3RhdGUsIHBhcmFtcy0+cmVhc29uKTsKKwlk b19zZXRfdm0gPSBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oJnByc3RhdGUsIHBhcmFtcy0+cmVhc29u LCBkb19wcnVuZSwgZG9fZnJlZXplKTsKIAogCS8qCiAJICogbmV3X3ZtYml0cyBzaG91bGQgYmUg MCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKaW5kZXggOGJkMTc4YWU3ZTYuLmQyY2FlNzdiNTJhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yMDA4LDcgKzIwMDgsNyBAQCBsYXp5X3Nj YW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQkuYnVmZmVyID0gYnVmLAogCQkudm1idWZm ZXIgPSB2bWJ1ZmZlciwKIAkJLnJlYXNvbiA9IFBSVU5FX1ZBQ1VVTV9TQ0FOLAotCQkub3B0aW9u cyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsCisJCS5vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5F X0ZSRUVaRSB8IEhFQVBfUEFHRV9QUlVORV9TRVRfVk0sCiAJCS52aXN0ZXN0ID0gdmFjcmVsLT52 aXN0ZXN0LAogCQkuY3V0b2ZmcyA9ICZ2YWNyZWwtPmN1dG9mZnMsCiAJfTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aAppbmRleCBjMjAyMThmODE5MC4uMGEzZTNkZjliMmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQy LDYgKzQyLDcgQEAKIC8qICJvcHRpb25zIiBmbGFnIGJpdHMgZm9yIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplICovCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cJCSgx IDw8IDApCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUJCQkJKDEgPDwgMSkKKyNkZWZp bmUgSEVBUF9QQUdFX1BSVU5FX1NFVF9WTQkJCQkoMSA8PCAyKQogCiB0eXBlZGVmIHN0cnVjdCBC dWxrSW5zZXJ0U3RhdGVEYXRhICpCdWxrSW5zZXJ0U3RhdGU7CiB0eXBlZGVmIHN0cnVjdCBHbG9i YWxWaXNTdGF0ZSBHbG9iYWxWaXNTdGF0ZTsKQEAgLTk2LDcgKzk3LDggQEAgdHlwZWRlZiBzdHJ1 Y3QgSGVhcFNjYW5EZXNjRGF0YQogCiAJLyoKIAkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBhbmQg Yml0bWFwIGhlYXAgc2NhbnMuIFRoZSBjdXJyZW50IGhlYXAgYmxvY2sncwotCSAqIGNvcnJlc3Bv bmRpbmcgcGFnZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCisJICogY29ycmVzcG9uZGluZyBwYWdl IGluIHRoZSB2aXNpYmlsaXR5IG1hcC4gSWYgdGhlIHJlbGF0aW9uIGlzIG5vdAorCSAqIG1vZGlm aWVkIGJ5IHRoZSBxdWVyeSwgb24tYWNjZXNzIHBydW5pbmcgbWF5IHNldCB0aGUgVk0uCiAJICov CiAJQnVmZmVyCQlyc192bWJ1ZmZlcjsKIApAQCAtMTI4LDcgKzEzMCwxMSBAQCB0eXBlZGVmIHN0 cnVjdCBJbmRleEZldGNoSGVhcERhdGEKIAkgKi8KIAlCdWZmZXIJCXhzX2NidWY7CiAKLQkvKiBD dXJyZW50IGhlYXAgYmxvY2sncyBjb3JyZXNwb25kaW5nIHBhZ2UgaW4gdGhlIHZpc2liaWxpdHkg bWFwICovCisJLyoKKwkgKiBDdXJyZW50IGhlYXAgYmxvY2sncyBjb3JyZXNwb25kaW5nIHBhZ2Ug aW4gdGhlIHZpc2liaWxpdHkgbWFwLiBGb3IKKwkgKiBpbmRleCBzY2FucyB0aGF0IGRvIG5vdCBt b2RpZnkgdGhlIHVuZGVybHlpbmcgaGVhcCB0YWJsZSwgb24tYWNjZXNzCisJICogcHJ1bmluZyBt YXkgc2V0IHRoZSBWTSBvbi1hY2Nlc3MuCisJICovCiAJQnVmZmVyCQl4c192bWJ1ZmZlcjsKIAog CS8qCkBAIC00MzUsNyArNDQxLDcgQEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9k ZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwog ZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVy IGJ1ZmZlciwKLQkJCQkJCQkJQnVmZmVyICp2bWJ1ZmZlcik7CisJCQkJCQkJCUJ1ZmZlciAqdm1i dWZmZXIsIGJvb2wgcmVsX3JlYWRfb25seSk7CiBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJCQkJICAgUHJ1bmVG cmVlemVSZXN1bHQgKnByZXN1bHQsCiAJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKm9mZl9sb2Ms CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVj b2RpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2Rp bmcucGwKaW5kZXggZDI2NGE2OThmZjYuLmE1NTM2YmE0ZmY2IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKKysrIGIvc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsCkBAIC0yOTYsNiAr Mjk2LDcgQEAgd2FsX2xldmVsID0gJ2xvZ2ljYWwnCiBtYXhfcmVwbGljYXRpb25fc2xvdHMgPSA0 CiBtYXhfd2FsX3NlbmRlcnMgPSA0CiBhdXRvdmFjdXVtID0gb2ZmCitob3Rfc3RhbmRieV9mZWVk YmFjayA9IG9uCiB9KTsKICRub2RlX3ByaW1hcnktPmR1bXBfaW5mbzsKICRub2RlX3ByaW1hcnkt PnN0YXJ0OwpAQCAtNzQ4LDcgKzc0OSw3IEBAIGNoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigk aGFuZGxlLAogJGxvZ3N0YXJ0ID0gLXMgJG5vZGVfc3RhbmRieS0+bG9nZmlsZTsKIAogcmVhY3Rp dmVfc2xvdHNfY2hhbmdlX2hmc19hbmRfd2FpdF9mb3JfeG1pbnMoJ3NoYXJlZF9yb3dfcmVtb3Zh bF8nLAotCSdub19jb25mbGljdF8nLCAwLCAxKTsKKwknbm9fY29uZmxpY3RfJywgMSwgMCk7CiAK ICMgVGhpcyBzaG91bGQgbm90IHRyaWdnZXIgYSBjb25mbGljdAogd2FpdF91bnRpbF92YWN1dW1f Y2FuX3JlbW92ZSgKLS0gCjIuNDMuMAoK --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="US-ASCII"; name="v36-0015-Avoid-BufferGetPage-calls-in-heap_update.patch" Content-Disposition: attachment; filename="v36-0015-Avoid-BufferGetPage-calls-in-heap_update.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfiqpji14 RnJvbSBiYzE1ZDI2Y2I4ZWU4MTcxMzFlNDljZGM4ZjM0ZWVlOWMxZmI3Y2RjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDYgTWFyIDIwMjYgMTY6NDY6MDEgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzNiAxNS8xNl0gQXZvaWQgQnVmZmVyR2V0UGFnZSgpIGNhbGxzIGluIGhlYXBfdXBkYXRl KCkKCkJ1ZmZlckdldFBhZ2UoKSBpc24ndCBjaGVhcCBhbmQgaGVhcF91cGRhdGUoKSBjYWxscyBp dCBtdWx0aXBsZSB0aW1lcwp3aGVuIGl0IGNvdWxkIGp1c3Qgc2F2ZSB0aGUgcGFnZSBmcm9tIGEg c2luZ2xlIGNhbGwuIERvIHRoYXQuCldoaWxlIHdlIGFyZSBhdCBpdCwgbWFrZSBzZXBhcmF0ZSB2 YXJpYWJsZXMgZm9yIG9sZCBhbmQgbmV3IHBhZ2UgaW4KaGVhcF94bG9nX3VwZGF0ZSgpLiBJdCdz IGNvbmZ1c2luZyB0byByZXVzZSAicGFnZSIgZm9yIGJvdGggcGFnZXMuCi0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICB8IDE3ICsrKysrKysrLS0tLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIHwgMzQgKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggODI3MzQxNGI0MzAuLmMzOWFmMjEzN2My IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMzMzOSw3ICszMzM5LDggQEAgaGVhcF91 cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIG5ld3R1cCwKIAlIZWFwVHVwbGUJaGVhcHR1cDsKIAlIZWFwVHVwbGUJb2xkX2tleV90 dXBsZSA9IE5VTEw7CiAJYm9vbAkJb2xkX2tleV9jb3BpZWQgPSBmYWxzZTsKLQlQYWdlCQlwYWdl OworCVBhZ2UJCXBhZ2UsCisJCQkJbmV3cGFnZTsKIAlCbG9ja051bWJlciBibG9jazsKIAlNdWx0 aVhhY3RTdGF0dXMgbXhhY3Rfc3RhdHVzOwogCUJ1ZmZlcgkJYnVmZmVyLApAQCAtNDA2NSw2ICs0 MDY2LDggQEAgbDI6CiAJCWhlYXB0dXAgPSBuZXd0dXA7CiAJfQogCisJbmV3cGFnZSA9IEJ1ZmZl ckdldFBhZ2UobmV3YnVmKTsKKwogCS8qCiAJICogV2UncmUgYWJvdXQgdG8gZG8gdGhlIGFjdHVh bCB1cGRhdGUgLS0gY2hlY2sgZm9yIGNvbmZsaWN0IGZpcnN0LCB0bwogCSAqIGF2b2lkIHBvc3Np Ymx5IGhhdmluZyB0byByb2xsIGJhY2sgd29yayB3ZSd2ZSBqdXN0IGRvbmUuCkBAIC00MTc5LDE3 ICs0MTgyLDE3IEBAIGwyOgogCW9sZHR1cC50X2RhdGEtPnRfY3RpZCA9IGhlYXB0dXAtPnRfc2Vs ZjsKIAogCS8qIGNsZWFyIFBEX0FMTF9WSVNJQkxFIGZsYWdzLCByZXNldCBhbGwgdmlzaWJpbGl0 eW1hcCBiaXRzICovCi0JaWYgKFBhZ2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFnZShidWZmZXIp KSkKKwlpZiAoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKIAl7CiAJCWFsbF92aXNpYmxlX2NsZWFy ZWQgPSB0cnVlOwotCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSk7 CisJCVBhZ2VDbGVhckFsbFZpc2libGUocGFnZSk7CiAJCXZpc2liaWxpdHltYXBfY2xlYXIocmVs YXRpb24sIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksCiAJCQkJCQkJdm1idWZmZXIsIFZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CiAJfQotCWlmIChuZXdidWYgIT0gYnVmZmVyICYmIFBh Z2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFnZShuZXdidWYpKSkKKwlpZiAobmV3YnVmICE9IGJ1 ZmZlciAmJiBQYWdlSXNBbGxWaXNpYmxlKG5ld3BhZ2UpKQogCXsKIAkJYWxsX3Zpc2libGVfY2xl YXJlZF9uZXcgPSB0cnVlOwotCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKEJ1ZmZlckdldFBhZ2UobmV3 YnVmKSk7CisJCVBhZ2VDbGVhckFsbFZpc2libGUobmV3cGFnZSk7CiAJCXZpc2liaWxpdHltYXBf Y2xlYXIocmVsYXRpb24sIEJ1ZmZlckdldEJsb2NrTnVtYmVyKG5ld2J1ZiksCiAJCQkJCQkJdm1i dWZmZXJfbmV3LCBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwogCX0KQEAgLTQyMjAsOSArNDIy Myw5IEBAIGwyOgogCQkJCQkJCQkgYWxsX3Zpc2libGVfY2xlYXJlZF9uZXcpOwogCQlpZiAobmV3 YnVmICE9IGJ1ZmZlcikKIAkJewotCQkJUGFnZVNldExTTihCdWZmZXJHZXRQYWdlKG5ld2J1Ziks IHJlY3B0cik7CisJCQlQYWdlU2V0TFNOKG5ld3BhZ2UsIHJlY3B0cik7CiAJCX0KLQkJUGFnZVNl dExTTihCdWZmZXJHZXRQYWdlKGJ1ZmZlciksIHJlY3B0cik7CisJCVBhZ2VTZXRMU04ocGFnZSwg cmVjcHRyKTsKIAl9CiAKIAlFTkRfQ1JJVF9TRUNUSU9OKCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3hsb2cuYwppbmRleCBhODNmNmIwM2Q2OS4uMTMwMmJiMTNlMTggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtNjg1LDcgKzY4NSw4IEBAIGhlYXBfeGxvZ191 cGRhdGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQsIGJvb2wgaG90X3VwZGF0ZSkKIAlJdGVtUG9p bnRlckRhdGEgbmV3dGlkOwogCUJ1ZmZlcgkJb2J1ZmZlciwKIAkJCQluYnVmZmVyOwotCVBhZ2UJ CXBhZ2U7CisJUGFnZQkJb3BhZ2UsCisJCQkJbnBhZ2U7CiAJT2Zmc2V0TnVtYmVyIG9mZm51bTsK IAlJdGVtSWQJCWxwOwogCUhlYXBUdXBsZURhdGEgb2xkdHVwOwpAQCAtNzQ5LDE1ICs3NTAsMTUg QEAgaGVhcF94bG9nX3VwZGF0ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCwgYm9vbCBob3RfdXBk YXRlKQogCQkJCQkJCQkJICAmb2J1ZmZlcik7CiAJaWYgKG9sZGFjdGlvbiA9PSBCTEtfTkVFRFNf UkVETykKIAl7Ci0JCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKG9idWZmZXIpOworCQlvcGFnZSA9IEJ1 ZmZlckdldFBhZ2Uob2J1ZmZlcik7CiAJCW9mZm51bSA9IHhscmVjLT5vbGRfb2ZmbnVtOwotCQlp ZiAob2ZmbnVtIDwgMSB8fCBvZmZudW0gPiBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpKQor CQlpZiAob2ZmbnVtIDwgMSB8fCBvZmZudW0gPiBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKG9wYWdl KSkKIAkJCWVsb2coUEFOSUMsICJvZmZudW0gb3V0IG9mIHJhbmdlIik7Ci0JCWxwID0gUGFnZUdl dEl0ZW1JZChwYWdlLCBvZmZudW0pOworCQlscCA9IFBhZ2VHZXRJdGVtSWQob3BhZ2UsIG9mZm51 bSk7CiAJCWlmICghSXRlbUlkSXNOb3JtYWwobHApKQogCQkJZWxvZyhQQU5JQywgImludmFsaWQg bHAiKTsKIAotCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHAp OworCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ob3BhZ2UsIGxwKTsKIAog CQlvbGR0dXAudF9kYXRhID0gaHR1cDsKIAkJb2xkdHVwLnRfbGVuID0gSXRlbUlkR2V0TGVuZ3Ro KGxwKTsKQEAgLTc3NiwxMiArNzc3LDEyIEBAIGhlYXBfeGxvZ191cGRhdGUoWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQsIGJvb2wgaG90X3VwZGF0ZSkKIAkJaHR1cC0+dF9jdGlkID0gbmV3dGlkOwog CiAJCS8qIE1hcmsgdGhlIHBhZ2UgYXMgYSBjYW5kaWRhdGUgZm9yIHBydW5pbmcgKi8KLQkJUGFn ZVNldFBydW5hYmxlKHBhZ2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CisJCVBhZ2VTZXRQcnVu YWJsZShvcGFnZSwgWExvZ1JlY0dldFhpZChyZWNvcmQpKTsKIAogCQlpZiAoeGxyZWMtPmZsYWdz ICYgWExIX1VQREFURV9PTERfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKLQkJCVBhZ2VDbGVhckFsbFZp c2libGUocGFnZSk7CisJCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKG9wYWdlKTsKIAotCQlQYWdlU2V0 TFNOKHBhZ2UsIGxzbik7CisJCVBhZ2VTZXRMU04ob3BhZ2UsIGxzbik7CiAJCU1hcmtCdWZmZXJE aXJ0eShvYnVmZmVyKTsKIAl9CiAKQEAgLTc5Niw4ICs3OTcsOCBAQCBoZWFwX3hsb2dfdXBkYXRl KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkLCBib29sIGhvdF91cGRhdGUpCiAJZWxzZSBpZiAoWExv Z1JlY0dldEluZm8ocmVjb3JkKSAmIFhMT0dfSEVBUF9JTklUX1BBR0UpCiAJewogCQluYnVmZmVy ID0gWExvZ0luaXRCdWZmZXJGb3JSZWRvKHJlY29yZCwgMCk7Ci0JCXBhZ2UgPSBCdWZmZXJHZXRQ YWdlKG5idWZmZXIpOwotCQlQYWdlSW5pdChwYWdlLCBCdWZmZXJHZXRQYWdlU2l6ZShuYnVmZmVy KSwgMCk7CisJCW5wYWdlID0gQnVmZmVyR2V0UGFnZShuYnVmZmVyKTsKKwkJUGFnZUluaXQobnBh Z2UsIEJ1ZmZlckdldFBhZ2VTaXplKG5idWZmZXIpLCAwKTsKIAkJbmV3YWN0aW9uID0gQkxLX05F RURTX1JFRE87CiAJfQogCWVsc2UKQEAgLTgyOSwxMCArODMwLDEwIEBAIGhlYXBfeGxvZ191cGRh dGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQsIGJvb2wgaG90X3VwZGF0ZSkKIAkJcmVjZGF0YSA9 IFhMb2dSZWNHZXRCbG9ja0RhdGEocmVjb3JkLCAwLCAmZGF0YWxlbik7CiAJCXJlY2RhdGFfZW5k ID0gcmVjZGF0YSArIGRhdGFsZW47CiAKLQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UobmJ1ZmZlcik7 CisJCW5wYWdlID0gQnVmZmVyR2V0UGFnZShuYnVmZmVyKTsKIAogCQlvZmZudW0gPSB4bHJlYy0+ bmV3X29mZm51bTsKLQkJaWYgKFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkgKyAxIDwgb2Zm bnVtKQorCQlpZiAoUGFnZUdldE1heE9mZnNldE51bWJlcihucGFnZSkgKyAxIDwgb2ZmbnVtKQog CQkJZWxvZyhQQU5JQywgImludmFsaWQgbWF4IG9mZnNldCBudW1iZXIiKTsKIAogCQlpZiAoeGxy ZWMtPmZsYWdzICYgWExIX1VQREFURV9QUkVGSVhfRlJPTV9PTEQpCkBAIC05MDksMTYgKzkxMCwx NyBAQCBoZWFwX3hsb2dfdXBkYXRlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkLCBib29sIGhvdF91 cGRhdGUpCiAJCS8qIE1ha2Ugc3VyZSB0aGVyZSBpcyBubyBmb3J3YXJkIGNoYWluIGxpbmsgaW4g dF9jdGlkICovCiAJCWh0dXAtPnRfY3RpZCA9IG5ld3RpZDsKIAotCQlvZmZudW0gPSBQYWdlQWRk SXRlbShwYWdlLCBodHVwLCBuZXdsZW4sIG9mZm51bSwgdHJ1ZSwgdHJ1ZSk7CisJCW9mZm51bSA9 IFBhZ2VBZGRJdGVtKG5wYWdlLCBodHVwLCBuZXdsZW4sIG9mZm51bSwgdHJ1ZSwgdHJ1ZSk7CiAJ CWlmIChvZmZudW0gPT0gSW52YWxpZE9mZnNldE51bWJlcikKIAkJCWVsb2coUEFOSUMsICJmYWls ZWQgdG8gYWRkIHR1cGxlIik7CiAKIAkJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9VUERBVEVfTkVX X0FMTF9WSVNJQkxFX0NMRUFSRUQpCi0JCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOworCQkJ UGFnZUNsZWFyQWxsVmlzaWJsZShucGFnZSk7CiAKLQkJZnJlZXNwYWNlID0gUGFnZUdldEhlYXBG cmVlU3BhY2UocGFnZSk7IC8qIG5lZWRlZCB0byB1cGRhdGUgRlNNIGJlbG93ICovCisJCS8qIG5l ZWRlZCB0byB1cGRhdGUgRlNNIGJlbG93ICovCisJCWZyZWVzcGFjZSA9IFBhZ2VHZXRIZWFwRnJl ZVNwYWNlKG5wYWdlKTsKIAotCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7CisJCVBhZ2VTZXRMU04o bnBhZ2UsIGxzbik7CiAJCU1hcmtCdWZmZXJEaXJ0eShuYnVmZmVyKTsKIAl9CiAKLS0gCjIuNDMu MAoK --000000000000b506a0064c637a4a Content-Type: text/x-patch; charset="UTF-8"; name="v36-0016-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v36-0016-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmfiqsvt15 RnJvbSA3NWNjNTQ0MDc3OTQ1MWI1Y2UxNzdkNWNkODg0YzZmMWYzMTA5MDc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzYgMTYvMTZdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzCmFuZCBv biB0aGUgbmV3IHBhZ2UgZHVyaW5nIHVwZGF0ZXMuCgpUaGlzIGVuYWJsZXMgaGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoKSB0byBydW4gYW5kIHNldCB0aGUgVk0KYWxsLXZpc2libGUgYWZ0ZXIg YSBwYWdlIGlzIGZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QKdGlt ZSBpdCBpcyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5n IG5vdGUgaW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2Jz ZXJ2ZWQgdGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0 ZWQgaW5zZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0Cmxpbmdl ciB1bnRpbCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoK VGhlIGluZGV4IGtpbGx0dXBsZXMgdGVzdCBoYWQgdG8gYmUgdXBkYXRlZCB0byByZWZsZWN0IGEg bGFyZ2VyIG51bWJlcgpvZiBoaXRzIGJ5IHNvbWUgYWNjZXNzZXMuIFNpbmNlIHRoZSBwcnVuZV94 aWQgaXMgc2V0IGJ5IHRoZSBmaWxsL2luc2VydApzdGVwLCBvbi1hY2Nlc3MgcHJ1bmluZyBjYW4g aGFwcGVuIGR1cmluZyB0aGUgZmlyc3QgYWNjZXNzIHN0ZXAgKGJlZm9yZQp0aGUgREVMRVRFKS4g VGhpcyBpcyB3aGVuIHRoZSBWTSBpcyBleHRlbmRlZC4gQWZ0ZXIgdGhlIERFTEVURSwgdGhlIG5l eHQKYWNjZXNzIGhpdHMgdGhlIFZNIGJsb2NrIGluc3RlYWQgb2YgZXh0ZW5kaW5nIGl0LiBUaHVz LCBhbiBhZGRpdGlvbmFsCmJ1ZmZlciBoaXQgaXMgY291bnRlZCBmb3IgdGhlIHRhYmxlLgoKQXV0 aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdl ZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS9mbGF0L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NNT014MURoM1ZN aHA4LVY3U09MeGRLOS1nJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCA0MCArKysrKysrKysrKystLS0tLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jICAgICAgICAgfCAxOSArKysrKysrKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAgICB8IDE0ICsrKy0t LS0KIC4uLi9tb2R1bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0ICAgICB8ICA4ICsr LS0KIDQgZmlsZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBjMzlhZjIxMzdjMi4uMGI4MzEzZGUyZTcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0yMTU2LDYgKzIxNTYsNyBAQCBoZWFwX2luc2Vy dChSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAlUcmFu c2FjdGlvbklkIHhpZCA9IEdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CiAJSGVhcFR1cGxlCWhl YXB0dXA7CiAJQnVmZmVyCQlidWZmZXI7CisJUGFnZQkJcGFnZTsKIAlCdWZmZXIJCXZtYnVmZmVy ID0gSW52YWxpZEJ1ZmZlcjsKIAlib29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gZmFsc2U7CiAK QEAgLTIxODIsNiArMjE4Myw4IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFw VHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCQkJCQkJCQkJICAgJnZtYnVmZmVyLCBOVUxMLAog CQkJCQkJCQkJICAgMCk7CiAKKwlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOworCiAJLyoK IAkgKiBXZSdyZSBhYm91dCB0byBkbyB0aGUgYWN0dWFsIGluc2VydCAtLSBidXQgY2hlY2sgZm9y IGNvbmZsaWN0IGZpcnN0LCB0bwogCSAqIGF2b2lkIHBvc3NpYmx5IGhhdmluZyB0byByb2xsIGJh Y2sgd29yayB3ZSd2ZSBqdXN0IGRvbmUuCkBAIC0yMjA1LDI1ICsyMjA4LDMwIEBAIGhlYXBfaW5z ZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCVJl bGF0aW9uUHV0SGVhcFR1cGxlKHJlbGF0aW9uLCBidWZmZXIsIGhlYXB0dXAsCiAJCQkJCQkgKG9w dGlvbnMgJiBIRUFQX0lOU0VSVF9TUEVDVUxBVElWRSkgIT0gMCk7CiAKLQlpZiAoUGFnZUlzQWxs VmlzaWJsZShCdWZmZXJHZXRQYWdlKGJ1ZmZlcikpKQorCWlmIChQYWdlSXNBbGxWaXNpYmxlKHBh Z2UpKQogCXsKIAkJYWxsX3Zpc2libGVfY2xlYXJlZCA9IHRydWU7Ci0JCVBhZ2VDbGVhckFsbFZp c2libGUoQnVmZmVyR2V0UGFnZShidWZmZXIpKTsKKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdl KTsKIAkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxhdGlvbiwKIAkJCQkJCQlJdGVtUG9pbnRlckdl dEJsb2NrTnVtYmVyKCYoaGVhcHR1cC0+dF9zZWxmKSksCiAJCQkJCQkJdm1idWZmZXIsIFZJU0lC SUxJVFlNQVBfVkFMSURfQklUUyk7CiAJfQogCiAJLyoKLQkgKiBYWFggU2hvdWxkIHdlIHNldCBQ YWdlU2V0UHJ1bmFibGUgb24gdGhpcyBwYWdlID8KKwkgKiBTZXQgcGRfcHJ1bmVfeGlkIHRvIHRy aWdnZXIgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBvbmNlIHRoZSBwYWdlCisJICogaXMg ZnVsbCBzbyB0aGF0IHdlIGNhbiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNIG9u IHRoZSBuZXh0CisJICogcGFnZSBhY2Nlc3MuCiAJICoKLQkgKiBUaGUgaW5zZXJ0aW5nIHRyYW5z YWN0aW9uIG1heSBldmVudHVhbGx5IGFib3J0IHRodXMgbWFraW5nIHRoaXMgdHVwbGUKLQkgKiBE RUFEIGFuZCBoZW5jZSBhdmFpbGFibGUgZm9yIHBydW5pbmcuIFRob3VnaCB3ZSBkb24ndCB3YW50 IHRvIG9wdGltaXplCi0JICogZm9yIGFib3J0cywgaWYgbm8gb3RoZXIgdHVwbGUgaW4gdGhpcyBw YWdlIGlzIFVQREFURWQvREVMRVRFZCwgdGhlCi0JICogYWJvcnRlZCB0dXBsZSB3aWxsIG5ldmVy IGJlIHBydW5lZCB1bnRpbCBuZXh0IHZhY3V1bSBpcyB0cmlnZ2VyZWQuCisJICogU2V0dGluZyBw ZF9wcnVuZV94aWQgaXMgYWxzbyBoYW5keSBpZiB0aGUgaW5zZXJ0aW5nIHRyYW5zYWN0aW9uCisJ ICogZXZlbnR1YWxseSBhYm9ydHMgbWFraW5nIHRoaXMgdHVwbGUgREVBRCBhbmQgaGVuY2UgYXZh aWxhYmxlIGZvcgorCSAqIHBydW5pbmcuIElmIG5vIG90aGVyIHR1cGxlIGluIHRoaXMgcGFnZSBp cyBVUERBVEVkL0RFTEVURWQsIHRoZSBhYm9ydGVkCisJICogdHVwbGUgd291bGQgbmV2ZXIgb3Ro ZXJ3aXNlIGJlIHBydW5lZCB1bnRpbCBuZXh0IHZhY3V1bSBpcyB0cmlnZ2VyZWQuCiAJICoKLQkg KiBJZiB5b3UgZG8gYWRkIFBhZ2VTZXRQcnVuYWJsZSBoZXJlLCBhZGQgaXQgaW4gaGVhcF94bG9n X2luc2VydCB0b28uCisJICogRG9uJ3Qgc2V0IGl0IGlmIHdlIGFyZSBpbiBib290c3RyYXAgbW9k ZSBvciB3ZSBhcmUgaW5zZXJ0aW5nIGEgZnJvemVuCisJICogdHVwbGUuCiAJICovCisJaWYgKFRy YW5zYWN0aW9uSWRJc05vcm1hbCh4aWQpICYmICEob3B0aW9ucyAmIEhFQVBfSU5TRVJUX0ZST1pF TikpCisJCVBhZ2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJTWFya0J1ZmZlckRpcnR5KGJ1 ZmZlcik7CiAKQEAgLTIyMzMsNyArMjI0MSw2IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0 aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCQl4bF9oZWFwX2luc2VydCB4bHJl YzsKIAkJeGxfaGVhcF9oZWFkZXIgeGxoZHI7CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwotCQlQYWdl CQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCQl1aW50OAkJaW5mbyA9IFhMT0dfSEVB UF9JTlNFUlQ7CiAJCWludAkJCWJ1ZmZsYWdzID0gMDsKIApAQCAtMjU5OCw4ICsyNjA1LDEzIEBA IGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNs b3RzLCBpbnQgbnR1cGxlcywKIAkJfQogCiAJCS8qCi0JCSAqIFhYWCBTaG91bGQgd2Ugc2V0IFBh Z2VTZXRQcnVuYWJsZSBvbiB0aGlzIHBhZ2UgPyBTZWUgaGVhcF9pbnNlcnQoKQorCQkgKiBTZXQg cGRfcHJ1bmVfeGlkLiBTZWUgaGVhcF9pbnNlcnQoKSBmb3IgbW9yZSBvbiB3aHkgd2UgZG8gdGhp cyB3aGVuCisJCSAqIGluc2VydGluZyB0dXBsZXMuIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpZiB3 ZSBhcmVuJ3QgYWxyZWFkeQorCQkgKiBzZXR0aW5nIHRoZSBwYWdlIGZyb3plbiBpbiB0aGUgVk0u IFdlIGFsc28gZG9uJ3Qgc2V0IGl0IGluCisJCSAqIGJvb3RzdHJhcCBtb2RlLgogCQkgKi8KKwkJ aWYgKCFhbGxfZnJvemVuX3NldCAmJiBUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJCVBh Z2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwog CkBAIC00MTQxLDEyICs0MTUzLDEyIEBAIGwyOgogCSAqIHRoZSBzdWJzZXF1ZW50IHBhZ2UgcHJ1 bmluZyB3aWxsIGJlIGEgbm8tb3AgYW5kIHRoZSBoaW50IHdpbGwgYmUKIAkgKiBjbGVhcmVkLgog CSAqCi0JICogWFhYIFNob3VsZCB3ZSBzZXQgaGludCBvbiBuZXdidWYgYXMgd2VsbD8gIElmIHRo ZSB0cmFuc2FjdGlvbiBhYm9ydHMsCi0JICogdGhlcmUgd291bGQgYmUgYSBwcnVuYWJsZSB0dXBs ZSBpbiB0aGUgbmV3YnVmOyBidXQgZm9yIG5vdyB3ZSBjaG9vc2UKLQkgKiBub3QgdG8gb3B0aW1p emUgZm9yIGFib3J0cy4gIE5vdGUgdGhhdCBoZWFwX3hsb2dfdXBkYXRlIG11c3QgYmUga2VwdCBp bgotCSAqIHN5bmMgaWYgdGhpcyBkZWNpc2lvbiBjaGFuZ2VzLgorCSAqIFdlIHNldCB0aGUgbmV3 IHBhZ2UgcHJ1bmFibGUgYXMgd2VsbC4gU2VlIGhlYXBfaW5zZXJ0KCkgZm9yIG1vcmUgb24gd2h5 CisJICogd2UgZG8gdGhpcyB3aGVuIGluc2VydGluZyB0dXBsZXMuCiAJICovCiAJUGFnZVNldFBy dW5hYmxlKHBhZ2UsIHhpZCk7CisJaWYgKG5ld2J1ZiAhPSBidWZmZXIpCisJCVBhZ2VTZXRQcnVu YWJsZShuZXdwYWdlLCB4aWQpOwogCiAJaWYgKHVzZV9ob3RfdXBkYXRlKQogCXsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IDEzMDJiYjEzZTE4Li5mM2Y0MTlkM2RjMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC00NTAsNiArNDUwLDE0IEBA IGhlYXBfeGxvZ19pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZnJlZXNwYWNl ID0gUGFnZUdldEhlYXBGcmVlU3BhY2UocGFnZSk7IC8qIG5lZWRlZCB0byB1cGRhdGUgRlNNIGJl bG93ICovCiAKKwkJLyoKKwkJICogU2V0IHRoZSBwYWdlIHBydW5hYmxlIHRvIHRyaWdnZXIgb24t YWNjZXNzIHBydW5pbmcgbGF0ZXIsIHdoaWNoIG1heQorCQkgKiBzZXQgdGhlIHBhZ2UgYWxsLXZp c2libGUgaW4gdGhlIFZNLiBTZWUgY29tbWVudHMgaW4gaGVhcF9pbnNlcnQoKS4KKwkJICovCisJ CWlmIChUcmFuc2FjdGlvbklkSXNOb3JtYWwoWExvZ1JlY0dldFhpZChyZWNvcmQpKSAmJgorCQkJ IUhlYXBUdXBsZUhlYWRlclhtaW5Gcm96ZW4oaHR1cCkpCisJCQlQYWdlU2V0UHJ1bmFibGUocGFn ZSwgWExvZ1JlY0dldFhpZChyZWNvcmQpKTsKKwogCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7CiAK IAkJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKQEAg LTU5OSwxMiArNjA3LDE5IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NM RUFSRUQpCiAJCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogCi0JCS8qIFhMSF9JTlNFUlRf QUxMX0ZST1pFTl9TRVQgaW1wbGllcyB0aGF0IGFsbCB0dXBsZXMgYXJlIHZpc2libGUgKi8KKwkJ LyoKKwkJICogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRoYXQgYWxsIHR1cGxl cyBhcmUgdmlzaWJsZS4gSWYKKwkJICogd2UgYXJlIG5vdCBzZXR0aW5nIHRoZSBwYWdlIGZyb3pl biwgdGhlbiBzZXQgdGhlIHBhZ2UncyBwcnVuYWJsZQorCQkgKiBoaW50IHNvIHRoYXQgd2UgdHJp Z2dlciBvbi1hY2Nlc3MgcHJ1bmluZyBsYXRlciB3aGljaCBtYXkgc2V0IHRoZQorCQkgKiBwYWdl IGFsbC12aXNpYmxlIGluIHRoZSBWTS4KKwkJICovCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhf SU5TRVJUX0FMTF9GUk9aRU5fU0VUKQogCQl7CiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsK IAkJCVBhZ2VDbGVhclBydW5hYmxlKHBhZ2UpOwogCQl9CisJCWVsc2UKKwkJCVBhZ2VTZXRQcnVu YWJsZShwYWdlLCBYTG9nUmVjR2V0WGlkKHJlY29yZCkpOwogCiAJCU1hcmtCdWZmZXJEaXJ0eShi dWZmZXIpOwogCX0KQEAgLTkyMSw2ICs5MzYsOCBAQCBoZWFwX3hsb2dfdXBkYXRlKFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkLCBib29sIGhvdF91cGRhdGUpCiAJCWZyZWVzcGFjZSA9IFBhZ2VHZXRI ZWFwRnJlZVNwYWNlKG5wYWdlKTsKIAogCQlQYWdlU2V0TFNOKG5wYWdlLCBsc24pOworCQkvKiBT ZWUgaGVhcF9pbnNlcnQoKSBmb3Igd2h5IHdlIHNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0ICov CisJCVBhZ2VTZXRQcnVuYWJsZShucGFnZSwgWExvZ1JlY0dldFhpZChyZWNvcmQpKTsKIAkJTWFy a0J1ZmZlckRpcnR5KG5idWZmZXIpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCAwNjQyNjRhZjFlMS4uMDc3NmNiNmNmYzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0xOTIwLDE2ICsxOTIwLDE0IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hh bmdlZF9scF9ub3JtYWwoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSkK IAkJCXByc3RhdGUtPnNldF9hbGxfdmlzaWJsZSA9IGZhbHNlOwogCQkJcHJzdGF0ZS0+c2V0X2Fs bF9mcm96ZW4gPSBmYWxzZTsKIAotCQkJLyogVGhlIHBhZ2Ugc2hvdWxkIG5vdCBiZSBtYXJrZWQg YWxsLXZpc2libGUgKi8KLQkJCWlmIChQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQotCQkJCWhlYXBf Zml4X3ZtX2NvcnJ1cHRpb24ocHJzdGF0ZSwgb2ZmbnVtKTsKLQogCQkJLyoKLQkJCSAqIElmIHdl IHdhbnRlZCB0byBvcHRpbWl6ZSBmb3IgYWJvcnRzLCB3ZSBtaWdodCBjb25zaWRlciBtYXJraW5n Ci0JCQkgKiB0aGUgcGFnZSBwcnVuYWJsZSB3aGVuIHdlIHNlZSBJTlNFUlRfSU5fUFJPR1JFU1Mu ICBCdXQgd2UKLQkJCSAqIGRvbid0LiAgU2VlIHJlbGF0ZWQgZGVjaXNpb25zIGFib3V0IHdoZW4g dG8gbWFyayB0aGUgcGFnZQotCQkJICogcHJ1bmFibGUgaW4gaGVhcGFtLmMuCisJCQkgKiBUaG91 Z2ggdGhlcmUgaXMgbm90aGluZyAicHJ1bmFibGUiIG9uIHRoZSBwYWdlLCB3ZSBtYWludGFpbgor CQkJICogcGRfcHJ1bmVfeGlkIGZvciBpbnNlcnRzIHNvIHRoYXQgd2UgaGF2ZSB0aGUgb3Bwb3J0 dW5pdHkgdG8KKwkJCSAqIG1hcmsgdGhlbSBhbGwtdmlzaWJsZSBkdXJpbmcgdGhlIG5leHQgcm91 bmQgb2YgcHJ1bmluZy4KIAkJCSAqLworCQkJaGVhcF9wcnVuZV9yZWNvcmRfcHJ1bmFibGUocHJz dGF0ZSwKKwkJCQkJCQkJCSAgIEhlYXBUdXBsZUhlYWRlckdldFhtaW4oaHR1cCksCisJCQkJCQkJ CQkgICBvZmZudW0pOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBIRUFQVFVQTEVfREVMRVRFX0lOX1BS T0dSRVNTOgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmRleC9leHBlY3RlZC9raWxs dHVwbGVzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5v dXQKaW5kZXggYmU3ZGRkNzU2ZWYuLjcwMDE0NGQ2NzgzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0CisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvaW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQKQEAgLTU0LDcgKzU0LDcgQEAgc3RlcCBm bHVzaDogU0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3Vs dDogU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9h Y2Nlc3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxf dGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nl c3NlcwogLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAg ICAgMgogKDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2Fj Y2Vzc2VzID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19z dGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKQEAg LTEzMCw3ICsxMzAsNyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2goKTsKIHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Js a3NfaGl0IC0gY291bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00g Y291bnRlciwgcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9y X3R1cGxlJzsKIG5ld19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAg ICAgICAgIDEKKyAgICAgICAgICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBE QVRFIGNvdW50ZXIgU0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsg aGVhcF9ibGtzX2hpdCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAn a2lsbF9wcmlvcl90dXBsZScpOwpAQCAtMjgzLDcgKzI4Myw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVD VCBGUk9NIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBo ZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMg bmV3X2hlYXBfYWNjZXNzZXMgRlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVS RSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0t LS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJv dykKIAogc3RlcCBtZWFzdXJlOiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChT RUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90 YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7CkBAIC0zMjksNyArMzI5 LDcgQEAgc3RlcCBmbHVzaDogU0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CiBzdGVwIHJlc3VsdDogU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNv dW50ZXIuaGVhcF9hY2Nlc3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBn X3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBu ZXdfaGVhcF9hY2Nlc3NlcwogLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisg ICAgICAgICAgICAgICAgMgogKDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVy IFNFVCBoZWFwX2FjY2Vzc2VzID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19o aXQgRlJPTSBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3Jf dHVwbGUnKTsKLS0gCjIuNDMuMAoK --000000000000b506a0064c637a4a--