Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vyoMz-000RTr-2r for pgsql-hackers@arkaria.postgresql.org; Sat, 07 Mar 2026 09:54:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vyoMy-008Nh3-1C for pgsql-hackers@arkaria.postgresql.org; Sat, 07 Mar 2026 09:54:48 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vyoMx-008Ngo-1j for pgsql-hackers@lists.postgresql.org; Sat, 07 Mar 2026 09:54:48 +0000 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vyoMv-00000000yx3-1Rq3 for pgsql-hackers@postgresql.org; Sat, 07 Mar 2026 09:54:46 +0000 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2aaf43014d0so74923125ad.2 for ; Sat, 07 Mar 2026 01:54:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772877284; cv=none; d=google.com; s=arc-20240605; b=ePnwYhWtsSgajd2BLTGzKXvIgdn6WV1lp6sRFzHkFhBwXZTGtZfP0TwE3+hpOQWJ12 f+bbgYBRkch9wlUqsnQFcRUcuVM6MbkKCkM1AZNAWdlZ8x0Uhp9Y51CXZAO0CoL+Lj0x oyrjF/hL2ilQBjYE0rwQAyJMQmtpYZVMIzAyZ3Iol0+oGZMbWO3Z0+LgbdcuHW2c4P5z fp1fSqgHtZ5cmEcpDC4co2SXTZTHfth0uF94tn3itpeoTV+yAoIvhoi3nR5GfUtRbUzH K2o2pX+4r1dn6v3qIBn08c6LoSmb/v6jqhXROaLkQdmsVudPNt7W1HZ/xmDUUhRWcr6I gTHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=2Fe3V+fhDSakL7Wn7cYX7LlbOtrn7COiB66+UaWKvic=; fh=2kNUCdO7CR2TfVXUZlh7bPVjSdOFHihuPbcpSuUeMpw=; b=AYN1RX0TcnyOfKEQeHeg6p52Pm9unVdsNiqjLG9/wbDqrNoXuRMEC58fwrbmvbNIIW EwWMwwXTu24yuwrdXrr5tmVCmC3czjMYw4RdLVhjSTgs8cCQq2HP+bx4V11eZvzbR4Fy aPgbsprRwQqUoHAY+qLDt78MRrCYApMU5eq3xe/wNAb2B/7Btg2hxOBFj10wk8nFyVKJ clN4+5fRGTV1KlREDBfWDviWLL0nAID1KYgsfVlVHfT2NTeYQRifjcra1H0L97USLDrU eKqWD+jTdcZtPfTpHhnLE/ROdel5rCRp2fGCQ2UMN+Dd0kyMFSsNUR7E37xq5eLgNN6Z PM9A==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772877284; x=1773482084; 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=2Fe3V+fhDSakL7Wn7cYX7LlbOtrn7COiB66+UaWKvic=; b=WIfcTLedyeig2EHXePi/ZlxyUeA1S9IO8T4q8Nu/BvzL2EJdTEIMWn/LXfxQDbVna4 Q2uXgaAyZdgSbm1tEHOoPeCnhtjgZ+oronw9b1Rk4rw7/kyXlxMhMMhAL4ew6mFULv1Y 5Pmk93RXu4pnP9cE+scUyBz5t2ezfCdbkwNHiXydUns4qvjq9gvXRqv7z7gqPId65nZM tV6u43bFGMAj6P1e5FVn6HADXm9XEISJ+ZK5Y/AuLP8bR9U3SkGbyYKsAc6j4K9MCmme OexSHN8r8u3E4hellULd9HqgpcKhJmtwdCYbr/NakSKZZIirUQczUyJNuyqVlGdRM6Gf vUWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772877284; x=1773482084; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=2Fe3V+fhDSakL7Wn7cYX7LlbOtrn7COiB66+UaWKvic=; b=IYqFY/Md3Q7Z76lX60+yuoi0T00bHhz4RUP5/UsbzgXdUIbXvUptqqe5YNfz+qFjUV 5S8cwpyo2EHr8jxMtxjMQRummAUFxbEkUFjWGeT3D8YiFynD+SgN6aHEnhKJW+fJ1ofd mQfQq9/7/fZKHs3ehjFJAqYEI4B1sTys2iB5S3AhtHhmC/u08PKkASsGgZDQ1Z6/NY5e 2clTFmn7gdhJcaNei1w806qM66Ts1O4QwAuOHUvh3O4J1XP/bxMXSJx97u66BQIwnp/h udIO8elXDvj5ImyW5LR4Kt9R7NboPd3wB7e6JM9c+Qi2fWeKfaWM93UdIdSsG+tU653s OEDg== X-Forwarded-Encrypted: i=1; AJvYcCXK0mvrXS+WpF5X8oOzB46845FTqF3vcyHq6AOX3JUYRT8Ikxkaf0Ij5Ob4qdCXMnozjSX0MC4NHrWvk8dZ@postgresql.org X-Gm-Message-State: AOJu0Yx8BOBHCwhvTBJx5OAmTwrrvaiF+WO9VIqb4QpONWrBchVUWKkY Te59ZP02L5Dfzvf6zZZzl+j7iEVK52ow0wFsmUMTN3lEspn3hQCeSyPLvCclcuD6tXh3/LfrK0C OE6oc0F6JW691nMMQ8yesPG8QMMX0aGs= X-Gm-Gg: ATEYQzwcdSepx67xD3mfKd7678vs+i3jADZTazsPx8ayLB6rGIM5VVOkMvJHCu9+KmV NJBgOcsMX5aWYNOQpwWhFWJdFwZmMWPJwn6xarfNsTyvctJBFOt6kHrxvabGr16Zcq+e2YiCnhT H6ZZLALGdI1faRd959VkhxVsWekPt2bWuwGk7jmJxYuQuIDE3AGyLsSzQzahBW9EmsZc6rL+tP0 fdK6fmmYglf6BoQiX4LN0gqq+6rCtdK1+HB7En25dWrlIwgEmag7E0sTvZkrFtIBMUKEJTi0BUl ZuYMACgu6BG3CT1wpmg= X-Received: by 2002:a17:902:e845:b0:2ad:c1e1:c286 with SMTP id d9443c01a7336-2ae823ac4camr51092905ad.24.1772877284350; Sat, 07 Mar 2026 01:54:44 -0800 (PST) MIME-Version: 1.0 References: <54c35fb9-da3a-4754-ab8c-46ed0b612465@vondra.me> <684c70d7-180e-461d-9377-600c2db581ba@vondra.me> <605328.1747710381@sss.pgh.pa.us> <691261.1747755511@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Sat, 7 Mar 2026 18:54:27 +0900 X-Gm-Features: AaiRm53Ojl8XMsUA9F8MgpgJdK9ChfpbIoy7KeMV976pqMK3Vn0xT6Hlz0SyJVo Message-ID: Subject: Re: generic plans and "initial" pruning To: Chao Li Cc: Tom Lane , Tender Wang , Alexander Lakhin , Tomas Vondra , Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown Content-Type: multipart/mixed; boundary="000000000000c3b932064c6c289e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c3b932064c6c289e Content-Type: text/plain; charset="UTF-8" Hi, Attached is v6 of the patch series. I've been working toward committing this, so I wanted to lay out the ExecutorPrep() design and the key trade-offs before doing so. When a cached generic plan references a partitioned table, GetCachedPlan() locks all partitions upfront via AcquireExecutorLocks(), even those that initial pruning will eliminate. But initial partition pruning only runs later during ExecutorStart(). Moving pruning earlier requires some executor setup (range table, permissions, pruning state), and ExecutorPrep() is the vehicle for that. Unlike the approach reverted in last May, this keeps the CachedPlan itself unchanged -- all per-execution state flows through a separate CachedPlanPrepData that the caller provides. The approach also keeps GetCachedPlan()'s interface backward-compatible: the new CachedPlanPrepData argument is optional. If a caller passes NULL, all partitions are locked as before and nothing changes. This means existing callers and any new code that calls GetCachedPlan() without caring about pruning-aware locking just works. The risk is on the other side: if a caller does pass a CachedPlanPrepData, GetCachedPlan() will lock only the surviving partitions and populate prep_estates with the EStates that ExecutorPrep() created. The caller then must make those EStates available to ExecutorStart() -- via QueryDesc->estate, portal->prep_estates, or the equivalent path for SPI and SQL functions. If it fails to do so, ExecutorStart() will call ExecutorPrep() again, which may compute different pruning results than the original call, potentially expecting locks on relations that were never acquired. The executor would then operate on relations it doesn't hold locks on. So the contract is: if you opt in to pruning-aware locking by passing CachedPlanPrepData, you must complete the pipeline by delivering the prep EStates to the executor. In the current patch, all the call sites that pass a CachedPlanPrepData (portals, SPI, EXECUTE, SQL functions, EXPLAIN) do thread the EStates through correctly, and I've tried to make the plumbing straightforward enough that it's hard to get wrong. But it is a new invariant that didn't exist before, and a caller that gets it wrong would fail silently rather than with an obvious error. To catch such violations, I've added a debug-only check in standard_ExecutorStart() that fires when no prep EState was provided. It iterates over the plan's rtable and verifies that every lockable relation is actually locked. It should always be true if AcquireExecutorLocks() locked everything, but would fail if pruning-aware locking happened upstream and the caller dropped the prep EState. The check is skipped in parallel workers, which acquire relation locks lazily in ExecGetRangeTableRelation(). + if (queryDesc->estate == NULL) + { +#ifdef USE_ASSERT_CHECKING + if (!IsParallelWorker()) + { + ListCell *lc; + + foreach(lc, queryDesc->plannedstmt->rtable) + { + RangeTblEntry *rte = lfirst_node(RangeTblEntry, lc); + + if (rte->rtekind == RTE_RELATION || + (rte->rtekind == RTE_SUBQUERY && rte->relid != InvalidOid)) + Assert(CheckRelationOidLockedByMe(rte->relid, + rte->rellockmode, + true)); + } + } +#endif + queryDesc->estate = ExecutorPrep(queryDesc->plannedstmt, + queryDesc->params, + CurrentResourceOwner, + true, + eflags); + } +#ifdef USE_ASSERT_CHECKING + else + { + /* + * A prep EState was provided, meaning pruning-aware locking + * should have locked at least the unpruned relations. + */ + if (!IsParallelWorker()) + { + int rtindex = -1; + + while ((rtindex = bms_next_member(queryDesc->estate->es_unpruned_relids, + rtindex)) >= 0) + { + RangeTblEntry *rte = exec_rt_fetch(rtindex, queryDesc->estate); + + Assert(rte->rtekind == RTE_RELATION || + (rte->rtekind == RTE_SUBQUERY && + rte->relid != InvalidOid)); + Assert(CheckRelationOidLockedByMe(rte->relid, + rte->rellockmode, true)); + } + } + } +#endif So the invariant is: if no prep EState was provided, every relation in the plan is locked; if one was provided, at least the unpruned relations are locked. Both are checked in assert builds. I think this covers the main concerns, but I may be missing something. If anyone sees a problem with this approach, I'd like to hear about it. -- Thanks, Amit Langote --000000000000c3b932064c6c289e Content-Type: application/octet-stream; name="v6-0004-Use-pruning-aware-locking-in-cached-plans.patch" Content-Disposition: attachment; filename="v6-0004-Use-pruning-aware-locking-in-cached-plans.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmg4yi2y2 RnJvbSA4MDA5NDliZjdhMzI3YTdiOGJmYzViOWZiY2RiZjBhYzM5MTA2MDU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjI6MzA6NTIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY2 IDQvNl0gVXNlIHBydW5pbmctYXdhcmUgbG9ja2luZyBpbiBjYWNoZWQgcGxhbnMKCkV4dGVuZCBH ZXRDYWNoZWRQbGFuKCkgdG8gcGVyZm9ybSBFeGVjdXRvclByZXAoKSBvbiBlYWNoIHBsYW5uZWQK c3RhdGVtZW50LCBjYXB0dXJpbmcgdW5wcnVuZWQgcmVsaWRzIGFuZCBpbml0aWFsIHBydW5pbmcg cmVzdWx0cy4KVXNlIHRoaXMgZGF0YSB0byBhY3F1aXJlIGV4ZWN1dGlvbiBsb2NrcyBvbmx5IG9u IHN1cnZpdmluZyBwYXJ0aXRpb25zLAphdm9pZGluZyB1bm5lY2Vzc2FyeSBsb2NraW5nIG9mIHBy dW5lZCB0YWJsZXMgZXZlbiB3aGVuIHVzaW5nIGNhY2hlZApwbGFucy4KCkludHJvZHVjZSBDYWNo ZWRQbGFuUHJlcERhdGEgdG8gY2FycnkgdGhlIEVTdGF0ZXMgY3JlYXRlZCBieQpFeGVjdXRvclBy ZXAoKSB0aHJvdWdoIHRoZSBwbGFuIGNhY2hpbmcgbGF5ZXIuIFRoZSBwcmVwX2VzdGF0ZXMKbGlz dCBpcyBpbmRleGVkIG9uZS10by1vbmUgd2l0aCBDYWNoZWRQbGFuLT5zdG10X2xpc3QgYW5kIGlz CnBvcHVsYXRlZCB3aGVuIEdldENhY2hlZFBsYW4oKSBwcmVwYXJlcyBhIHJldXNlZCBnZW5lcmlj IHBsYW4uCkFkanVzdCBjYWxsIHNpdGVzIGluIFNQSSwgZnVuY3Rpb25zLCBwb3J0YWxzLCBhbmQg RVhQTEFJTiB0bwpwcm9wYWdhdGUgdGhpcyBkYXRhLgoKUGFydGl0aW9uIHBydW5pbmcgZXhwcmVz c2lvbnMgbWF5IGNhbGwgUEwgZnVuY3Rpb25zIHRoYXQgcmVxdWlyZQphbiBhY3RpdmUgc25hcHNo b3QgKGUuZy4sIHZpYSBFbnN1cmVQb3J0YWxTbmFwc2hvdEV4aXN0cygpKS4KQWNxdWlyZUV4ZWN1 dG9yTG9ja3NVbnBydW5lZCgpIGVzdGFibGlzaGVzIG9uZSBiZWZvcmUgY2FsbGluZwpFeGVjdXRv clByZXAoKSBpZiBuZWVkZWQsIGVuc3VyaW5nIHRoZXNlIGV4cHJlc3Npb25zIGNhbiBleGVjdXRl CmNvcnJlY3RseSBkdXJpbmcgcGxhbiBjYWNoZSB2YWxpZGF0aW9uLgoKVG8gbWFpbnRhaW4gY29y cmVjdG5lc3Mgd2hlbiBhbGwgdGFyZ2V0IHBhcnRpdGlvbnMgYXJlIHBydW5lZCwgYWxzbwpyZWlu c3RhdGUgdGhlIGZpcnN0UmVzdWx0UmVsIGxvY2tpbmcgYmVoYXZpb3IgbG9zdCBpbiBjb21taXQK MjgzMTdkZTcyLiBUaGF0IGNvbW1pdCByZXF1aXJlZCB0aGUgZmlyc3QgTW9kaWZ5VGFibGUgdGFy Z2V0IHRvCnJlbWFpbiBpbml0aWFsaXplZCBmb3IgZXhlY3V0b3IgYXNzdW1wdGlvbnMgdG8gaG9s ZC4gV2Ugbm93CmV4cGxpY2l0bHkgdHJhY2sgdGhlc2UgcmVsaWRzIGluIFBsYW5uZXJHbG9iYWwg YW5kIFBsYW5uZWRTdG10IHNvIHRoZXkKYXJlIGxvY2tlZCBldmVuIGlmIHBydW5lZCwgcHJlc2Vy dmluZyB0aGF0IHJ1bGUgYWNyb3NzIGNhY2hlZCBwbGFuCnJldXNlLgoKQWRkIGEgcmVncmVzc2lv biB0ZXN0IHRoYXQgY2F1c2VzIGEgZ2VuZXJpYyBwbGFuIHRvIGJlY29tZSBpbnZhbGlkCndoaWxl IHBydW5pbmctYXdhcmUgc2V0dXAgaXMgcnVubmluZy4gVGhlIHBydW5pbmcgZXhwcmVzc2lvbiBj YWxscyBhCmZ1bmN0aW9uIHRoYXQgY2FuIHBlcmZvcm0gRERMIG9uIGEgcGFydGl0aW9uLCBtYWtp bmcgdGhlIHBsYW4gc3RhbGUKZHVyaW5nIHJldXNlLgoKVGhlIHRlc3QncyBwdXJwb3NlIGlzIHRv IGRyaXZlIGV4ZWN1dGlvbiB0aHJvdWdoIHRoZSBpbnZhbGlkYXRpb24KcGF0aCB0aGF0IGRpc2Nh cmRzIGFueSBFeGVjdXRvclByZXAgc3RhdGUgY3JlYXRlZCBiZWZvcmUgdGhlIHBsYW4gd2FzCmZv dW5kIGludmFsaWQsIHByb3ZpZGluZyBjb3ZlcmFnZSBmb3IgdGhhdCBjbGVhbnVwIGxvZ2ljLgot LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8ICAxOSAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8ICAgNSArLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAgICAgICAgIHwgIDI2ICstCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAgICAgfCAgIDEgKwogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgICAgICAgIHwgIDIwICsrCiBzcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8IDI5MiArKysrKysrKysr KysrKysrKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICAgICAgICB8 ICAgMyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICAgICAgICAgfCAg MTAgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDI5 ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQgfCAgNTAg KystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQgICAgICAgfCAgNjIg KysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbCAgICAgIHwgIDI0 ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wbGFuY2FjaGUuc3FsICAgICAgICAgICAgfCAgNTEg KysrCiAxNSBmaWxlcyBjaGFuZ2VkLCA1NzYgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDAwNWZiYjQ4YWE1Li5lOGNkNDcxMzFjZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMTU0LDYgKzE1NCw3IEBAIEV4ZWN1dGVRdWVyeShQYXJz ZVN0YXRlICpwc3RhdGUsCiB7CiAJUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5OwogCUNhY2hlZFBs YW4gKmNwbGFuOworCUNhY2hlZFBsYW5QcmVwRGF0YSBjcHJlcCA9IHswfTsKIAlMaXN0CSAgICpw bGFuX2xpc3Q7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKIAlFU3RhdGUJICAgKmVz dGF0ZSA9IE5VTEw7CkBAIC0xOTMsNyArMTk0LDEwIEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJCQkJCQkgICBlbnRyeS0+cGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nKTsK IAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudCBmb3Ig cG9ydGFsICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJh bUxJLCBOVUxMLCBOVUxMKTsKKwkvKiBLZWVwIEV4ZWN1dG9yUHJlcCBzdGF0ZSB3aXRoIHRoZSBw b3J0YWwgYW5kIGl0cyByZXNvd25lci4gKi8KKwljcHJlcC5jb250ZXh0ID0gcG9ydGFsLT5wb3J0 YWxDb250ZXh0OworCWNwcmVwLm93bmVyID0gcG9ydGFsLT5yZXNvd25lcjsKKwljcGxhbiA9IEdl dENhY2hlZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIE5VTEwsICZjcHJl cCk7CiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCS8qCkBAIC0yMDUsNyArMjA5 LDcgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBxdWVyeV9zdHJp bmcsCiAJCQkJCSAgZW50cnktPnBsYW5zb3VyY2UtPmNvbW1hbmRUYWcsCiAJCQkJCSAgcGxhbl9s aXN0LAotCQkJCQkgIE5JTCwKKwkJCQkJICBjcHJlcC5wcmVwX2VzdGF0ZXMsCiAJCQkJCSAgY3Bs YW4pOwogCiAJLyoKQEAgLTU3NSw2ICs1NzksNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1 dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlQ cmVwYXJlZFN0YXRlbWVudCAqZW50cnk7CiAJY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nOwogCUNh Y2hlZFBsYW4gKmNwbGFuOworCUNhY2hlZFBsYW5QcmVwRGF0YSBjcHJlcCA9IHswfTsKIAlMaXN0 CSAgICpwbGFuX2xpc3Q7CiAJTGlzdAkgICAqcHJlcF9lc3RhdGVzOwogCUxpc3RDZWxsICAgKnA7 CkBAIC02MzMsOCArNjM4LDE0IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4 ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCX0KIAogCS8qIFJl cGxhbiBpZiBuZWVkZWQsIGFuZCBhY3F1aXJlIGEgdHJhbnNpZW50IHJlZmNvdW50ICovCisJLyog RXhlY3V0b3JQcmVwIHN0YXRlIGlzIGxvY2FsIHRvIHRoaXMgRVhQTEFJTiBFWEVDVVRFIGNhbGwu ICovCisJY3ByZXAuY29udGV4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCWNwcmVwLm93bmVy ID0gQ3VycmVudFJlc291cmNlT3duZXI7CisJaWYgKGVzLT5nZW5lcmljKQorCQljcHJlcC5lZmxh Z3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDOwogCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihl bnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwKLQkJCQkJCSAgQ3VycmVudFJlc291cmNlT3duZXIs IHBzdGF0ZS0+cF9xdWVyeUVudik7CisJCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93bmVyLCBwc3Rh dGUtPnBfcXVlcnlFbnYsCisJCQkJCQkgICZjcHJlcCk7CiAKIAlJTlNUUl9USU1FX1NFVF9DVVJS RU5UKHBsYW5kdXJhdGlvbik7CiAJSU5TVFJfVElNRV9TVUJUUkFDVChwbGFuZHVyYXRpb24sIHBs YW5zdGFydCk7CkBAIC02NTMsNyArNjY0LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRl U3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJfQog CiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKLQlwcmVwX2VzdGF0ZXMgPSBOSUw7CisJ cHJlcF9lc3RhdGVzID0gY3ByZXAucHJlcF9lc3RhdGVzOwogCiAJLyogRXhwbGFpbiBlYWNoIHF1 ZXJ5ICovCiAJcHJlcF9sYyA9IGxpc3RfaGVhZChwcmVwX2VzdGF0ZXMpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9m dW5jdGlvbnMuYwppbmRleCBjOTNlMjY2NGNmZC4uNjVkZmFlNThkY2YgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2Z1bmN0aW9ucy5jCkBAIC02OTgsNiArNjk4LDcgQEAgaW5pdF9leGVjdXRpb25fc3RhdGUoU1FM RnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJZmNhY2hlLT5jcGxhbiA9IEdldENhY2hlZFBsYW4o cGxhbnNvdXJjZSwKIAkJCQkJCQkJICBmY2FjaGUtPnBhcmFtTEksCiAJCQkJCQkJCSAgZmNhY2hl LT5jb3duZXIsCisJCQkJCQkJCSAgTlVMTCwKIAkJCQkJCQkJICBOVUxMKTsKIAogCS8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDc5M2M3NmQ0ZjgyLi5hN2E0YmFh ZjhhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTQ4NTgsOCAr NDg1OCw4IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGFzIGEgcmVmZXJlbmNlIGZvciBidWlsZGluZyB0aGUg UmVzdWx0UmVsSW5mbyBvZiB0aGUgdGFyZ2V0IHBhcnRpdGlvbi4KIAkgKiBJbiBlaXRoZXIgY2Fz ZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hpY2ggcmVzdWx0IHJlbGF0aW9uIGlzIGtlcHQsIHNvIHdl CiAJICoganVzdCBrZWVwIHRoZSBmaXJzdCBvbmUsIGlmIGFsbCBvdGhlcnMgaGF2ZSBiZWVuIHBy dW5lZC4gIFNlZSBhbHNvLAotCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCksIHdoaWNoIGVuc3Vy ZXMgdGhhdCB0aGlzIGZpcnN0IHJlc3VsdCByZWxhdGlvbgotCSAqIGhhcyBiZWVuIGxvY2tlZC4K KwkgKiBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkKCksIHdoaWNoIGVuc3VyZXMgdGhhdCB0 aGlzIGZpcnN0IHJlc3VsdAorCSAqIHJlbGF0aW9uIGhhcyBiZWVuIGxvY2tlZC4KIAkgKi8KIAlp ID0gMDsKIAlmb3JlYWNoKGwsIG5vZGUtPnJlc3VsdFJlbGF0aW9ucykKQEAgLTQ4NzMsNiArNDg3 Myw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCQkJLyogYWxsIHJlc3VsdCByZWxhdGlvbnMgcHJ1bmVkOyBrZWVw IHRoZSBmaXJzdCBvbmUgKi8KIAkJCWtlZXBfcmVsID0gdHJ1ZTsKIAkJCXJ0aSA9IGxpbml0aWFs X2ludChub2RlLT5yZXN1bHRSZWxhdGlvbnMpOworCQkJQXNzZXJ0KGxpc3RfbWVtYmVyX2ludChl c3RhdGUtPmVzX3BsYW5uZWRzdG10LT5maXJzdFJlc3VsdFJlbHMsIHJ0aSkpOwogCQkJaSA9IDA7 CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9zcGkuYwppbmRleCA5OTRhNjlhMWM4ZS4uMTM3MDM5NjlkZDggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL3NwaS5jCkBAIC0xNTc5LDYgKzE1NzksNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwo Y29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogewogCUNhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2U7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CisJQ2FjaGVkUGxhblByZXBEYXRhIGNw cmVwID0gezB9OwogCUxpc3QJICAgKnN0bXRfbGlzdDsKIAljaGFyCSAgICpxdWVyeV9zdHJpbmc7 CiAJU25hcHNob3QJc25hcHNob3Q7CkBAIC0xNjU5LDcgKzE2NjAsMTEgQEAgU1BJX2N1cnNvcl9v cGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkgKi8KIAog CS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudCBmb3IgcG9y dGFsICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEws IF9TUElfY3VycmVudC0+cXVlcnlFbnYpOworCS8qIEV4ZWN1dG9yUHJlcCBzdGF0ZSBsaXZlcyBp biB0aGlzIHBvcnRhbCdzIGNvbnRleHQuICovCisJY3ByZXAuY29udGV4dCA9IHBvcnRhbC0+cG9y dGFsQ29udGV4dDsKKwljcHJlcC5vd25lciA9IHBvcnRhbC0+cmVzb3duZXI7CisJY3BsYW4gPSBH ZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIF9TUElfY3VycmVudC0+cXVl cnlFbnYsCisJCQkJCQkgICZjcHJlcCk7CiAJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsK IAogCWlmICghcGxhbi0+c2F2ZWQpCkBAIC0xNjg1LDcgKzE2OTAsNyBAQCBTUElfY3Vyc29yX29w ZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCQkJCQkgIHF1 ZXJ5X3N0cmluZywKIAkJCQkJICBwbGFuc291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkgIHN0bXRf bGlzdCwKLQkJCQkJICBOSUwsCisJCQkJCSAgY3ByZXAucHJlcF9lc3RhdGVzLAkvKiBsaXZlcyBp biBwb3J0YWxDb250ZXh0ICovCiAJCQkJCSAgY3BsYW4pOwogCiAJLyoKQEAgLTIwNzgsNiArMjA4 Myw3IEBAIFNQSV9wbGFuX2dldF9jYWNoZWRfcGxhbihTUElQbGFuUHRyIHBsYW4pCiB7CiAJQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZTsKIAlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNoZWRQ bGFuUHJlcERhdGEgY3ByZXAgPSB7MH07CiAJU1BJQ2FsbGJhY2tBcmcgc3BpY2FsbGJhY2thcmc7 CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgc3BpZXJyY29udGV4dDsKIApAQCAtMjEwMSw5ICsyMTA3 LDEzIEBAIFNQSV9wbGFuX2dldF9jYWNoZWRfcGxhbihTUElQbGFuUHRyIHBsYW4pCiAJZXJyb3Jf Y29udGV4dF9zdGFjayA9ICZzcGllcnJjb250ZXh0OwogCiAJLyogR2V0IHRoZSBnZW5lcmljIHBs YW4gZm9yIHRoZSBxdWVyeSAqLworCS8qIEV4ZWN1dG9yUHJlcCgpIHN0YXRlIGxpdmVzIGluIGNh bGxlcidzIGFjdGl2ZSBjb250ZXh0LiAqLworCWNwcmVwLmNvbnRleHQgPSBDdXJyZW50TWVtb3J5 Q29udGV4dDsKKwljcHJlcC5vd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOwogCWNwbGFuID0g R2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBOVUxMLAogCQkJCQkJICBwbGFuLT5zYXZlZCA/IEN1 cnJlbnRSZXNvdXJjZU93bmVyIDogTlVMTCwKLQkJCQkJCSAgX1NQSV9jdXJyZW50LT5xdWVyeUVu dik7CisJCQkJCQkgIF9TUElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkgICZjcHJlcCk7CiAJ QXNzZXJ0KGNwbGFuID09IHBsYW5zb3VyY2UtPmdwbGFuKTsKIAogCS8qIFBvcCB0aGUgZXJyb3Ig Y29udGV4dCBzdGFjayAqLwpAQCAtMjUwMiw2ICsyNTEyLDcgQEAgX1NQSV9leGVjdXRlX3BsYW4o U1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJTGlz dENlbGwgICAqbGMyOwogCQlMaXN0CSAgICpwcmVwX2VzdGF0ZXM7CiAJCUxpc3RDZWxsICAgKnBy ZXBfbGM7CisJCUNhY2hlZFBsYW5QcmVwRGF0YSBjcHJlcCA9IHswfTsKIAogCQlzcGljYWxsYmFj a2FyZy5xdWVyeSA9IHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZzsKIApAQCAtMjU3NiwxMSArMjU4 NywxNiBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1 dGVPcHRpb25zICpvcHRpb25zLAogCQkgKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgaW5jcmVtZW50 IHBsYW4gcmVmY291bnQuICBJZiBpdCdzIGEgc2F2ZWQKIAkJICogcGxhbiwgdGhlIHJlZmNvdW50 IG11c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293bmVyLgogCQkgKi8KKworCQkvKiBFeGVjdXRv clByZXAgc3RhdGUgaXMgcGVyIF9TUElfZXhlY3V0ZV9wbGFuIGNhbGwuICovCisJCWNwcmVwLmNv bnRleHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKwkJY3ByZXAub3duZXIgPSBDdXJyZW50UmVz b3VyY2VPd25lcjsKIAkJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIG9wdGlvbnMt PnBhcmFtcywKLQkJCQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOwor CQkJCQkJCSAgcGxhbl9vd25lciwgX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKKwkJCQkJCQkgICZj cHJlcCk7CiAKIAkJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKLQkJcHJlcF9lc3RhdGVz ID0gTklMOworCQlwcmVwX2VzdGF0ZXMgPSBjcHJlcC5wcmVwX2VzdGF0ZXM7CiAKIAkJLyoKIAkJ ICogSWYgd2Ugd2VyZW4ndCBnaXZlbiBhIHNwZWNpZmljIHNuYXBzaG90IHRvIHVzZSwgYW5kIHRo ZSBzdGF0ZW1lbnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5u ZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA0MjYwNGEw Zjc1Yy4uYWZhNjFkMzU3YzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAg LTY1Nyw2ICs2NTcsNyBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hh ciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQtPnBlcm1JbmZvcyA9 IGdsb2ItPmZpbmFscnRlcGVybWluZm9zOwogCXJlc3VsdC0+c3VicnRpbmZvcyA9IGdsb2ItPnN1 YnJ0aW5mb3M7CiAJcmVzdWx0LT5yZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlv bnM7CisJcmVzdWx0LT5maXJzdFJlc3VsdFJlbHMgPSBnbG9iLT5maXJzdFJlc3VsdFJlbHM7CiAJ cmVzdWx0LT5hcHBlbmRSZWxhdGlvbnMgPSBnbG9iLT5hcHBlbmRSZWxhdGlvbnM7CiAJcmVzdWx0 LT5zdWJwbGFucyA9IGdsb2ItPnN1YnBsYW5zOwogCXJlc3VsdC0+cmV3aW5kUGxhbklEcyA9IGds b2ItPnJld2luZFBsYW5JRHM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXgg MWI1YjliNWVkOWMuLmRkYjc5MDJiYzg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVm cy5jCkBAIC0zODQsNiArMzg0LDI2IEBAIHNldF9wbGFuX3JlZmVyZW5jZXMoUGxhbm5lckluZm8g KnJvb3QsIFBsYW4gKnBsYW4pCiAJCX0KIAl9CiAKKwkvKgorCSAqIFJlY29yZCB0aGUgZmlyc3Qg cmVzdWx0IHJlbGF0aW9uIGlmIGl0IGJlbG9uZ3MgdG8gdGhlIHNldCBvZgorCSAqIGluaXRpYWxs eSBwcnVuYWJsZSByZWxhdGlvbnMuICBXZSB1c2UgYm1zX25leHRfbWVtYmVyKCkgdG8gZ2V0CisJ ICogdGhlIGxvd2VzdC1udW1iZXJlZCBsZWFmIHJlc3VsdCByZWwsIHdoaWNoIG1hdGNoZXMKKwkg KiBsaW5pdGlhbF9pbnQoTW9kaWZ5VGFibGUucmVzdWx0UmVsYXRpb25zKSBiZWNhdXNlIHBhcnRp dGlvbgorCSAqIGV4cGFuc2lvbiBwcmVzZXJ2ZXMgUlQgaW5kZXggb3JkZXIuICBUaGVyZSBpcyBv bmUgTW9kaWZ5VGFibGUKKwkgKiBwZXIgcXVlcnkgbGV2ZWwsIHNvIHRoaXMgY2FwdHVyZXMgZXhh Y3RseSBvbmUgZW50cnkgcGVyIGxldmVsLgorCSAqIEV4ZWNJbml0TW9kaWZ5VGFibGUoKSBhc3Nl cnRzIHRoYXQgdGhlIHJlY29yZGVkIGluZGV4IG1hdGNoZXMKKwkgKiB3aGF0IGl0IGFjdHVhbGx5 IG5lZWRzLgorCSAqLworCWlmIChyb290LT5sZWFmX3Jlc3VsdF9yZWxpZHMpCisJeworCQlJbmRl eAlmaXJzdFJlc3VsdFJlbCA9IGJtc19uZXh0X21lbWJlcihyb290LT5sZWFmX3Jlc3VsdF9yZWxp ZHMsIC0xKTsKKworCQlmaXJzdFJlc3VsdFJlbCArPSBydG9mZnNldDsKKwkJaWYgKGJtc19pc19t ZW1iZXIoZmlyc3RSZXN1bHRSZWwsIHJvb3QtPmdsb2ItPnBydW5hYmxlUmVsaWRzKSkKKwkJCXJv b3QtPmdsb2ItPmZpcnN0UmVzdWx0UmVscyA9CisJCQkJbGFwcGVuZF9pbnQocm9vdC0+Z2xvYi0+ Zmlyc3RSZXN1bHRSZWxzLCBmaXJzdFJlc3VsdFJlbCk7CisJfQorCiAJcmV0dXJuIHJlc3VsdDsK IH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IGNkMWU0MjljZWVkLi41YzE0NWEzMTI3NCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYwpAQCAtMTYzNiw2ICsxNjM2LDcgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5n SW5mbyBpbnB1dF9tZXNzYWdlKQogCWludDE2CSAgICpyZm9ybWF0cyA9IE5VTEw7CiAJQ2FjaGVk UGxhblNvdXJjZSAqcHNyYzsKIAlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNoZWRQbGFuUHJlcERh dGEgY3ByZXAgPSB7MH07CiAJUG9ydGFsCQlwb3J0YWw7CiAJY2hhcgkgICAqcXVlcnlfc3RyaW5n OwogCWNoYXIJICAgKnNhdmVkX3N0bXRfbmFtZTsKQEAgLTIwMTcsNyArMjAxOCwxMSBAQCBleGVj X2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJICogd2lsbCBiZSBnZW5l cmF0ZWQgaW4gTWVzc2FnZUNvbnRleHQuICBUaGUgcGxhbiByZWZjb3VudCB3aWxsIGJlCiAJICog YXNzaWduZWQgdG8gdGhlIFBvcnRhbCwgc28gaXQgd2lsbCBiZSByZWxlYXNlZCBhdCBwb3J0YWwg ZGVzdHJ1Y3Rpb24uCiAJICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBzcmMsIHBhcmFtcywg TlVMTCwgTlVMTCk7CisKKwkvKiBFeGVjdXRvclByZXAoKSBzdGF0ZSBsaXZlcyBpbiBwb3J0YWwg Y29udGV4dC4gKi8KKwljcHJlcC5jb250ZXh0ID0gcG9ydGFsLT5wb3J0YWxDb250ZXh0OworCWNw cmVwLm93bmVyID0gcG9ydGFsLT5yZXNvd25lcjsKKwljcGxhbiA9IEdldENhY2hlZFBsYW4ocHNy YywgcGFyYW1zLCBOVUxMLCBOVUxMLCAmY3ByZXApOwogCiAJLyoKIAkgKiBOb3cgd2UgY2FuIGRl ZmluZSB0aGUgcG9ydGFsLgpAQCAtMjAzMCw3ICsyMDM1LDcgQEAgZXhlY19iaW5kX21lc3NhZ2Uo U3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBw c3JjLT5jb21tYW5kVGFnLAogCQkJCQkgIGNwbGFuLT5zdG10X2xpc3QsCi0JCQkJCSAgTklMLAor CQkJCQkgIGNwcmVwLnByZXBfZXN0YXRlcywKIAkJCQkJICBjcGxhbik7CiAKIAkvKiBQb3J0YWwg aXMgZGVmaW5lZCwgc2V0IHRoZSBwbGFuIElEIGJhc2VkIG9uIGl0cyBjb250ZW50cy4gKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggODEyZTIyNjU3MzQuLmJlMmE5NjFhOTE4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtOTMsNyArOTMsNyBAQCBzdGF0 aWMgYm9vbCBTdG10UGxhblJlcXVpcmVzUmV2YWxpZGF0aW9uKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UpOwogc3RhdGljIGJvb2wgQnVpbGRpbmdQbGFuUmVxdWlyZXNTbmFwc2hvdChDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKIHN0YXRpYyBMaXN0ICpSZXZhbGlkYXRlQ2FjaGVk UXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJICAgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYpOwotc3RhdGljIGJvb2wgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UpOworc3RhdGljIGJvb2wgUHJlcEFuZENoZWNrQ2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVw KTsKIHN0YXRpYyBDYWNoZWRQbGFuICpCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQ YXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIHN0YXRpYyBib29sIGNob29zZV9j dXN0b21fcGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLApAQCAtMTAxLDYgKzEwMSw5 IEBAIHN0YXRpYyBib29sIGNob29zZV9jdXN0b21fcGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLAogc3RhdGljIGRvdWJsZSBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4s IGJvb2wgaW5jbHVkZV9wbGFubmVyKTsKIHN0YXRpYyBRdWVyeSAqUXVlcnlMaXN0R2V0UHJpbWFy eVN0bXQoTGlzdCAqc3RtdHMpOwogc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlz dCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpOworc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9y TG9ja3NVbnBydW5lZChMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSwKKwkJCQkJCQkJCQkg Q2FjaGVkUGxhblByZXBEYXRhICpjcHJlcCk7CitzdGF0aWMgdm9pZCBDYWNoZWRQbGFuUHJlcENs ZWFudXAoQ2FjaGVkUGxhblByZXBEYXRhICpjcHJlcCk7CiBzdGF0aWMgdm9pZCBBY3F1aXJlUGxh bm5lckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lkIFNj YW5RdWVyeUZvckxvY2tzKFF1ZXJ5ICpwYXJzZXRyZWUsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMg Ym9vbCBTY2FuUXVlcnlXYWxrZXIoTm9kZSAqbm9kZSwgYm9vbCAqYWNxdWlyZSk7CkBAIC0xMzks NiArMTQyLDI2IEBAIFJlc291cmNlT3duZXJGb3JnZXRQbGFuQ2FjaGVSZWYoUmVzb3VyY2VPd25l ciBvd25lciwgQ2FjaGVkUGxhbiAqcGxhbikKIC8qIEdVQyBwYXJhbWV0ZXIgKi8KIGludAkJCXBs YW5fY2FjaGVfbW9kZSA9IFBMQU5fQ0FDSEVfTU9ERV9BVVRPOwogCisvKgorICogTG9jayBhY3F1 aXNpdGlvbiBwb2xpY3kgZm9yIGV4ZWN1dGlvbiBsb2Nrcy4KKyAqCisgKiBMT0NLX0FMTCBhY3F1 aXJlcyBsb2NrcyBvbiBhbGwgcmVsYXRpb25zIG1lbnRpb25lZCBpbiB0aGUgcGxhbiwKKyAqIHJl cHJvZHVjaW5nIHRoZSBiZWhhdmlvciBvZiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgorICoKKyAq IExPQ0tfVU5QUlVORUQgcmVzdHJpY3RzIGxvY2tpbmcgdG8gb25seSB0aGUgdW5wcnVuZWQgcmVs YXRpb25zLiBUaGF0CisgKiBpbmNsdWRlcyB0aG9zZSBtZW50aW9uZWQgaW4gUGxhbm5lZFN0bXQu dW5wcnVuYWJsZVJlbGlkcyBhbmQgdGhlIGxlYWYKKyAqIHBhcnRpdGlvbnMgcmVtYWluaW5nIGFm dGVyIHBlcmZvcm1pbmcgaW5pdGlhbCBwcnVuaW5nLgorICovCit0eXBlZGVmIGVudW0gTG9ja1Bv bGljeQoreworCUxPQ0tfQUxMLAorCUxPQ0tfVU5QUlVORUQsCit9IExvY2tQb2xpY3k7CisKK3N0 YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRvckxvY2tzV2l0aFBvbGljeShMaXN0ICpzdG10X2xpc3Qs CisJCQkJCQkJCQkJICAgTG9ja1BvbGljeSBwb2xpY3ksIGJvb2wgYWNxdWlyZSwKKwkJCQkJCQkJ CQkgICBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVwKTsKKwogLyoKICAqIEluaXRQbGFuQ2FjaGU6 IGluaXRpYWxpemUgbW9kdWxlIGR1cmluZyBJbml0UG9zdGdyZXMuCiAgKgpAQCAtOTQwLDcgKzk2 MywxMiBAQCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSwKIH0KIAogLyoKLSAqIENoZWNrQ2FjaGVkUGxhbjogc2VlIGlmIHRoZSBDYWNoZWRQbGFuU291 cmNlJ3MgZ2VuZXJpYyBwbGFuIGlzIHZhbGlkLgorICogUHJlcEFuZENoZWNrQ2FjaGVkUGxhbjog c2VlIGlmIHRoZSBDYWNoZWRQbGFuU291cmNlJ3MgZ2VuZXJpYyBwbGFuIGlzIHZhbGlkLgorICoK KyAqIElmICdjcHJlcCcgaXMgbm90IE5VTEwsIEV4ZWN1dG9yUHJlcCgpIGlzIGFwcGxpZWQgdG8g ZWFjaCBQbGFubmVkU3RtdCB0bworICogY29tcHV0ZSB0aGUgc2V0IG9mIHBhcnRpdGlvbnMgdGhh dCBzdXJ2aXZlIGluaXRpYWwgcnVudGltZSBwcnVuaW5nIGluIG9yZGVyCisgKiB0byBvbmx5IGxv Y2sgdGhlbS4gIFRoZSBFU3RhdGVzIGNyZWF0ZWQgdG8gZG8gc28gYXJlIHNhdmVkIGluIGNwcmVw IGZvcgorICogbGF0ZXIgcmV1c2UgYnkgRXhlY3V0b3JTdGFydCgpLgogICoKICAqIENhbGxlciBt dXN0IGhhdmUgYWxyZWFkeSBjYWxsZWQgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5IHRvIHZlcmlmeSB0 aGF0IHRoZQogICogcXVlcnl0cmVlIGlzIHVwIHRvIGRhdGUuCkBAIC05NDksNyArOTc3LDcgQEAg UmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKiAo V2UgbXVzdCBkbyB0aGlzIGZvciB0aGUgInRydWUiIHJlc3VsdCB0byBiZSByYWNlLWNvbmRpdGlv bi1mcmVlLikKICAqLwogc3RhdGljIGJvb2wKLUNoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlKQorUHJlcEFuZENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLCBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVwKQogewogCUNhY2hlZFBsYW4g KnBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsKIApAQCAtOTc3LDEzICsxMDA1LDE1IEBAIENoZWNr Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCSAqLwogCWlmIChwbGFu LT5pc192YWxpZCkKIAl7CisJCUxvY2tQb2xpY3kgcG9saWN5ID0gIWNwcmVwID8gTE9DS19BTEwg OiBMT0NLX1VOUFJVTkVEOworCiAJCS8qCiAJCSAqIFBsYW4gbXVzdCBoYXZlIHBvc2l0aXZlIHJl ZmNvdW50IGJlY2F1c2UgaXQgaXMgcmVmZXJlbmNlZCBieQogCQkgKiBwbGFuc291cmNlOyBzbyBu byBuZWVkIHRvIGZlYXIgaXQgZGlzYXBwZWFycyB1bmRlciB1cyBoZXJlLgogCQkgKi8KIAkJQXNz ZXJ0KHBsYW4tPnJlZmNvdW50ID4gMCk7CiAKLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+ c3RtdF9saXN0LCB0cnVlKTsKKwkJQWNxdWlyZUV4ZWN1dG9yTG9ja3NXaXRoUG9saWN5KHBsYW4t PnN0bXRfbGlzdCwgcG9saWN5LCB0cnVlLCBjcHJlcCk7CiAKIAkJLyoKIAkJICogSWYgcGxhbiB3 YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJhbnNhY3Rpb25YbWluIGhhcwpAQCAtMTAw NSw3ICsxMDM1LDEwIEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlKQogCQl9CiAKIAkJLyogT29wcywgdGhlIHJhY2UgY2FzZSBoYXBwZW5lZC4gIFJlbGVhc2Ug dXNlbGVzcyBsb2Nrcy4gKi8KLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0 LCBmYWxzZSk7CisJCUFjcXVpcmVFeGVjdXRvckxvY2tzV2l0aFBvbGljeShwbGFuLT5zdG10X2xp c3QsIHBvbGljeSwgZmFsc2UsIGNwcmVwKTsKKworCQkvKiBBbHNvIGNsZWFuIHVwIEV4ZWN1dG9y UHJlcCgpIHN0YXRlLCBpZiBuZWNlc3NhcnkuICovCisJCUNhY2hlZFBsYW5QcmVwQ2xlYW51cChj cHJlcCk7CiAJfQogCiAJLyoKQEAgLTEyODUsNiArMTMxOCwxMSBAQCBjYWNoZWRfcGxhbl9jb3N0 KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKQogICogT24gcmV0dXJuLCB0 aGUgcGxhbiBpcyB2YWxpZCBhbmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2luCiAg KiBleGVjdXRpb24uCiAgKgorICogSWYgJ2NwcmVwJyBpcyBub3QgTlVMTCBhbmQgYSBnZW5lcmlj IHBsYW4gaXMgcmV1c2VkLCB0aGUgZnVuY3Rpb24gcHJlcGFyZXMKKyAqIGVhY2ggUGxhbm5lZFN0 bXQgdmlhIEV4ZWN1dG9yUHJlcCgpIGFuZCBzdG9yZXMgdGhlIEVTdGF0ZXMgaW4KKyAqIGNwcmVw LT5wcmVwX2VzdGF0ZXMuICBUaGVzZSBhcmUgaW50ZW5kZWQgdG8gYmUgcGFzc2VkIGxhdGVyIHRv CisgKiBFeGVjdXRvclN0YXJ0KCkuCisgKgogICogT24gcmV0dXJuLCB0aGUgcmVmY291bnQgb2Yg dGhlIHBsYW4gaGFzIGJlZW4gaW5jcmVtZW50ZWQ7IGEgbGF0ZXIKICAqIFJlbGVhc2VDYWNoZWRQ bGFuKCkgY2FsbCBpcyBleHBlY3RlZC4gIElmICJvd25lciIgaXMgbm90IE5VTEwgdGhlbgogICog dGhlIHJlZmNvdW50IGhhcyBiZWVuIHJlcG9ydGVkIHRvIHRoYXQgUmVzb3VyY2VPd25lciAobm90 ZSB0aGF0IHRoaXMKQEAgLTEyOTUsNyArMTMzMyw4IEBAIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVk UGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpCiAgKi8KIENhY2hlZFBsYW4gKgogR2V0 Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJv dW5kUGFyYW1zLAotCQkJICBSZXNvdXJjZU93bmVyIG93bmVyLCBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudikKKwkJCSAgUmVzb3VyY2VPd25lciBvd25lciwgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYsCisJCQkgIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApCiB7CiAJQ2FjaGVkUGxhbiAq cGxhbiA9IE5VTEw7CiAJTGlzdAkgICAqcWxpc3Q7CkBAIC0xMzE3LDcgKzEzNTYsOSBAQCBHZXRD YWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91 bmRQYXJhbXMsCiAKIAlpZiAoIWN1c3RvbXBsYW4pCiAJewotCQlpZiAoQ2hlY2tDYWNoZWRQbGFu KHBsYW5zb3VyY2UpKQorCQlpZiAoY3ByZXApCisJCQljcHJlcC0+cGFyYW1zID0gYm91bmRQYXJh bXM7CisJCWlmIChQcmVwQW5kQ2hlY2tDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIGNwcmVwKSkKIAkJ ewogCQkJLyogV2Ugd2FudCBhIGdlbmVyaWMgcGxhbiwgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIHZh bGlkIG9uZSAqLwogCQkJcGxhbiA9IHBsYW5zb3VyY2UtPmdwbGFuOwpAQCAtMTkwMyw2ICsxOTQ0 LDM4IEBAIFF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRzKQogCXJldHVybiBOVUxM OwogfQogCisvKgorICogQWNxdWlyZUV4ZWN1dG9yTG9ja3NXaXRoUG9saWN5CisgKgkJQWNxdWly ZSBvciByZWxlYXNlIGV4ZWN1dGlvbiBsb2NrcyBmb3IgYSBjYWNoZWQgcGxhbiBhY2NvcmRpbmcg dG8KKyAqCQl0aGUgc3BlY2lmaWVkIHBvbGljeS4KKyAqCisgKiBMT0NLX0FMTCByZXByb2R1Y2Vz IEFjcXVpcmVFeGVjdXRvckxvY2tzKCksIGxvY2tpbmcgZXZlcnkgcmVsYXRpb24gaW4KKyAqIGVh Y2ggUGxhbm5lZFN0bXQncyBydGFibGUuICBMT0NLX1VOUFJVTkVEIHJlc3RyaWN0cyBsb2NraW5n IHRvIHRoZQorICogdW5wcnVuYWJsZSByZWxzIGFuZCBwYXJ0aXRpb25zIHRoYXQgc3Vydml2ZSBp bml0aWFsIHJ1bnRpbWUgcHJ1bmluZy4KKyAqCisgKiBXaGVuIExPQ0tfVU5QUlVORUQgaXMgdXNl ZCBvbiBhY3F1aXJlLCBFeGVjdXRvclByZXAoKSBpcyBpbnZva2VkIGZvcgorICogZWFjaCBQbGFu bmVkU3RtdCBhbmQgdGhlIHJlc3VsdGluZyBFU3RhdGVzIGFyZSBhcHBlbmRlZCB0bworICogY3By ZXAtPnByZXBfZXN0YXRlcyBpbiBjcHJlcC0+Y29udGV4dC4gIE9uIHJlbGVhc2UsIHRoZSBzYW1l IEVTdGF0ZQorICogbGlzdCBpcyBjb25zdWx0ZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIHJlbGF0aW9u cyB0byB1bmxvY2sgYW5kIGVhY2gKKyAqIEVTdGF0ZSBpcyByZWxlYXNlZC4KKyAqLworc3RhdGlj IHZvaWQKK0FjcXVpcmVFeGVjdXRvckxvY2tzV2l0aFBvbGljeShMaXN0ICpzdG10X2xpc3QsIExv Y2tQb2xpY3kgcG9saWN5LCBib29sIGFjcXVpcmUsCisJCQkJCQkJICAgQ2FjaGVkUGxhblByZXBE YXRhICpjcHJlcCkKK3sKKwlzd2l0Y2ggKHBvbGljeSkKKwl7CisJCWNhc2UgTE9DS19BTEw6CisJ CQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhzdG10X2xpc3QsIGFjcXVpcmUpOworCQkJYnJlYWs7CisJ CWNhc2UgTE9DS19VTlBSVU5FRDoKKwkJCUFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoc3Rt dF9saXN0LCBhY3F1aXJlLCBjcHJlcCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2co RVJST1IsICJpbnZhbGlkIExvY2tQb2xpY3kiKTsKKwl9Cit9CisKIC8qCiAgKiBBY3F1aXJlRXhl Y3V0b3JMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIGV4ZWN1dGlvbiBvZiBhIGNhY2hl ZCBwbGFuOwogICogb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMgZmFsc2UuCkBAIC0xOTU1 LDYgKzIwMjgsMjExIEBAIEFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9v bCBhY3F1aXJlKQogCX0KIH0KIAorLyoKKyAqIExvY2tSZWxpZHMKKyAqIAkJQWNxdWlyZSBvciBy ZWxlYXNlIGxvY2tzIG9uIHRoZSBzcGVjaWZpZWQgcmVsaWRzLCB3aGljaCByZWZlcmVuY2UKKyAq IAkJZW50cmllcyBpbiB0aGUgcHJvdmlkZWQgcmFuZ2UgdGFibGUuCisgKgorICogSGVscGVyIGZv ciBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkKCkuCisgKi8KK3N0YXRpYyB2b2lkCitMb2Nr UmVsaWRzKExpc3QgKnJ0YWJsZSwgQml0bWFwc2V0ICpyZWxpZHMsIGJvb2wgYWNxdWlyZSkKK3sK KwlpbnQJcnRpbmRleCA9IC0xOworCisJd2hpbGUgKChydGluZGV4ID0gYm1zX25leHRfbWVtYmVy KHJlbGlkcywgcnRpbmRleCkpID49IDApCisJeworCQlSYW5nZVRibEVudHJ5ICpydGUgPSBsaXN0 X250aF9ub2RlKFJhbmdlVGJsRW50cnksIHJ0YWJsZSwgcnRpbmRleCAtIDEpOworCisJCWlmICgh KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gfHwKKwkJCSAgKHJ0ZS0+cnRla2luZCA9PSBS VEVfU1VCUVVFUlkgJiYgT2lkSXNWYWxpZChydGUtPnJlbGlkKSkpKQorCQkJZWxvZyhFUlJPUiwg IkxvY2tSZWxpZHMoKTogY2Fubm90IGxvY2sgcmVsYXRpb24gYXQgUlQgaW5kZXggJWQiLAorCQkJ CSBydGluZGV4KTsKKworCQkvKgorCQkgKiBBY3F1aXJlIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9m IGxvY2sgb24gZWFjaCByZWxhdGlvbiBPSUQuIE5vdGUKKwkJICogdGhhdCB3ZSBkb24ndCBhY3R1 YWxseSB0cnkgdG8gb3BlbiB0aGUgcmVsLCBhbmQgaGVuY2Ugd2lsbCBub3QKKwkJICogZmFpbCBp ZiBpdCdzIGJlZW4gZHJvcHBlZCBlbnRpcmVseSAtLS0gd2UnbGwganVzdCB0cmFuc2llbnRseQor CQkgKiBhY3F1aXJlIGEgbm9uLWNvbmZsaWN0aW5nIGxvY2suCisJCSAqLworCQlpZiAoYWNxdWly ZSkKKwkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJ ZWxzZQorCQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7 CisJfQorfQorCisvKgorICogQWNxdWlyZUV4ZWN1dG9yTG9ja3NVbnBydW5lZAorICoJCUFjcXVp cmUgb3IgcmVsZWFzZSBleGVjdXRpb24gbG9ja3MgZm9yIG9ubHkgdW5wcnVuZWQgcmVsYXRpb25z CisgKgkJcmVmZXJlbmNlZCBieSB0aGUgZ2l2ZW4gUGxhbm5lZFN0bXRzLgorICoKKyAqIE9uIGFj cXVpcmUsIHRoaXM6CisgKgktIGxvY2tzIHVucHJ1bmFibGUgcmVscyBsaXN0ZWQgaW4gUGxhbm5l ZFN0bXQudW5wcnVuYWJsZVJlbGlkcworICoJLSBydW5zIEV4ZWN1dG9yUHJlcCgpIHRvIHBlcmZv cm0gaW5pdGlhbCBydW50aW1lIHBydW5pbmcKKyAqCS0gbG9ja3MgdGhlIHN1cnZpdmluZyBwYXJ0 aXRpb25zIHJlcG9ydGVkIGluIHRoZSBwcmVwIGVzdGF0ZQorICoJLSBhcHBlbmRzIHRoZSBFU3Rh dGUgcG9pbnRlciBmb3IgZWFjaCBQbGFubmVkU3RtdCB0byBjcHJlcC0+cHJlcF9lc3RhdGVzCisg KgorICogT24gcmVsZWFzZSwgaXQ6CisgKgktIGxvb2tzIHVwIHRoZSBFU3RhdGUgZm9yIGVhY2gg UGxhbm5lZFN0bXQgZnJvbSBjcHJlcC0+cHJlcF9lc3RhdGVzCisgKgkgICh3aGljaCBtdXN0IGFs cmVhZHkgYmUgcG9wdWxhdGVkKQorICoJLSB1bmxvY2tzIHRoZSBzYW1lIHJlbGF0aW9ucyBpZGVu dGlmaWVkIGR1cmluZyBhY3F1aXJlCisgKgktIGNsZWFucyB1cCBlYWNoIEVTdGF0ZQorICoKKyAq IHByZXBfZXN0YXRlcyBpcyBleHRlbmRlZCBkdXJpbmcgYWNxdWlyZSBhbmQgbXVzdCBtYXRjaCBz dG10X2xpc3Qgb25lLXRvLW9uZQorICogd2hlbiByZWxlYXNpbmcgbG9ja3MuICBNZW1vcnkgYWxs b2NhdGlvbiBmb3IgRVN0YXRlIGhhcHBlbnMgaW4KKyAqIGNwcmVwLT5jb250ZXh0LiAgTG9ja3Mg YXJlIGFjcXVpcmVkIHVzaW5nIGNwcmVwLT5vd25lci4KKyAqLworCitzdGF0aWMgdm9pZAorQWNx dWlyZUV4ZWN1dG9yTG9ja3NVbnBydW5lZChMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSwK KwkJCQkJCQkgQ2FjaGVkUGxhblByZXBEYXRhICpjcHJlcCkKK3sKKwlNZW1vcnlDb250ZXh0IG9s ZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3ByZXAtPmNvbnRleHQpOworCUxpc3RD ZWxsICAgKmxjMTsKKwlMaXN0CSAgICpwcmVwX2VzdGF0ZXM7CisJTGlzdENlbGwgICAqcHJlcF9s YzsKKworCUFzc2VydChjcHJlcCk7CisKKwkvKgorCSAqIFdoZW4gcmVsZWFzaW5nIGxvY2tzLCB1 c2UgdGhlIEVTdGF0ZSBsaXN0IChpZiBhbnkpIGNyZWF0ZWQgZHVyaW5nCisJICogYWNxdWlzaXRp b24gdG8gZGV0ZXJtaW5lIHdoaWNoIHJlbGlkcyB0byB1bmxvY2suIFRoZSBsaXN0IG11c3QgbWF0 Y2gKKwkgKiB0aGUgUGxhbm5lZFN0bXQgbGlzdCBvbmUtdG8tb25lLgorCSAqLworCXByZXBfZXN0 YXRlcyA9IGNwcmVwLT5wcmVwX2VzdGF0ZXM7CisJQXNzZXJ0KGFjcXVpcmUgfHwgbGlzdF9sZW5n dGgocHJlcF9lc3RhdGVzKSA9PSBsaXN0X2xlbmd0aChzdG10X2xpc3QpKTsKKworCXByZXBfbGMg PSBsaXN0X2hlYWQocHJlcF9lc3RhdGVzKTsKKwlmb3JlYWNoKGxjMSwgc3RtdF9saXN0KQorCXsK KwkJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxj MSk7CisJCUVTdGF0ZSAqcHJlcF9lc3RhdGU7CisKKwkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5k VHlwZSA9PSBDTURfVVRJTElUWSkKKwkJeworCQkJLyogU2FtZSBhcyBBY3F1aXJlRXhlY3V0b3JM b2NrcygpLiAqLworCQkJUXVlcnkJICAgKnF1ZXJ5ID0gVXRpbGl0eUNvbnRhaW5zUXVlcnkocGxh bm5lZHN0bXQtPnV0aWxpdHlTdG10KTsKKworCQkJaWYgKHF1ZXJ5KQorCQkJCVNjYW5RdWVyeUZv ckxvY2tzKHF1ZXJ5LCBhY3F1aXJlKTsKKworCQkJLyogS2VlcCB0aGUgbGlzdCBvbmUtdG8tb25l IHdpdGggc3RtdF9saXN0LiAqLworCQkJaWYgKGFjcXVpcmUpCisJCQkJY3ByZXAtPnByZXBfZXN0 YXRlcyA9IGxhcHBlbmQoY3ByZXAtPnByZXBfZXN0YXRlcywgTlVMTCk7CisJCQllbHNlCisJCQkJ KHZvaWQpIG5leHRfcHJlcF9lc3RhdGUocHJlcF9lc3RhdGVzLCAmcHJlcF9sYyk7CisJCQljb250 aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIExvY2sgdGFibGVzIG1lbnRpb25lZCBpbiB0aGUgb3Jp Z2luYWwgcXVlcnkgYW5kIG90aGVyIHVucHJ1bmFibGUKKwkJICogcmVsYXRpb25zIHRoYXQgd2Vy ZSBhZGRlZCB0byB0aGUgcGxhbiB2aWEgaW5oZXJpdGFuY2UgZXhwYW5zaW9uLgorCQkgKi8KKwkJ TG9ja1JlbGlkcyhwbGFubmVkc3RtdC0+cnRhYmxlLCBwbGFubmVkc3RtdC0+dW5wcnVuYWJsZVJl bGlkcywgYWNxdWlyZSk7CisKKwkJLyogTG9jayBwYXJ0aXRpb25zIHN1cnZpdmluZyBydW50aW1l IGluaXRpYWwgcHJ1bmluZy4gKi8KKwkJaWYgKGFjcXVpcmUpCisJCXsKKwkJCS8qCisJCQkgKiBQ cnVuaW5nIGV4cHJlc3Npb25zIG1heSBjYWxsIFBMIGZ1bmN0aW9ucyB0aGF0IHJlcXVpcmUgYW4g YWN0aXZlCisJCQkgKiBzbmFwc2hvdCAoZS5nLiwgdmlhIEVuc3VyZVBvcnRhbFNuYXBzaG90RXhp c3RzKCkpLiBFc3RhYmxpc2ggb25lCisJCQkgKiBpZiBuZWVkZWQuCisJCQkgKi8KKwkJCWJvb2wJ CXNuYXBfcHVzaGVkID0gZmFsc2U7CisKKwkJCWlmICghQWN0aXZlU25hcHNob3RTZXQoKSkKKwkJ CXsKKwkJCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJ CQlzbmFwX3B1c2hlZCA9IHRydWU7CisJCQl9CisKKwkJCXByZXBfZXN0YXRlID0gRXhlY3V0b3JQ cmVwKHBsYW5uZWRzdG10LCBjcHJlcC0+cGFyYW1zLCBjcHJlcC0+b3duZXIsIHRydWUsCisJCQkJ CQkJCQkgICBjcHJlcC0+ZWZsYWdzKTsKKwkJCUFzc2VydChwcmVwX2VzdGF0ZSk7CisJCQljcHJl cC0+cHJlcF9lc3RhdGVzID0gbGFwcGVuZChjcHJlcC0+cHJlcF9lc3RhdGVzLCBwcmVwX2VzdGF0 ZSk7CisKKwkJCWlmIChzbmFwX3B1c2hlZCkKKwkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQl9 CisJCWVsc2UKKwkJCXByZXBfZXN0YXRlID0gbmV4dF9wcmVwX2VzdGF0ZShwcmVwX2VzdGF0ZXMs ICZwcmVwX2xjKTsKKworCQlpZiAocHJlcF9lc3RhdGUpCisJCXsKKwkJCS8qCisJCQkgKiBlc191 bnBydW5lZF9yZWxpZHMgaW5jbHVkZXMgcGxhbm5lZHN0bXQtPnVucHJ1bmFibGVSZWxpZHMsCisJ CQkgKiB3aGljaCB3ZSd2ZSBhbHJlYWR5IGxvY2tlZC4gRmlsdGVyIHRoZW0gb3V0IHRvIGF2b2lk IGRvdWJsZS1sb2NraW5nLgorCQkJICovCisJCQlCaXRtYXBzZXQgKmxvY2tfcmVsaWRzID0gYm1z X2RpZmZlcmVuY2UocHJlcF9lc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcywKKwkJCQkJCQkJCQkJ CQlwbGFubmVkc3RtdC0+dW5wcnVuYWJsZVJlbGlkcyk7CisKKwkJCS8qCisJCQkgKiBXZSBtdXN0 IGFsd2F5cyBpbmNsdWRlIHRoZSBmaXJzdCByZXN1bHQgcmVsYXRpb24gb2YgZWFjaAorCQkJICog TW9kaWZ5VGFibGUgbm9kZSBpbiB0aGUgcGxhbiwgdGhhdCBpcywgdGhlIG9uZSBtZW50aW9uZWQg aW4KKwkJCSAqIHBsYW5uZWRzdG10LT5maXJzdFJlc3VsdFJlbHMgaW4gdGhlIHNldCBvZiByZWxh dGlvbnMgdG8gYmUKKwkJCSAqIGxvY2tlZCB0byBzYXRpc2Z5IGV4ZWN1dG9yIGFzc3VtcHRpb25z IGRlc2NyaWJlZAorCQkJICogaW4gRXhlY0luaXRNb2RpZnlUYWJsZSgpLiAgVGhpcyBjYW4gYmUg d2FzdGVmdWwsIGJlY2F1c2Ugd2UKKwkJCSAqIG1heSBub3QgbmVlZCB0byB1c2UgdGhlIGZpcnN0 IHJlc3VsdCByZWxhdGlvbiBhdCBhbGwgaWYgb3RoZXIKKwkJCSAqIHJlc3VsdCByZWxhdGlvbnMg YXJlIHVucHJ1bmVkIGFuZCB0aHVzIHN1ZmZpY2llbnQgZm9yIHRoZQorCQkJICogTW9kaWZ5VGFi bGUgbm9kZSdzIG5lZWRzLiAgVW5mb3J0dW5hdGVseSwgd2UgZG9uJ3QgaGF2ZSBwZXItbm9kZQor CQkJICogdW5wcnVuZWRfcmVsaWRzIHNldCB0byBkZXRlcm1pbmUgdGhhdCBvdGhlciByZXN1bHQg cmVsYXRpb25zCisJCQkgKiBhcmUgaW5jbHVkZWQuCisJCQkgKi8KKwkJCWlmIChwbGFubmVkc3Rt dC0+cmVzdWx0UmVsYXRpb25zKQorCQkJeworCQkJCUxpc3RDZWxsICpsYzI7CisKKwkJCQlmb3Jl YWNoKGxjMiwgcGxhbm5lZHN0bXQtPmZpcnN0UmVzdWx0UmVscykKKwkJCQl7CisJCQkJCUluZGV4 ICAgICAgIGZpcnN0UmVzdWx0UmVsID0gbGZpcnN0X2ludChsYzIpOworCisJCQkJCWlmICghYm1z X2lzX21lbWJlcihmaXJzdFJlc3VsdFJlbCwgbG9ja19yZWxpZHMpKQorCQkJCQkJbG9ja19yZWxp ZHMgPSBibXNfYWRkX21lbWJlcihsb2NrX3JlbGlkcywgZmlyc3RSZXN1bHRSZWwpOworCQkJCX0K KwkJCX0KKworCQkJTG9ja1JlbGlkcyhwbGFubmVkc3RtdC0+cnRhYmxlLCBsb2NrX3JlbGlkcywg YWNxdWlyZSk7CisJCQlibXNfZnJlZShsb2NrX3JlbGlkcyk7CisJCX0KKwl9CisKKwlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7Cit9CisKKy8qCisgKiBDYWNoZWRQbGFuUHJlcENs ZWFudXAKKyAqCQlDbGVhbiB1cCBFU3RhdGUgYnVpbHQgZm9yIGEgZ2VuZXJpYyBwbGFuLgorICoK KyAqIFRoaXMgaXMgdXNlZCBpbiB0aGUgY29ybmVyIGNhc2Ugd2hlcmUgUHJlcEFuZENoZWNrQ2Fj aGVkUGxhbigpIGRpc2NvdmVycworICogdGhhdCBhIENhY2hlZFBsYW4gaGFzIGJlY29tZSBpbnZh bGlkIGFmdGVyIEFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoKQorICogaGFzIGFscmVhZHkg cnVuLiAgSW4gdGhhdCBjYXNlIHdlIG11c3QgYm90aCByZWxlYXNlIHRoZSBleGVjdXRpb24gbG9j a3MKKyAqIGFuZCBkaXNwb3NlIG9mIHRoZSBFeGVjUHJlcCBsaXN0IHN0b3JlZCBpbiBDYWNoZWRQ bGFuUHJlcERhdGEsIHNpbmNlIHRoZQorICogZXhlY3V0b3Igd2lsbCBuZXZlciBzZWUgb3IgY2xl YW4gaXQgdXAuCisgKi8KK3N0YXRpYyB2b2lkCitDYWNoZWRQbGFuUHJlcENsZWFudXAoQ2FjaGVk UGxhblByZXBEYXRhICpjcHJlcCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWlmIChjcHJlcCA9 PSBOVUxMKQorCQlyZXR1cm47CisKKwlmb3JlYWNoKGxjLCBjcHJlcC0+cHJlcF9lc3RhdGVzKQor CXsKKwkJRVN0YXRlICpwcmVwX2VzdGF0ZSA9IChFU3RhdGUgKikgbGZpcnN0KGxjKTsKKworCQlp ZiAocHJlcF9lc3RhdGUgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCUV4ZWNDbG9zZVJhbmdl VGFibGVSZWxhdGlvbnMocHJlcF9lc3RhdGUpOworCQlGcmVlRXhlY3V0b3JTdGF0ZShwcmVwX2Vz dGF0ZSk7CisJfQorCisJbGlzdF9mcmVlKGNwcmVwLT5wcmVwX2VzdGF0ZXMpOworCWNwcmVwLT5w cmVwX2VzdGF0ZXMgPSBOSUw7Cit9CisKIC8qCiAgKiBBY3F1aXJlUGxhbm5lckxvY2tzOiBhY3F1 aXJlIGxvY2tzIG5lZWRlZCBmb3IgcGxhbm5pbmcgb2YgYSBxdWVyeXRyZWUgbGlzdDsKICAqIG9y IHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNlLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRl eCBjMTc1ZWU5NWI2OC4uOTg5YjNjNzM2OTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0yMTcs NiArMjE3LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCS8qICJmbGF0IiBsaXN0 IG9mIGludGVnZXIgUlQgaW5kZXhlcyAqLwogCUxpc3QJICAgKnJlc3VsdFJlbGF0aW9uczsKIAor CS8qICJmbGF0IiBsaXN0IG9mIGludGVnZXIgUlQgaW5kZXhlcyAob25lIHBlciBNb2RpZnlUYWJs ZSBub2RlKSAqLworCUxpc3QJICAgKmZpcnN0UmVzdWx0UmVsczsKKwogCS8qICJmbGF0IiBsaXN0 IG9mIEFwcGVuZFJlbEluZm9zICovCiAJTGlzdAkgICAqYXBwZW5kUmVsYXRpb25zOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCmluZGV4IDhjOTMyMWFhYjhjLi4xNDMxZjEyYTZlOCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmgKQEAgLTEyMyw2ICsxMjMsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQK IAkvKiBpbnRlZ2VyIGxpc3Qgb2YgUlQgaW5kZXhlcywgb3IgTklMICovCiAJTGlzdAkgICAqcmVz dWx0UmVsYXRpb25zOwogCisJLyoKKwkgKiBydGFibGUgaW5kZXhlcyBvZiBmaXJzdCB0YXJnZXQg cmVsYXRpb24gaW4gZWFjaCBNb2RpZnlUYWJsZSBub2RlIGluIHRoZQorCSAqIHBsYW4gZm9yIElO U0VSVC9VUERBVEUvREVMRVRFL01FUkdFLiAgTklMIGlmIHJlc3VsdFJlbGF0aW9ucyBpcyBOSUwu CisJICoKKwkgKiBUaGVzZSBhcmUgdXNlZCBieSBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVk KCkgdG8gZW5zdXJlIHRoYXQgdGhlCisJICogZmlyc3QgcmVzdWx0IHJlbCBmb3IgZWFjaCBNb2Rp ZnlUYWJsZSByZW1haW5zIGxvY2tlZCBldmVuIGlmIHBydW5lZDsKKwkgKiBzZWUgRXhlY0luaXRN b2RpZnlUYWJsZSgpIGZvciB0aGUgZXhlY3V0b3Igc2lkZSBhc3N1bXB0aW9ucy4KKwkgKi8KKwlM aXN0CSAgICpmaXJzdFJlc3VsdFJlbHM7CisKIAkvKiBsaXN0IG9mIEFwcGVuZFJlbEluZm8gbm9k ZXMgKi8KIAlMaXN0CSAgICphcHBlbmRSZWxhdGlvbnM7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKaW5k ZXggOTg0YzUxNTE1YzYuLmRhM2NlOWYzMTc3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaApAQCAtMTk3 LDYgKzE5NywzMiBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRFeHByZXNzaW9uCiB9IENhY2hlZEV4 cHJlc3Npb247CiAKIAorLyoKKyAqIENhY2hlZFBsYW5QcmVwRGF0YQorICogICAgICBDYXJyaWVz IEV4ZWN1dG9yUHJlcCByZXN1bHRzIGZvciBlYWNoIFBsYW5uZWRTdG10IGluIGEgQ2FjaGVkUGxh biwKKyAqICAgICAgYWxvbmcgd2l0aCBjb250ZXh0IGFuZCBvd25lciBpbmZvcm1hdGlvbiBuZWVk ZWQgdG8gYWxsb2NhdGUgdGhlbS4KKyAqCisgKiBwcmVwX2VzdGF0ZXMgaXMgaW5kZXhlZCBvbmUt dG8tb25lIHdpdGggQ2FjaGVkUGxhbi0+c3RtdF9saXN0LCBhbmQgaXMKKyAqIHBvcHVsYXRlZCB3 aGVuIEdldENhY2hlZFBsYW4oKSBwcmVwYXJlcyBhIHJldXNlZCBnZW5lcmljIHBsYW4uICBJZiB0 aGUKKyAqIHBsYW4gaXMgZm91bmQgaW52YWxpZCBhZnRlciBsb2NraW5nLCB0aGUgc2FtZSBsaXN0 IGlzIHVzZWQgdG8gZGV0ZXJtaW5lCisgKiB3aGljaCByZWxhdGlvbnMgdG8gdW5sb2NrIGJlZm9y ZSByZXRyeWluZy4KKyAqCisgKiBFeGVjdXRvclByZXAgc3RhdGUgaXMgYWxsb2NhdGVkIGluICdj b250ZXh0JyBhbmQgb3duZWQgYnkgJ293bmVyJy4KKyAqCisgKiBlZmxhZ3MgY29udHJvbHMgRXhl Y3V0b3JQcmVwKCkgYmVoYXZpb3IgZHVyaW5nIGluaXRpYWwgcHJ1bmluZy4KKyAqIE5vcm1hbGx5 IHplcm87IHNldCBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDIHRvIHN1cHByZXNzIHBydW5pbmcK KyAqIGluIEVYUExBSU4gKEdFTkVSSUNfUExBTikuICBOZWVkIG5vdCBtYXRjaCB0aGUgZWZsYWdz IGxhdGVyIHBhc3NlZAorICogdG8gRXhlY3V0b3JTdGFydCgpLgorICovCit0eXBlZGVmIHN0cnVj dCBDYWNoZWRQbGFuUHJlcERhdGEKK3sKKwlMaXN0ICAgKnByZXBfZXN0YXRlczsJLyogb25lIEVT dGF0ZSBwZXIgUGxhbm5lZFN0bXQsIG9yIE5VTEwgKi8KKwlQYXJhbUxpc3RJbmZvIHBhcmFtczsJ LyogcGFyYW1zIHZpc2libGUgdG8gRXhlY3V0b3JQcmVwICovCisJTWVtb3J5Q29udGV4dCBjb250 ZXh0OwkvKiB3aGVyZSB0byBhbGxvY2F0ZSBFU3RhdGUgYW5kIGl0cyBmaWVsZHMgKi8KKwlSZXNv dXJjZU93bmVyIG93bmVyOwkvKiBSZXNvdXJjZU93bmVyIGZvciBFeGVjdXRvclByZXAgc3RhdGUg Ki8KKwlpbnQJCWVmbGFnczsJCQkvKiBleGVjdXRvciBmbGFncyB0byBjb250cm9sIEV4ZWN1dG9y UHJlcCAqLworfSBDYWNoZWRQbGFuUHJlcERhdGE7CisKIGV4dGVybiB2b2lkIEluaXRQbGFuQ2Fj aGUodm9pZCk7CiBleHRlcm4gdm9pZCBSZXNldFBsYW5DYWNoZSh2b2lkKTsKIApAQCAtMjQwLDcg KzI2Niw4IEBAIGV4dGVybiBMaXN0ICpDYWNoZWRQbGFuR2V0VGFyZ2V0TGlzdChDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLAogZXh0ZXJuIENhY2hlZFBsYW4gKkdldENhY2hlZFBsYW4oQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJIFBhcmFtTGlzdEluZm8gYm91bmRQ YXJhbXMsCiAJCQkJCQkJCSBSZXNvdXJjZU93bmVyIG93bmVyLAotCQkJCQkJCQkgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYs CisJCQkJCQkJCSBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVwKTsKIGV4dGVybiB2b2lkIFJlbGVh c2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpOwogCiBl eHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wYXJ0aXRpb25fcHJ1bmUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRp b25fcHJ1bmUub3V0CmluZGV4IDM5ZGFiOGZjYzA1Li4zOTc3MGYzYjZkNiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dApAQCAtNDg2MCw5ICs0ODYw LDcgQEAgc2VsZWN0IGMucmVsbmFtZQogICAgcmVsbmFtZSAgICAKIC0tLS0tLS0tLS0tLS0tCiAg cHJ1bmVsb2NrX3AxCi0gcHJ1bmVsb2NrX3AyCi0gcHJ1bmVsb2NrX3AzCi0oMyByb3dzKQorKDEg cm93KQogCiBjb21taXQ7CiBkZWFsbG9jYXRlIHBydW5lbG9ja19xOwpAQCAtNDkwNCw2ICs0OTAy LDUwIEBAIHNlbGVjdCBjLnJlbG5hbWUKIAogY29tbWl0OwogZGVhbGxvY2F0ZSBwcnVuZWxvY2tf cTsKK3Jlc2V0IGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZzsKKy0tCistLSBWZXJpZnkgZmlyc3RS ZXN1bHRSZWxzIGhhbmRsaW5nIHdpdGggbXVsdGlwbGUgTW9kaWZ5VGFibGUgbm9kZXMKKy0tICh3 cml0YWJsZSBDVEVzKSB0YXJnZXRpbmcgYSBwYXJ0aXRpb25lZCB0YWJsZS4gIFdoZW4gYSBwcnVu aW5nCistLSBwYXJhbWV0ZXIgbWF0Y2hlcyBubyBwYXJ0aXRpb24sIGFsbCByZXN1bHQgcmVsYXRp b25zIGFyZSBwcnVuZWQKKy0tIGFuZCB0aGUgZXhlY3V0b3IgbXVzdCBzdGlsbCBmaW5kIGEgdXNh YmxlIGZpcnN0IHJlc3VsdCByZWxhdGlvbgorLS0gZm9yIGVhY2ggTW9kaWZ5VGFibGUgbm9kZS4K Ky0tCitwcmVwYXJlIHBydW5lbG9ja19tdF9xIChpbnQsIGludCkgYXMKKyAgd2l0aCB1cGQxIGFz ICh1cGRhdGUgcHJ1bmVsb2NrX3Agc2V0IGEgPSBhKSwKKyAgICAgICB1cGQyIGFzICh1cGRhdGUg cHJ1bmVsb2NrX3Agc2V0IGEgPSBhIHdoZXJlIGEgPSAkMikKKyAgdXBkYXRlIHBydW5lbG9ja19w IHNldCBhID0gYSB3aGVyZSBhID0gJDE7CistLSBGb3JjZSBnZW5lcmljIHBsYW4gY3JlYXRpb24K K2V4cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSBwcnVuZWxvY2tfbXRfcSgxLCAyKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgVXBkYXRlIG9uIHBydW5lbG9ja19wCisgICBVcGRhdGUgb24gcHJ1bmVsb2NrX3AxIHBy dW5lbG9ja19wXzEKKyAgIENURSB1cGQxCisgICAgIC0+ICBVcGRhdGUgb24gcHJ1bmVsb2NrX3Ag cHJ1bmVsb2NrX3BfMworICAgICAgICAgICBVcGRhdGUgb24gcHJ1bmVsb2NrX3AxIHBydW5lbG9j a19wXzQKKyAgICAgICAgICAgVXBkYXRlIG9uIHBydW5lbG9ja19wMiBwcnVuZWxvY2tfcF81Cisg ICAgICAgICAgIFVwZGF0ZSBvbiBwcnVuZWxvY2tfcDMgcHJ1bmVsb2NrX3BfNgorICAgICAgICAg ICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnVuZWxvY2tf cDEgcHJ1bmVsb2NrX3BfNAorICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ1bmVs b2NrX3AyIHBydW5lbG9ja19wXzUKKyAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBy dW5lbG9ja19wMyBwcnVuZWxvY2tfcF82CisgICBDVEUgdXBkMgorICAgICAtPiAgVXBkYXRlIG9u IHBydW5lbG9ja19wIHBydW5lbG9ja19wXzcKKyAgICAgICAgICAgVXBkYXRlIG9uIHBydW5lbG9j a19wMiBwcnVuZWxvY2tfcF84CisgICAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAg ICAgU3VicGxhbnMgUmVtb3ZlZDogMgorICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHJ1bmVsb2NrX3AyIHBydW5lbG9ja19wXzgKKyAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVy OiAoYSA9ICQyKQorICAgLT4gIEFwcGVuZAorICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMgor ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydW5lbG9ja19wMSBwcnVuZWxvY2tfcF8xCisgICAg ICAgICAgICAgICBGaWx0ZXI6IChhID0gJDEpCisoMjIgcm93cykKKworLS0gQWxsIHBhcnRpdGlv bnMgcHJ1bmVkOiB2YWx1ZSA0IG1hdGNoZXMgbm8gcGFydGl0aW9uLCBzbyBlYWNoCistLSBNb2Rp ZnlUYWJsZSBtdXN0IHN0aWxsIGluaXRpYWxpemUgY29ycmVjdGx5IHdpdGggbm8gbWF0Y2hpbmcK Ky0tIHJlc3VsdCByZWxhdGlvbnMuCitleGVjdXRlIHBydW5lbG9ja19tdF9xKDQsIDUpOworZGVh bGxvY2F0ZSBwcnVuZWxvY2tfbXRfcTsKIGRyb3AgdGFibGUgcHJ1bmVsb2NrX3A7CiByZXNldCBw bGFuX2NhY2hlX21vZGU7Ci1yZXNldCBlbmFibGVfcGFydGl0aW9uX3BydW5pbmc7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQKaW5kZXggNGU1OTE4ODE5NmMuLjFkNjlhYjBh MWMyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wbGFuY2FjaGUub3V0CkBAIC0zOTgsMyAr Mzk4LDY1IEBAIHNlbGVjdCBuYW1lLCBnZW5lcmljX3BsYW5zLCBjdXN0b21fcGxhbnMgZnJvbSBw Z19wcmVwYXJlZF9zdGF0ZW1lbnRzCiAoMSByb3cpCiAKIGRyb3AgdGFibGUgdGVzdF9tb2RlOwor LS0gVGVzdCBpbnZhbGlkYXRpb24gb2YgYSBnZW5lcmljIHBsYW4gZHVyaW5nIHBydW5pbmctYXdh cmUgbG9jayBzZXR1cC4KKy0tIFRoZSBwcnVuaW5nIGV4cHJlc3Npb24gdXNlcyBhIHN0YWJsZSBT UUwgZnVuY3Rpb24gdGhhdCBjYWxscyBhIHZvbGF0aWxlCistLSBwbHBnc3FsIGZ1bmN0aW9uLiAg VGhhdCBmdW5jdGlvbiBwZXJmb3JtcyBEREwgb24gYSBwYXJ0aXRpb24gd2hlbiBhCistLSBzZXBh cmF0ZSAic2lnbmFsIiB0YWJsZSBzYXlzIHRvIGRvIHNvLiAgVGhlIHNlY29uZCBFWEVDVVRFIHNo b3VsZAorLS0gcmVwbGFuIGNsZWFubHkgYWZ0ZXIgdGhlIERETC4KK3NldCBwbGFuX2NhY2hlX21v ZGUgdG8gZm9yY2VfZ2VuZXJpY19wbGFuOworY3JlYXRlIHRhYmxlIGludmFsX2R1cmluZ19wcnVu aW5nX3AgKGEgaW50KSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7CitjcmVhdGUgdGFibGUgaW52YWxf ZHVyaW5nX3BydW5pbmdfcDEgcGFydGl0aW9uIG9mIGludmFsX2R1cmluZ19wcnVuaW5nX3AgZm9y IHZhbHVlcyBpbiAoMSk7CitjcmVhdGUgdGFibGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcDIgcGFy dGl0aW9uIG9mIGludmFsX2R1cmluZ19wcnVuaW5nX3AgZm9yIHZhbHVlcyBpbiAoMik7CitpbnNl cnQgaW50byBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wIHZhbHVlcyAoMSksICgyKTsKK2NyZWF0ZSB0 YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWduYWwgKGNyZWF0ZV9pZHggYm9vbCBub3QgbnVs bCk7CitpbnNlcnQgaW50byBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWduYWwgdmFsdWVzIChmYWxz ZSk7CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBpbnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5j KCkgcmV0dXJucyBpbnQKK2FzICQkCitkZWNsYXJlCisJY3JlYXRlX2luZGV4IGJvb2w7CitiZWdp bgorCS0tIFBlcmZvcm0gRERMIG9uIGEgcGFydGl0aW9uIGlmIGFza2VkIHRvCisJc2VsZWN0IGNy ZWF0ZV9pZHggaW50byBjcmVhdGVfaW5kZXggZnJvbSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWdu YWwgZm9yIHVwZGF0ZTsKKwlpZiBjcmVhdGVfaW5kZXggPSB0cnVlIHRoZW4KKwkJcmFpc2Ugbm90 aWNlICdjcmVhdGluZyBpbmRleCBvbiBwYXJ0aXRpb24gaW52YWxfZHVyaW5nX3BydW5pbmdfcDEn OworCQljcmVhdGUgaW5kZXggb24gaW52YWxfZHVyaW5nX3BydW5pbmdfcDEgKGEpOworCQl1cGRh dGUgaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIHNldCBjcmVhdGVfaWR4ID0gZmFsc2U7CisJ ZW5kIGlmOworCS0tIHBydW5pbmcgcGFyYW1ldGVyCisJcmV0dXJuIDE7CitlbmQ7CiskJCBsYW5n dWFnZSBwbHBnc3FsIHZvbGF0aWxlOworY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gc3RhYmxl X3BydW5pbmdfdmFsKCkgcmV0dXJucyBpbnQgYXMgJCQKKwlzZWxlY3QgaW52YWxpZGF0ZV9wbGFu Y2FjaGVfZnVuYygpOworJCQgbGFuZ3VhZ2Ugc3FsIHN0YWJsZTsKK3ByZXBhcmUgaW52YWxfZHVy aW5nX3BydW5pbmdfcSBhcyBzZWxlY3QgKiBmcm9tIGludmFsX2R1cmluZ19wcnVuaW5nX3Agd2hl cmUgYSA9IHN0YWJsZV9wcnVuaW5nX3ZhbCgpOworLS0gQnVpbGQgYSBnZW5lcmljIHBsYW4gYW5k IHJ1biBwcnVuaW5nIG9uY2UsIGJ1dCBkb24ndCBzZXQgdGhlIHNpZ25hbAorLS0gZm9yIGludmFs aWRhdGVfcGxhbmNhY2hlX2Z1bmMoKSB0byBwZXJmb3JtIHRoZSBEREwuCitleHBsYWluICh2ZXJi b3NlLCBjb3N0cyBvZmYpIGV4ZWN1dGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICBTdWJwbGFucyBSZW1v dmVkOiAxCisgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmludmFsX2R1cmluZ19wcnVuaW5nX3Ax IGludmFsX2R1cmluZ19wcnVuaW5nX3BfMQorICAgICAgICAgT3V0cHV0OiBpbnZhbF9kdXJpbmdf cHJ1bmluZ19wXzEuYQorICAgICAgICAgRmlsdGVyOiAoaW52YWxfZHVyaW5nX3BydW5pbmdfcF8x LmEgPSBzdGFibGVfcHJ1bmluZ192YWwoKSkKKyg1IHJvd3MpCisKKy0tIFJldXNlIHRoZSBnZW5l cmljIHBsYW4uICBNYWtlIGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMoKSBwZXJmb3JtIERETAor LS0gZHVyaW5nIHRoaXMgZXhlY3V0aW9uLCB3aGljaCBzaG91bGQgZm9yY2UgcmVwbGFubmluZyB3 aXRob3V0IGVycm9ycy4KK3VwZGF0ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWduYWwgc2V0IGNy ZWF0ZV9pZHggPSB0cnVlOworZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKSBleGVjdXRlIGlu dmFsX2R1cmluZ19wcnVuaW5nX3E7CitOT1RJQ0U6ICBjcmVhdGluZyBpbmRleCBvbiBwYXJ0aXRp b24gaW52YWxfZHVyaW5nX3BydW5pbmdfcDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQXBwZW5kCisgICBTdWJwbGFucyBSZW1vdmVkOiAxCisgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmludmFsX2R1cmluZ19wcnVuaW5nX3AxIGludmFsX2R1cmluZ19wcnVuaW5n X3BfMQorICAgICAgICAgT3V0cHV0OiBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wXzEuYQorICAgICAg ICAgRmlsdGVyOiAoaW52YWxfZHVyaW5nX3BydW5pbmdfcF8xLmEgPSBzdGFibGVfcHJ1bmluZ192 YWwoKSkKKyg1IHJvd3MpCisKK2Ryb3AgdGFibGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcCwgaW52 YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsOworZHJvcCBmdW5jdGlvbiBpbnZhbGlkYXRlX3BsYW5j YWNoZV9mdW5jLCBzdGFibGVfcHJ1bmluZ192YWw7CitkZWFsbG9jYXRlIGludmFsX2R1cmluZ19w cnVuaW5nX3E7CityZXNldCBwbGFuX2NhY2hlX21vZGU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFy dGl0aW9uX3BydW5lLnNxbAppbmRleCAyMjljNWViMzcwYy4uODc2NzJhZDQwZjcgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbApAQCAtMTQ5OSw2ICsxNDk5LDI4IEBA IHNlbGVjdCBjLnJlbG5hbWUKIGNvbW1pdDsKIAogZGVhbGxvY2F0ZSBwcnVuZWxvY2tfcTsKK3Jl c2V0IGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZzsKKworLS0KKy0tIFZlcmlmeSBmaXJzdFJlc3Vs dFJlbHMgaGFuZGxpbmcgd2l0aCBtdWx0aXBsZSBNb2RpZnlUYWJsZSBub2RlcworLS0gKHdyaXRh YmxlIENURXMpIHRhcmdldGluZyBhIHBhcnRpdGlvbmVkIHRhYmxlLiAgV2hlbiBhIHBydW5pbmcK Ky0tIHBhcmFtZXRlciBtYXRjaGVzIG5vIHBhcnRpdGlvbiwgYWxsIHJlc3VsdCByZWxhdGlvbnMg YXJlIHBydW5lZAorLS0gYW5kIHRoZSBleGVjdXRvciBtdXN0IHN0aWxsIGZpbmQgYSB1c2FibGUg Zmlyc3QgcmVzdWx0IHJlbGF0aW9uCistLSBmb3IgZWFjaCBNb2RpZnlUYWJsZSBub2RlLgorLS0K K3ByZXBhcmUgcHJ1bmVsb2NrX210X3EgKGludCwgaW50KSBhcworICB3aXRoIHVwZDEgYXMgKHVw ZGF0ZSBwcnVuZWxvY2tfcCBzZXQgYSA9IGEpLAorICAgICAgIHVwZDIgYXMgKHVwZGF0ZSBwcnVu ZWxvY2tfcCBzZXQgYSA9IGEgd2hlcmUgYSA9ICQyKQorICB1cGRhdGUgcHJ1bmVsb2NrX3Agc2V0 IGEgPSBhIHdoZXJlIGEgPSAkMTsKKworLS0gRm9yY2UgZ2VuZXJpYyBwbGFuIGNyZWF0aW9uCitl eHBsYWluIChjb3N0cyBvZmYpIGV4ZWN1dGUgcHJ1bmVsb2NrX210X3EoMSwgMik7CisKKy0tIEFs bCBwYXJ0aXRpb25zIHBydW5lZDogdmFsdWUgNCBtYXRjaGVzIG5vIHBhcnRpdGlvbiwgc28gZWFj aAorLS0gTW9kaWZ5VGFibGUgbXVzdCBzdGlsbCBpbml0aWFsaXplIGNvcnJlY3RseSB3aXRoIG5v IG1hdGNoaW5nCistLSByZXN1bHQgcmVsYXRpb25zLgorZXhlY3V0ZSBwcnVuZWxvY2tfbXRfcSg0 LCA1KTsKKworZGVhbGxvY2F0ZSBwcnVuZWxvY2tfbXRfcTsKIGRyb3AgdGFibGUgcHJ1bmVsb2Nr X3A7CiByZXNldCBwbGFuX2NhY2hlX21vZGU7Ci1yZXNldCBlbmFibGVfcGFydGl0aW9uX3BydW5p bmc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wbGFuY2FjaGUuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbAppbmRleCA0YjJmMTFkY2M2NC4uMTM5YjQ2 ODhmZDYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNoZS5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbApAQCAtMjIzLDMgKzIyMyw1NCBA QCBzZWxlY3QgbmFtZSwgZ2VuZXJpY19wbGFucywgY3VzdG9tX3BsYW5zIGZyb20gcGdfcHJlcGFy ZWRfc3RhdGVtZW50cwogICB3aGVyZSAgbmFtZSA9ICd0ZXN0X21vZGVfcHAnOwogCiBkcm9wIHRh YmxlIHRlc3RfbW9kZTsKKworLS0gVGVzdCBpbnZhbGlkYXRpb24gb2YgYSBnZW5lcmljIHBsYW4g ZHVyaW5nIHBydW5pbmctYXdhcmUgbG9jayBzZXR1cC4KKy0tIFRoZSBwcnVuaW5nIGV4cHJlc3Np b24gdXNlcyBhIHN0YWJsZSBTUUwgZnVuY3Rpb24gdGhhdCBjYWxscyBhIHZvbGF0aWxlCistLSBw bHBnc3FsIGZ1bmN0aW9uLiAgVGhhdCBmdW5jdGlvbiBwZXJmb3JtcyBEREwgb24gYSBwYXJ0aXRp b24gd2hlbiBhCistLSBzZXBhcmF0ZSAic2lnbmFsIiB0YWJsZSBzYXlzIHRvIGRvIHNvLiAgVGhl IHNlY29uZCBFWEVDVVRFIHNob3VsZAorLS0gcmVwbGFuIGNsZWFubHkgYWZ0ZXIgdGhlIERETC4K K3NldCBwbGFuX2NhY2hlX21vZGUgdG8gZm9yY2VfZ2VuZXJpY19wbGFuOworY3JlYXRlIHRhYmxl IGludmFsX2R1cmluZ19wcnVuaW5nX3AgKGEgaW50KSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7Citj cmVhdGUgdGFibGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcDEgcGFydGl0aW9uIG9mIGludmFsX2R1 cmluZ19wcnVuaW5nX3AgZm9yIHZhbHVlcyBpbiAoMSk7CitjcmVhdGUgdGFibGUgaW52YWxfZHVy aW5nX3BydW5pbmdfcDIgcGFydGl0aW9uIG9mIGludmFsX2R1cmluZ19wcnVuaW5nX3AgZm9yIHZh bHVlcyBpbiAoMik7CitpbnNlcnQgaW50byBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wIHZhbHVlcyAo MSksICgyKTsKKworY3JlYXRlIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbCAoY3Jl YXRlX2lkeCBib29sIG5vdCBudWxsKTsKK2luc2VydCBpbnRvIGludmFsX2R1cmluZ19wcnVuaW5n X3NpZ25hbCB2YWx1ZXMgKGZhbHNlKTsKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIGludmFs aWRhdGVfcGxhbmNhY2hlX2Z1bmMoKSByZXR1cm5zIGludAorYXMgJCQKK2RlY2xhcmUKKwljcmVh dGVfaW5kZXggYm9vbDsKK2JlZ2luCisJLS0gUGVyZm9ybSBEREwgb24gYSBwYXJ0aXRpb24gaWYg YXNrZWQgdG8KKwlzZWxlY3QgY3JlYXRlX2lkeCBpbnRvIGNyZWF0ZV9pbmRleCBmcm9tIGludmFs X2R1cmluZ19wcnVuaW5nX3NpZ25hbCBmb3IgdXBkYXRlOworCWlmIGNyZWF0ZV9pbmRleCA9IHRy dWUgdGhlbgorCQlyYWlzZSBub3RpY2UgJ2NyZWF0aW5nIGluZGV4IG9uIHBhcnRpdGlvbiBpbnZh bF9kdXJpbmdfcHJ1bmluZ19wMSc7CisJCWNyZWF0ZSBpbmRleCBvbiBpbnZhbF9kdXJpbmdfcHJ1 bmluZ19wMSAoYSk7CisJCXVwZGF0ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWduYWwgc2V0IGNy ZWF0ZV9pZHggPSBmYWxzZTsKKwllbmQgaWY7CisJLS0gcHJ1bmluZyBwYXJhbWV0ZXIKKwlyZXR1 cm4gMTsKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWwgdm9sYXRpbGU7CisKK2NyZWF0ZSBvciBy ZXBsYWNlIGZ1bmN0aW9uIHN0YWJsZV9wcnVuaW5nX3ZhbCgpIHJldHVybnMgaW50IGFzICQkCisJ c2VsZWN0IGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMoKTsKKyQkIGxhbmd1YWdlIHNxbCBzdGFi bGU7CisKK3ByZXBhcmUgaW52YWxfZHVyaW5nX3BydW5pbmdfcSBhcyBzZWxlY3QgKiBmcm9tIGlu dmFsX2R1cmluZ19wcnVuaW5nX3Agd2hlcmUgYSA9IHN0YWJsZV9wcnVuaW5nX3ZhbCgpOworCist LSBCdWlsZCBhIGdlbmVyaWMgcGxhbiBhbmQgcnVuIHBydW5pbmcgb25jZSwgYnV0IGRvbid0IHNl dCB0aGUgc2lnbmFsCistLSBmb3IgaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygpIHRvIHBlcmZv cm0gdGhlIERETC4KK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikgZXhlY3V0ZSBpbnZhbF9k dXJpbmdfcHJ1bmluZ19xOworCistLSBSZXVzZSB0aGUgZ2VuZXJpYyBwbGFuLiAgTWFrZSBpbnZh bGlkYXRlX3BsYW5jYWNoZV9mdW5jKCkgcGVyZm9ybSBEREwKKy0tIGR1cmluZyB0aGlzIGV4ZWN1 dGlvbiwgd2hpY2ggc2hvdWxkIGZvcmNlIHJlcGxhbm5pbmcgd2l0aG91dCBlcnJvcnMuCit1cGRh dGUgaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIHNldCBjcmVhdGVfaWR4ID0gdHJ1ZTsKK2V4 cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikgZXhlY3V0ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19x OworCitkcm9wIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3AsIGludmFsX2R1cmluZ19wcnVu aW5nX3NpZ25hbDsKK2Ryb3AgZnVuY3Rpb24gaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYywgc3Rh YmxlX3BydW5pbmdfdmFsOworZGVhbGxvY2F0ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xOworCity ZXNldCBwbGFuX2NhY2hlX21vZGU7Ci0tIAoyLjQ3LjMKCg== --000000000000c3b932064c6c289e Content-Type: application/octet-stream; name="v6-0003-Add-test-for-partition-lock-behavior-with-generic.patch" Content-Disposition: attachment; filename="v6-0003-Add-test-for-partition-lock-behavior-with-generic.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmg4yi303 RnJvbSA1ODE3OWJkMGQzNzMwZGJkMWZkYmIwYmQ5YzYyNGRjN2FlNzcwODMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTAgRmViIDIwMjYgMjI6MDA6MzIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY2 IDMvNl0gQWRkIHRlc3QgZm9yIHBhcnRpdGlvbiBsb2NrIGJlaGF2aW9yIHdpdGggZ2VuZXJpYwog Y2FjaGVkIHBsYW5zCgpBZGQgYSByZWdyZXNzaW9uIHRlc3QgdGhhdCBpbnNwZWN0cyBwZ19sb2Nr cyB0byB2ZXJpZnkgd2hpY2ggY2hpbGQKcGFydGl0aW9ucyBhcmUgbG9ja2VkIHdoZW4gZXhlY3V0 aW5nIGEgcHJlcGFyZWQgc3RhdGVtZW50IHRoYXQgdXNlcwphIGdlbmVyaWMgY2FjaGVkIHBsYW4u CgpUd28gY2FzZXMgYXJlIHRlc3RlZDogb25lIHdpdGggZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5n IG9uIGFuZCBvbmUKd2l0aCBpdCBvZmYuICBDdXJyZW50bHkgYm90aCBjYXNlcyBsb2NrIGFsbCBj aGlsZCBwYXJ0aXRpb25zLCBiZWNhdXNlCkdldENhY2hlZFBsYW4oKSBhY3F1aXJlcyBleGVjdXRp b24gbG9ja3Mgb24gZXZlcnkgcmVsYXRpb24gaW4gdGhlCnBsYW4gcmVnYXJkbGVzcyBvZiBwcnVu aW5nLgoKQSBzdWJzZXF1ZW50IGNvbW1pdCB0aGF0IGFkZHMgcHJ1bmluZy1hd2FyZSBsb2NraW5n IHdpbGwgdXBkYXRlIHRoZQpleHBlY3RlZCBvdXRwdXQgZm9yIHRoZSBwcnVuaW5nLWVuYWJsZWQg Y2FzZSwgc2hvd2luZyB0aGF0IG9ubHkgdGhlCnN1cnZpdmluZyBwYXJ0aXRpb24gaXMgbG9ja2Vk LgotLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dCB8IDgz ICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVu ZS5zcWwgICAgICB8IDU1ICsrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxMzggaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X3BydW5lLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91 dAppbmRleCBkZWFjZGQ3NTgwNy4uMzlkYWI4ZmNjMDUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKQEAgLTQ4MjQsMyArNDgyNCw4NiBAQCBzZWxl Y3QgbWluKGEpIG92ZXIgKHBhcnRpdGlvbiBieSBhIG9yZGVyIGJ5IGEpIGZyb20gcGFydF9hYmMg d2hlcmUgYSA+PSBzdGFibGVfbwogCiBkcm9wIHZpZXcgcGFydF9hYmNfdmlldzsKIGRyb3AgdGFi bGUgcGFydF9hYmM7CistLQorLS0gVmVyaWZ5IHRoYXQgcHJ1bmluZy1hd2FyZSBsb2NraW5nIHNr aXBzIHBydW5lZCBwYXJ0aXRpb25zCistLSB3aGVuIHJldXNpbmcgYSBnZW5lcmljIGNhY2hlZCBw bGFuLgorLS0KK3NldCBwbGFuX2NhY2hlX21vZGUgdG8gZm9yY2VfZ2VuZXJpY19wbGFuOworY3Jl YXRlIHRhYmxlIHBydW5lbG9ja19wIChhIGludCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOworY3Jl YXRlIHRhYmxlIHBydW5lbG9ja19wMSBwYXJ0aXRpb24gb2YgcHJ1bmVsb2NrX3AgZm9yIHZhbHVl cyBpbiAoMSk7CitjcmVhdGUgdGFibGUgcHJ1bmVsb2NrX3AyIHBhcnRpdGlvbiBvZiBwcnVuZWxv Y2tfcCBmb3IgdmFsdWVzIGluICgyKTsKK2NyZWF0ZSB0YWJsZSBwcnVuZWxvY2tfcDMgcGFydGl0 aW9uIG9mIHBydW5lbG9ja19wIGZvciB2YWx1ZXMgaW4gKDMpOworcHJlcGFyZSBwcnVuZWxvY2tf cSAoaW50KSBhcyBzZWxlY3QgKiBmcm9tIHBydW5lbG9ja19wIHdoZXJlIGEgPSAkMTsKKy0tIEZv cmNlIGdlbmVyaWMgcGxhbiBjcmVhdGlvbgorZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHBy dW5lbG9ja19xKDEpOworICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFw cGVuZAorICAgU3VicGxhbnMgUmVtb3ZlZDogMgorICAgLT4gIFNlcSBTY2FuIG9uIHBydW5lbG9j a19wMSBwcnVuZWxvY2tfcF8xCisgICAgICAgICBGaWx0ZXI6IChhID0gJDEpCisoNCByb3dzKQor CistLSBFeGVjdXRlIGFuZCBjaGVjayB3aGljaCBjaGlsZCBwYXJ0aXRpb25zIGFyZSBsb2NrZWQK K2JlZ2luOworZXhlY3V0ZSBwcnVuZWxvY2tfcSgxKTsKKyBhIAorLS0tCisoMCByb3dzKQorCitz ZWxlY3QgYy5yZWxuYW1lCisgIGZyb20gcGdfbG9ja3MgbAorICBqb2luIHBnX2NsYXNzIGMgb24g Yy5vaWQgPSBsLnJlbGF0aW9uCisgd2hlcmUgbC5waWQgPSBwZ19iYWNrZW5kX3BpZCgpCisgICBh bmQgYy5yZWxuYW1lIGxpa2UgJ3BydW5lbG9ja19wXycKKyBvcmRlciBieSBjLnJlbG5hbWU7Cisg ICByZWxuYW1lICAgIAorLS0tLS0tLS0tLS0tLS0KKyBwcnVuZWxvY2tfcDEKKyBwcnVuZWxvY2tf cDIKKyBwcnVuZWxvY2tfcDMKKygzIHJvd3MpCisKK2NvbW1pdDsKK2RlYWxsb2NhdGUgcHJ1bmVs b2NrX3E7CistLSBUdXJuIHBydW5pbmcgb2ZmCitzZXQgZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5n IHRvIG9mZjsKK3ByZXBhcmUgcHJ1bmVsb2NrX3EgKGludCkgYXMgc2VsZWN0ICogZnJvbSBwcnVu ZWxvY2tfcCB3aGVyZSBhID0gJDE7CistLSBGb3JjZSBnZW5lcmljIHBsYW4gY3JlYXRpb24KK2V4 cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSBwcnVuZWxvY2tfcSgxKTsKKyAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBwcnVu ZWxvY2tfcDEgcHJ1bmVsb2NrX3BfMQorICAgICAgICAgRmlsdGVyOiAoYSA9ICQxKQorICAgLT4g IFNlcSBTY2FuIG9uIHBydW5lbG9ja19wMiBwcnVuZWxvY2tfcF8yCisgICAgICAgICBGaWx0ZXI6 IChhID0gJDEpCisgICAtPiAgU2VxIFNjYW4gb24gcHJ1bmVsb2NrX3AzIHBydW5lbG9ja19wXzMK KyAgICAgICAgIEZpbHRlcjogKGEgPSAkMSkKKyg3IHJvd3MpCisKKy0tIEV4ZWN1dGUgYW5kIGNo ZWNrIHdoaWNoIGNoaWxkIHBhcnRpdGlvbnMgYXJlIGxvY2tlZAorYmVnaW47CitleGVjdXRlIHBy dW5lbG9ja19xKDEpOworIGEgCistLS0KKygwIHJvd3MpCisKK3NlbGVjdCBjLnJlbG5hbWUKKyAg ZnJvbSBwZ19sb2NrcyBsCisgIGpvaW4gcGdfY2xhc3MgYyBvbiBjLm9pZCA9IGwucmVsYXRpb24K KyB3aGVyZSBsLnBpZCA9IHBnX2JhY2tlbmRfcGlkKCkKKyAgIGFuZCBjLnJlbG5hbWUgbGlrZSAn cHJ1bmVsb2NrX3BfJworIG9yZGVyIGJ5IGMucmVsbmFtZTsKKyAgIHJlbG5hbWUgICAgCistLS0t LS0tLS0tLS0tLQorIHBydW5lbG9ja19wMQorIHBydW5lbG9ja19wMgorIHBydW5lbG9ja19wMwor KDMgcm93cykKKworY29tbWl0OworZGVhbGxvY2F0ZSBwcnVuZWxvY2tfcTsKK2Ryb3AgdGFibGUg cHJ1bmVsb2NrX3A7CityZXNldCBwbGFuX2NhY2hlX21vZGU7CityZXNldCBlbmFibGVfcGFydGl0 aW9uX3BydW5pbmc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25f cHJ1bmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAppbmRl eCBkOTNjMGMwM2JhYi4uMjI5YzVlYjM3MGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX3BydW5lLnNxbApAQCAtMTQ0NywzICsxNDQ3LDU4IEBAIHNlbGVjdCBtaW4oYSkgb3ZlciAo cGFydGl0aW9uIGJ5IGEgb3JkZXIgYnkgYSkgZnJvbSBwYXJ0X2FiYyB3aGVyZSBhID49IHN0YWJs ZV9vCiAKIGRyb3AgdmlldyBwYXJ0X2FiY192aWV3OwogZHJvcCB0YWJsZSBwYXJ0X2FiYzsKKwor LS0KKy0tIFZlcmlmeSB0aGF0IHBydW5pbmctYXdhcmUgbG9ja2luZyBza2lwcyBwcnVuZWQgcGFy dGl0aW9ucworLS0gd2hlbiByZXVzaW5nIGEgZ2VuZXJpYyBjYWNoZWQgcGxhbi4KKy0tCitzZXQg cGxhbl9jYWNoZV9tb2RlIHRvIGZvcmNlX2dlbmVyaWNfcGxhbjsKKworY3JlYXRlIHRhYmxlIHBy dW5lbG9ja19wIChhIGludCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOworY3JlYXRlIHRhYmxlIHBy dW5lbG9ja19wMSBwYXJ0aXRpb24gb2YgcHJ1bmVsb2NrX3AgZm9yIHZhbHVlcyBpbiAoMSk7Citj cmVhdGUgdGFibGUgcHJ1bmVsb2NrX3AyIHBhcnRpdGlvbiBvZiBwcnVuZWxvY2tfcCBmb3IgdmFs dWVzIGluICgyKTsKK2NyZWF0ZSB0YWJsZSBwcnVuZWxvY2tfcDMgcGFydGl0aW9uIG9mIHBydW5l bG9ja19wIGZvciB2YWx1ZXMgaW4gKDMpOworCitwcmVwYXJlIHBydW5lbG9ja19xIChpbnQpIGFz IHNlbGVjdCAqIGZyb20gcHJ1bmVsb2NrX3Agd2hlcmUgYSA9ICQxOworCistLSBGb3JjZSBnZW5l cmljIHBsYW4gY3JlYXRpb24KK2V4cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSBwcnVuZWxvY2tf cSgxKTsKKworLS0gRXhlY3V0ZSBhbmQgY2hlY2sgd2hpY2ggY2hpbGQgcGFydGl0aW9ucyBhcmUg bG9ja2VkCitiZWdpbjsKK2V4ZWN1dGUgcHJ1bmVsb2NrX3EoMSk7CisKK3NlbGVjdCBjLnJlbG5h bWUKKyAgZnJvbSBwZ19sb2NrcyBsCisgIGpvaW4gcGdfY2xhc3MgYyBvbiBjLm9pZCA9IGwucmVs YXRpb24KKyB3aGVyZSBsLnBpZCA9IHBnX2JhY2tlbmRfcGlkKCkKKyAgIGFuZCBjLnJlbG5hbWUg bGlrZSAncHJ1bmVsb2NrX3BfJworIG9yZGVyIGJ5IGMucmVsbmFtZTsKK2NvbW1pdDsKKworZGVh bGxvY2F0ZSBwcnVuZWxvY2tfcTsKKworLS0gVHVybiBwcnVuaW5nIG9mZgorc2V0IGVuYWJsZV9w YXJ0aXRpb25fcHJ1bmluZyB0byBvZmY7CisKK3ByZXBhcmUgcHJ1bmVsb2NrX3EgKGludCkgYXMg c2VsZWN0ICogZnJvbSBwcnVuZWxvY2tfcCB3aGVyZSBhID0gJDE7CisKKy0tIEZvcmNlIGdlbmVy aWMgcGxhbiBjcmVhdGlvbgorZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHBydW5lbG9ja19x KDEpOworCistLSBFeGVjdXRlIGFuZCBjaGVjayB3aGljaCBjaGlsZCBwYXJ0aXRpb25zIGFyZSBs b2NrZWQKK2JlZ2luOworZXhlY3V0ZSBwcnVuZWxvY2tfcSgxKTsKKworc2VsZWN0IGMucmVsbmFt ZQorICBmcm9tIHBnX2xvY2tzIGwKKyAgam9pbiBwZ19jbGFzcyBjIG9uIGMub2lkID0gbC5yZWxh dGlvbgorIHdoZXJlIGwucGlkID0gcGdfYmFja2VuZF9waWQoKQorICAgYW5kIGMucmVsbmFtZSBs aWtlICdwcnVuZWxvY2tfcF8nCisgb3JkZXIgYnkgYy5yZWxuYW1lOworY29tbWl0OworCitkZWFs bG9jYXRlIHBydW5lbG9ja19xOworZHJvcCB0YWJsZSBwcnVuZWxvY2tfcDsKK3Jlc2V0IHBsYW5f Y2FjaGVfbW9kZTsKK3Jlc2V0IGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZzsKLS0gCjIuNDcuMwoK --000000000000c3b932064c6c289e Content-Type: application/octet-stream; name="v6-0006-Reuse-partition-pruning-results-in-parallel-worke.patch" Content-Disposition: attachment; filename="v6-0006-Reuse-partition-pruning-results-in-parallel-worke.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmg4yi2n0 RnJvbSBkYzJjZmMzMjQxMDc5MmIzZjAwNDIyYzA3NjIzZjk4OTkwMWVlMzRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjI6MTc6NDcgKzA5MDAKU3ViamVjdDogW1BBVENIIHY2 IDYvNl0gUmV1c2UgcGFydGl0aW9uIHBydW5pbmcgcmVzdWx0cyBpbiBwYXJhbGxlbCB3b3JrZXJz CgpQYXNzIHRoZSBsZWFkZXIncyBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHJlc3VsdHMgYW5k IHVucHJ1bmVkCnJlbGlkcyB0byBwYXJhbGxlbCB3b3JrZXJzIGFuZCByZXVzZSB0aGVtIHZpYSBF eGVjdXRvclByZXAoKS4gVGhpcwphdm9pZHMgcmVwZWF0aW5nIHBydW5pbmcgbG9naWMgaW4gd29y a2Vycywgd2hpY2ggaXMgbm90IG9ubHkKcmVkdW5kYW50IGJ1dCBhbHNvIHJpc2tzIGRpdmVyZ2Vu Y2UgZHVlIHRvIG5vbmRldGVybWluaXNtIGluIHBydW5pbmcKc3RlcHMgb3IgcGFyYW1ldGVyIGV2 YWx1YXRpb24gdGltaW5nLgoKSW50cm9kdWNlIENoZWNrSW5pdGlhbFBydW5pbmdSZXN1bHRzSW5X b3JrZXIoKSAoZGVidWctYnVpbGRzIG9ubHkpCnRvIHZlcmlmeSB0aGF0IHRoZSByZXN1bHRzIG1h dGNoIHdoYXQgdGhlIHdvcmtlciB3b3VsZCBjb21wdXRlLiBUaGlzCmNoZWNrIGhlbHBzIGNhdGNo IGluY29uc2lzdGVuY2llcyBhY3Jvc3MgbGVhZGVyIGFuZCB3b3JrZXIgcHJ1bmluZwpsb2dpYy4K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyB8IDEwOCArKysrKysrKysr KysrKysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyB8 ICA5NSArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTMzIGluc2Vy dGlvbnMoKyksIDcwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMK aW5kZXggMDI0NzgwZDM1MTYuLmQzMzdiZjhjMDgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy YWxsZWwuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNs dWRlICJleGVjdXRvci9leGVjUGFyYWxsZWwuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjUGFy dGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVj dXRvci9ub2RlQWdnLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUFwcGVuZC5oIgpAQCAtNjcs NiArNjgsOCBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfUVVFUllfVEVYVAkJVUlOVDY0Q09OU1Qo MHhFMDAwMDAwMDAwMDAwMDA4KQogI2RlZmluZSBQQVJBTExFTF9LRVlfSklUX0lOU1RSVU1FTlRB VElPTiBVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDkpCiAjZGVmaW5lIFBBUkFMTEVMX0tF WV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMEEpCisjZGVmaW5lIFBB UkFMTEVMX0tFWV9QQVJUSVRJT05fUFJVTkVfUkVTVUxUUwlVSU5UNjRDT05TVCgweEUwMDAwMDAw MDAwMDAwMEIpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9VTlBSVU5FRF9SRUxJRFMJVUlOVDY0Q09O U1QoMHhFMDAwMDAwMDAwMDAwMDBDKQogCiAjZGVmaW5lIFBBUkFMTEVMX1RVUExFX1FVRVVFX1NJ WkUJCTY1NTM2CiAKQEAgLTE0MSw2ICsxNDQsOCBAQCBzdGF0aWMgYm9vbCBFeGVjUGFyYWxsZWxS ZXRyaWV2ZUluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIC8qIEhlbHBlciBm dW5jdGlvbiB0aGF0IHJ1bnMgaW4gdGhlIHBhcmFsbGVsIHdvcmtlci4gKi8KIHN0YXRpYyBEZXN0 UmVjZWl2ZXIgKkV4ZWNQYXJhbGxlbEdldFJlY2VpdmVyKGRzbV9zZWdtZW50ICpzZWcsIHNobV90 b2MgKnRvYyk7CiAKK3N0YXRpYyB2b2lkIENoZWNrSW5pdGlhbFBydW5pbmdSZXN1bHRzSW5Xb3Jr ZXIoRVN0YXRlICplc3RhdGUpOworCiAvKgogICogQ3JlYXRlIGEgc2VyaWFsaXplZCByZXByZXNl bnRhdGlvbiBvZiB0aGUgcGxhbiB0byBiZSBzZW50IHRvIGVhY2ggd29ya2VyLgogICovCkBAIC02 MjAsMTIgKzYyNSwxOCBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwgRVN0YXRlICplc3RhdGUsCiAJRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUgKmZwZXM7CiAJ Y2hhcgkgICAqcHN0bXRfZGF0YTsKIAljaGFyCSAgICpwc3RtdF9zcGFjZTsKKwljaGFyCSAgICpw YXJ0X3BydW5lX3Jlc3VsdHNfZGF0YTsKKwljaGFyCSAgICpwYXJ0X3BydW5lX3Jlc3VsdHNfc3Bh Y2U7CisJY2hhcgkgICAqdW5wcnVuZWRfcmVsaWRzX2RhdGE7CisJY2hhcgkgICAqdW5wcnVuZWRf cmVsaWRzX3NwYWNlOwogCWNoYXIJICAgKnBhcmFtbGlzdGluZm9fc3BhY2U7CiAJQnVmZmVyVXNh Z2UgKmJ1ZnVzYWdlX3NwYWNlOwogCVdhbFVzYWdlICAgKndhbHVzYWdlX3NwYWNlOwogCVNoYXJl ZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50YXRpb24gPSBOVUxMOwogCVNoYXJl ZEppdEluc3RydW1lbnRhdGlvbiAqaml0X2luc3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJaW50CQkJ cHN0bXRfbGVuOworCWludAkJCXBhcnRfcHJ1bmVfcmVzdWx0c19sZW47CisJaW50CQkJdW5wcnVu ZWRfcmVsaWRzX2xlbjsKIAlpbnQJCQlwYXJhbWxpc3RpbmZvX2xlbjsKIAlpbnQJCQlpbnN0cnVt ZW50YXRpb25fbGVuID0gMDsKIAlpbnQJCQlqaXRfaW5zdHJ1bWVudGF0aW9uX2xlbiA9IDA7CkBA IC02NTQsNiArNjY1LDggQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3Rh dGUsIEVTdGF0ZSAqZXN0YXRlLAogCiAJLyogRml4IHVwIGFuZCBzZXJpYWxpemUgcGxhbiB0byBi ZSBzZW50IHRvIHdvcmtlcnMuICovCiAJcHN0bXRfZGF0YSA9IEV4ZWNTZXJpYWxpemVQbGFuKHBs YW5zdGF0ZS0+cGxhbiwgZXN0YXRlKTsKKwlwYXJ0X3BydW5lX3Jlc3VsdHNfZGF0YSA9IG5vZGVU b1N0cmluZyhlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyk7CisJdW5wcnVuZWRfcmVsaWRz X2RhdGEgPSBub2RlVG9TdHJpbmcoZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMpOwogCiAJLyog Q3JlYXRlIGEgcGFyYWxsZWwgY29udGV4dC4gKi8KIAlwY3h0ID0gQ3JlYXRlUGFyYWxsZWxDb250 ZXh0KCJwb3N0Z3JlcyIsICJQYXJhbGxlbFF1ZXJ5TWFpbiIsIG53b3JrZXJzKTsKQEAgLTY4MCw2 ICs2OTMsMTYgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVT dGF0ZSAqZXN0YXRlLAogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwg cHN0bXRfbGVuKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7 CiAKKwkvKiBFc3RpbWF0ZSBzcGFjZSBmb3Igc2VyaWFsaXplZCBwYXJ0X3BydW5lX3Jlc3VsdHMu ICovCisJcGFydF9wcnVuZV9yZXN1bHRzX2xlbiA9IHN0cmxlbihwYXJ0X3BydW5lX3Jlc3VsdHNf ZGF0YSkgKyAxOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgcGFy dF9wcnVuZV9yZXN1bHRzX2xlbik7CisJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3Rp bWF0b3IsIDEpOworCisJLyogRXN0aW1hdGUgc3BhY2UgZm9yIHNlcmlhbGl6ZWQgdW5wcnVuZWRf cmVsaWRzLiAqLworCXVucHJ1bmVkX3JlbGlkc19sZW4gPSBzdHJsZW4odW5wcnVuZWRfcmVsaWRz X2RhdGEpICsgMTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHVu cHJ1bmVkX3JlbGlkc19sZW4pOworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1h dG9yLCAxKTsKKwogCS8qIEVzdGltYXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIFBhcmFtTGlzdElu Zm8uICovCiAJcGFyYW1saXN0aW5mb19sZW4gPSBFc3RpbWF0ZVBhcmFtTGlzdFNwYWNlKGVzdGF0 ZS0+ZXNfcGFyYW1fbGlzdF9pbmZvKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5l c3RpbWF0b3IsIHBhcmFtbGlzdGluZm9fbGVuKTsKQEAgLTc4MSw2ICs4MDQsMTYgQEAgRXhlY0lu aXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCW1l bWNweShwc3RtdF9zcGFjZSwgcHN0bXRfZGF0YSwgcHN0bXRfbGVuKTsKIAlzaG1fdG9jX2luc2Vy dChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9QTEFOTkVEU1RNVCwgcHN0bXRfc3BhY2UpOwogCisJ LyogU3RvcmUgc2VyaWFsaXplZCBwYXJ0X3BydW5lX3Jlc3VsdHMgKi8KKwlwYXJ0X3BydW5lX3Jl c3VsdHNfc3BhY2UgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgcGFydF9wcnVuZV9yZXN1 bHRzX2xlbik7CisJbWVtY3B5KHBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZSwgcGFydF9wcnVuZV9y ZXN1bHRzX2RhdGEsIHBhcnRfcHJ1bmVfcmVzdWx0c19sZW4pOworCXNobV90b2NfaW5zZXJ0KHBj eHQtPnRvYywgUEFSQUxMRUxfS0VZX1BBUlRJVElPTl9QUlVORV9SRVNVTFRTLCBwYXJ0X3BydW5l X3Jlc3VsdHNfc3BhY2UpOworCisJLyogU3RvcmUgc2VyaWFsaXplZCB1bnBydW5lZF9yZWxpZHMg Ki8KKwl1bnBydW5lZF9yZWxpZHNfc3BhY2UgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywg dW5wcnVuZWRfcmVsaWRzX2xlbik7CisJbWVtY3B5KHVucHJ1bmVkX3JlbGlkc19zcGFjZSwgdW5w cnVuZWRfcmVsaWRzX2RhdGEsIHVucHJ1bmVkX3JlbGlkc19sZW4pOworCXNobV90b2NfaW5zZXJ0 KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1VOUFJVTkVEX1JFTElEUywgdW5wcnVuZWRfcmVsaWRz X3NwYWNlKTsKKwogCS8qIFN0b3JlIHNlcmlhbGl6ZWQgUGFyYW1MaXN0SW5mby4gKi8KIAlwYXJh bWxpc3RpbmZvX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHBhcmFtbGlzdGlu Zm9fbGVuKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9QQVJBTUxJ U1RJTkZPLCBwYXJhbWxpc3RpbmZvX3NwYWNlKTsKQEAgLTEyODAsMTAgKzEzMTMsMTUgQEAgRXhl Y1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZl ciwKIAkJCQkJCSBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQogewogCWNoYXIJICAgKnBzdG10c3Bh Y2U7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNlOworCWNoYXIJICAgKnVucHJ1 bmVkX3JlbGlkc19zcGFjZTsKIAljaGFyCSAgICpwYXJhbXNwYWNlOwogCVBsYW5uZWRTdG10ICpw c3RtdDsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdHM7CisJQml0bWFwc2V0ICAqdW5wcnVu ZWRfcmVsaWRzOwogCVBhcmFtTGlzdEluZm8gcGFyYW1MSTsKIAljaGFyCSAgICpxdWVyeVN0cmlu ZzsKKwlFU3RhdGUJICAgKnByZXBfZXN0YXRlID0gTlVMTDsKIAogCS8qIEdldCB0aGUgcXVlcnkg c3RyaW5nIGZyb20gc2hhcmVkIG1lbW9yeSAqLwogCXF1ZXJ5U3RyaW5nID0gc2htX3RvY19sb29r dXAodG9jLCBQQVJBTExFTF9LRVlfUVVFUllfVEVYVCwgZmFsc2UpOwpAQCAtMTI5NiwxMiArMTMz NCw4MCBAQCBFeGVjUGFyYWxsZWxHZXRRdWVyeURlc2Moc2htX3RvYyAqdG9jLCBEZXN0UmVjZWl2 ZXIgKnJlY2VpdmVyLAogCXBhcmFtc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0tFWV9QQVJBTUxJU1RJTkZPLCBmYWxzZSk7CiAJcGFyYW1MSSA9IFJlc3RvcmVQYXJhbUxpc3Qo JnBhcmFtc3BhY2UpOwogCisJLyogUmVjb25zdHJ1Y3QgbGVhZGVyLXN1cHBsaWVkIHBhcnRfcHJ1 bmVfcmVzdWx0cyBhbmQgdW5wcnVuZWRfcmVsaWRzLiAqLworCXBhcnRfcHJ1bmVfcmVzdWx0c19z cGFjZSA9CisJCXNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUlRJVElPTl9QUlVO RV9SRVNVTFRTLCBmYWxzZSk7CisJcGFydF9wcnVuZV9yZXN1bHRzID0gKExpc3QgKikgc3RyaW5n VG9Ob2RlKHBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZSk7CisJdW5wcnVuZWRfcmVsaWRzX3NwYWNl ID0KKwkJc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfVU5QUlVORURfUkVMSURTLCBm YWxzZSk7CisJdW5wcnVuZWRfcmVsaWRzID0gKEJpdG1hcHNldCAqKSBzdHJpbmdUb05vZGUodW5w cnVuZWRfcmVsaWRzX3NwYWNlKTsKKworCS8qCisJICogSWYgcHJ1bmluZyB3YXMgZG9uZSBpbiB0 aGUgbGVhZGVyLCBidWlsZCBhIHByZXAgZXN0YXRlIGluIHRoZSB3b3JrZXIKKwkgKiBhbmQgaW5q ZWN0IHRoZSBsZWFkZXIncyBwcnVuaW5nIHJlc3VsdHMgaW50byBpdCBmb3IgcmV1c2UuCisJICov CisJaWYgKHBzdG10LT5wYXJ0UHJ1bmVJbmZvcykKKwl7CisJCXByZXBfZXN0YXRlID0gRXhlY3V0 b3JQcmVwKHBzdG10LCBwYXJhbUxJLCBDdXJyZW50UmVzb3VyY2VPd25lciwgZmFsc2UsIDApOwor CQlBc3NlcnQocHJlcF9lc3RhdGUpOworCisJCXByZXBfZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jl c3VsdHMgPSBwYXJ0X3BydW5lX3Jlc3VsdHM7CisJCXByZXBfZXN0YXRlLT5lc191bnBydW5lZF9y ZWxpZHMgPQorCQkJYm1zX2FkZF9tZW1iZXJzKHByZXBfZXN0YXRlLT5lc191bnBydW5lZF9yZWxp ZHMsCisJCQkJCQkJdW5wcnVuZWRfcmVsaWRzKTsKKworCQkvKgorCQkgKiBBIGRlYnVnLWJ1aWxk LW9ubHkgY2hlY2sgdGhhdCB0aGUgcHJ1bmluZyByZXN1bHRzIHBhc3NlZCBmcm9tIHRoZQorCQkg KiBsZWFkZXIgbWF0Y2ggd2hhdCB0aGUgd29ya2VyIHdvdWxkIGluZGVwZW5kZW50bHkgY29tcHV0 ZS4KKwkJICovCisJCUNoZWNrSW5pdGlhbFBydW5pbmdSZXN1bHRzSW5Xb3JrZXIocHJlcF9lc3Rh dGUpOworCX0KKwogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAqLwogCXJl dHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQsCiAJCQkJCQkgICBxdWVyeVN0cmluZywKIAkJCQkJ CSAgIEdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCSAgIHJlY2Vp dmVyLCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50X29wdGlvbnMsCi0JCQkJCQkgICBOVUxMKTsK KwkJCQkJCSAgIHByZXBfZXN0YXRlKTsKK30KKworLyoKKyAqIENoZWNrSW5pdGlhbFBydW5pbmdS ZXN1bHRzSW5Xb3JrZXIKKyAqCQlWZXJpZnkgcGFydGl0aW9uIHBydW5pbmcgcmVzdWx0cyBwYXNz ZWQgZnJvbSB0aGUgbGVhZGVyIHByb2Nlc3MuCisgKgorICogVGhpcyBpcyBpbnRlbmRlZCB0byBi ZSBjYWxsZWQgZHVyaW5nIHBhcmFsbGVsIHdvcmtlciBxdWVyeSBzZXR1cC4KKyAqIEl0IHJlY29t cHV0ZXMgaW5pdGlhbCBwcnVuaW5nIHJlc3VsdHMgbG9jYWxseSBhbmQgY29tcGFyZXMgdGhlbSB3 aXRoCisgKiB0aG9zZSByZWNlaXZlZCBmcm9tIHRoZSBsZWFkZXIuIEFueSBtaXNtYXRjaCBtYXkg aW5kaWNhdGUgYSBkaXZlcmdlbmNlCisgKiBiZXR3ZWVuIGxlYWRlciBhbmQgd29ya2VyIGxvZ2lj IG9yIGVudmlyb25tZW50LgorICoKKyAqIE9ubHkgcGVyZm9ybWVkIGluIGRlYnVnIGJ1aWxkcy4K KyAqLworc3RhdGljIHZvaWQKK0NoZWNrSW5pdGlhbFBydW5pbmdSZXN1bHRzSW5Xb3JrZXIoRVN0 YXRlICplc3RhdGUpCit7CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCUxpc3RDZWxsICAg KmxjOworCWludAkJCWk7CisKKwlBc3NlcnQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMg IT0gTlVMTCk7CisJaSA9IDA7CisJZm9yZWFjaChsYywgZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0 YXRlcykKKwl7CisJCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUgPSAoUGFydGl0aW9u UHJ1bmVTdGF0ZSAqKSBsZmlyc3QobGMpOworCQlCaXRtYXBzZXQgKnJldXNlX3ZhbGlkc3VicGxh bnMgPQorCQkJCWxpc3RfbnRoX25vZGUoQml0bWFwc2V0LCBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVf cmVzdWx0cywgaSsrKTsKKwkJQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFucyA9IE5VTEw7CisJCUJp dG1hcHNldCAgKnZhbGlkc3VicGxhbl9ydGlzID0gTlVMTDsKKworCQlpZiAocHJ1bmVzdGF0ZS0+ ZG9faW5pdGlhbF9wcnVuZSkKKwkJCXZhbGlkc3VicGxhbnMgPSBFeGVjRmluZE1hdGNoaW5nU3Vi UGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgJnZhbGlkc3VicGxhbl9ydGlz KTsKKwkJaWYgKCFibXNfZXF1YWwodmFsaWRzdWJwbGFucywgcmV1c2VfdmFsaWRzdWJwbGFucykp CisJCQllbG9nKEVSUk9SLCAiZGlmZmVyZW50IHZhbGlkc3VicGxhbnMgaW4gcGFyYWxsZWwgd29y a2VyIik7CisJCWlmIChibXNfbm9uZW1wdHlfZGlmZmVyZW5jZSh2YWxpZHN1YnBsYW5fcnRpcywg ZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMpKQorCQkJZWxvZyhFUlJPUiwgImRpZmZlcmVudCB1 bnBydW5hYmxlX3JlbGlkcyBpbiBwYXJhbGxlbCB3b3JrZXIiKTsKKwl9CisjZW5kaWYKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggYmUyYTk2MWE5MTguLjFkMzI0 NDMwN2RhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtOTMsMTQgKzkzLDE0 IEBAIHN0YXRpYyBib29sIFN0bXRQbGFuUmVxdWlyZXNSZXZhbGlkYXRpb24oQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgYm9vbCBCdWlsZGluZ1BsYW5SZXF1aXJlc1NuYXBz aG90KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIExpc3QgKlJldmFsaWRh dGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgICBR dWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7Ci1zdGF0aWMgYm9vbCBQcmVwQW5kQ2hlY2tDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIENhY2hlZFBsYW5QcmVwRGF0YSAq Y3ByZXApOworc3RhdGljIGJvb2wgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApOwogc3RhdGljIENhY2hlZFBsYW4g KkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlz dCwKIAkJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVu dCAqcXVlcnlFbnYpOwogc3RhdGljIGJvb2wgY2hvb3NlX2N1c3RvbV9wbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcyk7 CiBzdGF0aWMgZG91YmxlIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBp bmNsdWRlX3BsYW5uZXIpOwogc3RhdGljIFF1ZXJ5ICpRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChM aXN0ICpzdG10cyk7Ci1zdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10 X2xpc3QsIGJvb2wgYWNxdWlyZSk7CitzdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2Nrc0Fs bChMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgdm9pZCBBY3F1aXJlRXhl Y3V0b3JMb2Nrc1VucHJ1bmVkKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlLAogCQkJCQkJ CQkJCSBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVwKTsKIHN0YXRpYyB2b2lkIENhY2hlZFBsYW5Q cmVwQ2xlYW51cChDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVwKTsKQEAgLTE0MiwyNiArMTQyLDYg QEAgUmVzb3VyY2VPd25lckZvcmdldFBsYW5DYWNoZVJlZihSZXNvdXJjZU93bmVyIG93bmVyLCBD YWNoZWRQbGFuICpwbGFuKQogLyogR1VDIHBhcmFtZXRlciAqLwogaW50CQkJcGxhbl9jYWNoZV9t b2RlID0gUExBTl9DQUNIRV9NT0RFX0FVVE87CiAKLS8qCi0gKiBMb2NrIGFjcXVpc2l0aW9uIHBv bGljeSBmb3IgZXhlY3V0aW9uIGxvY2tzLgotICoKLSAqIExPQ0tfQUxMIGFjcXVpcmVzIGxvY2tz IG9uIGFsbCByZWxhdGlvbnMgbWVudGlvbmVkIGluIHRoZSBwbGFuLAotICogcmVwcm9kdWNpbmcg dGhlIGJlaGF2aW9yIG9mIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkuCi0gKgotICogTE9DS19VTlBS VU5FRCByZXN0cmljdHMgbG9ja2luZyB0byBvbmx5IHRoZSB1bnBydW5lZCByZWxhdGlvbnMuIFRo YXQKLSAqIGluY2x1ZGVzIHRob3NlIG1lbnRpb25lZCBpbiBQbGFubmVkU3RtdC51bnBydW5hYmxl UmVsaWRzIGFuZCB0aGUgbGVhZgotICogcGFydGl0aW9ucyByZW1haW5pbmcgYWZ0ZXIgcGVyZm9y bWluZyBpbml0aWFsIHBydW5pbmcuCi0gKi8KLXR5cGVkZWYgZW51bSBMb2NrUG9saWN5Ci17Ci0J TE9DS19BTEwsCi0JTE9DS19VTlBSVU5FRCwKLX0gTG9ja1BvbGljeTsKLQotc3RhdGljIHZvaWQg QWNxdWlyZUV4ZWN1dG9yTG9ja3NXaXRoUG9saWN5KExpc3QgKnN0bXRfbGlzdCwKLQkJCQkJCQkJ CQkgICBMb2NrUG9saWN5IHBvbGljeSwgYm9vbCBhY3F1aXJlLAotCQkJCQkJCQkJCSAgIENhY2hl ZFBsYW5QcmVwRGF0YSAqY3ByZXApOwotCiAvKgogICogSW5pdFBsYW5DYWNoZTogaW5pdGlhbGl6 ZSBtb2R1bGUgZHVyaW5nIEluaXRQb3N0Z3Jlcy4KICAqCkBAIC05NjMsNyArOTQzLDcgQEAgUmV2 YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiB9CiAKIC8q Ci0gKiBQcmVwQW5kQ2hlY2tDYWNoZWRQbGFuOiBzZWUgaWYgdGhlIENhY2hlZFBsYW5Tb3VyY2Un cyBnZW5lcmljIHBsYW4gaXMgdmFsaWQuCisgKiBDaGVja0NhY2hlZFBsYW46IHNlZSBpZiB0aGUg Q2FjaGVkUGxhblNvdXJjZSdzIGdlbmVyaWMgcGxhbiBpcyB2YWxpZC4KICAqCiAgKiBJZiAnY3By ZXAnIGlzIG5vdCBOVUxMLCBFeGVjdXRvclByZXAoKSBpcyBhcHBsaWVkIHRvIGVhY2ggUGxhbm5l ZFN0bXQgdG8KICAqIGNvbXB1dGUgdGhlIHNldCBvZiBwYXJ0aXRpb25zIHRoYXQgc3Vydml2ZSBp bml0aWFsIHJ1bnRpbWUgcHJ1bmluZyBpbiBvcmRlcgpAQCAtOTc3LDcgKzk1Nyw3IEBAIFJldmFs aWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogICogKFdlIG11 c3QgZG8gdGhpcyBmb3IgdGhlICJ0cnVlIiByZXN1bHQgdG8gYmUgcmFjZS1jb25kaXRpb24tZnJl ZS4pCiAgKi8KIHN0YXRpYyBib29sCi1QcmVwQW5kQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApCitDaGVja0NhY2hl ZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgQ2FjaGVkUGxhblByZXBEYXRhICpj cHJlcCkKIHsKIAlDYWNoZWRQbGFuICpwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CiAKQEAgLTEw MDUsMTUgKzk4NSwxNiBAQCBQcmVwQW5kQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApCiAJICovCiAJaWYgKHBsYW4t PmlzX3ZhbGlkKQogCXsKLQkJTG9ja1BvbGljeSBwb2xpY3kgPSAhY3ByZXAgPyBMT0NLX0FMTCA6 IExPQ0tfVU5QUlVORUQ7Ci0KIAkJLyoKIAkJICogUGxhbiBtdXN0IGhhdmUgcG9zaXRpdmUgcmVm Y291bnQgYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJCSAqIHBsYW5zb3VyY2U7IHNvIG5v IG5lZWQgdG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVzIGhlcmUuCiAJCSAqLwogCQlBc3Nl cnQocGxhbi0+cmVmY291bnQgPiAwKTsKIAotCQlBY3F1aXJlRXhlY3V0b3JMb2Nrc1dpdGhQb2xp Y3kocGxhbi0+c3RtdF9saXN0LCBwb2xpY3ksIHRydWUsIGNwcmVwKTsKKwkJaWYgKGNwcmVwKQor CQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3NVbnBydW5lZChwbGFuLT5zdG10X2xpc3QsIHRydWUsIGNw cmVwKTsKKwkJZWxzZQorCQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3NBbGwocGxhbi0+c3RtdF9saXN0 LCB0cnVlKTsKIAogCQkvKgogCQkgKiBJZiBwbGFuIHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNl ZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCkBAIC0xMDM1LDcgKzEwMTYsMTAgQEAgUHJlcEFuZENo ZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBDYWNoZWRQbGFuUHJl cERhdGEgKmNwcmVwKQogCQl9CiAKIAkJLyogT29wcywgdGhlIHJhY2UgY2FzZSBoYXBwZW5lZC4g IFJlbGVhc2UgdXNlbGVzcyBsb2Nrcy4gKi8KLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3NXaXRoUG9s aWN5KHBsYW4tPnN0bXRfbGlzdCwgcG9saWN5LCBmYWxzZSwgY3ByZXApOworCQlpZiAoY3ByZXAp CisJCQlBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkKHBsYW4tPnN0bXRfbGlzdCwgZmFsc2Us IGNwcmVwKTsKKwkJZWxzZQorCQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3NBbGwocGxhbi0+c3RtdF9s aXN0LCBmYWxzZSk7CiAKIAkJLyogQWxzbyBjbGVhbiB1cCBFeGVjdXRvclByZXAoKSBzdGF0ZSwg aWYgbmVjZXNzYXJ5LiAqLwogCQlDYWNoZWRQbGFuUHJlcENsZWFudXAoY3ByZXApOwpAQCAtMTM1 OCw3ICsxMzQyLDcgQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl LCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCXsKIAkJaWYgKGNwcmVwKQogCQkJY3ByZXAt PnBhcmFtcyA9IGJvdW5kUGFyYW1zOwotCQlpZiAoUHJlcEFuZENoZWNrQ2FjaGVkUGxhbihwbGFu c291cmNlLCBjcHJlcCkpCisJCWlmIChDaGVja0NhY2hlZFBsYW4ocGxhbnNvdXJjZSwgY3ByZXAp KQogCQl7CiAJCQkvKiBXZSB3YW50IGEgZ2VuZXJpYyBwbGFuLCBhbmQgd2UgYWxyZWFkeSBoYXZl IGEgdmFsaWQgb25lICovCiAJCQlwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CkBAIC0xOTQ1LDQz ICsxOTI5LDEzIEBAIFF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRzKQogfQogCiAv KgotICogQWNxdWlyZUV4ZWN1dG9yTG9ja3NXaXRoUG9saWN5Ci0gKgkJQWNxdWlyZSBvciByZWxl YXNlIGV4ZWN1dGlvbiBsb2NrcyBmb3IgYSBjYWNoZWQgcGxhbiBhY2NvcmRpbmcgdG8KLSAqCQl0 aGUgc3BlY2lmaWVkIHBvbGljeS4KLSAqCi0gKiBMT0NLX0FMTCByZXByb2R1Y2VzIEFjcXVpcmVF eGVjdXRvckxvY2tzKCksIGxvY2tpbmcgZXZlcnkgcmVsYXRpb24gaW4KLSAqIGVhY2ggUGxhbm5l ZFN0bXQncyBydGFibGUuICBMT0NLX1VOUFJVTkVEIHJlc3RyaWN0cyBsb2NraW5nIHRvIHRoZQot ICogdW5wcnVuYWJsZSByZWxzIGFuZCBwYXJ0aXRpb25zIHRoYXQgc3Vydml2ZSBpbml0aWFsIHJ1 bnRpbWUgcHJ1bmluZy4KLSAqCi0gKiBXaGVuIExPQ0tfVU5QUlVORUQgaXMgdXNlZCBvbiBhY3F1 aXJlLCBFeGVjdXRvclByZXAoKSBpcyBpbnZva2VkIGZvcgotICogZWFjaCBQbGFubmVkU3RtdCBh bmQgdGhlIHJlc3VsdGluZyBFU3RhdGVzIGFyZSBhcHBlbmRlZCB0bwotICogY3ByZXAtPnByZXBf ZXN0YXRlcyBpbiBjcHJlcC0+Y29udGV4dC4gIE9uIHJlbGVhc2UsIHRoZSBzYW1lIEVTdGF0ZQot ICogbGlzdCBpcyBjb25zdWx0ZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIHJlbGF0aW9ucyB0byB1bmxv Y2sgYW5kIGVhY2gKLSAqIEVTdGF0ZSBpcyByZWxlYXNlZC4KLSAqLwotc3RhdGljIHZvaWQKLUFj cXVpcmVFeGVjdXRvckxvY2tzV2l0aFBvbGljeShMaXN0ICpzdG10X2xpc3QsIExvY2tQb2xpY3kg cG9saWN5LCBib29sIGFjcXVpcmUsCi0JCQkJCQkJICAgQ2FjaGVkUGxhblByZXBEYXRhICpjcHJl cCkKLXsKLQlzd2l0Y2ggKHBvbGljeSkKLQl7Ci0JCWNhc2UgTE9DS19BTEw6Ci0JCQlBY3F1aXJl RXhlY3V0b3JMb2NrcyhzdG10X2xpc3QsIGFjcXVpcmUpOwotCQkJYnJlYWs7Ci0JCWNhc2UgTE9D S19VTlBSVU5FRDoKLQkJCUFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoc3RtdF9saXN0LCBh Y3F1aXJlLCBjcHJlcCk7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWVsb2coRVJST1IsICJp bnZhbGlkIExvY2tQb2xpY3kiKTsKLQl9Ci19Ci0KLS8qCi0gKiBBY3F1aXJlRXhlY3V0b3JMb2Nr czogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIGV4ZWN1dGlvbiBvZiBhIGNhY2hlZCBwbGFuOwot ICogb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMgZmFsc2UuCisgKiBBY3F1aXJlRXhlY3V0 b3JMb2Nrc0FsbDogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIGV4ZWN1dGlvbiBvZiBhIGNhY2hl ZAorICogcGxhbjsgb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMgZmFsc2UuCisgKgorICog VGhpcyBsb2NrcyBhbGwgcmVsYXRpb25zIGluIGEgZ2l2ZW4gUGxhbm5lZFN0bXQncyByYW5nZSB0 YWJsZS4KICAqLwogc3RhdGljIHZvaWQKLUFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRf bGlzdCwgYm9vbCBhY3F1aXJlKQorQWNxdWlyZUV4ZWN1dG9yTG9ja3NBbGwoTGlzdCAqc3RtdF9s aXN0LCBib29sIGFjcXVpcmUpCiB7CiAJTGlzdENlbGwgICAqbGMxOwogCkBAIC0yMDQ0LDEwICsx OTk4LDggQEAgTG9ja1JlbGlkcyhMaXN0ICpydGFibGUsIEJpdG1hcHNldCAqcmVsaWRzLCBib29s IGFjcXVpcmUpCiAJewogCQlSYW5nZVRibEVudHJ5ICpydGUgPSBsaXN0X250aF9ub2RlKFJhbmdl VGJsRW50cnksIHJ0YWJsZSwgcnRpbmRleCAtIDEpOwogCi0JCWlmICghKHJ0ZS0+cnRla2luZCA9 PSBSVEVfUkVMQVRJT04gfHwKLQkJCSAgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYg T2lkSXNWYWxpZChydGUtPnJlbGlkKSkpKQotCQkJZWxvZyhFUlJPUiwgIkxvY2tSZWxpZHMoKTog Y2Fubm90IGxvY2sgcmVsYXRpb24gYXQgUlQgaW5kZXggJWQiLAotCQkJCSBydGluZGV4KTsKKwkJ QXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gfHwKKwkJCSAgIChydGUtPnJ0ZWtp bmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQocnRlLT5yZWxpZCkpKTsKIAogCQkvKgog CQkgKiBBY3F1aXJlIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9mIGxvY2sgb24gZWFjaCByZWxhdGlv biBPSUQuIE5vdGUKQEAgLTIyMDQsNyArMjE1Niw3IEBAIEFjcXVpcmVFeGVjdXRvckxvY2tzVW5w cnVuZWQoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUsCiAgKiBDYWNoZWRQbGFuUHJlcENs ZWFudXAKICAqCQlDbGVhbiB1cCBFU3RhdGUgYnVpbHQgZm9yIGEgZ2VuZXJpYyBwbGFuLgogICoK LSAqIFRoaXMgaXMgdXNlZCBpbiB0aGUgY29ybmVyIGNhc2Ugd2hlcmUgUHJlcEFuZENoZWNrQ2Fj aGVkUGxhbigpIGRpc2NvdmVycworICogVGhpcyBpcyB1c2VkIGluIHRoZSBjb3JuZXIgY2FzZSB3 aGVyZSBDaGVja0NhY2hlZFBsYW4oKSBkaXNjb3ZlcnMKICAqIHRoYXQgYSBDYWNoZWRQbGFuIGhh cyBiZWNvbWUgaW52YWxpZCBhZnRlciBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkKCkKICAq IGhhcyBhbHJlYWR5IHJ1bi4gIEluIHRoYXQgY2FzZSB3ZSBtdXN0IGJvdGggcmVsZWFzZSB0aGUg ZXhlY3V0aW9uIGxvY2tzCiAgKiBhbmQgZGlzcG9zZSBvZiB0aGUgRXhlY1ByZXAgbGlzdCBzdG9y ZWQgaW4gQ2FjaGVkUGxhblByZXBEYXRhLCBzaW5jZSB0aGUKQEAgLTIyMTQsMTAgKzIxNjYsMTQg QEAgc3RhdGljIHZvaWQKIENhY2hlZFBsYW5QcmVwQ2xlYW51cChDYWNoZWRQbGFuUHJlcERhdGEg KmNwcmVwKQogewogCUxpc3RDZWxsICAgKmxjOworCVJlc291cmNlT3duZXIgb2xkb3duZXI7CiAK IAlpZiAoY3ByZXAgPT0gTlVMTCkKIAkJcmV0dXJuOwogCisJLyogU3dpdGNoIHRvIG93bmVyIHRo YXQgRXhlY3V0b3JQcmVwKCkgd291bGQgaGF2ZSB1c2VkLiAqLworCW9sZG93bmVyID0gQ3VycmVu dFJlc291cmNlT3duZXI7CisJQ3VycmVudFJlc291cmNlT3duZXIgPSBjcHJlcC0+b3duZXI7CiAJ Zm9yZWFjaChsYywgY3ByZXAtPnByZXBfZXN0YXRlcykKIAl7CiAJCUVTdGF0ZSAqcHJlcF9lc3Rh dGUgPSAoRVN0YXRlICopIGxmaXJzdChsYyk7CkBAIC0yMjI4LDYgKzIxODQsNyBAQCBDYWNoZWRQ bGFuUHJlcENsZWFudXAoQ2FjaGVkUGxhblByZXBEYXRhICpjcHJlcCkKIAkJRXhlY0Nsb3NlUmFu Z2VUYWJsZVJlbGF0aW9ucyhwcmVwX2VzdGF0ZSk7CiAJCUZyZWVFeGVjdXRvclN0YXRlKHByZXBf ZXN0YXRlKTsKIAl9CisJQ3VycmVudFJlc291cmNlT3duZXIgPSBvbGRvd25lcjsKIAogCWxpc3Rf ZnJlZShjcHJlcC0+cHJlcF9lc3RhdGVzKTsKIAljcHJlcC0+cHJlcF9lc3RhdGVzID0gTklMOwot LSAKMi40Ny4zCgo= --000000000000c3b932064c6c289e Content-Type: application/octet-stream; name="v6-0005-Make-SQL-function-executor-track-ExecutorPrep-sta.patch" Content-Disposition: attachment; filename="v6-0005-Make-SQL-function-executor-track-ExecutorPrep-sta.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmg4yi2v1 RnJvbSA4MzZmMGI2M2NlZDI1NDZiNTk0NjQzMDQzYjdkMDA1NWZmYWE3YjY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTAgRmViIDIwMjYgMjI6MDk6MjMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY2 IDUvNl0gTWFrZSBTUUwgZnVuY3Rpb24gZXhlY3V0b3IgdHJhY2sgRXhlY3V0b3JQcmVwIHN0YXRl CgpFeHRlbmQgdGhlIFNRTCBmdW5jdGlvbiBleGVjdXRvciB0byB1c2UgdGhlIEV4ZWN1dG9yUHJl cCByZXN1bHRzCnJldHVybmVkIGJ5IEdldENhY2hlZFBsYW4oKS4gIGluaXRfZXhlY3V0aW9uX3N0 YXRlKCkgbm93IHBhc3NlcyBhCkNhY2hlZFBsYW5QcmVwRGF0YSB0byBHZXRDYWNoZWRQbGFuKCkg YW5kIHN0b3JlcyB0aGUgcGVyIHN0YXRlbWVudApFeGVjUHJlcCBwb2ludGVycyBpbiB0aGUgZXhl Y3V0aW9uX3N0YXRlIG5vZGVzLgoKQXQgZXhlY3V0aW9uIHRpbWUsIHBvc3RxdWVsX3N0YXJ0KCkg cmVwYXJlbnRzIHRoZSBwcmVwIGVzdGF0ZSdzCmVzX3F1ZXJ5X2N4dCB1bmRlciB0aGUgZnVuY3Rp b24ncyBzdWJjb250ZXh0IHNvIHRoYXQgcHJlcCBzdGF0ZQpmb2xsb3dzIHRoZSB1c3VhbCBwZXIg Y2FsbCBjb250ZXh0IGhpZXJhcmNoeS4KClRoaXMgYWxsb3dzIFNRTCBsYW5ndWFnZSBmdW5jdGlv bnMgdG8gcGFydGljaXBhdGUgaW4gdGhlIHNhbWUKRXhlY3V0b3JQcmVwIG1hY2hpbmVyeSBhcyBv dGhlciBwbGFuIGNhY2hlIHVzZXJzLgoKQWRkIGEgcmVncmVzc2lvbiB0ZXN0IHdoZXJlIHJ1bGUg cmV3cml0ZSBleHBhbmRzIGEgc2luZ2xlIFVQREFURQppbnRvIG11bHRpcGxlIFBsYW5uZWRTdG10 cywgZXhlcmNpc2luZyB0aGUgU1FMIGZ1bmN0aW9uIHBsYW4gY2FjaGUKYW5kIHRoZSBnZW5lcmlj IHBsYW4gcmV1c2UgcGF0aCB0aGF0IG5vdyBpbnZva2VzIEV4ZWN1dG9yUHJlcC4KLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgfCAyOSArKysrKysrKysrKysrLS0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dCB8IDQ4ICsrKysrKysrKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNoZS5zcWwgICAgICB8 IDM0ICsrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5j dGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IDY1ZGZhZTU4 ZGNmLi5jNzBlMDZkODg4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rp b25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTcyLDYgKzcy LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZXhlY3V0aW9uX3N0YXRlCiAJYm9vbAkJc2V0c1Jlc3VsdDsJ CS8qIHRydWUgaWYgdGhpcyBxdWVyeSBwcm9kdWNlcyBmdW5jJ3MgcmVzdWx0ICovCiAJYm9vbAkJ bGF6eUV2YWw7CQkvKiB0cnVlIGlmIHNob3VsZCBmZXRjaCBvbmUgcm93IGF0IGEgdGltZSAqLwog CVBsYW5uZWRTdG10ICpzdG10OwkJCS8qIHBsYW4gZm9yIHRoaXMgcXVlcnkgKi8KKwlFU3RhdGUJ ICAgKnByZXBfZXN0YXRlOwkvKiBFU3RhdGUgY3JlYXRlZCBpbiBFeGVjdXRvclByZXAoKSBmb3Ig dGhpcyBwbGFuICovCiAJUXVlcnlEZXNjICAqcWQ7CQkJCS8qIG51bGwgdW5sZXNzIHN0YXR1cyA9 PSBSVU4gKi8KIH0gZXhlY3V0aW9uX3N0YXRlOwogCkBAIC02NTcsNiArNjU4LDggQEAgaW5pdF9l eGVjdXRpb25fc3RhdGUoU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJZXhlY3V0aW9uX3N0 YXRlICpsYXN0dGFnZXMgPSBOVUxMOwogCWludAkJCW5zdG10czsKIAlMaXN0Q2VsbCAgICpsYzsK KwlDYWNoZWRQbGFuUHJlcERhdGEgY3ByZXAgPSB7MH07CisJTGlzdENlbGwgICAqcHJlcF9sYzsK IAogCS8qCiAJICogQ2xlYW4gdXAgYWZ0ZXIgcHJldmlvdXMgcXVlcnksIGlmIHRoZXJlIHdhcyBv bmUuCkBAIC02OTUsMTEgKzY5OCwyMCBAQCBpbml0X2V4ZWN1dGlvbl9zdGF0ZShTUUxGdW5jdGlv bkNhY2hlUHRyIGZjYWNoZSkKIAkgKiBDdXJyZW50UmVzb3VyY2VPd25lciB3aWxsIGJlIHRoZSBz YW1lIHdoZW4gU2h1dGRvd25TUUxGdW5jdGlvbiBydW5zLikKIAkgKi8KIAlmY2FjaGUtPmNvd25l ciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOworCisJLyoKKwkgKiBIYXZlIEV4ZWN1dG9yUHJlcCgp IGFsbG9jYXRlIHVuZGVyIGZjYWNoZS0+ZmNvbnRleHQuICBUaGUgcHJlcAorCSAqIEVTdGF0ZXMg aXQgY3JlYXRlcyB3aWxsIGluaXRpYWxseSBsaXZlIHRoZXJlOyBwb3N0cXVlbF9zdGFydCgpCisJ ICogd2lsbCBsYXRlciByZXBhcmVudCB0aGVpciBlc19xdWVyeV9jeHQgaW50byBmY2FjaGUtPnN1 YmNvbnRleHQKKwkgKiB3aGVuIHVzaW5nIHRoZW0gZm9yIGV4ZWN1dGlvbi4KKwkgKi8KKwljcHJl cC5jb250ZXh0ID0gZmNhY2hlLT5mY29udGV4dDsKKwljcHJlcC5vd25lciA9IGZjYWNoZS0+Y293 bmVyOwogCWZjYWNoZS0+Y3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsCiAJCQkJCQkJ CSAgZmNhY2hlLT5wYXJhbUxJLAogCQkJCQkJCQkgIGZjYWNoZS0+Y293bmVyLAogCQkJCQkJCQkg IE5VTEwsCi0JCQkJCQkJCSAgTlVMTCk7CisJCQkJCQkJCSAgJmNwcmVwKTsKIAogCS8qCiAJICog SWYgbmVjZXNzYXJ5LCBtYWtlIGVzYXJyYXlbXSBiaWdnZXIgdG8gaG9sZCB0aGUgbmVlZGVkIHN0 YXRlLgpAQCAtNzIwLDkgKzczMiwxMSBAQCBpbml0X2V4ZWN1dGlvbl9zdGF0ZShTUUxGdW5jdGlv bkNhY2hlUHRyIGZjYWNoZSkKIAkvKgogCSAqIEJ1aWxkIGV4ZWN1dGlvbl9zdGF0ZSBsaXN0IHRv IG1hdGNoIHRoZSBudW1iZXIgb2YgY29udGFpbmVkIHBsYW5zLgogCSAqLworCXByZXBfbGMgPSBs aXN0X2hlYWQoY3ByZXAucHJlcF9lc3RhdGVzKTsKIAlmb3JlYWNoKGxjLCBmY2FjaGUtPmNwbGFu LT5zdG10X2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5u ZWRTdG10LCBsYyk7CisJCUVTdGF0ZSAqcHJlcF9lc3RhdGUgPSBuZXh0X3ByZXBfZXN0YXRlKGNw cmVwLnByZXBfZXN0YXRlcywgJnByZXBfbGMpOwogCQlleGVjdXRpb25fc3RhdGUgKm5ld2VzOwog CiAJCS8qCkBAIC03NjQsNiArNzc4LDcgQEAgaW5pdF9leGVjdXRpb25fc3RhdGUoU1FMRnVuY3Rp b25DYWNoZVB0ciBmY2FjaGUpCiAJCW5ld2VzLT5zZXRzUmVzdWx0ID0gZmFsc2U7CS8qIG1pZ2h0 IGNoYW5nZSBiZWxvdyAqLwogCQluZXdlcy0+bGF6eUV2YWwgPSBmYWxzZTsJLyogbWlnaHQgY2hh bmdlIGJlbG93ICovCiAJCW5ld2VzLT5zdG10ID0gc3RtdDsKKwkJbmV3ZXMtPnByZXBfZXN0YXRl ID0gcHJlcF9lc3RhdGU7CiAJCW5ld2VzLT5xZCA9IE5VTEw7CiAKIAkJaWYgKHN0bXQtPmNhblNl dFRhZykKQEAgLTEzNjIsNiArMTM3NywxNSBAQCBwb3N0cXVlbF9zdGFydChleGVjdXRpb25fc3Rh dGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAllbHNlCiAJCWRlc3QgPSBOb25l X1JlY2VpdmVyOwogCisJLyoKKwkgKiBQcmVwIEVTdGF0ZXMgd2VyZSBidWlsdCB1bmRlciBmY2Fj aGUtPmZjb250ZXh0LiAgRm9yIGV4ZWN1dGlvbiwKKwkgKiBtYWtlIHRoZWlyIGVzX3F1ZXJ5X2N4 dCBhIGNoaWxkIG9mIGZjYWNoZS0+c3ViY29udGV4dCBzbyB0aGV5CisJICogZm9sbG93IHRoZSB1 c3VhbCBwZXIgY2FsbCBsaWZldGltZS4KKwkgKi8KKwlpZiAoZXMtPnByZXBfZXN0YXRlKQorCQlN ZW1vcnlDb250ZXh0U2V0UGFyZW50KGVzLT5wcmVwX2VzdGF0ZS0+ZXNfcXVlcnlfY3h0LAorCQkJ CQkJCSAgIGZjYWNoZS0+c3ViY29udGV4dCk7CisKIAllcy0+cWQgPSBDcmVhdGVRdWVyeURlc2Mo ZXMtPnN0bXQsCiAJCQkJCQkJIGZjYWNoZS0+ZnVuYy0+c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVT bmFwc2hvdCgpLApAQCAtMTM3MCw3ICsxMzk0LDcgQEAgcG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9u X3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJCQkJCQkJIGZjYWNoZS0+ cGFyYW1MSSwKIAkJCQkJCQkgZXMtPnFkID8gZXMtPnFkLT5xdWVyeUVudiA6IE5VTEwsCiAJCQkJ CQkJIDAsCi0JCQkJCQkJIE5VTEwpOworCQkJCQkJCSBlcy0+cHJlcF9lc3RhdGUpOwogCiAJLyog VXRpbGl0eSBjb21tYW5kcyBkb24ndCBuZWVkIEV4ZWN1dG9yLiAqLwogCWlmIChlcy0+cWQtPm9w ZXJhdGlvbiAhPSBDTURfVVRJTElUWSkKQEAgLTE0NjEsNiArMTQ4NSw3IEBAIHBvc3RxdWVsX2Vu ZChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAogCUZy ZWVRdWVyeURlc2MoZXMtPnFkKTsKIAllcy0+cWQgPSBOVUxMOworCWVzLT5wcmVwX2VzdGF0ZSA9 IE5VTEw7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dAppbmRleCAxZDY5YWIwYTFjMi4uMzcxNjczYTZl OTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQKQEAgLTQ1OSw0ICs0 NTksNTIgQEAgTk9USUNFOiAgY3JlYXRpbmcgaW5kZXggb24gcGFydGl0aW9uIGludmFsX2R1cmlu Z19wcnVuaW5nX3AxCiBkcm9wIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3AsIGludmFsX2R1 cmluZ19wcnVuaW5nX3NpZ25hbDsKIGRyb3AgZnVuY3Rpb24gaW52YWxpZGF0ZV9wbGFuY2FjaGVf ZnVuYywgc3RhYmxlX3BydW5pbmdfdmFsOwogZGVhbGxvY2F0ZSBpbnZhbF9kdXJpbmdfcHJ1bmlu Z19xOworLS0gZXhlcmNpc2Ugc3FsLWZ1bmN0aW9uIHBsYW4gY2FjaGUgd2hlbiByZXdyaXRlIGV4 cGFuZHMgYSBzaW5nbGUgc3RhdGVtZW50CistLSBpbnRvIG11bHRpcGxlIHBsYW5uZWQgc3RhdGVt ZW50cy4gdGhpcyBmb3JjZXMgY2FjaGVkcGxhbi0+c3RtdF9saXN0IHRvCistLSBjb250YWluIG1v cmUgdGhhbiBvbmUgZW50cnkgYW5kIGNoZWNrcyB0aGF0IGV4ZWN1dG9yIHN0YXRlIGZvciB0aGUg Zmlyc3QKKy0tIHJld3JpdHRlbiBzdGF0ZW1lbnQgZG9lcyBub3QgZGVzdHJveSBzdGF0ZSBuZWVk ZWQgYnkgdGhlIHNlY29uZCBvbmUuCitzZXQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJp Y19wbGFuOworY3JlYXRlIHRhYmxlIHNxbGZfYmFzZShpZCBpbnQsIHZhbCBpbnQpIHBhcnRpdGlv biBieSBsaXN0IChpZCk7CitjcmVhdGUgdGFibGUgc3FsZl9iYXNlXzEgcGFydGl0aW9uIG9mIHNx bGZfYmFzZSBmb3IgdmFsdWVzIGluICgxKTsKK2NyZWF0ZSB0YWJsZSBzcWxmX2Jhc2VfMiBwYXJ0 aXRpb24gb2Ygc3FsZl9iYXNlIGZvciB2YWx1ZXMgaW4gKDIpOworY3JlYXRlIHRhYmxlIHNxbGZf bG9nKGlkIGludCwgbm90ZSB0ZXh0KTsKK2luc2VydCBpbnRvIHNxbGZfYmFzZSB2YWx1ZXMgKDEs IDEwKTsKK2NyZWF0ZSBydWxlIHNxbGZfYmFzZV91cGRfbG9nIGFzCitvbiB1cGRhdGUgdG8gc3Fs Zl9iYXNlIGRvIGFsc28KKwlpbnNlcnQgaW50byBzcWxmX2xvZyhpZCwgbm90ZSkKKwl2YWx1ZXMg KG5ldy5pZCwgJ2xvZ2dlZCBieSBydWxlJyk7CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBz cWxmX2V4ZWNwcmVwX3Rlc3QoYSBpbnQsIHYgaW50KQorcmV0dXJucyB2b2lkCitsYW5ndWFnZSBz cWwKK2FzICQkCisJdXBkYXRlIHNxbGZfYmFzZSBzZXQgdmFsID0gdiB3aGVyZSBpZCA9IGE7Cisk JDsKK3NlbGVjdCBzcWxmX2V4ZWNwcmVwX3Rlc3QoMSwgMjApOworIHNxbGZfZXhlY3ByZXBfdGVz dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBzcWxmX2V4ZWNw cmVwX3Rlc3QoMSwgMzApOworIHNxbGZfZXhlY3ByZXBfdGVzdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20gc3FsZl9iYXNlIG9yZGVyIGJ5IDE7Cisg aWQgfCB2YWwgCistLS0tKy0tLS0tCisgIDEgfCAgMzAKKygxIHJvdykKKworc2VsZWN0ICogZnJv bSBzcWxmX2xvZyBvcmRlciBieSAxOworIGlkIHwgICAgICBub3RlICAgICAgCistLS0tKy0tLS0t LS0tLS0tLS0tLS0KKyAgMSB8IGxvZ2dlZCBieSBydWxlCisgIDEgfCBsb2dnZWQgYnkgcnVsZQor KDIgcm93cykKKworZHJvcCBydWxlIHNxbGZfYmFzZV91cGRfbG9nIG9uIHNxbGZfYmFzZTsKK2Ry b3AgdGFibGUgc3FsZl9iYXNlLCBzcWxmX2xvZzsKK2Ryb3AgZnVuY3Rpb24gc3FsZl9leGVjcHJl cF90ZXN0OwogcmVzZXQgcGxhbl9jYWNoZV9tb2RlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGxhbmNhY2hlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNoZS5z cWwKaW5kZXggMTM5YjQ2ODhmZDYuLmI4OWM5YWQ2OWE0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wbGFuY2FjaGUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5j YWNoZS5zcWwKQEAgLTI3Myw0ICsyNzMsMzggQEAgZHJvcCB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1 bmluZ19wLCBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWduYWw7CiBkcm9wIGZ1bmN0aW9uIGludmFs aWRhdGVfcGxhbmNhY2hlX2Z1bmMsIHN0YWJsZV9wcnVuaW5nX3ZhbDsKIGRlYWxsb2NhdGUgaW52 YWxfZHVyaW5nX3BydW5pbmdfcTsKIAorLS0gZXhlcmNpc2Ugc3FsLWZ1bmN0aW9uIHBsYW4gY2Fj aGUgd2hlbiByZXdyaXRlIGV4cGFuZHMgYSBzaW5nbGUgc3RhdGVtZW50CistLSBpbnRvIG11bHRp cGxlIHBsYW5uZWQgc3RhdGVtZW50cy4gdGhpcyBmb3JjZXMgY2FjaGVkcGxhbi0+c3RtdF9saXN0 IHRvCistLSBjb250YWluIG1vcmUgdGhhbiBvbmUgZW50cnkgYW5kIGNoZWNrcyB0aGF0IGV4ZWN1 dG9yIHN0YXRlIGZvciB0aGUgZmlyc3QKKy0tIHJld3JpdHRlbiBzdGF0ZW1lbnQgZG9lcyBub3Qg ZGVzdHJveSBzdGF0ZSBuZWVkZWQgYnkgdGhlIHNlY29uZCBvbmUuCisKK3NldCBwbGFuX2NhY2hl X21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisKK2NyZWF0ZSB0YWJsZSBzcWxmX2Jhc2UoaWQg aW50LCB2YWwgaW50KSBwYXJ0aXRpb24gYnkgbGlzdCAoaWQpOworY3JlYXRlIHRhYmxlIHNxbGZf YmFzZV8xIHBhcnRpdGlvbiBvZiBzcWxmX2Jhc2UgZm9yIHZhbHVlcyBpbiAoMSk7CitjcmVhdGUg dGFibGUgc3FsZl9iYXNlXzIgcGFydGl0aW9uIG9mIHNxbGZfYmFzZSBmb3IgdmFsdWVzIGluICgy KTsKK2NyZWF0ZSB0YWJsZSBzcWxmX2xvZyhpZCBpbnQsIG5vdGUgdGV4dCk7CisKK2luc2VydCBp bnRvIHNxbGZfYmFzZSB2YWx1ZXMgKDEsIDEwKTsKKworY3JlYXRlIHJ1bGUgc3FsZl9iYXNlX3Vw ZF9sb2cgYXMKK29uIHVwZGF0ZSB0byBzcWxmX2Jhc2UgZG8gYWxzbworCWluc2VydCBpbnRvIHNx bGZfbG9nKGlkLCBub3RlKQorCXZhbHVlcyAobmV3LmlkLCAnbG9nZ2VkIGJ5IHJ1bGUnKTsKKwor Y3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gc3FsZl9leGVjcHJlcF90ZXN0KGEgaW50LCB2IGlu dCkKK3JldHVybnMgdm9pZAorbGFuZ3VhZ2Ugc3FsCithcyAkJAorCXVwZGF0ZSBzcWxmX2Jhc2Ug c2V0IHZhbCA9IHYgd2hlcmUgaWQgPSBhOworJCQ7CisKK3NlbGVjdCBzcWxmX2V4ZWNwcmVwX3Rl c3QoMSwgMjApOworc2VsZWN0IHNxbGZfZXhlY3ByZXBfdGVzdCgxLCAzMCk7CitzZWxlY3QgKiBm cm9tIHNxbGZfYmFzZSBvcmRlciBieSAxOworc2VsZWN0ICogZnJvbSBzcWxmX2xvZyBvcmRlciBi eSAxOworCitkcm9wIHJ1bGUgc3FsZl9iYXNlX3VwZF9sb2cgb24gc3FsZl9iYXNlOworZHJvcCB0 YWJsZSBzcWxmX2Jhc2UsIHNxbGZfbG9nOworZHJvcCBmdW5jdGlvbiBzcWxmX2V4ZWNwcmVwX3Rl c3Q7CiByZXNldCBwbGFuX2NhY2hlX21vZGU7Ci0tIAoyLjQ3LjMKCg== --000000000000c3b932064c6c289e Content-Type: application/octet-stream; name="v6-0002-Introduce-ExecutorPrep-and-refactor-executor-star.patch" Content-Disposition: attachment; filename="v6-0002-Introduce-ExecutorPrep-and-refactor-executor-star.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmg4yi334 RnJvbSBhZWFhYTUwNTlhN2JlMDZjMzAxYjEzNzJjMTY4MjkyMjViMjc3MGZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjE6NDc6NDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHY2 IDIvNl0gSW50cm9kdWNlIEV4ZWN1dG9yUHJlcCBhbmQgcmVmYWN0b3IgZXhlY3V0b3Igc3RhcnR1 cAoKRmFjdG9yIHBlcm1pc3Npb24gY2hlY2tzLCByYW5nZSB0YWJsZSBpbml0aWFsaXphdGlvbiwg YW5kIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgb3V0IG9mIEluaXRQbGFuKCkgaW50byBhIG5l dyBFeGVjdXRvclByZXAoKQpoZWxwZXIuIEV4ZWN1dG9yUHJlcCgpIGJ1aWxkcyBhbiBFU3RhdGUg Y29udGFpbmluZyB0aGUgZXhlY3V0b3IKbWV0YWRhdGEgbmVlZGVkIGJlZm9yZSBwbGFuIGV4ZWN1 dGlvbiwgaW5jbHVkaW5nIHBhcnRpdGlvbgpwcnVuaW5nIHN0YXRlIHdoZXJlIHBhcnRQcnVuZUlu Zm9zIGFyZSBwcmVzZW50LCBhbmQgcmV0dXJucyBpdApkaXJlY3RseSB0byB0aGUgY2FsbGVyLgoK RXhlY3V0b3JTdGFydCgpIG5vdyBjaGVja3MgaWYgUXVlcnlEZXNjLT5lc3RhdGUgaXMgYWxyZWFk eSBzZXQKKGluZGljYXRpbmcgRXhlY3V0b3JQcmVwKCkgd2FzIGNhbGxlZCBlYXJsaWVyKS4gSWYg c28sIGl0IHJldXNlcwp0aGUgRVN0YXRlIHRvIGF2b2lkIHJlZG9pbmcgcmFuZ2UgdGFibGUgc2V0 dXAgYW5kIHBydW5pbmcuCk90aGVyd2lzZSwgaXQgaW52b2tlcyBFeGVjdXRvclByZXAoKSBpdHNl bGYgYW5kIGFkb3B0cyB0aGUKcmVzdWx0aW5nIEVTdGF0ZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRo ZSBxdWVyeS4gVGhpcyBrZWVwcyB0aGUKZXhlY3V0b3Igc3RhcnR1cCBiZWhhdmlvciB1bmNoYW5n ZWQgd2hpbGUgbWFraW5nIHRoZSBzZXR1cCB3b3JrCmNhbGxhYmxlIHNlcGFyYXRlbHkgd2hlbiBu ZWVkZWQuCgpDcmVhdGVRdWVyeURlc2MoKSBncm93cyBhIHByZXBfZXN0YXRlIGFyZ3VtZW50IHRv IGFjY2VwdCBhbgpvcHRpb25hbGx5IHByZS1jcmVhdGVkIEVTdGF0ZSBhbmQgc3RvcmVzIGl0IGlu IHRoZSBRdWVyeURlc2MuClBvcnRhbHMsIFNQSSwgU1FMIGZ1bmN0aW9ucywgYW5kIEVYUExBSU4g YXJlIHdpcmVkIHRvIGNhcnJ5Cm9wdGlvbmFsIEVTdGF0ZSBwb2ludGVycyBhbG9uZ3NpZGUgdGhl IFBsYW5uZWRTdG10IGxpc3QsIGJ1dCBtb3N0CmNhbGxlcnMgc3RpbGwgcGFzcyBOVUxMIGFuZCBs ZXQgRXhlY3V0b3JTdGFydCgpIHBlcmZvcm0gdGhlIHNldHVwCmxhemlseS4KCkV4ZWN1dG9yUHJl cCgpIHJlcXVpcmVzIHRoZSBjYWxsZXIgdG8gaGF2ZSBlc3RhYmxpc2hlZCBhbiBhY3RpdmUKc25h cHNob3QsIGFzIHBhcnRpdGlvbiBwcnVuaW5nIGV4cHJlc3Npb25zIG1heSBjYWxsIFBMIGZ1bmN0 aW9ucwp0aGF0IGludGVybmFsbHkgcmVxdWlyZSBvbmUgKGUuZy4sIHZpYSBFbnN1cmVQb3J0YWxT bmFwc2hvdEV4aXN0cygpKS4KClVwZGF0ZSBleGVjdXRvci9SRUFETUUgYW5kIHJlbGF0ZWQgY29t bWVudHMgdG8gZG9jdW1lbnQgdGhlIG5ldwpjb250cm9sIGZsb3cgYW5kIHRoZSBzZXBhcmF0aW9u IGJldHdlZW4gcHJlcGFyYXRpb24gYW5kIGV4ZWN1dGlvbi4KCk5vdGUgdGhhdCBhcyBvZiB0aGlz IGNvbW1pdCwgRXhlY3V0b3JTdGFydCgpIGlzIHRoZSBvbmx5IGNhbGxlciBvZgpFeGVjdXRvclBy ZXAoKSwgc28gdGhlcmUgaXMgbm8gc2VtYW50aWMgY2hhbmdlIGluIGJlaGF2aW9yLiBMYXRlcgpj b21taXRzIHdpbGwgYWRkIHNwZWNpYWxpemVkIGNhbGxlcnMgdGhhdCBpbnZva2UgRXhlY3V0b3JQ cmVwKCkKZWFybGllciB0byBlbmFibGUgcHJ1bmluZy1hd2FyZSBsb2NraW5nIGluIGNhY2hlZCBw bGFucy4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgICB8ICAgMiArLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9l eHRlbnNpb24uYyAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgIHwgICAxICsK IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgIHwgICA5ICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9SRUFETUUgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyAgICAgfCAxNzYgKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2Z1bmN0aW9ucy5jICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAg ICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgfCAg IDIgKwogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgfCAgMjQgKysrLQogc3Jj L2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgfCAgIDIgKwogc3JjL2luY2x1ZGUvY29t bWFuZHMvZXhwbGFpbi5oICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNk ZXNjLmggICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICB8 ICAyNiArKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICB8ICAgMSAtCiBz cmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaCAgICAgICAgICB8ICAgMiArCiAyMCBmaWxlcyBjaGFu Z2VkLCAyNDEgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8u YwppbmRleCA5Y2VlZmY2ZDk5ZS4uZWYxZWUyNTY4YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBA IC04NzUsNyArODc1LDcgQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQljc3Rh dGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4 dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNu YXBzaG90LAotCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKKwkJCQkJCQkJCQkJZGVz dCwgTlVMTCwgTlVMTCwgMCwgTlVMTCk7CiAKIAkJLyoKIAkJICogQ2FsbCBFeGVjdXRvclN0YXJ0 IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5j CmluZGV4IDI3MGU5YmYzMTEwLi5iNGE5ODA4OTU1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY3JlYXRlYXMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5j CkBAIC0zMzYsNyArMzM2LDcgQEAgRXhlY0NyZWF0ZVRhYmxlQXMoUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVUYWJsZUFzU3RtdCAqc3RtdCwKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRp cmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCiAJCXF1ZXJ5RGVzYyA9IENy ZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFj dGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKLQkJCQkJCQkJCWRlc3QsIHBhcmFtcywg cXVlcnlFbnYsIDApOworCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCwgTlVMTCk7 CiAKIAkJLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1 dGlvbiAqLwogCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgR2V0SW50b1JlbEVGbGFncyhpbnRv KSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggOTM5MThhMjIzYjguLjQwNTY0ZDRkZmY5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhbmRhcmRfRXhwbGFp bk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJfQogCiAJLyogcnVu IGl0IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwotCUV4cGxhaW5PbmVQbGFuKHBs YW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwlFeHBsYWluT25l UGxhbihwbGFuLCBOVUxMLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYs CiAJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCks CiAJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIH0KQEAgLTQ5Miw3 ICs0OTIsOCBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVz ZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4 cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywg RXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCwgRVN0YXRlICpwcmVwX2VzdGF0ZSwKKwkJCSAgIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5T dGF0ZSAqZXMsCiAJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgUGFyYW1MaXN0SW5mbyBw YXJhbXMsCiAJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwgY29uc3QgaW5zdHJfdGlt ZSAqcGxhbmR1cmF0aW9uLAogCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLApAQCAt NTUwLDcgKzU1MSw4IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwg SW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkvKiBDcmVhdGUgYSBRdWVyeURl c2MgZm9yIHRoZSBxdWVyeSAqLwogCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVk c3RtdCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRT bmFwc2hvdCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRp b24pOworCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbiwK KwkJCQkJCQkJcHJlcF9lc3RhdGUpOwogCiAJLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICov CiAJaWYgKGVzLT5hbmFseXplKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0 ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwppbmRleCA5NjM2MThh NjRjNC4uZmY3NTlkZGQwN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVu c2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC0xMTczLDcg KzExNzMsNyBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hhciAqc3FsLCBjb25zdCBjaGFy ICpmaWxlbmFtZSkKIAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAogCQkJCQkJCQkJ CXNxbCwKIAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAotCQkJCQkJCQkJCWRl c3QsIE5VTEwsIE5VTEwsIDApOworCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDAsIE5VTEwp OwogCiAJCQkJRXhlY3V0b3JTdGFydChxZGVzYywgMCk7CiAJCQkJRXhlY3V0b3JSdW4ocWRlc2Ms IEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL21hdHZpZXcuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwppbmRleCA4MWE1 NWEzM2VmMi4uMmNkZmRjZjk4NGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21h dHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQzOSw3ICs0 MzksNyBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVy eSAqcXVlcnksCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8g b3VyIHR1cGxlIHJlY2VpdmVyICovCiAJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4s IHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNo b3QsCi0JCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOworCQkJCQkJCQlkZXN0LCBOVUxMLCBO VUxMLCAwLCBOVUxMKTsKIAogCS8qIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBw bGFuIGZvciBleGVjdXRpb24gKi8KIAlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9wb3J0YWxjbWRzLmMKaW5kZXggMDFlZmFjMzMxOWUuLjFlODgwYTZkN2M5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBAIC0xMTgsNiArMTE4LDcgQEAgUGVyZm9ybUN1cnNv ck9wZW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWNsYXJlQ3Vyc29yU3RtdCAqY3N0bXQsIFBhcmFt TGlzdEluZm8gcGEKIAkJCQkJICBxdWVyeVN0cmluZywKIAkJCQkJICBDTURUQUdfU0VMRUNULAkv KiBjdXJzb3IncyBxdWVyeSBpcyBhbHdheXMgYSBTRUxFQ1QgKi8KIAkJCQkJICBsaXN0X21ha2Ux KHBsYW4pLAorCQkJCQkgIE5JTCwKIAkJCQkJICBOVUxMKTsKIAogCS8qLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHJlcGFyZS5jCmluZGV4IDViODZhNzI3NTg3Li4wMDVmYmI0OGFhNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ByZXBhcmUuYwpAQCAtMjA1LDYgKzIwNSw3IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIGVudHJ5LT5wbGFuc291cmNl LT5jb21tYW5kVGFnLAogCQkJCQkgIHBsYW5fbGlzdCwKKwkJCQkJICBOSUwsCiAJCQkJCSAgY3Bs YW4pOwogCiAJLyoKQEAgLTU3NSw3ICs1NzYsOSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1 dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlj b25zdCBjaGFyICpxdWVyeV9zdHJpbmc7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CiAJTGlzdAkgICAq cGxhbl9saXN0OworCUxpc3QJICAgKnByZXBfZXN0YXRlczsKIAlMaXN0Q2VsbCAgICpwOworCUxp c3RDZWxsICAgKnByZXBfbGM7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKIAlFU3Rh dGUJICAgKmVzdGF0ZSA9IE5VTEw7CiAJaW5zdHJfdGltZQlwbGFuc3RhcnQ7CkBAIC02NTAsMTQg KzY1MywxOCBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50 b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAl9CiAKIAlwbGFuX2xpc3QgPSBjcGxh bi0+c3RtdF9saXN0OworCXByZXBfZXN0YXRlcyA9IE5JTDsKIAogCS8qIEV4cGxhaW4gZWFjaCBx dWVyeSAqLworCXByZXBfbGMgPSBsaXN0X2hlYWQocHJlcF9lc3RhdGVzKTsKIAlmb3JlYWNoKHAs IHBsYW5fbGlzdCkKIAl7CiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5u ZWRTdG10LCBwKTsKKwkJRVN0YXRlICpwcmVwX2VzdGF0ZSA9IG5leHRfcHJlcF9lc3RhdGUocHJl cF9lc3RhdGVzLCAmcHJlcF9sYyk7CiAKIAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURf VVRJTElUWSkKLQkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5n LCBwYXJhbUxJLCBwc3RhdGUtPnBfcXVlcnlFbnYsCisJCQlFeHBsYWluT25lUGxhbihwc3RtdCwg cHJlcF9lc3RhdGUsCisJCQkJCQkgICBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBw c3RhdGUtPnBfcXVlcnlFbnYsCiAJCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMg PyAmYnVmdXNhZ2UgOiBOVUxMKSwKIAkJCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJz IDogTlVMTCk7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURN RSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQppbmRleCA1NGY0NzgyZjMxYi4uZDc0OWNl YjY2ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQorKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9SRUFETUUKQEAgLTI5MSwxMSArMjkxLDE4IEBAIFF1ZXJ5IFByb2Nl c3NpbmcgQ29udHJvbCBGbG93CiAKIFRoaXMgaXMgYSBza2V0Y2ggb2YgY29udHJvbCBmbG93IGZv ciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKKyAgICBFeGVjdXRvclByZXAKKwkJTWF5IGJlIHJ1 biBiZWZvcmUgRXhlY3V0b3JTdGFydCAoZS5nLiwgZm9yIHBsYW4gdmFsaWRhdGlvbiksIG9yCisJ CWltcGxpY2l0bHkgZnJvbSBFeGVjdXRvclN0YXJ0IGlmIG5vdCBkb25lIGVhcmxpZXIuICBDcmVh dGVzIEVTdGF0ZSwKKwkJcGVyZm9ybXMgcmFuZ2UgdGFibGUgaW5pdGlhbGl6YXRpb24sIHBlcm1p c3Npb24gY2hlY2tzLCBhbmQgaW5pdGlhbAorCQlwYXJ0aXRpb24gcHJ1bmluZy4gIFJldHVybnMg dGhlIEVTdGF0ZSB0aGF0IEV4ZWN1dG9yU3RhcnQoKSBzaG91bGQKKwkJcmV1c2UuCisKIAlDcmVh dGVRdWVyeURlc2MKIAogCUV4ZWN1dG9yU3RhcnQKLQkJQ3JlYXRlRXhlY3V0b3JTdGF0ZQotCQkJ Y3JlYXRlcyBwZXItcXVlcnkgY29udGV4dAorCQlFeGVjdXRvclByZXAgKGlmIG5vdCBhbHJlYWR5 IGRvbmUsIGluZGljYXRlZCBieSBOVUxMIFF1ZXJ5RGVzYy5lc3RhdGUpCisJCQljcmVhdGVzIEVT dGF0ZSBhbmQgcGVyLXF1ZXJ5IGNvbnRleHQKIAkJc3dpdGNoIHRvIHBlci1xdWVyeSBjb250ZXh0 IHRvIHJ1biBFeGVjSW5pdE5vZGUKIAkJQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeQogCQlFeGVjSW5p dE5vZGUgLS0tIHJlY3Vyc2l2ZWx5IHNjYW5zIHBsYW4gdHJlZQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMKaW5kZXggNjU0ZjkyNDZhZDAuLmQ3ZTk5NjkwYzdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgi CisjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCiAj aW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIK QEAgLTE0NSw3ICsxNDYsNiBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogCiAJLyogc2FuaXR5IGNoZWNrczogcXVlcnlEZXNjIG11c3Qg bm90IGJlIHN0YXJ0ZWQgYWxyZWFkeSAqLwogCUFzc2VydChxdWVyeURlc2MgIT0gTlVMTCk7Ci0J QXNzZXJ0KHF1ZXJ5RGVzYy0+ZXN0YXRlID09IE5VTEwpOwogCiAJLyogY2FsbGVyIG11c3QgZW5z dXJlIHRoZSBxdWVyeSdzIHNuYXBzaG90IGlzIGFjdGl2ZSAqLwogCUFzc2VydChHZXRBY3RpdmVT bmFwc2hvdCgpID09IHF1ZXJ5RGVzYy0+c25hcHNob3QpOwpAQCAtMTcxLDkgKzE3MSw3MSBAQCBz dGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog CiAJLyoKIAkgKiBCdWlsZCBFU3RhdGUsIHN3aXRjaCBpbnRvIHBlci1xdWVyeSBtZW1vcnkgY29u dGV4dCBmb3Igc3RhcnR1cC4KLQkgKi8KLQllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7 Ci0JcXVlcnlEZXNjLT5lc3RhdGUgPSBlc3RhdGU7CisJICoKKwkgKiBJZiBFeGVjdXRvclByZXAo KSByYW4gZWFybGllciAoZS5nLiwgdG8gZG8gaW5pdGlhbCBwcnVuaW5nIGR1cmluZyBwbGFuCisJ ICogdmFsaWRpdHkgY2hlY2tpbmcpLCByZXVzZSBpdHMgRVN0YXRlIHRvIGF2b2lkIHJlZG9pbmcg cmFuZ2UgdGFibGUgc2V0dXAKKwkgKiBhbmQgcHJ1bmluZy4gT3RoZXJ3aXNlLCBjcmVhdGUgYSBm cmVzaCBFU3RhdGUgYXMgdXN1YWwuCisJICoKKwkgKiBJbiBhc3NlcnQgYnVpbGRzLCB2ZXJpZnkg dGhhdCB0aGUgZXhwZWN0ZWQgbG9ja3MgYXJlIGhlbGQuICBXaGVuCisJICogbm8gcHJlcCBFU3Rh dGUgd2FzIHByb3ZpZGVkLCBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIHNob3VsZCBoYXZlCisJICog bG9ja2VkIGV2ZXJ5IHJlbGF0aW9uIGluIHRoZSBwbGFuLiAgV2hlbiBvbmUgd2FzIHByb3ZpZGVk LAorCSAqIHBydW5pbmctYXdhcmUgbG9ja2luZyBzaG91bGQgaGF2ZSBsb2NrZWQgYXQgbGVhc3Qg dGhlIHVucHJ1bmVkCisJICogcmVsYXRpb25zLiAgQm90aCBjaGVja3MgYXJlIHNraXBwZWQgaW4g cGFyYWxsZWwgd29ya2Vycywgd2hpY2gKKwkgKiBhY3F1aXJlIHJlbGF0aW9uIGxvY2tzIGxhemls eSBpbiBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkuCisJICovCisJaWYgKHF1ZXJ5RGVzYy0+ ZXN0YXRlID09IE5VTEwpCisJeworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkJaWYgKCFJ c1BhcmFsbGVsV29ya2VyKCkpCisJCXsKKwkJCUxpc3RDZWxsICAgKmxjOworCisJCQlmb3JlYWNo KGxjLCBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5ydGFibGUpCisJCQl7CisJCQkJUmFuZ2VUYmxF bnRyeSAqcnRlID0gbGZpcnN0X25vZGUoUmFuZ2VUYmxFbnRyeSwgbGMpOworCisJCQkJaWYgKHJ0 ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gfHwKKwkJCQkJKHJ0ZS0+cnRla2luZCA9PSBSVEVf U1VCUVVFUlkgJiYgcnRlLT5yZWxpZCAhPSBJbnZhbGlkT2lkKSkKKwkJCQkJQXNzZXJ0KENoZWNr UmVsYXRpb25PaWRMb2NrZWRCeU1lKHJ0ZS0+cmVsaWQsCisJCQkJCQkJCQkJCQkJICBydGUtPnJl bGxvY2ttb2RlLAorCQkJCQkJCQkJCQkJCSAgdHJ1ZSkpOworCQkJfQorCQl9CisjZW5kaWYKKwkJ cXVlcnlEZXNjLT5lc3RhdGUgPSBFeGVjdXRvclByZXAocXVlcnlEZXNjLT5wbGFubmVkc3RtdCwK KwkJCQkJCQkJCQkgcXVlcnlEZXNjLT5wYXJhbXMsCisJCQkJCQkJCQkJIEN1cnJlbnRSZXNvdXJj ZU93bmVyLAorCQkJCQkJCQkJCSB0cnVlLAorCQkJCQkJCQkJCSBlZmxhZ3MpOworCX0KKyNpZmRl ZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJZWxzZQorCXsKKwkJLyoKKwkJICogQSBwcmVwIEVTdGF0 ZSB3YXMgcHJvdmlkZWQsIG1lYW5pbmcgcHJ1bmluZy1hd2FyZSBsb2NraW5nCisJCSAqIHNob3Vs ZCBoYXZlIGxvY2tlZCBhdCBsZWFzdCB0aGUgdW5wcnVuZWQgcmVsYXRpb25zLgorCQkgKi8KKwkJ aWYgKCFJc1BhcmFsbGVsV29ya2VyKCkpCisJCXsKKwkJCWludAkJcnRpbmRleCA9IC0xOworCisJ CQl3aGlsZSAoKHJ0aW5kZXggPSBibXNfbmV4dF9tZW1iZXIocXVlcnlEZXNjLT5lc3RhdGUtPmVz X3VucHJ1bmVkX3JlbGlkcywKKwkJCQkJCQkJCQkJICBydGluZGV4KSkgPj0gMCkKKwkJCXsKKwkJ CQlSYW5nZVRibEVudHJ5ICpydGUgPSBleGVjX3J0X2ZldGNoKHJ0aW5kZXgsIHF1ZXJ5RGVzYy0+ ZXN0YXRlKTsKKworCQkJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8CisJ CQkJCSAgIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmCisJCQkJCQlydGUtPnJlbGlk ICE9IEludmFsaWRPaWQpKTsKKwkJCQlBc3NlcnQoQ2hlY2tSZWxhdGlvbk9pZExvY2tlZEJ5TWUo cnRlLT5yZWxpZCwKKwkJCQkJCQkJCQkJCSAgcnRlLT5yZWxsb2NrbW9kZSwgdHJ1ZSkpOworCQkJ fQorCQl9CisJfQorI2VuZGlmCisKKwllc3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKKwlBc3Nl cnQoZXN0YXRlKTsKIAogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRl LT5lc19xdWVyeV9jeHQpOwogCkBAIC0yNjMsNiArMzI1LDg0IEBAIHN0YW5kYXJkX0V4ZWN1dG9y U3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGNvbnRleHQpOwogfQogCisvKgorICogRXhlY3V0b3JQcmVwOiBwcmVwYXJlIGV4 ZWN1dG9yIHN0YXRlIGZvciBhIFBsYW5uZWRTdG10IG91dHNpZGUgRXhlY3V0b3JTdGFydC4KKyAq CisgKiBQZXJmb3JtcyByYW5nZSB0YWJsZSBpbml0aWFsaXphdGlvbiwgcGVybWlzc2lvbiBjaGVj a3MsIGFuZCBpbml0aWFsCisgKiBwYXJ0aXRpb24gcHJ1bmluZyBpZiBwYXJ0UHJ1bmVJbmZvcyBh cmUgcHJlc2VudCBhbmQgZG9faW5pdGlhbF9wcnVuaW5nIGlzCisgKiB0cnVlLgorICoKKyAqIFRo aXMgaXMgaW50ZW5kZWQgZm9yIGNhbGxlcnMgdGhhdCBuZWVkIGV4ZWN1dG9yIG1ldGFkYXRhIGFo ZWFkIG9mIGFjdHVhbAorICogZXhlY3V0aW9uLiBUeXBpY2FsIHVzZSBjYXNlcyBpbmNsdWRlOgor ICoJLSBkZXRlcm1pbmluZyB3aGljaCByZWxhdGlvbnMgbXVzdCBiZSBsb2NrZWQgZHVyaW5nIHBs YW4gY2FjaGUgdmFsaWRhdGlvbjsKKyAqCS0gaW5pdGlhbGl6aW5nIHVucHJ1bmVkIHJlbGlkcyBh bmQgdmFsaWQgc3VicGxhbnMgaW4gcGFyYWxsZWwgd29ya2VycworICoJICB1c2luZyBzdGF0ZSBj b3BpZWQgZnJvbSB0aGUgbGVhZGVyLgorICoKKyAqIFRoZSBleGVjdXRvciBjYW4gcmV1c2UgdGhl IHJlc3VsdGluZyBzdGF0ZSB0byBhdm9pZCByZWR1bmRhbnQgc2V0dXAgZHVyaW5nCisgKiBFeGVj dXRvclN0YXJ0KCkuCisgKgorICogUmV0dXJucyBhbiBFU3RhdGUgdGhhdCBjYW4gYmUgcmV1c2Vk IGxhdGVyLgorICovCitFU3RhdGUgKgorRXhlY3V0b3JQcmVwKFBsYW5uZWRTdG10ICpwc3RtdCwg UGFyYW1MaXN0SW5mbyBwYXJhbXMsIFJlc291cmNlT3duZXIgb3duZXIsCisJCQkgYm9vbCBkb19p bml0aWFsX3BydW5pbmcsIGludCBlZmxhZ3MpCit7CisJUmVzb3VyY2VPd25lciBvbGRvd25lcjsK KwlFU3RhdGUgKmVzdGF0ZTsKKworCWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJ VFkpCisJCXJldHVybiBOVUxMOworCisJLyogQ2FsbGVyIG11c3QgaGF2ZSBlc3RhYmxpc2hlZCBh biBhY3RpdmUgc25hcHNob3QuICovCisJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCisJ ZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOworCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQg PSBwc3RtdDsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwc3RtdC0+cGFydFBydW5l SW5mb3M7CisJZXN0YXRlLT5lc19wYXJhbV9saXN0X2luZm8gPSBwYXJhbXM7CisJZXN0YXRlLT5l c190b3BfZWZsYWdzID0gZWZsYWdzOworCisJLyoKKwkgKiBEbyBwZXJtaXNzaW9ucyBjaGVja3Mu CisJICovCisJRXhlY0NoZWNrUGVybWlzc2lvbnMocHN0bXQtPnJ0YWJsZSwgcHN0bXQtPnBlcm1J bmZvcywgdHJ1ZSk7CisKKwkvKgorCSAqIEluaXRpYWxpemUgcmFuZ2UgdGFibGUuCisJICovCisJ RXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcHN0bXQtPnJ0YWJsZSwgcHN0bXQtPnBlcm1JbmZv cywKKwkJCQkJICAgYm1zX2NvcHkocHN0bXQtPnVucHJ1bmFibGVSZWxpZHMpKTsKKworCS8qCisJ ICogRW5zdXJlIGxvY2tzIHRha2VuIGR1cmluZyBpbml0aWFsIHBydW5pbmcgYXJlIHRyYWNrZWQg dW5kZXIgdGhlIGdpdmVuCisJICogUmVzb3VyY2VPd25lciAoZS5nLiwgb25lIGFzc29jaWF0ZWQg d2l0aCBDYWNoZWRQbGFuIHZhbGlkYXRpb24pLgorCSAqLworCW9sZG93bmVyID0gQ3VycmVudFJl c291cmNlT3duZXI7CisJQ3VycmVudFJlc291cmNlT3duZXIgPSBvd25lcjsKKworCS8qCisJICog U2V0IHVwIFBhcnRpdGlvblBydW5lU3RhdGUgc3RydWN0dXJlcyBuZWVkZWQgZm9yIGJvdGggaW5p dGlhbCBhbmQKKwkgKiBydW50aW1lIHBhcnRpdGlvbiBwcnVuaW5nLiBUaGVzZSBzdHJ1Y3R1cmVz IGFyZSBidWlsdCBmcm9tIHRoZQorCSAqIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyaWVzIGluIHRo ZSBwbGFuIHRyZWUuCisJICoKKwkgKiBJZiBkb19pbml0aWFsX3BydW5pbmcgaXMgdHJ1ZSwgYWxz byBwZXJmb3JtIGluaXRpYWwgcHJ1bmluZyB0byBjb21wdXRlCisJICogdGhlIHN1YnNldCBvZiBj aGlsZCBzdWJwbGFucyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuIFRoZSByZXN1bHRzLAorCSAqIHdo aWNoIGFyZSBiaXRtYXBzZXRzIG9mIHNlbGVjdGVkIGNoaWxkIGluZGV4ZXMsIGFyZSBzYXZlZCBp bgorCSAqIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cy4gVGhpcyBsaXN0IGlzIHBhcmFsbGVsIHRvIGVz X3BhcnRfcHJ1bmVfaW5mb3MuCisJICoKKwkgKiBJbiBwYXJhbGxlbCB3b3JrZXJzLCBkb19pbml0 aWFsX3BydW5pbmcgc2hvdWxkIGJlIGZhbHNlIC0tIHRoZXkgcmVjZWl2ZQorCSAqIGVzX3BhcnRf cHJ1bmVfcmVzdWx0cyBmcm9tIHRoZSBsZWFkZXIgcHJvY2VzcyBhbmQgc2hvdWxkIG9ubHkgaW5p dGlhbGl6ZQorCSAqIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlcy4KKwkgKi8KKwlFeGVjQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZXMoZXN0YXRlKTsKKwlpZiAoZG9faW5pdGlhbF9wcnVuaW5nKQor CQlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3RhdGUpOworCisJQ3VycmVudFJlc291cmNlT3duZXIg PSBvbGRvd25lcjsKKworCXJldHVybiBlc3RhdGU7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVj dXRvclJ1bgogICoKQEAgLTgzOCwzOCArOTc4LDE0IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogCUNtZFR5cGUJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3Bl cmF0aW9uOwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0 bXQ7CiAJUGxhbgkgICAqcGxhbiA9IHBsYW5uZWRzdG10LT5wbGFuVHJlZTsKLQlMaXN0CSAgICpy YW5nZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1 ZXJ5RGVzYy0+ZXN0YXRlOwogCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZTsKIAlUdXBsZURlc2MJdHVw VHlwZTsKIAlMaXN0Q2VsbCAgICpsOwogCWludAkJCWk7CiAKLQkvKgotCSAqIERvIHBlcm1pc3Np b25zIGNoZWNrcwotCSAqLwotCUV4ZWNDaGVja1Blcm1pc3Npb25zKHJhbmdlVGFibGUsIHBsYW5u ZWRzdG10LT5wZXJtSW5mb3MsIHRydWUpOwotCi0JLyoKLQkgKiBpbml0aWFsaXplIHRoZSBub2Rl J3MgZXhlY3V0aW9uIHN0YXRlCi0JICovCi0JRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcmFu Z2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcywKLQkJCQkJICAgYm1zX2NvcHkocGxhbm5l ZHN0bXQtPnVucHJ1bmFibGVSZWxpZHMpKTsKLQotCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBw bGFubmVkc3RtdDsKLQllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwbGFubmVkc3RtdC0+ cGFydFBydW5lSW5mb3M7Ci0KLQkvKgotCSAqIFBlcmZvcm0gcnVudGltZSAiaW5pdGlhbCIgcHJ1 bmluZyB0byBpZGVudGlmeSB3aGljaCBjaGlsZCBzdWJwbGFucywKLQkgKiBjb3JyZXNwb25kaW5n IHRvIHRoZSBjaGlsZHJlbiBvZiBwbGFuIG5vZGVzIHRoYXQgY29udGFpbgotCSAqIFBhcnRpdGlv blBydW5lSW5mbyBzdWNoIGFzIEFwcGVuZCwgd2lsbCBub3QgYmUgZXhlY3V0ZWQuIFRoZSByZXN1 bHRzLAotCSAqIHdoaWNoIGFyZSBiaXRtYXBzZXRzIG9mIGluZGV4ZXMgb2YgdGhlIGNoaWxkIHN1 YnBsYW5zIHRoYXQgd2lsbCBiZQotCSAqIGV4ZWN1dGVkLCBhcmUgc2F2ZWQgaW4gZXNfcGFydF9w cnVuZV9yZXN1bHRzLiAgVGhlc2UgcmVzdWx0cyBjb3JyZXNwb25kCi0JICogdG8gZWFjaCBQYXJ0 aXRpb25QcnVuZUluZm8gZW50cnksIGFuZCB0aGUgZXNfcGFydF9wcnVuZV9yZXN1bHRzIGxpc3Qg aXMKLQkgKiBwYXJhbGxlbCB0byBlc19wYXJ0X3BydW5lX2luZm9zLgotCSAqLwotCUV4ZWNDcmVh dGVQYXJ0aXRpb25QcnVuZVN0YXRlcyhlc3RhdGUpOwotCUV4ZWNEb0luaXRpYWxQcnVuaW5nKGVz dGF0ZSk7CisJLyogRXhlY3V0b3JQcmVwKCkgbXVzdCBoYXZlIGJlZW4gZG9uZS4gKi8KKwlBc3Nl cnQocXVlcnlEZXNjLT5lc3RhdGUpOwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jv d01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggYWM4NGFmMjk0YzkuLjAyNDc4MGQzNTE2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTMwMCw3ICsxMzAwLDggQEAgRXhlY1BhcmFs bGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAly ZXR1cm4gQ3JlYXRlUXVlcnlEZXNjKHBzdG10LAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJ CQkgICBHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkgICByZWNl aXZlciwgcGFyYW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKKwkJCQkJCSAgIHJlY2Vp dmVyLCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50X29wdGlvbnMsCisJCQkJCQkgICBOVUxMKTsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggNGNhMzQyYTQzZWYuLmM5M2Uy NjY0Y2ZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtMTM2OCw3ICsxMzY4LDggQEAg cG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBm Y2FjaGUpCiAJCQkJCQkJIGRlc3QsCiAJCQkJCQkJIGZjYWNoZS0+cGFyYW1MSSwKIAkJCQkJCQkg ZXMtPnFkID8gZXMtPnFkLT5xdWVyeUVudiA6IE5VTEwsCi0JCQkJCQkJIDApOworCQkJCQkJCSAw LAorCQkJCQkJCSBOVUxMKTsKIAogCS8qIFV0aWxpdHkgY29tbWFuZHMgZG9uJ3QgbmVlZCBFeGVj dXRvci4gKi8KIAlpZiAoZXMtPnFkLT5vcGVyYXRpb24gIT0gQ01EX1VUSUxJVFkpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3Nw aS5jCmluZGV4IDMwMTlhM2IyYjk3Li45OTRhNjlhMWM4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTE2 ODUsNiArMTY4NSw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1l LCBTUElQbGFuUHRyIHBsYW4sCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIHBsYW5zb3Vy Y2UtPmNvbW1hbmRUYWcsCiAJCQkJCSAgc3RtdF9saXN0LAorCQkJCQkgIE5JTCwKIAkJCQkJICBj cGxhbik7CiAKIAkvKgpAQCAtMjQ5OSw2ICsyNTAwLDggQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJ UGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSA9IChDYWNoZWRQbGFuU291cmNlICopIGxmaXJzdChsYzEp OwogCQlMaXN0CSAgICpzdG10X2xpc3Q7CiAJCUxpc3RDZWxsICAgKmxjMjsKKwkJTGlzdAkgICAq cHJlcF9lc3RhdGVzOworCQlMaXN0Q2VsbCAgICpwcmVwX2xjOwogCiAJCXNwaWNhbGxiYWNrYXJn LnF1ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nOwogCkBAIC0yNTc3LDYgKzI1ODAsNyBA QCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRp b25zICpvcHRpb25zLAogCQkJCQkJCSAgcGxhbl9vd25lciwgX1NQSV9jdXJyZW50LT5xdWVyeUVu dik7CiAKIAkJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKKwkJcHJlcF9lc3RhdGVzID0g TklMOwogCiAJCS8qCiAJCSAqIElmIHdlIHdlcmVuJ3QgZ2l2ZW4gYSBzcGVjaWZpYyBzbmFwc2hv dCB0byB1c2UsIGFuZCB0aGUgc3RhdGVtZW50CkBAIC0yNjE0LDkgKzI2MTgsMTEgQEAgX1NQSV9l eGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0 aW9ucywKIAkJCX0KIAkJfQogCisJCXByZXBfbGMgPSBsaXN0X2hlYWQocHJlcF9lc3RhdGVzKTsK IAkJZm9yZWFjaChsYzIsIHN0bXRfbGlzdCkKIAkJewogCQkJUGxhbm5lZFN0bXQgKnN0bXQgPSBs Zmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMyKTsKKwkJCUVTdGF0ZSAqcHJlcF9lc3RhdGUgPSBu ZXh0X3ByZXBfZXN0YXRlKHByZXBfZXN0YXRlcywgJnByZXBfbGMpOwogCQkJYm9vbAkJY2FuU2V0 VGFnID0gc3RtdC0+Y2FuU2V0VGFnOwogCQkJRGVzdFJlY2VpdmVyICpkZXN0OwogCkBAIC0yNjk0 LDcgKzI3MDAsOCBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQ SUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJCQkJCQkJCWRlc3QsCiAJCQkJCQkJCQkJb3B0 aW9ucy0+cGFyYW1zLAogCQkJCQkJCQkJCV9TUElfY3VycmVudC0+cXVlcnlFbnYsCi0JCQkJCQkJ CQkJMCk7CisJCQkJCQkJCQkJMCwKKwkJCQkJCQkJCQlwcmVwX2VzdGF0ZSk7CiAJCQkJcmVzID0g X1NQSV9wcXVlcnkocWRlc2MsIGZpcmVfdHJpZ2dlcnMsCiAJCQkJCQkJCSAgY2FuU2V0VGFnID8g b3B0aW9ucy0+dGNvdW50IDogMCk7CiAJCQkJRnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMKaW5kZXggZDAxYTA5ZGQwYzQuLmNkMWU0MjljZWVkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBA IC0xMjMwLDYgKzEyMzAsNyBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9z dHJpbmcpCiAJCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJCSAgY29tbWFuZFRhZywKIAkJCQkJ CSAgcGxhbnRyZWVfbGlzdCwKKwkJCQkJCSAgTklMLAogCQkJCQkJICBOVUxMKTsKIAogCQkvKgpA QCAtMjAyOSw2ICsyMDMwLDcgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9t ZXNzYWdlKQogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBwc3JjLT5jb21tYW5kVGFnLAog CQkJCQkgIGNwbGFuLT5zdG10X2xpc3QsCisJCQkJCSAgTklMLAogCQkJCQkgIGNwbGFuKTsKIAog CS8qIFBvcnRhbCBpcyBkZWZpbmVkLCBzZXQgdGhlIHBsYW4gSUQgYmFzZWQgb24gaXRzIGNvbnRl bnRzLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNr ZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggZDhmYzc1ZDBiYjkuLmIxODI2NjQ4N2JiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1 ZXJ5LmMKQEAgLTM3LDYgKzM3LDcgQEAgUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxMOwogCiAK IHN0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKKwkJCQkJCSBFU3Rh dGUgKnByZXBfZXN0YXRlLAogCQkJCQkJIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkg UGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYs CkBAIC03Miw3ICs3Myw4IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQsCiAJCQkJRGVzdFJlY2VpdmVyICpkZXN0LAogCQkJCVBhcmFtTGlzdEluZm8gcGFyYW1zLAog CQkJCVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAotCQkJCWludCBpbnN0cnVtZW50X29wdGlv bnMpCisJCQkJaW50IGluc3RydW1lbnRfb3B0aW9ucywKKwkJCQlFU3RhdGUgKnByZXBfZXN0YXRl KQogewogCVF1ZXJ5RGVzYyAgKnFkID0gcGFsbG9jX29iamVjdChRdWVyeURlc2MpOwogCkBAIC05 Myw2ICs5NSw5IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAJ cWQtPnBsYW5zdGF0ZSA9IE5VTEw7CiAJcWQtPnRvdGFsdGltZSA9IE5VTEw7CiAKKwkvKiBVc2Ug dGhlIEVTdGF0ZSBjcmVhdGVkIGJ5IEV4ZWN1dG9yUHJlcCgpIGlmIGFscmVhZHkgZG9uZS4gKi8K KwlxZC0+ZXN0YXRlID0gcHJlcF9lc3RhdGU7CisKIAkvKiBub3QgeWV0IGV4ZWN1dGVkICovCiAJ cWQtPmFscmVhZHlfZXhlY3V0ZWQgPSBmYWxzZTsKIApAQCAtMTIzLDYgKzEyOCw3IEBAIEZyZWVR dWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKICAqCQlQT1JUQUxfT05FX1JFVFVSTklORywgb3Ig UE9SVEFMX09ORV9NT0RfV0lUSCBwb3J0YWwKICAqCiAgKglwbGFuOiB0aGUgcGxhbiB0cmVlIGZv ciB0aGUgcXVlcnkKKyAqCXByZXBfZXN0YXRlOiBFU3RhdGUgY3JlYXRlZCBpbiBFeGVjdXRvclBy ZXAoKSBmb3IgdGhlIHF1ZXJ5LCBpZiBhbnkKICAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4 dCBvZiB0aGUgcXVlcnkKICAqCXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCiAgKglkZXN0 OiB3aGVyZSB0byBzZW5kIHJlc3VsdHMKQEAgLTEzNSw2ICsxNDEsNyBAQCBGcmVlUXVlcnlEZXNj KFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKi8KIHN0YXRpYyB2b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5l ZFN0bXQgKnBsYW4sCisJCQkgRVN0YXRlICpwcmVwX2VzdGF0ZSwKIAkJCSBjb25zdCBjaGFyICpz b3VyY2VUZXh0LAogCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52LApAQCAtMTQ4LDcgKzE1NSw4IEBAIFByb2Nlc3NRdWVyeShQbGFubmVkU3Rt dCAqcGxhbiwKIAkgKi8KIAlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNl VGV4dCwKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAotCQkJ CQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKKwkJCQkJCQkJZGVzdCwgcGFyYW1zLCBx dWVyeUVudiwgMCwKKwkJCQkJCQkJcHJlcF9lc3RhdGUpOwogCiAJLyoKIAkgKiBDYWxsIEV4ZWN1 dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCkBAIC00OTUsNyArNTAz LDEwIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAog CQkJCQkJCQkJCQlOb25lX1JlY2VpdmVyLAogCQkJCQkJCQkJCQlwYXJhbXMsCiAJCQkJCQkJCQkJ CXBvcnRhbC0+cXVlcnlFbnYsCi0JCQkJCQkJCQkJCTApOworCQkJCQkJCQkJCQkwLAorCQkJCQkJ CQkJCQlwb3J0YWwtPnByZXBfZXN0YXRlcyA/CisJCQkJCQkJCQkJCShFU3RhdGUgKikgbGluaXRp YWwocG9ydGFsLT5wcmVwX2VzdGF0ZXMpIDoKKwkJCQkJCQkJCQkJTlVMTCk7CiAKIAkJCQkvKgog CQkJCSAqIElmIGl0J3MgYSBzY3JvbGxhYmxlIGN1cnNvciwgZXhlY3V0b3IgbmVlZHMgdG8gc3Vw cG9ydApAQCAtMTE4NSw2ICsxMTk2LDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwK IHsKIAlib29sCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gZmFsc2U7CiAJTGlzdENlbGwgICAqc3Rt dGxpc3RfaXRlbTsKKwlMaXN0Q2VsbCAgICpwcmVwX2xjOwogCiAJLyoKIAkgKiBJZiB0aGUgZGVz dGluYXRpb24gaXMgRGVzdFJlbW90ZUV4ZWN1dGUsIGNoYW5nZSB0byBEZXN0Tm9uZS4gIFRoZQpA QCAtMTIwNSw5ICsxMjE3LDExIEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJICog TG9vcCB0byBoYW5kbGUgdGhlIGluZGl2aWR1YWwgcXVlcmllcyBnZW5lcmF0ZWQgZnJvbSBhIHNp bmdsZSBwYXJzZXRyZWUKIAkgKiBieSBhbmFseXNpcyBhbmQgcmV3cml0ZS4KIAkgKi8KKwlwcmVw X2xjID0gbGlzdF9oZWFkKHBvcnRhbC0+cHJlcF9lc3RhdGVzKTsKIAlmb3JlYWNoKHN0bXRsaXN0 X2l0ZW0sIHBvcnRhbC0+c3RtdHMpCiAJewogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmlyc3Rf bm9kZShQbGFubmVkU3RtdCwgc3RtdGxpc3RfaXRlbSk7CisJCUVTdGF0ZSAqcHJlcF9lc3RhdGUg PSBuZXh0X3ByZXBfZXN0YXRlKHBvcnRhbC0+cHJlcF9lc3RhdGVzLCAmcHJlcF9sYyk7CiAKIAkJ LyoKIAkJICogSWYgd2UgZ290IGEgY2FuY2VsIHNpZ25hbCBpbiBwcmlvciBjb21tYW5kLCBxdWl0 CkBAIC0xMjY1LDcgKzEyNzksNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJ aWYgKHBzdG10LT5jYW5TZXRUYWcpCiAJCQl7CiAJCQkJLyogc3RhdGVtZW50IGNhbiBzZXQgdGFn IHN0cmluZyAqLwotCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKKwkJCQlQcm9jZXNzUXVlcnkocHN0 bXQsIHByZXBfZXN0YXRlLAogCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBv cnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApAQCAtMTI3NCw3 ICsxMjg4LDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCWVsc2UKIAkJCXsK IAkJCQkvKiBzdG10IGFkZGVkIGJ5IHJld3JpdGUgY2Fubm90IHNldCB0YWcgKi8KLQkJCQlQcm9j ZXNzUXVlcnkocHN0bXQsCisJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LCBwcmVwX2VzdGF0ZSwKIAkJ CQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywK IAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L21tZ3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmlu ZGV4IGMxYTUzZTY1OGNiLi45NDFlOTUwMTBjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1l bS5jCkBAIC0yODQsNiArMjg0LDcgQEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwK IAkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRU YWcsCiAJCQkJICBMaXN0ICpzdG10cywKKwkJCQkgIExpc3QgKnByZXBfZXN0YXRlcywKIAkJCQkg IENhY2hlZFBsYW4gKmNwbGFuKQogewogCUFzc2VydChQb3J0YWxJc1ZhbGlkKHBvcnRhbCkpOwpA QCAtMjk3LDYgKzI5OCw3IEBAIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJcG9y dGFsLT5jb21tYW5kVGFnID0gY29tbWFuZFRhZzsKIAlTZXRRdWVyeUNvbXBsZXRpb24oJnBvcnRh bC0+cWMsIGNvbW1hbmRUYWcsIDApOwogCXBvcnRhbC0+c3RtdHMgPSBzdG10czsKKwlwb3J0YWwt PnByZXBfZXN0YXRlcyA9IHByZXBfZXN0YXRlczsKIAlwb3J0YWwtPmNwbGFuID0gY3BsYW47CiAJ cG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfREVGSU5FRDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaApp bmRleCA4NjIyNmY4ZGI3MC4uMzc1NmExMTM0NWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAg LTYzLDcgKzYzLDggQEAgZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0 eVN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkJICBFeHBsYWluU3RhdGUgKmVzLCBQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcyk7CiAKLWV4dGVy biB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVz ZSAqaW50bywKK2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVk c3RtdCwgRVN0YXRlICpwcmVwX2VzdGF0ZSwKKwkJCQkJCSAgIEludG9DbGF1c2UgKmludG8sCiAJ CQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJ CSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKIAkJ CQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVz Yy5oCmluZGV4IGQzYTU3MjQyODQ0Li4zYTIxNjljOTYxMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVz Yy5oCkBAIC00Myw3ICs0Myw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCVF1ZXJ5RW52 aXJvbm1lbnQgKnF1ZXJ5RW52OyAvKiBxdWVyeSBlbnZpcm9ubWVudCBwYXNzZWQgaW4gKi8KIAlp bnQJCQlpbnN0cnVtZW50X29wdGlvbnM7IC8qIE9SIG9mIEluc3RydW1lbnRPcHRpb24gZmxhZ3Mg Ki8KIAotCS8qIFRoZXNlIGZpZWxkcyBhcmUgc2V0IGJ5IEV4ZWN1dG9yU3RhcnQgKi8KKwkvKiBU aGVzZSBmaWVsZHMgYXJlIHNldCBieSBFeGVjdXRvclN0YXJ0IG9yIEV4ZWN1dG9yUHJlcCAqLwog CVR1cGxlRGVzYwl0dXBEZXNjOwkJLyogZGVzY3JpcHRvciBmb3IgcmVzdWx0IHR1cGxlcyAqLwog CUVTdGF0ZQkgICAqZXN0YXRlOwkJCS8qIGV4ZWN1dG9yJ3MgcXVlcnktd2lkZSBzdGF0ZSAqLwog CVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZTsJCS8qIHRyZWUgb2YgcGVyLXBsYW4tbm9kZSBzdGF0ZSAq LwpAQCAtNjMsNyArNjMsOCBAQCBleHRlcm4gUXVlcnlEZXNjICpDcmVhdGVRdWVyeURlc2MoUGxh bm5lZFN0bXQgKnBsYW5uZWRzdG10LAogCQkJCQkJCQkgIERlc3RSZWNlaXZlciAqZGVzdCwKIAkJ CQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCQkJICBRdWVyeUVudmlyb25tZW50 ICpxdWVyeUVudiwKLQkJCQkJCQkJICBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKKwkJCQkJCQkJ ICBpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAorCQkJCQkJCQkgIEVTdGF0ZSAqcHJlcF9lc3RhdGUp OwogCiBleHRlcm4gdm9pZCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaAppbmRleCBkNDZiYTU5ODk1ZC4uZTZmYTEyMmU2ZTQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2xvY2tv cHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKIAogCiAvKgpAQCAtMjM0 LDYgKzIzNSwzMSBAQCBFeGVjR2V0SnVua0F0dHJpYnV0ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwg QXR0ck51bWJlciBhdHRubywgYm9vbCAqaXNOdWxsKQogICovCiBleHRlcm4gdm9pZCBFeGVjdXRv clN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIHN0 YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwor CitleHRlcm4gRVN0YXRlICpFeGVjdXRvclByZXAoUGxhbm5lZFN0bXQgKnBzdG10LAorCQkJCQkJ CVBhcmFtTGlzdEluZm8gcGFyYW1zLAorCQkJCQkJCVJlc291cmNlT3duZXIgb3duZXIsCisJCQkJ CQkJYm9vbCBkb19pbml0aWFsX3BydW5pbmcsCisJCQkJCQkJaW50IGVmbGFncyk7CisKKy8qCisg KiBXYWxrIGEgcHJlcF9lc3RhdGVzIGxpc3QgaW4gc3RlcCB3aXRoIGEgcGFyYWxsZWwgc3RtdF9s aXN0IGl0ZXJhdGlvbi4KKyAqIFJldHVybnMgdGhlIG5leHQgRVN0YXRlIChvciBOVUxMKSBhbmQg YWR2YW5jZXMgKmxjLiAgU2FmZSB3aGVuCisgKiBwcmVwX2VzdGF0ZXMgaXMgTklMOyBqdXN0IHJl dHVybnMgTlVMTCBmb3IgZXZlcnkgY2FsbC4KKyAqLworc3RhdGljIGlubGluZSBFU3RhdGUgKgor bmV4dF9wcmVwX2VzdGF0ZShMaXN0ICpwcmVwX2VzdGF0ZXMsIExpc3RDZWxsICoqbGMpCit7CisJ RVN0YXRlICpyZXN1bHQgPSBOVUxMOworCisJaWYgKCpsYyAhPSBOVUxMKQorCXsKKwkJcmVzdWx0 ID0gKEVTdGF0ZSAqKSBsZmlyc3QoKmxjKTsKKwkJKmxjID0gbG5leHQocHJlcF9lc3RhdGVzLCAq bGMpOworCX0KKwlyZXR1cm4gcmVzdWx0OworfQorCiBleHRlcm4gdm9pZCBFeGVjdXRvclJ1bihR dWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLCB1aW50 NjQgY291bnQpOwogZXh0ZXJuIHZvaWQgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpx dWVyeURlc2MsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDYzYzA2N2Q1YWFlLi44NGQ4MGUzYWIw ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTc3NSw3ICs3NzUsNiBAQCB0eXBlZGVmIHN0cnVj dCBFU3RhdGUKIAlMaXN0CSAgICplc19pbnNlcnRfcGVuZGluZ19tb2RpZnl0YWJsZXM7CiB9IEVT dGF0ZTsKIAotCiAvKgogICogRXhlY1Jvd01hcmsgLQogICoJICAgcnVudGltZSByZXByZXNlbnRh dGlvbiBvZiBGT1IgW0tFWV0gVVBEQVRFL1NIQVJFIGNsYXVzZXMKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL3BvcnRhbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXgg YTdiZWRiMTJjMTguLmY2OWI0YjliNDc5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9w b3J0YWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaApAQCAtMTM3LDYgKzEzNyw3 IEBAIHR5cGVkZWYgc3RydWN0IFBvcnRhbERhdGEKIAlDb21tYW5kVGFnCWNvbW1hbmRUYWc7CQkv KiBjb21tYW5kIHRhZyBmb3Igb3JpZ2luYWwgcXVlcnkgKi8KIAlRdWVyeUNvbXBsZXRpb24gcWM7 CQkJLyogY29tbWFuZCBjb21wbGV0aW9uIGRhdGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICovCiAJTGlz dAkgICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQbGFubmVkU3RtdHMgKi8KKwlMaXN0CSAgICpwcmVw X2VzdGF0ZXM7CS8qIGxpc3Qgb2YgRVN0YXRlcyB3aGVyZSBuZWVkZWQgKi8KIAlDYWNoZWRQbGFu ICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBzdG10cyBhcmUgZnJvbSBvbmUgKi8KIAogCVBh cmFtTGlzdEluZm8gcG9ydGFsUGFyYW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVyeSAqLwpA QCAtMjQwLDYgKzI0MSw3IEBAIGV4dGVybiB2b2lkIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBw b3J0YWwsCiAJCQkJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJCSAgQ29tbWFu ZFRhZyBjb21tYW5kVGFnLAogCQkJCQkJCSAgTGlzdCAqc3RtdHMsCisJCQkJCQkJICBMaXN0ICpw cmVwX2VzdGF0ZXMsCiAJCQkJCQkJICBDYWNoZWRQbGFuICpjcGxhbik7CiBleHRlcm4gUGxhbm5l ZFN0bXQgKlBvcnRhbEdldFByaW1hcnlTdG10KFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQg UG9ydGFsQ3JlYXRlSG9sZFN0b3JlKFBvcnRhbCBwb3J0YWwpOwotLSAKMi40Ny4zCgo= --000000000000c3b932064c6c289e Content-Type: application/octet-stream; name="v6-0001-Refactor-partition-pruning-initialization-for-cla.patch" Content-Disposition: attachment; filename="v6-0001-Refactor-partition-pruning-initialization-for-cla.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmg4yi355 RnJvbSA2ZjJjOWNjN2EzMGQzOGNiMjYwNjU5NWY2MmI2MmM3N2UyYWJhNmU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTAgRmViIDIwMjYgMTU6MDg6NTIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY2 IDEvNl0gUmVmYWN0b3IgcGFydGl0aW9uIHBydW5pbmcgaW5pdGlhbGl6YXRpb24gZm9yIGNsYXJp dHkKIGFuZCBtb2R1bGFyaXR5CgpNb3ZlIHRoZSBjcmVhdGlvbiBvZiBQYXJ0aXRpb25QcnVuZVN0 YXRlIHN0cnVjdHVyZXMgb3V0IG9mCkV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgaW50byBhIG5ldyBF eGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMoKQpmdW5jdGlvbi4gVGhpcyBzZXBhcmF0ZXMg dGhlIHNldHVwIG9mIHBydW5pbmcgc3RhdGUgZnJvbSB0aGUgZXhlY3V0aW9uCm9mIGluaXRpYWwg cHJ1bmluZyBsb2dpYywgbWFraW5nIHRoZSBjb2RlIGNsZWFyZXIgYW5kIGVhc2llciB0bwptYWlu dGFpbi4KClNpbXBsaWZ5IGhhbmRsaW5nIG9mIHVucHJ1bmVkIHJlbGlkcyBieSBtb3ZpbmcgcmVz cG9uc2liaWxpdHkKZm9yIHJlY29yZGluZyB0aGVtIGluIEVTdGF0ZSBpbnRvIENyZWF0ZVBhcnRp dGlvblBydW5lU3RhdGUoKSwKYXZvaWRpbmcgdGhlIG5lZWQgdG8gcGFzcyBhbGxfbGVhZnBhcnRf cnRpcyBhcyBhbiBvdXQgcGFyYW1ldGVyLgoKQWxzbyBtb3ZlIHRoZSBzZXR0aW5nIG9mIGVjeHRf cGFyYW1fZXhlY192YWxzIGZyb20KRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoKSB0byBJ bml0RXhlY1BhcnRpdGlvblBydW5lQ29udGV4dHMoKSwKdG8gYWxsb3cgdGhlIGZvcm1lciB0byBi ZSBjYWxsZWQgYXQgYSB0aW1lIHdoZW4gdGhlIFBBUkFNX0VYRUMKcGFyYW1ldGVycyBoYXZlIG5v dCB5ZXQgYmVlbiBzZXQgdXAuCgpUaGlzIHJlZmFjdG9yaW5nIGFsbG93cyBjYWxsZXJzIHRvIHJl dXNlIHRoZSBwcnVuaW5nIHNldHVwIGxvZ2ljCndpdGhvdXQgYWx3YXlzIHRyaWdnZXJpbmcgcHJ1 bmluZywgYSBjYXBhYmlsaXR5IHVzZWZ1bCBmb3IgZnV0dXJlIHVzZQpjYXNlcyB0aGF0IG1heSBv bmx5IG5lZWQgbWV0YWRhdGEgaW5pdGlhbGl6YXRpb24uCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYyAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYyB8IDEwMyArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDc0IGluc2Vy dGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IGJm ZDNlYmM2MDFlLi42NTRmOTI0NmFkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC04Njgs NiArODY4LDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJ ICogdG8gZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gZW50cnksIGFuZCB0aGUgZXNfcGFydF9wcnVu ZV9yZXN1bHRzIGxpc3QgaXMKIAkgKiBwYXJhbGxlbCB0byBlc19wYXJ0X3BydW5lX2luZm9zLgog CSAqLworCUV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlcyhlc3RhdGUpOwogCUV4ZWNEb0lu aXRpYWxQcnVuaW5nKGVzdGF0ZSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5jCmluZGV4IGJhYjI5NGY1ZTkxLi4yMGMzNTEzZmFiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYwpAQCAtMTg0LDggKzE4NCw3IEBAIHN0YXRpYyBjaGFyICpFeGVjQnVpbGRT bG90UGFydGl0aW9uS2V5RGVzY3JpcHRpb24oUmVsYXRpb24gcmVsLAogc3RhdGljIExpc3QgKmFk anVzdF9wYXJ0aXRpb25fY29sbm9zKExpc3QgKmNvbG5vcywgUmVzdWx0UmVsSW5mbyAqbGVhZl9w YXJ0X3JyaSk7CiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFw KExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCk7CiBzdGF0aWMgUGFydGl0aW9uUHJ1bmVT dGF0ZSAqQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwKLQkJCQkJCQkJ CQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAotCQkJCQkJCQkJCQkJCSAgQml0 bWFwc2V0ICoqYWxsX2xlYWZwYXJ0X3J0aXMpOworCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1 bmVJbmZvICpwcnVuZWluZm8pOwogc3RhdGljIHZvaWQgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4 dChQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCQkgIExpc3QgKnBydW5p bmdfc3RlcHMsCiAJCQkJCQkJCQkgIFBhcnRpdGlvbkRlc2MgcGFydGRlc2MsCkBAIC0xOTQyLDYg KzE5NDEsOSBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9z LCBBdHRyTWFwICphdHRyTWFwKQogICoKICAqIEZ1bmN0aW9uczoKICAqCisgKiBFeGVjQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZXMKKyAqCQlDcmVhdGUgUGFydGl0aW9uUHJ1bmVTdGF0ZSBmb3Ig YWxsIFBhcnRpdGlvblBydW5lSW5mb3MgaW4gdGhlIEVTdGF0ZQorICoKICAqIEV4ZWNEb0luaXRp YWxQcnVuaW5nOgogICoJCVBlcmZvcm0gcnVudGltZSAiaW5pdGlhbCIgcHJ1bmluZywgaWYgbmVj ZXNzYXJ5LCB0byBkZXRlcm1pbmUgdGhlIHNldAogICoJCW9mIGNoaWxkIHN1Ym5vZGVzIHRoYXQg bmVlZCB0byBiZSBpbml0aWFsaXplZCBkdXJpbmcgRXhlY0luaXROb2RlKCkgZm9yCkBAIC0xOTY2 LDYgKzE5NjgsMjkgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNv bG5vcywgQXR0ck1hcCAqYXR0ck1hcCkKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKKy8qCisg KiBFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMKKyAqCisgKiBDcmVhdGUgYSBQYXJ0aXRp b25QcnVuZVN0YXRlIGZvciBlYWNoIFBhcnRpdGlvblBydW5lSW5mbyBpbiB0aGUgZXN0YXRlLAor ICogYW5kIHNhdmUgdGhlbSBpbiBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzLiBUaGlzIHNl dHVwIGlzIHJlcXVpcmVkCisgKiBiZWZvcmUgYW55IGluaXRpYWwgb3IgcnVudGltZSBwcnVuaW5n IGNhbiBvY2N1ci4KKyAqLwordm9pZAorRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGVzKEVT dGF0ZSAqZXN0YXRlKQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgZXN0YXRl LT5lc19wYXJ0X3BydW5lX2luZm9zKQorCXsKKwkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWlu Zm8gPSBsZmlyc3Rfbm9kZShQYXJ0aXRpb25QcnVuZUluZm8sIGxjKTsKKwkJUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKKworCQkvKiBDcmVhdGUgYW5kIHNhdmUgdGhlIFBhcnRpdGlv blBydW5lU3RhdGUuICovCisJCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KGVzdGF0ZSwgcHJ1bmVpbmZvKTsKKwkJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcyA9IGxh cHBlbmQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcywKKwkJCQkJCQkJCQkJICAgcHJ1bmVz dGF0ZSk7CisJfQorfQogCiAvKgogICogRXhlY0RvSW5pdGlhbFBydW5pbmcKQEAgLTE5NzMsMTEg KzE5OTgsMTEgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5v cywgQXR0ck1hcCAqYXR0ck1hcCkKICAqCQlvZiBjaGlsZCBzdWJub2RlcyB0aGF0IG5lZWQgdG8g YmUgaW5pdGlhbGl6ZWQgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIGZvcgogICoJCXBsYW4gbm9kZXMg dGhhdCBzdXBwb3J0IHBhcnRpdGlvbiBwcnVuaW5nLgogICoKLSAqIFRoaXMgZnVuY3Rpb24gaXRl cmF0ZXMgb3ZlciBlYWNoIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSBpbgotICogZXN0YXRlLT5l c19wYXJ0X3BydW5lX2luZm9zLiBGb3IgZWFjaCBlbnRyeSwgaXQgY3JlYXRlcyBhIFBhcnRpdGlv blBydW5lU3RhdGUKLSAqIGFuZCBhZGRzIGl0IHRvIGVzX3BhcnRfcHJ1bmVfc3RhdGVzLiAgRXhl Y0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygpIGFjY2Vzc2VzCisgKiBUaGlzIGZ1bmN0aW9uIGl0 ZXJhdGVzIG92ZXIgZWFjaCBQYXJ0aXRpb25QcnVuZVN0YXRlIGluCisgKiBlc3RhdGUtPmVzX3Bh cnRfcHJ1bmVfc3RhdGVzLCB3aGljaCBtdXN0IGhhdmUgYmVlbiBwb3B1bGF0ZWQgZWFybGllciBi eQorICogRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGVzKCkuIEV4ZWNJbml0UGFydGl0aW9u RXhlY1BydW5pbmcoKSBhY2Nlc3NlcwogICogdGhlc2Ugc3RhdGVzIHRocm91Z2ggdGhlaXIgY29y cmVzcG9uZGluZyBpbmRleGVzIGluIGVzX3BhcnRfcHJ1bmVfc3RhdGVzIGFuZAotICogYXNzaWdu IGVhY2ggc3RhdGUgdG8gdGhlIHBhcmVudCBub2RlJ3MgUGxhblN0YXRlLCBmcm9tIHdoZXJlIGl0 IHdpbGwgYmUgdXNlZAorICogYXNzaWducyBlYWNoIHN0YXRlIHRvIHRoZSBwYXJlbnQgbm9kZSdz IFBsYW5TdGF0ZSwgZnJvbSB3aGVyZSBpdCB3aWxsIGJlIHVzZWQKICAqIGZvciAiZXhlYyIgcHJ1 bmluZy4KICAqCiAgKiBJZiBpbml0aWFsIHBydW5pbmcgc3RlcHMgZXhpc3QgZm9yIGEgUGFydGl0 aW9uUHJ1bmVJbmZvIGVudHJ5LCB0aGlzIGZ1bmN0aW9uCkBAIC0xOTk1LDIwICsyMDIwLDEzIEBA IEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQogewogCUxpc3RDZWxsICAgKmxj OwogCi0JZm9yZWFjaChsYywgZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zKQorCUFzc2VydChl c3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyA9PSBOVUxMKTsKKwlmb3JlYWNoKGxjLCBlc3Rh dGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzKQogCXsKLQkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8gPSBsZmlyc3Rfbm9kZShQYXJ0aXRpb25QcnVuZUluZm8sIGxjKTsKLQkJUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKKwkJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0 ZSA9IChQYXJ0aXRpb25QcnVuZVN0YXRlICopIGxmaXJzdChsYyk7CiAJCUJpdG1hcHNldCAgKnZh bGlkc3VicGxhbnMgPSBOVUxMOwotCQlCaXRtYXBzZXQgICphbGxfbGVhZnBhcnRfcnRpcyA9IE5V TEw7CiAJCUJpdG1hcHNldCAgKnZhbGlkc3VicGxhbl9ydGlzID0gTlVMTDsKIAotCQkvKiBDcmVh dGUgYW5kIHNhdmUgdGhlIFBhcnRpdGlvblBydW5lU3RhdGUuICovCi0JCXBydW5lc3RhdGUgPSBD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKGVzdGF0ZSwgcHJ1bmVpbmZvLAotCQkJCQkJCQkJCQkg ICAmYWxsX2xlYWZwYXJ0X3J0aXMpOwotCQllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzID0g bGFwcGVuZChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzLAotCQkJCQkJCQkJCQkgICBwcnVu ZXN0YXRlKTsKLQogCQkvKgogCQkgKiBQZXJmb3JtIGluaXRpYWwgcHJ1bmluZyBzdGVwcywgaWYg YW55LCBhbmQgc2F2ZSB0aGUgcmVzdWx0CiAJCSAqIGJpdG1hcHNldCBvciBOVUxMIGFzIGRlc2Ny aWJlZCBpbiB0aGUgaGVhZGVyIGNvbW1lbnQuCkBAIC0yMDE2LDggKzIwMzQsNiBAQCBFeGVjRG9J bml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIAkJaWYgKHBydW5lc3RhdGUtPmRvX2luaXRp YWxfcHJ1bmUpCiAJCQl2YWxpZHN1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBy dW5lc3RhdGUsIHRydWUsCiAJCQkJCQkJCQkJCQkJICZ2YWxpZHN1YnBsYW5fcnRpcyk7Ci0JCWVs c2UKLQkJCXZhbGlkc3VicGxhbl9ydGlzID0gYWxsX2xlYWZwYXJ0X3J0aXM7CiAKIAkJZXN0YXRl LT5lc191bnBydW5lZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoZXN0YXRlLT5lc191bnBydW5l ZF9yZWxpZHMsCiAJCQkJCQkJCQkJCQkJIHZhbGlkc3VicGxhbl9ydGlzKTsKQEAgLTIxMzUsMTQg KzIxNTEsMTIgQEAgRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5z dGF0ZSwKICAqIHBhcmVudCBwbGFuIG5vZGUncyBQbGFuU3RhdGUuCiAgKgogICogSWYgaW5pdGlh bCBwcnVuaW5nIHN0ZXBzIGFyZSB0byBiZSBza2lwcGVkIChlLmcuLCBkdXJpbmcgRVhQTEFJTgot ICogKEdFTkVSSUNfUExBTikpLCAqYWxsX2xlYWZwYXJ0X3J0aXMgd2lsbCBiZSBwb3B1bGF0ZWQg d2l0aCB0aGUgUlQgaW5kZXhlcyBvZgotICogYWxsIGxlYWYgcGFydGl0aW9ucyB3aG9zZSBzY2Fu bmluZyBzdWJub2RlIGlzIGluY2x1ZGVkIGluIHRoZSBwYXJlbnQgcGxhbgotICogbm9kZSdzIGxp c3Qgb2YgY2hpbGQgcGxhbnMuIFRoZSBjYWxsZXIgbXVzdCBhZGQgdGhlc2UgUlQgaW5kZXhlcyB0 bwotICogZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMuCisgKiAoR0VORVJJQ19QTEFOKSksIHRo ZSBSVCBpbmRleGVzIG9mIGFsbCBsZWFmIHBhcnRpdGlvbnMgd2hvc2Ugc2Nhbm5pbmcKKyAqIHN1 Ym5vZGUgaXMgaW5jbHVkZWQgaW4gdGhlIHBhcmVudCBwbGFuIG5vZGUncyBsaXN0IG9mIGNoaWxk IHBsYW5zIGFyZQorICogYWRkZWQgdG8gZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMuCiAgKi8K IHN0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICoKLUNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo RVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAotCQkJCQkJICBC aXRtYXBzZXQgKiphbGxfbGVhZnBhcnRfcnRpcykKK0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo RVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogewogCVBhcnRp dGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJaW50CQkJbl9wYXJ0X2hpZXJhcmNoaWVzOwpA QCAtMjM3Niw4ICsyMzkwLDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVz dGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCiAJCQkJCQkJCQkJCQkJICAgcGlu Zm8tPmV4ZWNwYXJhbWlkcyk7CiAKIAkJCS8qCi0JCQkgKiBSZXR1cm4gYWxsIGxlYWYgcGFydGl0 aW9uIGluZGV4ZXMgaWYgd2UncmUgc2tpcHBpbmcgcHJ1bmluZyBpbgotCQkJICogdGhlIEVYUExB SU4gKEdFTkVSSUNfUExBTikgY2FzZS4KKwkJCSAqIEFkZCBhbGwgbGVhZiBwYXJ0aXRpb24gaW5k ZXhlcyB0byBlc191bnBydW5lZF9yZWxpZHMgaWYgd2UncmUKKwkJCSAqIHNraXBwaW5nIHBydW5p bmcgaW4gdGhlIEVYUExBSU4gKEdFTkVSSUNfUExBTikgY2FzZS4KIAkJCSAqLwogCQkJaWYgKHBp bmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMgJiYgIXBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1 bmUpCiAJCQl7CkBAIC0yMzg5LDEwICsyNDAzLDI5IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3Rh dGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAogCQkJCQlJ bmRleAkJcnRpbmRleCA9IHBwcnVuZS0+bGVhZnBhcnRfcnRpX21hcFtwYXJ0X2luZGV4XTsKIAog CQkJCQlpZiAocnRpbmRleCkKLQkJCQkJCSphbGxfbGVhZnBhcnRfcnRpcyA9IGJtc19hZGRfbWVt YmVyKCphbGxfbGVhZnBhcnRfcnRpcywKLQkJCQkJCQkJCQkJCQkJCXJ0aW5kZXgpOworCQkJCQkJ ZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMgPQorCQkJCQkJCWJtc19hZGRfbWVtYmVyKGVzdGF0 ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzLCBydGluZGV4KTsKIAkJCQl9CiAJCQl9CisJCQllbHNlIGlm IChwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzID09IE5JTCkKKwkJCXsKKwkJCQkvKgorCQkJ CSAqIEFsbCBwYXJ0aXRpb25zIGJldHRlciBiZSBwcmVzZW50IGluIGVzX3VucHJ1bmVkX3JlbGlk cyB3aGVuCisJCQkJICogbm9uZSBhcmUgaW5pdGlhbGx5IHBydW5hYmxlLgorCQkJCSAqLworI2lm ZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkJCQlpbnQJCQlwYXJ0X2luZGV4ID0gLTE7CisKKwkJ CQl3aGlsZSAoKHBhcnRfaW5kZXggPSBibXNfbmV4dF9tZW1iZXIocHBydW5lLT5wcmVzZW50X3Bh cnRzLAorCQkJCQkJCQkJCQkJCSBwYXJ0X2luZGV4KSkgPj0gMCkKKwkJCQl7CisJCQkJCUluZGV4 CQlydGluZGV4ID0gcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwW3BhcnRfaW5kZXhdOworCisJCQkJ CWlmIChydGluZGV4KQorCQkJCQkJQXNzZXJ0KGJtc19pc19tZW1iZXIocnRpbmRleCwgZXN0YXRl LT5lc191bnBydW5lZF9yZWxpZHMpKTsKKwkJCQl9CisjZW5kaWYKKwkJCX0KIAogCQkJaisrOwog CQl9CkBAIC0yNDg5LDkgKzI1MjIsMTAgQEAgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0 aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAgKgkJSW5pdGlhbGl6ZSBleGVjIHBydW5pbmcg Y29udGV4dHMgZGVmZXJyZWQgYnkgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZSgpCiAgKgogICog VGhpcyBmdW5jdGlvbiBmaW5hbGl6ZXMgZXhlYyBwcnVuaW5nIHNldHVwIGZvciBhIFBhcnRpdGlv blBydW5lU3RhdGUgYnkKLSAqIGluaXRpYWxpemluZyBjb250ZXh0cyBmb3IgcHJ1bmluZyBzdGVw cyB0aGF0IHJlcXVpcmUgdGhlIHBhcmVudCBwbGFuJ3MKLSAqIFBsYW5TdGF0ZS4gSXQgaXRlcmF0 ZXMgb3ZlciBQYXJ0aXRpb25QcnVuaW5nRGF0YSBlbnRyaWVzIGFuZCBzZXRzIHVwIHRoZQotICog bmVjZXNzYXJ5IGV4ZWN1dGlvbiBjb250ZXh0cyBmb3IgcHJ1bmluZyBkdXJpbmcgcXVlcnkgZXhl Y3V0aW9uLgorICogaW5pdGlhbGl6aW5nIGNvbnRleHRzIGZvciBwcnVuaW5nIHN0ZXBzIHRoYXQg cmVxdWlyZSBQQVJBTV9FWEVDIHBhcmFtZXRlcnMKKyAqIGFuZCB0aGUgcGFyZW50IHBsYW4ncyBQ bGFuU3RhdGUuIEl0IGl0ZXJhdGVzIG92ZXIgUGFydGl0aW9uUHJ1bmluZ0RhdGEKKyAqIGVudHJp ZXMgYW5kIHNldHMgdXAgdGhlIG5lY2Vzc2FyeSBleGVjdXRpb24gY29udGV4dHMgZm9yIHBydW5p bmcgZHVyaW5nCisgKiBxdWVyeSBleGVjdXRpb24uCiAgKgogICogQWxzbyBmaXggdGhlIG1hcHBp bmcgb2YgcGFydGl0aW9uIGluZGV4ZXMgdG8gc3VicGxhbiBpbmRleGVzIGNvbnRhaW5lZCBpbgog ICogcHJ1bmVzdGF0ZSBieSBjb25zaWRlcmluZyB0aGUgbmV3IGxpc3Qgb2Ygc3VicGxhbnMgdGhh dCBzdXJ2aXZlZCBpbml0aWFsCkBAIC0yNTE5LDkgKzI1NTMsMTYgQEAgSW5pdEV4ZWNQYXJ0aXRp b25QcnVuZUNvbnRleHRzKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAJYm9vbAkJ Zml4X3N1YnBsYW5fbWFwID0gZmFsc2U7CiAKIAlBc3NlcnQocHJ1bmVzdGF0ZS0+ZG9fZXhlY19w cnVuZSk7CisJQXNzZXJ0KHBydW5lc3RhdGUtPmVjb250ZXh0KTsKIAlBc3NlcnQocGFyZW50X3Bs YW4gIT0gTlVMTCk7CiAJZXN0YXRlID0gcGFyZW50X3BsYW4tPnN0YXRlOwogCisJLyoKKwkgKiBU aGVzZSBtaWdodCBub3QgYmUgYXZhaWxhYmxlIHdoZW4gRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGUoKSBpcworCSAqIGNhbGxlZC4KKwkgKi8KKwlwcnVuZXN0YXRlLT5lY29udGV4dC0+ZWN4 dF9wYXJhbV9leGVjX3ZhbHMgPSBlc3RhdGUtPmVzX3BhcmFtX2V4ZWNfdmFsczsKKwogCS8qCiAJ ICogTm8gbmVlZCB0byBmaXggc3VicGxhbnMgbWFwcyBpZiBpbml0aWFsIHBydW5pbmcgZGlkbid0 IGVsaW1pbmF0ZSBhbnkKIAkgKiBzdWJwbGFucy4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uaAppbmRleCA4MjA2M2VjMmExNi4uNGM5NjgwOGMzNzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjUGFydGl0aW9uLmgKQEAgLTEzMCw2ICsxMzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25QcnVuZVN0YXRlCiAJUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBhcnRwcnVuZWRhdGFbRkxFWElC TEVfQVJSQVlfTUVNQkVSXTsKIH0gUGFydGl0aW9uUHJ1bmVTdGF0ZTsKIAorZXh0ZXJuIHZvaWQg RXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGVzKEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiB2 b2lkIEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiBQYXJ0aXRp b25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLAogCQkJCQkJCQkJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCi0tIAoyLjQ3LjMK Cg== --000000000000c3b932064c6c289e--