Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sjfIQ-002l3s-9M for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Aug 2024 13:34:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sjfIO-002UmQ-Dz for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Aug 2024 13:34:40 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sjfIN-002UmI-Rr for pgsql-hackers@lists.postgresql.org; Thu, 29 Aug 2024 13:34:40 +0000 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sjfIJ-0025SH-Is for pgsql-hackers@postgresql.org; Thu, 29 Aug 2024 13:34:39 +0000 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-7cd9e634ea9so427647a12.0 for ; Thu, 29 Aug 2024 06:34:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724938475; x=1725543275; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=zEDvHy/nw83wwP5OnctdNU+GcdXfesneg+irX+J406g=; b=hlAvdOJKhbMkEhnIzR0xzlkc2iETu9Zz/guiX7dZGumpMrgbOoDaR5Eg0pyoxodKos ykuS2MIooza5eF3ESbohZ2Fb0TBaYp8ApC+Gota1YhJ/NJjf4blQb3htI+Z/WObPWBWq g4MZJH+ntHjZTvHs1XCwKJupb/rnuXcHa/37ipbrZ5ZDRFHvLhf99IL7mmjEf9e3eY5h zRFJdmIC8eXMmcTL8kYgz6cWYboMwaSBaO7526g7MzuDb0l+XBtPQMBeo2OvpDgsz2zc hPRsnB3YU0L/Jlk8M+hQQz9Q1/JGjGf8D+5CGwJDHNFHuR3gSdEdfp25krK9/S5XZZ+/ Hptg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724938475; x=1725543275; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=zEDvHy/nw83wwP5OnctdNU+GcdXfesneg+irX+J406g=; b=C5krfC6EK195obWfa5GP4bQ9j6uuFYR/U6wcouIbs7LRkXbHSzFltXLbkmt602WTzX UQ0jFgXDj6yisJ1ByifBGdoIqaa0PBj9Cn0WbttGmMtn7K89NuOrQ709aXW6yJf6yRI5 WGO87CmCvUkd9dRL9SR5woM8SVTkxnc6+GVaAdZQyekNG57bca9CLydaf0kOc8HeSqsa LTRnUQs/eQ+oj0MWx5mMld80ZdRAtKS6tt622b6Se/OHfNDu+qy/bY6DEWaM6GF/El2K bxieQmTTC7xRz6dmbGj3inH2WCoWQpiCWjl8HAIrPGNbYzRKrb7KTc/784uoxgh/d5uV ewCA== X-Forwarded-Encrypted: i=1; AJvYcCVoJ9WSL/8MzdgB7SMHp8g3TPDUp2uw9jHWoQlxFkl/t95B2XtrlhXDaJN1Z/D9JUacFJTOL6ONKGLhNYXP@postgresql.org X-Gm-Message-State: AOJu0Yx6SaidBai5v+7BOxhtfjsbobyyHDfKzF+VNBXNyku0At4a5iZ4 qvfYknVSI2nwNsyYrGX2HRVeytcSFSQq1YIwSFAG7CkQ1d+Sq1z2jMJ2zJCv2wJO7nYN4oG6QOc N8/qp4y43b7jlVbX2AKjlsZscB78= X-Google-Smtp-Source: AGHT+IFIip/Z8Rc55ID5ah9YdwxrpNj8fK1VQG6pQWJe8K202CmwnmJoI04UQhbxizG+Q27Lw7PQRkmniMQd+ex+Pk8= X-Received: by 2002:a05:6a20:a823:b0:1cc:e4a9:915b with SMTP id adf61e73a8af0-1cce4a99169mr1286917637.47.1724938474528; Thu, 29 Aug 2024 06:34:34 -0700 (PDT) MIME-Version: 1.0 References: <202406191709.jbvpf7d7hl6g@alvherre.pgsql> In-Reply-To: From: Amit Langote Date: Thu, 29 Aug 2024 22:34:17 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Robert Haas Cc: Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="00000000000008ca1c0620d2895c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000008ca1c0620d2895c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Aug 23, 2024 at 9:48=E2=80=AFPM Amit Langote wrote: > On Wed, Aug 21, 2024 at 10:10=E2=80=AFPM Robert Haas wrote: > > On Wed, Aug 21, 2024 at 8:45=E2=80=AFAM Amit Langote wrote: > > > * The replanning aspect of the lock-in-the-executor design would be > > > simpler if a CachedPlan contained the plan for a single query rather > > > than a list of queries, as previously mentioned. This is particularly > > > due to the requirements of the PORTAL_MULTI_QUERY case. However, this > > > option might be impractical. > > > > It might be, but maybe it would be worth a try? I mean, > > GetCachedPlan() seems to just call pg_plan_queries() which just loops > > over the list of query trees and does the same thing for each one. If > > we wanted to replan a single query, why couldn't we do > > fake_querytree_list =3D list_make1(list_nth(querytree_list, n)) and the= n > > call pg_plan_queries(fake_querytree_list)? Or something equivalent to > > that. We could have a new GetCachedSinglePlan(cplan, n) to do this. > > I've been hacking to prototype this, and it's showing promise. It > helps make the replan loop at the call sites that start the executor > with an invalidatable plan more localized and less prone to > action-at-a-distance issues. However, the interface and contract of > the new function in my prototype are pretty specialized for the replan > loop in this context=E2=80=94meaning it's not as general-purpose as > GetCachedPlan(). Essentially, what you get when you call it is a > 'throwaway' CachedPlan containing only the plan for the query that > failed during ExecutorStart(), not a plan integrated into the original > CachedPlanSource's stmt_list. A call site entering the replan loop > will retry the execution with that throwaway plan, release it once > done, and resume looping over the plans in the original list. The > invalid plan that remains in the original list will be discarded and > replanned in the next call to GetCachedPlan() using the same > CachedPlanSource. While that may sound undesirable, I'm inclined to > think it's not something that needs optimization, given that we're > expecting this code path to be taken rarely. > > I'll post a version of a revamped locks-in-the-executor patch set > using the above function after debugging some more. Here it is. 0001 implements changes to defer the locking of runtime-prunable relations to the executor. The new design introduces a bitmapset field in PlannedStmt to distinguish at runtime between relations that are prunable whose locking can be deferred until ExecInitNode() and those that are not and must be locked in advance. The set of prunable relations can be constructed by looking at all the PartitionPruneInfos in the plan and checking which are subject to "initial" pruning steps. The set of unprunable relations is obtained by subtracting those from the set of all RT indexes. This design gets rid of one annoying aspect of the old design which was the need to add specialized fields to store the RT indexes of partitioned relations that are not otherwise referenced in the plan tree. That was necessary because in the old design, I had removed the function AcquireExecutorLocks() altogether to defer the locking of all child relations to execution. In the new design such relations are still locked by AcquireExecutorLocks(). 0002 is the old patch to make ExecEndNode() robust against partially initialized PlanState nodes by adding NULL checks. 0003 is the patch to add changes to deal with the CachedPlan becoming invalid before the deferred locks on prunable relations are taken. I've moved the replan loop into a new wrapper-over-ExecutorStart() function instead of having the same logic at multiple sites. The replan logic uses the GetSingleCachedPlan() described in the quoted text. The callers of the new ExecutorStart()-wrapper, which I've dubbed ExecutorStartExt(), need to pass the CachedPlanSource and a query_index, which is the index of the query being executed in the list CachedPlanSource.query_list. They are needed by GetSingleCachedPlan(). The changes outside the executor are pretty minimal in this design and all the difficulties of having to loop back to GetCachedPlan() are now gone. I like how this turned out. One idea that I think might be worth trying to reduce the footprint of 0003 is to try to lock the prunable relations in a step of InitPlan() separate from ExecInitNode(), which can be implemented by doing the initial runtime pruning in that separate step. That way, we'll have all the necessary locks before calling ExecInitNode() and so we don't need to sprinkle the CachedPlanStillValid() checks all over the place and worry about missed checks and dealing with partially initialized PlanState trees. --=20 Thanks, Amit Langote --00000000000008ca1c0620d2895c Content-Type: application/octet-stream; name="v51-0003-Handle-CachedPlan-invalidation-in-the-executor.patch" Content-Disposition: attachment; filename="v51-0003-Handle-CachedPlan-invalidation-in-the-executor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0fbnlxw0 RnJvbSA4ODc2MjdlYzQ0NTVhNzBhNzE2Y2U1NmYzODZmNzFkZjk1M2NkZjY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjIgQXVnIDIwMjQgMTk6Mzg6MTMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 MSAzLzNdIEhhbmRsZSBDYWNoZWRQbGFuIGludmFsaWRhdGlvbiBpbiB0aGUgZXhlY3V0b3IKClRo aXMgY29tbWl0IG1ha2VzIGNoYW5nZXMgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIGEgY2FjaGVkIHBs YW4KYmVjb21lcyBpbnZhbGlkIGJlZm9yZSBkZWZlcnJlZCBsb2NrcyBvbiBwcnVuYWJsZSByZWxh dGlvbnMgYXJlIHRha2VuLgoKKiBBZGQgY2hlY2tzIGF0IHZhcmlvdXMgcG9pbnRzIGluIEV4ZWN1 dG9yU3RhcnQoKSBhbmQgaXRzIGNhbGxlZAogIGZ1bmN0aW9ucyB0byBkZXRlcm1pbmUgaWYgdGhl IHBsYW4gYmVjb21lcyBpbnZhbGlkLiBJZiBkZXRlY3RlZCwKICB0aGUgZnVuY3Rpb24gYW5kIGl0 cyBjYWxsZXJzIHJldHVybiBpbW1lZGlhdGVseS4gQSBwcmV2aW91cyBjb21taXQKICBlbnN1cmVz IGFueSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgUGxhblN0YXRlIHRyZWUgb2JqZWN0cyBhcmUgY2xl YW5lZAogIHVwIGFwcHJvcHJpYXRlbHkuCgoqIEludHJvZHVjZSBFeGVjdXRvclN0YXJ0RXh0KCks IGEgd3JhcHBlciBvdmVyIEV4ZWN1dG9yU3RhcnQoKSwgdG8KICBoYW5kbGUgY2FzZXMgd2hlcmUg cGxhbiBpbml0aWFsaXphdGlvbiBpcyBhYm9ydGVkIGR1ZSB0byBpbnZhbGlkYXRpb24uCiAgRXhl Y3V0b3JTdGFydEV4dCgpIGNyZWF0ZXMgYSBuZXcgdHJhbnNpZW50IENhY2hlZFBsYW4gaWYgbmVl ZGVkIGFuZAogIHJldHJpZXMgZXhlY3V0aW9uLiBUaGlzIG5ldyBlbnRyeSBwb2ludCBpcyBvbmx5 IHJlcXVpcmVkIGZvciBzaXRlcwogIHVzaW5nIHBsYW5jYWNoZS5jLiBJdCByZXF1aXJlcyBwYXNz aW5nIHRoZSBRdWVyeURlc2MsIGVmbGFncywKICBDYWNoZWRQbGFuU291cmNlLCBhbmQgcXVlcnlf aW5kZXggKGluZGV4IGluIENhY2hlZFBsYW5Tb3VyY2UucXVlcnlfbGlzdCkuCgoqIEFkZCBHZXRT aW5nbGVDYWNoZWRQbGFuKCkgaW4gcGxhbmNhY2hlLmMgdG8gY3JlYXRlIGEgdHJhbnNpZW50CiAg Q2FjaGVkUGxhbiBmb3IgYSBzcGVjaWZpZWQgcXVlcnkgaW4gdGhlIGdpdmVuIENhY2hlZFBsYW5T b3VyY2UuCgpUaGlzIGFsc28gYWRkcyBpc29sYXRpb24gdGVzdHMgdXNpbmcgdGhlIGRlbGF5X2V4 ZWN1dGlvbiB0ZXN0IG1vZHVsZQp0byB2ZXJpZnkgc2NlbmFyaW9zIHdoZXJlIGEgQ2FjaGVkUGxh biBiZWNvbWVzIGludmFsaWQgYmVmb3JlIHRoZQpkZWZlcnJlZCBsb2NrcyBhcmUgdGFrZW4uCgpB bGwgRXhlY3V0b3JTdGFydF9ob29rIGltcGxlbWVudGF0aW9ucyBub3cgbXVzdCBhZGQgdGhlIGZv bGxvd2luZwpibG9jayBhZnRlciB0aGUgRXhlY3V0b3JTdGFydCgpIGNhbGwgdG8gZW5zdXJlIGl0 IGRvZXNuJ3Qgd29yayB3aXRoIGFuCmludmFsaWQgcGxhbjoKCiAgICAvKiBUaGUgcGxhbiBtYXkg aGF2ZSBiZWNvbWUgaW52YWxpZCBkdXJpbmcgRXhlY3V0b3JTdGFydCgpICovCiAgICBpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChxdWVyeURlc2MtPmVzdGF0ZSkpCiAgICAgICAgcmV0dXJuOwoKUmV2 aWV3ZWQtYnk6IFJvYmVydCBIYWFzCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0Er SGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3b29pdEVFcGJLQjBPX21nQG1haWwuZ21h aWwuY29tawotLS0KIGNvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jICAgICAgICAg ICB8ICAgNCArCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jICAg fCAgIDQgKwogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgICAgIHwg IDM2ICsrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8 ICAgOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8ICAx MCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAgICAgICAgICAgIHwgIDE0 ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgICAgICAgICAgICAgICAgICAgfCAgMzIg KysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgIDkx ICsrKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgICAg IHwgICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICAgICAgICAg fCAgMTAgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAgICAgIHwg ICA3ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICA0 MiArKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jICAgICAgICAgICAgICAgIHwg ICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICAgICAgICB8ICAx MiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jICAgICAgICAgIHwgICAy ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jICAgICB8ICAgNCAr CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgICAgfCAgIDYgKy0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jICAgICAgICAgICB8ICAgMiArCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMgICAgICAgICAgICAgfCAgIDIgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgICAgICAgIHwgICA0ICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYyAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVIYXNoLmMgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSGFzaGpvaW4uYyAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5jICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTGltaXQuYyAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUxvY2tSb3dzLmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNYXRlcmlhbC5jICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVtb2l6ZS5jICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVy Z2Vqb2luLmMgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmMgICAgICAgIHwgIDEzICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxv b3AuYyAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RT ZXQuYyAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1 bmlvbi5jICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMgICAg ICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYyAg ICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAg ICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyAgICAgICAgICAg ICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyAgICAgICAgICAgICAg IHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYyAgICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMgICAgICAgfCAg IDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyAgICAgICAgICAgIHwgICAy ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYyAgICAgICAgICAgICB8ICAgMiAr CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgICAgfCAgIDIgKwog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAgICAgICAgIHwgIDE5ICstCiBz cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNy Yy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgICAgICAgICAgICB8ICAzMSArKystCiBz cmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAgICAgICAgICAgfCAgNTAgKysrKysK IHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAgICAgICAgICB8ICAgNCArLQog c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAgIHwgIDE4ICsrCiBzcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1 ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDE4ICsrCiBzcmMvaW5jbHVk ZS91dGlscy9wb3J0YWwuaCAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy90ZXN0L21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlICAgICB8ICAgMyArLQogLi4uL21vZHVsZXMv ZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIHwgIDYzICsrKysrKy0KIC4uLi9leHBl Y3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQgICAgICAgICAgICB8IDE3NSArKysrKysrKysrKysr KysrKysKIHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1aWxkICB8ICAg MSArCiAuLi4vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYyAgICAgICAgICAgICAgfCAgNjUg KysrKysrKwogNjYgZmlsZXMgY2hhbmdlZCwgNzkwIGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9u L2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLWludmFsLnNwZWMK CmRpZmYgLS1naXQgYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYyBiL2NvbnRy aWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCmluZGV4IDY3N2MxMzVmNTkuLjM2NzVjZTlh ODggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCisrKyBi L2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCkBAIC0zMDAsNiArMzAwLDEwIEBA IGV4cGxhaW5fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykK IAllbHNlCiAJCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCisJ LyogVGhlIHBsYW4gbWF5IGhhdmUgYmVjb21lIGludmFsaWQgZHVyaW5nIEV4ZWN1dG9yU3RhcnQo KSAqLworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKHF1ZXJ5RGVzYy0+ZXN0YXRlKSkKKwkJcmV0 dXJuOworCiAJaWYgKGF1dG9fZXhwbGFpbl9lbmFibGVkKCkpCiAJewogCQkvKgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250 cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRleCAzNjJkMjIy ZjYzLi45OGEzMjhiNzlmIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9w Z19zdGF0X3N0YXRlbWVudHMuYworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19z dGF0X3N0YXRlbWVudHMuYwpAQCAtOTkyLDYgKzk5MiwxMCBAQCBwZ3NzX0V4ZWN1dG9yU3RhcnQo UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJZWxzZQogCQlzdGFuZGFyZF9FeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAorCS8qIFRoZSBwbGFuIG1heSBoYXZlIGJl Y29tZSBpbnZhbGlkIGR1cmluZyBFeGVjdXRvclN0YXJ0KCkgKi8KKwlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChxdWVyeURlc2MtPmVzdGF0ZSkpCisJCXJldHVybjsKKwogCS8qCiAJICogSWYgcXVl cnkgaGFzIHF1ZXJ5SWQgemVybywgZG9uJ3QgdHJhY2sgaXQuICBUaGlzIHByZXZlbnRzIGRvdWJs ZQogCSAqIGNvdW50aW5nIG9mIG9wdGltaXphYmxlIHN0YXRlbWVudHMgdGhhdCBhcmUgZGlyZWN0 bHkgY29udGFpbmVkIGluCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jl c19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IGFkYzYy NTc2ZDEuLjY1ZjRmZmU1ZWUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3Rn cmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0y MTQ0LDcgKzIxNDQsMTEgQEAgcG9zdGdyZXNFbmRGb3JlaWduTW9kaWZ5KEVTdGF0ZSAqZXN0YXRl LAogewogCVBnRmR3TW9kaWZ5U3RhdGUgKmZtc3RhdGUgPSAoUGdGZHdNb2RpZnlTdGF0ZSAqKSBy ZXN1bHRSZWxJbmZvLT5yaV9GZHdTdGF0ZTsKIAotCS8qIElmIGZtc3RhdGUgaXMgTlVMTCwgd2Ug YXJlIGluIEVYUExBSU47IG5vdGhpbmcgdG8gZG8gKi8KKwkvKgorCSAqIGZtc3RhdGUgY291bGQg YmUgTlVMTCB1bmRlciB0d28gY29uZGl0aW9uczogZHVyaW5nIGFuIEVYUExBSU4KKwkgKiBvcGVy YXRpb24gb3IgaWYgQmVnaW5Gb3JlaWduTW9kaWZ5KCkgaGFzbid0IGJlZW4gaW52b2tlZC4KKwkg KiBJbiBlaXRoZXIgY2FzZSwgbm8gYWN0aW9uIGlzIHJlcXVpcmVkLgorCSAqLwogCWlmIChmbXN0 YXRlID09IE5VTEwpCiAJCXJldHVybjsKIApAQCAtMjY1MCw4ICsyNjU0LDkgQEAgcG9zdGdyZXNC ZWdpbkRpcmVjdE1vZGlmeShGb3JlaWduU2NhblN0YXRlICpub2RlLCBpbnQgZWZsYWdzKQogewog CUZvcmVpZ25TY2FuICpmc3BsYW4gPSAoRm9yZWlnblNjYW4gKikgbm9kZS0+c3MucHMucGxhbjsK IAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOworCVJlbGF0aW9uCXJlbCA9 IG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbjsKIAlQZ0Zkd0RpcmVjdE1vZGlmeVN0YXRlICpk bXN0YXRlOwotCUluZGV4CQlydGluZGV4OworCUluZGV4CQlydGluZGV4ID0gbm9kZS0+cmVzdWx0 UmVsSW5mby0+cmlfUmFuZ2VUYWJsZUluZGV4OwogCU9pZAkJCXVzZXJpZDsKIAlGb3JlaWduVGFi bGUgKnRhYmxlOwogCVVzZXJNYXBwaW5nICp1c2VyOwpAQCAtMjY2MywyNCArMjY2OCwzMiBAQCBw b3N0Z3Jlc0JlZ2luRGlyZWN0TW9kaWZ5KEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUsIGludCBlZmxh Z3MpCiAJaWYgKGVmbGFncyAmIEVYRUNfRkxBR19FWFBMQUlOX09OTFkpCiAJCXJldHVybjsKIAor CS8qCisJICogT3BlbiB0aGUgZm9yZWlnbiB0YWJsZSB1c2luZyB0aGUgUlQgaW5kZXggZ2l2ZW4g aW4gdGhlIFJlc3VsdFJlbEluZm8gaWYKKwkgKiB0aGUgU2NhblN0YXRlIGRvZXNuJ3QgcHJvdmlk ZSBpdC4gIElmIHRoZSBwbGFuIGJlY29tZXMgaW52YWxpZCBhcyBhCisJICogcmVzdWx0IG9mIHRh a2luZyBhIGxvY2sgaW4gRXhlY09wZW5TY2FuUmVsYXRpb24oKSwgZG8gbm90aGluZywgaW4gd2hp Y2gKKwkgKiBjYXNlIG5vZGUtPmZkd19zdGF0ZSByZW1haW5zIE5VTEwuCisJICovCisJaWYgKHJl bCA9PSBOVUxMKQorCXsKKwkJQXNzZXJ0KGZzcGxhbi0+c2Nhbi5zY2FucmVsaWQgPT0gMCk7CisJ CXJlbCA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgcnRpbmRleCwgZWZsYWdzKTsKKwkJ aWYgKHVubGlrZWx5KHJlbCA9PSBOVUxMIHx8ICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkp CisJCQlyZXR1cm47CisJfQorCiAJLyoKIAkgKiBXZSdsbCBzYXZlIHByaXZhdGUgc3RhdGUgaW4g bm9kZS0+ZmR3X3N0YXRlLgogCSAqLwogCWRtc3RhdGUgPSAoUGdGZHdEaXJlY3RNb2RpZnlTdGF0 ZSAqKSBwYWxsb2MwKHNpemVvZihQZ0Zkd0RpcmVjdE1vZGlmeVN0YXRlKSk7CiAJbm9kZS0+ZmR3 X3N0YXRlID0gKHZvaWQgKikgZG1zdGF0ZTsKKwlkbXN0YXRlLT5yZWwgPSByZWw7CiAKIAkvKgog CSAqIElkZW50aWZ5IHdoaWNoIHVzZXIgdG8gZG8gdGhlIHJlbW90ZSBhY2Nlc3MgYXMuICBUaGlz IHNob3VsZCBtYXRjaCB3aGF0CiAJICogRXhlY0NoZWNrUGVybWlzc2lvbnMoKSBkb2VzLgogCSAq LwogCXVzZXJpZCA9IE9pZElzVmFsaWQoZnNwbGFuLT5jaGVja0FzVXNlcikgPyBmc3BsYW4tPmNo ZWNrQXNVc2VyIDogR2V0VXNlcklkKCk7Ci0KLQkvKiBHZXQgaW5mbyBhYm91dCBmb3JlaWduIHRh YmxlLiAqLwotCXJ0aW5kZXggPSBub2RlLT5yZXN1bHRSZWxJbmZvLT5yaV9SYW5nZVRhYmxlSW5k ZXg7Ci0JaWYgKGZzcGxhbi0+c2Nhbi5zY2FucmVsaWQgPT0gMCkKLQkJZG1zdGF0ZS0+cmVsID0g RXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBydGluZGV4LCBlZmxhZ3MpOwotCWVsc2UKLQkJ ZG1zdGF0ZS0+cmVsID0gbm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uOwogCXRhYmxlID0gR2V0 Rm9yZWlnblRhYmxlKFJlbGF0aW9uR2V0UmVsaWQoZG1zdGF0ZS0+cmVsKSk7CiAJdXNlciA9IEdl dFVzZXJNYXBwaW5nKHVzZXJpZCwgdGFibGUtPnNlcnZlcmlkKTsKIApAQCAtMjgxMSw3ICsyODI0 LDEwIEBAIHBvc3RncmVzRW5kRGlyZWN0TW9kaWZ5KEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUpCiB7 CiAJUGdGZHdEaXJlY3RNb2RpZnlTdGF0ZSAqZG1zdGF0ZSA9IChQZ0Zkd0RpcmVjdE1vZGlmeVN0 YXRlICopIG5vZGUtPmZkd19zdGF0ZTsKIAotCS8qIGlmIGRtc3RhdGUgaXMgTlVMTCwgd2UgYXJl IGluIEVYUExBSU47IG5vdGhpbmcgdG8gZG8gKi8KKwkvKgorCSAqIE5vdGhpbmcgdG8gZG8gaWYg ZG1zdGF0ZSBpcyBOVUxMLCBlaXRoZXIgYmVjYXVzZSB3ZSBhcmUgaW4gRVhQTEFJTiBvcgorCSAq IGRtc3RhdGUgd2Fzbid0IGluaXRpYWxpemVkIGR1ZSB0byBhYm9ydGVkIHBsYW4gaW5pdGlhbGl6 YXRpb24uCisJICovCiAJaWYgKGRtc3RhdGUgPT0gTlVMTCkKIAkJcmV0dXJuOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9leHBsYWluLmMKaW5kZXggYTgzZWEwN2RiMS4uYTc2NDMzNjBhNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYwpAQCAtNTA3LDcgKzUwNyw4IEBAIHN0YW5kYXJkX0V4cGxhaW5PbmVRdWVyeShRdWVy eSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCX0KIAogCS8qIHJ1biBpdCAoaWYgbmVlZGVk KSBhbmQgcHJvZHVjZSBvdXRwdXQgKi8KLQlFeHBsYWluT25lUGxhbihwbGFuLCBOVUxMLCBpbnRv LCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCisJRXhwbGFpbk9uZVBsYW4ocGxh biwgTlVMTCwgTlVMTCwgLTEsIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLAorCQkJCSAg IHF1ZXJ5RW52LAogCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2Fn ZSA6IE5VTEwpLAogCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJzIDogTlVMTCk7CiB9 CkBAIC02MTYsNiArNjE3LDcgQEAgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQs IEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAgKi8KIHZvaWQKIEV4cGxhaW5P bmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkg ICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgsCiAJCQkgICBJ bnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJICAgY29uc3QgY2hhciAqcXVl cnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAgUXVlcnlFbnZpcm9ubWVudCAq cXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKQEAgLTY4Niw4ICs2ODgs OCBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIENhY2hlZFBsYW4g KmNwbGFuLAogCWlmIChpbnRvKQogCQllZmxhZ3MgfD0gR2V0SW50b1JlbEVGbGFncyhpbnRvKTsK IAotCS8qIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRp b24gKi8KLQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkvKiBDYWxsIEV4ZWN1 dG9yU3RhcnRFeHQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLiAqLworCUV4ZWN1 dG9yU3RhcnRFeHQocXVlcnlEZXNjLCBlZmxhZ3MsIHBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4KTsK IAogCS8qIEV4ZWN1dGUgdGhlIHBsYW4gZm9yIHN0YXRpc3RpY3MgaWYgYXNrZWQgZm9yICovCiAJ aWYgKGVzLT5hbmFseXplKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFs Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCmluZGV4IDRmNmFjZjY3 MTkuLjRiMTUwM2MwNWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKQEAgLTEwNyw2ICsx MDcsNyBAQCBQZXJmb3JtQ3Vyc29yT3BlbihQYXJzZVN0YXRlICpwc3RhdGUsIERlY2xhcmVDdXJz b3JTdG10ICpjc3RtdCwgUGFyYW1MaXN0SW5mbyBwYQogCQkJCQkgIHF1ZXJ5U3RyaW5nLAogCQkJ CQkgIENNRFRBR19TRUxFQ1QsCS8qIGN1cnNvcidzIHF1ZXJ5IGlzIGFsd2F5cyBhIFNFTEVDVCAq LwogCQkJCQkgIGxpc3RfbWFrZTEocGxhbiksCisJCQkJCSAgTlVMTCwKIAkJCQkJICBOVUxMKTsK IAogCS8qLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFy ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDMxMWI5ZWJkNWIuLjRj ZDc5YTZlM2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTIwMiw3ICsyMDIsOCBAQCBFeGVj dXRlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJ ICBlbnRyeS0+cGxhbnNvdXJjZS0+Y29tbWFuZFRhZywKIAkJCQkJICBwbGFuX2xpc3QsCi0JCQkJ CSAgY3BsYW4pOworCQkJCQkgIGNwbGFuLAorCQkJCQkgIGVudHJ5LT5wbGFuc291cmNlKTsKIAog CS8qCiAJICogRm9yIENSRUFURSBUQUJMRSAuLi4gQVMgRVhFQ1VURSwgd2UgbXVzdCB2ZXJpZnkg dGhhdCB0aGUgcHJlcGFyZWQKQEAgLTU4Myw2ICs1ODQsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5 KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICpl cywKIAlNZW1vcnlDb250ZXh0Q291bnRlcnMgbWVtX2NvdW50ZXJzOwogCU1lbW9yeUNvbnRleHQg cGxhbm5lcl9jdHggPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgc2F2ZWRfY3R4ID0gTlVMTDsKKwlp bnQJCQlpID0gMDsKIAogCWlmIChlcy0+bWVtb3J5KQogCXsKQEAgLTY1NSw4ICs2NTcsOCBAQCBF eHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50 bywgRXhwbGFpblN0YXRlICplcywKIAkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25vZGUo UGxhbm5lZFN0bXQsIHApOwogCiAJCWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJ VFkpCi0JCQlFeHBsYWluT25lUGxhbihwc3RtdCwgY3BsYW4sIGludG8sIGVzLCBxdWVyeV9zdHJp bmcsIHBhcmFtTEksCi0JCQkJCQkgICBxdWVyeUVudiwKKwkJCUV4cGxhaW5PbmVQbGFuKHBzdG10 LCBjcGxhbiwgZW50cnktPnBsYW5zb3VyY2UsIGksCisJCQkJCQkgICBpbnRvLCBlcywgcXVlcnlf c3RyaW5nLCBwYXJhbUxJLCBxdWVyeUVudiwKIAkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+ YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpLAogCQkJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1f Y291bnRlcnMgOiBOVUxMKTsKIAkJZWxzZQpAQCAtNjY4LDYgKzY3MCw4IEBAIEV4cGxhaW5FeGVj dXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWlu U3RhdGUgKmVzLAogCQkvKiBTZXBhcmF0ZSBwbGFucyB3aXRoIGFuIGFwcHJvcHJpYXRlIHNlcGFy YXRvciAqLwogCQlpZiAobG5leHQocGxhbl9saXN0LCBwKSAhPSBOVUxMKQogCQkJRXhwbGFpblNl cGFyYXRlUGxhbnMoZXMpOworCisJCWkrKzsKIAl9CiAKIAlpZiAoZXN0YXRlKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jCmluZGV4IDE3MDM2MGVkZGEuLjkxZTRiODIxYTAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmln Z2VyLmMKQEAgLTUxMTksNiArNTExOSwyMCBAQCBBZnRlclRyaWdnZXJFbmRRdWVyeShFU3RhdGUg KmVzdGF0ZSkKIAlhZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoLS07CiB9CiAKKy8qIC0tLS0tLS0t LS0KKyAqIEFmdGVyVHJpZ2dlckFib3J0UXVlcnkoKQorICoKKyAqIENhbGxlZCBieSBFeGVjdXRv ckVuZCgpIGlmIHRoZSBxdWVyeSBleGVjdXRpb24gd2FzIGFib3J0ZWQgZHVlIHRvIHRoZQorICog cGxhbiBiZWNvbWluZyBpbnZhbGlkIGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAqIC0tLS0tLS0t LS0KKyAqLwordm9pZAorQWZ0ZXJUcmlnZ2VyQWJvcnRRdWVyeSh2b2lkKQoreworCS8qIFJldmVy dCB0aGUgYWN0aW9ucyBvZiBBZnRlclRyaWdnZXJCZWdpblF1ZXJ5KCkuICovCisJYWZ0ZXJUcmln Z2Vycy5xdWVyeV9kZXB0aC0tOworfQorCiAKIC8qCiAgKiBBZnRlclRyaWdnZXJGcmVlUXVlcnkK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL1JFQURNRQppbmRleCA2NDJkNjNiZTYxLi5lNTgzZGY1YmUwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVB RE1FCkBAIC0yODAsNiArMjgwLDI4IEBAIGFyZSB0eXBpY2FsbHkgcmVzZXQgdG8gZW1wdHkgb25j ZSBwZXIgdHVwbGUuICBQZXItdHVwbGUgY29udGV4dHMgYXJlIHVzdWFsbHkKIGFzc29jaWF0ZWQg d2l0aCBFeHByQ29udGV4dHMsIGFuZCBjb21tb25seSBlYWNoIFBsYW5TdGF0ZSBub2RlIGhhcyBp dHMgb3duCiBFeHByQ29udGV4dCB0byBldmFsdWF0ZSBpdHMgcXVhbCBhbmQgdGFyZ2V0bGlzdCBl eHByZXNzaW9ucyBpbi4KIAorUmVsYXRpb24gTG9ja2luZworLS0tLS0tLS0tLS0tLS0tLQorCitU eXBpY2FsbHksIHdoZW4gdGhlIGV4ZWN1dG9yIGluaXRpYWxpemVzIGEgcGxhbiB0cmVlIGZvciBl eGVjdXRpb24sIGl0IGRvZXNuJ3QKK2xvY2sgbm9uLWluZGV4IHJlbGF0aW9ucyBpZiB0aGUgcGxh biB0cmVlIGlzIGZyZXNobHkgZ2VuZXJhdGVkIGFuZCBub3QgZGVyaXZlZAorZnJvbSBhIENhY2hl ZFBsYW4uIFRoaXMgaXMgYmVjYXVzZSBzdWNoIGxvY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGVzdGFi bGlzaGVkCitkdXJpbmcgdGhlIHF1ZXJ5J3MgcGFyc2luZywgcmV3cml0aW5nLCBhbmQgcGxhbm5p bmcgcGhhc2VzLiBIb3dldmVyLCB3aXRoIGEKK2NhY2hlZCBwbGFuIHRyZWUsIHNvbWUgcmVsYXRp b25zIG1heSByZW1haW4gdW5sb2NrZWQuIFRoZSBmdW5jdGlvbgorQWNxdWlyZUV4ZWN1dG9yTG9j a3MoKSBvbmx5IGxvY2tzIHVucHJ1bmFibGUgcmVsYXRpb25zIGluIHRoZSBwbGFuLCBkZWZlcnJp bmcKK3RoZSBsb2NraW5nIG9mIHBydW5hYmxlIG9uZXMgdG8gZXhlY3V0b3IgaW5pdGlhbGl6YXRp b24uIFRoaXMgYXZvaWRzCit1bm5lY2Vzc2FyeSBsb2NraW5nIG9mIHJlbGF0aW9ucyB0aGF0IHdp bGwgYmUgcHJ1bmVkIGR1cmluZyAiaW5pdGlhbCIgcnVudGltZQorcHJ1bmluZyBpbiB0aGUgRXhl Y0luaXROb2RlKCkgcm91dGluZSBvZiBub2RlcyBjb250YWluaW5nIHRoZSBwcnVuaW5nIGluZm8u CisKK1RoaXMgYXBwcm9hY2ggY3JlYXRlcyBhIHdpbmRvdyB3aGVyZSBhIGNhY2hlZCBwbGFuIHRy ZWUgd2l0aCBjaGlsZCB0YWJsZXMKK2NvdWxkIGJlY29tZSBvdXRkYXRlZCBpZiBhbm90aGVyIGJh Y2tlbmQgbW9kaWZpZXMgdGhlc2UgdGFibGVzIGJlZm9yZQorRXhlY0luaXROb2RlKCkgbG9ja3Mg dGhlbS4gQXMgYSByZXN1bHQsIHRoZSBleGVjdXRvciBoYXMgdGhlIGFkZGVkIGR1dHkgdG8KK3Zl cmlmeSB0aGUgcGxhbiB0cmVlJ3MgdmFsaWRpdHkgd2hlbmV2ZXIgaXQgbG9ja3MgYSBjaGlsZCB0 YWJsZSBhZnRlcgorZXhlY3V0aW9uLWluaXRpYWxpemF0aW9uLXBydW5pbmcuIFRoaXMgdmFsaWRh dGlvbiBpcyBkb25lIGJ5IGNoZWNraW5nIHRoZQorQ2FjaGVkUGxhbi5pc192YWxpZCBhdHRyaWJ1 dGUuIElmIHRoZSBwbGFuIHRyZWUgaXMgb3V0ZGF0ZWQgKGlzX3ZhbGlkPWZhbHNlKSwKK3RoZSBl eGVjdXRvciBoYWx0cyBmdXJ0aGVyIGluaXRpYWxpemF0aW9uLCBjbGVhbnMgdXAgdGhlIHBhcnRp YWxseSBpbml0aWFsaXplZAorUGxhblN0YXRlIHRyZWUsIGFuZCByZXRyaWVzIGV4ZWN1dGlvbiBh ZnRlciBjcmVhdGluZyBhIG5ldyB0cmFuc2llbnQKK0NhY2hlZFBsYW4uCiAKIFF1ZXJ5IFByb2Nl c3NpbmcgQ29udHJvbCBGbG93CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjg4 LDcgKzMxMCw3IEBAIFRoaXMgaXMgYSBza2V0Y2ggb2YgY29udHJvbCBmbG93IGZvciBmdWxsIHF1 ZXJ5IHByb2Nlc3Npbmc6CiAKIAlDcmVhdGVRdWVyeURlc2MKIAotCUV4ZWN1dG9yU3RhcnQKKwlF eGVjdXRvclN0YXJ0IG9yIEV4ZWN1dG9yU3RhcnRFeHQKIAkJQ3JlYXRlRXhlY3V0b3JTdGF0ZQog CQkJY3JlYXRlcyBwZXItcXVlcnkgY29udGV4dAogCQlzd2l0Y2ggdG8gcGVyLXF1ZXJ5IGNvbnRl eHQgdG8gcnVuIEV4ZWNJbml0Tm9kZQpAQCAtMzE2LDcgKzMzOCwxMyBAQCBUaGlzIGlzIGEgc2tl dGNoIG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNzaW5nOgogCiAJRnJlZVF1 ZXJ5RGVzYwogCi1QZXIgYWJvdmUgY29tbWVudHMsIGl0J3Mgbm90IHJlYWxseSBjcml0aWNhbCBm b3IgRXhlY0VuZE5vZGUgdG8gZnJlZSBhbnkKK0FzIG1lbnRpb25lZCBpbiB0aGUgIlJlbGF0aW9u IExvY2tpbmciIHNlY3Rpb24sIGlmIHRoZSBwbGFuIHRyZWUgaXMgZm91bmQgdG8KK2JlIHN0YWxl IGR1cmluZyBvbmUgb2YgdGhlIHJlY3Vyc2l2ZSBjYWxscyBvZiBFeGVjSW5pdE5vZGUoKSBhZnRl ciB0YWtpbmcgYQorbG9jayBvbiBhIGNoaWxkIHRhYmxlLCB0aGUgY29udHJvbCBpcyBpbW1tZWRp YXRlbHkgcmV0dXJuZWQgdG8KK0V4ZWN1dG9yU3RhcnRFeHQoKSwgd2hpY2ggd2lsbCBjcmVhdGUg YSBuZXcgcGxhbiB0cmVlIGFuZCBwZXJmb3JtIHRoZQorc3RlcHMgc3RhcnRpbmcgZnJvbSBDcmVh dGVFeGVjdXRvclN0YXRlKCkgYWdhaW4uCisKK1BlciBhYm92ZSBjb21tZW50cywgaXQncyBub3Qg cmVhbGx5IGNyaXRpY2FsIGZvciBFeGVjRW5kUGxhbiB0byBmcmVlIGFueQogbWVtb3J5OyBpdCds bCBhbGwgZ28gYXdheSBpbiBGcmVlRXhlY3V0b3JTdGF0ZSBhbnl3YXkuICBIb3dldmVyLCB3ZSBk byBuZWVkIHRvCiBiZSBjYXJlZnVsIHRvIGNsb3NlIHJlbGF0aW9ucywgZHJvcCBidWZmZXIgcGlu cywgZXRjLCBzbyB3ZSBkbyBuZWVkIHRvIHNjYW4KIHRoZSBwbGFuIHN0YXRlIHRyZWUgdG8gZmlu ZCB0aGVzZSBzb3J0cyBvZiByZXNvdXJjZXMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAw ZjZkYmQxZTJiLi45MmUwYzlhZjllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTU4LDYg KzU4LDcgQEAKICNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3BhcnRjYWNoZS5oIgorI2luY2x1ZGUg InV0aWxzL3BsYW5jYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3Jscy5oIgogI2luY2x1ZGUgInV0 aWxzL3NuYXBtZ3IuaCIKIApAQCAtMTMzLDYgKzEzNCw1MiBAQCBFeGVjdXRvclN0YXJ0KFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1 ZXJ5RGVzYywgZWZsYWdzKTsKIH0KIAorLyoKKyAqIEEgdmFyaWFudCBvZiBFeGVjdXRvclN0YXJ0 KCkgdGhhdCBoYW5kbGVzIGNsZWFudXAgYW5kIHJlcGxhbm5pbmcgaWYgdGhlCisgKiBpbnB1dCBD YWNoZWRQbGFuIGJlY29tZXMgaW52YWxpZCBkdWUgdG8gbG9ja3MgYmVpbmcgdGFrZW4gZHVyaW5n CisgKiBFeGVjdXRvclN0YXJ0SW50ZXJuYWwoKS4gIElmIHRoYXQgaGFwcGVucywgYSBuZXcgQ2Fj aGVkUGxhbiBpcyBjcmVhdGVkCisgKiBvbmx5IGZvciB0aGUgYXQgdGhlIGluZGV4ICdxdWVyeV9p bmRleCcgaW4gcGxhbnNvdXJjZS0+cXVlcnlfbGlzdCwgd2hpY2gKKyAqIGlzIHJlbGVhc2VkIHNl cGFyYXRlbHkgZnJvbSB0aGUgb3JpZ2luYWwgQ2FjaGVkUGxhbi4KKyAqLwordm9pZAorRXhlY3V0 b3JTdGFydEV4dChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncywKKwkJCQkgQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKKwkJCQkgaW50IHF1ZXJ5X2luZGV4KQoreworCWlmIChx dWVyeURlc2MtPmNwbGFuID09IE5VTEwpCisJCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxh Z3MpOworCWVsc2UKKwl7CisJCXdoaWxlICgxKQorCQl7CisJCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgZWZsYWdzKTsKKwkJCWlmICghQ2FjaGVkUGxhblN0aWxsVmFsaWQocXVlcnlEZXNjLT5j cGxhbikpCisJCQl7CisJCQkJQ2FjaGVkUGxhbiAqY3BsYW5fbmV3OworCisJCQkJLyoKKwkJCQkg KiBNYXJrIGV4ZWN1dGlvbiBhcyBhYm9ydGVkIHRvIGVuc3VyZSB0aGF0IEFGVEVSIHRyaWdnZXIK KwkJCQkgKiBzdGF0ZSBpcyBwcm9wZXJseSByZXNldC4KKwkJCQkgKi8KKwkJCQlxdWVyeURlc2Mt PmVzdGF0ZS0+ZXNfYWJvcnRlZCA9IHRydWU7CisKKwkJCQlFeGVjdXRvckVuZChxdWVyeURlc2Mp OworCisJCQkJY3BsYW5fbmV3ID0gR2V0U2luZ2xlQ2FjaGVkUGxhbihwbGFuc291cmNlLCBxdWVy eV9pbmRleCwKKwkJCQkJCQkJCQkJCXF1ZXJ5RGVzYy0+cGFyYW1zLAorCQkJCQkJCQkJCQkJcXVl cnlEZXNjLT5xdWVyeUVudik7CisJCQkJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuX25ldy0+c3Rt dF9saXN0KSA9PSAxKTsKKwkJCQlxdWVyeURlc2MtPmNwbGFuID0gY3BsYW5fbmV3OworCQkJCXF1 ZXJ5RGVzYy0+cmVsZWFzZV9jcGxhbiA9IHRydWU7CisJCQkJcXVlcnlEZXNjLT5wbGFubmVkc3Rt dCA9IGxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQsCisJCQkJCQkJCQkJCQkgICBjcGxhbl9uZXct PnN0bXRfbGlzdCk7CisJCQl9CisJCQllbHNlCisJCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKIHZv aWQKIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxh Z3MpCiB7CkBAIC0zMTYsNiArMzYzLDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsCiAJZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7CiAKIAlBc3NlcnQoZXN0 YXRlICE9IE5VTEwpOworCUFzc2VydCghZXN0YXRlLT5lc19hYm9ydGVkKTsKIAlBc3NlcnQoIShl c3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSk7CiAKIAkvKiBj YWxsZXIgbXVzdCBlbnN1cmUgdGhlIHF1ZXJ5J3Mgc25hcHNob3QgaXMgYWN0aXZlICovCkBAIC00 MjIsOCArNDcwLDExIEBAIHN0YW5kYXJkX0V4ZWN1dG9yRmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjKQogCUFzc2VydChlc3RhdGUgIT0gTlVMTCk7CiAJQXNzZXJ0KCEoZXN0YXRlLT5lc190b3Bf ZWZsYWdzICYgRVhFQ19GTEFHX0VYUExBSU5fT05MWSkpOwogCi0JLyogVGhpcyBzaG91bGQgYmUg cnVuIG9uY2UgYW5kIG9ubHkgb25jZSBwZXIgRXhlY3V0b3IgaW5zdGFuY2UgKi8KLQlBc3NlcnQo IWVzdGF0ZS0+ZXNfZmluaXNoZWQpOworCS8qCisJICogVGhpcyBzaG91bGQgYmUgcnVuIG9uY2Ug YW5kIG9ubHkgb25jZSBwZXIgRXhlY3V0b3IgaW5zdGFuY2UgYW5kIG5ldmVyCisJICogaWYgdGhl IGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4KKwkgKi8KKwlBc3NlcnQoIWVzdGF0ZS0+ZXNfZmluaXNo ZWQgJiYgIWVzdGF0ZS0+ZXNfYWJvcnRlZCk7CiAKIAkvKiBTd2l0Y2ggaW50byBwZXItcXVlcnkg bWVtb3J5IGNvbnRleHQgKi8KIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVz dGF0ZS0+ZXNfcXVlcnlfY3h0KTsKQEAgLTQ4MiwxMSArNTMzLDEwIEBAIHN0YW5kYXJkX0V4ZWN1 dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCUFzc2VydChlc3RhdGUgIT0gTlVMTCk7CiAK IAkvKgotCSAqIENoZWNrIHRoYXQgRXhlY3V0b3JGaW5pc2ggd2FzIGNhbGxlZCwgdW5sZXNzIGlu IEVYUExBSU4tb25seSBtb2RlLiBUaGlzCi0JICogQXNzZXJ0IGlzIG5lZWRlZCBiZWNhdXNlIEV4 ZWN1dG9yRmluaXNoIGlzIG5ldyBhcyBvZiA5LjEsIGFuZCBjYWxsZXJzCi0JICogbWlnaHQgZm9y Z2V0IHRvIGNhbGwgaXQuCisJICogQ2hlY2sgdGhhdCBFeGVjdXRvckZpbmlzaCB3YXMgY2FsbGVk LCB1bmxlc3MgaW4gRVhQTEFJTi1vbmx5IG1vZGUgb3IgaWYKKwkgKiBleGVjdXRpb24gd2FzIGFi b3J0ZWQuCiAJICovCi0JQXNzZXJ0KGVzdGF0ZS0+ZXNfZmluaXNoZWQgfHwKKwlBc3NlcnQoZXN0 YXRlLT5lc19maW5pc2hlZCB8fCBlc3RhdGUtPmVzX2Fib3J0ZWQgfHwKIAkJICAgKGVzdGF0ZS0+ ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBMQUlOX09OTFkpKTsKIAogCS8qCkBAIC01MDAs NiArNTUwLDE0IEBAIHN0YW5kYXJkX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQog CVVucmVnaXN0ZXJTbmFwc2hvdChlc3RhdGUtPmVzX3NuYXBzaG90KTsKIAlVbnJlZ2lzdGVyU25h cHNob3QoZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90KTsKIAorCS8qCisJICogUmVzZXQg QUZURVIgdHJpZ2dlciBtb2R1bGUgaWYgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4K KwkgKi8KKwlpZiAoZXN0YXRlLT5lc19hYm9ydGVkICYmCisJCSEoZXN0YXRlLT5lc190b3BfZWZs YWdzICYKKwkJICAoRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlMgfCBFWEVDX0ZMQUdfRVhQTEFJTl9P TkxZKSkpCisJCUFmdGVyVHJpZ2dlckFib3J0UXVlcnkoKTsKKwogCS8qCiAJICogTXVzdCBzd2l0 Y2ggb3V0IG9mIGNvbnRleHQgYmVmb3JlIGRlc3Ryb3lpbmcgaXQKIAkgKi8KQEAgLTgzMiw3ICs4 OTAsNiBAQCBFeGVjQ2hlY2tYYWN0UmVhZE9ubHkoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10KQog CQlQcmV2ZW50Q29tbWFuZElmUGFyYWxsZWxNb2RlKENyZWF0ZUNvbW1hbmROYW1lKChOb2RlICop IHBsYW5uZWRzdG10KSk7CiB9CiAKLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUluaXRQbGFuCiAgKgpAQCAt ODk3LDYgKzk1NCw5IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdz KQogCQkJCWNhc2UgUk9XX01BUktfS0VZU0hBUkU6CiAJCQkJY2FzZSBST1dfTUFSS19SRUZFUkVO Q0U6CiAJCQkJCXJlbGF0aW9uID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHJj LT5ydGkpOworCQkJCQlpZiAodW5saWtlbHkocmVsYXRpb24gPT0gTlVMTCB8fAorCQkJCQkJCQkg IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJCQkJCXJldHVybjsKIAkJCQkJYnJlYWs7 CiAJCQkJY2FzZSBST1dfTUFSS19DT1BZOgogCQkJCQkvKiBubyBwaHlzaWNhbCB0YWJsZSBhY2Nl c3MgaXMgcmVxdWlyZWQgKi8KQEAgLTk2Nyw2ICsxMDI3LDggQEAgSW5pdFBsYW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAkJZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzID0g bGFwcGVuZChlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJCQkJCQkJICAgc3VicGxhbnN0 YXRlKTsKKwkJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCQly ZXR1cm47CiAKIAkJaSsrOwogCX0KQEAgLTk3Nyw2ICsxMDM5LDggQEAgSW5pdFBsYW4oUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJICogcHJvY2Vzc2luZyB0dXBsZXMuCiAJICov CiAJcGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo dW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuOwogCiAJLyoK IAkgKiBHZXQgdGhlIHR1cGxlIGRlc2NyaXB0b3IgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiB0dXBs ZXMgdG8gcmV0dXJuLgpAQCAtMjg1OCw2ICsyOTIyLDcgQEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBR U3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSkKIAlyY2VzdGF0ZS0+ZXNfcm93bWFya3Mg PSBwYXJlbnRlc3RhdGUtPmVzX3Jvd21hcmtzOwogCXJjZXN0YXRlLT5lc19ydGVwZXJtaW5mb3Mg PSBwYXJlbnRlc3RhdGUtPmVzX3J0ZXBlcm1pbmZvczsKIAlyY2VzdGF0ZS0+ZXNfcGxhbm5lZHN0 bXQgPSBwYXJlbnRlc3RhdGUtPmVzX3BsYW5uZWRzdG10OworCXJjZXN0YXRlLT5lc19jYWNoZWRw bGFuID0gcGFyZW50ZXN0YXRlLT5lc19jYWNoZWRwbGFuOwogCXJjZXN0YXRlLT5lc19qdW5rRmls dGVyID0gcGFyZW50ZXN0YXRlLT5lc19qdW5rRmlsdGVyOwogCXJjZXN0YXRlLT5lc19vdXRwdXRf Y2lkID0gcGFyZW50ZXN0YXRlLT5lc19vdXRwdXRfY2lkOwogCXJjZXN0YXRlLT5lc19xdWVyeUVu diA9IHBhcmVudGVzdGF0ZS0+ZXNfcXVlcnlFbnY7CkBAIC0yOTM2LDYgKzMwMDEsMTQgQEAgRXZh bFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSkKIAkJc3Vi cGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHN1YnBsYW4sIHJjZXN0YXRlLCAwKTsKIAkJcmNlc3Rh dGUtPmVzX3N1YnBsYW5zdGF0ZXMgPSBsYXBwZW5kKHJjZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVz LAogCQkJCQkJCQkJCQkgc3VicGxhbnN0YXRlKTsKKworCQkvKgorCQkgKiBBbGwgbmVjZXNzYXJ5 IGxvY2tzIHNob3VsZCBoYXZlIGJlZW4gdGFrZW4gd2hlbiBpbml0aWFsaXppbmcgdGhlCisJCSAq IHBhcmVudCdzIGNvcHkgb2Ygc3VicGxhbnN0YXRlLCBzbyB0aGUgQ2FjaGVkUGxhbiwgaWYgYW55 LCBzaG91bGQKKwkJICogbm90IGhhdmUgYmVjb21lIGludmFsaWQgZHVyaW5nIHRoZSBhYm92ZSBF eGVjSW5pdE5vZGUoKS4KKwkJICovCisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKHJjZXN0YXRl KSkKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGZhaWx1cmUgdG8gaW5pdGlhbGl6ZSBzdWJw bGFuIGluIEV2YWxQbGFuUXVhbFN0YXJ0KCkiKTsKIAl9CiAKIAkvKgpAQCAtMjk3Nyw2ICszMDUw LDEwIEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRy ZWUpCiAJICovCiAJZXBxc3RhdGUtPnJlY2hlY2twbGFuc3RhdGUgPSBFeGVjSW5pdE5vZGUocGxh blRyZWUsIHJjZXN0YXRlLCAwKTsKIAorCS8qIFNlZSB0aGUgY29tbWVudCBhYm92ZS4gKi8KKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChyY2VzdGF0ZSkpCisJCWVsb2coRVJST1IsICJ1bmV4cGVj dGVkIGZhaWx1cmUgdG8gaW5pdGlhbGl6ZSBtYWluIHBsYW50cmVlIGluIEV2YWxQbGFuUXVhbFN0 YXJ0KCkiKTsKKwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCAwM2I0OGUxMmI0Li4yMDE3NDMzYzY0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTI2Myw5ICsxMjYzLDcgQEAgRXhl Y1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZl ciwKIAkgKiBpZiBpdCBzaG91bGQgdGFrZSBsb2NrcyBvbiBjZXJ0YWluIHJlbGF0aW9ucywgYnV0 IHBhcmFsbGVyIHdvcmtlcnMKIAkgKiBhbHdheXMgdGFrZSBsb2NrcyBhbnl3YXkuCiAJICovCi0J cmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwKLQkJCQkJCSAgIE5VTEwsCi0JCQkJCQkgICBx dWVyeVN0cmluZywKKwlyZXR1cm4gQ3JlYXRlUXVlcnlEZXNjKHBzdG10LCBOVUxMLCBxdWVyeVN0 cmluZywKIAkJCQkJCSAgIEdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJ CQkJCSAgIHJlY2VpdmVyLCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50X29wdGlvbnMpOwogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDc2NTE4ODYyMjkuLjM4Y2Q5N2I1 OWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE3OTQsNiArMTc5NCw5 IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJN YXAgKmF0dHJNYXApCiAgKiBJZiBzdWJwbGFucyBhcmUgaW5kZWVkIHBydW5lZCwgc3VicGxhbl9t YXAgYXJyYXlzIGNvbnRhaW5lZCBpbiB0aGUgcmV0dXJuZWQKICAqIFBhcnRpdGlvblBydW5lU3Rh dGUgYXJlIHJlLXNlcXVlbmNlZCB0byBub3QgY291bnQgdGhvc2UsIHRob3VnaCBvbmx5IGlmIHRo ZQogICogbWFwcyB3aWxsIGJlIG5lZWRlZCBmb3Igc3Vic2VxdWVudCBleGVjdXRpb24gcHJ1bmlu ZyBwYXNzZXMuCisgKgorICogUmV0dXJucyBOVUxMIGlmIHRoZSBwbGFuIGhhcyBiZWNvbWUgaW52 YWxpZCBhZnRlciB0YWtpbmcgdGhlIGxvY2tzIHRvCisgKiBjcmVhdGUgdGhlIFBhcnRpdGlvblBy dW5lU3RhdGUgaW4gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZSgpLgogICovCiBQYXJ0aXRpb25Q cnVuZVN0YXRlICoKIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwKQEAgLTE4MDksNiArMTgxMiw4IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3Rh dGUgKnBsYW5zdGF0ZSwKIAogCS8qIENyZWF0ZSB0aGUgd29ya2luZyBkYXRhIHN0cnVjdHVyZSBm b3IgcHJ1bmluZyAqLwogCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKHBs YW5zdGF0ZSwgcHJ1bmVpbmZvKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQor CQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogUGVyZm9ybSBhbiBpbml0aWFsIHBhcnRpdGlvbiBw cnVuZSBwYXNzLCBpZiByZXF1aXJlZC4KQEAgLTE4NjAsNiArMTg2NSw5IEBAIEV4ZWNJbml0UGFy dGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKICAqIHN0b3JlZCBpbiBlYWNoIFBh cnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgY2FuIGJlIHJlLXVzZWQgZWFjaCB0aW1lIHdlCiAgKiBy ZS1ldmFsdWF0ZSB3aGljaCBwYXJ0aXRpb25zIG1hdGNoIHRoZSBwcnVuaW5nIHN0ZXBzIHByb3Zp ZGVkIGluIGVhY2gKICAqIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvLgorICoKKyAqIFJldHVybnMg TlVMTCBpZiB0aGUgcGxhbiBoYXMgYmVjb21lIGludmFsaWQgYWZ0ZXIgdGFraW5nIGEgbG9jayB0 byBjcmVhdGUKKyAqIGEgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YS4KICAqLwogc3RhdGljIFBh cnRpdGlvblBydW5lU3RhdGUgKgogQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUg KnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCkBAIC0xOTM1LDYgKzE5 NDMsOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQ YXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCSAqIGR1cmF0aW9uIG9mIHRoaXMgZXhl Y3V0b3IgcnVuLgogCQkJICovCiAJCQlwYXJ0cmVsID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlv bihlc3RhdGUsIHBpbmZvLT5ydGluZGV4KTsKKwkJCWlmICh1bmxpa2VseShwYXJ0cmVsID09IE5V TEwgfHwgIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJCQlyZXR1cm4gTlVMTDsKIAkJ CXBhcnRrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJ0cmVsKTsKIAkJCXBhcnRkZXNj ID0gUGFydGl0aW9uRGlyZWN0b3J5TG9va3VwKGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9y eSwKIAkJCQkJCQkJCQkJCXBhcnRyZWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1Byb2Nub2RlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpp bmRleCAzNGYyOGRmZWNlLi43Njg5ZDM0ZGQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25v ZGUuYwpAQCAtMTM2LDYgKzEzNiwxMCBAQCBzdGF0aWMgYm9vbCBFeGVjU2h1dGRvd25Ob2RlX3dh bGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwogICoJCSAgJ2VmbGFncycgaXMg YSBiaXR3aXNlIE9SIG9mIGZsYWcgYml0cyBkZXNjcmliZWQgaW4gZXhlY3V0b3IuaAogICoKICAq CQlSZXR1cm5zIGEgUGxhblN0YXRlIG5vZGUgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gUGxh biBub2RlLgorICoKKyAqCQlDYWxsZXJzIHNob3VsZCBjaGVjayB1cG9uIHJldHVybmluZyB0aGF0 IEV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpCisgKgkJcmV0dXJucyB0cnVlIGJlZm9yZSBjb250 aW51aW5nIGZ1cnRoZXIgd2l0aCBpdHMgcHJvY2Vzc2luZywgYmVjYXVzZSB0aGUKKyAqCQlyZXR1 cm5lZCBQbGFuU3RhdGUgbWlnaHQgYmUgb25seSBwYXJ0aWFsbHkgdmFsaWQgb3RoZXJ3aXNlLgog ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIFBsYW5TdGF0ZSAqCkBAIC0zODgsNiArMzkyLDkgQEAg RXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJ YnJlYWs7CiAJfQogCisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkp CisJCXJldHVybiByZXN1bHQ7CisKIAlFeGVjU2V0RXhlY1Byb2NOb2RlKHJlc3VsdCwgcmVzdWx0 LT5FeGVjUHJvY05vZGUpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggNmRm ZDVhMjZiNy4uMzliMzg4ZTZiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTE0Niw2 ICsxNDYsNyBAQCBDcmVhdGVFeGVjdXRvclN0YXRlKHZvaWQpCiAJZXN0YXRlLT5lc190b3BfZWZs YWdzID0gMDsKIAllc3RhdGUtPmVzX2luc3RydW1lbnQgPSAwOwogCWVzdGF0ZS0+ZXNfZmluaXNo ZWQgPSBmYWxzZTsKKwllc3RhdGUtPmVzX2Fib3J0ZWQgPSBmYWxzZTsKIAogCWVzdGF0ZS0+ZXNf ZXhwcmNvbnRleHRzID0gTklMOwogCkBAIC02OTEsNiArNjkyLDggQEAgRXhlY1JlbGF0aW9uSXNU YXJnZXRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggc2NhbnJlbGlkKQogICoKICAqCQlP cGVuIHRoZSBoZWFwIHJlbGF0aW9uIHRvIGJlIHNjYW5uZWQgYnkgYSBiYXNlLWxldmVsIHNjYW4g cGxhbiBub2RlLgogICoJCVRoaXMgc2hvdWxkIGJlIGNhbGxlZCBkdXJpbmcgdGhlIG5vZGUncyBF eGVjSW5pdCByb3V0aW5lLgorICoKKyAqCQlOVUxMIGlzIHJldHVybmVkIGlmIHRoZSByZWxhdGlv biBpcyBmb3VuZCB0byBoYXZlIGJlZW4gZHJvcHBlZC4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogUmVsYXRp b24KQEAgLTcwMCw2ICs3MDMsOCBAQCBFeGVjT3BlblNjYW5SZWxhdGlvbihFU3RhdGUgKmVzdGF0 ZSwgSW5kZXggc2NhbnJlbGlkLCBpbnQgZWZsYWdzKQogCiAJLyogT3BlbiB0aGUgcmVsYXRpb24u ICovCiAJcmVsID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHNjYW5yZWxpZCk7 CisJaWYgKHVubGlrZWx5KHJlbCA9PSBOVUxMIHx8ICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkpCisJCXJldHVybiByZWw7CiAKIAkvKgogCSAqIENvbXBsYWluIGlmIHdlJ3JlIGF0dGVtcHRp bmcgYSBzY2FuIG9mIGFuIHVuc2Nhbm5hYmxlIHJlbGF0aW9uLCBleGNlcHQKQEAgLTcxNyw2ICs3 MjIsMjYgQEAgRXhlY09wZW5TY2FuUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHNjYW5y ZWxpZCwgaW50IGVmbGFncykKIAlyZXR1cm4gcmVsOwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhl Y09wZW5TY2FuSW5kZXhSZWxhdGlvbgorICoKKyAqCQlPcGVuIHRoZSBpbmRleCByZWxhdGlvbiB0 byBiZSBzY2FubmVkIGJ5IGFuIGluZGV4IHNjYW4gcGxhbiBub2RlLgorICoJCVRoaXMgc2hvdWxk IGJlIGNhbGxlZCBkdXJpbmcgdGhlIG5vZGUncyBFeGVjSW5pdCByb3V0aW5lLgorICogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCitSZWxhdGlvbgorRXhlY09wZW5TY2FuSW5kZXhSZWxhdGlvbihFU3RhdGUgKmVzdGF0 ZSwgT2lkIGluZGV4aWQsIGludCBsb2NrbW9kZSkKK3sKKwlSZWxhdGlvbglyZWw7CisKKwkvKiBP cGVuIHRoZSBpbmRleC4gKi8KKwlyZWwgPSBpbmRleF9vcGVuKGluZGV4aWQsIGxvY2ttb2RlKTsK KwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJZWxvZyhERUJV RzIsICJDYWNoZWRQbGFuIGludmFsaWRhdGVkIG9uIGxvY2tpbmcgaW5kZXggJXUiLCBpbmRleGlk KTsKKworCXJldHVybiByZWw7Cit9CisKIC8qCiAgKiBFeGVjSW5pdFJhbmdlVGFibGUKICAqCQlT ZXQgdXAgZXhlY3V0b3IncyByYW5nZS10YWJsZS1yZWxhdGVkIGRhdGEKQEAgLTc3Niw4ICs4MDEs MTIgQEAgRXhlY1Nob3VsZExvY2tSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpbmRl eCkKICAqIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24KICAqCQlPcGVuIHRoZSBSZWxhdGlvbiBm b3IgYSByYW5nZSB0YWJsZSBlbnRyeSwgaWYgbm90IGFscmVhZHkgZG9uZQogICoKLSAqIFRoZSBS ZWxhdGlvbnMgd2lsbCBiZSBjbG9zZWQgYWdhaW4gaW4gRXhlY0VuZFBsYW4oKS4KKyAqIFRoZSBS ZWxhdGlvbnMgd2lsbCBiZSBjbG9zZWQgaW4gRXhlY0VuZFBsYW4oKS4KKyAqCisgKiBUaGUgcmV0 dXJuZWQgdmFsdWUgbWF5IGJlIE5VTEwgaWYgdGhlIHJlbGF0aW9uIGlzIGEgcHJ1bmFibGUgcmVs YXRpb24KKyAqIHRoYXQgaGFzIG5vdCBiZWVuIGxvY2tlZCBhbmQgbWF5IGhhdmUgYmVlbiBjb25j dXJyZW50bHkgZHJvcHBlZC4KICAqLworCiBSZWxhdGlvbgogRXhlY0dldFJhbmdlVGFibGVSZWxh dGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpKQogewpAQCAtODIwLDggKzg0OSwxNCBAQCBF eGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCiAJCQkg KiB0aGF0IG9mIGEgcHJ1bmFibGUgcmVsYXRpb24gYW5kIHdlJ3JlIHJ1bm5pbmcgYSBjYWNoZWQg Z2VuZXJpYwogCQkJICogcGxhbi4gIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgb2YgcGxhbmNhY2hl LmMgd291bGQgaGF2ZSBsb2NrZWQKIAkJCSAqIG9ubHkgdGhlIHVucHJ1bmFibGUgcmVsYXRpb25z IGluIHRoZSBwbGFuIHRyZWUuCisJCQkgKgorCQkJICogTm90ZSB0aGF0IHdlIHVzZSB0cnlfdGFi bGVfb3BlbigpIGhlcmUsIGJlY2F1c2Ugd2l0aG91dCBhIGxvY2sKKwkJCSAqIGhlbGQgb24gdGhl IHJlbGF0aW9uLCBpdCBtYXkgaGF2ZSBkaXNhcHBlYXJlZCBmcm9tIHVuZGVyIHVzLgogCQkJICov Ci0JCQlyZWwgPSB0YWJsZV9vcGVuKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJ cmVsID0gdHJ5X3RhYmxlX29wZW4ocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCQlp ZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJCQllbG9nKERFQlVH MiwgIkNhY2hlZFBsYW4gaW52YWxpZGF0ZWQgb24gbG9ja2luZyByZWxhdGlvbiAldSIsCisJCQkJ CSBydGUtPnJlbGlkKTsKIAkJfQogCiAJCWVzdGF0ZS0+ZXNfcmVsYXRpb25zW3J0aSAtIDFdID0g cmVsOwpAQCAtODQ1LDYgKzg4MCw5IEBAIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24oRVN0YXRlICpl c3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJUmVsYXRpb24JcmVzdWx0UmVs YXRpb25EZXNjOwogCiAJcmVzdWx0UmVsYXRpb25EZXNjID0gRXhlY0dldFJhbmdlVGFibGVSZWxh dGlvbihlc3RhdGUsIHJ0aSk7CisJaWYgKHVubGlrZWx5KHJlc3VsdFJlbGF0aW9uRGVzYyA9PSBO VUxMIHx8CisJCQkJICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybjsKIAlJ bml0UmVzdWx0UmVsSW5mbyhyZXN1bHRSZWxJbmZvLAogCQkJCQkgIHJlc3VsdFJlbGF0aW9uRGVz YywKIAkJCQkJICBydGksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdn LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKaW5kZXggMGRmYmE1Y2ExNi4uOGM0 MGQ4YzUyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwpAQCAtMzMwMyw2ICszMzAzLDggQEAgRXhl Y0luaXRBZ2coQWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJZWZsYWdz ICY9IH5FWEVDX0ZMQUdfUkVXSU5EOwogCW91dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlv dXRlclBsYW5TdGF0ZShhZ2dzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUs IGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJ CXJldHVybiBhZ2dzdGF0ZTsKIAogCS8qCiAJICogaW5pdGlhbGl6ZSBzb3VyY2UgdHVwbGUgdHlw ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCA4NmQ3NWIxYTdlLi4zYzgyYTFjZWFi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xNDcsNiArMTQ3LDggQEAgRXhlY0lu aXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJ CQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyksCiAJCQkJCQkJCQkJCSAgbm9k ZS0+cGFydF9wcnVuZV9pbmZvLAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsKKwkJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBhcHBlbmRzdGF0ZTsKIAkJ YXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1z X251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwogCkBAIC0xODUsOCArMTg3LDEwIEBAIEV4ZWNJ bml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJYXBw ZW5kc3RhdGUtPnBzLnJlc3VsdG9wc3NldCA9IHRydWU7CiAJYXBwZW5kc3RhdGUtPnBzLnJlc3Vs dG9wc2ZpeGVkID0gZmFsc2U7CiAKLQlhcHBlbmRwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikg cGFsbG9jKG5wbGFucyAqCi0JCQkJCQkJCQkJCSBzaXplb2YoUGxhblN0YXRlICopKTsKKwlhcHBl bmRwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikgcGFsbG9jMChucGxhbnMgKgorCQkJCQkJCQkJ CQkgIHNpemVvZihQbGFuU3RhdGUgKikpOworCWFwcGVuZHN0YXRlLT5hcHBlbmRwbGFucyA9IGFw cGVuZHBsYW5zdGF0ZXM7CisJYXBwZW5kc3RhdGUtPmFzX25wbGFucyA9IG5wbGFuczsKIAogCS8q CiAJICogY2FsbCBFeGVjSW5pdE5vZGUgb24gZWFjaCBvZiB0aGUgdmFsaWQgcGxhbnMgdG8gYmUg ZXhlY3V0ZWQgYW5kIHNhdmUKQEAgLTIyMSwxMSArMjI1LDExIEBAIEV4ZWNJbml0QXBwZW5kKEFw cGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQlmaXJzdHZhbGlkID0g ajsKIAogCQlhcHBlbmRwbGFuc3RhdGVzW2orK10gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVz dGF0ZSwgZWZsYWdzKTsKKwkJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkpCisJCQlyZXR1cm4gYXBwZW5kc3RhdGU7CiAJfQogCiAJYXBwZW5kc3RhdGUtPmFzX2ZpcnN0 X3BhcnRpYWxfcGxhbiA9IGZpcnN0dmFsaWQ7Ci0JYXBwZW5kc3RhdGUtPmFwcGVuZHBsYW5zID0g YXBwZW5kcGxhbnN0YXRlczsKLQlhcHBlbmRzdGF0ZS0+YXNfbnBsYW5zID0gbnBsYW5zOwogCiAJ LyogSW5pdGlhbGl6ZSBhc3luYyBzdGF0ZSAqLwogCWFwcGVuZHN0YXRlLT5hc19hc3luY3BsYW5z ID0gYXN5bmNwbGFuczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRt YXBBbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwppbmRleCBhZTM5 MTIyMmJmLi4xNjhjNDQwNjkyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwQW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCkBA IC04OSw2ICs4OSw4IEBAIEV4ZWNJbml0Qml0bWFwQW5kKEJpdG1hcEFuZCAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJewogCQlpbml0Tm9kZSA9IChQbGFuICopIGxmaXJzdChs KTsKIAkJYml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRl LCBlZmxhZ3MpOworCQlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkK KwkJCXJldHVybiBiaXRtYXBhbmRzdGF0ZTsKIAkJaSsrOwogCX0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCAxOWYxOGFiODE3Li5iMTNjYWUxY2JiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwpAQCAtNzU0LDExICs3 NTQsMTUgQEAgRXhlY0luaXRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhbiAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAq LwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+ c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KGN1cnJlbnRSZWxhdGlvbiA9 PSBOVUxMIHx8ICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBzY2Fuc3Rh dGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5T dGF0ZShzY2Fuc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBl ZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQly ZXR1cm4gc2NhbnN0YXRlOwogCiAJLyoKIAkgKiBnZXQgdGhlIHNjYW4gdHlwZSBmcm9tIHRoZSBy ZWxhdGlvbiBkZXNjcmlwdG9yLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4 c2Nhbi5jCmluZGV4IDQ2NjllOGQwY2UuLmYwNGE1M2U5YmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKQEAgLTI1Miw3ICsyNTIsMTEgQEAgRXhlY0luaXRC aXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLwogCWxvY2ttb2RlID0g ZXhlY19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVsbG9ja21vZGU7 Ci0JaW5kZXhzdGF0ZS0+Ymlzc19SZWxhdGlvbkRlc2MgPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4 aWQsIGxvY2ttb2RlKTsKKwlpbmRleHN0YXRlLT5iaXNzX1JlbGF0aW9uRGVzYyA9IEV4ZWNPcGVu U2NhbkluZGV4UmVsYXRpb24oZXN0YXRlLAorCQkJCQkJCQkJCQkJCQkJICBub2RlLT5pbmRleGlk LAorCQkJCQkJCQkJCQkJCQkJICBsb2NrbW9kZSk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBpbmRleHN0YXRlOwogCiAJLyoKIAkgKiBJbml0 aWFsaXplIGluZGV4LXNwZWNpZmljIHNjYW4gc3RhdGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cE9yLmMKaW5kZXggZGU0MzkyMzVkMi4uOTgwYjY4ZGQ4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcE9yLmMKQEAgLTkwLDYgKzkwLDggQEAgRXhlY0luaXRCaXRtYXBPcihCaXRtYXBPciAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJewogCQlpbml0Tm9kZSA9IChQbGFu ICopIGxmaXJzdChsKTsKIAkJYml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9kZShpbml0 Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKSkKKwkJCXJldHVybiBiaXRtYXBvcnN0YXRlOwogCQlpKys7CiAJfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQ3VzdG9tLmMKaW5kZXggZTU1OWNkMjM0Ni4uMmE3YzVkY2NkOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVDdXN0b20uYwpAQCAtNTgsNiArNTgsOCBAQCBFeGVjSW5pdEN1c3RvbVNj YW4oQ3VzdG9tU2NhbiAqY3NjYW4sIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChz Y2FucmVsaWQgPiAwKQogCXsKIAkJc2Nhbl9yZWwgPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3Rh dGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsKKwkJaWYgKHVubGlrZWx5KHNjYW5fcmVsID09IE5VTEwg fHwgIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJCXJldHVybiBjc3M7CiAJCWNzcy0+ c3Muc3NfY3VycmVudFJlbGF0aW9uID0gc2Nhbl9yZWw7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVGb3JlaWduc2Nhbi5jCmluZGV4IDEzNTdjY2YzYzkuLjkwZDU4NzhhZTMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCkBAIC0xNzIsNiArMTcyLDggQEAgRXhlY0lu aXRGb3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJaWYgKHNjYW5yZWxpZCA+IDApCiAJewogCQljdXJyZW50UmVsYXRpb24gPSBFeGVjT3Bl blNjYW5SZWxhdGlvbihlc3RhdGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsKKwkJaWYgKHVubGlrZWx5 KGN1cnJlbnRSZWxhdGlvbiA9PSBOVUxMIHx8ICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkp CisJCQlyZXR1cm4gc2NhbnN0YXRlOwogCQlzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlv biA9IGN1cnJlbnRSZWxhdGlvbjsKIAkJZmR3cm91dGluZSA9IEdldEZkd1JvdXRpbmVGb3JSZWxh dGlvbihjdXJyZW50UmVsYXRpb24sIHRydWUpOwogCX0KQEAgLTI2Myw2ICsyNjUsOCBAQCBFeGVj SW5pdEZvcmVpZ25TY2FuKEZvcmVpZ25TY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAlpZiAob3V0ZXJQbGFuKG5vZGUpKQogCQlvdXRlclBsYW5TdGF0ZShzY2Fuc3RhdGUp ID0KIAkJCUV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHNjYW5z dGF0ZTsKIAogCS8qCiAJICogVGVsbCB0aGUgRkRXIHRvIGluaXRpYWxpemUgdGhlIHNjYW4uCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXggY2FlNWVhMWY5Mi4uNjc1NDhhYTdiYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwpAQCAtODQsNiArODQsOCBAQCBFeGVjSW5pdEdhdGhl cihHYXRoZXIgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVy Tm9kZSA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShnYXRoZXJzdGF0ZSkgPSBF eGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBnYXRoZXJzdGF0ZTsKIAl0dXBE ZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoZ2F0aGVyc3RhdGUpKTsKIAog CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCmluZGV4IGIzNmNkODllN2Qu LmNmMGUwNzQzNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJN ZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCkBAIC0x MDMsNiArMTAzLDggQEAgRXhlY0luaXRHYXRoZXJNZXJnZShHYXRoZXJNZXJnZSAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFuKG5v ZGUpOwogCW91dGVyUGxhblN0YXRlKGdtX3N0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUs IGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKSkKKwkJcmV0dXJuIGdtX3N0YXRlOwogCiAJLyoKIAkgKiBMZWFkZXIgbWF5IGFjY2VzcyBF eGVjUHJvY05vZGUgcmVzdWx0IGRpcmVjdGx5IChpZgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdyb3VwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYwpp bmRleCA4MDc0MjllNTA0Li42ZDBmZDllN2I0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlR3JvdXAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYwpA QCAtMTg0LDYgKzE4NCw4IEBAIEV4ZWNJbml0R3JvdXAoR3JvdXAgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRl clBsYW5TdGF0ZShncnBzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkp CisJCXJldHVybiBncnBzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNsb3QgYW5k IHR5cGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwppbmRleCBhOTEzZDViNTBjLi5lNzFkMTMxZDE4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKQEAgLTM5Niw2ICszOTYsOCBAQCBFeGVjSW5pdEhh c2goSGFzaCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6 ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKGhhc2hzdGF0ZSkgPSBFeGVjSW5p dE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBoYXNoc3RhdGU7CiAKIAkvKgog CSAqIGluaXRpYWxpemUgb3VyIHJlc3VsdCBzbG90IGFuZCB0eXBlLiBObyBuZWVkIHRvIGJ1aWxk IHByb2plY3Rpb24KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9p bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKaW5kZXggOTAxYzllOWJl Ny4uM2M4NzBkZTFjNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hq b2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTc1OCw4 ICs3NTgsMTIgQEAgRXhlY0luaXRIYXNoSm9pbihIYXNoSm9pbiAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJaGFzaE5vZGUgPSAoSGFzaCAqKSBpbm5lclBsYW4obm9kZSk7CiAK IAlvdXRlclBsYW5TdGF0ZShoanN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0 ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkK KwkJcmV0dXJuIGhqc3RhdGU7CiAJb3V0ZXJEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQ bGFuU3RhdGUoaGpzdGF0ZSkpOwogCWlubmVyUGxhblN0YXRlKGhqc3RhdGUpID0gRXhlY0luaXRO b2RlKChQbGFuICopIGhhc2hOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBoanN0YXRlOwogCWlubmVyRGVz YyA9IEV4ZWNHZXRSZXN1bHRUeXBlKGlubmVyUGxhblN0YXRlKGhqc3RhdGUpKTsKIAogCS8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKaW5kZXggMDEwYmNmYWZh OC4uYWY3MjNlYTc1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3Jl bWVudGFsU29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNv cnQuYwpAQCAtMTA0MCw2ICsxMDQwLDggQEAgRXhlY0luaXRJbmNyZW1lbnRhbFNvcnQoSW5jcmVt ZW50YWxTb3J0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBub2RlcyBt YXkgYmUgYWJsZSB0byBkbyBzb21ldGhpbmcgbW9yZSB1c2VmdWwuCiAJICovCiAJb3V0ZXJQbGFu U3RhdGUoaW5jcnNvcnRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkp CisJCXJldHVybiBpbmNyc29ydHN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xv dCBhbmQgdHlwZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9u bHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4 IDQ4MWQ0Nzk3NjAuLjBmYmE4ZjdkNWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4 b25seXNjYW4uYwpAQCAtNTMxLDYgKzUzMSw4IEBAIEV4ZWNJbml0SW5kZXhPbmx5U2NhbihJbmRl eE9ubHlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRo ZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVs YXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAodW5saWtl bHkoY3VycmVudFJlbGF0aW9uID09IE5VTEwgfHwgIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KSkKKwkJcmV0dXJuIGluZGV4c3RhdGU7CiAKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50UmVs YXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5E ZXNjID0gTlVMTDsJLyogbm8gaGVhcCBzY2FuIGhlcmUgKi8KQEAgLTU4Myw5ICs1ODUsMTIgQEAg RXhlY0luaXRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCiAJLyogT3BlbiB0aGUgaW5kZXggcmVsYXRpb24uICovCiAJbG9ja21v ZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2Nr bW9kZTsKLQlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9k ZSk7CisJaW5kZXhSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhbkluZGV4UmVsYXRpb24oZXN0YXRlLCBu b2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CiAJaW5kZXhzdGF0ZS0+aW9zc19SZWxhdGlvbkRlc2Mg PSBpbmRleFJlbGF0aW9uOwogCisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkpCisJCXJldHVybiBpbmRleHN0YXRlOworCiAJLyoKIAkgKiBJbml0aWFsaXplIGluZGV4 LXNwZWNpZmljIHNjYW4gc3RhdGUKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4u YwppbmRleCBhODE3MmQ4YjgyLi5kYjI4YWViM2Q2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4c2Nhbi5jCkBAIC05MDcsNiArOTA3LDggQEAgRXhlY0luaXRJbmRleFNjYW4oSW5kZXhTY2Fu ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJl bGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0 YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoY3VycmVu dFJlbGF0aW9uID09IE5VTEwgfHwgIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0 dXJuIGluZGV4c3RhdGU7CiAKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBj dXJyZW50UmVsYXRpb247CiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVM TDsJLyogbm8gaGVhcCBzY2FuIGhlcmUgKi8KQEAgLTk1MSw3ICs5NTMsMTEgQEAgRXhlY0luaXRJ bmRleFNjYW4oSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAog CS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLwogCWxvY2ttb2RlID0gZXhlY19ydF9mZXRj aChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVsbG9ja21vZGU7Ci0JaW5kZXhzdGF0 ZS0+aXNzX1JlbGF0aW9uRGVzYyA9IGluZGV4X29wZW4obm9kZS0+aW5kZXhpZCwgbG9ja21vZGUp OworCWluZGV4c3RhdGUtPmlzc19SZWxhdGlvbkRlc2MgPSBFeGVjT3BlblNjYW5JbmRleFJlbGF0 aW9uKGVzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJCSBub2RlLT5pbmRleGlkLAorCQkJCQkJCQkJCQkJ CQkJIGxvY2ttb2RlKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KSkKKwkJcmV0dXJuIGluZGV4c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgaW5kZXgtc3Bl Y2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxp bWl0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCBlYjdiNmU1MmJl Li4zNjljOTA0NTc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNDc1LDYgKzQ3NSw4 IEBAIEV4ZWNJbml0TGltaXQoTGltaXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqLwogCW91dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShs aW1pdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIGxpbWl0 c3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgY2hpbGQgZXhwcmVzc2lvbnMKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUxvY2tSb3dzLmMKaW5kZXggMGQzNDg5MTk1Yi4uOTA3Nzg1ODQxMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKQEAgLTMyMiw2ICszMjIsOCBAQCBFeGVjSW5pdExv Y2tSb3dzKExvY2tSb3dzICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiB0 aGVuIGluaXRpYWxpemUgb3V0ZXIgcGxhbgogCSAqLwogCW91dGVyUGxhblN0YXRlKGxyc3RhdGUp ID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2Vs eSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gbHJzdGF0ZTsKIAogCS8q IG5vZGUgcmV0dXJucyB1bm1vZGlmaWVkIHNsb3RzIGZyb20gdGhlIG91dGVyIHBsYW4gKi8KIAls cnN0YXRlLT5wcy5yZXN1bHRvcHNzZXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJp YWwuYwppbmRleCA4ODNlM2YzOTMzLi45NzI5NjJkNDRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWF0ZXJpYWwuYwpAQCAtMjE0LDYgKzIxNCw4IEBAIEV4ZWNJbml0TWF0ZXJpYWwoTWF0ZXJpYWwg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJb3V0ZXJQbGFuID0gb3V0ZXJQ bGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKG1hdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRl clBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKSkKKwkJcmV0dXJuIG1hdHN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHJl c3VsdCB0eXBlIGFuZCBzbG90LiBObyBuZWVkIHRvIGluaXRpYWxpemUgcHJvamVjdGlvbiBpbmZv CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwppbmRleCA2OTBkZWUxZGFhLi42YWFhYjc0M2I1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAgLTk3Myw2ICs5NzMsOCBAQCBFeGVj SW5pdE1lbW9pemUoTWVtb2l6ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAK IAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUobXN0YXRlKSA9 IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHko IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIG1zdGF0ZTsKIAogCS8qCiAJ ICogSW5pdGlhbGl6ZSByZXR1cm4gc2xvdCBhbmQgdHlwZS4gTm8gbmVlZCB0byBpbml0aWFsaXpl IHByb2plY3Rpb24gaW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRl eCAzMjM2NDQ0Y2YxLi5hODJmMGE3MWEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYwpAQCAtOTUsNiArOTUsOCBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5k ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJCQkJCQkJICBsaXN0X2xl bmd0aChub2RlLT5tZXJnZXBsYW5zKSwKIAkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2lu Zm8sCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIG1lcmdlc3RhdGU7CiAJCW1lcmdlc3RhdGUtPm1zX3By dW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlk c3VicGxhbnMpOwogCkBAIC0xMjAsNyArMTIyLDcgQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJn ZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCW1lcmdlc3RhdGUt Pm1zX3BydW5lX3N0YXRlID0gTlVMTDsKIAl9CiAKLQltZXJnZXBsYW5zdGF0ZXMgPSAoUGxhblN0 YXRlICoqKSBwYWxsb2MobnBsYW5zICogc2l6ZW9mKFBsYW5TdGF0ZSAqKSk7CisJbWVyZ2VwbGFu c3RhdGVzID0gKFBsYW5TdGF0ZSAqKikgcGFsbG9jMChucGxhbnMgKiBzaXplb2YoUGxhblN0YXRl ICopKTsKIAltZXJnZXN0YXRlLT5tZXJnZXBsYW5zID0gbWVyZ2VwbGFuc3RhdGVzOwogCW1lcmdl c3RhdGUtPm1zX25wbGFucyA9IG5wbGFuczsKIApAQCAtMTUxLDYgKzE1Myw4IEBAIEV4ZWNJbml0 TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCQlQbGFuCSAgICppbml0Tm9kZSA9IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPm1lcmdlcGxh bnMsIGkpOwogCiAJCW1lcmdlcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2Rl LCBlc3RhdGUsIGVmbGFncyk7CisJCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpKQorCQkJcmV0dXJuIG1lcmdlc3RhdGU7CiAJfQogCiAJbWVyZ2VzdGF0ZS0+cHMucHNf UHJvakluZm8gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlam9pbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCmluZGV4IDky NmU2MzFkODguLjUzY2IxZmYyMDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNZXJnZWpvaW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMK QEAgLTE0OTAsMTEgKzE0OTAsMTUgQEAgRXhlY0luaXRNZXJnZUpvaW4oTWVyZ2VKb2luICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAltZXJnZXN0YXRlLT5tal9Ta2lwTWFya1Jl c3RvcmUgPSBub2RlLT5za2lwX21hcmtfcmVzdG9yZTsKIAogCW91dGVyUGxhblN0YXRlKG1lcmdl c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gbWVy Z2VzdGF0ZTsKIAlvdXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZSht ZXJnZXN0YXRlKSk7CiAJaW5uZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkgPSBFeGVjSW5pdE5vZGUo aW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsCiAJCQkJCQkJCQkJCSAgbWVyZ2VzdGF0ZS0+bWpfU2tp cE1hcmtSZXN0b3JlID8KIAkJCQkJCQkJCQkJICBlZmxhZ3MgOgogCQkJCQkJCQkJCQkgIChlZmxh Z3MgfCBFWEVDX0ZMQUdfTUFSSykpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpKQorCQlyZXR1cm4gbWVyZ2VzdGF0ZTsKIAlpbm5lckRlc2MgPSBFeGVjR2V0UmVz dWx0VHlwZShpbm5lclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCA5ZTU2ZjljMzZjLi44ZGViZmJkM2VjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNDI3Nyw2ICs0Mjc3LDEzIEBA IEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCQkJCQkJCSAgIGxpbml0aWFsX2ludChub2RlLT5yZXN1bHRSZWxhdGlvbnMp KTsKIAl9CiAKKwkvKgorCSAqIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24oKSBtYXkgaGF2ZSByZXR1 cm5lZCB3aXRob3V0IGluaXRpYWxpemluZworCSAqIHJvb3RSZXN1bHRSZWxJbmZvIGlmIHRoZSBw bGFuIGdvdCBpbnZhbGlkYXRlZCwgc28gY2hlY2suCisJICovCisJaWYgKHVubGlrZWx5KCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBtdHN0YXRlOworCiAJLyogc2V0IHVw IGVwcXN0YXRlIHdpdGggZHVtbXkgc3VicGxhbiBkYXRhIGZvciB0aGUgbW9tZW50ICovCiAJRXZh bFBsYW5RdWFsSW5pdCgmbXRzdGF0ZS0+bXRfZXBxc3RhdGUsIGVzdGF0ZSwgTlVMTCwgTklMLAog CQkJCQkgbm9kZS0+ZXBxUGFyYW0sIG5vZGUtPnJlc3VsdFJlbGF0aW9ucyk7CkBAIC00MzA5LDYg KzQzMTYsMTAgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCXsKIAkJCUV4ZWNJbml0UmVzdWx0UmVsYXRpb24oZXN0 YXRlLCByZXN1bHRSZWxJbmZvLCByZXN1bHRSZWxhdGlvbik7CiAKKwkJCS8qIFNlZSB0aGUgY29t bWVudCBhYm92ZS4gKi8KKwkJCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpKQorCQkJCXJldHVybiBtdHN0YXRlOworCiAJCQkvKgogCQkJICogRm9yIGNoaWxkIHJlc3Vs dCByZWxhdGlvbnMsIHN0b3JlIHRoZSByb290IHJlc3VsdCByZWxhdGlvbgogCQkJICogcG9pbnRl ci4gIFdlIGRvIHNvIGZvciB0aGUgY29udmVuaWVuY2Ugb2YgcGxhY2VzIHRoYXQgd2FudCB0bwpA QCAtNDMzNSw2ICs0MzQ2LDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogTm93IHdlIG1heSBpbml0aWFsaXpl IHRoZSBzdWJwbGFuLgogCSAqLwogCW91dGVyUGxhblN0YXRlKG10c3RhdGUpID0gRXhlY0luaXRO b2RlKHN1YnBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIG10c3RhdGU7CiAKIAkvKgogCSAqIERvIGFkZGl0 aW9uYWwgcGVyLXJlc3VsdC1yZWxhdGlvbiBpbml0aWFsaXphdGlvbi4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU5lc3Rsb29wLmMKaW5kZXggMDFmM2Q1NmEzYi4uMzRlYWZiYjZlMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU5lc3Rsb29wLmMKQEAgLTI5NCwxMSArMjk0LDE1IEBAIEV4ZWNJbml0TmVzdExv b3AoTmVzdExvb3AgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIHZhbHVl cy4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShubHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBs YW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIG5sc3RhdGU7CiAJaWYgKG5vZGUtPm5lc3RQYXJhbXMg PT0gTklMKQogCQllZmxhZ3MgfD0gRVhFQ19GTEFHX1JFV0lORDsKIAllbHNlCiAJCWVmbGFncyAm PSB+RVhFQ19GTEFHX1JFV0lORDsKIAlpbm5lclBsYW5TdGF0ZShubHN0YXRlKSA9IEV4ZWNJbml0 Tm9kZShpbm5lclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIG5sc3RhdGU7CiAKIAkvKgogCSAq IEluaXRpYWxpemUgcmVzdWx0IHNsb3QsIHR5cGUgYW5kIHByb2plY3Rpb24uCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVByb2plY3RTZXQuYwppbmRleCBjYTlhNWUyZWQyLi5mODM0NDk5NDc5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKQEAgLTI1NCw2ICsyNTQsOCBAQCBFeGVj SW5pdFByb2plY3RTZXQoUHJvamVjdFNldCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHN0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHN0YXRl OwogCiAJLyoKIAkgKiB3ZSBkb24ndCB1c2UgaW5uZXIgcGxhbgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlUmVjdXJzaXZldW5pb24uYwppbmRleCA3NjgwMTQyYzdiLi41ZGQzMjg1YzQxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwpAQCAtMjQ0LDcgKzI0NCwx MSBAQCBFeGVjSW5pdFJlY3Vyc2l2ZVVuaW9uKFJlY3Vyc2l2ZVVuaW9uICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJ b3V0ZXJQbGFuU3RhdGUocnVzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBl c3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkpCisJCXJldHVybiBydXN0YXRlOwogCWlubmVyUGxhblN0YXRlKHJ1c3RhdGUpID0gRXhlY0lu aXROb2RlKGlubmVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSgh RXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gcnVzdGF0ZTsKIAogCS8qCiAJ ICogSWYgaGFzaGluZywgcHJlY29tcHV0ZSBmbWdyIGxvb2t1cCBkYXRhIGZvciBpbm5lciBsb29w LCBhbmQgY3JlYXRlIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJl c3VsdC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCmluZGV4IGUzY2ZjOWI3 NzIuLjdkN2MyYWE3ODYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1 bHQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKQEAgLTIwNyw2ICsy MDcsOCBAQCBFeGVjSW5pdFJlc3VsdChSZXN1bHQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0 ZShyZXNzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFn cyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVy biByZXNzdGF0ZTsKIAogCS8qCiAJICogd2UgZG9uJ3QgdXNlIGlubmVyIHBsYW4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCmluZGV4IDZhYjkxMDAxYmMuLjNhZmRhZWVjZDcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYwpAQCAtMTIxLDYgKzEyMSw5IEBAIEV4 ZWNJbml0U2FtcGxlU2NhbihTYW1wbGVTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkJRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLAogCQkJCQkJCSBub2RlLT5zY2Fu LnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoc2NhbnN0YXRlLT5z cy5zc19jdXJyZW50UmVsYXRpb24gPT0gTlVMTCB8fAorCQkJCSAhRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpKQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyogd2Ugd29uJ3Qgc2V0IHVwIHRo ZSBIZWFwU2NhbkRlc2MgdGlsbCBsYXRlciAqLwogCXNjYW5zdGF0ZS0+c3Muc3NfY3VycmVudFNj YW5EZXNjID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IGIwNTI3NzVl NWIuLmY3ZmI2NGE0YTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFz Y2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtMTUzLDYg KzE1Myw5IEBAIEV4ZWNJbml0U2VxU2NhbihTZXFTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkJRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLAogCQkJCQkJCSBub2Rl LT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoc2NhbnN0 YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPT0gTlVMTCB8fAorCQkJCSAhRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyogYW5kIGNyZWF0ZSBz bG90IHdpdGggdGhlIGFwcHJvcHJpYXRlIHJvd3R5cGUgKi8KIAlFeGVjSW5pdFNjYW5UdXBsZVNs b3QoZXN0YXRlLCAmc2NhbnN0YXRlLT5zcywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTZXRPcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMKaW5kZXgg ZmUzNGIyMTM0Zi4uMjIzMWQ4YjgyZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNldE9wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMKQEAgLTUy OCw2ICs1MjgsOCBAQCBFeGVjSW5pdFNldE9wKFNldE9wICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAlpZiAobm9kZS0+c3RyYXRlZ3kgPT0gU0VUT1BfSEFTSEVEKQogCQllZmxh Z3MgJj0gfkVYRUNfRkxBR19SRVdJTkQ7CiAJb3V0ZXJQbGFuU3RhdGUoc2V0b3BzdGF0ZSkgPSBF eGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlr ZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBzZXRvcHN0YXRlOwog CW91dGVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKHNldG9wc3RhdGUp KTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwppbmRleCBhZjg1MjQ2NGQwLi5mYjc2ZTRj MDFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKQEAgLTI2Myw2ICsyNjMsOCBAQCBFeGVjSW5p dFNvcnQoU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJZWZsYWdzICY9 IH4oRVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FSRCB8IEVYRUNfRkxBR19NQVJL KTsKIAogCW91dGVyUGxhblN0YXRlKHNvcnRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFu KG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkpCisJCXJldHVybiBzb3J0c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUg c2NhbiBzbG90IGFuZCB0eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVN1YnF1ZXJ5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5j CmluZGV4IDBiMjYxMjE4M2EuLmI1YjUzOGZhOTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U3VicXVlcnlzY2FuLmMKQEAgLTEyNCw2ICsxMjQsOCBAQCBFeGVjSW5pdFN1YnF1ZXJ5U2NhbihT dWJxdWVyeVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRp YWxpemUgc3VicXVlcnkKIAkgKi8KIAlzdWJxdWVyeXN0YXRlLT5zdWJwbGFuID0gRXhlY0luaXRO b2RlKG5vZGUtPnN1YnBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHN1YnF1ZXJ5c3RhdGU7CiAKIAkvKgog CSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlIChuZWVkZWQgYnkgRXhlY0Fzc2lnblNj YW5Qcm9qZWN0aW9uSW5mbykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVU aWRyYW5nZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwpp bmRleCA3MDJlZTg4NGQyLi5hNzY4MzZkMDIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRp ZHJhbmdlc2Nhbi5jCkBAIC0zNzcsNiArMzc3LDggQEAgRXhlY0luaXRUaWRSYW5nZVNjYW4oVGlk UmFuZ2VTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRo ZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVs YXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAodW5saWtl bHkoY3VycmVudFJlbGF0aW9uID09IE5VTEwgfHwgIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KSkKKwkJcmV0dXJuIHRpZHJhbmdlc3RhdGU7CiAKIAl0aWRyYW5nZXN0YXRlLT5zcy5zc19jdXJy ZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJdGlkcmFuZ2VzdGF0ZS0+c3Muc3NfY3Vy cmVudFNjYW5EZXNjID0gTlVMTDsJLyogbm8gdGFibGUgc2NhbiBoZXJlICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRpZHNjYW4uYwppbmRleCBmMzc1OTUxNjk5Li4wODhiYWJmNTcyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVUaWRzY2FuLmMKQEAgLTUyMiw2ICs1MjIsOCBAQCBFeGVjSW5pdFRpZFNjYW4o VGlkU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUg c2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0 aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5 KGN1cnJlbnRSZWxhdGlvbiA9PSBOVUxMIHx8ICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkp CisJCXJldHVybiB0aWRzdGF0ZTsKIAogCXRpZHN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24g PSBjdXJyZW50UmVsYXRpb247CiAJdGlkc3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5V TEw7IC8qIG5vIGhlYXAgc2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlVW5pcXVlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKaW5k ZXggYjgyZDBlOWFkNS4uY2I0NmIyZDVkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVVuaXF1ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwpA QCAtMTM1LDYgKzEzNSw4IEBAIEV4ZWNJbml0VW5pcXVlKFVuaXF1ZSAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJICogdGhlbiBpbml0aWFsaXplIG91dGVyIHBsYW4KIAkgKi8K IAlvdXRlclBsYW5TdGF0ZSh1bmlxdWVzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5v ZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkpCisJCXJldHVybiB1bmlxdWVzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBy ZXN1bHQgc2xvdCBhbmQgdHlwZS4gVW5pcXVlIG5vZGVzIGRvIG5vIHByb2plY3Rpb25zLCBzbwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IDU2MWQ3ZTczMWQuLjFiOTZmNTFm ZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAgLTI0NjQsNiArMjQ2NCw4 IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxh blN0YXRlKHdpbnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdz KTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJu IHdpbnN0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIHNvdXJjZSB0dXBsZSB0eXBlICh3aGlj aCBpcyBhbHNvIHRoZSB0dXBsZSB0eXBlIHRoYXQgd2UnbGwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggOTAy NzkzYjAyYi4uYjc1NDgyNzAxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3Bp LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTcwLDcgKzcwLDggQEAgc3Rh dGljIGludAlfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1 dGVPcHRpb25zICpvcHRpb25zLAogc3RhdGljIFBhcmFtTGlzdEluZm8gX1NQSV9jb252ZXJ0X3Bh cmFtcyhpbnQgbmFyZ3MsIE9pZCAqYXJndHlwZXMsCiAJCQkJCQkJCQkJIERhdHVtICpWYWx1ZXMs IGNvbnN0IGNoYXIgKk51bGxzKTsKIAotc3RhdGljIGludAlfU1BJX3BxdWVyeShRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KTsKK3N0YXRpYyBp bnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2Vycywg dWludDY0IHRjb3VudCwKKwkJCQkJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIGludCBx dWVyeV9pbmRleCk7CiAKIHN0YXRpYyB2b2lkIF9TUElfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJn KTsKIApAQCAtMTY4Miw3ICsxNjgzLDggQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0 IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJ CSAgcGxhbnNvdXJjZS0+Y29tbWFuZFRhZywKIAkJCQkJICBzdG10X2xpc3QsCi0JCQkJCSAgY3Bs YW4pOworCQkJCQkgIGNwbGFuLAorCQkJCQkgIHBsYW5zb3VyY2UpOwogCiAJLyoKIAkgKiBTZXQg dXAgb3B0aW9ucyBmb3IgcG9ydGFsLiAgRGVmYXVsdCBTQ1JPTEwgdHlwZSBpcyBjaG9zZW4gdGhl IHNhbWUgd2F5CkBAIC0yNDk0LDYgKzI0OTYsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFu UHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQlDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlID0gKENhY2hlZFBsYW5Tb3VyY2UgKikgbGZpcnN0KGxjMSk7CiAJ CUxpc3QJICAgKnN0bXRfbGlzdDsKIAkJTGlzdENlbGwgICAqbGMyOworCQlpbnQJCQlpID0gMDsK IAogCQlzcGljYWxsYmFja2FyZy5xdWVyeSA9IHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZzsKIApA QCAtMjY5MSw4ICsyNjk0LDkgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBj b25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJCQkJCQlvcHRpb25zLT5wYXJh bXMsCiAJCQkJCQkJCQkJX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkwKTsKLQkJ CQlyZXMgPSBfU1BJX3BxdWVyeShxZGVzYywgZmlyZV90cmlnZ2VycywKLQkJCQkJCQkJICBjYW5T ZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKKworCQkJCXJlcyA9IF9TUElfcHF1ZXJ5KHFk ZXNjLCBmaXJlX3RyaWdnZXJzLCBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwLAorCQkJ CQkJCQkgIHBsYW5zb3VyY2UsIGkpOwogCQkJCUZyZWVRdWVyeURlc2MocWRlc2MpOwogCQkJfQog CQkJZWxzZQpAQCAtMjc4OSw2ICsyNzkzLDggQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0 ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQlteV9yZXMgPSBy ZXM7CiAJCQkJZ290byBmYWlsOwogCQkJfQorCisJCQlpKys7CiAJCX0KIAogCQkvKiBEb25lIHdp dGggdGhpcyBwbGFuLCBzbyByZWxlYXNlIHJlZmNvdW50ICovCkBAIC0yODY2LDcgKzI4NzIsOCBA QCBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIH0KIAogc3Rh dGljIGludAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmln Z2VycywgdWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBi b29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQsCisJCQlDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgpCiB7CiAJaW50CQkJb3BlcmF0aW9uID0gcXVlcnlE ZXNjLT5vcGVyYXRpb247CiAJaW50CQkJZWZsYWdzOwpAQCAtMjkyMiw3ICsyOTI5LDcgQEAgX1NQ SV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0 IHRjb3VudCkKIAllbHNlCiAJCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTOwogCi0J RXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJRXhlY3V0b3JTdGFydEV4dChxdWVy eURlc2MsIGVmbGFncywgcGxhbnNvdXJjZSwgcXVlcnlfaW5kZXgpOwogCiAJRXhlY3V0b3JSdW4o cXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgdGNvdW50LCB0cnVlKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jCmluZGV4IDhiYzZiZWExMTMuLmNjYmMyN2I1NzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAg LTEyMzcsNiArMTIzNyw3IEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0 cmluZykKIAkJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkJICBjb21tYW5kVGFnLAogCQkJCQkJ ICBwbGFudHJlZV9saXN0LAorCQkJCQkJICBOVUxMLAogCQkJCQkJICBOVUxMKTsKIAogCQkvKgpA QCAtMjAyNyw3ICsyMDI4LDggQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9t ZXNzYWdlKQogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBwc3JjLT5jb21tYW5kVGFnLAog CQkJCQkgIGNwbGFuLT5zdG10X2xpc3QsCi0JCQkJCSAgY3BsYW4pOworCQkJCQkgIGNwbGFuLAor CQkJCQkgIHBzcmMpOwogCiAJLyogRG9uZSB3aXRoIHRoZSBzbmFwc2hvdCB1c2VkIGZvciBwYXJh bWV0ZXIgSS9PIGFuZCBwYXJzaW5nL3BsYW5uaW5nICovCiAJaWYgKHNuYXBzaG90X3NldCkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jCmluZGV4IDZlOGY2YjFiOGYuLmQ5YWU2MDU3OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMTks NiArMTksNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjb21tYW5k cy9wcmVwYXJlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJl eGVjdXRvci90c3RvcmVSZWNlaXZlci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInBnX3RyYWNlLmgiCkBAIC0zNyw2ICszOCw4IEBAIFBvcnRhbAkJQWN0aXZlUG9ydGFsID0g TlVMTDsKIAogc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAogCQkJ CQkJIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3Vy Y2UsCisJCQkJCQkgaW50IHF1ZXJ5X2luZGV4LAogCQkJCQkJIGNvbnN0IGNoYXIgKnNvdXJjZVRl eHQsCiAJCQkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkgUXVlcnlFbnZpcm9ubWVu dCAqcXVlcnlFbnYsCkBAIC04MCw2ICs4Myw3IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQsCiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5jb21tYW5kVHlw ZTsJLyogb3BlcmF0aW9uICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CS8qIHBs YW4gKi8KIAlxZC0+Y3BsYW4gPSBjcGxhbjsJCQkvKiBDYWNoZWRQbGFuIHN1cHBseWluZyB0aGUg cGxhbm5lZHN0bXQgKi8KKwlxZC0+cmVsZWFzZV9jcGxhbiA9IGZhbHNlOwogCXFkLT5zb3VyY2VU ZXh0ID0gc291cmNlVGV4dDsJLyogcXVlcnkgdGV4dCAqLwogCXFkLT5zbmFwc2hvdCA9IFJlZ2lz dGVyU25hcHNob3Qoc25hcHNob3QpOwkvKiBzbmFwc2hvdCAqLwogCS8qIFJJIGNoZWNrIHNuYXBz aG90ICovCkBAIC0xMTQsNiArMTE4LDEzIEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVz YykKIAlVbnJlZ2lzdGVyU25hcHNob3QocWRlc2MtPnNuYXBzaG90KTsKIAlVbnJlZ2lzdGVyU25h cHNob3QocWRlc2MtPmNyb3NzY2hlY2tfc25hcHNob3QpOwogCisJLyoKKwkgKiBSZWxlYXNlIENh Y2hlZFBsYW4gaWYgcmVxdWVzdGVkLiAgVGhlIENhY2hlZFBsYW4gaXMgbm90IGFzc29jaWF0ZWQg d2l0aAorCSAqIGEgUmVzb3VyY2VPd25lciB3aGVuIHJlbGVhc2VfY3BsYW4gaXMgdHJ1ZTsgc2Vl IEV4ZWN1dG9yU3RhcnRFeHQoKS4KKwkgKi8KKwlpZiAocWRlc2MtPnJlbGVhc2VfY3BsYW4pCisJ CVJlbGVhc2VDYWNoZWRQbGFuKHFkZXNjLT5jcGxhbiwgTlVMTCk7CisKIAkvKiBPbmx5IHRoZSBR dWVyeURlc2MgaXRzZWxmIG5lZWQgYmUgZnJlZWQgKi8KIAlwZnJlZShxZGVzYyk7CiB9CkBAIC0x MjYsNiArMTM3LDggQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQogICoKICAqCXBs YW46IHRoZSBwbGFuIHRyZWUgZm9yIHRoZSBxdWVyeQogICoJY3BsYW46IENhY2hlZFBsYW4gc3Vw cGx5aW5nIHRoZSBwbGFuCisgKglwbGFuc291cmNlOiBDYWNoZWRQbGFuU291cmNlIHN1cHBseWlu ZyB0aGUgY3BsYW4KKyAqCXF1ZXJ5X2luZGV4OiBpbmRleCBvZiB0aGUgcXVlcnkgaW4gcGxhbnNv dXJjZS0+cXVlcnlfbGlzdAogICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBx dWVyeQogICoJcGFyYW1zOiBhbnkgcGFyYW1ldGVycyBuZWVkZWQKICAqCWRlc3Q6IHdoZXJlIHRv IHNlbmQgcmVzdWx0cwpAQCAtMTM5LDYgKzE1Miw4IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNj ICpxZGVzYykKIHN0YXRpYyB2b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJ CQkgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwK KwkJCSBpbnQgcXVlcnlfaW5kZXgsCiAJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCSBQ YXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAg LTE1Nyw3ICsxNzIsNyBAQCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJLyoKIAkg KiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCiAJ ICovCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOworCUV4ZWN1dG9yU3RhcnRFeHQocXVl cnlEZXNjLCAwLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CiAKIAkvKgogCSAqIFJ1biB0aGUg cGxhbiB0byBjb21wbGV0aW9uLgpAQCAtNTE4LDkgKzUzMywxMiBAQCBQb3J0YWxTdGFydChQb3J0 YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJbXllZmxhZ3MgPSBlZmxhZ3M7 CiAKIAkJCQkvKgotCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFu IGZvciBleGVjdXRpb24KKwkJCQkgKiBFeGVjdXRvclN0YXJ0RXh0KCkgdG8gcHJlcGFyZSB0aGUg cGxhbiBmb3IgZXhlY3V0aW9uLiAgSWYKKwkJCQkgKiB0aGUgcG9ydGFsIGlzIHVzaW5nIGEgY2Fj aGVkIHBsYW4sIGl0ICBtYXkgZ2V0IGludmFsaWRhdGVkCisJCQkJICogZHVyaW5nIHBsYW4gaW50 aWFsaXphdGlvbiwgaW4gd2hpY2ggY2FzZSBhIG5ldyBvbmUgaXMKKwkJCQkgKiBjcmVhdGVkIGFu ZCBzYXZlZCBpbiB0aGUgUXVlcnlEZXNjLgogCQkJCSAqLwotCQkJCUV4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBteWVmbGFncyk7CisJCQkJRXhlY3V0b3JTdGFydEV4dChxdWVyeURlc2MsIG15ZWZs YWdzLCBwb3J0YWwtPnBsYW5zb3VyY2UsIDApOwogCiAJCQkJLyoKIAkJCQkgKiBUaGlzIHRlbGxz IFBvcnRhbENsZWFudXAgdG8gc2h1dCBkb3duIHRoZSBleGVjdXRvcgpAQCAtMTIwMSw2ICsxMjE5 LDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIHsKIAlib29sCQlhY3RpdmVfc25h cHNob3Rfc2V0ID0gZmFsc2U7CiAJTGlzdENlbGwgICAqc3RtdGxpc3RfaXRlbTsKKwlpbnQJCQlp ID0gMDsKIAogCS8qCiAJICogSWYgdGhlIGRlc3RpbmF0aW9uIGlzIERlc3RSZW1vdGVFeGVjdXRl LCBjaGFuZ2UgdG8gRGVzdE5vbmUuICBUaGUKQEAgLTEyODMsNiArMTMwMiw4IEBAIFBvcnRhbFJ1 bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQkJLyogc3RhdGVtZW50IGNhbiBzZXQgdGFnIHN0cmlu ZyAqLwogCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKIAkJCQkJCQkgcG9ydGFsLT5jcGxhbiwKKwkJ CQkJCQkgcG9ydGFsLT5wbGFuc291cmNlLAorCQkJCQkJCSBpLAogCQkJCQkJCSBwb3J0YWwtPnNv dXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwt PnF1ZXJ5RW52LApAQCAtMTI5Myw2ICsxMzE0LDggQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBv cnRhbCwKIAkJCQkvKiBzdG10IGFkZGVkIGJ5IHJld3JpdGUgY2Fubm90IHNldCB0YWcgKi8KIAkJ CQlQcm9jZXNzUXVlcnkocHN0bXQsCiAJCQkJCQkJIHBvcnRhbC0+Y3BsYW4sCisJCQkJCQkJIHBv cnRhbC0+cGxhbnNvdXJjZSwKKwkJCQkJCQkgaSwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0 LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVu diwKQEAgLTEzNTcsNiArMTM4MCw4IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJ CSAqLwogCQlpZiAobG5leHQocG9ydGFsLT5zdG10cywgc3RtdGxpc3RfaXRlbSkgIT0gTlVMTCkK IAkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkJaSsrOwogCX0KIAogCS8qIFBvcCB0 aGUgc25hcHNob3QgaWYgd2UgcHVzaGVkIG9uZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNh Y2hlLmMKaW5kZXggNmQyZTM4NWZlOC4uNmFlMDUxNzVjNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cGxhbmNhY2hlLmMKQEAgLTEyNzksNiArMTI3OSw1NiBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJcmV0dXJu IHBsYW47CiB9CiAKKy8qCisgKiBDaGVjayB0aGUgdmFsaWRpdHkgb2YsIGFuZCByZXBsYW4sIG9u bHkgdGhlIHF1ZXJ5IGF0IHRoZSBnaXZlbiAwLWJhc2VkIGluZGV4CisgKiBpbiB0aGUgcHJvdmlk ZWQgQ2FjaGVkUGxhblNvdXJjZS4KKyAqCisgKiBSZXR1cm5zIGEgQ2FjaGVkUGxhbiBmb3IgdGhh dCBzcGVjaWZpYyBxdWVyeS4gVGhlIENhY2hlZFBsYW4gaXMgbm90IHNhdmVkIGluCisgKiB0aGUg Q2FjaGVkUGxhblNvdXJjZSwgc28gaXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRv IGZyZWUgaXQgYnkKKyAqIGV2ZW50dWFsbHkgY2FsbGluZyBSZWxlYXNlQ2FjaGVkUGxhbigpIG9u IGl0LgorICovCitDYWNoZWRQbGFuICoKK0dldFNpbmdsZUNhY2hlZFBsYW4oQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSwgaW50IHF1ZXJ5X2luZGV4LAorCQkJCQlQYXJhbUxpc3RJbmZvIGJv dW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKK3sKKwlMaXN0ICpxdWVyeV9s aXN0ID0gcGxhbnNvdXJjZS0+cXVlcnlfbGlzdDsKKwlMaXN0ICpxdWVyeV9saXN0X25ldzsKKwlD YWNoZWRQbGFuICpwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW4sCisJCQkgICAqbmV3cGxhbjsKKwlk b3VibGUgZ2VuZXJpY19jb3N0ID0gcGxhbnNvdXJjZS0+Z2VuZXJpY19jb3N0OworCWRvdWJsZSB0 b3RhbF9jdXN0b21fY29zdCA9IHBsYW5zb3VyY2UtPnRvdGFsX2N1c3RvbV9jb3N0OworCisJaWYg KHBsYW4gPT0gTlVMTCB8fCBwbGFuLT5pc192YWxpZCkKKwkJZWxvZyhFUlJPUiwgIkdldFNpbmds ZUNhY2hlZFBsYW4oKSBjYWxsZWQgaW4gdGhlIHdyb25nIGNvbnRleHQiKTsKKworCS8qCisJICog Q3JlYXRlIGEgbmV3IHBsYW4gZm9yIHRoZSBudGggcXVlcnkgYWZ0ZXIgcmV2YWxpZGF0aW5nIGl0 LgorCSAqCisJICogVGVtcG9yYXJpbHkgcmVzZXQgZ3BsYW4gdG8gZW5zdXJlIHRoYXQgdGhlIENh Y2hlZFBsYW4gdGhhdCBpdCdzIHBvaW50aW5nCisJICogdG8gaXMgbm90IHJlbGVhc2VkLCBiZWNh dXNlIHRoZSBjYWxsZXIgbWlnaHQgc3RpbGwgbmVlZCBpdC4KKwkgKi8KKwlxdWVyeV9saXN0X25l dyA9IGxpc3RfbWFrZTEobGlzdF9udGgocGxhbnNvdXJjZS0+cXVlcnlfbGlzdCwgcXVlcnlfaW5k ZXgpKTsKKwlwbGFuc291cmNlLT5xdWVyeV9saXN0ID0gcXVlcnlfbGlzdF9uZXc7CisJcGxhbnNv dXJjZS0+Z3BsYW4gPSBOVUxMOworCW5ld3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2Us IGJvdW5kUGFyYW1zLCBOVUxMLCBxdWVyeUVudik7CisJcGxhbnNvdXJjZS0+Z3BsYW4gPSBwbGFu OworCisJLyogUmVzdG9yZSBvcmlnaW5hbCBxdWVyeV9saXN0LiAqLworCXBsYW5zb3VyY2UtPnF1 ZXJ5X2xpc3QgPSBxdWVyeV9saXN0OworCWxpc3RfZnJlZShxdWVyeV9saXN0X25ldyk7CisKKwkv KgorCSAqIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHBsYW4gY29zdHMuIFRoZSB2YWx1ZXMgYWZ0ZXIg dGhlIEdldENhY2hlZFBsYW4oKQorCSAqIGNhbGwgcmVwcmVzZW50IHRoZSBjb3N0IG9mIG9ubHkg dGhlIG50aCBxdWVyeSwgd2hlcmVhcyB0aGUgb3JpZ2luYWwKKwkgKiB2YWx1ZXMgcmVwcmVzZW50 IHRoZSBjdW11bGF0aXZlIGNvc3RzIGZvciBhbGwgcXVlcmllcyBpbgorCSAqIHBsYW5zb3VyY2Ut PnF1ZXJ5X2xpc3QuCisJICovCisJcGxhbnNvdXJjZS0+Z2VuZXJpY19jb3N0ID0gZ2VuZXJpY19j b3N0OworCXBsYW5zb3VyY2UtPnRvdGFsX2N1c3RvbV9jb3N0ID0gdG90YWxfY3VzdG9tX2Nvc3Q7 CisKKwlyZXR1cm4gbmV3cGxhbjsKK30KKwogLyoKICAqIFJlbGVhc2VDYWNoZWRQbGFuOiByZWxl YXNlIGFjdGl2ZSB1c2Ugb2YgYSBjYWNoZWQgcGxhbi4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0 YWxtZW0uYwppbmRleCA0YTI0NjEzNTM3Li5iZjcwZmQ0Y2U3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv cG9ydGFsbWVtLmMKQEAgLTI4NCw3ICsyODQsOCBAQCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwg cG9ydGFsLAogCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkgIENvbW1hbmRUYWcg Y29tbWFuZFRhZywKIAkJCQkgIExpc3QgKnN0bXRzLAotCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4p CisJCQkJICBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCQkgIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UpCiB7CiAJQXNzZXJ0KFBvcnRhbElzVmFsaWQocG9ydGFsKSk7CiAJQXNzZXJ0KHBvcnRh bC0+c3RhdHVzID09IFBPUlRBTF9ORVcpOwpAQCAtMjk5LDYgKzMwMCw3IEBAIFBvcnRhbERlZmlu ZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJcG9ydGFsLT5jb21tYW5kVGFnID0gY29tbWFuZFRhZzsK IAlwb3J0YWwtPnN0bXRzID0gc3RtdHM7CiAJcG9ydGFsLT5jcGxhbiA9IGNwbGFuOworCXBvcnRh bC0+cGxhbnNvdXJjZSA9IHBsYW5zb3VyY2U7CiAJcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfREVG SU5FRDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IGJmMzI2ZWViNzAuLjY1MmUxYWZi ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTEwMiw2ICsxMDIsNyBAQCBleHRlcm4gdm9p ZCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywK IAkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu dik7CiAKIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCwgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkgICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLCBpbnQgcGxhbl9pbmRleCwKIAkJCQkJCSAgIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5T dGF0ZSAqZXMsCiAJCQkJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBh cmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3RyaWdnZXIuaAppbmRleCA4YTVhOWZlNjQyLi5kYjIxNTYxYzhjIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJp Z2dlci5oCkBAIC0yNTgsNiArMjU4LDcgQEAgZXh0ZXJuIHZvaWQgRXhlY0FTVHJ1bmNhdGVUcmln Z2VycyhFU3RhdGUgKmVzdGF0ZSwKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luWGFjdCh2 b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luUXVlcnkodm9pZCk7CiBleHRlcm4g dm9pZCBBZnRlclRyaWdnZXJFbmRRdWVyeShFU3RhdGUgKmVzdGF0ZSk7CitleHRlcm4gdm9pZCBB ZnRlclRyaWdnZXJBYm9ydFF1ZXJ5KHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyRmly ZURlZmVycmVkKHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyRW5kWGFjdChib29sIGlz Q29tbWl0KTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luU3ViWGFjdCh2b2lkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjZGVzYy5oCmluZGV4IDBlNzI0NTQzNWQuLmM2YWQ4ZmVjZTcgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY2Rlc2MuaApAQCAtMzYsNiArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURl c2MKIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURfVVBEQVRFLCBldGMu ICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mgb3V0cHV0IChjb3Vs ZCBiZSB1dGlsaXR5LCB0b28pICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVkUGxh biB0aGF0IHN1cHBsaWVzIHRoZSBwbGFubmVkc3RtdCAqLworCWJvb2wJCXJlbGVhc2VfY3BsYW47 CS8qIFNob3VsZCBGcmVlUXVlcnlEZXNjKCkgcmVsZWFzZSBjcGxhbj8gKi8KIAljb25zdCBjaGFy ICpzb3VyY2VUZXh0OwkJLyogc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNob3QJ c25hcHNob3Q7CQkvKiBzbmFwc2hvdCB0byB1c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJY3Jv c3NjaGVja19zbmFwc2hvdDsJLyogY3Jvc3NjaGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggNjljM2ViZmYwMC4uY2UyNDQ3YThjZiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjdXRvci5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAibm9kZXMvbG9j a29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2FjaGUuaCIKIAogCiAvKgpAQCAt MTk4LDYgKzE5OSw4IEBAIEV4ZWNHZXRKdW5rQXR0cmlidXRlKFR1cGxlVGFibGVTbG90ICpzbG90 LCBBdHRyTnVtYmVyIGF0dG5vLCBib29sICppc051bGwpCiAgKiBwcm90b3R5cGVzIGZyb20gZnVu Y3Rpb25zIGluIGV4ZWNNYWluLmMKICAqLwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFydChRdWVy eURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CitleHRlcm4gdm9pZCBFeGVjdXRvclN0YXJ0 RXh0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzLAorCQkJCQkJCSBDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgpOwogZXh0ZXJuIHZvaWQgc3RhbmRh cmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRl cm4gdm9pZCBFeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCVNjYW5EaXJl Y3Rpb24gZGlyZWN0aW9uLCB1aW50NjQgY291bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsKQEAgLTI2 MSw2ICsyNjQsMjAgQEAgZXh0ZXJuIHZvaWQgRXhlY0VuZE5vZGUoUGxhblN0YXRlICpub2RlKTsK IGV4dGVybiB2b2lkIEV4ZWNTaHV0ZG93bk5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2 b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0ZSAqY2hp bGRfbm9kZSk7CiAKKy8qCisgKiBJcyB0aGUgQ2FjaGVkUGxhbiBpbiBlc19jYWNoZWRwbGFuIHN0 aWxsIHZhbGlkPworICoKKyAqIENhbGxlZCBhdCB2YXJpb3VzIHBvaW50cyBkdXJpbmcgRXhlY3V0 b3JTdGFydCgpIGJlY2F1c2UgaW52YWxpZGF0aW9uCisgKiBtZXNzYWdlcyB0aGF0IGFmZmVjdCB0 aGUgcGxhbiBtaWdodCBiZSByZWNlaXZlZCBhZnRlciBsb2NrcyBoYXZlIGJlZW4KKyAqIHRha2Vu IG9uIHJ1bnRpbWUtcHJ1bmFibGUgcmVsYXRpb25zLiBUaGUgY2FsbGVyIHNob3VsZCB0YWtlIGFw cHJvcHJpYXRlCisgKiBhY3Rpb24gaWYgdGhlIHBsYW4gaGFzIGJlY29tZSBpbnZhbGlkLgorICov CitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNQbGFuU3RpbGxWYWxpZChFU3RhdGUgKmVzdGF0ZSkK K3sKKwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09IE5VTEwgPyB0cnVlIDoKKwkJQ2Fj aGVkUGxhblN0aWxsVmFsaWQoZXN0YXRlLT5lc19jYWNoZWRwbGFuKTsKK30KIAogLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICoJCUV4ZWNQcm9jTm9kZQpAQCAtNTg5LDYgKzYwNiw3IEBAIGV4dGVybiB2b2lkIEV4ZWND cmVhdGVTY2FuU2xvdEZyb21PdXRlclBsYW4oRVN0YXRlICplc3RhdGUsCiBleHRlcm4gYm9vbCBF eGVjUmVsYXRpb25Jc1RhcmdldFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBzY2FucmVs aWQpOwogCiBleHRlcm4gUmVsYXRpb24gRXhlY09wZW5TY2FuUmVsYXRpb24oRVN0YXRlICplc3Rh dGUsIEluZGV4IHNjYW5yZWxpZCwgaW50IGVmbGFncyk7CitleHRlcm4gUmVsYXRpb24gRXhlY09w ZW5TY2FuSW5kZXhSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgT2lkIGluZGV4aWQsIGludCBsb2Nr bW9kZSk7CiAKIGV4dGVybiB2b2lkIEV4ZWNJbml0UmFuZ2VUYWJsZShFU3RhdGUgKmVzdGF0ZSwg TGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcGVybUluZm9zKTsKIGV4dGVybiB2b2lkIEV4ZWNDbG9z ZVJhbmdlVGFibGVSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApp bmRleCBlZTA4OTUwNWEwLi4yYThlNWJkNzg0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjgw LDYgKzY4MCw3IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCWludAkJCWVzX3RvcF9lZmxhZ3M7 CS8qIGVmbGFncyBwYXNzZWQgdG8gRXhlY3V0b3JTdGFydCAqLwogCWludAkJCWVzX2luc3RydW1l bnQ7CS8qIE9SIG9mIEluc3RydW1lbnRPcHRpb24gZmxhZ3MgKi8KIAlib29sCQllc19maW5pc2hl ZDsJLyogdHJ1ZSB3aGVuIEV4ZWN1dG9yRmluaXNoIGlzIGRvbmUgKi8KKwlib29sCQllc19hYm9y dGVkOwkJLyogdHJ1ZSB3aGVuIGV4ZWN1dGlvbiB3YXMgYWJvcnRlZCAqLwogCiAJTGlzdAkgICAq ZXNfZXhwcmNvbnRleHRzOwkvKiBMaXN0IG9mIEV4cHJDb250ZXh0cyB3aXRoaW4gRVN0YXRlICov CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcGxhbmNhY2hlLmgKaW5kZXggMGI1ZWUwMDdjYS4uZjNlY2JkMjc5YiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvcGxhbmNhY2hlLmgKQEAgLTIyNCw2ICsyMjQsMTEgQEAgZXh0ZXJuIENhY2hlZFBsYW4gKkdl dENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJIFBhcmFt TGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCQkJCQkJCSBSZXNvdXJjZU93bmVyIG93bmVyLAogCQkJ CQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworZXh0ZXJuIENhY2hlZFBsYW4gKkdl dFNpbmdsZUNhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKKwkJCQkJCQkJ CSAgIGludCBxdWVyeV9pbmRleCwKKwkJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJh bXMsCisJCQkJCQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisKIGV4dGVybiB2 b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3du ZXIpOwogCiBleHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLApAQCAtMjQ1LDQgKzI1MCwxNyBAQCBDYWNoZWRQ bGFuUmVxdWlyZXNMb2NraW5nKENhY2hlZFBsYW4gKmNwbGFuKQogCXJldHVybiBjcGxhbi0+aXNf Z2VuZXJpYzsKIH0KIAorLyoKKyAqIENhY2hlZFBsYW5TdGlsbFZhbGlkCisgKiAgICAgIFJldHVy bnMgd2hldGhlciBhIGNhY2hlZCBnZW5lcmljIHBsYW4gaXMgc3RpbGwgdmFsaWQuCisgKgorICog SW52b2tlZCBieSB0aGUgZXhlY3V0b3IgdG8gY2hlY2sgaWYgdGhlIHBsYW4gaGFzIG5vdCBiZWVu IGludmFsaWRhdGVkIGFmdGVyCisgKiB0YWtpbmcgbG9ja3MgZHVyaW5nIHRoZSBpbml0aWFsaXph dGlvbiBvZiB0aGUgcGxhbi4KKyAqLworc3RhdGljIGlubGluZSBib29sCitDYWNoZWRQbGFuU3Rp bGxWYWxpZChDYWNoZWRQbGFuICpjcGxhbikKK3sKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOwor fQorCiAjZW5kaWYJCQkJCQkJLyogUExBTkNBQ0hFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3BvcnRhbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggMjlm NDk4MjlmMi4uNThjMzgyOGQyYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFs LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCB0 eXBlZGVmIHN0cnVjdCBQb3J0YWxEYXRhCiAJUXVlcnlDb21wbGV0aW9uIHFjOwkJCS8qIGNvbW1h bmQgY29tcGxldGlvbiBkYXRhIGZvciBleGVjdXRlZCBxdWVyeSAqLwogCUxpc3QJICAgKnN0bXRz OwkJCS8qIGxpc3Qgb2YgUGxhbm5lZFN0bXRzICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyog Q2FjaGVkUGxhbiwgaWYgc3RtdHMgYXJlIGZyb20gb25lICovCisJQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZTsJLyogQ2FjaGVkUGxhblNvdXJjZSwgZm9yIGNwbGFuICovCiAKIAlQYXJhbUxp c3RJbmZvIHBvcnRhbFBhcmFtczsgLyogcGFyYW1zIHRvIHBhc3MgdG8gcXVlcnkgKi8KIAlRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudjsgLyogZW52aXJvbm1lbnQgZm9yIHF1ZXJ5ICovCkBAIC0y NDEsNyArMjQyLDggQEAgZXh0ZXJuIHZvaWQgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRh bCwKIAkJCQkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJICBDb21tYW5kVGFn IGNvbW1hbmRUYWcsCiAJCQkJCQkJICBMaXN0ICpzdG10cywKLQkJCQkJCQkgIENhY2hlZFBsYW4g KmNwbGFuKTsKKwkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJCSAgQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSk7CiBleHRlcm4gUGxhbm5lZFN0bXQgKlBvcnRhbEdldFByaW1h cnlTdG10KFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsQ3JlYXRlSG9sZFN0b3Jl KFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxsKHZv aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZp bGUgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQppbmRleCA3MGYy NGU4NDZkLi4zZWViMDk3ZmRlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4 ZWN1dGlvbi9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9N YWtlZmlsZQpAQCAtOCw3ICs4LDggQEAgT0JKUyA9IFwKIAlkZWxheV9leGVjdXRpb24ubwogCiBJ U09MQVRJT04gPSBwYXJ0aXRpb24tYWRkaXRpb24gXAotCSAgICBwYXJ0aXRpb24tcmVtb3ZhbC0x CisJICAgIHBhcnRpdGlvbi1yZW1vdmFsLTEgXAorCQljYWNoZWQtcGxhbi1pbnZhbAogCiBpZmRl ZiBVU0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29uZmlnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyBiL3NyYy90ZXN0L21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCmluZGV4IDE1NWM4YThkNTUuLjBi NWYzMTdjZDEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2Rl bGF5X2V4ZWN1dGlvbi5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2Rl bGF5X2V4ZWN1dGlvbi5jCkBAIC0xLDE0ICsxLDE4IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq CiAgKiBkZWxheV9leGVjdXRpb24uYwotICoJCVRlc3QgbW9kdWxlIHRvIGFsbG93IGRlbGF5IGJl dHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGEgcXVlcnkuCisgKgkJVGVzdCBtb2R1bGUg dG8gaW50cm9kdWNlIGRlbGF5IGF0IHZhcmlvdXMgcG9pbnRzIGR1cmluZyBleGVjdXRpb24gb2Yg YQorICoJCXF1ZXJ5IHRvIHRlc3QgdGhhdCBleGVjdXRpb24gcHJvY2VlZHMgc2FmZWx5IGluIGxp Z2h0IG9mIGNvbmN1cnJlbnQKKyAqCQljaGFuZ2VzLgogICoKICAqIFRoZSBkZWxheSBpcyBpbXBs ZW1lbnRlZCBieSB0YWtpbmcgYW5kIGltbWVkaWF0ZWx5IHJlbGVhc2luZyBhIHNwZWNpZmllZAog ICogYWR2aXNvcnkgbG9jay4gIElmIGFub3RoZXIgcHJvY2VzcyBoYXMgcHJldmlvdXNseSB0YWtl biB0aGF0IGxvY2ssIHRoZQogICogY3VycmVudCBwcm9jZXNzIHdpbGwgYmUgYmxvY2tlZCB1bnRp bCB0aGUgbG9jayBpcyByZWxlYXNlZDsgb3RoZXJ3aXNlLAogICogdGhlcmUncyBubyBlZmZlY3Qu ICBUaGlzIGFsbG93cyBhbiBpc29sYXRpb250ZXN0ZXIgc2NyaXB0IHRvIHJlbGlhYmx5Ci0gKiB0 ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90 aGVyIGJhY2tlbmQKLSAqIGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNp cmVkIHF1ZXJ5LgorICogdGVzdCBiZWhhdmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9u IGhhcHBlbnMgaW4gYW5vdGhlciBiYWNrZW5kIGluCisgKiBhIGNvdXBsZSBvZiBjYXNlczogMSkg YmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkKKyAqIHdo ZW4gdXNpbmcgdGhlIHBsYW5uZXJfaG9vaywgMikgYmV0d2VlbiBSZXZhbGlkYXRlQ2FjaGVkUXVl cnkoKSBhbmQKKyAqIEV4ZWN1dG9yU3RhcnQoKSB3aGVuIHVzaW5nIHRoZSBFeGVjdXRvclN0YXJ0 X2hvb2suCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjQsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCiAgKgpAQCAtMjIsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8bGlt aXRzLmg+CiAKKyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm9wdGlt aXplci9wbGFubmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1 dGlscy9ndWMuaCIKQEAgLTMyLDkgKzM3LDExIEBAIFBHX01PRFVMRV9NQUdJQzsKIAogLyogR1VD OiBhZHZpc29yeSBsb2NrIElEIHRvIHVzZS4gIFplcm8gZGlzYWJsZXMgdGhlIGZlYXR1cmUuICov CiBzdGF0aWMgaW50CXBvc3RfcGxhbm5pbmdfbG9ja19pZCA9IDA7CitzdGF0aWMgaW50CWV4ZWN1 dG9yX3N0YXJ0X2xvY2tfaWQgPSAwOwogCi0vKiBTYXZlIHByZXZpb3VzIHBsYW5uZXIgaG9vayB1 c2VyIHRvIGJlIGEgZ29vZCBjaXRpemVuICovCisvKiBTYXZlIHByZXZpb3VzIGhvb2sgdXNlcnMg dG8gYmUgYSBnb29kIGNpdGl6ZW4gKi8KIHN0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBwcmV2X3Bs YW5uZXJfaG9vayA9IE5VTEw7CitzdGF0aWMgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgcHJldl9F eGVjdXRvclN0YXJ0X2hvb2sgPSBOVUxMOwogCiAKIC8qIHBsYW5uZXJfaG9vayBmdW5jdGlvbiB0 byBwcm92aWRlIHRoZSBkZXNpcmVkIGRlbGF5ICovCkBAIC03MCwxMSArNzcsNDEgQEAgZGVsYXlf ZXhlY3V0aW9uX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcs CiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogRXhlY3V0b3JTdGFydF9ob29rIGZ1bmN0aW9uIHRv IHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVsYXkgKi8KK3N0YXRpYyB2b2lkCitkZWxheV9leGVjdXRp b25fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK3sKKwkv KiBJZiBlbmFibGVkLCBkZWxheSBieSB0YWtpbmcgYW5kIHJlbGVhc2luZyB0aGUgc3BlY2lmaWVk IGxvY2sgKi8KKwlpZiAoZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCAhPSAwKQorCXsKKwkJRGlyZWN0 RnVuY3Rpb25DYWxsMShwZ19hZHZpc29yeV9sb2NrX2ludDgsCisJCQkJCQkJSW50NjRHZXREYXR1 bSgoaW50NjQpIGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQpKTsKKwkJRGlyZWN0RnVuY3Rpb25DYWxs MShwZ19hZHZpc29yeV91bmxvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkg ZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkpOworCisJCS8qCisJCSAqIEVuc3VyZSB0aGF0IHdlIG5v dGljZSBhbnkgcGVuZGluZyBpbnZhbGlkYXRpb25zLCBzaW5jZSB0aGUgYWR2aXNvcnkKKwkJICog bG9jayBmdW5jdGlvbnMgZG9uJ3QgZG8gdGhpcy4KKwkJICovCisJCUFjY2VwdEludmFsaWRhdGlv bk1lc3NhZ2VzKCk7CisJfQorCisJLyogTm93IHN0YXJ0IHRoZSBleGVjdXRvciwgcG9zc2libHkg dmlhIGEgcHJldmlvdXMgaG9vayB1c2VyICovCisJaWYgKHByZXZfRXhlY3V0b3JTdGFydF9ob29r KQorCQlwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayhxdWVyeURlc2MsIGVmbGFncyk7CisJZWxzZQor CQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCWlmIChleGVj dXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJCWVsb2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0 b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzICVzIiwKKwkJCSBDYWNoZWRQbGFuU3RpbGxWYWxpZChx dWVyeURlc2MtPmNwbGFuKSA/ICJ2YWxpZCIgOiAibm90IHZhbGlkIik7Cit9CisKIC8qIE1vZHVs ZSBsb2FkIGZ1bmN0aW9uICovCiB2b2lkCiBfUEdfaW5pdCh2b2lkKQogewotCS8qIFNldCB1cCB0 aGUgR1VDIHRvIGNvbnRyb2wgd2hpY2ggbG9jayBpcyB1c2VkICovCisJLyogU2V0IHVwIEdVQ3Mg dG8gY29udHJvbCB3aGljaCBsb2NrIGlzIHVzZWQgKi8KIAlEZWZpbmVDdXN0b21JbnRWYXJpYWJs ZSgiZGVsYXlfZXhlY3V0aW9uLnBvc3RfcGxhbm5pbmdfbG9ja19pZCIsCiAJCQkJCQkJIlNldHMg dGhlIGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3VubG9ja2VkIGFmdGVyIHBsYW5uaW5n LiIsCiAJCQkJCQkJIlplcm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIsCkBAIC04NiwxMCArMTIzLDIy IEBAIF9QR19pbml0KHZvaWQpCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMLAogCQkJCQkJCU5V TEwpOwotCisJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5leGVjdXRv cl9zdGFydF9sb2NrX2lkIiwKKwkJCQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBi ZSBsb2NrZWQvdW5sb2NrZWQgYmVmb3JlIHN0YXJ0aW5nIGV4ZWN1dGlvbi4iLAorCQkJCQkJCSJa ZXJvIGRpc2FibGVzIHRoZSBkZWxheS4iLAorCQkJCQkJCSZleGVjdXRvcl9zdGFydF9sb2NrX2lk LAorCQkJCQkJCTAsCisJCQkJCQkJMCwgSU5UX01BWCwKKwkJCQkJCQlQR0NfVVNFUlNFVCwKKwkJ CQkJCQkwLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMKTsKIAlNYXJr R1VDUHJlZml4UmVzZXJ2ZWQoImRlbGF5X2V4ZWN1dGlvbiIpOwogCi0JLyogSW5zdGFsbCBvdXIg aG9vayAqLworCS8qIEluc3RhbGwgb3VyIGhvb2tzLiAqLwogCXByZXZfcGxhbm5lcl9ob29rID0g cGxhbm5lcl9ob29rOwogCXBsYW5uZXJfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9wbGFubmVyOwor CXByZXZfRXhlY3V0b3JTdGFydF9ob29rID0gRXhlY3V0b3JTdGFydF9ob29rOworCUV4ZWN1dG9y U3RhcnRfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0OwogfQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4t aW52YWwub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2Fj aGVkLXBsYW4taW52YWwub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmU4ZWZiNmQ5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4 ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQKQEAgLTAsMCArMSwxNzUgQEAK K1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9u OiBzMXByZXAgczJsb2NrIHMxZXhlYyBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDogU0VU IHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMg U0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAkMSBGT1IgVVBEQVRFOworCQkgIEVYUExBSU4g KENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitMb2NrUm93cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg IC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGZvbzEyXzEgZm9vXzEgICAKKyAgICAgICAgICAgICAg UmVjaGVjayBDb25kOiAoYSA9ICQxKSAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hCisgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6IChhID0gJDEpICAgICAgICAKKyg3IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdf YWR2aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjOiBMT0FEICdkZWxheV9l eGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19p ZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgPHdhaXRp bmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1bmxv Y2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2Nr CistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVw IHMxZXhlYzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JT dGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4 ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor TG9ja1Jvd3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAg IAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMQorICAgICAgICAgICAgICBG aWx0ZXI6IChhID0gJDEpICAgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlv bjogczFwcmVwMiBzMmxvY2sgczFleGVjMiBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDI6 IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBx MiBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IG9uZSgpIG9yIGEgPSB0d28oKTsKKwkJ ICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7CitzMTogTk9USUNFOiAgRmluaXNoZWQg RXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18x ICAgICAgICAgICAKKyAgICAgICAgUmVjaGVjayBDb25kOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0 d28oKSkpCisgICAgICAgIC0+ICBCaXRtYXBPciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAKKyAg ICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBvbmUoKSkgICAgICAgCisgICAgICAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMl8xX2EgIAorICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoYSA9IHR3bygpKSAgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9u IGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEZpbHRlcjogKChhID0g b25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgIAorKDExIHJvd3MpCisKK3N0ZXAgczJsb2NrOiBT RUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogTE9B RCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0 YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7 IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28xMl8xX2E7CitzdGVw IHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5 X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykK Kworc3RlcCBzMWV4ZWMyOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBF eGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmlu aXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgIAor ICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAKKyAgICAgICAgRmls dGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisgIC0+ICBTZXEgU2NhbiBvbiBmb28x Ml8yIGZvb18yICAgICAgICAgICAgIAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAo YSA9IHR3bygpKSkKKyg2IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDMg czJsb2NrIHMxZXhlYzMgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXAzOiBTRVQgcGxhbl9j YWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTMgQVMgVVBEQVRF IGZvb3YgU0VUIGEgPSBhIFdIRVJFIGEgPSBvbmUoKSBvciBhID0gdHdvKCk7CisJCSAgRVhQTEFJ TiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOworczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9y U3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1 dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBTdWJwbGFucyBSZW1vdmVkOiAx ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEJpdG1hcCBIZWFwIFNj YW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAgCisgICAgICAgIFJlY2hlY2sgQ29u ZDogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgIAorICAgICAgICAtPiAgQml0bWFw T3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgICAgICAgCisgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6IChhID0gb25lKCkpICAgICAgICAgICAgIAorICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAgICAgICAKKyAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKGEgPSB0d28oKSkgICAgICAgICAgICAgCisgIC0+ICBTZXEgU2Nh biBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBGaWx0 ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitVcGRhdGUgb24g Zm9vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUg b24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBkYXRl IG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFVwZGF0 ZSBvbiBmb28zIGZvbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAg QXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg ICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGZvbzEyXzEgZm9vXzEgICAgICAgICAgIAorICAg ICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkKKyAg ICAgICAgICAgICAgLT4gIEJpdG1hcE9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMl8xX2EgIAor ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAK KyAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAg CisgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gdHdvKCkpICAgICAg IAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAg ICAgCisoMjcgcm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEy MzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMzOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkg IFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkg IEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRy b3BpOiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZp c29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0t LS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzM6IDwuLi4gY29t cGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxh biBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENh Y2hlZFBsYW4gaXMgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6 IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JT dGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAgCisg IC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAgICAgICAgIAorICAgICAg ICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitVcGRhdGUgb24gZm9vICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gZm9vMTJfMSBm b29fMSAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGZvbzEyXzIgZm9vXzIg ICAgICAgICAgICAgICAgICAgICAgICAgCisgIFVwZGF0ZSBvbiBmb28zIGZvbyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAg ICAgICAgICAgCisgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8xIGZvb18xICAgICAgICAg ICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkK KyAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgCisgICAg ICAgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKQorKDE3IHJvd3Mp CisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1 aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vbWVzb24uYnVpbGQKaW5kZXgg NDFmM2FjMGI4OS4uNWE3MGIxODNkMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxh eV9leGVjdXRpb24vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVj dXRpb24vbWVzb24uYnVpbGQKQEAgLTI0LDYgKzI0LDcgQEAgdGVzdHMgKz0gewogICAgICdzcGVj cyc6IFsKICAgICAgICdwYXJ0aXRpb24tYWRkaXRpb24nLAogICAgICAgJ3BhcnRpdGlvbi1yZW1v dmFsLTEnLAorICAgICAgJ2NhY2hlZC1wbGFuLWludmFsJywKICAgICBdLAogICB9LAogfQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBs YW4taW52YWwuc3BlYyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2Nh Y2hlZC1wbGFuLWludmFsLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uNWIxZjcyYjRhOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlf ZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLWludmFsLnNwZWMKQEAgLTAsMCArMSw2NSBAQAor IyBUZXN0IHRvIGNoZWNrIHRoYXQgaW52YWxpZGF0aW9uIG9mIGNhY2hlZCBnZW5lcmljIHBsYW5z IGR1cmluZyBFeGVjdXRvclN0YXJ0CisjIGNvcnJlY3RseSB0cmlnZ2VycyByZXBsYW5uaW5nIGFu ZCByZS1leGVjdXRpb24uCisKK3NldHVwCit7CisgIENSRUFURSBUQUJMRSBmb28gKGEgaW50LCBi IHRleHQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOworICBDUkVBVEUgVEFCTEUgZm9vMTIgUEFSVElU SU9OIE9GIGZvbyBGT1IgVkFMVUVTIElOICgxLCAyKSBQQVJUSVRJT04gQlkgTElTVCAoYSk7Cisg IENSRUFURSBUQUJMRSBmb28xMl8xIFBBUlRJVElPTiBPRiBmb28xMiBGT1IgVkFMVUVTIElOICgx KTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzEyXzIgUEFSVElUSU9OIE9GIGZvbzEyIEZPUiBWQUxVRVMg SU4gKDIpOworICBDUkVBVEUgSU5ERVggZm9vMTJfMV9hIE9OIGZvbzEyXzEgKGEpOworICBDUkVB VEUgVEFCTEUgZm9vMyBQQVJUSVRJT04gT0YgZm9vIEZPUiBWQUxVRVMgSU4gKDMpOworICBDUkVB VEUgVklFVyBmb292IEFTIFNFTEVDVCAqIEZST00gZm9vOworICBDUkVBVEUgRlVOQ1RJT04gb25l ICgpIFJFVFVSTlMgaW50IEFTICQkIEJFR0lOIFJFVFVSTiAxOyBFTkQ7ICQkIExBTkdVQUdFIFBM UEdTUUwgU1RBQkxFOworICBDUkVBVEUgRlVOQ1RJT04gdHdvICgpIFJFVFVSTlMgaW50IEFTICQk IEJFR0lOIFJFVFVSTiAyOyBFTkQ7ICQkIExBTkdVQUdFIFBMUEdTUUwgU1RBQkxFOworICBDUkVB VEUgUlVMRSB1cGRhdGVfZm9vIEFTIE9OIFVQREFURSBUTyBmb28gRE8gQUxTTyBTRUxFQ1QgMTsK K30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBWSUVXIGZvb3Y7CisgIERST1AgUlVMRSB1cGRhdGVf Zm9vIE9OIGZvbzsKKyAgRFJPUCBUQUJMRSBmb287CisgIERST1AgRlVOQ1RJT04gb25lKCksIHR3 bygpOworfQorCitzZXNzaW9uICJzMSIKKyMgQXBwZW5kIHdpdGggcnVuLXRpbWUgcHJ1bmluZwor c3RlcCAiczFwcmVwIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxh bjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAkMSBGT1Ig VVBEQVRFOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgfQorCisjIEFu b3RoZXIgY2FzZSB3aXRoIEFwcGVuZCB3aXRoIHJ1bi10aW1lIHBydW5pbmcKK3N0ZXAgInMxcHJl cDIiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBS RVBBUkUgcTIgQVMgU0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSBvbmUoKSBvciBhID0gdHdv KCk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyB9CisKKyMgQ2FzZSB3aXRo IGEgcnVsZSBhZGRpbmcgYW5vdGhlciBxdWVyeQorc3RlcCAiczFwcmVwMyIgICB7IFNFVCBwbGFu X2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxMyBBUyBVUERB VEUgZm9vdiBTRVQgYSA9IGEgV0hFUkUgYSA9IG9uZSgpIG9yIGEgPSB0d28oKTsKKwkJICBFWFBM QUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IH0KKworIyBFeGVjdXRlcyBhIGdlbmVyaWMgcGxh bgorc3RlcCAiczFleGVjIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5 X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAo Q09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyB9CitzdGVwICJzMWV4ZWMyIgl7IExPQUQgJ2RlbGF5 X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2Nr X2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyB9CitzdGVw ICJzMWV4ZWMzIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1 dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMg T0ZGKSBFWEVDVVRFIHEzOyB9CisKK3Nlc3Npb24gInMyIgorc3RlcCAiczJsb2NrIgl7IFNFTEVD VCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJ1bmxvY2siCXsgU0VMRUNUIHBn X2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7IH0KK3N0ZXAgInMyZHJvcGkiCXsgRFJPUCBJTkRFWCBm b28xMl8xX2E7IH0KKworIyBXaGlsZSAiczFleGVjIiwgZXRjLiB3YWl0IHRvIGFjcXVpcmUgdGhl IGFkdmlzb3J5IGxvY2ssICJzMmRyb3AiIGlzIGFibGUgdG8KKyMgZHJvcCB0aGUgaW5kZXggYmVp bmcgdXNlZCBpbiB0aGUgY2FjaGVkIHBsYW4uICBXaGVuICJzMWV4ZWMiIGlzIHRoZW4KKyMgdW5i bG9ja2VkIGFuZCBpbml0aWFsaXplcyB0aGUgY2FjaGVkIHBsYW4gZm9yIGV4ZWN1dGlvbiwgaXQg ZGV0ZWN0cyB0aGUKKyMgY29uY3VycmVudCBpbmRleCBkcm9wIGFuZCBjYXVzZXMgdGhlIGNhY2hl ZCBwbGFuIHRvIGJlIGRpc2NhcmRlZCBhbmQKKyMgcmVjcmVhdGVkIHdpdGhvdXQgdGhlIGluZGV4 LgorcGVybXV0YXRpb24gInMxcHJlcCIgInMybG9jayIgInMxZXhlYyIgInMyZHJvcGkiICJzMnVu bG9jayIKK3Blcm11dGF0aW9uICJzMXByZXAyIiAiczJsb2NrIiAiczFleGVjMiIgInMyZHJvcGki ICJzMnVubG9jayIKK3Blcm11dGF0aW9uICJzMXByZXAzIiAiczJsb2NrIiAiczFleGVjMyIgInMy ZHJvcGkiICJzMnVubG9jayIKLS0gCjIuNDMuMAoK --00000000000008ca1c0620d2895c Content-Type: application/octet-stream; name="v51-0001-Defer-locking-of-runtime-prunable-relations-to-e.patch" Content-Disposition: attachment; filename="v51-0001-Defer-locking-of-runtime-prunable-relations-to-e.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0fbnly52 RnJvbSBkNzY2ZTczN2FkZTc3OWRlM2RhNGFkZGJmNzFhMDViYjJhNzRhYjc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNyBBdWcgMjAyNCAxODoyNTo1MSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjUx IDEvM10gRGVmZXIgbG9ja2luZyBvZiBydW50aW1lLXBydW5hYmxlIHJlbGF0aW9ucyB0bwogZXhl Y3V0b3IKCldoZW4gcHJlcGFyaW5nIGEgY2FjaGVkIHBsYW4gZm9yIGV4ZWN1dGlvbiwgcGxhbmNh Y2hlLmMgbG9ja3MgdGhlCnJlbGF0aW9ucyBjb250YWluZWQgaW4gdGhlIHBsYW4ncyByYW5nZSB0 YWJsZSB0byBlbnN1cmUgaXQgaXMgc2FmZSBmb3IKZXhlY3V0aW9uLiBIb3dldmVyLCB0aGlzIHNp bXBsaXN0aWMgYXBwcm9hY2gsIGltcGxlbWVudGVkIGluCkFjcXVpcmVFeGVjdXRvckxvY2tzKCks IHJlc3VsdHMgaW4gdW5uZWNlc3NhcmlseSBsb2NraW5nIHJlbGF0aW9ucyB0aGF0Cm1pZ2h0IGJl IHBydW5lZCBkdXJpbmcgImluaXRpYWwiIHJ1bnRpbWUgcHJ1bmluZy4KClRvIG9wdGltaXplIHRo aXMsIHRoZSBsb2NraW5nIGlzIG5vdyBkZWZlcnJlZCBmb3IgcmVsYXRpb25zIHRoYXQgYXJlCnN1 YmplY3QgdG8gImluaXRpYWwiIHJ1bnRpbWUgcHJ1bmluZy4gVGhlIHBsYW5uZXIgbm93IHByb3Zp ZGVzIGEgc2V0Cm9mICJ1bnBydW5hYmxlIiByZWxhdGlvbnMsIGF2YWlsYWJsZSB0aHJvdWdoIHRo ZSBuZXcKUGxhbm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcyBmaWVsZC4gIEFjcXVpcmVFeGVjdXRv ckxvY2tzKCkgd2lsbCBub3cKb25seSBsb2NrIHRob3NlIHJlbGF0aW9ucy4KClBsYW5uZWRTdG10 LnVucHJ1bmFibGVSZWxpZHMgaXMgcG9wdWxhdGVkIGJ5IHN1YnRyYWN0aW5nIHRoZSBzZXQgb2YK aW5pdGlhbGx5IHBydW5hYmxlIHJlbGlkcyBmcm9tIHRoZSBzZXQgb2YgYWxsIFJUIGluZGV4ZXMu IFRoZSBwcnVuYWJsZQpyZWxpZHMgc2V0IGlzIGNvbnN0cnVjdGVkIGJ5IGV4YW1pbmluZyBhbGwg UGFydGl0aW9uUHJ1bmVJbmZvcyBkdXJpbmcKc2V0X3BsYW5fcmVmcygpIGFuZCBzdG9yaW5nIHRo ZSBSVCBpbmRleGVzIG9mIHBhcnRpdGlvbnMgc3ViamVjdCB0bwoiaW5pdGlhbCIgcHJ1bmluZyBz dGVwcy4gV2hpbGUgYXQgaXQsIHNvbWUgZHVwbGljYXRlZCBjb2RlIGluCnNldF9hcHBlbmRfcmVm ZXJlbmNlcygpIGFuZCBzZXRfbWVyZ2VhcHBlbmRfcmVmZXJlbmNlcygpIHRoYXQKY29uc3RydWN0 cyB0aGUgcHJ1bmFibGUgcmVsaWRzIHNldCBoYXMgYmVlbiByZWZhY3RvcmVkIGludG8gYSBjb21t b24KZnVuY3Rpb24uCgpUbyBlbmFibGUgdGhlIGV4ZWN1dG9yIHRvIGRldGVybWluZSB3aGV0aGVy IHRoZSBwbGFuIHRyZWUgaXQncwpleGVjdXRpbmcgaXMgYSBjYWNoZWQgb25lLCB0aGUgQ2FjaGVk UGxhbiBpcyBub3cgbWFkZSBhdmFpbGFibGUgdmlhCnRoZSBRdWVyeURlc2MuIFRoZSBleGVjdXRv ciBjYW4gY2FsbCBDYWNoZWRQbGFuUmVxdWlyZXNMb2NraW5nKCksCndoaWNoIHJldHVybnMgdHJ1 ZSBpZiB0aGUgQ2FjaGVkUGxhbiBpcyBhIHJldXNhYmxlIGdlbmVyaWMgcGxhbiB0aGF0Cm1pZ2h0 IGNvbnRhaW4gcmVsYXRpb25zIG5lZWRpbmcgdG8gYmUgbG9ja2VkLiBJZiBzbywgdGhlIGV4ZWN1 dG9yCndpbGwgbG9jayBhbnkgcmVsYXRpb24gdGhhdCBpcyBub3QgaW4gUGxhbm5lZFN0bXQudW5w cnVuYWJsZVJlbGlkcy4KCkZpbmFsbHksIGFuIEFzc2VydCBoYXMgYmVlbiBhZGRlZCBpbiBFeGVj Q2hlY2tQZXJtaXNzaW9ucygpIHRvIGVuc3VyZQp0aGF0IGFsbCByZWxhdGlvbnMgd2hvc2UgcGVy bWlzc2lvbnMgYXJlIGNoZWNrZWQgaGF2ZSBiZWVuIHByb3Blcmx5CmxvY2tlZC4gVGhpcyBoZWxw cyBjYXRjaCBhbnkgYWNjaWRlbnRhbCBvbWlzc2lvbiBvZiByZWxhdGlvbnMgZnJvbSB0aGUKdW5w cnVuYWJsZVJlbGlkcyBzZXQgdGhhdCBzaG91bGQgaGF2ZSB0aGVpciBwZXJtaXNzaW9ucyBjaGVj a2VkLgoKVGhpcyBkZWZlcm1lbnQgaW50cm9kdWNlcyBhIHdpbmRvdyBpbiB3aGljaCBwcnVuYWJs ZSByZWxhdGlvbnMgbWF5IGJlCmFsdGVyZWQgYnkgY29uY3VycmVudCBEREwsIHBvdGVudGlhbGx5 IGNhdXNpbmcgdGhlIHBsYW4gdG8gYmVjb21lCmludmFsaWQuIEFzIGEgcmVzdWx0LCB0aGUgZXhl Y3V0b3IgbWlnaHQgYXR0ZW1wdCB0byBydW4gYW4gaW52YWxpZCBwbGFuLApsZWFkaW5nIHRvIGVy cm9ycyBzdWNoIGFzIGJlaW5nIHVuYWJsZSB0byBsb2NhdGUgYSBwYXJ0aXRpb24tb25seSBpbmRl eApkdXJpbmcgRXhlY0luaXRJbmRleFNjYW4oKS4gRnV0dXJlIGNvbW1pdHMgd2lsbCBpbnRyb2R1 Y2UgY2hhbmdlcyB0bwpyZWFkeSB0aGUgZXhlY3V0b3IgdG8gY2hlY2sgcGxhbiB2YWxpZGl0eSBk dXJpbmcgRXhlY3V0b3JTdGFydCgpIGFuZApyZXRyeSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBwbGFu IGlmIHRoZSBvcmlnaW5hbCBvbmUgYmVjb21lcyBpbnZhbGlkCmFmdGVyIHRha2luZyBkZWZlcnJl ZCBsb2Nrcy4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICB8ICA3ICsrLS0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL2V4dGVuc2lvbi5jICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcu YyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgfCAg MyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgIHwgMTggKysrKysrKysK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICB8ICA5ICsrKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICB8IDMwICsrKysrKysrKysrKystCiBzcmMvYmFj a2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9zcGkuYyAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMgfCAgMiArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgfCA2MiAr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dHBydW5lLmMgfCAyNCArKysrKysrKysrLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3Iu YyAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgIHwgMTAg KysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICB8ICAxIC0KIHNyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICB8IDI1ICsrKysrKystLS0tCiBzcmMvaW5j bHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgfCAgNSArKy0KIHNyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNkZXNjLmggICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o ICAgICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICB8ICA2 ICsrKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAgIHwgMTEgKysrKysKIHNy Yy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oICAgICAgICB8IDEwICsrKysrCiAyNCBmaWxlcyBj aGFuZ2VkLCAxODYgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 dG8uYwppbmRleCA5MWRlNDQyZjQzLi5kYjk3NmY5MjhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpA QCAtNTUyLDcgKzU1Miw3IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJKChE Ul9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlE ZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQljc3RhdGUtPnF1ZXJ5RGVz YyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJ CQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90 LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5j CmluZGV4IDBiNjI5YjFmNzkuLjU3YTMzNzVjYWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwpA QCAtMzI0LDcgKzMyNCw3IEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Q3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElk KCk7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8gb3Vy IHR1cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBw c3RhdGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4s IE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3Qo KSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCAxMWRmNGEwNGQ0Li5hODNlYTA3ZGIxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jCkBAIC01MDcsNyArNTA3LDcgQEAgc3RhbmRhcmRfRXhwbGFpbk9u ZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJfQogCiAJLyogcnVuIGl0 IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwotCUV4cGxhaW5PbmVQbGFuKHBsYW4s IGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwlFeHBsYWluT25lUGxh bihwbGFuLCBOVUxMLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCiAJ CQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJ CQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIH0KQEAgLTYxNSw3ICs2 MTUsOCBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAq aW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxh aW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhw bGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwg Q2FjaGVkUGxhbiAqY3BsYW4sCisJCQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUg KmVzLAogCQkJICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1z LAogCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBs YW5kdXJhdGlvbiwKIAkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwKQEAgLTY3MSw3 ICs2NzIsNyBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9D bGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwog CiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENy ZWF0ZVF1ZXJ5RGVzYyhwbGFubmVkc3RtdCwgY3BsYW4sIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlH ZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIHBhcmFt cywgcXVlcnlFbnYsIGluc3RydW1lbnRfb3B0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24u YwppbmRleCAxNjQzYzhjNjlhLi4zZjdmNDMwNmZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24u YwpAQCAtNzk4LDYgKzc5OCw3IEBAIGV4ZWN1dGVfc3FsX3N0cmluZyhjb25zdCBjaGFyICpzcWwp CiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAKIAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhz dG10LAorCQkJCQkJCQkJCU5VTEwsCiAJCQkJCQkJCQkJc3FsLAogCQkJCQkJCQkJCUdldEFjdGl2 ZVNuYXBzaG90KCksIE5VTEwsCiAJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9tYXR2aWV3LmMKaW5kZXggOTFmMGZkNmVhMy4uYTdhNzk1ODNlYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L21hdHZpZXcuYwpAQCAtNDM4LDcgKzQzOCw3IEBAIHJlZnJlc2hfbWF0dmlld19kYXRhZmlsbChE ZXN0UmVjZWl2ZXIgKmRlc3QsIFF1ZXJ5ICpxdWVyeSwKIAlVcGRhdGVBY3RpdmVTbmFwc2hvdENv bW1hbmRJZCgpOwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQg dG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBs YW4sIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxM LCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBz aG90LAogCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5j CmluZGV4IDA3MjU3ZDRkYjkuLjMxMWI5ZWJkNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAg LTY1NSw3ICs2NTUsOCBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3Rt dCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJUGxhbm5lZFN0bXQgKnBz dG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIHApOwogCiAJCWlmIChwc3RtdC0+Y29tbWFu ZFR5cGUgIT0gQ01EX1VUSUxJVFkpCi0JCQlFeHBsYWluT25lUGxhbihwc3RtdCwgaW50bywgZXMs IHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwgcXVlcnlFbnYsCisJCQlFeHBsYWluT25lUGxhbihwc3Rt dCwgY3BsYW4sIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksCisJCQkJCQkgICBxdWVy eUVudiwKIAkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6 IE5VTEwpLAogCQkJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIAkJ ZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggMjllMTg2ZmE3My4uMjcxZjlkOTNmYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAi cmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2lu Y2x1ZGUgInRjb3AvdXRpbGl0eS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUg InV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCkBAIC01OTcsNiArNTk4LDIxIEBAIEV4ZWNDaGVja1Bl cm1pc3Npb25zKExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnJ0ZXBlcm1pbmZvcywKIAkJCQkgICAo cnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSAmJgogCQkJCQlydGUtPnJlbGtpbmQgPT0gUkVM S0lORF9WSUVXKSk7CiAKKwkJCS8qCisJCQkgKiBFbnN1cmUgdGhhdCB3ZSBoYXZlIGF0IGxlYXN0 IGFuIEFjY2Vzc1NoYXJlTG9jayBvbiByZWxhdGlvbnMKKwkJCSAqIHdob3NlIHBlcm1pc3Npb25z IG5lZWQgdG8gYmUgY2hlY2tlZC4KKwkJCSAqCisJCQkgKiBTa2lwIHRoaXMgY2hlY2sgaW4gYSBw YXJhbGxlbCB3b3JrZXIgYmVjYXVzZSBsb2NrcyB3b24ndCBiZQorCQkJICogdGFrZW4gdW50aWwg RXhlY0luaXROb2RlKCkgcGVyZm9ybXMgcGxhbiBpbml0aWFsaXphdGlvbi4KKwkJCSAqCisJCQkg KiBYWFg6IEV4ZWNDaGVja1Blcm1pc3Npb25zKCkgaW4gYSBwYXJhbGxlbCB3b3JrZXIgbWF5IGJl CisJCQkgKiByZWR1bmRhbnQgd2l0aCB0aGUgY2hlY2tzIGRvbmUgaW4gdGhlIGxlYWRlciBwcm9j ZXNzLCBzbyB0aGlzCisJCQkgKiBzaG91bGQgYmUgcmV2aWV3ZWQgdG8gZW5zdXJlIGl04oCZcyBu ZWNlc3NhcnkuCisJCQkgKi8KKwkJCUFzc2VydChJc1BhcmFsbGVsV29ya2VyKCkgfHwKKwkJCQkg ICBDaGVja1JlbGF0aW9uT2lkTG9ja2VkQnlNZShydGUtPnJlbGlkLCBBY2Nlc3NTaGFyZUxvY2ss CisJCQkJCQkJCQkJCSAgdHJ1ZSkpOworCiAJCQkodm9pZCkgZ2V0UlRFUGVybWlzc2lvbkluZm8o cnRlcGVybWluZm9zLCBydGUpOwogCQkJLyogTWFueS10by1vbmUgbWFwcGluZyBub3QgYWxsb3dl ZCAqLwogCQkJQXNzZXJ0KCFibXNfaXNfbWVtYmVyKHJ0ZS0+cGVybWluZm9pbmRleCwgaW5kZXhz ZXQpKTsKQEAgLTgyOSw2ICs4NDUsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywg aW50IGVmbGFncykKIHsKIAlDbWRUeXBlCQlvcGVyYXRpb24gPSBxdWVyeURlc2MtPm9wZXJhdGlv bjsKIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBxdWVyeURlc2MtPnBsYW5uZWRzdG10Owor CUNhY2hlZFBsYW4gKmNhY2hlZHBsYW4gPSBxdWVyeURlc2MtPmNwbGFuOwogCVBsYW4JICAgKnBs YW4gPSBwbGFubmVkc3RtdC0+cGxhblRyZWU7CiAJTGlzdAkgICAqcmFuZ2VUYWJsZSA9IHBsYW5u ZWRzdG10LT5ydGFibGU7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsK QEAgLTg0OCw2ICs4NjUsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVm bGFncykKIAlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFubmVkc3Rt dC0+cGVybUluZm9zKTsKIAogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsK Kwllc3RhdGUtPmVzX2NhY2hlZHBsYW4gPSBjYWNoZWRwbGFuOwogCiAJLyoKIAkgKiBOZXh0LCBi dWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFu eS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggYmZiMzQxOWVmYi4uMDNiNDhl MTJiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTEyNTYsOCArMTI1Niwx NSBAQCBFeGVjUGFyYWxsZWxHZXRRdWVyeURlc2Moc2htX3RvYyAqdG9jLCBEZXN0UmVjZWl2ZXIg KnJlY2VpdmVyLAogCXBhcmFtc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tF WV9QQVJBTUxJU1RJTkZPLCBmYWxzZSk7CiAJcGFyYW1MSSA9IFJlc3RvcmVQYXJhbUxpc3QoJnBh cmFtc3BhY2UpOwogCi0JLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkuICovCisJ LyoKKwkgKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gIFdlIHBhc3MgTlVMTCBm b3IgY2FjaGVkcGxhbiwgYmVjYXVzZQorCSAqIHdlIGRvbid0IGhhdmUgYSBwb2ludGVyIHRvIHRo ZSBDYWNoZWRQbGFuIGluIHRoZSBsZWFkZXIncyBwcm9jZXNzLiBJdCdzCisJICogZmluZSBiZWNh dXNlIHRoZSBvbmx5IHJlYXNvbiB0aGUgZXhlY3V0b3IgbmVlZHMgdG8gc2VlIGl0IGlzIHRvIGRl Y2lkZQorCSAqIGlmIGl0IHNob3VsZCB0YWtlIGxvY2tzIG9uIGNlcnRhaW4gcmVsYXRpb25zLCBi dXQgcGFyYWxsZXIgd29ya2VycworCSAqIGFsd2F5cyB0YWtlIGxvY2tzIGFueXdheS4KKwkgKi8K IAlyZXR1cm4gQ3JlYXRlUXVlcnlEZXNjKHBzdG10LAorCQkJCQkJICAgTlVMTCwKIAkJCQkJCSAg IHF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBz aG90LAogCQkJCQkJICAgcmVjZWl2ZXIsIHBhcmFtTEksIE5VTEwsIGluc3RydW1lbnRfb3B0aW9u cyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDU3MzdmOWY0ZWIuLjZkZmQ1YTI2Yjcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC03NTIsNiArNzUyLDI2IEBAIEV4ZWNJbml0 UmFuZ2VUYWJsZShFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcGVybUlu Zm9zKQogCWVzdGF0ZS0+ZXNfcm93bWFya3MgPSBOVUxMOwogfQogCisvKgorICogRXhlY1Nob3Vs ZExvY2tSZWxhdGlvbgorICoJCURldGVybWluZSBpZiB0aGUgcmVsYXRpb24gc2hvdWxkIGJlIGxv Y2tlZC4KKyAqCisgKiBUaGUgcmVsYXRpb24gZG9lcyBub3QgbmVlZCB0byBiZSBsb2NrZWQgaWYg d2UgYXJlIG5vdCBydW5uaW5nIGEgY2FjaGVkCisgKiBwbGFuIG9yIGlmIGl0IGhhcyBhbHJlYWR5 IGJlZW4gbG9ja2VkIGFzIGFuIHVucHJ1bmFibGUgcmVsYXRpb24uCisgKgorICogTG9jayB0aGUg cmVsYXRpb24gaWYgaXQgbWlnaHQgYmUgb25lIG9mIHRoZSBwcnVuYWJsZSByZWxhdGlvbnMgbWVu dGlvbmVkCisgKiBpbiB0aGUgY2FjaGVkIHBsYW4uCisgKi8KK3N0YXRpYyBib29sCitFeGVjU2hv dWxkTG9ja1JlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBydGluZGV4KQoreworCWlmIChl c3RhdGUtPmVzX2NhY2hlZHBsYW4gPT0gTlVMTCB8fAorCQlibXNfaXNfbWVtYmVyKHJ0aW5kZXgs IGVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQtPnVucHJ1bmFibGVSZWxpZHMpKQorCQlyZXR1cm4gZmFs c2U7CisKKwlyZXR1cm4gQ2FjaGVkUGxhblJlcXVpcmVzTG9ja2luZyhlc3RhdGUtPmVzX2NhY2hl ZHBsYW4pOworfQorCiAvKgogICogRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbgogICoJCU9wZW4g dGhlIFJlbGF0aW9uIGZvciBhIHJhbmdlIHRhYmxlIGVudHJ5LCBpZiBub3QgYWxyZWFkeSBkb25l CkBAIC03NzMsNyArNzkzLDcgQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVz dGF0ZSwgSW5kZXggcnRpKQogCiAJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9O KTsKIAotCQlpZiAoIUlzUGFyYWxsZWxXb3JrZXIoKSkKKwkJaWYgKCFJc1BhcmFsbGVsV29ya2Vy KCkgJiYgIUV4ZWNTaG91bGRMb2NrUmVsYXRpb24oZXN0YXRlLCBydGkpKQogCQl7CiAJCQkvKgog CQkJICogSW4gYSBub3JtYWwgcXVlcnksIHdlIHNob3VsZCBhbHJlYWR5IGhhdmUgdGhlIGFwcHJv cHJpYXRlIGxvY2ssCkBAIC03ODksOSArODA5LDE3IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRp b24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKIAkJZWxzZQogCQl7CiAJCQkvKgorCQkJICog TG9jayByZWxhdGlvbiBlaXRoZXIgaWYgd2UgYXJlIGEgcGFyYWxsZWwgd29ya2VyIG9yIGlmCisJ CQkgKiBFeGVjU2hvdWxkTG9ja1JlbGF0aW9uKCkgc2F5cyB3ZSBzaG91bGQuCisJCQkgKgogCQkJ ICogSWYgd2UgYXJlIGEgcGFyYWxsZWwgd29ya2VyLCB3ZSBuZWVkIHRvIG9idGFpbiBvdXIgb3du IGxvY2FsCiAJCQkgKiBsb2NrIG9uIHRoZSByZWxhdGlvbi4gIFRoaXMgZW5zdXJlcyBzYW5lIGJl aGF2aW9yIGluIGNhc2UgdGhlCiAJCQkgKiBwYXJlbnQgcHJvY2VzcyBleGl0cyBiZWZvcmUgd2Ug ZG8uCisJCQkgKgorCQkJICogRXhlY1Nob3VsZExvY2tSZWxhdGlvbigpIHdvdWxkIHJldHVybiB0 cnVlIGlmIHRoZSBSVCBpbmRleCBpcworCQkJICogdGhhdCBvZiBhIHBydW5hYmxlIHJlbGF0aW9u IGFuZCB3ZSdyZSBydW5uaW5nIGEgY2FjaGVkIGdlbmVyaWMKKwkJCSAqIHBsYW4uICBBY3F1aXJl RXhlY3V0b3JMb2NrcygpIG9mIHBsYW5jYWNoZS5jIHdvdWxkIGhhdmUgbG9ja2VkCisJCQkgKiBv bmx5IHRoZSB1bnBydW5hYmxlIHJlbGF0aW9ucyBpbiB0aGUgcGxhbiB0cmVlLgogCQkJICovCiAJ CQlyZWwgPSB0YWJsZV9vcGVuKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOwogCQl9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IDY5Mjg1NGUyYjMuLjZmNmY0NWUwYWQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC04NDAsNiArODQwLDcgQEAgcG9zdHF1ZWxfc3RhcnQo ZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJCWRlc3Qg PSBOb25lX1JlY2VpdmVyOwogCiAJZXMtPnFkID0gQ3JlYXRlUXVlcnlEZXNjKGVzLT5zdG10LAor CQkJCQkJCSBOVUxMLAogCQkJCQkJCSBmY2FjaGUtPnNyYywKIAkJCQkJCQkgR2V0QWN0aXZlU25h cHNob3QoKSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCBkNjUx NmIxYmNhLi45MDI3OTNiMDJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGku YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAtMjY4NCw2ICsyNjg0LDcgQEAg X1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9u cyAqb3B0aW9ucywKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAogCQkJCXFkZXNjID0g Q3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJY3BsYW4sCiAJCQkJCQkJCQkJcGxhbnNv dXJjZS0+cXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3NzY2hlY2tfc25hcHNob3Qs CiAJCQkJCQkJCQkJZGVzdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCBi NTgyN2QzOTgwLi5jYjliNmYwMTQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5j CkBAIC01NDYsNiArNTQ2LDggQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0 IGNoYXIgKnF1ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJcmVzdWx0LT5wYXJhbGxl bE1vZGVOZWVkZWQgPSBnbG9iLT5wYXJhbGxlbE1vZGVOZWVkZWQ7CiAJcmVzdWx0LT5wbGFuVHJl ZSA9IHRvcF9wbGFuOwogCXJlc3VsdC0+cnRhYmxlID0gZ2xvYi0+ZmluYWxydGFibGU7CisJcmVz dWx0LT51bnBydW5hYmxlUmVsaWRzID0gYm1zX2RpZmZlcmVuY2UoYm1zX2FkZF9yYW5nZShOVUxM LCAxLCBsaXN0X2xlbmd0aChyZXN1bHQtPnJ0YWJsZSkpLAorCQkJCQkJCQkJCQkgIGdsb2ItPnBy dW5hYmxlUmVsaWRzKTsKIAlyZXN1bHQtPnBlcm1JbmZvcyA9IGdsb2ItPmZpbmFscnRlcGVybWlu Zm9zOwogCXJlc3VsdC0+cmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0UmVsYXRpb25zOwog CXJlc3VsdC0+YXBwZW5kUmVsYXRpb25zID0gZ2xvYi0+YXBwZW5kUmVsYXRpb25zOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDdhZWQ4NDU4NGMuLmI2YmUwZTU3MzAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTE1NCw2ICsxNTQsOSBAQCBzdGF0 aWMgUGxhbiAqc2V0X2FwcGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogc3RhdGlj IFBsYW4gKnNldF9tZXJnZWFwcGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCQkJ CQkJCQkJCU1lcmdlQXBwZW5kICptcGxhbiwKIAkJCQkJCQkJCQlpbnQgcnRvZmZzZXQpOworc3Rh dGljIHZvaWQgc2V0X3BhcnRfcHJ1bmVfcmVmZXJlbmNlcyhQYXJ0aXRpb25QcnVuZUluZm8gKnBp bmZvLAorCQkJCQkJCQkJICBQbGFubmVyR2xvYmFsICpnbG9iLAorCQkJCQkJCQkJICBpbnQgcnRv ZmZzZXQpOwogc3RhdGljIHZvaWQgc2V0X2hhc2hfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9v dCwgUGxhbiAqcGxhbiwgaW50IHJ0b2Zmc2V0KTsKIHN0YXRpYyBSZWxpZHMgb2Zmc2V0X3JlbGlk X3NldChSZWxpZHMgcmVsaWRzLCBpbnQgcnRvZmZzZXQpOwogc3RhdGljIE5vZGUgKmZpeF9zY2Fu X2V4cHIoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUsCkBAIC0xNzgzLDIwICsxNzg2LDgg QEAgc2V0X2FwcGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCWFwbGFuLT5hcHBy ZWxpZHMgPSBvZmZzZXRfcmVsaWRfc2V0KGFwbGFuLT5hcHByZWxpZHMsIHJ0b2Zmc2V0KTsKIAog CWlmIChhcGxhbi0+cGFydF9wcnVuZV9pbmZvKQotCXsKLQkJZm9yZWFjaChsLCBhcGxhbi0+cGFy dF9wcnVuZV9pbmZvLT5wcnVuZV9pbmZvcykKLQkJewotCQkJTGlzdAkgICAqcHJ1bmVfaW5mb3Mg PSBsZmlyc3QobCk7Ci0JCQlMaXN0Q2VsbCAgICpsMjsKLQotCQkJZm9yZWFjaChsMiwgcHJ1bmVf aW5mb3MpCi0JCQl7Ci0JCQkJUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gKnBpbmZvID0gbGZpcnN0 KGwyKTsKLQotCQkJCXBpbmZvLT5ydGluZGV4ICs9IHJ0b2Zmc2V0OwotCQkJfQotCQl9Ci0JfQor CQlzZXRfcGFydF9wcnVuZV9yZWZlcmVuY2VzKGFwbGFuLT5wYXJ0X3BydW5lX2luZm8sIHJvb3Qt Pmdsb2IsCisJCQkJCQkJCSAgcnRvZmZzZXQpOwogCiAJLyogV2UgZG9uJ3QgbmVlZCB0byByZWN1 cnNlIHRvIGxlZnR0cmVlIG9yIHJpZ2h0dHJlZSAuLi4gKi8KIAlBc3NlcnQoYXBsYW4tPnBsYW4u bGVmdHRyZWUgPT0gTlVMTCk7CkBAIC0xODU5LDIwICsxODUwLDggQEAgc2V0X21lcmdlYXBwZW5k X3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJbXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNl dF9yZWxpZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOwogCiAJaWYgKG1wbGFuLT5w YXJ0X3BydW5lX2luZm8pCi0JewotCQlmb3JlYWNoKGwsIG1wbGFuLT5wYXJ0X3BydW5lX2luZm8t PnBydW5lX2luZm9zKQotCQl7Ci0JCQlMaXN0CSAgICpwcnVuZV9pbmZvcyA9IGxmaXJzdChsKTsK LQkJCUxpc3RDZWxsICAgKmwyOwotCi0JCQlmb3JlYWNoKGwyLCBwcnVuZV9pbmZvcykKLQkJCXsK LQkJCQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGluZm8gPSBsZmlyc3QobDIpOwotCi0JCQkJ cGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7Ci0JCQl9Ci0JCX0KLQl9CisJCXNldF9wYXJ0X3By dW5lX3JlZmVyZW5jZXMobXBsYW4tPnBhcnRfcHJ1bmVfaW5mbywgcm9vdC0+Z2xvYiwKKwkJCQkJ CQkJICBydG9mZnNldCk7CiAKIAkvKiBXZSBkb24ndCBuZWVkIHRvIHJlY3Vyc2UgdG8gbGVmdHRy ZWUgb3IgcmlnaHR0cmVlIC4uLiAqLwogCUFzc2VydChtcGxhbi0+cGxhbi5sZWZ0dHJlZSA9PSBO VUxMKTsKQEAgLTE4ODEsNiArMTg2MCwzMyBAQCBzZXRfbWVyZ2VhcHBlbmRfcmVmZXJlbmNlcyhQ bGFubmVySW5mbyAqcm9vdCwKIAlyZXR1cm4gKFBsYW4gKikgbXBsYW47CiB9CiAKKy8qCisgKiBV cGRhdGVzIFJUIGluZGV4ZXMgaW4gUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zIGNvbnRhaW5lZCBp biBwaW5mbyBhbmQgYWRkcworICogdGhlIFJUIGluZGV4ZXMgb2YgInBydW5hYmxlIiByZWxhdGlv bnMgaW50byBnbG9iLT5wcnVuYWJsZVJlbGlkcy4KKyAqLworc3RhdGljIHZvaWQKK3NldF9wYXJ0 X3BydW5lX3JlZmVyZW5jZXMoUGFydGl0aW9uUHJ1bmVJbmZvICpwaW5mbywgUGxhbm5lckdsb2Jh bCAqZ2xvYiwKKwkJCQkJCSAgaW50IHJ0b2Zmc2V0KQoreworCUxpc3RDZWxsICAgKmw7CisKKwlm b3JlYWNoKGwsIHBpbmZvLT5wcnVuZV9pbmZvcykKKwl7CisJCUxpc3QJICAgKnBydW5lX2luZm9z ID0gbGZpcnN0KGwpOworCQlMaXN0Q2VsbCAgICpsMjsKKworCQlmb3JlYWNoKGwyLCBwcnVuZV9p bmZvcykKKwkJeworCQkJUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gKnByZWxpbmZvID0gbGZpcnN0 KGwyKTsKKworCQkJcHJlbGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7CisJCQlpZiAocHJlbGlu Zm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcyAhPSBOSUwpCisJCQkJZ2xvYi0+cHJ1bmFibGVSZWxp ZHMgPSBibXNfYWRkX21lbWJlcnMoZ2xvYi0+cHJ1bmFibGVSZWxpZHMsCisJCQkJCQkJCQkJCQkJ ICAgcHJlbGluZm8tPnByZXNlbnRfcGFydF9ydGlzKTsKKwkJfQorCX0KK30KKwogLyoKICAqIHNl dF9oYXNoX3JlZmVyZW5jZXMKICAqCSAgIERvIHNldF9wbGFuX3JlZmVyZW5jZXMgcHJvY2Vzc2lu ZyBvbiBhIEhhc2ggbm9kZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRwcnVuZS5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCmluZGV4IDlh MWE3ZmFhYzcuLjhlMjdlMzVkZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0cHJ1bmUuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMK QEAgLTYzNCw2ICs2MzQsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlQYXJ0aXRpb25lZFJlbFBydW5l SW5mbyAqcGluZm8gPSBsZmlyc3QobGMpOwogCQlSZWxPcHRJbmZvICpzdWJwYXJ0ID0gZmluZF9i YXNlX3JlbChyb290LCBwaW5mby0+cnRpbmRleCk7CiAJCUJpdG1hcHNldCAgKnByZXNlbnRfcGFy dHM7CisJCUJpdG1hcHNldCAgKnByZXNlbnRfcGFydF9ydGlzOwogCQlpbnQJCQlucGFydHMgPSBz dWJwYXJ0LT5ucGFydHM7CiAJCWludAkJICAgKnN1YnBsYW5fbWFwOwogCQlpbnQJCSAgICpzdWJw YXJ0X21hcDsKQEAgLTY1MCw3ICs2NTEsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5m byhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlzdWJwYXJ0X21h cCA9IChpbnQgKikgcGFsbG9jKG5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJbWVtc2V0KHN1YnBh cnRfbWFwLCAtMSwgbnBhcnRzICogc2l6ZW9mKGludCkpOwogCQlyZWxpZF9tYXAgPSAoT2lkICop IHBhbGxvYzAobnBhcnRzICogc2l6ZW9mKE9pZCkpOwotCQlwcmVzZW50X3BhcnRzID0gTlVMTDsK KwkJcHJlc2VudF9wYXJ0cyA9IHByZXNlbnRfcGFydF9ydGlzID0gTlVMTDsKIAogCQlpID0gLTE7 CiAJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihzdWJwYXJ0LT5saXZlX3BhcnRzLCBpKSkg Pj0gMCkKQEAgLTY2NCwxNSArNjY1LDM1IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZv KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQlzdWJwbGFuX21h cFtpXSA9IHN1YnBsYW5pZHggPSByZWxpZF9zdWJwbGFuX21hcFtwYXJ0cmVsLT5yZWxpZF0gLSAx OwogCQkJc3VicGFydF9tYXBbaV0gPSBzdWJwYXJ0aWR4ID0gcmVsaWRfc3VicGFydF9tYXBbcGFy dHJlbC0+cmVsaWRdIC0gMTsKIAkJCXJlbGlkX21hcFtpXSA9IHBsYW5uZXJfcnRfZmV0Y2gocGFy dHJlbC0+cmVsaWQsIHJvb3QpLT5yZWxpZDsKKworCQkJLyoKKwkJCSAqIFRyYWNrIHRoZSBSVCBp bmRleGVzIG9mIHBhcnRpdGlvbnMgdG8gZW5zdXJlIHRoZXkgYXJlIGluY2x1ZGVkCisJCQkgKiBp biB0aGUgcHJ1bmFibGVSZWxpZHMgc2V0IG9mIHJlbGF0aW9ucyB0aGF0IGFyZSBsb2NrZWQgZHVy aW5nCisJCQkgKiBleGVjdXRpb24uIFRoaXMgZW5zdXJlcyB0aGF0IGlmIHRoZSBwbGFuIGlzIGNh Y2hlZCwgdGhlc2UKKwkJCSAqIHBhcnRpdGlvbnMgYXJlIGxvY2tlZCB3aGVuIHRoZSBwbGFuIGlz IHJldXNlZC4KKwkJCSAqCisJCQkgKiBQYXJ0aXRpb25zIHdpdGhvdXQgYSBzdWJwbGFuIGFuZCBz dWItcGFydGl0aW9uZWQgcGFydGl0aW9ucworCQkJICogd2hlcmUgbm9uZSBvZiB0aGUgc3ViLXBh cnRpdGlvbnMgaGF2ZSBhIHN1YnBsYW4gZHVlIHRvCisJCQkgKiBjb25zdHJhaW50IGV4Y2x1c2lv biBhcmUgbm90IGluY2x1ZGVkIGluIHRoaXMgc2V0LiBJbnN0ZWFkLAorCQkJICogdGhleSBhcmUg YWRkZWQgdG8gdGhlIHVucHJ1bmFibGVSZWxpZHMgc2V0LCBhbmQgdGhlIHJlbGF0aW9ucworCQkJ ICogaW4gdGhpcyBzZXQgYXJlIGxvY2tlZCBieSBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIGJlZm9y ZQorCQkJICogZXhlY3V0aW5nIGEgY2FjaGVkIHBsYW4uCisJCQkgKi8KIAkJCWlmIChzdWJwbGFu aWR4ID49IDApCiAJCQl7CiAJCQkJcHJlc2VudF9wYXJ0cyA9IGJtc19hZGRfbWVtYmVyKHByZXNl bnRfcGFydHMsIGkpOworCQkJCXByZXNlbnRfcGFydF9ydGlzID0gYm1zX2FkZF9tZW1iZXIocHJl c2VudF9wYXJ0X3J0aXMsCisJCQkJCQkJCQkJCQkgICBwYXJ0cmVsLT5yZWxpZCk7CiAKIAkJCQkv KiBSZWNvcmQgZmluZGluZyB0aGlzIHN1YnBsYW4gICovCiAJCQkJc3VicGxhbnNmb3VuZCA9IGJt c19hZGRfbWVtYmVyKHN1YnBsYW5zZm91bmQsIHN1YnBsYW5pZHgpOwogCQkJfQogCQkJZWxzZSBp ZiAoc3VicGFydGlkeCA+PSAwKQorCQkJewogCQkJCXByZXNlbnRfcGFydHMgPSBibXNfYWRkX21l bWJlcihwcmVzZW50X3BhcnRzLCBpKTsKKwkJCQlwcmVzZW50X3BhcnRfcnRpcyA9IGJtc19hZGRf bWVtYmVyKHByZXNlbnRfcGFydF9ydGlzLAorCQkJCQkJCQkJCQkJICAgcGFydHJlbC0+cmVsaWQp OworCQkJfQogCQl9CiAKIAkJLyoKQEAgLTY4NCw2ICs3MDUsNyBAQCBtYWtlX3BhcnRpdGlvbmVk cmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAog CiAJCS8qIFJlY29yZCB0aGUgbWFwcyBhbmQgb3RoZXIgaW5mb3JtYXRpb24uICovCiAJCXBpbmZv LT5wcmVzZW50X3BhcnRzID0gcHJlc2VudF9wYXJ0czsKKwkJcGluZm8tPnByZXNlbnRfcGFydF9y dGlzID0gcHJlc2VudF9wYXJ0X3J0aXM7CiAJCXBpbmZvLT5ucGFydHMgPSBucGFydHM7CiAJCXBp bmZvLT5zdWJwbGFuX21hcCA9IHN1YnBsYW5fbWFwOwogCQlwaW5mby0+c3VicGFydF9tYXAgPSBz dWJwYXJ0X21hcDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCmluZGV4IDA5NDUyMmFjYjQuLmExYzg5 ZjVkNzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQuaCIK ICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tl bmQvdGNvcC9wcXVlcnkuYwppbmRleCBhMWY4ZDAzZGIxLi42ZThmNmIxYjhmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5 LmMKQEAgLTM2LDYgKzM2LDcgQEAgUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxMOwogCiAKIHN0 YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKKwkJCQkJCSBDYWNoZWRQ bGFuICpjcGxhbiwKIAkJCQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJIFBhcmFt TGlzdEluZm8gcGFyYW1zLAogCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApAQCAt NjUsNiArNjYsNyBAQCBzdGF0aWMgdm9pZCBEb1BvcnRhbFJld2luZChQb3J0YWwgcG9ydGFsKTsK ICAqLwogUXVlcnlEZXNjICoKIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQsCisJCQkJQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJY29uc3QgY2hhciAqc291cmNlVGV4dCwK IAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90 LApAQCAtNzcsNiArNzksNyBAQCBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRz dG10LAogCiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZTsJLyogb3Bl cmF0aW9uICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CS8qIHBsYW4gKi8KKwlx ZC0+Y3BsYW4gPSBjcGxhbjsJCQkvKiBDYWNoZWRQbGFuIHN1cHBseWluZyB0aGUgcGxhbm5lZHN0 bXQgKi8KIAlxZC0+c291cmNlVGV4dCA9IHNvdXJjZVRleHQ7CS8qIHF1ZXJ5IHRleHQgKi8KIAlx ZC0+c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsJLyogc25hcHNob3QgKi8K IAkvKiBSSSBjaGVjayBzbmFwc2hvdCAqLwpAQCAtMTIyLDYgKzEyNSw3IEBAIEZyZWVRdWVyeURl c2MoUXVlcnlEZXNjICpxZGVzYykKICAqCQlQT1JUQUxfT05FX1JFVFVSTklORywgb3IgUE9SVEFM X09ORV9NT0RfV0lUSCBwb3J0YWwKICAqCiAgKglwbGFuOiB0aGUgcGxhbiB0cmVlIGZvciB0aGUg cXVlcnkKKyAqCWNwbGFuOiBDYWNoZWRQbGFuIHN1cHBseWluZyB0aGUgcGxhbgogICoJc291cmNl VGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeQogICoJcGFyYW1zOiBhbnkgcGFyYW1l dGVycyBuZWVkZWQKICAqCWRlc3Q6IHdoZXJlIHRvIHNlbmQgcmVzdWx0cwpAQCAtMTM0LDYgKzEz OCw3IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKICAqLwogc3RhdGljIHZvaWQK IFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKKwkJCSBDYWNoZWRQbGFuICpjcGxhbiwK IAkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAog CQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApAQCAtMTQ1LDcgKzE1MCw3IEBAIFByb2Nl c3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKIAkvKgogCSAqIENyZWF0ZSB0aGUgUXVlcnlEZXNj IG9iamVjdAogCSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBzb3VyY2VU ZXh0LAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBjcGxhbiwgc291cmNlVGV4 dCwKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJ CQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIApAQCAtNDkzLDYgKzQ5OCw3IEBAIFBvcnRh bFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqIHRoZSBk ZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyksCisJCQkJ CQkJCQkJCXBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNlVGV4dCwKIAkJ CQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90 LApAQCAtMTI3Niw2ICsxMjgyLDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJ CXsKIAkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICovCiAJCQkJUHJvY2Vzc1F1 ZXJ5KHBzdG10LAorCQkJCQkJCSBwb3J0YWwtPmNwbGFuLAogCQkJCQkJCSBwb3J0YWwtPnNvdXJj ZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1 ZXJ5RW52LApAQCAtMTI4NSw2ICsxMjkyLDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRh bCwKIAkJCXsKIAkJCQkvKiBzdG10IGFkZGVkIGJ5IHJld3JpdGUgY2Fubm90IHNldCB0YWcgKi8K IAkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCisJCQkJCQkJIHBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJ IHBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCiAJCQkJ CQkJIHBvcnRhbC0+cXVlcnlFbnYsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4 IDQ4YTI4MGQwODkuLmY2NDc4MjEzODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5j CkBAIC0yMTEzLDcgKzIxMTMsNiBAQCBnZXRfcmVsX3JlbGFtKE9pZCByZWxpZCkKIAlyZXR1cm4g cmVzdWx0OwogfQogCi0KIC8qCQkJCS0tLS0tLS0tLS0gVFJBTlNGT1JNIENBQ0hFIC0tLS0tLS0t LS0JCQkJCQkgKi8KIAogT2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9w bGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCmluZGV4IDVh ZjFhMTY4ZWMuLjZkMmUzODVmZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBA IC0xMDQsNyArMTA0LDggQEAgc3RhdGljIExpc3QgKlJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudik7CiBzdGF0aWMgYm9vbCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSk7CiBzdGF0aWMgQ2FjaGVkUGxhbiAqQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAotCQkJCQkJCQkgICBQYXJhbUxpc3RJ bmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisJCQkJCQkJCSAg IFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAor CQkJCQkJCQkgICBib29sIGdlbmVyaWMpOwogc3RhdGljIGJvb2wgY2hvb3NlX2N1c3RvbV9wbGFu KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBi b3VuZFBhcmFtcyk7CiBzdGF0aWMgZG91YmxlIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAq cGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpOwpAQCAtOTA0LDcgKzkwNSw4IEBAIENoZWNrQ2Fj aGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogICovCiBzdGF0aWMgQ2FjaGVk UGxhbiAqCiBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlz dCAqcWxpc3QsCi0JCQkJUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVu dCAqcXVlcnlFbnYpCisJCQkJUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnYsCisJCQkJYm9vbCBnZW5lcmljKQogewogCUNhY2hlZFBsYW4gKnBsYW47 CiAJTGlzdAkgICAqcGxpc3Q7CkBAIC0xMDI2LDYgKzEwMjgsNyBAQCBCdWlsZENhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJcGxhbi0+cmVmY291 bnQgPSAwOwogCXBsYW4tPmNvbnRleHQgPSBwbGFuX2NvbnRleHQ7CiAJcGxhbi0+aXNfb25lc2hv dCA9IHBsYW5zb3VyY2UtPmlzX29uZXNob3Q7CisJcGxhbi0+aXNfZ2VuZXJpYyA9IGdlbmVyaWM7 CiAJcGxhbi0+aXNfc2F2ZWQgPSBmYWxzZTsKIAlwbGFuLT5pc192YWxpZCA9IHRydWU7CiAKQEAg LTExOTYsNyArMTE5OSw3IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJZWxzZQogCQl7CiAJCQkvKiBCdWls ZCBhIG5ldyBnZW5lcmljIHBsYW4gKi8KLQkJCXBsYW4gPSBCdWlsZENhY2hlZFBsYW4ocGxhbnNv dXJjZSwgcWxpc3QsIE5VTEwsIHF1ZXJ5RW52KTsKKwkJCXBsYW4gPSBCdWlsZENhY2hlZFBsYW4o cGxhbnNvdXJjZSwgcWxpc3QsIE5VTEwsIHF1ZXJ5RW52LCB0cnVlKTsKIAkJCS8qIEp1c3QgbWFr ZSByZWFsIHN1cmUgcGxhbnNvdXJjZS0+Z3BsYW4gaXMgY2xlYXIgKi8KIAkJCVJlbGVhc2VHZW5l cmljUGxhbihwbGFuc291cmNlKTsKIAkJCS8qIExpbmsgdGhlIG5ldyBnZW5lcmljIHBsYW4gaW50 byB0aGUgcGxhbnNvdXJjZSAqLwpAQCAtMTI0MSw3ICsxMjQ0LDcgQEAgR2V0Q2FjaGVkUGxhbihD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAog CWlmIChjdXN0b21wbGFuKQogCXsKIAkJLyogQnVpbGQgYSBjdXN0b20gcGxhbiAqLwotCQlwbGFu ID0gQnVpbGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBib3VuZFBhcmFtcywgcXVlcnlF bnYpOworCQlwbGFuID0gQnVpbGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBib3VuZFBh cmFtcywgcXVlcnlFbnYsIHRydWUpOwogCQkvKiBBY2N1bXVsYXRlIHRvdGFsIGNvc3RzIG9mIGN1 c3RvbSBwbGFucyAqLwogCQlwbGFuc291cmNlLT50b3RhbF9jdXN0b21fY29zdCArPSBjYWNoZWRf cGxhbl9jb3N0KHBsYW4sIHRydWUpOwogCkBAIC0xMzg3LDggKzEzOTAsOCBAQCBDYWNoZWRQbGFu QWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAog CX0KIAogCS8qCi0JICogUmVqZWN0IGlmIEFjcXVpcmVFeGVjdXRvckxvY2tzIHdvdWxkIGhhdmUg YW55dGhpbmcgdG8gZG8uICBUaGlzIGlzCi0JICogcHJvYmFibHkgdW5uZWNlc3NhcnkgZ2l2ZW4g dGhlIHByZXZpb3VzIGNoZWNrLCBidXQgbGV0J3MgYmUgc2FmZS4KKwkgKiBSZWplY3QgaWYgdGhl cmUgYXJlIGFueSBsb2NrYWJsZSByZWxhdGlvbnMuICBUaGlzIGlzIHByb2JhYmx5CisJICogdW5u ZWNlc3NhcnkgZ2l2ZW4gdGhlIHByZXZpb3VzIGNoZWNrLCBidXQgbGV0J3MgYmUgc2FmZS4KIAkg Ki8KIAlmb3JlYWNoKGxjLCBwbGFuLT5zdG10X2xpc3QpCiAJewpAQCAtMTc3Niw3ICsxNzc5LDcg QEAgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJ Zm9yZWFjaChsYzEsIHN0bXRfbGlzdCkKIAl7CiAJCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9 IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYzEpOwotCQlMaXN0Q2VsbCAgICpsYzI7CisJCWlu dAkJCXJ0aW5kZXg7CiAKIAkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJ TElUWSkKIAkJewpAQCAtMTc5NCw5ICsxNzk3LDEzIEBAIEFjcXVpcmVFeGVjdXRvckxvY2tzKExp c3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQogCQkJY29udGludWU7CiAJCX0KIAotCQlmb3Jl YWNoKGxjMiwgcGxhbm5lZHN0bXQtPnJ0YWJsZSkKKwkJcnRpbmRleCA9IC0xOworCQl3aGlsZSAo KHJ0aW5kZXggPSBibXNfbmV4dF9tZW1iZXIocGxhbm5lZHN0bXQtPnVucHJ1bmFibGVSZWxpZHMs CisJCQkJCQkJCQkJICBydGluZGV4KSkgPj0gMCkKIAkJewotCQkJUmFuZ2VUYmxFbnRyeSAqcnRl ID0gKFJhbmdlVGJsRW50cnkgKikgbGZpcnN0KGxjMik7CisJCQlSYW5nZVRibEVudHJ5ICpydGUg PSBsaXN0X250aF9ub2RlKFJhbmdlVGJsRW50cnksCisJCQkJCQkJCQkJCSAgIHBsYW5uZWRzdG10 LT5ydGFibGUsCisJCQkJCQkJCQkJCSAgIHJ0aW5kZXggLSAxKTsKIAogCQkJaWYgKCEocnRlLT5y dGVraW5kID09IFJURV9SRUxBVElPTiB8fAogCQkJCSAgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VC UVVFUlkgJiYgT2lkSXNWYWxpZChydGUtPnJlbGlkKSkpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmlu ZGV4IDliOGIzNTFkOWEuLmJmMzI2ZWViNzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTEw MSw4ICsxMDEsOSBAQCBleHRlcm4gdm9pZCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5 U3RtdCwgSW50b0NsYXVzZSAqaW50bywKIAkJCQkJCQkgIEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0 IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIAotZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxh bm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLAotCQkJCQkJICAgRXhwbGFp blN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCitleHRlcm4gdm9pZCBFeHBsYWlu T25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJ CQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKKwkJCQkJCSAgIGNvbnN0 IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAogCQkJCQkJICAgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1 cmF0aW9uLAogCQkJCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWNkZXNjLmgKaW5kZXggMGE3Mjc0ZTI2Yy4uMGU3MjQ1NDM1ZCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjZGVzYy5oCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCS8q IFRoZXNlIGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkgQ3JlYXRlUXVlcnlEZXNjICovCiAJQ21kVHlw ZQkJb3BlcmF0aW9uOwkJLyogQ01EX1NFTEVDVCwgQ01EX1VQREFURSwgZXRjLiAqLwogCVBsYW5u ZWRTdG10ICpwbGFubmVkc3RtdDsJLyogcGxhbm5lcidzIG91dHB1dCAoY291bGQgYmUgdXRpbGl0 eSwgdG9vKSAqLworCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8qIENhY2hlZFBsYW4gdGhhdCBzdXBw bGllcyB0aGUgcGxhbm5lZHN0bXQgKi8KIAljb25zdCBjaGFyICpzb3VyY2VUZXh0OwkJLyogc291 cmNlIHRleHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNob3QJc25hcHNob3Q7CQkvKiBzbmFwc2hv dCB0byB1c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJY3Jvc3NjaGVja19zbmFwc2hvdDsJLyog Y3Jvc3NjaGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAqLwpAQCAtNTcsNiArNTgsNyBAQCB0eXBl ZGVmIHN0cnVjdCBRdWVyeURlc2MKIAogLyogaW4gcHF1ZXJ5LmMgKi8KIGV4dGVybiBRdWVyeURl c2MgKkNyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCSAg Q2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJ CQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNr X3NuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBhZjdkOGZkMWU3Li5lZTA4OTUwNWEw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgInN0b3Jh Z2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2lu Y2x1ZGUgInV0aWxzL3F1ZXJ5ZW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2Fj aGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWx0cmlnZ2VyLmgiCiAjaW5jbHVkZSAidXRpbHMvc2hh cmVkdHVwbGVzdG9yZS5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBzaG90LmgiCkBAIC02MzMsNiAr NjM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJCQkJICogRXhlY1Jvd01hcmtz LCBvciBOVUxMIGlmIG5vbmUgKi8KIAlMaXN0CSAgICplc19ydGVwZXJtaW5mb3M7CS8qIExpc3Qg b2YgUlRFUGVybWlzc2lvbkluZm8gKi8KIAlQbGFubmVkU3RtdCAqZXNfcGxhbm5lZHN0bXQ7CS8q IGxpbmsgdG8gdG9wIG9mIHBsYW4gdHJlZSAqLworCUNhY2hlZFBsYW4gKmVzX2NhY2hlZHBsYW47 CS8qIENhY2hlZFBsYW4gc3VwcGx5aW5nIHRoZSBwbGFubmVkc3RtdCAqLwogCWNvbnN0IGNoYXIg KmVzX3NvdXJjZVRleHQ7CS8qIFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKIAlKdW5r RmlsdGVyICplc19qdW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCA1NDBkMDIxNTkyLi4yNDY2MTU3YjI1IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaApAQCAtMTE2LDYgKzExNiwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVy R2xvYmFsCiAJLyogImZsYXQiIHJhbmdldGFibGUgZm9yIGV4ZWN1dG9yICovCiAJTGlzdAkgICAq ZmluYWxydGFibGU7CiAKKwkvKgorCSAqIFJUIGluZGV4ZXMgb2YgcmVsYXRpb25zIHN1YmplY3Qg dG8gcmVtb3ZhbCBmcm9tIHRoZSBwbGFuIGR1ZSB0byBydW50aW1lCisJICogcHJ1bmluZyBhdCBw bGFuIGluaXRpYWxpemF0aW9uIHRpbWUKKwkgKi8KKwlCaXRtYXBzZXQgICpwcnVuYWJsZVJlbGlk czsKKwogCS8qICJmbGF0IiBsaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvcyAqLwogCUxpc3QJICAg KmZpbmFscnRlcGVybWluZm9zOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFu bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDYyY2Q2YTY2NjYu LmFlNjA4ODEyZjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC03MSw2ICs3MSwxMCBAQCB0eXBl ZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2Yg UmFuZ2VUYmxFbnRyeSBub2RlcyAqLwogCisJQml0bWFwc2V0ICAqdW5wcnVuYWJsZVJlbGlkczsJ LyogUlQgaW5kZXhlcyBvZiByZWxhdGlvbnMgdGhhdCBhcmUgbm90CisJCQkJCQkJCQkgKiBzdWJq ZWN0IHRvIHJ1bnRpbWUgcHJ1bmluZzsgZm9yCisJCQkJCQkJCQkgKiBBY3F1aXJlRXhlY3V0b3JM b2NrcygpICovCisKIAlMaXN0CSAgICpwZXJtSW5mb3M7CQkvKiBsaXN0IG9mIFJURVBlcm1pc3Np b25JbmZvIG5vZGVzIGZvciBydGFibGUKIAkJCQkJCQkJICogZW50cmllcyBuZWVkaW5nIG9uZSAq LwogCkBAIC0xNDU5LDYgKzE0NjMsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uZWRSZWxQ cnVuZUluZm8KIAkvKiBJbmRleGVzIG9mIGFsbCBwYXJ0aXRpb25zIHdoaWNoIHN1YnBsYW5zIG9y IHN1YnBhcnRzIGFyZSBwcmVzZW50IGZvciAqLwogCUJpdG1hcHNldCAgKnByZXNlbnRfcGFydHM7 CiAKKwkvKgorCSAqIFJUIGluZGV4ZXMgb2YgYWxsIHBhcnRpdGlvbnMgd2hpY2ggc3VicGxhbnMg b3Igc3VicGFydHMgYXJlIHByZXNlbnQKKwkgKiBmb3I7IG9ubHkgdXNlZCBkdXJpbmcgcGxhbm5p bmcgdG8gaGVscCBpbiB0aGUgY29uc3RydWN0aW9uIG9mCisJICogUGxhbm5lckdsb2JhbC5wcnVu YWJsZVJlbGlkcy4KKwkgKi8KKwlCaXRtYXBzZXQgICpwcmVzZW50X3BhcnRfcnRpczsKKwogCS8q IExlbmd0aCBvZiB0aGUgZm9sbG93aW5nIGFycmF5czogKi8KIAlpbnQJCQlucGFydHM7CiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRp bHMvcGxhbmNhY2hlLmgKaW5kZXggYTkwZGZkZjkwNi4uMGI1ZWUwMDdjYSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxh bmNhY2hlLmgKQEAgLTE0OSw2ICsxNDksNyBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuCiAJ aW50CQkJbWFnaWM7CQkJLyogc2hvdWxkIGVxdWFsIENBQ0hFRFBMQU5fTUFHSUMgKi8KIAlMaXN0 CSAgICpzdG10X2xpc3Q7CQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAqLwogCWJvb2wJCWlzX29u ZXNob3Q7CQkvKiBpcyBpdCBhICJvbmVzaG90IiBwbGFuPyAqLworCWJvb2wJCWlzX2dlbmVyaWM7 CQkvKiBpcyBpdCBhIHJldXNhYmxlIGdlbmVyaWMgcGxhbj8gKi8KIAlib29sCQlpc19zYXZlZDsJ CS8qIGlzIENhY2hlZFBsYW4gaW4gYSBsb25nLWxpdmVkIGNvbnRleHQ/ICovCiAJYm9vbAkJaXNf dmFsaWQ7CQkvKiBpcyB0aGUgc3RtdF9saXN0IGN1cnJlbnRseSB2YWxpZD8gKi8KIAlPaWQJCQlw bGFuUm9sZUlkOwkJLyogUm9sZSBJRCB0aGUgcGxhbiB3YXMgY3JlYXRlZCBmb3IgKi8KQEAgLTIz NSw0ICsyMzYsMTMgQEAgZXh0ZXJuIGJvb2wgQ2FjaGVkUGxhbklzU2ltcGx5VmFsaWQoQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIGV4dGVybiBDYWNoZWRFeHByZXNzaW9uICpHZXRDYWNo ZWRFeHByZXNzaW9uKE5vZGUgKmV4cHIpOwogZXh0ZXJuIHZvaWQgRnJlZUNhY2hlZEV4cHJlc3Np b24oQ2FjaGVkRXhwcmVzc2lvbiAqY2V4cHIpOwogCisvKgorICogQ2FjaGVkUGxhblJlcXVpcmVz TG9ja2luZzogc2hvdWxkIHRoZSBleGVjdXRvciBhY3F1aXJlIGxvY2tzPworICovCitzdGF0aWMg aW5saW5lIGJvb2wKK0NhY2hlZFBsYW5SZXF1aXJlc0xvY2tpbmcoQ2FjaGVkUGxhbiAqY3BsYW4p Cit7CisJcmV0dXJuIGNwbGFuLT5pc19nZW5lcmljOworfQorCiAjZW5kaWYJCQkJCQkJLyogUExB TkNBQ0hFX0ggKi8KLS0gCjIuNDMuMAoK --00000000000008ca1c0620d2895c Content-Type: application/octet-stream; name="v51-0002-Assorted-tightening-in-various-ExecEnd-routines.patch" Content-Disposition: attachment; filename="v51-0002-Assorted-tightening-in-various-ExecEnd-routines.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0fbnly31 RnJvbSA1MDliZGNlNmE4NzUyNzgzODVmNDdiYTkxODQ3NzRiYzllNTdmYjhiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjggU2VwIDIwMjMgMTY6NTY6MjkgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 MSAyLzNdIEFzc29ydGVkIHRpZ2h0ZW5pbmcgaW4gdmFyaW91cyBFeGVjRW5kKCkqIHJvdXRpbmVz CgpUaGlzIGluY2x1ZGVzIGFkZGluZyBOVUxMbmVzcyBjaGVja3Mgb24gcG9pbnRlcnMgYmVmb3Jl IGNsZWFuaW5nIHRoZW0KdXAuICBNYW55IEV4ZWNFbmQqKCkgcm91dGluZXMgYWxyZWFkeSBwZXJm b3JtIHRoaXMgY2hlY2ssIGJ1dCBhIGZldwphcmUgbWlzc2luZyB0aGVtLiAgVGhlc2UgTlVMTG5l c3MgY2hlY2tzIG1pZ2h0IHNlZW0gcmVkdW5kYW50IGFzCnRoaW5ncyBzdGFuZCBzaW5jZSB0aGUg RXhlY0VuZCooKSByb3V0aW5lcyBvcGVyYXRlIHVuZGVyIHRoZQphc3N1bXB0aW9uIHRoYXQgdGhl aXIgbWF0Y2hpbmcgRXhlY0luaXQqIHJvdXRpbmUgd291bGQgaGF2ZSBmdWxseQpleGVjdXRlZCwg ZW5zdXJpbmcgcG9pbnRlcnMgYXJlIHNldC4gSG93ZXZlciwgdGhhdCBhc3N1bXB0aW9uIHNlZW1z IGEKYml0IHNoYWt5IGluIHRoZSBmYWNlIG9mIGZ1dHVyZSBjaGFuZ2VzLgoKVGhpcyBhbHNvIGFk ZHMgYSBndWFyZCBhdCB0aGUgYmVnaWdnaW5nIG9mIEV2YWxQbGFuUXVhbEVuZCgpIHRvIHJldHVy bgplYXJseSBpZiB0aGUgRVBRU3RhdGUgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYmVlbiBpbml0 aWFsaXplZC4gIFRoYXQKY2FzZSBjYW4gaGFwcGVuIGlmIHRoZSBjb3JyZXNwb25kaW5nIEV4ZWNJ bml0KigpIHJvdXRpbmUgcmV0dXJuZWQKZWFybHkgd2l0aG91dCBjYWxsaW5nIEV2YWxQbGFuUXVh bEluaXQoKS4KCldoaWxlIGF0IGl0LCB0aGlzIGNvbW1pdCBlbnN1cmVzIHRoYXQgcG9pbnRlcnMg YXJlIGNvbnNpc3RlbnRseSBzZXQKdG8gTlVMTCBhZnRlciBjbGVhbnVwIGluIGFsbCBFeGVjRW5k KigpIHJvdXRpbmVzLgoKRmluYWxseSwgZm9yIGVuaGFuY2VkIGNvbnNpc3RlbmN5LCB0aGUgZm9y bWF0IG9mIE5VTExuZXNzIGNoZWNrcyBoYXMKYmVlbiBzdGFuZGFyZGl6ZWQgdG8gImlmIChwb2lu dGVyICE9IE5VTEwpIiwgcmVwbGFjaW5nIHRoZSBwcmV2aW91cwoiaWYgKHBvaW50ZXIpIiBzdHls ZS4KClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcwpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tL0NBK0hpd3FGR2tNU2dlNlRnQzlLUXpkZTBvaHBBeWNMUXVWN29vaXRFRXBiS0IwT19tZ0Bt YWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAg ICAgICB8ICA0ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgICAgICAgICAgICAg fCAyNyArKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAg ICAgICAgfCAgMyArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jICAgICAg IHwgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jICB8IDQ2 ICsrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJ bmRleHNjYW4uYyB8IDIzICsrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwT3IuYyAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4u YyAgICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5j ICAgICB8IDE3ICsrKystLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgICAg ICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyAgICAg fCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYyAgICAgICAgICAgfCAgNiAr LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgICAgICAgICAgICB8ICA2ICstLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgICAgICAgIHwgIDQgKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYyB8IDEzICsrKysrLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyAgIHwgMjUgKysrKysrLS0tLS0tCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgICAgICAgfCAyMyArKysrKystLS0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMgICAgICAgICAgIHwgIDEgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgICAgICAgIHwgIDEgKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgICAgICAgIHwgIDUgKystCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWVtb2l6ZS5jICAgICAgICAgfCAgNyArKystCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2VBcHBlbmQuYyAgICAgfCAgMyArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlam9pbi5jICAgICAgIHwgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1v ZGlmeVRhYmxlLmMgICAgIHwgMTEgKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVz dGxvb3AuYyAgICAgICAgfCAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNl dC5jICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24u YyAgfCAyNCArKysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jICAg ICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYyAgICAg IHwgIDcgKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgIHwg MTYgKysrLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jICAgICAgICAgICB8 ICA2ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyAgICAgICAgICAgIHwgIDUg KystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgICAgfCAgMSArCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jICAgfCAgNCArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jICAgIHwgMTIgKysrKy0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jICAgICAgICAgfCAgOCArKystCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgfCA0MSArKysrKysrKysrKysrLS0tLS0tCiAzOCBm aWxlcyBjaGFuZ2VkLCAyNDYgaW5zZXJ0aW9ucygrKSwgMTIzIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCmluZGV4IDI3MWY5ZDkzZmMuLjBmNmRiZDFlMmIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwpAQCAtMjk5OSw2ICsyOTk5LDEwIEBAIEV2YWxQbGFuUXVhbEVuZChFUFFT dGF0ZSAqZXBxc3RhdGUpCiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCUxpc3RDZWxsICAg Kmw7CiAKKwkvKiBOb3RoaW5nIHRvIGRvIGlmIG5vIEV2YWxQbGFuUXVhbEluaXQoKSB3YXMgZG9u ZSB0byBiZWdpbiB3aXRoLiAqLworCWlmIChlcHFzdGF0ZS0+cGFyZW50ZXN0YXRlID09IE5VTEwp CisJCXJldHVybjsKKwogCXJ0c2l6ZSA9IGVwcXN0YXRlLT5wYXJlbnRlc3RhdGUtPmVzX3Jhbmdl X3RhYmxlX3NpemU7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IDUzZWFkNzdlY2Uu LjBkZmJhNWNhMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTQzMDMsNyArNDMwMyw2IEBA IEdldEFnZ0luaXRWYWwoRGF0dW0gdGV4dEluaXRWYWwsIE9pZCB0cmFuc3R5cGUpCiB2b2lkCiBF eGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKIAlp bnQJCQl0cmFuc25vOwogCWludAkJCW51bUdyb3VwaW5nU2V0cyA9IE1heChub2RlLT5tYXhzZXRz LCAxKTsKIAlpbnQJCQlzZXRubzsKQEAgLTQzMTMsNyArNDMxMiw3IEBAIEV4ZWNFbmRBZ2coQWdn U3RhdGUgKm5vZGUpCiAJICogd29ya2VyIGJhY2sgaW50byBzaGFyZWQgbWVtb3J5IHNvIHRoYXQg aXQgY2FuIGJlIHBpY2tlZCB1cCBieSB0aGUgbWFpbgogCSAqIHByb2Nlc3MgdG8gcmVwb3J0IGlu IEVYUExBSU4gQU5BTFlaRS4KIAkgKi8KLQlpZiAobm9kZS0+c2hhcmVkX2luZm8gJiYgSXNQYXJh bGxlbFdvcmtlcigpKQorCWlmIChub2RlLT5zaGFyZWRfaW5mbyAhPSBOVUxMICYmIElzUGFyYWxs ZWxXb3JrZXIoKSkKIAl7CiAJCUFnZ3JlZ2F0ZUluc3RydW1lbnRhdGlvbiAqc2k7CiAKQEAgLTQz MjYsMTAgKzQzMjUsMTYgQEAgRXhlY0VuZEFnZyhBZ2dTdGF0ZSAqbm9kZSkKIAogCS8qIE1ha2Ug c3VyZSB3ZSBoYXZlIGNsb3NlZCBhbnkgb3BlbiB0dXBsZXNvcnRzICovCiAKLQlpZiAobm9kZS0+ c29ydF9pbikKKwlpZiAobm9kZS0+c29ydF9pbiAhPSBOVUxMKQorCXsKIAkJdHVwbGVzb3J0X2Vu ZChub2RlLT5zb3J0X2luKTsKLQlpZiAobm9kZS0+c29ydF9vdXQpCisJCW5vZGUtPnNvcnRfaW4g PSBOVUxMOworCX0KKwlpZiAobm9kZS0+c29ydF9vdXQgIT0gTlVMTCkKKwl7CiAJCXR1cGxlc29y dF9lbmQobm9kZS0+c29ydF9vdXQpOworCQlub2RlLT5zb3J0X291dCA9IE5VTEw7CisJfQogCiAJ aGFzaGFnZ19yZXNldF9zcGlsbF9zdGF0ZShub2RlKTsKIApAQCAtNDM0NSwxOSArNDM1MCwyNSBA QCBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQogCiAJCWZvciAoc2V0bm8gPSAwOyBzZXRubyA8 IG51bUdyb3VwaW5nU2V0czsgc2V0bm8rKykKIAkJewotCQkJaWYgKHBlcnRyYW5zLT5zb3J0c3Rh dGVzW3NldG5vXSkKKwkJCWlmIChwZXJ0cmFucy0+c29ydHN0YXRlc1tzZXRub10gIT0gTlVMTCkK IAkJCQl0dXBsZXNvcnRfZW5kKHBlcnRyYW5zLT5zb3J0c3RhdGVzW3NldG5vXSk7CiAJCX0KIAl9 CiAKIAkvKiBBbmQgZW5zdXJlIGFueSBhZ2cgc2h1dGRvd24gY2FsbGJhY2tzIGhhdmUgYmVlbiBj YWxsZWQgKi8KIAlmb3IgKHNldG5vID0gMDsgc2V0bm8gPCBudW1Hcm91cGluZ1NldHM7IHNldG5v KyspCisJewogCQlSZVNjYW5FeHByQ29udGV4dChub2RlLT5hZ2djb250ZXh0c1tzZXRub10pOwot CWlmIChub2RlLT5oYXNoY29udGV4dCkKKwkJbm9kZS0+YWdnY29udGV4dHNbc2V0bm9dID0gTlVM TDsKKwl9CisJaWYgKG5vZGUtPmhhc2hjb250ZXh0ICE9IE5VTEwpCisJewogCQlSZVNjYW5FeHBy Q29udGV4dChub2RlLT5oYXNoY29udGV4dCk7CisJCW5vZGUtPmhhc2hjb250ZXh0ID0gTlVMTDsK Kwl9CiAKLQlvdXRlclBsYW4gPSBvdXRlclBsYW5TdGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShv dXRlclBsYW4pOworCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBs YW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQu YwppbmRleCBjYTBmNTRkNjc2Li44NmQ3NWIxYTdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVu ZC5jCkBAIC0zOTksNyArMzk5LDEwIEBAIEV4ZWNFbmRBcHBlbmQoQXBwZW5kU3RhdGUgKm5vZGUp CiAJICogc2h1dCBkb3duIGVhY2ggb2YgdGhlIHN1YnNjYW5zCiAJICovCiAJZm9yIChpID0gMDsg aSA8IG5wbGFuczsgaSsrKQorCXsKIAkJRXhlY0VuZE5vZGUoYXBwZW5kcGxhbnNbaV0pOworCQlh cHBlbmRwbGFuc1tpXSA9IE5VTEw7CisJfQogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwQW5kLmMKaW5kZXggOWM5YzY2Njg3Mi4uYWUzOTEyMjJiZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVCaXRtYXBBbmQuYwpAQCAtMTkyLDggKzE5Miw4IEBAIEV4ZWNFbmRCaXRtYXBBbmQo Qml0bWFwQW5kU3RhdGUgKm5vZGUpCiAJICovCiAJZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsr KQogCXsKLQkJaWYgKGJpdG1hcHBsYW5zW2ldKQotCQkJRXhlY0VuZE5vZGUoYml0bWFwcGxhbnNb aV0pOworCQlFeGVjRW5kTm9kZShiaXRtYXBwbGFuc1tpXSk7CisJCWJpdG1hcHBsYW5zW2ldID0g TlVMTDsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRt YXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMK aW5kZXggM2M2M2JkZDkzZC4uMTlmMThhYjgxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTYyNSw4ICs2MjUsNiBAQCBFeGVjUmVTY2FuQml0bWFwSGVh cFNjYW4oQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIHZvaWQKIEV4ZWNFbmRCaXRtYXBIZWFw U2NhbihCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogewotCVRhYmxlU2NhbkRlc2Mgc2NhbkRl c2M7Ci0KIAkvKgogCSAqIFdoZW4gZW5kaW5nIGEgcGFyYWxsZWwgd29ya2VyLCBjb3B5IHRoZSBz dGF0aXN0aWNzIGdhdGhlcmVkIGJ5IHRoZQogCSAqIHdvcmtlciBiYWNrIGludG8gc2hhcmVkIG1l bW9yeSBzbyB0aGF0IGl0IGNhbiBiZSBwaWNrZWQgdXAgYnkgdGhlIG1haW4KQEAgLTY1MCwzOCAr NjQ4LDU0IEBAIEV4ZWNFbmRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhblN0YXRlICpub2Rl KQogCQlzaS0+bG9zc3lfcGFnZXMgKz0gbm9kZS0+c3RhdHMubG9zc3lfcGFnZXM7CiAJfQogCi0J LyoKLQkgKiBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKLQkgKi8KLQlzY2FuRGVz YyA9IG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYzsKLQogCS8qCiAJICogY2xvc2UgZG93biBz dWJwbGFucwogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRl clBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiAKIAkvKgogCSAqIHJlbGVhc2UgYml0bWFwcyBhbmQg YnVmZmVycyBpZiBhbnkKIAkgKi8KLQlpZiAobm9kZS0+dGJtaXRlcmF0b3IpCisJaWYgKG5vZGUt PnRibWl0ZXJhdG9yICE9IE5VTEwpCisJewogCQl0Ym1fZW5kX2l0ZXJhdGUobm9kZS0+dGJtaXRl cmF0b3IpOwotCWlmIChub2RlLT5wcmVmZXRjaF9pdGVyYXRvcikKKwkJbm9kZS0+dGJtaXRlcmF0 b3IgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+cHJlZmV0Y2hfaXRlcmF0b3IgIT0gTlVMTCkKKwl7 CiAJCXRibV9lbmRfaXRlcmF0ZShub2RlLT5wcmVmZXRjaF9pdGVyYXRvcik7Ci0JaWYgKG5vZGUt PnRibSkKKwkJbm9kZS0+cHJlZmV0Y2hfaXRlcmF0b3IgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+ dGJtICE9IE5VTEwpCisJewogCQl0Ym1fZnJlZShub2RlLT50Ym0pOwotCWlmIChub2RlLT5zaGFy ZWRfdGJtaXRlcmF0b3IpCisJCW5vZGUtPnRibSA9IE5VTEw7CisJfQorCWlmIChub2RlLT5zaGFy ZWRfdGJtaXRlcmF0b3IgIT0gTlVMTCkKKwl7CiAJCXRibV9lbmRfc2hhcmVkX2l0ZXJhdGUobm9k ZS0+c2hhcmVkX3RibWl0ZXJhdG9yKTsKLQlpZiAobm9kZS0+c2hhcmVkX3ByZWZldGNoX2l0ZXJh dG9yKQorCQlub2RlLT5zaGFyZWRfdGJtaXRlcmF0b3IgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+ c2hhcmVkX3ByZWZldGNoX2l0ZXJhdG9yICE9IE5VTEwpCisJewogCQl0Ym1fZW5kX3NoYXJlZF9p dGVyYXRlKG5vZGUtPnNoYXJlZF9wcmVmZXRjaF9pdGVyYXRvcik7CisJCW5vZGUtPnNoYXJlZF9w cmVmZXRjaF9pdGVyYXRvciA9IE5VTEw7CisJfQogCWlmIChub2RlLT5wdm1idWZmZXIgIT0gSW52 YWxpZEJ1ZmZlcikKKwl7CiAJCVJlbGVhc2VCdWZmZXIobm9kZS0+cHZtYnVmZmVyKTsKKwkJbm9k ZS0+cHZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwl9CiAKIAkvKgotCSAqIGNsb3NlIGhlYXAg c2NhbgorCSAqIGNsb3NlIGhlYXAgc2NhbiAobm8tb3AgaWYgd2UgZGlkbid0IHN0YXJ0IGl0KQog CSAqLwotCWlmIChzY2FuRGVzYykKLQkJdGFibGVfZW5kc2NhbihzY2FuRGVzYyk7Ci0KKwlpZiAo bm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjICE9IE5VTEwpCisJeworCQl0YWJsZV9lbmRzY2Fu KG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyk7CisJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2Fu RGVzYyA9IE5VTEw7CisJfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQml0bWFwSW5kZXhzY2FuLmMKaW5kZXggNmRmOGUxN2VjOC4uNDY2OWU4ZDBjZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwpAQCAtMTc0LDIyICsxNzQs MjEgQEAgRXhlY1JlU2NhbkJpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW5TdGF0ZSAqbm9k ZSkKIHZvaWQKIEV4ZWNFbmRCaXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuU3RhdGUgKm5v ZGUpCiB7Ci0JUmVsYXRpb24JaW5kZXhSZWxhdGlvbkRlc2M7Ci0JSW5kZXhTY2FuRGVzYyBpbmRl eFNjYW5EZXNjOwotCi0JLyoKLQkgKiBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUK LQkgKi8KLQlpbmRleFJlbGF0aW9uRGVzYyA9IG5vZGUtPmJpc3NfUmVsYXRpb25EZXNjOwotCWlu ZGV4U2NhbkRlc2MgPSBub2RlLT5iaXNzX1NjYW5EZXNjOworCS8qIGNsb3NlIHRoZSBzY2FuIChu by1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQpICovCisJaWYgKG5vZGUtPmJpc3NfU2NhbkRlc2Mg IT0gTlVMTCkKKwl7CisJCWluZGV4X2VuZHNjYW4obm9kZS0+Ymlzc19TY2FuRGVzYyk7CisJCW5v ZGUtPmJpc3NfU2NhbkRlc2MgPSBOVUxMOworCX0KIAogCS8qCiAJICogY2xvc2UgdGhlIGluZGV4 IHJlbGF0aW9uIChuby1vcCBpZiB3ZSBkaWRuJ3Qgb3BlbiBpdCkKIAkgKi8KLQlpZiAoaW5kZXhT Y2FuRGVzYykKLQkJaW5kZXhfZW5kc2NhbihpbmRleFNjYW5EZXNjKTsKLQlpZiAoaW5kZXhSZWxh dGlvbkRlc2MpCi0JCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb25EZXNjLCBOb0xvY2spOworCWlm IChub2RlLT5iaXNzX1JlbGF0aW9uRGVzYyAhPSBOVUxMKQorCXsKKwkJaW5kZXhfY2xvc2Uobm9k ZS0+Ymlzc19SZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJCW5vZGUtPmJpc3NfUmVsYXRpb25EZXNj ID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBPci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9y LmMKaW5kZXggNzAyOTUzNmM2NC4uZGU0MzkyMzVkMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcE9yLmMKQEAgLTIxMCw4ICsyMTAsOCBAQCBFeGVjRW5kQml0bWFwT3IoQml0bWFwT3JTdGF0 ZSAqbm9kZSkKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCiAJewotCQlpZiAo Yml0bWFwcGxhbnNbaV0pCi0JCQlFeGVjRW5kTm9kZShiaXRtYXBwbGFuc1tpXSk7CisJCUV4ZWNF bmROb2RlKGJpdG1hcHBsYW5zW2ldKTsKKwkJYml0bWFwcGxhbnNbaV0gPSBOVUxMOwogCX0KIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2FuLmMKaW5kZXggODA4MWVlZDg4Ny4uN2NlYTk0Mzk4 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jCkBAIC0yOTAsMTAgKzI5MCwxMSBAQCBF eGVjRW5kQ3RlU2NhbihDdGVTY2FuU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBJZiBJIGFtIHRoZSBs ZWFkZXIsIGZyZWUgdGhlIHR1cGxlc3RvcmUuCiAJICovCi0JaWYgKG5vZGUtPmxlYWRlciA9PSBu b2RlKQorCWlmIChub2RlLT5sZWFkZXIgIT0gTlVMTCAmJiBub2RlLT5sZWFkZXIgPT0gbm9kZSkK IAl7CiAJCXR1cGxlc3RvcmVfZW5kKG5vZGUtPmN0ZV90YWJsZSk7CiAJCW5vZGUtPmN0ZV90YWJs ZSA9IE5VTEw7CisJCW5vZGUtPmxlYWRlciA9IE5VTEw7CiAJfQogfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVGb3JlaWduc2Nhbi5jCmluZGV4IGZlNGFlNTVjMGYuLjEzNTdjY2YzYzkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCkBAIC0zMDAsMTcgKzMwMCwyMCBAQCBF eGVjRW5kRm9yZWlnblNjYW4oRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAlFU3RhdGUJICAgKmVz dGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOwogCiAJLyogTGV0IHRoZSBGRFcgc2h1dCBkb3duICov Ci0JaWYgKHBsYW4tPm9wZXJhdGlvbiAhPSBDTURfU0VMRUNUKQorCWlmIChub2RlLT5mZHdyb3V0 aW5lICE9IE5VTEwpCiAJewotCQlpZiAoZXN0YXRlLT5lc19lcHFfYWN0aXZlID09IE5VTEwpCi0J CQlub2RlLT5mZHdyb3V0aW5lLT5FbmREaXJlY3RNb2RpZnkobm9kZSk7CisJCWlmIChwbGFuLT5v cGVyYXRpb24gIT0gQ01EX1NFTEVDVCkKKwkJeworCQkJaWYgKGVzdGF0ZS0+ZXNfZXBxX2FjdGl2 ZSA9PSBOVUxMKQorCQkJCW5vZGUtPmZkd3JvdXRpbmUtPkVuZERpcmVjdE1vZGlmeShub2RlKTsK KwkJfQorCQllbHNlCisJCQlub2RlLT5mZHdyb3V0aW5lLT5FbmRGb3JlaWduU2Nhbihub2RlKTsK IAl9Ci0JZWxzZQotCQlub2RlLT5mZHdyb3V0aW5lLT5FbmRGb3JlaWduU2Nhbihub2RlKTsKIAog CS8qIFNodXQgZG93biBhbnkgb3V0ZXIgcGxhbi4gKi8KLQlpZiAob3V0ZXJQbGFuU3RhdGUobm9k ZSkpCi0JCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlFeGVjRW5kTm9kZShv dXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVy LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXggNWQ0ZmZlOTg5Yy4u Y2FlNWVhMWY5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwpAQCAtMjQ0LDYgKzI0NCw3 IEBAIHZvaWQKIEV4ZWNFbmRHYXRoZXIoR2F0aGVyU3RhdGUgKm5vZGUpCiB7CiAJRXhlY0VuZE5v ZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwkvKiBsZXQgY2hpbGRyZW4gY2xlYW4gdXAgZmlyc3Qg Ki8KKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiAJRXhlY1NodXRkb3duR2F0aGVyKG5v ZGUpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVy Z2UuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCmluZGV4IDQ1ZjYw MTdjMjkuLmIzNmNkODllN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVH YXRoZXJNZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5j CkBAIC0yODQsNiArMjg0LDcgQEAgdm9pZAogRXhlY0VuZEdhdGhlck1lcmdlKEdhdGhlck1lcmdl U3RhdGUgKm5vZGUpCiB7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwkvKiBs ZXQgY2hpbGRyZW4gY2xlYW4gdXAgZmlyc3QgKi8KKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5V TEw7CiAJRXhlY1NodXRkb3duR2F0aGVyTWVyZ2Uobm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdyb3VwLmMKaW5kZXggZGEzMmJlYzE4MS4uODA3NDI5ZTUwNCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdyb3VwLmMKQEAgLTIyNSwxMCArMjI1LDggQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB2b2lkCiBFeGVjRW5kR3JvdXAoR3JvdXBTdGF0 ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpvdXRlclBsYW47Ci0KLQlvdXRlclBsYW4gPSBvdXRl clBsYW5TdGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW4pOworCUV4ZWNFbmROb2Rl KG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9 CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCmluZGV4IDU3MGE5MGViZTEuLmE5MTNkNWI1 MGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwpAQCAtNDI3LDEzICs0MjcsMTEgQEAgRXhlY0lu aXRIYXNoKEhhc2ggKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhl Y0VuZEhhc2goSGFzaFN0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKLQog CS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCi0Jb3V0ZXJQbGFuID0gb3V0ZXJQ bGFuU3RhdGUobm9kZSk7Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsKKwlFeGVjRW5kTm9kZShv dXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQog CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKaW5kZXggMmY3MTcwNjA0ZC4uOTAxYzll OWJlNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTk1MCw3ICs5NTAsNyBA QCBFeGVjRW5kSGFzaEpvaW4oSGFzaEpvaW5TdGF0ZSAqbm9kZSkKIAkvKgogCSAqIEZyZWUgaGFz aCB0YWJsZQogCSAqLwotCWlmIChub2RlLT5oal9IYXNoVGFibGUpCisJaWYgKG5vZGUtPmhqX0hh c2hUYWJsZSAhPSBOVUxMKQogCXsKIAkJRXhlY0hhc2hUYWJsZURlc3Ryb3kobm9kZS0+aGpfSGFz aFRhYmxlKTsKIAkJbm9kZS0+aGpfSGFzaFRhYmxlID0gTlVMTDsKQEAgLTk2MCw3ICs5NjAsOSBA QCBFeGVjRW5kSGFzaEpvaW4oSGFzaEpvaW5TdGF0ZSAqbm9kZSkKIAkgKiBjbGVhbiB1cCBzdWJ0 cmVlcwogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBs YW5TdGF0ZShub2RlKSA9IE5VTEw7CiAJRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkp OworCWlubmVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYwppbmRleCAyY2U1ZWQ1ZWM4Li4wMTBiY2ZhZmE4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCkBAIC0xMDc4 LDggKzEwNzgsMTYgQEAgRXhlY0VuZEluY3JlbWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnRTdGF0 ZSAqbm9kZSkKIHsKIAlTT19wcmludGYoIkV4ZWNFbmRJbmNyZW1lbnRhbFNvcnQ6IHNodXR0aW5n IGRvd24gc29ydCBub2RlXG4iKTsKIAotCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9k ZS0+Z3JvdXBfcGl2b3QpOwotCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+dHJh bnNmZXJfdHVwbGUpOworCWlmIChub2RlLT5ncm91cF9waXZvdCAhPSBOVUxMKQorCXsKKwkJRXhl Y0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChub2RlLT5ncm91cF9waXZvdCk7CisJCW5vZGUtPmdy b3VwX3Bpdm90ID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPnRyYW5zZmVyX3R1cGxlICE9IE5VTEwp CisJeworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPnRyYW5zZmVyX3R1cGxl KTsKKwkJbm9kZS0+dHJhbnNmZXJfdHVwbGUgPSBOVUxMOworCX0KIAogCS8qCiAJICogUmVsZWFz ZSB0dXBsZXNvcnQgcmVzb3VyY2VzLgpAQCAtMTA5OSw2ICsxMTA3LDcgQEAgRXhlY0VuZEluY3Jl bWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnRTdGF0ZSAqbm9kZSkKIAkgKiBTaHV0IGRvd24gdGhl IHN1YnBsYW4uCiAJICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91 dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAogCVNPX3ByaW50ZigiRXhlY0VuZEluY3JlbWVu dGFsU29ydDogc29ydCBub2RlIHNodXRkb3duXG4iKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IDYxMmM2NzM4OTUuLjQ4MWQ0Nzk3NjAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtMzk3LDE1ICszOTcsNiBAQCBF eGVjUmVTY2FuSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiB2b2lkCiBF eGVjRW5kSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiB7Ci0JUmVsYXRp b24JaW5kZXhSZWxhdGlvbkRlc2M7Ci0JSW5kZXhTY2FuRGVzYyBpbmRleFNjYW5EZXNjOwotCi0J LyoKLQkgKiBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKLQkgKi8KLQlpbmRleFJl bGF0aW9uRGVzYyA9IG5vZGUtPmlvc3NfUmVsYXRpb25EZXNjOwotCWluZGV4U2NhbkRlc2MgPSBu b2RlLT5pb3NzX1NjYW5EZXNjOwotCiAJLyogUmVsZWFzZSBWTSBidWZmZXIgcGluLCBpZiBhbnku ICovCiAJaWYgKG5vZGUtPmlvc3NfVk1CdWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKIAl7CkBAIC00 MTMsMTMgKzQwNCwyMSBAQCBFeGVjRW5kSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUg Km5vZGUpCiAJCW5vZGUtPmlvc3NfVk1CdWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCX0KIAorCS8q IGNsb3NlIHRoZSBzY2FuIChuby1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQpICovCisJaWYgKG5v ZGUtPmlvc3NfU2NhbkRlc2MgIT0gTlVMTCkKKwl7CisJCWluZGV4X2VuZHNjYW4obm9kZS0+aW9z c19TY2FuRGVzYyk7CisJCW5vZGUtPmlvc3NfU2NhbkRlc2MgPSBOVUxMOworCX0KKwogCS8qCiAJ ICogY2xvc2UgdGhlIGluZGV4IHJlbGF0aW9uIChuby1vcCBpZiB3ZSBkaWRuJ3Qgb3BlbiBpdCkK IAkgKi8KLQlpZiAoaW5kZXhTY2FuRGVzYykKLQkJaW5kZXhfZW5kc2NhbihpbmRleFNjYW5EZXNj KTsKLQlpZiAoaW5kZXhSZWxhdGlvbkRlc2MpCi0JCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb25E ZXNjLCBOb0xvY2spOworCWlmIChub2RlLT5pb3NzX1JlbGF0aW9uRGVzYyAhPSBOVUxMKQorCXsK KwkJaW5kZXhfY2xvc2Uobm9kZS0+aW9zc19SZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJCW5vZGUt Pmlvc3NfUmVsYXRpb25EZXNjID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCA4MDAwZmVmZjRjLi5hODE3MmQ4YjgyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC03ODQsMjIgKzc4NCwyMSBAQCBFeGVj SW5kZXhBZHZhbmNlQXJyYXlLZXlzKEluZGV4QXJyYXlLZXlJbmZvICphcnJheUtleXMsIGludCBu dW1BcnJheUtleXMpCiB2b2lkCiBFeGVjRW5kSW5kZXhTY2FuKEluZGV4U2NhblN0YXRlICpub2Rl KQogewotCVJlbGF0aW9uCWluZGV4UmVsYXRpb25EZXNjOwotCUluZGV4U2NhbkRlc2MgaW5kZXhT Y2FuRGVzYzsKLQotCS8qCi0JICogZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0J ICovCi0JaW5kZXhSZWxhdGlvbkRlc2MgPSBub2RlLT5pc3NfUmVsYXRpb25EZXNjOwotCWluZGV4 U2NhbkRlc2MgPSBub2RlLT5pc3NfU2NhbkRlc2M7CisJLyogY2xvc2UgdGhlIHNjYW4gKG5vLW9w IGlmIHdlIGRpZG4ndCBzdGFydCBpdCkgKi8KKwlpZiAobm9kZS0+aXNzX1NjYW5EZXNjICE9IE5V TEwpCisJeworCQlpbmRleF9lbmRzY2FuKG5vZGUtPmlzc19TY2FuRGVzYyk7CisJCW5vZGUtPmlz c19TY2FuRGVzYyA9IE5VTEw7CisJfQogCiAJLyoKIAkgKiBjbG9zZSB0aGUgaW5kZXggcmVsYXRp b24gKG5vLW9wIGlmIHdlIGRpZG4ndCBvcGVuIGl0KQogCSAqLwotCWlmIChpbmRleFNjYW5EZXNj KQotCQlpbmRleF9lbmRzY2FuKGluZGV4U2NhbkRlc2MpOwotCWlmIChpbmRleFJlbGF0aW9uRGVz YykKLQkJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJaWYgKG5vZGUt Pmlzc19SZWxhdGlvbkRlc2MgIT0gTlVMTCkKKwl7CisJCWluZGV4X2Nsb3NlKG5vZGUtPmlzc19S ZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJCW5vZGUtPmlzc19SZWxhdGlvbkRlc2MgPSBOVUxMOwor CX0KIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUxpbWl0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCBlNmYxZmIx NTYyLi5lYjdiNmU1MmJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGlt aXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNTM0LDYgKzUz NCw3IEBAIHZvaWQKIEV4ZWNFbmRMaW1pdChMaW1pdFN0YXRlICpub2RlKQogewogCUV4ZWNFbmRO b2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7 CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwppbmRleCA0MTc1NGRkZmVhLi4w ZDM0ODkxOTViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3Mu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwpAQCAtMzg3LDYgKzM4 Nyw3IEBAIEV4ZWNFbmRMb2NrUm93cyhMb2NrUm93c1N0YXRlICpub2RlKQogCS8qIFdlIG1heSBo YXZlIHNodXQgZG93biBFUFEgYWxyZWFkeSwgYnV0IG5vIGhhcm0gaW4gYW5vdGhlciBjYWxsICov CiAJRXZhbFBsYW5RdWFsRW5kKCZub2RlLT5scl9lcHFzdGF0ZSk7CiAJRXhlY0VuZE5vZGUob3V0 ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCmluZGV4IDIyZTE3ODdmYmQuLjg4M2UzZjM5 MzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCkBAIC0yNDMsMTMgKzI0MywxNiBA QCBFeGVjRW5kTWF0ZXJpYWwoTWF0ZXJpYWxTdGF0ZSAqbm9kZSkKIAkgKiBSZWxlYXNlIHR1cGxl c3RvcmUgcmVzb3VyY2VzCiAJICovCiAJaWYgKG5vZGUtPnR1cGxlc3RvcmVzdGF0ZSAhPSBOVUxM KQorCXsKIAkJdHVwbGVzdG9yZV9lbmQobm9kZS0+dHVwbGVzdG9yZXN0YXRlKTsKLQlub2RlLT50 dXBsZXN0b3Jlc3RhdGUgPSBOVUxMOworCQlub2RlLT50dXBsZXN0b3Jlc3RhdGUgPSBOVUxMOwor CX0KIAogCS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCiAJRXhlY0VuZE5vZGUo b3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0K IAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9p emUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKaW5kZXggZGY4ZTNmZmYw OC4uNjkwZGVlMWRhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9p emUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCkBAIC0xMTI4LDEy ICsxMTI4LDE3IEBAIEV4ZWNFbmRNZW1vaXplKE1lbW9pemVTdGF0ZSAqbm9kZSkKIAl9CiAKIAkv KiBSZW1vdmUgdGhlIGNhY2hlIGNvbnRleHQgKi8KLQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUt PnRhYmxlQ29udGV4dCk7CisJaWYgKG5vZGUtPnRhYmxlQ29udGV4dCAhPSBOVUxMKQorCXsKKwkJ TWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRleHQpOworCQlub2RlLT50YWJsZUNv bnRleHQgPSBOVUxMOworCX0KIAogCS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICov CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5v ZGUpID0gTlVMTDsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQu YwppbmRleCBlMWI5Yjk4NGE3Li4zMjM2NDQ0Y2YxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVyZ2VBcHBlbmQuYwpAQCAtMzMzLDcgKzMzMywxMCBAQCBFeGVjRW5kTWVyZ2VBcHBlbmQoTWVy Z2VBcHBlbmRTdGF0ZSAqbm9kZSkKIAkgKiBzaHV0IGRvd24gZWFjaCBvZiB0aGUgc3Vic2NhbnMK IAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCisJewogCQlFeGVjRW5kTm9kZSht ZXJnZXBsYW5zW2ldKTsKKwkJbWVyZ2VwbGFuc1tpXSA9IE5VTEw7CisJfQogfQogCiB2b2lkCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKaW5kZXggMjljNTRmY2Q3NS4uOTI2ZTYzMWQ4 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwpAQCAtMTY0Nyw3ICsxNjQ3LDkg QEAgRXhlY0VuZE1lcmdlSm9pbihNZXJnZUpvaW5TdGF0ZSAqbm9kZSkKIAkgKiBzaHV0IGRvd24g dGhlIHN1YnBsYW5zCiAJICovCiAJRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkpOwor CWlubmVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0 ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogCiAJTUoxX3ByaW50Zigi RXhlY0VuZE1lcmdlSm9pbjogJXNcbiIsCiAJCQkgICAibm9kZSBwcm9jZXNzaW5nIGVuZGVkIik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDhiZjRjODBkNGEuLjll NTZmOWMzNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC00NzI0 LDcgKzQ3MjQsOSBAQCBFeGVjRW5kTW9kaWZ5VGFibGUoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSkK IAkJZm9yIChqID0gMDsgaiA8IHJlc3VsdFJlbEluZm8tPnJpX051bVNsb3RzSW5pdGlhbGl6ZWQ7 IGorKykKIAkJewogCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChyZXN1bHRSZWxJbmZv LT5yaV9TbG90c1tqXSk7CisJCQlyZXN1bHRSZWxJbmZvLT5yaV9TbG90c1tqXSA9IE5VTEw7CiAJ CQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHJlc3VsdFJlbEluZm8tPnJpX1BsYW5TbG90 c1tqXSk7CisJCQlyZXN1bHRSZWxJbmZvLT5yaV9QbGFuU2xvdHNbal0gPSBOVUxMOwogCQl9CiAJ fQogCkBAIC00NzMyLDEyICs0NzM0LDE2IEBAIEV4ZWNFbmRNb2RpZnlUYWJsZShNb2RpZnlUYWJs ZVN0YXRlICpub2RlKQogCSAqIENsb3NlIGFsbCB0aGUgcGFydGl0aW9uZWQgdGFibGVzLCBsZWFm IHBhcnRpdGlvbnMsIGFuZCB0aGVpciBpbmRpY2VzCiAJICogYW5kIHJlbGVhc2UgdGhlIHNsb3Qg dXNlZCBmb3IgdHVwbGUgcm91dGluZywgaWYgc2V0LgogCSAqLwotCWlmIChub2RlLT5tdF9wYXJ0 aXRpb25fdHVwbGVfcm91dGluZykKKwlpZiAobm9kZS0+bXRfcGFydGl0aW9uX3R1cGxlX3JvdXRp bmcgIT0gTlVMTCkKIAl7CiAJCUV4ZWNDbGVhbnVwVHVwbGVSb3V0aW5nKG5vZGUsIG5vZGUtPm10 X3BhcnRpdGlvbl90dXBsZV9yb3V0aW5nKTsKKwkJbm9kZS0+bXRfcGFydGl0aW9uX3R1cGxlX3Jv dXRpbmcgPSBOVUxMOwogCi0JCWlmIChub2RlLT5tdF9yb290X3R1cGxlX3Nsb3QpCisJCWlmIChu b2RlLT5tdF9yb290X3R1cGxlX3Nsb3QgIT0gTlVMTCkKKwkJewogCQkJRXhlY0Ryb3BTaW5nbGVU dXBsZVRhYmxlU2xvdChub2RlLT5tdF9yb290X3R1cGxlX3Nsb3QpOworCQkJbm9kZS0+bXRfcm9v dF90dXBsZV9zbG90ID0gTlVMTDsKKwkJfQogCX0KIAogCS8qCkBAIC00NzQ5LDYgKzQ3NTUsNyBA QCBFeGVjRW5kTW9kaWZ5VGFibGUoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSkKIAkgKiBzaHV0IGRv d24gc3VicGxhbgogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlv dXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU5lc3Rsb29wLmMKaW5kZXggN2Y0YmY2YzRkYi4uMDFmM2Q1NmEzYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU5lc3Rsb29wLmMKQEAgLTM2Nyw3ICszNjcsOSBAQCBFeGVjRW5kTmVzdExvb3AoTmVz dExvb3BTdGF0ZSAqbm9kZSkKIAkgKiBjbG9zZSBkb3duIHN1YnBsYW5zCiAJICovCiAJRXhlY0Vu ZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVM TDsKIAlFeGVjRW5kTm9kZShpbm5lclBsYW5TdGF0ZShub2RlKSk7CisJaW5uZXJQbGFuU3RhdGUo bm9kZSkgPSBOVUxMOwogCiAJTkwxX3ByaW50ZigiRXhlY0VuZE5lc3RMb29wOiAlc1xuIiwKIAkJ CSAgICJub2RlIHByb2Nlc3NpbmcgZW5kZWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVj dFNldC5jCmluZGV4IGU0ODM3MzAwMTUuLmNhOWE1ZTJlZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVByb2plY3RTZXQuYwpAQCAtMzMxLDYgKzMzMSw3IEBAIEV4ZWNFbmRQcm9qZWN0U2V0KFBy b2plY3RTZXRTdGF0ZSAqbm9kZSkKIAkgKiBzaHV0IGRvd24gc3VicGxhbnMKIAkgKi8KIAlFeGVj RW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBO VUxMOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVj dXJzaXZldW5pb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5j CmluZGV4IGM3ZjhhMTlmYTQuLjc2ODAxNDJjN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVSZWN1cnNpdmV1bmlvbi5jCkBAIC0yNzIsMjAgKzI3MiwzNiBAQCB2b2lkCiBFeGVjRW5kUmVj dXJzaXZlVW5pb24oUmVjdXJzaXZlVW5pb25TdGF0ZSAqbm9kZSkKIHsKIAkvKiBSZWxlYXNlIHR1 cGxlc3RvcmVzICovCi0JdHVwbGVzdG9yZV9lbmQobm9kZS0+d29ya2luZ190YWJsZSk7Ci0JdHVw bGVzdG9yZV9lbmQobm9kZS0+aW50ZXJtZWRpYXRlX3RhYmxlKTsKKwlpZiAobm9kZS0+d29ya2lu Z190YWJsZSAhPSBOVUxMKQorCXsKKwkJdHVwbGVzdG9yZV9lbmQobm9kZS0+d29ya2luZ190YWJs ZSk7CisJCW5vZGUtPndvcmtpbmdfdGFibGUgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+aW50ZXJt ZWRpYXRlX3RhYmxlICE9IE5VTEwpCisJeworCQl0dXBsZXN0b3JlX2VuZChub2RlLT5pbnRlcm1l ZGlhdGVfdGFibGUpOworCQlub2RlLT5pbnRlcm1lZGlhdGVfdGFibGUgPSBOVUxMOworCX0KIAog CS8qIGZyZWUgc3Vic2lkaWFyeSBzdHVmZiBpbmNsdWRpbmcgaGFzaHRhYmxlICovCi0JaWYgKG5v ZGUtPnRlbXBDb250ZXh0KQorCWlmIChub2RlLT50ZW1wQ29udGV4dCAhPSBOVUxMKQorCXsKIAkJ TWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50ZW1wQ29udGV4dCk7Ci0JaWYgKG5vZGUtPnRhYmxl Q29udGV4dCkKKwkJbm9kZS0+dGVtcENvbnRleHQgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+dGFi bGVDb250ZXh0ICE9IE5VTEwpCisJewogCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRhYmxl Q29udGV4dCk7CisJCW5vZGUtPnRhYmxlQ29udGV4dCA9IE5VTEw7CisJfQogCiAJLyoKIAkgKiBj bG9zZSBkb3duIHN1YnBsYW5zCiAJICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9k ZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAlFeGVjRW5kTm9kZShpbm5lclBs YW5TdGF0ZShub2RlKSk7CisJaW5uZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQogCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKaW5kZXggMzQ4MzYxZTdmNC4uZTNjZmM5 Yjc3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwpAQCAtMjQzLDYgKzI0Myw3IEBAIEV4 ZWNFbmRSZXN1bHQoUmVzdWx0U3RhdGUgKm5vZGUpCiAJICogc2h1dCBkb3duIHN1YnBsYW5zCiAJ ICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRl KG5vZGUpID0gTlVMTDsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNhbXBsZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2Fu LmMKaW5kZXggNzE0YjA3NmU2NC4uNmFiOTEwMDFiYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2FtcGxlc2Nhbi5jCkBAIC0xODEsMTQgKzE4MSwxNyBAQCBFeGVjRW5kU2FtcGxlU2NhbihTYW1w bGVTY2FuU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBUZWxsIHNhbXBsaW5nIGZ1bmN0aW9uIHRoYXQg d2UgZmluaXNoZWQgdGhlIHNjYW4uCiAJICovCi0JaWYgKG5vZGUtPnRzbXJvdXRpbmUtPkVuZFNh bXBsZVNjYW4pCisJaWYgKG5vZGUtPnRzbXJvdXRpbmUgIT0gTlVMTCAmJiBub2RlLT50c21yb3V0 aW5lLT5FbmRTYW1wbGVTY2FuKQogCQlub2RlLT50c21yb3V0aW5lLT5FbmRTYW1wbGVTY2FuKG5v ZGUpOwogCiAJLyoKLQkgKiBjbG9zZSBoZWFwIHNjYW4KKwkgKiBjbG9zZSBoZWFwIHNjYW4gKG5v LW9wIGlmIHdlIGRpZG4ndCBzdGFydCBpdCkKIAkgKi8KIAlpZiAobm9kZS0+c3Muc3NfY3VycmVu dFNjYW5EZXNjKQorCXsKIAkJdGFibGVfZW5kc2Nhbihub2RlLT5zcy5zc19jdXJyZW50U2NhbkRl c2MpOworCQlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOworCX0KIH0KIAogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKaW5kZXggN2NiMTJhMTFjMi4uYjA1 Mjc3NWU1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0xODMsMTggKzE4Mywx NCBAQCBFeGVjSW5pdFNlcVNjYW4oU2VxU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiB2b2lkCiBFeGVjRW5kU2VxU2NhbihTZXFTY2FuU3RhdGUgKm5vZGUpCiB7Ci0JVGFi bGVTY2FuRGVzYyBzY2FuRGVzYzsKLQotCS8qCi0JICogZ2V0IGluZm9ybWF0aW9uIGZyb20gbm9k ZQotCSAqLwotCXNjYW5EZXNjID0gbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjOwotCiAJLyoK LQkgKiBjbG9zZSBoZWFwIHNjYW4KKwkgKiBjbG9zZSBoZWFwIHNjYW4gKG5vLW9wIGlmIHdlIGRp ZG4ndCBzdGFydCBpdCkKIAkgKi8KLQlpZiAoc2NhbkRlc2MgIT0gTlVMTCkKLQkJdGFibGVfZW5k c2NhbihzY2FuRGVzYyk7CisJaWYgKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyAhPSBOVUxM KQorCXsKKwkJdGFibGVfZW5kc2Nhbihub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MpOworCQlu b2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOworCX0KIH0KIAogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU2V0T3AuYwppbmRleCBhOGFjNjhiNDgyLi5mZTM0YjIxMzRmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU2V0T3AuYwpAQCAtNTgzLDEwICs1ODMsMTQgQEAgdm9pZAogRXhlY0Vu ZFNldE9wKFNldE9wU3RhdGUgKm5vZGUpCiB7CiAJLyogZnJlZSBzdWJzaWRpYXJ5IHN0dWZmIGlu Y2x1ZGluZyBoYXNodGFibGUgKi8KLQlpZiAobm9kZS0+dGFibGVDb250ZXh0KQorCWlmIChub2Rl LT50YWJsZUNvbnRleHQgIT0gTlVMTCkKKwl7CiAJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+ dGFibGVDb250ZXh0KTsKKwkJbm9kZS0+dGFibGVDb250ZXh0ID0gTlVMTDsKKwl9CiAKIAlFeGVj RW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBO VUxMOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCmluZGV4IDNmYzkyNWQ3YjQuLmFmODUy NDY0ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwpAQCAtMzA3LDEzICszMDcsMTYgQEAgRXhl Y0VuZFNvcnQoU29ydFN0YXRlICpub2RlKQogCSAqIFJlbGVhc2UgdHVwbGVzb3J0IHJlc291cmNl cwogCSAqLwogCWlmIChub2RlLT50dXBsZXNvcnRzdGF0ZSAhPSBOVUxMKQorCXsKIAkJdHVwbGVz b3J0X2VuZCgoVHVwbGVzb3J0c3RhdGUgKikgbm9kZS0+dHVwbGVzb3J0c3RhdGUpOwotCW5vZGUt PnR1cGxlc29ydHN0YXRlID0gTlVMTDsKKwkJbm9kZS0+dHVwbGVzb3J0c3RhdGUgPSBOVUxMOwor CX0KIAogCS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCiAJRXhlY0VuZE5vZGUo b3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAog CVNPMV9wcmludGYoIkV4ZWNFbmRTb3J0OiAlc1xuIiwKIAkJCSAgICJzb3J0IG5vZGUgc2h1dGRv d24iKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwppbmRleCA3ODIwOTdl YWYyLi4wYjI2MTIxODNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3Vi cXVlcnlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5j CkBAIC0xNzEsNiArMTcxLDcgQEAgRXhlY0VuZFN1YnF1ZXJ5U2NhbihTdWJxdWVyeVNjYW5TdGF0 ZSAqbm9kZSkKIAkgKiBjbG9zZSBkb3duIHN1YnF1ZXJ5CiAJICovCiAJRXhlY0VuZE5vZGUobm9k ZS0+c3VicGxhbik7CisJbm9kZS0+c3VicGxhbiA9IE5VTEw7CiB9CiAKIC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCmluZGV4IGY0ODMyMjFiYjguLjc3 OGQyNWQ1MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNz Y2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwpAQCAt MjIzLDggKzIyMywxMCBAQCBFeGVjRW5kVGFibGVGdW5jU2NhbihUYWJsZUZ1bmNTY2FuU3RhdGUg Km5vZGUpCiAJICogUmVsZWFzZSB0dXBsZXN0b3JlIHJlc291cmNlcwogCSAqLwogCWlmIChub2Rl LT50dXBzdG9yZSAhPSBOVUxMKQorCXsKIAkJdHVwbGVzdG9yZV9lbmQobm9kZS0+dHVwc3RvcmUp OwotCW5vZGUtPnR1cHN0b3JlID0gTlVMTDsKKwkJbm9kZS0+dHVwc3RvcmUgPSBOVUxMOworCX0K IH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRp ZHJhbmdlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCmlu ZGV4IDlhYTc2ODNkN2UuLjcwMmVlODg0ZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVUaWRyYW5nZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlk cmFuZ2VzY2FuLmMKQEAgLTMyNiwxMCArMzI2LDE0IEBAIEV4ZWNSZVNjYW5UaWRSYW5nZVNjYW4o VGlkUmFuZ2VTY2FuU3RhdGUgKm5vZGUpCiB2b2lkCiBFeGVjRW5kVGlkUmFuZ2VTY2FuKFRpZFJh bmdlU2NhblN0YXRlICpub2RlKQogewotCVRhYmxlU2NhbkRlc2Mgc2NhbiA9IG5vZGUtPnNzLnNz X2N1cnJlbnRTY2FuRGVzYzsKLQotCWlmIChzY2FuICE9IE5VTEwpCi0JCXRhYmxlX2VuZHNjYW4o c2Nhbik7CisJLyoKKwkgKiBjbG9zZSBoZWFwIHNjYW4gKG5vLW9wIGlmIHdlIGRpZG4ndCBzdGFy dCBpdCkKKwkgKi8KKwlpZiAobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjICE9IE5VTEwpCisJ eworCQl0YWJsZV9lbmRzY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyk7CisJCW5vZGUt PnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CisJfQogfQogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwppbmRleCA4NjRhOTAxM2I2Li5mMzc1OTUxNjk5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKQEAgLTQ2OSw4ICs0NjksMTQgQEAgRXhlY1JlU2Nh blRpZFNjYW4oVGlkU2NhblN0YXRlICpub2RlKQogdm9pZAogRXhlY0VuZFRpZFNjYW4oVGlkU2Nh blN0YXRlICpub2RlKQogewotCWlmIChub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MpCisJLyoK KwkgKiBjbG9zZSBoZWFwIHNjYW4gKG5vLW9wIGlmIHdlIGRpZG4ndCBzdGFydCBpdCkKKwkgKi8K KwlpZiAobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjICE9IE5VTEwpCisJewogCQl0YWJsZV9l bmRzY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyk7CisJCW5vZGUtPnNzLnNzX2N1cnJl bnRTY2FuRGVzYyA9IE5VTEw7CisJfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VW5pcXVlLmMKaW5kZXggYTEyNTkyM2U5My4uYjgyZDBlOWFkNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVVbmlxdWUuYwpAQCAtMTY4LDYgKzE2OCw3IEBAIHZvaWQKIEV4ZWNFbmRVbmlxdWUoVW5pcXVl U3RhdGUgKm5vZGUpCiB7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91 dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2lu ZG93QWdnLmMKaW5kZXggMzIyMWZhMTUyMi4uNTYxZDdlNzMxZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVXaW5kb3dBZ2cuYwpAQCAtMTM1MSwxMSArMTM1MSwxNCBAQCByZWxlYXNlX3BhcnRpdGlv bihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJICogYW55IGFnZ3JlZ2F0ZSB0ZW1wIGRhdGEp LiAgV2UgZG9uJ3QgcmVseSBvbiByZXRhaWwgcGZyZWUgYmVjYXVzZSBzb21lCiAJICogYWdncmVn YXRlcyBtaWdodCBoYXZlIGFsbG9jYXRlZCBkYXRhIHdlIGRvbid0IGhhdmUgZGlyZWN0IHBvaW50 ZXJzIHRvLgogCSAqLwotCU1lbW9yeUNvbnRleHRSZXNldCh3aW5zdGF0ZS0+cGFydGNvbnRleHQp OwotCU1lbW9yeUNvbnRleHRSZXNldCh3aW5zdGF0ZS0+YWdnY29udGV4dCk7CisJaWYgKHdpbnN0 YXRlLT5wYXJ0Y29udGV4dCAhPSBOVUxMKQorCQlNZW1vcnlDb250ZXh0UmVzZXQod2luc3RhdGUt PnBhcnRjb250ZXh0KTsKKwlpZiAod2luc3RhdGUtPmFnZ2NvbnRleHQgIT0gTlVMTCkKKwkJTWVt b3J5Q29udGV4dFJlc2V0KHdpbnN0YXRlLT5hZ2djb250ZXh0KTsKIAlmb3IgKGkgPSAwOyBpIDwg d2luc3RhdGUtPm51bWFnZ3M7IGkrKykKIAl7Ci0JCWlmICh3aW5zdGF0ZS0+cGVyYWdnW2ldLmFn Z2NvbnRleHQgIT0gd2luc3RhdGUtPmFnZ2NvbnRleHQpCisJCWlmICh3aW5zdGF0ZS0+cGVyYWdn W2ldLmFnZ2NvbnRleHQgIT0gTlVMTCAmJgorCQkJd2luc3RhdGUtPnBlcmFnZ1tpXS5hZ2djb250 ZXh0ICE9IHdpbnN0YXRlLT5hZ2djb250ZXh0KQogCQkJTWVtb3J5Q29udGV4dFJlc2V0KHdpbnN0 YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CiAJfQogCkBAIC0yNjgxLDI0ICsyNjg0LDQwIEBA IEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiB2b2lkCiBFeGVjRW5kV2luZG93QWdnKFdpbmRvd0FnZ1N0YXRlICpub2RlKQogewot CVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKIAlpbnQJCQlpOwogCiAJcmVsZWFzZV9wYXJ0aXRpb24o bm9kZSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+bnVtYWdnczsgaSsrKQogCXsKLQkJaWYg KG5vZGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IG5vZGUtPmFnZ2NvbnRleHQpCisJCWlmIChu b2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCAhPSBOVUxMICYmCisJCQlub2RlLT5wZXJhZ2dbaV0u YWdnY29udGV4dCAhPSBub2RlLT5hZ2djb250ZXh0KQogCQkJTWVtb3J5Q29udGV4dERlbGV0ZShu b2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CiAJfQotCU1lbW9yeUNvbnRleHREZWxldGUobm9k ZS0+cGFydGNvbnRleHQpOwotCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+YWdnY29udGV4dCk7 CisJaWYgKG5vZGUtPnBhcnRjb250ZXh0ICE9IE5VTEwpCisJeworCQlNZW1vcnlDb250ZXh0RGVs ZXRlKG5vZGUtPnBhcnRjb250ZXh0KTsKKwkJbm9kZS0+cGFydGNvbnRleHQgPSBOVUxMOworCX0K KwlpZiAobm9kZS0+YWdnY29udGV4dCAhPSBOVUxMKQorCXsKKwkJTWVtb3J5Q29udGV4dERlbGV0 ZShub2RlLT5hZ2djb250ZXh0KTsKKwkJbm9kZS0+YWdnY29udGV4dCA9IE5VTEw7CisJfQogCi0J cGZyZWUobm9kZS0+cGVyZnVuYyk7Ci0JcGZyZWUobm9kZS0+cGVyYWdnKTsKKwlpZiAobm9kZS0+ cGVyZnVuYyAhPSBOVUxMKQorCXsKKwkJcGZyZWUobm9kZS0+cGVyZnVuYyk7CisJCW5vZGUtPnBl cmZ1bmMgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+cGVyYWdnICE9IE5VTEwpCisJeworCQlwZnJl ZShub2RlLT5wZXJhZ2cpOworCQlub2RlLT5wZXJhZ2cgPSBOVUxMOworCX0KIAotCW91dGVyUGxh biA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CisJRXhl Y0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0g TlVMTDsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0KLS0gCjIuNDMuMAoK --00000000000008ca1c0620d2895c--