Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1phv4B-0004ks-Lc for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Mar 2023 16:24:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1phv4A-0003Lr-Gz for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Mar 2023 16:23:58 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1phv49-0003Lb-EC for pgsql-hackers@lists.postgresql.org; Thu, 30 Mar 2023 16:23:58 +0000 Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1phv3y-0004gH-PG for pgsql-hackers@postgresql.org; Thu, 30 Mar 2023 16:23:56 +0000 Received: by mail-wr1-x429.google.com with SMTP id m2so19683382wrh.6 for ; Thu, 30 Mar 2023 09:23:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680193425; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=0djxdM055cDMUQTDblaOQh6Yy46hN8YoAzvv0qVuxzw=; b=ZGV0rCWEyfGS7Ap9xAp7BScaKPqeQmYwdM93TRurQw6ZJb5ruGsdKTUbJCukU6/LKf 9mxos0oyuvTCSzVsLyhVlsDRTgihfZi/KzCCDZ7zkjesroQ1j2d8IBluEoT6jQ9GX0WB 2dqjUHFQmj34iMzFTMPFG1HjjLJ+5377hpVf7bRsdDgf1Fla5Ayhf8ULw0+32SZrEJU0 9NQEQ/lL6nM94byimnHlaveXwnDbtsGfUkeIqM8drFfhAkOY9tAlQ6iCq3w/vun14igS 5ZKtAfLewKu11gGhNqPUNKq9gfSxpKz6t3IR1wBNiMj6VubFkTtsefIw9Rc4vE0Jcdfd WcoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680193425; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=0djxdM055cDMUQTDblaOQh6Yy46hN8YoAzvv0qVuxzw=; b=Y1Lm1MMPT+8THYJjnstXodpruFVBHMncLmRkkmpKYI7nonl+qV6ssVuKnGJ6Fjnb5y 0i/JSm0KMfIh2XacH3llE+8zqjMIkgpwvTss68kIqdc+tE+jfAejCucuz2Pe8K3SQ5RF Givv4gK1WuASvjqNieU4wYdE7ch0cs+LOL3YiF+/fs3v/FyK8DnDc0YJgdPX0xZeNtq6 i0cZLByKFofuvjHIRiZAFzRblBXHbylwsvzTUuWuRBiFrMnAF8oanfVcQK/jb6sF83mX Aimht6bVeiViHWKBFE/JBfIL65tQY+JtQXDMhe50XaBux2bRq5e00u1GTcdADePPAQTI 6Y+g== X-Gm-Message-State: AAQBX9cl40aXEd0pFHextX+trj0i+1qnwKttcv6wmwPCr3QXuJoqz3Te LbjOqZ+Mr/1axh9RWmITqHI= X-Google-Smtp-Source: AKy350ZAN8lfK3Kbm1gm4iurp5WEYxfpqCSOYk0lej1a75IS4h/9UdAdFXUcsl0B6xjwwJmAK8w1Wg== X-Received: by 2002:adf:ee08:0:b0:2d0:58f9:a6b with SMTP id y8-20020adfee08000000b002d058f90a6bmr5104324wrn.13.1680193424426; Thu, 30 Mar 2023 09:23:44 -0700 (PDT) Received: from [192.168.7.240] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id b13-20020a056000054d00b002da1261aa44sm21519079wrf.48.2023.03.30.09.23.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 30 Mar 2023 09:23:43 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------cEK8MlHwlkB6EI0U6V6XX6R3" Message-ID: Date: Thu, 30 Mar 2023 18:23:41 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: Minimal logical decoding on standbys Content-Language: en-US To: Andres Freund Cc: Jeff Davis , Robert Haas , Thomas Munro , Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers , Melanie Plageman References: <94d9d47e-72f4-393a-246e-e3fe8db7b741@gmail.com> <2d314c22b9e03415aa1c7d8fd1f698dae60effa7.camel@j-davis.com> <061eeb26-156e-6011-02b6-b4b1422e2aa6@gmail.com> <8a7da0c2-b7fe-1c78-4e47-a16239bf4839@gmail.com> <6ab352de1553c1e3d0c7d97c038dc470ca51e772.camel@j-davis.com> <4df984c8-3adb-3b69-0e4e-a491097862ce@gmail.com> <20230330070431.tojeodaeo4zmpofu@awork3.anarazel.de> From: "Drouvot, Bertrand" In-Reply-To: <20230330070431.tojeodaeo4zmpofu@awork3.anarazel.de> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------cEK8MlHwlkB6EI0U6V6XX6R3 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 3/30/23 9:04 AM, Andres Freund wrote: > Hi, > > On 2023-03-04 12:19:57 +0100, Drouvot, Bertrand wrote: >> Subject: [PATCH v52 1/6] Add info in WAL records in preparation for logical >> slot conflict handling. > > This is a very nice commit message. Thanks! Melanie and Robert did provide great feedback/input to help make it as it is now. > I think this commit is ready to go. Unless somebody thinks differently, I > think I might push it tomorrow. Great! Once done, I'll submit a new patch so that GlobalVisTestFor() can make use of the heap relation in vacuumRedirectAndPlaceholder() (which will be possible once 0001 is committed). > >> Subject: [PATCH v52 2/6] Handle logical slot conflicts on standby. > > >> @@ -6807,7 +6808,8 @@ CreateCheckPoint(int flags) >> */ >> XLByteToSeg(RedoRecPtr, _logSegNo, wal_segment_size); >> KeepLogSeg(recptr, &_logSegNo); >> - if (InvalidateObsoleteReplicationSlots(_logSegNo)) >> + InvalidateObsoleteReplicationSlots(_logSegNo, &invalidated, InvalidOid, NULL); >> + if (invalidated) >> { >> /* >> * Some slots have been invalidated; recalculate the old-segment > > I don't really understand why you changed InvalidateObsoleteReplicationSlots > to return void instead of bool, and then added an output boolean argument via > a pointer? > > I gave a second thought and it looks like I over complicated that part. I removed the pointer parameter in V53 attached (and it now returns bool as before). > >> @@ -7964,6 +7968,22 @@ xlog_redo(XLogReaderState *record) >> /* Update our copy of the parameters in pg_control */ >> memcpy(&xlrec, XLogRecGetData(record), sizeof(xl_parameter_change)); >> >> + /* >> + * Invalidate logical slots if we are in hot standby and the primary does not >> + * have a WAL level sufficient for logical decoding. No need to search >> + * for potentially conflicting logically slots if standby is running >> + * with wal_level lower than logical, because in that case, we would >> + * have either disallowed creation of logical slots or invalidated existing >> + * ones. >> + */ >> + if (InRecovery && InHotStandby && >> + xlrec.wal_level < WAL_LEVEL_LOGICAL && >> + wal_level >= WAL_LEVEL_LOGICAL) >> + { >> + TransactionId ConflictHorizon = InvalidTransactionId; >> + InvalidateObsoleteReplicationSlots(InvalidXLogRecPtr, NULL, InvalidOid, &ConflictHorizon); >> + } >> + > > Are there races around changing wal_level? > Humm, not that I can think of right now. Do you have one/some in mind? > >> @@ -855,8 +855,10 @@ ReplicationSlotsComputeRequiredXmin(bool already_locked) >> SpinLockAcquire(&s->mutex); >> effective_xmin = s->effective_xmin; >> effective_catalog_xmin = s->effective_catalog_xmin; >> - invalidated = (!XLogRecPtrIsInvalid(s->data.invalidated_at) && >> - XLogRecPtrIsInvalid(s->data.restart_lsn)); >> + invalidated = ((!XLogRecPtrIsInvalid(s->data.invalidated_at) && >> + XLogRecPtrIsInvalid(s->data.restart_lsn)) >> + || (!TransactionIdIsValid(s->data.xmin) && >> + !TransactionIdIsValid(s->data.catalog_xmin))); >> SpinLockRelease(&s->mutex); >> >> /* invalidated slots need not apply */ > > I still would like a wrapper function to determine whether a slot has been > invalidated. This This is too complicated to be repeated in other places. > > Agree, so adding ObsoleteSlotIsInvalid() and SlotIsInvalid() in V53 attached. ObsoleteSlotIsInvalid() could also be done in a dedicated patch outside this patch series, though. >> @@ -1224,20 +1226,21 @@ ReplicationSlotReserveWal(void) >> } >> >> /* >> - * Helper for InvalidateObsoleteReplicationSlots -- acquires the given slot >> - * and mark it invalid, if necessary and possible. >> + * Helper for InvalidateObsoleteReplicationSlots >> + * >> + * Acquires the given slot and mark it invalid, if necessary and possible. >> * >> * Returns whether ReplicationSlotControlLock was released in the interim (and >> * in that case we're not holding the lock at return, otherwise we are). >> * >> - * Sets *invalidated true if the slot was invalidated. (Untouched otherwise.) >> + * Sets *invalidated true if an obsolete slot was invalidated. (Untouched otherwise.) >> * >> * This is inherently racy, because we release the LWLock >> * for syscalls, so caller must restart if we return true. >> */ >> static bool >> -InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN, >> - bool *invalidated) >> +InvalidatePossiblyObsoleteOrConflictingLogicalSlot(ReplicationSlot *s, XLogRecPtr oldestLSN, >> + bool *invalidated, TransactionId *xid) > > This is too long a name. I'd probably just leave it at the old name. > > Done in V53 attached. > >> @@ -1261,18 +1267,33 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN, >> * Check if the slot needs to be invalidated. If it needs to be >> * invalidated, and is not currently acquired, acquire it and mark it >> * as having been invalidated. We do this with the spinlock held to >> - * avoid race conditions -- for example the restart_lsn could move >> - * forward, or the slot could be dropped. >> + * avoid race conditions -- for example the restart_lsn (or the >> + * xmin(s) could) move forward or the slot could be dropped. >> */ >> SpinLockAcquire(&s->mutex); >> >> restart_lsn = s->data.restart_lsn; >> + slot_xmin = s->data.xmin; >> + slot_catalog_xmin = s->data.catalog_xmin; >> + >> + /* slot has been invalidated (logical decoding conflict case) */ >> + if ((xid && >> + ((LogicalReplicationSlotIsInvalid(s)) >> + || >> > > Uh, huh? > > That's very odd formatting. > >> /* >> - * If the slot is already invalid or is fresh enough, we don't need to >> - * do anything. >> + * We are not forcing for invalidation because the xid is valid and >> + * this is a non conflicting slot. >> */ >> - if (XLogRecPtrIsInvalid(restart_lsn) || restart_lsn >= oldestLSN) >> + (TransactionIdIsValid(*xid) && !( >> + (TransactionIdIsValid(slot_xmin) && TransactionIdPrecedesOrEquals(slot_xmin, *xid)) >> + || >> + (TransactionIdIsValid(slot_catalog_xmin) && TransactionIdPrecedesOrEquals(slot_catalog_xmin, *xid)) >> + )) >> + )) >> + || >> + /* slot has been invalidated (obsolete LSN case) */ >> + (!xid && (XLogRecPtrIsInvalid(restart_lsn) || restart_lsn >= oldestLSN))) >> { >> SpinLockRelease(&s->mutex); >> if (released_lock) > > > This needs some cleanup. Added a new macro LogicalReplicationSlotXidsConflict() and reformatted a bit. Also ran pgindent on it, hope it's cleaner now. > > >> @@ -1292,9 +1313,16 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN, >> { >> MyReplicationSlot = s; >> s->active_pid = MyProcPid; >> - s->data.invalidated_at = restart_lsn; >> - s->data.restart_lsn = InvalidXLogRecPtr; >> - >> + if (xid) >> + { >> + s->data.xmin = InvalidTransactionId; >> + s->data.catalog_xmin = InvalidTransactionId; >> + } >> + else >> + { >> + s->data.invalidated_at = restart_lsn; >> + s->data.restart_lsn = InvalidXLogRecPtr; >> + } >> /* Let caller know */ >> *invalidated = true; >> } >> @@ -1327,15 +1355,39 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN, >> */ >> if (last_signaled_pid != active_pid) >> { >> - ereport(LOG, >> - errmsg("terminating process %d to release replication slot \"%s\"", >> - active_pid, NameStr(slotname)), >> - errdetail("The slot's restart_lsn %X/%X exceeds the limit by %llu bytes.", >> - LSN_FORMAT_ARGS(restart_lsn), >> - (unsigned long long) (oldestLSN - restart_lsn)), >> - errhint("You might need to increase max_slot_wal_keep_size.")); >> + if (xid) >> + { >> + if (TransactionIdIsValid(*xid)) >> + { >> + ereport(LOG, >> + errmsg("terminating process %d because replication slot \"%s\" conflicts with recovery", >> + active_pid, NameStr(slotname)), >> + errdetail("The slot conflicted with xid horizon %u.", >> + *xid)); >> + } >> + else >> + { >> + ereport(LOG, >> + errmsg("terminating process %d because replication slot \"%s\" conflicts with recovery", >> + active_pid, NameStr(slotname)), >> + errdetail("Logical decoding on standby requires wal_level to be at least logical on the primary server")); >> + } >> + >> + (void) SendProcSignal(active_pid, PROCSIG_RECOVERY_CONFLICT_LOGICALSLOT, InvalidBackendId); >> + } >> + else >> + { >> + ereport(LOG, >> + errmsg("terminating process %d to release replication slot \"%s\"", >> + active_pid, NameStr(slotname)), >> + errdetail("The slot's restart_lsn %X/%X exceeds the limit by %llu bytes.", >> + LSN_FORMAT_ARGS(restart_lsn), >> + (unsigned long long) (oldestLSN - restart_lsn)), >> + errhint("You might need to increase max_slot_wal_keep_size.")); >> + >> + (void) kill(active_pid, SIGTERM); > > I think it ought be possible to deduplicate this a fair bit. For one, two of > the errmsg()s above are identical. But I think this could be consolidated > further, e.g. by using the same message style for the three cases, and passing > in a separately translated reason for the termination? > deduplication done in V53 so that there is a single ereport() call. I'm not sure the translation is fine the way I did it, please advice if that's not right. > >> + } >> >> - (void) kill(active_pid, SIGTERM); >> last_signaled_pid = active_pid; >> } >> >> @@ -1369,13 +1421,33 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN, >> ReplicationSlotSave(); >> ReplicationSlotRelease(); >> >> - ereport(LOG, >> - errmsg("invalidating obsolete replication slot \"%s\"", >> - NameStr(slotname)), >> - errdetail("The slot's restart_lsn %X/%X exceeds the limit by %llu bytes.", >> - LSN_FORMAT_ARGS(restart_lsn), >> - (unsigned long long) (oldestLSN - restart_lsn)), >> - errhint("You might need to increase max_slot_wal_keep_size.")); >> + if (xid) >> + { >> + pgstat_drop_replslot(s); > > Why is this done here now? > > Oops, moved above the if() in V53. >> + if (TransactionIdIsValid(*xid)) >> + { >> + ereport(LOG, >> + errmsg("invalidating slot \"%s\" because it conflicts with recovery", NameStr(slotname)), >> + errdetail("The slot conflicted with xid horizon %u.", *xid)); >> + } >> + else >> + { >> + ereport(LOG, >> + errmsg("invalidating slot \"%s\" because it conflicts with recovery", NameStr(slotname)), >> + errdetail("Logical decoding on standby requires wal_level to be at least logical on the primary server")); >> + } >> + } >> + else >> + { >> + ereport(LOG, >> + errmsg("invalidating obsolete replication slot \"%s\"", >> + NameStr(slotname)), >> + errdetail("The slot's restart_lsn %X/%X exceeds the limit by %llu bytes.", >> + LSN_FORMAT_ARGS(restart_lsn), >> + (unsigned long long) (oldestLSN - restart_lsn)), >> + errhint("You might need to increase max_slot_wal_keep_size.")); >> + } >> > > I don't like all these repeated elogs... deduplication done in V53 so that there is a single ereport() call. I'm not sure the translation is fine the way I did it, please advice if that's not right. > > > >> @@ -3057,6 +3060,27 @@ RecoveryConflictInterrupt(ProcSignalReason reason) >> case PROCSIG_RECOVERY_CONFLICT_LOCK: >> case PROCSIG_RECOVERY_CONFLICT_TABLESPACE: >> case PROCSIG_RECOVERY_CONFLICT_SNAPSHOT: >> + case PROCSIG_RECOVERY_CONFLICT_LOGICALSLOT: >> + >> + /* >> + * For conflicts that require a logical slot to be >> + * invalidated, the requirement is for the signal receiver to >> + * release the slot, so that it could be invalidated by the >> + * signal sender. So for normal backends, the transaction >> + * should be aborted, just like for other recovery conflicts. >> + * But if it's walsender on standby, we don't want to go >> + * through the following IsTransactionOrTransactionBlock() >> + * check, so break here. >> + */ >> + if (am_cascading_walsender && >> + reason == PROCSIG_RECOVERY_CONFLICT_LOGICALSLOT && >> + MyReplicationSlot && SlotIsLogical(MyReplicationSlot)) >> + { >> + RecoveryConflictPending = true; >> + QueryCancelPending = true; >> + InterruptPending = true; >> + break; >> + } >> >> /* >> * If we aren't in a transaction any longer then ignore. > > I can't see any reason for this to be mixed into the same case "body" as LOCK > etc? > Oh right, nice catch. I don't know how it ended up done that way. Fixed in V53. > >> diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c >> index 38c6f18886..290d4b45f4 100644 >> --- a/src/backend/replication/slot.c >> +++ b/src/backend/replication/slot.c >> @@ -51,6 +51,7 @@ >> #include "storage/proc.h" >> #include "storage/procarray.h" >> #include "utils/builtins.h" >> +#include "access/xlogrecovery.h" > > Add new includes in the "alphabetically" right place... Fixed in 0003 in V53 and the other places (aka other sub-patches) where it was needed. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------cEK8MlHwlkB6EI0U6V6XX6R3 Content-Type: text/plain; charset=UTF-8; name="v53-0006-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v53-0006-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiMDRjNWVkYmVmMTliOWYwMWUxZjRkNGE5ZTAwNjM1YmM1YjU5ZTlkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDE0OjA4OjExICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTMgNi82XSBEb2MgY2hhbmdlcyBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgbG9naWNh bAogZGVjb2RpbmcuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNp b24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVy dHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRl IFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sIHwg MjIgKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlv bnMoKykKIDEwMC4wJSBkb2Mvc3JjL3NnbWwvCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5z Z21sCmluZGV4IDRlOTEyYjRiZDQuLjNkYTI1NGVkMWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRl Y29kaW5nLnNnbWwKQEAgLTMxNiw2ICszMTYsMjggQEAgcG9zdGdyZXM9IyBzZWxlY3QgKiBm cm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVM TCwgTlUKICAgICAgbWF5IGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEgc2xvdCBhdCBhbnkgZ2l2 ZW4gdGltZS4KICAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgQSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgY2FuIGFsc28gYmUgY3JlYXRlZCBvbiBhIGhvdCBzdGFuZGJ5LiBU byBwcmV2ZW50CisgICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gZnJvbSByZW1vdmlu ZyByZXF1aXJlZCByb3dzIGZyb20gdGhlIHN5c3RlbQorICAgICBjYXRhbG9ncywgPHZhcm5h bWU+aG90X3N0YW5kYnlfZmVlZGJhY2s8L3Zhcm5hbWU+IHNob3VsZCBiZSBzZXQgb24gdGhl CisgICAgIHN0YW5kYnkuIEluIHNwaXRlIG9mIHRoYXQsIGlmIGFueSByZXF1aXJlZCByb3dz IGdldCByZW1vdmVkLCB0aGUgc2xvdCBnZXRzCisgICAgIGludmFsaWRhdGVkLiBJdCdzIGhp Z2hseSByZWNvbW1lbmRlZCB0byB1c2UgYSBwaHlzaWNhbCBzbG90IGJldHdlZW4gdGhlIHBy aW1hcnkKKyAgICAgYW5kIHRoZSBzdGFuZGJ5LiBPdGhlcndpc2UsIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHdpbGwgd29yaywgYnV0IG9ubHkgd2hpbGUgdGhlCisgICAgIGNvbm5lY3Rpb24g aXMgYWxpdmUgKGZvciBleGFtcGxlIGEgbm9kZSByZXN0YXJ0IHdvdWxkIGJyZWFrIGl0KS4g RXhpc3RpbmcKKyAgICAgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGFsc28gZ2V0IGludmFs aWRhdGVkIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIHJlZHVjZWQgdG8KKyAgICAgbGVz cyB0aGFuICdsb2dpY2FsJy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgRm9y IGEgbG9naWNhbCBzbG90IHRvIGJlIGNyZWF0ZWQsIGl0IGJ1aWxkcyBhIGhpc3RvcmljIHNu YXBzaG90LCBmb3Igd2hpY2gKKyAgICAgaW5mb3JtYXRpb24gb2YgYWxsIHRoZSBjdXJyZW50 bHkgcnVubmluZyB0cmFuc2FjdGlvbnMgaXMgZXNzZW50aWFsLiBPbgorICAgICBwcmltYXJ5 LCB0aGlzIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgYnV0IG9uIHN0YW5kYnksIHRoaXMg aW5mb3JtYXRpb24KKyAgICAgaGFzIHRvIGJlIG9idGFpbmVkIGZyb20gcHJpbWFyeS4gU28s IHNsb3QgY3JlYXRpb24gbWF5IHdhaXQgZm9yIHNvbWUKKyAgICAgYWN0aXZpdHkgdG8gaGFw cGVuIG9uIHRoZSBwcmltYXJ5LiBJZiB0aGUgcHJpbWFyeSBpcyBpZGxlLCBjcmVhdGluZyBh CisgICAgIGxvZ2ljYWwgc2xvdCBvbiBzdGFuZGJ5IG1heSB0YWtlIGEgbm90aWNlYWJsZSB0 aW1lLiBPbmUgb3B0aW9uIHRvIHNwZWVkIGl0CisgICAgIGlzIHRvIGNhbGwgdGhlIDxmdW5j dGlvbj5wZ19sb2dfc3RhbmRieV9zbmFwc2hvdDwvZnVuY3Rpb24+IG9uIHRoZSBwcmltYXJ5 LgorICAgIDwvcGFyYT4KKwogICAgIDxjYXV0aW9uPgogICAgICA8cGFyYT4KICAgICAgIFJl cGxpY2F0aW9uIHNsb3RzIHBlcnNpc3QgYWNyb3NzIGNyYXNoZXMgYW5kIGtub3cgbm90aGlu ZyBhYm91dCB0aGUgc3RhdGUKLS0gCjIuMzQuMQoK --------------cEK8MlHwlkB6EI0U6V6XX6R3 Content-Type: text/plain; charset=UTF-8; name="v53-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v53-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSBhN2UwZjUwZjI2ZTU4MzkwOTBmNDQwZTUxMzRmZWMwNzExOTZkOTBjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA5OjA0OjEyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTMgNS82XSBOZXcgVEFQIHRlc3QgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRi eS4KCkluIGFkZGl0aW9uIHRvIHRoZSBuZXcgVEFQIHRlc3QsIHRoaXMgY29tbWl0IGludHJv ZHVjZXMgYSBuZXcgcGdfbG9nX3N0YW5kYnlfc25hcHNob3QoKQpmdW5jdGlvbi4KClRoZSBp ZGVhIGlzIHRvIGJlIGFibGUgdG8gdGFrZSBhIHNuYXBzaG90IG9mIHJ1bm5pbmcgdHJhbnNh Y3Rpb25zIGFuZCB3cml0ZSB0aGlzCnRvIFdBTCB3aXRob3V0IHJlcXVlc3RpbmcgZm9yIGEg KGNvc3RseSkgY2hlY2twb2ludC4KCkF1dGhvcjogQ3JhaWcgUmluZ2VyIChpbiBhbiBvbGRl ciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJy aXppbyBkZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxNSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nZnVuY3MuYyAgICAgICAgfCAgMzIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f ZnVuY3Rpb25zLnNxbCAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv VGVzdC9DbHVzdGVyLnBtICAgICAgfCAgMzcgKwogc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24u YnVpbGQgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi90LzAzNV9zdGFuZGJ5X2xvZ2lj YWxfZGVjb2RpbmcucGwgICAgICAgICB8IDcxMCArKysrKysrKysrKysrKysrKysKIDcgZmls ZXMgY2hhbmdlZCwgODAwIGluc2VydGlvbnMoKykKICAgMy4xJSBzcmMvYmFja2VuZC8KICAg NC4wJSBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC8KICA4OS43JSBzcmMvdGVzdC9y ZWNvdmVyeS90LwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDM4ZTdmNDY3NjAuLmYxNWQ2NDdlYWMgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMu c2dtbApAQCAtMjY5NTQsNiArMjY5NTQsMjEgQEAgcG9zdGdyZXM9IyBTRUxFQ1QgJzAvMCc6 OnBnX2xzbiArIHBkLnNlZ21lbnRfbnVtYmVyICogcHMuc2V0dGluZzo6aW50ICsgOm9mZnNl dAogICAgICAgICBwcmVwYXJlZCB3aXRoIDx4cmVmIGxpbmtlbmQ9InNxbC1wcmVwYXJlLXRy YW5zYWN0aW9uIi8+LgogICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAgPC9yb3c+Cisg ICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAg ICA8cHJpbWFyeT5wZ19sb2dfc3RhbmRieV9zbmFwc2hvdDwvcHJpbWFyeT4KKyAgICAgICAg PC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19sb2dfc3RhbmRieV9zbmFwc2hv dDwvZnVuY3Rpb24+ICgpCisgICAgICAgIDxyZXR1cm52YWx1ZT5wZ19sc248L3JldHVybnZh bHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGFrZSBhIHNu YXBzaG90IG9mIHJ1bm5pbmcgdHJhbnNhY3Rpb25zIGFuZCB3cml0ZSB0aGlzIHRvIFdBTCB3 aXRob3V0CisgICAgICAgIGhhdmluZyB0byB3YWl0IGJnd3JpdGVyIG9yIGNoZWNrcG9pbnRl ciB0byBsb2cgb25lLiBUaGlzIG9uZSBpcyB1c2VmdWwgZm9yCisgICAgICAgIGxvZ2ljYWwg ZGVjb2Rpbmcgb24gc3RhbmRieSBmb3Igd2hpY2ggbG9naWNhbCBzbG90IGNyZWF0aW9uIGlz IGhhbmdpbmcKKyAgICAgICAgdW50aWwgc3VjaCBhIHJlY29yZCBpcyByZXBsYXllZCBvbiB0 aGUgc3RhbmRieS4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93PgogICAg ICA8L3Rib2R5PgogICAgIDwvdGdyb3VwPgogICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggYzA3ZGFhODc0Zi4uNDgxZTlhNDdkYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKQEAgLTM4LDYgKzM4 LDcgQEAKICNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKICNpbmNsdWRlICJ1dGlscy90aW1l c3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0b3JlLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9zdGFuZGJ5LmgiCiAKIC8qCiAgKiBCYWNrdXAtcmVsYXRlZCB2YXJpYWJsZXMuCkBA IC0xOTYsNiArMTk3LDM3IEBAIHBnX3N3aXRjaF93YWwoUEdfRlVOQ1RJT05fQVJHUykKIAlQ R19SRVRVUk5fTFNOKHN3aXRjaHBvaW50KTsKIH0KIAorLyoKKyAqIHBnX2xvZ19zdGFuZGJ5 X3NuYXBzaG90OiBjYWxsIExvZ1N0YW5kYnlTbmFwc2hvdCgpCisgKgorICogUGVybWlzc2lv biBjaGVja2luZyBmb3IgdGhpcyBmdW5jdGlvbiBpcyBtYW5hZ2VkIHRocm91Z2ggdGhlIG5v cm1hbAorICogR1JBTlQgc3lzdGVtLgorICovCitEYXR1bQorcGdfbG9nX3N0YW5kYnlfc25h cHNob3QoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlYTG9nUmVjUHRyCXJlY3B0cjsKKworCWlm IChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJy bXNnKCJyZWNvdmVyeSBpcyBpbiBwcm9ncmVzcyIpLAorCQkJCSBlcnJoaW50KCJwZ19sb2df c3RhbmRieV9zbmFwc2hvdCgpIGNhbm5vdCBiZSBleGVjdXRlZCBkdXJpbmcgcmVjb3Zlcnku IikpKTsKKworCWlmICghWExvZ1N0YW5kYnlJbmZvQWN0aXZlKCkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCisJCQkJIGVycm1zZygid2FsX2xldmVsIGlzIG5vdCBpbiBkZXNpcmVkIHN0YXRl IiksCisJCQkJIGVycmhpbnQoIndhbF9sZXZlbCBoYXMgdG8gYmUgPj0gV0FMX0xFVkVMX1JF UExJQ0EuIikpKTsKKworCXJlY3B0ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgpOworCisJLyoK KwkgKiBBcyBhIGNvbnZlbmllbmNlLCByZXR1cm4gdGhlIFdBTCBsb2NhdGlvbiBvZiB0aGUg bGFzdCBpbnNlcnRlZCByZWNvcmQKKwkgKi8KKwlQR19SRVRVUk5fTFNOKHJlY3B0cik7Cit9 CisKIC8qCiAgKiBwZ19jcmVhdGVfcmVzdG9yZV9wb2ludDogYSBuYW1lZCBwb2ludCBmb3Ig cmVzdG9yZQogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1 bmN0aW9ucy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3Fs CmluZGV4IDgzY2E4OTM0NDQuLmI3YzY1ZWEzN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fZnVuY3Rpb25zLnNxbApAQCAtNjQ0LDYgKzY0NCw4IEBAIFJFVk9LRSBFWEVD VVRFIE9OIEZVTkNUSU9OIHBnX2NyZWF0ZV9yZXN0b3JlX3BvaW50KHRleHQpIEZST00gcHVi bGljOwogCiBSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19zd2l0Y2hfd2FsKCkgRlJP TSBwdWJsaWM7CiAKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19zdGFuZGJ5 X3NuYXBzaG90KCkgRlJPTSBwdWJsaWM7CisKIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9O IHBnX3dhbF9yZXBsYXlfcGF1c2UoKSBGUk9NIHB1YmxpYzsKIAogUkVWT0tFIEVYRUNVVEUg T04gRlVOQ1RJT04gcGdfd2FsX3JlcGxheV9yZXN1bWUoKSBGUk9NIHB1YmxpYzsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDA2YjM2NjM1ZjkuLjlmOWZjZTczODggMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNjQyNiw2ICs2NDI2LDkgQEAKIHsgb2lkID0+ ICcyODQ4JywgZGVzY3IgPT4gJ3N3aXRjaCB0byBuZXcgd2FsIGZpbGUnLAogICBwcm9uYW1l ID0+ICdwZ19zd2l0Y2hfd2FsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ ICdwZ19sc24nLAogICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdwZ19zd2l0Y2hf d2FsJyB9LAoreyBvaWQgPT4gJzk2NTgnLCBkZXNjciA9PiAnbG9nIGRldGFpbHMgb2YgdGhl IGN1cnJlbnQgc25hcHNob3QgdG8gV0FMJywKKyAgcHJvbmFtZSA9PiAncGdfbG9nX3N0YW5k Ynlfc25hcHNob3QnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3BnX2xz bicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3BnX2xvZ19zdGFuZGJ5X3Nu YXBzaG90JyB9LAogeyBvaWQgPT4gJzMwOTgnLCBkZXNjciA9PiAnY3JlYXRlIGEgbmFtZWQg cmVzdG9yZSBwb2ludCcsCiAgIHByb25hbWUgPT4gJ3BnX2NyZWF0ZV9yZXN0b3JlX3BvaW50 JywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBlID0+ICdwZ19sc24nLCBwcm9h cmd0eXBlcyA9PiAndGV4dCcsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVT UUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1 c3Rlci5wbQppbmRleCBhM2FlZjhiNWU5Li42MjM3NmRlNjAyIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCisrKyBiL3NyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTMwNzYsNiArMzA3Niw0MyBAQCAk U0lHe1RFUk19ID0gJFNJR3tJTlR9ID0gc3ViIHsKIAogPXBvZAogCis9aXRlbSAkbm9kZS0+ Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KHNlbGYsIHByaW1hcnksIHNsb3RfbmFt ZSwgZGJuYW1lKQorCitDcmVhdGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IG9uIGdpdmVu IHN0YW5kYnkKKworPWN1dAorCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5 Cit7CisJbXkgKCRzZWxmLCAkcHJpbWFyeSwgJHNsb3RfbmFtZSwgJGRibmFtZSkgPSBAXzsK KwlteSAoJHN0ZG91dCwgJHN0ZGVycik7CisKKwlteSAkaGFuZGxlOworCisJJGhhbmRsZSA9 IElQQzo6UnVuOjpzdGFydChbJ3BnX3JlY3Zsb2dpY2FsJywgJy1kJywgJHNlbGYtPmNvbm5z dHIoJGRibmFtZSksICctUCcsICd0ZXN0X2RlY29kaW5nJywgJy1TJywgJHNsb3RfbmFtZSwg Jy0tY3JlYXRlLXNsb3QnXSwgJz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIpOworCisJ IyBPbmNlIHNsb3QgcmVzdGFydF9sc24gaXMgY3JlYXRlZCwgdGhlIHN0YW5kYnkgbG9va3Mg Zm9yIHhsX3J1bm5pbmdfeGFjdHMKKwkjIFdBTCByZWNvcmQgZnJvbSB0aGUgcmVzdGFydF9s c24gb253YXJkcy4gU28gZmlyc3RseSwgd2FpdCB1bnRpbCB0aGUgc2xvdAorCSMgcmVzdGFy dF9sc24gaXMgZXZhbHVhdGVkLgorCisJJHNlbGYtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdw b3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgcmVzdGFydF9sc24gSVMgTk9UIE5VTEwKKwkJRlJP TSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICck c2xvdF9uYW1lJworCV0pIG9yIGRpZSAidGltZWQgb3V0IHdhaXRpbmcgZm9yIGxvZ2ljYWwg c2xvdCB0byBjYWxjdWxhdGUgaXRzIHJlc3RhcnRfbHNuIjsKKworCSMgTm93IGFycmFuZ2Ug Zm9yIHRoZSB4bF9ydW5uaW5nX3hhY3RzIHJlY29yZCBmb3Igd2hpY2ggcGdfcmVjdmxvZ2lj YWwKKwkjIGlzIHdhaXRpbmcuCisJJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn U0VMRUNUIHBnX2xvZ19zdGFuZGJ5X3NuYXBzaG90KCknKTsKKworCSRoYW5kbGUtPmZpbmlz aCgpOworCisJaXMoJHNlbGYtPnNsb3QoJHNsb3RfbmFtZSktPnsnc2xvdF90eXBlJ30sICds b2dpY2FsJywgJHNsb3RfbmFtZSAuICcgb24gc3RhbmRieSBjcmVhdGVkJykKKwkJb3IgZGll ICJjb3VsZCBub3QgY3JlYXRlIHNsb3QiIC4gJHNsb3RfbmFtZTsKK30KKworPXBvZAorCiA9 YmFjawogCiA9Y3V0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWls ZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCmluZGV4IDU5NDY1Yjk3ZjMuLmU4 MzRhZDVlMGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCisr KyBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC00MCw2ICs0MCw3IEBAIHRl c3RzICs9IHsKICAgICAgICd0LzAzMl9yZWxmaWxlbm9kZV9yZXVzZS5wbCcsCiAgICAgICAn dC8wMzNfcmVwbGF5X3RzcF9kcm9wcy5wbCcsCiAgICAgICAndC8wMzRfY3JlYXRlX2RhdGFi YXNlLnBsJywKKyAgICAgICd0LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwnLAog ICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9z dGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9z dGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uOGM0NTE4MGMzNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbApAQCAtMCwwICsxLDcx MCBAQAorIyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgOiB0ZXN0IGxvZ2ljYWwgZGVj b2RpbmcsCisjIHJlY292ZXJ5IGNvbmZsaWN0IGFuZCBzdGFuZGJ5IHByb21vdGlvbi4KKwor dXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZSB0 ZXN0cyA9PiA2NzsKKworbXkgKCRzdGRpbiwgJHN0ZG91dCwgJHN0ZGVyciwgJGNhc2NhZGlu Z19zdGRvdXQsICRjYXNjYWRpbmdfc3RkZXJyLCAkcmV0LCAkaGFuZGxlLCAkc2xvdCk7CisK K215ICRub2RlX3ByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3By aW1hcnknKTsKK215ICRub2RlX3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ3N0YW5kYnknKTsKK215ICRub2RlX2Nhc2NhZGluZ19zdGFuZGJ5ID0gUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdjYXNjYWRpbmdfc3RhbmRieScpOworbXkgJGRl ZmF1bHRfdGltZW91dCA9ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZh dWx0OworbXkgJHJlczsKKworIyBOYW1lIGZvciB0aGUgcGh5c2ljYWwgc2xvdCBvbiBwcmlt YXJ5CitteSAkcHJpbWFyeV9zbG90bmFtZSA9ICdwcmltYXJ5X3BoeXNpY2FsJzsKK215ICRz dGFuZGJ5X3BoeXNpY2FsX3Nsb3RuYW1lID0gJ3N0YW5kYnlfcGh5c2ljYWwnOworCisjIGZp bmQgJHBhdCBpbiBsb2dmaWxlIG9mICRub2RlIGFmdGVyICRvZmYtdGggYnl0ZQorc3ViIGZp bmRfaW5fbG9nCit7CisJbXkgKCRub2RlLCAkcGF0LCAkb2ZmKSA9IEBfOworCisJJG9mZiA9 IDAgdW5sZXNzIGRlZmluZWQgJG9mZjsKKwlteSAkbG9nID0gUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM6OnNsdXJwX2ZpbGUoJG5vZGUtPmxvZ2ZpbGUpOworCXJldHVybiAwIGlmIChsZW5n dGgoJGxvZykgPD0gJG9mZik7CisKKwkkbG9nID0gc3Vic3RyKCRsb2csICRvZmYpOworCisJ cmV0dXJuICRsb2cgPX4gbS8kcGF0LzsKK30KKworIyBGZXRjaCB4bWluIGNvbHVtbnMgZnJv bSBzbG90J3MgcGdfcmVwbGljYXRpb25fc2xvdHMgcm93LCBhZnRlciB3YWl0aW5nIGZvcgor IyBnaXZlbiBib29sZWFuIGNvbmRpdGlvbiB0byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSBy ZWFjaGVkIGEgcXVpZXNjZW50IHN0YXRlLgorc3ViIHdhaXRfZm9yX3htaW5zCit7CisJbXkg KCRub2RlLCAkc2xvdG5hbWUsICRjaGVja19leHByKSA9IEBfOworCisJJG5vZGUtPnBvbGxf cXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgJGNoZWNrX2V4cHIK KwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3Rf bmFtZSA9ICckc2xvdG5hbWUnOworCV0pIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9y IHNsb3QgeG1pbnMgdG8gYWR2YW5jZSI7Cit9CisKKyMgQ3JlYXRlIHRoZSByZXF1aXJlZCBs b2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkuCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdHMKK3sK KwlteSAoJG5vZGUpID0gQF87CisJJG5vZGUtPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3Rh bmRieSgkbm9kZV9wcmltYXJ5LCAnaW5hY3RpdmVzbG90JywgJ3Rlc3RkYicpOworCSRub2Rl LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ2FjdGl2 ZXNsb3QnLCAndGVzdGRiJyk7Cit9CisKKyMgRHJvcCB0aGUgbG9naWNhbCBzbG90cyBvbiBz dGFuZGJ5Lgorc3ViIGRyb3BfbG9naWNhbF9zbG90cworeworCSRub2RlX3N0YW5kYnktPnBz cWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdpbmFj dGl2ZXNsb3QnKV0pOworCSRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxF Q1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3RpdmVzbG90JyldKTsKK30KKworIyBB Y3F1aXJlIG9uZSBvZiB0aGUgc3RhbmRieSBsb2dpY2FsIHNsb3RzIGNyZWF0ZWQgYnkgY3Jl YXRlX2xvZ2ljYWxfc2xvdHMoKS4KKyMgSW4gY2FzZSB3YWl0IGlzIHRydWUgd2UgYXJlIHdh aXRpbmcgZm9yIGFuIGFjdGl2ZSBwaWQgb24gdGhlICdhY3RpdmVzbG90JyBzbG90LgorIyBJ ZiB3YWl0IGlzIG5vdCB0cnVlIGl0IG1lYW5zIHdlIGFyZSB0ZXN0aW5nIGEga25vd24gZmFp bHVyZSBzY2VuYXJpby4KK3N1YiBtYWtlX3Nsb3RfYWN0aXZlCit7CisJbXkgKCRub2RlLCAk d2FpdCwgJHRvX3N0ZG91dCwgJHRvX3N0ZGVycikgPSBAXzsKKwlteSAkc2xvdF91c2VyX2hh bmRsZTsKKworCSRzbG90X3VzZXJfaGFuZGxlID0gSVBDOjpSdW46OnN0YXJ0KFsncGdfcmVj dmxvZ2ljYWwnLCAnLWQnLCAkbm9kZS0+Y29ubnN0cigndGVzdGRiJyksICctUycsICdhY3Rp dmVzbG90JywgJy1vJywgJ2luY2x1ZGUteGlkcz0wJywgJy1vJywgJ3NraXAtZW1wdHkteGFj dHM9MScsICctLW5vLWxvb3AnLCAnLS1zdGFydCcsICctZicsICctJ10sICc+JywgJHRvX3N0 ZG91dCwgJzI+JywgJHRvX3N0ZGVycik7CisKKwlpZiAoJHdhaXQpCisJeworCQkjIG1ha2Ug c3VyZSBhY3RpdmVzbG90IGlzIGluIHVzZQorCQkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgn dGVzdGRiJywKKwkJCSJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX3JlcGxpY2F0 aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdhY3RpdmVzbG90JyBBTkQgYWN0aXZlX3Bp ZCBJUyBOT1QgTlVMTCkiCisJCSkgb3IgZGllICJzbG90IG5ldmVyIGJlY2FtZSBhY3RpdmUi OworCX0KKwlyZXR1cm4gJHNsb3RfdXNlcl9oYW5kbGU7Cit9CisKKyMgQ2hlY2sgcGdfcmVj dmxvZ2ljYWwgc3RkZXJyCitzdWIgY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyCit7CisJ bXkgKCRzbG90X3VzZXJfaGFuZGxlLCAkY2hlY2tfc3RkZXJyKSA9IEBfOworCW15ICRyZXR1 cm47CisKKwkjIG91ciBjbGllbnQgc2hvdWxkJ3ZlIHRlcm1pbmF0ZWQgaW4gcmVzcG9uc2Ug dG8gdGhlIHdhbHNlbmRlciBlcnJvcgorCSRzbG90X3VzZXJfaGFuZGxlLT5maW5pc2g7CisJ JHJldHVybiA9ICQ/OworCWNtcF9vaygkcmV0dXJuLCAiIT0iLCAwLCAicGdfcmVjdmxvZ2lj YWwgZXhpdGVkIG5vbi16ZXJvIik7CisJaWYgKCRyZXR1cm4pIHsKKwkJbGlrZSgkc3RkZXJy LCBxci8kY2hlY2tfc3RkZXJyLywgJ3Nsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQnKTsKKwl9 CisKKwlyZXR1cm4gMDsKK30KKworIyBDaGVjayBpZiBhbGwgdGhlIHNsb3RzIG9uIHN0YW5k YnkgYXJlIGRyb3BwZWQuIFRoZXNlIGluY2x1ZGUgdGhlICdhY3RpdmVzbG90JworIyB0aGF0 IHdhcyBhY3F1aXJlZCBieSBtYWtlX3Nsb3RfYWN0aXZlKCksIGFuZCB0aGUgbm9uLWFjdGl2 ZSAnaW5hY3RpdmVzbG90Jy4KK3N1YiBjaGVja19zbG90c19kcm9wcGVkCit7CisJbXkgKCRz bG90X3VzZXJfaGFuZGxlKSA9IEBfOworCisJaXMoJG5vZGVfc3RhbmRieS0+c2xvdCgnaW5h Y3RpdmVzbG90JyktPnsnc2xvdF90eXBlJ30sICcnLCAnaW5hY3RpdmVzbG90IG9uIHN0YW5k YnkgZHJvcHBlZCcpOworCWlzKCRub2RlX3N0YW5kYnktPnNsb3QoJ2FjdGl2ZXNsb3QnKS0+ eydzbG90X3R5cGUnfSwgJycsICdhY3RpdmVzbG90IG9uIHN0YW5kYnkgZHJvcHBlZCcpOwor CisJY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRzbG90X3VzZXJfaGFuZGxlLCAiY29u ZmxpY3Qgd2l0aCByZWNvdmVyeSIpOworfQorCisjIENoZWNrIGlmIGFsbCB0aGUgc2xvdHMg b24gc3RhbmRieSBhcmUgZHJvcHBlZC4gVGhlc2UgaW5jbHVkZSB0aGUgJ2FjdGl2ZXNsb3Qn CisjIHRoYXQgd2FzIGFjcXVpcmVkIGJ5IG1ha2Vfc2xvdF9hY3RpdmUoKSwgYW5kIHRoZSBu b24tYWN0aXZlICdpbmFjdGl2ZXNsb3QnLgorc3ViIGNoYW5nZV9ob3Rfc3RhbmRieV9mZWVk YmFja19hbmRfd2FpdF9mb3JfeG1pbnMKK3sKKwlteSAoJGhzZiwgJGludmFsaWRhdGVkKSA9 IEBfOworCisJJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics cXFbCisJaG90X3N0YW5kYnlfZmVlZGJhY2sgPSAkaHNmCisJXSk7CisKKwkkbm9kZV9zdGFu ZGJ5LT5yZWxvYWQ7CisKKwlpZiAoJGhzZiAmJiAkaW52YWxpZGF0ZWQpCisJeworCQkjIFdp dGggaG90X3N0YW5kYnlfZmVlZGJhY2sgb24sIHhtaW4gc2hvdWxkIGFkdmFuY2UsCisJCSMg YnV0IGNhdGFsb2dfeG1pbiBzaG91bGQgc3RpbGwgcmVtYWluIE5VTEwgc2luY2UgdGhlcmUg aXMgbm8gbG9naWNhbCBzbG90LgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAk cHJpbWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRhbG9n X3htaW4gSVMgTlVMTCIpOworCX0KKwllbHNpZiAoJGhzZikKKwl7CisJCSMgV2l0aCBob3Rf c3RhbmRieV9mZWVkYmFjayBvbiwgeG1pbiBhbmQgY2F0YWxvZ194bWluIHNob3VsZCBhZHZh bmNlLgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90bmFt ZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTk9UIE5V TEwiKTsKKwl9CisJZWxzZQorCXsKKwkJIyBCb3RoIHNob3VsZCBiZSBOVUxMIHNpbmNlIGhz X2ZlZWRiYWNrIGlzIG9mZgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAkcHJp bWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJ UyBOVUxMIik7CisKKwl9Cit9CisKKyMgQ2hlY2sgY29uZmxpY3Rpbmcgc3RhdHVzIGluIHBn X3JlcGxpY2F0aW9uX3Nsb3RzLgorc3ViIGNoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1 cworeworCW15ICgkY29uZmxpY3RpbmcpID0gQF87CisKKwlpZiAoJGNvbmZsaWN0aW5nKQor CXsKKwkJJHJlcyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkJCQkncG9zdGdyZXMn LCBxcSgKKwkJCQkgc2VsZWN0IGJvb2xfYW5kKGNvbmZsaWN0aW5nKSBmcm9tIHBnX3JlcGxp Y2F0aW9uX3Nsb3RzOykpOworCisJCWlzKCRyZXMsICd0JywKKwkJCSJMb2dpY2FsIHNsb3Rz IGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyIpOworCX0KKwllbHNlCisJeworCQkkcmVz ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKAorCQkJCSdwb3N0Z3JlcycsIHFxKAorCQkJ CXNlbGVjdCBib29sX29yKGNvbmZsaWN0aW5nKSBmcm9tIHBnX3JlcGxpY2F0aW9uX3Nsb3Rz OykpOworCisJCWlzKCRyZXMsICdmJywKKwkJCSJMb2dpY2FsIHNsb3RzIGFyZSByZXBvcnRl ZCBhcyBub24gY29uZmxpY3RpbmciKTsKKwl9Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKKyRub2RlX3ByaW1hcnktPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxLCBoYXNf YXJjaGl2aW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsIHF7Cit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK21heF9yZXBsaWNhdGlvbl9z bG90cyA9IDQKK21heF93YWxfc2VuZGVycyA9IDQKK2xvZ19taW5fbWVzc2FnZXMgPSAnZGVi dWcyJworbG9nX2Vycm9yX3ZlcmJvc2l0eSA9IHZlcmJvc2UKK30pOworJG5vZGVfcHJpbWFy eS0+ZHVtcF9pbmZvOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyRub2RlX3ByaW1hcnkt PnBzcWwoJ3Bvc3RncmVzJywgcVtDUkVBVEUgREFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2Rl X3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbU0VMRUNUICogRlJPTSBwZ19jcmVh dGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJHByaW1hcnlfc2xvdG5hbWUnKTtdKTsK KworIyBDaGVjayBjb25mbGljdGluZyBpcyBOVUxMIGZvciBwaHlzaWNhbCBzbG90CiskcmVz ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxcVsKKwkJIFNF TEVDVCBjb25mbGljdGluZyBpcyBudWxsIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMgd2hl cmUgc2xvdF9uYW1lID0gJyRwcmltYXJ5X3Nsb3RuYW1lJztdKTsKKworaXMoJHJlcywgJ3Qn LAorCSJQaHlzaWNhbCBzbG90IHJlcG9ydHMgY29uZmxpY3RpbmcgYXMgTlVMTCIpOworCitt eSAkYmFja3VwX25hbWUgPSAnYjEnOworJG5vZGVfcHJpbWFyeS0+YmFja3VwKCRiYWNrdXBf bmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEluaXRpYWxpemUgc3RhbmRi eSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiskbm9kZV9zdGFuZGJ5LT5pbml0 X2Zyb21fYmFja3VwKAorCSRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFtZSwKKwloYXNfc3Ry ZWFtaW5nID0+IDEsCisJaGFzX3Jlc3RvcmluZyA9PiAxKTsKKyRub2RlX3N0YW5kYnktPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxW3ByaW1hcnlfc2xvdF9uYW1lID0g JyRwcmltYXJ5X3Nsb3RuYW1lJ10pOworJG5vZGVfc3RhbmRieS0+c3RhcnQ7Ciskbm9kZV9w cmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKKyRub2Rl X3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbU0VMRUNUICogRlJPTSBwZ19jcmVh dGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJHN0YW5kYnlfcGh5c2ljYWxfc2xvdG5h bWUnKTtdKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBjYXNj YWRpbmcgc3RhbmRieSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworJG5vZGVfc3Rh bmRieS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7Ciskbm9kZV9jYXNjYWRpbmdfc3RhbmRieS0+ aW5pdF9mcm9tX2JhY2t1cCgKKwkkbm9kZV9zdGFuZGJ5LCAkYmFja3VwX25hbWUsCisJaGFz X3N0cmVhbWluZyA9PiAxLAorCWhhc19yZXN0b3JpbmcgPT4gMSk7Ciskbm9kZV9jYXNjYWRp bmdfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXFbcHJpbWFy eV9zbG90X25hbWUgPSAnJHN0YW5kYnlfcGh5c2ljYWxfc2xvdG5hbWUnXSk7Ciskbm9kZV9j YXNjYWRpbmdfc3RhbmRieS0+c3RhcnQ7Ciskbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9yZXBs YXlfY2F0Y2h1cCgkbm9kZV9jYXNjYWRpbmdfc3RhbmRieSwgJG5vZGVfcHJpbWFyeSk7CisK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdGhhdCBsb2dpY2FsIGRlY29kaW5nIG9uIHRoZSBzdGFuZGJ5CisjIGJlaGF2ZXMg Y29ycmVjdGx5LgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2Fs X3Nsb3RzKCRub2RlX3N0YW5kYnkpOworCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rl c3RkYicsIHFxW0NSRUFURSBUQUJMRSBkZWNvZGluZ190ZXN0KHggaW50ZWdlciwgeSB0ZXh0 KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5TRVJUIElO VE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTApIHM7XSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9j YXRjaHVwKCRub2RlX3N0YW5kYnkpOworCitteSAkcmVzdWx0ID0gJG5vZGVfc3RhbmRieS0+ c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2No YW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMKTtdKTsKKworIyB0ZXN0IGlmIGJhc2lj IGRlY29kaW5nIHdvcmtzCitpcyhzY2FsYXIobXkgQGZvb2JhciA9IHNwbGl0IC9eL20sICRy ZXN1bHQpLAorCTE0LCAnRGVjb2RpbmcgcHJvZHVjZWQgMTQgcm93cyAoMiBCRUdJTi9DT01N SVQgYW5kIDEwIHJvd3MpJyk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBhbmQgdmVyaWZ5IHRo YXQgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdHMgZnJvbSBwZ19yZWN2bG9naWNhbAorIyBhbmQg dGhlIFNRTCBpbnRlcmZhY2UuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYics CisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0 IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCispOworCitteSAkZXhwZWN0ZWQgPSBx e0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJd OjEgeVt0ZXh0XTonMScKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhb aW50ZWdlcl06MiB5W3RleHRdOicyJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElO U0VSVDogeFtpbnRlZ2VyXTozIHlbdGV4dF06JzMnCit0YWJsZSBwdWJsaWMuZGVjb2Rpbmdf dGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjQgeVt0ZXh0XTonNCcKK0NPTU1JVH07CisKKyRu b2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwor CitteSAkc3Rkb3V0X3NxbCA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywK KwlxcVtTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2Fj dGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0 eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwgJ2dv dCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lvbicpOworCitteSAk ZW5kcG9zID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCSJTRUxFQ1Qg bHNuIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5V TEwsIE5VTEwpIE9SREVSIEJZIGxzbiBERVNDIExJTUlUIDE7IgorKTsKKworIyBJbnNlcnQg c29tZSByb3dzIGFmdGVyICRlbmRwb3MsIHdoaWNoIHdlIHdvbid0IHJlYWQuCiskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2Rpbmdf dGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsNTAp IHM7XQorKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFu ZGJ5KTsKKworbXkgJHN0ZG91dF9yZWN2ID0gJG5vZGVfc3RhbmRieS0+cGdfcmVjdmxvZ2lj YWxfdXB0bygKKyAgICAndGVzdGRiJywgJ2FjdGl2ZXNsb3QnLCAkZW5kcG9zLCAkZGVmYXVs dF90aW1lb3V0LAorICAgICdpbmNsdWRlLXhpZHMnICAgICA9PiAnMCcsCisgICAgJ3NraXAt ZW1wdHkteGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rkb3V0X3JlY3YpOworaXMoJHN0ZG91 dF9yZWN2LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBzYW1lIGV4cGVjdGVkIG91dHB1dCBmcm9t IHBnX3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Npb24nKTsKKworJG5vZGVfc3RhbmRieS0+ cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkiU0VMRUNUIEVYSVNUUyAoU0VMRUNUIDEg RlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnYWN0aXZlc2xv dCcgQU5EIGFjdGl2ZV9waWQgSVMgTlVMTCkiCispIG9yIGRpZSAic2xvdCBuZXZlciBiZWNh bWUgaW5hY3RpdmUiOworCiskc3Rkb3V0X3JlY3YgPSAkbm9kZV9zdGFuZGJ5LT5wZ19yZWN2 bG9naWNhbF91cHRvKAorICAgICd0ZXN0ZGInLCAnYWN0aXZlc2xvdCcsICRlbmRwb3MsICRk ZWZhdWx0X3RpbWVvdXQsCisgICAgJ2luY2x1ZGUteGlkcycgICAgID0+ICcwJywKKyAgICAn c2tpcC1lbXB0eS14YWN0cycgPT4gJzEnKTsKK2Nob21wKCRzdGRvdXRfcmVjdik7Citpcygk c3Rkb3V0X3JlY3YsICcnLCAncGdfcmVjdmxvZ2ljYWwgYWNrbm93bGVkZ2VkIGNoYW5nZXMn KTsKKworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgREFU QUJBU0Ugb3RoZXJkYicpOworCitpcyggJG5vZGVfcHJpbWFyeS0+cHNxbCgKKyAgICAgICAg J290aGVyZGInLAorICAgICAgICAiU0VMRUNUIGxzbiBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9w ZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMKSBPUkRFUiBCWSBsc24gREVT QyBMSU1JVCAxOyIKKyAgICApLAorICAgIDMsCisgICAgJ3JlcGxheWluZyBsb2dpY2FsIHNs b3QgZnJvbSBhbm90aGVyIGRhdGFiYXNlIGZhaWxzJyk7CisKKyMgZHJvcCB0aGUgbG9naWNh bCBzbG90cworZHJvcF9sb2dpY2FsX3Nsb3RzKCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJ bnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisj IFNjZW5hcmlvIDE6IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9mZiBhbmQgdmFjdXVtIEZVTEwK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygkbm9k ZV9zdGFuZGJ5KTsKKworIyBPbmUgd2F5IHRvIHByb2R1Y2UgcmVjb3ZlcnkgY29uZmxpY3Qg aXMgdG8gY3JlYXRlL2Ryb3AgYSByZWxhdGlvbiBhbmQKKyMgbGF1bmNoIGEgdmFjdXVtIGZ1 bGwgb24gcGdfY2xhc3Mgd2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayB0dXJuZWQgb2ZmIG9u CisjIHRoZSBzdGFuZGJ5LgorY2hhbmdlX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0 X2Zvcl94bWlucygwLDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9z dGFuZGJ5LCAxLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworCisjIFRoaXMgc2hvdWxkIHRyaWdn ZXIgdGhlIGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFx W0NSRUFURSBUQUJMRSBjb25mbGljdF90ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbRFJPUCBUQUJMRSBjb25mbGlj dF90ZXN0O10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCAnVkFDVVVN IGZ1bGwgcGdfY2xhc3M7Jyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9j YXRjaHVwKCRub2RlX3N0YW5kYnkpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAor b2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBz bG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVy eSIpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRo IHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRu b2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBiZWNh dXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiksCisgICdhY3RpdmVzbG90IHNsb3Qg aW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7 CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKK29rKCAkbm9kZV9zdGFuZGJ5LT5w b2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZl X2xvZ2ljYWxzbG90ID0gMSkgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVy ZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNs b3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xv Z2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCisjIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0 ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3Rz X2NvbmZsaWN0aW5nX3N0YXR1cygxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUo JG5vZGVfc3RhbmRieSwgMCwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKKworIyBXZSBhcmUgbm90 IGFibGUgdG8gcmVhZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRhdGVk CitjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwgImNhbm5vdCByZWFkIGZy b20gbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIik7CisKKyMgVHVy biBob3Rfc3RhbmRieV9mZWVkYmFjayBiYWNrIG9uCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVl ZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDEsMSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJ bnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisj IFNjZW5hcmlvIDI6IGNvbmZsaWN0IGR1ZSB0byByb3cgcmVtb3ZhbCB3aXRoIGhvdF9zdGFu ZGJ5X2ZlZWRiYWNrIG9mZi4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJvbSBp biB0aGUgc3RhbmRieSBsb2dmaWxlCitteSAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5 LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9z bG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxf c2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMgT25lIHdheSB0byBwcm9kdWNlIHJlY292ZXJ5 IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEgcmVsYXRpb24gYW5kCisjIGxhdW5jaCBh IHZhY3V1bSBvbiBwZ19jbGFzcyB3aXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHR1cm5lZCBv ZmYgb24gdGhlIHN0YW5kYnkuCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dh aXRfZm9yX3htaW5zKDAsMSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2Rl X3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgVGhpcyBzaG91bGQgdHJp Z2dlciB0aGUgY29uZmxpY3QKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywg cXFbQ1JFQVRFIFRBQkxFIGNvbmZsaWN0X3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOwor JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtEUk9QIFRBQkxFIGNvbmZs aWN0X3Rlc3Q7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNV VU0gcGdfY2xhc3M7Jyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRj aHVwKCRub2RlX3N0YW5kYnkpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2so IGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90 IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIs ICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9n Z2VkIHdpdGggdmFjdXVtIG9uIHBnX2NsYXNzJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAg ICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBi ZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgJGxvZ3N0YXJ0KSwKKyAgJ2Fj dGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIHdpdGggdmFjdXVtIG9uIHBn X2NsYXNzJyk7CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMu Y29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKKyMgd2Ugbm93IGV4 cGVjdCAyIGNvbmZsaWN0cyByZXBvcnRlZCBhcyB0aGUgY291bnRlciBwZXJzaXN0IGFjcm9z cyByZWxvYWRzCitvayggJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9z dGdyZXMnLAorCSJzZWxlY3QgKGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCA9IDIpIGZyb20g cGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwg J3QnKSwKKwknY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHVwZGF0ZWQnKSBvciBkaWUgIlRp bWVkIG91dCB3YWl0aW5nIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVk IjsKKworIyBWZXJpZnkgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIGNvbmZsaWN0aW5nIGluIHBn X3JlcGxpY2F0aW9uX3Nsb3RzCitjaGVja19zbG90c19jb25mbGljdGluZ19zdGF0dXMoMSk7 CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDAsIFwkc3Rk b3V0LCBcJHN0ZGVycik7CisKKyMgV2UgYXJlIG5vdCBhYmxlIHRvIHJlYWQgZnJvbSB0aGUg c2xvdCBhcyBpdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxf c3RkZXJyKCRoYW5kbGUsICJjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24g c2xvdCBcImFjdGl2ZXNsb3RcIiIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25mbGljdDogU2FtZSBhcyBT Y2VuYXJpbyAyIGJ1dCBvbiBhIG5vbiBjYXRhbG9nIHRhYmxlCisjIFNjZW5hcmlvIDM6IE5v IGNvbmZsaWN0IGV4cGVjdGVkLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9t IGluIHRoZSBzdGFuZGJ5IGxvZ2ZpbGUKKyRsb2dzdGFydCA9IC1zICRub2RlX3N0YW5kYnkt PmxvZ2ZpbGU7CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworZHJvcF9sb2dpY2FsX3Ns b3RzKCk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9z bG90cygkbm9kZV9zdGFuZGJ5KTsKKworIyBwdXQgaG90IHN0YW5kYnkgZmVlZGJhY2sgdG8g b2ZmCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDAs MSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDEsIFwk c3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgVGhpcyBzaG91bGQgbm90IHRyaWdnZXIgYSBjb25m bGljdAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUgVEFC TEUgY29uZmxpY3RfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7XSk7Ciskbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0lOU0VSVCBJTlRPIGNvbmZsaWN0X3Rlc3QoeCx5 KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDQpIHM7XSk7Cisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1VQREFURSBjb25mbGljdF90 ZXN0IHNldCB4PTEsIHk9MTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRi JywgJ1ZBQ1VVTSBjb25mbGljdF90ZXN0OycpOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKKworIyBtZXNzYWdlIHNob3VsZCBu b3QgYmUgaXNzdWVkCitvayggIWZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAg ImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGlj dHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBp bnZhbGlkYXRpb24gaXMgbm90IGxvZ2dlZCB3aXRoIHZhY3V1bSBvbiBjb25mbGljdF90ZXN0 Jyk7CisKK29rKCAhZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxp ZGF0aW5nIHNsb3QgXCJhY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCBy ZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdhY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9u IGlzIG5vdCBsb2dnZWQgd2l0aCB2YWN1dW0gb24gY29uZmxpY3RfdGVzdCcpOworCisjIFZl cmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dp Y2Fsc2xvdCBoYXMgbm90IGJlZW4gdXBkYXRlZAorIyB3ZSBub3cgc3RpbGwgZXhwZWN0IDIg Y29uZmxpY3RzIHJlcG9ydGVkIGFzIHRoZSBjb3VudGVyIHBlcnNpc3QgYWNyb3NzIHJlbG9h ZHMKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3Jlcycs CisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMikgZnJvbSBwZ19zdGF0 X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAor CSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3Qgbm90IHVwZGF0ZWQnKSBvciBkaWUgIlRpbWVk IG91dCB3YWl0aW5nIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVkIjsK KworIyBWZXJpZnkgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIG5vbiBjb25mbGljdGluZyBpbiBw Z19yZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDAp OworCisjIFR1cm4gaG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgorY2hhbmdlX2hvdF9z dGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0X2Zvcl94bWlucygxLCAwKTsKKworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3Zlcnkg Y29uZmxpY3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11 c2Ugc2xvdHMKKyMgU2NlbmFyaW8gNDogY29uZmxpY3QgZHVlIHRvIG9uLWFjY2VzcyBwcnVu aW5nLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9tIGluIHRoZSBzdGFuZGJ5 IGxvZ2ZpbGUKKyRsb2dzdGFydCA9IC1zICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7CisKKyMg ZHJvcCB0aGUgbG9naWNhbCBzbG90cworZHJvcF9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgY3Jl YXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygkbm9kZV9zdGFu ZGJ5KTsKKworIyBPbmUgd2F5IHRvIHByb2R1Y2UgcmVjb3ZlcnkgY29uZmxpY3QgaXMgdG8g dHJpZ2dlciBhbiBvbi1hY2Nlc3MgcHJ1bmluZworIyBvbiBhIHJlbGF0aW9uIG1hcmtlZCBh cyB1c2VyX2NhdGFsb2dfdGFibGUuCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5k X3dhaXRfZm9yX3htaW5zKDAsMCk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRu b2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgVGhpcyBzaG91bGQg dHJpZ2dlciB0aGUgY29uZmxpY3QKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRi JywgcXFbQ1JFQVRFIFRBQkxFIHBydW4oaWQgaW50ZWdlciwgcyBjaGFyKDIwMDApKSBXSVRI IChmaWxsZmFjdG9yID0gNzUsIHVzZXJfY2F0YWxvZ190YWJsZSA9IHRydWUpO10pOworJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtJTlNFUlQgSU5UTyBwcnVuIFZB TFVFUyAoMSwgJ0EnKTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywg cXFbVVBEQVRFIHBydW4gU0VUIHMgPSAnQic7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Rlc3RkYicsIHFxW1VQREFURSBwcnVuIFNFVCBzID0gJ0MnO10pOworJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtVUERBVEUgcHJ1biBTRVQgcyA9ICdEJztd KTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbVVBEQVRFIHBydW4g U0VUIHMgPSAnRSc7XSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRj aHVwKCRub2RlX3N0YW5kYnkpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2so IGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90 IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIs ICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9n Z2VkIHdpdGggb24tYWNjZXNzIHBydW5pbmcnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAg JG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJl Y2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0 aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCBvbi1hY2Nlc3MgcHJ1 bmluZycpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNv bmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBl Y3QgMyBjb25mbGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3Mg cmVsb2Fkcworb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3Rn cmVzJywKKwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSAzKSBmcm9tIHBn X3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0 JyksCisJJ2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1l ZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7 CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBwZ19y ZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEpOwor CiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFuZGJ5LCAwLCBcJHN0ZG91 dCwgXCRzdGRlcnIpOworCisjIFdlIGFyZSBub3QgYWJsZSB0byByZWFkIGZyb20gdGhlIHNs b3QgYXMgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0 ZGVycigkaGFuZGxlLCAiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNs b3QgXCJhY3RpdmVzbG90XCIiKTsKKworIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJh Y2sgb24KK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMo MSwgMSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNs b3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDU6IGluY29ycmVjdCB3 YWxfbGV2ZWwgb24gcHJpbWFyeS4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJv bSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCiskbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5 LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9z bG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxf c2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRu b2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgTWFrZSBwcmltYXJ5 IHdhbF9sZXZlbCByZXBsaWNhLiBUaGlzIHdpbGwgdHJpZ2dlciBzbG90IGNvbmZsaWN0Lgor JG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dhbF9s ZXZlbCA9ICdyZXBsaWNhJworXSk7Ciskbm9kZV9wcmltYXJ5LT5yZXN0YXJ0OworCiskbm9k ZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKKwor IyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2Rl X3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImluYWN0aXZlc2xvdFwiIGJlY2F1 c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnaW5hY3Rp dmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCBkdWUgdG8gd2FsX2xldmVsJyk7 CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRp bmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292 ZXJ5IiwgJGxvZ3N0YXJ0KSwKKyAgJ2FjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMg bG9nZ2VkIGR1ZSB0byB3YWxfbGV2ZWwnKTsKKworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2Rh dGFiYXNlX2NvbmZsaWN0cy5jb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgaGFzIGJlZW4gdXBk YXRlZAorIyB3ZSBub3cgZXhwZWN0IDMgY29uZmxpY3RzIHJlcG9ydGVkIGFzIHRoZSBjb3Vu dGVyIHBlcnNpc3QgYWNyb3NzIHJlbG9hZHMKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1 ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2lj YWxzbG90ID0gNCkgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRu YW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdXBk YXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xvZ2ljYWxz bG90IHRvIGJlIHVwZGF0ZWQiOworCisjIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0ZWQgYXMg Y29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3RzX2NvbmZs aWN0aW5nX3N0YXR1cygxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVf c3RhbmRieSwgMCwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKKyMgV2UgYXJlIG5vdCBhYmxlIHRv IHJlYWQgZnJvbSB0aGUgc2xvdCBhcyBpdCByZXF1aXJlcyB3YWxfbGV2ZWwgYXQgbGVhc3Qg bG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0 ZGVycigkaGFuZGxlLCAibG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdh bF9sZXZlbCB0byBiZSBhdCBsZWFzdCBsb2dpY2FsIG9uIHRoZSBwcmltYXJ5IHNlcnZlciIp OworCisjIFJlc3RvcmUgcHJpbWFyeSB3YWxfbGV2ZWwKKyRub2RlX3ByaW1hcnktPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK10p OworJG5vZGVfcHJpbWFyeS0+cmVzdGFydDsKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3Jl cGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2Fj dGl2ZSgkbm9kZV9zdGFuZGJ5LCAwLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworIyBhcyB0aGUg c2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCB3ZSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVh ZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsICJjYW5ub3QgcmVhZCBm cm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIpOworCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBEUk9Q IERBVEFCQVNFIHNob3VsZCBkcm9wcyBpdCdzIHNsb3RzLCBpbmNsdWRpbmcgYWN0aXZlIHNs b3RzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCitkcm9wX2xvZ2ljYWxfc2xvdHMoKTsK KworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCRu b2RlX3N0YW5kYnkpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFu ZGJ5LCAxLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworIyBDcmVhdGUgYSBzbG90IG9uIGEgZGF0 YWJhc2UgdGhhdCB3b3VsZCBub3QgYmUgZHJvcHBlZC4gVGhpcyBzbG90IHNob3VsZCBub3QK KyMgZ2V0IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29u X3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ290aGVyc2xvdCcsICdwb3N0Z3JlcycpOworCisj IGRyb3BkYiBvbiB0aGUgcHJpbWFyeSB0byB2ZXJpZnkgc2xvdHMgYXJlIGRyb3BwZWQgb24g c3RhbmRieQorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFbRFJPUCBE QVRBQkFTRSB0ZXN0ZGJdKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2Nh dGNodXAoJG5vZGVfc3RhbmRieSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXFbU0VMRUNUIEVYSVNUUyhTRUxFQ1QgMSBGUk9NIHBnX2RhdGFiYXNl IFdIRVJFIGRhdG5hbWUgPSAndGVzdGRiJyldKSwgJ2YnLAorCSdkYXRhYmFzZSBkcm9wcGVk IG9uIHN0YW5kYnknKTsKKworY2hlY2tfc2xvdHNfZHJvcHBlZCgkaGFuZGxlKTsKKworaXMo JG5vZGVfc3RhbmRieS0+c2xvdCgnb3RoZXJzbG90JyktPnsnc2xvdF90eXBlJ30sICdsb2dp Y2FsJywKKwknb3RoZXJzbG90IG9uIHN0YW5kYnkgbm90IGRyb3BwZWQnKTsKKworIyBDbGVh bnVwIDogbWFudWFsbHkgZHJvcCB0aGUgc2xvdCB0aGF0IHdhcyBub3QgZHJvcHBlZC4KKyRu b2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNh dGlvbl9zbG90KCdvdGhlcnNsb3QnKV0pOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHN0YW5kYnkgcHJvbW90aW9uIGFu ZCBsb2dpY2FsIGRlY29kaW5nIGJlaGF2aW9yCisjIGFmdGVyIHRoZSBzdGFuZGJ5IGdldHMg cHJvbW90ZWQuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisjIHJlZHVjZSB3YWxfc2VuZGVyX3RpbWVvdXQgdG8gbm90IHdhaXQgdG9v IGxvbmcgYWZ0ZXIgcHJvbW90aW9uCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJyxxcVsKKwl3YWxfc2VuZGVyX3RpbWVvdXQgPSAxcworXSk7CisKKyRu b2RlX3N0YW5kYnktPnJlbG9hZDsKKworJG5vZGVfcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMn LCBxW0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNx bCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGRlY29kaW5nX3Rlc3QoeCBpbnRlZ2VyLCB5 IHRleHQpO10pOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2lj YWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3Rz IG9uIHRoZSBjYXNjYWRpbmcgc3RhbmRieSB0b28KK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCRu b2RlX2Nhc2NhZGluZ19zdGFuZGJ5KTsKKworIyBNYWtlIHNsb3RzIGFjdGl2ZXMKKyRoYW5k bGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0 ZGVycik7CitteSAkY2FzY2FkaW5nX2hhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVf Y2FzY2FkaW5nX3N0YW5kYnksIDEsIFwkY2FzY2FkaW5nX3N0ZG91dCwgXCRjYXNjYWRpbmdf c3RkZXJyKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGJlZm9yZSB0aGUgcHJvbW90aW9uCisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVj b2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsNCkgcztdCispOworCisjIFdhaXQgZm9yIGJvdGggc3RhbmRieXMgdG8gY2F0Y2h1cAor JG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7 Ciskbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9jYXNjYWRp bmdfc3RhbmRieSwgJG5vZGVfcHJpbWFyeSk7CisKKyMgcHJvbW90ZQorJG5vZGVfc3RhbmRi eS0+cHJvbW90ZTsKKworIyBpbnNlcnQgc29tZSByb3dzIG9uIHByb21vdGVkIHN0YW5kYnkK KyRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtJTlNFUlQgSU5UTyBk ZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNSw3KSBzO10KKyk7CisKKyMgV2FpdCBmb3IgdGhlIGNhc2NhZGluZyBzdGFuZGJ5IHRv IGNhdGNodXAKKyRub2RlX3N0YW5kYnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2Rl X2Nhc2NhZGluZ19zdGFuZGJ5KTsKKworJGV4cGVjdGVkID0gcXtCRUdJTgordGFibGUgcHVi bGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToxIHlbdGV4dF06JzEnCit0 YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjIgeVt0ZXh0 XTonMicKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06 MyB5W3RleHRdOiczJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtp bnRlZ2VyXTo0IHlbdGV4dF06JzQnCitDT01NSVQKK0JFR0lOCit0YWJsZSBwdWJsaWMuZGVj b2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjUgeVt0ZXh0XTonNScKK3RhYmxlIHB1 YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NiB5W3RleHRdOic2Jwor dGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo3IHlbdGV4 dF06JzcnCitDT01NSVR9OworCisjIGNoZWNrIHRoYXQgd2UgYXJlIGRlY29kaW5nIHByZSBh bmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0ZWQgcm93cworJHN0ZG91dF9zcWwgPSAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19s b2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdpbmFjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAn aW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKwor aXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBT UUwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBwcm9tb3RlZCBzdGFuZGJ5Jyk7CisKKyMgY2hlY2sg dGhhdCB3ZSBhcmUgZGVjb2RpbmcgcHJlIGFuZCBwb3N0IHByb21vdGlvbiBpbnNlcnRlZCBy b3dzCisjIHdpdGggcGdfcmVjdmxvZ2ljYWwgdGhhdCBoYXMgc3RhcnRlZCBiZWZvcmUgdGhl IHByb21vdGlvbgorbXkgJHB1bXBfdGltZW91dCA9IElQQzo6UnVuOjp0aW1lcigkUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisKK29rKCBwdW1wX3VudGls KAorICAgICAgICAkaGFuZGxlLCAkcHVtcF90aW1lb3V0LCBcJHN0ZG91dCwgcXIvXi4qQ09N TUlULipDT01NSVQkL3MpLAorICAgICdnb3QgMiBDT01NSVQgZnJvbSBwZ19yZWN2bG9naWNh bCBvdXRwdXQnKTsKKworY2hvbXAoJHN0ZG91dCk7Citpcygkc3Rkb3V0LCAkZXhwZWN0ZWQs CisgICAgJ2dvdCBzYW1lIGV4cGVjdGVkIG91dHB1dCBmcm9tIHBnX3JlY3Zsb2dpY2FsIGRl Y29kaW5nIHNlc3Npb24nKTsKKworIyBjaGVjayB0aGF0IHdlIGFyZSBkZWNvZGluZyBwcmUg YW5kIHBvc3QgcHJvbW90aW9uIGluc2VydGVkIHJvd3Mgb24gdGhlIGNhc2NhZGluZyBzdGFu ZGJ5Ciskc3Rkb3V0X3NxbCA9ICRub2RlX2Nhc2NhZGluZ19zdGFuZGJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19j aGFuZ2VzKCdpbmFjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAn LCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9zcWwsICRl eHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lv biBvbiBjYXNjYWRpbmcgc3RhbmRieScpOworCisjIGNoZWNrIHRoYXQgd2UgYXJlIGRlY29k aW5nIHByZSBhbmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0ZWQgcm93cworIyB3aXRoIHBnX3Jl Y3Zsb2dpY2FsIHRoYXQgaGFzIHN0YXJ0ZWQgYmVmb3JlIHRoZSBwcm9tb3Rpb24gb24gdGhl IGNhc2NhZGluZyBzdGFuZGJ5CitvayggcHVtcF91bnRpbCgKKyAgICAgICAgJGNhc2NhZGlu Z19oYW5kbGUsICRwdW1wX3RpbWVvdXQsIFwkY2FzY2FkaW5nX3N0ZG91dCwgcXIvXi4qQ09N TUlULipDT01NSVQkL3MpLAorICAgICdnb3QgMiBDT01NSVQgZnJvbSBwZ19yZWN2bG9naWNh bCBvdXRwdXQnKTsKKworY2hvbXAoJGNhc2NhZGluZ19zdGRvdXQpOworaXMoJGNhc2NhZGlu Z19zdGRvdXQsICRleHBlY3RlZCwKKyAgICAnZ290IHNhbWUgZXhwZWN0ZWQgb3V0cHV0IGZy b20gcGdfcmVjdmxvZ2ljYWwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBjYXNjYWRpbmcgc3RhbmRi eScpOwotLSAKMi4zNC4xCgo= --------------cEK8MlHwlkB6EI0U6V6XX6R3 Content-Type: text/plain; charset=UTF-8; name="v53-0004-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v53-0004-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlZjY4N2UwYjU4YTVlYWU4YjIzYjE2NWYwZmY0NTBhMzA0NGViZDgyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA5OjAwOjI5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTMgNC82XSBGaXhpbmcgV2Fsc2VuZGVyIGNvcm5lciBjYXNlIHdpdGggbG9naWNhbCBk ZWNvZGluZyBvbgogc3RhbmRieS4KClRoZSBwcm9ibGVtIGlzIHRoYXQgV2FsU25kV2FpdEZv cldhbCgpIHdhaXRzIGZvciB0aGUgKnJlcGxheSogTFNOIHRvCmluY3JlYXNlLCBidXQgZ2V0 cyB3b2tlbiB1cCBieSB3YWxyZWNlaXZlciB3aGVuIG5ldyBXQUwgaGFzIGJlZW4KZmx1c2hl ZC4gV2hpY2ggbWVhbnMgdGhhdCB0eXBpY2FsbHkgd2Fsc2VuZGVycyB3aWxsIGdldCB3b2tl biB1cCBhdCB0aGUKc2FtZSB0aW1lIHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyB3aWxsIGJl IC0gd2hpY2ggbWVhbnMgdGhhdCBieSB0aGUKdGltZSB0aGUgbG9naWNhbCB3YWxzZW5kZXIg Y2hlY2tzIEdldFhMb2dSZXBsYXlSZWNQdHIoKSBpdCdzIHVubGlrZWx5CnRoYXQgdGhlIHN0 YXJ0dXAgcHJvY2VzcyBhbHJlYWR5IHJlcGxheWVkIHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQK WExvZ0N0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyLgoKSW50cm9kdWNpbmcgYSBuZXcgY29u ZGl0aW9uIHZhcmlhYmxlIHRvIGZpeCB0aGlzIGNvcm5lciBjYXNlLgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIHwgMjggKysrKysrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgfCAzNCAr KysrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jICAgfCAgMyArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5o ICAgICAgICAgfCAgMyArKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgg ICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAg ICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgNjIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlv bnMoLSkKICA0My4yJSBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8KICA0Ni4xJSBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi8KICAgMy44JSBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS8KICAgMy43JSBzcmMvaW5jbHVkZS9hY2Nlc3MvCiAgIDMuMSUgc3JjL2luY2x1ZGUvCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCBkYmU5 Mzk0NzYyLi44YTk1MDVhNTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9ncmVjb3ZlcnkuYwpAQCAtMzU4LDYgKzM1OCw5IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dS ZWNvdmVyeUN0bERhdGEKIAlSZWNvdmVyeVBhdXNlU3RhdGUgcmVjb3ZlcnlQYXVzZVN0YXRl OwogCUNvbmRpdGlvblZhcmlhYmxlIHJlY292ZXJ5Tm90UGF1c2VkQ1Y7CiAKKwkvKiBSZXBs YXkgc3RhdGUgKHNlZSBjaGVja19mb3JfcmVwbGF5KCkgZm9yIG1vcmUgZXhwbGFuYXRpb24p ICovCisJQ29uZGl0aW9uVmFyaWFibGUgcmVwbGF5ZWRDVjsKKwogCXNsb2NrX3QJCWluZm9f bGNrOwkJLyogbG9ja3Mgc2hhcmVkIHZhcmlhYmxlcyBzaG93biBhYm92ZSAqLwogfSBYTG9n UmVjb3ZlcnlDdGxEYXRhOwogCkBAIC00NjgsNiArNDcxLDcgQEAgWExvZ1JlY292ZXJ5U2ht ZW1Jbml0KHZvaWQpCiAJU3BpbkxvY2tJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNr KTsKIAlJbml0U2hhcmVkTGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBM YXRjaCk7CiAJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292 ZXJ5Tm90UGF1c2VkQ1YpOworCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5 Q3RsLT5yZXBsYXllZENWKTsKIH0KIAogLyoKQEAgLTE5MzUsNiArMTkzOSwxMSBAQCBBcHBs eVdhbFJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnhsb2dyZWFkZXIsIFhMb2dSZWNvcmQgKnJl Y29yZCwgVGltZUxpbmVJRCAqcmVwbAogCVhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVk VExJID0gKnJlcGxheVRMSTsKIAlTcGluTG9ja1JlbGVhc2UoJlhMb2dSZWNvdmVyeUN0bC0+ aW5mb19sY2spOwogCisJLyoKKwkgKiB3YWtlIHVwIHdhbHNlbmRlcihzKSB1c2VkIGJ5IGxv Z2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieS4KKwkgKi8KKwlDb25kaXRpb25WYXJpYWJsZUJy b2FkY2FzdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZXBsYXllZENWKTsKKwogCS8qCiAJICogSWYg cm1fcmVkbyBjYWxsZWQgWExvZ1JlcXVlc3RXYWxSZWNlaXZlclJlcGx5LCB0aGVuIHdlIHdh a2UgdXAgdGhlCiAJICogcmVjZWl2ZXIgc28gdGhhdCBpdCBub3RpY2VzIHRoZSB1cGRhdGVk IGxhc3RSZXBsYXllZEVuZFJlY1B0ciBhbmQgc2VuZHMKQEAgLTQ5NDIsMyArNDk1MSwyMiBA QCBhc3NpZ25fcmVjb3ZlcnlfdGFyZ2V0X3hpZChjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQg KmV4dHJhKQogCWVsc2UKIAkJcmVjb3ZlcnlUYXJnZXQgPSBSRUNPVkVSWV9UQVJHRVRfVU5T RVQ7CiB9CisKKy8qCisgKiBSZXR1cm4gdGhlIENvbmRpdGlvblZhcmlhYmxlIGluZGljYXRp bmcgdGhhdCBhIHJlcGxheSBoYXMgYmVlbiBkb25lLgorICoKKyAqIFRoaXMgaXMgbmVlZGVk IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuIEluZGVlZCB0aGUgInByb2JsZW0i IGlzIHRoYXQKKyAqIFdhbFNuZFdhaXRGb3JXYWwoKSB3YWl0cyBmb3IgdGhlICpyZXBsYXkq IExTTiB0byBpbmNyZWFzZSwgYnV0IGdldHMgd29rZW4gdXAKKyAqIGJ5IHdhbHJlY2VpdmVy IHdoZW4gbmV3IFdBTCBoYXMgYmVlbiBmbHVzaGVkLiBXaGljaCBtZWFucyB0aGF0IHR5cGlj YWxseQorICogd2Fsc2VuZGVycyB3aWxsIGdldCB3b2tlbiB1cCBhdCB0aGUgc2FtZSB0aW1l IHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcworICogd2lsbCBiZSAtIHdoaWNoIG1lYW5zIHRo YXQgYnkgdGhlIHRpbWUgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVyIGNoZWNrcworICogR2V0WExv Z1JlcGxheVJlY1B0cigpIGl0J3MgdW5saWtlbHkgdGhhdCB0aGUgc3RhcnR1cCBwcm9jZXNz IGFscmVhZHkgcmVwbGF5ZWQKKyAqIHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQgWExvZ0N0bC0+ bGFzdFJlcGxheWVkRW5kUmVjUHRyLgorICoKKyAqIFRoZSBDb25kaXRpb25WYXJpYWJsZSBY TG9nUmVjb3ZlcnlDdGwtPnJlcGxheWVkQ1Ygc29sdmVzIHRoaXMgY29ybmVyIGNhc2UuCisg Ki8KK0NvbmRpdGlvblZhcmlhYmxlICoKK2NoZWNrX2Zvcl9yZXBsYXkodm9pZCkKK3sKKwly ZXR1cm4gJlhMb2dSZWNvdmVyeUN0bC0+cmVwbGF5ZWRDVjsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggYTA1ZWNkZWRkZC4uMmEwZDZjNzg3ZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTE1NTEsNiArMTU1MSw3IEBAIFdh bFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiB7CiAJaW50CQkJd2FrZUV2ZW50czsK IAlzdGF0aWMgWExvZ1JlY1B0ciBSZWNlbnRGbHVzaFB0ciA9IEludmFsaWRYTG9nUmVjUHRy OworCUNvbmRpdGlvblZhcmlhYmxlICpyZXBsYXllZENWID0gY2hlY2tfZm9yX3JlcGxheSgp OwogCiAJLyoKIAkgKiBGYXN0IHBhdGggdG8gYXZvaWQgYWNxdWlyaW5nIHRoZSBzcGlubG9j ayBpbiBjYXNlIHdlIGFscmVhZHkga25vdyB3ZQpAQCAtMTU2NSwxMCArMTU2NiwxNSBAQCBX YWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCWlmICghUmVjb3ZlcnlJblByb2dy ZXNzKCkpCiAJCVJlY2VudEZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIoTlVMTCk7CiAJZWxz ZQorCXsKIAkJUmVjZW50Rmx1c2hQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOwor CQkvKiBQcmVwYXJlIHRoZSByZXBsYXllZENWIHRvIHNsZWVwICovCisJCUNvbmRpdGlvblZh cmlhYmxlUHJlcGFyZVRvU2xlZXAocmVwbGF5ZWRDVik7CisJfQogCiAJZm9yICg7OykKIAl7 CisKIAkJbG9uZwkJc2xlZXB0aW1lOwogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRp bmcgd2FrZXVwcyAqLwpAQCAtMTY1MiwyMSArMTY1OCwzMyBAQCBXYWxTbmRXYWl0Rm9yV2Fs KFhMb2dSZWNQdHIgbG9jKQogCQkvKiBTZW5kIGtlZXBhbGl2ZSBpZiB0aGUgdGltZSBoYXMg Y29tZSAqLwogCQlXYWxTbmRLZWVwYWxpdmVJZk5lY2Vzc2FyeSgpOwogCisJCXNsZWVwdGlt ZSA9IFdhbFNuZENvbXB1dGVTbGVlcHRpbWUoR2V0Q3VycmVudFRpbWVzdGFtcCgpKTsKIAkJ LyoKLQkJICogU2xlZXAgdW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Igd2UgdGltZSBvdXQu ICBBbHNvIHdhaXQgZm9yIHRoZQotCQkgKiBzb2NrZXQgYmVjb21pbmcgd3JpdGFibGUsIGlm IHRoZXJlJ3Mgc3RpbGwgcGVuZGluZyBvdXRwdXQuCisJCSAqIFdoZW4gbm90IGluIHJlY292 ZXJ5LCBzbGVlcCB1bnRpbCBzb21ldGhpbmcgaGFwcGVucyBvciB3ZSB0aW1lIG91dC4KKwkJ ICogQWxzbyB3YWl0IGZvciB0aGUgc29ja2V0IGJlY29taW5nIHdyaXRhYmxlLCBpZiB0aGVy ZSdzIHN0aWxsIHBlbmRpbmcgb3V0cHV0LgogCQkgKiBPdGhlcndpc2Ugd2UgbWlnaHQgc2l0 IG9uIHNlbmRhYmxlIG91dHB1dCBkYXRhIHdoaWxlIHdhaXRpbmcgZm9yCiAJCSAqIG5ldyBX QUwgdG8gYmUgZ2VuZXJhdGVkLiAgKEJ1dCBpZiB3ZSBoYXZlIG5vdGhpbmcgdG8gc2VuZCwg d2UgZG9uJ3QKIAkJICogd2FudCB0byB3YWtlIG9uIHNvY2tldC13cml0YWJsZS4pCiAJCSAq LwotCQlzbGVlcHRpbWUgPSBXYWxTbmRDb21wdXRlU2xlZXB0aW1lKEdldEN1cnJlbnRUaW1l c3RhbXAoKSk7Ci0KLQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tFVF9SRUFEQUJMRTsKKwkJaWYg KCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJeworCQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tF VF9SRUFEQUJMRTsKIAotCQlpZiAocHFfaXNfc2VuZF9wZW5kaW5nKCkpCi0JCQl3YWtlRXZl bnRzIHw9IFdMX1NPQ0tFVF9XUklURUFCTEU7CisJCQlpZiAocHFfaXNfc2VuZF9wZW5kaW5n KCkpCisJCQkJd2FrZUV2ZW50cyB8PSBXTF9TT0NLRVRfV1JJVEVBQkxFOwogCi0JCVdhbFNu ZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0aW1lLCBXQUlUX0VWRU5UX1dBTF9TRU5ERVJfV0FJ VF9XQUwpOworCQkJV2FsU25kV2FpdCh3YWtlRXZlbnRzLCBzbGVlcHRpbWUsIFdBSVRfRVZF TlRfV0FMX1NFTkRFUl9XQUlUX1dBTCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJ ICogV2UgYXJlIGluIHRoZSBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgY2FzZS4KKwkJ CSAqIFdlIGFyZSB3YWl0aW5nIGZvciB0aGUgc3RhcnR1cCBwcm9jZXNzIHRvIHJlcGxheSB3 YWwgcmVjb3JkKHMpIHVzaW5nCisJCQkgKiBhIHRpbWVvdXQgaW4gY2FzZSB3ZSBhcmUgcmVx dWVzdGVkIHRvIHN0b3AuCisJCQkgKi8KKwkJCUNvbmRpdGlvblZhcmlhYmxlVGltZWRTbGVl cChyZXBsYXllZENWLCBzbGVlcHRpbWUsCisJCQkJCQkJCQkJV0FJVF9FVkVOVF9XQUxfU0VO REVSX1dBSVRfUkVQTEFZKTsKKwkJfQogCX0KIAogCS8qIHJlYWN0aXZhdGUgbGF0Y2ggc28g V2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDc5NDBkNjQ2MzkuLjI3ZmM4ZmFiNzYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTQ2Niw2ICs0NjYs OSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KQogCQljYXNlIFdBSVRf RVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQ6CiAJCQlldmVudF9uYW1lID0gIldhbFJl Y2VpdmVyV2FpdFN0YXJ0IjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZFTlRfV0FMX1NF TkRFUl9XQUlUX1JFUExBWToKKwkJCWV2ZW50X25hbWUgPSAiV2FsUmVjZWl2ZXJXYWl0UmVw bGF5IjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERBVEU6 CiAJCQlldmVudF9uYW1lID0gIlhhY3RHcm91cFVwZGF0ZSI7CiAJCQlicmVhazsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAppbmRleCA0N2MyOTM1MGY1Li5jODg0MmQ5NGJiIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dyZWFkZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRy b2wuaCIKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv Y29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAK IC8qCkBAIC0xNTUsNCArMTU2LDYgQEAgZXh0ZXJuIHZvaWQgUmVjb3ZlcnlSZXF1aXJlc0lu dFBhcmFtZXRlcihjb25zdCBjaGFyICpwYXJhbV9uYW1lLCBpbnQgY3VyclZhbHVlLAogCiBl eHRlcm4gdm9pZCB4bG9nX291dGRlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKTsKIAorZXh0ZXJuIENvbmRpdGlvblZhcmlhYmxlICpjaGVja19mb3JfcmVw bGF5KHZvaWQpOworCiAjZW5kaWYJCQkJCQkJLyogWExPR1JFQ09WRVJZX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKaW5kZXggNTJiYjNlMmFhZS4uMmZkNzQ1ZmU3 MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKQEAgLTEzLDYgKzEzLDcg QEAKICNkZWZpbmUgX1dBTFNFTkRFUl9ICiAKICNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNs dWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogV2hhdCB0byBk byB3aXRoIGEgc25hcHNob3QgaW4gY3JlYXRlIHJlcGxpY2F0aW9uIHNsb3QgY29tbWFuZC4K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCA1MThkM2IwYTFmLi5lMTNhYmRjMzY1IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0xMzEsNiArMTMxLDcgQEAgdHlwZWRlZiBl bnVtCiAJV0FJVF9FVkVOVF9TWU5DX1JFUCwKIAlXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9F WElULAogCVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQsCisJV0FJVF9FVkVO VF9XQUxfU0VOREVSX1dBSVRfUkVQTEFZLAogCVdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERB VEUKIH0gV2FpdEV2ZW50SVBDOwogCi0tIAoyLjM0LjEKCg== --------------cEK8MlHwlkB6EI0U6V6XX6R3 Content-Type: text/plain; charset=UTF-8; name="v53-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v53-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAyYWQ0OTQxNjk1MmYyNjk0YjY5MWIzZmRlYjExOTFhYTFlOTAzZDhjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU5OjQ3ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTMgMy82XSBBbGxvdyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuCgpBbGxvdyBh IGxvZ2ljYWwgc2xvdCB0byBiZSBjcmVhdGVkIG9uIHN0YW5kYnkuIFJlc3RyaWN0IGl0cyB1 c2FnZQpvciBpdHMgY3JlYXRpb24gaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgbGVzcyB0 aGFuIGxvZ2ljYWwuCkR1cmluZyBzbG90IGNyZWF0aW9uLCBpdCdzIHJlc3RhcnRfbHNuIGlz IHNldCB0byB0aGUgbGFzdCByZXBsYXllZApMU04uIEVmZmVjdGl2ZWx5LCBhIGxvZ2ljYWwg c2xvdCBjcmVhdGlvbiBvbiBzdGFuZGJ5IHdhaXRzIGZvciBhbgp4bF9ydW5uaW5nX3hhY3Qg cmVjb3JkIHRvIGFycml2ZSBmcm9tIHByaW1hcnkuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQg KGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZv dApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0 IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxvCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgICAgfCAxMSArKysrKwogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9kZWNvZGUuYyAgfCAyMiArKysrKysrKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIHwgMzcgKysrKysrKystLS0tLS0tCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICB8IDU3ICsrKysrKysrKysr Ky0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAg ICB8IDQxICsrKysrKysrKystLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAg ICAgICAgICAgICAgIHwgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygr KSwgNTggZGVsZXRpb25zKC0pCiAgIDQuNyUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v CiAgMzguNyUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC8KICA1NS42JSBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi8KCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5k ZXggYzEyMmY4NTMzOS4uNzcxNDU4NDE4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYwpAQCAtNDQ2Nyw2ICs0NDY3LDE3IEBAIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJv b2wgcmVzZXQpCiAJUmVhZENvbnRyb2xGaWxlKCk7CiB9CiAKKy8qCisgKiBHZXQgdGhlIHdh bF9sZXZlbCBmcm9tIHRoZSBjb250cm9sIGZpbGUuIEZvciBhIHN0YW5kYnksIHRoaXMgdmFs dWUgc2hvdWxkIGJlCisgKiBjb25zaWRlcmVkIGFzIGl0cyBhY3RpdmUgd2FsX2xldmVsLCBi ZWNhdXNlIGl0IG1heSBiZSBkaWZmZXJlbnQgZnJvbSB3aGF0CisgKiB3YXMgb3JpZ2luYWxs eSBjb25maWd1cmVkIG9uIHN0YW5kYnkuCisgKi8KK1dhbExldmVsCitHZXRBY3RpdmVXYWxM ZXZlbE9uU3RhbmRieSh2b2lkKQoreworCXJldHVybiBDb250cm9sRmlsZS0+d2FsX2xldmVs OworfQorCiAvKgogICogSW5pdGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeSBmb3IgWExP RwogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rl Y29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRl eCA4ZmU3YmI2NWYxLi44NDU3ZWVjNGM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTE1MiwxMSArMTUyLDMxIEBAIHhsb2dfZGVjb2RlKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQkJ ICogY2FuIHJlc3RhcnQgZnJvbSB0aGVyZS4KIAkJCSAqLwogCQkJYnJlYWs7CisJCWNhc2Ug WExPR19QQVJBTUVURVJfQ0hBTkdFOgorCQl7CisJCQl4bF9wYXJhbWV0ZXJfY2hhbmdlICp4 bHJlYyA9CisJCQkJKHhsX3BhcmFtZXRlcl9jaGFuZ2UgKikgWExvZ1JlY0dldERhdGEoYnVm LT5yZWNvcmQpOworCisJCQkvKgorCQkJICogSWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMg cmVkdWNlZCB0byBsZXNzIHRoYW4gbG9naWNhbCwgdGhlbiB3ZQorCQkJICogd2FudCB0byBw cmV2ZW50IGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgZnJvbSBiZWluZyB1c2VkLgorCQkJICog RXhpc3RpbmcgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGdldCBpbnZhbGlkYXRlZCB3aGVu IHRoaXMgV0FMCisJCQkgKiByZWNvcmQgaXMgcmVwbGF5ZWQ7IGFuZCBmdXJ0aGVyLCBzbG90 IGNyZWF0aW9uIGZhaWxzIHdoZW4gdGhlCisJCQkgKiB3YWwgbGV2ZWwgaXMgbm90IHN1ZmZp Y2llbnQ7IGJ1dCBhbGwgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgbm90CisJCQkgKiBzeW5jaHJv bml6ZWQsIHNvIGEgbG9naWNhbCBzbG90IG1heSBjcmVlcCBpbiB3aGlsZSB0aGUgd2FsX2xl dmVsCisJCQkgKiBpcyBiZWluZyByZWR1Y2VkLiBIZW5jZSB0aGlzIGV4dHJhIGNoZWNrLgor CQkJICovCisJCQlpZiAoeGxyZWMtPndhbF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rp bmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgIgorCQkJCQkJCQkidG8gYmUgYXQg bGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSkpOworCQkJYnJlYWs7CisJ CX0KIAkJY2FzZSBYTE9HX05PT1A6CiAJCWNhc2UgWExPR19ORVhUT0lEOgogCQljYXNlIFhM T0dfU1dJVENIOgogCQljYXNlIFhMT0dfQkFDS1VQX0VORDoKLQkJY2FzZSBYTE9HX1BBUkFN RVRFUl9DSEFOR0U6CiAJCWNhc2UgWExPR19SRVNUT1JFX1BPSU5UOgogCQljYXNlIFhMT0df RlBXX0NIQU5HRToKIAkJY2FzZSBYTE9HX0ZQSV9GT1JfSElOVDoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKaW5kZXggYzNlYzk3YTBhNi4uNzQzZDEy YmExNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMK QEAgLTEyNCwyMyArMTI0LDIyIEBAIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRz KHZvaWQpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCiAJCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyByZXF1aXJlcyBhIGRh dGFiYXNlIGNvbm5lY3Rpb24iKSkpOwogCi0JLyogLS0tLQotCSAqIFRPRE86IFdlIGdvdCB0 byBjaGFuZ2UgdGhhdCBzb21lZGF5IHNvb24uLi4KLQkgKgotCSAqIFRoZXJlJ3MgYmFzaWNh bGx5IHRocmVlIHRoaW5ncyBtaXNzaW5nIHRvIGFsbG93IHRoaXM6Ci0JICogMSkgV2UgbmVl ZCB0byBiZSBhYmxlIHRvIGNvcnJlY3RseSBhbmQgcXVpY2tseSBpZGVudGlmeSB0aGUgdGlt ZWxpbmUgYQotCSAqCSAgTFNOIGJlbG9uZ3MgdG8KLQkgKiAyKSBXZSBuZWVkIHRvIGZvcmNl IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHRvIGJlIGVuYWJsZWQgYXQgYWxsIHRpbWVzIHNvCi0J ICoJICB0aGUgcHJpbWFyeSBjYW5ub3QgcmVtb3ZlIHJvd3Mgd2UgbmVlZC4KLQkgKiAzKSBz dXBwb3J0IGRyb3BwaW5nIHJlcGxpY2F0aW9uIHNsb3RzIHJlZmVycmluZyB0byBhIGRhdGFi YXNlLCBpbgotCSAqCSAgZGJhc2VfcmVkby4gVGhlcmUgY2FuJ3QgYmUgYW55IGFjdGl2ZSBv bmVzIGR1ZSB0byBIUyByZWNvdmVyeQotCSAqCSAgY29uZmxpY3RzLCBzbyB0aGF0IHNob3Vs ZCBiZSByZWxhdGl2ZWx5IGVhc3kuCi0JICogLS0tLQotCSAqLwogCWlmIChSZWNvdmVyeUlu UHJvZ3Jlc3MoKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyBj YW5ub3QgYmUgdXNlZCB3aGlsZSBpbiByZWNvdmVyeSIpKSk7CisJeworCQkvKgorCQkgKiBU aGlzIGNoZWNrIG1heSBoYXZlIHJhY2UgY29uZGl0aW9ucywgYnV0IHdoZW5ldmVyCisJCSAq IFhMT0dfUEFSQU1FVEVSX0NIQU5HRSBpbmRpY2F0ZXMgdGhhdCB3YWxfbGV2ZWwgaGFzIGNo YW5nZWQsIHdlCisJCSAqIHZlcmlmeSB0aGF0IHRoZXJlIGFyZSBubyBleGlzdGluZyBsb2dp Y2FsIHJlcGxpY2F0aW9uIHNsb3RzLiBBbmQgdG8KKwkJICogYXZvaWQgcmFjZXMgYXJvdW5k IGNyZWF0aW5nIGEgbmV3IHNsb3QsCisJCSAqIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWly ZW1lbnRzKCkgaXMgY2FsbGVkIG9uY2UgYmVmb3JlIGNyZWF0aW5nCisJCSAqIHRoZSBzbG90 LCBhbmQgb25jZSB3aGVuIGxvZ2ljYWwgZGVjb2RpbmcgaXMgaW5pdGlhbGx5IHN0YXJ0aW5n IHVwLgorCQkgKi8KKwkJaWYgKEdldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KCkgPCBXQUxf TEVWRUxfTE9HSUNBTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJs b2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsICIKKwkJCQkJ CQkidG8gYmUgYXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSkpOwor CX0KIH0KIAogLyoKQEAgLTM0Miw2ICszNDEsMTIgQEAgQ3JlYXRlSW5pdERlY29kaW5nQ29u dGV4dChjb25zdCBjaGFyICpwbHVnaW4sCiAJTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 OwogCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7CiAKKwkvKgorCSAqIE9uIHN0YW5kYnks IHRoaXMgY2hlY2sgaXMgYWxzbyByZXF1aXJlZCB3aGlsZSBjcmVhdGluZyB0aGUgc2xvdC4g Q2hlY2sKKwkgKiB0aGUgY29tbWVudHMgaW4gdGhpcyBmdW5jdGlvbi4KKwkgKi8KKwlDaGVj a0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpOworCiAJLyogc2hvcnRlciBsaW5lcy4u LiAqLwogCXNsb3QgPSBNeVJlcGxpY2F0aW9uU2xvdDsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jCmluZGV4IDVmZjg0MzA0N2MuLmI3NTk5ODA4ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMKQEAgLTQxLDYgKzQxLDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJhY2Nlc3Mv eGxvZ3JlY292ZXJ5LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIKICNpbmNs dWRlICJjb21tb24vc3RyaW5nLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC0xMTc2 LDM3ICsxMTc3LDI4IEBAIFJlcGxpY2F0aW9uU2xvdFJlc2VydmVXYWwodm9pZCkKIAkJLyoK IAkJICogRm9yIGxvZ2ljYWwgc2xvdHMgbG9nIGEgc3RhbmRieSBzbmFwc2hvdCBhbmQgc3Rh cnQgbG9naWNhbCBkZWNvZGluZwogCQkgKiBhdCBleGFjdGx5IHRoYXQgcG9zaXRpb24uIFRo YXQgYWxsb3dzIHRoZSBzbG90IHRvIHN0YXJ0IHVwIG1vcmUKLQkJICogcXVpY2tseS4KKwkJ ICogcXVpY2tseS4gQnV0IG9uIGEgc3RhbmRieSB3ZSBjYW5ub3QgZG8gV0FMIHdyaXRlcywg c28ganVzdCB1c2UgdGhlCisJCSAqIHJlcGxheSBwb2ludGVyOyBlZmZlY3RpdmVseSwgYW4g YXR0ZW1wdCB0byBjcmVhdGUgYSBsb2dpY2FsIHNsb3Qgb24KKwkJICogc3RhbmRieSB3aWxs IGNhdXNlIGl0IHRvIHdhaXQgZm9yIGFuIHhsX3J1bm5pbmdfeGFjdCByZWNvcmQgdG8gYmUK KwkJICogbG9nZ2VkIGluZGVwZW5kZW50bHkgb24gdGhlIHByaW1hcnksIHNvIHRoYXQgYSBz bmFwc2hvdCBjYW4gYmUgYnVpbHQKKwkJICogdXNpbmcgdGhlIHJlY29yZC4KIAkJICoKLQkJ ICogVGhhdCdzIG5vdCBuZWVkZWQgKG9yIGluZGVlZCBoZWxwZnVsKSBmb3IgcGh5c2ljYWwg c2xvdHMgYXMgdGhleSdsbAotCQkgKiBzdGFydCByZXBsYXkgYXQgdGhlIGxhc3QgbG9nZ2Vk IGNoZWNrcG9pbnQgYW55d2F5LiBJbnN0ZWFkIHJldHVybgotCQkgKiB0aGUgbG9jYXRpb24g b2YgdGhlIGxhc3QgcmVkbyBMU04uIFdoaWxlIHRoYXQgc2xpZ2h0bHkgaW5jcmVhc2VzCi0J CSAqIHRoZSBjaGFuY2UgdGhhdCB3ZSBoYXZlIHRvIHJldHJ5LCBpdCdzIHdoZXJlIGEgYmFz ZSBiYWNrdXAgaGFzIHRvCi0JCSAqIHN0YXJ0IHJlcGxheSBhdC4KKwkJICogTm9uZSBvZiB0 aGlzIGlzIG5lZWRlZCAob3IgaW5kZWVkIGhlbHBmdWwpIGZvciBwaHlzaWNhbCBzbG90cyBh cworCQkgKiB0aGV5J2xsIHN0YXJ0IHJlcGxheSBhdCB0aGUgbGFzdCBsb2dnZWQgY2hlY2tw b2ludCBhbnl3YXkuIEluc3RlYWQKKwkJICogcmV0dXJuIHRoZSBsb2NhdGlvbiBvZiB0aGUg bGFzdCByZWRvIExTTi4gV2hpbGUgdGhhdCBzbGlnaHRseQorCQkgKiBpbmNyZWFzZXMgdGhl IGNoYW5jZSB0aGF0IHdlIGhhdmUgdG8gcmV0cnksIGl0J3Mgd2hlcmUgYSBiYXNlIGJhY2t1 cAorCQkgKiBoYXMgdG8gc3RhcnQgcmVwbGF5IGF0LgogCQkgKi8KLQkJaWYgKCFSZWNvdmVy eUluUHJvZ3Jlc3MoKSAmJiBTbG90SXNMb2dpY2FsKHNsb3QpKQotCQl7Ci0JCQlYTG9nUmVj UHRyCWZsdXNocHRyOwotCi0JCQkvKiBzdGFydCBhdCBjdXJyZW50IGluc2VydCBwb3NpdGlv biAqLworCQlpZiAoU2xvdElzUGh5c2ljYWwoc2xvdCkpCisJCQlyZXN0YXJ0X2xzbiA9IEdl dFJlZG9SZWNQdHIoKTsKKwkJZWxzZSBpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkpCisJCQly ZXN0YXJ0X2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCWVsc2UKIAkJCXJl c3RhcnRfbHNuID0gR2V0WExvZ0luc2VydFJlY1B0cigpOwotCQkJU3BpbkxvY2tBY3F1aXJl KCZzbG90LT5tdXRleCk7Ci0JCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9s c247Ci0JCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKLQotCQkJLyogbWFrZSBz dXJlIHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHN0YXJ0ICovCi0JCQlmbHVzaHB0 ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgpOwogCi0JCQkvKiBhbmQgbWFrZSBzdXJlIGl0J3Mg ZnN5bmNlZCB0byBkaXNrICovCi0JCQlYTG9nRmx1c2goZmx1c2hwdHIpOwotCQl9Ci0JCWVs c2UKLQkJewotCQkJcmVzdGFydF9sc24gPSBHZXRSZWRvUmVjUHRyKCk7Ci0JCQlTcGluTG9j a0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKLQkJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSBy ZXN0YXJ0X2xzbjsKLQkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwotCQl9CisJ CVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOworCQlzbG90LT5kYXRhLnJlc3RhcnRf bHNuID0gcmVzdGFydF9sc247CisJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwog CiAJCS8qIHByZXZlbnQgV0FMIHJlbW92YWwgYXMgZmFzdCBhcyBwb3NzaWJsZSAqLwogCQlS ZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKCk7CkBAIC0xMjIyLDYgKzEyMTQs MTcgQEAgUmVwbGljYXRpb25TbG90UmVzZXJ2ZVdhbCh2b2lkKQogCQlpZiAoWExvZ0dldExh c3RSZW1vdmVkU2Vnbm8oKSA8IHNlZ25vKQogCQkJYnJlYWs7CiAJfQorCisJaWYgKCFSZWNv dmVyeUluUHJvZ3Jlc3MoKSAmJiBTbG90SXNMb2dpY2FsKHNsb3QpKQorCXsKKwkJWExvZ1Jl Y1B0cglmbHVzaHB0cjsKKworCQkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggaW5mb3Jt YXRpb24gdG8gc3RhcnQgKi8KKwkJZmx1c2hwdHIgPSBMb2dTdGFuZGJ5U25hcHNob3QoKTsK KworCQkvKiBhbmQgbWFrZSBzdXJlIGl0J3MgZnN5bmNlZCB0byBkaXNrICovCisJCVhMb2dG bHVzaChmbHVzaHB0cik7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxz ZW5kZXIuYwppbmRleCBiNjg2NjkxY2EyLi5hMDVlY2RlZGRkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtOTA2LDIzICs5MDYsMzEgQEAgbG9naWNhbF9yZWFk X3hsb2dfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBh Z2VQdHIsIGludCByZXEKIAlpbnQJCQljb3VudDsKIAlXQUxSZWFkRXJyb3IgZXJyaW5mbzsK IAlYTG9nU2VnTm8Jc2Vnbm87Ci0JVGltZUxpbmVJRAljdXJyVExJID0gR2V0V0FMSW5zZXJ0 aW9uVGltZUxpbmUoKTsKKwlUaW1lTGluZUlECWN1cnJUTEk7CiAKIAkvKgotCSAqIFNpbmNl IGxvZ2ljYWwgZGVjb2RpbmcgaXMgb25seSBwZXJtaXR0ZWQgb24gYSBwcmltYXJ5IHNlcnZl ciwgd2Uga25vdwotCSAqIHRoYXQgdGhlIGN1cnJlbnQgdGltZWxpbmUgSUQgY2FuJ3QgYmUg Y2hhbmdpbmcgYW55IG1vcmUuIElmIHdlIGRpZCB0aGlzCi0JICogb24gYSBzdGFuZGJ5LCB3 ZSdkIGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIHZhbHVlcyB3ZSBjb21wdXRlIGhlcmUKLQkg KiBiZWNvbWluZyBpbnZhbGlkIGR1ZSB0byBhIHByb21vdGlvbiBvciB0aW1lbGluZSBjaGFu Z2UuCisJICogU2luY2UgbG9naWNhbCBkZWNvZGluZyBpcyBhbHNvIHBlcm1pdHRlZCBvbiBh IHN0YW5kYnkgc2VydmVyLCB3ZSBuZWVkCisJICogdG8gY2hlY2sgaWYgdGhlIHNlcnZlciBp cyBpbiByZWNvdmVyeSB0byBkZWNpZGUgaG93IHRvIGdldCB0aGUgY3VycmVudAorCSAqIHRp bWVsaW5lIElEIChzbyB0aGF0IGl0IGFsc28gY292ZXIgdGhlIHByb21vdGlvbiBvciB0aW1l bGluZSBjaGFuZ2UgY2FzZXMpLgogCSAqLworCisJLyogbWFrZSBzdXJlIHdlIGhhdmUgZW5v dWdoIFdBTCBhdmFpbGFibGUgKi8KKwlmbHVzaHB0ciA9IFdhbFNuZFdhaXRGb3JXYWwodGFy Z2V0UGFnZVB0ciArIHJlcUxlbik7CisKKwkvKiB0aGUgc3RhbmRieSBjb3VsZCBoYXZlIGJl ZW4gcHJvbW90ZWQsIHNvIGNoZWNrIGlmIHN0aWxsIGluIHJlY292ZXJ5ICovCisJYW1fY2Fz Y2FkaW5nX3dhbHNlbmRlciA9IFJlY292ZXJ5SW5Qcm9ncmVzcygpOworCisJaWYgKGFtX2Nh c2NhZGluZ193YWxzZW5kZXIpCisJCUdldFhMb2dSZXBsYXlSZWNQdHIoJmN1cnJUTEkpOwor CWVsc2UKKwkJY3VyclRMSSA9IEdldFdBTEluc2VydGlvblRpbWVMaW5lKCk7CisKIAlYTG9n UmVhZERldGVybWluZVRpbWVsaW5lKHN0YXRlLCB0YXJnZXRQYWdlUHRyLCByZXFMZW4sIGN1 cnJUTEkpOwogCXNlbmRUaW1lTGluZUlzSGlzdG9yaWMgPSAoc3RhdGUtPmN1cnJUTEkgIT0g Y3VyclRMSSk7CiAJc2VuZFRpbWVMaW5lID0gc3RhdGUtPmN1cnJUTEk7CiAJc2VuZFRpbWVM aW5lVmFsaWRVcHRvID0gc3RhdGUtPmN1cnJUTElWYWxpZFVudGlsOwogCXNlbmRUaW1lTGlu ZU5leHRUTEkgPSBzdGF0ZS0+bmV4dFRMSTsKIAotCS8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGVu b3VnaCBXQUwgYXZhaWxhYmxlICovCi0JZmx1c2hwdHIgPSBXYWxTbmRXYWl0Rm9yV2FsKHRh cmdldFBhZ2VQdHIgKyByZXFMZW4pOwotCiAJLyogZmFpbCBpZiBub3QgKGltcGxpZXMgd2Ug YXJlIGdvaW5nIHRvIHNodXQgZG93bikgKi8KIAlpZiAoZmx1c2hwdHIgPCB0YXJnZXRQYWdl UHRyICsgcmVxTGVuKQogCQlyZXR1cm4gLTE7CkBAIC05MzcsNyArOTQ1LDcgQEAgbG9naWNh bF9yZWFkX3hsb2dfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRh cmdldFBhZ2VQdHIsIGludCByZXEKIAkJCQkgY3VyX3BhZ2UsCiAJCQkJIHRhcmdldFBhZ2VQ dHIsCiAJCQkJIFhMT0dfQkxDS1NaLAotCQkJCSBzdGF0ZS0+c2VnLndzX3RsaSwgLyogUGFz cyB0aGUgY3VycmVudCBUTEkgYmVjYXVzZSBvbmx5CisJCQkJIGN1cnJUTEksIAkJCS8qIFBh c3MgdGhlIGN1cnJlbnQgVExJIGJlY2F1c2Ugb25seQogCQkJCQkJCQkJICogV2FsU25kU2Vn bWVudE9wZW4gY29udHJvbHMgd2hldGhlciBuZXcKIAkJCQkJCQkJCSAqIFRMSSBpcyBuZWVk ZWQuICovCiAJCQkJICZlcnJpbmZvKSkKQEAgLTMwNzMsMTAgKzMwODEsMTQgQEAgWExvZ1Nl bmRMb2dpY2FsKHZvaWQpCiAJICogSWYgZmlyc3QgdGltZSB0aHJvdWdoIGluIHRoaXMgc2Vz c2lvbiwgaW5pdGlhbGl6ZSBmbHVzaFB0ci4gIE90aGVyd2lzZSwKIAkgKiB3ZSBvbmx5IG5l ZWQgdG8gdXBkYXRlIGZsdXNoUHRyIGlmIEVuZFJlY1B0ciBpcyBwYXN0IGl0LgogCSAqLwot CWlmIChmbHVzaFB0ciA9PSBJbnZhbGlkWExvZ1JlY1B0cikKLQkJZmx1c2hQdHIgPSBHZXRG bHVzaFJlY1B0cihOVUxMKTsKLQllbHNlIGlmIChsb2dpY2FsX2RlY29kaW5nX2N0eC0+cmVh ZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCi0JCWZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQ dHIoTlVMTCk7CisJaWYgKGZsdXNoUHRyID09IEludmFsaWRYTG9nUmVjUHRyIHx8CisJCWxv Z2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+PSBmbHVzaFB0cikKKwl7 CisJCWlmIChhbV9jYXNjYWRpbmdfd2Fsc2VuZGVyKQorCQkJZmx1c2hQdHIgPSBHZXRTdGFu ZGJ5Rmx1c2hSZWNQdHIoTlVMTCk7CisJCWVsc2UKKwkJCWZsdXNoUHRyID0gR2V0Rmx1c2hS ZWNQdHIoTlVMTCk7CisJfQogCiAJLyogSWYgRW5kUmVjUHRyIGlzIHN0aWxsIHBhc3Qgb3Vy IGZsdXNoUHRyLCBpdCBtZWFucyB3ZSBjYXVnaHQgdXAuICovCiAJaWYgKGxvZ2ljYWxfZGVj b2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+PSBmbHVzaFB0cikKQEAgLTMxNjcsNyAr MzE3OSw4IEBAIEdldFN0YW5kYnlGbHVzaFJlY1B0cihUaW1lTGluZUlEICp0bGkpCiAJcmVj ZWl2ZVB0ciA9IEdldFdhbFJjdkZsdXNoUmVjUHRyKE5VTEwsICZyZWNlaXZlVExJKTsKIAly ZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEkpOwogCi0JKnRsaSA9 IHJlcGxheVRMSTsKKwlpZiAodGxpKQorCQkqdGxpID0gcmVwbGF5VExJOwogCiAJcmVzdWx0 ID0gcmVwbGF5UHRyOwogCWlmIChyZWNlaXZlVExJID09IHJlcGxheVRMSSAmJiByZWNlaXZl UHRyID4gcmVwbGF5UHRyKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKaW5kZXggY2ZlNTQwOTczOC4uNDhjYTg1 MjM4MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MveGxvZy5oCkBAIC0yMzAsNiArMjMwLDcgQEAgZXh0ZXJuIHZvaWQg WExPR1NobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIEJvb3RTdHJhcFhMT0codm9pZCk7 CiBleHRlcm4gdm9pZCBJbml0aWFsaXplV2FsQ29uc2lzdGVuY3lDaGVja2luZyh2b2lkKTsK IGV4dGVybiB2b2lkIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpOworZXh0 ZXJuIFdhbExldmVsIEdldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KHZvaWQpOwogZXh0ZXJu IHZvaWQgU3RhcnR1cFhMT0codm9pZCk7CiBleHRlcm4gdm9pZCBTaHV0ZG93blhMT0coaW50 IGNvZGUsIERhdHVtIGFyZyk7CiBleHRlcm4gdm9pZCBDcmVhdGVDaGVja1BvaW50KGludCBm bGFncyk7Ci0tIAoyLjM0LjEKCg== --------------cEK8MlHwlkB6EI0U6V6XX6R3 Content-Type: text/plain; charset=UTF-8; name="v53-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v53-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAzODkzOGE0ZDIwM2M4ZTg3NzZhN2JhN2UyMmY1ZDE3YjY3NTFiMGUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU3OjU2ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTMgMi82XSBIYW5kbGUgbG9naWNhbCBzbG90IGNvbmZsaWN0cyBvbiBzdGFuZGJ5LgoK RHVyaW5nIFdBTCByZXBsYXkgb24gc3RhbmRieSwgd2hlbiBzbG90IGNvbmZsaWN0IGlzIGlk ZW50aWZpZWQsCmludmFsaWRhdGUgc3VjaCBzbG90cy4gQWxzbyBkbyB0aGUgc2FtZSB0aGlu ZyBpZiB3YWxfbGV2ZWwgb24gdGhlIHByaW1hcnkgc2VydmVyCmlzIHJlZHVjZWQgdG8gYmVs b3cgbG9naWNhbCBhbmQgdGhlcmUgYXJlIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMKb24gc3Rh bmRieS4gSW50cm9kdWNlIGEgbmV3IFByb2NTaWduYWxSZWFzb24gdmFsdWUgZm9yIHNsb3QK Y29uZmxpY3QgcmVjb3ZlcnkuIEFycmFuZ2UgZm9yIGEgbmV3IHBnX3N0YXRfZGF0YWJhc2Vf Y29uZmxpY3RzIGZpZWxkOgpjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QuCgpBZGQgYSBuZXcg ZmllbGQgImNvbmZsaWN0aW5nIiBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cy4KCkF1dGhvcjog QW5kcmVzIEZyZXVuZCAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQgS2hhbmRla2FyLCBC ZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMg RnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVsbG8sCkJoYXJhdGgg UnVwaXJlZGR5Ci0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAg ICAgICAgIHwgIDExICsKIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAg ICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jICAg ICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAg ICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cu YyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9n LmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YyAgICAgICAgICAgICB8ICAyMCArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsICAgICAgICAgIHwgICA2ICstCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsZnVuY3MuYyAgICAgICAgfCAgMTMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYyAgICAgICAgICAgICAgICB8IDE4OSArKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jICAgICAgICAgICB8ICAxNiArLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgICAgIHwgICA3ICsKIHNyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgICB8ICAgMyArCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAgICAgfCAgMTMgKy0KIHNy Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8ICAyOCArKysK IHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jICB8ICAgNCAr CiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgICAgICAgfCAgIDMg Kwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgIDEx ICstCiBzcmMvaW5jbHVkZS9wZ3N0YXQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oICAgICAgICAgICAgICAgIHwg IDE0ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmggICAgICAgICAgICAgICAg IHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICAg ICB8ICAgOCArLQogMjQgZmlsZXMgY2hhbmdlZCwgMzA4IGluc2VydGlvbnMoKyksIDYxIGRl bGV0aW9ucygtKQogICA1LjMlIGRvYy9zcmMvc2dtbC8KICAgNi4yJSBzcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS8KICAgNC42JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs LwogIDU1LjYlIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uLwogICA0LjQlIHNyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjLwogICA2LjklIHNyYy9iYWNrZW5kL3Rjb3AvCiAgIDUuMyUgc3JjL2Jh Y2tlbmQvCiAgIDMuOCUgc3JjL2luY2x1ZGUvY2F0YWxvZy8KICAgNS4zJSBzcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi8KCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5z Z21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCBjODA5ZmYxYmE0Li5k YWQ3NDgwYjA2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTQ2NjMsNiArNDY2MywxNyBA QCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0 X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgIGRlYWRsb2NrcwogICAgICAg PC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jb25mbF9hY3RpdmVfbG9naWNhbHNsb3Q8 L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgYWN0aXZlIGxvZ2ljYWwgc2xvdHMgaW4gdGhp cyBkYXRhYmFzZSB0aGF0IGhhdmUgYmVlbgorICAgICAgIGludmFsaWRhdGVkIGJlY2F1c2Ug dGhleSBjb25mbGljdCB3aXRoIHJlY292ZXJ5IChub3RlIHRoYXQgaW5hY3RpdmUgb25lcwor ICAgICAgIGFyZSBhbHNvIGludmFsaWRhdGVkIGJ1dCBkbyBub3QgaW5jcmVtZW50IHRoaXMg Y291bnRlcikKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KICAgICA8L3Ri b2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvc3lzdGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwK aW5kZXggN2M4ZmMzZjY1NC4uMjM5ZjcxMzI5NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3N5c3RlbS12aWV3cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dt bApAQCAtMjUxNiw2ICsyNTE2LDE2IEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVG VCBKT0lOIHBnX3ByZXBhcmVkX3hhY3RzIHBweAogICAgICAgIGZhbHNlIGZvciBwaHlzaWNh bCBzbG90cy4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+Y29uZmxpY3Rp bmc8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgVHJ1ZSBpZiB0aGlzIGxvZ2ljYWwgc2xvdCBjb25mbGljdGVk IHdpdGggcmVjb3ZlcnkgKGFuZCBzbyBpcyBub3cKKyAgICAgICBpbnZhbGlkYXRlZCkuIEFs d2F5cyBOVUxMIGZvciBwaHlzaWNhbCBzbG90cy4KKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwppbmRleCBiNzY3OGYzYzE0Li45YTg2ZmIz ZmVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKQEAgLTE5Nyw2ICsxOTcs NyBAQCBnaXN0UmVkb0RlbGV0ZVJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJ WExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBOVUxMKTsK IAogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPnNuYXBz aG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bGRhdGEtPmlzQ2F0YWxvZ1JlbCwK IAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIApAQCAtMzkwLDYgKzM5MSw3IEBAIGdpc3RS ZWRvUGFnZVJldXNlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJbkhv dFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhp ZCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCQkgICB4bHJl Yy0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQkJICAgeGxyZWMtPmxvY2F0b3IpOwogfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCmluZGV4IDA4Y2ViOTEyODguLmI4 NTYzMDQ3NDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCkBAIC0xMDAz LDYgKzEwMDMsNyBAQCBoYXNoX3hsb2dfdmFjdXVtX29uZV9wYWdlKFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCiAJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRv ciwgTlVMTCwgTlVMTCk7CiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90 KHhsZGF0YS0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+ aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbS5jCmluZGV4IDg3MGVkOWQxOTEuLjI4OGJiYzUzOTcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC04NzE3LDYgKzg3MTcsNyBAQCBoZWFwX3hsb2df cHJ1bmUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYgKEluSG90U3RhbmRi eSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNuYXBz aG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+aXNDYXRhbG9nUmVsLAog CQkJCQkJCQkJCQlybG9jYXRvcik7CiAKIAkvKgpAQCAtODg4Niw2ICs4ODg3LDcgQEAgaGVh cF94bG9nX3Zpc2libGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYgKElu SG90U3RhbmRieSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxy ZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+ZmxhZ3Mg JiBWSVNJQklMSVRZTUFQX0lTX0NBVEFMT0dfUkVMLAogCQkJCQkJCQkJCQlybG9jYXRvcik7 CiAKIAkvKgpAQCAtOTAwMyw2ICs5MDA1LDcgQEAgaGVhcF94bG9nX2ZyZWV6ZV9wYWdlKFhM b2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQs IDAsICZybG9jYXRvciwgTlVMTCwgTlVMTCk7CiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0 V2l0aFNuYXBzaG90KHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJ CQkJeGxyZWMtPmlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYwppbmRleCA0MTRjYTRmNmRlLi5jODdl NDZlZDY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYwpAQCAtNjY5LDYg KzY2OSw3IEBAIGJ0cmVlX3hsb2dfZGVsZXRlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwp OwogCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxyZWMtPmlzQ2F0YWxvZ1JlbCwK IAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIApAQCAtMTAwNyw2ICsxMDA4LDcgQEAgYnRy ZWVfeGxvZ19yZXVzZV9wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJaWYgKElu SG90U3RhbmRieSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxs WGlkKHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCSAgIHhs cmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bG9jYXRvcik7CiB9 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMKaW5kZXggYjA3MWI1OWM4YS4u NDU5YWM5MjliYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMKQEAgLTg3 OSw2ICs4NzksNyBAQCBzcGdSZWRvVmFjdXVtUmVkaXJlY3QoWExvZ1JlYWRlclN0YXRlICpy ZWNvcmQpCiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJmxvY2F0b3IsIE5V TEwsIE5VTEwpOwogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRh dGEtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bGRhdGEtPmlzQ2F0 YWxvZ1JlbCwKIAkJCQkJCQkJCQkJbG9jYXRvcik7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9nLmMKaW5kZXggNTQzZDRkODk3YS4uYzEyMmY4NTMzOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNjgwNyw3ICs2ODA3LDcgQEAgQ3JlYXRlQ2hlY2tQ b2ludChpbnQgZmxhZ3MpCiAJICovCiAJWExCeXRlVG9TZWcoUmVkb1JlY1B0ciwgX2xvZ1Nl Z05vLCB3YWxfc2VnbWVudF9zaXplKTsKIAlLZWVwTG9nU2VnKHJlY3B0ciwgJl9sb2dTZWdO byk7Ci0JaWYgKEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoX2xvZ1NlZ05v KSkKKwlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhfbG9nU2VnTm8s IEludmFsaWRPaWQsIE5VTEwpKQogCXsKIAkJLyoKIAkJICogU29tZSBzbG90cyBoYXZlIGJl ZW4gaW52YWxpZGF0ZWQ7IHJlY2FsY3VsYXRlIHRoZSBvbGQtc2VnbWVudApAQCAtNzI1MSw3 ICs3MjUxLDcgQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlyZXBsYXlQdHIg PSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEkpOwogCWVuZHB0ciA9IChyZWNlaXZl UHRyIDwgcmVwbGF5UHRyKSA/IHJlcGxheVB0ciA6IHJlY2VpdmVQdHI7CiAJS2VlcExvZ1Nl ZyhlbmRwdHIsICZfbG9nU2VnTm8pOwotCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNh dGlvblNsb3RzKF9sb2dTZWdObykpCisJaWYgKEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0 aW9uU2xvdHMoX2xvZ1NlZ05vLCBJbnZhbGlkT2lkLCBOVUxMKSkKIAl7CiAJCS8qCiAJCSAq IFNvbWUgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRhdGVkOyByZWNhbGN1bGF0ZSB0aGUgb2xk LXNlZ21lbnQKQEAgLTc5NjQsNiArNzk2NCwyMiBAQCB4bG9nX3JlZG8oWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpCiAJCS8qIFVwZGF0ZSBvdXIgY29weSBvZiB0aGUgcGFyYW1ldGVycyBp biBwZ19jb250cm9sICovCiAJCW1lbWNweSgmeGxyZWMsIFhMb2dSZWNHZXREYXRhKHJlY29y ZCksIHNpemVvZih4bF9wYXJhbWV0ZXJfY2hhbmdlKSk7CiAKKwkJLyoKKwkJICogSW52YWxp ZGF0ZSBsb2dpY2FsIHNsb3RzIGlmIHdlIGFyZSBpbiBob3Qgc3RhbmRieSBhbmQgdGhlIHBy aW1hcnkgZG9lcyBub3QKKwkJICogaGF2ZSBhIFdBTCBsZXZlbCBzdWZmaWNpZW50IGZvciBs b2dpY2FsIGRlY29kaW5nLiBObyBuZWVkIHRvIHNlYXJjaAorCQkgKiBmb3IgcG90ZW50aWFs bHkgY29uZmxpY3RpbmcgbG9naWNhbGx5IHNsb3RzIGlmIHN0YW5kYnkgaXMgcnVubmluZwor CQkgKiB3aXRoIHdhbF9sZXZlbCBsb3dlciB0aGFuIGxvZ2ljYWwsIGJlY2F1c2UgaW4gdGhh dCBjYXNlLCB3ZSB3b3VsZAorCQkgKiBoYXZlIGVpdGhlciBkaXNhbGxvd2VkIGNyZWF0aW9u IG9mIGxvZ2ljYWwgc2xvdHMgb3IgaW52YWxpZGF0ZWQgZXhpc3RpbmcKKwkJICogb25lcy4K KwkJICovCisJCWlmIChJblJlY292ZXJ5ICYmIEluSG90U3RhbmRieSAmJgorCQkJeGxyZWMu d2FsX2xldmVsIDwgV0FMX0xFVkVMX0xPR0lDQUwgJiYKKwkJCXdhbF9sZXZlbCA+PSBXQUxf TEVWRUxfTE9HSUNBTCkKKwkJeworCQkJVHJhbnNhY3Rpb25JZCBDb25mbGljdEhvcml6b24g PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJCUludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0 aW9uU2xvdHMoSW52YWxpZFhMb2dSZWNQdHIsIEludmFsaWRPaWQsICZDb25mbGljdEhvcml6 b24pOworCQl9CisKIAkJTFdMb2NrQWNxdWlyZShDb250cm9sRmlsZUxvY2ssIExXX0VYQ0xV U0lWRSk7CiAJCUNvbnRyb2xGaWxlLT5NYXhDb25uZWN0aW9ucyA9IHhscmVjLk1heENvbm5l Y3Rpb25zOwogCQlDb250cm9sRmlsZS0+bWF4X3dvcmtlcl9wcm9jZXNzZXMgPSB4bHJlYy5t YXhfd29ya2VyX3Byb2Nlc3NlczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bAppbmRleCA5NTA4ZDhiYTU1Li45YzJiNDZjZGNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fdmlld3Muc3FsCkBAIC05OTksNyArOTk5LDggQEAgQ1JFQVRFIFZJRVcgcGdfcmVw bGljYXRpb25fc2xvdHMgQVMKICAgICAgICAgICAgIEwuY29uZmlybWVkX2ZsdXNoX2xzbiwK ICAgICAgICAgICAgIEwud2FsX3N0YXR1cywKICAgICAgICAgICAgIEwuc2FmZV93YWxfc2l6 ZSwKLSAgICAgICAgICAgIEwudHdvX3BoYXNlCisgICAgICAgICAgICBMLnR3b19waGFzZSwK KyAgICAgICAgICAgIEwuY29uZmxpY3RpbmcKICAgICBGUk9NIHBnX2dldF9yZXBsaWNhdGlv bl9zbG90cygpIEFTIEwKICAgICAgICAgICAgIExFRlQgSk9JTiBwZ19kYXRhYmFzZSBEIE9O IChMLmRhdG9pZCA9IEQub2lkKTsKIApAQCAtMTA2Nyw3ICsxMDY4LDggQEAgQ1JFQVRFIFZJ RVcgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMgQVMKICAgICAgICAgICAgIHBnX3N0YXRf Z2V0X2RiX2NvbmZsaWN0X2xvY2soRC5vaWQpIEFTIGNvbmZsX2xvY2ssCiAgICAgICAgICAg ICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdChELm9pZCkgQVMgY29uZmxfc25h cHNob3QsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4o RC5vaWQpIEFTIGNvbmZsX2J1ZmZlcnBpbiwKLSAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2Ri X2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrCisg ICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKEQu b2lkKSBBUyBjb25mbF9kZWFkbG9jaywKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2Nv bmZsaWN0X2xvZ2ljYWxzbG90KEQub2lkKSBBUyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QK ICAgICBGUk9NIHBnX2RhdGFiYXNlIEQ7CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfdXNlcl9m dW5jdGlvbnMgQVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbG9naWNhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWxmdW5jcy5jCmluZGV4IGZhMWI2NDFhMmIuLjA3MGZkMzc4ZTggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwpAQCAtMjE2 LDkgKzIxNiw5IEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlc19ndXRzKEZ1bmN0aW9u Q2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJvb2wgYmluCiAKIAkJLyoKIAkJICog QWZ0ZXIgdGhlIHNhbml0eSBjaGVja3MgaW4gQ3JlYXRlRGVjb2RpbmdDb250ZXh0LCBtYWtl IHN1cmUgdGhlCi0JCSAqIHJlc3RhcnRfbHNuIGlzIHZhbGlkLiAgQXZvaWQgImNhbm5vdCBn ZXQgY2hhbmdlcyIgd29yZGluZyBpbiB0aGlzCi0JCSAqIGVycm1zZyBiZWNhdXNlIHRoYXQn ZCBiZSBjb25mdXNpbmdseSBhbWJpZ3VvdXMgYWJvdXQgbm8gY2hhbmdlcwotCQkgKiBiZWlu ZyBhdmFpbGFibGUuCisJCSAqIHJlc3RhcnRfbHNuIGlzIHZhbGlkIG9yIGJvdGggeG1pbiBh bmQgY2F0YWxvZ194bWluIGFyZSB2YWxpZC4gQXZvaWQKKwkJICogImNhbm5vdCBnZXQgY2hh bmdlcyIgd29yZGluZyBpbiB0aGlzIGVycm1zZyBiZWNhdXNlIHRoYXQnZCBiZQorCQkgKiBj b25mdXNpbmdseSBhbWJpZ3VvdXMgYWJvdXQgbm8gY2hhbmdlcyBiZWluZyBhdmFpbGFibGUu CiAJCSAqLwogCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ ZGF0YS5yZXN0YXJ0X2xzbikpCiAJCQllcmVwb3J0KEVSUk9SLApAQCAtMjI3LDYgKzIyNywx MyBAQCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXNfZ3V0cyhGdW5jdGlvbkNhbGxJbmZv IGZjaW5mbywgYm9vbCBjb25maXJtLCBib29sIGJpbgogCQkJCQkJCU5hbWVTdHIoKm5hbWUp KSwKIAkJCQkJIGVycmRldGFpbCgiVGhpcyBzbG90IGhhcyBuZXZlciBwcmV2aW91c2x5IHJl c2VydmVkIFdBTCwgb3IgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQuIikpKTsKIAorCQlpZiAo TG9naWNhbFJlcGxpY2F0aW9uU2xvdElzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdCkpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IHJlYWQgZnJvbSBs b2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCQlOYW1lU3RyKCpuYW1l KSksCisJCQkJCSBlcnJkZXRhaWwoIlRoaXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCBi ZWNhdXNlIGl0IHdhcyBjb25mbGljdGluZyB3aXRoIHJlY292ZXJ5LiIpKSk7CisKIAkJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCS8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9zbG90LmMKaW5kZXggMjI5M2MwYzZmYy4uNWZmODQzMDQ3YyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYwpAQCAtODU1LDggKzg1NSw3IEBAIFJlcGxpY2F0aW9uU2xvdHNDb21wdXRl UmVxdWlyZWRYbWluKGJvb2wgYWxyZWFkeV9sb2NrZWQpCiAJCVNwaW5Mb2NrQWNxdWlyZSgm cy0+bXV0ZXgpOwogCQllZmZlY3RpdmVfeG1pbiA9IHMtPmVmZmVjdGl2ZV94bWluOwogCQll ZmZlY3RpdmVfY2F0YWxvZ194bWluID0gcy0+ZWZmZWN0aXZlX2NhdGFsb2dfeG1pbjsKLQkJ aW52YWxpZGF0ZWQgPSAoIVhMb2dSZWNQdHJJc0ludmFsaWQocy0+ZGF0YS5pbnZhbGlkYXRl ZF9hdCkgJiYKLQkJCQkJICAgWExvZ1JlY1B0cklzSW52YWxpZChzLT5kYXRhLnJlc3RhcnRf bHNuKSk7CisJCWludmFsaWRhdGVkID0gU2xvdElzSW52YWxpZChzKTsKIAkJU3BpbkxvY2tS ZWxlYXNlKCZzLT5tdXRleCk7CiAKIAkJLyogaW52YWxpZGF0ZWQgc2xvdHMgbmVlZCBub3Qg YXBwbHkgKi8KQEAgLTEyMjYsMjAgKzEyMjUsMjEgQEAgUmVwbGljYXRpb25TbG90UmVzZXJ2 ZVdhbCh2b2lkKQogfQogCiAvKgotICogSGVscGVyIGZvciBJbnZhbGlkYXRlT2Jzb2xldGVS ZXBsaWNhdGlvblNsb3RzIC0tIGFjcXVpcmVzIHRoZSBnaXZlbiBzbG90Ci0gKiBhbmQgbWFy ayBpdCBpbnZhbGlkLCBpZiBuZWNlc3NhcnkgYW5kIHBvc3NpYmxlLgorICogSGVscGVyIGZv ciBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzCisgKgorICogQWNxdWlyZXMg dGhlIGdpdmVuIHNsb3QgYW5kIG1hcmsgaXQgaW52YWxpZCwgaWYgbmVjZXNzYXJ5IGFuZCBw b3NzaWJsZS4KICAqCiAgKiBSZXR1cm5zIHdoZXRoZXIgUmVwbGljYXRpb25TbG90Q29udHJv bExvY2sgd2FzIHJlbGVhc2VkIGluIHRoZSBpbnRlcmltIChhbmQKICAqIGluIHRoYXQgY2Fz ZSB3ZSdyZSBub3QgaG9sZGluZyB0aGUgbG9jayBhdCByZXR1cm4sIG90aGVyd2lzZSB3ZSBh cmUpLgogICoKLSAqIFNldHMgKmludmFsaWRhdGVkIHRydWUgaWYgdGhlIHNsb3Qgd2FzIGlu dmFsaWRhdGVkLiAoVW50b3VjaGVkIG90aGVyd2lzZS4pCisgKiBTZXRzICppbnZhbGlkYXRl ZCB0cnVlIGlmIGFuIG9ic29sZXRlIHNsb3Qgd2FzIGludmFsaWRhdGVkLiAoVW50b3VjaGVk IG90aGVyd2lzZS4pCiAgKgogICogVGhpcyBpcyBpbmhlcmVudGx5IHJhY3ksIGJlY2F1c2Ug d2UgcmVsZWFzZSB0aGUgTFdMb2NrCiAgKiBmb3Igc3lzY2FsbHMsIHNvIGNhbGxlciBtdXN0 IHJlc3RhcnQgaWYgd2UgcmV0dXJuIHRydWUuCiAgKi8KIHN0YXRpYyBib29sCiBJbnZhbGlk YXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRy IG9sZGVzdExTTiwKLQkJCQkJCQkgICBib29sICppbnZhbGlkYXRlZCkKKwkJCQkJCQkgICBi b29sICppbnZhbGlkYXRlZCwgVHJhbnNhY3Rpb25JZCAqeGlkKQogewogCWludAkJCWxhc3Rf c2lnbmFsZWRfcGlkID0gMDsKIAlib29sCQlyZWxlYXNlZF9sb2NrID0gZmFsc2U7CkBAIC0x MjQ3LDYgKzEyNDcsMTEgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxp Y2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0ciBvbGRlc3RMU04sCiAJZm9yICg7OykKIAl7CiAJ CVhMb2dSZWNQdHIJcmVzdGFydF9sc247CisJCVRyYW5zYWN0aW9uSWQgc2xvdF94bWluOwor CQlUcmFuc2FjdGlvbklkIHNsb3RfY2F0YWxvZ194bWluOworCQlTdHJpbmdJbmZvRGF0YSBl cnJfbXNnOworCQlTdHJpbmdJbmZvRGF0YSBlcnJfZGV0YWlsOworCiAJCU5hbWVEYXRhCXNs b3RuYW1lOwogCQlpbnQJCQlhY3RpdmVfcGlkID0gMDsKIApAQCAtMTI2MywxOSArMTI2OCwy MyBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpz LCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAkJICogQ2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMg dG8gYmUgaW52YWxpZGF0ZWQuIElmIGl0IG5lZWRzIHRvIGJlCiAJCSAqIGludmFsaWRhdGVk LCBhbmQgaXMgbm90IGN1cnJlbnRseSBhY3F1aXJlZCwgYWNxdWlyZSBpdCBhbmQgbWFyayBp dAogCQkgKiBhcyBoYXZpbmcgYmVlbiBpbnZhbGlkYXRlZC4gIFdlIGRvIHRoaXMgd2l0aCB0 aGUgc3BpbmxvY2sgaGVsZCB0bwotCQkgKiBhdm9pZCByYWNlIGNvbmRpdGlvbnMgLS0gZm9y IGV4YW1wbGUgdGhlIHJlc3RhcnRfbHNuIGNvdWxkIG1vdmUKLQkJICogZm9yd2FyZCwgb3Ig dGhlIHNsb3QgY291bGQgYmUgZHJvcHBlZC4KKwkJICogYXZvaWQgcmFjZSBjb25kaXRpb25z IC0tIGZvciBleGFtcGxlIHRoZSByZXN0YXJ0X2xzbiAob3IgdGhlCisJCSAqIHhtaW4ocykg Y291bGQpIG1vdmUgZm9yd2FyZCBvciB0aGUgc2xvdCBjb3VsZCBiZSBkcm9wcGVkLgogCQkg Ki8KIAkJU3BpbkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CiAKIAkJcmVzdGFydF9sc24gPSBz LT5kYXRhLnJlc3RhcnRfbHNuOwotCi0JCS8qCi0JCSAqIElmIHRoZSBzbG90IGlzIGFscmVh ZHkgaW52YWxpZCBvciBpcyBmcmVzaCBlbm91Z2gsIHdlIGRvbid0IG5lZWQgdG8KLQkJICog ZG8gYW55dGhpbmcuCi0JCSAqLwotCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChyZXN0YXJ0 X2xzbikgfHwgcmVzdGFydF9sc24gPj0gb2xkZXN0TFNOKQorCQlzbG90X3htaW4gPSBzLT5k YXRhLnhtaW47CisJCXNsb3RfY2F0YWxvZ194bWluID0gcy0+ZGF0YS5jYXRhbG9nX3htaW47 CisKKwkJLyogdGhlIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgKGxvZ2ljYWwgZGVjb2Rp bmcgY29uZmxpY3QgY2FzZSkgKi8KKwkJaWYgKCh4aWQgJiYgKChMb2dpY2FsUmVwbGljYXRp b25TbG90SXNJbnZhbGlkKHMpKSB8fAorCQkvKiBvciB0aGUgeGlkIGlzIHZhbGlkIGFuZCB0 aGlzIGlzIGEgbm9uIGNvbmZsaWN0aW5nIHNsb3QgKi8KKwkJCQkJIChUcmFuc2FjdGlvbklk SXNWYWxpZCgqeGlkKSAmJiAhKExvZ2ljYWxSZXBsaWNhdGlvblNsb3RYaWRzQ29uZmxpY3Qo c2xvdF94bWluLCBzbG90X2NhdGFsb2dfeG1pbiwgKnhpZCkpKSkpIHx8CisJCS8qIG9yIHRo ZSBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIChvYnNvbGV0ZSBMU04gY2FzZSkgKi8KKwkJ CSgheGlkICYmIChYTG9nUmVjUHRySXNJbnZhbGlkKHJlc3RhcnRfbHNuKSB8fCByZXN0YXJ0 X2xzbiA+PSBvbGRlc3RMU04pKSkKIAkJeworCQkJLyogdGhlbiwgd2UgYXJlIG5vdCBmb3Jj aW5nIGZvciBpbnZhbGlkYXRpb24gKi8KIAkJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgp OwogCQkJaWYgKHJlbGVhc2VkX2xvY2spCiAJCQkJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlv blNsb3RDb250cm9sTG9jayk7CkBAIC0xMjk0LDkgKzEzMDMsMTYgQEAgSW52YWxpZGF0ZVBv c3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0ciBvbGRl c3RMU04sCiAJCXsKIAkJCU15UmVwbGljYXRpb25TbG90ID0gczsKIAkJCXMtPmFjdGl2ZV9w aWQgPSBNeVByb2NQaWQ7Ci0JCQlzLT5kYXRhLmludmFsaWRhdGVkX2F0ID0gcmVzdGFydF9s c247Ci0JCQlzLT5kYXRhLnJlc3RhcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7Ci0KKwkJ CWlmICh4aWQpCisJCQl7CisJCQkJcy0+ZGF0YS54bWluID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CisJCQkJcy0+ZGF0YS5jYXRhbG9nX3htaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsK KwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlzLT5kYXRhLmludmFsaWRhdGVkX2F0ID0gcmVz dGFydF9sc247CisJCQkJcy0+ZGF0YS5yZXN0YXJ0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRy OworCQkJfQogCQkJLyogTGV0IGNhbGxlciBrbm93ICovCiAJCQkqaW52YWxpZGF0ZWQgPSB0 cnVlOwogCQl9CkBAIC0xMzI5LDE2ICsxMzQ1LDQ1IEBAIEludmFsaWRhdGVQb3NzaWJseU9i c29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAog CQkJICovCiAJCQlpZiAobGFzdF9zaWduYWxlZF9waWQgIT0gYWN0aXZlX3BpZCkKIAkJCXsK KwkJCQlib29sCQlzZW5kX3NpZ25hbCA9IGZhbHNlOworCisJCQkJaW5pdFN0cmluZ0luZm8o JmVycl9tc2cpOworCQkJCWluaXRTdHJpbmdJbmZvKCZlcnJfZGV0YWlsKTsKKworCQkJCWFw cGVuZFN0cmluZ0luZm8oJmVycl9tc2csICJ0ZXJtaW5hdGluZyBwcm9jZXNzICVkIHRvIHJl bGVhc2UgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJCQkgYWN0aXZlX3BpZCwK KwkJCQkJCQkJIE5hbWVTdHIoc2xvdG5hbWUpKTsKKwkJCQlpZiAoeGlkKQorCQkJCXsKKwkJ CQkJYXBwZW5kU3RyaW5nSW5mbygmZXJyX21zZywgIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3 aXRoIHJlY292ZXJ5Iik7CisJCQkJCXNlbmRfc2lnbmFsID0gdHJ1ZTsKKworCQkJCQlpZiAo VHJhbnNhY3Rpb25JZElzVmFsaWQoKnhpZCkpCisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZl cnJfZGV0YWlsLCAiVGhlIHNsb3QgY29uZmxpY3RlZCB3aXRoIHhpZCBob3Jpem9uICV1LiIs ICp4aWQpOworCQkJCQllbHNlCisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJfZGV0YWls LCAiTG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCB0byBi ZSBhdCBsZWFzdCBsb2dpY2FsIG9uIHRoZSBwcmltYXJ5IHNlcnZlciIpOworCQkJCX0KKwkJ CQllbHNlCisJCQkJeworCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJfZGV0YWlsLCAiVGhl IHNsb3QncyByZXN0YXJ0X2xzbiAlWC8lWCBleGNlZWRzIHRoZSBsaW1pdCBieSAlbGx1IGJ5 dGVzLiIsCisJCQkJCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHJlc3RhcnRfbHNuKSwKKwkJCQkJ CQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSAob2xkZXN0TFNOIC0gcmVzdGFydF9sc24pKTsK KwkJCQl9CisKIAkJCQllcmVwb3J0KExPRywKLQkJCQkJCWVycm1zZygidGVybWluYXRpbmcg cHJvY2VzcyAlZCB0byByZWxlYXNlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKLQkJCQkJ CQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1lKSksCi0JCQkJCQllcnJkZXRhaWwo IlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgvJVggZXhjZWVkcyB0aGUgbGltaXQgYnkgJWxs dSBieXRlcy4iLAotCQkJCQkJCQkgIExTTl9GT1JNQVRfQVJHUyhyZXN0YXJ0X2xzbiksCi0J CQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKG9sZGVzdExTTiAtIHJlc3RhcnRfbHNu KSksCi0JCQkJCQllcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfc2xv dF93YWxfa2VlcF9zaXplLiIpKTsKLQotCQkJCSh2b2lkKSBraWxsKGFjdGl2ZV9waWQsIFNJ R1RFUk0pOworCQkJCQkJZXJybXNnKCIlcyIsIGVycl9tc2cuZGF0YSksCisJCQkJCQllcnJk ZXRhaWwoIiVzIiwgZXJyX2RldGFpbC5kYXRhKSwKKwkJCQkJCXNlbmRfc2lnbmFsID8gMCA6 IGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9zbG90X3dhbF9rZWVw X3NpemUuIikpOworCisJCQkJaWYgKHNlbmRfc2lnbmFsKQorCQkJCQkodm9pZCkgU2VuZFBy b2NTaWduYWwoYWN0aXZlX3BpZCwgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FM U0xPVCwgSW52YWxpZEJhY2tlbmRJZCk7CisJCQkJZWxzZQorCQkJCQkodm9pZCkga2lsbChh Y3RpdmVfcGlkLCBTSUdURVJNKTsKKwogCQkJCWxhc3Rfc2lnbmFsZWRfcGlkID0gYWN0aXZl X3BpZDsKKworCQkJCXBmcmVlKGVycl9tc2cuZGF0YSk7CisJCQkJcGZyZWUoZXJyX2RldGFp bC5kYXRhKTsKIAkJCX0KIAogCQkJLyogV2FpdCB1bnRpbCB0aGUgc2xvdCBpcyByZWxlYXNl ZC4gKi8KQEAgLTEzNTUsNiArMTQwMCwxMSBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0 ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAkJfQog CQllbHNlCiAJCXsKKwkJCWJvb2wJCWhpbnQgPSBmYWxzZTs7CisKKwkJCWluaXRTdHJpbmdJ bmZvKCZlcnJfbXNnKTsKKwkJCWluaXRTdHJpbmdJbmZvKCZlcnJfZGV0YWlsKTsKKwogCQkJ LyoKIAkJCSAqIFdlIGhvbGQgdGhlIHNsb3Qgbm93IGFuZCBoYXZlIGFscmVhZHkgaW52YWxp ZGF0ZWQgaXQ7IGZsdXNoIGl0CiAJCQkgKiB0byBlbnN1cmUgdGhhdCBzdGF0ZSBwZXJzaXN0 cy4KQEAgLTEzNzAsMTQgKzE0MjAsMzcgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVT bG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0ciBvbGRlc3RMU04sCiAJCQlSZXBs aWNhdGlvblNsb3RNYXJrRGlydHkoKTsKIAkJCVJlcGxpY2F0aW9uU2xvdFNhdmUoKTsKIAkJ CVJlcGxpY2F0aW9uU2xvdFJlbGVhc2UoKTsKKwkJCXBnc3RhdF9kcm9wX3JlcGxzbG90KHMp OworCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJfbXNnLCAiaW52YWxpZGF0aW5nIik7CisK KwkJCWlmICh4aWQpCisJCQl7CisJCQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKCp4aWQp KQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJfZGV0YWlsLCAiVGhlIHNsb3QgY29uZmxp Y3RlZCB3aXRoIHhpZCBob3Jpem9uICV1LiIsICp4aWQpOworCQkJCWVsc2UKKwkJCQkJYXBw ZW5kU3RyaW5nSW5mbygmZXJyX2RldGFpbCwgIkxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRi eSByZXF1aXJlcyB3YWxfbGV2ZWwgdG8gYmUgYXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJp bWFyeSBzZXJ2ZXIiKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlhcHBlbmRTdHJpbmdJ bmZvKCZlcnJfbXNnLCAiIG9ic29sZXRlIHJlcGxpY2F0aW9uIik7CisJCQkJYXBwZW5kU3Ry aW5nSW5mbygmZXJyX2RldGFpbCwgIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgvJVggZXhj ZWVkcyB0aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAorCQkJCQkJCQkgTFNOX0ZPUk1BVF9B UkdTKHJlc3RhcnRfbHNuKSwKKwkJCQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIChvbGRl c3RMU04gLSByZXN0YXJ0X2xzbikpOworCQkJCWhpbnQgPSB0cnVlOworCQkJfQorCisJCQlh cHBlbmRTdHJpbmdJbmZvKCZlcnJfbXNnLCAiIHNsb3QgXCIlc1wiIGJlY2F1c2UgaXQgY29u ZmxpY3RzIHdpdGggcmVjb3ZlcnkiLAorCQkJCQkJCSBOYW1lU3RyKHNsb3RuYW1lKSk7CisK IAogCQkJZXJlcG9ydChMT0csCi0JCQkJCWVycm1zZygiaW52YWxpZGF0aW5nIG9ic29sZXRl IHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKLQkJCQkJCSAgIE5hbWVTdHIoc2xvdG5hbWUp KSwKLQkJCQkJZXJyZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGV4Y2Vl ZHMgdGhlIGxpbWl0IGJ5ICVsbHUgYnl0ZXMuIiwKLQkJCQkJCQkgIExTTl9GT1JNQVRfQVJH UyhyZXN0YXJ0X2xzbiksCi0JCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSAob2xkZXN0 TFNOIC0gcmVzdGFydF9sc24pKSwKLQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8g aW5jcmVhc2UgbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisJCQkJCWVycm1zZygiJXMi LCBlcnJfbXNnLmRhdGEpLAorCQkJCQllcnJkZXRhaWwoIiVzIiwgZXJyX2RldGFpbC5kYXRh KSwKKwkJCQkJaGludCA/IGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1h eF9zbG90X3dhbF9rZWVwX3NpemUuIikgOiAwKTsKKworCQkJcGZyZWUoZXJyX21zZy5kYXRh KTsKKwkJCXBmcmVlKGVycl9kZXRhaWwuZGF0YSk7CiAKIAkJCS8qIGRvbmUgd2l0aCB0aGlz IHNsb3QgZm9yIG5vdyAqLwogCQkJYnJlYWs7CkBAIC0xMzkwLDIwICsxNDYzLDM2IEBAIElu dmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dS ZWNQdHIgb2xkZXN0TFNOLAogfQogCiAvKgotICogTWFyayBhbnkgc2xvdCB0aGF0IHBvaW50 cyB0byBhbiBMU04gb2xkZXIgdGhhbiB0aGUgZ2l2ZW4gc2VnbWVudAotICogYXMgaW52YWxp ZDsgaXQgcmVxdWlyZXMgV0FMIHRoYXQncyBhYm91dCB0byBiZSByZW1vdmVkLgorICogSW52 YWxpZGF0ZSBPYnNvbGV0ZSBzbG90cyBvciByZXNvbHZlIHJlY292ZXJ5IGNvbmZsaWN0cyB3 aXRoIGxvZ2ljYWwgc2xvdHMuCisgKgorICogT2Jzb2xldGUgY2FzZSAoYWthIHhpZCBpcyBO VUxMKToKICAqCi0gKiBSZXR1cm5zIHRydWUgd2hlbiBhbnkgc2xvdCBoYXZlIGdvdCBpbnZh bGlkYXRlZC4KKyAqCSBNYXJrIGFueSBzbG90IHRoYXQgcG9pbnRzIHRvIGFuIExTTiBvbGRl ciB0aGFuIHRoZSBnaXZlbiBzZWdtZW50CisgKgkgYXMgaW52YWxpZDsgaXQgcmVxdWlyZXMg V0FMIHRoYXQncyBhYm91dCB0byBiZSByZW1vdmVkLgorICoJIGludmFsaWRhdGVkIGlzIHNl dCB0byB0cnVlIHdoZW4gYW55IHNsb3QgaGF2ZSBnb3QgaW52YWxpZGF0ZWQuCiAgKgotICog TkIgLSB0aGlzIHJ1bnMgYXMgcGFydCBvZiBjaGVja3BvaW50LCBzbyBhdm9pZCByYWlzaW5n IGVycm9ycyBpZiBwb3NzaWJsZS4KKyAqICBMb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgY2Fz ZToKKyAqCisgKgkgV2hlbiB4aWQgaXMgdmFsaWQsIGl0IG1lYW5zIHRoYXQgd2UgYXJlIGFi b3V0IHRvIHJlbW92ZSByb3dzIG9sZGVyIHRoYW4geGlkLgorICoJIFRoZXJlZm9yZSB3ZSBu ZWVkIHRvIGludmFsaWRhdGUgc2xvdHMgdGhhdCBkZXBlbmQgb24gc2VlaW5nIHRob3NlIHJv d3MuCisgKgkgV2hlbiB4aWQgaXMgaW52YWxpZCwgaW52YWxpZGF0ZSBhbGwgbG9naWNhbCBz bG90cy4gVGhpcyBpcyByZXF1aXJlZCB3aGVuIHRoZQorICoJIG1hc3RlciB3YWxfbGV2ZWwg aXMgc2V0IGJhY2sgdG8gcmVwbGljYSwgc28gZXhpc3RpbmcgbG9naWNhbCBzbG90cyBuZWVk IHRvCisgKgkgYmUgaW52YWxpZGF0ZWQuCiAgKi8KIGJvb2wKLUludmFsaWRhdGVPYnNvbGV0 ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNlZ25vKQorSW52YWxpZGF0ZU9i c29sZXRlUmVwbGljYXRpb25TbG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vnbm8sIE9pZCBkYm9p ZCwgVHJhbnNhY3Rpb25JZCAqeGlkKQogewotCVhMb2dSZWNQdHIJb2xkZXN0TFNOOworCisJ WExvZ1JlY1B0cglvbGRlc3RMU04gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlib29sCQlpbnZh bGlkYXRlZCA9IGZhbHNlOwogCi0JWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIob2xkZXN0U2Vn bm8sIDAsIHdhbF9zZWdtZW50X3NpemUsIG9sZGVzdExTTik7CisJQXNzZXJ0KG1heF9yZXBs aWNhdGlvbl9zbG90cyA+PSAwKTsKKworCWlmIChtYXhfcmVwbGljYXRpb25fc2xvdHMgPT0g MCkKKwkJcmV0dXJuIGludmFsaWRhdGVkOworCisJaWYgKCF4aWQpCisJCVhMb2dTZWdOb09m ZnNldFRvUmVjUHRyKG9sZGVzdFNlZ25vLCAwLCB3YWxfc2VnbWVudF9zaXplLCBvbGRlc3RM U04pOwogCiByZXN0YXJ0OgogCUxXTG9ja0FjcXVpcmUoUmVwbGljYXRpb25TbG90Q29udHJv bExvY2ssIExXX1NIQVJFRCk7CkBAIC0xNDE0LDIxICsxNTAzLDM1IEBAIHJlc3RhcnQ6CiAJ CWlmICghcy0+aW5fdXNlKQogCQkJY29udGludWU7CiAKLQkJaWYgKEludmFsaWRhdGVQb3Nz aWJseU9ic29sZXRlU2xvdChzLCBvbGRlc3RMU04sICZpbnZhbGlkYXRlZCkpCisJCWlmICh4 aWQpCiAJCXsKLQkJCS8qIGlmIHRoZSBsb2NrIHdhcyByZWxlYXNlZCwgc3RhcnQgZnJvbSBz Y3JhdGNoICovCi0JCQlnb3RvIHJlc3RhcnQ7CisJCQkvKiB3ZSBhcmUgb25seSBkZWFsaW5n IHdpdGggKmxvZ2ljYWwqIHNsb3QgY29uZmxpY3RzICovCisJCQlpZiAoIVNsb3RJc0xvZ2lj YWwocykpCisJCQkJY29udGludWU7CisKKwkJCS8qCisJCQkgKiBub3QgdGhlIGRhdGFiYXNl IG9mIGludGVyZXN0IGFuZCB3ZSBkb24ndCB3YW50IGFsbCB0aGUKKwkJCSAqIGRhdGFiYXNl LCBza2lwCisJCQkgKi8KKwkJCWlmIChzLT5kYXRhLmRhdGFiYXNlICE9IGRib2lkICYmIFRy YW5zYWN0aW9uSWRJc1ZhbGlkKCp4aWQpKQorCQkJCWNvbnRpbnVlOwogCQl9CisKKwkJaWYg KEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChzLCBvbGRlc3RMU04sICZpbnZhbGlk YXRlZCwgeGlkKSkKKwkJCWdvdG8gcmVzdGFydDsKIAl9CisKIAlMV0xvY2tSZWxlYXNlKFJl cGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKIAogCS8qCi0JICogSWYgYW55IHNsb3RzIGhh dmUgYmVlbiBpbnZhbGlkYXRlZCwgcmVjYWxjdWxhdGUgdGhlIHJlc291cmNlIGxpbWl0cy4K KwkgKiBJZiBhbnkgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRhdGVkLCByZWNhbGN1bGF0ZSB0 aGUgcmVxdWlyZWQgeG1pbiBhbmQKKwkgKiB0aGUgcmVxdWlyZWQgbHNuIChpZiBhcHByb3By aWF0ZSkuCiAJICovCiAJaWYgKGludmFsaWRhdGVkKQogCXsKIAkJUmVwbGljYXRpb25TbG90 c0NvbXB1dGVSZXF1aXJlZFhtaW4oZmFsc2UpOwotCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0 ZVJlcXVpcmVkTFNOKCk7CisJCWlmICgheGlkKQorCQkJUmVwbGljYXRpb25TbG90c0NvbXB1 dGVSZXF1aXJlZExTTigpOwogCX0KIAogCXJldHVybiBpbnZhbGlkYXRlZDsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKaW5kZXggMmYzYzk2NDgyNC4uNDIwN2QxNGFlMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKQEAgLTIzMiw3ICsyMzIsNyBA QCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoUEdfRlVOQ1RJT05fQVJHUykKIERhdHVtCiBw Z19nZXRfcmVwbGljYXRpb25fc2xvdHMoUEdfRlVOQ1RJT05fQVJHUykKIHsKLSNkZWZpbmUg UEdfR0VUX1JFUExJQ0FUSU9OX1NMT1RTX0NPTFMgMTQKKyNkZWZpbmUgUEdfR0VUX1JFUExJ Q0FUSU9OX1NMT1RTX0NPTFMgMTUKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJu U2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CiAJWExvZ1JlY1B0cgljdXJybHNuOwog CWludAkJCXNsb3RubzsKQEAgLTMxOSw4ICszMTksNyBAQCBwZ19nZXRfcmVwbGljYXRpb25f c2xvdHMoUEdfRlVOQ1RJT05fQVJHUykKIAkJICogY2VydGFpbiB0aGF0IHRoZSBzbG90IGhh cyBiZWVuIGludmFsaWRhdGVkLiAgT3RoZXJ3aXNlLCB0ZXN0CiAJCSAqIGF2YWlsYWJpbGl0 eSBmcm9tIHJlc3RhcnRfbHNuLgogCQkgKi8KLQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQo c2xvdF9jb250ZW50cy5kYXRhLnJlc3RhcnRfbHNuKSAmJgotCQkJIVhMb2dSZWNQdHJJc0lu dmFsaWQoc2xvdF9jb250ZW50cy5kYXRhLmludmFsaWRhdGVkX2F0KSkKKwkJaWYgKE9ic29s ZXRlU2xvdElzSW52YWxpZChzbG90KSkKIAkJCXdhbHN0YXRlID0gV0FMQVZBSUxfUkVNT1ZF RDsKIAkJZWxzZQogCQkJd2Fsc3RhdGUgPSBHZXRXQUxBdmFpbGFiaWxpdHkoc2xvdF9jb250 ZW50cy5kYXRhLnJlc3RhcnRfbHNuKTsKQEAgLTQwNCw2ICs0MDMsMTcgQEAgcGdfZ2V0X3Jl cGxpY2F0aW9uX3Nsb3RzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkJdmFsdWVzW2krK10gPSBC b29sR2V0RGF0dW0oc2xvdF9jb250ZW50cy5kYXRhLnR3b19waGFzZSk7CiAKKwkJaWYgKHNs b3RfY29udGVudHMuZGF0YS5kYXRhYmFzZSA9PSBJbnZhbGlkT2lkKQorCQkJbnVsbHNbaSsr XSA9IHRydWU7CisJCWVsc2UKKwkJeworCQkJaWYgKHNsb3RfY29udGVudHMuZGF0YS54bWlu ID09IEludmFsaWRUcmFuc2FjdGlvbklkICYmCisJCQkJc2xvdF9jb250ZW50cy5kYXRhLmNh dGFsb2dfeG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCkKKwkJCQl2YWx1ZXNbaSsrXSA9 IEJvb2xHZXREYXR1bSh0cnVlKTsKKwkJCWVsc2UKKwkJCQl2YWx1ZXNbaSsrXSA9IEJvb2xH ZXREYXR1bShmYWxzZSk7CisJCX0KKwogCQlBc3NlcnQoaSA9PSBQR19HRVRfUkVQTElDQVRJ T05fU0xPVFNfQ09MUyk7CiAKIAkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRS ZXN1bHQsIHJzaW5mby0+c2V0RGVzYywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMKaW5kZXggNzVlODM2M2UyNC4uYjY4NjY5MWNhMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmMKQEAgLTEyNTMsNiArMTI1MywxMyBAQCBTdGFydExvZ2ljYWxSZXBs aWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAKIAlSZXBsaWNhdGlvblNsb3RB Y3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOwogCisJaWYgKExvZ2ljYWxSZXBsaWNhdGlv blNsb3RJc0ludmFsaWQoTXlSZXBsaWNhdGlvblNsb3QpKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAorCQkJCSBlcnJtc2coImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNhdGlvbiBz bG90IFwiJXNcIiIsCisJCQkJCQljbWQtPnNsb3RuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJU aGlzIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgYmVjYXVzZSBpdCB3YXMgY29uZmxpY3Rp bmcgd2l0aCByZWNvdmVyeS4iKSkpOworCiAJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoTXlS ZXBsaWNhdGlvblNsb3QtPmRhdGEucmVzdGFydF9sc24pKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCmluZGV4IDM5NWIyY2Y2OTAu LmM4NWNiNWNjMTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nz aWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKQEAg LTY3Myw2ICs2NzMsOSBAQCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJH UykKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05B UFNIT1QpKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllf Q09ORkxJQ1RfU05BUFNIT1QpOwogCisJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JF Q09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UKSkKKwkJUmVjb3ZlcnlDb25mbGljdEludGVy cnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UKTsKKwogCWlmIChD aGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURM T0NLKSkKIAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX1NUQVJUVVBfREVBRExPQ0spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5 LmMKaW5kZXggOWY1NmI0ZTk1Yy4uYzYyMjQ1YWZjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3N0YW5kYnkuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRp bHMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNp bmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3Iu aCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Mu aCIKQEAgLTQ2Niw2ICs0NjcsNyBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhWaXJ0 dWFsWElEcyhWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqd2FpdGxpc3QsCiAgKi8KIHZvaWQKIFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgc25hcHNo b3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQlib29sIGlzQ2F0YWxvZ1JlbCwKIAkJCQkJ CQkJCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3IpCiB7CiAJVmlydHVhbFRyYW5zYWN0aW9uSWQg KmJhY2tlbmRzOwpAQCAtNDkxLDYgKzQ5Myw5IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0 V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAJ CQkJCQkJCQkJICAgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCwKIAkJCQkJ CQkJCQkgICBXQUlUX0VWRU5UX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9ULAogCQkJCQkJ CQkJCSAgIHRydWUpOworCisJaWYgKHdhbF9sZXZlbCA+PSBXQUxfTEVWRUxfTE9HSUNBTCAm JiBpc0NhdGFsb2dSZWwpCisJCUludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMo SW52YWxpZFhMb2dSZWNQdHIsIGxvY2F0b3IuZGJPaWQsICZzbmFwc2hvdENvbmZsaWN0SG9y aXpvbik7CiB9CiAKIC8qCkBAIC00OTksNiArNTA0LDcgQEAgUmVzb2x2ZVJlY292ZXJ5Q29u ZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpv biwKICAqLwogdm9pZAogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxs WGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJ CQkJCSAgIGJvb2wgaXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCSAgIFJlbEZpbGVMb2NhdG9y IGxvY2F0b3IpCiB7CiAJLyoKQEAgLTUxNyw3ICs1MjMsOSBAQCBSZXNvbHZlUmVjb3ZlcnlD b25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RD b25mbGljdEhvcgogCQlUcmFuc2FjdGlvbklkIHRydW5jYXRlZDsKIAogCQl0cnVuY2F0ZWQg PSBYaWRGcm9tRnVsbFRyYW5zYWN0aW9uSWQoc25hcHNob3RDb25mbGljdEhvcml6b24pOwot CQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh0cnVuY2F0ZWQsIGxvY2F0 b3IpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh0cnVuY2F0ZWQs CisJCQkJCQkJCQkJCWlzQ2F0YWxvZ1JlbCwKKwkJCQkJCQkJCQkJbG9jYXRvcik7CiAJfQog fQogCkBAIC0xNDc4LDYgKzE0ODYsOSBAQCBnZXRfcmVjb3ZlcnlfY29uZmxpY3RfZGVzYyhQ cm9jU2lnbmFsUmVhc29uIHJlYXNvbikKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNUX1NOQVBTSE9UOgogCQkJcmVhc29uRGVzYyA9IF8oInJlY292ZXJ5IGNvbmZsaWN0IG9u IHNuYXBzaG90Iik7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNUX0xPR0lDQUxTTE9UOgorCQkJcmVhc29uRGVzYyA9IF8oInJlY292ZXJ5IGNvbmZsaWN0 IG9uIHJlcGxpY2F0aW9uIHNsb3QiKTsKKwkJCWJyZWFrOwogCQljYXNlIFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSzoKIAkJCXJlYXNvbkRlc2MgPSBfKCJy ZWNvdmVyeSBjb25mbGljdCBvbiBidWZmZXIgZGVhZGxvY2siKTsKIAkJCWJyZWFrOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jCmluZGV4IGNhYjcwOWIwN2IuLmUxYzQ1ZWIyYWQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKQEAgLTI0ODgsNiArMjQ4OCw5IEBAIGVycmRldGFpbF9yZWNvdmVyeV9jb25m bGljdCh2b2lkKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1Q6 CiAJCQllcnJkZXRhaWwoIlVzZXIgcXVlcnkgbWlnaHQgaGF2ZSBuZWVkZWQgdG8gc2VlIHJv dyB2ZXJzaW9ucyB0aGF0IG11c3QgYmUgcmVtb3ZlZC4iKTsKIAkJCWJyZWFrOworCQljYXNl IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisJCQllcnJkZXRhaWwo IlVzZXIgd2FzIHVzaW5nIHRoZSBsb2dpY2FsIHNsb3QgdGhhdCBtdXN0IGJlIGRyb3BwZWQu Iik7CisJCQlicmVhazsKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJU VVBfREVBRExPQ0s6CiAJCQllcnJkZXRhaWwoIlVzZXIgdHJhbnNhY3Rpb24gY2F1c2VkIGJ1 ZmZlciBkZWFkbG9jayB3aXRoIHJlY292ZXJ5LiIpOwogCQkJYnJlYWs7CkBAIC0zMDk5LDYg KzMxMDIsMzEgQEAgUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQcm9jU2lnbmFsUmVhc29u IHJlYXNvbikKIAkJCQkvKiBJbnRlbnRpb25hbCBmYWxsIHRocm91Z2ggdG8gc2Vzc2lvbiBj YW5jZWwgKi8KIAkJCQkvKiBGQUxMVEhST1VHSCAqLwogCisJCQljYXNlIFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisKKwkJCQkvKgorCQkJCSAqIEZvciBjb25m bGljdHMgdGhhdCByZXF1aXJlIGEgbG9naWNhbCBzbG90IHRvIGJlCisJCQkJICogaW52YWxp ZGF0ZWQsIHRoZSByZXF1aXJlbWVudCBpcyBmb3IgdGhlIHNpZ25hbCByZWNlaXZlciB0bwor CQkJCSAqIHJlbGVhc2UgdGhlIHNsb3QsIHNvIHRoYXQgaXQgY291bGQgYmUgaW52YWxpZGF0 ZWQgYnkgdGhlCisJCQkJICogc2lnbmFsIHNlbmRlci4gU28gZm9yIG5vcm1hbCBiYWNrZW5k cywgdGhlIHRyYW5zYWN0aW9uCisJCQkJICogc2hvdWxkIGJlIGFib3J0ZWQsIGp1c3QgbGlr ZSBmb3Igb3RoZXIgcmVjb3ZlcnkgY29uZmxpY3RzLgorCQkJCSAqIEJ1dCBpZiBpdCdzIHdh bHNlbmRlciBvbiBzdGFuZGJ5LCB3ZSBkb24ndCB3YW50IHRvIGdvCisJCQkJICogdGhyb3Vn aCB0aGUgZm9sbG93aW5nIElzVHJhbnNhY3Rpb25PclRyYW5zYWN0aW9uQmxvY2soKQorCQkJ CSAqIGNoZWNrLCBzbyBicmVhayBoZXJlLgorCQkJCSAqLworCQkJCWlmIChhbV9jYXNjYWRp bmdfd2Fsc2VuZGVyICYmCisJCQkJCXJlYXNvbiA9PSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNUX0xPR0lDQUxTTE9UICYmCisJCQkJCU15UmVwbGljYXRpb25TbG90ICYmIFNsb3RJc0xv Z2ljYWwoTXlSZXBsaWNhdGlvblNsb3QpKQorCQkJCXsKKwkJCQkJUmVjb3ZlcnlDb25mbGlj dFBlbmRpbmcgPSB0cnVlOworCQkJCQlRdWVyeUNhbmNlbFBlbmRpbmcgPSB0cnVlOworCQkJ CQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJ LyogSW50ZW50aW9uYWwgZmFsbCB0aHJvdWdoIHRvIHNlc3Npb24gY2FuY2VsICovCisJCQkJ LyogRkFMTFRIUk9VR0ggKi8KKwogCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0RBVEFCQVNFOgogCQkJCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nID0gdHJ1ZTsKIAkJCQlQ cm9jRGllUGVuZGluZyA9IHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS9wZ3N0YXRfZGF0YWJhc2UuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L3Bnc3RhdF9kYXRhYmFzZS5jCmluZGV4IDZlNjUwY2VhYWQuLjcxNDlmMjJmNzIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCkBAIC0x MDksNiArMTA5LDkgQEAgcGdzdGF0X3JlcG9ydF9yZWNvdmVyeV9jb25mbGljdChpbnQgcmVh c29uKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOOgogCQkJ ZGJlbnRyeS0+Y29uZmxpY3RfYnVmZmVycGluKys7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZGJlbnRyeS0+Y29uZmxp Y3RfbG9naWNhbHNsb3QrKzsKKwkJCWJyZWFrOwogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllf Q09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSzoKIAkJCWRiZW50cnktPmNvbmZsaWN0X3N0YXJ0 dXBfZGVhZGxvY2srKzsKIAkJCWJyZWFrOwpAQCAtMzg3LDYgKzM5MCw3IEBAIHBnc3RhdF9k YXRhYmFzZV9mbHVzaF9jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dh aXQpCiAJUEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3RfdGFibGVzcGFjZSk7CiAJUEdT VEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3RfbG9jayk7CiAJUEdTVEFUX0FDQ1VNX0RCQ09V TlQoY29uZmxpY3Rfc25hcHNob3QpOworCVBHU1RBVF9BQ0NVTV9EQkNPVU5UKGNvbmZsaWN0 X2xvZ2ljYWxzbG90KTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9idWZmZXJw aW4pOwogCVBHU1RBVF9BQ0NVTV9EQkNPVU5UKGNvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2sp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmluZGV4IDBhYjMxZWM2ZTMu LmFmMWE3YmQ5ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC0x MDY2LDYgKzEwNjYsOCBAQCBQR19TVEFUX0dFVF9EQkVOVFJZX0lOVDY0KHhhY3RfY29tbWl0 KQogLyogcGdfc3RhdF9nZXRfZGJfeGFjdF9yb2xsYmFjayAqLwogUEdfU1RBVF9HRVRfREJF TlRSWV9JTlQ2NCh4YWN0X3JvbGxiYWNrKQogCisvKiBwZ19zdGF0X2dldF9kYl9jb25mbGlj dF9sb2dpY2Fsc2xvdCAqLworUEdfU1RBVF9HRVRfREJFTlRSWV9JTlQ2NChjb25mbGljdF9s b2dpY2Fsc2xvdCkKIAogRGF0dW0KIHBnX3N0YXRfZ2V0X2RiX3N0YXRfcmVzZXRfdGltZShQ R19GVU5DVElPTl9BUkdTKQpAQCAtMTA5OSw2ICsxMTAxLDcgQEAgcGdfc3RhdF9nZXRfZGJf Y29uZmxpY3RfYWxsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXJlc3VsdCA9IChpbnQ2NCkgKGRi ZW50cnktPmNvbmZsaWN0X3RhYmxlc3BhY2UgKwogCQkJCQkJICBkYmVudHJ5LT5jb25mbGlj dF9sb2NrICsKIAkJCQkJCSAgZGJlbnRyeS0+Y29uZmxpY3Rfc25hcHNob3QgKworCQkJCQkJ ICBkYmVudHJ5LT5jb25mbGljdF9sb2dpY2Fsc2xvdCArCiAJCQkJCQkgIGRiZW50cnktPmNv bmZsaWN0X2J1ZmZlcnBpbiArCiAJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X3N0YXJ0dXBf ZGVhZGxvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA1NzM2YzEwODJj Li4wNmIzNjYzNWY5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTU2MDUsNiAr NTYwNSwxMSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFw c2hvdCcsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9y ZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAn cGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3QnIH0sCit7IG9pZCA9PiAnOTkwMScs CisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiByZWNvdmVyeSBjb25mbGljdHMgaW4gZGF0YWJh c2UgY2F1c2VkIGJ5IGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcsCisgIHByb25hbWUgPT4g J3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90JywgcHJvdm9sYXRpbGUgPT4g J3MnLAorICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9h cmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGlj dF9sb2dpY2Fsc2xvdCcgfSwKIHsgb2lkID0+ICczMDY4JywKICAgZGVzY3IgPT4gJ3N0YXRp c3RpY3M6IHJlY292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgc2hhcmVk IGJ1ZmZlciBwaW4nLAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9i dWZmZXJwaW4nLCBwcm92b2xhdGlsZSA9PiAncycsCkBAIC0xMTA3MSw5ICsxMTA3Niw5IEBA CiAgIHByb25hbWUgPT4gJ3BnX2dldF9yZXBsaWNhdGlvbl9zbG90cycsIHByb3Jvd3MgPT4g JzEwJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm9yZXRzZXQgPT4gJ3QnLCBwcm92b2xh dGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsCiAgIHByb2FyZ3R5cGVzID0+ ICcnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAne25hbWUsbmFtZSx0ZXh0LG9pZCxib29sLGJv b2wsaW50NCx4aWQseGlkLHBnX2xzbixwZ19sc24sdGV4dCxpbnQ4LGJvb2x9JywKLSAgcHJv YXJnbW9kZXMgPT4gJ3tvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG99JywKLSAgcHJvYXJn bmFtZXMgPT4gJ3tzbG90X25hbWUscGx1Z2luLHNsb3RfdHlwZSxkYXRvaWQsdGVtcG9yYXJ5 LGFjdGl2ZSxhY3RpdmVfcGlkLHhtaW4sY2F0YWxvZ194bWluLHJlc3RhcnRfbHNuLGNvbmZp cm1lZF9mbHVzaF9sc24sd2FsX3N0YXR1cyxzYWZlX3dhbF9zaXplLHR3b19waGFzZX0nLAor ICBwcm9hbGxhcmd0eXBlcyA9PiAne25hbWUsbmFtZSx0ZXh0LG9pZCxib29sLGJvb2wsaW50 NCx4aWQseGlkLHBnX2xzbixwZ19sc24sdGV4dCxpbnQ4LGJvb2wsYm9vbH0nLAorICBwcm9h cmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvfScsCisgIHByb2Fy Z25hbWVzID0+ICd7c2xvdF9uYW1lLHBsdWdpbixzbG90X3R5cGUsZGF0b2lkLHRlbXBvcmFy eSxhY3RpdmUsYWN0aXZlX3BpZCx4bWluLGNhdGFsb2dfeG1pbixyZXN0YXJ0X2xzbixjb25m aXJtZWRfZmx1c2hfbHNuLHdhbF9zdGF0dXMsc2FmZV93YWxfc2l6ZSx0d29fcGhhc2UsY29u ZmxpY3Rpbmd9JywKICAgcHJvc3JjID0+ICdwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMnIH0s CiB7IG9pZCA9PiAnMzc4NicsIGRlc2NyID0+ICdzZXQgdXAgYSBsb2dpY2FsIHJlcGxpY2F0 aW9uIHNsb3QnLAogICBwcm9uYW1lID0+ICdwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlv bl9zbG90JywgcHJvdm9sYXRpbGUgPT4gJ3YnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaAppbmRleCBjMmJhZTgzNThhLi45NzVi ZDUwMjAzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5j bHVkZS9wZ3N0YXQuaApAQCAtMzMwLDYgKzMzMCw3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3Rh dF9TdGF0REJFbnRyeQogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X3RhYmxlc3BhY2U7CiAJ UGdTdGF0X0NvdW50ZXIgY29uZmxpY3RfbG9jazsKIAlQZ1N0YXRfQ291bnRlciBjb25mbGlj dF9zbmFwc2hvdDsKKwlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9sb2dpY2Fsc2xvdDsKIAlQ Z1N0YXRfQ291bnRlciBjb25mbGljdF9idWZmZXJwaW47CiAJUGdTdGF0X0NvdW50ZXIgY29u ZmxpY3Rfc3RhcnR1cF9kZWFkbG9jazsKIAlQZ1N0YXRfQ291bnRlciB0ZW1wX2ZpbGVzOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vc2xvdC5oCmluZGV4IDg4NzJjODBjZGYuLjAxM2NkMmI0ZDAgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAorKysgYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKQEAgLTE3LDYgKzE3LDE3IEBACiAjaW5jbHVkZSAi c3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIK IAorI2RlZmluZSBPYnNvbGV0ZVNsb3RJc0ludmFsaWQocykgKCFYTG9nUmVjUHRySXNJbnZh bGlkKHMtPmRhdGEuaW52YWxpZGF0ZWRfYXQpICYmIFwKKwkJCQkJCQkJICBYTG9nUmVjUHRy SXNJbnZhbGlkKHMtPmRhdGEucmVzdGFydF9sc24pKQorCisjZGVmaW5lIExvZ2ljYWxSZXBs aWNhdGlvblNsb3RJc0ludmFsaWQocykgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChzLT5kYXRh LnhtaW4pICYmIFwKKwkJCQkJCQkJCQkJIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEu Y2F0YWxvZ194bWluKSkKKworI2RlZmluZSBTbG90SXNJbnZhbGlkKHMpIChPYnNvbGV0ZVNs b3RJc0ludmFsaWQocykgfHwgTG9naWNhbFJlcGxpY2F0aW9uU2xvdElzSW52YWxpZCAocykp CisKKyNkZWZpbmUgTG9naWNhbFJlcGxpY2F0aW9uU2xvdFhpZHNDb25mbGljdChzbG90X3ht aW4sIGNhdGFsb2dfeG1pbiwgeGlkKSBcCisJCSgoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xv dF94bWluKSAmJiBUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhzbG90X3htaW4sIHhp ZCkpIHx8IFwKKwkJKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNsb3RfY2F0YWxvZ194bWluKSAm JiBUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhzbG90X2NhdGFsb2dfeG1pbiwgeGlk KSkpCiAvKgogICogQmVoYXZpb3VyIG9mIHJlcGxpY2F0aW9uIHNsb3RzLCB1cG9uIHJlbGVh c2Ugb3IgY3Jhc2guCiAgKgpAQCAtMjE1LDcgKzIyNiw3IEBAIGV4dGVybiB2b2lkIFJlcGxp Y2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRMU04odm9pZCk7CiBleHRlcm4gWExvZ1JlY1B0 ciBSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZUxvZ2ljYWxSZXN0YXJ0TFNOKHZvaWQpOwogZXh0 ZXJuIGJvb2wgUmVwbGljYXRpb25TbG90c0NvdW50REJTbG90cyhPaWQgZGJvaWQsIGludCAq bnNsb3RzLCBpbnQgKm5hY3RpdmUpOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90c0Ry b3BEQlNsb3RzKE9pZCBkYm9pZCk7Ci1leHRlcm4gYm9vbCBJbnZhbGlkYXRlT2Jzb2xldGVS ZXBsaWNhdGlvblNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdubyk7CitleHRlcm4gYm9vbCBJ bnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdu bywgT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkICp4aWQpOwogZXh0ZXJuIFJlcGxpY2F0aW9u U2xvdCAqU2VhcmNoTmFtZWRSZXBsaWNhdGlvblNsb3QoY29uc3QgY2hhciAqbmFtZSwgYm9v bCBuZWVkX2xvY2spOwogZXh0ZXJuIGludAlSZXBsaWNhdGlvblNsb3RJbmRleChSZXBsaWNh dGlvblNsb3QgKnNsb3QpOwogZXh0ZXJuIGJvb2wgUmVwbGljYXRpb25TbG90TmFtZShpbnQg aW5kZXgsIE5hbWUgbmFtZSk7CkBAIC0yMjcsNSArMjM4LDYgQEAgZXh0ZXJuIHZvaWQgQ2hl Y2tQb2ludFJlcGxpY2F0aW9uU2xvdHModm9pZCk7CiAKIGV4dGVybiB2b2lkIENoZWNrU2xv dFJlcXVpcmVtZW50cyh2b2lkKTsKIGV4dGVybiB2b2lkIENoZWNrU2xvdFBlcm1pc3Npb25z KHZvaWQpOworZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9naWNh bFNsb3RzKE9pZCBkYm9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKnJlYXNvbik7CiAK ICNlbmRpZgkJCQkJCQkvKiBTTE9UX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgK aW5kZXggOTA1YWYyMjMxYi4uMmY1MjEwMGIwMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2ln bmFsLmgKQEAgLTQyLDYgKzQyLDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9UQUJMRVNQQUNFLAogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9D SywKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9ULAorCVBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QsCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9CVUZGRVJQSU4sCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURM T0NLLAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaCBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oCmluZGV4IDJlZmZkZWExMjYuLjQxZjRkYzM3 MmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oCkBAIC0zMCw4ICszMCwxMCBAQCBleHRlcm4g dm9pZCBJbml0UmVjb3ZlcnlUcmFuc2FjdGlvbkVudmlyb25tZW50KHZvaWQpOwogZXh0ZXJu IHZvaWQgU2h1dGRvd25SZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCk7CiAK IGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5z YWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCQlib29sIGlz Q2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3IpOwogZXh0 ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKEZ1 bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJ CSAgIGJvb2wgaXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQkJCSAgIFJlbEZpbGVMb2NhdG9y IGxvY2F0b3IpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVGFi bGVzcGFjZShPaWQgdHNpZCk7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGlj dFdpdGhEYXRhYmFzZShPaWQgZGJpZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0CmluZGV4IGM3MTc1OGRiNDYuLmU4YWI5ZTFiM2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnVsZXMub3V0CkBAIC0xNDcyLDggKzE0NzIsOSBAQCBwZ19yZXBsaWNhdGlvbl9z bG90c3wgU0VMRUNUIGwuc2xvdF9uYW1lLAogICAgIGwuY29uZmlybWVkX2ZsdXNoX2xzbiwK ICAgICBsLndhbF9zdGF0dXMsCiAgICAgbC5zYWZlX3dhbF9zaXplLAotICAgIGwudHdvX3Bo YXNlCi0gICBGUk9NIChwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMoKSBsKHNsb3RfbmFtZSwg cGx1Z2luLCBzbG90X3R5cGUsIGRhdG9pZCwgdGVtcG9yYXJ5LCBhY3RpdmUsIGFjdGl2ZV9w aWQsIHhtaW4sIGNhdGFsb2dfeG1pbiwgcmVzdGFydF9sc24sIGNvbmZpcm1lZF9mbHVzaF9s c24sIHdhbF9zdGF0dXMsIHNhZmVfd2FsX3NpemUsIHR3b19waGFzZSkKKyAgICBsLnR3b19w aGFzZSwKKyAgICBsLmNvbmZsaWN0aW5nCisgICBGUk9NIChwZ19nZXRfcmVwbGljYXRpb25f c2xvdHMoKSBsKHNsb3RfbmFtZSwgcGx1Z2luLCBzbG90X3R5cGUsIGRhdG9pZCwgdGVtcG9y YXJ5LCBhY3RpdmUsIGFjdGl2ZV9waWQsIHhtaW4sIGNhdGFsb2dfeG1pbiwgcmVzdGFydF9s c24sIGNvbmZpcm1lZF9mbHVzaF9sc24sIHdhbF9zdGF0dXMsIHNhZmVfd2FsX3NpemUsIHR3 b19waGFzZSwgY29uZmxpY3RpbmcpCiAgICAgIExFRlQgSk9JTiBwZ19kYXRhYmFzZSBkIE9O ICgobC5kYXRvaWQgPSBkLm9pZCkpKTsKIHBnX3JvbGVzfCBTRUxFQ1QgcGdfYXV0aGlkLnJv bG5hbWUsCiAgICAgcGdfYXV0aGlkLnJvbHN1cGVyLApAQCAtMTg2OSw3ICsxODcwLDggQEAg cGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHN8IFNFTEVDVCBvaWQgQVMgZGF0aWQsCiAgICAg cGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9jayhvaWQpIEFTIGNvbmZsX2xvY2ssCiAgICAg cGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3Qob2lkKSBBUyBjb25mbF9zbmFwc2hv dCwKICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4ob2lkKSBBUyBjb25m bF9idWZmZXJwaW4sCi0gICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFk bG9jayhvaWQpIEFTIGNvbmZsX2RlYWRsb2NrCisgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxp Y3Rfc3RhcnR1cF9kZWFkbG9jayhvaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAorICAgIHBnX3N0 YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90KG9pZCkgQVMgY29uZmxfYWN0aXZlX2xv Z2ljYWxzbG90CiAgICBGUk9NIHBnX2RhdGFiYXNlIGQ7CiBwZ19zdGF0X2dzc2FwaXwgU0VM RUNUIHBpZCwKICAgICBnc3NfYXV0aCBBUyBnc3NfYXV0aGVudGljYXRlZCwKLS0gCjIuMzQu MQoK --------------cEK8MlHwlkB6EI0U6V6XX6R3 Content-Type: text/plain; charset=UTF-8; name="v53-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v53-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1YjFmYWU0MTlkZjdmNTUxNGY0YWEyYjlkZDRhMWFjOWY2MzZmZTczIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU1OjE5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTMgMS82XSBBZGQgaW5mbyBpbiBXQUwgcmVjb3JkcyBpbiBwcmVwYXJhdGlvbiBmb3Ig bG9naWNhbAogc2xvdCBjb25mbGljdCBoYW5kbGluZy4KTUlNRS1WZXJzaW9uOiAxLjAKQ29u dGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXIt RW5jb2Rpbmc6IDhiaXQKCk92ZXJhbGwgZGVzaWduOgoKMS4gV2Ugd2FudCB0byBlbmFibGUg bG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5cywgYnV0IHJlcGxheSBvZiBXQUwKZnJvbSB0 aGUgcHJpbWFyeSBtaWdodCByZW1vdmUgZGF0YSB0aGF0IGlzIG5lZWRlZCBieSBsb2dpY2Fs IGRlY29kaW5nLApjYXVzaW5nIGVycm9yKHMpIG9uIHRoZSBzdGFuZGJ5LiBUbyBwcmV2ZW50 IHRob3NlIGVycm9ycywgYSBuZXcgcmVwbGljYXRpb24KY29uZmxpY3Qgc2NlbmFyaW8gbmVl ZHMgdG8gYmUgYWRkcmVzc2VkIChhcyBtdWNoIGFzIGhvdCBzdGFuZGJ5IGRvZXMpLgoKMi4g T3VyIGNob3NlbiBzdHJhdGVneSBmb3IgZGVhbGluZyB3aXRoIHRoaXMgdHlwZSBvZiByZXBs aWNhdGlvbiBzbG90CmlzIHRvIGludmFsaWRhdGUgbG9naWNhbCBzbG90cyBmb3Igd2hpY2gg bmVlZGVkIGRhdGEgaGFzIGJlZW4gcmVtb3ZlZC4KCjMuIFRvIGRvIHRoaXMgd2UgbmVlZCB0 aGUgbGF0ZXN0UmVtb3ZlZFhpZCBmb3IgZWFjaCBjaGFuZ2UsIGp1c3QgYXMgd2UKZG8gZm9y IHBoeXNpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cywgYnV0IHdlIGFsc28gbmVlZCB0byBr bm93CndoZXRoZXIgYW55IHBhcnRpY3VsYXIgY2hhbmdlIHdhcyB0byBkYXRhIHRoYXQgbG9n aWNhbCByZXBsaWNhdGlvbgptaWdodCBhY2Nlc3MuIFRoYXQgd2F5LCBkdXJpbmcgV0FMIHJl cGxheSwgd2Uga25vdyB3aGVuIHRoZXJlIGlzIGEgcmlzayBvZgpjb25mbGljdCBhbmQsIGlm IHNvLCBpZiB0aGVyZSBpcyBhIGNvbmZsaWN0LgoKNC4gV2UgY2FuJ3QgcmVseSBvbiB0aGUg c3RhbmRieSdzIHJlbGNhY2hlIGVudHJpZXMgZm9yIHRoaXMgcHVycG9zZSBpbgphbnkgd2F5 LCBiZWNhdXNlIHRoZSBzdGFydHVwIHByb2Nlc3MgY2FuJ3QgYWNjZXNzIGNhdGFsb2cgY29u dGVudHMuCgo1LiBUaGVyZWZvcmUgZXZlcnkgV0FMIHJlY29yZCB0aGF0IHBvdGVudGlhbGx5 IHJlbW92ZXMgZGF0YSBmcm9tIHRoZQppbmRleCBvciBoZWFwIG11c3QgY2FycnkgYSBmbGFn IGluZGljYXRpbmcgd2hldGhlciBvciBub3QgaXQgaXMgb25lCnRoYXQgbWlnaHQgYmUgYWNj ZXNzZWQgZHVyaW5nIGxvZ2ljYWwgZGVjb2RpbmcuCgpXaHkgZG8gd2UgbmVlZCB0aGlzIGZv ciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnk/CgpGaXJzdCwgbGV0J3MgZm9yZ2V0IGFi b3V0IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSBhbmQgcmVjYWxsIHRoYXQKb24gYSBw cmltYXJ5IGRhdGFiYXNlLCBhbnkgY2F0YWxvZyByb3dzIHRoYXQgbWF5IGJlIG5lZWRlZCBi eSBhIGxvZ2ljYWwKZGVjb2RpbmcgcmVwbGljYXRpb24gc2xvdCBhcmUgbm90IHJlbW92ZWQu CgpUaGlzIGlzIGRvbmUgdGhhbmtzIHRvIHRoZSBjYXRhbG9nX3htaW4gYXNzb2NpYXRlZCB3 aXRoIHRoZSBsb2dpY2FsCnJlcGxpY2F0aW9uIHNsb3QuCgpCdXQsIHdpdGggbG9naWNhbCBk ZWNvZGluZyBvbiBzdGFuZGJ5LCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgoKLSBob3Rfc3Rh bmRieV9mZWVkYmFjayBpcyBvZmYKLSBob3Rfc3RhbmRieV9mZWVkYmFjayBpcyBvbiBidXQg dGhlcmUgaXMgbm8gYSBwaHlzaWNhbCBzbG90IGJldHdlZW4KICB0aGUgcHJpbWFyeSBhbmQg dGhlIHN0YW5kYnkuIFRoZW4sIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHdpbGwgd29yaywKICBi dXQgb25seSB3aGlsZSB0aGUgY29ubmVjdGlvbiBpcyBhbGl2ZSAoZm9yIGV4YW1wbGUgYSBu b2RlIHJlc3RhcnQKICB3b3VsZCBicmVhayBpdCkKClRoZW4sIHRoZSBwcmltYXJ5IG1heSBk ZWxldGUgc3lzdGVtIGNhdGFsb2cgcm93cyB0aGF0IGNvdWxkIGJlIG5lZWRlZApieSB0aGUg bG9naWNhbCBkZWNvZGluZyBvbiB0aGUgc3RhbmRieSAoYXMgaXQgZG9lcyBub3Qga25vdyBh Ym91dCB0aGUKY2F0YWxvZ194bWluIG9uIHRoZSBzdGFuZGJ5KS4KClNvLCBpdOKAmXMgbWFu ZGF0b3J5IHRvIGlkZW50aWZ5IHRob3NlIHJvd3MgYW5kIGludmFsaWRhdGUgdGhlIHNsb3Rz CnRoYXQgbWF5IG5lZWQgdGhlbSBpZiBhbnkuIElkZW50aWZ5aW5nIHRob3NlIHJvd3MgaXMg dGhlIHB1cnBvc2Ugb2YKdGhpcyBjb21taXQuCgpJbXBsZW1lbnRhdGlvbjoKCldoZW4gYSBX QUwgcmVwbGF5IG9uIHN0YW5kYnkgaW5kaWNhdGVzIHRoYXQgYSBjYXRhbG9nIHRhYmxlIHR1 cGxlIGlzCnRvIGJlIGRlbGV0ZWQgYnkgYW4geGlkIHRoYXQgaXMgZ3JlYXRlciB0aGFuIGEg bG9naWNhbCBzbG90J3MKY2F0YWxvZ194bWluLCB0aGVuIHRoYXQgbWVhbnMgdGhlIHNsb3Qn cyBjYXRhbG9nX3htaW4gY29uZmxpY3RzIHdpdGgKdGhlIHhpZCwgYW5kIHdlIG5lZWQgdG8g aGFuZGxlIHRoZSBjb25mbGljdC4gV2hpbGUgc3Vic2VxdWVudCBjb21taXRzCndpbGwgZG8g dGhlIGFjdHVhbCBjb25mbGljdCBoYW5kbGluZywgdGhpcyBjb21taXQgYWRkcyBhIG5ldyBm aWVsZAppc0NhdGFsb2dSZWwgaW4gc3VjaCBXQUwgcmVjb3JkcyAoYW5kIGEgbmV3IGJpdCBz ZXQgaW4gdGhlCnhsX2hlYXBfdmlzaWJsZSBmbGFncyBmaWVsZCksIHRoYXQgaXMgdHJ1ZSBm b3IgY2F0YWxvZyB0YWJsZXMsIHNvIGFzIHRvCmFycmFuZ2UgZm9yIGNvbmZsaWN0IGhhbmRs aW5nLgoKVGhlIGFmZmVjdGVkIFdBTCByZWNvcmRzIGFyZSB0aGUgb25lcyB0aGF0IGFscmVh ZHkgY29udGFpbiB0aGUKc25hcHNob3RDb25mbGljdEhvcml6b24gZmllbGQsIG5hbWVseToK Ci0gZ2lzdHhsb2dEZWxldGUKLSBnaXN0eGxvZ1BhZ2VSZXVzZQotIHhsX2hhc2hfdmFjdXVt X29uZV9wYWdlCi0geGxfaGVhcF9wcnVuZQotIHhsX2hlYXBfZnJlZXplX3BhZ2UKLSB4bF9o ZWFwX3Zpc2libGUKLSB4bF9idHJlZV9yZXVzZV9wYWdlCi0geGxfYnRyZWVfZGVsZXRlCi0g c3BneGxvZ1ZhY3V1bVJlZGlyZWN0CgpEdWUgdG8gdGhpcyBuZXcgZmllbGQgYmVpbmcgYWRk ZWQsIHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlIGFuZApnaXN0eGxvZ0RlbGV0ZSBkbyBub3cg Y29udGFpbiB0aGUgb2Zmc2V0cyB0byBiZSBkZWxldGVkIGFzIGEKRkxFWElCTEVfQVJSQVlf TUVNQkVSLiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgY29ycmVjdCBhbGlnbmVtZW50LgpJ dCdzIG5vdCBuZWVkZWQgb24gdGhlIG90aGVycyBzdHJ1Y3Qgd2hlcmUgaXNDYXRhbG9nUmVs IGhhcwpiZWVuIGFkZGVkLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2 ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kCkRyb3V2b3QKUmV2aWV3ZWQtQnk6 IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXpp byBkZQpSb3llcyBNZWxsbywgTWVsYW5pZSBQbGFnZW1hbgotLS0KIGNvbnRyaWIvYW1jaGVj ay92ZXJpZnlfbmJ0cmVlLmMgICAgICAgICAgICB8ICAxNSArLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3QuYyAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0dXRpbC5jICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R4bG9nLmMgICAgICAgICB8ICAxNyArKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoX3hsb2cuYyAgICAgICAgfCAgMTIgKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoaW5zZXJ0LmMgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmlzaWJpbGl0eW1hcC5jICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idGluc2VydC5jICAgICAgfCAgOTEgKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jICAgICAgICB8IDExMSArKysrKysrKysrKy0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgICAgICAgICB8ICAg NCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYyAgICAgIHwgIDUw ICsrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAg ICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jICAgICAg IHwgICA3ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICAgICAg fCAgIDkgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICAgIHwgICA2 ICsrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgICAgICAgfCAgIDIg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyB8ICAgNSAr LQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaCAgICAgICAgICB8ICAgNyArLQog c3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmggICAgICAgICAgICAgIHwgIDExICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmggICAgICAgICAgICAgfCAgIDggKy0KIHNy Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgICAgICB8ICAxMCArLQogc3Jj L2luY2x1ZGUvYWNjZXNzL25idHJlZS5oICAgICAgICAgICAgICAgIHwgIDM3ICsrKystLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmggICAgICAgICAgICAgICB8ICAgOCArLQog c3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaCAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oICAgICB8ICAxMCArLQogc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oICAgICAgICAgICAgICB8ICAgNCArLQogMzUgZmls ZXMgY2hhbmdlZCwgMjYzIGluc2VydGlvbnMoKyksIDIwMSBkZWxldGlvbnMoLSkKICAgMy4z JSBjb250cmliL2FtY2hlY2svCiAgIDQuNyUgc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvCiAg IDQuMSUgc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvCiAgNTkuMCUgc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS8KICAgMy43JSBzcmMvYmFja2VuZC9hY2Nlc3MvCiAgMjIuMCUgc3JjL2lu Y2x1ZGUvYWNjZXNzLwoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0 cmVlLmMgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCmluZGV4IDI1N2NmZjY3 MWIuLmViMjgwZDQ4OTMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0 cmVlLmMKKysrIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpAQCAtMTgzLDYg KzE4Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnZhcmlhbnRfbF9ub250YXJnZXRfb2Zm c2V0KEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsCiAJCQkJCQkJCQkJCQlPZmZzZXROdW1iZXIg dXBwZXJib3VuZCk7CiBzdGF0aWMgUGFnZSBwYWxsb2NfYnRyZWVfcGFnZShCdHJlZUNoZWNr U3RhdGUgKnN0YXRlLCBCbG9ja051bWJlciBibG9ja251bSk7CiBzdGF0aWMgaW5saW5lIEJU U2Nhbkluc2VydCBidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goUmVsYXRpb24gcmVsLAorCQkJ CQkJCQkJCQkJCVJlbGF0aW9uIGhlYXByZWwsCiAJCQkJCQkJCQkJCQkJSW5kZXhUdXBsZSBp dHVwKTsKIHN0YXRpYyBJdGVtSWQgUGFnZUdldEl0ZW1JZENhcmVmdWwoQnRyZWVDaGVja1N0 YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIgYmxvY2ssCiAJCQkJCQkJCSAgIFBhZ2UgcGFnZSwg T2Zmc2V0TnVtYmVyIG9mZnNldCk7CkBAIC0zMzEsNyArMzMyLDcgQEAgYnRfaW5kZXhfY2hl Y2tfaW50ZXJuYWwoT2lkIGluZHJlbGlkLCBib29sIHBhcmVudGNoZWNrLCBib29sIGhlYXBh bGxpbmRleGVkLAogCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCkpKSk7 CiAKIAkJLyogRXh0cmFjdCBtZXRhZGF0YSBmcm9tIG1ldGFwYWdlLCBhbmQgc2FuaXRpemUg aXQgaW4gcGFzc2luZyAqLwotCQlfYnRfbWV0YXZlcnNpb24oaW5kcmVsLCAmaGVhcGtleXNw YWNlLCAmYWxsZXF1YWxpbWFnZSk7CisJCV9idF9tZXRhdmVyc2lvbihpbmRyZWwsIGhlYXBy ZWwsICZoZWFwa2V5c3BhY2UsICZhbGxlcXVhbGltYWdlKTsKIAkJaWYgKGFsbGVxdWFsaW1h Z2UgJiYgIWhlYXBrZXlzcGFjZSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKQEAgLTEyNTgsNyArMTI1OSw3IEBAIGJ0X3Rh cmdldF9wYWdlX2NoZWNrKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUpCiAJCX0KIAogCQkvKiBC dWlsZCBpbnNlcnRpb24gc2NhbmtleSBmb3IgY3VycmVudCBwYWdlIG9mZnNldCAqLwotCQlz a2V5ID0gYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKHN0YXRlLT5yZWwsIGl0dXApOworCQlz a2V5ID0gYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKHN0YXRlLT5yZWwsIHN0YXRlLT5oZWFw cmVsLCBpdHVwKTsKIAogCQkvKgogCQkgKiBNYWtlIHN1cmUgdHVwbGUgc2l6ZSBkb2VzIG5v dCBleGNlZWQgdGhlIHJlbGV2YW50IEJUUkVFX1ZFUlNJT04KQEAgLTE3NjgsNyArMTc2OSw3 IEBAIGJ0X3JpZ2h0X3BhZ2VfY2hlY2tfc2NhbmtleShCdHJlZUNoZWNrU3RhdGUgKnN0YXRl KQogCSAqIG1lbW9yeSByZW1haW5pbmcgYWxsb2NhdGVkLgogCSAqLwogCWZpcnN0aXR1cCA9 IChJbmRleFR1cGxlKSBQYWdlR2V0SXRlbShyaWdodHBhZ2UsIHJpZ2h0aXRlbSk7Ci0JcmV0 dXJuIGJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChzdGF0ZS0+cmVsLCBmaXJzdGl0dXApOwor CXJldHVybiBidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goc3RhdGUtPnJlbCwgc3RhdGUtPmhl YXByZWwsIGZpcnN0aXR1cCk7CiB9CiAKIC8qCkBAIC0yNjgxLDcgKzI2ODIsNyBAQCBidF9y b290ZGVzY2VuZChCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLCBJbmRleFR1cGxlIGl0dXApCiAJ QnVmZmVyCQlsYnVmOwogCWJvb2wJCWV4aXN0czsKIAotCWtleSA9IF9idF9ta3NjYW5rZXko c3RhdGUtPnJlbCwgaXR1cCk7CisJa2V5ID0gX2J0X21rc2NhbmtleShzdGF0ZS0+cmVsLCBz dGF0ZS0+aGVhcHJlbCwgaXR1cCk7CiAJQXNzZXJ0KGtleS0+aGVhcGtleXNwYWNlICYmIGtl eS0+c2NhbnRpZCAhPSBOVUxMKTsKIAogCS8qCkBAIC0yNjk0LDcgKzI2OTUsNyBAQCBidF9y b290ZGVzY2VuZChCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLCBJbmRleFR1cGxlIGl0dXApCiAJ ICovCiAJQXNzZXJ0KHN0YXRlLT5yZWFkb25seSAmJiBzdGF0ZS0+cm9vdGRlc2NlbmQpOwog CWV4aXN0cyA9IGZhbHNlOwotCXN0YWNrID0gX2J0X3NlYXJjaChzdGF0ZS0+cmVsLCBrZXks ICZsYnVmLCBCVF9SRUFELCBOVUxMKTsKKwlzdGFjayA9IF9idF9zZWFyY2goc3RhdGUtPnJl bCwgc3RhdGUtPmhlYXByZWwsIGtleSwgJmxidWYsIEJUX1JFQUQsIE5VTEwpOwogCiAJaWYg KEJ1ZmZlcklzVmFsaWQobGJ1ZikpCiAJewpAQCAtMzEzMywxMSArMzEzNCwxMSBAQCBwYWxs b2NfYnRyZWVfcGFnZShCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLCBCbG9ja051bWJlciBibG9j a251bSkKICAqIHRoZSBzY2Fua2V5IGlzIGdyZWF0ZXIuCiAgKi8KIHN0YXRpYyBpbmxpbmUg QlRTY2FuSW5zZXJ0Ci1idF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goUmVsYXRpb24gcmVsLCBJ bmRleFR1cGxlIGl0dXApCitidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goUmVsYXRpb24gcmVs LCBSZWxhdGlvbiBoZWFwcmVsLCBJbmRleFR1cGxlIGl0dXApCiB7CiAJQlRTY2FuSW5zZXJ0 IHNrZXk7CiAKLQlza2V5ID0gX2J0X21rc2NhbmtleShyZWwsIGl0dXApOworCXNrZXkgPSBf YnRfbWtzY2Fua2V5KHJlbCwgaGVhcHJlbCwgaXR1cCk7CiAJc2tleS0+cGl2b3RzZWFyY2gg PSB0cnVlOwogCiAJcmV0dXJuIHNrZXk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKaW5kZXgg ZWE3MmJjY2UxYi4uYzNhM2Q0OWJjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYwpAQCAt MzQ5LDcgKzM0OSw3IEBAIGdpc3RwbGFjZXRvcGFnZShSZWxhdGlvbiByZWwsIFNpemUgZnJl ZXNwYWNlLCBHSVNUU1RBVEUgKmdpc3RzdGF0ZSwKIAkJZm9yICg7IHB0cjsgcHRyID0gcHRy LT5uZXh0KQogCQl7CiAJCQkvKiBBbGxvY2F0ZSBuZXcgcGFnZSAqLwotCQkJcHRyLT5idWZm ZXIgPSBnaXN0TmV3QnVmZmVyKHJlbCk7CisJCQlwdHItPmJ1ZmZlciA9IGdpc3ROZXdCdWZm ZXIocmVsLCBoZWFwUmVsKTsKIAkJCUdJU1RJbml0QnVmZmVyKHB0ci0+YnVmZmVyLCAoaXNf bGVhZikgPyBGX0xFQUYgOiAwKTsKIAkJCXB0ci0+cGFnZSA9IEJ1ZmZlckdldFBhZ2UocHRy LT5idWZmZXIpOwogCQkJcHRyLT5ibG9jay5ibGtubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVy KHB0ci0+YnVmZmVyKTsKQEAgLTE2OTUsNyArMTY5NSw4IEBAIGdpc3RwcnVuZXBhZ2UoUmVs YXRpb24gcmVsLCBQYWdlIHBhZ2UsIEJ1ZmZlciBidWZmZXIsIFJlbGF0aW9uIGhlYXBSZWwp CiAKIAkJCXJlY3B0ciA9IGdpc3RYTG9nRGVsZXRlKGJ1ZmZlciwKIAkJCQkJCQkJCWRlbGV0 YWJsZSwgbmRlbGV0YWJsZSwKLQkJCQkJCQkJCXNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsK KwkJCQkJCQkJCXNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJaGVhcFJlbCk7 CiAKIAkJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRyKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0YnVpbGQuYwppbmRleCA1N2ZlNTUzYTVjLi5kMmY4ZGE1YjAyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwpAQCAtMjk4LDcgKzI5OCw3IEBAIGdpc3Ri dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleElu Zm8pCiAJCVBhZ2UJCXBhZ2U7CiAKIAkJLyogaW5pdGlhbGl6ZSB0aGUgcm9vdCBwYWdlICov Ci0JCWJ1ZmZlciA9IGdpc3ROZXdCdWZmZXIoaW5kZXgpOworCQlidWZmZXIgPSBnaXN0TmV3 QnVmZmVyKGluZGV4LCBoZWFwKTsKIAkJQXNzZXJ0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1 ZmZlcikgPT0gR0lTVF9ST09UX0JMS05PKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVm ZmVyKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKaW5kZXggYjRkODQzYTBm Zi4uYTYwNzQ2NGI5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dHV0aWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCkBAIC04 MjEsNyArODIxLDcgQEAgZ2lzdGNoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYp CiAgKiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemluZyB0aGUgcGFnZSBi eSBjYWxsaW5nIEdJU1RJbml0QnVmZmVyCiAgKi8KIEJ1ZmZlcgotZ2lzdE5ld0J1ZmZlcihS ZWxhdGlvbiByKQorZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByLCBSZWxhdGlvbiBoZWFwcmVs KQogewogCUJ1ZmZlcgkJYnVmZmVyOwogCWJvb2wJCW5lZWRMb2NrOwpAQCAtODY1LDcgKzg2 NSw3IEBAIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gcikKIAkJCQkgKiBwYWdlJ3MgZGVsZXRl WGlkLgogCQkJCSAqLwogCQkJCWlmIChYTG9nU3RhbmRieUluZm9BY3RpdmUoKSAmJiBSZWxh dGlvbk5lZWRzV0FMKHIpKQotCQkJCQlnaXN0WExvZ1BhZ2VSZXVzZShyLCBibGtubywgR2lz dFBhZ2VHZXREZWxldGVYaWQocGFnZSkpOworCQkJCQlnaXN0WExvZ1BhZ2VSZXVzZShyLCBo ZWFwcmVsLCBibGtubywgR2lzdFBhZ2VHZXREZWxldGVYaWQocGFnZSkpOwogCiAJCQkJcmV0 dXJuIGJ1ZmZlcjsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3R4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCmluZGV4 IGY2NTg2NDI1NGEuLmI3Njc4ZjNjMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhs b2cuYwpAQCAtMTc3LDYgKzE3Nyw3IEBAIGdpc3RSZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCWdpc3R4bG9nRGVsZXRlICp4bGRhdGEgPSAoZ2lzdHhsb2dE ZWxldGUgKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsKIAlCdWZmZXIJCWJ1ZmZlcjsKIAlQ YWdlCQlwYWdlOworCU9mZnNldE51bWJlciAqdG9EZWxldGUgPSB4bGRhdGEtPm9mZnNldHM7 CiAKIAkvKgogCSAqIElmIHdlIGhhdmUgYW55IGNvbmZsaWN0IHByb2Nlc3NpbmcgdG8gZG8s IGl0IG11c3QgaGFwcGVuIGJlZm9yZSB3ZQpAQCAtMjAzLDE0ICsyMDQsNyBAQCBnaXN0UmVk b0RlbGV0ZVJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAl7CiAJCXBhZ2UgPSAo UGFnZSkgQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCi0JCWlmIChYTG9nUmVjR2V0RGF0YUxl bihyZWNvcmQpID4gU2l6ZU9mR2lzdHhsb2dEZWxldGUpCi0JCXsKLQkJCU9mZnNldE51bWJl ciAqdG9kZWxldGU7Ci0KLQkJCXRvZGVsZXRlID0gKE9mZnNldE51bWJlciAqKSAoKGNoYXIg KikgeGxkYXRhICsgU2l6ZU9mR2lzdHhsb2dEZWxldGUpOwotCi0JCQlQYWdlSW5kZXhNdWx0 aURlbGV0ZShwYWdlLCB0b2RlbGV0ZSwgeGxkYXRhLT5udG9kZWxldGUpOwotCQl9CisJCVBh Z2VJbmRleE11bHRpRGVsZXRlKHBhZ2UsIHRvRGVsZXRlLCB4bGRhdGEtPm50b2RlbGV0ZSk7 CiAKIAkJR2lzdENsZWFyUGFnZUhhc0dhcmJhZ2UocGFnZSk7CiAJCUdpc3RNYXJrVHVwbGVz RGVsZXRlZChwYWdlKTsKQEAgLTU5Nyw3ICs1OTEsOCBAQCBnaXN0WExvZ0Fzc2lnbkxTTih2 b2lkKQogICogV3JpdGUgWExPRyByZWNvcmQgYWJvdXQgcmV1c2Ugb2YgYSBkZWxldGVkIHBh Z2UuCiAgKi8KIHZvaWQKLWdpc3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIHJlbCwgQmxvY2tO dW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIGRlbGV0ZVhpZCkKK2dpc3RYTG9nUGFn ZVJldXNlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwKKwkJCQkgIEJsb2NrTnVt YmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBkZWxldGVYaWQpCiB7CiAJZ2lzdHhsb2dQ YWdlUmV1c2UgeGxyZWNfcmV1c2U7CiAKQEAgLTYwOCw2ICs2MDMsNyBAQCBnaXN0WExvZ1Bh Z2VSZXVzZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rp b25JZCBkZWxldGVYaWQpCiAJICovCiAKIAkvKiBYTE9HIHN0dWZmICovCisJeGxyZWNfcmV1 c2UuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGlu ZyhoZWFwcmVsKTsKIAl4bHJlY19yZXVzZS5sb2NhdG9yID0gcmVsLT5yZF9sb2NhdG9yOwog CXhscmVjX3JldXNlLmJsb2NrID0gYmxrbm87CiAJeGxyZWNfcmV1c2Uuc25hcHNob3RDb25m bGljdEhvcml6b24gPSBkZWxldGVYaWQ7CkBAIC02NzIsMTEgKzY2OCwxMiBAQCBnaXN0WExv Z1VwZGF0ZShCdWZmZXIgYnVmZmVyLAogICovCiBYTG9nUmVjUHRyCiBnaXN0WExvZ0RlbGV0 ZShCdWZmZXIgYnVmZmVyLCBPZmZzZXROdW1iZXIgKnRvZGVsZXRlLCBpbnQgbnRvZGVsZXRl LAotCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbikKKwkJCSAg IFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sIFJlbGF0aW9uIGhlYXBy ZWwpCiB7CiAJZ2lzdHhsb2dEZWxldGUgeGxyZWM7CiAJWExvZ1JlY1B0cglyZWNwdHI7CiAK Kwl4bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERl Y29kaW5nKGhlYXByZWwpOwogCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25h cHNob3RDb25mbGljdEhvcml6b247CiAJeGxyZWMubnRvZGVsZXRlID0gbnRvZGVsZXRlOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCmluZGV4IGYzOGI0MmVmYjkuLjA4 Y2ViOTEyODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCkBAIC05ODAs OCArOTgwLDEwIEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJUGFnZQkJcGFnZTsKIAlYTG9nUmVkb0FjdGlvbiBhY3Rpb247CiAJSGFz aFBhZ2VPcGFxdWUgcGFnZW9wYXF1ZTsKKwlPZmZzZXROdW1iZXIgKnRvRGVsZXRlOwogCiAJ eGxkYXRhID0gKHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlICopIFhMb2dSZWNHZXREYXRhKHJl Y29yZCk7CisJdG9EZWxldGUgPSB4bGRhdGEtPm9mZnNldHM7CiAKIAkvKgogCSAqIElmIHdl IGhhdmUgYW55IGNvbmZsaWN0IHByb2Nlc3NpbmcgdG8gZG8sIGl0IG11c3QgaGFwcGVuIGJl Zm9yZSB3ZQpAQCAtMTAxMCwxNSArMTAxMiw3IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3Bh Z2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJewogCQlwYWdlID0gKFBhZ2UpIEJ1ZmZl ckdldFBhZ2UoYnVmZmVyKTsKIAotCQlpZiAoWExvZ1JlY0dldERhdGFMZW4ocmVjb3JkKSA+ IFNpemVPZkhhc2hWYWN1dW1PbmVQYWdlKQotCQl7Ci0JCQlPZmZzZXROdW1iZXIgKnVudXNl ZDsKLQotCQkJdW51c2VkID0gKE9mZnNldE51bWJlciAqKSAoKGNoYXIgKikgeGxkYXRhICsg U2l6ZU9mSGFzaFZhY3V1bU9uZVBhZ2UpOwotCi0JCQlQYWdlSW5kZXhNdWx0aURlbGV0ZShw YWdlLCB1bnVzZWQsIHhsZGF0YS0+bnR1cGxlcyk7Ci0JCX0KLQorCQlQYWdlSW5kZXhNdWx0 aURlbGV0ZShwYWdlLCB0b0RlbGV0ZSwgeGxkYXRhLT5udHVwbGVzKTsKIAkJLyoKIAkJICog TWFyayB0aGUgcGFnZSBhcyBub3QgY29udGFpbmluZyBhbnkgTFBfREVBRCBpdGVtcy4gU2Vl IGNvbW1lbnRzIGluCiAJCSAqIF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSgpIGZvciBkZXRhaWxz LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCmluZGV4IGE2MDRlMzE4OTEu LjIyNjU2YjI0ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hp bnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKQEAg LTQzMiw2ICs0MzIsNyBAQCBfaGFzaF92YWN1dW1fb25lX3BhZ2UoUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiBocmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIGJ1ZikKIAkJCXhsX2hhc2hf dmFjdXVtX29uZV9wYWdlIHhscmVjOwogCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKKwkJCXhs cmVjLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rp bmcoaHJlbCk7CiAJCQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uOwogCQkJeGxyZWMubnR1cGxlcyA9IG5kZWxldGFibGU7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggOGFiYzEwMWM4Yy4uODcwZWQ5ZDE5MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTY2OTgsNiArNjY5OCw3IEBAIGhl YXBfZnJlZXplX2V4ZWN1dGVfcHJlcGFyZWQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmZmVy LAogCQlucGxhbnMgPSBoZWFwX2xvZ19mcmVlemVfcGxhbih0dXBsZXMsIG50dXBsZXMsIHBs YW5zLCBvZmZzZXRzKTsKIAogCQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uOworCQl4bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlv bklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbCk7CiAJCXhscmVjLm5wbGFucyA9 IG5wbGFuczsKIAogCQlYTG9nQmVnaW5JbnNlcnQoKTsKQEAgLTgyNjgsNyArODI2OSw3IEBA IGJvdHRvbXVwX3NvcnRfYW5kX3NocmluayhUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSkK ICAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgogICovCiBYTG9nUmVjUHRyCi1sb2df aGVhcF92aXNpYmxlKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBCdWZmZXIgaGVhcF9idWZm ZXIsIEJ1ZmZlciB2bV9idWZmZXIsCitsb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAogCQkJCSBUcmFuc2FjdGlv bklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB1aW50OCB2bWZsYWdzKQogewogCXhsX2hl YXBfdmlzaWJsZSB4bHJlYzsKQEAgLTgyODAsNiArODI4MSw4IEBAIGxvZ19oZWFwX3Zpc2li bGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVy IHZtX2J1ZmZlciwKIAogCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNo b3RDb25mbGljdEhvcml6b247CiAJeGxyZWMuZmxhZ3MgPSB2bWZsYWdzOworCWlmIChSZWxh dGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbCkpCisJCXhscmVjLmZsYWdz IHw9IFZJU0lCSUxJVFlNQVBfSVNfQ0FUQUxPR19SRUw7CiAJWExvZ0JlZ2luSW5zZXJ0KCk7 CiAJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSAmeGxyZWMsIFNpemVPZkhlYXBWaXNpYmxl KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXgg OWU2OTAwNzRlOS4uOTdiNWRhZWU5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jCkBAIC04MjIsOSArODIyLDE0IEBAIGhlYXBhbV9yZWxhdGlvbl9j b3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhlYXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAJ CQkJCQkJCSAqbXVsdGlfY3V0b2ZmKTsKIAogCi0JLyogU2V0IHVwIHNvcnRpbmcgaWYgd2Fu dGVkICovCisJLyoKKwkgKiBTZXQgdXAgc29ydGluZyBpZiB3YW50ZWQuIE5ld0hlYXAgaXMg YmVpbmcgcGFzc2VkIHRvCisJICogdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIoKSwgaXQgY291 bGQgaGF2ZSBiZWVuIE9sZEhlYXAgdG9vLiBJdCBkb2VzIG5vdAorCSAqIHJlYWxseSBtYXR0 ZXIsIGFzIHRoZSBnb2FsIGlzIHRvIGhhdmUgYSBoZWFwIHJlbGF0aW9uIGJlaW5nIHBhc3Nl ZCB0bworCSAqIF9idF9sb2dfcmV1c2VfcGFnZSgpICh3aGljaCBzaG91bGQgbm90IGJlIGNh bGxlZCBmcm9tIHRoaXMgY29kZSBwYXRoKS4KKwkgKi8KIAlpZiAodXNlX3NvcnQpCi0JCXR1 cGxlc29ydCA9IHR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKG9sZFR1cERlc2MsIE9sZEluZGV4 LAorCQl0dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihvbGRUdXBEZXNjLCBP bGRJbmRleCwgTmV3SGVhcCwKIAkJCQkJCQkJCQkJbWFpbnRlbmFuY2Vfd29ya19tZW0sCiAJ CQkJCQkJCQkJCU5VTEwsIFRVUExFU09SVF9OT05FKTsKIAllbHNlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDRlNjVjYmNhZGYuLjNmMDM0MjM1MWYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC00MTgsNiArNDE4LDcgQEAgaGVh cF9wYWdlX3BydW5lKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJeGxf aGVhcF9wcnVuZSB4bHJlYzsKIAkJCVhMb2dSZWNQdHIJcmVjcHRyOwogCisJCQl4bHJlYy5p c0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJl bGF0aW9uKTsKIAkJCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gcHJzdGF0ZS5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAkJCXhscmVjLm5yZWRpcmVjdGVkID0gcHJzdGF0 ZS5ucmVkaXJlY3RlZDsKIAkJCXhscmVjLm5kZWFkID0gcHJzdGF0ZS5uZGVhZDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA4ZjE0Y2Y4NWYzLi5hZTYyOGQ3 NDdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yNzEwLDYg KzI3MTAsNyBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCWl2aW5mby5tZXNzYWdlX2xldmVsID0gREVC VUcyOwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0 cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJaXZpbmZvLmhlYXByZWwgPSB2YWNyZWwt PnJlbDsKIAogCS8qCiAJICogVXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbi4K QEAgLTI3NTksNiArMjc2MCw3IEBAIGxhenlfY2xlYW51cF9vbmVfaW5kZXgoUmVsYXRpb24g aW5kcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCiAJaXZpbmZvLm51bV9o ZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSB2YWNyZWwtPmJz dHJhdGVneTsKKwlpdmluZm8uaGVhcHJlbCA9IHZhY3JlbC0+cmVsOwogCiAJLyoKIAkgKiBV cGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmlzaWJpbGl0eW1hcC5jCmluZGV4IDc0ZmYwMWJiMTcuLmQxYmE4NTk4NTEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKQEAgLTI4OCw4ICsy ODgsNyBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhl YXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogCQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQocmVj cHRyKSkKIAkJCXsKIAkJCQlBc3NlcnQoIUluUmVjb3ZlcnkpOwotCQkJCXJlY3B0ciA9IGxv Z19oZWFwX3Zpc2libGUocmVsLT5yZF9sb2NhdG9yLCBoZWFwQnVmLCB2bUJ1ZiwKLQkJCQkJ CQkJCQkgIGN1dG9mZl94aWQsIGZsYWdzKTsKKwkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNp YmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYsIGN1dG9mZl94aWQsIGZsYWdzKTsKIAogCQkJCS8q CiAJCQkJICogSWYgZGF0YSBjaGVja3N1bXMgYXJlIGVuYWJsZWQgKG9yIHdhbF9sb2dfaGlu dHM9b24pLCB3ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRp bnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKaW5kZXgg ZjRjMWE5NzRlZi4uOGM2ZTg2N2M2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRpbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dGluc2VydC5jCkBAIC0zMCw3ICszMCw4IEBACiAjZGVmaW5lIEJUUkVFX0ZBU1RQQVRIX01J Tl9MRVZFTAkyCiAKIAotc3RhdGljIEJUU3RhY2sgX2J0X3NlYXJjaF9pbnNlcnQoUmVsYXRp b24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlKTsKK3N0YXRpYyBCVFN0YWNrIF9i dF9zZWFyY2hfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwKKwkJCQkJ CQkJIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpOwogc3RhdGljIFRyYW5zYWN0aW9uSWQg X2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3Rh dGUsCiAJCQkJCQkJCQkgIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCQkJCQkgIEluZGV4VW5p cXVlQ2hlY2sgY2hlY2tVbmlxdWUsIGJvb2wgKmlzX3VuaXF1ZSwKQEAgLTQxLDggKzQyLDkg QEAgc3RhdGljIE9mZnNldE51bWJlciBfYnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWws CiAJCQkJCQkJCQkgIGJvb2wgaW5kZXhVbmNoYW5nZWQsCiAJCQkJCQkJCQkgIEJUU3RhY2sg c3RhY2ssCiAJCQkJCQkJCQkgIFJlbGF0aW9uIGhlYXBSZWwpOwotc3RhdGljIHZvaWQgX2J0 X3N0ZXByaWdodChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJU U3RhY2sgc3RhY2spOwotc3RhdGljIHZvaWQgX2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVs LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCitzdGF0aWMgdm9pZCBfYnRfc3RlcHJpZ2h0KFJl bGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwKKwkJCQkJCSAgQlRJbnNlcnRTdGF0ZSBp bnNlcnRzdGF0ZSwgQlRTdGFjayBzdGFjayk7CitzdGF0aWMgdm9pZCBfYnRfaW5zZXJ0b25w ZyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tl eSwKIAkJCQkJCSAgIEJ1ZmZlciBidWYsCiAJCQkJCQkgICBCdWZmZXIgY2J1ZiwKIAkJCQkJ CSAgIEJUU3RhY2sgc3RhY2ssCkBAIC01MSwxMyArNTMsMTMgQEAgc3RhdGljIHZvaWQgX2J0 X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCiAJCQkJ CQkgICBPZmZzZXROdW1iZXIgbmV3aXRlbW9mZiwKIAkJCQkJCSAgIGludCBwb3N0aW5nb2Zm LAogCQkJCQkJICAgYm9vbCBzcGxpdF9vbmx5X3BhZ2UpOwotc3RhdGljIEJ1ZmZlciBfYnRf c3BsaXQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYs Ci0JCQkJCQlCdWZmZXIgY2J1ZiwgT2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsIFNpemUgbmV3 aXRlbXN6LAotCQkJCQkJSW5kZXhUdXBsZSBuZXdpdGVtLCBJbmRleFR1cGxlIG9yaWduZXdp dGVtLAorc3RhdGljIEJ1ZmZlciBfYnRfc3BsaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBo ZWFwcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCisJCQkJCQlCdWZmZXIgYnVmLCBCdWZm ZXIgY2J1ZiwgT2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsCisJCQkJCQlTaXplIG5ld2l0ZW1z eiwgSW5kZXhUdXBsZSBuZXdpdGVtLCBJbmRleFR1cGxlIG9yaWduZXdpdGVtLAogCQkJCQkJ SW5kZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYpOwotc3RhdGljIHZvaWQg X2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBCdWZmZXIgcmJ1 ZiwKLQkJCQkJCQkgIEJUU3RhY2sgc3RhY2ssIGJvb2wgaXNyb290LCBib29sIGlzb25seSk7 Ci1zdGF0aWMgQnVmZmVyIF9idF9uZXdyb290KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYs IEJ1ZmZlciByYnVmKTsKK3N0YXRpYyB2b2lkIF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9u IHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQkgIEJ1ZmZlciBy YnVmLCBCVFN0YWNrIHN0YWNrLCBib29sIGlzcm9vdCwgYm9vbCBpc29ubHkpOworc3RhdGlj IEJ1ZmZlciBfYnRfbmV3cm9vdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1 ZmZlciBsYnVmLCBCdWZmZXIgcmJ1Zik7CiBzdGF0aWMgaW5saW5lIGJvb2wgX2J0X3BnYWRk dHVwKFBhZ2UgcGFnZSwgU2l6ZSBpdGVtc2l6ZSwgSW5kZXhUdXBsZSBpdHVwLAogCQkJCQkJ CQlPZmZzZXROdW1iZXIgaXR1cF9vZmYsIGJvb2wgbmV3Zmlyc3RkYXRhaXRlbSk7CiBzdGF0 aWMgdm9pZCBfYnRfZGVsZXRlX29yX2RlZHVwX29uZV9wYWdlKFJlbGF0aW9uIHJlbCwgUmVs YXRpb24gaGVhcFJlbCwKQEAgLTEwOCw3ICsxMTAsNyBAQCBfYnRfZG9pbnNlcnQoUmVsYXRp b24gcmVsLCBJbmRleFR1cGxlIGl0dXAsCiAJYm9vbAkJY2hlY2tpbmd1bmlxdWUgPSAoY2hl Y2tVbmlxdWUgIT0gVU5JUVVFX0NIRUNLX05PKTsKIAogCS8qIHdlIG5lZWQgYW4gaW5zZXJ0 aW9uIHNjYW4ga2V5IHRvIGRvIG91ciBzZWFyY2gsIHNvIGJ1aWxkIG9uZSAqLwotCWl0dXBf a2V5ID0gX2J0X21rc2NhbmtleShyZWwsIGl0dXApOworCWl0dXBfa2V5ID0gX2J0X21rc2Nh bmtleShyZWwsIGhlYXBSZWwsIGl0dXApOwogCiAJaWYgKGNoZWNraW5ndW5pcXVlKQogCXsK QEAgLTE2Miw3ICsxNjQsNyBAQCBzZWFyY2g6CiAJICogc2VhcmNoaW5nIGZyb20gdGhlIHJv b3QgcGFnZS4gIGluc2VydHN0YXRlLmJ1ZiB3aWxsIGhvbGQgYSBidWZmZXIgdGhhdAogCSAq IGlzIGxvY2tlZCBpbiBleGNsdXNpdmUgbW9kZSBhZnRlcndhcmRzLgogCSAqLwotCXN0YWNr ID0gX2J0X3NlYXJjaF9pbnNlcnQocmVsLCAmaW5zZXJ0c3RhdGUpOworCXN0YWNrID0gX2J0 X3NlYXJjaF9pbnNlcnQocmVsLCBoZWFwUmVsLCAmaW5zZXJ0c3RhdGUpOwogCiAJLyoKIAkg KiBjaGVja2luZ3VuaXF1ZSBpbnNlcnRzIGFyZSBub3QgYWxsb3dlZCB0byBnbyBhaGVhZCB3 aGVuIHR3byB0dXBsZXMgd2l0aApAQCAtMjU1LDggKzI1Nyw4IEBAIHNlYXJjaDoKIAkJICov CiAJCW5ld2l0ZW1vZmYgPSBfYnRfZmluZGluc2VydGxvYyhyZWwsICZpbnNlcnRzdGF0ZSwg Y2hlY2tpbmd1bmlxdWUsCiAJCQkJCQkJCQkgICBpbmRleFVuY2hhbmdlZCwgc3RhY2ssIGhl YXBSZWwpOwotCQlfYnRfaW5zZXJ0b25wZyhyZWwsIGl0dXBfa2V5LCBpbnNlcnRzdGF0ZS5i dWYsIEludmFsaWRCdWZmZXIsIHN0YWNrLAotCQkJCQkgICBpdHVwLCBpbnNlcnRzdGF0ZS5p dGVtc3osIG5ld2l0ZW1vZmYsCisJCV9idF9pbnNlcnRvbnBnKHJlbCwgaGVhcFJlbCwgaXR1 cF9rZXksIGluc2VydHN0YXRlLmJ1ZiwgSW52YWxpZEJ1ZmZlciwKKwkJCQkJICAgc3RhY2ss IGl0dXAsIGluc2VydHN0YXRlLml0ZW1zeiwgbmV3aXRlbW9mZiwKIAkJCQkJICAgaW5zZXJ0 c3RhdGUucG9zdGluZ29mZiwgZmFsc2UpOwogCX0KIAllbHNlCkBAIC0zMTIsNyArMzE0LDcg QEAgc2VhcmNoOgogICogc2luY2UgZWFjaCBwZXItYmFja2VuZCBjYWNoZSB3b24ndCBzdGF5 IHZhbGlkIGZvciBsb25nLgogICovCiBzdGF0aWMgQlRTdGFjawotX2J0X3NlYXJjaF9pbnNl cnQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlKQorX2J0X3NlYXJj aF9pbnNlcnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVEluc2VydFN0YXRl IGluc2VydHN0YXRlKQogewogCUFzc2VydChpbnNlcnRzdGF0ZS0+YnVmID09IEludmFsaWRC dWZmZXIpOwogCUFzc2VydCghaW5zZXJ0c3RhdGUtPmJvdW5kc192YWxpZCk7CkBAIC0zNzUs OCArMzc3LDggQEAgX2J0X3NlYXJjaF9pbnNlcnQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0 YXRlIGluc2VydHN0YXRlKQogCX0KIAogCS8qIENhbm5vdCB1c2Ugb3B0aW1pemF0aW9uIC0t IGRlc2NlbmQgdHJlZSwgcmV0dXJuIHByb3BlciBkZXNjZW50IHN0YWNrICovCi0JcmV0dXJu IF9idF9zZWFyY2gocmVsLCBpbnNlcnRzdGF0ZS0+aXR1cF9rZXksICZpbnNlcnRzdGF0ZS0+ YnVmLCBCVF9XUklURSwKLQkJCQkJICBOVUxMKTsKKwlyZXR1cm4gX2J0X3NlYXJjaChyZWws IGhlYXByZWwsIGluc2VydHN0YXRlLT5pdHVwX2tleSwgJmluc2VydHN0YXRlLT5idWYsCisJ CQkJCSAgQlRfV1JJVEUsIE5VTEwpOwogfQogCiAvKgpAQCAtODg1LDcgKzg4Nyw3IEBAIF9i dF9maW5kaW5zZXJ0bG9jKFJlbGF0aW9uIHJlbCwKIAkJCQkJX2J0X2NvbXBhcmUocmVsLCBp dHVwX2tleSwgcGFnZSwgUF9ISUtFWSkgPD0gMCkKIAkJCQkJYnJlYWs7CiAKLQkJCQlfYnRf c3RlcHJpZ2h0KHJlbCwgaW5zZXJ0c3RhdGUsIHN0YWNrKTsKKwkJCQlfYnRfc3RlcHJpZ2h0 KHJlbCwgaGVhcFJlbCwgaW5zZXJ0c3RhdGUsIHN0YWNrKTsKIAkJCQkvKiBVcGRhdGUgbG9j YWwgc3RhdGUgYWZ0ZXIgc3RlcHBpbmcgcmlnaHQgKi8KIAkJCQlwYWdlID0gQnVmZmVyR2V0 UGFnZShpbnNlcnRzdGF0ZS0+YnVmKTsKIAkJCQlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUo cGFnZSk7CkBAIC05NjksNyArOTcxLDcgQEAgX2J0X2ZpbmRpbnNlcnRsb2MoUmVsYXRpb24g cmVsLAogCQkJCXBnX3BybmdfdWludDMyKCZwZ19nbG9iYWxfcHJuZ19zdGF0ZSkgPD0gKFBH X1VJTlQzMl9NQVggLyAxMDApKQogCQkJCWJyZWFrOwogCi0JCQlfYnRfc3RlcHJpZ2h0KHJl bCwgaW5zZXJ0c3RhdGUsIHN0YWNrKTsKKwkJCV9idF9zdGVwcmlnaHQocmVsLCBoZWFwUmVs LCBpbnNlcnRzdGF0ZSwgc3RhY2spOwogCQkJLyogVXBkYXRlIGxvY2FsIHN0YXRlIGFmdGVy IHN0ZXBwaW5nIHJpZ2h0ICovCiAJCQlwYWdlID0gQnVmZmVyR2V0UGFnZShpbnNlcnRzdGF0 ZS0+YnVmKTsKIAkJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKQEAgLTEwMjIs NyArMTAyNCw3IEBAIF9idF9maW5kaW5zZXJ0bG9jKFJlbGF0aW9uIHJlbCwKICAqIGluZGV4 ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCi1fYnRfc3RlcHJpZ2h0KFJlbGF0aW9uIHJlbCwgQlRJ bnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgQlRTdGFjayBzdGFjaykKK19idF9zdGVwcmlnaHQo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0 YXRlLCBCVFN0YWNrIHN0YWNrKQogewogCVBhZ2UJCXBhZ2U7CiAJQlRQYWdlT3BhcXVlIG9w YXF1ZTsKQEAgLTEwNDgsNyArMTA1MCw3IEBAIF9idF9zdGVwcmlnaHQoUmVsYXRpb24gcmVs LCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBCVFN0YWNrIHN0YWNrKQogCQkgKi8KIAkJ aWYgKFBfSU5DT01QTEVURV9TUExJVChvcGFxdWUpKQogCQl7Ci0JCQlfYnRfZmluaXNoX3Nw bGl0KHJlbCwgcmJ1Ziwgc3RhY2spOworCQkJX2J0X2ZpbmlzaF9zcGxpdChyZWwsIGhlYXBy ZWwsIHJidWYsIHN0YWNrKTsKIAkJCXJidWYgPSBJbnZhbGlkQnVmZmVyOwogCQkJY29udGlu dWU7CiAJCX0KQEAgLTEwOTksNiArMTEwMSw3IEBAIF9idF9zdGVwcmlnaHQoUmVsYXRpb24g cmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBCVFN0YWNrIHN0YWNrKQogICovCiBz dGF0aWMgdm9pZAogX2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAorCQkJICAgUmVsYXRp b24gaGVhcHJlbCwKIAkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKIAkJCSAgIEJ1ZmZl ciBidWYsCiAJCQkgICBCdWZmZXIgY2J1ZiwKQEAgLTEyMDksOCArMTIxMiw4IEBAIF9idF9p bnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwKIAkJQXNzZXJ0KCFzcGxpdF9vbmx5X3BhZ2UpOwog CiAJCS8qIHNwbGl0IHRoZSBidWZmZXIgaW50byBsZWZ0IGFuZCByaWdodCBoYWx2ZXMgKi8K LQkJcmJ1ZiA9IF9idF9zcGxpdChyZWwsIGl0dXBfa2V5LCBidWYsIGNidWYsIG5ld2l0ZW1v ZmYsIGl0ZW1zeiwgaXR1cCwKLQkJCQkJCSBvcmlnaXR1cCwgbnBvc3RpbmcsIHBvc3Rpbmdv ZmYpOworCQlyYnVmID0gX2J0X3NwbGl0KHJlbCwgaGVhcHJlbCwgaXR1cF9rZXksIGJ1Ziwg Y2J1ZiwgbmV3aXRlbW9mZiwgaXRlbXN6LAorCQkJCQkJIGl0dXAsIG9yaWdpdHVwLCBucG9z dGluZywgcG9zdGluZ29mZik7CiAJCVByZWRpY2F0ZUxvY2tQYWdlU3BsaXQocmVsLAogCQkJ CQkJCSAgIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZiksCiAJCQkJCQkJICAgQnVmZmVyR2V0 QmxvY2tOdW1iZXIocmJ1ZikpOwpAQCAtMTIzMyw3ICsxMjM2LDcgQEAgX2J0X2luc2VydG9u cGcoUmVsYXRpb24gcmVsLAogCQkgKiBwYWdlLgogCQkgKi0tLS0tLS0tLS0KIAkJICovCi0J CV9idF9pbnNlcnRfcGFyZW50KHJlbCwgYnVmLCByYnVmLCBzdGFjaywgaXNyb290LCBpc29u bHkpOworCQlfYnRfaW5zZXJ0X3BhcmVudChyZWwsIGhlYXByZWwsIGJ1ZiwgcmJ1Ziwgc3Rh Y2ssIGlzcm9vdCwgaXNvbmx5KTsKIAl9CiAJZWxzZQogCXsKQEAgLTEyNTQsNyArMTI1Nyw3 IEBAIF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwKIAkJCUFzc2VydCghaXNsZWFmKTsK IAkJCUFzc2VydChCdWZmZXJJc1ZhbGlkKGNidWYpKTsKIAotCQkJbWV0YWJ1ZiA9IF9idF9n ZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOworCQkJbWV0YWJ1ZiA9IF9i dF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOwogCQkJ bWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAkJCW1ldGFkID0gQlRQYWdlR2V0 TWV0YShtZXRhcGcpOwogCkBAIC0xNDE4LDcgKzE0MjEsNyBAQCBfYnRfaW5zZXJ0b25wZyhS ZWxhdGlvbiByZWwsCiAJCSAqIGNhbGwgX2J0X2dldHJvb3RoZWlnaHQgd2hpbGUgaG9sZGlu ZyBhIGJ1ZmZlciBsb2NrLgogCQkgKi8KIAkJaWYgKEJsb2NrTnVtYmVySXNWYWxpZChibG9j a2NhY2hlKSAmJgotCQkJX2J0X2dldHJvb3RoZWlnaHQocmVsKSA+PSBCVFJFRV9GQVNUUEFU SF9NSU5fTEVWRUwpCisJCQlfYnRfZ2V0cm9vdGhlaWdodChyZWwsIGhlYXByZWwpID49IEJU UkVFX0ZBU1RQQVRIX01JTl9MRVZFTCkKIAkJCVJlbGF0aW9uU2V0VGFyZ2V0QmxvY2socmVs LCBibG9ja2NhY2hlKTsKIAl9CiAKQEAgLTE0NTksOCArMTQ2Miw4IEBAIF9idF9pbnNlcnRv bnBnKFJlbGF0aW9uIHJlbCwKICAqCQlUaGUgcGluIGFuZCBsb2NrIG9uIGJ1ZiBhcmUgbWFp bnRhaW5lZC4KICAqLwogc3RhdGljIEJ1ZmZlcgotX2J0X3NwbGl0KFJlbGF0aW9uIHJlbCwg QlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZmZXIgYnVmLCBCdWZmZXIgY2J1ZiwKLQkJICBP ZmZzZXROdW1iZXIgbmV3aXRlbW9mZiwgU2l6ZSBuZXdpdGVtc3osIEluZGV4VHVwbGUgbmV3 aXRlbSwKK19idF9zcGxpdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUU2Nh bkluc2VydCBpdHVwX2tleSwgQnVmZmVyIGJ1ZiwKKwkJICBCdWZmZXIgY2J1ZiwgT2Zmc2V0 TnVtYmVyIG5ld2l0ZW1vZmYsIFNpemUgbmV3aXRlbXN6LCBJbmRleFR1cGxlIG5ld2l0ZW0s CiAJCSAgSW5kZXhUdXBsZSBvcmlnbmV3aXRlbSwgSW5kZXhUdXBsZSBucG9zdGluZywgdWlu dDE2IHBvc3RpbmdvZmYpCiB7CiAJQnVmZmVyCQlyYnVmOwpAQCAtMTcxMiw3ICsxNzE1LDcg QEAgX2J0X3NwbGl0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZm ZXIgYnVmLCBCdWZmZXIgY2J1ZiwKIAkgKiB3YXkgYmVjYXVzZSBpdCBhdm9pZHMgYW4gdW5u ZWNlc3NhcnkgUEFOSUMgd2hlbiBlaXRoZXIgb3JpZ3BhZ2Ugb3IgaXRzCiAJICogZXhpc3Rp bmcgc2libGluZyBwYWdlIGFyZSBjb3JydXB0LgogCSAqLwotCXJidWYgPSBfYnRfZ2V0YnVm KHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKKwlyYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXBy ZWwsIFBfTkVXLCBCVF9XUklURSk7CiAJcmlnaHRwYWdlID0gQnVmZmVyR2V0UGFnZShyYnVm KTsKIAlyaWdodHBhZ2VudW1iZXIgPSBCdWZmZXJHZXRCbG9ja051bWJlcihyYnVmKTsKIAkv KiByaWdodHBhZ2Ugd2FzIGluaXRpYWxpemVkIGJ5IF9idF9nZXRidWYgKi8KQEAgLTE4ODUs NyArMTg4OCw3IEBAIF9idF9zcGxpdChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVw X2tleSwgQnVmZmVyIGJ1ZiwgQnVmZmVyIGNidWYsCiAJICovCiAJaWYgKCFpc3JpZ2h0bW9z dCkKIAl7Ci0JCXNidWYgPSBfYnRfZ2V0YnVmKHJlbCwgb29wYXF1ZS0+YnRwb19uZXh0LCBC VF9XUklURSk7CisJCXNidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgb29wYXF1ZS0+ YnRwb19uZXh0LCBCVF9XUklURSk7CiAJCXNwYWdlID0gQnVmZmVyR2V0UGFnZShzYnVmKTsK IAkJc29wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShzcGFnZSk7CiAJCWlmIChzb3BhcXVlLT5i dHBvX3ByZXYgIT0gb3JpZ3BhZ2VudW1iZXIpCkBAIC0yMDkyLDYgKzIwOTUsNyBAQCBfYnRf c3BsaXQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYs IEJ1ZmZlciBjYnVmLAogICovCiBzdGF0aWMgdm9pZAogX2J0X2luc2VydF9wYXJlbnQoUmVs YXRpb24gcmVsLAorCQkJCSAgUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkgIEJ1ZmZlciBidWYs CiAJCQkJICBCdWZmZXIgcmJ1ZiwKIAkJCQkgIEJUU3RhY2sgc3RhY2ssCkBAIC0yMTE4LDcg KzIxMjIsNyBAQCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsCiAJCUFzc2VydChz dGFjayA9PSBOVUxMKTsKIAkJQXNzZXJ0KGlzb25seSk7CiAJCS8qIGNyZWF0ZSBhIG5ldyBy b290IG5vZGUgYW5kIHVwZGF0ZSB0aGUgbWV0YXBhZ2UgKi8KLQkJcm9vdGJ1ZiA9IF9idF9u ZXdyb290KHJlbCwgYnVmLCByYnVmKTsKKwkJcm9vdGJ1ZiA9IF9idF9uZXdyb290KHJlbCwg aGVhcHJlbCwgYnVmLCByYnVmKTsKIAkJLyogcmVsZWFzZSB0aGUgc3BsaXQgYnVmZmVycyAq LwogCQlfYnRfcmVsYnVmKHJlbCwgcm9vdGJ1Zik7CiAJCV9idF9yZWxidWYocmVsLCByYnVm KTsKQEAgLTIxNTcsNyArMjE2MSw4IEBAIF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJl bCwKIAkJCQkJIEJsb2NrTnVtYmVySXNWYWxpZChSZWxhdGlvbkdldFRhcmdldEJsb2NrKHJl bCkpKSk7CiAKIAkJCS8qIEZpbmQgdGhlIGxlZnRtb3N0IHBhZ2UgYXQgdGhlIG5leHQgbGV2 ZWwgdXAgKi8KLQkJCXBidWYgPSBfYnRfZ2V0X2VuZHBvaW50KHJlbCwgb3BhcXVlLT5idHBv X2xldmVsICsgMSwgZmFsc2UsIE5VTEwpOworCQkJcGJ1ZiA9IF9idF9nZXRfZW5kcG9pbnQo cmVsLCBoZWFwcmVsLCBvcGFxdWUtPmJ0cG9fbGV2ZWwgKyAxLCBmYWxzZSwKKwkJCQkJCQkJ CU5VTEwpOwogCQkJLyogU2V0IHVwIGEgcGhvbnkgc3RhY2sgZW50cnkgcG9pbnRpbmcgdGhl cmUgKi8KIAkJCXN0YWNrID0gJmZha2VzdGFjazsKIAkJCXN0YWNrLT5idHNfYmxrbm8gPSBC dWZmZXJHZXRCbG9ja051bWJlcihwYnVmKTsKQEAgLTIxODMsNyArMjE4OCw3IEBAIF9idF9p bnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwKIAkJICogbmV3IGRvd25saW5rIHdpbGwgYmUg aW5zZXJ0ZWQgYXQgdGhlIGNvcnJlY3Qgb2Zmc2V0LiBFdmVuIGJ1ZidzCiAJCSAqIHBhcmVu dCBtYXkgaGF2ZSBjaGFuZ2VkLgogCQkgKi8KLQkJcGJ1ZiA9IF9idF9nZXRzdGFja2J1Zihy ZWwsIHN0YWNrLCBia251bSk7CisJCXBidWYgPSBfYnRfZ2V0c3RhY2tidWYocmVsLCBoZWFw cmVsLCBzdGFjaywgYmtudW0pOwogCiAJCS8qCiAJCSAqIFVubG9jayB0aGUgcmlnaHQgY2hp bGQuICBUaGUgbGVmdCBjaGlsZCB3aWxsIGJlIHVubG9ja2VkIGluCkBAIC0yMjA3LDcgKzIy MTIsNyBAQCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgYmtudW0sIHJia251bSkpKTsKIAogCQkvKiBS ZWN1cnNpdmVseSBpbnNlcnQgaW50byB0aGUgcGFyZW50ICovCi0JCV9idF9pbnNlcnRvbnBn KHJlbCwgTlVMTCwgcGJ1ZiwgYnVmLCBzdGFjay0+YnRzX3BhcmVudCwKKwkJX2J0X2luc2Vy dG9ucGcocmVsLCBoZWFwcmVsLCBOVUxMLCBwYnVmLCBidWYsIHN0YWNrLT5idHNfcGFyZW50 LAogCQkJCQkgICBuZXdfaXRlbSwgTUFYQUxJR04oSW5kZXhUdXBsZVNpemUobmV3X2l0ZW0p KSwKIAkJCQkJICAgc3RhY2stPmJ0c19vZmZzZXQgKyAxLCAwLCBpc29ubHkpOwogCkBAIC0y MjI3LDcgKzIyMzIsNyBAQCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsCiAgKiBh bmQgdW5waW5uZWQuCiAgKi8KIHZvaWQKLV9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVs LCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaykKK19idF9maW5pc2hfc3BsaXQoUmVsYXRp b24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaykK IHsKIAlQYWdlCQlscGFnZSA9IEJ1ZmZlckdldFBhZ2UobGJ1Zik7CiAJQlRQYWdlT3BhcXVl IGxwYWdlb3AgPSBCVFBhZ2VHZXRPcGFxdWUobHBhZ2UpOwpAQCAtMjI0MCw3ICsyMjQ1LDcg QEAgX2J0X2ZpbmlzaF9zcGxpdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNr IHN0YWNrKQogCUFzc2VydChQX0lOQ09NUExFVEVfU1BMSVQobHBhZ2VvcCkpOwogCiAJLyog TG9jayByaWdodCBzaWJsaW5nLCB0aGUgb25lIG1pc3NpbmcgdGhlIGRvd25saW5rICovCi0J cmJ1ZiA9IF9idF9nZXRidWYocmVsLCBscGFnZW9wLT5idHBvX25leHQsIEJUX1dSSVRFKTsK KwlyYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIGxwYWdlb3AtPmJ0cG9fbmV4dCwg QlRfV1JJVEUpOwogCXJwYWdlID0gQnVmZmVyR2V0UGFnZShyYnVmKTsKIAlycGFnZW9wID0g QlRQYWdlR2V0T3BhcXVlKHJwYWdlKTsKIApAQCAtMjI1Miw3ICsyMjU3LDcgQEAgX2J0X2Zp bmlzaF9zcGxpdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNrKQog CQlCVE1ldGFQYWdlRGF0YSAqbWV0YWQ7CiAKIAkJLyogYWNxdWlyZSBsb2NrIG9uIHRoZSBt ZXRhcGFnZSAqLwotCQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdF LCBCVF9XUklURSk7CisJCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRS RUVfTUVUQVBBR0UsIEJUX1dSSVRFKTsKIAkJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRh YnVmKTsKIAkJbWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7CiAKQEAgLTIyNjksNyAr MjI3NCw3IEBAIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1Ziwg QlRTdGFjayBzdGFjaykKIAllbG9nKERFQlVHMSwgImZpbmlzaGluZyBpbmNvbXBsZXRlIHNw bGl0IG9mICV1LyV1IiwKIAkJIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGxidWYpLCBCdWZmZXJH ZXRCbG9ja051bWJlcihyYnVmKSk7CiAKLQlfYnRfaW5zZXJ0X3BhcmVudChyZWwsIGxidWYs IHJidWYsIHN0YWNrLCB3YXNyb290LCB3YXNvbmx5KTsKKwlfYnRfaW5zZXJ0X3BhcmVudChy ZWwsIGhlYXByZWwsIGxidWYsIHJidWYsIHN0YWNrLCB3YXNyb290LCB3YXNvbmx5KTsKIH0K IAogLyoKQEAgLTIzMDQsNyArMjMwOSw3IEBAIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24g cmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaykKICAqCQlvZmZzZXQgbnVtYmVyIGJ0 c19vZmZzZXQgKyAxLgogICovCiBCdWZmZXIKLV9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiBy ZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2NrTnVtYmVyIGNoaWxkKQorX2J0X2dldHN0YWNrYnVm KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRTdGFjayBzdGFjaywgQmxvY2tO dW1iZXIgY2hpbGQpCiB7CiAJQmxvY2tOdW1iZXIgYmxrbm87CiAJT2Zmc2V0TnVtYmVyIHN0 YXJ0OwpAQCAtMjMxOCwxMyArMjMyMywxMyBAQCBfYnRfZ2V0c3RhY2tidWYoUmVsYXRpb24g cmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9ja051bWJlciBjaGlsZCkKIAkJUGFnZQkJcGFnZTsK IAkJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKIAotCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxr bm8sIEJUX1dSSVRFKTsKKwkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIGJsa25v LCBCVF9XUklURSk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJCW9wYXF1ZSA9 IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIAogCQlpZiAoUF9JTkNPTVBMRVRFX1NQTElUKG9w YXF1ZSkpCiAJCXsKLQkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBidWYsIHN0YWNrLT5idHNf cGFyZW50KTsKKwkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBoZWFwcmVsLCBidWYsIHN0YWNr LT5idHNfcGFyZW50KTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTI0MjgsNyArMjQzMyw3 IEBAIF9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2Nr TnVtYmVyIGNoaWxkKQogICoJCWxidWYsIHJidWYgJiByb290YnVmLgogICovCiBzdGF0aWMg QnVmZmVyCi1fYnRfbmV3cm9vdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsYnVmLCBCdWZmZXIg cmJ1ZikKK19idF9uZXdyb290KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVm ZmVyIGxidWYsIEJ1ZmZlciByYnVmKQogewogCUJ1ZmZlcgkJcm9vdGJ1ZjsKIAlQYWdlCQls cGFnZSwKQEAgLTI0NTQsMTIgKzI0NTksMTIgQEAgX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVs LCBCdWZmZXIgbGJ1ZiwgQnVmZmVyIHJidWYpCiAJbG9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1 ZShscGFnZSk7CiAKIAkvKiBnZXQgYSBuZXcgcm9vdCBwYWdlICovCi0Jcm9vdGJ1ZiA9IF9i dF9nZXRidWYocmVsLCBQX05FVywgQlRfV1JJVEUpOworCXJvb3RidWYgPSBfYnRfZ2V0YnVm KHJlbCwgaGVhcHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKIAlyb290cGFnZSA9IEJ1ZmZlckdl dFBhZ2Uocm9vdGJ1Zik7CiAJcm9vdGJsa251bSA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHJv b3RidWYpOwogCiAJLyogYWNxdWlyZSBsb2NrIG9uIHRoZSBtZXRhcGFnZSAqLwotCW1ldGFi dWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1dSSVRFKTsKKwltZXRh YnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklU RSk7CiAJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAltZXRhZCA9IEJUUGFn ZUdldE1ldGEobWV0YXBnKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYwpp bmRleCAzZmVlZTI4ZDE5Li4xNTFhZDM3YTU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHBhZ2UuYwpAQCAtMzgsMjUgKzM4LDI0IEBACiAjaW5jbHVkZSAidXRpbHMvc25hcG1n ci5oIgogCiBzdGF0aWMgQlRNZXRhUGFnZURhdGEgKl9idF9nZXRtZXRhKFJlbGF0aW9uIHJl bCwgQnVmZmVyIG1ldGFidWYpOwotc3RhdGljIHZvaWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCitzdGF0aWMgdm9pZCBfYnRfbG9nX3Jl dXNlX3BhZ2UoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCbG9ja051bWJlciBi bGtubywKIAkJCQkJCQkgICBGdWxsVHJhbnNhY3Rpb25JZCBzYWZleGlkKTsKLXN0YXRpYyB2 b2lkIF9idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAorc3Rh dGljIHZvaWQgX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhl YXByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25m bGljdEhvcml6b24sCiAJCQkJCQkJCU9mZnNldE51bWJlciAqZGVsZXRhYmxlLCBpbnQgbmRl bGV0YWJsZSwKIAkJCQkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBk YXRhYmxlKTsKIHN0YXRpYyBjaGFyICpfYnRfZGVsaXRlbXNfdXBkYXRlKEJUVmFjdXVtUG9z dGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJsZSwKIAkJCQkJCQkJIE9mZnNldE51bWJl ciAqdXBkYXRlZG9mZnNldHMsCiAJCQkJCQkJCSBTaXplICp1cGRhdGVkYnVmbGVuLCBib29s IG5lZWRzd2FsKTsKLXN0YXRpYyBib29sIF9idF9tYXJrX3BhZ2VfaGFsZmRlYWQoUmVsYXRp b24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwKLQkJCQkJCQkJICAgQlRTdGFjayBzdGFjayk7Citz dGF0aWMgYm9vbCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwKKwkJCQkJCQkJICAgQnVmZmVyIGxlYWZidWYsIEJUU3RhY2sgc3RhY2sp Owogc3RhdGljIGJvb2wgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGxlYWZidWYsCiAJCQkJCQkJCQkgQmxvY2tOdW1iZXIgc2NhbmJsa25vLAogCQkJ CQkJCQkJIGJvb2wgKnJpZ2h0c2liX2VtcHR5LAogCQkJCQkJCQkJIEJUVmFjU3RhdGUgKnZz dGF0ZSk7Ci1zdGF0aWMgYm9vbCBfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGNoaWxkLAotCQkJCQkJCQkJQlRTdGFjayBzdGFjaywKLQkJCQkJ CQkJCUJ1ZmZlciAqc3VidHJlZXBhcmVudCwKLQkJCQkJCQkJCU9mZnNldE51bWJlciAqcG9m ZnNldCwKK3N0YXRpYyBib29sIF9idF9sb2NrX3N1YnRyZWVfcGFyZW50KFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gaGVhcHJlbCwKKwkJCQkJCQkJCUJsb2NrTnVtYmVyIGNoaWxkLCBCVFN0 YWNrIHN0YWNrLAorCQkJCQkJCQkJQnVmZmVyICpzdWJ0cmVlcGFyZW50LCBPZmZzZXROdW1i ZXIgKnBvZmZzZXQsCiAJCQkJCQkJCQlCbG9ja051bWJlciAqdG9wcGFyZW50LAogCQkJCQkJ CQkJQmxvY2tOdW1iZXIgKnRvcHBhcmVudHJpZ2h0c2liKTsKIHN0YXRpYyB2b2lkIF9idF9w ZW5kaW5nZnNtX2FkZChCVFZhY1N0YXRlICp2c3RhdGUsIEJsb2NrTnVtYmVyIHRhcmdldCwK QEAgLTE3OCw3ICsxNzcsNyBAQCBfYnRfZ2V0bWV0YShSZWxhdGlvbiByZWwsIEJ1ZmZlciBt ZXRhYnVmKQogICogaW5kZXggdHVwbGVzIG5lZWRlZCB0byBiZSBkZWxldGVkLgogICovCiBi b29sCi1fYnRfdmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKQorX2J0X3ZhY3V1 bV9uZWVkc19jbGVhbnVwKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlC dWZmZXIJCW1ldGFidWY7CiAJUGFnZQkJbWV0YXBnOwpAQCAtMTkxLDcgKzE5MCw3IEBAIF9i dF92YWN1dW1fbmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwpCiAJICoKIAkgKiBOb3RlIHRo YXQgd2UgZGVsaWJlcmF0ZWx5IGF2b2lkIHVzaW5nIGNhY2hlZCB2ZXJzaW9uIG9mIG1ldGFw YWdlIGhlcmUuCiAJICovCi0JbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRB UEFHRSwgQlRfUkVBRCk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBC VFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CiAJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRh YnVmKTsKIAltZXRhZCA9IEJUUGFnZUdldE1ldGEobWV0YXBnKTsKIAlidG1fdmVyc2lvbiA9 IG1ldGFkLT5idG1fdmVyc2lvbjsKQEAgLTIzMSw3ICsyMzAsNyBAQCBfYnRfdmFjdXVtX25l ZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKQogICogZmluYWxpemVkLgogICovCiB2b2lkCi1f YnRfc2V0X2NsZWFudXBfaW5mbyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxw YWdlcykKK19idF9zZXRfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVh cHJlbCwgQmxvY2tOdW1iZXIgbnVtX2RlbHBhZ2VzKQogewogCUJ1ZmZlcgkJbWV0YWJ1ZjsK IAlQYWdlCQltZXRhcGc7CkBAIC0yNTUsNyArMjU0LDcgQEAgX2J0X3NldF9jbGVhbnVwX2lu Zm8oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBudW1fZGVscGFnZXMpCiAJICogbm8gbG9u Z2VyIHVzZWQgYXMgb2YgUG9zdGdyZVNRTCAxNC4gIFdlIHNldCBpdCB0byAtMS4wIG9uIHJl d3JpdGUsIGp1c3QKIAkgKiB0byBiZSBjb25zaXN0ZW50LgogCSAqLwotCW1ldGFidWYgPSBf YnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOworCW1ldGFidWYgPSBf YnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOwogCW1l dGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJbWV0YWQgPSBCVFBhZ2VHZXRNZXRh KG1ldGFwZyk7CiAKQEAgLTM0MCw3ICszMzksNyBAQCBfYnRfc2V0X2NsZWFudXBfaW5mbyhS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcykKICAqCQlUaGUgbWV0YWRh dGEgcGFnZSBpcyBub3QgbG9ja2VkIG9yIHBpbm5lZCBvbiBleGl0LgogICovCiBCdWZmZXIK LV9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKK19idF9nZXRyb290KFJl bGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgaW50IGFjY2VzcykKIHsKIAlCdWZmZXIJ CW1ldGFidWY7CiAJQnVmZmVyCQlyb290YnVmOwpAQCAtMzcwLDcgKzM2OSw3IEBAIF9idF9n ZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKIAkJQXNzZXJ0KHJvb3RibGtubyAh PSBQX05PTkUpOwogCQlyb290bGV2ZWwgPSBtZXRhZC0+YnRtX2Zhc3RsZXZlbDsKIAotCQly b290YnVmID0gX2J0X2dldGJ1ZihyZWwsIHJvb3RibGtubywgQlRfUkVBRCk7CisJCXJvb3Ri dWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgcm9vdGJsa25vLCBCVF9SRUFEKTsKIAkJ cm9vdHBhZ2UgPSBCdWZmZXJHZXRQYWdlKHJvb3RidWYpOwogCQlyb290b3BhcXVlID0gQlRQ YWdlR2V0T3BhcXVlKHJvb3RwYWdlKTsKIApAQCAtMzk2LDcgKzM5NSw3IEBAIF9idF9nZXRy b290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKIAkJcmVsLT5yZF9hbWNhY2hlID0gTlVM TDsKIAl9CiAKLQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBC VF9SRUFEKTsKKwltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01F VEFQQUdFLCBCVF9SRUFEKTsKIAltZXRhZCA9IF9idF9nZXRtZXRhKHJlbCwgbWV0YWJ1Zik7 CiAKIAkvKiBpZiBubyByb290IHBhZ2UgaW5pdGlhbGl6ZWQgeWV0LCBkbyBpdCAqLwpAQCAt NDI5LDcgKzQyOCw3IEBAIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykK IAkJCSAqIHRvIG9wdGltaXplIHRoaXMgY2FzZS4pCiAJCQkgKi8KIAkJCV9idF9yZWxidWYo cmVsLCBtZXRhYnVmKTsKLQkJCXJldHVybiBfYnRfZ2V0cm9vdChyZWwsIGFjY2Vzcyk7CisJ CQlyZXR1cm4gX2J0X2dldHJvb3QocmVsLCBoZWFwcmVsLCBhY2Nlc3MpOwogCQl9CiAKIAkJ LyoKQEAgLTQzNyw3ICs0MzYsNyBAQCBfYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBh Y2Nlc3MpCiAJCSAqIHRoZSBuZXcgcm9vdCBwYWdlLiAgU2luY2UgdGhpcyBpcyB0aGUgZmly c3QgcGFnZSBpbiB0aGUgdHJlZSwgaXQncwogCQkgKiBhIGxlYWYgYXMgd2VsbCBhcyB0aGUg cm9vdC4KIAkJICovCi0JCXJvb3RidWYgPSBfYnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dS SVRFKTsKKwkJcm9vdGJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBQX05FVywgQlRf V1JJVEUpOwogCQlyb290Ymxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihyb290YnVmKTsK IAkJcm9vdHBhZ2UgPSBCdWZmZXJHZXRQYWdlKHJvb3RidWYpOwogCQlyb290b3BhcXVlID0g QlRQYWdlR2V0T3BhcXVlKHJvb3RwYWdlKTsKQEAgLTU3NCw3ICs1NzMsNyBAQCBfYnRfZ2V0 cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCiAgKiBtb3ZpbmcgdG8gdGhlIHJvb3Qg LS0tIHRoYXQnZCBkZWFkbG9jayBhZ2FpbnN0IGFueSBjb25jdXJyZW50IHJvb3Qgc3BsaXQu KQogICovCiBCdWZmZXIKLV9idF9nZXR0cnVlcm9vdChSZWxhdGlvbiByZWwpCitfYnRfZ2V0 dHJ1ZXJvb3QoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJ1ZmZlcgkJ bWV0YWJ1ZjsKIAlQYWdlCQltZXRhcGc7CkBAIC01OTYsNyArNTk1LDcgQEAgX2J0X2dldHRy dWVyb290KFJlbGF0aW9uIHJlbCkKIAkJcGZyZWUocmVsLT5yZF9hbWNhY2hlKTsKIAlyZWwt PnJkX2FtY2FjaGUgPSBOVUxMOwogCi0JbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJF RV9NRVRBUEFHRSwgQlRfUkVBRCk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFw cmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CiAJbWV0YXBnID0gQnVmZmVyR2V0UGFn ZShtZXRhYnVmKTsKIAltZXRhb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKG1ldGFwZyk7CiAJ bWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7CkBAIC02NjksNyArNjY4LDcgQEAgX2J0 X2dldHRydWVyb290KFJlbGF0aW9uIHJlbCkKICAqCQlhYm91dCB1cGRhdGluZyBwcmV2aW91 c2x5IGNhY2hlZCBkYXRhLgogICovCiBpbnQKLV9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9u IHJlbCkKK19idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJl bCkKIHsKIAlCVE1ldGFQYWdlRGF0YSAqbWV0YWQ7CiAKQEAgLTY3Nyw3ICs2NzYsNyBAQCBf YnRfZ2V0cm9vdGhlaWdodChSZWxhdGlvbiByZWwpCiAJewogCQlCdWZmZXIJCW1ldGFidWY7 CiAKLQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVB RCk7CisJCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRSRUVfTUVUQVBB R0UsIEJUX1JFQUQpOwogCQltZXRhZCA9IF9idF9nZXRtZXRhKHJlbCwgbWV0YWJ1Zik7CiAK IAkJLyoKQEAgLTczMyw3ICs3MzIsNyBAQCBfYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlvbiBy ZWwpCiAgKgkJcGdfdXBncmFkZSdkIGZyb20gUG9zdGdyZXMgMTIuCiAgKi8KIHZvaWQKLV9i dF9tZXRhdmVyc2lvbihSZWxhdGlvbiByZWwsIGJvb2wgKmhlYXBrZXlzcGFjZSwgYm9vbCAq YWxsZXF1YWxpbWFnZSkKK19idF9tZXRhdmVyc2lvbihSZWxhdGlvbiByZWwsIFJlbGF0aW9u IGhlYXByZWwsIGJvb2wgKmhlYXBrZXlzcGFjZSwgYm9vbCAqYWxsZXF1YWxpbWFnZSkKIHsK IAlCVE1ldGFQYWdlRGF0YSAqbWV0YWQ7CiAKQEAgLTc0MSw3ICs3NDAsNyBAQCBfYnRfbWV0 YXZlcnNpb24oUmVsYXRpb24gcmVsLCBib29sICpoZWFwa2V5c3BhY2UsIGJvb2wgKmFsbGVx dWFsaW1hZ2UpCiAJewogCQlCdWZmZXIJCW1ldGFidWY7CiAKLQkJbWV0YWJ1ZiA9IF9idF9n ZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CisJCW1ldGFidWYgPSBfYnRf Z2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOwogCQltZXRh ZCA9IF9idF9nZXRtZXRhKHJlbCwgbWV0YWJ1Zik7CiAKIAkJLyoKQEAgLTgyNSw3ICs4MjQs OCBAQCBfYnRfY2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZikKICAqIExvZyB0 aGUgcmV1c2Ugb2YgYSBwYWdlIGZyb20gdGhlIEZTTS4KICAqLwogc3RhdGljIHZvaWQKLV9i dF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxs VHJhbnNhY3Rpb25JZCBzYWZleGlkKQorX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCisJCQkJICAgRnVsbFRy YW5zYWN0aW9uSWQgc2FmZXhpZCkKIHsKIAl4bF9idHJlZV9yZXVzZV9wYWdlIHhscmVjX3Jl dXNlOwogCkBAIC04MzYsNiArODM2LDcgQEAgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQpCiAJ ICovCiAKIAkvKiBYTE9HIHN0dWZmICovCisJeGxyZWNfcmV1c2UuaXNDYXRhbG9nUmVsID0g UmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwcmVsKTsKIAl4bHJl Y19yZXVzZS5sb2NhdG9yID0gcmVsLT5yZF9sb2NhdG9yOwogCXhscmVjX3JldXNlLmJsb2Nr ID0gYmxrbm87CiAJeGxyZWNfcmV1c2Uuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzYWZl eGlkOwpAQCAtODY4LDcgKzg2OSw3IEBAIF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBzYWZleGlkKQogICoJ CWFzIF9idF9sb2NrYnVmKCkuCiAgKi8KIEJ1ZmZlcgotX2J0X2dldGJ1ZihSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBpbnQgYWNjZXNzKQorX2J0X2dldGJ1ZihSZWxhdGlv biByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBpbnQgYWNjZXNz KQogewogCUJ1ZmZlcgkJYnVmOwogCkBAIC05NDMsNyArOTQ0LDcgQEAgX2J0X2dldGJ1ZihS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBpbnQgYWNjZXNzKQogCQkJCQkgKiB0 aGFuIHNhZmV4aWQgdmFsdWUKIAkJCQkJICovCiAJCQkJCWlmIChYTG9nU3RhbmRieUluZm9B Y3RpdmUoKSAmJiBSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCi0JCQkJCQlfYnRfbG9nX3JldXNl X3BhZ2UocmVsLCBibGtubywKKwkJCQkJCV9idF9sb2dfcmV1c2VfcGFnZShyZWwsIGhlYXBy ZWwsIGJsa25vLAogCQkJCQkJCQkJCSAgIEJUUGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CiAK IAkJCQkJLyogT2theSB0byB1c2UgcGFnZS4gIFJlLWluaXRpYWxpemUgYW5kIHJldHVybiBp dC4gKi8KQEAgLTEyOTMsNyArMTI5NCw3IEBAIF9idF9kZWxpdGVtc192YWN1dW0oUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmLAogICogY2xlYXIgcGFnZSdzIFZBQ1VVTSBjeWNsZSBJRC4K ICAqLwogc3RhdGljIHZvaWQKLV9idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBC dWZmZXIgYnVmLAorX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIFJlbGF0aW9u IGhlYXByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25m bGljdEhvcml6b24sCiAJCQkJCU9mZnNldE51bWJlciAqZGVsZXRhYmxlLCBpbnQgbmRlbGV0 YWJsZSwKIAkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxl KQpAQCAtMTM1OCw2ICsxMzU5LDcgQEAgX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsCiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCQl4bF9idHJlZV9kZWxl dGUgeGxyZWNfZGVsZXRlOwogCisJCXhscmVjX2RlbGV0ZS5pc0NhdGFsb2dSZWwgPSBSZWxh dGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXByZWwpOwogCQl4bHJlY19k ZWxldGUuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hvdENvbmZsaWN0SG9yaXpv bjsKIAkJeGxyZWNfZGVsZXRlLm5kZWxldGVkID0gbmRlbGV0YWJsZTsKIAkJeGxyZWNfZGVs ZXRlLm51cGRhdGVkID0gbnVwZGF0YWJsZTsKQEAgLTE2ODQsOCArMTY4Niw4IEBAIF9idF9k ZWxpdGVtc19kZWxldGVfY2hlY2soUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBSZWxhdGlv biBoZWFwUmVsLAogCX0KIAogCS8qIFBoeXNpY2FsbHkgZGVsZXRlIHR1cGxlcyAob3IgVElE cykgdXNpbmcgZGVsZXRhYmxlIChvciB1cGRhdGFibGUpICovCi0JX2J0X2RlbGl0ZW1zX2Rl bGV0ZShyZWwsIGJ1Ziwgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQlkZWxldGFi bGUsIG5kZWxldGFibGUsIHVwZGF0YWJsZSwgbnVwZGF0YWJsZSk7CisJX2J0X2RlbGl0ZW1z X2RlbGV0ZShyZWwsIGhlYXBSZWwsIGJ1Ziwgc25hcHNob3RDb25mbGljdEhvcml6b24sIGRl bGV0YWJsZSwKKwkJCQkJCW5kZWxldGFibGUsIHVwZGF0YWJsZSwgbnVwZGF0YWJsZSk7CiAK IAkvKiBiZSB0aWR5ICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBudXBkYXRhYmxlOyBpKysp CkBAIC0xNzA2LDcgKzE3MDgsOCBAQCBfYnRfZGVsaXRlbXNfZGVsZXRlX2NoZWNrKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgUmVsYXRpb24gaGVhcFJlbCwKICAqIHNhbWUgbGV2ZWwg bXVzdCBhbHdheXMgYmUgbG9ja2VkIGxlZnQgdG8gcmlnaHQgdG8gYXZvaWQgZGVhZGxvY2tz LgogICovCiBzdGF0aWMgYm9vbAotX2J0X2xlZnRzaWJfc3BsaXRmbGFnKFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgbGVmdHNpYiwgQmxvY2tOdW1iZXIgdGFyZ2V0KQorX2J0X2xlZnRz aWJfc3BsaXRmbGFnKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1i ZXIgbGVmdHNpYiwKKwkJCQkJICBCbG9ja051bWJlciB0YXJnZXQpCiB7CiAJQnVmZmVyCQli dWY7CiAJUGFnZQkJcGFnZTsKQEAgLTE3MTcsNyArMTcyMCw3IEBAIF9idF9sZWZ0c2liX3Nw bGl0ZmxhZyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGxlZnRzaWIsIEJsb2NrTnVtYmVy IHRhcmdldCkKIAlpZiAobGVmdHNpYiA9PSBQX05PTkUpCiAJCXJldHVybiBmYWxzZTsKIAot CWJ1ZiA9IF9idF9nZXRidWYocmVsLCBsZWZ0c2liLCBCVF9SRUFEKTsKKwlidWYgPSBfYnRf Z2V0YnVmKHJlbCwgaGVhcHJlbCwgbGVmdHNpYiwgQlRfUkVBRCk7CiAJcGFnZSA9IEJ1ZmZl ckdldFBhZ2UoYnVmKTsKIAlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAKQEAg LTE3NjMsNyArMTc2Niw3IEBAIF9idF9sZWZ0c2liX3NwbGl0ZmxhZyhSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGxlZnRzaWIsIEJsb2NrTnVtYmVyIHRhcmdldCkKICAqIHRvLWJlLWRl bGV0ZWQgc3VidHJlZS4pCiAgKi8KIHN0YXRpYyBib29sCi1fYnRfcmlnaHRzaWJfaGFsZmRl YWRmbGFnKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbGVhZnJpZ2h0c2liKQorX2J0X3Jp Z2h0c2liX2hhbGZkZWFkZmxhZyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJs b2NrTnVtYmVyIGxlYWZyaWdodHNpYikKIHsKIAlCdWZmZXIJCWJ1ZjsKIAlQYWdlCQlwYWdl OwpAQCAtMTc3Miw3ICsxNzc1LDcgQEAgX2J0X3JpZ2h0c2liX2hhbGZkZWFkZmxhZyhSZWxh dGlvbiByZWwsIEJsb2NrTnVtYmVyIGxlYWZyaWdodHNpYikKIAogCUFzc2VydChsZWFmcmln aHRzaWIgIT0gUF9OT05FKTsKIAotCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBsZWFmcmlnaHRz aWIsIEJUX1JFQUQpOworCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBsZWFmcmln aHRzaWIsIEJUX1JFQUQpOwogCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJb3BhcXVl ID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwogCkBAIC0xOTYxLDE3ICsxOTY0LDE4IEBAIF9i dF9wYWdlZGVsKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUVmFjU3RhdGUgKnZz dGF0ZSkKIAkJCQkgKiBtYXJrZWQgd2l0aCBJTkNPTVBMRVRFX1NQTElUIGZsYWcgYmVmb3Jl IHByb2NlZWRpbmcKIAkJCQkgKi8KIAkJCQlBc3NlcnQobGVhZmJsa25vID09IHNjYW5ibGtu byk7Ci0JCQkJaWYgKF9idF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIGxlZnRzaWIsIGxlYWZi bGtubykpCisJCQkJaWYgKF9idF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIHZzdGF0ZS0+aW5m by0+aGVhcHJlbCwgbGVmdHNpYiwgbGVhZmJsa25vKSkKIAkJCQl7CiAJCQkJCVJlbGVhc2VC dWZmZXIobGVhZmJ1Zik7CiAJCQkJCXJldHVybjsKIAkJCQl9CiAKIAkJCQkvKiB3ZSBuZWVk IGFuIGluc2VydGlvbiBzY2FuIGtleSBmb3IgdGhlIHNlYXJjaCwgc28gYnVpbGQgb25lICov Ci0JCQkJaXR1cF9rZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwgdGFyZ2V0a2V5KTsKKwkJCQlp dHVwX2tleSA9IF9idF9ta3NjYW5rZXkocmVsLCB2c3RhdGUtPmluZm8tPmhlYXByZWwsIHRh cmdldGtleSk7CiAJCQkJLyogZmluZCB0aGUgbGVmdG1vc3QgbGVhZiBwYWdlIHdpdGggbWF0 Y2hpbmcgcGl2b3QvaGlnaCBrZXkgKi8KIAkJCQlpdHVwX2tleS0+cGl2b3RzZWFyY2ggPSB0 cnVlOwotCQkJCXN0YWNrID0gX2J0X3NlYXJjaChyZWwsIGl0dXBfa2V5LCAmc2xlYWZidWYs IEJUX1JFQUQsIE5VTEwpOworCQkJCXN0YWNrID0gX2J0X3NlYXJjaChyZWwsIHZzdGF0ZS0+ aW5mby0+aGVhcHJlbCwgaXR1cF9rZXksCisJCQkJCQkJCSAgICZzbGVhZmJ1ZiwgQlRfUkVB RCwgTlVMTCk7CiAJCQkJLyogd29uJ3QgbmVlZCBhIHNlY29uZCBsb2NrIG9yIHBpbiBvbiBs ZWFmYnVmICovCiAJCQkJX2J0X3JlbGJ1ZihyZWwsIHNsZWFmYnVmKTsKIApAQCAtMjAwMiw3 ICsyMDA2LDcgQEAgX2J0X3BhZ2VkZWwoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1Ziwg QlRWYWNTdGF0ZSAqdnN0YXRlKQogCQkJICogbGVhZmJ1ZiBwYWdlIGhhbGYtZGVhZC4KIAkJ CSAqLwogCQkJQXNzZXJ0KFBfSVNMRUFGKG9wYXF1ZSkgJiYgIVBfSUdOT1JFKG9wYXF1ZSkp OwotCQkJaWYgKCFfYnRfbWFya19wYWdlX2hhbGZkZWFkKHJlbCwgbGVhZmJ1Ziwgc3RhY2sp KQorCQkJaWYgKCFfYnRfbWFya19wYWdlX2hhbGZkZWFkKHJlbCwgdnN0YXRlLT5pbmZvLT5o ZWFwcmVsLCBsZWFmYnVmLCBzdGFjaykpCiAJCQl7CiAJCQkJX2J0X3JlbGJ1ZihyZWwsIGxl YWZidWYpOwogCQkJCXJldHVybjsKQEAgLTIwNjUsNyArMjA2OSw3IEBAIF9idF9wYWdlZGVs KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUVmFjU3RhdGUgKnZzdGF0ZSkKIAkJ aWYgKCFyaWdodHNpYl9lbXB0eSkKIAkJCWJyZWFrOwogCi0JCWxlYWZidWYgPSBfYnRfZ2V0 YnVmKHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFKTsKKwkJbGVhZmJ1ZiA9IF9idF9nZXRidWYo cmVsLCB2c3RhdGUtPmluZm8tPmhlYXByZWwsIHJpZ2h0c2liLCBCVF9XUklURSk7CiAJfQog fQogCkBAIC0yMDg0LDcgKzIwODgsOCBAQCBfYnRfcGFnZWRlbChSZWxhdGlvbiByZWwsIEJ1 ZmZlciBsZWFmYnVmLCBCVFZhY1N0YXRlICp2c3RhdGUpCiAgKiBzdWNjZXNzZnVsbHkuCiAg Ki8KIHN0YXRpYyBib29sCi1fYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGxlYWZidWYsIEJUU3RhY2sgc3RhY2spCitfYnRfbWFya19wYWdlX2hhbGZkZWFk KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVmZmVyIGxlYWZidWYsCisJCQkJ CSAgIEJUU3RhY2sgc3RhY2spCiB7CiAJQmxvY2tOdW1iZXIgbGVhZmJsa25vOwogCUJsb2Nr TnVtYmVyIGxlYWZyaWdodHNpYjsKQEAgLTIxMTksNyArMjEyNCw3IEBAIF9idF9tYXJrX3Bh Z2VfaGFsZmRlYWQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQlRTdGFjayBzdGFj aykKIAkgKiBkZWxldGUgdGhlIGRvd25saW5rLiAgSXQgd291bGQgZmFpbCB0aGUgInJpZ2h0 IHNpYmxpbmcgb2YgdGFyZ2V0IHBhZ2UKIAkgKiBpcyBhbHNvIHRoZSBuZXh0IGNoaWxkIGlu IHBhcmVudCBwYWdlIiBjcm9zcy1jaGVjayBiZWxvdy4KIAkgKi8KLQlpZiAoX2J0X3JpZ2h0 c2liX2hhbGZkZWFkZmxhZyhyZWwsIGxlYWZyaWdodHNpYikpCisJaWYgKF9idF9yaWdodHNp Yl9oYWxmZGVhZGZsYWcocmVsLCBoZWFwcmVsLCBsZWFmcmlnaHRzaWIpKQogCXsKIAkJZWxv ZyhERUJVRzEsICJjb3VsZCBub3QgZGVsZXRlIHBhZ2UgJXUgYmVjYXVzZSBpdHMgcmlnaHQg c2libGluZyAldSBpcyBoYWxmLWRlYWQiLAogCQkJIGxlYWZibGtubywgbGVhZnJpZ2h0c2li KTsKQEAgLTIxNDMsNyArMjE0OCw3IEBAIF9idF9tYXJrX3BhZ2VfaGFsZmRlYWQoUmVsYXRp b24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQlRTdGFjayBzdGFjaykKIAkgKi8KIAl0b3BwYXJl bnQgPSBsZWFmYmxrbm87CiAJdG9wcGFyZW50cmlnaHRzaWIgPSBsZWFmcmlnaHRzaWI7Ci0J aWYgKCFfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChyZWwsIGxlYWZibGtubywgc3RhY2ssCisJ aWYgKCFfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChyZWwsIGhlYXByZWwsIGxlYWZibGtubywg c3RhY2ssCiAJCQkJCQkJCSAmc3VidHJlZXBhcmVudCwgJnBvZmZzZXQsCiAJCQkJCQkJCSAm dG9wcGFyZW50LCAmdG9wcGFyZW50cmlnaHRzaWIpKQogCQlyZXR1cm4gZmFsc2U7CkBAIC0y MzYzLDcgKzIzNjgsNyBAQCBfYnRfdW5saW5rX2hhbGZkZWFkX3BhZ2UoUmVsYXRpb24gcmVs LCBCdWZmZXIgbGVhZmJ1ZiwgQmxvY2tOdW1iZXIgc2NhbmJsa25vLAogCQlBc3NlcnQodGFy Z2V0ICE9IGxlYWZibGtubyk7CiAKIAkJLyogRmV0Y2ggdGhlIGJsb2NrIG51bWJlciBvZiB0 aGUgdGFyZ2V0J3MgbGVmdCBzaWJsaW5nICovCi0JCWJ1ZiA9IF9idF9nZXRidWYocmVsLCB0 YXJnZXQsIEJUX1JFQUQpOworCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgdnN0YXRlLT5pbmZv LT5oZWFwcmVsLCB0YXJnZXQsIEJUX1JFQUQpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShi dWYpOwogCQlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAJCWxlZnRzaWIgPSBv cGFxdWUtPmJ0cG9fcHJldjsKQEAgLTIzOTAsNyArMjM5NSw3IEBAIF9idF91bmxpbmtfaGFs ZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCbG9ja051bWJlciBz Y2FuYmxrbm8sCiAJCV9idF9sb2NrYnVmKHJlbCwgbGVhZmJ1ZiwgQlRfV1JJVEUpOwogCWlm IChsZWZ0c2liICE9IFBfTk9ORSkKIAl7Ci0JCWxidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVm dHNpYiwgQlRfV1JJVEUpOworCQlsYnVmID0gX2J0X2dldGJ1ZihyZWwsIHZzdGF0ZS0+aW5m by0+aGVhcHJlbCwgbGVmdHNpYiwgQlRfV1JJVEUpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFn ZShsYnVmKTsKIAkJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwogCQl3aGlsZSAo UF9JU0RFTEVURUQob3BhcXVlKSB8fCBvcGFxdWUtPmJ0cG9fbmV4dCAhPSB0YXJnZXQpCkBA IC0yNDQwLDcgKzI0NDUsNyBAQCBfYnRfdW5saW5rX2hhbGZkZWFkX3BhZ2UoUmVsYXRpb24g cmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQmxvY2tOdW1iZXIgc2NhbmJsa25vLAogCQkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKIAogCQkJLyogc3RlcCByaWdodCBvbmUgcGFnZSAqLwotCQkJ bGJ1ZiA9IF9idF9nZXRidWYocmVsLCBsZWZ0c2liLCBCVF9XUklURSk7CisJCQlsYnVmID0g X2J0X2dldGJ1ZihyZWwsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCwgbGVmdHNpYiwgQlRfV1JJ VEUpOwogCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UobGJ1Zik7CiAJCQlvcGFxdWUgPSBCVFBh Z2VHZXRPcGFxdWUocGFnZSk7CiAJCX0KQEAgLTI1MDQsNyArMjUwOSw3IEBAIF9idF91bmxp bmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCbG9ja051 bWJlciBzY2FuYmxrbm8sCiAJICogQW5kIG5leHQgd3JpdGUtbG9jayB0aGUgKGN1cnJlbnQp IHJpZ2h0IHNpYmxpbmcuCiAJICovCiAJcmlnaHRzaWIgPSBvcGFxdWUtPmJ0cG9fbmV4dDsK LQlyYnVmID0gX2J0X2dldGJ1ZihyZWwsIHJpZ2h0c2liLCBCVF9XUklURSk7CisJcmJ1ZiA9 IF9idF9nZXRidWYocmVsLCB2c3RhdGUtPmluZm8tPmhlYXByZWwsIHJpZ2h0c2liLCBCVF9X UklURSk7CiAJcGFnZSA9IEJ1ZmZlckdldFBhZ2UocmJ1Zik7CiAJb3BhcXVlID0gQlRQYWdl R2V0T3BhcXVlKHBhZ2UpOwogCWlmIChvcGFxdWUtPmJ0cG9fcHJldiAhPSB0YXJnZXQpCkBA IC0yNTMzLDcgKzI1MzgsOCBAQCBfYnRfdW5saW5rX2hhbGZkZWFkX3BhZ2UoUmVsYXRpb24g cmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQmxvY2tOdW1iZXIgc2NhbmJsa25vLAogCQlpZiAoUF9S SUdIVE1PU1Qob3BhcXVlKSkKIAkJewogCQkJLyogcmlnaHRzaWIgd2lsbCBiZSB0aGUgb25s eSBvbmUgbGVmdCBvbiB0aGUgbGV2ZWwgKi8KLQkJCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJl bCwgQlRSRUVfTUVUQVBBR0UsIEJUX1dSSVRFKTsKKwkJCW1ldGFidWYgPSBfYnRfZ2V0YnVm KHJlbCwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsLCBCVFJFRV9NRVRBUEFHRSwKKwkJCQkJCQkJ IEJUX1dSSVRFKTsKIAkJCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJCQlt ZXRhZCA9IEJUUGFnZUdldE1ldGEobWV0YXBnKTsKIApAQCAtMjc3Myw5ICsyNzc5LDEwIEBA IF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAgKiBwYXJlbnQgYmxvY2sgaW4gdGhlIGxlYWZi dWYgcGFnZSB1c2luZyBCVHJlZVR1cGxlU2V0VG9wUGFyZW50KCkpLgogICovCiBzdGF0aWMg Ym9vbAotX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBjaGlsZCwgQlRTdGFjayBzdGFjaywKLQkJCQkJCUJ1ZmZlciAqc3VidHJlZXBhcmVudCwg T2Zmc2V0TnVtYmVyICpwb2Zmc2V0LAotCQkJCQkJQmxvY2tOdW1iZXIgKnRvcHBhcmVudCwg QmxvY2tOdW1iZXIgKnRvcHBhcmVudHJpZ2h0c2liKQorX2J0X2xvY2tfc3VidHJlZV9wYXJl bnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCbG9ja051bWJlciBjaGlsZCwK KwkJCQkJCUJUU3RhY2sgc3RhY2ssIEJ1ZmZlciAqc3VidHJlZXBhcmVudCwKKwkJCQkJCU9m ZnNldE51bWJlciAqcG9mZnNldCwgQmxvY2tOdW1iZXIgKnRvcHBhcmVudCwKKwkJCQkJCUJs b2NrTnVtYmVyICp0b3BwYXJlbnRyaWdodHNpYikKIHsKIAlCbG9ja051bWJlciBwYXJlbnQs CiAJCQkJbGVmdHNpYnBhcmVudDsKQEAgLTI3ODksNyArMjc5Niw3IEBAIF9idF9sb2NrX3N1 YnRyZWVfcGFyZW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgY2hpbGQsIEJUU3RhY2sg c3RhY2ssCiAJICogTG9jYXRlIHRoZSBwaXZvdCB0dXBsZSB3aG9zZSBkb3dubGluayBwb2lu dHMgdG8gImNoaWxkIi4gIFdyaXRlIGxvY2sKIAkgKiB0aGUgcGFyZW50IHBhZ2UgaXRzZWxm LgogCSAqLwotCXBidWYgPSBfYnRfZ2V0c3RhY2tidWYocmVsLCBzdGFjaywgY2hpbGQpOwor CXBidWYgPSBfYnRfZ2V0c3RhY2tidWYocmVsLCBoZWFwcmVsLCBzdGFjaywgY2hpbGQpOwog CWlmIChwYnVmID09IEludmFsaWRCdWZmZXIpCiAJewogCQkvKgpAQCAtMjg4OSwxMSArMjg5 NiwxMSBAQCBfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChSZWxhdGlvbiByZWwsIEJsb2NrTnVt YmVyIGNoaWxkLCBCVFN0YWNrIHN0YWNrLAogCSAqCiAJICogTm90ZTogV2UgZGVsaWJlcmF0 ZWx5IGF2b2lkIGNvbXBsZXRpbmcgaW5jb21wbGV0ZSBzcGxpdHMgaGVyZS4KIAkgKi8KLQlp ZiAoX2J0X2xlZnRzaWJfc3BsaXRmbGFnKHJlbCwgbGVmdHNpYnBhcmVudCwgcGFyZW50KSkK KwlpZiAoX2J0X2xlZnRzaWJfc3BsaXRmbGFnKHJlbCwgaGVhcHJlbCwgbGVmdHNpYnBhcmVu dCwgcGFyZW50KSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyogUmVjdXJzZSB0byBleGFtaW5l IGNoaWxkIHBhZ2UncyBncmFuZHBhcmVudCBwYWdlICovCi0JcmV0dXJuIF9idF9sb2NrX3N1 YnRyZWVfcGFyZW50KHJlbCwgcGFyZW50LCBzdGFjay0+YnRzX3BhcmVudCwKKwlyZXR1cm4g X2J0X2xvY2tfc3VidHJlZV9wYXJlbnQocmVsLCBoZWFwcmVsLCBwYXJlbnQsIHN0YWNrLT5i dHNfcGFyZW50LAogCQkJCQkJCQkgICBzdWJ0cmVlcGFyZW50LCBwb2Zmc2V0LAogCQkJCQkJ CQkgICB0b3BwYXJlbnQsIHRvcHBhcmVudHJpZ2h0c2liKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHJlZS5jCmluZGV4IGE2OGRkMDc1MzQuLjk3YTM5YjBmNjUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYwpAQCAtODM1LDcgKzgzNSw3IEBAIGJ0dmFjdXVt Y2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq c3RhdHMpCiAJaWYgKHN0YXRzID09IE5VTEwpCiAJewogCQkvKiBDaGVjayBpZiBWQUNVVU0g b3BlcmF0aW9uIGNhbiBlbnRpcmVseSBhdm9pZCBidHZhY3V1bXNjYW4oKSBjYWxsICovCi0J CWlmICghX2J0X3ZhY3V1bV9uZWVkc19jbGVhbnVwKGluZm8tPmluZGV4KSkKKwkJaWYgKCFf YnRfdmFjdXVtX25lZWRzX2NsZWFudXAoaW5mby0+aW5kZXgsIGluZm8tPmhlYXByZWwpKQog CQkJcmV0dXJuIE5VTEw7CiAKIAkJLyoKQEAgLTg3MSw3ICs4NzEsNyBAQCBidHZhY3V1bWNs ZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0 YXRzKQogCSAqLwogCUFzc2VydChzdGF0cy0+cGFnZXNfZGVsZXRlZCA+PSBzdGF0cy0+cGFn ZXNfZnJlZSk7CiAJbnVtX2RlbHBhZ2VzID0gc3RhdHMtPnBhZ2VzX2RlbGV0ZWQgLSBzdGF0 cy0+cGFnZXNfZnJlZTsKLQlfYnRfc2V0X2NsZWFudXBfaW5mbyhpbmZvLT5pbmRleCwgbnVt X2RlbHBhZ2VzKTsKKwlfYnRfc2V0X2NsZWFudXBfaW5mbyhpbmZvLT5pbmRleCwgaW5mby0+ aGVhcHJlbCwgbnVtX2RlbHBhZ2VzKTsKIAogCS8qCiAJICogSXQncyBxdWl0ZSBwb3NzaWJs ZSBmb3IgdXMgdG8gYmUgZm9vbGVkIGJ5IGNvbmN1cnJlbnQgcGFnZSBzcGxpdHMgaW50bwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMKaW5kZXggYzQzYzFhMjgzMC4u NWM3MjhlMzUzZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRz ZWFyY2guYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jCkBA IC00Miw3ICs0Miw4IEBAIHN0YXRpYyBib29sIF9idF9zdGVwcGFnZShJbmRleFNjYW5EZXNj IHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKTsKIHN0YXRpYyBib29sIF9idF9yZWFkbmV4dHBh Z2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJlciBibGtubywgU2NhbkRpcmVjdGlv biBkaXIpOwogc3RhdGljIGJvb2wgX2J0X3BhcmFsbGVsX3JlYWRwYWdlKEluZGV4U2NhbkRl c2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJCQkJCSAgU2NhbkRpcmVjdGlvbiBk aXIpOwotc3RhdGljIEJ1ZmZlciBfYnRfd2Fsa19sZWZ0KFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwgU25hcHNob3Qgc25hcHNob3QpOworc3RhdGljIEJ1ZmZlciBfYnRfd2Fsa19sZWZ0 KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQlT bmFwc2hvdCBzbmFwc2hvdCk7CiBzdGF0aWMgYm9vbCBfYnRfZW5kcG9pbnQoSW5kZXhTY2Fu RGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcik7CiBzdGF0aWMgaW5saW5lIHZvaWQgX2J0 X2luaXRpYWxpemVfbW9yZV9kYXRhKEJUU2Nhbk9wYXF1ZSBzbywgU2NhbkRpcmVjdGlvbiBk aXIpOwogCkBAIC05MywxNCArOTQsMTQgQEAgX2J0X2Ryb3BfbG9ja19hbmRfbWF5YmVfcGlu KEluZGV4U2NhbkRlc2Mgc2NhbiwgQlRTY2FuUG9zIHNwKQogICogZHVyaW5nIHRoZSBzZWFy Y2ggd2lsbCBiZSBmaW5pc2hlZC4KICAqLwogQlRTdGFjawotX2J0X3NlYXJjaChSZWxhdGlv biByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciAqYnVmUCwgaW50IGFjY2VzcywKLQkJ ICAgU25hcHNob3Qgc25hcHNob3QpCitfYnRfc2VhcmNoKFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpidWZQLAorCQkgICBpbnQg YWNjZXNzLCBTbmFwc2hvdCBzbmFwc2hvdCkKIHsKIAlCVFN0YWNrCQlzdGFja19pbiA9IE5V TEw7CiAJaW50CQkJcGFnZV9hY2Nlc3MgPSBCVF9SRUFEOwogCiAJLyogR2V0IHRoZSByb290 IHBhZ2UgdG8gc3RhcnQgd2l0aCAqLwotCSpidWZQID0gX2J0X2dldHJvb3QocmVsLCBhY2Nl c3MpOworCSpidWZQID0gX2J0X2dldHJvb3QocmVsLCBoZWFwcmVsLCBhY2Nlc3MpOwogCiAJ LyogSWYgaW5kZXggaXMgZW1wdHkgYW5kIGFjY2VzcyA9IEJUX1JFQUQsIG5vIHJvb3QgcGFn ZSBpcyBjcmVhdGVkLiAqLwogCWlmICghQnVmZmVySXNWYWxpZCgqYnVmUCkpCkBAIC0xMjks OCArMTMwLDggQEAgX2J0X3NlYXJjaChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBrZXks IEJ1ZmZlciAqYnVmUCwgaW50IGFjY2VzcywKIAkJICogYWxzbyB0YWtlbiBjYXJlIG9mIGlu IF9idF9nZXRzdGFja2J1ZikuICBCdXQgdGhpcyBpcyBhIGdvb2QKIAkJICogb3Bwb3J0dW5p dHkgdG8gZmluaXNoIHNwbGl0cyBvZiBpbnRlcm5hbCBwYWdlcyB0b28uCiAJCSAqLwotCQkq YnVmUCA9IF9idF9tb3ZlcmlnaHQocmVsLCBrZXksICpidWZQLCAoYWNjZXNzID09IEJUX1dS SVRFKSwgc3RhY2tfaW4sCi0JCQkJCQkJICBwYWdlX2FjY2Vzcywgc25hcHNob3QpOworCQkq YnVmUCA9IF9idF9tb3ZlcmlnaHQocmVsLCBoZWFwcmVsLCBrZXksICpidWZQLCAoYWNjZXNz ID09IEJUX1dSSVRFKSwKKwkJCQkJCQkgIHN0YWNrX2luLCBwYWdlX2FjY2Vzcywgc25hcHNo b3QpOwogCiAJCS8qIGlmIHRoaXMgaXMgYSBsZWFmIHBhZ2UsIHdlJ3JlIGRvbmUgKi8KIAkJ cGFnZSA9IEJ1ZmZlckdldFBhZ2UoKmJ1ZlApOwpAQCAtMTkwLDcgKzE5MSw3IEBAIF9idF9z ZWFyY2goUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgKmJ1ZlAsIGlu dCBhY2Nlc3MsCiAJCSAqIGJ1dCBiZWZvcmUgd2UgYWNxdWlyZWQgYSB3cml0ZSBsb2NrLiAg SWYgaXQgaGFzLCB3ZSBtYXkgbmVlZCB0bwogCQkgKiBtb3ZlIHJpZ2h0IHRvIGl0cyBuZXcg c2libGluZy4gIERvIHRoYXQuCiAJCSAqLwotCQkqYnVmUCA9IF9idF9tb3ZlcmlnaHQocmVs LCBrZXksICpidWZQLCB0cnVlLCBzdGFja19pbiwgQlRfV1JJVEUsCisJCSpidWZQID0gX2J0 X21vdmVyaWdodChyZWwsIGhlYXByZWwsIGtleSwgKmJ1ZlAsIHRydWUsIHN0YWNrX2luLCBC VF9XUklURSwKIAkJCQkJCQkgIHNuYXBzaG90KTsKIAl9CiAKQEAgLTIzNCw2ICsyMzUsNyBA QCBfYnRfc2VhcmNoKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpi dWZQLCBpbnQgYWNjZXNzLAogICovCiBCdWZmZXIKIF9idF9tb3ZlcmlnaHQoUmVsYXRpb24g cmVsLAorCQkJICBSZWxhdGlvbiBoZWFwcmVsLAogCQkJICBCVFNjYW5JbnNlcnQga2V5LAog CQkJICBCdWZmZXIgYnVmLAogCQkJICBib29sIGZvcnVwZGF0ZSwKQEAgLTI4OCwxMiArMjkw LDEyIEBAIF9idF9tb3ZlcmlnaHQoUmVsYXRpb24gcmVsLAogCQkJfQogCiAJCQlpZiAoUF9J TkNPTVBMRVRFX1NQTElUKG9wYXF1ZSkpCi0JCQkJX2J0X2ZpbmlzaF9zcGxpdChyZWwsIGJ1 Ziwgc3RhY2spOworCQkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBoZWFwcmVsLCBidWYsIHN0 YWNrKTsKIAkJCWVsc2UKIAkJCQlfYnRfcmVsYnVmKHJlbCwgYnVmKTsKIAogCQkJLyogcmUt YWNxdWlyZSB0aGUgbG9jayBpbiB0aGUgcmlnaHQgbW9kZSwgYW5kIHJlLWNoZWNrICovCi0J CQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxrbm8sIGFjY2Vzcyk7CisJCQlidWYgPSBfYnRf Z2V0YnVmKHJlbCwgaGVhcHJlbCwgYmxrbm8sIGFjY2Vzcyk7CiAJCQljb250aW51ZTsKIAkJ fQogCkBAIC04NjAsNiArODYyLDcgQEAgYm9vbAogX2J0X2ZpcnN0KEluZGV4U2NhbkRlc2Mg c2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiB7CiAJUmVsYXRpb24JcmVsID0gc2Nhbi0+aW5k ZXhSZWxhdGlvbjsKKwlSZWxhdGlvbiAJaGVhcHJlbCA9IHNjYW4tPmhlYXBSZWxhdGlvbjsK IAlCVFNjYW5PcGFxdWUgc28gPSAoQlRTY2FuT3BhcXVlKSBzY2FuLT5vcGFxdWU7CiAJQnVm ZmVyCQlidWY7CiAJQlRTdGFjawkJc3RhY2s7CkBAIC0xMzUyLDcgKzEzNTUsNyBAQCBfYnRf Zmlyc3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIAl9CiAKIAkv KiBJbml0aWFsaXplIHJlbWFpbmluZyBpbnNlcnRpb24gc2NhbiBrZXkgZmllbGRzICovCi0J X2J0X21ldGF2ZXJzaW9uKHJlbCwgJmluc2tleS5oZWFwa2V5c3BhY2UsICZpbnNrZXkuYWxs ZXF1YWxpbWFnZSk7CisJX2J0X21ldGF2ZXJzaW9uKHJlbCwgaGVhcHJlbCwgJmluc2tleS5o ZWFwa2V5c3BhY2UsICZpbnNrZXkuYWxsZXF1YWxpbWFnZSk7CiAJaW5za2V5LmFueW51bGxr ZXlzID0gZmFsc2U7IC8qIHVudXNlZCAqLwogCWluc2tleS5uZXh0a2V5ID0gbmV4dGtleTsK IAlpbnNrZXkucGl2b3RzZWFyY2ggPSBmYWxzZTsKQEAgLTEzNjMsNyArMTM2Niw3IEBAIF9i dF9maXJzdChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCSAqIFVz ZSB0aGUgbWFudWZhY3R1cmVkIGluc2VydGlvbiBzY2FuIGtleSB0byBkZXNjZW5kIHRoZSB0 cmVlIGFuZAogCSAqIHBvc2l0aW9uIG91cnNlbHZlcyBvbiB0aGUgdGFyZ2V0IGxlYWYgcGFn ZS4KIAkgKi8KLQlzdGFjayA9IF9idF9zZWFyY2gocmVsLCAmaW5za2V5LCAmYnVmLCBCVF9S RUFELCBzY2FuLT54c19zbmFwc2hvdCk7CisJc3RhY2sgPSBfYnRfc2VhcmNoKHJlbCwgaGVh cHJlbCwgJmluc2tleSwgJmJ1ZiwgQlRfUkVBRCwgc2Nhbi0+eHNfc25hcHNob3QpOwogCiAJ LyogZG9uJ3QgbmVlZCB0byBrZWVwIHRoZSBzdGFjayBhcm91bmQuLi4gKi8KIAlfYnRfZnJl ZXN0YWNrKHN0YWNrKTsKQEAgLTIwMDQsNyArMjAwNyw3IEBAIF9idF9yZWFkbmV4dHBhZ2Uo SW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJlciBibGtubywgU2NhbkRpcmVjdGlvbiBk aXIpCiAJCQkvKiBjaGVjayBmb3IgaW50ZXJydXB0cyB3aGlsZSB3ZSdyZSBub3QgaG9sZGlu ZyBhbnkgYnVmZmVyIGxvY2sgKi8KIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCQkv KiBzdGVwIHJpZ2h0IG9uZSBwYWdlICovCi0JCQlzby0+Y3VyclBvcy5idWYgPSBfYnRfZ2V0 YnVmKHJlbCwgYmxrbm8sIEJUX1JFQUQpOworCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X2dl dGJ1ZihyZWwsIHNjYW4tPmhlYXBSZWxhdGlvbiwgYmxrbm8sIEJUX1JFQUQpOwogCQkJcGFn ZSA9IEJ1ZmZlckdldFBhZ2Uoc28tPmN1cnJQb3MuYnVmKTsKIAkJCVRlc3RGb3JPbGRTbmFw c2hvdChzY2FuLT54c19zbmFwc2hvdCwgcmVsLCBwYWdlKTsKIAkJCW9wYXF1ZSA9IEJUUGFn ZUdldE9wYXF1ZShwYWdlKTsKQEAgLTIwNzgsNyArMjA4MSw4IEBAIF9idF9yZWFkbmV4dHBh Z2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJlciBibGtubywgU2NhbkRpcmVjdGlv biBkaXIpCiAJCWlmIChCVFNjYW5Qb3NJc1Bpbm5lZChzby0+Y3VyclBvcykpCiAJCQlfYnRf bG9ja2J1ZihyZWwsIHNvLT5jdXJyUG9zLmJ1ZiwgQlRfUkVBRCk7CiAJCWVsc2UKLQkJCXNv LT5jdXJyUG9zLmJ1ZiA9IF9idF9nZXRidWYocmVsLCBzby0+Y3VyclBvcy5jdXJyUGFnZSwg QlRfUkVBRCk7CisJCQlzby0+Y3VyclBvcy5idWYgPSBfYnRfZ2V0YnVmKHJlbCwgc2Nhbi0+ aGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSBzby0+Y3VyclBvcy5jdXJyUGFnZSwgQlRfUkVB RCk7CiAKIAkJZm9yICg7OykKIAkJewpAQCAtMjA5Miw4ICsyMDk2LDggQEAgX2J0X3JlYWRu ZXh0cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGly ZWN0aW9uIGRpcikKIAkJCX0KIAogCQkJLyogU3RlcCB0byBuZXh0IHBoeXNpY2FsIHBhZ2Ug Ki8KLQkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9idF93YWxrX2xlZnQocmVsLCBzby0+Y3VyclBv cy5idWYsCi0JCQkJCQkJCQkJCXNjYW4tPnhzX3NuYXBzaG90KTsKKwkJCXNvLT5jdXJyUG9z LmJ1ZiA9IF9idF93YWxrX2xlZnQocmVsLCBzY2FuLT5oZWFwUmVsYXRpb24sCisJCQkJCQkJ CQkJCXNvLT5jdXJyUG9zLmJ1Ziwgc2Nhbi0+eHNfc25hcHNob3QpOwogCiAJCQkvKiBpZiB3 ZSdyZSBwaHlzaWNhbGx5IGF0IGVuZCBvZiBpbmRleCwgcmV0dXJuIGZhaWx1cmUgKi8KIAkJ CWlmIChzby0+Y3VyclBvcy5idWYgPT0gSW52YWxpZEJ1ZmZlcikKQEAgLTIxNDAsNyArMjE0 NCw4IEBAIF9idF9yZWFkbmV4dHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJl ciBibGtubywgU2NhbkRpcmVjdGlvbiBkaXIpCiAJCQkJCUJUU2NhblBvc0ludmFsaWRhdGUo c28tPmN1cnJQb3MpOwogCQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJfQotCQkJCXNvLT5jdXJy UG9zLmJ1ZiA9IF9idF9nZXRidWYocmVsLCBibGtubywgQlRfUkVBRCk7CisJCQkJc28tPmN1 cnJQb3MuYnVmID0gX2J0X2dldGJ1ZihyZWwsIHNjYW4tPmhlYXBSZWxhdGlvbiwgYmxrbm8s CisJCQkJCQkJCQkJCSBCVF9SRUFEKTsKIAkJCX0KIAkJfQogCX0KQEAgLTIxODUsNyArMjE5 MCw3IEBAIF9idF9wYXJhbGxlbF9yZWFkcGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2Nr TnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0aW9uIGRpcikKICAqIGFnYWluIGlmIGl0J3MgaW1w b3J0YW50LgogICovCiBzdGF0aWMgQnVmZmVyCi1fYnRfd2Fsa19sZWZ0KFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1ZiwgU25hcHNob3Qgc25hcHNob3QpCitfYnRfd2Fsa19sZWZ0KFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVmZmVyIGJ1ZiwgU25hcHNob3Qgc25hcHNo b3QpCiB7CiAJUGFnZQkJcGFnZTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAtMjIxMyw3 ICsyMjE4LDcgQEAgX2J0X3dhbGtfbGVmdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFNu YXBzaG90IHNuYXBzaG90KQogCQlfYnRfcmVsYnVmKHJlbCwgYnVmKTsKIAkJLyogY2hlY2sg Zm9yIGludGVycnVwdHMgd2hpbGUgd2UncmUgbm90IGhvbGRpbmcgYW55IGJ1ZmZlciBsb2Nr ICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCWJ1ZiA9IF9idF9nZXRidWYocmVs LCBibGtubywgQlRfUkVBRCk7CisJCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBi bGtubywgQlRfUkVBRCk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJCVRlc3RG b3JPbGRTbmFwc2hvdChzbmFwc2hvdCwgcmVsLCBwYWdlKTsKIAkJb3BhcXVlID0gQlRQYWdl R2V0T3BhcXVlKHBhZ2UpOwpAQCAtMjMwNCw3ICsyMzA5LDcgQEAgX2J0X3dhbGtfbGVmdChS ZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFNuYXBzaG90IHNuYXBzaG90KQogICogVGhlIHJl dHVybmVkIGJ1ZmZlciBpcyBwaW5uZWQgYW5kIHJlYWQtbG9ja2VkLgogICovCiBCdWZmZXIK LV9idF9nZXRfZW5kcG9pbnQoUmVsYXRpb24gcmVsLCB1aW50MzIgbGV2ZWwsIGJvb2wgcmln aHRtb3N0LAorX2J0X2dldF9lbmRwb2ludChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXBy ZWwsIHVpbnQzMiBsZXZlbCwgYm9vbCByaWdodG1vc3QsCiAJCQkJIFNuYXBzaG90IHNuYXBz aG90KQogewogCUJ1ZmZlcgkJYnVmOwpAQCAtMjMyMCw5ICsyMzI1LDkgQEAgX2J0X2dldF9l bmRwb2ludChSZWxhdGlvbiByZWwsIHVpbnQzMiBsZXZlbCwgYm9vbCByaWdodG1vc3QsCiAJ ICogc21hcnRlciBhYm91dCBpbnRlcm1lZGlhdGUgbGV2ZWxzLikKIAkgKi8KIAlpZiAobGV2 ZWwgPT0gMCkKLQkJYnVmID0gX2J0X2dldHJvb3QocmVsLCBCVF9SRUFEKTsKKwkJYnVmID0g X2J0X2dldHJvb3QocmVsLCBoZWFwcmVsLCBCVF9SRUFEKTsKIAllbHNlCi0JCWJ1ZiA9IF9i dF9nZXR0cnVlcm9vdChyZWwpOworCQlidWYgPSBfYnRfZ2V0dHJ1ZXJvb3QocmVsLCBoZWFw cmVsKTsKIAogCWlmICghQnVmZmVySXNWYWxpZChidWYpKQogCQlyZXR1cm4gSW52YWxpZEJ1 ZmZlcjsKQEAgLTI0MDMsNyArMjQwOCw4IEBAIF9idF9lbmRwb2ludChJbmRleFNjYW5EZXNj IHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCSAqIHZlcnNpb24gb2YgX2J0X3NlYXJjaCgp LiAgV2UgZG9uJ3QgbWFpbnRhaW4gYSBzdGFjayBzaW5jZSB3ZSBrbm93IHdlCiAJICogd29u J3QgbmVlZCBpdC4KIAkgKi8KLQlidWYgPSBfYnRfZ2V0X2VuZHBvaW50KHJlbCwgMCwgU2Nh bkRpcmVjdGlvbklzQmFja3dhcmQoZGlyKSwgc2Nhbi0+eHNfc25hcHNob3QpOworCWJ1ZiA9 IF9idF9nZXRfZW5kcG9pbnQocmVsLCBzY2FuLT5oZWFwUmVsYXRpb24sIDAsCisJCQkJCQkg ICBTY2FuRGlyZWN0aW9uSXNCYWNrd2FyZChkaXIpLCBzY2FuLT54c19zbmFwc2hvdCk7CiAK IAlpZiAoIUJ1ZmZlcklzVmFsaWQoYnVmKSkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0c29ydC5jCmluZGV4IDAyYjk2MDFiZWMuLjEyMDdhNDk2ODkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC01NjYsNyArNTY2LDcgQEAgX2J0X2xlYWZidWls ZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAogCXdzdGF0ZS5oZWFw ID0gYnRzcG9vbC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBidHNwb29sLT5pbmRleDsKLQl3 c3RhdGUuaW5za2V5ID0gX2J0X21rc2NhbmtleSh3c3RhdGUuaW5kZXgsIE5VTEwpOworCXdz dGF0ZS5pbnNrZXkgPSBfYnRfbWtzY2Fua2V5KHdzdGF0ZS5pbmRleCwgYnRzcG9vbC0+aGVh cCwgTlVMTCk7CiAJLyogX2J0X21rc2NhbmtleSgpIHdvbid0IHNldCBhbGxlcXVhbGltYWdl IHdpdGhvdXQgbWV0YXBhZ2UgKi8KIAl3c3RhdGUuaW5za2V5LT5hbGxlcXVhbGltYWdlID0g X2J0X2FsbGVxdWFsaW1hZ2Uod3N0YXRlLmluZGV4LCB0cnVlKTsKIAl3c3RhdGUuYnR3c191 c2Vfd2FsID0gUmVsYXRpb25OZWVkc1dBTCh3c3RhdGUuaW5kZXgpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnR1dGlscy5jCmluZGV4IDdkYTQ5OWM0ZGQuLjA1YWJmMzYwMzIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKQEAgLTg3LDcgKzg3LDcgQEAg c3RhdGljIGludAlfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFz dGxlZnQsCiAgKgkJZmllbGQgdGhlbXNlbHZlcy4KICAqLwogQlRTY2FuSW5zZXJ0Ci1fYnRf bWtzY2Fua2V5KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwKQorX2J0X21rc2Nhbmtl eShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEluZGV4VHVwbGUgaXR1cCkKIHsK IAlCVFNjYW5JbnNlcnQga2V5OwogCVNjYW5LZXkJCXNrZXk7CkBAIC0xMTIsNyArMTEyLDcg QEAgX2J0X21rc2NhbmtleShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCkKIAlrZXkg PSBwYWxsb2Mob2Zmc2V0b2YoQlRTY2FuSW5zZXJ0RGF0YSwgc2NhbmtleXMpICsKIAkJCQkg c2l6ZW9mKFNjYW5LZXlEYXRhKSAqIGluZG5rZXlhdHRzKTsKIAlpZiAoaXR1cCkKLQkJX2J0 X21ldGF2ZXJzaW9uKHJlbCwgJmtleS0+aGVhcGtleXNwYWNlLCAma2V5LT5hbGxlcXVhbGlt YWdlKTsKKwkJX2J0X21ldGF2ZXJzaW9uKHJlbCwgaGVhcHJlbCwgJmtleS0+aGVhcGtleXNw YWNlLCAma2V5LT5hbGxlcXVhbGltYWdlKTsKIAllbHNlCiAJewogCQkvKiBVdGlsaXR5IHN0 YXRlbWVudCBjYWxsZXJzIGNhbiBzZXQgdGhlc2UgZmllbGRzIHRoZW1zZWx2ZXMgKi8KQEAg LTE3NjEsNyArMTc2MSw4IEBAIF9idF9raWxsaXRlbXMoSW5kZXhTY2FuRGVzYyBzY2FuKQog CiAJCWRyb3BwZWRwaW4gPSB0cnVlOwogCQkvKiBBdHRlbXB0IHRvIHJlLXJlYWQgdGhlIGJ1 ZmZlciwgZ2V0dGluZyBwaW4gYW5kIGxvY2suICovCi0JCWJ1ZiA9IF9idF9nZXRidWYoc2Nh bi0+aW5kZXhSZWxhdGlvbiwgc28tPmN1cnJQb3MuY3VyclBhZ2UsIEJUX1JFQUQpOworCQli dWYgPSBfYnRfZ2V0YnVmKHNjYW4tPmluZGV4UmVsYXRpb24sIHNjYW4tPmhlYXBSZWxhdGlv biwKKwkJCQkJCSBzby0+Y3VyclBvcy5jdXJyUGFnZSwgQlRfUkVBRCk7CiAKIAkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAkJaWYgKEJ1ZmZlckdldExTTkF0b21pYyhidWYpID09 IHNvLT5jdXJyUG9zLmxzbikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdp c3Qvc3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5j CmluZGV4IDNhZGIxOGYyZDguLjJmNGE0YWFkMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGd2YWN1dW0uYwpAQCAtNDg5LDcgKzQ4OSw3IEBAIHZhY3V1bUxlYWZSb290KHNw Z0J1bGtEZWxldGVTdGF0ZSAqYmRzLCBSZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZlcikK ICAqIFVubGlrZSB0aGUgcm91dGluZXMgYWJvdmUsIHRoaXMgd29ya3Mgb24gYm90aCBsZWFm IGFuZCBpbm5lciBwYWdlcy4KICAqLwogc3RhdGljIHZvaWQKLXZhY3V1bVJlZGlyZWN0QW5k UGxhY2Vob2xkZXIoUmVsYXRpb24gaW5kZXgsIEJ1ZmZlciBidWZmZXIpCit2YWN1dW1SZWRp cmVjdEFuZFBsYWNlaG9sZGVyKFJlbGF0aW9uIGluZGV4LCBSZWxhdGlvbiBoZWFwcmVsLCBC dWZmZXIgYnVmZmVyKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7 CiAJU3BHaXN0UGFnZU9wYXF1ZSBvcGFxdWUgPSBTcEdpc3RQYWdlR2V0T3BhcXVlKHBhZ2Up OwpAQCAtNTAzLDYgKzUwMyw3IEBAIHZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVs YXRpb24gaW5kZXgsIEJ1ZmZlciBidWZmZXIpCiAJc3BneGxvZ1ZhY3V1bVJlZGlyZWN0IHhs cmVjOwogCUdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0OwogCisJeGxyZWMuaXNDYXRhbG9nUmVs ID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwcmVsKTsKIAl4 bHJlYy5uVG9QbGFjZWhvbGRlciA9IDA7CiAJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6 b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIApAQCAtNjQzLDEzICs2NDQsMTMgQEAgc3Bn dmFjdXVtcGFnZShzcGdCdWxrRGVsZXRlU3RhdGUgKmJkcywgQmxvY2tOdW1iZXIgYmxrbm8p CiAJCWVsc2UKIAkJewogCQkJdmFjdXVtTGVhZlBhZ2UoYmRzLCBpbmRleCwgYnVmZmVyLCBm YWxzZSk7Ci0JCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBidWZmZXIp OworCQkJdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihpbmRleCwgYmRzLT5pbmZvLT5o ZWFwcmVsLCBidWZmZXIpOwogCQl9CiAJfQogCWVsc2UKIAl7CiAJCS8qIGlubmVyIHBhZ2Ug Ki8KLQkJdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihpbmRleCwgYnVmZmVyKTsKKwkJ dmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihpbmRleCwgYmRzLT5pbmZvLT5oZWFwcmVs LCBidWZmZXIpOwogCX0KIAogCS8qCkBAIC03MTksNyArNzIwLDcgQEAgc3BncHJvY2Vzc3Bl bmRpbmcoc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMpCiAJCQkvKiBkZWFsIHdpdGggYW55IGRl bGV0YWJsZSB0dXBsZXMgKi8KIAkJCXZhY3V1bUxlYWZQYWdlKGJkcywgaW5kZXgsIGJ1ZmZl ciwgdHJ1ZSk7CiAJCQkvKiBtaWdodCBhcyB3ZWxsIGRvIHRoaXMgd2hpbGUgd2UgYXJlIGhl cmUgKi8KLQkJCXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJ1ZmZlcik7 CisJCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBiZHMtPmluZm8tPmhl YXByZWwsIGJ1ZmZlcik7CiAKIAkJCVNwR2lzdFNldExhc3RVc2VkUGFnZShpbmRleCwgYnVm ZmVyKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDZhZWMxYjFiY2EuLmNlMGFjZjU4OTAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTMzNjQsNiArMzM2NCw3IEBAIHZhbGlkYXRlX2lu ZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlpdmlu Zm8ubWVzc2FnZV9sZXZlbCA9IERFQlVHMjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0g aGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSBO VUxMOworCWl2aW5mby5oZWFwcmVsID0gaGVhcFJlbGF0aW9uOwogCiAJLyoKIAkgKiBFbmNv ZGUgVElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJhdGhlciB0aGFuIGRpcmVj dGx5IHNvcnRpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCA2NTc1MDk1OGJiLi4w MTc4MTg2ZDM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCkBAIC03MTIsNiArNzEyLDcg QEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFt cywKIAkJCWl2aW5mby5tZXNzYWdlX2xldmVsID0gZWxldmVsOwogCQkJaXZpbmZvLm51bV9o ZWFwX3R1cGxlcyA9IG9uZXJlbC0+cmRfcmVsLT5yZWx0dXBsZXM7CiAJCQlpdmluZm8uc3Ry YXRlZ3kgPSB2YWNfc3RyYXRlZ3k7CisJCQlpdmluZm8uaGVhcHJlbCA9IG9uZXJlbDsKIAog CQkJc3RhdHMgPSBpbmRleF92YWN1dW1fY2xlYW51cCgmaXZpbmZvLCBOVUxMKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggYmNkNDBjODBhMS4uMmNk YmQxODJiNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0x NDgsNiArMTQ4LDkgQEAgc3RydWN0IFBhcmFsbGVsVmFjdXVtU3RhdGUKIAkvKiBOVUxMIGZv ciB3b3JrZXIgcHJvY2Vzc2VzICovCiAJUGFyYWxsZWxDb250ZXh0ICpwY3h0OwogCisJLyog UGFyZW50IEhlYXAgUmVsYXRpb24gKi8KKwlSZWxhdGlvbgloZWFwcmVsOworCiAJLyogVGFy Z2V0IGluZGV4ZXMgKi8KIAlSZWxhdGlvbiAgICppbmRyZWxzOwogCWludAkJCW5pbmRleGVz OwpAQCAtMjY2LDYgKzI2OSw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlwdnMtPm5pbmRleGVzID0g bmluZGV4ZXM7CiAJcHZzLT53aWxsX3BhcmFsbGVsX3ZhY3V1bSA9IHdpbGxfcGFyYWxsZWxf dmFjdXVtOwogCXB2cy0+YnN0cmF0ZWd5ID0gYnN0cmF0ZWd5OworCXB2cy0+aGVhcHJlbCA9 IHJlbDsKIAogCUVudGVyUGFyYWxsZWxNb2RlKCk7CiAJcGN4dCA9IENyZWF0ZVBhcmFsbGVs Q29udGV4dCgicG9zdGdyZXMiLCAicGFyYWxsZWxfdmFjdXVtX21haW4iLApAQCAtODM4LDYg Kzg0Miw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX29uZV9pbmRleChQYXJhbGxlbFZh Y3V1bVN0YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwKIAlpdmluZm8uZXN0aW1hdGVkX2Nv dW50ID0gcHZzLT5zaGFyZWQtPmVzdGltYXRlZF9jb3VudDsKIAlpdmluZm8ubnVtX2hlYXBf dHVwbGVzID0gcHZzLT5zaGFyZWQtPnJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSBw dnMtPmJzdHJhdGVneTsKKwlpdmluZm8uaGVhcHJlbCA9IHB2cy0+aGVhcHJlbDsKIAogCS8q IFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24gKi8KIAlwdnMtPmluZG5hbWUg PSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCkpOwpAQCAtMTAwNyw2 ICsxMDEyLDcgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2ht X3RvYyAqdG9jKQogCXB2cy5kZWFkX2l0ZW1zID0gZGVhZF9pdGVtczsKIAlwdnMucmVsbmFt ZXNwYWNlID0gZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCkp OwogCXB2cy5yZWxuYW1lID0gcHN0cmR1cChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp KTsKKwlwdnMuaGVhcHJlbCA9IHJlbDsKIAogCS8qIFRoZXNlIGZpZWxkcyB3aWxsIGJlIGZp bGxlZCBkdXJpbmcgaW5kZXggdmFjdXVtIG9yIGNsZWFudXAgKi8KIAlwdnMuaW5kbmFtZSA9 IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0 LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggZDU4YzRh MTA3OC4uZTM4MjRlZmU5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvcGxhbmNhdC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQu YwpAQCAtNDYyLDcgKzQ2Miw3IEBAIGdldF9yZWxhdGlvbl9pbmZvKFBsYW5uZXJJbmZvICpy b290LCBPaWQgcmVsYXRpb25PYmplY3RJZCwgYm9vbCBpbmhwYXJlbnQsCiAJCQkJCSAqIEZv ciBidHJlZXMsIGdldCB0cmVlIGhlaWdodCB3aGlsZSB3ZSBoYXZlIHRoZSBpbmRleAogCQkJ CQkgKiBvcGVuCiAJCQkJCSAqLwotCQkJCQlpbmZvLT50cmVlX2hlaWdodCA9IF9idF9nZXRy b290aGVpZ2h0KGluZGV4UmVsYXRpb24pOworCQkJCQlpbmZvLT50cmVlX2hlaWdodCA9IF9i dF9nZXRyb290aGVpZ2h0KGluZGV4UmVsYXRpb24sIHJlbGF0aW9uKTsKIAkJCQl9CiAJCQkJ ZWxzZQogCQkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVz b3J0dmFyaWFudHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFu dHMuYwppbmRleCBlYjZjZmNmZDAwLi4wMTg4MTA2OTI1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCkBAIC0yMDcsNiArMjA3LDcgQEAgdHVw bGVzb3J0X2JlZ2luX2hlYXAoVHVwbGVEZXNjIHR1cERlc2MsCiBUdXBsZXNvcnRzdGF0ZSAq CiB0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihUdXBsZURlc2MgdHVwRGVzYywKIAkJCQkJCVJl bGF0aW9uIGluZGV4UmVsLAorCQkJCQkJUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCWludCB3 b3JrTWVtLAogCQkJCQkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZSwgaW50IHNvcnRvcHQp CiB7CkBAIC0yNjAsNyArMjYxLDcgQEAgdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIoVHVwbGVE ZXNjIHR1cERlc2MsCiAKIAlhcmctPnR1cERlc2MgPSB0dXBEZXNjOwkJLyogYXNzdW1lIHdl IG5lZWQgbm90IGNvcHkgdHVwRGVzYyAqLwogCi0JaW5kZXhTY2FuS2V5ID0gX2J0X21rc2Nh bmtleShpbmRleFJlbCwgTlVMTCk7CisJaW5kZXhTY2FuS2V5ID0gX2J0X21rc2NhbmtleShp bmRleFJlbCwgaGVhcHJlbCwgTlVMTCk7CiAKIAlpZiAoYXJnLT5pbmRleEluZm8tPmlpX0V4 cHJlc3Npb25zICE9IE5VTEwpCiAJewpAQCAtMzYxLDcgKzM2Miw3IEBAIHR1cGxlc29ydF9i ZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAogCWFyZy0+ZW5mb3JjZVVuaXF1 ZSA9IGVuZm9yY2VVbmlxdWU7CiAJYXJnLT51bmlxdWVOdWxsc05vdERpc3RpbmN0ID0gdW5p cXVlTnVsbHNOb3REaXN0aW5jdDsKIAotCWluZGV4U2NhbktleSA9IF9idF9ta3NjYW5rZXko aW5kZXhSZWwsIE5VTEwpOworCWluZGV4U2NhbktleSA9IF9idF9ta3NjYW5rZXkoaW5kZXhS ZWwsIGhlYXBSZWwsIE5VTEwpOwogCiAJLyogUHJlcGFyZSBTb3J0U3VwcG9ydCBkYXRhIGZv ciBlYWNoIGNvbHVtbiAqLwogCWJhc2UtPnNvcnRLZXlzID0gKFNvcnRTdXBwb3J0KSBwYWxs b2MwKGJhc2UtPm5LZXlzICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5h bS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXggODNkYmVlMGZlNi4uNzcw OGI4MmQ3ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKQEAgLTUwLDYgKzUwLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgSW5kZXhWYWN1dW1JbmZvCiAJaW50CQkJbWVzc2FnZV9sZXZlbDsJLyogZXJlcG9y dCBsZXZlbCBmb3IgcHJvZ3Jlc3MgbWVzc2FnZXMgKi8KIAlkb3VibGUJCW51bV9oZWFwX3R1 cGxlczsJLyogdHVwbGVzIHJlbWFpbmluZyBpbiBoZWFwICovCiAJQnVmZmVyQWNjZXNzU3Ry YXRlZ3kgc3RyYXRlZ3k7CS8qIGFjY2VzcyBzdHJhdGVneSBmb3IgcmVhZHMgKi8KKwlSZWxh dGlvbiAJaGVhcHJlbDsJCS8qIHRoZSBoZWFwIHJlbGF0aW9uIHRoZSBpbmRleCBiZWxvbmdz IHRvICovCiB9IEluZGV4VmFjdXVtSW5mbzsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3By aXZhdGUuaAppbmRleCA4YWYzM2Q3YjQwLi5lZTI3NTY1MGJkIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2dpc3RfcHJpdmF0ZS5oCkBAIC00NDAsNyArNDQwLDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIg Z2lzdFhMb2dQYWdlRGVsZXRlKEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkgRnVsbFRyYW5z YWN0aW9uSWQgeGlkLCBCdWZmZXIgcGFyZW50QnVmZmVyLAogCQkJCQkJCQkJIE9mZnNldE51 bWJlciBkb3dubGlua09mZnNldCk7CiAKLWV4dGVybiB2b2lkIGdpc3RYTG9nUGFnZVJldXNl KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCitleHRlcm4gdm9pZCBnaXN0WExv Z1BhZ2VSZXVzZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVtYmVy IGJsa25vLAogCQkJCQkJCSAgRnVsbFRyYW5zYWN0aW9uSWQgZGVsZXRlWGlkKTsKIAogZXh0 ZXJuIFhMb2dSZWNQdHIgZ2lzdFhMb2dVcGRhdGUoQnVmZmVyIGJ1ZmZlciwKQEAgLTQ0OSw3 ICs0NDksOCBAQCBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1VwZGF0ZShCdWZmZXIgYnVm ZmVyLAogCQkJCQkJCQkgQnVmZmVyIGxlZnRjaGlsZGJ1Zik7CiAKIGV4dGVybiBYTG9nUmVj UHRyIGdpc3RYTG9nRGVsZXRlKEJ1ZmZlciBidWZmZXIsIE9mZnNldE51bWJlciAqdG9kZWxl dGUsCi0JCQkJCQkJCSBpbnQgbnRvZGVsZXRlLCBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uKTsKKwkJCQkJCQkJIGludCBudG9kZWxldGUsIFRyYW5zYWN0aW9uSWQg c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCSBSZWxhdGlvbiBoZWFwcmVsKTsK IAogZXh0ZXJuIFhMb2dSZWNQdHIgZ2lzdFhMb2dTcGxpdChib29sIHBhZ2VfaXNfbGVhZiwK IAkJCQkJCQkJU3BsaXRlZFBhZ2VMYXlvdXQgKmRpc3QsCkBAIC00ODUsNyArNDg2LDcgQEAg ZXh0ZXJuIGJvb2wgZ2lzdHByb3BlcnR5KE9pZCBpbmRleF9vaWQsIGludCBhdHRubywKIGV4 dGVybiBib29sIGdpc3RmaXRwYWdlKEluZGV4VHVwbGUgKml0dmVjLCBpbnQgbGVuKTsKIGV4 dGVybiBib29sIGdpc3Rub3NwYWNlKFBhZ2UgcGFnZSwgSW5kZXhUdXBsZSAqaXR2ZWMsIGlu dCBsZW4sIE9mZnNldE51bWJlciB0b2RlbGV0ZSwgU2l6ZSBmcmVlc3BhY2UpOwogZXh0ZXJu IHZvaWQgZ2lzdGNoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYpOwotZXh0ZXJu IEJ1ZmZlciBnaXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIpOworZXh0ZXJuIEJ1ZmZlciBnaXN0 TmV3QnVmZmVyKFJlbGF0aW9uIHIsIFJlbGF0aW9uIGhlYXByZWwpOwogZXh0ZXJuIGJvb2wg Z2lzdFBhZ2VSZWN5Y2xhYmxlKFBhZ2UgcGFnZSk7CiBleHRlcm4gdm9pZCBnaXN0ZmlsbGJ1 ZmZlcihQYWdlIHBhZ2UsIEluZGV4VHVwbGUgKml0dXAsIGludCBsZW4sCiAJCQkJCQkgICBP ZmZzZXROdW1iZXIgb2ZmKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgKaW5kZXggMmNlOTM2NjI3 Ny4uOTNmYjlkNDM4YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9n LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgKQEAgLTUxLDExICs1MSwx NCBAQCB0eXBlZGVmIHN0cnVjdCBnaXN0eGxvZ0RlbGV0ZQogewogCVRyYW5zYWN0aW9uSWQg c25hcHNob3RDb25mbGljdEhvcml6b247CiAJdWludDE2CQludG9kZWxldGU7CQkvKiBudW1i ZXIgb2YgZGVsZXRlZCBvZmZzZXRzICovCisJYm9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwkv KiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwKKwkJCQkJCQkJ ICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogCi0JLyogVE9ERUxFVEUgT0ZGU0VUIE5VTUJF UiBBUlJBWSBGT0xMT1dTICovCisJLyogVE9ERUxFVEUgT0ZGU0VUIE5VTUJFUlMgKi8KKwlP ZmZzZXROdW1iZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwogfSBnaXN0eGxv Z0RlbGV0ZTsKIAotI2RlZmluZSBTaXplT2ZHaXN0eGxvZ0RlbGV0ZQkob2Zmc2V0b2YoZ2lz dHhsb2dEZWxldGUsIG50b2RlbGV0ZSkgKyBzaXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6 ZU9mR2lzdHhsb2dEZWxldGUJb2Zmc2V0b2YoZ2lzdHhsb2dEZWxldGUsIG9mZnNldHMpCiAK IC8qCiAgKiBCYWNrdXAgQmxrIDA6IElmIHRoaXMgb3BlcmF0aW9uIGNvbXBsZXRlcyBhIHBh Z2Ugc3BsaXQsIGJ5IGluc2VydGluZyBhCkBAIC05OCw5ICsxMDEsMTEgQEAgdHlwZWRlZiBz dHJ1Y3QgZ2lzdHhsb2dQYWdlUmV1c2UKIAlSZWxGaWxlTG9jYXRvciBsb2NhdG9yOwogCUJs b2NrTnVtYmVyIGJsb2NrOwogCUZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RI b3Jpem9uOworCWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJlY292 ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCisJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0 YW5kYnkgKi8KIH0gZ2lzdHhsb2dQYWdlUmV1c2U7CiAKLSNkZWZpbmUgU2l6ZU9mR2lzdHhs b2dQYWdlUmV1c2UJKG9mZnNldG9mKGdpc3R4bG9nUGFnZVJldXNlLCBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbikgKyBzaXplb2YoRnVsbFRyYW5zYWN0aW9uSWQpKQorI2RlZmluZSBTaXpl T2ZHaXN0eGxvZ1BhZ2VSZXVzZQkob2Zmc2V0b2YoZ2lzdHhsb2dQYWdlUmV1c2UsIGlzQ2F0 YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAKIGV4dGVybiB2b2lkIGdpc3RfcmVkbyhYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gdm9pZCBnaXN0X2Rlc2MoU3RyaW5nSW5m byBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oYXNoX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cu aAppbmRleCA5ODk0YWI5YWZlLi42YzU1MzVmZTczIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGFzaF94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxv Zy5oCkBAIC0yNTIsMTIgKzI1MiwxNCBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oYXNoX3ZhY3V1 bV9vbmVfcGFnZQogewogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247 CiAJdWludDE2CQkJbnR1cGxlczsKKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7ICAgLyog dG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCisJCQkJCQkJCSAq IGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAotCS8qIFRBUkdFVCBPRkZTRVQgTlVNQkVSUyBG T0xMT1cgQVQgVEhFIEVORCAqLworCS8qIFRBUkdFVCBPRkZTRVQgTlVNQkVSUyAqLworCU9m ZnNldE51bWJlciBvZmZzZXRzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IHhsX2hhc2hf dmFjdXVtX29uZV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkhhc2hWYWN1dW1PbmVQYWdlIFwK LQkob2Zmc2V0b2YoeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UsIG50dXBsZXMpICsgc2l6ZW9m KHVpbnQxNikpCisjZGVmaW5lIFNpemVPZkhhc2hWYWN1dW1PbmVQYWdlIG9mZnNldG9mKHhs X2hhc2hfdmFjdXVtX29uZV9wYWdlLCBvZmZzZXRzKQogCiBleHRlcm4gdm9pZCBoYXNoX3Jl ZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIHZvaWQgaGFzaF9kZXNjKFN0 cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW1feGxvZy5oCmluZGV4IGEyYzY3ZDFjZDMuLjA4ZGI3ZTYyZGQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW1feGxvZy5oCkBAIC0yNDUsMTAgKzI0NSwxMiBAQCB0eXBlZGVmIHN0cnVj dCB4bF9oZWFwX3BydW5lCiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpv bjsKIAl1aW50MTYJCW5yZWRpcmVjdGVkOwogCXVpbnQxNgkJbmRlYWQ7CisJYm9vbCAgICAg ICAgaXNDYXRhbG9nUmVsOwkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5n IGxvZ2ljYWwKKwkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogCS8qIE9GRlNF VCBOVU1CRVJTIGFyZSBpbiB0aGUgYmxvY2sgcmVmZXJlbmNlIDAgKi8KIH0geGxfaGVhcF9w cnVuZTsKIAotI2RlZmluZSBTaXplT2ZIZWFwUHJ1bmUgKG9mZnNldG9mKHhsX2hlYXBfcHJ1 bmUsIG5kZWFkKSArIHNpemVvZih1aW50MTYpKQorI2RlZmluZSBTaXplT2ZIZWFwUHJ1bmUg KG9mZnNldG9mKHhsX2hlYXBfcHJ1bmUsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkp CiAKIC8qCiAgKiBUaGUgdmFjdXVtIHBhZ2UgcmVjb3JkIGlzIHNpbWlsYXIgdG8gdGhlIHBy dW5lIHJlY29yZCwgYnV0IGNhbiBvbmx5IG1hcmsKQEAgLTM0NCwxMyArMzQ2LDE1IEBAIHR5 cGVkZWYgc3RydWN0IHhsX2hlYXBfZnJlZXplX3BhZ2UKIHsKIAlUcmFuc2FjdGlvbklkIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCXVpbnQxNgkJbnBsYW5zOworCWJvb2wgICAgICAg IGlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBs b2dpY2FsCisJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAogCS8qCiAJICog SW4gcGF5bG9hZCBvZiBibGsgMCA6IEZSRUVaRSBQTEFOUyBhbmQgT0ZGU0VUIE5VTUJFUiBB UlJBWQogCSAqLwogfSB4bF9oZWFwX2ZyZWV6ZV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkhl YXBGcmVlemVQYWdlIChvZmZzZXRvZih4bF9oZWFwX2ZyZWV6ZV9wYWdlLCBucGxhbnMpICsg c2l6ZW9mKHVpbnQxNikpCisjZGVmaW5lIFNpemVPZkhlYXBGcmVlemVQYWdlCShvZmZzZXRv Zih4bF9oZWFwX2ZyZWV6ZV9wYWdlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQog CiAvKgogICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEg dmlzaWJpbGl0eSBtYXAgYml0CkBAIC00MDksNyArNDEzLDcgQEAgZXh0ZXJuIHZvaWQgaGVh cDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0 ZXJuIGNvbnN0IGNoYXIgKmhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pOwogZXh0ZXJuIHZv aWQgaGVhcF94bG9nX2xvZ2ljYWxfcmV3cml0ZShYTG9nUmVhZGVyU3RhdGUgKnIpOwogCi1l eHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbEZpbGVMb2NhdG9yIHJsb2Nh dG9yLCBCdWZmZXIgaGVhcF9idWZmZXIsCitleHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92 aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLAogCQkJCQkJCQkgICBC dWZmZXIgdm1fYnVmZmVyLAogCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAogCQkJCQkJCQkgICB1aW50OCB2bWZsYWdzKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRy ZWUuaAppbmRleCA4ZjQ4OTYwZjlkLi42ZGVlMzA3MDQyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MvbmJ0cmVlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5o CkBAIC0xMTgyLDggKzExODIsMTAgQEAgZXh0ZXJuIEluZGV4VHVwbGUgX2J0X3N3YXBfcG9z dGluZyhJbmRleFR1cGxlIG5ld2l0ZW0sIEluZGV4VHVwbGUgb3Bvc3RpbmcsCiBleHRlcm4g Ym9vbCBfYnRfZG9pbnNlcnQoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGl0dXAsCiAJCQkJ CQkgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwgYm9vbCBpbmRleFVuY2hhbmdlZCwK IAkJCQkJCSBSZWxhdGlvbiBoZWFwUmVsKTsKLWV4dGVybiB2b2lkIF9idF9maW5pc2hfc3Bs aXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjayk7Ci1leHRlcm4g QnVmZmVyIF9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIEJUU3RhY2sgc3RhY2ssIEJs b2NrTnVtYmVyIGNoaWxkKTsKK2V4dGVybiB2b2lkIF9idF9maW5pc2hfc3BsaXQoUmVsYXRp b24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgbGJ1ZiwKKwkJCQkJCQkgQlRTdGFj ayBzdGFjayk7CitleHRlcm4gQnVmZmVyIF9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWws IFJlbGF0aW9uIGhlYXByZWwsIEJUU3RhY2sgc3RhY2ssCisJCQkJCQkJICBCbG9ja051bWJl ciBjaGlsZCk7CiAKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gbmJ0c3Bs aXRsb2MuYwpAQCAtMTE5NywxNiArMTE5OSwxOCBAQCBleHRlcm4gT2Zmc2V0TnVtYmVyIF9i dF9maW5kc3BsaXRsb2MoUmVsYXRpb24gcmVsLCBQYWdlIG9yaWdwYWdlLAogICovCiBleHRl cm4gdm9pZCBfYnRfaW5pdG1ldGFwYWdlKFBhZ2UgcGFnZSwgQmxvY2tOdW1iZXIgcm9vdGJr bnVtLCB1aW50MzIgbGV2ZWwsCiAJCQkJCQkJIGJvb2wgYWxsZXF1YWxpbWFnZSk7Ci1leHRl cm4gYm9vbCBfYnRfdmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKTsKLWV4dGVy biB2b2lkIF9idF9zZXRfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIg bnVtX2RlbHBhZ2VzKTsKK2V4dGVybiBib29sIF9idF92YWN1dW1fbmVlZHNfY2xlYW51cChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIHZvaWQgX2J0X3NldF9j bGVhbnVwX2luZm8oUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLAorCQkJCQkJCQkg QmxvY2tOdW1iZXIgbnVtX2RlbHBhZ2VzKTsKIGV4dGVybiB2b2lkIF9idF91cGdyYWRlbWV0 YXBhZ2UoUGFnZSBwYWdlKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dldHJvb3QoUmVsYXRpb24g cmVsLCBpbnQgYWNjZXNzKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dldHRydWVyb290KFJlbGF0 aW9uIHJlbCk7Ci1leHRlcm4gaW50CV9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCk7 Ci1leHRlcm4gdm9pZCBfYnRfbWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBib29sICpoZWFw a2V5c3BhY2UsCitleHRlcm4gQnVmZmVyIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgUmVs YXRpb24gaGVhcHJlbCwgaW50IGFjY2Vzcyk7CitleHRlcm4gQnVmZmVyIF9idF9nZXR0cnVl cm9vdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIGludAlfYnRf Z2V0cm9vdGhlaWdodChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJu IHZvaWQgX2J0X21ldGF2ZXJzaW9uKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwg Ym9vbCAqaGVhcGtleXNwYWNlLAogCQkJCQkJCWJvb2wgKmFsbGVxdWFsaW1hZ2UpOwogZXh0 ZXJuIHZvaWQgX2J0X2NoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYpOwotZXh0 ZXJuIEJ1ZmZlciBfYnRfZ2V0YnVmKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8s IGludCBhY2Nlc3MpOworZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0YnVmKFJlbGF0aW9uIHJlbCwg UmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCisJCQkJCQkgaW50IGFjY2Vz cyk7CiBleHRlcm4gQnVmZmVyIF9idF9yZWxhbmRnZXRidWYoUmVsYXRpb24gcmVsLCBCdWZm ZXIgb2J1ZiwKIAkJCQkJCQkgICBCbG9ja051bWJlciBibGtubywgaW50IGFjY2Vzcyk7CiBl eHRlcm4gdm9pZCBfYnRfcmVsYnVmKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7CkBAIC0x MjI5LDIxICsxMjMzLDIyIEBAIGV4dGVybiB2b2lkIF9idF9wZW5kaW5nZnNtX2ZpbmFsaXpl KFJlbGF0aW9uIHJlbCwgQlRWYWNTdGF0ZSAqdnN0YXRlKTsKIC8qCiAgKiBwcm90b3R5cGVz IGZvciBmdW5jdGlvbnMgaW4gbmJ0c2VhcmNoLmMKICAqLwotZXh0ZXJuIEJUU3RhY2sgX2J0 X3NlYXJjaChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciAqYnVmUCwK LQkJCQkJCSAgaW50IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QpOwotZXh0ZXJuIEJ1ZmZl ciBfYnRfbW92ZXJpZ2h0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVy IGJ1ZiwKLQkJCQkJCQlib29sIGZvcnVwZGF0ZSwgQlRTdGFjayBzdGFjaywgaW50IGFjY2Vz cywgU25hcHNob3Qgc25hcHNob3QpOworZXh0ZXJuIEJUU3RhY2sgX2J0X3NlYXJjaChSZWxh dGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUU2Nhbkluc2VydCBrZXksCisJCQkJCQkg IEJ1ZmZlciAqYnVmUCwgaW50IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QpOworZXh0ZXJu IEJ1ZmZlciBfYnRfbW92ZXJpZ2h0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwg QlRTY2FuSW5zZXJ0IGtleSwKKwkJCQkJCQlCdWZmZXIgYnVmLCBib29sIGZvcnVwZGF0ZSwg QlRTdGFjayBzdGFjaywKKwkJCQkJCQlpbnQgYWNjZXNzLCBTbmFwc2hvdCBzbmFwc2hvdCk7 CiBleHRlcm4gT2Zmc2V0TnVtYmVyIF9idF9iaW5zcmNoX2luc2VydChSZWxhdGlvbiByZWws IEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpOwogZXh0ZXJuIGludDMyIF9idF9jb21wYXJl KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgUGFnZSBwYWdlLCBPZmZzZXROdW1i ZXIgb2ZmbnVtKTsKIGV4dGVybiBib29sIF9idF9maXJzdChJbmRleFNjYW5EZXNjIHNjYW4s IFNjYW5EaXJlY3Rpb24gZGlyKTsKIGV4dGVybiBib29sIF9idF9uZXh0KEluZGV4U2NhbkRl c2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0X2Vu ZHBvaW50KFJlbGF0aW9uIHJlbCwgdWludDMyIGxldmVsLCBib29sIHJpZ2h0bW9zdCwKLQkJ CQkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCk7CitleHRlcm4gQnVmZmVyIF9idF9nZXRfZW5k cG9pbnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCB1aW50MzIgbGV2ZWwsCisJ CQkJCQkJICAgYm9vbCByaWdodG1vc3QsIFNuYXBzaG90IHNuYXBzaG90KTsKIAogLyoKICAq IHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBuYnR1dGlscy5jCiAgKi8KLWV4dGVybiBC VFNjYW5JbnNlcnQgX2J0X21rc2NhbmtleShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1 cCk7CitleHRlcm4gQlRTY2FuSW5zZXJ0IF9idF9ta3NjYW5rZXkoUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiBoZWFwcmVsLCBJbmRleFR1cGxlIGl0dXApOwogZXh0ZXJuIHZvaWQgX2J0X2Zy ZWVzdGFjayhCVFN0YWNrIHN0YWNrKTsKIGV4dGVybiB2b2lkIF9idF9wcmVwcm9jZXNzX2Fy cmF5X2tleXMoSW5kZXhTY2FuRGVzYyBzY2FuKTsKIGV4dGVybiB2b2lkIF9idF9zdGFydF9h cnJheV9rZXlzKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9uYnR4bG9nLmgKaW5kZXggN2RkNjcyNTdmMi4uODIzYzcwMGRlZSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvbmJ0eGxvZy5oCkBAIC0xODgsOSArMTg4LDExIEBAIHR5cGVkZWYgc3RydWN0IHhsX2J0 cmVlX3JldXNlX3BhZ2UKIAlSZWxGaWxlTG9jYXRvciBsb2NhdG9yOwogCUJsb2NrTnVtYmVy IGJsb2NrOwogCUZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwor CWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZs aWN0IGR1cmluZyBsb2dpY2FsCisJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8K IH0geGxfYnRyZWVfcmV1c2VfcGFnZTsKIAotI2RlZmluZSBTaXplT2ZCdHJlZVJldXNlUGFn ZQkoc2l6ZW9mKHhsX2J0cmVlX3JldXNlX3BhZ2UpKQorI2RlZmluZSBTaXplT2ZCdHJlZVJl dXNlUGFnZQkob2Zmc2V0b2YoeGxfYnRyZWVfcmV1c2VfcGFnZSwgaXNDYXRhbG9nUmVsKSAr IHNpemVvZihib29sKSkKIAogLyoKICAqIHhsX2J0cmVlX3ZhY3V1bSBhbmQgeGxfYnRyZWVf ZGVsZXRlIHJlY29yZHMgZGVzY3JpYmUgZGVsZXRpb24gb2YgaW5kZXgKQEAgLTIzNSw2ICsy MzcsOCBAQCB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9kZWxldGUKIAlUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCXVpbnQxNgkJbmRlbGV0ZWQ7CiAJdWludDE2 CQludXBkYXRlZDsKKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7CS8qIHRvIGhhbmRsZSBy ZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAorCQkJCQkJCQkgKiBkZWNvZGluZyBv biBzdGFuZGJ5ICovCiAKIAkvKi0tLS0KIAkgKiBJbiBwYXlsb2FkIG9mIGJsayAwIDoKQEAg LTI0NSw3ICsyNDksNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9kZWxldGUKIAkgKi8K IH0geGxfYnRyZWVfZGVsZXRlOwogCi0jZGVmaW5lIFNpemVPZkJ0cmVlRGVsZXRlCShvZmZz ZXRvZih4bF9idHJlZV9kZWxldGUsIG51cGRhdGVkKSArIHNpemVvZih1aW50MTYpKQorI2Rl ZmluZSBTaXplT2ZCdHJlZURlbGV0ZQkob2Zmc2V0b2YoeGxfYnRyZWVfZGVsZXRlLCBpc0Nh dGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiAvKgogICogVGhlIG9mZnNldHMgdGhhdCBh cHBlYXIgaW4geGxfYnRyZWVfdXBkYXRlIG1ldGFkYXRhIGFyZSBvZmZzZXRzIGludG8gdGhl CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3NwZ3hsb2cuaAppbmRleCBiOWQ2NzUzNTMzLi43NTI2N2E0OTE0IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9zcGd4bG9nLmgKQEAgLTI0MCw2ICsyNDAsOCBAQCB0eXBlZGVmIHN0cnVjdCBz cGd4bG9nVmFjdXVtUmVkaXJlY3QKIAl1aW50MTYJCW5Ub1BsYWNlaG9sZGVyOyAvKiBudW1i ZXIgb2YgcmVkaXJlY3RzIHRvIG1ha2UgcGxhY2Vob2xkZXJzICovCiAJT2Zmc2V0TnVtYmVy IGZpcnN0UGxhY2Vob2xkZXI7CS8qIGZpcnN0IHBsYWNlaG9sZGVyIHR1cGxlIHRvIHJlbW92 ZSAqLwogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CS8qIG5ld2Vz dCBYSUQgb2YgcmVtb3ZlZCByZWRpcmVjdHMgKi8KKwlib29sICAgICAgICBpc0NhdGFsb2dS ZWw7CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAorCQkJ CQkJCQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAKIAkvKiBvZmZzZXRzIG9mIHJlZGly ZWN0IHR1cGxlcyB0byBtYWtlIHBsYWNlaG9sZGVycyBmb2xsb3cgKi8KIAlPZmZzZXROdW1i ZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv dmlzaWJpbGl0eW1hcGRlZnMuaAppbmRleCA5MTY1Yjk0NTZiLi43MzA2YTFjM2VlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaApAQCAtMTcsOSArMTcsMTEg QEAKICNkZWZpbmUgQklUU19QRVJfSEVBUEJMT0NLIDIKIAogLyogRmxhZ3MgZm9yIGJpdCBt YXAgKi8KLSNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRQkweDAxCi0jZGVmaW5l IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkweDAyCi0jZGVmaW5lIFZJU0lCSUxJVFlNQVBf VkFMSURfQklUUwkweDAzCS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCi0JCQkJ CQkJCQkJCSAqIGZsYWdzIGJpdHMgKi8KKyNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExfVklT SUJMRQkJCQkJCQkJMHgwMQorI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4JCQkJ CQkJCTB4MDIKKyNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTCQkJCQkJCQkweDAz CS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCisJCQkJCQkJCQkJCQkJCQkJCQkg KiBmbGFncyBiaXRzICovCisjZGVmaW5lIFZJU0lCSUxJVFlNQVBfSVNfQ0FUQUxPR19SRUwJ CQkJCQkJMHgwNAkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxvZ2lj YWwKKwkJCQkJCQkJCQkJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAogI2Vu ZGlmCQkJCQkJCS8qIFZJU0lCSUxJVFlNQVBERUZTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggYzBk ZGRkYjJmMC4uMzFmODRlOTBlYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTE2LDYgKzE2LDcgQEAKIAog I2luY2x1ZGUgImFjY2Vzcy90dXBkZXNjLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIK KyNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Ns YXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19pbmRleC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfcHVibGljYXRpb24uaCIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1 cGxlc29ydC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKaW5kZXggMTI1Nzhl NDJiYy4uMzk1YWJmZTU5NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVz b3J0LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKQEAgLTM5OSw3ICsz OTksOSBAQCBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9oZWFwKFR1 cGxlRGVzYyB0dXBEZXNjLAogCQkJCQkJCQkJCQlpbnQgd29ya01lbSwgU29ydENvb3JkaW5h dGUgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJaW50IHNvcnRvcHQpOwogZXh0ZXJuIFR1cGxl c29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihUdXBsZURlc2MgdHVwRGVzYywK LQkJCQkJCQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWwsIGludCB3b3JrTWVtLAorCQkJCQkJ CQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbCwKKwkJCQkJCQkJCQkJICAgUmVsYXRpb24gaGVh cHJlbCwKKwkJCQkJCQkJCQkJICAgaW50IHdvcmtNZW0sCiAJCQkJCQkJCQkJCSAgIFNvcnRD b29yZGluYXRlIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCSAgIGludCBzb3J0b3B0KTsKIGV4 dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0 aW9uIGhlYXBSZWwsCi0tIAoyLjM0LjEKCg== --------------cEK8MlHwlkB6EI0U6V6XX6R3--