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 1vLz81-00FiuF-39 for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Nov 2025 07:30:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vLz80-000Hck-22 for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Nov 2025 07:30:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vLz80-000Hcc-0Z for pgsql-hackers@lists.postgresql.org; Thu, 20 Nov 2025 07:30:52 +0000 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vLz7x-000VBq-2q for pgsql-hackers@postgresql.org; Thu, 20 Nov 2025 07:30:52 +0000 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-343f35d0f99so432387a91.0 for ; Wed, 19 Nov 2025 23:30:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763623847; x=1764228647; 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=akLqXz7C2ixVgQJmHIUBN9+yqKDM/oibYvWbgdXJR9w=; b=QSUGN6hUcMKJbWPrXpq7WhIoNA0w3XdsD0b4AQseO69fV8skN68ITUYiRy8qSbVicp hBI/tTQSDlysUAGGJgdcu7hieONYy7mXLBI0TJD/JCxCZjF92Bv/Bj8JNMmaZysW6cCR T/Bepz9jvjgI1xsElAAxlAUp7H6OP2shaVHajx0fWCMwzZNVXk5aiuPlfS8qj7kiEpuG 5EBpKuvKjX+UVYQ3UW+CWZkoKFTrU2/vJG1O99AtklCNRQpQEeErqAVPIcmYnB+hLPhq pkyRIfgFgz3wKqkAJpTRTL05uQpb8fcoUhDCVEP8rVg+BJQukAHyj+HEZ1yuiqLtBQNM d2Wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763623847; x=1764228647; 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=akLqXz7C2ixVgQJmHIUBN9+yqKDM/oibYvWbgdXJR9w=; b=UnMwxwR3azcpY3VdGiopbVIO59oe9ctsi/zD2frrNQ638DF/8rL3A30U/5UD0J3PC0 KuOJvCRRoiq3jO4dIASUEhpMab56efAwVJ2boePmfz2EfO0tM2QM7P+vVGfW62QDn9i8 ukNqf8kW3FMxRUu4AxlwHI6Yq296B8/77IxCwqBoKLk0PQaAuHPKUeQVfXiCiCLSUCnQ Cu8D3RDM04mZiW7lrcCTH3mTKLHGpo4q11xG8MEAh6eLXyKW4NTzmYRzqNYXWxiCRpQ2 8BVB0jLstcyQwzEMJ+qtNujGvqCWkh0o0EMJUFe1Q/OdktAKbxeeHsmnbjzf4d5mrorv QKIw== X-Forwarded-Encrypted: i=1; AJvYcCUGCVFpKaBNDZrO9Q1bjzvIMtQDAxbzRsmY1kh9vuT+9KEE65fuy2OcLHezXO46ewJ+5/Y1jUMECwOHFSWY@postgresql.org X-Gm-Message-State: AOJu0YzQ9Qzs9QAhblpiYUjvbJjzM9eKmkDSJzIIFn+OilodtYVQf082 36hI1kr6FFUdlDAQ8Aw35IjLwkNP5BKLcCqS9tJey8FeGgNEiPZmC7CJTixUzCwVh0nWtJN3Zkr lfyMyha3b5BWHEZ1RYu2Cj5A5EZgfDHQ= X-Gm-Gg: ASbGncs1OvBoBP+g9gOR9E+6Q1C27HVH/3CAjMrPOtYk4dYT8Tm2qcHzIjKVsvlFWbO ABG1DWJyVj9Mr1qXz/YAQlT4yOyMWn1F8TXfEFkTSEOZjMFUTCLQkQH3XLUq7qKSPy23FZcoDEj Q9OThdFYBgPLATmYjtfkEl8Hxc93neaBjkAke/OLqKe+F8/6Qhemk169bIzIKq09Y2z9+SUJBPO KmnvnybeIvzKFoBFeT6VTNFaWi7P9unzzzs1ZWUt4O/Kxs0Od+ep/rdwJpLRKozN4Hgzul+ X-Google-Smtp-Source: AGHT+IFfRKmaR7JrP+sSg3NDf+rE+JuUGYcEciNDuZyfML69K15gVeiGFhtL/sDnrTHb4QcBlhKsOgDEg/bLrZ2bGpM= X-Received: by 2002:a17:90b:2b44:b0:340:f7d6:dc70 with SMTP id 98e67ed59e1d1-34727bdc6c3mr2370016a91.13.1763623847543; Wed, 19 Nov 2025 23:30:47 -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: Thu, 20 Nov 2025 16:30:26 +0900 X-Gm-Features: AWmQ_bm_dH0X0CW9mkSKk9U6a-jPkX0cCOV3uCFvlgNtxtGVLtaMbUOiit3cXSU Message-ID: Subject: Re: generic plans and "initial" pruning To: Tom Lane Cc: 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="000000000000f35fa8064401accf" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f35fa8064401accf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Nov 17, 2025 at 9:50=E2=80=AFPM Amit Langote wrote: > On Wed, Nov 12, 2025 at 11:17=E2=80=AFPM Amit Langote wrote: > > * Enable pruning-aware locking in cached / generic plan reuse (0004): > > extends GetCachedPlan() and CheckCachedPlan() to call ExecutorPrep() > > on each PlannedStmt in the CachedPlan, locking only surviving > > partitions. Adds CachedPlanPrepData to pass this through plan cache > > APIs and down to execution via QueryDesc. Also reinstates the > > firstResultRel locking rule added in 28317de72 but later lost due to > > revert of the earlier pruning patch, to ensure correctness when all > > target partitions are pruned. > > Looking at the changes to executor/function.c, I also noticed that I > had mistakenly allocated the ExecutorPrep state in > SQLFunctionCache.fcontext whereas the correct context for execution > related state is SQLFunctionCache.subcontext. In the updated patch, > I've made postquel_start() reparent the prep EState's es_query_cxt to > subcontext from fcontext. I also did not have a test case that > exercised cached plan reuse for SQL functions, so I added one. I split > the function.c's GetCachedPlan() + CachedPlanPrepData plumbing into a > new patch 0005 so it can be reviewed separately, since it is the only > non-mechanical call-site change. I also noticed a bug in the prep cleanup logic that runs when a cached plan becomes invalid during the prep phase. Patch 0005 fixes that and adds a regression test that exercises the invalidation path. This will be folded into 0004 later. --=20 Thanks, Amit Langote --000000000000f35fa8064401accf Content-Type: application/octet-stream; name="v3-0004-Use-pruning-aware-locking-in-cached-plans.patch" Content-Disposition: attachment; filename="v3-0004-Use-pruning-aware-locking-in-cached-plans.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi72au0l2 RnJvbSBkYzBkZTAzNTEwNTM5ZGRjM2JkMzMzMjcxNTg3ODUyNzkzNTY4MjFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjI6MzA6NTIgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz IDQvNl0gVXNlIHBydW5pbmctYXdhcmUgbG9ja2luZyBpbiBjYWNoZWQgcGxhbnMKCkV4dGVuZCBH ZXRDYWNoZWRQbGFuKCkgdG8gcGVyZm9ybSBFeGVjdXRvclByZXAoKSBvbiBlYWNoIHBsYW5uZWQK c3RhdGVtZW50LCBjYXB0dXJpbmcgdW5wcnVuZWQgcmVsaWRzIGFuZCBpbml0aWFsIHBydW5pbmcg cmVzdWx0cy4KVXNlIHRoaXMgZGF0YSB0byBhY3F1aXJlIGV4ZWN1dGlvbiBsb2NrcyBvbmx5IG9u IHN1cnZpdmluZyBwYXJ0aXRpb25zLAphdm9pZGluZyB1bm5lY2Vzc2FyeSBsb2NraW5nIG9mIHBy dW5lZCB0YWJsZXMgZXZlbiB3aGVuIHVzaW5nIGNhY2hlZApwbGFucy4KCkludHJvZHVjZSBDYWNo ZWRQbGFuUHJlcERhdGEgdG8gY2FycnkgRXhlY3V0b3JQcmVwIHJlc3VsdHMKdGhyb3VnaCB0aGUg cGxhbiBjYWNoaW5nIGxheWVyLiBBZGp1c3QgY2FsbCBzaXRlcyBpbiBTUEksCmZ1bmN0aW9ucywg cG9ydGFscywgYW5kIEVYUExBSU4gdG8gcHJvcGFnYXRlIHRoaXMgZGF0YS4KClRoaXMgZW5zdXJl cyBwcnVuaW5nIGRlY2lzaW9ucyBtYWRlIGR1cmluZyBpbml0aWFsIHBydW5pbmcgYXJlCmNvbnNp c3RlbnRseSByZXVzZWQgd2l0aG91dCByZWRvaW5nIHBydW5pbmcgbG9naWMgaW4gZXhlY3V0b3Ig cGF0aHMKbGlrZSBwYXJhbGxlbCB3b3JrZXJzLiBJdCBhbHNvIGxheXMgdGhlIGdyb3VuZHdvcmsg Zm9yCnBydW5pbmctZGVwZW5kZW50IGxvY2sgYmVoYXZpb3IgZHVyaW5nIHBsYW4gcmV1c2UuCgpU byBtYWludGFpbiBjb3JyZWN0bmVzcyB3aGVuIGFsbCB0YXJnZXQgcGFydGl0aW9ucyBhcmUgcHJ1 bmVkLCBhbHNvCnJlaW5zdGF0ZSB0aGUgZmlyc3RSZXN1bHRSZWwgbG9ja2luZyBiZWhhdmlvciBs b3N0IGluIGNvbW1pdAoyODMxN2RlNzIuIFRoYXQgY29tbWl0IHJlcXVpcmVkIHRoZSBmaXJzdCBN b2RpZnlUYWJsZSB0YXJnZXQgdG8KcmVtYWluIGluaXRpYWxpemVkIGZvciBleGVjdXRvciBhc3N1 bXB0aW9ucyB0byBob2xkLiBXZSBub3cKZXhwbGljaXRseSB0cmFjayB0aGVzZSByZWxpZHMgaW4g UGxhbm5lckdsb2JhbCBhbmQgUGxhbm5lZFN0bXQgc28gdGhleQphcmUgbG9ja2VkIGV2ZW4gaWYg cHJ1bmVkLCBwcmVzZXJ2aW5nIHRoYXQgcnVsZSBhY3Jvc3MgY2FjaGVkIHBsYW4KcmV1c2UuCi0t LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgfCAgMTkgKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIHwgICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9z cGkuYyAgICAgICAgICAgICB8ICAyNiArKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5uZXIuYyAgIHwgICAxICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAg IHwgICAzICsKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgIHwgICA5ICst CiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAgICB8IDIzNCArKysrKysrKysr KysrKysrKysrKysrKystCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICB8 ICAgMyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICB8ICAxMCArKwog c3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgfCAgMjQgKystCiAxMSBmaWxl cyBjaGFuZ2VkLCAzMTMgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJlcGFyZS5jCmluZGV4IGFmZDQ0OWM3M2JhLi4yMzMzMmQxOWIzNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3By ZXBhcmUuYwpAQCAtMTU0LDYgKzE1NCw3IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3Rh dGUsCiB7CiAJUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5OwogCUNhY2hlZFBsYW4gKmNwbGFuOwor CUNhY2hlZFBsYW5QcmVwRGF0YSBjcHJlcCA9IHswfTsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7CiAJ UGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IE5VTEw7 CkBAIC0xOTMsNyArMTk0LDEwIEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCQkJCQkgICBlbnRyeS0+cGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nKTsKIAogCS8qIFJlcGxh biBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudCBmb3IgcG9ydGFsICovCi0J Y3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBO VUxMKTsKKwkvKiBLZWVwIEV4ZWN1dG9yUHJlcCBzdGF0ZSB3aXRoIHRoZSBwb3J0YWwgYW5kIGl0 cyByZXNvd25lci4gKi8KKwljcHJlcC5jb250ZXh0ID0gcG9ydGFsLT5wb3J0YWxDb250ZXh0Owor CWNwcmVwLm93bmVyID0gcG9ydGFsLT5yZXNvd25lcjsKKwljcGxhbiA9IEdldENhY2hlZFBsYW4o ZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIE5VTEwsICZjcHJlcCk7CiAJcGxhbl9s aXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCS8qCkBAIC0yMDUsNyArMjA5LDcgQEAgRXhlY3V0 ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAg ZW50cnktPnBsYW5zb3VyY2UtPmNvbW1hbmRUYWcsCiAJCQkJCSAgcGxhbl9saXN0LAotCQkJCQkg IE5JTCwKKwkJCQkJICBjcHJlcC5wcmVwX2xpc3QsCiAJCQkJCSAgY3BsYW4pOwogCiAJLyoKQEAg LTU3NSw2ICs1NzksNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3Rt dCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlQcmVwYXJlZFN0YXRlbWVu dCAqZW50cnk7CiAJY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nOwogCUNhY2hlZFBsYW4gKmNwbGFu OworCUNhY2hlZFBsYW5QcmVwRGF0YSBjcHJlcCA9IHswfTsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7 CiAJTGlzdAkgICAqcHJlcF9saXN0OwogCUxpc3RDZWxsICAgKnA7CkBAIC02MzMsOCArNjM4LDE0 IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNl ICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCX0KIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFu ZCBhY3F1aXJlIGEgdHJhbnNpZW50IHJlZmNvdW50ICovCisJLyogRXhlY3V0b3JQcmVwIHN0YXRl IGlzIGxvY2FsIHRvIHRoaXMgRVhQTEFJTiBFWEVDVVRFIGNhbGwuICovCisJY3ByZXAuY29udGV4 dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCWNwcmVwLm93bmVyID0gQ3VycmVudFJlc291cmNl T3duZXI7CisJaWYgKGVzLT5nZW5lcmljKQorCQljcHJlcC5lZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQ TEFJTl9HRU5FUklDOwogCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwg cGFyYW1MSSwKLQkJCQkJCSAgQ3VycmVudFJlc291cmNlT3duZXIsIHBzdGF0ZS0+cF9xdWVyeUVu dik7CisJCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93bmVyLCBwc3RhdGUtPnBfcXVlcnlFbnYsCisJ CQkJCQkgICZjcHJlcCk7CiAKIAlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBsYW5kdXJhdGlvbik7 CiAJSU5TVFJfVElNRV9TVUJUUkFDVChwbGFuZHVyYXRpb24sIHBsYW5zdGFydCk7CkBAIC02NTMs NyArNjY0LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIElu dG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJfQogCiAJcGxhbl9saXN0ID0gY3Bs YW4tPnN0bXRfbGlzdDsKLQlwcmVwX2xpc3QgPSBOSUw7CisJcHJlcF9saXN0ID0gY3ByZXAucHJl cF9saXN0OwogCiAJLyogRXhwbGFpbiBlYWNoIHF1ZXJ5ICovCiAJaSA9IDA7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2Z1bmN0aW9ucy5jCmluZGV4IDYzMzMxMGM1ZjViLi5kODE3MThlYTg0ZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZnVuY3Rpb25zLmMKQEAgLTY5OCw2ICs2OTgsNyBAQCBpbml0X2V4ZWN1dGlvbl9zdGF0ZShT UUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAlmY2FjaGUtPmNwbGFuID0gR2V0Q2FjaGVkUGxh bihwbGFuc291cmNlLAogCQkJCQkJCQkgIGZjYWNoZS0+cGFyYW1MSSwKIAkJCQkJCQkJICBmY2Fj aGUtPmNvd25lciwKKwkJCQkJCQkJICBOVUxMLAogCQkJCQkJCQkgIE5VTEwpOwogCiAJLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggNGM1NjQ3YWMzOGEuLmM1ODEy NjEyZjhkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNDY0OCw4 ICs0NjQ4LDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogYXMgYSByZWZlcmVuY2UgZm9yIGJ1aWxkaW5nIHRo ZSBSZXN1bHRSZWxJbmZvIG9mIHRoZSB0YXJnZXQgcGFydGl0aW9uLgogCSAqIEluIGVpdGhlciBj YXNlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGljaCByZXN1bHQgcmVsYXRpb24gaXMga2VwdCwgc28g d2UKIAkgKiBqdXN0IGtlZXAgdGhlIGZpcnN0IG9uZSwgaWYgYWxsIG90aGVycyBoYXZlIGJlZW4g cHJ1bmVkLiAgU2VlIGFsc28sCi0JICogRXhlY0RvSW5pdGlhbFBydW5pbmcoKSwgd2hpY2ggZW5z dXJlcyB0aGF0IHRoaXMgZmlyc3QgcmVzdWx0IHJlbGF0aW9uCi0JICogaGFzIGJlZW4gbG9ja2Vk LgorCSAqIEFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoKSwgd2hpY2ggZW5zdXJlcyB0aGF0 IHRoaXMgZmlyc3QgcmVzdWx0CisJICogcmVsYXRpb24gaGFzIGJlZW4gbG9ja2VkLgogCSAqLwog CWkgPSAwOwogCWZvcmVhY2gobCwgbm9kZS0+cmVzdWx0UmVsYXRpb25zKQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpp bmRleCA3YTNjYjk0NGQ2Zi4uZDU4MGYxZTA0MjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC0xNTc5LDYg KzE1NzksNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJ UGxhblB0ciBwbGFuLAogewogCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2U7CiAJQ2FjaGVk UGxhbiAqY3BsYW47CisJQ2FjaGVkUGxhblByZXBEYXRhIGNwcmVwID0gezB9OwogCUxpc3QJICAg KnN0bXRfbGlzdDsKIAljaGFyCSAgICpxdWVyeV9zdHJpbmc7CiAJU25hcHNob3QJc25hcHNob3Q7 CkBAIC0xNjU5LDcgKzE2NjAsMTEgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNo YXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkgKi8KIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQs IGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudCBmb3IgcG9ydGFsICovCi0JY3BsYW4gPSBHZXRD YWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIF9TUElfY3VycmVudC0+cXVlcnlF bnYpOworCS8qIEV4ZWN1dG9yUHJlcCBzdGF0ZSBsaXZlcyBpbiB0aGlzIHBvcnRhbCdzIGNvbnRl eHQuICovCisJY3ByZXAuY29udGV4dCA9IHBvcnRhbC0+cG9ydGFsQ29udGV4dDsKKwljcHJlcC5v d25lciA9IHBvcnRhbC0+cmVzb3duZXI7CisJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3Vy Y2UsIHBhcmFtTEksIE5VTEwsIF9TUElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkgICZjcHJl cCk7CiAJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCWlmICghcGxhbi0+c2F2ZWQp CkBAIC0xNjg1LDcgKzE2OTAsNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hh ciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBw bGFuc291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkgIHN0bXRfbGlzdCwKLQkJCQkJICBOSUwsCisJ CQkJCSAgY3ByZXAucHJlcF9saXN0LAkvKiBsaXZlcyBpbiBwb3J0YWxDb250ZXh0ICovCiAJCQkJ CSAgY3BsYW4pOwogCiAJLyoKQEAgLTIwNzgsNiArMjA4Myw3IEBAIFNQSV9wbGFuX2dldF9jYWNo ZWRfcGxhbihTUElQbGFuUHRyIHBsYW4pCiB7CiAJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZTsKIAlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNoZWRQbGFuUHJlcERhdGEgY3ByZXAgPSB7MH07 CiAJU1BJQ2FsbGJhY2tBcmcgc3BpY2FsbGJhY2thcmc7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sg c3BpZXJyY29udGV4dDsKIApAQCAtMjEwMSw5ICsyMTA3LDEzIEBAIFNQSV9wbGFuX2dldF9jYWNo ZWRfcGxhbihTUElQbGFuUHRyIHBsYW4pCiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZzcGllcnJj b250ZXh0OwogCiAJLyogR2V0IHRoZSBnZW5lcmljIHBsYW4gZm9yIHRoZSBxdWVyeSAqLworCS8q IEV4ZWN1dG9yUHJlcCgpIHN0YXRlIGxpdmVzIGluIGNhbGxlcidzIGFjdGl2ZSBjb250ZXh0LiAq LworCWNwcmVwLmNvbnRleHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKwljcHJlcC5vd25lciA9 IEN1cnJlbnRSZXNvdXJjZU93bmVyOwogCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNl LCBOVUxMLAogCQkJCQkJICBwbGFuLT5zYXZlZCA/IEN1cnJlbnRSZXNvdXJjZU93bmVyIDogTlVM TCwKLQkJCQkJCSAgX1NQSV9jdXJyZW50LT5xdWVyeUVudik7CisJCQkJCQkgIF9TUElfY3VycmVu dC0+cXVlcnlFbnYsCisJCQkJCQkgICZjcHJlcCk7CiAJQXNzZXJ0KGNwbGFuID09IHBsYW5zb3Vy Y2UtPmdwbGFuKTsKIAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwpAQCAtMjUw MSw2ICsyNTExLDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBT UElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSA9IChDYWNoZWRQbGFuU291cmNlICopIGxmaXJzdChsYzEpOwogCQlMaXN0CSAgICpzdG10X2xp c3Q7CiAJCUxpc3RDZWxsICAgKmxjMjsKKwkJQ2FjaGVkUGxhblByZXBEYXRhIGNwcmVwID0gezB9 OwogCQlMaXN0CSAgICpwcmVwX2xpc3Q7CiAJCWludAkJCWk7CiAKQEAgLTI1NzcsMTEgKzI1ODgs MTYgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRl T3B0aW9ucyAqb3B0aW9ucywKIAkJICogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGluY3JlbWVudCBw bGFuIHJlZmNvdW50LiAgSWYgaXQncyBhIHNhdmVkCiAJCSAqIHBsYW4sIHRoZSByZWZjb3VudCBt dXN0IGJlIGJhY2tlZCBieSB0aGUgcGxhbl9vd25lci4KIAkJICovCisKKwkJLyogRXhlY3V0b3JQ cmVwIHN0YXRlIGlzIHBlciBfU1BJX2V4ZWN1dGVfcGxhbiBjYWxsLiAqLworCQljcHJlcC5jb250 ZXh0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7CisJCWNwcmVwLm93bmVyID0gQ3VycmVudFJlc291 cmNlT3duZXI7CiAJCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBvcHRpb25zLT5w YXJhbXMsCi0JCQkJCQkJICBwbGFuX293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKKwkJ CQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkJICAmY3By ZXApOwogCiAJCXN0bXRfbGlzdCA9IGNwbGFuLT5zdG10X2xpc3Q7Ci0JCXByZXBfbGlzdCA9IE5J TDsKKwkJcHJlcF9saXN0ID0gY3ByZXAucHJlcF9saXN0OwogCiAJCS8qCiAJCSAqIElmIHdlIHdl cmVuJ3QgZ2l2ZW4gYSBzcGVjaWZpYyBzbmFwc2hvdCB0byB1c2UsIGFuZCB0aGUgc3RhdGVtZW50 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggYzRmZDY0NmI5OTkuLjRjNzZl NzhjMWRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC02MDgsNiArNjA4 LDcgQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0 cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJCQkJCQkJCQkJCSAgZ2xvYi0+cHJ1bmFibGVSZWxp ZHMpOwogCXJlc3VsdC0+cGVybUluZm9zID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7CiAJcmVz dWx0LT5yZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlvbnM7CisJcmVzdWx0LT5m aXJzdFJlc3VsdFJlbHMgPSBnbG9iLT5maXJzdFJlc3VsdFJlbHM7CiAJcmVzdWx0LT5hcHBlbmRS ZWxhdGlvbnMgPSBnbG9iLT5hcHBlbmRSZWxhdGlvbnM7CiAJcmVzdWx0LT5zdWJwbGFucyA9IGds b2ItPnN1YnBsYW5zOwogCXJlc3VsdC0+cmV3aW5kUGxhbklEcyA9IGdsb2ItPnJld2luZFBsYW5J RHM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggY2NkYzliYzI2NGEuLjIy OWIzOTA2MGFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZz LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0xMjc0LDYg KzEyNzQsOSBAQCBzZXRfcGxhbl9yZWZzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLCBp bnQgcnRvZmZzZXQpCiAJCQkJCQlsYXBwZW5kX2ludChyb290LT5nbG9iLT5yZXN1bHRSZWxhdGlv bnMsCiAJCQkJCQkJCQlzcGxhbi0+cm9vdFJlbGF0aW9uKTsKIAkJCQl9CisJCQkJcm9vdC0+Z2xv Yi0+Zmlyc3RSZXN1bHRSZWxzID0KKwkJCQkJbGFwcGVuZF9pbnQocm9vdC0+Z2xvYi0+Zmlyc3RS ZXN1bHRSZWxzLAorCQkJCQkJCQlsaW5pdGlhbF9pbnQoc3BsYW4tPnJlc3VsdFJlbGF0aW9ucykp OwogCQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgVF9BcHBlbmQ6CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXgg ZDM5NjRhMTJhMTQuLjI0OTgyOWY1OWEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0xNjM5LDYgKzE2 MzksNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJaW50 MTYJICAgKnJmb3JtYXRzID0gTlVMTDsKIAlDYWNoZWRQbGFuU291cmNlICpwc3JjOwogCUNhY2hl ZFBsYW4gKmNwbGFuOworCUNhY2hlZFBsYW5QcmVwRGF0YSBjcHJlcCA9IHswfTsKIAlQb3J0YWwJ CXBvcnRhbDsKIAljaGFyCSAgICpxdWVyeV9zdHJpbmc7CiAJY2hhcgkgICAqc2F2ZWRfc3RtdF9u YW1lOwpAQCAtMjAyMSw3ICsyMDIyLDExIEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8g aW5wdXRfbWVzc2FnZSkKIAkgKiB3aWxsIGJlIGdlbmVyYXRlZCBpbiBNZXNzYWdlQ29udGV4dC4g IFRoZSBwbGFuIHJlZmNvdW50IHdpbGwgYmUKIAkgKiBhc3NpZ25lZCB0byB0aGUgUG9ydGFsLCBz byBpdCB3aWxsIGJlIHJlbGVhc2VkIGF0IHBvcnRhbCBkZXN0cnVjdGlvbi4KIAkgKi8KLQljcGxh biA9IEdldENhY2hlZFBsYW4ocHNyYywgcGFyYW1zLCBOVUxMLCBOVUxMKTsKKworCS8qIEV4ZWN1 dG9yUHJlcCgpIHN0YXRlIGxpdmVzIGluIHBvcnRhbCBjb250ZXh0LiAqLworCWNwcmVwLmNvbnRl eHQgPSBwb3J0YWwtPnBvcnRhbENvbnRleHQ7CisJY3ByZXAub3duZXIgPSBwb3J0YWwtPnJlc293 bmVyOworCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwc3JjLCBwYXJhbXMsIE5VTEwsIE5VTEwsICZj cHJlcCk7CiAKIAkvKgogCSAqIE5vdyB3ZSBjYW4gZGVmaW5lIHRoZSBwb3J0YWwuCkBAIC0yMDM0 LDcgKzIwMzksNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2Up CiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIHBzcmMtPmNvbW1hbmRUYWcsCiAJCQkJCSAg Y3BsYW4tPnN0bXRfbGlzdCwKLQkJCQkJICBOSUwsCisJCQkJCSAgY3ByZXAucHJlcF9saXN0LAog CQkJCQkgIGNwbGFuKTsKIAogCS8qIFBvcnRhbCBpcyBkZWZpbmVkLCBzZXQgdGhlIHBsYW4gSUQg YmFzZWQgb24gaXRzIGNvbnRlbnRzLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpp bmRleCA2NjYxZDJjNmI3My4uYzFjZmQ0NzQyMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5j YWNoZS5jCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBib29sIFN0bXRQbGFuUmVxdWlyZXNSZXZh bGlkYXRpb24oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgYm9vbCBCdWls ZGluZ1BsYW5SZXF1aXJlc1NuYXBzaG90KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwog c3RhdGljIExpc3QgKlJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLAogCQkJCQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7Ci1zdGF0aWMg Ym9vbCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CitzdGF0 aWMgYm9vbCBQcmVwQW5kQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3Vy Y2UsIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApOwogc3RhdGljIENhY2hlZFBsYW4gKkJ1aWxk Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAkJ CQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYpOwogc3RhdGljIGJvb2wgY2hvb3NlX2N1c3RvbV9wbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsCkBAIC0xMDEsNiArMTAxLDggQEAgc3RhdGljIGJvb2wgY2hvb3NlX2N1c3Rv bV9wbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiBzdGF0aWMgZG91YmxlIGNhY2hl ZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpOwogc3Rh dGljIFF1ZXJ5ICpRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cyk7CiBzdGF0aWMg dm9pZCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7 CitzdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkKExpc3QgKnN0bXRfbGlz dCwgYm9vbCBhY3F1aXJlLAorCQkJCQkJCQkJCSBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVwKTsK IHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVyTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFj cXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkgKnBhcnNldHJlZSwg Ym9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29sIFNjYW5RdWVyeVdhbGtlcihOb2RlICpub2RlLCBi b29sICphY3F1aXJlKTsKQEAgLTEzNyw2ICsxMzksMjYgQEAgUmVzb3VyY2VPd25lckZvcmdldFBs YW5DYWNoZVJlZihSZXNvdXJjZU93bmVyIG93bmVyLCBDYWNoZWRQbGFuICpwbGFuKQogLyogR1VD IHBhcmFtZXRlciAqLwogaW50CQkJcGxhbl9jYWNoZV9tb2RlID0gUExBTl9DQUNIRV9NT0RFX0FV VE87CiAKKy8qCisgKiBMb2NrIGFjcXVpc2l0aW9uIHBvbGljeSBmb3IgZXhlY3V0aW9uIGxvY2tz LgorICoKKyAqIExPQ0tfQUxMIGFjcXVpcmVzIGxvY2tzIG9uIGFsbCByZWxhdGlvbnMgbWVudGlv bmVkIGluIHRoZSBwbGFuLAorICogcmVwcm9kdWNpbmcgdGhlIGJlaGF2aW9yIG9mIEFjcXVpcmVF eGVjdXRvckxvY2tzKCkuCisgKgorICogTE9DS19VTlBSVU5FRCByZXN0cmljdHMgbG9ja2luZyB0 byBvbmx5IHRoZSB1bnBydW5lZCByZWxhdGlvbnMuIFRoYXQKKyAqIGluY2x1ZGVzIHRob3NlIG1l bnRpb25lZCBpbiBQbGFubmVkU3RtdC51bnBydW5hYmxlUmVsaWRzIGFuZCB0aGUgbGVhZgorICog cGFydGl0aW9ucyByZW1haW5pbmcgYWZ0ZXIgcGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcuCisg Ki8KK3R5cGVkZWYgZW51bSBMb2NrUG9saWN5Cit7CisJTE9DS19BTEwsCisJTE9DS19VTlBSVU5F RCwKK30gTG9ja1BvbGljeTsKKworc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3NXaXRo UG9saWN5KExpc3QgKnN0bXRfbGlzdCwKKwkJCQkJCQkJCQkgICBMb2NrUG9saWN5IHBvbGljeSwg Ym9vbCBhY3F1aXJlLAorCQkJCQkJCQkJCSAgIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApOwor CiAvKgogICogSW5pdFBsYW5DYWNoZTogaW5pdGlhbGl6ZSBtb2R1bGUgZHVyaW5nIEluaXRQb3N0 Z3Jlcy4KICAqCkBAIC05MzgsNyArOTYwLDEyIEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogfQogCiAvKgotICogQ2hlY2tDYWNoZWRQbGFuOiBz ZWUgaWYgdGhlIENhY2hlZFBsYW5Tb3VyY2UncyBnZW5lcmljIHBsYW4gaXMgdmFsaWQuCisgKiBQ cmVwQW5kQ2hlY2tDYWNoZWRQbGFuOiBzZWUgaWYgdGhlIENhY2hlZFBsYW5Tb3VyY2UncyBnZW5l cmljIHBsYW4gaXMgdmFsaWQuCisgKgorICogSWYgJ2NwcmVwJyBpcyBub3QgTlVMTCwgRXhlY3V0 b3JQcmVwKCkgaXMgYXBwbGllZCB0byBlYWNoIFBsYW5uZWRTdG10IHRvCisgKiBjb21wdXRlIHRo ZSBzZXQgb2YgcGFydGl0aW9ucyB0aGF0IHN1cnZpdmUgaW5pdGlhbCBydW50aW1lIHBydW5pbmcg aW4gb3JkZXIKKyAqIHRvIG9ubHkgbG9jayB0aGVtLiAgVGhlIHJlc3VsdGluZyBFeGVjUHJlcCBz dHJ1Y3R1cmVzIGFyZSBzYXZlZCBpbiBjcHJlcCBmb3IKKyAqIGxhdGVyIHJldXNlIGJ5IEV4ZWN1 dG9yU3RhcnQoKS4KICAqCiAgKiBDYWxsZXIgbXVzdCBoYXZlIGFscmVhZHkgY2FsbGVkIFJldmFs aWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJpZnkgdGhhdCB0aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0 byBkYXRlLgpAQCAtOTQ3LDcgKzk3NCw3IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLAogICogKFdlIG11c3QgZG8gdGhpcyBmb3IgdGhlICJ0cnVl IiByZXN1bHQgdG8gYmUgcmFjZS1jb25kaXRpb24tZnJlZS4pCiAgKi8KIHN0YXRpYyBib29sCi1D aGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKK1ByZXBBbmRDaGVj a0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgQ2FjaGVkUGxhblByZXBE YXRhICpjcHJlcCkKIHsKIAlDYWNoZWRQbGFuICpwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CiAK QEAgLTk3NSwxMyArMTAwMiwxNSBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSkKIAkgKi8KIAlpZiAocGxhbi0+aXNfdmFsaWQpCiAJeworCQlMb2NrUG9saWN5 IHBvbGljeSA9ICFjcHJlcCA/IExPQ0tfQUxMIDogTE9DS19VTlBSVU5FRDsKKwogCQkvKgogCQkg KiBQbGFuIG11c3QgaGF2ZSBwb3NpdGl2ZSByZWZjb3VudCBiZWNhdXNlIGl0IGlzIHJlZmVyZW5j ZWQgYnkKIAkJICogcGxhbnNvdXJjZTsgc28gbm8gbmVlZCB0byBmZWFyIGl0IGRpc2FwcGVhcnMg dW5kZXIgdXMgaGVyZS4KIAkJICovCiAJCUFzc2VydChwbGFuLT5yZWZjb3VudCA+IDApOwogCi0J CUFjcXVpcmVFeGVjdXRvckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgdHJ1ZSk7CisJCUFjcXVpcmVF eGVjdXRvckxvY2tzV2l0aFBvbGljeShwbGFuLT5zdG10X2xpc3QsIHBvbGljeSwgdHJ1ZSwgY3By ZXApOwogCiAJCS8qCiAJCSAqIElmIHBsYW4gd2FzIHRyYW5zaWVudCwgY2hlY2sgdG8gc2VlIGlm IFRyYW5zYWN0aW9uWG1pbiBoYXMKQEAgLTEwMDMsNyArMTAzMiw3IEBAIENoZWNrQ2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCQl9CiAKIAkJLyogT29wcywgdGhlIHJh Y2UgY2FzZSBoYXBwZW5lZC4gIFJlbGVhc2UgdXNlbGVzcyBsb2Nrcy4gKi8KLQkJQWNxdWlyZUV4 ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBmYWxzZSk7CisJCUFjcXVpcmVFeGVjdXRvckxv Y2tzV2l0aFBvbGljeShwbGFuLT5zdG10X2xpc3QsIHBvbGljeSwgZmFsc2UsIGNwcmVwKTsKIAl9 CiAKIAkvKgpAQCAtMTI4Myw2ICsxMzEyLDEwIEBAIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxh biAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpCiAgKiBPbiByZXR1cm4sIHRoZSBwbGFuIGlz IHZhbGlkIGFuZCB3ZSBoYXZlIHN1ZmZpY2llbnQgbG9ja3MgdG8gYmVnaW4KICAqIGV4ZWN1dGlv bi4KICAqCisgKiBJZiAnY3ByZXAnIGlzIG5vdCBOVUxMIGFuZCBhIGdlbmVyaWMgcGxhbiBpcyBy ZXVzZWQsIHRoZSBmdW5jdGlvbiBwcmVwYXJlcworICogZWFjaCBQbGFubmVkU3RtdCB2aWEgRXhl Y3V0b3JQcmVwKCkgYW5kIHN0b3JlcyB0aGUgcmVzdWx0cyBpbgorICogY3ByZXAtPnByZXBfbGlz dC4gIFRoZXNlIGFyZSBpbnRlbmRlZCB0byBiZSBwYXNzZWQgbGF0ZXIgdG8gRXhlY3V0b3JTdGFy dCgpLgorICoKICAqIE9uIHJldHVybiwgdGhlIHJlZmNvdW50IG9mIHRoZSBwbGFuIGhhcyBiZWVu IGluY3JlbWVudGVkOyBhIGxhdGVyCiAgKiBSZWxlYXNlQ2FjaGVkUGxhbigpIGNhbGwgaXMgZXhw ZWN0ZWQuICBJZiAib3duZXIiIGlzIG5vdCBOVUxMIHRoZW4KICAqIHRoZSByZWZjb3VudCBoYXMg YmVlbiByZXBvcnRlZCB0byB0aGF0IFJlc291cmNlT3duZXIgKG5vdGUgdGhhdCB0aGlzCkBAIC0x MjkzLDcgKzEzMjYsOCBAQCBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wg aW5jbHVkZV9wbGFubmVyKQogICovCiBDYWNoZWRQbGFuICoKIEdldENhY2hlZFBsYW4oQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKLQkJCSAg UmVzb3VyY2VPd25lciBvd25lciwgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCisJCQkgIFJl c291cmNlT3duZXIgb3duZXIsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJICBDYWNo ZWRQbGFuUHJlcERhdGEgKmNwcmVwKQogewogCUNhY2hlZFBsYW4gKnBsYW4gPSBOVUxMOwogCUxp c3QJICAgKnFsaXN0OwpAQCAtMTMxNSw3ICsxMzQ5LDkgQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCiAJaWYg KCFjdXN0b21wbGFuKQogCXsKLQkJaWYgKENoZWNrQ2FjaGVkUGxhbihwbGFuc291cmNlKSkKKwkJ aWYgKGNwcmVwKQorCQkJY3ByZXAtPnBhcmFtcyA9IGJvdW5kUGFyYW1zOworCQlpZiAoUHJlcEFu ZENoZWNrQ2FjaGVkUGxhbihwbGFuc291cmNlLCBjcHJlcCkpCiAJCXsKIAkJCS8qIFdlIHdhbnQg YSBnZW5lcmljIHBsYW4sIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSB2YWxpZCBvbmUgKi8KIAkJCXBs YW4gPSBwbGFuc291cmNlLT5ncGxhbjsKQEAgLTE5MDIsNiArMTkzOCwzOCBAQCBRdWVyeUxpc3RH ZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cykKIAlyZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAqIEFj cXVpcmVFeGVjdXRvckxvY2tzV2l0aFBvbGljeQorICoJCUFjcXVpcmUgb3IgcmVsZWFzZSBleGVj dXRpb24gbG9ja3MgZm9yIGEgY2FjaGVkIHBsYW4gYWNjb3JkaW5nIHRvCisgKgkJdGhlIHNwZWNp ZmllZCBwb2xpY3kuCisgKgorICogTE9DS19BTEwgcmVwcm9kdWNlcyBBY3F1aXJlRXhlY3V0b3JM b2NrcygpLCBsb2NraW5nIGV2ZXJ5IHJlbGF0aW9uIGluCisgKiBlYWNoIFBsYW5uZWRTdG10J3Mg cnRhYmxlLiAgTE9DS19VTlBSVU5FRCByZXN0cmljdHMgbG9ja2luZyB0byB0aGUKKyAqIHVucHJ1 bmFibGUgcmVscyBhbmQgcGFydGl0aW9ucyB0aGF0IHN1cnZpdmUgaW5pdGlhbCBydW50aW1lIHBy dW5pbmcuCisgKgorICogV2hlbiBMT0NLX1VOUFJVTkVEIGlzIHVzZWQgb24gYWNxdWlyZSwgRXhl Y3V0b3JQcmVwKCkgaXMgaW52b2tlZCBmb3IKKyAqIGVhY2ggUGxhbm5lZFN0bXQgYW5kIHRoZSBy ZXN1bHRpbmcgRXhlY1ByZXAgcG9pbnRlcnMgYXJlIGFwcGVuZGVkIHRvCisgKiBjcHJlcC0+cHJl cF9saXN0IGluIGNwcmVwLT5jb250ZXh0LiAgT24gcmVsZWFzZSwgdGhlIHNhbWUgRXhlY1ByZXAK KyAqIGxpc3QgaXMgY29uc3VsdGVkIHRvIGRldGVybWluZSB3aGljaCByZWxhdGlvbnMgdG8gdW5s b2NrIGFuZCBpcyB0aGVuCisgKiBjbGVhbmVkIHVwIHdpdGggRXhlY1ByZXBDbGVhbnVwKCkuCisg Ki8KK3N0YXRpYyB2b2lkCitBY3F1aXJlRXhlY3V0b3JMb2Nrc1dpdGhQb2xpY3koTGlzdCAqc3Rt dF9saXN0LCBMb2NrUG9saWN5IHBvbGljeSwgYm9vbCBhY3F1aXJlLAorCQkJCQkJCSAgIENhY2hl ZFBsYW5QcmVwRGF0YSAqY3ByZXApCit7CisJc3dpdGNoIChwb2xpY3kpCisJeworCQljYXNlIExP Q0tfQUxMOgorCQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3Moc3RtdF9saXN0LCBhY3F1aXJlKTsKKwkJ CWJyZWFrOworCQljYXNlIExPQ0tfVU5QUlVORUQ6CisJCQlBY3F1aXJlRXhlY3V0b3JMb2Nrc1Vu cHJ1bmVkKHN0bXRfbGlzdCwgYWNxdWlyZSwgY3ByZXApOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6 CisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBMb2NrUG9saWN5Iik7CisJfQorfQorCiAvKgogICog QWNxdWlyZUV4ZWN1dG9yTG9ja3M6IGFjcXVpcmUgbG9ja3MgbmVlZGVkIGZvciBleGVjdXRpb24g b2YgYSBjYWNoZWQgcGxhbjsKICAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNl LgpAQCAtMTk1NCw2ICsyMDIyLDE1OCBAQCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10 X2xpc3QsIGJvb2wgYWNxdWlyZSkKIAl9CiB9CiAKKy8qCisgKiBMb2NrUmVsaWRzCisgKiAJCUFj cXVpcmUgb3IgcmVsZWFzZSBsb2NrcyBvbiB0aGUgc3BlY2lmaWVkIHJlbGlkcywgd2hpY2ggcmVm ZXJlbmNlCisgKiAJCWVudHJpZXMgaW4gdGhlIHByb3ZpZGVkIHJhbmdlIHRhYmxlLgorICoKKyAq IEhlbHBlciBmb3IgQWNxdWlyZUV4ZWN1dG9yTG9ja3NVbnBydW5lZCgpLgorICovCitzdGF0aWMg dm9pZAorTG9ja1JlbGlkcyhMaXN0ICpydGFibGUsIEJpdG1hcHNldCAqcmVsaWRzLCBib29sIGFj cXVpcmUpCit7CisJaW50CXJ0aW5kZXggPSAtMTsKKworCXdoaWxlICgocnRpbmRleCA9IGJtc19u ZXh0X21lbWJlcihyZWxpZHMsIHJ0aW5kZXgpKSA+PSAwKQorCXsKKwkJUmFuZ2VUYmxFbnRyeSAq cnRlID0gbGlzdF9udGhfbm9kZShSYW5nZVRibEVudHJ5LCBydGFibGUsIHJ0aW5kZXggLSAxKTsK KworCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAorCQkJICAgKHJ0ZS0+ cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYgT2lkSXNWYWxpZChydGUtPnJlbGlkKSkpOworCisJ CS8qCisJCSAqIEFjcXVpcmUgdGhlIGFwcHJvcHJpYXRlIHR5cGUgb2YgbG9jayBvbiBlYWNoIHJl bGF0aW9uIE9JRC4gTm90ZQorCQkgKiB0aGF0IHdlIGRvbid0IGFjdHVhbGx5IHRyeSB0byBvcGVu IHRoZSByZWwsIGFuZCBoZW5jZSB3aWxsIG5vdAorCQkgKiBmYWlsIGlmIGl0J3MgYmVlbiBkcm9w cGVkIGVudGlyZWx5IC0tLSB3ZSdsbCBqdXN0IHRyYW5zaWVudGx5CisJCSAqIGFjcXVpcmUgYSBu b24tY29uZmxpY3RpbmcgbG9jay4KKwkJICovCisJCWlmIChhY3F1aXJlKQorCQkJTG9ja1JlbGF0 aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQllbHNlCisJCQlVbmxvY2tS ZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwl9Cit9CisKKy8qCisg KiBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkCisgKgkJQWNxdWlyZSBvciByZWxlYXNlIGV4 ZWN1dGlvbiBsb2NrcyBmb3Igb25seSB1bnBydW5lZCByZWxhdGlvbnMKKyAqCQlyZWZlcmVuY2Vk IGJ5IHRoZSBnaXZlbiBQbGFubmVkU3RtdHMuCisgKgorICogT24gYWNxdWlyZSwgdGhpczoKKyAq CS0gbG9ja3MgdW5wcnVuYWJsZSByZWxzIGxpc3RlZCBpbiBQbGFubmVkU3RtdC51bnBydW5hYmxl UmVsaWRzCisgKgktIHJ1bnMgRXhlY3V0b3JQcmVwKCkgdG8gcGVyZm9ybSBpbml0aWFsIHJ1bnRp bWUgcHJ1bmluZworICoJLSBsb2NrcyB0aGUgc3Vydml2aW5nIHBhcnRpdGlvbnMgcmVwb3J0ZWQg aW4gdGhlIHByZXAgZXN0YXRlCisgKgktIGFwcGVuZHMgdGhlIEV4ZWNQcmVwIHBvaW50ZXIgZm9y IGVhY2ggUGxhbm5lZFN0bXQgdG8gY3ByZXAtPnByZXBfbGlzdAorICoKKyAqIE9uIHJlbGVhc2Us IGl0OgorICoJLSBsb29rcyB1cCB0aGUgRXhlY1ByZXAgb2JqZWN0IGZvciBlYWNoIFBsYW5uZWRT dG10IGZyb20gY3ByZXAtPnByZXBfbGlzdAorICoJICAod2hpY2ggbXVzdCBhbHJlYWR5IGJlIHBv cHVsYXRlZCkKKyAqCS0gdW5sb2NrcyB0aGUgc2FtZSByZWxhdGlvbnMgaWRlbnRpZmllZCBkdXJp bmcgYWNxdWlyZQorICoJLSBjYWxscyBFeGVjUHJlcENsZWFudXAoKSBvbiBlYWNoIEV4ZWNQcmVw CisgKgorICogcHJlcF9saXN0IGlzIGV4dGVuZGVkIGR1cmluZyBhY3F1aXJlIGFuZCBtdXN0IG1h dGNoIHN0bXRfbGlzdCBvbmUtdG8tb25lCisgKiB3aGVuIHJlbGVhc2luZyBsb2Nrcy4gIE1lbW9y eSBhbGxvY2F0aW9uIGZvciBFeGVjUHJlcCBoYXBwZW5zIGluCisgKiBjcHJlcC0+Y29udGV4dC4g IExvY2tzIGFyZSBhY3F1aXJlZCB1c2luZyBjcHJlcC0+b3duZXIuCisgKi8KKworc3RhdGljIHZv aWQKK0FjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoTGlzdCAqc3RtdF9saXN0LCBib29sIGFj cXVpcmUsCisJCQkJCQkJIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApCit7CisJTWVtb3J5Q29u dGV4dCBvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGNwcmVwLT5jb250ZXh0KTsK KwlMaXN0Q2VsbCAgICpsYzE7CisJTGlzdAkgICAqcHJlcF9saXN0OworCWludAkJCWk7CisKKwlB c3NlcnQoY3ByZXApOworCisJLyoKKwkgKiBXaGVuIHJlbGVhc2luZyBsb2NrcywgdXNlIHRoZSBF eGVjUHJlcCBsaXN0IChpZiBhbnkpIGNyZWF0ZWQgZHVyaW5nCisJICogYWNxdWlzaXRpb24gdG8g ZGV0ZXJtaW5lIHdoaWNoIHJlbGlkcyB0byB1bmxvY2suIFRoZSBsaXN0IG11c3QgbWF0Y2gKKwkg KiB0aGUgUGxhbm5lZFN0bXQgbGlzdCBvbmUtdG8tb25lLgorCSAqLworCXByZXBfbGlzdCA9IGNw cmVwLT5wcmVwX2xpc3Q7CisJQXNzZXJ0KGFjcXVpcmUgfHwgbGlzdF9sZW5ndGgocHJlcF9saXN0 KSA9PSBsaXN0X2xlbmd0aChzdG10X2xpc3QpKTsKKworCWkgPSAwOworCWZvcmVhY2gobGMxLCBz dG10X2xpc3QpCisJeworCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQ bGFubmVkU3RtdCwgbGMxKTsKKwkJRXhlY1ByZXAgKnByZXA7CisKKwkJaWYgKHBsYW5uZWRzdG10 LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKKwkJeworCQkJLyogU2FtZSBhcyBBY3F1aXJl RXhlY3V0b3JMb2NrcygpLiAqLworCQkJUXVlcnkJICAgKnF1ZXJ5ID0gVXRpbGl0eUNvbnRhaW5z UXVlcnkocGxhbm5lZHN0bXQtPnV0aWxpdHlTdG10KTsKKworCQkJaWYgKHF1ZXJ5KQorCQkJCVNj YW5RdWVyeUZvckxvY2tzKHF1ZXJ5LCBhY3F1aXJlKTsKKworCQkJLyogS2VlcCB0aGUgbGlzdCBv bmUtdG8tb25lIHdpdGggc3RtdF9saXN0LiAqLworCQkJaWYgKGFjcXVpcmUpCisJCQkJY3ByZXAt PnByZXBfbGlzdCA9IGxhcHBlbmQoY3ByZXAtPnByZXBfbGlzdCwgTlVMTCk7CisJCQljb250aW51 ZTsKKwkJfQorCisJCS8qCisJCSAqIExvY2sgdGFibGVzIG1lbnRpb25lZCBpbiB0aGUgb3JpZ2lu YWwgcXVlcnkgYW5kIG90aGVyIHVucHJ1bmFibGUKKwkJICogcmVsYXRpb25zIHRoYXQgd2VyZSBh ZGRlZCB0byB0aGUgcGxhbiB2aWEgaW5oZXJpdGFuY2UgZXhwYW5zaW9uLgorCQkgKi8KKwkJTG9j a1JlbGlkcyhwbGFubmVkc3RtdC0+cnRhYmxlLCBwbGFubmVkc3RtdC0+dW5wcnVuYWJsZVJlbGlk cywgYWNxdWlyZSk7CisKKwkJLyogTG9jayBwYXJ0aXRpb25zIHN1cnZpdmluZyBydW50aW1lIGlu aXRpYWwgcHJ1bmluZy4gKi8KKwkJaWYgKGFjcXVpcmUpCisJCXsKKwkJCXByZXAgPSBFeGVjdXRv clByZXAocGxhbm5lZHN0bXQsIGNwcmVwLT5wYXJhbXMsIGNwcmVwLT5vd25lciwgdHJ1ZSwKKwkJ CQkJCQkJY3ByZXAtPmVmbGFncyk7CisJCQlBc3NlcnQocHJlcCB8fCBwbGFubmVkc3RtdC0+cGFy dFBydW5lSW5mb3MgPT0gTlVMTCk7CisJCQljcHJlcC0+cHJlcF9saXN0ID0gbGFwcGVuZChjcHJl cC0+cHJlcF9saXN0LCBwcmVwKTsKKwkJfQorCQllbHNlCisJCQlwcmVwID0gbGlzdF9udGgocHJl cF9saXN0LCBpKyspOworCisJCUFzc2VydChwcmVwID09IE5VTEwgfHwgcHJlcC0+cHJlcF9lc3Rh dGUpOworCQlpZiAocHJlcCkKKwkJeworCQkJRVN0YXRlICpwcmVwX2VzdGF0ZSA9IHByZXAtPnBy ZXBfZXN0YXRlOworCisJCQkvKgorCQkJICogZXNfdW5wcnVuZWRfcmVsaWRzIGluY2x1ZGVzIHBs YW5uZWRzdG10LT51bnBydW5hYmxlUmVsaWRzLAorCQkJICogd2hpY2ggd2UndmUgYWxyZWFkeSBs b2NrZWQuIEZpbHRlciB0aGVtIG91dCB0byBhdm9pZCBkb3VibGUtbG9ja2luZy4KKwkJCSAqLwor CQkJQml0bWFwc2V0ICpsb2NrX3JlbGlkcyA9IGJtc19kaWZmZXJlbmNlKHByZXBfZXN0YXRlLT5l c191bnBydW5lZF9yZWxpZHMsCisJCQkJCQkJCQkJCQkJcGxhbm5lZHN0bXQtPnVucHJ1bmFibGVS ZWxpZHMpOworCisJCQkvKgorCQkJICogZmlyc3RSZXN1bHRSZWxzIG1heSBjb250YWluIHBydW5l ZCBwYXJ0aXRpb25zIHRoYXQgbXVzdCBzdGlsbCBiZQorCQkJICogbG9ja2VkIHRvIHNhdGlzZnkg ZXhlY3V0b3IgYXNzdW1wdGlvbnMgKHNlZSBjb21tZW50cyBpbgorCQkJICogRXhlY0luaXRNb2Rp ZnlUYWJsZSgpLiBFbnN1cmUgdGhleeKAmXJlIGluY2x1ZGVkIGhlcmUuCisJCQkgKi8KKwkJCWlm IChwbGFubmVkc3RtdC0+cmVzdWx0UmVsYXRpb25zKQorCQkJeworCQkJCUxpc3RDZWxsICpsYzI7 CisKKwkJCQlmb3JlYWNoKGxjMiwgcGxhbm5lZHN0bXQtPmZpcnN0UmVzdWx0UmVscykKKwkJCQl7 CisJCQkJCUluZGV4ICAgICAgIGZpcnN0UmVzdWx0UmVsID0gbGZpcnN0X2ludChsYzIpOworCisJ CQkJCWlmICghYm1zX2lzX21lbWJlcihmaXJzdFJlc3VsdFJlbCwgbG9ja19yZWxpZHMpKQorCQkJ CQkJbG9ja19yZWxpZHMgPSBibXNfYWRkX21lbWJlcihsb2NrX3JlbGlkcywgZmlyc3RSZXN1bHRS ZWwpOworCQkJCX0KKwkJCX0KKworCQkJTG9ja1JlbGlkcyhwbGFubmVkc3RtdC0+cnRhYmxlLCBs b2NrX3JlbGlkcywgYWNxdWlyZSk7CisJCQlibXNfZnJlZShsb2NrX3JlbGlkcyk7CisJCX0KKwor CQkvKiBDbGVhbiB1cCBwcmVwIGlmIHJlbGVhc2luZyBsb2Nrcy4gKi8KKwkJaWYgKCFhY3F1aXJl KQorCQkJRXhlY1ByZXBDbGVhbnVwKHByZXApOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjb250ZXh0KTsKK30KKwogLyoKICAqIEFjcXVpcmVQbGFubmVyTG9ja3M6IGFjcXVpcmUg bG9ja3MgbmVlZGVkIGZvciBwbGFubmluZyBvZiBhIHF1ZXJ5dHJlZSBsaXN0OwogICogb3IgcmVs ZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMgZmFsc2UuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDMw ZDg4OWI1NGM1Li42ZmI4NmRjMDVmNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTE0MSw2ICsx NDEsOSBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVyR2xvYmFsCiAJLyogImZsYXQiIGxpc3Qgb2Yg aW50ZWdlciBSVCBpbmRleGVzICovCiAJTGlzdAkgICAqcmVzdWx0UmVsYXRpb25zOwogCisJLyog ImZsYXQiIGxpc3Qgb2YgaW50ZWdlciBSVCBpbmRleGVzIChvbmUgcGVyIE1vZGlmeVRhYmxlIG5v ZGUpICovCisJTGlzdAkgICAqZmlyc3RSZXN1bHRSZWxzOworCiAJLyogImZsYXQiIGxpc3Qgb2Yg QXBwZW5kUmVsSW5mb3MgKi8KIAlMaXN0CSAgICphcHBlbmRSZWxhdGlvbnM7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmgKaW5kZXggYzQzOTNhOTQzMjEuLmViMjExZjFiYTU2IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaApAQCAtMTIzLDYgKzEyMywxNiBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogCS8q IGludGVnZXIgbGlzdCBvZiBSVCBpbmRleGVzLCBvciBOSUwgKi8KIAlMaXN0CSAgICpyZXN1bHRS ZWxhdGlvbnM7CiAKKwkvKgorCSAqIHJ0YWJsZSBpbmRleGVzIG9mIGZpcnN0IHRhcmdldCByZWxh dGlvbiBpbiBlYWNoIE1vZGlmeVRhYmxlIG5vZGUgaW4gdGhlCisJICogcGxhbiBmb3IgSU5TRVJU L1VQREFURS9ERUxFVEUvTUVSR0UuICBOSUwgaWYgcmVzdWx0UmVsYXRpb25zIGlzIE5JTC4KKwkg KgorCSAqIFRoZXNlIGFyZSB1c2VkIGJ5IEFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoKSB0 byBlbnN1cmUgdGhhdCB0aGUKKwkgKiBmaXJzdCByZXN1bHQgcmVsIGZvciBlYWNoIE1vZGlmeVRh YmxlIHJlbWFpbnMgbG9ja2VkIGV2ZW4gaWYgcHJ1bmVkOworCSAqIHNlZSBFeGVjSW5pdE1vZGlm eVRhYmxlKCkgZm9yIHRoZSBleGVjdXRvciBzaWRlIGFzc3VtcHRpb25zLgorCSAqLworCUxpc3QJ ICAgKmZpcnN0UmVzdWx0UmVsczsKKwogCS8qIGxpc3Qgb2YgQXBwZW5kUmVsSW5mbyBub2RlcyAq LwogCUxpc3QJICAgKmFwcGVuZFJlbGF0aW9uczsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvcGxhbmNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAppbmRleCBh ODJiNjZkNGJjMi4uYzdiOGVjNGJlMzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Bs YW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0xOTcsNiAr MTk3LDI3IEBAIHR5cGVkZWYgc3RydWN0IENhY2hlZEV4cHJlc3Npb24KIH0gQ2FjaGVkRXhwcmVz c2lvbjsKIAogCisvKgorICogQ2FjaGVkUGxhblByZXBEYXRhCisgKiAgICAgIENhcnJpZXMgRXhl Y3V0b3JQcmVwIHJlc3VsdHMgZm9yIGVhY2ggUGxhbm5lZFN0bXQgaW4gYSBDYWNoZWRQbGFuLAor ICogICAgICBhbG9uZyB3aXRoIGNvbnRleHQgYW5kIG93bmVyIGluZm9ybWF0aW9uIG5lZWRlZCB0 byBhbGxvY2F0ZSB0aGVtLgorICoKKyAqIHByZXBfbGlzdCBpcyBpbmRleGVkIG9uZS10by1vbmUg d2l0aCBDYWNoZWRQbGFuLT5zdG10X2xpc3QsIGFuZCBpcworICogcG9wdWxhdGVkIHdoZW4gR2V0 Q2FjaGVkUGxhbigpIHByZXBhcmVzIGEgcmV1c2VkIGdlbmVyaWMgcGxhbi4gIFRoZQorICogc2Ft ZSBsaXN0IGlzIGxhdGVyIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIHJlbGF0aW9ucyB0byB1bmxv Y2sgd2hlbgorICogcmVsZWFzaW5nIGV4ZWN1dGlvbiBsb2Nrcy4KKyAqCisgKiBFeGVjdXRvclBy ZXAgc3RhdGUgaXMgYWxsb2NhdGVkIGluICdjb250ZXh0JyBhbmQgb3duZWQgYnkgJ293bmVyJy4K KyAqLwordHlwZWRlZiBzdHJ1Y3QgQ2FjaGVkUGxhblByZXBEYXRhCit7CisJTGlzdCAgICpwcmVw X2xpc3Q7CQkvKiBvbmUgRXhlY1ByZXAgcGVyIFBsYW5uZWRTdG10LCBvciBOVUxMICovCisJUGFy YW1MaXN0SW5mbyBwYXJhbXM7CS8qIHBhcmFtcyB2aXNpYmxlIHRvIEV4ZWN1dG9yUHJlcCAqLwor CU1lbW9yeUNvbnRleHQgY29udGV4dDsJLyogd2hlcmUgdG8gYWxsb2NhdGUgRXhlY1ByZXAgb2Jq ZWN0cyAqLworCVJlc291cmNlT3duZXIgb3duZXI7CS8qIFJlc291cmNlT3duZXIgZm9yIEV4ZWN1 dG9yUHJlcCBzdGF0ZSAqLworCWludAkJZWZsYWdzOwkJCS8qIGV4ZWN1dG9yIGZsYWdzIHRvIHBh c3MgdG8gRXhlY3V0b3JQcmVwICovCit9IENhY2hlZFBsYW5QcmVwRGF0YTsKKwogZXh0ZXJuIHZv aWQgSW5pdFBsYW5DYWNoZSh2b2lkKTsKIGV4dGVybiB2b2lkIFJlc2V0UGxhbkNhY2hlKHZvaWQp OwogCkBAIC0yNDAsNyArMjYxLDggQEAgZXh0ZXJuIExpc3QgKkNhY2hlZFBsYW5HZXRUYXJnZXRM aXN0KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiBleHRlcm4gQ2FjaGVkUGxhbiAqR2V0 Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgUGFyYW1M aXN0SW5mbyBib3VuZFBhcmFtcywKIAkJCQkJCQkJIFJlc291cmNlT3duZXIgb3duZXIsCi0JCQkJ CQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisJCQkJCQkJCSBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudiwKKwkJCQkJCQkJIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApOwogZXh0 ZXJuIHZvaWQgUmVsZWFzZUNhY2hlZFBsYW4oQ2FjaGVkUGxhbiAqcGxhbiwgUmVzb3VyY2VPd25l ciBvd25lcik7CiAKIGV4dGVybiBib29sIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0eUNo ZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCi0tIAoyLjQ3LjMKCg== --000000000000f35fa8064401accf Content-Type: application/octet-stream; name="v3-0005-Add-test-exercising-prep-cleanup-on-cached-plan-i.patch" Content-Disposition: attachment; filename="v3-0005-Add-test-exercising-prep-cleanup-on-cached-plan-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi72au0j1 RnJvbSAwNTJhYjhmZTM4NDkzY2ExMDZkNzQ5ZjRlMjQyNmE4NmQwMjY3ZDU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjAgTm92IDIwMjUgMTU6MzU6NDcgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz IDUvNl0gQWRkIHRlc3QgZXhlcmNpc2luZyBwcmVwIGNsZWFudXAgb24gY2FjaGVkLXBsYW4KIGlu dmFsaWRhdGlvbgoKQWRkIGEgcmVncmVzc2lvbiB0ZXN0IHRoYXQgY2F1c2VzIGEgZ2VuZXJpYyBw bGFuIHRvIGJlY29tZSBpbnZhbGlkCndoaWxlIHBydW5pbmctYXdhcmUgc2V0dXAgaXMgcnVubmlu Zy4gVGhlIHBydW5pbmcgZXhwcmVzc2lvbiBjYWxscyBhCmZ1bmN0aW9uIHRoYXQgY2FuIHBlcmZv cm0gRERMIG9uIGEgcGFydGl0aW9uLCBtYWtpbmcgdGhlIHBsYW4gc3RhbGUKZHVyaW5nIHJldXNl LgoKVGhlIHRlc3QncyBwdXJwb3NlIGlzIHRvIGRyaXZlIGV4ZWN1dGlvbiB0aHJvdWdoIHRoZSBp bnZhbGlkYXRpb24KcGF0aCB0aGF0IGRpc2NhcmRzIGFueSBFeGVjdXRvclByZXAgc3RhdGUgY3Jl YXRlZCBiZWZvcmUgdGhlIHBsYW4gd2FzCmZvdW5kIGludmFsaWQsIHByb3ZpZGluZyBjb3ZlcmFn ZSBmb3IgdGhhdCBjbGVhbnVwIGxvZ2ljLgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Bs YW5jYWNoZS5jICAgICB8IDM4ICsrKysrKysrKysrKystLQogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wbGFuY2FjaGUub3V0IHwgNjEgKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbCAgICAgIHwgNTAgKysrKysrKysrKysrKysrKysr KysKIDMgZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCBjMWNmZDQ3NDIyYy4uYTlhNGUxMWQx YTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC0xMDMsNiArMTAzLDcgQEAg c3RhdGljIFF1ZXJ5ICpRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cyk7CiBzdGF0 aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWly ZSk7CiBzdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkKExpc3QgKnN0bXRf bGlzdCwgYm9vbCBhY3F1aXJlLAogCQkJCQkJCQkJCSBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVw KTsKK3N0YXRpYyB2b2lkIENhY2hlZFBsYW5QcmVwQ2xlYW51cChDYWNoZWRQbGFuUHJlcERhdGEg KmNwcmVwKTsKIHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVyTG9ja3MoTGlzdCAqc3RtdF9saXN0 LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkgKnBh cnNldHJlZSwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29sIFNjYW5RdWVyeVdhbGtlcihOb2Rl ICpub2RlLCBib29sICphY3F1aXJlKTsKQEAgLTEwMzMsNiArMTAzNCw5IEBAIFByZXBBbmRDaGVj a0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgQ2FjaGVkUGxhblByZXBE YXRhICpjcHJlcCkKIAogCQkvKiBPb3BzLCB0aGUgcmFjZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFz ZSB1c2VsZXNzIGxvY2tzLiAqLwogCQlBY3F1aXJlRXhlY3V0b3JMb2Nrc1dpdGhQb2xpY3kocGxh bi0+c3RtdF9saXN0LCBwb2xpY3ksIGZhbHNlLCBjcHJlcCk7CisKKwkJLyogQWxzbyBjbGVhbiB1 cCBFeGVjdXRvclByZXAoKSBzdGF0ZSwgaWYgbmVjZXNzYXJ5LiAqLworCQlDYWNoZWRQbGFuUHJl cENsZWFudXAoY3ByZXApOwogCX0KIAogCS8qCkBAIC0yMDY5LDcgKzIwNzMsNiBAQCBMb2NrUmVs aWRzKExpc3QgKnJ0YWJsZSwgQml0bWFwc2V0ICpyZWxpZHMsIGJvb2wgYWNxdWlyZSkKICAqCS0g bG9va3MgdXAgdGhlIEV4ZWNQcmVwIG9iamVjdCBmb3IgZWFjaCBQbGFubmVkU3RtdCBmcm9tIGNw cmVwLT5wcmVwX2xpc3QKICAqCSAgKHdoaWNoIG11c3QgYWxyZWFkeSBiZSBwb3B1bGF0ZWQpCiAg KgktIHVubG9ja3MgdGhlIHNhbWUgcmVsYXRpb25zIGlkZW50aWZpZWQgZHVyaW5nIGFjcXVpcmUK LSAqCS0gY2FsbHMgRXhlY1ByZXBDbGVhbnVwKCkgb24gZWFjaCBFeGVjUHJlcAogICoKICAqIHBy ZXBfbGlzdCBpcyBleHRlbmRlZCBkdXJpbmcgYWNxdWlyZSBhbmQgbXVzdCBtYXRjaCBzdG10X2xp c3Qgb25lLXRvLW9uZQogICogd2hlbiByZWxlYXNpbmcgbG9ja3MuICBNZW1vcnkgYWxsb2NhdGlv biBmb3IgRXhlY1ByZXAgaGFwcGVucyBpbgpAQCAtMjE2NSwxNSArMjE2OCw0MCBAQCBBY3F1aXJl RXhlY3V0b3JMb2Nrc1VucHJ1bmVkKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlLAogCQkJ TG9ja1JlbGlkcyhwbGFubmVkc3RtdC0+cnRhYmxlLCBsb2NrX3JlbGlkcywgYWNxdWlyZSk7CiAJ CQlibXNfZnJlZShsb2NrX3JlbGlkcyk7CiAJCX0KLQotCQkvKiBDbGVhbiB1cCBwcmVwIGlmIHJl bGVhc2luZyBsb2Nrcy4gKi8KLQkJaWYgKCFhY3F1aXJlKQotCQkJRXhlY1ByZXBDbGVhbnVwKHBy ZXApOwogCX0KIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KIAorLyoK KyAqIENhY2hlZFBsYW5QcmVwQ2xlYW51cAorICoJCUNsZWFuIHVwIEV4ZWNQcmVwIHN0YXRlIGJ1 aWx0IGZvciBhIGdlbmVyaWMgcGxhbi4KKyAqCisgKiBUaGlzIGlzIHVzZWQgaW4gdGhlIGNvcm5l ciBjYXNlIHdoZXJlIFByZXBBbmRDaGVja0NhY2hlZFBsYW4oKSBkaXNjb3ZlcnMKKyAqIHRoYXQg YSBDYWNoZWRQbGFuIGhhcyBiZWNvbWUgaW52YWxpZCBhZnRlciBBY3F1aXJlRXhlY3V0b3JMb2Nr c1VucHJ1bmVkKCkKKyAqIGhhcyBhbHJlYWR5IHJ1bi4gIEluIHRoYXQgY2FzZSB3ZSBtdXN0IGJv dGggcmVsZWFzZSB0aGUgZXhlY3V0aW9uIGxvY2tzCisgKiBhbmQgZGlzcG9zZSBvZiB0aGUgRXhl Y1ByZXAgbGlzdCBzdG9yZWQgaW4gQ2FjaGVkUGxhblByZXBEYXRhLCBzaW5jZSB0aGUKKyAqIGV4 ZWN1dG9yIHdpbGwgbmV2ZXIgc2VlIG9yIGNsZWFuIGl0IHVwLgorICovCitzdGF0aWMgdm9pZAor Q2FjaGVkUGxhblByZXBDbGVhbnVwKENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApCit7CisJTGlz dENlbGwgICAqbGM7CisKKwlpZiAoY3ByZXAgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJZm9yZWFj aChsYywgY3ByZXAtPnByZXBfbGlzdCkKKwl7CisJCUV4ZWNQcmVwICpwcmVwID0gKEV4ZWNQcmVw ICopIGxmaXJzdChsYyk7CisKKwkJRXhlY1ByZXBDbGVhbnVwKHByZXApOworCX0KKworCWxpc3Rf ZnJlZShjcHJlcC0+cHJlcF9saXN0KTsKKwljcHJlcC0+cHJlcF9saXN0ID0gTklMOworfQorCiAv KgogICogQWNxdWlyZVBsYW5uZXJMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIHBsYW5u aW5nIG9mIGEgcXVlcnl0cmVlIGxpc3Q7CiAgKiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBp cyBmYWxzZS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hl Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dAppbmRleCA0ZTU5 MTg4MTk2Yy4uMjZjNGM1ZTEwZmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcGxhbmNhY2hlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNo ZS5vdXQKQEAgLTM5OCwzICszOTgsNjQgQEAgc2VsZWN0IG5hbWUsIGdlbmVyaWNfcGxhbnMsIGN1 c3RvbV9wbGFucyBmcm9tIHBnX3ByZXBhcmVkX3N0YXRlbWVudHMKICgxIHJvdykKIAogZHJvcCB0 YWJsZSB0ZXN0X21vZGU7CistLSBUZXN0IGludmFsaWRhdGlvbiBvZiBhIGdlbmVyaWMgcGxhbiBk dXJpbmcgcHJ1bmluZy1hd2FyZSBsb2NrIHNldHVwLgorLS0gVGhlIHBydW5pbmcgZXhwcmVzc2lv biB1c2VzIGEgc3RhYmxlIFNRTCBmdW5jdGlvbiB0aGF0IGNhbGxzIGEgdm9sYXRpbGUKKy0tIHBs cGdzcWwgZnVuY3Rpb24uICBUaGF0IGZ1bmN0aW9uIHBlcmZvcm1zIERETCBvbiBhIHBhcnRpdGlv biB3aGVuIGEKKy0tIHNlcGFyYXRlICJzaWduYWwiIHRhYmxlIHNheXMgdG8gZG8gc28uICBUaGUg c2Vjb25kIEVYRUNVVEUgc2hvdWxkCistLSByZXBsYW4gY2xlYW5seSBhZnRlciB0aGUgRERMLgor c2V0IHBsYW5fY2FjaGVfbW9kZSB0byBmb3JjZV9nZW5lcmljX3BsYW47CitjcmVhdGUgdGFibGUg aW52YWxfZHVyaW5nX3BydW5pbmdfcCAoYSBpbnQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2Ny ZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMSBwYXJ0aXRpb24gb2YgaW52YWxfZHVy aW5nX3BydW5pbmdfcCBmb3IgdmFsdWVzIGluICgxKTsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJp bmdfcHJ1bmluZ19wMiBwYXJ0aXRpb24gb2YgaW52YWxfZHVyaW5nX3BydW5pbmdfcCBmb3IgdmFs dWVzIGluICgyKTsKK2luc2VydCBpbnRvIGludmFsX2R1cmluZ19wcnVuaW5nX3AgdmFsdWVzICgx KSwgKDIpOworY3JlYXRlIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbCAoY3JlYXRl X2lkeCBib29sIG5vdCBudWxsKTsKK2luc2VydCBpbnRvIGludmFsX2R1cmluZ19wcnVuaW5nX3Np Z25hbCB2YWx1ZXMgKGZhbHNlKTsKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIGludmFsaWRh dGVfcGxhbmNhY2hlX2Z1bmMoKSByZXR1cm5zIGludAorYXMgJCQKK2RlY2xhcmUKKwljcmVhdGVf aW5kZXggYm9vbDsKK2JlZ2luCisJLS0gUGVyZm9ybSBEREwgb24gYSBwYXJ0aXRpb24gaWYgYXNr ZWQgdG8KKyAgICBzZWxlY3QgY3JlYXRlX2lkeCBpbnRvIGNyZWF0ZV9pbmRleCBmcm9tIGludmFs X2R1cmluZ19wcnVuaW5nX3NpZ25hbCBmb3IgdXBkYXRlOworICAgIGlmIGNyZWF0ZV9pbmRleCA9 IHRydWUgdGhlbgorCQlyYWlzZSBub3RpY2UgJ2NyZWF0aW5nIGluZGV4IG9uIHBhcnRpdGlvbiBp bnZhbF9kdXJpbmdfcHJ1bmluZ19wMSc7CisgICAgICAgIGNyZWF0ZSBpbmRleCBvbiBpbnZhbF9k dXJpbmdfcHJ1bmluZ19wMSAoYSk7CisJCXVwZGF0ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWdu YWwgc2V0IGNyZWF0ZV9pZHggPSBmYWxzZTsKKyAgICBlbmQgaWY7CisJLS0gcHJ1bmluZyBwYXJh bWV0ZXIKKyAgICByZXR1cm4gMTsKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWwgdm9sYXRpbGU7 CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBzdGFibGVfcHJ1bmluZ192YWwoKSByZXR1cm5z IGludCBhcyAkJAorCXNlbGVjdCBpbnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jKCk7CiskJCBsYW5n dWFnZSBzcWwgc3RhYmxlOworcHJlcGFyZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xIGFzIHNlbGVj dCAqIGZyb20gaW52YWxfZHVyaW5nX3BydW5pbmdfcCB3aGVyZSBhID0gc3RhYmxlX3BydW5pbmdf dmFsKCk7CistLSBCdWlsZCBhIGdlbmVyaWMgcGxhbiBhbmQgcnVuIHBydW5pbmcgb25jZSwgYnV0 IGRvbid0IHNldCB0aGUgc2lnbmFsCistLSBmb3IgaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygp IHRvIHBlcmZvcm0gdGhlIERETC4KK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikgZXhlY3V0 ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBBcHBlbmQKKyAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEKKyAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuaW52YWxfZHVyaW5nX3BydW5pbmdfcDEgaW52YWxfZHVyaW5nX3BydW5pbmdf cF8xCisgICAgICAgICBPdXRwdXQ6IGludmFsX2R1cmluZ19wcnVuaW5nX3BfMS5hCisgICAgICAg ICBGaWx0ZXI6IChpbnZhbF9kdXJpbmdfcHJ1bmluZ19wXzEuYSA9IHN0YWJsZV9wcnVuaW5nX3Zh bCgpKQorKDUgcm93cykKKworLS0gUmV1c2UgdGhlIGdlbmVyaWMgcGxhbi4gIE1ha2UgaW52YWxp ZGF0ZV9wbGFuY2FjaGVfZnVuYygpIHBlcmZvcm0gRERMCistLSBkdXJpbmcgdGhpcyBleGVjdXRp b24sIHdoaWNoIHNob3VsZCBmb3JjZSByZXBsYW5uaW5nIHdpdGhvdXQgZXJyb3JzLgordXBkYXRl IGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbCBzZXQgY3JlYXRlX2lkeCA9IHRydWU7CitleHBs YWluICh2ZXJib3NlLCBjb3N0cyBvZmYpIGV4ZWN1dGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcTsK K05PVElDRTogIGNyZWF0aW5nIGluZGV4IG9uIHBhcnRpdGlvbiBpbnZhbF9kdXJpbmdfcHJ1bmlu Z19wMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAg IFN1YnBsYW5zIFJlbW92ZWQ6IDEKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaW52YWxfZHVy aW5nX3BydW5pbmdfcDEgaW52YWxfZHVyaW5nX3BydW5pbmdfcF8xCisgICAgICAgICBPdXRwdXQ6 IGludmFsX2R1cmluZ19wcnVuaW5nX3BfMS5hCisgICAgICAgICBGaWx0ZXI6IChpbnZhbF9kdXJp bmdfcHJ1bmluZ19wXzEuYSA9IHN0YWJsZV9wcnVuaW5nX3ZhbCgpKQorKDUgcm93cykKKworZHJv cCB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wLCBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWdu YWw7Citkcm9wIGZ1bmN0aW9uIGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMsIHN0YWJsZV9wcnVu aW5nX3ZhbDsKK3Jlc2V0IHBsYW5fY2FjaGVfbW9kZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BsYW5jYWNoZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wbGFuY2FjaGUu c3FsCmluZGV4IDRiMmYxMWRjYzY0Li5jYzdlYjRkYTRkMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wbGFu Y2FjaGUuc3FsCkBAIC0yMjMsMyArMjIzLDUzIEBAIHNlbGVjdCBuYW1lLCBnZW5lcmljX3BsYW5z LCBjdXN0b21fcGxhbnMgZnJvbSBwZ19wcmVwYXJlZF9zdGF0ZW1lbnRzCiAgIHdoZXJlICBuYW1l ID0gJ3Rlc3RfbW9kZV9wcCc7CiAKIGRyb3AgdGFibGUgdGVzdF9tb2RlOworCistLSBUZXN0IGlu dmFsaWRhdGlvbiBvZiBhIGdlbmVyaWMgcGxhbiBkdXJpbmcgcHJ1bmluZy1hd2FyZSBsb2NrIHNl dHVwLgorLS0gVGhlIHBydW5pbmcgZXhwcmVzc2lvbiB1c2VzIGEgc3RhYmxlIFNRTCBmdW5jdGlv biB0aGF0IGNhbGxzIGEgdm9sYXRpbGUKKy0tIHBscGdzcWwgZnVuY3Rpb24uICBUaGF0IGZ1bmN0 aW9uIHBlcmZvcm1zIERETCBvbiBhIHBhcnRpdGlvbiB3aGVuIGEKKy0tIHNlcGFyYXRlICJzaWdu YWwiIHRhYmxlIHNheXMgdG8gZG8gc28uICBUaGUgc2Vjb25kIEVYRUNVVEUgc2hvdWxkCistLSBy ZXBsYW4gY2xlYW5seSBhZnRlciB0aGUgRERMLgorc2V0IHBsYW5fY2FjaGVfbW9kZSB0byBmb3Jj ZV9nZW5lcmljX3BsYW47CitjcmVhdGUgdGFibGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcCAoYSBp bnQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1 bmluZ19wMSBwYXJ0aXRpb24gb2YgaW52YWxfZHVyaW5nX3BydW5pbmdfcCBmb3IgdmFsdWVzIGlu ICgxKTsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMiBwYXJ0aXRpb24gb2Yg aW52YWxfZHVyaW5nX3BydW5pbmdfcCBmb3IgdmFsdWVzIGluICgyKTsKK2luc2VydCBpbnRvIGlu dmFsX2R1cmluZ19wcnVuaW5nX3AgdmFsdWVzICgxKSwgKDIpOworCitjcmVhdGUgdGFibGUgaW52 YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIChjcmVhdGVfaWR4IGJvb2wgbm90IG51bGwpOworaW5z ZXJ0IGludG8gaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIHZhbHVlcyAoZmFsc2UpOworY3Jl YXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygpIHJldHVy bnMgaW50CithcyAkJAorZGVjbGFyZQorCWNyZWF0ZV9pbmRleCBib29sOworYmVnaW4KKwktLSBQ ZXJmb3JtIERETCBvbiBhIHBhcnRpdGlvbiBpZiBhc2tlZCB0bworICAgIHNlbGVjdCBjcmVhdGVf aWR4IGludG8gY3JlYXRlX2luZGV4IGZyb20gaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIGZv ciB1cGRhdGU7CisgICAgaWYgY3JlYXRlX2luZGV4ID0gdHJ1ZSB0aGVuCisJCXJhaXNlIG5vdGlj ZSAnY3JlYXRpbmcgaW5kZXggb24gcGFydGl0aW9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxJzsK KyAgICAgICAgY3JlYXRlIGluZGV4IG9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxIChhKTsKKwkJ dXBkYXRlIGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbCBzZXQgY3JlYXRlX2lkeCA9IGZhbHNl OworICAgIGVuZCBpZjsKKwktLSBwcnVuaW5nIHBhcmFtZXRlcgorICAgIHJldHVybiAxOworZW5k OworJCQgbGFuZ3VhZ2UgcGxwZ3NxbCB2b2xhdGlsZTsKKworY3JlYXRlIG9yIHJlcGxhY2UgZnVu Y3Rpb24gc3RhYmxlX3BydW5pbmdfdmFsKCkgcmV0dXJucyBpbnQgYXMgJCQKKwlzZWxlY3QgaW52 YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygpOworJCQgbGFuZ3VhZ2Ugc3FsIHN0YWJsZTsKKworcHJl cGFyZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xIGFzIHNlbGVjdCAqIGZyb20gaW52YWxfZHVyaW5n X3BydW5pbmdfcCB3aGVyZSBhID0gc3RhYmxlX3BydW5pbmdfdmFsKCk7CisKKy0tIEJ1aWxkIGEg Z2VuZXJpYyBwbGFuIGFuZCBydW4gcHJ1bmluZyBvbmNlLCBidXQgZG9uJ3Qgc2V0IHRoZSBzaWdu YWwKKy0tIGZvciBpbnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jKCkgdG8gcGVyZm9ybSB0aGUgRERM LgorZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKSBleGVjdXRlIGludmFsX2R1cmluZ19wcnVu aW5nX3E7CisKKy0tIFJldXNlIHRoZSBnZW5lcmljIHBsYW4uICBNYWtlIGludmFsaWRhdGVfcGxh bmNhY2hlX2Z1bmMoKSBwZXJmb3JtIERETAorLS0gZHVyaW5nIHRoaXMgZXhlY3V0aW9uLCB3aGlj aCBzaG91bGQgZm9yY2UgcmVwbGFubmluZyB3aXRob3V0IGVycm9ycy4KK3VwZGF0ZSBpbnZhbF9k dXJpbmdfcHJ1bmluZ19zaWduYWwgc2V0IGNyZWF0ZV9pZHggPSB0cnVlOworZXhwbGFpbiAodmVy Ym9zZSwgY29zdHMgb2ZmKSBleGVjdXRlIGludmFsX2R1cmluZ19wcnVuaW5nX3E7CisKK2Ryb3Ag dGFibGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcCwgaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFs OworZHJvcCBmdW5jdGlvbiBpbnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jLCBzdGFibGVfcHJ1bmlu Z192YWw7CisKK3Jlc2V0IHBsYW5fY2FjaGVfbW9kZTsKLS0gCjIuNDcuMwoK --000000000000f35fa8064401accf Content-Type: application/octet-stream; name="v3-0002-Introduce-ExecutorPrep-and-refactor-executor-star.patch" Content-Disposition: attachment; filename="v3-0002-Introduce-ExecutorPrep-and-refactor-executor-star.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi72au0n4 RnJvbSAxMWUwMjYyZTMxZTM1NTM5ZjUwZTk2NTMxNTU5ZGI2Y2Q3ZTMyMTYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjE6NDc6NDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz IDIvNl0gSW50cm9kdWNlIEV4ZWN1dG9yUHJlcCBhbmQgcmVmYWN0b3IgZXhlY3V0b3Igc3RhcnR1 cAoKRmFjdG9yIHBlcm1pc3Npb24gY2hlY2tzLCByYW5nZSB0YWJsZSBpbml0aWFsaXphdGlvbiwg YW5kIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgb3V0IG9mIEluaXRQbGFuKCkgaW50byBhIG5l dyBFeGVjdXRvclByZXAoKQpoZWxwZXIuICBFeGVjdXRvclByZXAgYnVpbGRzIGFuIEVTdGF0ZSBj b250YWluaW5nIHRoZSBleGVjdXRvcgptZXRhZGF0YSBuZWVkZWQgYmVmb3JlIHBsYW4gZXhlY3V0 aW9uLCBpbmNsdWRpbmcgcGFydGl0aW9uCnBydW5pbmcgc3RhdGUgd2hlcmUgcGFydFBydW5lSW5m b3MgYXJlIHByZXNlbnQuCgpFeGVjdXRvclN0YXJ0KCkgbm93IGV4cGVjdHMgUXVlcnlEZXNjLT5w cmVwIHRvIHBvaW50IGF0IHN1Y2ggYW4KRXhlY1ByZXAgb2JqZWN0LiAgSWYgbm8gcHJlcCB3YXMg c3VwcGxpZWQgYnkgdGhlIGNhbGxlciwgaXQKaW52b2tlcyBFeGVjdXRvclByZXAoKSBpdHNlbGYg YW5kIGFkb3B0cyB0aGUgcmVzdWx0aW5nIEVTdGF0ZQpmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBx dWVyeS4gIFRoaXMga2VlcHMgdGhlIGV4ZWN1dG9yIHN0YXJ0dXAKYmVoYXZpb3VyIHVuY2hhbmdl ZCB3aGlsZSBtYWtpbmcgdGhlIHNldHVwIHdvcmsgY2FsbGFibGUKc2VwYXJhdGVseSB3aGVuIG5l ZWRlZC4KCkNyZWF0ZVF1ZXJ5RGVzYygpIGdyb3dzIGEgcHJlcCBhcmd1bWVudCBhbmQgc3RvcmVz IGl0IGluIHRoZQpRdWVyeURlc2MuICBQb3J0YWxzLCBTUEksIFNRTCBmdW5jdGlvbnMsIGFuZCBF WFBMQUlOIGFyZSB3aXJlZAp0byBjYXJyeSBhbiBvcHRpb25hbCBFeGVjUHJlcCBwb2ludGVyIGFs b25nc2lkZSB0aGUgUGxhbm5lZFN0bXQKbGlzdCwgYnV0IG1vc3QgY2FsbGVycyBzdGlsbCBwYXNz IE5VTEwgYW5kIGxldCBFeGVjdXRvclN0YXJ0KCkKcGVyZm9ybSB0aGUgc2V0dXAgbGF6aWx5LgoK QWRkIHRoZSBFeGVjUHJlcCBzdHJ1Y3QgYW5kIEV4ZWNQcmVwQ2xlYW51cCgpIHRvIGVuY2Fwc3Vs YXRlCm93bmVyc2hpcCBvZiB0aGUgcHJlcGFyZWQgRVN0YXRlIGFuZCBhbnkgY2FsbGVyIHNwZWNp ZmljCmNsZWFudXAgaG9vay4gIFVwZGF0ZSBleGVjdXRvci9SRUFETUUgYW5kIHJlbGF0ZWQgY29t bWVudHMgdG8KZG9jdW1lbnQgdGhlIG5ldyBjb250cm9sIGZsb3cgYW5kIHRoZSBzZXBhcmF0aW9u IGJldHdlZW4KcHJlcGFyYXRpb24gYW5kIGV4ZWN1dGlvbi4KLS0tCiBzcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5dG8uYyAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0 ZWFzLmMgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAg IHwgICA3ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJlcGFyZS5jICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgICAg ICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICB8IDE3 OSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJhbGxlbC5jICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMg fCAgIDMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICB8ICAxMCArKwogc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5 LmMgICAgICAgICAgICB8ICAyNyArKystCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1l bS5jICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oICAgICAgIHwgICAz ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oICAgICAgfCAgIDMgKy0KIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICB8ICAxMSArKwogc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmggICAgICAgIHwgIDQ4ICsrKysrKysKIHNyYy9pbmNsdWRlL3V0aWxzL3Bv cnRhbC5oICAgICAgICAgICB8ICAgMiArCiAyMSBmaWxlcyBjaGFuZ2VkLCAyODYgaW5zZXJ0aW9u cygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCBjZWY0NTI1ODRl NS4uNWVmYmIwOTQ5YzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC04NzAsNyArODcwLDcgQEAg QmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkoKERSX2NvcHkgKikgZGVzdCktPmNz dGF0ZSA9IGNzdGF0ZTsKIAogCQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgcmVxdWVzdGluZyBubyBv dXRwdXQgKi8KLQkJY3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0 YXRlLT5wX3NvdXJjZXRleHQsCisJCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNj KHBsYW4sIE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVT bmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQkJCWRlc3Qs IE5VTEwsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRl YXMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXggMWNjYzJlNTVjNjQu LjllYWJlNDkyMGNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKQEAgLTMzNCw3ICszMzQsNyBA QCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10 ICpzdG10LAogCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCiAJCS8qIENyZWF0 ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAq LwotCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRl eHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBf c291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hv dCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMKaW5kZXggN2U2OTlmODU5NWUuLmQ2YWIzNjk3ZGQ5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpx dWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJfQogCiAJLyogcnVuIGl0IChpZiBuZWVkZWQpIGFu ZCBwcm9kdWNlIG91dHB1dCAqLwotCUV4cGxhaW5PbmVQbGFuKHBsYW4sIGludG8sIGVzLCBxdWVy eVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwlFeHBsYWluT25lUGxhbihwbGFuLCBOVUxMLCBp bnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCiAJCQkJICAgJnBsYW5kdXJh dGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJICAgZXMtPm1lbW9y eSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIH0KQEAgLTQ5Miw3ICs0OTIsOCBAQCBFeHBsYWlu T25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0 YXRlICplcywKICAqIHRvIGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5u ZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK K0V4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgRXhlY1ByZXAgKnByZXAs CisJCQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJICAgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCSAg IGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwKQEAgLTU0OCw3ICs1NDksNyBAQCBFeHBsYWlu T25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxh aW5TdGF0ZSAqZXMsCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJLyogQ3JlYXRlIGEgUXVl cnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxh bm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu bmVkc3RtdCwgcHJlcCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCks IEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1 bWVudF9vcHRpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNp b24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IDkzZWYxYWQxMDZm Li4zY2NhNmQ0NWVjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9u LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTk5Myw2ICs5OTMs NyBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hhciAqc3FsLCBjb25zdCBjaGFyICpmaWxl bmFtZSkKIAkJCQlRdWVyeURlc2MgICpxZGVzYzsKIAogCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlE ZXNjKHN0bXQsCisJCQkJCQkJCQkJTlVMTCwKIAkJCQkJCQkJCQlzcWwsCiAJCQkJCQkJCQkJR2V0 QWN0aXZlU25hcHNob3QoKSwgTlVMTCwKIAkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL21hdHZpZXcuYwppbmRleCBlZjdjMGQ2MjRmMS4uMzBjYmY5ZjI2NGYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9tYXR2aWV3LmMKQEAgLTQzNyw3ICs0MzcsNyBAQCByZWZyZXNoX21hdHZpZXdfZGF0 YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJVXBkYXRlQWN0aXZlU25h cHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcg b3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxh biwgTlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFs aWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3BvcnRhbGNtZHMuYwppbmRleCBlYzk2YzJlZmNkMy4uYWMxZGRkMjVhYmEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9wb3J0YWxjbWRzLmMKQEAgLTExOCw2ICsxMTgsNyBAQCBQZXJmb3JtQ3Vyc29yT3BlbihQ YXJzZVN0YXRlICpwc3RhdGUsIERlY2xhcmVDdXJzb3JTdG10ICpjc3RtdCwgUGFyYW1MaXN0SW5m byBwYQogCQkJCQkgIHF1ZXJ5U3RyaW5nLAogCQkJCQkgIENNRFRBR19TRUxFQ1QsCS8qIGN1cnNv cidzIHF1ZXJ5IGlzIGFsd2F5cyBhIFNFTEVDVCAqLwogCQkJCQkgIGxpc3RfbWFrZTEocGxhbiks CisJCQkJCSAgbGlzdF9tYWtlMShOVUxMKSwKIAkJCQkJICBOVUxMKTsKIAogCS8qLS0tLS0tLS0t LQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDM0YjY0MTBkNmEyLi5hZmQ0NDljNzNiYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMjA1LDYgKzIwNSw3IEBAIEV4ZWN1dGVRdWVyeShQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIGVudHJ5LT5wbGFu c291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkgIHBsYW5fbGlzdCwKKwkJCQkJICBOSUwsCiAJCQkJ CSAgY3BsYW4pOwogCiAJLyoKQEAgLTU3NSw2ICs1NzYsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5 KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICpl cywKIAljb25zdCBjaGFyICpxdWVyeV9zdHJpbmc7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CiAJTGlz dAkgICAqcGxhbl9saXN0OworCUxpc3QJICAgKnByZXBfbGlzdDsKIAlMaXN0Q2VsbCAgICpwOwog CVBhcmFtTGlzdEluZm8gcGFyYW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxM OwpAQCAtNTg1LDYgKzU4Nyw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4 ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCU1lbW9yeUNvbnRl eHRDb3VudGVycyBtZW1fY291bnRlcnM7CiAJTWVtb3J5Q29udGV4dCBwbGFubmVyX2N0eCA9IE5V TEw7CiAJTWVtb3J5Q29udGV4dCBzYXZlZF9jdHggPSBOVUxMOworCWludAkJCWk7CiAKIAlpZiAo ZXMtPm1lbW9yeSkKIAl7CkBAIC02NTAsMTQgKzY1MywyMCBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5 KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICpl cywKIAl9CiAKIAlwbGFuX2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OworCXByZXBfbGlzdCA9IE5J TDsKIAogCS8qIEV4cGxhaW4gZWFjaCBxdWVyeSAqLworCWkgPSAwOwogCWZvcmVhY2gocCwgcGxh bl9saXN0KQogCXsKIAkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0 bXQsIHApOworCQlFeGVjUHJlcCAqcHJlcCA9IHByZXBfbGlzdCA/CisJCQkoRXhlY1ByZXAgKikg bGlzdF9udGgocHJlcF9saXN0LCBpKSA6IE5VTEw7CiAKKwkJaSsrOwogCQlpZiAocHN0bXQtPmNv bW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGludG8s IGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHBzdGF0ZS0+cF9xdWVyeUVudiwKKwkJCUV4cGxh aW5PbmVQbGFuKHBzdG10LCBwcmVwLAorCQkJCQkJICAgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywg cGFyYW1MSSwgcHN0YXRlLT5wX3F1ZXJ5RW52LAogCQkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVz LT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJCQkgICBlcy0+bWVtb3J5ID8gJm1l bV9jb3VudGVycyA6IE5VTEwpOwogCQllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9SRUFETUUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKaW5kZXggNTRmNDc4MmYz MWIuLjk1YjVlYzU4YzU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCkBAIC0yOTEsMTAgKzI5MSwxNiBAQCBR dWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwogCiBUaGlzIGlzIGEgc2tldGNoIG9mIGNvbnRy b2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNzaW5nOgogCisgICAgRXhlY3V0b3JQcmVwCisJ CU1heSBiZSBydW4gYmVmb3JlIEV4ZWN1dG9yU3RhcnQgKGUuZy4sIGZvciBwbGFuIHZhbGlkYXRp b24pLCBvcgorCQlpbXBsaWNpdGx5IGZyb20gRXhlY3V0b3JTdGFydCBpZiBub3QgZG9uZSBlYXJs aWVyLiAgUGVyZm9ybXMgcmFuZ2UKKwkJdGFibGUgaW5pdGlhbGl6YXRpb24sIHBlcm1pc3Npb24g Y2hlY2tzLCBhbmQgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmluZy4KKwkJUmV0dXJucyBhbiBFeGVj UHJlcCB3cmFwcGVyIHdpdGggRVN0YXRlIHRoYXQgRXhlY3V0b3JTdGFydCBtYXkgcmV1c2UuCisK IAlDcmVhdGVRdWVyeURlc2MKIAogCUV4ZWN1dG9yU3RhcnQKLQkJQ3JlYXRlRXhlY3V0b3JTdGF0 ZQorCQlDcmVhdGVFeGVjdXRvclN0YXRlIChvciByZXVzZSBvbmUgZnJvbSBFeGVjUHJlcCBpZiBw cmVzZW50KQogCQkJY3JlYXRlcyBwZXItcXVlcnkgY29udGV4dAogCQlzd2l0Y2ggdG8gcGVyLXF1 ZXJ5IGNvbnRleHQgdG8gcnVuIEV4ZWNJbml0Tm9kZQogCQlBZnRlclRyaWdnZXJCZWdpblF1ZXJ5 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAyN2M5ZWVjNjk3Yi4uMzlkZTBiOTNhMWMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMTcxLDggKzE3MSwyNiBAQCBzdGFuZGFyZF9FeGVj dXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCiAJLyoKIAkgKiBC dWlsZCBFU3RhdGUsIHN3aXRjaCBpbnRvIHBlci1xdWVyeSBtZW1vcnkgY29udGV4dCBmb3Igc3Rh cnR1cC4KKwkgKgorCSAqIElmIEV4ZWN1dG9yUHJlcCgpIHJhbiBlYXJsaWVyIChlLmcuLCB0byBk byBpbml0aWFsIHBydW5pbmcgZHVyaW5nIHBsYW4KKwkgKiB2YWxpZGl0eSBjaGVja2luZyksIHJl dXNlIGl0cyBFU3RhdGUgdG8gYXZvaWQgcmVkb2luZyByYW5nZSB0YWJsZSBzZXR1cAorCSAqIGFu ZCBwcnVuaW5nLiBPdGhlcndpc2UsIGNyZWF0ZSBhIGZyZXNoIEVTdGF0ZSBhcyB1c3VhbC4KIAkg Ki8KLQllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisJaWYgKHF1ZXJ5RGVzYy0+cHJl cCA9PSBOVUxMKQorCQlxdWVyeURlc2MtPnByZXAgPSBFeGVjdXRvclByZXAocXVlcnlEZXNjLT5w bGFubmVkc3RtdCwKKwkJCQkJCQkJCSAgIHF1ZXJ5RGVzYy0+cGFyYW1zLAorCQkJCQkJCQkJICAg Q3VycmVudFJlc291cmNlT3duZXIsCisJCQkJCQkJCQkgICB0cnVlLAorCQkJCQkJCQkJICAgZWZs YWdzKTsKKwlBc3NlcnQocXVlcnlEZXNjLT5wcmVwKTsKKwllc3RhdGUgPSBxdWVyeURlc2MtPnBy ZXAtPnByZXBfZXN0YXRlOworCisJLyoKKwkgKiBFeGVjdXRvciBpcyBhZG9wdGluZyB0aGUgcHJl cCdzIEVTdGF0ZS4gTWFyayBpdCBzbyBFeGVjUHJlcENsZWFudXAoKQorCSAqIGRvZXNuJ3QgdHJ5 IHRvIGZyZWUgaXQgcmVkdW5kYW50bHkuCisJICovCisJcXVlcnlEZXNjLT5wcmVwLT5vd25zX2Vz dGF0ZSA9IGZhbHNlOworCiAJcXVlcnlEZXNjLT5lc3RhdGUgPSBlc3RhdGU7CiAKIAlvbGRjb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKQEAgLTI2 Myw2ICsyODEsMTM2IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogfQog CisvKgorICogRXhlY3V0b3JQcmVwOiBwcmVwYXJlIGV4ZWN1dG9yIHN0YXRlIGZvciBhIFBsYW5u ZWRTdG10IG91dHNpZGUgRXhlY3V0b3JTdGFydC4KKyAqCisgKiBQZXJmb3JtcyByYW5nZSB0YWJs ZSBpbml0aWFsaXphdGlvbiwgcGVybWlzc2lvbiBjaGVja3MsIGFuZCBpbml0aWFsCisgKiBwYXJ0 aXRpb24gcHJ1bmluZyBpZiBwYXJ0UHJ1bmVJbmZvcyBhcmUgcHJlc2VudCBhbmQgZG9faW5pdGlh bF9wcnVuaW5nIGlzCisgKiB0cnVlLgorICoKKyAqIFRoaXMgaXMgaW50ZW5kZWQgZm9yIGNhbGxl cnMgdGhhdCBuZWVkIGV4ZWN1dG9yIG1ldGFkYXRhIGFoZWFkIG9mIGFjdHVhbAorICogZXhlY3V0 aW9uLiBUeXBpY2FsIHVzZSBjYXNlcyBpbmNsdWRlOgorICoJLSBkZXRlcm1pbmluZyB3aGljaCBy ZWxhdGlvbnMgbXVzdCBiZSBsb2NrZWQgZHVyaW5nIHBsYW4gY2FjaGUgdmFsaWRhdGlvbjsKKyAq CS0gaW5pdGlhbGl6aW5nIHVucHJ1bmVkIHJlbGlkcyBhbmQgdmFsaWQgc3VicGxhbnMgaW4gcGFy YWxsZWwgd29ya2VycworICoJICB1c2luZyBzdGF0ZSBjb3BpZWQgZnJvbSB0aGUgbGVhZGVyLgor ICoKKyAqIFRoZSBleGVjdXRvciBjYW4gcmV1c2UgdGhlIHJlc3VsdGluZyBzdGF0ZSB0byBhdm9p ZCByZWR1bmRhbnQgc2V0dXAgZHVyaW5nCisgKiBFeGVjdXRvclN0YXJ0KCkuCisgKgorICogUmV0 dXJucyBhbiBFeGVjUHJlcCB3cmFwcGVyIHRoYXQgb3ducyB0aGUgRVN0YXRlIGFuZCBjYW4gYmUg cmV1c2VkCisgKiBvciBjbGVhbmVkIHVwIGxhdGVyLgorICovCitFeGVjUHJlcCAqCitFeGVjdXRv clByZXAoUGxhbm5lZFN0bXQgKnBzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUmVzb3VyY2VP d25lciBvd25lciwKKwkJCSBib29sIGRvX2luaXRpYWxfcHJ1bmluZywgaW50IGVmbGFncykKK3sK KwlSZXNvdXJjZU93bmVyIG9sZG93bmVyOworCUVTdGF0ZSAqZXN0YXRlOworCWJvb2wJc25hcHNo b3Rfc2V0OworCisJaWYgKHBzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKKwkJcmV0 dXJuIE5VTEw7CisKKwkvKiBQcnVuaW5nIG1heSB1c2UgZXhwcmVzc2lvbnMgdGhhdCByZXF1aXJl IGFuIGFjdGl2ZSBzbmFwc2hvdC4gKi8KKwlzbmFwc2hvdF9zZXQgPSBmYWxzZTsKKwlpZiAoIUFj dGl2ZVNuYXBzaG90U2V0KCkpCisJeworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rp b25TbmFwc2hvdCgpKTsKKwkJc25hcHNob3Rfc2V0ID0gdHJ1ZTsKKwl9CisJQXNzZXJ0KEFjdGl2 ZVNuYXBzaG90U2V0KCkpOworCisJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOworCWVz dGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwc3RtdDsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5m b3MgPSBwc3RtdC0+cGFydFBydW5lSW5mb3M7CisJZXN0YXRlLT5lc19wYXJhbV9saXN0X2luZm8g PSBwYXJhbXM7CisJZXN0YXRlLT5lc190b3BfZWZsYWdzID0gZWZsYWdzOworCisJLyoKKwkgKiBE byBwZXJtaXNzaW9ucyBjaGVja3MuCisJICovCisJRXhlY0NoZWNrUGVybWlzc2lvbnMocHN0bXQt PnJ0YWJsZSwgcHN0bXQtPnBlcm1JbmZvcywgdHJ1ZSk7CisKKwkvKgorCSAqIEluaXRpYWxpemUg cmFuZ2UgdGFibGUuCisJICovCisJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcHN0bXQtPnJ0 YWJsZSwgcHN0bXQtPnBlcm1JbmZvcywKKwkJCQkJICAgYm1zX2NvcHkocHN0bXQtPnVucHJ1bmFi bGVSZWxpZHMpKTsKKworCS8qCisJICogRW5zdXJlIGxvY2tzIHRha2VuIGR1cmluZyBpbml0aWFs IHBydW5pbmcgYXJlIHRyYWNrZWQgdW5kZXIgdGhlIGdpdmVuCisJICogUmVzb3VyY2VPd25lciAo ZS5nLiwgb25lIGFzc29jaWF0ZWQgd2l0aCBDYWNoZWRQbGFuIHZhbGlkYXRpb24pLgorCSAqLwor CW9sZG93bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7CisJQ3VycmVudFJlc291cmNlT3duZXIg PSBvd25lcjsKKworCS8qCisJICogU2V0IHVwIFBhcnRpdGlvblBydW5lU3RhdGUgc3RydWN0dXJl cyBuZWVkZWQgZm9yIGJvdGggaW5pdGlhbCBhbmQKKwkgKiBydW50aW1lIHBhcnRpdGlvbiBwcnVu aW5nLiBUaGVzZSBzdHJ1Y3R1cmVzIGFyZSBidWlsdCBmcm9tIHRoZQorCSAqIFBhcnRpdGlvblBy dW5lSW5mbyBlbnRyaWVzIGluIHRoZSBwbGFuIHRyZWUuCisJICoKKwkgKiBJZiBkb19pbml0aWFs X3BydW5pbmcgaXMgdHJ1ZSwgYWxzbyBwZXJmb3JtIGluaXRpYWwgcHJ1bmluZyB0byBjb21wdXRl CisJICogdGhlIHN1YnNldCBvZiBjaGlsZCBzdWJwbGFucyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQu IFRoZSByZXN1bHRzLAorCSAqIHdoaWNoIGFyZSBiaXRtYXBzZXRzIG9mIHNlbGVjdGVkIGNoaWxk IGluZGV4ZXMsIGFyZSBzYXZlZCBpbgorCSAqIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cy4gVGhpcyBs aXN0IGlzIHBhcmFsbGVsIHRvIGVzX3BhcnRfcHJ1bmVfaW5mb3MuCisJICoKKwkgKiBJbiBwYXJh bGxlbCB3b3JrZXJzLCBkb19pbml0aWFsX3BydW5pbmcgc2hvdWxkIGJlIGZhbHNlIC0tIHRoZXkg cmVjZWl2ZQorCSAqIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cyBmcm9tIHRoZSBsZWFkZXIgcHJvY2Vz cyBhbmQgc2hvdWxkIG9ubHkgaW5pdGlhbGl6ZQorCSAqIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRl cy4KKwkgKi8KKwlFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMoZXN0YXRlKTsKKwlpZiAo ZG9faW5pdGlhbF9wcnVuaW5nKQorCQlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3RhdGUpOworCisJ Q3VycmVudFJlc291cmNlT3duZXIgPSBvbGRvd25lcjsKKworCS8qIFJlbGVhc2Ugc25hcHNob3Qg aWYgd2UgZ290IG9uZSAqLworCWlmIChzbmFwc2hvdF9zZXQpCisJCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CisKKwlyZXR1cm4gQ3JlYXRlRXhlY1ByZXAoZXN0YXRlLCBDdXJyZW50TWVtb3J5Q29udGV4 dCwgTlVMTCwgTlVMTCk7Cit9CisKKy8qCisgKiBDcmVhdGVFeGVjUHJlcDogaW5pdGlhbGl6ZSBF eGVjUHJlcCB3cmFwcGVyIHdpdGggb3B0aW9uYWwgY2xlYW51cCBtZXRhZGF0YS4KKyAqLworRXhl Y1ByZXAgKgorQ3JlYXRlRXhlY1ByZXAoRVN0YXRlICplc3RhdGUsIE1lbW9yeUNvbnRleHQgY29u dGV4dCwKKwkJCSAgIGV4ZWNwcmVwX2NsZWFudXBfZm4gY2xlYW51cCwgdm9pZCAqY2xlYW51cF9h cmcpCit7CisJRXhlY1ByZXAgKnByZXAgPSBwYWxsb2MwKHNpemVvZihFeGVjUHJlcCkpOworCisJ cHJlcC0+cHJlcF9lc3RhdGUgPSBlc3RhdGU7CisJcHJlcC0+Y29udGV4dCA9IGNvbnRleHQ7CisJ cHJlcC0+Y2xlYW51cCA9IGNsZWFudXA7CisJcHJlcC0+Y2xlYW51cF9hcmcgPSBjbGVhbnVwX2Fy ZzsKKwlwcmVwLT5vd25zX2VzdGF0ZSA9IHRydWU7CisKKwlyZXR1cm4gcHJlcDsKK30KKworLyoK KyAqIEV4ZWNQcmVwQ2xlYW51cDogZnJlZSBFeGVjUHJlcCByZXNvdXJjZXMgbm90IGFkb3B0ZWQg YnkgdGhlIGV4ZWN1dG9yLgorICoKKyAqIE9ubHkgZnJlZXMgdGhlIEVTdGF0ZSBpZiBpdCB3YXNu J3QgdGFrZW4gb3ZlciBieSBFeGVjdXRvclN0YXJ0KCkuCisgKiBBbHdheXMgcnVucyB0aGUgb3B0 aW9uYWwgdXNlci1kZWZpbmVkIGNsZWFudXAgY2FsbGJhY2suCisgKi8KK3ZvaWQKK0V4ZWNQcmVw Q2xlYW51cChFeGVjUHJlcCAqcHJlcCkKK3sKKwlpZiAocHJlcCA9PSBOVUxMKQorCQlyZXR1cm47 CisKKwlpZiAocHJlcC0+cHJlcF9lc3RhdGUgJiYgcHJlcC0+b3duc19lc3RhdGUpCisJeworCQlF eGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zKHByZXAtPnByZXBfZXN0YXRlKTsKKwkJRnJlZUV4 ZWN1dG9yU3RhdGUocHJlcC0+cHJlcF9lc3RhdGUpOworCX0KKworCWlmIChwcmVwLT5jbGVhbnVw KQorCQlwcmVwLT5jbGVhbnVwKHByZXAtPmNsZWFudXBfYXJnKTsKK30KKwogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICoJCUV4ZWN1dG9yUnVuCiAgKgpAQCAtODI0LDcgKzk3Miw2IEBAIEV4ZWNDaGVja1hhY3RSZWFk T25seShQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpCiAJCVByZXZlbnRDb21tYW5kSWZQYXJhbGxl bE1vZGUoQ3JlYXRlQ29tbWFuZE5hbWUoKE5vZGUgKikgcGxhbm5lZHN0bXQpKTsKIH0KIAotCiAv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKgkJSW5pdFBsYW4KICAqCkBAIC04MzgsMzcgKzk4NSwxNSBAQCBJbml0UGxh bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAlDbWRUeXBlCQlvcGVyYXRpb24g PSBxdWVyeURlc2MtPm9wZXJhdGlvbjsKIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBxdWVy eURlc2MtPnBsYW5uZWRzdG10OwogCVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRy ZWU7Ci0JTGlzdAkgICAqcmFuZ2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRl CSAgICplc3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKIAlQbGFuU3RhdGUgICpwbGFuc3RhdGU7 CiAJVHVwbGVEZXNjCXR1cFR5cGU7CiAJTGlzdENlbGwgICAqbDsKIAlpbnQJCQlpOwogCi0JLyoK LQkgKiBEbyBwZXJtaXNzaW9ucyBjaGVja3MKLQkgKi8KLQlFeGVjQ2hlY2tQZXJtaXNzaW9ucyhy YW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVybUluZm9zLCB0cnVlKTsKLQotCS8qCi0JICogaW5p dGlhbGl6ZSB0aGUgbm9kZSdzIGV4ZWN1dGlvbiBzdGF0ZQotCSAqLwotCUV4ZWNJbml0UmFuZ2VU YWJsZShlc3RhdGUsIHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MsCi0JCQkJCSAg IGJtc19jb3B5KHBsYW5uZWRzdG10LT51bnBydW5hYmxlUmVsaWRzKSk7Ci0KLQllc3RhdGUtPmVz X3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7Ci0JZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9z ID0gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOwotCi0JLyoKLQkgKiBQZXJmb3JtIHJ1bnRp bWUgImluaXRpYWwiIHBydW5pbmcgdG8gaWRlbnRpZnkgd2hpY2ggY2hpbGQgc3VicGxhbnMsCi0J ICogY29ycmVzcG9uZGluZyB0byB0aGUgY2hpbGRyZW4gb2YgcGxhbiBub2RlcyB0aGF0IGNvbnRh aW4KLQkgKiBQYXJ0aXRpb25QcnVuZUluZm8gc3VjaCBhcyBBcHBlbmQsIHdpbGwgbm90IGJlIGV4 ZWN1dGVkLiBUaGUgcmVzdWx0cywKLQkgKiB3aGljaCBhcmUgYml0bWFwc2V0cyBvZiBpbmRleGVz IG9mIHRoZSBjaGlsZCBzdWJwbGFucyB0aGF0IHdpbGwgYmUKLQkgKiBleGVjdXRlZCwgYXJlIHNh dmVkIGluIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cy4gIFRoZXNlIHJlc3VsdHMgY29ycmVzcG9uZAot CSAqIHRvIGVhY2ggUGFydGl0aW9uUHJ1bmVJbmZvIGVudHJ5LCBhbmQgdGhlIGVzX3BhcnRfcHJ1 bmVfcmVzdWx0cyBsaXN0IGlzCi0JICogcGFyYWxsZWwgdG8gZXNfcGFydF9wcnVuZV9pbmZvcy4K LQkgKi8KLQlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3RhdGUpOworCS8qIEV4ZWN1dG9yUHJlcCgp IG11c3QgaGF2ZSBiZWVuIGRvbmUuICovCisJQXNzZXJ0KHF1ZXJ5RGVzYy0+cHJlcCk7CisJQXNz ZXJ0KGVzdGF0ZSA9PSBxdWVyeURlc2MtPnByZXAtPnByZXBfZXN0YXRlKTsKIAogCS8qCiAJICog TmV4dCwgYnVpbGQgdGhlIEV4ZWNSb3dNYXJrIGFycmF5IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMp LCBpZiBhbnkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGYwOThhNTU1N2Nm Li5hZWRiZDk1NjZkNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFs bGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTEyODEs NiArMTI4MSw3IEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RS ZWNlaXZlciAqcmVjZWl2ZXIsCiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVy eS4gKi8KIAlyZXR1cm4gQ3JlYXRlUXVlcnlEZXNjKHBzdG10LAorCQkJCQkJICAgTlVMTCwKIAkJ CQkJCSAgIHF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxp ZFNuYXBzaG90LAogCQkJCQkJICAgcmVjZWl2ZXIsIHBhcmFtTEksIE5VTEwsIGluc3RydW1lbnRf b3B0aW9ucyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9u LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggODhiMTUwYzhk NzcuLjE4N2E0ODBlNTA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy dGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0y MzY4LDYgKzIzNjgsOSBAQCBJbml0RXhlY1BhcnRpdGlvblBydW5lQ29udGV4dHMoUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAlBc3NlcnQocGFyZW50X3BsYW4gIT0gTlVMTCk7CiAJ ZXN0YXRlID0gcGFyZW50X3BsYW4tPnN0YXRlOwogCisJLyogV291bGRuJ3QgYmUgYXZhaWxhYmxl IGF0IEV4ZWN1dG9yUHJlcCgpIHRpbWUuICovCisJcHJ1bmVzdGF0ZS0+ZWNvbnRleHQtPmVjeHRf cGFyYW1fZXhlY192YWxzID0gZXN0YXRlLT5lc19wYXJhbV9leGVjX3ZhbHM7CisKIAkvKgogCSAq IE5vIG5lZWQgdG8gZml4IHN1YnBsYW5zIG1hcHMgaWYgaW5pdGlhbCBwcnVuaW5nIGRpZG4ndCBl bGltaW5hdGUgYW55CiAJICogc3VicGxhbnMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9mdW5jdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4 IDYzMGQ3MDhkMmEzLi42MzMzMTBjNWY1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZnVuY3Rpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAg LTEzNjIsNiArMTM2Miw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNR TEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCWVz LT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwKKwkJCQkJCQkgTlVMTCwKIAkJCQkJCQkg ZmNhY2hlLT5mdW5jLT5zcmMsCiAJCQkJCQkJIEdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJ IEludmFsaWRTbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggNjUzNTAwYjM4ZGMuLjdhM2NiOTQ0 ZDZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9zcGkuYwpAQCAtMTY4NSw2ICsxNjg1LDcgQEAgU1BJX2N1cnNvcl9vcGVu X2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkJCQkJICBxdWVy eV9zdHJpbmcsCiAJCQkJCSAgcGxhbnNvdXJjZS0+Y29tbWFuZFRhZywKIAkJCQkJICBzdG10X2xp c3QsCisJCQkJCSAgTklMLAogCQkJCQkgIGNwbGFuKTsKIAogCS8qCkBAIC0yNTAwLDYgKzI1MDEs OCBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVP cHRpb25zICpvcHRpb25zLAogCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlID0gKENhY2hl ZFBsYW5Tb3VyY2UgKikgbGZpcnN0KGxjMSk7CiAJCUxpc3QJICAgKnN0bXRfbGlzdDsKIAkJTGlz dENlbGwgICAqbGMyOworCQlMaXN0CSAgICpwcmVwX2xpc3Q7CisJCWludAkJCWk7CiAKIAkJc3Bp Y2FsbGJhY2thcmcucXVlcnkgPSBwbGFuc291cmNlLT5xdWVyeV9zdHJpbmc7CiAKQEAgLTI1Nzgs NiArMjU4MSw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJ RXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJCQkJICBwbGFuX293bmVyLCBfU1BJX2N1cnJl bnQtPnF1ZXJ5RW52KTsKIAogCQlzdG10X2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OworCQlwcmVw X2xpc3QgPSBOSUw7CiAKIAkJLyoKIAkJICogSWYgd2Ugd2VyZW4ndCBnaXZlbiBhIHNwZWNpZmlj IHNuYXBzaG90IHRvIHVzZSwgYW5kIHRoZSBzdGF0ZW1lbnQKQEAgLTI2MTUsMTIgKzI2MTksMTcg QEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0 aW9ucyAqb3B0aW9ucywKIAkJCX0KIAkJfQogCisJCWkgPSAwOwogCQlmb3JlYWNoKGxjMiwgc3Rt dF9saXN0KQogCQl7CiAJCQlQbGFubmVkU3RtdCAqc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRT dG10LCBsYzIpOworCQkJRXhlY1ByZXAgKnByZXAgPSBwcmVwX2xpc3QgPworCQkJCWxpc3RfbnRo KHByZXBfbGlzdCwgaSkgOiBOVUxMOwogCQkJYm9vbAkJY2FuU2V0VGFnID0gc3RtdC0+Y2FuU2V0 VGFnOwogCQkJRGVzdFJlY2VpdmVyICpkZXN0OwogCisJCQlpKys7CisKIAkJCS8qCiAJCQkgKiBS ZXNldCBvdXRwdXQgc3RhdGUuICAoTm90ZSB0aGF0IGlmIGEgbm9uLVNQSSByZWNlaXZlciBpcyB1 c2VkLAogCQkJICogX1NQSV9jdXJyZW50LT5wcm9jZXNzZWQgd2lsbCBzdGF5IHplcm8sIGFuZCB0 aGF0J3Mgd2hhdCB3ZSdsbApAQCAtMjY5MCw2ICsyNjk5LDcgQEAgX1NQSV9leGVjdXRlX3BsYW4o U1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJ c25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAogCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0 bXQsCisJCQkJCQkJCQkJcHJlcCwKIAkJCQkJCQkJCQlwbGFuc291cmNlLT5xdWVyeV9zdHJpbmcs CiAJCQkJCQkJCQkJc25hcCwgY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJCQkJCQlkZXN0LApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jCmluZGV4IDJiZDg5MTAyNjg2Li5kMzk2NGExMmExNCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYwpAQCAtMTIzMiw2ICsxMjMyLDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAq cXVlcnlfc3RyaW5nKQogCQkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCQkgIGNvbW1hbmRUYWcs CiAJCQkJCQkgIHBsYW50cmVlX2xpc3QsCisJCQkJCQkgIE5JTCwKIAkJCQkJCSAgTlVMTCk7CiAK IAkJLyoKQEAgLTIwMzMsNiArMjAzNCw3IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8g aW5wdXRfbWVzc2FnZSkKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgcHNyYy0+Y29tbWFu ZFRhZywKIAkJCQkJICBjcGxhbi0+c3RtdF9saXN0LAorCQkJCQkgIE5JTCwKIAkJCQkJICBjcGxh bik7CiAKIAkvKiBQb3J0YWwgaXMgZGVmaW5lZCwgc2V0IHRoZSBwbGFuIElEIGJhc2VkIG9uIGl0 cyBjb250ZW50cy4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9z cmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IGZkZTc4YzU1MTYwLi44MmMyOTU1MDJiMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3BxdWVyeS5jCkBAIC0zNyw2ICszNyw3IEBAIFBvcnRhbAkJQWN0aXZlUG9ydGFsID0gTlVM TDsKIAogCiBzdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkJ CQkgRXhlY1ByZXAgKnByZXAsCiAJCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJ CSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu diwKQEAgLTY2LDYgKzY3LDcgQEAgc3RhdGljIHZvaWQgRG9Qb3J0YWxSZXdpbmQoUG9ydGFsIHBv cnRhbCk7CiAgKi8KIFF1ZXJ5RGVzYyAqCiBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBs YW5uZWRzdG10LAorCQkJCUV4ZWNQcmVwICpwcmVwLAogCQkJCWNvbnN0IGNoYXIgKnNvdXJjZVRl eHQsCiAJCQkJU25hcHNob3Qgc25hcHNob3QsCiAJCQkJU25hcHNob3QgY3Jvc3NjaGVja19zbmFw c2hvdCwKQEAgLTc4LDYgKzgwLDcgQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdCwKIAogCXFkLT5vcGVyYXRpb24gPSBwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGU7CS8q IG9wZXJhdGlvbiAqLwogCXFkLT5wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwkvKiBwbGFuICov CisJcWQtPnByZXAgPSBwcmVwOwkJLyogZXhlY3V0b3IgcHJlcCBvdXRwdXQgKi8KIAlxZC0+c291 cmNlVGV4dCA9IHNvdXJjZVRleHQ7CS8qIHF1ZXJ5IHRleHQgKi8KIAlxZC0+c25hcHNob3QgPSBS ZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsJLyogc25hcHNob3QgKi8KIAkvKiBSSSBjaGVjayBz bmFwc2hvdCAqLwpAQCAtMTEyLDYgKzExNSwxMyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAq cWRlc2MpCiAJVW5yZWdpc3RlclNuYXBzaG90KHFkZXNjLT5zbmFwc2hvdCk7CiAJVW5yZWdpc3Rl clNuYXBzaG90KHFkZXNjLT5jcm9zc2NoZWNrX3NuYXBzaG90KTsKIAorCS8qIEV4ZWNQcmVwIGNs ZWFudXAgaWYgbmVjZXNzYXJ5ICovCisJaWYgKHFkZXNjLT5wcmVwKQorCXsKKwkJRXhlY1ByZXBD bGVhbnVwKHFkZXNjLT5wcmVwKTsKKwkJcWRlc2MtPnByZXAgPSBOVUxMOworCX0KKwogCS8qIE9u bHkgdGhlIFF1ZXJ5RGVzYyBpdHNlbGYgbmVlZCBiZSBmcmVlZCAqLwogCXBmcmVlKHFkZXNjKTsK IH0KQEAgLTEyMyw2ICsxMzMsNyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAg KgkJUE9SVEFMX09ORV9SRVRVUk5JTkcsIG9yIFBPUlRBTF9PTkVfTU9EX1dJVEggcG9ydGFsCiAg KgogICoJcGxhbjogdGhlIHBsYW4gdHJlZSBmb3IgdGhlIHF1ZXJ5CisgKglwcmVwOiBFeGVjUHJl cCBmb3IgdGhlIHBsYW4gKG91dHB1dCBvZiBFeGVjdXRvclByZXAoKSkKICAqCXNvdXJjZVRleHQ6 IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkKICAqCXBhcmFtczogYW55IHBhcmFtZXRlcnMg bmVlZGVkCiAgKglkZXN0OiB3aGVyZSB0byBzZW5kIHJlc3VsdHMKQEAgLTEzNSw2ICsxNDYsNyBA QCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKi8KIHN0YXRpYyB2b2lkCiBQcm9j ZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkgRXhlY1ByZXAgKnByZXAsCiAJCQkgY29u c3QgY2hhciAqc291cmNlVGV4dCwKIAkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSBRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTE0Niw3ICsxNTgsNyBAQCBQcm9jZXNzUXVlcnko UGxhbm5lZFN0bXQgKnBsYW4sCiAJLyoKIAkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QK IAkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNlVGV4dCwKKwlx dWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHJlcCwgc291cmNlVGV4dCwKIAkJCQkJ CQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBw YXJhbXMsIHF1ZXJ5RW52LCAwKTsKIApAQCAtNDg5LDYgKzUwMSw5IEBAIFBvcnRhbFN0YXJ0KFBv cnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqIHRoZSBkZXN0aW5hdGlv biB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Mo bGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyksCisJCQkJCQkJCQkJCXBv cnRhbC0+cHJlcHMgPworCQkJCQkJCQkJCQkoRXhlY1ByZXAgKikgbGluaXRpYWwocG9ydGFsLT5w cmVwcykgOgorCQkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQs CiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRTbmFw c2hvdCwKQEAgLTExODUsNiArMTIwMCw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWws CiB7CiAJYm9vbAkJYWN0aXZlX3NuYXBzaG90X3NldCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKnN0 bXRsaXN0X2l0ZW07CisJaW50CQkJaTsKIAogCS8qCiAJICogSWYgdGhlIGRlc3RpbmF0aW9uIGlz IERlc3RSZW1vdGVFeGVjdXRlLCBjaGFuZ2UgdG8gRGVzdE5vbmUuICBUaGUKQEAgLTEyMDUsOSAr MTIyMSwxNCBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCSAqIExvb3AgdG8gaGFu ZGxlIHRoZSBpbmRpdmlkdWFsIHF1ZXJpZXMgZ2VuZXJhdGVkIGZyb20gYSBzaW5nbGUgcGFyc2V0 cmVlCiAJICogYnkgYW5hbHlzaXMgYW5kIHJld3JpdGUuCiAJICovCisJaSA9IDA7CiAJZm9yZWFj aChzdG10bGlzdF9pdGVtLCBwb3J0YWwtPnN0bXRzKQogCXsKIAkJUGxhbm5lZFN0bXQgKnBzdG10 ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIHN0bXRsaXN0X2l0ZW0pOworCQlFeGVjUHJlcCAq cHJlcCA9IHBvcnRhbC0+cHJlcHMgPworCQkJbGlzdF9udGgocG9ydGFsLT5wcmVwcywgaSkgOiBO VUxMOworCisJCWkrKzsKIAogCQkvKgogCQkgKiBJZiB3ZSBnb3QgYSBjYW5jZWwgc2lnbmFsIGlu IHByaW9yIGNvbW1hbmQsIHF1aXQKQEAgLTEyNjUsNyArMTI4Niw3IEBAIFBvcnRhbFJ1bk11bHRp KFBvcnRhbCBwb3J0YWwsCiAJCQlpZiAocHN0bXQtPmNhblNldFRhZykKIAkJCXsKIAkJCQkvKiBz dGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAor CQkJCVByb2Nlc3NRdWVyeShwc3RtdCwgcHJlcCwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0 LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVu diwKQEAgLTEyNzQsNyArMTI5NSw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJ CQllbHNlCiAJCQl7CiAJCQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFn ICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwgcHJl cCwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBh cmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1l bS5jCmluZGV4IDk0M2RhMDg3YzlmLi4zMTNmOGVmMmZkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3Bv cnRhbG1lbS5jCkBAIC0yODQsNiArMjg0LDcgQEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBv cnRhbCwKIAkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJICBDb21tYW5kVGFnIGNv bW1hbmRUYWcsCiAJCQkJICBMaXN0ICpzdG10cywKKwkJCQkgIExpc3QgKnByZXBzLAogCQkJCSAg Q2FjaGVkUGxhbiAqY3BsYW4pCiB7CiAJQXNzZXJ0KFBvcnRhbElzVmFsaWQocG9ydGFsKSk7CkBA IC0yOTgsNiArMjk5LDcgQEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAlwb3J0 YWwtPnFjLm5wcm9jZXNzZWQgPSAwOwogCXBvcnRhbC0+Y29tbWFuZFRhZyA9IGNvbW1hbmRUYWc7 CiAJcG9ydGFsLT5zdG10cyA9IHN0bXRzOworCXBvcnRhbC0+cHJlcHMgPSBwcmVwczsKIAlwb3J0 YWwtPmNwbGFuID0gY3BsYW47CiAJcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfREVGSU5FRDsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCA2ZTUxZDUwZWZjNy4uNmFhOGIyNzVhYTIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9leHBsYWluLmgKQEAgLTYzLDcgKzYzLDggQEAgZXh0ZXJuIHZvaWQgRXhwbGFpbk9u ZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkJICBF eHBsYWluU3RhdGUgKmVzLCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJICBQYXJhbUxpc3RJ bmZvIHBhcmFtcyk7CiAKLWV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywKK2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFu KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgRXhlY1ByZXAgKnByZXAsCisJCQkJCQkgICBJbnRv Q2xhdXNlICppbnRvLAogCQkJCQkJICAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVl cnlTdHJpbmcsCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVu dCAqcXVlcnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY2Rlc2MuaAppbmRleCA4NmRiM2RjOGQwZC4uYzE4NTMwZjVkMTEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgIm5vZGVzL2V4 ZWNub2Rlcy5oIgogI2luY2x1ZGUgInRjb3AvZGVzdC5oIgogCi0KIC8qIC0tLS0tLS0tLS0tLS0t LS0KICAqCQlxdWVyeSBkZXNjcmlwdG9yOgogICoKQEAgLTM1LDYgKzM0LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUXVlcnlEZXNjCiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRlZCBieSBDcmVhdGVR dWVyeURlc2MgKi8KIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURfVVBE QVRFLCBldGMuICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mgb3V0 cHV0IChjb3VsZCBiZSB1dGlsaXR5LCB0b28pICovCisJRXhlY1ByZXAgKnByZXA7CQkJCS8qIG91 dHB1dCBvZiBFeGVjdXRvclByZXAoKSBvciBOVUxMICovCiAJY29uc3QgY2hhciAqc291cmNlVGV4 dDsJCS8qIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeSAqLwogCVNuYXBzaG90CXNuYXBzaG90OwkJ Lyogc25hcHNob3QgdG8gdXNlIGZvciBxdWVyeSAqLwogCVNuYXBzaG90CWNyb3NzY2hlY2tfc25h cHNob3Q7CS8qIGNyb3NzY2hlY2sgZm9yIFJJIHVwZGF0ZS9kZWxldGUgKi8KQEAgLTU3LDYgKzU3 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiAKIC8qIGluIHBxdWVyeS5jICovCiBleHRl cm4gUXVlcnlEZXNjICpDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAor CQkJCQkJCQkgIEV4ZWNQcmVwICpwcmVwLAogCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRl eHQsCiAJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCSAgU25hcHNob3QgY3Jv c3NjaGVja19zbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1 dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IGZhMmI2NTdmYjJm Li4zNTc5OTI2ZDRlOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3Iu aAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0yMCw2ICsyMCw3IEBA CiAjaW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5v ZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNv d25lci5oIgogCiAKIC8qCkBAIC0yMzQsNiArMjM1LDE2IEBAIEV4ZWNHZXRKdW5rQXR0cmlidXRl KFR1cGxlVGFibGVTbG90ICpzbG90LCBBdHRyTnVtYmVyIGF0dG5vLCBib29sICppc051bGwpCiAg Ki8KIGV4dGVybiB2b2lkIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBl ZmxhZ3MpOwogZXh0ZXJuIHZvaWQgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncyk7CisKK2V4dGVybiBFeGVjUHJlcCAqRXhlY3V0b3JQcmVwKFBs YW5uZWRTdG10ICpwc3RtdCwKKwkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLAorCQkJCQkJ CSAgUmVzb3VyY2VPd25lciBvd25lciwKKwkJCQkJCQkgIGJvb2wgZG9faW5pdGlhbF9wcnVuaW5n LAorCQkJCQkJCSAgaW50IGVmbGFncyk7CitleHRlcm4gRXhlY1ByZXAgKkNyZWF0ZUV4ZWNQcmVw KEVTdGF0ZSAqZXN0YXRlLCBNZW1vcnlDb250ZXh0IGNvbnRleHQsCisJCQkJCQkJCWV4ZWNwcmVw X2NsZWFudXBfZm4gY2xlYW51cCwgdm9pZCAqY2xlYW51cF9hcmcpOworZXh0ZXJuIHZvaWQgRXhl Y1ByZXBDbGVhbnVwKEV4ZWNQcmVwICpwcmVwKTsKKwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JSdW4o UXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQlTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgdWlu dDY0IGNvdW50KTsKIGV4dGVybiB2b2lkIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAxOGFlOGYwZDRiYi4uOGJkZWNkNjMx YmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC03NzIsNiArNzcyLDU0IEBAIHR5cGVkZWYgc3Ry dWN0IEVTdGF0ZQogCUxpc3QJICAgKmVzX2luc2VydF9wZW5kaW5nX21vZGlmeXRhYmxlczsKIH0g RVN0YXRlOwogCisvKgorICogRXhlY1ByZXA6IGVuY2Fwc3VsYXRlcyBleGVjdXRvciBwcmVwYXJh dGlvbiByZXN1bHRzIGZvciBhIFBsYW5uZWRTdG10LgorICoKKyAqIEV4ZWN1dG9yUHJlcCgpIGZh Y3RvcnMgb3V0IGV4ZWN1dG9yIHNldHVwIHN0ZXBzIHN1Y2ggYXMgaW5pdGlhbGl6aW5nIHRoZQor ICogcmFuZ2UgdGFibGUsIGNoZWNraW5nIHBlcm1pc3Npb25zLCBhbmQgZXhlY3V0aW5nIGluaXRp YWwgcGFydGl0aW9uIHBydW5pbmcuCisgKiBFeGVjdXRvclN0YXJ0KCkgY2FuIHJldXNlIHRoZSBw cmVwYXJlZCBFU3RhdGUgaW5zdGVhZCBvZiByZXBlYXRpbmcgdGhhdAorICogd29yaywgYW5kIG90 aGVyIGNhbGxlcnMgKHN1Y2ggYXMgcGxhbiBjYWNoZSB2YWxpZGF0aW9uKSBjYW4gdXNlIGl0IHdp dGhvdXQKKyAqIHJ1bm5pbmcgdGhlIGZ1bGwgcGxhbi4KKyAqLworCisvKgorICogT3B0aW9uYWwg Y2FsbGJhY2sgdG8gY2xlYW4gdXAgdXNlci1zcGVjaWZpYyByZXNvdXJjZXMgYXNzb2NpYXRlZCB3 aXRoCisgKiBFeGVjUHJlcC4KKyAqLwordHlwZWRlZiB2b2lkICgqZXhlY3ByZXBfY2xlYW51cF9m bikodm9pZCAqcHJlcCk7CisKK3R5cGVkZWYgc3RydWN0IEV4ZWNQcmVwCit7CisJLyoKKwkgKiBD b250ZXh0IGluIHdoaWNoIHRoaXMgc3RydWN0IGFuZCBhbGwgc3Vic2lkaWFyeSBhbGxvY2F0aW9u cyB3ZXJlIG1hZGUuCisJICogVGhpcyBjb250ZXh0IG11c3QgcmVtYWluIGFsaXZlIHVudGlsIEV4 ZWNQcmVwQ2xlYW51cCBpcyBjYWxsZWQuCisJICovCisJTWVtb3J5Q29udGV4dCBjb250ZXh0Owor CisJLyoKKwkgKiBQYXJ0aWFsbHktaW5pdGlhbGl6ZWQgZXhlY3V0b3Igc3RhdGUgdXNlZCBmb3Ig cGVybWlzc2lvbiBjaGVja3MgYW5kCisJICogcHJ1bmluZy4gTWF5IGJlIGFkb3B0ZWQgZGlyZWN0 bHkgYnkgRXhlY3V0b3JTdGFydCgpLCBpbiB3aGljaCBjYXNlCisJICogRXhlY1ByZXBDbGVhbnVw IHdpbGwgc2tpcCBmcmVlaW5nIGl0LgorCSAqLworCUVTdGF0ZQkgICAqcHJlcF9lc3RhdGU7CisK KwkvKgorCSAqIFRydWUgaWYgRXhlY1ByZXBDbGVhbnVwKCkgbXVzdCBmcmVlIHRoZSBFU3RhdGUu ICBJZiB0aGUgZXhlY3V0b3IgYWRvcHRzCisJICogcHJlcF9lc3RhdGUsIHRoaXMgaXMgc2V0IHRv IGZhbHNlIHRvIGF2b2lkIGRvdWJsZS1mcmVlLgorCSAqLworCWJvb2wJCW93bnNfZXN0YXRlOwor CisJLyoKKwkgKiBPcHRpb25hbCBjYWxsZXItc3VwcGxpZWQgY2xlYW51cCBob29rIHRvIHJ1biBk dXJpbmcgRXhlY1ByZXBDbGVhbnVwLgorCSAqIFVzZWZ1bCBmb3IgcmVsZWFzaW5nIGV4dGVybmFs IHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHByZXAuCisJICovCisJZXhlY3ByZXBfY2xl YW51cF9mbiBjbGVhbnVwOworCisJLyoKKwkgKiBPcGFxdWUgcG9pbnRlciB0byBwYXNzIHRvIHRo ZSBjbGVhbnVwIGhvb2suCisJICovCisJdm9pZAkgICAqY2xlYW51cF9hcmc7Cit9IEV4ZWNQcmVw OwogCiAvKgogICogRXhlY1Jvd01hcmsgLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv cG9ydGFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAppbmRleCA1ZmZhNmZkNWNjOC4u MDEzYmNjM2JkOGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCkBAIC0xMzcsNiArMTM3LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUG9ydGFsRGF0YQogCUNvbW1hbmRUYWcJY29tbWFuZFRhZzsJCS8qIGNvbW1hbmQgdGFn IGZvciBvcmlnaW5hbCBxdWVyeSAqLwogCVF1ZXJ5Q29tcGxldGlvbiBxYzsJCQkvKiBjb21tYW5k IGNvbXBsZXRpb24gZGF0YSBmb3IgZXhlY3V0ZWQgcXVlcnkgKi8KIAlMaXN0CSAgICpzdG10czsJ CQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAqLworCUxpc3QJICAgKnByZXBzOwkJCS8qIGxpc3Qg b2YgRXhlY1ByZXBzIHdoZXJlIG5lZWRlZCAqLwogCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8qIENh Y2hlZFBsYW4sIGlmIHN0bXRzIGFyZSBmcm9tIG9uZSAqLwogCiAJUGFyYW1MaXN0SW5mbyBwb3J0 YWxQYXJhbXM7IC8qIHBhcmFtcyB0byBwYXNzIHRvIHF1ZXJ5ICovCkBAIC0yNDAsNiArMjQxLDcg QEAgZXh0ZXJuIHZvaWQgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJCQkJCQkg IGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcs CiAJCQkJCQkJICBMaXN0ICpzdG10cywKKwkJCQkJCQkgIExpc3QgKnByZXBzLAogCQkJCQkJCSAg Q2FjaGVkUGxhbiAqY3BsYW4pOwogZXh0ZXJuIFBsYW5uZWRTdG10ICpQb3J0YWxHZXRQcmltYXJ5 U3RtdChQb3J0YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbENyZWF0ZUhvbGRTdG9yZShQ b3J0YWwgcG9ydGFsKTsKLS0gCjIuNDcuMwoK --000000000000f35fa8064401accf Content-Type: application/octet-stream; name="v3-0006-Make-SQL-function-executor-track-ExecutorPrep-sta.patch" Content-Disposition: attachment; filename="v3-0006-Make-SQL-function-executor-track-ExecutorPrep-sta.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi72au0f0 RnJvbSA3MzNlM2M3MTJlYzU5Yjc1ZGEwMzE2OTQxNTVjOTg0NzZmMjkwZjM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgMTcgTm92IDIwMjUgMTc6NDA6MjYgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz IDYvNl0gTWFrZSBTUUwgZnVuY3Rpb24gZXhlY3V0b3IgdHJhY2sgRXhlY3V0b3JQcmVwIHN0YXRl CgpFeHRlbmQgdGhlIFNRTCBmdW5jdGlvbiBleGVjdXRvciB0byB1c2UgdGhlIEV4ZWN1dG9yUHJl cCByZXN1bHRzCnJldHVybmVkIGJ5IEdldENhY2hlZFBsYW4oKS4gIGluaXRfZXhlY3V0aW9uX3N0 YXRlKCkgbm93IHBhc3NlcyBhCkNhY2hlZFBsYW5QcmVwRGF0YSB0byBHZXRDYWNoZWRQbGFuKCkg YW5kIHN0b3JlcyB0aGUgcGVyIHN0YXRlbWVudApFeGVjUHJlcCBwb2ludGVycyBpbiB0aGUgZXhl Y3V0aW9uX3N0YXRlIG5vZGVzLgoKQXQgZXhlY3V0aW9uIHRpbWUsIHBvc3RxdWVsX3N0YXJ0KCkg cmVwYXJlbnRzIHRoZSBwcmVwIGVzdGF0ZSdzCmVzX3F1ZXJ5X2N4dCB1bmRlciB0aGUgZnVuY3Rp b24ncyBzdWJjb250ZXh0IHNvIHRoYXQgcHJlcCBzdGF0ZQpmb2xsb3dzIHRoZSB1c3VhbCBwZXIg Y2FsbCBjb250ZXh0IGhpZXJhcmNoeS4KClRoaXMgYWxsb3dzIFNRTCBsYW5ndWFnZSBmdW5jdGlv bnMgdG8gcGFydGljaXBhdGUgaW4gdGhlIHNhbWUKRXhlY3V0b3JQcmVwIG1hY2hpbmVyeSBhcyBv dGhlciBwbGFuIGNhY2hlIHVzZXJzLCB3aGljaCBhIGxhdGVyCnBhdGNoIHdpbGwgdXNlIHRvIHN1 cHBvcnQgcHJ1bmluZyBhd2FyZSBsb2NraW5nLgoKQWRkIGEgcmVncmVzc2lvbiB0ZXN0IHdoZXJl IHJ1bGUgcmV3cml0ZSBleHBhbmRzIGEgc2luZ2xlIFVQREFURQppbnRvIG11bHRpcGxlIFBsYW5u ZWRTdG10cywgZXhlcmNpc2luZyB0aGUgU1FMIGZ1bmN0aW9uIHBsYW4gY2FjaGUKYW5kIHRoZSBn ZW5lcmljIHBsYW4gcmV1c2UgcGF0aCB0aGF0IG5vdyBpbnZva2VzIEV4ZWN1dG9yUHJlcC4KLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgfCAzMiArKysrKysrKysr KysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQg fCAzMCArKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGxhbmNh Y2hlLnNxbCAgICAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQs IDg3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMu YwppbmRleCBkODE3MThlYTg0ZS4uZWQ3MzUyZmNlNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9u cy5jCkBAIC03Miw2ICs3Miw3IEBAIHR5cGVkZWYgc3RydWN0IGV4ZWN1dGlvbl9zdGF0ZQogCWJv b2wJCXNldHNSZXN1bHQ7CQkvKiB0cnVlIGlmIHRoaXMgcXVlcnkgcHJvZHVjZXMgZnVuYydzIHJl c3VsdCAqLwogCWJvb2wJCWxhenlFdmFsOwkJLyogdHJ1ZSBpZiBzaG91bGQgZmV0Y2ggb25lIHJv dyBhdCBhIHRpbWUgKi8KIAlQbGFubmVkU3RtdCAqc3RtdDsJCQkvKiBwbGFuIGZvciB0aGlzIHF1 ZXJ5ICovCisJRXhlY1ByZXAgICAqcHJlcDsJCQkvKiBFeGVjdXRvclByZXAoKSBvdXRwdXQgZm9y IHRoaXMgcGxhbiAqLwogCVF1ZXJ5RGVzYyAgKnFkOwkJCQkvKiBudWxsIHVubGVzcyBzdGF0dXMg PT0gUlVOICovCiB9IGV4ZWN1dGlvbl9zdGF0ZTsKIApAQCAtNjU3LDYgKzY1OCw4IEBAIGluaXRf ZXhlY3V0aW9uX3N0YXRlKFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCWV4ZWN1dGlvbl9z dGF0ZSAqbGFzdHRhZ2VzID0gTlVMTDsKIAlpbnQJCQluc3RtdHM7CiAJTGlzdENlbGwgICAqbGM7 CisJQ2FjaGVkUGxhblByZXBEYXRhIGNwcmVwID0gezB9OworCWludAkJCWk7CiAKIAkvKgogCSAq IENsZWFuIHVwIGFmdGVyIHByZXZpb3VzIHF1ZXJ5LCBpZiB0aGVyZSB3YXMgb25lLgpAQCAtNjk1 LDExICs2OTgsMjAgQEAgaW5pdF9leGVjdXRpb25fc3RhdGUoU1FMRnVuY3Rpb25DYWNoZVB0ciBm Y2FjaGUpCiAJICogQ3VycmVudFJlc291cmNlT3duZXIgd2lsbCBiZSB0aGUgc2FtZSB3aGVuIFNo dXRkb3duU1FMRnVuY3Rpb24gcnVucy4pCiAJICovCiAJZmNhY2hlLT5jb3duZXIgPSBDdXJyZW50 UmVzb3VyY2VPd25lcjsKKworCS8qCisJICogSGF2ZSBFeGVjdXRvclByZXAoKSBhbGxvY2F0ZSB1 bmRlciBmY2FjaGUtPmZjb250ZXh0LiAgVGhlIHByZXAKKwkgKiBFU3RhdGVzIGl0IGNyZWF0ZXMg d2lsbCBpbml0aWFsbHkgbGl2ZSB0aGVyZTsgcG9zdHF1ZWxfc3RhcnQoKQorCSAqIHdpbGwgbGF0 ZXIgcmVwYXJlbnQgdGhlaXIgZXNfcXVlcnlfY3h0IGludG8gZmNhY2hlLT5zdWJjb250ZXh0CisJ ICogd2hlbiB1c2luZyB0aGVtIGZvciBleGVjdXRpb24uCisJICovCisJY3ByZXAuY29udGV4dCA9 IGZjYWNoZS0+ZmNvbnRleHQ7CisJY3ByZXAub3duZXIgPSBmY2FjaGUtPmNvd25lcjsKIAlmY2Fj aGUtPmNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLAogCQkJCQkJCQkgIGZjYWNoZS0+ cGFyYW1MSSwKIAkJCQkJCQkJICBmY2FjaGUtPmNvd25lciwKIAkJCQkJCQkJICBOVUxMLAotCQkJ CQkJCQkgIE5VTEwpOworCQkJCQkJCQkgICZjcHJlcCk7CiAKIAkvKgogCSAqIElmIG5lY2Vzc2Fy eSwgbWFrZSBlc2FycmF5W10gYmlnZ2VyIHRvIGhvbGQgdGhlIG5lZWRlZCBzdGF0ZS4KQEAgLTcy MCw5ICs3MzIsMTIgQEAgaW5pdF9leGVjdXRpb25fc3RhdGUoU1FMRnVuY3Rpb25DYWNoZVB0ciBm Y2FjaGUpCiAJLyoKIAkgKiBCdWlsZCBleGVjdXRpb25fc3RhdGUgbGlzdCB0byBtYXRjaCB0aGUg bnVtYmVyIG9mIGNvbnRhaW5lZCBwbGFucy4KIAkgKi8KKwlpID0gMDsKIAlmb3JlYWNoKGxjLCBm Y2FjaGUtPmNwbGFuLT5zdG10X2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqc3RtdCA9IGxmaXJz dF9ub2RlKFBsYW5uZWRTdG10LCBsYyk7CisJCUV4ZWNQcmVwICpwcmVwID0gY3ByZXAucHJlcF9s aXN0ID8gbGlzdF9udGgoY3ByZXAucHJlcF9saXN0LCBpKyspIDoKKwkJCU5VTEw7CiAJCWV4ZWN1 dGlvbl9zdGF0ZSAqbmV3ZXM7CiAKIAkJLyoKQEAgLTc2NCw2ICs3NzksNyBAQCBpbml0X2V4ZWN1 dGlvbl9zdGF0ZShTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAkJbmV3ZXMtPnNldHNSZXN1 bHQgPSBmYWxzZTsJLyogbWlnaHQgY2hhbmdlIGJlbG93ICovCiAJCW5ld2VzLT5sYXp5RXZhbCA9 IGZhbHNlOwkvKiBtaWdodCBjaGFuZ2UgYmVsb3cgKi8KIAkJbmV3ZXMtPnN0bXQgPSBzdG10Owor CQluZXdlcy0+cHJlcCA9IHByZXA7CiAJCW5ld2VzLT5xZCA9IE5VTEw7CiAKIAkJaWYgKHN0bXQt PmNhblNldFRhZykKQEAgLTEzNjIsOCArMTM3OCwyMCBAQCBwb3N0cXVlbF9zdGFydChleGVjdXRp b25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAllbHNlCiAJCWRlc3Qg PSBOb25lX1JlY2VpdmVyOwogCisJaWYgKGVzLT5wcmVwKQorCXsKKwkJLyoKKwkJICogUHJlcCBF U3RhdGVzIHdlcmUgYnVpbHQgdW5kZXIgZmNhY2hlLT5mY29udGV4dC4gIEZvciBleGVjdXRpb24s CisJCSAqIG1ha2UgdGhlaXIgZXNfcXVlcnlfY3h0IGEgY2hpbGQgb2YgZmNhY2hlLT5zdWJjb250 ZXh0IHNvIHRoZXkKKwkJICogZm9sbG93IHRoZSB1c3VhbCBwZXIgY2FsbCBsaWZldGltZS4KKwkJ ICovCisJCUVTdGF0ZSAqcHJlcF9lc3RhdGUgPSBlcy0+cHJlcC0+cHJlcF9lc3RhdGU7CisKKwkJ TWVtb3J5Q29udGV4dFNldFBhcmVudChwcmVwX2VzdGF0ZS0+ZXNfcXVlcnlfY3h0LCBmY2FjaGUt PnN1YmNvbnRleHQpOworCX0KKwogCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwK LQkJCQkJCQkgTlVMTCwKKwkJCQkJCQkgZXMtPnByZXAsCiAJCQkJCQkJIGZjYWNoZS0+ZnVuYy0+ c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCSBJbnZhbGlkU25hcHNo b3QsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQKaW5kZXggMjZjNGM1ZTEw ZmQuLmJmOTM3MzY0NzE2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bs YW5jYWNoZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wbGFuY2FjaGUub3V0 CkBAIC00NTgsNCArNDU4LDM0IEBAIE5PVElDRTogIGNyZWF0aW5nIGluZGV4IG9uIHBhcnRpdGlv biBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMQogCiBkcm9wIHRhYmxlIGludmFsX2R1cmluZ19wcnVu aW5nX3AsIGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbDsKIGRyb3AgZnVuY3Rpb24gaW52YWxp ZGF0ZV9wbGFuY2FjaGVfZnVuYywgc3RhYmxlX3BydW5pbmdfdmFsOworLS0gZXhlcmNpc2Ugc3Fs LWZ1bmN0aW9uIHBsYW4gY2FjaGUgd2hlbiByZXdyaXRlIGV4cGFuZHMgYSBzaW5nbGUgc3RhdGVt ZW50CistLSBpbnRvIG11bHRpcGxlIHBsYW5uZWQgc3RhdGVtZW50cy4gdGhpcyBmb3JjZXMgY2Fj aGVkcGxhbi0+c3RtdF9saXN0IHRvCistLSBjb250YWluIG1vcmUgdGhhbiBvbmUgZW50cnkgYW5k IGNoZWNrcyB0aGF0IGV4ZWN1dG9yIHN0YXRlIGZvciB0aGUgZmlyc3QKKy0tIHJld3JpdHRlbiBz dGF0ZW1lbnQgZG9lcyBub3QgZGVzdHJveSBzdGF0ZSBuZWVkZWQgYnkgdGhlIHNlY29uZCBvbmUu CitzZXQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworY3JlYXRlIHRhYmxl IHNxbGZfYmFzZShpZCBpbnQsIHZhbCBpbnQpOworY3JlYXRlIHRhYmxlIHNxbGZfbG9nKGlkIGlu dCwgbm90ZSB0ZXh0KTsKK2luc2VydCBpbnRvIHNxbGZfYmFzZSB2YWx1ZXMgKDEsIDEwKTsKK2Ny ZWF0ZSBydWxlIHNxbGZfYmFzZV91cGRfbG9nIGFzCitvbiB1cGRhdGUgdG8gc3FsZl9iYXNlIGRv IGFsc28KKyAgICBpbnNlcnQgaW50byBzcWxmX2xvZyhpZCwgbm90ZSkKKyAgICB2YWx1ZXMgKG5l dy5pZCwgJ2xvZ2dlZCBieSBydWxlJyk7CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBzcWxm X2V4ZWNwcmVwX3Rlc3QoYSBpbnQsIHYgaW50KQorcmV0dXJucyB2b2lkCitsYW5ndWFnZSBzcWwK K2FzICQkCisgICAgdXBkYXRlIHNxbGZfYmFzZSBzZXQgdmFsID0gdiB3aGVyZSBpZCA9IGE7Cisk JDsKK3NlbGVjdCBzcWxmX2V4ZWNwcmVwX3Rlc3QoMSwgMjApOworIHNxbGZfZXhlY3ByZXBfdGVz dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBzcWxmX2V4ZWNw cmVwX3Rlc3QoMSwgMzApOworIHNxbGZfZXhlY3ByZXBfdGVzdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKIHJlc2V0IHBsYW5fY2FjaGVfbW9kZTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNoZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w bGFuY2FjaGUuc3FsCmluZGV4IGNjN2ViNGRhNGQzLi43MTMyMDc5OTA0MCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wbGFuY2FjaGUuc3FsCkBAIC0yNzIsNCArMjcyLDMxIEBAIGV4cGxhaW4gKHZlcmJvc2Us IGNvc3RzIG9mZikgZXhlY3V0ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xOwogZHJvcCB0YWJsZSBp bnZhbF9kdXJpbmdfcHJ1bmluZ19wLCBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWduYWw7CiBkcm9w IGZ1bmN0aW9uIGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMsIHN0YWJsZV9wcnVuaW5nX3ZhbDsK IAorLS0gZXhlcmNpc2Ugc3FsLWZ1bmN0aW9uIHBsYW4gY2FjaGUgd2hlbiByZXdyaXRlIGV4cGFu ZHMgYSBzaW5nbGUgc3RhdGVtZW50CistLSBpbnRvIG11bHRpcGxlIHBsYW5uZWQgc3RhdGVtZW50 cy4gdGhpcyBmb3JjZXMgY2FjaGVkcGxhbi0+c3RtdF9saXN0IHRvCistLSBjb250YWluIG1vcmUg dGhhbiBvbmUgZW50cnkgYW5kIGNoZWNrcyB0aGF0IGV4ZWN1dG9yIHN0YXRlIGZvciB0aGUgZmly c3QKKy0tIHJld3JpdHRlbiBzdGF0ZW1lbnQgZG9lcyBub3QgZGVzdHJveSBzdGF0ZSBuZWVkZWQg YnkgdGhlIHNlY29uZCBvbmUuCisKK3NldCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmlj X3BsYW47CisKK2NyZWF0ZSB0YWJsZSBzcWxmX2Jhc2UoaWQgaW50LCB2YWwgaW50KTsKK2NyZWF0 ZSB0YWJsZSBzcWxmX2xvZyhpZCBpbnQsIG5vdGUgdGV4dCk7CisKK2luc2VydCBpbnRvIHNxbGZf YmFzZSB2YWx1ZXMgKDEsIDEwKTsKKworY3JlYXRlIHJ1bGUgc3FsZl9iYXNlX3VwZF9sb2cgYXMK K29uIHVwZGF0ZSB0byBzcWxmX2Jhc2UgZG8gYWxzbworICAgIGluc2VydCBpbnRvIHNxbGZfbG9n KGlkLCBub3RlKQorICAgIHZhbHVlcyAobmV3LmlkLCAnbG9nZ2VkIGJ5IHJ1bGUnKTsKKworY3Jl YXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gc3FsZl9leGVjcHJlcF90ZXN0KGEgaW50LCB2IGludCkK K3JldHVybnMgdm9pZAorbGFuZ3VhZ2Ugc3FsCithcyAkJAorICAgIHVwZGF0ZSBzcWxmX2Jhc2Ug c2V0IHZhbCA9IHYgd2hlcmUgaWQgPSBhOworJCQ7CisKK3NlbGVjdCBzcWxmX2V4ZWNwcmVwX3Rl c3QoMSwgMjApOworc2VsZWN0IHNxbGZfZXhlY3ByZXBfdGVzdCgxLCAzMCk7CisKIHJlc2V0IHBs YW5fY2FjaGVfbW9kZTsKLS0gCjIuNDcuMwoK --000000000000f35fa8064401accf Content-Type: application/octet-stream; name="v3-0003-Reuse-partition-pruning-results-in-parallel-worke.patch" Content-Disposition: attachment; filename="v3-0003-Reuse-partition-pruning-results-in-parallel-worke.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi72au0m3 RnJvbSBkOWQ5NWUwOTk2MWRjYjgyMzZlNWZlN2IyZGE0YTM3ZmRhOGU1OTQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjI6MTc6NDcgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz IDMvNl0gUmV1c2UgcGFydGl0aW9uIHBydW5pbmcgcmVzdWx0cyBpbiBwYXJhbGxlbCB3b3JrZXJz CgpQYXNzIHRoZSBsZWFkZXIncyBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHJlc3VsdHMgYW5k IHVucHJ1bmVkCnJlbGlkcyB0byBwYXJhbGxlbCB3b3JrZXJzIGFuZCByZXVzZSB0aGVtIHZpYSBF eGVjdXRvclByZXAoKS4gVGhpcwphdm9pZHMgcmVwZWF0aW5nIHBydW5pbmcgbG9naWMgaW4gd29y a2Vycywgd2hpY2ggaXMgbm90IG9ubHkKcmVkdW5kYW50IGJ1dCBhbHNvIHJpc2tzIGRpdmVyZ2Vu Y2UgZHVlIHRvIG5vbmRldGVybWluaXNtIGluIHBydW5pbmcKc3RlcHMgb3IgcGFyYW1ldGVyIGV2 YWx1YXRpb24gdGltaW5nLgoKSW50cm9kdWNlIEV4ZWNDaGVja0luaXRpYWxQcnVuaW5nUmVzdWx0 cygpIHRvIHZlcmlmeSB0aGF0IHRoZSByZXN1bHRzCm1hdGNoIHdoYXQgdGhlIHdvcmtlciB3b3Vs ZCBjb21wdXRlLiBUaGlzIGNoZWNrIGhlbHBzIGNhdGNoCmluY29uc2lzdGVuY2llcyBhY3Jvc3Mg bGVhZGVyIGFuZCB3b3JrZXIgcHJ1bmluZyBsb2dpYy4KCldoaWxlIHZhbHVhYmxlIG9uIGl0cyBv d24sIHRoaXMgY2hhbmdlIGFsc28gbGF5cyB0aGUgZm91bmRhdGlvbiBmb3IKZnV0dXJlIG9wdGlt aXphdGlvbnMgd2hlcmUgdGhlIGxlYWRlciBtYXkgdGFrZSBsb2NrcyBvbmx5IG9uCnN1cnZpdmlu ZyBwYXJ0aXRpb25zLiBFbnN1cmluZyB0aGF0IHdvcmtlcnMgZm9sbG93IGlkZW50aWNhbCBwcnVu aW5nCmRlY2lzaW9ucyBtYWtlcyBzdWNoIHNlbGVjdGl2ZSBsb2NraW5nIHNhZmUuCi0tLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgIHwgNjcgKysrKysrKysrKysrKysrKysr KysrKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIHwgMzUgKysr KysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggfCAgMSAr CiAzIGZpbGVzIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBhZWRiZDk1NjZkNi4uNzUxNTkwYWRjYzkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5j bHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oIgor I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9l eGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVBZ2cuaCIKICNpbmNsdWRlICJleGVj dXRvci9ub2RlQXBwZW5kLmgiCkBAIC02NSw2ICs2Niw4IEBACiAjZGVmaW5lIFBBUkFMTEVMX0tF WV9RVUVSWV9URVhUCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDgpCiAjZGVmaW5lIFBB UkFMTEVMX0tFWV9KSVRfSU5TVFJVTUVOVEFUSU9OIFVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAw MDAwOSkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQkJCVVJTlQ2NENPTlNUKDB4RTAw MDAwMDAwMDAwMDAwQSkKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1BBUlRJVElPTl9QUlVORV9SRVNV TFRTCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZ X1VOUFJVTkVEX1JFTElEUwlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMEMpCiAKICNkZWZp bmUgUEFSQUxMRUxfVFVQTEVfUVVFVUVfU0laRQkJNjU1MzYKIApAQCAtNjA4LDEyICs2MTEsMTgg QEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0 YXRlLAogCUZpeGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlICpmcGVzOwogCWNoYXIJICAgKnBzdG10 X2RhdGE7CiAJY2hhcgkgICAqcHN0bXRfc3BhY2U7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1 bHRzX2RhdGE7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNlOworCWNoYXIJICAg KnVucHJ1bmVkX3JlbGlkc19kYXRhOworCWNoYXIJICAgKnVucHJ1bmVkX3JlbGlkc19zcGFjZTsK IAljaGFyCSAgICpwYXJhbWxpc3RpbmZvX3NwYWNlOwogCUJ1ZmZlclVzYWdlICpidWZ1c2FnZV9z cGFjZTsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZV9zcGFjZTsKIAlTaGFyZWRFeGVjdXRvckluc3Ry dW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uID0gTlVMTDsKIAlTaGFyZWRKaXRJbnN0cnVtZW50 YXRpb24gKmppdF9pbnN0cnVtZW50YXRpb24gPSBOVUxMOwogCWludAkJCXBzdG10X2xlbjsKKwlp bnQJCQlwYXJ0X3BydW5lX3Jlc3VsdHNfbGVuOworCWludAkJCXVucHJ1bmVkX3JlbGlkc19sZW47 CiAJaW50CQkJcGFyYW1saXN0aW5mb19sZW47CiAJaW50CQkJaW5zdHJ1bWVudGF0aW9uX2xlbiA9 IDA7CiAJaW50CQkJaml0X2luc3RydW1lbnRhdGlvbl9sZW4gPSAwOwpAQCAtNjQyLDYgKzY1MSw4 IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVz dGF0ZSwKIAogCS8qIEZpeCB1cCBhbmQgc2VyaWFsaXplIHBsYW4gdG8gYmUgc2VudCB0byB3b3Jr ZXJzLiAqLwogCXBzdG10X2RhdGEgPSBFeGVjU2VyaWFsaXplUGxhbihwbGFuc3RhdGUtPnBsYW4s IGVzdGF0ZSk7CisJcGFydF9wcnVuZV9yZXN1bHRzX2RhdGEgPSBub2RlVG9TdHJpbmcoZXN0YXRl LT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMpOworCXVucHJ1bmVkX3JlbGlkc19kYXRhID0gbm9kZVRv U3RyaW5nKGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKTsKIAogCS8qIENyZWF0ZSBhIHBhcmFs bGVsIGNvbnRleHQuICovCiAJcGN4dCA9IENyZWF0ZVBhcmFsbGVsQ29udGV4dCgicG9zdGdyZXMi LCAiUGFyYWxsZWxRdWVyeU1haW4iLCBud29ya2Vycyk7CkBAIC02NjgsNiArNjc5LDE2IEBAIEV4 ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBzdG10X2xlbik7CiAJ c2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCisJLyogRXN0aW1h dGUgc3BhY2UgZm9yIHNlcmlhbGl6ZWQgcGFydF9wcnVuZV9yZXN1bHRzLiAqLworCXBhcnRfcHJ1 bmVfcmVzdWx0c19sZW4gPSBzdHJsZW4ocGFydF9wcnVuZV9yZXN1bHRzX2RhdGEpICsgMTsKKwlz aG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBhcnRfcHJ1bmVfcmVzdWx0 c19sZW4pOworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKKwor CS8qIEVzdGltYXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIHVucHJ1bmVkX3JlbGlkcy4gKi8KKwl1 bnBydW5lZF9yZWxpZHNfbGVuID0gc3RybGVuKHVucHJ1bmVkX3JlbGlkc19kYXRhKSArIDE7CisJ c2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCB1bnBydW5lZF9yZWxpZHNf bGVuKTsKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CisKIAkv KiBFc3RpbWF0ZSBzcGFjZSBmb3Igc2VyaWFsaXplZCBQYXJhbUxpc3RJbmZvLiAqLwogCXBhcmFt bGlzdGluZm9fbGVuID0gRXN0aW1hdGVQYXJhbUxpc3RTcGFjZShlc3RhdGUtPmVzX3BhcmFtX2xp c3RfaW5mbyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBwYXJh bWxpc3RpbmZvX2xlbik7CkBAIC03NjksNiArNzkwLDE2IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFu KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAltZW1jcHkocHN0bXRfc3Bh Y2UsIHBzdG10X2RhdGEsIHBzdG10X2xlbik7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQ QVJBTExFTF9LRVlfUExBTk5FRFNUTVQsIHBzdG10X3NwYWNlKTsKIAorCS8qIFN0b3JlIHNlcmlh bGl6ZWQgcGFydF9wcnVuZV9yZXN1bHRzICovCisJcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNlID0g c2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHBhcnRfcHJ1bmVfcmVzdWx0c19sZW4pOworCW1l bWNweShwYXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2UsIHBhcnRfcHJ1bmVfcmVzdWx0c19kYXRhLCBw YXJ0X3BydW5lX3Jlc3VsdHNfbGVuKTsKKwlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFM TEVMX0tFWV9QQVJUSVRJT05fUFJVTkVfUkVTVUxUUywgcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNl KTsKKworCS8qIFN0b3JlIHNlcmlhbGl6ZWQgdW5wcnVuZWRfcmVsaWRzICovCisJdW5wcnVuZWRf cmVsaWRzX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHVucHJ1bmVkX3JlbGlk c19sZW4pOworCW1lbWNweSh1bnBydW5lZF9yZWxpZHNfc3BhY2UsIHVucHJ1bmVkX3JlbGlkc19k YXRhLCB1bnBydW5lZF9yZWxpZHNfbGVuKTsKKwlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBB UkFMTEVMX0tFWV9VTlBSVU5FRF9SRUxJRFMsIHVucHJ1bmVkX3JlbGlkc19zcGFjZSk7CisKIAkv KiBTdG9yZSBzZXJpYWxpemVkIFBhcmFtTGlzdEluZm8uICovCiAJcGFyYW1saXN0aW5mb19zcGFj ZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBwYXJhbWxpc3RpbmZvX2xlbik7CiAJc2ht X3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgcGFyYW1s aXN0aW5mb19zcGFjZSk7CkBAIC0xMjYzLDEwICsxMjk0LDE1IEBAIEV4ZWNQYXJhbGxlbEdldFF1 ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJCQkJCQkgaW50 IGluc3RydW1lbnRfb3B0aW9ucykKIHsKIAljaGFyCSAgICpwc3RtdHNwYWNlOworCWNoYXIJICAg KnBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZTsKKwljaGFyCSAgICp1bnBydW5lZF9yZWxpZHNfc3Bh Y2U7CiAJY2hhcgkgICAqcGFyYW1zcGFjZTsKIAlQbGFubmVkU3RtdCAqcHN0bXQ7CisJTGlzdAkg ICAqcGFydF9wcnVuZV9yZXN1bHRzOworCUJpdG1hcHNldCAgKnVucHJ1bmVkX3JlbGlkczsKIAlQ YXJhbUxpc3RJbmZvIHBhcmFtTEk7CiAJY2hhcgkgICAqcXVlcnlTdHJpbmc7CisJRXhlY1ByZXAg ICAqcHJlcCA9IE5VTEw7CiAKIAkvKiBHZXQgdGhlIHF1ZXJ5IHN0cmluZyBmcm9tIHNoYXJlZCBt ZW1vcnkgKi8KIAlxdWVyeVN0cmluZyA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X1FVRVJZX1RFWFQsIGZhbHNlKTsKQEAgLTEyNzksOSArMTMxNSwzOCBAQCBFeGVjUGFyYWxsZWxH ZXRRdWVyeURlc2Moc2htX3RvYyAqdG9jLCBEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyLAogCXBhcmFt c3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9QQVJBTUxJU1RJTkZPLCBm YWxzZSk7CiAJcGFyYW1MSSA9IFJlc3RvcmVQYXJhbUxpc3QoJnBhcmFtc3BhY2UpOwogCisJLyog UmVjb25zdHJ1Y3QgbGVhZGVyLXN1cHBsaWVkIHBhcnRfcHJ1bmVfcmVzdWx0cyBhbmQgdW5wcnVu ZWRfcmVsaWRzLiAqLworCXBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZSA9CisJCXNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUlRJVElPTl9QUlVORV9SRVNVTFRTLCBmYWxzZSk7CisJ cGFydF9wcnVuZV9yZXN1bHRzID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKHBhcnRfcHJ1bmVfcmVz dWx0c19zcGFjZSk7CisJdW5wcnVuZWRfcmVsaWRzX3NwYWNlID0KKwkJc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9LRVlfVU5QUlVORURfUkVMSURTLCBmYWxzZSk7CisJdW5wcnVuZWRfcmVs aWRzID0gKEJpdG1hcHNldCAqKSBzdHJpbmdUb05vZGUodW5wcnVuZWRfcmVsaWRzX3NwYWNlKTsK KworCS8qCisJICogSWYgcHJ1bmluZyB3YXMgZG9uZSBpbiB0aGUgbGVhZGVyLCBidWlsZCBhIHBy ZXAgZXN0YXRlIGluIHRoZSB3b3JrZXIKKwkgKiBhbmQgaW5qZWN0IHRoZSBsZWFkZXIncyBwcnVu aW5nIHJlc3VsdHMgaW50byBpdCBmb3IgcmV1c2UuCisJICovCisJaWYgKHBzdG10LT5wYXJ0UHJ1 bmVJbmZvcykKKwl7CisJCXByZXAgPSBFeGVjdXRvclByZXAocHN0bXQsIHBhcmFtTEksIEN1cnJl bnRSZXNvdXJjZU93bmVyLCBmYWxzZSwgMCk7CisJCUFzc2VydChwcmVwLT5wcmVwX2VzdGF0ZSk7 CisKKwkJcHJlcC0+cHJlcF9lc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyA9IHBhcnRfcHJ1 bmVfcmVzdWx0czsKKwkJcHJlcC0+cHJlcF9lc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9CisJ CQlibXNfYWRkX21lbWJlcnMocHJlcC0+cHJlcF9lc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcywK KwkJCQkJCQl1bnBydW5lZF9yZWxpZHMpOworCisJCS8qCisJCSAqIFZlcmlmeSB0aGF0IHRoZSBw cnVuaW5nIHJlc3VsdHMgcGFzc2VkIGZyb20gdGhlIGxlYWRlciBtYXRjaAorCQkgKiB3aGF0IHRo ZSB3b3JrZXIgd291bGQgaW5kZXBlbmRlbnRseSBjb21wdXRlLgorCQkgKi8KKwkJRXhlY0NoZWNr SW5pdGlhbFBydW5pbmdSZXN1bHRzKHByZXAtPnByZXBfZXN0YXRlKTsKKwl9CisKIAkvKiBDcmVh dGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KIAlyZXR1cm4gQ3JlYXRlUXVlcnlEZXNj KHBzdG10LAotCQkJCQkJICAgTlVMTCwKKwkJCQkJCSAgIHByZXAsCiAJCQkJCQkgICBxdWVyeVN0 cmluZywKIAkJCQkJCSAgIEdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJ CQkJCSAgIHJlY2VpdmVyLCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50X29wdGlvbnMpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDE4N2E0ODBlNTA4Li4zYjQ1MGUzMzcz ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTg3Miw2ICsxODcyLDQx IEBAIEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQogCX0KIH0KIAorLyoKKyAq IEV4ZWNDaGVja0luaXRpYWxQcnVuaW5nUmVzdWx0cworICogICAgICBWZXJpZnkgcGFydGl0aW9u IHBydW5pbmcgcmVzdWx0cyBwYXNzZWQgZnJvbSB0aGUgbGVhZGVyIHByb2Nlc3MuCisgKgorICog VGhpcyBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgZHVyaW5nIHBhcmFsbGVsIHdvcmtlciBxdWVy eSBzZXR1cC4KKyAqIEl0IHJlY29tcHV0ZXMgaW5pdGlhbCBwcnVuaW5nIHJlc3VsdHMgbG9jYWxs eSBhbmQgY29tcGFyZXMgdGhlbSB3aXRoCisgKiB0aG9zZSByZWNlaXZlZCBmcm9tIHRoZSBsZWFk ZXIuIEFueSBtaXNtYXRjaCBtYXkgaW5kaWNhdGUgYSBkaXZlcmdlbmNlCisgKiBiZXR3ZWVuIGxl YWRlciBhbmQgd29ya2VyIGxvZ2ljIG9yIGVudmlyb25tZW50LgorICovCit2b2lkCitFeGVjQ2hl Y2tJbml0aWFsUHJ1bmluZ1Jlc3VsdHMoRVN0YXRlICplc3RhdGUpCit7CisJTGlzdENlbGwgICAq bGM7CisJaW50CQkJaTsKKworCUFzc2VydChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyAh PSBOVUxMKTsKKwlpID0gMDsKKwlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3Rh dGVzKQorCXsKKwkJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSA9IChQYXJ0aXRpb25Q cnVuZVN0YXRlICopIGxmaXJzdChsYyk7CisJCUJpdG1hcHNldCAqcmV1c2VfdmFsaWRzdWJwbGFu cyA9CisJCQkJbGlzdF9udGhfbm9kZShCaXRtYXBzZXQsIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9y ZXN1bHRzLCBpKTsKKwkJQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFucyA9IE5VTEw7CisJCUJpdG1h cHNldCAgKnZhbGlkc3VicGxhbl9ydGlzID0gTlVMTDsKKworCQlpZiAocHJ1bmVzdGF0ZS0+ZG9f aW5pdGlhbF9wcnVuZSkKKwkJCXZhbGlkc3VicGxhbnMgPSBFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgJnZhbGlkc3VicGxhbl9ydGlzKTsK KwkJaWYgKGJtc19ub25lbXB0eV9kaWZmZXJlbmNlKHZhbGlkc3VicGxhbnMsIHJldXNlX3ZhbGlk c3VicGxhbnMpKQorCQkJZWxvZyhFUlJPUiwgImRpZmZlcmVudCB2YWxpZHN1YnBsbnMgaW4gcGFy YWxsZWwgd29ya2VyIik7CisJCWlmIChibXNfbm9uZW1wdHlfZGlmZmVyZW5jZSh2YWxpZHN1YnBs YW5fcnRpcywgZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMpKQorCQkJZWxvZyhFUlJPUiwgImRp ZmZlcmVudCB1bnBydW5hYmxlX3JlbGlkcyBpbiBwYXJhbGxlbCB3b3JrZXIiKTsKKwl9Cit9CisK IC8qCiAgKiBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nCiAgKgkJSW5pdGlhbGl6ZSB0aGUg ZGF0YSBzdHJ1Y3R1cmVzIG5lZWRlZCBmb3IgcnVudGltZSAiZXhlYyIgcGFydGl0aW9uCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggYmE4Y2M1OTRmYzkuLjEyNmVmZDAwOGU1 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKKysrIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCkBAIC0xMzIsNiArMTMyLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVTdGF0ZQogCiBleHRlcm4gdm9pZCBFeGVjQ3Jl YXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMoRVN0YXRlICplc3RhdGUpOwogZXh0ZXJuIHZvaWQgRXhl Y0RvSW5pdGlhbFBydW5pbmcoRVN0YXRlICplc3RhdGUpOworZXh0ZXJuIHZvaWQgRXhlY0NoZWNr SW5pdGlhbFBydW5pbmdSZXN1bHRzKEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiBQYXJ0aXRpb25Q cnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0 YXRlLAogCQkJCQkJCQkJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCiAJCQkJCQkJCQkJCQkJ CSBpbnQgcGFydF9wcnVuZV9pbmRleCwKLS0gCjIuNDcuMwoK --000000000000f35fa8064401accf Content-Type: application/octet-stream; name="v3-0001-Refactor-partition-pruning-initialization-for-cla.patch" Content-Disposition: attachment; filename="v3-0001-Refactor-partition-pruning-initialization-for-cla.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi72au0o5 RnJvbSAyNDNkNDA3ZGU4NmIwYTczYjliZDhjOGRiYzU0MWY2MzBlYjMzNzQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjE6MTg6MjQgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz IDEvNl0gUmVmYWN0b3IgcGFydGl0aW9uIHBydW5pbmcgaW5pdGlhbGl6YXRpb24gZm9yIGNsYXJp dHkKIGFuZCBtb2R1bGFyaXR5CgpNb3ZlIHRoZSBjcmVhdGlvbiBvZiBQYXJ0aXRpb25QcnVuZVN0 YXRlIHN0cnVjdHVyZXMgb3V0IG9mCkV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgaW50byBhIG5ldyBF eGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMoKQpmdW5jdGlvbi4gVGhpcyBzZXBhcmF0ZXMg dGhlIHNldHVwIG9mIHBydW5pbmcgc3RhdGUgZnJvbSB0aGUgZXhlY3V0aW9uCm9mIGluaXRpYWwg cHJ1bmluZyBsb2dpYywgbWFraW5nIHRoZSBjb2RlIGNsZWFyZXIgYW5kIGVhc2llciB0bwptYWlu dGFpbi4KCkFsc28gc2ltcGxpZnkgaGFuZGxpbmcgb2YgdW5wcnVuZWQgcmVsaWRzIGJ5IG1vdmlu ZyByZXNwb25zaWJpbGl0eQpmb3IgcmVjb3JkaW5nIHRoZW0gaW4gRVN0YXRlIGludG8gQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZSgpLAphdm9pZGluZyB0aGUgbmVlZCB0byBwYXNzIGFsbF9sZWFm cGFydF9ydGlzIGFzIGFuIG91dCBwYXJhbWV0ZXIuCgpUaGlzIHJlZmFjdG9yaW5nIGFsbG93cyBj YWxsZXJzIHRvIHJldXNlIHRoZSBwcnVuaW5nIHNldHVwIGxvZ2ljCndpdGhvdXQgYWx3YXlzIHRy aWdnZXJpbmcgcHJ1bmluZywgYSBjYXBhYmlsaXR5IHVzZWZ1bCBmb3IgZnV0dXJlIHVzZQpjYXNl cyB0aGF0IG1heSBvbmx5IG5lZWQgbWV0YWRhdGEgaW5pdGlhbGl6YXRpb24uCi0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIHwgNzAgKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIHwgIDEgKwogMiBm aWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggYWExMmU5YWQyZWEuLjg4YjE1MGM4ZDc3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0xODIsOCArMTgyLDcgQEAgc3Rh dGljIGNoYXIgKkV4ZWNCdWlsZFNsb3RQYXJ0aXRpb25LZXlEZXNjcmlwdGlvbihSZWxhdGlvbiBy ZWwsCiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3MoTGlzdCAqY29sbm9zLCBS ZXN1bHRSZWxJbmZvICpsZWFmX3BhcnRfcnJpKTsKIHN0YXRpYyBMaXN0ICphZGp1c3RfcGFydGl0 aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKTsKIHN0 YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICpDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0 ZSAqZXN0YXRlLAotCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8s Ci0JCQkJCQkJCQkJCQkJICBCaXRtYXBzZXQgKiphbGxfbGVhZnBhcnRfcnRpcyk7CisJCQkJCQkJ CQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyk7CiBzdGF0aWMgdm9pZCBJbml0 UGFydGl0aW9uUHJ1bmVDb250ZXh0KFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJ CQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVwcywKIAkJCQkJCQkJCSAgUGFydGl0aW9uRGVzYyBw YXJ0ZGVzYywKQEAgLTE3NzIsNiArMTc3MSw5IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3Vz aW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKgogICogRnVuY3Rpb25z OgogICoKKyAqIEV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlcworICoJCUNyZWF0ZSBQYXJ0 aXRpb25QcnVuZVN0YXRlIGZvciBhbGwgUGFydGl0aW9uUHJ1bmVJbmZvcyBpbiB0aGUgRVN0YXRl CisgKgogICogRXhlY0RvSW5pdGlhbFBydW5pbmc6CiAgKgkJUGVyZm9ybSBydW50aW1lICJpbml0 aWFsIiBwcnVuaW5nLCBpZiBuZWNlc3NhcnksIHRvIGRldGVybWluZSB0aGUgc2V0CiAgKgkJb2Yg Y2hpbGQgc3Vibm9kZXMgdGhhdCBuZWVkIHRvIGJlIGluaXRpYWxpemVkIGR1cmluZyBFeGVjSW5p dE5vZGUoKSBmb3IKQEAgLTE3OTYsNiArMTc5OCwyOSBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5v c191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKi8KIAorLyoKKyAqIEV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlcworICoK KyAqIENyZWF0ZSBhIFBhcnRpdGlvblBydW5lU3RhdGUgZm9yIGVhY2ggUGFydGl0aW9uUHJ1bmVJ bmZvIGluIHRoZSBlc3RhdGUsCisgKiBhbmQgc2F2ZSB0aGVtIGluIGVzdGF0ZS0+ZXNfcGFydF9w cnVuZV9zdGF0ZXMuIFRoaXMgc2V0dXAgaXMgcmVxdWlyZWQKKyAqIGJlZm9yZSBhbnkgaW5pdGlh bCBvciBydW50aW1lIHBydW5pbmcgY2FuIG9jY3VyLgorICovCit2b2lkCitFeGVjQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZXMoRVN0YXRlICplc3RhdGUpCit7CisJTGlzdENlbGwgICAqbGM7CisK Kwlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MpCisJeworCQlQYXJ0aXRp b25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdF9ub2RlKFBhcnRpdGlvblBydW5lSW5mbywg bGMpOworCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOworCisJCS8qIENyZWF0ZSBh bmQgc2F2ZSB0aGUgUGFydGl0aW9uUHJ1bmVTdGF0ZS4gKi8KKwkJcHJ1bmVzdGF0ZSA9IENyZWF0 ZVBhcnRpdGlvblBydW5lU3RhdGUoZXN0YXRlLCBwcnVuZWluZm8pOworCQllc3RhdGUtPmVzX3Bh cnRfcHJ1bmVfc3RhdGVzID0gbGFwcGVuZChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzLAor CQkJCQkJCQkJCQkgICBwcnVuZXN0YXRlKTsKKwl9Cit9CiAKIC8qCiAgKiBFeGVjRG9Jbml0aWFs UHJ1bmluZwpAQCAtMTgwMywxMSArMTgyOCwxMSBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191 c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICoJCW9mIGNoaWxkIHN1 Ym5vZGVzIHRoYXQgbmVlZCB0byBiZSBpbml0aWFsaXplZCBkdXJpbmcgRXhlY0luaXROb2RlKCkg Zm9yCiAgKgkJcGxhbiBub2RlcyB0aGF0IHN1cHBvcnQgcGFydGl0aW9uIHBydW5pbmcuCiAgKgot ICogVGhpcyBmdW5jdGlvbiBpdGVyYXRlcyBvdmVyIGVhY2ggUGFydGl0aW9uUHJ1bmVJbmZvIGVu dHJ5IGluCi0gKiBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MuIEZvciBlYWNoIGVudHJ5LCBp dCBjcmVhdGVzIGEgUGFydGl0aW9uUHJ1bmVTdGF0ZQotICogYW5kIGFkZHMgaXQgdG8gZXNfcGFy dF9wcnVuZV9zdGF0ZXMuICBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKCkgYWNjZXNzZXMK KyAqIFRoaXMgZnVuY3Rpb24gaXRlcmF0ZXMgb3ZlciBlYWNoIFBhcnRpdGlvblBydW5lU3RhdGUg aW4KKyAqIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMsIHdoaWNoIG11c3QgaGF2ZSBiZWVu IHBvcHVsYXRlZCBlYXJsaWVyIGJ5CisgKiBFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMo KS4gRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygpIGFjY2Vzc2VzCiAgKiB0aGVzZSBzdGF0 ZXMgdGhyb3VnaCB0aGVpciBjb3JyZXNwb25kaW5nIGluZGV4ZXMgaW4gZXNfcGFydF9wcnVuZV9z dGF0ZXMgYW5kCi0gKiBhc3NpZ24gZWFjaCBzdGF0ZSB0byB0aGUgcGFyZW50IG5vZGUncyBQbGFu U3RhdGUsIGZyb20gd2hlcmUgaXQgd2lsbCBiZSB1c2VkCisgKiBhc3NpZ25zIGVhY2ggc3RhdGUg dG8gdGhlIHBhcmVudCBub2RlJ3MgUGxhblN0YXRlLCBmcm9tIHdoZXJlIGl0IHdpbGwgYmUgdXNl ZAogICogZm9yICJleGVjIiBwcnVuaW5nLgogICoKICAqIElmIGluaXRpYWwgcHJ1bmluZyBzdGVw cyBleGlzdCBmb3IgYSBQYXJ0aXRpb25QcnVuZUluZm8gZW50cnksIHRoaXMgZnVuY3Rpb24KQEAg LTE4MjUsMjAgKzE4NTAsMTMgQEAgRXhlY0RvSW5pdGlhbFBydW5pbmcoRVN0YXRlICplc3RhdGUp CiB7CiAJTGlzdENlbGwgICAqbGM7CiAKLQlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX3BhcnRfcHJ1 bmVfaW5mb3MpCisJQXNzZXJ0KGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzID09IE5VTEwp OworCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMpCiAJewotCQlQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdF9ub2RlKFBhcnRpdGlvblBydW5lSW5m bywgbGMpOwotCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOworCQlQYXJ0aXRpb25Q cnVuZVN0YXRlICpwcnVuZXN0YXRlID0gKFBhcnRpdGlvblBydW5lU3RhdGUgKikgbGZpcnN0KGxj KTsKIAkJQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFucyA9IE5VTEw7Ci0JCUJpdG1hcHNldCAgKmFs bF9sZWFmcGFydF9ydGlzID0gTlVMTDsKIAkJQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFuX3J0aXMg PSBOVUxMOwogCi0JCS8qIENyZWF0ZSBhbmQgc2F2ZSB0aGUgUGFydGl0aW9uUHJ1bmVTdGF0ZS4g Ki8KLQkJcHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoZXN0YXRlLCBwcnVu ZWluZm8sCi0JCQkJCQkJCQkJCSAgICZhbGxfbGVhZnBhcnRfcnRpcyk7Ci0JCWVzdGF0ZS0+ZXNf cGFydF9wcnVuZV9zdGF0ZXMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMs Ci0JCQkJCQkJCQkJCSAgIHBydW5lc3RhdGUpOwotCiAJCS8qCiAJCSAqIFBlcmZvcm0gaW5pdGlh bCBwcnVuaW5nIHN0ZXBzLCBpZiBhbnksIGFuZCBzYXZlIHRoZSByZXN1bHQKIAkJICogYml0bWFw c2V0IG9yIE5VTEwgYXMgZGVzY3JpYmVkIGluIHRoZSBoZWFkZXIgY29tbWVudC4KQEAgLTE4NDYs OCArMTg2NCw2IEBAIEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQogCQlpZiAo cHJ1bmVzdGF0ZS0+ZG9faW5pdGlhbF9wcnVuZSkKIAkJCXZhbGlkc3VicGxhbnMgPSBFeGVjRmlu ZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJCQkgJnZhbGlk c3VicGxhbl9ydGlzKTsKLQkJZWxzZQotCQkJdmFsaWRzdWJwbGFuX3J0aXMgPSBhbGxfbGVhZnBh cnRfcnRpczsKIAogCQllc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVy cyhlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcywKIAkJCQkJCQkJCQkJCQkgdmFsaWRzdWJwbGFu X3J0aXMpOwpAQCAtMTk2NSwxNCArMTk4MSwxMiBAQCBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVu aW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogICogcGFyZW50IHBsYW4gbm9kZSdzIFBsYW5TdGF0 ZS4KICAqCiAgKiBJZiBpbml0aWFsIHBydW5pbmcgc3RlcHMgYXJlIHRvIGJlIHNraXBwZWQgKGUu Zy4sIGR1cmluZyBFWFBMQUlOCi0gKiAoR0VORVJJQ19QTEFOKSksICphbGxfbGVhZnBhcnRfcnRp cyB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIHRoZSBSVCBpbmRleGVzIG9mCi0gKiBhbGwgbGVhZiBw YXJ0aXRpb25zIHdob3NlIHNjYW5uaW5nIHN1Ym5vZGUgaXMgaW5jbHVkZWQgaW4gdGhlIHBhcmVu dCBwbGFuCi0gKiBub2RlJ3MgbGlzdCBvZiBjaGlsZCBwbGFucy4gVGhlIGNhbGxlciBtdXN0IGFk ZCB0aGVzZSBSVCBpbmRleGVzIHRvCi0gKiBlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcy4KKyAq IChHRU5FUklDX1BMQU4pKSwgdGhlIFJUIGluZGV4ZXMgb2YgYWxsIGxlYWYgcGFydGl0aW9ucyB3 aG9zZSBzY2FubmluZworICogc3Vibm9kZSBpcyBpbmNsdWRlZCBpbiB0aGUgcGFyZW50IHBsYW4g bm9kZSdzIGxpc3Qgb2YgY2hpbGQgcGxhbnMgYXJlCisgKiBhZGRlZCB0byBlc3RhdGUtPmVzX3Vu cHJ1bmVkX3JlbGlkcy4KICAqLwogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKgotQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpw cnVuZWluZm8sCi0JCQkJCQkgIEJpdG1hcHNldCAqKmFsbF9sZWFmcGFydF9ydGlzKQorQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpw cnVuZWluZm8pCiB7CiAJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAlpbnQJCQlu X3BhcnRfaGllcmFyY2hpZXM7CkBAIC0yMjA2LDggKzIyMjAsOCBAQCBDcmVhdGVQYXJ0aXRpb25Q cnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywK IAkJCQkJCQkJCQkJCQkgICBwaW5mby0+ZXhlY3BhcmFtaWRzKTsKIAogCQkJLyoKLQkJCSAqIFJl dHVybiBhbGwgbGVhZiBwYXJ0aXRpb24gaW5kZXhlcyBpZiB3ZSdyZSBza2lwcGluZyBwcnVuaW5n IGluCi0JCQkgKiB0aGUgRVhQTEFJTiAoR0VORVJJQ19QTEFOKSBjYXNlLgorCQkJICogQWRkIGFs bCBsZWFmIHBhcnRpdGlvbiBpbmRleGVzIHRvIGVzX3VucHJ1bmVkX3JlbGlkcyBpZiB3ZSdyZQor CQkJICogc2tpcHBpbmcgcHJ1bmluZyBpbiB0aGUgRVhQTEFJTiAoR0VORVJJQ19QTEFOKSBjYXNl LgogCQkJICovCiAJCQlpZiAocGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcyAmJiAhcHJ1bmVz dGF0ZS0+ZG9faW5pdGlhbF9wcnVuZSkKIAkJCXsKQEAgLTIyMTksOCArMjIzMyw4IEBAIENyZWF0 ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvLAogCQkJCQlJbmRleAkJcnRpbmRleCA9IHBwcnVuZS0+bGVhZnBhcnRfcnRpX21h cFtwYXJ0X2luZGV4XTsKIAogCQkJCQlpZiAocnRpbmRleCkKLQkJCQkJCSphbGxfbGVhZnBhcnRf cnRpcyA9IGJtc19hZGRfbWVtYmVyKCphbGxfbGVhZnBhcnRfcnRpcywKLQkJCQkJCQkJCQkJCQkJ CXJ0aW5kZXgpOworCQkJCQkJZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMgPQorCQkJCQkJCWJt c19hZGRfbWVtYmVyKGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzLCBydGluZGV4KTsKIAkJCQl9 CiAJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u aCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAppbmRleCAzYjNmNDZhY2Vk MC4uYmE4Y2M1OTRmYzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTEz MCw2ICsxMzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlCiAJUGFydGl0 aW9uUHJ1bmluZ0RhdGEgKnBhcnRwcnVuZWRhdGFbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0g UGFydGl0aW9uUHJ1bmVTdGF0ZTsKIAorZXh0ZXJuIHZvaWQgRXhlY0NyZWF0ZVBhcnRpdGlvblBy dW5lU3RhdGVzKEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiB2b2lkIEV4ZWNEb0luaXRpYWxQcnVu aW5nKEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVjSW5p dFBhcnRpdGlvbkV4ZWNQcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJCQkJ CQkgaW50IG5fdG90YWxfc3VicGxhbnMsCi0tIAoyLjQ3LjMKCg== --000000000000f35fa8064401accf--