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 1vq1US-002zMK-2g for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Feb 2026 04:06:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vq1UR-002Nh2-2t for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Feb 2026 04:06:12 +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 1vq1UR-002Ngf-0P for pgsql-hackers@lists.postgresql.org; Wed, 11 Feb 2026 04:06:12 +0000 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vq1UO-000000004Dk-3JZq for pgsql-hackers@postgresql.org; Wed, 11 Feb 2026 04:06:10 +0000 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2aae4816912so20846615ad.2 for ; Tue, 10 Feb 2026 20:06:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770782768; cv=none; d=google.com; s=arc-20240605; b=S2zdv2136FEqX/O66q2nfU64XxkgCIpeAsjdRaTdm2W6U3M26SBqlovrtbUBKpFRmZ H7/aN7xu4w3EBh85ehOhs1AzKXtcy3e03cRzxvpNKjJvCrylnCrNweaLsSiPh6Qz4lp1 LsVAKCz9s9qdJ07Kd4aXBSopw952Uskm2/YlvjHvZkhxh4cGxxKrx9NJVRSrI3AifaSg eDPO1iO/HDJ3WeUvzABGotrXDnHG+OG2/h+QBXF4ilmbS1GI2Ze5znG+p9WTB0uyjWeZ 8ga6KKoYOCsdHb08XMato1vhSK2ROuJI3tbvWLW8rLOzXKb6wTOa5nLKTqjQ/6o/F1a/ 3TFA== 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=hC65JeoGiFF+uCb9oV92LK6mGNDZcK2qyBTmizMOBHU=; fh=tEGznkotubUIMg2OSk+X8WB1rycKCJvPINKgkf6o3PQ=; b=NEbVMJ0mxsE+xHJmTNGZpn7lLZpTzFcJ7S1SDmLfdyy8RpzjR/oQVCump1U0QSVDQs 9LKnu7DhQ6p/hPKYuRcsGEqS15Nsp8NNWF0GuwkvjhlQkVVXCXpR/zxu8mpqKnzv6uw3 U4ZMeY4E5CtQk/9phVT4kT5vjnDvmXWEuVWC3FpBDatD/LFB0tgJqVfu/BdeLUK2jV/S dGMRmsIIpQyi9CcQmGVUegvAbISPky8epRWWPAgG49bttqjSAKMeE7S5cMTxjTKFvucU 14aHdSPl0AvBw/sW6cjebatAM4wFnFzp4xEZn9cNQU5iZyDnpLPxi5jejrw+/iVrBjWs XXcg==; 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=1770782768; x=1771387568; 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=hC65JeoGiFF+uCb9oV92LK6mGNDZcK2qyBTmizMOBHU=; b=Hz62sFayp7brn+LGX7CEBwh5ez6VhWFDWf7/YuAjxWUQ9Z5+zKmf+L8cXwDKe4wGfz lpNpolfc/oi1TJUCbD4GsraQlmm5qbYVrfXRhkKygk9Q7u4cd9/ubJHSBHwsEO3Rg1Q1 dMV7LBVylV9lRZikN/2tjs4iHsbvCB/WIuilolsP1GkRFbWFHviyvRT9PRsdwTL8v1Lp 9FZlAvZRjIYvZz5ef5uxhCAyHDb9wEy5UIULcazFf8730FqNMdEuIp9bljjUo9ZMPh/V c9gK3A+kuqZhSPbhDt2fySkvb1/qTIZGFbNHEyNHXV2g+OcmfPCfIxRKZF4VkHxOLGfo kLSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770782768; x=1771387568; 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=hC65JeoGiFF+uCb9oV92LK6mGNDZcK2qyBTmizMOBHU=; b=vt+18PfqDwWbcKE3S0zgYpqR/G8RCGYyZz8Nr6y8VfC+wvjnHly3s/oox7cbegJiBj sbXjxadFsdBpvICiPvnJr29lGfAdZ05ooUHA0HmydKb14iUjASI+TVJb56s8OSrptf2g FLorxLhx+COxvQc7qjvpYTklAu9qZBEOkC8hCYzRIddPE5pLLLk/QjdYmtEWKVgfdwiH qsEMk4WQxvOKL6J809lYcigejlR1e2EJWOZRASCsmczOce2RnWTtUKcOwfxUjmWSaJlS iW3Tq6/Msk496ta6M8lDbgnbgb+tyP5CqjS6p/V0OvUw1OlWz/C9fn+I8Ro6xcSmA4rD W86g== X-Forwarded-Encrypted: i=1; AJvYcCVoChd5D482Lq5Y6rKkACjGxtyESPLzKLhGcKfQOmA/f3wiJXyOWTxa7TY+YqL1vVtX9rMKpos2u+1/Myzg@postgresql.org X-Gm-Message-State: AOJu0Ywjo73GZevNbzA0ugGd/cileagbwzK5+eGL8L+WArxeCbpAoiTr GWrpcC/SmigPJwOHKjd74cmn4ff+XWijehYZU+s1FZYw/YL+9ZK/2sU4+ofJLMMUrEvdYaeBvsj VryKuq98gwRjM9sWHU9rF0BIgwXvWbJM= X-Gm-Gg: AZuq6aIFfVJWU4JfOmdj0XKcTJcYv5BZyIlcHw1TbXz7jT3FSiaiFfaCEbaPCTMk7/B kPTAFfVL+VFZYoc+2u8xYOSdDyKJogqrj3Hix2XEpER8RT8x1JXjeCFQJ3c/cOECyKeMHXjr/nL LX7MTs5nxClLRl3B8jw4lYBUAtkX02cZTcpSr6oh2BdiBob5+IULSQTk+iwzFMyVLCBs1MZgwkc VS3rT4M7PuARG76K5Cgi121LxgomdOh27i3baaNegcHu6qn0024njE2NDvYg3904SOLFS2GB3W2 MICMDfE1 X-Received: by 2002:a17:902:d1c5:b0:2aa:d6d5:7736 with SMTP id d9443c01a7336-2ab27d0f5ffmr8348715ad.22.1770782768038; Tue, 10 Feb 2026 20:06:08 -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: Wed, 11 Feb 2026 13:05:50 +0900 X-Gm-Features: AZwV_QgDg70vVyPTWuYjc3hqjcOzoG47TZdpOWwLPPw-f1lufXSu6oTGb1Py3bQ 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="000000000000dd25ce064a847dbd" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000dd25ce064a847dbd Content-Type: text/plain; charset="UTF-8" Hi, Here is v5 of this patch series. Changes since v4: * Removed the ExecPrep struct. ExecutorPrep() now returns an EState directly, which is carried through QueryDesc->estate and prep_estates lists. This simplifies the interface and avoids the ownership tracking (owns_estate) that ExecPrep required. * Moved the PARAM_EXEC values setup from ExecCreatePartitionPruneState() to InitExecPartitionPruneContexts(). This allows ExecutorPrep() to create pruning state before the executor has set up PARAM_EXEC slots. * Added a standalone test (0003) that inspects pg_locks to show baseline locking behavior: currently both pruning-on and pruning-off lock all child partitions. The pruning-aware locking patch (0004) then updates the expected output, making the behavioral change visible as a diff. * Absorbed the plan invalidation test (v4's 0005) into the locking patch (0004), since that's where CachedPlanPrepCleanup lives. * Moved the parallel worker reuse patch to the end of the series (0006), since the core functionality doesn't depend on it. * Fixed the missing i++ in CheckInitialPruningResultsInWorker(), renamed it from ExecCheckInitialPruningResults(), and made it a debug-only check (#ifdef USE_ASSERT_CHECKING) that verifies the worker's pruning result matches the leader's. The series is: 0001: Refactor partition pruning initialization for clarity 0002: Introduce ExecutorPrep and refactor executor startup 0003: Add test for partition lock behavior with generic cached plans 0004: Use pruning-aware locking in cached plans 0005: Make SQL function executor track ExecutorPrep state 0006: Reuse partition pruning results in parallel workers The core of this series is ExecutorPrep() in 0002 and its use by GetCachedPlan() in 0004. This is where I'd appreciate the most scrutiny. ExecutorPrep() factors out permission checks, range table initialization, and initial partition pruning from InitPlan() into a callable helper that can run before ExecutorStart(). This is what makes pruning-aware locking possible: GetCachedPlan() calls ExecutorPrep() during plan validation to determine which partitions survive initial pruning, then locks only those (plus firstResultRel targets). The resulting EStates are passed through CachedPlanPrepData and eventually adopted by ExecutorStart(), so the pruning work isn't repeated. The risk is that this pulls part of what we traditionally consider "execution" into a phase that runs during plan cache validation. Specifically: * Snapshot use: ExecutorPrep() requires an active snapshot for pruning expressions that may call PL functions. During plan cache validation, we use a transaction snapshot rather than the portal's execution snapshot. I believe this is safe because initial pruning has always used whatever snapshot happens to be active at the time ExecDoInitialPruning() runs, but it's a subtle change in when that happens. * EState memory lifetime: The EState created by ExecutorPrep() lives longer than it used to, since it's created during GetCachedPlan() but consumed later during ExecutorStart(). CachedPlanPrepData manages this: it tracks the EStates and their resource owner, and CachedPlanPrepCleanup() frees them if the plan is invalidated before execution reaches ExecutorStart(). I've tried to ensure that the EState's memory context hierarchy stays consistent with the current system through the reparenting done in portal/SPI/function paths. * Plan invalidation: If the plan is invalidated between ExecutorPrep() and ExecutorStart() (e.g., DDL on a partition during pruning), the prep state is discarded by CachedPlanPrepCleanup() and GetCachedPlan() retries. The invalidation regression test in 0004 exercises this path. As of 0002, ExecutorStart() is the only caller of ExecutorPrep(), so there is no behavioral change until 0004 wires it into GetCachedPlan(). This makes it possible to review the refactoring in isolation. I would really appreciate review from folks familiar with the executor lifecycle and plan cache internals. The approach touches the boundary between plan caching and execution, and getting the lifetime and snapshot semantics right is important. A note on 0006: it is intentionally last and independently droppable. It passes the leader's pruning results to parallel workers via nodeToString/stringToNode, which is the simplest approach but adds serialization overhead to all parallel queries regardless of whe -- Thanks, Amit Langote --000000000000dd25ce064a847dbd Content-Type: application/octet-stream; name="v5-0001-Refactor-partition-pruning-initialization-for-cla.patch" Content-Disposition: attachment; filename="v5-0001-Refactor-partition-pruning-initialization-for-cla.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlhibgco0 RnJvbSAxYzU0YTQ2MTQ1Zjc3NmRiOTEyY2FiODNhZjUxMTI1NDFiY2NmNzAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTAgRmViIDIwMjYgMTU6MDg6NTIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 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 bi5jCmluZGV4IGQxM2U3ODZjZjEzLi43Y2RkN2Q0NWM2YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYwpAQCAtMTg0LDggKzE4NCw3IEBAIHN0YXRpYyBjaGFyICpFeGVjQnVpbGRT bG90UGFydGl0aW9uS2V5RGVzY3JpcHRpb24oUmVsYXRpb24gcmVsLAogc3RhdGljIExpc3QgKmFk anVzdF9wYXJ0aXRpb25fY29sbm9zKExpc3QgKmNvbG5vcywgUmVzdWx0UmVsSW5mbyAqbGVhZl9w YXJ0X3JyaSk7CiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFw KExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCk7CiBzdGF0aWMgUGFydGl0aW9uUHJ1bmVT dGF0ZSAqQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwKLQkJCQkJCQkJ CQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAotCQkJCQkJCQkJCQkJCSAgQml0 bWFwc2V0ICoqYWxsX2xlYWZwYXJ0X3J0aXMpOworCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1 bmVJbmZvICpwcnVuZWluZm8pOwogc3RhdGljIHZvaWQgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4 dChQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCQkgIExpc3QgKnBydW5p bmdfc3RlcHMsCiAJCQkJCQkJCQkgIFBhcnRpdGlvbkRlc2MgcGFydGRlc2MsCkBAIC0xOTIwLDYg KzE5MTksOSBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9z LCBBdHRyTWFwICphdHRyTWFwKQogICoKICAqIEZ1bmN0aW9uczoKICAqCisgKiBFeGVjQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZXMKKyAqCQlDcmVhdGUgUGFydGl0aW9uUHJ1bmVTdGF0ZSBmb3Ig YWxsIFBhcnRpdGlvblBydW5lSW5mb3MgaW4gdGhlIEVTdGF0ZQorICoKICAqIEV4ZWNEb0luaXRp YWxQcnVuaW5nOgogICoJCVBlcmZvcm0gcnVudGltZSAiaW5pdGlhbCIgcHJ1bmluZywgaWYgbmVj ZXNzYXJ5LCB0byBkZXRlcm1pbmUgdGhlIHNldAogICoJCW9mIGNoaWxkIHN1Ym5vZGVzIHRoYXQg bmVlZCB0byBiZSBpbml0aWFsaXplZCBkdXJpbmcgRXhlY0luaXROb2RlKCkgZm9yCkBAIC0xOTQ0 LDYgKzE5NDYsMjkgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNv bG5vcywgQXR0ck1hcCAqYXR0ck1hcCkKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKKy8qCisg KiBFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMKKyAqCisgKiBDcmVhdGUgYSBQYXJ0aXRp b25QcnVuZVN0YXRlIGZvciBlYWNoIFBhcnRpdGlvblBydW5lSW5mbyBpbiB0aGUgZXN0YXRlLAor ICogYW5kIHNhdmUgdGhlbSBpbiBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzLiBUaGlzIHNl dHVwIGlzIHJlcXVpcmVkCisgKiBiZWZvcmUgYW55IGluaXRpYWwgb3IgcnVudGltZSBwcnVuaW5n IGNhbiBvY2N1ci4KKyAqLwordm9pZAorRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGVzKEVT dGF0ZSAqZXN0YXRlKQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgZXN0YXRl LT5lc19wYXJ0X3BydW5lX2luZm9zKQorCXsKKwkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWlu Zm8gPSBsZmlyc3Rfbm9kZShQYXJ0aXRpb25QcnVuZUluZm8sIGxjKTsKKwkJUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKKworCQkvKiBDcmVhdGUgYW5kIHNhdmUgdGhlIFBhcnRpdGlv blBydW5lU3RhdGUuICovCisJCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KGVzdGF0ZSwgcHJ1bmVpbmZvKTsKKwkJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcyA9IGxh cHBlbmQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcywKKwkJCQkJCQkJCQkJICAgcHJ1bmVz dGF0ZSk7CisJfQorfQogCiAvKgogICogRXhlY0RvSW5pdGlhbFBydW5pbmcKQEAgLTE5NTEsMTEg KzE5NzYsMTEgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5v cywgQXR0ck1hcCAqYXR0ck1hcCkKICAqCQlvZiBjaGlsZCBzdWJub2RlcyB0aGF0IG5lZWQgdG8g YmUgaW5pdGlhbGl6ZWQgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIGZvcgogICoJCXBsYW4gbm9kZXMg dGhhdCBzdXBwb3J0IHBhcnRpdGlvbiBwcnVuaW5nLgogICoKLSAqIFRoaXMgZnVuY3Rpb24gaXRl cmF0ZXMgb3ZlciBlYWNoIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSBpbgotICogZXN0YXRlLT5l c19wYXJ0X3BydW5lX2luZm9zLiBGb3IgZWFjaCBlbnRyeSwgaXQgY3JlYXRlcyBhIFBhcnRpdGlv blBydW5lU3RhdGUKLSAqIGFuZCBhZGRzIGl0IHRvIGVzX3BhcnRfcHJ1bmVfc3RhdGVzLiAgRXhl Y0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygpIGFjY2Vzc2VzCisgKiBUaGlzIGZ1bmN0aW9uIGl0 ZXJhdGVzIG92ZXIgZWFjaCBQYXJ0aXRpb25QcnVuZVN0YXRlIGluCisgKiBlc3RhdGUtPmVzX3Bh cnRfcHJ1bmVfc3RhdGVzLCB3aGljaCBtdXN0IGhhdmUgYmVlbiBwb3B1bGF0ZWQgZWFybGllciBi eQorICogRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGVzKCkuIEV4ZWNJbml0UGFydGl0aW9u RXhlY1BydW5pbmcoKSBhY2Nlc3NlcwogICogdGhlc2Ugc3RhdGVzIHRocm91Z2ggdGhlaXIgY29y cmVzcG9uZGluZyBpbmRleGVzIGluIGVzX3BhcnRfcHJ1bmVfc3RhdGVzIGFuZAotICogYXNzaWdu IGVhY2ggc3RhdGUgdG8gdGhlIHBhcmVudCBub2RlJ3MgUGxhblN0YXRlLCBmcm9tIHdoZXJlIGl0 IHdpbGwgYmUgdXNlZAorICogYXNzaWducyBlYWNoIHN0YXRlIHRvIHRoZSBwYXJlbnQgbm9kZSdz IFBsYW5TdGF0ZSwgZnJvbSB3aGVyZSBpdCB3aWxsIGJlIHVzZWQKICAqIGZvciAiZXhlYyIgcHJ1 bmluZy4KICAqCiAgKiBJZiBpbml0aWFsIHBydW5pbmcgc3RlcHMgZXhpc3QgZm9yIGEgUGFydGl0 aW9uUHJ1bmVJbmZvIGVudHJ5LCB0aGlzIGZ1bmN0aW9uCkBAIC0xOTczLDIwICsxOTk4LDEzIEBA IEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQogewogCUxpc3RDZWxsICAgKmxj OwogCi0JZm9yZWFjaChsYywgZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zKQorCUFzc2VydChl c3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyA9PSBOVUxMKTsKKwlmb3JlYWNoKGxjLCBlc3Rh dGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzKQogCXsKLQkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8gPSBsZmlyc3Rfbm9kZShQYXJ0aXRpb25QcnVuZUluZm8sIGxjKTsKLQkJUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKKwkJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0 ZSA9IChQYXJ0aXRpb25QcnVuZVN0YXRlICopIGxmaXJzdChsYyk7CiAJCUJpdG1hcHNldCAgKnZh bGlkc3VicGxhbnMgPSBOVUxMOwotCQlCaXRtYXBzZXQgICphbGxfbGVhZnBhcnRfcnRpcyA9IE5V TEw7CiAJCUJpdG1hcHNldCAgKnZhbGlkc3VicGxhbl9ydGlzID0gTlVMTDsKIAotCQkvKiBDcmVh dGUgYW5kIHNhdmUgdGhlIFBhcnRpdGlvblBydW5lU3RhdGUuICovCi0JCXBydW5lc3RhdGUgPSBD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKGVzdGF0ZSwgcHJ1bmVpbmZvLAotCQkJCQkJCQkJCQkg ICAmYWxsX2xlYWZwYXJ0X3J0aXMpOwotCQllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzID0g bGFwcGVuZChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzLAotCQkJCQkJCQkJCQkgICBwcnVu ZXN0YXRlKTsKLQogCQkvKgogCQkgKiBQZXJmb3JtIGluaXRpYWwgcHJ1bmluZyBzdGVwcywgaWYg YW55LCBhbmQgc2F2ZSB0aGUgcmVzdWx0CiAJCSAqIGJpdG1hcHNldCBvciBOVUxMIGFzIGRlc2Ny aWJlZCBpbiB0aGUgaGVhZGVyIGNvbW1lbnQuCkBAIC0xOTk0LDggKzIwMTIsNiBAQCBFeGVjRG9J bml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIAkJaWYgKHBydW5lc3RhdGUtPmRvX2luaXRp YWxfcHJ1bmUpCiAJCQl2YWxpZHN1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBy dW5lc3RhdGUsIHRydWUsCiAJCQkJCQkJCQkJCQkJICZ2YWxpZHN1YnBsYW5fcnRpcyk7Ci0JCWVs c2UKLQkJCXZhbGlkc3VicGxhbl9ydGlzID0gYWxsX2xlYWZwYXJ0X3J0aXM7CiAKIAkJZXN0YXRl LT5lc191bnBydW5lZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoZXN0YXRlLT5lc191bnBydW5l ZF9yZWxpZHMsCiAJCQkJCQkJCQkJCQkJIHZhbGlkc3VicGxhbl9ydGlzKTsKQEAgLTIxMTMsMTQg KzIxMjksMTIgQEAgRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5z dGF0ZSwKICAqIHBhcmVudCBwbGFuIG5vZGUncyBQbGFuU3RhdGUuCiAgKgogICogSWYgaW5pdGlh bCBwcnVuaW5nIHN0ZXBzIGFyZSB0byBiZSBza2lwcGVkIChlLmcuLCBkdXJpbmcgRVhQTEFJTgot ICogKEdFTkVSSUNfUExBTikpLCAqYWxsX2xlYWZwYXJ0X3J0aXMgd2lsbCBiZSBwb3B1bGF0ZWQg d2l0aCB0aGUgUlQgaW5kZXhlcyBvZgotICogYWxsIGxlYWYgcGFydGl0aW9ucyB3aG9zZSBzY2Fu bmluZyBzdWJub2RlIGlzIGluY2x1ZGVkIGluIHRoZSBwYXJlbnQgcGxhbgotICogbm9kZSdzIGxp c3Qgb2YgY2hpbGQgcGxhbnMuIFRoZSBjYWxsZXIgbXVzdCBhZGQgdGhlc2UgUlQgaW5kZXhlcyB0 bwotICogZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMuCisgKiAoR0VORVJJQ19QTEFOKSksIHRo ZSBSVCBpbmRleGVzIG9mIGFsbCBsZWFmIHBhcnRpdGlvbnMgd2hvc2Ugc2Nhbm5pbmcKKyAqIHN1 Ym5vZGUgaXMgaW5jbHVkZWQgaW4gdGhlIHBhcmVudCBwbGFuIG5vZGUncyBsaXN0IG9mIGNoaWxk IHBsYW5zIGFyZQorICogYWRkZWQgdG8gZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMuCiAgKi8K IHN0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICoKLUNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo RVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAotCQkJCQkJICBC aXRtYXBzZXQgKiphbGxfbGVhZnBhcnRfcnRpcykKK0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo RVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogewogCVBhcnRp dGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJaW50CQkJbl9wYXJ0X2hpZXJhcmNoaWVzOwpA QCAtMjM1NCw4ICsyMzY4LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVz dGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCiAJCQkJCQkJCQkJCQkJICAgcGlu Zm8tPmV4ZWNwYXJhbWlkcyk7CiAKIAkJCS8qCi0JCQkgKiBSZXR1cm4gYWxsIGxlYWYgcGFydGl0 aW9uIGluZGV4ZXMgaWYgd2UncmUgc2tpcHBpbmcgcHJ1bmluZyBpbgotCQkJICogdGhlIEVYUExB SU4gKEdFTkVSSUNfUExBTikgY2FzZS4KKwkJCSAqIEFkZCBhbGwgbGVhZiBwYXJ0aXRpb24gaW5k ZXhlcyB0byBlc191bnBydW5lZF9yZWxpZHMgaWYgd2UncmUKKwkJCSAqIHNraXBwaW5nIHBydW5p bmcgaW4gdGhlIEVYUExBSU4gKEdFTkVSSUNfUExBTikgY2FzZS4KIAkJCSAqLwogCQkJaWYgKHBp bmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMgJiYgIXBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1 bmUpCiAJCQl7CkBAIC0yMzY3LDEwICsyMzgxLDI5IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3Rh dGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAogCQkJCQlJ bmRleAkJcnRpbmRleCA9IHBwcnVuZS0+bGVhZnBhcnRfcnRpX21hcFtwYXJ0X2luZGV4XTsKIAog CQkJCQlpZiAocnRpbmRleCkKLQkJCQkJCSphbGxfbGVhZnBhcnRfcnRpcyA9IGJtc19hZGRfbWVt YmVyKCphbGxfbGVhZnBhcnRfcnRpcywKLQkJCQkJCQkJCQkJCQkJCXJ0aW5kZXgpOworCQkJCQkJ ZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMgPQorCQkJCQkJCWJtc19hZGRfbWVtYmVyKGVzdGF0 ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzLCBydGluZGV4KTsKIAkJCQl9CiAJCQl9CisJCQllbHNlIGlm IChwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzID09IE5JTCkKKwkJCXsKKwkJCQkvKgorCQkJ CSAqIEFsbCBwYXJ0aXRpb25zIGJldHRlciBiZSBwcmVzZW50IGluIGVzX3VucHJ1bmVkX3JlbGlk cyB3aGVuCisJCQkJICogbm9uZSBhcmUgaW5pdGlhbGx5IHBydW5hYmxlLgorCQkJCSAqLworI2lm ZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkJCQlpbnQJCQlwYXJ0X2luZGV4ID0gLTE7CisKKwkJ CQl3aGlsZSAoKHBhcnRfaW5kZXggPSBibXNfbmV4dF9tZW1iZXIocHBydW5lLT5wcmVzZW50X3Bh cnRzLAorCQkJCQkJCQkJCQkJCSBwYXJ0X2luZGV4KSkgPj0gMCkKKwkJCQl7CisJCQkJCUluZGV4 CQlydGluZGV4ID0gcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwW3BhcnRfaW5kZXhdOworCisJCQkJ CWlmIChydGluZGV4KQorCQkJCQkJQXNzZXJ0KGJtc19pc19tZW1iZXIocnRpbmRleCwgZXN0YXRl LT5lc191bnBydW5lZF9yZWxpZHMpKTsKKwkJCQl9CisjZW5kaWYKKwkJCX0KIAogCQkJaisrOwog CQl9CkBAIC0yNDY3LDkgKzI1MDAsMTAgQEAgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0 aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAgKgkJSW5pdGlhbGl6ZSBleGVjIHBydW5pbmcg Y29udGV4dHMgZGVmZXJyZWQgYnkgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZSgpCiAgKgogICog VGhpcyBmdW5jdGlvbiBmaW5hbGl6ZXMgZXhlYyBwcnVuaW5nIHNldHVwIGZvciBhIFBhcnRpdGlv blBydW5lU3RhdGUgYnkKLSAqIGluaXRpYWxpemluZyBjb250ZXh0cyBmb3IgcHJ1bmluZyBzdGVw cyB0aGF0IHJlcXVpcmUgdGhlIHBhcmVudCBwbGFuJ3MKLSAqIFBsYW5TdGF0ZS4gSXQgaXRlcmF0 ZXMgb3ZlciBQYXJ0aXRpb25QcnVuaW5nRGF0YSBlbnRyaWVzIGFuZCBzZXRzIHVwIHRoZQotICog bmVjZXNzYXJ5IGV4ZWN1dGlvbiBjb250ZXh0cyBmb3IgcHJ1bmluZyBkdXJpbmcgcXVlcnkgZXhl Y3V0aW9uLgorICogaW5pdGlhbGl6aW5nIGNvbnRleHRzIGZvciBwcnVuaW5nIHN0ZXBzIHRoYXQg cmVxdWlyZSBQQVJBTV9FWEVDIHBhcmFtZXRlcnMKKyAqIGFuZCB0aGUgcGFyZW50IHBsYW4ncyBQ bGFuU3RhdGUuIEl0IGl0ZXJhdGVzIG92ZXIgUGFydGl0aW9uUHJ1bmluZ0RhdGEKKyAqIGVudHJp ZXMgYW5kIHNldHMgdXAgdGhlIG5lY2Vzc2FyeSBleGVjdXRpb24gY29udGV4dHMgZm9yIHBydW5p bmcgZHVyaW5nCisgKiBxdWVyeSBleGVjdXRpb24uCiAgKgogICogQWxzbyBmaXggdGhlIG1hcHBp bmcgb2YgcGFydGl0aW9uIGluZGV4ZXMgdG8gc3VicGxhbiBpbmRleGVzIGNvbnRhaW5lZCBpbgog ICogcHJ1bmVzdGF0ZSBieSBjb25zaWRlcmluZyB0aGUgbmV3IGxpc3Qgb2Ygc3VicGxhbnMgdGhh dCBzdXJ2aXZlZCBpbml0aWFsCkBAIC0yNDk3LDkgKzI1MzEsMTYgQEAgSW5pdEV4ZWNQYXJ0aXRp b25QcnVuZUNvbnRleHRzKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAJYm9vbAkJ Zml4X3N1YnBsYW5fbWFwID0gZmFsc2U7CiAKIAlBc3NlcnQocHJ1bmVzdGF0ZS0+ZG9fZXhlY19w cnVuZSk7CisJQXNzZXJ0KHBydW5lc3RhdGUtPmVjb250ZXh0KTsKIAlBc3NlcnQocGFyZW50X3Bs YW4gIT0gTlVMTCk7CiAJZXN0YXRlID0gcGFyZW50X3BsYW4tPnN0YXRlOwogCisJLyoKKwkgKiBU aGVzZSBtaWdodCBub3QgYmUgYXZhaWxhYmxlIHdoZW4gRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGUoKSBpcworCSAqIGNhbGxlZC4KKwkgKi8KKwlwcnVuZXN0YXRlLT5lY29udGV4dC0+ZWN4 dF9wYXJhbV9leGVjX3ZhbHMgPSBlc3RhdGUtPmVzX3BhcmFtX2V4ZWNfdmFsczsKKwogCS8qCiAJ ICogTm8gbmVlZCB0byBmaXggc3VicGxhbnMgbWFwcyBpZiBpbml0aWFsIHBydW5pbmcgZGlkbid0 IGVsaW1pbmF0ZSBhbnkKIAkgKiBzdWJwbGFucy4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uaAppbmRleCA4MjA2M2VjMmExNi4uNGM5NjgwOGMzNzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjUGFydGl0aW9uLmgKQEAgLTEzMCw2ICsxMzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25QcnVuZVN0YXRlCiAJUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBhcnRwcnVuZWRhdGFbRkxFWElC TEVfQVJSQVlfTUVNQkVSXTsKIH0gUGFydGl0aW9uUHJ1bmVTdGF0ZTsKIAorZXh0ZXJuIHZvaWQg RXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGVzKEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiB2 b2lkIEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiBQYXJ0aXRp b25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLAogCQkJCQkJCQkJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCi0tIAoyLjQ3LjMK Cg== --000000000000dd25ce064a847dbd Content-Type: application/octet-stream; name="v5-0002-Introduce-ExecutorPrep-and-refactor-executor-star.patch" Content-Disposition: attachment; filename="v5-0002-Introduce-ExecutorPrep-and-refactor-executor-star.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlhibgcz1 RnJvbSBlNTg5ODM1MTg2MTUxOGZiYTI4ZjFiMGY3ZmY2ZWE4YTFmNWE5NGJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjE6NDc6NDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 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 ZC9leGVjdXRvci9SRUFETUUgICAgICAgICB8ICAxMSArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMgICAgIHwgMTIzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIHwgICAzICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9mdW5jdGlvbnMuYyAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMg ICAgICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgIHwg ICAyICsKIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgIHwgIDI0ICsrKystLQog c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgfCAgIDIgKwogc3JjL2luY2x1ZGUv Y29tbWFuZHMvZXhwbGFpbi5oICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNkZXNjLmggICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAg ICB8ICAyNiArKysrKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgIHwgICAx IC0KIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgIHwgICAyICsKIDIwIGZpbGVz IGNoYW5nZWQsIDE4OCBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHl0by5jCmluZGV4IDljZWVmZjZkOTllLi5lZjFlZTI1NjhjNiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRv LmMKQEAgLTg3NSw3ICs4NzUsNyBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3Vy Y2V0ZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJbnZh bGlkU25hcHNob3QsCi0JCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOworCQkJCQkJCQkJ CQlkZXN0LCBOVUxMLCBOVUxMLCAwLCBOVUxMKTsKIAogCQkvKgogCQkgKiBDYWxsIEV4ZWN1dG9y U3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0 ZWFzLmMKaW5kZXggMjcwZTliZjMxMTAuLmI0YTk4MDg5NTVhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0 ZWFzLmMKQEAgLTMzNiw3ICszMzYsNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQkvKiBDcmVhdGUgYSBRdWVyeURlc2Ms IHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KIAkJcXVlcnlEZXNj ID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJ R2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAotCQkJCQkJCQkJZGVzdCwgcGFy YW1zLCBxdWVyeUVudiwgMCk7CisJCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwLCBO VUxMKTsKIAogCQkvKiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3Ig ZXhlY3V0aW9uICovCiAJCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBHZXRJbnRvUmVsRUZsYWdz KGludG8pKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBiN2JiMTExNjg4Yy4uYTVkYjNlZDc4 OGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTM3MCw3ICszNzAsNyBAQCBzdGFuZGFyZF9F eHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAl9CiAKIAkv KiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JRXhwbGFpbk9uZVBs YW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAorCUV4cGxh aW5PbmVQbGFuKHBsYW4sIE5VTEwsIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVy eUVudiwKIAkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBO VUxMKSwKIAkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogfQpAQCAt NDkyLDcgKzQ5Miw4IEBAIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRv Q2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogICogdG8gY2FsbCBpdC4KICAqLwogdm9p ZAotRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICpp bnRvLCBFeHBsYWluU3RhdGUgKmVzLAorRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10LCBFU3RhdGUgKnByZXBfZXN0YXRlLAorCQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhw bGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJ bmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0 cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2Us CkBAIC01NTAsNyArNTUxLDggQEAgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRz dG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCS8qIENyZWF0ZSBhIFF1 ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5ICovCiAJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBs YW5uZWRzdG10LCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52 YWxpZFNuYXBzaG90LAotCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50 X29wdGlvbik7CisJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIGluc3RydW1lbnRfb3B0 aW9uLAorCQkJCQkJCQlwcmVwX2VzdGF0ZSk7CiAKIAkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlv bnMgKi8KIAlpZiAoZXMtPmFuYWx5emUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IDU5 NjEwNWVlMDc4Li41NzQzY2FhMDUwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTEw NDMsNyArMTA0Myw3IEBAIGV4ZWN1dGVfc3FsX3N0cmluZyhjb25zdCBjaGFyICpzcWwsIGNvbnN0 IGNoYXIgKmZpbGVuYW1lKQogCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCiAJCQkJ CQkJCQkJc3FsLAogCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIE5VTEwsCi0JCQkJCQkJ CQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CisJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCwg TlVMTCk7CiAKIAkJCQlFeGVjdXRvclN0YXJ0KHFkZXNjLCAwKTsKIAkJCQlFeGVjdXRvclJ1bihx ZGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4 IDgxYTU1YTMzZWYyLi4yY2RmZGNmOTg0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvbWF0dmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDM5 LDcgKzQzOSw3IEBAIHJlZnJlc2hfbWF0dmlld19kYXRhZmlsbChEZXN0UmVjZWl2ZXIgKmRlc3Qs IFF1ZXJ5ICpxdWVyeSwKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MsIHJlZGlyZWN0aW5nIG91dHB1 dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KIAlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Mo cGxhbiwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRT bmFwc2hvdCwKLQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CisJCQkJCQkJCWRlc3QsIE5V TEwsIE5VTEwsIDAsIE5VTEwpOwogCiAJLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUg dGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwogCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwppbmRleCAwMWVmYWMzMzE5ZS4uMWU4ODBhNmQ3Yzkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKQEAgLTExOCw2ICsxMTgsNyBAQCBQZXJmb3Jt Q3Vyc29yT3BlbihQYXJzZVN0YXRlICpwc3RhdGUsIERlY2xhcmVDdXJzb3JTdG10ICpjc3RtdCwg UGFyYW1MaXN0SW5mbyBwYQogCQkJCQkgIHF1ZXJ5U3RyaW5nLAogCQkJCQkgIENNRFRBR19TRUxF Q1QsCS8qIGN1cnNvcidzIHF1ZXJ5IGlzIGFsd2F5cyBhIFNFTEVDVCAqLwogCQkJCQkgIGxpc3Rf bWFrZTEocGxhbiksCisJCQkJCSAgTklMLAogCQkJCQkgIE5VTEwpOwogCiAJLyotLS0tLS0tLS0t CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggNWI4NmE3Mjc1ODcuLjAwNWZiYjQ4YWE1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHJlcGFyZS5jCkBAIC0yMDUsNiArMjA1LDcgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgZW50cnktPnBsYW5z b3VyY2UtPmNvbW1hbmRUYWcsCiAJCQkJCSAgcGxhbl9saXN0LAorCQkJCQkgIE5JTCwKIAkJCQkJ ICBjcGxhbik7CiAKIAkvKgpAQCAtNTc1LDcgKzU3Niw5IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnko RXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVz LAogCWNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZzsKIAlDYWNoZWRQbGFuICpjcGxhbjsKIAlMaXN0 CSAgICpwbGFuX2xpc3Q7CisJTGlzdAkgICAqcHJlcF9lc3RhdGVzOwogCUxpc3RDZWxsICAgKnA7 CisJTGlzdENlbGwgICAqcHJlcF9sYzsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtTEkgPSBOVUxMOwog CUVTdGF0ZQkgICAqZXN0YXRlID0gTlVMTDsKIAlpbnN0cl90aW1lCXBsYW5zdGFydDsKQEAgLTY1 MCwxNCArNjUzLDE4IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10 LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCX0KIAogCXBsYW5fbGlzdCA9 IGNwbGFuLT5zdG10X2xpc3Q7CisJcHJlcF9lc3RhdGVzID0gTklMOwogCiAJLyogRXhwbGFpbiBl YWNoIHF1ZXJ5ICovCisJcHJlcF9sYyA9IGxpc3RfaGVhZChwcmVwX2VzdGF0ZXMpOwogCWZvcmVh Y2gocCwgcGxhbl9saXN0KQogCXsKIAkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25vZGUo UGxhbm5lZFN0bXQsIHApOworCQlFU3RhdGUgKnByZXBfZXN0YXRlID0gbmV4dF9wcmVwX2VzdGF0 ZShwcmVwX2VzdGF0ZXMsICZwcmVwX2xjKTsKIAogCQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9 IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGludG8sIGVzLCBxdWVyeV9z dHJpbmcsIHBhcmFtTEksIHBzdGF0ZS0+cF9xdWVyeUVudiwKKwkJCUV4cGxhaW5PbmVQbGFuKHBz dG10LCBwcmVwX2VzdGF0ZSwKKwkJCQkJCSAgIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFt TEksIHBzdGF0ZS0+cF9xdWVyeUVudiwKIAkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVm ZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpLAogCQkJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291 bnRlcnMgOiBOVUxMKTsKIAkJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv UkVBRE1FIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCmluZGV4IDU0ZjQ3ODJmMzFiLi5k NzQ5Y2ViNjY4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQpAQCAtMjkxLDExICsyOTEsMTggQEAgUXVlcnkg UHJvY2Vzc2luZyBDb250cm9sIEZsb3cKIAogVGhpcyBpcyBhIHNrZXRjaCBvZiBjb250cm9sIGZs b3cgZm9yIGZ1bGwgcXVlcnkgcHJvY2Vzc2luZzoKIAorICAgIEV4ZWN1dG9yUHJlcAorCQlNYXkg YmUgcnVuIGJlZm9yZSBFeGVjdXRvclN0YXJ0IChlLmcuLCBmb3IgcGxhbiB2YWxpZGF0aW9uKSwg b3IKKwkJaW1wbGljaXRseSBmcm9tIEV4ZWN1dG9yU3RhcnQgaWYgbm90IGRvbmUgZWFybGllci4g IENyZWF0ZXMgRVN0YXRlLAorCQlwZXJmb3JtcyByYW5nZSB0YWJsZSBpbml0aWFsaXphdGlvbiwg cGVybWlzc2lvbiBjaGVja3MsIGFuZCBpbml0aWFsCisJCXBhcnRpdGlvbiBwcnVuaW5nLiAgUmV0 dXJucyB0aGUgRVN0YXRlIHRoYXQgRXhlY3V0b3JTdGFydCgpIHNob3VsZAorCQlyZXVzZS4KKwog CUNyZWF0ZVF1ZXJ5RGVzYwogCiAJRXhlY3V0b3JTdGFydAotCQlDcmVhdGVFeGVjdXRvclN0YXRl Ci0JCQljcmVhdGVzIHBlci1xdWVyeSBjb250ZXh0CisJCUV4ZWN1dG9yUHJlcCAoaWYgbm90IGFs cmVhZHkgZG9uZSwgaW5kaWNhdGVkIGJ5IE5VTEwgUXVlcnlEZXNjLmVzdGF0ZSkKKwkJCWNyZWF0 ZXMgRVN0YXRlIGFuZCBwZXItcXVlcnkgY29udGV4dAogCQlzd2l0Y2ggdG8gcGVyLXF1ZXJ5IGNv bnRleHQgdG8gcnVuIEV4ZWNJbml0Tm9kZQogCQlBZnRlclRyaWdnZXJCZWdpblF1ZXJ5CiAJCUV4 ZWNJbml0Tm9kZSAtLS0gcmVjdXJzaXZlbHkgc2NhbnMgcGxhbiB0cmVlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYwppbmRleCA2NTRmOTI0NmFkMC4uOGM1MGY0NWE1YzUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYwpAQCAtMTQ1LDcgKzE0NSw2IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAkvKiBzYW5pdHkgY2hlY2tzOiBxdWVyeURl c2MgbXVzdCBub3QgYmUgc3RhcnRlZCBhbHJlYWR5ICovCiAJQXNzZXJ0KHF1ZXJ5RGVzYyAhPSBO VUxMKTsKLQlBc3NlcnQocXVlcnlEZXNjLT5lc3RhdGUgPT0gTlVMTCk7CiAKIAkvKiBjYWxsZXIg bXVzdCBlbnN1cmUgdGhlIHF1ZXJ5J3Mgc25hcHNob3QgaXMgYWN0aXZlICovCiAJQXNzZXJ0KEdl dEFjdGl2ZVNuYXBzaG90KCkgPT0gcXVlcnlEZXNjLT5zbmFwc2hvdCk7CkBAIC0xNzEsOSArMTcw LDE5IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBl ZmxhZ3MpCiAKIAkvKgogCSAqIEJ1aWxkIEVTdGF0ZSwgc3dpdGNoIGludG8gcGVyLXF1ZXJ5IG1l bW9yeSBjb250ZXh0IGZvciBzdGFydHVwLgotCSAqLwotCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9y U3RhdGUoKTsKLQlxdWVyeURlc2MtPmVzdGF0ZSA9IGVzdGF0ZTsKKwkgKgorCSAqIElmIEV4ZWN1 dG9yUHJlcCgpIHJhbiBlYXJsaWVyIChlLmcuLCB0byBkbyBpbml0aWFsIHBydW5pbmcgZHVyaW5n IHBsYW4KKwkgKiB2YWxpZGl0eSBjaGVja2luZyksIHJldXNlIGl0cyBFU3RhdGUgdG8gYXZvaWQg cmVkb2luZyByYW5nZSB0YWJsZSBzZXR1cAorCSAqIGFuZCBwcnVuaW5nLiBPdGhlcndpc2UsIGNy ZWF0ZSBhIGZyZXNoIEVTdGF0ZSBhcyB1c3VhbC4KKwkgKi8KKwlpZiAocXVlcnlEZXNjLT5lc3Rh dGUgPT0gTlVMTCkKKwkJcXVlcnlEZXNjLT5lc3RhdGUgPSBFeGVjdXRvclByZXAocXVlcnlEZXNj LT5wbGFubmVkc3RtdCwKKwkJCQkJCQkJCQkgcXVlcnlEZXNjLT5wYXJhbXMsCisJCQkJCQkJCQkJ IEN1cnJlbnRSZXNvdXJjZU93bmVyLAorCQkJCQkJCQkJCSB0cnVlLAorCQkJCQkJCQkJCSBlZmxh Z3MpOworCWVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOworCUFzc2VydChlc3RhdGUpOwogCiAJ b2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7 CiAKQEAgLTI2Myw2ICsyNzIsODQgQEAgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4 dCk7CiB9CiAKKy8qCisgKiBFeGVjdXRvclByZXA6IHByZXBhcmUgZXhlY3V0b3Igc3RhdGUgZm9y IGEgUGxhbm5lZFN0bXQgb3V0c2lkZSBFeGVjdXRvclN0YXJ0LgorICoKKyAqIFBlcmZvcm1zIHJh bmdlIHRhYmxlIGluaXRpYWxpemF0aW9uLCBwZXJtaXNzaW9uIGNoZWNrcywgYW5kIGluaXRpYWwK KyAqIHBhcnRpdGlvbiBwcnVuaW5nIGlmIHBhcnRQcnVuZUluZm9zIGFyZSBwcmVzZW50IGFuZCBk b19pbml0aWFsX3BydW5pbmcgaXMKKyAqIHRydWUuCisgKgorICogVGhpcyBpcyBpbnRlbmRlZCBm b3IgY2FsbGVycyB0aGF0IG5lZWQgZXhlY3V0b3IgbWV0YWRhdGEgYWhlYWQgb2YgYWN0dWFsCisg KiBleGVjdXRpb24uIFR5cGljYWwgdXNlIGNhc2VzIGluY2x1ZGU6CisgKgktIGRldGVybWluaW5n IHdoaWNoIHJlbGF0aW9ucyBtdXN0IGJlIGxvY2tlZCBkdXJpbmcgcGxhbiBjYWNoZSB2YWxpZGF0 aW9uOworICoJLSBpbml0aWFsaXppbmcgdW5wcnVuZWQgcmVsaWRzIGFuZCB2YWxpZCBzdWJwbGFu cyBpbiBwYXJhbGxlbCB3b3JrZXJzCisgKgkgIHVzaW5nIHN0YXRlIGNvcGllZCBmcm9tIHRoZSBs ZWFkZXIuCisgKgorICogVGhlIGV4ZWN1dG9yIGNhbiByZXVzZSB0aGUgcmVzdWx0aW5nIHN0YXRl IHRvIGF2b2lkIHJlZHVuZGFudCBzZXR1cCBkdXJpbmcKKyAqIEV4ZWN1dG9yU3RhcnQoKS4KKyAq CisgKiBSZXR1cm5zIGFuIEVTdGF0ZSB0aGF0IGNhbiBiZSByZXVzZWQgbGF0ZXIuCisgKi8KK0VT dGF0ZSAqCitFeGVjdXRvclByZXAoUGxhbm5lZFN0bXQgKnBzdG10LCBQYXJhbUxpc3RJbmZvIHBh cmFtcywgUmVzb3VyY2VPd25lciBvd25lciwKKwkJCSBib29sIGRvX2luaXRpYWxfcHJ1bmluZywg aW50IGVmbGFncykKK3sKKwlSZXNvdXJjZU93bmVyIG9sZG93bmVyOworCUVTdGF0ZSAqZXN0YXRl OworCisJaWYgKHBzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKKwkJcmV0dXJuIE5V TEw7CisKKwkvKiBDYWxsZXIgbXVzdCBoYXZlIGVzdGFibGlzaGVkIGFuIGFjdGl2ZSBzbmFwc2hv dC4gKi8KKwlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CisKKwllc3RhdGUgPSBDcmVhdGVF eGVjdXRvclN0YXRlKCk7CisJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IHBzdG10OworCWVzdGF0 ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBzdG10LT5wYXJ0UHJ1bmVJbmZvczsKKwllc3RhdGUt PmVzX3BhcmFtX2xpc3RfaW5mbyA9IHBhcmFtczsKKwllc3RhdGUtPmVzX3RvcF9lZmxhZ3MgPSBl ZmxhZ3M7CisKKwkvKgorCSAqIERvIHBlcm1pc3Npb25zIGNoZWNrcy4KKwkgKi8KKwlFeGVjQ2hl Y2tQZXJtaXNzaW9ucyhwc3RtdC0+cnRhYmxlLCBwc3RtdC0+cGVybUluZm9zLCB0cnVlKTsKKwor CS8qCisJICogSW5pdGlhbGl6ZSByYW5nZSB0YWJsZS4KKwkgKi8KKwlFeGVjSW5pdFJhbmdlVGFi bGUoZXN0YXRlLCBwc3RtdC0+cnRhYmxlLCBwc3RtdC0+cGVybUluZm9zLAorCQkJCQkgICBibXNf Y29weShwc3RtdC0+dW5wcnVuYWJsZVJlbGlkcykpOworCisJLyoKKwkgKiBFbnN1cmUgbG9ja3Mg dGFrZW4gZHVyaW5nIGluaXRpYWwgcHJ1bmluZyBhcmUgdHJhY2tlZCB1bmRlciB0aGUgZ2l2ZW4K KwkgKiBSZXNvdXJjZU93bmVyIChlLmcuLCBvbmUgYXNzb2NpYXRlZCB3aXRoIENhY2hlZFBsYW4g dmFsaWRhdGlvbikuCisJICovCisJb2xkb3duZXIgPSBDdXJyZW50UmVzb3VyY2VPd25lcjsKKwlD dXJyZW50UmVzb3VyY2VPd25lciA9IG93bmVyOworCisJLyoKKwkgKiBTZXQgdXAgUGFydGl0aW9u UHJ1bmVTdGF0ZSBzdHJ1Y3R1cmVzIG5lZWRlZCBmb3IgYm90aCBpbml0aWFsIGFuZAorCSAqIHJ1 bnRpbWUgcGFydGl0aW9uIHBydW5pbmcuIFRoZXNlIHN0cnVjdHVyZXMgYXJlIGJ1aWx0IGZyb20g dGhlCisJICogUGFydGl0aW9uUHJ1bmVJbmZvIGVudHJpZXMgaW4gdGhlIHBsYW4gdHJlZS4KKwkg KgorCSAqIElmIGRvX2luaXRpYWxfcHJ1bmluZyBpcyB0cnVlLCBhbHNvIHBlcmZvcm0gaW5pdGlh bCBwcnVuaW5nIHRvIGNvbXB1dGUKKwkgKiB0aGUgc3Vic2V0IG9mIGNoaWxkIHN1YnBsYW5zIHRo YXQgd2lsbCBiZSBleGVjdXRlZC4gVGhlIHJlc3VsdHMsCisJICogd2hpY2ggYXJlIGJpdG1hcHNl dHMgb2Ygc2VsZWN0ZWQgY2hpbGQgaW5kZXhlcywgYXJlIHNhdmVkIGluCisJICogZXNfcGFydF9w cnVuZV9yZXN1bHRzLiBUaGlzIGxpc3QgaXMgcGFyYWxsZWwgdG8gZXNfcGFydF9wcnVuZV9pbmZv cy4KKwkgKgorCSAqIEluIHBhcmFsbGVsIHdvcmtlcnMsIGRvX2luaXRpYWxfcHJ1bmluZyBzaG91 bGQgYmUgZmFsc2UgLS0gdGhleSByZWNlaXZlCisJICogZXNfcGFydF9wcnVuZV9yZXN1bHRzIGZy b20gdGhlIGxlYWRlciBwcm9jZXNzIGFuZCBzaG91bGQgb25seSBpbml0aWFsaXplCisJICogdGhl IFBhcnRpdGlvblBydW5lU3RhdGVzLgorCSAqLworCUV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0 YXRlcyhlc3RhdGUpOworCWlmIChkb19pbml0aWFsX3BydW5pbmcpCisJCUV4ZWNEb0luaXRpYWxQ cnVuaW5nKGVzdGF0ZSk7CisKKwlDdXJyZW50UmVzb3VyY2VPd25lciA9IG9sZG93bmVyOworCisJ cmV0dXJuIGVzdGF0ZTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWN1dG9yUnVuCiAgKgpAQCAt ODM4LDM4ICs5MjUsMTQgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxh Z3MpCiAJQ21kVHlwZQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247CiAJUGxhbm5l ZFN0bXQgKnBsYW5uZWRzdG10ID0gcXVlcnlEZXNjLT5wbGFubmVkc3RtdDsKIAlQbGFuCSAgICpw bGFuID0gcGxhbm5lZHN0bXQtPnBsYW5UcmVlOwotCUxpc3QJICAgKnJhbmdlVGFibGUgPSBwbGFu bmVkc3RtdC0+cnRhYmxlOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7 CiAJUGxhblN0YXRlICAqcGxhbnN0YXRlOwogCVR1cGxlRGVzYwl0dXBUeXBlOwogCUxpc3RDZWxs ICAgKmw7CiAJaW50CQkJaTsKIAotCS8qCi0JICogRG8gcGVybWlzc2lvbnMgY2hlY2tzCi0JICov Ci0JRXhlY0NoZWNrUGVybWlzc2lvbnMocmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZv cywgdHJ1ZSk7Ci0KLQkvKgotCSAqIGluaXRpYWxpemUgdGhlIG5vZGUncyBleGVjdXRpb24gc3Rh dGUKLQkgKi8KLQlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFubmVk c3RtdC0+cGVybUluZm9zLAotCQkJCQkgICBibXNfY29weShwbGFubmVkc3RtdC0+dW5wcnVuYWJs ZVJlbGlkcykpOwotCi0JZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwotCWVz dGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBsYW5uZWRzdG10LT5wYXJ0UHJ1bmVJbmZvczsK LQotCS8qCi0JICogUGVyZm9ybSBydW50aW1lICJpbml0aWFsIiBwcnVuaW5nIHRvIGlkZW50aWZ5 IHdoaWNoIGNoaWxkIHN1YnBsYW5zLAotCSAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNoaWxkcmVu IG9mIHBsYW4gbm9kZXMgdGhhdCBjb250YWluCi0JICogUGFydGl0aW9uUHJ1bmVJbmZvIHN1Y2gg YXMgQXBwZW5kLCB3aWxsIG5vdCBiZSBleGVjdXRlZC4gVGhlIHJlc3VsdHMsCi0JICogd2hpY2gg YXJlIGJpdG1hcHNldHMgb2YgaW5kZXhlcyBvZiB0aGUgY2hpbGQgc3VicGxhbnMgdGhhdCB3aWxs IGJlCi0JICogZXhlY3V0ZWQsIGFyZSBzYXZlZCBpbiBlc19wYXJ0X3BydW5lX3Jlc3VsdHMuICBU aGVzZSByZXN1bHRzIGNvcnJlc3BvbmQKLQkgKiB0byBlYWNoIFBhcnRpdGlvblBydW5lSW5mbyBl bnRyeSwgYW5kIHRoZSBlc19wYXJ0X3BydW5lX3Jlc3VsdHMgbGlzdCBpcwotCSAqIHBhcmFsbGVs IHRvIGVzX3BhcnRfcHJ1bmVfaW5mb3MuCi0JICovCi0JRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGVzKGVzdGF0ZSk7Ci0JRXhlY0RvSW5pdGlhbFBydW5pbmcoZXN0YXRlKTsKKwkvKiBFeGVj dXRvclByZXAoKSBtdXN0IGhhdmUgYmVlbiBkb25lLiAqLworCUFzc2VydChxdWVyeURlc2MtPmVz dGF0ZSk7CiAKIAkvKgogCSAqIE5leHQsIGJ1aWxkIHRoZSBFeGVjUm93TWFyayBhcnJheSBmcm9t IHRoZSBQbGFuUm93TWFyayhzKSwgaWYgYW55LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwu YwppbmRleCBmODc5NzhjMTM3ZS4uMmQzYzVkNjEyM2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJhbGxlbC5jCkBAIC0xMjk5LDcgKzEyOTksOCBAQCBFeGVjUGFyYWxsZWxHZXRRdWVyeURlc2Mo c2htX3RvYyAqdG9jLCBEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyLAogCXJldHVybiBDcmVhdGVRdWVy eURlc2MocHN0bXQsCiAJCQkJCQkgICBxdWVyeVN0cmluZywKIAkJCQkJCSAgIEdldEFjdGl2ZVNu YXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKLQkJCQkJCSAgIHJlY2VpdmVyLCBwYXJhbUxJLCBO VUxMLCBpbnN0cnVtZW50X29wdGlvbnMpOworCQkJCQkJICAgcmVjZWl2ZXIsIHBhcmFtTEksIE5V TEwsIGluc3RydW1lbnRfb3B0aW9ucywKKwkJCQkJCSAgIE5VTEwpOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9mdW5jdGlvbnMuYwppbmRleCA0Y2EzNDJhNDNlZi4uYzkzZTI2NjRjZmQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC0xMzY4LDcgKzEzNjgsOCBAQCBwb3N0cXVlbF9zdGFydChl eGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAkJCQkJCQkg ZGVzdCwKIAkJCQkJCQkgZmNhY2hlLT5wYXJhbUxJLAogCQkJCQkJCSBlcy0+cWQgPyBlcy0+cWQt PnF1ZXJ5RW52IDogTlVMTCwKLQkJCQkJCQkgMCk7CisJCQkJCQkJIDAsCisJCQkJCQkJIE5VTEwp OwogCiAJLyogVXRpbGl0eSBjb21tYW5kcyBkb24ndCBuZWVkIEV4ZWN1dG9yLiAqLwogCWlmIChl cy0+cWQtPm9wZXJhdGlvbiAhPSBDTURfVVRJTElUWSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggMzAxOWEz YjJiOTcuLjk5NGE2OWExYzhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGku YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAtMTY4NSw2ICsxNjg1LDcgQEAg U1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxh biwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgcGxhbnNvdXJjZS0+Y29tbWFuZFRhZywK IAkJCQkJICBzdG10X2xpc3QsCisJCQkJCSAgTklMLAogCQkJCQkgIGNwbGFuKTsKIAogCS8qCkBA IC0yNDk5LDYgKzI1MDAsOCBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNv bnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQlDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlID0gKENhY2hlZFBsYW5Tb3VyY2UgKikgbGZpcnN0KGxjMSk7CiAJCUxpc3QJICAgKnN0 bXRfbGlzdDsKIAkJTGlzdENlbGwgICAqbGMyOworCQlMaXN0CSAgICpwcmVwX2VzdGF0ZXM7CisJ CUxpc3RDZWxsICAgKnByZXBfbGM7CiAKIAkJc3BpY2FsbGJhY2thcmcucXVlcnkgPSBwbGFuc291 cmNlLT5xdWVyeV9zdHJpbmc7CiAKQEAgLTI1NzcsNiArMjU4MCw3IEBAIF9TUElfZXhlY3V0ZV9w bGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJ CQkJCQkJICBwbGFuX293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKIAogCQlzdG10X2xp c3QgPSBjcGxhbi0+c3RtdF9saXN0OworCQlwcmVwX2VzdGF0ZXMgPSBOSUw7CiAKIAkJLyoKIAkJ ICogSWYgd2Ugd2VyZW4ndCBnaXZlbiBhIHNwZWNpZmljIHNuYXBzaG90IHRvIHVzZSwgYW5kIHRo ZSBzdGF0ZW1lbnQKQEAgLTI2MTQsOSArMjYxOCwxMSBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQ bGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJfQogCQl9 CiAKKwkJcHJlcF9sYyA9IGxpc3RfaGVhZChwcmVwX2VzdGF0ZXMpOwogCQlmb3JlYWNoKGxjMiwg c3RtdF9saXN0KQogCQl7CiAJCQlQbGFubmVkU3RtdCAqc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5u ZWRTdG10LCBsYzIpOworCQkJRVN0YXRlICpwcmVwX2VzdGF0ZSA9IG5leHRfcHJlcF9lc3RhdGUo cHJlcF9lc3RhdGVzLCAmcHJlcF9sYyk7CiAJCQlib29sCQljYW5TZXRUYWcgPSBzdG10LT5jYW5T ZXRUYWc7CiAJCQlEZXN0UmVjZWl2ZXIgKmRlc3Q7CiAKQEAgLTI2OTQsNyArMjcwMCw4IEBAIF9T UElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMg Km9wdGlvbnMsCiAJCQkJCQkJCQkJZGVzdCwKIAkJCQkJCQkJCQlvcHRpb25zLT5wYXJhbXMsCiAJ CQkJCQkJCQkJX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKLQkJCQkJCQkJCQkwKTsKKwkJCQkJCQkJ CQkwLAorCQkJCQkJCQkJCXByZXBfZXN0YXRlKTsKIAkJCQlyZXMgPSBfU1BJX3BxdWVyeShxZGVz YywgZmlyZV90cmlnZ2VycywKIAkJCQkJCQkJICBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQg OiAwKTsKIAkJCQlGcmVlUXVlcnlEZXNjKHFkZXNjKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAwMmU5 YWFhNmJjYS4uNTU0MWM1NzRjOGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTEyMzAsNiArMTIzMCw3 IEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZykKIAkJCQkJCSAg cXVlcnlfc3RyaW5nLAogCQkJCQkJICBjb21tYW5kVGFnLAogCQkJCQkJICBwbGFudHJlZV9saXN0 LAorCQkJCQkJICBOSUwsCiAJCQkJCQkgIE5VTEwpOwogCiAJCS8qCkBAIC0yMDI5LDYgKzIwMzAs NyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCQkJCSAg cXVlcnlfc3RyaW5nLAogCQkJCQkgIHBzcmMtPmNvbW1hbmRUYWcsCiAJCQkJCSAgY3BsYW4tPnN0 bXRfbGlzdCwKKwkJCQkJICBOSUwsCiAJCQkJCSAgY3BsYW4pOwogCiAJLyogUG9ydGFsIGlzIGRl ZmluZWQsIHNldCB0aGUgcGxhbiBJRCBiYXNlZCBvbiBpdHMgY29udGVudHMuICovCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnku YwppbmRleCBkOGZjNzVkMGJiOS4uYjE4MjY2NDg3YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMzcsNiAr MzcsNyBAQCBQb3J0YWwJCUFjdGl2ZVBvcnRhbCA9IE5VTEw7CiAKIAogc3RhdGljIHZvaWQgUHJv Y2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAorCQkJCQkJIEVTdGF0ZSAqcHJlcF9lc3RhdGUs CiAJCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCSBQYXJhbUxpc3RJbmZvIHBh cmFtcywKIAkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTcyLDcgKzczLDgg QEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKIAkJCQlEZXN0UmVj ZWl2ZXIgKmRlc3QsCiAJCQkJUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnYsCi0JCQkJaW50IGluc3RydW1lbnRfb3B0aW9ucykKKwkJCQlpbnQgaW5z dHJ1bWVudF9vcHRpb25zLAorCQkJCUVTdGF0ZSAqcHJlcF9lc3RhdGUpCiB7CiAJUXVlcnlEZXNj ICAqcWQgPSBwYWxsb2Nfb2JqZWN0KFF1ZXJ5RGVzYyk7CiAKQEAgLTkzLDYgKzk1LDkgQEAgQ3Jl YXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKIAlxZC0+cGxhbnN0YXRlID0g TlVMTDsKIAlxZC0+dG90YWx0aW1lID0gTlVMTDsKIAorCS8qIFVzZSB0aGUgRVN0YXRlIGNyZWF0 ZWQgYnkgRXhlY3V0b3JQcmVwKCkgaWYgYWxyZWFkeSBkb25lLiAqLworCXFkLT5lc3RhdGUgPSBw cmVwX2VzdGF0ZTsKKwogCS8qIG5vdCB5ZXQgZXhlY3V0ZWQgKi8KIAlxZC0+YWxyZWFkeV9leGVj dXRlZCA9IGZhbHNlOwogCkBAIC0xMjMsNiArMTI4LDcgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURl c2MgKnFkZXNjKQogICoJCVBPUlRBTF9PTkVfUkVUVVJOSU5HLCBvciBQT1JUQUxfT05FX01PRF9X SVRIIHBvcnRhbAogICoKICAqCXBsYW46IHRoZSBwbGFuIHRyZWUgZm9yIHRoZSBxdWVyeQorICoJ cHJlcF9lc3RhdGU6IEVTdGF0ZSBjcmVhdGVkIGluIEV4ZWN1dG9yUHJlcCgpIGZvciB0aGUgcXVl cnksIGlmIGFueQogICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeQog ICoJcGFyYW1zOiBhbnkgcGFyYW1ldGVycyBuZWVkZWQKICAqCWRlc3Q6IHdoZXJlIHRvIHNlbmQg cmVzdWx0cwpAQCAtMTM1LDYgKzE0MSw3IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVz YykKICAqLwogc3RhdGljIHZvaWQKIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKKwkJ CSBFU3RhdGUgKnByZXBfZXN0YXRlLAogCQkJIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkg UGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCkBA IC0xNDgsNyArMTU1LDggQEAgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAogCSAqLwog CXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBzb3VyY2VUZXh0LAogCQkJCQkJCQlH ZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkJCWRlc3QsIHBhcmFt cywgcXVlcnlFbnYsIDApOworCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwLAorCQkJ CQkJCQlwcmVwX2VzdGF0ZSk7CiAKIAkvKgogCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVw YXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KQEAgLTQ5NSw3ICs1MDMsMTAgQEAgUG9ydGFsU3Rh cnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkJCQkJCU5vbmVf UmVjZWl2ZXIsCiAJCQkJCQkJCQkJCXBhcmFtcywKIAkJCQkJCQkJCQkJcG9ydGFsLT5xdWVyeUVu diwKLQkJCQkJCQkJCQkJMCk7CisJCQkJCQkJCQkJCTAsCisJCQkJCQkJCQkJCXBvcnRhbC0+cHJl cF9lc3RhdGVzID8KKwkJCQkJCQkJCQkJKEVTdGF0ZSAqKSBsaW5pdGlhbChwb3J0YWwtPnByZXBf ZXN0YXRlcykgOgorCQkJCQkJCQkJCQlOVUxMKTsKIAogCQkJCS8qCiAJCQkJICogSWYgaXQncyBh IHNjcm9sbGFibGUgY3Vyc29yLCBleGVjdXRvciBuZWVkcyB0byBzdXBwb3J0CkBAIC0xMTg1LDYg KzExOTYsNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogewogCWJvb2wJCWFjdGl2 ZV9zbmFwc2hvdF9zZXQgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpzdG10bGlzdF9pdGVtOworCUxp c3RDZWxsICAgKnByZXBfbGM7CiAKIAkvKgogCSAqIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBEZXN0 UmVtb3RlRXhlY3V0ZSwgY2hhbmdlIHRvIERlc3ROb25lLiAgVGhlCkBAIC0xMjA1LDkgKzEyMTcs MTEgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkgKiBMb29wIHRvIGhhbmRsZSB0 aGUgaW5kaXZpZHVhbCBxdWVyaWVzIGdlbmVyYXRlZCBmcm9tIGEgc2luZ2xlIHBhcnNldHJlZQog CSAqIGJ5IGFuYWx5c2lzIGFuZCByZXdyaXRlLgogCSAqLworCXByZXBfbGMgPSBsaXN0X2hlYWQo cG9ydGFsLT5wcmVwX2VzdGF0ZXMpOwogCWZvcmVhY2goc3RtdGxpc3RfaXRlbSwgcG9ydGFsLT5z dG10cykKIAl7CiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10 LCBzdG10bGlzdF9pdGVtKTsKKwkJRVN0YXRlICpwcmVwX2VzdGF0ZSA9IG5leHRfcHJlcF9lc3Rh dGUocG9ydGFsLT5wcmVwX2VzdGF0ZXMsICZwcmVwX2xjKTsKIAogCQkvKgogCQkgKiBJZiB3ZSBn b3QgYSBjYW5jZWwgc2lnbmFsIGluIHByaW9yIGNvbW1hbmQsIHF1aXQKQEAgLTEyNjUsNyArMTI3 OSw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQlpZiAocHN0bXQtPmNhblNl dFRhZykKIAkJCXsKIAkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICovCi0JCQkJ UHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwgcHJlcF9lc3RhdGUs CiAJCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJh bXMsCiAJCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCkBAIC0xMjc0LDcgKzEyODgsNyBAQCBQb3J0 YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJZWxzZQogCQkJewogCQkJCS8qIHN0bXQgYWRk ZWQgYnkgcmV3cml0ZSBjYW5ub3Qgc2V0IHRhZyAqLwotCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwK KwkJCQlQcm9jZXNzUXVlcnkocHN0bXQsIHByZXBfZXN0YXRlLAogCQkJCQkJCSBwb3J0YWwtPnNv dXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwt PnF1ZXJ5RW52LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0u YyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKaW5kZXggYzFhNTNlNjU4Y2Iu Ljk0MWU5NTAxMGMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1l bS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTI4NCw2ICsy ODQsNyBAQCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9ydGFsLAogCQkJCSAgY29uc3QgY2hh ciAqc291cmNlVGV4dCwKIAkJCQkgIENvbW1hbmRUYWcgY29tbWFuZFRhZywKIAkJCQkgIExpc3Qg KnN0bXRzLAorCQkJCSAgTGlzdCAqcHJlcF9lc3RhdGVzLAogCQkJCSAgQ2FjaGVkUGxhbiAqY3Bs YW4pCiB7CiAJQXNzZXJ0KFBvcnRhbElzVmFsaWQocG9ydGFsKSk7CkBAIC0yOTcsNiArMjk4LDcg QEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAlwb3J0YWwtPmNvbW1hbmRUYWcg PSBjb21tYW5kVGFnOwogCVNldFF1ZXJ5Q29tcGxldGlvbigmcG9ydGFsLT5xYywgY29tbWFuZFRh ZywgMCk7CiAJcG9ydGFsLT5zdG10cyA9IHN0bXRzOworCXBvcnRhbC0+cHJlcF9lc3RhdGVzID0g cHJlcF9lc3RhdGVzOwogCXBvcnRhbC0+Y3BsYW4gPSBjcGxhbjsKIAlwb3J0YWwtPnN0YXR1cyA9 IFBPUlRBTF9ERUZJTkVEOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhw bGFpbi5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IDg2MjI2ZjhkYjcw Li4zNzU2YTExMzQ1ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5o CisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaApAQCAtNjMsNyArNjMsOCBAQCBl eHRlcm4gdm9pZCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVz ZSAqaW50bywKIAkJCQkJCQkgIEV4cGxhaW5TdGF0ZSAqZXMsIFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zKTsKIAotZXh0ZXJuIHZvaWQgRXhwbGFpbk9u ZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLAorZXh0ZXJu IHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBFU3RhdGUgKnBy ZXBfZXN0YXRlLAorCQkJCQkJICAgSW50b0NsYXVzZSAqaW50bywKIAkJCQkJCSAgIEV4cGxhaW5T dGF0ZSAqZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgUGFyYW1MaXN0SW5m byBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAogCQkJCQkJICAgY29uc3QgaW5z dHJfdGltZSAqcGxhbmR1cmF0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXggZDNhNTcy NDI4NDQuLjNhMjE2OWM5NjEzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj ZGVzYy5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAgLTQzLDcgKzQz LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiAJUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlF bnY7IC8qIHF1ZXJ5IGVudmlyb25tZW50IHBhc3NlZCBpbiAqLwogCWludAkJCWluc3RydW1lbnRf b3B0aW9uczsgLyogT1Igb2YgSW5zdHJ1bWVudE9wdGlvbiBmbGFncyAqLwogCi0JLyogVGhlc2Ug ZmllbGRzIGFyZSBzZXQgYnkgRXhlY3V0b3JTdGFydCAqLworCS8qIFRoZXNlIGZpZWxkcyBhcmUg c2V0IGJ5IEV4ZWN1dG9yU3RhcnQgb3IgRXhlY3V0b3JQcmVwICovCiAJVHVwbGVEZXNjCXR1cERl c2M7CQkvKiBkZXNjcmlwdG9yIGZvciByZXN1bHQgdHVwbGVzICovCiAJRVN0YXRlCSAgICplc3Rh dGU7CQkJLyogZXhlY3V0b3IncyBxdWVyeS13aWRlIHN0YXRlICovCiAJUGxhblN0YXRlICAqcGxh bnN0YXRlOwkJLyogdHJlZSBvZiBwZXItcGxhbi1ub2RlIHN0YXRlICovCkBAIC02Myw3ICs2Myw4 IEBAIGV4dGVybiBRdWVyeURlc2MgKkNyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5l ZHN0bXQsCiAJCQkJCQkJCSAgRGVzdFJlY2VpdmVyICpkZXN0LAogCQkJCQkJCQkgIFBhcmFtTGlz dEluZm8gcGFyYW1zLAogCQkJCQkJCQkgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAotCQkJ CQkJCQkgIGludCBpbnN0cnVtZW50X29wdGlvbnMpOworCQkJCQkJCQkgIGludCBpbnN0cnVtZW50 X29wdGlvbnMsCisJCQkJCQkJCSAgRVN0YXRlICpwcmVwX2VzdGF0ZSk7CiAKIGV4dGVybiB2b2lk IEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5o CmluZGV4IDU1YTdkOTMwZDI2Li5mN2Y5MjJiZmFhMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5o CkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNpbmNs dWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNp bmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgogCiAKIC8qCkBAIC0yMzQsNiArMjM1LDMxIEBAIEV4 ZWNHZXRKdW5rQXR0cmlidXRlKFR1cGxlVGFibGVTbG90ICpzbG90LCBBdHRyTnVtYmVyIGF0dG5v LCBib29sICppc051bGwpCiAgKi8KIGV4dGVybiB2b2lkIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQgc3RhbmRhcmRfRXhlY3V0b3JT dGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CisKK2V4dGVybiBFU3RhdGUg KkV4ZWN1dG9yUHJlcChQbGFubmVkU3RtdCAqcHN0bXQsCisJCQkJCQkJUGFyYW1MaXN0SW5mbyBw YXJhbXMsCisJCQkJCQkJUmVzb3VyY2VPd25lciBvd25lciwKKwkJCQkJCQlib29sIGRvX2luaXRp YWxfcHJ1bmluZywKKwkJCQkJCQlpbnQgZWZsYWdzKTsKKworLyoKKyAqIFdhbGsgYSBwcmVwX2Vz dGF0ZXMgbGlzdCBpbiBzdGVwIHdpdGggYSBwYXJhbGxlbCBzdG10X2xpc3QgaXRlcmF0aW9uLgor ICogUmV0dXJucyB0aGUgbmV4dCBFU3RhdGUgKG9yIE5VTEwpIGFuZCBhZHZhbmNlcyAqbGMuICBT YWZlIHdoZW4KKyAqIHByZXBfZXN0YXRlcyBpcyBOSUw7IGp1c3QgcGFzcyBsaXN0X2hlYWQoTklM KSB3aGljaCBpcyBOVUxMLgorICovCitzdGF0aWMgaW5saW5lIEVTdGF0ZSAqCituZXh0X3ByZXBf ZXN0YXRlKExpc3QgKnByZXBfZXN0YXRlcywgTGlzdENlbGwgKipsYykKK3sKKwlFU3RhdGUgKnJl c3VsdCA9IE5VTEw7CisKKwlpZiAoKmxjICE9IE5VTEwpCisJeworCQlyZXN1bHQgPSAoRVN0YXRl ICopIGxmaXJzdCgqbGMpOworCQkqbGMgPSBsbmV4dChwcmVwX2VzdGF0ZXMsICpsYyk7CisJfQor CXJldHVybiByZXN1bHQ7Cit9CisKIGV4dGVybiB2b2lkIEV4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLAogCQkJCQkJU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHVpbnQ2NCBjb3VudCk7 CiBleHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKaW5kZXggZjgwNTNkOWU1NzIuLjcwYWNmZTNhZDkwIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaApAQCAtNzc0LDcgKzc3NCw2IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQog CUxpc3QJICAgKmVzX2luc2VydF9wZW5kaW5nX21vZGlmeXRhYmxlczsKIH0gRVN0YXRlOwogCi0K IC8qCiAgKiBFeGVjUm93TWFyayAtCiAgKgkgICBydW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIEZP UiBbS0VZXSBVUERBVEUvU0hBUkUgY2xhdXNlcwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRp bHMvcG9ydGFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAppbmRleCBhN2JlZGIxMmMx OC4uZjY5YjRiOWI0NzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCkBAIC0xMzcsNiArMTM3LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgUG9ydGFsRGF0YQogCUNvbW1hbmRUYWcJY29tbWFuZFRhZzsJCS8qIGNvbW1hbmQg dGFnIGZvciBvcmlnaW5hbCBxdWVyeSAqLwogCVF1ZXJ5Q29tcGxldGlvbiBxYzsJCQkvKiBjb21t YW5kIGNvbXBsZXRpb24gZGF0YSBmb3IgZXhlY3V0ZWQgcXVlcnkgKi8KIAlMaXN0CSAgICpzdG10 czsJCQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAqLworCUxpc3QJICAgKnByZXBfZXN0YXRlczsJ LyogbGlzdCBvZiBFU3RhdGVzIHdoZXJlIG5lZWRlZCAqLwogCUNhY2hlZFBsYW4gKmNwbGFuOwkJ CS8qIENhY2hlZFBsYW4sIGlmIHN0bXRzIGFyZSBmcm9tIG9uZSAqLwogCiAJUGFyYW1MaXN0SW5m byBwb3J0YWxQYXJhbXM7IC8qIHBhcmFtcyB0byBwYXNzIHRvIHF1ZXJ5ICovCkBAIC0yNDAsNiAr MjQxLDcgQEAgZXh0ZXJuIHZvaWQgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJ CQkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJICBDb21tYW5kVGFnIGNvbW1h bmRUYWcsCiAJCQkJCQkJICBMaXN0ICpzdG10cywKKwkJCQkJCQkgIExpc3QgKnByZXBfZXN0YXRl cywKIAkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKTsKIGV4dGVybiBQbGFubmVkU3RtdCAqUG9y dGFsR2V0UHJpbWFyeVN0bXQoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxDcmVh dGVIb2xkU3RvcmUoUG9ydGFsIHBvcnRhbCk7Ci0tIAoyLjQ3LjMKCg== --000000000000dd25ce064a847dbd Content-Type: application/octet-stream; name="v5-0003-Add-test-for-partition-lock-behavior-with-generic.patch" Content-Disposition: attachment; filename="v5-0003-Add-test-for-partition-lock-behavior-with-generic.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlhibgd42 RnJvbSAwYTJlMDhiODU5ODZiMTRhMjZjZjYyMjZjNmZiMWU1MDk0YjNhMTczIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTAgRmViIDIwMjYgMjI6MDA6MzIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 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 --000000000000dd25ce064a847dbd Content-Type: application/octet-stream; name="v5-0004-Use-pruning-aware-locking-in-cached-plans.patch" Content-Disposition: attachment; filename="v5-0004-Use-pruning-aware-locking-in-cached-plans.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlhibgd83 RnJvbSBlM2RhMjlmMjRjOTJhODJhMmQzODkyOWMxYWE5NmZlNzJjYzk4YTBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjI6MzA6NTIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 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 MTAgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDI3 ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQgfCAgNTAg KystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQgICAgICAgfCAgNjIg KysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbCAgICAgIHwgIDI0 ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wbGFuY2FjaGUuc3FsICAgICAgICAgICAgfCAgNTEg KysrCiAxNSBmaWxlcyBjaGFuZ2VkLCA1NzQgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0p 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 ZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IGY1ZTlkMzY5OTQwLi5mYzdmZjQ2 Zjg2YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTQ2NjQsOCAr NDY2NCw4IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGFzIGEgcmVmZXJlbmNlIGZvciBidWlsZGluZyB0aGUg UmVzdWx0UmVsSW5mbyBvZiB0aGUgdGFyZ2V0IHBhcnRpdGlvbi4KIAkgKiBJbiBlaXRoZXIgY2Fz ZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hpY2ggcmVzdWx0IHJlbGF0aW9uIGlzIGtlcHQsIHNvIHdl CiAJICoganVzdCBrZWVwIHRoZSBmaXJzdCBvbmUsIGlmIGFsbCBvdGhlcnMgaGF2ZSBiZWVuIHBy dW5lZC4gIFNlZSBhbHNvLAotCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCksIHdoaWNoIGVuc3Vy ZXMgdGhhdCB0aGlzIGZpcnN0IHJlc3VsdCByZWxhdGlvbgotCSAqIGhhcyBiZWVuIGxvY2tlZC4K KwkgKiBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkKCksIHdoaWNoIGVuc3VyZXMgdGhhdCB0 aGlzIGZpcnN0IHJlc3VsdAorCSAqIHJlbGF0aW9uIGhhcyBiZWVuIGxvY2tlZC4KIAkgKi8KIAlp ID0gMDsKIAlmb3JlYWNoKGwsIG5vZGUtPnJlc3VsdFJlbGF0aW9ucykKQEAgLTQ2NzksNiArNDY3 OSw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0 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 ZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA3NTdiZGM3 YjFkZS4uMTA0NzAyOTdiZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAg LTY1NSw2ICs2NTUsNyBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hh ciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJCQkJCQkJCQkJICBnbG9iLT5w cnVuYWJsZVJlbGlkcyk7CiAJcmVzdWx0LT5wZXJtSW5mb3MgPSBnbG9iLT5maW5hbHJ0ZXBlcm1p bmZvczsKIAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsK KwlyZXN1bHQtPmZpcnN0UmVzdWx0UmVscyA9IGdsb2ItPmZpcnN0UmVzdWx0UmVsczsKIAlyZXN1 bHQtPmFwcGVuZFJlbGF0aW9ucyA9IGdsb2ItPmFwcGVuZFJlbGF0aW9uczsKIAlyZXN1bHQtPnN1 YnBsYW5zID0gZ2xvYi0+c3VicGxhbnM7CiAJcmVzdWx0LT5yZXdpbmRQbGFuSURzID0gZ2xvYi0+ cmV3aW5kUGxhbklEczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Nl dHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCAxNmQy MDBjZmI0Ni4uZDIwYTY2ZTNlMzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3NldHJlZnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMK QEAgLTM4MSw2ICszODEsMjYgQEAgc2V0X3BsYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9v dCwgUGxhbiAqcGxhbikKIAkJfQogCX0KIAorCS8qCisJICogUmVjb3JkIHRoZSBmaXJzdCByZXN1 bHQgcmVsYXRpb24gaWYgaXQgYmVsb25ncyB0byB0aGUgc2V0IG9mCisJICogaW5pdGlhbGx5IHBy dW5hYmxlIHJlbGF0aW9ucy4gIFdlIHVzZSBibXNfbmV4dF9tZW1iZXIoKSB0byBnZXQKKwkgKiB0 aGUgbG93ZXN0LW51bWJlcmVkIGxlYWYgcmVzdWx0IHJlbCwgd2hpY2ggbWF0Y2hlcworCSAqIGxp bml0aWFsX2ludChNb2RpZnlUYWJsZS5yZXN1bHRSZWxhdGlvbnMpIGJlY2F1c2UgcGFydGl0aW9u CisJICogZXhwYW5zaW9uIHByZXNlcnZlcyBSVCBpbmRleCBvcmRlci4gIFRoZXJlIGlzIG9uZSBN b2RpZnlUYWJsZQorCSAqIHBlciBxdWVyeSBsZXZlbCwgc28gdGhpcyBjYXB0dXJlcyBleGFjdGx5 IG9uZSBlbnRyeSBwZXIgbGV2ZWwuCisJICogRXhlY0luaXRNb2RpZnlUYWJsZSgpIGFzc2VydHMg dGhhdCB0aGUgcmVjb3JkZWQgaW5kZXggbWF0Y2hlcworCSAqIHdoYXQgaXQgYWN0dWFsbHkgbmVl ZHMuCisJICovCisJaWYgKHJvb3QtPmxlYWZfcmVzdWx0X3JlbGlkcykKKwl7CisJCUluZGV4CWZp cnN0UmVzdWx0UmVsID0gYm1zX25leHRfbWVtYmVyKHJvb3QtPmxlYWZfcmVzdWx0X3JlbGlkcywg LTEpOworCisJCWZpcnN0UmVzdWx0UmVsICs9IHJ0b2Zmc2V0OworCQlpZiAoYm1zX2lzX21lbWJl cihmaXJzdFJlc3VsdFJlbCwgcm9vdC0+Z2xvYi0+cHJ1bmFibGVSZWxpZHMpKQorCQkJcm9vdC0+ Z2xvYi0+Zmlyc3RSZXN1bHRSZWxzID0KKwkJCQlsYXBwZW5kX2ludChyb290LT5nbG9iLT5maXJz dFJlc3VsdFJlbHMsIGZpcnN0UmVzdWx0UmVsKTsKKwl9CisKIAlyZXR1cm4gcmVzdWx0OwogfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKaW5kZXggNTU0MWM1NzRjOGIuLmI3NDliOWM4ZDFhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jCkBAIC0xNjM2LDYgKzE2MzYsNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZv IGlucHV0X21lc3NhZ2UpCiAJaW50MTYJICAgKnJmb3JtYXRzID0gTlVMTDsKIAlDYWNoZWRQbGFu U291cmNlICpwc3JjOwogCUNhY2hlZFBsYW4gKmNwbGFuOworCUNhY2hlZFBsYW5QcmVwRGF0YSBj cHJlcCA9IHswfTsKIAlQb3J0YWwJCXBvcnRhbDsKIAljaGFyCSAgICpxdWVyeV9zdHJpbmc7CiAJ Y2hhcgkgICAqc2F2ZWRfc3RtdF9uYW1lOwpAQCAtMjAxNyw3ICsyMDE4LDExIEBAIGV4ZWNfYmlu ZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkgKiB3aWxsIGJlIGdlbmVyYXRl ZCBpbiBNZXNzYWdlQ29udGV4dC4gIFRoZSBwbGFuIHJlZmNvdW50IHdpbGwgYmUKIAkgKiBhc3Np Z25lZCB0byB0aGUgUG9ydGFsLCBzbyBpdCB3aWxsIGJlIHJlbGVhc2VkIGF0IHBvcnRhbCBkZXN0 cnVjdGlvbi4KIAkgKi8KLQljcGxhbiA9IEdldENhY2hlZFBsYW4ocHNyYywgcGFyYW1zLCBOVUxM LCBOVUxMKTsKKworCS8qIEV4ZWN1dG9yUHJlcCgpIHN0YXRlIGxpdmVzIGluIHBvcnRhbCBjb250 ZXh0LiAqLworCWNwcmVwLmNvbnRleHQgPSBwb3J0YWwtPnBvcnRhbENvbnRleHQ7CisJY3ByZXAu b3duZXIgPSBwb3J0YWwtPnJlc293bmVyOworCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwc3JjLCBw YXJhbXMsIE5VTEwsIE5VTEwsICZjcHJlcCk7CiAKIAkvKgogCSAqIE5vdyB3ZSBjYW4gZGVmaW5l IHRoZSBwb3J0YWwuCkBAIC0yMDMwLDcgKzIwMzUsNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJp bmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIHBzcmMt PmNvbW1hbmRUYWcsCiAJCQkJCSAgY3BsYW4tPnN0bXRfbGlzdCwKLQkJCQkJICBOSUwsCisJCQkJ CSAgY3ByZXAucHJlcF9lc3RhdGVzLAogCQkJCQkgIGNwbGFuKTsKIAogCS8qIFBvcnRhbCBpcyBk ZWZpbmVkLCBzZXQgdGhlIHBsYW4gSUQgYmFzZWQgb24gaXRzIGNvbnRlbnRzLiAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCAzN2Q1ZDczYjdmYi4uMzA1ZmU5MTI1ODYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBi b29sIFN0bXRQbGFuUmVxdWlyZXNSZXZhbGlkYXRpb24oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSk7CiBzdGF0aWMgYm9vbCBCdWlsZGluZ1BsYW5SZXF1aXJlc1NuYXBzaG90KENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIExpc3QgKlJldmFsaWRhdGVDYWNoZWRRdWVy eShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgICBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudik7Ci1zdGF0aWMgYm9vbCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSk7CitzdGF0aWMgYm9vbCBQcmVwQW5kQ2hlY2tDYWNoZWRQbGFuKENh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApOwog c3RhdGljIENhY2hlZFBsYW4gKkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLCBMaXN0ICpxbGlzdCwKIAkJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFt cywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogc3RhdGljIGJvb2wgY2hvb3NlX2N1c3Rv bV9wbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCkBAIC0xMDEsNiArMTAxLDkgQEAg c3RhdGljIGJvb2wgY2hvb3NlX2N1c3RvbV9wbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3Vy Y2UsCiBzdGF0aWMgZG91YmxlIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9v bCBpbmNsdWRlX3BsYW5uZXIpOwogc3RhdGljIFF1ZXJ5ICpRdWVyeUxpc3RHZXRQcmltYXJ5U3Rt dChMaXN0ICpzdG10cyk7CiBzdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpz dG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7CitzdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2Nr c1VucHJ1bmVkKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlLAorCQkJCQkJCQkJCSBDYWNo ZWRQbGFuUHJlcERhdGEgKmNwcmVwKTsKK3N0YXRpYyB2b2lkIENhY2hlZFBsYW5QcmVwQ2xlYW51 cChDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVwKTsKIHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVy TG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1 ZXJ5Rm9yTG9ja3MoUXVlcnkgKnBhcnNldHJlZSwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29s IFNjYW5RdWVyeVdhbGtlcihOb2RlICpub2RlLCBib29sICphY3F1aXJlKTsKQEAgLTEzNyw2ICsx NDAsMjYgQEAgUmVzb3VyY2VPd25lckZvcmdldFBsYW5DYWNoZVJlZihSZXNvdXJjZU93bmVyIG93 bmVyLCBDYWNoZWRQbGFuICpwbGFuKQogLyogR1VDIHBhcmFtZXRlciAqLwogaW50CQkJcGxhbl9j YWNoZV9tb2RlID0gUExBTl9DQUNIRV9NT0RFX0FVVE87CiAKKy8qCisgKiBMb2NrIGFjcXVpc2l0 aW9uIHBvbGljeSBmb3IgZXhlY3V0aW9uIGxvY2tzLgorICoKKyAqIExPQ0tfQUxMIGFjcXVpcmVz IGxvY2tzIG9uIGFsbCByZWxhdGlvbnMgbWVudGlvbmVkIGluIHRoZSBwbGFuLAorICogcmVwcm9k dWNpbmcgdGhlIGJlaGF2aW9yIG9mIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkuCisgKgorICogTE9D S19VTlBSVU5FRCByZXN0cmljdHMgbG9ja2luZyB0byBvbmx5IHRoZSB1bnBydW5lZCByZWxhdGlv bnMuIFRoYXQKKyAqIGluY2x1ZGVzIHRob3NlIG1lbnRpb25lZCBpbiBQbGFubmVkU3RtdC51bnBy dW5hYmxlUmVsaWRzIGFuZCB0aGUgbGVhZgorICogcGFydGl0aW9ucyByZW1haW5pbmcgYWZ0ZXIg cGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcuCisgKi8KK3R5cGVkZWYgZW51bSBMb2NrUG9saWN5 Cit7CisJTE9DS19BTEwsCisJTE9DS19VTlBSVU5FRCwKK30gTG9ja1BvbGljeTsKKworc3RhdGlj IHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3NXaXRoUG9saWN5KExpc3QgKnN0bXRfbGlzdCwKKwkJ CQkJCQkJCQkgICBMb2NrUG9saWN5IHBvbGljeSwgYm9vbCBhY3F1aXJlLAorCQkJCQkJCQkJCSAg IENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApOworCiAvKgogICogSW5pdFBsYW5DYWNoZTogaW5p dGlhbGl6ZSBtb2R1bGUgZHVyaW5nIEluaXRQb3N0Z3Jlcy4KICAqCkBAIC05MzgsNyArOTYxLDEy IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAog fQogCiAvKgotICogQ2hlY2tDYWNoZWRQbGFuOiBzZWUgaWYgdGhlIENhY2hlZFBsYW5Tb3VyY2Un cyBnZW5lcmljIHBsYW4gaXMgdmFsaWQuCisgKiBQcmVwQW5kQ2hlY2tDYWNoZWRQbGFuOiBzZWUg aWYgdGhlIENhY2hlZFBsYW5Tb3VyY2UncyBnZW5lcmljIHBsYW4gaXMgdmFsaWQuCisgKgorICog SWYgJ2NwcmVwJyBpcyBub3QgTlVMTCwgRXhlY3V0b3JQcmVwKCkgaXMgYXBwbGllZCB0byBlYWNo IFBsYW5uZWRTdG10IHRvCisgKiBjb21wdXRlIHRoZSBzZXQgb2YgcGFydGl0aW9ucyB0aGF0IHN1 cnZpdmUgaW5pdGlhbCBydW50aW1lIHBydW5pbmcgaW4gb3JkZXIKKyAqIHRvIG9ubHkgbG9jayB0 aGVtLiAgVGhlIEVTdGF0ZXMgY3JlYXRlZCB0byBkbyBzbyBhcmUgc2F2ZWQgaW4gY3ByZXAgZm9y CisgKiBsYXRlciByZXVzZSBieSBFeGVjdXRvclN0YXJ0KCkuCiAgKgogICogQ2FsbGVyIG11c3Qg aGF2ZSBhbHJlYWR5IGNhbGxlZCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkgdG8gdmVyaWZ5IHRoYXQg dGhlCiAgKiBxdWVyeXRyZWUgaXMgdXAgdG8gZGF0ZS4KQEAgLTk0Nyw3ICs5NzUsNyBAQCBSZXZh bGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKICAqIChXZSBt dXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2UtY29uZGl0aW9uLWZy ZWUuKQogICovCiBzdGF0aWMgYm9vbAotQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UpCitQcmVwQW5kQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApCiB7CiAJQ2FjaGVkUGxhbiAqcGxh biA9IHBsYW5zb3VyY2UtPmdwbGFuOwogCkBAIC05NzUsMTMgKzEwMDMsMTUgQEAgQ2hlY2tDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAJICovCiAJaWYgKHBsYW4tPmlz X3ZhbGlkKQogCXsKKwkJTG9ja1BvbGljeSBwb2xpY3kgPSAhY3ByZXAgPyBMT0NLX0FMTCA6IExP Q0tfVU5QUlVORUQ7CisKIAkJLyoKIAkJICogUGxhbiBtdXN0IGhhdmUgcG9zaXRpdmUgcmVmY291 bnQgYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJCSAqIHBsYW5zb3VyY2U7IHNvIG5vIG5l ZWQgdG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVzIGhlcmUuCiAJCSAqLwogCQlBc3NlcnQo cGxhbi0+cmVmY291bnQgPiAwKTsKIAotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10 X2xpc3QsIHRydWUpOworCQlBY3F1aXJlRXhlY3V0b3JMb2Nrc1dpdGhQb2xpY3kocGxhbi0+c3Rt dF9saXN0LCBwb2xpY3ksIHRydWUsIGNwcmVwKTsKIAogCQkvKgogCQkgKiBJZiBwbGFuIHdhcyB0 cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCkBAIC0xMDAzLDcg KzEwMzMsMTAgQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Up CiAJCX0KIAogCQkvKiBPb3BzLCB0aGUgcmFjZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFzZSB1c2Vs ZXNzIGxvY2tzLiAqLwotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGZh bHNlKTsKKwkJQWNxdWlyZUV4ZWN1dG9yTG9ja3NXaXRoUG9saWN5KHBsYW4tPnN0bXRfbGlzdCwg cG9saWN5LCBmYWxzZSwgY3ByZXApOworCisJCS8qIEFsc28gY2xlYW4gdXAgRXhlY3V0b3JQcmVw KCkgc3RhdGUsIGlmIG5lY2Vzc2FyeS4gKi8KKwkJQ2FjaGVkUGxhblByZXBDbGVhbnVwKGNwcmVw KTsKIAl9CiAKIAkvKgpAQCAtMTI4Myw2ICsxMzE2LDExIEBAIGNhY2hlZF9wbGFuX2Nvc3QoQ2Fj aGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpCiAgKiBPbiByZXR1cm4sIHRoZSBw bGFuIGlzIHZhbGlkIGFuZCB3ZSBoYXZlIHN1ZmZpY2llbnQgbG9ja3MgdG8gYmVnaW4KICAqIGV4 ZWN1dGlvbi4KICAqCisgKiBJZiAnY3ByZXAnIGlzIG5vdCBOVUxMIGFuZCBhIGdlbmVyaWMgcGxh biBpcyByZXVzZWQsIHRoZSBmdW5jdGlvbiBwcmVwYXJlcworICogZWFjaCBQbGFubmVkU3RtdCB2 aWEgRXhlY3V0b3JQcmVwKCkgYW5kIHN0b3JlcyB0aGUgRVN0YXRlcyBpbgorICogY3ByZXAtPnBy ZXBfZXN0YXRlcy4gIFRoZXNlIGFyZSBpbnRlbmRlZCB0byBiZSBwYXNzZWQgbGF0ZXIgdG8KKyAq IEV4ZWN1dG9yU3RhcnQoKS4KKyAqCiAgKiBPbiByZXR1cm4sIHRoZSByZWZjb3VudCBvZiB0aGUg cGxhbiBoYXMgYmVlbiBpbmNyZW1lbnRlZDsgYSBsYXRlcgogICogUmVsZWFzZUNhY2hlZFBsYW4o KSBjYWxsIGlzIGV4cGVjdGVkLiAgSWYgIm93bmVyIiBpcyBub3QgTlVMTCB0aGVuCiAgKiB0aGUg cmVmY291bnQgaGFzIGJlZW4gcmVwb3J0ZWQgdG8gdGhhdCBSZXNvdXJjZU93bmVyIChub3RlIHRo YXQgdGhpcwpAQCAtMTI5Myw3ICsxMzMxLDggQEAgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFu ICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqLwogQ2FjaGVkUGxhbiAqCiBHZXRDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQ YXJhbXMsCi0JCQkgIFJlc291cmNlT3duZXIgb3duZXIsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5 RW52KQorCQkJICBSZXNvdXJjZU93bmVyIG93bmVyLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu diwKKwkJCSAgQ2FjaGVkUGxhblByZXBEYXRhICpjcHJlcCkKIHsKIAlDYWNoZWRQbGFuICpwbGFu ID0gTlVMTDsKIAlMaXN0CSAgICpxbGlzdDsKQEAgLTEzMTUsNyArMTM1NCw5IEBAIEdldENhY2hl ZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBh cmFtcywKIAogCWlmICghY3VzdG9tcGxhbikKIAl7Ci0JCWlmIChDaGVja0NhY2hlZFBsYW4ocGxh bnNvdXJjZSkpCisJCWlmIChjcHJlcCkKKwkJCWNwcmVwLT5wYXJhbXMgPSBib3VuZFBhcmFtczsK KwkJaWYgKFByZXBBbmRDaGVja0NhY2hlZFBsYW4ocGxhbnNvdXJjZSwgY3ByZXApKQogCQl7CiAJ CQkvKiBXZSB3YW50IGEgZ2VuZXJpYyBwbGFuLCBhbmQgd2UgYWxyZWFkeSBoYXZlIGEgdmFsaWQg b25lICovCiAJCQlwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CkBAIC0xOTAxLDYgKzE5NDIsMzgg QEAgUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpCiAJcmV0dXJuIE5VTEw7CiB9 CiAKKy8qCisgKiBBY3F1aXJlRXhlY3V0b3JMb2Nrc1dpdGhQb2xpY3kKKyAqCQlBY3F1aXJlIG9y IHJlbGVhc2UgZXhlY3V0aW9uIGxvY2tzIGZvciBhIGNhY2hlZCBwbGFuIGFjY29yZGluZyB0bwor ICoJCXRoZSBzcGVjaWZpZWQgcG9saWN5LgorICoKKyAqIExPQ0tfQUxMIHJlcHJvZHVjZXMgQWNx dWlyZUV4ZWN1dG9yTG9ja3MoKSwgbG9ja2luZyBldmVyeSByZWxhdGlvbiBpbgorICogZWFjaCBQ bGFubmVkU3RtdCdzIHJ0YWJsZS4gIExPQ0tfVU5QUlVORUQgcmVzdHJpY3RzIGxvY2tpbmcgdG8g dGhlCisgKiB1bnBydW5hYmxlIHJlbHMgYW5kIHBhcnRpdGlvbnMgdGhhdCBzdXJ2aXZlIGluaXRp YWwgcnVudGltZSBwcnVuaW5nLgorICoKKyAqIFdoZW4gTE9DS19VTlBSVU5FRCBpcyB1c2VkIG9u IGFjcXVpcmUsIEV4ZWN1dG9yUHJlcCgpIGlzIGludm9rZWQgZm9yCisgKiBlYWNoIFBsYW5uZWRT dG10IGFuZCB0aGUgcmVzdWx0aW5nIEVTdGF0ZXMgYXJlIGFwcGVuZGVkIHRvCisgKiBjcHJlcC0+ cHJlcF9lc3RhdGVzIGluIGNwcmVwLT5jb250ZXh0LiAgT24gcmVsZWFzZSwgdGhlIHNhbWUgRVN0 YXRlCisgKiBsaXN0IGlzIGNvbnN1bHRlZCB0byBkZXRlcm1pbmUgd2hpY2ggcmVsYXRpb25zIHRv IHVubG9jayBhbmQgZWFjaAorICogRVN0YXRlIGlzIHJlbGVhc2VkLgorICovCitzdGF0aWMgdm9p ZAorQWNxdWlyZUV4ZWN1dG9yTG9ja3NXaXRoUG9saWN5KExpc3QgKnN0bXRfbGlzdCwgTG9ja1Bv bGljeSBwb2xpY3ksIGJvb2wgYWNxdWlyZSwKKwkJCQkJCQkgICBDYWNoZWRQbGFuUHJlcERhdGEg KmNwcmVwKQoreworCXN3aXRjaCAocG9saWN5KQorCXsKKwkJY2FzZSBMT0NLX0FMTDoKKwkJCUFj cXVpcmVFeGVjdXRvckxvY2tzKHN0bXRfbGlzdCwgYWNxdWlyZSk7CisJCQlicmVhazsKKwkJY2Fz ZSBMT0NLX1VOUFJVTkVEOgorCQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3NVbnBydW5lZChzdG10X2xp c3QsIGFjcXVpcmUsIGNwcmVwKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJP UiwgImludmFsaWQgTG9ja1BvbGljeSIpOworCX0KK30KKwogLyoKICAqIEFjcXVpcmVFeGVjdXRv ckxvY2tzOiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBmb3IgZXhlY3V0aW9uIG9mIGEgY2FjaGVkIHBs YW47CiAgKiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBpcyBmYWxzZS4KQEAgLTE5NTMsNiAr MjAyNiwyMTEgQEAgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFj cXVpcmUpCiAJfQogfQogCisvKgorICogTG9ja1JlbGlkcworICogCQlBY3F1aXJlIG9yIHJlbGVh c2UgbG9ja3Mgb24gdGhlIHNwZWNpZmllZCByZWxpZHMsIHdoaWNoIHJlZmVyZW5jZQorICogCQll bnRyaWVzIGluIHRoZSBwcm92aWRlZCByYW5nZSB0YWJsZS4KKyAqCisgKiBIZWxwZXIgZm9yIEFj cXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoKS4KKyAqLworc3RhdGljIHZvaWQKK0xvY2tSZWxp ZHMoTGlzdCAqcnRhYmxlLCBCaXRtYXBzZXQgKnJlbGlkcywgYm9vbCBhY3F1aXJlKQoreworCWlu dAlydGluZGV4ID0gLTE7CisKKwl3aGlsZSAoKHJ0aW5kZXggPSBibXNfbmV4dF9tZW1iZXIocmVs aWRzLCBydGluZGV4KSkgPj0gMCkKKwl7CisJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IGxpc3RfbnRo X25vZGUoUmFuZ2VUYmxFbnRyeSwgcnRhYmxlLCBydGluZGV4IC0gMSk7CisKKwkJaWYgKCEocnRl LT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAorCQkJICAocnRlLT5ydGVraW5kID09IFJURV9T VUJRVUVSWSAmJiBPaWRJc1ZhbGlkKHJ0ZS0+cmVsaWQpKSkpCisJCQllbG9nKEVSUk9SLCAiTG9j a1JlbGlkcygpOiBjYW5ub3QgbG9jayByZWxhdGlvbiBhdCBSVCBpbmRleCAlZCIsCisJCQkJIHJ0 aW5kZXgpOworCisJCS8qCisJCSAqIEFjcXVpcmUgdGhlIGFwcHJvcHJpYXRlIHR5cGUgb2YgbG9j ayBvbiBlYWNoIHJlbGF0aW9uIE9JRC4gTm90ZQorCQkgKiB0aGF0IHdlIGRvbid0IGFjdHVhbGx5 IHRyeSB0byBvcGVuIHRoZSByZWwsIGFuZCBoZW5jZSB3aWxsIG5vdAorCQkgKiBmYWlsIGlmIGl0 J3MgYmVlbiBkcm9wcGVkIGVudGlyZWx5IC0tLSB3ZSdsbCBqdXN0IHRyYW5zaWVudGx5CisJCSAq IGFjcXVpcmUgYSBub24tY29uZmxpY3RpbmcgbG9jay4KKwkJICovCisJCWlmIChhY3F1aXJlKQor CQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQllbHNl CisJCQlVbmxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwl9 Cit9CisKKy8qCisgKiBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkCisgKgkJQWNxdWlyZSBv ciByZWxlYXNlIGV4ZWN1dGlvbiBsb2NrcyBmb3Igb25seSB1bnBydW5lZCByZWxhdGlvbnMKKyAq CQlyZWZlcmVuY2VkIGJ5IHRoZSBnaXZlbiBQbGFubmVkU3RtdHMuCisgKgorICogT24gYWNxdWly ZSwgdGhpczoKKyAqCS0gbG9ja3MgdW5wcnVuYWJsZSByZWxzIGxpc3RlZCBpbiBQbGFubmVkU3Rt dC51bnBydW5hYmxlUmVsaWRzCisgKgktIHJ1bnMgRXhlY3V0b3JQcmVwKCkgdG8gcGVyZm9ybSBp bml0aWFsIHJ1bnRpbWUgcHJ1bmluZworICoJLSBsb2NrcyB0aGUgc3Vydml2aW5nIHBhcnRpdGlv bnMgcmVwb3J0ZWQgaW4gdGhlIHByZXAgZXN0YXRlCisgKgktIGFwcGVuZHMgdGhlIEVTdGF0ZSBw b2ludGVyIGZvciBlYWNoIFBsYW5uZWRTdG10IHRvIGNwcmVwLT5wcmVwX2VzdGF0ZXMKKyAqCisg KiBPbiByZWxlYXNlLCBpdDoKKyAqCS0gbG9va3MgdXAgdGhlIEVTdGF0ZSBmb3IgZWFjaCBQbGFu bmVkU3RtdCBmcm9tIGNwcmVwLT5wcmVwX2VzdGF0ZXMKKyAqCSAgKHdoaWNoIG11c3QgYWxyZWFk eSBiZSBwb3B1bGF0ZWQpCisgKgktIHVubG9ja3MgdGhlIHNhbWUgcmVsYXRpb25zIGlkZW50aWZp ZWQgZHVyaW5nIGFjcXVpcmUKKyAqCS0gY2xlYW5zIHVwIGVhY2ggRVN0YXRlCisgKgorICogcHJl cF9lc3RhdGVzIGlzIGV4dGVuZGVkIGR1cmluZyBhY3F1aXJlIGFuZCBtdXN0IG1hdGNoIHN0bXRf bGlzdCBvbmUtdG8tb25lCisgKiB3aGVuIHJlbGVhc2luZyBsb2Nrcy4gIE1lbW9yeSBhbGxvY2F0 aW9uIGZvciBFU3RhdGUgaGFwcGVucyBpbgorICogY3ByZXAtPmNvbnRleHQuICBMb2NrcyBhcmUg YWNxdWlyZWQgdXNpbmcgY3ByZXAtPm93bmVyLgorICovCisKK3N0YXRpYyB2b2lkCitBY3F1aXJl RXhlY3V0b3JMb2Nrc1VucHJ1bmVkKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlLAorCQkJ CQkJCSBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVwKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29u dGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjcHJlcC0+Y29udGV4dCk7CisJTGlzdENlbGwg ICAqbGMxOworCUxpc3QJICAgKnByZXBfZXN0YXRlczsKKwlMaXN0Q2VsbCAgICpwcmVwX2xjOwor CisJQXNzZXJ0KGNwcmVwKTsKKworCS8qCisJICogV2hlbiByZWxlYXNpbmcgbG9ja3MsIHVzZSB0 aGUgRVN0YXRlIGxpc3QgKGlmIGFueSkgY3JlYXRlZCBkdXJpbmcKKwkgKiBhY3F1aXNpdGlvbiB0 byBkZXRlcm1pbmUgd2hpY2ggcmVsaWRzIHRvIHVubG9jay4gVGhlIGxpc3QgbXVzdCBtYXRjaAor CSAqIHRoZSBQbGFubmVkU3RtdCBsaXN0IG9uZS10by1vbmUuCisJICovCisJcHJlcF9lc3RhdGVz ID0gY3ByZXAtPnByZXBfZXN0YXRlczsKKwlBc3NlcnQoYWNxdWlyZSB8fCBsaXN0X2xlbmd0aChw cmVwX2VzdGF0ZXMpID09IGxpc3RfbGVuZ3RoKHN0bXRfbGlzdCkpOworCisJcHJlcF9sYyA9IGxp c3RfaGVhZChwcmVwX2VzdGF0ZXMpOworCWZvcmVhY2gobGMxLCBzdG10X2xpc3QpCisJeworCQlQ bGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMxKTsK KwkJRVN0YXRlICpwcmVwX2VzdGF0ZTsKKworCQlpZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBl ID09IENNRF9VVElMSVRZKQorCQl7CisJCQkvKiBTYW1lIGFzIEFjcXVpcmVFeGVjdXRvckxvY2tz KCkuICovCisJCQlRdWVyeQkgICAqcXVlcnkgPSBVdGlsaXR5Q29udGFpbnNRdWVyeShwbGFubmVk c3RtdC0+dXRpbGl0eVN0bXQpOworCisJCQlpZiAocXVlcnkpCisJCQkJU2NhblF1ZXJ5Rm9yTG9j a3MocXVlcnksIGFjcXVpcmUpOworCisJCQkvKiBLZWVwIHRoZSBsaXN0IG9uZS10by1vbmUgd2l0 aCBzdG10X2xpc3QuICovCisJCQlpZiAoYWNxdWlyZSkKKwkJCQljcHJlcC0+cHJlcF9lc3RhdGVz ID0gbGFwcGVuZChjcHJlcC0+cHJlcF9lc3RhdGVzLCBOVUxMKTsKKwkJCWVsc2UKKwkJCQkodm9p ZCkgbmV4dF9wcmVwX2VzdGF0ZShwcmVwX2VzdGF0ZXMsICZwcmVwX2xjKTsKKwkJCWNvbnRpbnVl OworCQl9CisKKwkJLyoKKwkJICogTG9jayB0YWJsZXMgbWVudGlvbmVkIGluIHRoZSBvcmlnaW5h bCBxdWVyeSBhbmQgb3RoZXIgdW5wcnVuYWJsZQorCQkgKiByZWxhdGlvbnMgdGhhdCB3ZXJlIGFk ZGVkIHRvIHRoZSBwbGFuIHZpYSBpbmhlcml0YW5jZSBleHBhbnNpb24uCisJCSAqLworCQlMb2Nr UmVsaWRzKHBsYW5uZWRzdG10LT5ydGFibGUsIHBsYW5uZWRzdG10LT51bnBydW5hYmxlUmVsaWRz LCBhY3F1aXJlKTsKKworCQkvKiBMb2NrIHBhcnRpdGlvbnMgc3Vydml2aW5nIHJ1bnRpbWUgaW5p dGlhbCBwcnVuaW5nLiAqLworCQlpZiAoYWNxdWlyZSkKKwkJeworCQkJLyoKKwkJCSAqIFBydW5p bmcgZXhwcmVzc2lvbnMgbWF5IGNhbGwgUEwgZnVuY3Rpb25zIHRoYXQgcmVxdWlyZSBhbiBhY3Rp dmUKKwkJCSAqIHNuYXBzaG90IChlLmcuLCB2aWEgRW5zdXJlUG9ydGFsU25hcHNob3RFeGlzdHMo KSkuIEVzdGFibGlzaCBvbmUKKwkJCSAqIGlmIG5lZWRlZC4KKwkJCSAqLworCQkJYm9vbAkJc25h cF9wdXNoZWQgPSBmYWxzZTsKKworCQkJaWYgKCFBY3RpdmVTbmFwc2hvdFNldCgpKQorCQkJewor CQkJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJCXNu YXBfcHVzaGVkID0gdHJ1ZTsKKwkJCX0KKworCQkJcHJlcF9lc3RhdGUgPSBFeGVjdXRvclByZXAo cGxhbm5lZHN0bXQsIGNwcmVwLT5wYXJhbXMsIGNwcmVwLT5vd25lciwgdHJ1ZSwKKwkJCQkJCQkJ CSAgIGNwcmVwLT5lZmxhZ3MpOworCQkJQXNzZXJ0KHByZXBfZXN0YXRlKTsKKwkJCWNwcmVwLT5w cmVwX2VzdGF0ZXMgPSBsYXBwZW5kKGNwcmVwLT5wcmVwX2VzdGF0ZXMsIHByZXBfZXN0YXRlKTsK KworCQkJaWYgKHNuYXBfcHVzaGVkKQorCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCX0KKwkJ ZWxzZQorCQkJcHJlcF9lc3RhdGUgPSBuZXh0X3ByZXBfZXN0YXRlKHByZXBfZXN0YXRlcywgJnBy ZXBfbGMpOworCisJCWlmIChwcmVwX2VzdGF0ZSkKKwkJeworCQkJLyoKKwkJCSAqIGVzX3VucHJ1 bmVkX3JlbGlkcyBpbmNsdWRlcyBwbGFubmVkc3RtdC0+dW5wcnVuYWJsZVJlbGlkcywKKwkJCSAq IHdoaWNoIHdlJ3ZlIGFscmVhZHkgbG9ja2VkLiBGaWx0ZXIgdGhlbSBvdXQgdG8gYXZvaWQgZG91 YmxlLWxvY2tpbmcuCisJCQkgKi8KKwkJCUJpdG1hcHNldCAqbG9ja19yZWxpZHMgPSBibXNfZGlm ZmVyZW5jZShwcmVwX2VzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCXBs YW5uZWRzdG10LT51bnBydW5hYmxlUmVsaWRzKTsKKworCQkJLyoKKwkJCSAqIFdlIG11c3QgYWx3 YXlzIGluY2x1ZGUgdGhlIGZpcnN0IHJlc3VsdCByZWxhdGlvbiBvZiBlYWNoCisJCQkgKiBNb2Rp ZnlUYWJsZSBub2RlIGluIHRoZSBwbGFuLCB0aGF0IGlzLCB0aGUgb25lIG1lbnRpb25lZCBpbgor CQkJICogcGxhbm5lZHN0bXQtPmZpcnN0UmVzdWx0UmVscyBpbiB0aGUgc2V0IG9mIHJlbGF0aW9u cyB0byBiZQorCQkJICogbG9ja2VkIHRvIHNhdGlzZnkgZXhlY3V0b3IgYXNzdW1wdGlvbnMgZGVz Y3JpYmVkCisJCQkgKiBpbiBFeGVjSW5pdE1vZGlmeVRhYmxlKCkuICBUaGlzIGNhbiBiZSB3YXN0 ZWZ1bCwgYmVjYXVzZSB3ZQorCQkJICogbWF5IG5vdCBuZWVkIHRvIHVzZSB0aGUgZmlyc3QgcmVz dWx0IHJlbGF0aW9uIGF0IGFsbCBpZiBvdGhlcgorCQkJICogcmVzdWx0IHJlbGF0aW9ucyBhcmUg dW5wcnVuZWQgYW5kIHRodXMgc3VmZmljaWVudCBmb3IgdGhlCisJCQkgKiBNb2RpZnlUYWJsZSBu b2RlJ3MgbmVlZHMuICBVbmZvcnR1bmF0ZWx5LCB3ZSBkb24ndCBoYXZlIHBlci1ub2RlCisJCQkg KiB1bnBydW5lZF9yZWxpZHMgc2V0IHRvIGRldGVybWluZSB0aGF0IG90aGVyIHJlc3VsdCByZWxh dGlvbnMKKwkJCSAqIGFyZSBpbmNsdWRlZC4KKwkJCSAqLworCQkJaWYgKHBsYW5uZWRzdG10LT5y ZXN1bHRSZWxhdGlvbnMpCisJCQl7CisJCQkJTGlzdENlbGwgKmxjMjsKKworCQkJCWZvcmVhY2go bGMyLCBwbGFubmVkc3RtdC0+Zmlyc3RSZXN1bHRSZWxzKQorCQkJCXsKKwkJCQkJSW5kZXggICAg ICAgZmlyc3RSZXN1bHRSZWwgPSBsZmlyc3RfaW50KGxjMik7CisKKwkJCQkJaWYgKCFibXNfaXNf bWVtYmVyKGZpcnN0UmVzdWx0UmVsLCBsb2NrX3JlbGlkcykpCisJCQkJCQlsb2NrX3JlbGlkcyA9 IGJtc19hZGRfbWVtYmVyKGxvY2tfcmVsaWRzLCBmaXJzdFJlc3VsdFJlbCk7CisJCQkJfQorCQkJ fQorCisJCQlMb2NrUmVsaWRzKHBsYW5uZWRzdG10LT5ydGFibGUsIGxvY2tfcmVsaWRzLCBhY3F1 aXJlKTsKKwkJCWJtc19mcmVlKGxvY2tfcmVsaWRzKTsKKwkJfQorCX0KKworCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKK30KKworLyoKKyAqIENhY2hlZFBsYW5QcmVwQ2xlYW51 cAorICoJCUNsZWFuIHVwIEVTdGF0ZSBidWlsdCBmb3IgYSBnZW5lcmljIHBsYW4uCisgKgorICog VGhpcyBpcyB1c2VkIGluIHRoZSBjb3JuZXIgY2FzZSB3aGVyZSBQcmVwQW5kQ2hlY2tDYWNoZWRQ bGFuKCkgZGlzY292ZXJzCisgKiB0aGF0IGEgQ2FjaGVkUGxhbiBoYXMgYmVjb21lIGludmFsaWQg YWZ0ZXIgQWNxdWlyZUV4ZWN1dG9yTG9ja3NVbnBydW5lZCgpCisgKiBoYXMgYWxyZWFkeSBydW4u ICBJbiB0aGF0IGNhc2Ugd2UgbXVzdCBib3RoIHJlbGVhc2UgdGhlIGV4ZWN1dGlvbiBsb2Nrcwor ICogYW5kIGRpc3Bvc2Ugb2YgdGhlIEV4ZWNQcmVwIGxpc3Qgc3RvcmVkIGluIENhY2hlZFBsYW5Q cmVwRGF0YSwgc2luY2UgdGhlCisgKiBleGVjdXRvciB3aWxsIG5ldmVyIHNlZSBvciBjbGVhbiBp dCB1cC4KKyAqLworc3RhdGljIHZvaWQKK0NhY2hlZFBsYW5QcmVwQ2xlYW51cChDYWNoZWRQbGFu UHJlcERhdGEgKmNwcmVwKQoreworCUxpc3RDZWxsICAgKmxjOworCisJaWYgKGNwcmVwID09IE5V TEwpCisJCXJldHVybjsKKworCWZvcmVhY2gobGMsIGNwcmVwLT5wcmVwX2VzdGF0ZXMpCisJewor CQlFU3RhdGUgKnByZXBfZXN0YXRlID0gKEVTdGF0ZSAqKSBsZmlyc3QobGMpOworCisJCWlmIChw cmVwX2VzdGF0ZSA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJRXhlY0Nsb3NlUmFuZ2VUYWJs ZVJlbGF0aW9ucyhwcmVwX2VzdGF0ZSk7CisJCUZyZWVFeGVjdXRvclN0YXRlKHByZXBfZXN0YXRl KTsKKwl9CisKKwlsaXN0X2ZyZWUoY3ByZXAtPnByZXBfZXN0YXRlcyk7CisJY3ByZXAtPnByZXBf ZXN0YXRlcyA9IE5JTDsKK30KKwogLyoKICAqIEFjcXVpcmVQbGFubmVyTG9ja3M6IGFjcXVpcmUg bG9ja3MgbmVlZGVkIGZvciBwbGFubmluZyBvZiBhIHF1ZXJ5dHJlZSBsaXN0OwogICogb3IgcmVs ZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMgZmFsc2UuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGZi ODA4ODIzYWNmLi42NTNiZDQ2Y2UwNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTIxNCw2ICsy MTQsOSBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVyR2xvYmFsCiAJLyogImZsYXQiIGxpc3Qgb2Yg aW50ZWdlciBSVCBpbmRleGVzICovCiAJTGlzdAkgICAqcmVzdWx0UmVsYXRpb25zOwogCisJLyog ImZsYXQiIGxpc3Qgb2YgaW50ZWdlciBSVCBpbmRleGVzIChvbmUgcGVyIE1vZGlmeVRhYmxlIG5v ZGUpICovCisJTGlzdAkgICAqZmlyc3RSZXN1bHRSZWxzOworCiAJLyogImZsYXQiIGxpc3Qgb2Yg QXBwZW5kUmVsSW5mb3MgKi8KIAlMaXN0CSAgICphcHBlbmRSZWxhdGlvbnM7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmgKaW5kZXggNGJjNmZiNTY3MGUuLjllNjEwNjc1MWNiIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaApAQCAtMTIzLDYgKzEyMywxNiBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogCS8q IGludGVnZXIgbGlzdCBvZiBSVCBpbmRleGVzLCBvciBOSUwgKi8KIAlMaXN0CSAgICpyZXN1bHRS ZWxhdGlvbnM7CiAKKwkvKgorCSAqIHJ0YWJsZSBpbmRleGVzIG9mIGZpcnN0IHRhcmdldCByZWxh dGlvbiBpbiBlYWNoIE1vZGlmeVRhYmxlIG5vZGUgaW4gdGhlCisJICogcGxhbiBmb3IgSU5TRVJU L1VQREFURS9ERUxFVEUvTUVSR0UuICBOSUwgaWYgcmVzdWx0UmVsYXRpb25zIGlzIE5JTC4KKwkg KgorCSAqIFRoZXNlIGFyZSB1c2VkIGJ5IEFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoKSB0 byBlbnN1cmUgdGhhdCB0aGUKKwkgKiBmaXJzdCByZXN1bHQgcmVsIGZvciBlYWNoIE1vZGlmeVRh YmxlIHJlbWFpbnMgbG9ja2VkIGV2ZW4gaWYgcHJ1bmVkOworCSAqIHNlZSBFeGVjSW5pdE1vZGlm eVRhYmxlKCkgZm9yIHRoZSBleGVjdXRvciBzaWRlIGFzc3VtcHRpb25zLgorCSAqLworCUxpc3QJ ICAgKmZpcnN0UmVzdWx0UmVsczsKKwogCS8qIGxpc3Qgb2YgQXBwZW5kUmVsSW5mbyBub2RlcyAq LwogCUxpc3QJICAgKmFwcGVuZFJlbGF0aW9uczsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvcGxhbmNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAppbmRleCA5 ODRjNTE1MTVjNi4uNzY2YTExZDkyYTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Bs YW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0xOTcsNiAr MTk3LDMwIEBAIHR5cGVkZWYgc3RydWN0IENhY2hlZEV4cHJlc3Npb24KIH0gQ2FjaGVkRXhwcmVz c2lvbjsKIAogCisvKgorICogQ2FjaGVkUGxhblByZXBEYXRhCisgKiAgICAgIENhcnJpZXMgRXhl Y3V0b3JQcmVwIHJlc3VsdHMgZm9yIGVhY2ggUGxhbm5lZFN0bXQgaW4gYSBDYWNoZWRQbGFuLAor ICogICAgICBhbG9uZyB3aXRoIGNvbnRleHQgYW5kIG93bmVyIGluZm9ybWF0aW9uIG5lZWRlZCB0 byBhbGxvY2F0ZSB0aGVtLgorICoKKyAqIHByZXBfZXN0YXRlcyBpcyBpbmRleGVkIG9uZS10by1v bmUgd2l0aCBDYWNoZWRQbGFuLT5zdG10X2xpc3QsIGFuZCBpcworICogcG9wdWxhdGVkIHdoZW4g R2V0Q2FjaGVkUGxhbigpIHByZXBhcmVzIGEgcmV1c2VkIGdlbmVyaWMgcGxhbi4gIFRoZQorICog c2FtZSBsaXN0IGlzIGxhdGVyIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIHJlbGF0aW9ucyB0byB1 bmxvY2sgd2hlbgorICogcmVsZWFzaW5nIGV4ZWN1dGlvbiBsb2Nrcy4KKyAqCisgKiBFeGVjdXRv clByZXAgc3RhdGUgaXMgYWxsb2NhdGVkIGluICdjb250ZXh0JyBhbmQgb3duZWQgYnkgJ293bmVy Jy4KKyAqCisgKiBlZmxhZ3Mgc2hvdWxkIGJlIHNldCBwcm9wZXJseSBpZiBpdCBhZmZlY3RzIGlu aXRpYWwgcHJ1bmluZywgZm9yIGV4YW1wbGUsCisgKiBpZiBydW5uaW5nIEVYUExBSU4gKEdFTkVS SUNfUExBTikuCisgKi8KK3R5cGVkZWYgc3RydWN0IENhY2hlZFBsYW5QcmVwRGF0YQoreworCUxp c3QgICAqcHJlcF9lc3RhdGVzOwkvKiBvbmUgRVN0YXRlIHBlciBQbGFubmVkU3RtdCwgb3IgTlVM TCAqLworCVBhcmFtTGlzdEluZm8gcGFyYW1zOwkvKiBwYXJhbXMgdmlzaWJsZSB0byBFeGVjdXRv clByZXAgKi8KKwlNZW1vcnlDb250ZXh0IGNvbnRleHQ7CS8qIHdoZXJlIHRvIGFsbG9jYXRlIEVT dGF0ZSBhbmQgaXRzIGZpZWxkcyAqLworCVJlc291cmNlT3duZXIgb3duZXI7CS8qIFJlc291cmNl T3duZXIgZm9yIEV4ZWN1dG9yUHJlcCBzdGF0ZSAqLworCWludAkJZWZsYWdzOwkJCS8qIGV4ZWN1 dG9yIGZsYWdzIHRvIGNvbnRyb2wgRXhlY3V0b3JQcmVwICovCit9IENhY2hlZFBsYW5QcmVwRGF0 YTsKKwogZXh0ZXJuIHZvaWQgSW5pdFBsYW5DYWNoZSh2b2lkKTsKIGV4dGVybiB2b2lkIFJlc2V0 UGxhbkNhY2hlKHZvaWQpOwogCkBAIC0yNDAsNyArMjY0LDggQEAgZXh0ZXJuIExpc3QgKkNhY2hl ZFBsYW5HZXRUYXJnZXRMaXN0KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiBleHRlcm4g Q2FjaGVkUGxhbiAqR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAog CQkJCQkJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJCQkJCQkJIFJlc291cmNlT3du ZXIgb3duZXIsCi0JCQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisJCQkJCQkJ CSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCQkJCQkJIENhY2hlZFBsYW5QcmVwRGF0 YSAqY3ByZXApOwogZXh0ZXJuIHZvaWQgUmVsZWFzZUNhY2hlZFBsYW4oQ2FjaGVkUGxhbiAqcGxh biwgUmVzb3VyY2VPd25lciBvd25lcik7CiAKIGV4dGVybiBib29sIENhY2hlZFBsYW5BbGxvd3NT aW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKaW5kZXggMzlkYWI4ZmNj MDUuLjM5NzcwZjNiNmQ2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bh cnRpdGlvbl9wcnVuZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRp b25fcHJ1bmUub3V0CkBAIC00ODYwLDkgKzQ4NjAsNyBAQCBzZWxlY3QgYy5yZWxuYW1lCiAgICBy ZWxuYW1lICAgIAogLS0tLS0tLS0tLS0tLS0KICBwcnVuZWxvY2tfcDEKLSBwcnVuZWxvY2tfcDIK LSBwcnVuZWxvY2tfcDMKLSgzIHJvd3MpCisoMSByb3cpCiAKIGNvbW1pdDsKIGRlYWxsb2NhdGUg cHJ1bmVsb2NrX3E7CkBAIC00OTA0LDYgKzQ5MDIsNTAgQEAgc2VsZWN0IGMucmVsbmFtZQogCiBj b21taXQ7CiBkZWFsbG9jYXRlIHBydW5lbG9ja19xOworcmVzZXQgZW5hYmxlX3BhcnRpdGlvbl9w cnVuaW5nOworLS0KKy0tIFZlcmlmeSBmaXJzdFJlc3VsdFJlbHMgaGFuZGxpbmcgd2l0aCBtdWx0 aXBsZSBNb2RpZnlUYWJsZSBub2RlcworLS0gKHdyaXRhYmxlIENURXMpIHRhcmdldGluZyBhIHBh cnRpdGlvbmVkIHRhYmxlLiAgV2hlbiBhIHBydW5pbmcKKy0tIHBhcmFtZXRlciBtYXRjaGVzIG5v IHBhcnRpdGlvbiwgYWxsIHJlc3VsdCByZWxhdGlvbnMgYXJlIHBydW5lZAorLS0gYW5kIHRoZSBl eGVjdXRvciBtdXN0IHN0aWxsIGZpbmQgYSB1c2FibGUgZmlyc3QgcmVzdWx0IHJlbGF0aW9uCist LSBmb3IgZWFjaCBNb2RpZnlUYWJsZSBub2RlLgorLS0KK3ByZXBhcmUgcHJ1bmVsb2NrX210X3Eg KGludCwgaW50KSBhcworICB3aXRoIHVwZDEgYXMgKHVwZGF0ZSBwcnVuZWxvY2tfcCBzZXQgYSA9 IGEpLAorICAgICAgIHVwZDIgYXMgKHVwZGF0ZSBwcnVuZWxvY2tfcCBzZXQgYSA9IGEgd2hlcmUg YSA9ICQyKQorICB1cGRhdGUgcHJ1bmVsb2NrX3Agc2V0IGEgPSBhIHdoZXJlIGEgPSAkMTsKKy0t IEZvcmNlIGdlbmVyaWMgcGxhbiBjcmVhdGlvbgorZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRl IHBydW5lbG9ja19tdF9xKDEsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVcGRhdGUgb24gcHJ1bmVsb2NrX3AK KyAgIFVwZGF0ZSBvbiBwcnVuZWxvY2tfcDEgcHJ1bmVsb2NrX3BfMQorICAgQ1RFIHVwZDEKKyAg ICAgLT4gIFVwZGF0ZSBvbiBwcnVuZWxvY2tfcCBwcnVuZWxvY2tfcF8zCisgICAgICAgICAgIFVw ZGF0ZSBvbiBwcnVuZWxvY2tfcDEgcHJ1bmVsb2NrX3BfNAorICAgICAgICAgICBVcGRhdGUgb24g cHJ1bmVsb2NrX3AyIHBydW5lbG9ja19wXzUKKyAgICAgICAgICAgVXBkYXRlIG9uIHBydW5lbG9j a19wMyBwcnVuZWxvY2tfcF82CisgICAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHBydW5lbG9ja19wMSBwcnVuZWxvY2tfcF80CisgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnVuZWxvY2tfcDIgcHJ1bmVsb2NrX3BfNQorICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ1bmVsb2NrX3AzIHBydW5lbG9ja19wXzYKKyAg IENURSB1cGQyCisgICAgIC0+ICBVcGRhdGUgb24gcHJ1bmVsb2NrX3AgcHJ1bmVsb2NrX3BfNwor ICAgICAgICAgICBVcGRhdGUgb24gcHJ1bmVsb2NrX3AyIHBydW5lbG9ja19wXzgKKyAgICAgICAg ICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyCisgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnVuZWxvY2tfcDIgcHJ1bmVsb2NrX3BfOAor ICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gJDIpCisgICAtPiAgQXBwZW5kCisg ICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ1 bmVsb2NrX3AxIHBydW5lbG9ja19wXzEKKyAgICAgICAgICAgICAgIEZpbHRlcjogKGEgPSAkMSkK KygyMiByb3dzKQorCistLSBBbGwgcGFydGl0aW9ucyBwcnVuZWQ6IHZhbHVlIDQgbWF0Y2hlcyBu byBwYXJ0aXRpb24sIHNvIGVhY2gKKy0tIE1vZGlmeVRhYmxlIG11c3Qgc3RpbGwgaW5pdGlhbGl6 ZSBjb3JyZWN0bHkgd2l0aCBubyBtYXRjaGluZworLS0gcmVzdWx0IHJlbGF0aW9ucy4KK2V4ZWN1 dGUgcHJ1bmVsb2NrX210X3EoNCwgNSk7CitkZWFsbG9jYXRlIHBydW5lbG9ja19tdF9xOwogZHJv cCB0YWJsZSBwcnVuZWxvY2tfcDsKIHJlc2V0IHBsYW5fY2FjaGVfbW9kZTsKLXJlc2V0IGVuYWJs ZV9wYXJ0aXRpb25fcHJ1bmluZzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcGxhbmNhY2hlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91 dAppbmRleCA0ZTU5MTg4MTk2Yy4uMWQ2OWFiMGExYzIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BsYW5jYWNoZS5vdXQKQEAgLTM5OCwzICszOTgsNjUgQEAgc2VsZWN0IG5hbWUsIGdlbmVy aWNfcGxhbnMsIGN1c3RvbV9wbGFucyBmcm9tIHBnX3ByZXBhcmVkX3N0YXRlbWVudHMKICgxIHJv dykKIAogZHJvcCB0YWJsZSB0ZXN0X21vZGU7CistLSBUZXN0IGludmFsaWRhdGlvbiBvZiBhIGdl bmVyaWMgcGxhbiBkdXJpbmcgcHJ1bmluZy1hd2FyZSBsb2NrIHNldHVwLgorLS0gVGhlIHBydW5p bmcgZXhwcmVzc2lvbiB1c2VzIGEgc3RhYmxlIFNRTCBmdW5jdGlvbiB0aGF0IGNhbGxzIGEgdm9s YXRpbGUKKy0tIHBscGdzcWwgZnVuY3Rpb24uICBUaGF0IGZ1bmN0aW9uIHBlcmZvcm1zIERETCBv biBhIHBhcnRpdGlvbiB3aGVuIGEKKy0tIHNlcGFyYXRlICJzaWduYWwiIHRhYmxlIHNheXMgdG8g ZG8gc28uICBUaGUgc2Vjb25kIEVYRUNVVEUgc2hvdWxkCistLSByZXBsYW4gY2xlYW5seSBhZnRl ciB0aGUgRERMLgorc2V0IHBsYW5fY2FjaGVfbW9kZSB0byBmb3JjZV9nZW5lcmljX3BsYW47Citj cmVhdGUgdGFibGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcCAoYSBpbnQpIHBhcnRpdGlvbiBieSBs aXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMSBwYXJ0aXRpb24g b2YgaW52YWxfZHVyaW5nX3BydW5pbmdfcCBmb3IgdmFsdWVzIGluICgxKTsKK2NyZWF0ZSB0YWJs ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMiBwYXJ0aXRpb24gb2YgaW52YWxfZHVyaW5nX3BydW5p bmdfcCBmb3IgdmFsdWVzIGluICgyKTsKK2luc2VydCBpbnRvIGludmFsX2R1cmluZ19wcnVuaW5n X3AgdmFsdWVzICgxKSwgKDIpOworY3JlYXRlIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3Np Z25hbCAoY3JlYXRlX2lkeCBib29sIG5vdCBudWxsKTsKK2luc2VydCBpbnRvIGludmFsX2R1cmlu Z19wcnVuaW5nX3NpZ25hbCB2YWx1ZXMgKGZhbHNlKTsKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0 aW9uIGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMoKSByZXR1cm5zIGludAorYXMgJCQKK2RlY2xh cmUKKwljcmVhdGVfaW5kZXggYm9vbDsKK2JlZ2luCisJLS0gUGVyZm9ybSBEREwgb24gYSBwYXJ0 aXRpb24gaWYgYXNrZWQgdG8KKwlzZWxlY3QgY3JlYXRlX2lkeCBpbnRvIGNyZWF0ZV9pbmRleCBm cm9tIGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbCBmb3IgdXBkYXRlOworCWlmIGNyZWF0ZV9p bmRleCA9IHRydWUgdGhlbgorCQlyYWlzZSBub3RpY2UgJ2NyZWF0aW5nIGluZGV4IG9uIHBhcnRp dGlvbiBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMSc7CisJCWNyZWF0ZSBpbmRleCBvbiBpbnZhbF9k dXJpbmdfcHJ1bmluZ19wMSAoYSk7CisJCXVwZGF0ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWdu YWwgc2V0IGNyZWF0ZV9pZHggPSBmYWxzZTsKKwllbmQgaWY7CisJLS0gcHJ1bmluZyBwYXJhbWV0 ZXIKKwlyZXR1cm4gMTsKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWwgdm9sYXRpbGU7CitjcmVh dGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBzdGFibGVfcHJ1bmluZ192YWwoKSByZXR1cm5zIGludCBh cyAkJAorCXNlbGVjdCBpbnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jKCk7CiskJCBsYW5ndWFnZSBz cWwgc3RhYmxlOworcHJlcGFyZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xIGFzIHNlbGVjdCAqIGZy b20gaW52YWxfZHVyaW5nX3BydW5pbmdfcCB3aGVyZSBhID0gc3RhYmxlX3BydW5pbmdfdmFsKCk7 CistLSBCdWlsZCBhIGdlbmVyaWMgcGxhbiBhbmQgcnVuIHBydW5pbmcgb25jZSwgYnV0IGRvbid0 IHNldCB0aGUgc2lnbmFsCistLSBmb3IgaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygpIHRvIHBl cmZvcm0gdGhlIERETC4KK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikgZXhlY3V0ZSBpbnZh bF9kdXJpbmdfcHJ1bmluZ19xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBcHBlbmQKKyAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEKKyAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuaW52YWxfZHVyaW5nX3BydW5pbmdfcDEgaW52YWxfZHVyaW5nX3BydW5pbmdfcF8xCisg ICAgICAgICBPdXRwdXQ6IGludmFsX2R1cmluZ19wcnVuaW5nX3BfMS5hCisgICAgICAgICBGaWx0 ZXI6IChpbnZhbF9kdXJpbmdfcHJ1bmluZ19wXzEuYSA9IHN0YWJsZV9wcnVuaW5nX3ZhbCgpKQor KDUgcm93cykKKworLS0gUmV1c2UgdGhlIGdlbmVyaWMgcGxhbi4gIE1ha2UgaW52YWxpZGF0ZV9w bGFuY2FjaGVfZnVuYygpIHBlcmZvcm0gRERMCistLSBkdXJpbmcgdGhpcyBleGVjdXRpb24sIHdo aWNoIHNob3VsZCBmb3JjZSByZXBsYW5uaW5nIHdpdGhvdXQgZXJyb3JzLgordXBkYXRlIGludmFs X2R1cmluZ19wcnVuaW5nX3NpZ25hbCBzZXQgY3JlYXRlX2lkeCA9IHRydWU7CitleHBsYWluICh2 ZXJib3NlLCBjb3N0cyBvZmYpIGV4ZWN1dGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcTsKK05PVElD RTogIGNyZWF0aW5nIGluZGV4IG9uIHBhcnRpdGlvbiBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIFN1YnBs YW5zIFJlbW92ZWQ6IDEKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaW52YWxfZHVyaW5nX3By dW5pbmdfcDEgaW52YWxfZHVyaW5nX3BydW5pbmdfcF8xCisgICAgICAgICBPdXRwdXQ6IGludmFs X2R1cmluZ19wcnVuaW5nX3BfMS5hCisgICAgICAgICBGaWx0ZXI6IChpbnZhbF9kdXJpbmdfcHJ1 bmluZ19wXzEuYSA9IHN0YWJsZV9wcnVuaW5nX3ZhbCgpKQorKDUgcm93cykKKworZHJvcCB0YWJs ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wLCBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWduYWw7Citk cm9wIGZ1bmN0aW9uIGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMsIHN0YWJsZV9wcnVuaW5nX3Zh bDsKK2RlYWxsb2NhdGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcTsKK3Jlc2V0IHBsYW5fY2FjaGVf bW9kZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCmluZGV4IDIyOWM1 ZWIzNzBjLi44NzY3MmFkNDBmNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFy dGl0aW9uX3BydW5lLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1 bmUuc3FsCkBAIC0xNDk5LDYgKzE0OTksMjggQEAgc2VsZWN0IGMucmVsbmFtZQogY29tbWl0Owog CiBkZWFsbG9jYXRlIHBydW5lbG9ja19xOworcmVzZXQgZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5n OworCistLQorLS0gVmVyaWZ5IGZpcnN0UmVzdWx0UmVscyBoYW5kbGluZyB3aXRoIG11bHRpcGxl IE1vZGlmeVRhYmxlIG5vZGVzCistLSAod3JpdGFibGUgQ1RFcykgdGFyZ2V0aW5nIGEgcGFydGl0 aW9uZWQgdGFibGUuICBXaGVuIGEgcHJ1bmluZworLS0gcGFyYW1ldGVyIG1hdGNoZXMgbm8gcGFy dGl0aW9uLCBhbGwgcmVzdWx0IHJlbGF0aW9ucyBhcmUgcHJ1bmVkCistLSBhbmQgdGhlIGV4ZWN1 dG9yIG11c3Qgc3RpbGwgZmluZCBhIHVzYWJsZSBmaXJzdCByZXN1bHQgcmVsYXRpb24KKy0tIGZv ciBlYWNoIE1vZGlmeVRhYmxlIG5vZGUuCistLQorcHJlcGFyZSBwcnVuZWxvY2tfbXRfcSAoaW50 LCBpbnQpIGFzCisgIHdpdGggdXBkMSBhcyAodXBkYXRlIHBydW5lbG9ja19wIHNldCBhID0gYSks CisgICAgICAgdXBkMiBhcyAodXBkYXRlIHBydW5lbG9ja19wIHNldCBhID0gYSB3aGVyZSBhID0g JDIpCisgIHVwZGF0ZSBwcnVuZWxvY2tfcCBzZXQgYSA9IGEgd2hlcmUgYSA9ICQxOworCistLSBG b3JjZSBnZW5lcmljIHBsYW4gY3JlYXRpb24KK2V4cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSBw cnVuZWxvY2tfbXRfcSgxLCAyKTsKKworLS0gQWxsIHBhcnRpdGlvbnMgcHJ1bmVkOiB2YWx1ZSA0 IG1hdGNoZXMgbm8gcGFydGl0aW9uLCBzbyBlYWNoCistLSBNb2RpZnlUYWJsZSBtdXN0IHN0aWxs IGluaXRpYWxpemUgY29ycmVjdGx5IHdpdGggbm8gbWF0Y2hpbmcKKy0tIHJlc3VsdCByZWxhdGlv bnMuCitleGVjdXRlIHBydW5lbG9ja19tdF9xKDQsIDUpOworCitkZWFsbG9jYXRlIHBydW5lbG9j a19tdF9xOwogZHJvcCB0YWJsZSBwcnVuZWxvY2tfcDsKIHJlc2V0IHBsYW5fY2FjaGVfbW9kZTsK LXJlc2V0IGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BsYW5jYWNoZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wbGFuY2FjaGUu c3FsCmluZGV4IDRiMmYxMWRjYzY0Li4xMzliNDY4OGZkNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wbGFu Y2FjaGUuc3FsCkBAIC0yMjMsMyArMjIzLDU0IEBAIHNlbGVjdCBuYW1lLCBnZW5lcmljX3BsYW5z LCBjdXN0b21fcGxhbnMgZnJvbSBwZ19wcmVwYXJlZF9zdGF0ZW1lbnRzCiAgIHdoZXJlICBuYW1l ID0gJ3Rlc3RfbW9kZV9wcCc7CiAKIGRyb3AgdGFibGUgdGVzdF9tb2RlOworCistLSBUZXN0IGlu dmFsaWRhdGlvbiBvZiBhIGdlbmVyaWMgcGxhbiBkdXJpbmcgcHJ1bmluZy1hd2FyZSBsb2NrIHNl dHVwLgorLS0gVGhlIHBydW5pbmcgZXhwcmVzc2lvbiB1c2VzIGEgc3RhYmxlIFNRTCBmdW5jdGlv biB0aGF0IGNhbGxzIGEgdm9sYXRpbGUKKy0tIHBscGdzcWwgZnVuY3Rpb24uICBUaGF0IGZ1bmN0 aW9uIHBlcmZvcm1zIERETCBvbiBhIHBhcnRpdGlvbiB3aGVuIGEKKy0tIHNlcGFyYXRlICJzaWdu YWwiIHRhYmxlIHNheXMgdG8gZG8gc28uICBUaGUgc2Vjb25kIEVYRUNVVEUgc2hvdWxkCistLSBy ZXBsYW4gY2xlYW5seSBhZnRlciB0aGUgRERMLgorc2V0IHBsYW5fY2FjaGVfbW9kZSB0byBmb3Jj ZV9nZW5lcmljX3BsYW47CitjcmVhdGUgdGFibGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcCAoYSBp bnQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1 bmluZ19wMSBwYXJ0aXRpb24gb2YgaW52YWxfZHVyaW5nX3BydW5pbmdfcCBmb3IgdmFsdWVzIGlu ICgxKTsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMiBwYXJ0aXRpb24gb2Yg aW52YWxfZHVyaW5nX3BydW5pbmdfcCBmb3IgdmFsdWVzIGluICgyKTsKK2luc2VydCBpbnRvIGlu dmFsX2R1cmluZ19wcnVuaW5nX3AgdmFsdWVzICgxKSwgKDIpOworCitjcmVhdGUgdGFibGUgaW52 YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIChjcmVhdGVfaWR4IGJvb2wgbm90IG51bGwpOworaW5z ZXJ0IGludG8gaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIHZhbHVlcyAoZmFsc2UpOworY3Jl YXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygpIHJldHVy bnMgaW50CithcyAkJAorZGVjbGFyZQorCWNyZWF0ZV9pbmRleCBib29sOworYmVnaW4KKwktLSBQ ZXJmb3JtIERETCBvbiBhIHBhcnRpdGlvbiBpZiBhc2tlZCB0bworCXNlbGVjdCBjcmVhdGVfaWR4 IGludG8gY3JlYXRlX2luZGV4IGZyb20gaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIGZvciB1 cGRhdGU7CisJaWYgY3JlYXRlX2luZGV4ID0gdHJ1ZSB0aGVuCisJCXJhaXNlIG5vdGljZSAnY3Jl YXRpbmcgaW5kZXggb24gcGFydGl0aW9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxJzsKKwkJY3Jl YXRlIGluZGV4IG9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxIChhKTsKKwkJdXBkYXRlIGludmFs X2R1cmluZ19wcnVuaW5nX3NpZ25hbCBzZXQgY3JlYXRlX2lkeCA9IGZhbHNlOworCWVuZCBpZjsK KwktLSBwcnVuaW5nIHBhcmFtZXRlcgorCXJldHVybiAxOworZW5kOworJCQgbGFuZ3VhZ2UgcGxw Z3NxbCB2b2xhdGlsZTsKKworY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gc3RhYmxlX3BydW5p bmdfdmFsKCkgcmV0dXJucyBpbnQgYXMgJCQKKwlzZWxlY3QgaW52YWxpZGF0ZV9wbGFuY2FjaGVf ZnVuYygpOworJCQgbGFuZ3VhZ2Ugc3FsIHN0YWJsZTsKKworcHJlcGFyZSBpbnZhbF9kdXJpbmdf cHJ1bmluZ19xIGFzIHNlbGVjdCAqIGZyb20gaW52YWxfZHVyaW5nX3BydW5pbmdfcCB3aGVyZSBh ID0gc3RhYmxlX3BydW5pbmdfdmFsKCk7CisKKy0tIEJ1aWxkIGEgZ2VuZXJpYyBwbGFuIGFuZCBy dW4gcHJ1bmluZyBvbmNlLCBidXQgZG9uJ3Qgc2V0IHRoZSBzaWduYWwKKy0tIGZvciBpbnZhbGlk YXRlX3BsYW5jYWNoZV9mdW5jKCkgdG8gcGVyZm9ybSB0aGUgRERMLgorZXhwbGFpbiAodmVyYm9z ZSwgY29zdHMgb2ZmKSBleGVjdXRlIGludmFsX2R1cmluZ19wcnVuaW5nX3E7CisKKy0tIFJldXNl IHRoZSBnZW5lcmljIHBsYW4uICBNYWtlIGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMoKSBwZXJm b3JtIERETAorLS0gZHVyaW5nIHRoaXMgZXhlY3V0aW9uLCB3aGljaCBzaG91bGQgZm9yY2UgcmVw bGFubmluZyB3aXRob3V0IGVycm9ycy4KK3VwZGF0ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWdu YWwgc2V0IGNyZWF0ZV9pZHggPSB0cnVlOworZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKSBl eGVjdXRlIGludmFsX2R1cmluZ19wcnVuaW5nX3E7CisKK2Ryb3AgdGFibGUgaW52YWxfZHVyaW5n X3BydW5pbmdfcCwgaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsOworZHJvcCBmdW5jdGlvbiBp bnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jLCBzdGFibGVfcHJ1bmluZ192YWw7CitkZWFsbG9jYXRl IGludmFsX2R1cmluZ19wcnVuaW5nX3E7CisKK3Jlc2V0IHBsYW5fY2FjaGVfbW9kZTsKLS0gCjIu NDcuMwoK --000000000000dd25ce064a847dbd Content-Type: application/octet-stream; name="v5-0005-Make-SQL-function-executor-track-ExecutorPrep-sta.patch" Content-Disposition: attachment; filename="v5-0005-Make-SQL-function-executor-track-ExecutorPrep-sta.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlhibgdb4 RnJvbSBlYmUzZDk3ZGY1MzY2ZjdiZjc0MTk2MmY0NDBmYjM0ZDVkYzNkMTZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTAgRmViIDIwMjYgMjI6MDk6MjMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 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== --000000000000dd25ce064a847dbd Content-Type: application/octet-stream; name="v5-0006-Reuse-partition-pruning-results-in-parallel-worke.patch" Content-Disposition: attachment; filename="v5-0006-Reuse-partition-pruning-results-in-parallel-worke.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlhibgde5 RnJvbSA5MjExMTRmYzQ3MmI4MGEwZWNiNTljOTgyODI2NDI0MTJhNmNlMzFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjI6MTc6NDcgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 IDYvNl0gUmV1c2UgcGFydGl0aW9uIHBydW5pbmcgcmVzdWx0cyBpbiBwYXJhbGxlbCB3b3JrZXJz CgpQYXNzIHRoZSBsZWFkZXIncyBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHJlc3VsdHMgYW5k IHVucHJ1bmVkCnJlbGlkcyB0byBwYXJhbGxlbCB3b3JrZXJzIGFuZCByZXVzZSB0aGVtIHZpYSBF eGVjdXRvclByZXAoKS4gVGhpcwphdm9pZHMgcmVwZWF0aW5nIHBydW5pbmcgbG9naWMgaW4gd29y a2Vycywgd2hpY2ggaXMgbm90IG9ubHkKcmVkdW5kYW50IGJ1dCBhbHNvIHJpc2tzIGRpdmVyZ2Vu Y2UgZHVlIHRvIG5vbmRldGVybWluaXNtIGluIHBydW5pbmcKc3RlcHMgb3IgcGFyYW1ldGVyIGV2 YWx1YXRpb24gdGltaW5nLgoKSW50cm9kdWNlIENoZWNrSW5pdGlhbFBydW5pbmdSZXN1bHRzSW5X b3JrZXIoKSAoZGVidWctYnVpbGRzIG9ubHkpCnRvIHZlcmlmeSB0aGF0IHRoZSByZXN1bHRzIG1h dGNoIHdoYXQgdGhlIHdvcmtlciB3b3VsZCBjb21wdXRlLiBUaGlzCmNoZWNrIGhlbHBzIGNhdGNo IGluY29uc2lzdGVuY2llcyBhY3Jvc3MgbGVhZGVyIGFuZCB3b3JrZXIgcHJ1bmluZwpsb2dpYy4K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyB8IDEwOCArKysrKysrKysr KysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMTA3IGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxs ZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IDJkM2M1ZDYx MjNlLi4wZWIyOGNiYWExZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTI0 LDYgKzI0LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUFnZy5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVBcHBlbmQuaCIKQEAgLTY2LDYgKzY3LDggQEAKICNk ZWZpbmUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQJCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAw MDAwOCkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0pJVF9JTlNUUlVNRU5UQVRJT04gVUlOVDY0Q09O U1QoMHhFMDAwMDAwMDAwMDAwMDA5KQogI2RlZmluZSBQQVJBTExFTF9LRVlfV0FMX1VTQUdFCQkJ VUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDBBKQorI2RlZmluZSBQQVJBTExFTF9LRVlfUEFS VElUSU9OX1BSVU5FX1JFU1VMVFMJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDBCKQorI2Rl ZmluZSBQQVJBTExFTF9LRVlfVU5QUlVORURfUkVMSURTCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAw MDAwMDAwQykKIAogI2RlZmluZSBQQVJBTExFTF9UVVBMRV9RVUVVRV9TSVpFCQk2NTUzNgogCkBA IC0xNDAsNiArMTQzLDggQEAgc3RhdGljIGJvb2wgRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVt ZW50YXRpb24oUGxhblN0YXRlICpwbGFuc3RhdGUsCiAvKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCBy dW5zIGluIHRoZSBwYXJhbGxlbCB3b3JrZXIuICovCiBzdGF0aWMgRGVzdFJlY2VpdmVyICpFeGVj UGFyYWxsZWxHZXRSZWNlaXZlcihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpOwogCitz dGF0aWMgdm9pZCBDaGVja0luaXRpYWxQcnVuaW5nUmVzdWx0c0luV29ya2VyKEVTdGF0ZSAqZXN0 YXRlKTsKKwogLyoKICAqIENyZWF0ZSBhIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhl IHBsYW4gdG8gYmUgc2VudCB0byBlYWNoIHdvcmtlci4KICAqLwpAQCAtNjE5LDEyICs2MjQsMTgg QEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0 YXRlLAogCUZpeGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlICpmcGVzOwogCWNoYXIJICAgKnBzdG10 X2RhdGE7CiAJY2hhcgkgICAqcHN0bXRfc3BhY2U7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1 bHRzX2RhdGE7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNlOworCWNoYXIJICAg KnVucHJ1bmVkX3JlbGlkc19kYXRhOworCWNoYXIJICAgKnVucHJ1bmVkX3JlbGlkc19zcGFjZTsK IAljaGFyCSAgICpwYXJhbWxpc3RpbmZvX3NwYWNlOwogCUJ1ZmZlclVzYWdlICpidWZ1c2FnZV9z cGFjZTsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZV9zcGFjZTsKIAlTaGFyZWRFeGVjdXRvckluc3Ry dW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uID0gTlVMTDsKIAlTaGFyZWRKaXRJbnN0cnVtZW50 YXRpb24gKmppdF9pbnN0cnVtZW50YXRpb24gPSBOVUxMOwogCWludAkJCXBzdG10X2xlbjsKKwlp bnQJCQlwYXJ0X3BydW5lX3Jlc3VsdHNfbGVuOworCWludAkJCXVucHJ1bmVkX3JlbGlkc19sZW47 CiAJaW50CQkJcGFyYW1saXN0aW5mb19sZW47CiAJaW50CQkJaW5zdHJ1bWVudGF0aW9uX2xlbiA9 IDA7CiAJaW50CQkJaml0X2luc3RydW1lbnRhdGlvbl9sZW4gPSAwOwpAQCAtNjUzLDYgKzY2NCw4 IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVz dGF0ZSwKIAogCS8qIEZpeCB1cCBhbmQgc2VyaWFsaXplIHBsYW4gdG8gYmUgc2VudCB0byB3b3Jr ZXJzLiAqLwogCXBzdG10X2RhdGEgPSBFeGVjU2VyaWFsaXplUGxhbihwbGFuc3RhdGUtPnBsYW4s IGVzdGF0ZSk7CisJcGFydF9wcnVuZV9yZXN1bHRzX2RhdGEgPSBub2RlVG9TdHJpbmcoZXN0YXRl LT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMpOworCXVucHJ1bmVkX3JlbGlkc19kYXRhID0gbm9kZVRv U3RyaW5nKGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKTsKIAogCS8qIENyZWF0ZSBhIHBhcmFs bGVsIGNvbnRleHQuICovCiAJcGN4dCA9IENyZWF0ZVBhcmFsbGVsQ29udGV4dCgicG9zdGdyZXMi LCAiUGFyYWxsZWxRdWVyeU1haW4iLCBud29ya2Vycyk7CkBAIC02NzksNiArNjkyLDE2IEBAIEV4 ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBzdG10X2xlbik7CiAJ c2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCisJLyogRXN0aW1h dGUgc3BhY2UgZm9yIHNlcmlhbGl6ZWQgcGFydF9wcnVuZV9yZXN1bHRzLiAqLworCXBhcnRfcHJ1 bmVfcmVzdWx0c19sZW4gPSBzdHJsZW4ocGFydF9wcnVuZV9yZXN1bHRzX2RhdGEpICsgMTsKKwlz aG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBhcnRfcHJ1bmVfcmVzdWx0 c19sZW4pOworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKKwor CS8qIEVzdGltYXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIHVucHJ1bmVkX3JlbGlkcy4gKi8KKwl1 bnBydW5lZF9yZWxpZHNfbGVuID0gc3RybGVuKHVucHJ1bmVkX3JlbGlkc19kYXRhKSArIDE7CisJ c2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCB1bnBydW5lZF9yZWxpZHNf bGVuKTsKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CisKIAkv KiBFc3RpbWF0ZSBzcGFjZSBmb3Igc2VyaWFsaXplZCBQYXJhbUxpc3RJbmZvLiAqLwogCXBhcmFt bGlzdGluZm9fbGVuID0gRXN0aW1hdGVQYXJhbUxpc3RTcGFjZShlc3RhdGUtPmVzX3BhcmFtX2xp c3RfaW5mbyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBwYXJh bWxpc3RpbmZvX2xlbik7CkBAIC03ODAsNiArODAzLDE2IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFu KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAltZW1jcHkocHN0bXRfc3Bh Y2UsIHBzdG10X2RhdGEsIHBzdG10X2xlbik7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQ QVJBTExFTF9LRVlfUExBTk5FRFNUTVQsIHBzdG10X3NwYWNlKTsKIAorCS8qIFN0b3JlIHNlcmlh bGl6ZWQgcGFydF9wcnVuZV9yZXN1bHRzICovCisJcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNlID0g c2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHBhcnRfcHJ1bmVfcmVzdWx0c19sZW4pOworCW1l bWNweShwYXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2UsIHBhcnRfcHJ1bmVfcmVzdWx0c19kYXRhLCBw YXJ0X3BydW5lX3Jlc3VsdHNfbGVuKTsKKwlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFM TEVMX0tFWV9QQVJUSVRJT05fUFJVTkVfUkVTVUxUUywgcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNl KTsKKworCS8qIFN0b3JlIHNlcmlhbGl6ZWQgdW5wcnVuZWRfcmVsaWRzICovCisJdW5wcnVuZWRf cmVsaWRzX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHVucHJ1bmVkX3JlbGlk c19sZW4pOworCW1lbWNweSh1bnBydW5lZF9yZWxpZHNfc3BhY2UsIHVucHJ1bmVkX3JlbGlkc19k YXRhLCB1bnBydW5lZF9yZWxpZHNfbGVuKTsKKwlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBB UkFMTEVMX0tFWV9VTlBSVU5FRF9SRUxJRFMsIHVucHJ1bmVkX3JlbGlkc19zcGFjZSk7CisKIAkv KiBTdG9yZSBzZXJpYWxpemVkIFBhcmFtTGlzdEluZm8uICovCiAJcGFyYW1saXN0aW5mb19zcGFj ZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBwYXJhbWxpc3RpbmZvX2xlbik7CiAJc2ht X3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgcGFyYW1s aXN0aW5mb19zcGFjZSk7CkBAIC0xMjc5LDEwICsxMzEyLDE1IEBAIEV4ZWNQYXJhbGxlbEdldFF1 ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJCQkJCQkgaW50 IGluc3RydW1lbnRfb3B0aW9ucykKIHsKIAljaGFyCSAgICpwc3RtdHNwYWNlOworCWNoYXIJICAg KnBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZTsKKwljaGFyCSAgICp1bnBydW5lZF9yZWxpZHNfc3Bh Y2U7CiAJY2hhcgkgICAqcGFyYW1zcGFjZTsKIAlQbGFubmVkU3RtdCAqcHN0bXQ7CisJTGlzdAkg ICAqcGFydF9wcnVuZV9yZXN1bHRzOworCUJpdG1hcHNldCAgKnVucHJ1bmVkX3JlbGlkczsKIAlQ YXJhbUxpc3RJbmZvIHBhcmFtTEk7CiAJY2hhcgkgICAqcXVlcnlTdHJpbmc7CisJRVN0YXRlCSAg ICpwcmVwX2VzdGF0ZSA9IE5VTEw7CiAKIAkvKiBHZXQgdGhlIHF1ZXJ5IHN0cmluZyBmcm9tIHNo YXJlZCBtZW1vcnkgKi8KIAlxdWVyeVN0cmluZyA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxM RUxfS0VZX1FVRVJZX1RFWFQsIGZhbHNlKTsKQEAgLTEyOTUsMTIgKzEzMzMsODAgQEAgRXhlY1Bh cmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwK IAlwYXJhbXNwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNU SU5GTywgZmFsc2UpOwogCXBhcmFtTEkgPSBSZXN0b3JlUGFyYW1MaXN0KCZwYXJhbXNwYWNlKTsK IAorCS8qIFJlY29uc3RydWN0IGxlYWRlci1zdXBwbGllZCBwYXJ0X3BydW5lX3Jlc3VsdHMgYW5k IHVucHJ1bmVkX3JlbGlkcy4gKi8KKwlwYXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2UgPQorCQlzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9QQVJUSVRJT05fUFJVTkVfUkVTVUxUUywgZmFs c2UpOworCXBhcnRfcHJ1bmVfcmVzdWx0cyA9IChMaXN0ICopIHN0cmluZ1RvTm9kZShwYXJ0X3By dW5lX3Jlc3VsdHNfc3BhY2UpOworCXVucHJ1bmVkX3JlbGlkc19zcGFjZSA9CisJCXNobV90b2Nf bG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1VOUFJVTkVEX1JFTElEUywgZmFsc2UpOworCXVucHJ1 bmVkX3JlbGlkcyA9IChCaXRtYXBzZXQgKikgc3RyaW5nVG9Ob2RlKHVucHJ1bmVkX3JlbGlkc19z cGFjZSk7CisKKwkvKgorCSAqIElmIHBydW5pbmcgd2FzIGRvbmUgaW4gdGhlIGxlYWRlciwgYnVp bGQgYSBwcmVwIGVzdGF0ZSBpbiB0aGUgd29ya2VyCisJICogYW5kIGluamVjdCB0aGUgbGVhZGVy J3MgcHJ1bmluZyByZXN1bHRzIGludG8gaXQgZm9yIHJldXNlLgorCSAqLworCWlmIChwc3RtdC0+ cGFydFBydW5lSW5mb3MpCisJeworCQlwcmVwX2VzdGF0ZSA9IEV4ZWN1dG9yUHJlcChwc3RtdCwg cGFyYW1MSSwgQ3VycmVudFJlc291cmNlT3duZXIsIGZhbHNlLCAwKTsKKwkJQXNzZXJ0KHByZXBf ZXN0YXRlKTsKKworCQlwcmVwX2VzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzID0gcGFydF9w cnVuZV9yZXN1bHRzOworCQlwcmVwX2VzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzID0KKwkJCWJt c19hZGRfbWVtYmVycyhwcmVwX2VzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzLAorCQkJCQkJCXVu cHJ1bmVkX3JlbGlkcyk7CisKKwkJLyoKKwkJICogQSBkZWJ1Zy1idWlsZC1vbmx5IGNoZWNrIHRo YXQgdGhlIHBydW5pbmcgcmVzdWx0cyBwYXNzZWQgZnJvbSB0aGUKKwkJICogbGVhZGVyIG1hdGNo IHdoYXQgdGhlIHdvcmtlciB3b3VsZCBpbmRlcGVuZGVudGx5IGNvbXB1dGUuCisJCSAqLworCQlD aGVja0luaXRpYWxQcnVuaW5nUmVzdWx0c0luV29ya2VyKHByZXBfZXN0YXRlKTsKKwl9CisKIAkv KiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KIAlyZXR1cm4gQ3JlYXRlUXVl cnlEZXNjKHBzdG10LAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRBY3RpdmVT bmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFyYW1MSSwg TlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zLAotCQkJCQkJICAgTlVMTCk7CisJCQkJCQkgICBwcmVw X2VzdGF0ZSk7Cit9CisKKy8qCisgKiBDaGVja0luaXRpYWxQcnVuaW5nUmVzdWx0c0luV29ya2Vy CisgKgkJVmVyaWZ5IHBhcnRpdGlvbiBwcnVuaW5nIHJlc3VsdHMgcGFzc2VkIGZyb20gdGhlIGxl YWRlciBwcm9jZXNzLgorICoKKyAqIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGR1cmlu ZyBwYXJhbGxlbCB3b3JrZXIgcXVlcnkgc2V0dXAuCisgKiBJdCByZWNvbXB1dGVzIGluaXRpYWwg cHJ1bmluZyByZXN1bHRzIGxvY2FsbHkgYW5kIGNvbXBhcmVzIHRoZW0gd2l0aAorICogdGhvc2Ug cmVjZWl2ZWQgZnJvbSB0aGUgbGVhZGVyLiBBbnkgbWlzbWF0Y2ggbWF5IGluZGljYXRlIGEgZGl2 ZXJnZW5jZQorICogYmV0d2VlbiBsZWFkZXIgYW5kIHdvcmtlciBsb2dpYyBvciBlbnZpcm9ubWVu dC4KKyAqCisgKiBPbmx5IHBlcmZvcm1lZCBpbiBkZWJ1ZyBidWlsZHMuCisgKi8KK3N0YXRpYyB2 b2lkCitDaGVja0luaXRpYWxQcnVuaW5nUmVzdWx0c0luV29ya2VyKEVTdGF0ZSAqZXN0YXRlKQor eworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlMaXN0Q2VsbCAgICpsYzsKKwlpbnQJCQlp OworCisJQXNzZXJ0KGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzICE9IE5VTEwpOworCWkg PSAwOworCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMpCisJeworCQlQ YXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlID0gKFBhcnRpdGlvblBydW5lU3RhdGUgKikg bGZpcnN0KGxjKTsKKwkJQml0bWFwc2V0ICpyZXVzZV92YWxpZHN1YnBsYW5zID0KKwkJCQlsaXN0 X250aF9ub2RlKEJpdG1hcHNldCwgZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMsIGkrKyk7 CisJCUJpdG1hcHNldCAgKnZhbGlkc3VicGxhbnMgPSBOVUxMOworCQlCaXRtYXBzZXQgICp2YWxp ZHN1YnBsYW5fcnRpcyA9IE5VTEw7CisKKwkJaWYgKHBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1 bmUpCisJCQl2YWxpZHN1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBydW5lc3Rh dGUsIHRydWUsCisJCQkJCQkJCQkJCQkJICZ2YWxpZHN1YnBsYW5fcnRpcyk7CisJCWlmICghYm1z X2VxdWFsKHZhbGlkc3VicGxhbnMsIHJldXNlX3ZhbGlkc3VicGxhbnMpKQorCQkJZWxvZyhFUlJP UiwgImRpZmZlcmVudCB2YWxpZHN1YnBsYW5zIGluIHBhcmFsbGVsIHdvcmtlciIpOworCQlpZiAo Ym1zX25vbmVtcHR5X2RpZmZlcmVuY2UodmFsaWRzdWJwbGFuX3J0aXMsIGVzdGF0ZS0+ZXNfdW5w cnVuZWRfcmVsaWRzKSkKKwkJCWVsb2coRVJST1IsICJkaWZmZXJlbnQgdW5wcnVuYWJsZV9yZWxp ZHMgaW4gcGFyYWxsZWwgd29ya2VyIik7CisJfQorI2VuZGlmCiB9CiAKIC8qCi0tIAoyLjQ3LjMK Cg== --000000000000dd25ce064a847dbd--