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 1w9loC-001jLs-2q for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 15:24:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9loB-009oQv-1P for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 15:24:11 +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 1w9loB-009oQn-07 for pgsql-hackers@lists.postgresql.org; Mon, 06 Apr 2026 15:24:11 +0000 Received: from mail-ej1-x633.google.com ([2a00:1450:4864:20::633]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w9lo8-00000000v3H-2vmu for pgsql-hackers@lists.postgresql.org; Mon, 06 Apr 2026 15:24:10 +0000 Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-b980785a0bfso507675866b.3 for ; Mon, 06 Apr 2026 08:24:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1775489048; x=1776093848; darn=lists.postgresql.org; h=in-reply-to:references:mime-version:from:to:subject:cc:message-id :date:from:to:cc:subject:date:message-id:reply-to; bh=EGpmoBP7lkR0XPhWaBH+cjrQnB3A6xujDLwLtSqexTI=; b=I+hO8fvFlMOz1VNlkSRySK/TTV9BctwbLlYan1OVii/ETgJNG2a9ByKDN36Y7EtRei 7vuyQs8Yshd+g8JYmTm5yS7qc1g9G0SvrS2X0D6pyJsg/sBpzmpquXkvtkwtAQRf9874 Uj8TTz42Z9sBm/SIj7dUTw4lRhwHstSXxx13myyPcIhgZZZAITl2XXdQxfTIPOow+nTz Va4iGy6oAgSJL4XGqNrWVMP1IZ9r8ugBuIHAgIUDG1pFV/DcRrtim4HN8LgR3RCXoQWS 0ydV7Q5ok+z3hJ8z9pkVO4fsPVUprEMmjgDWvtzdYxZHHeZAHfVRvZduFKpIfYoriGuX Moxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775489048; x=1776093848; h=in-reply-to:references:mime-version:from:to:subject:cc:message-id :date:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=EGpmoBP7lkR0XPhWaBH+cjrQnB3A6xujDLwLtSqexTI=; b=rpSmBYwV+En/cDl9OJ2nJ3Z+sCSEA1O+MqXLtg1p1UaTDSgMhuGIXOb7Iq0/ykgmMJ tkDsc/zHDmVBkUaizoVYvP6+1SpNrz1T7EpWVaNrI9xFu4IaBk8sR4ulJhEQYKi90+kb QSIO089uFCVt/007IPKwUJKd0s40fEtREv1TqF0MDp1vBEhe9+9Ng0RHmtMSGj/jWLy7 CzxSuGBeAAw5rWdvqyH8MFJ+H+HjJd/yGdvbT6UqZ2R7frjj0eQMTSLMwrfOhru6xU8s GnWX/w6zVQ5yVhMLAogM7wnYwMRK9u4TMmxPDyd/j6mtruBWdPvbRyz4rZA6aMwjf5cg pGQA== X-Forwarded-Encrypted: i=1; AJvYcCWO0NZPp3zBFTm6PVH73uYy8thyoOw0HL0/QXVu70g9NhyqtPOfzvku09DhyXbVMiEHWKJ7VOdtMbpF/OV9@lists.postgresql.org X-Gm-Message-State: AOJu0Yx1UNYQROYBRpUpr5Onl+KtfTIm6MyY1OHuTWBNzdGVWSha0Z1B Ze9PilD9QvbcqFbhhMnh3+qHBOQGfN47m8MAh+OmKRLDfyF+yE9JXe6vd1xLathFfd4= X-Gm-Gg: AeBDietaAanfZKAkEch6zWkPi4jdZSxaeHMeAegS1sD9nBWiNjgGy7FXhrVHMou9WNY v8F8qvN0kg/WdsFYt8UVBpgAcLO8cBuA0Ytqth9Vvy6ngPkhYODG75ZiV3PwqLzLwRoMyfN52+H /7yYb5u/PSJqbPCWbUSznJdcaXsqFPmgj9ETMw72S9CVcvSO+7QIn0UqfJd5zts6QTBiObzuRAn TuVExYOKXs726QZGZOp8ZmgSDqI+LTOOsb/1U6H0akVPYK1kG+C2wM1XJmpdplS3ZxlS1IPooJq Oa7MkjXTx304Z/lx4qUYrHwkYEoVTAGRQOOJ+O5TfWy/YF/xzDbtp+QGiGBJ4p9kuzTDKwMFaUV 2FzFFLvLAySQkKlDtZNlIhG1cPGQopFRp6XMMX9f2jQegTvKnvOa15qsIfDQ4KaVSDEj9LPtMVB 0esRaq6f2hNkxBD97bs7GcCd7X5UhetM1HdghVyLKzXm2M1ATQ X-Received: by 2002:a17:907:3e8a:b0:b9b:fc58:b72c with SMTP id a640c23a62f3a-b9c679929d8mr550392766b.51.1775489047535; Mon, 06 Apr 2026 08:24:07 -0700 (PDT) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9c3ca9975bsm475904066b.22.2026.04.06.08.24.06 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 06 Apr 2026 08:24:06 -0700 (PDT) Content-Type: multipart/mixed; boundary=dda76748074d882f0393d54c84e8774dda7df154bd1ed5d46eff6b117f20 Date: Mon, 06 Apr 2026 17:24:06 +0200 Message-Id: Cc: "David G. Johnston" , "Japin Li" , "Zsolt Parragi" , "Euler Taveira" , =?utf-8?q?=C3=81lvaro_Herrera?= , "PostgreSQL Hackers" Subject: Re: pg_get__*_ddl consolidation To: "Andrew Dunstan" From: "Jelte Fennema-Nio" MIME-Version: 1.0 References: <202603201311.yhtqmvektawm@alvherre.pgsql> <8ec9b67d-939e-4b22-8d56-a5129f92d32d@app.fastmail.com> <555cdee4-c024-4872-9d96-82ef4216239c@dunslane.net> <34dc4d59-fec8-43c2-aa7b-38917b3ce0aa@dunslane.net> In-Reply-To: <34dc4d59-fec8-43c2-aa7b-38917b3ce0aa@dunslane.net> X-TUID: hx9vIfAYXALU List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --dda76748074d882f0393d54c84e8774dda7df154bd1ed5d46eff6b117f20 Content-Type: multipart/alternative; boundary=1ab8af7fbe3fd314735bc1e60dd4350a1f58bf494edd2dd451d1dc8fbe67 --1ab8af7fbe3fd314735bc1e60dd4350a1f58bf494edd2dd451d1dc8fbe67 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Mon, 6 Apr 2026 at 13:55, Andrew Dunstan wrote: > There was quite a deal of discussion around this mechanism. See Euler's > review at [1] and follow-up at [2] for the original discussion of the > VARIADIC option-parsing design and the use cases it was meant to > address. I'm prepared to revisit it is there's a strong consensus on the > point. Thanks for those links. I had not seen that part of the discussion. But I only see an explanation of why these functions are configurable with optional key+value pairs in their arguments. I think that makes sense, and I totally agree that we should do that. The thing I'm questioning is whether we need a new way of providing key+value pairs as optional arguments to functions. IMO we already had a perfectly fine one. Introducing another adds complexity (both to the code and to the user) and I don't see any compelling reason to do so. Attached is a patch with roughly what I have in mind instead. By doing this we can also make the functinos STRICT, so that we don't have to worry about handling NULL values for the first argument. Afaict this named parameter approach only has benefits over the VARIADIC argument one. But if I'm wrong about that, please let me know. --1ab8af7fbe3fd314735bc1e60dd4350a1f58bf494edd2dd451d1dc8fbe67-- --dda76748074d882f0393d54c84e8774dda7df154bd1ed5d46eff6b117f20 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0001-Use-named-arguments-for-pg_get_-_ddl-functions.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0001-Use-named-arguments-for-pg_get_-_ddl-functions.patch RnJvbSA3MmM1ODBjNmVjMWU4ZTViYzI5YzZlZGZiMTFhZmI4ZTA2MmRlMmI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBNb24sIDYgQXByIDIwMjYgMTc6MDU6MjcgKzAyMDAKU3ViamVjdDogW1BBVENIIHY1 XSBVc2UgbmFtZWQgYXJndW1lbnRzIGZvciBwZ19nZXRfKl9kZGwoKSBmdW5jdGlvbnMKCkluIDQ4 ODE5ODFmOTIwMjQgc29tZSBpbmZyYXN0cnVjdHVyZSB3YXMgaW50cm9kdWNlZCB0byBhbGxvdyBv cHRpb25hbAprZXktdmFsdWUgcGFpcnMgYXMgYXJndW1lbnRzLiBUaGlzIHJlbW92ZXMgdGhhdCBp bmZyYXN0cnVjdHVyZSBpbiBmYXZvcgpvZiBuYW1lZCBhcmd1bWVudHMuIE5vIGN1c3RvbSBwYXJz aW5nIGFuZCB0eXBlY2hlY2tpbmcgbG9naWMgaXMgbmVlZGVkCnRoaXMgd2F5LgotLS0KIGRvYy9z cmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sICAgICAgICAgICAgIHwgIDUzICsrLS0KIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jICAgICAgICAgICAgIHwgMjU2ICsrLS0tLS0tLS0t LS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgIHwg IDM2ICsrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9kYXRhYmFzZV9kZGwub3V0ICAgfCAg MTAgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm9sZV9kZGwub3V0ICAgICAgIHwgICA0 ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RhYmxlc3BhY2VfZGRsLm91dCB8ICAgNCAr LQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZGF0YWJhc2VfZGRsLnNxbCAgICAgICAgfCAgIDkgKy0K IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3JvbGVfZGRsLnNxbCAgICAgICAgICAgIHwgICA0ICstCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC90YWJsZXNwYWNlX2RkbC5zcWwgICAgICB8ICAgNCArLQogc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgfCAgIDIgLQogMTAgZmls ZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgMzA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMv ZnVuYy1pbmZvLnNnbWwKaW5kZXggODBjZjExMDgzZDYuLmFkZjJiYjkzYzBlIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVu Yy9mdW5jLWluZm8uc2dtbApAQCAtMzg5NSw4ICszODk1LDEwIEBAIGFjbCAgICAgIHwge3Bvc3Rn cmVzPWFyd2REeHRtL3Bvc3RncmVzLGZvbz1yL3Bvc3RncmVzfQogICAgICAgICA8L2luZGV4dGVy bT4KICAgICAgICAgPGZ1bmN0aW9uPnBnX2dldF9yb2xlX2RkbDwvZnVuY3Rpb24+CiAgICAgICAg ICggPHBhcmFtZXRlcj5yb2xlPC9wYXJhbWV0ZXI+IDx0eXBlPnJlZ3JvbGU8L3R5cGU+Ci0gICAg ICAgIDxvcHRpb25hbD4sIDxsaXRlcmFsPlZBUklBRElDPC9saXRlcmFsPiA8cGFyYW1ldGVyPm9w dGlvbnM8L3BhcmFtZXRlcj4KLSAgICAgICAgPHR5cGU+dGV4dDwvdHlwZT4gPC9vcHRpb25hbD4g KQorICAgICAgICA8b3B0aW9uYWw+LCA8cGFyYW1ldGVyPnByZXR0eTwvcGFyYW1ldGVyPiA8dHlw ZT5ib29sZWFuPC90eXBlPgorICAgICAgICA8bGl0ZXJhbD5ERUZBVUxUIGZhbHNlPC9saXRlcmFs PiA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+LCA8cGFyYW1ldGVyPm1lbWJlcnNoaXBz PC9wYXJhbWV0ZXI+IDx0eXBlPmJvb2xlYW48L3R5cGU+CisgICAgICAgIDxsaXRlcmFsPkRFRkFV TFQgdHJ1ZTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gKQogICAgICAgICA8cmV0dXJudmFsdWU+c2V0 b2YgdGV4dDwvcmV0dXJudmFsdWU+CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgpAQCAt MzkwNCwxMCArMzkwNiwxMSBAQCBhY2wgICAgICB8IHtwb3N0Z3Jlcz1hcndkRHh0bS9wb3N0Z3Jl cyxmb289ci9wb3N0Z3Jlc30KICAgICAgICAgPGNvbW1hbmQ+QUxURVIgUk9MRSAuLi4gU0VUPC9j b21tYW5kPiBzdGF0ZW1lbnRzIGZvciB0aGUgZ2l2ZW4gcm9sZS4KICAgICAgICAgRWFjaCBzdGF0 ZW1lbnQgaXMgcmV0dXJuZWQgYXMgYSBzZXBhcmF0ZSByb3cuCiAgICAgICAgIFBhc3N3b3JkIGlu Zm9ybWF0aW9uIGlzIG5ldmVyIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuCi0gICAgICAgIFRoZSBm b2xsb3dpbmcgb3B0aW9ucyBhcmUgc3VwcG9ydGVkOiA8bGl0ZXJhbD5wcmV0dHk8L2xpdGVyYWw+ IChib29sZWFuKQotICAgICAgICBmb3IgcHJldHR5LXByaW50ZWQgb3V0cHV0IGFuZCA8bGl0ZXJh bD5tZW1iZXJzaGlwczwvbGl0ZXJhbD4gKGJvb2xlYW4sCi0gICAgICAgIGRlZmF1bHQgdHJ1ZSkg dG8gaW5jbHVkZSA8Y29tbWFuZD5HUkFOVDwvY29tbWFuZD4gc3RhdGVtZW50cyBmb3IKLSAgICAg ICAgcm9sZSBtZW1iZXJzaGlwcyBhbmQgdGhlaXIgb3B0aW9ucy4KKyAgICAgICAgSWYgPHBhcmFt ZXRlcj5wcmV0dHk8L3BhcmFtZXRlcj4gaXMgdHJ1ZSwgdGhlIG91dHB1dCBpcyBmb3JtYXR0ZWQg d2l0aAorICAgICAgICBuZXdsaW5lcyBhbmQgaW5kZW50YXRpb24uCisgICAgICAgIElmIDxwYXJh bWV0ZXI+bWVtYmVyc2hpcHM8L3BhcmFtZXRlcj4gaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLAorICAg ICAgICA8Y29tbWFuZD5HUkFOVDwvY29tbWFuZD4gc3RhdGVtZW50cyBmb3Igcm9sZSBtZW1iZXJz aGlwcyBhbmQgdGhlaXIKKyAgICAgICAgb3B0aW9ucyBhcmUgaW5jbHVkZWQuCiAgICAgICAgPC9w YXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KICAgICAgIDxyb3c+CkBAIC0zOTE3LDE1ICszOTIw LDE5IEBAIGFjbCAgICAgIHwge3Bvc3RncmVzPWFyd2REeHRtL3Bvc3RncmVzLGZvbz1yL3Bvc3Rn cmVzfQogICAgICAgICA8L2luZGV4dGVybT4KICAgICAgICAgPGZ1bmN0aW9uPnBnX2dldF90YWJs ZXNwYWNlX2RkbDwvZnVuY3Rpb24+CiAgICAgICAgICggPHBhcmFtZXRlcj50YWJsZXNwYWNlPC9w YXJhbWV0ZXI+IDx0eXBlPm9pZDwvdHlwZT4KLSAgICAgICAgPG9wdGlvbmFsPiwgPGxpdGVyYWw+ VkFSSUFESUM8L2xpdGVyYWw+IDxwYXJhbWV0ZXI+b3B0aW9uczwvcGFyYW1ldGVyPgotICAgICAg ICA8dHlwZT50ZXh0PC90eXBlPiA8L29wdGlvbmFsPiApCisgICAgICAgIDxvcHRpb25hbD4sIDxw YXJhbWV0ZXI+cHJldHR5PC9wYXJhbWV0ZXI+IDx0eXBlPmJvb2xlYW48L3R5cGU+CisgICAgICAg IDxsaXRlcmFsPkRFRkFVTFQgZmFsc2U8L2xpdGVyYWw+IDwvb3B0aW9uYWw+CisgICAgICAgIDxv cHRpb25hbD4sIDxwYXJhbWV0ZXI+b3duZXI8L3BhcmFtZXRlcj4gPHR5cGU+Ym9vbGVhbjwvdHlw ZT4KKyAgICAgICAgPGxpdGVyYWw+REVGQVVMVCB0cnVlPC9saXRlcmFsPiA8L29wdGlvbmFsPiAp CiAgICAgICAgIDxyZXR1cm52YWx1ZT5zZXRvZiB0ZXh0PC9yZXR1cm52YWx1ZT4KICAgICAgICA8 L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIDxmdW5jdGlvbj5wZ19nZXRfdGFibGVzcGFj ZV9kZGw8L2Z1bmN0aW9uPgogICAgICAgICAoIDxwYXJhbWV0ZXI+dGFibGVzcGFjZTwvcGFyYW1l dGVyPiA8dHlwZT5uYW1lPC90eXBlPgotICAgICAgICA8b3B0aW9uYWw+LCA8bGl0ZXJhbD5WQVJJ QURJQzwvbGl0ZXJhbD4gPHBhcmFtZXRlcj5vcHRpb25zPC9wYXJhbWV0ZXI+Ci0gICAgICAgIDx0 eXBlPnRleHQ8L3R5cGU+IDwvb3B0aW9uYWw+ICkKKyAgICAgICAgPG9wdGlvbmFsPiwgPHBhcmFt ZXRlcj5wcmV0dHk8L3BhcmFtZXRlcj4gPHR5cGU+Ym9vbGVhbjwvdHlwZT4KKyAgICAgICAgPGxp dGVyYWw+REVGQVVMVCBmYWxzZTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlv bmFsPiwgPHBhcmFtZXRlcj5vd25lcjwvcGFyYW1ldGVyPiA8dHlwZT5ib29sZWFuPC90eXBlPgor ICAgICAgICA8bGl0ZXJhbD5ERUZBVUxUIHRydWU8L2xpdGVyYWw+IDwvb3B0aW9uYWw+ICkKICAg ICAgICAgPHJldHVybnZhbHVlPnNldG9mIHRleHQ8L3JldHVybnZhbHVlPgogICAgICAgIDwvcGFy YT4KICAgICAgICA8cGFyYT4KQEAgLTM5MzMsOSArMzk0MCwxMCBAQCBhY2wgICAgICB8IHtwb3N0 Z3Jlcz1hcndkRHh0bS9wb3N0Z3Jlcyxmb289ci9wb3N0Z3Jlc30KICAgICAgICAgdGhlIHNwZWNp ZmllZCB0YWJsZXNwYWNlIChieSBPSUQgb3IgbmFtZSkuICBJZiB0aGUgdGFibGVzcGFjZSBoYXMK ICAgICAgICAgb3B0aW9ucyBzZXQsIGFuIDxjb21tYW5kPkFMVEVSIFRBQkxFU1BBQ0UgLi4uIFNF VDwvY29tbWFuZD4gc3RhdGVtZW50CiAgICAgICAgIGlzIGFsc28gcmV0dXJuZWQuICBFYWNoIHN0 YXRlbWVudCBpcyByZXR1cm5lZCBhcyBhIHNlcGFyYXRlIHJvdy4KLSAgICAgICAgVGhlIGZvbGxv d2luZyBvcHRpb25zIGFyZSBzdXBwb3J0ZWQ6IDxsaXRlcmFsPnByZXR0eTwvbGl0ZXJhbD4gKGJv b2xlYW4pCi0gICAgICAgIGZvciBmb3JtYXR0ZWQgb3V0cHV0IGFuZCA8bGl0ZXJhbD5vd25lcjwv bGl0ZXJhbD4gKGJvb2xlYW4pIHRvIGluY2x1ZGUKLSAgICAgICAgPGxpdGVyYWw+T1dORVI8L2xp dGVyYWw+LgorICAgICAgICBJZiA8cGFyYW1ldGVyPnByZXR0eTwvcGFyYW1ldGVyPiBpcyB0cnVl LCB0aGUgb3V0cHV0IGlzIGZvcm1hdHRlZCB3aXRoCisgICAgICAgIG5ld2xpbmVzIGFuZCBpbmRl bnRhdGlvbi4KKyAgICAgICAgSWYgPHBhcmFtZXRlcj5vd25lcjwvcGFyYW1ldGVyPiBpcyB0cnVl ICh0aGUgZGVmYXVsdCksIGFuCisgICAgICAgIDxsaXRlcmFsPk9XTkVSPC9saXRlcmFsPiBjbGF1 c2UgaXMgaW5jbHVkZWQuCiAgICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KICAg ICAgIDxyb3c+CkBAIC0zOTQ1LDggKzM5NTMsMTIgQEAgYWNsICAgICAgfCB7cG9zdGdyZXM9YXJ3 ZER4dG0vcG9zdGdyZXMsZm9vPXIvcG9zdGdyZXN9CiAgICAgICAgIDwvaW5kZXh0ZXJtPgogICAg ICAgICA8ZnVuY3Rpb24+cGdfZ2V0X2RhdGFiYXNlX2RkbDwvZnVuY3Rpb24+CiAgICAgICAgICgg PHBhcmFtZXRlcj5kYXRhYmFzZTwvcGFyYW1ldGVyPiA8dHlwZT5yZWdkYXRhYmFzZTwvdHlwZT4K LSAgICAgICAgPG9wdGlvbmFsPiwgPGxpdGVyYWw+VkFSSUFESUM8L2xpdGVyYWw+IDxwYXJhbWV0 ZXI+b3B0aW9uczwvcGFyYW1ldGVyPgotICAgICAgICA8dHlwZT50ZXh0PC90eXBlPiA8L29wdGlv bmFsPiApCisgICAgICAgIDxvcHRpb25hbD4sIDxwYXJhbWV0ZXI+cHJldHR5PC9wYXJhbWV0ZXI+ IDx0eXBlPmJvb2xlYW48L3R5cGU+CisgICAgICAgIDxsaXRlcmFsPkRFRkFVTFQgZmFsc2U8L2xp dGVyYWw+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4sIDxwYXJhbWV0ZXI+b3duZXI8 L3BhcmFtZXRlcj4gPHR5cGU+Ym9vbGVhbjwvdHlwZT4KKyAgICAgICAgPGxpdGVyYWw+REVGQVVM VCB0cnVlPC9saXRlcmFsPiA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+LCA8cGFyYW1l dGVyPnRhYmxlc3BhY2U8L3BhcmFtZXRlcj4gPHR5cGU+Ym9vbGVhbjwvdHlwZT4KKyAgICAgICAg PGxpdGVyYWw+REVGQVVMVCB0cnVlPC9saXRlcmFsPiA8L29wdGlvbmFsPiApCiAgICAgICAgIDxy ZXR1cm52YWx1ZT5zZXRvZiB0ZXh0PC9yZXR1cm52YWx1ZT4KICAgICAgICA8L3BhcmE+CiAgICAg ICAgPHBhcmE+CkBAIC0zOTU0LDExICszOTY2LDEyIEBAIGFjbCAgICAgIHwge3Bvc3RncmVzPWFy d2REeHRtL3Bvc3RncmVzLGZvbz1yL3Bvc3RncmVzfQogICAgICAgICBzcGVjaWZpZWQgZGF0YWJh c2UsIGZvbGxvd2VkIGJ5IDxjb21tYW5kPkFMVEVSIERBVEFCQVNFPC9jb21tYW5kPgogICAgICAg ICBzdGF0ZW1lbnRzIGZvciBjb25uZWN0aW9uIGxpbWl0LCB0ZW1wbGF0ZSBzdGF0dXMsIGFuZCBj b25maWd1cmF0aW9uCiAgICAgICAgIHNldHRpbmdzLiAgRWFjaCBzdGF0ZW1lbnQgaXMgcmV0dXJu ZWQgYXMgYSBzZXBhcmF0ZSByb3cuCi0gICAgICAgIFRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUg c3VwcG9ydGVkOgotICAgICAgICA8bGl0ZXJhbD5wcmV0dHk8L2xpdGVyYWw+IChib29sZWFuKSBm b3IgZm9ybWF0dGVkIG91dHB1dCwKLSAgICAgICAgPGxpdGVyYWw+b3duZXI8L2xpdGVyYWw+IChi b29sZWFuKSB0byBpbmNsdWRlIDxsaXRlcmFsPk9XTkVSPC9saXRlcmFsPiwKLSAgICAgICAgYW5k IDxsaXRlcmFsPnRhYmxlc3BhY2U8L2xpdGVyYWw+IChib29sZWFuKSB0byBpbmNsdWRlCi0gICAg ICAgIDxsaXRlcmFsPlRBQkxFU1BBQ0U8L2xpdGVyYWw+LgorICAgICAgICBJZiA8cGFyYW1ldGVy PnByZXR0eTwvcGFyYW1ldGVyPiBpcyB0cnVlLCB0aGUgb3V0cHV0IGlzIGZvcm1hdHRlZCB3aXRo CisgICAgICAgIG5ld2xpbmVzIGFuZCBpbmRlbnRhdGlvbi4KKyAgICAgICAgSWYgPHBhcmFtZXRl cj5vd25lcjwvcGFyYW1ldGVyPiBpcyB0cnVlICh0aGUgZGVmYXVsdCksIGFuCisgICAgICAgIDxs aXRlcmFsPk9XTkVSPC9saXRlcmFsPiBjbGF1c2UgaXMgaW5jbHVkZWQuCisgICAgICAgIElmIDxw YXJhbWV0ZXI+dGFibGVzcGFjZTwvcGFyYW1ldGVyPiBpcyB0cnVlICh0aGUgZGVmYXVsdCksIGEK KyAgICAgICAgPGxpdGVyYWw+VEFCTEVTUEFDRTwvbGl0ZXJhbD4gY2xhdXNlIGlzIGluY2x1ZGVk LgogICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgIDwvdGJvZHk+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9kZGx1dGlscy5jCmluZGV4IGIxNmMyNzdkMDAwLi5mMTk5MDFkNzUyMyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RkbHV0aWxzLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2RkbHV0aWxzLmMKQEAgLTM5LDQyICszOSwxMiBAQAogI2luY2x1ZGUgInV0 aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMv bHN5c2NhY2hlLmgiCi0jaW5jbHVkZSAidXRpbHMvcGdfbG9jYWxlLmgiCiAjaW5jbHVkZSAidXRp bHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMv c3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGls cy92YXJsZW5hLmgiCiAKLS8qIE9wdGlvbiB2YWx1ZSB0eXBlcyBmb3IgRERMIG9wdGlvbiBwYXJz aW5nICovCi10eXBlZGVmIGVudW0KLXsKLQlERExfT1BUX0JPT0wsCi0JRERMX09QVF9URVhULAot CURETF9PUFRfSU5ULAotfSBEZGxPcHRUeXBlOwotCi0vKgotICogQSBzaW5nbGUgRERMIG9wdGlv biBkZXNjcmlwdG9yOiBjYWxsZXIgZmlsbHMgaW4gbmFtZSBhbmQgdHlwZSwKLSAqIHBhcnNlX2Rk bF9vcHRpb25zIGZpbGxzIGluIGlzc2V0ICsgdGhlIGFwcHJvcHJpYXRlIHZhbHVlIGZpZWxkLgot ICovCi10eXBlZGVmIHN0cnVjdCBEZGxPcHRpb24KLXsKLQljb25zdCBjaGFyICpuYW1lOwkJCS8q IG9wdGlvbiBuYW1lIChjYXNlLWluc2Vuc2l0aXZlIG1hdGNoKSAqLwotCURkbE9wdFR5cGUJdHlw ZTsJCQkvKiBleHBlY3RlZCB2YWx1ZSB0eXBlICovCi0JYm9vbAkJaXNzZXQ7CQkJLyogdHJ1ZSBp ZiBjYWxsZXIgc3VwcGxpZWQgdGhpcyBvcHRpb24gKi8KLQkvKiBmaWVsZHMgZm9yIHNwZWNpZmlj IG9wdGlvbiB0eXBlcyAqLwotCXVuaW9uCi0JewotCQlib29sCQlib29sdmFsOwkvKiBmaWxsZWQg aW4gZm9yIERETF9PUFRfQk9PTCAqLwotCQljaGFyCSAgICp0ZXh0dmFsOwkvKiBmaWxsZWQgaW4g Zm9yIERETF9PUFRfVEVYVCAocGFsbG9jJ2QpICovCi0JCWludAkJCWludHZhbDsJCS8qIGZpbGxl ZCBpbiBmb3IgRERMX09QVF9JTlQgKi8KLQl9OwotfSBEZGxPcHRpb247Ci0KLQotc3RhdGljIHZv aWQgcGFyc2VfZGRsX29wdGlvbnMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGludCB2YXJpYWRp Y19zdGFydCwKLQkJCQkJCQkgIERkbE9wdGlvbiAqb3B0cywgaW50IG5vcHRzKTsKIHN0YXRpYyB2 b2lkIGFwcGVuZF9kZGxfb3B0aW9uKFN0cmluZ0luZm8gYnVmLCBib29sIHByZXR0eSwgaW50IGlu ZGVudCwKIAkJCQkJCQkgIGNvbnN0IGNoYXIgKmZtdCwuLi4pCiAJCQlwZ19hdHRyaWJ1dGVfcHJp bnRmKDQsIDUpOwpAQCAtODMsMTUwICs1MywxMSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRfZ3VjX3Zh bHVlKFN0cmluZ0luZm8gYnVmLCBjb25zdCBjaGFyICpuYW1lLAogc3RhdGljIExpc3QgKnBnX2dl dF9yb2xlX2RkbF9pbnRlcm5hbChPaWQgcm9sZWlkLCBib29sIHByZXR0eSwKIAkJCQkJCQkJCSAg Ym9vbCBtZW1iZXJzaGlwcyk7CiBzdGF0aWMgTGlzdCAqcGdfZ2V0X3RhYmxlc3BhY2VfZGRsX2lu dGVybmFsKE9pZCB0c2lkLCBib29sIHByZXR0eSwgYm9vbCBub19vd25lcik7Ci1zdGF0aWMgRGF0 dW0gcGdfZ2V0X3RhYmxlc3BhY2VfZGRsX3NyZihGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgT2lk IHRzaWQsIGJvb2wgaXNudWxsKTsKK3N0YXRpYyBEYXR1bSBwZ19nZXRfdGFibGVzcGFjZV9kZGxf c3JmKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBPaWQgdHNpZCk7CiBzdGF0aWMgTGlzdCAqcGdf Z2V0X2RhdGFiYXNlX2RkbF9pbnRlcm5hbChPaWQgZGJpZCwgYm9vbCBwcmV0dHksCiAJCQkJCQkJ CQkJICBib29sIG5vX293bmVyLCBib29sIG5vX3RhYmxlc3BhY2UpOwogCiAKLS8qCi0gKiBwYXJz ZV9kZGxfb3B0aW9ucwotICogCQlQYXJzZSB2YXJpYWRpYyBuYW1lL3ZhbHVlIG9wdGlvbiBwYWly cwotICoKLSAqIE9wdGlvbnMgYXJlIHBhc3NlZCBhcyBhbHRlcm5hdGluZyBrZXkvdmFsdWUgdGV4 dCBwYWlycy4gIFRoZSBjYWxsZXIKLSAqIHByb3ZpZGVzIGFuIGFycmF5IG9mIERkbE9wdGlvbiBk ZXNjcmlwdG9ycyBzcGVjaWZ5aW5nIHRoZSBhY2NlcHRlZAotICogb3B0aW9uIG5hbWVzIGFuZCB0 aGVpciB0eXBlczsgdGhpcyBmdW5jdGlvbiBtYXRjaGVzIGVhY2ggc3VwcGxpZWQKLSAqIHBhaXIg YWdhaW5zdCB0aGUgYXJyYXksIHZhbGlkYXRlcyB0aGUgdmFsdWUsIGFuZCBmaWxscyBpbiB0aGUK LSAqIHJlc3VsdCBmaWVsZHMuCi0gKi8KLXN0YXRpYyB2b2lkCi1wYXJzZV9kZGxfb3B0aW9ucyhG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgaW50IHZhcmlhZGljX3N0YXJ0LAotCQkJCSAgRGRsT3B0 aW9uICpvcHRzLCBpbnQgbm9wdHMpCi17Ci0JRGF0dW0JICAgKmFyZ3M7Ci0JYm9vbAkgICAqbnVs bHM7Ci0JT2lkCQkgICAqdHlwZXM7Ci0JaW50CQkJbmFyZ3M7Ci0KLQkvKiBDbGVhciBhbGwgb3V0 cHV0IGZpZWxkcyAqLwotCWZvciAoaW50IGkgPSAwOyBpIDwgbm9wdHM7IGkrKykKLQl7Ci0JCW9w dHNbaV0uaXNzZXQgPSBmYWxzZTsKLQkJc3dpdGNoIChvcHRzW2ldLnR5cGUpCi0JCXsKLQkJCWNh c2UgRERMX09QVF9CT09MOgotCQkJCW9wdHNbaV0uYm9vbHZhbCA9IGZhbHNlOwotCQkJCWJyZWFr OwotCQkJY2FzZSBERExfT1BUX1RFWFQ6Ci0JCQkJb3B0c1tpXS50ZXh0dmFsID0gTlVMTDsKLQkJ CQlicmVhazsKLQkJCWNhc2UgRERMX09QVF9JTlQ6Ci0JCQkJb3B0c1tpXS5pbnR2YWwgPSAwOwot CQkJCWJyZWFrOwotCQl9Ci0JfQotCi0JbmFyZ3MgPSBleHRyYWN0X3ZhcmlhZGljX2FyZ3MoZmNp bmZvLCB2YXJpYWRpY19zdGFydCwgdHJ1ZSwKLQkJCQkJCQkJICAmYXJncywgJnR5cGVzLCAmbnVs bHMpOwotCi0JaWYgKG5hcmdzIDw9IDApCi0JCXJldHVybjsKLQotCS8qIEhhbmRsZSBERUZBVUxU IE5VTEwgY2FzZSAqLwotCWlmIChuYXJncyA9PSAxICYmIG51bGxzWzBdKQotCQlyZXR1cm47Ci0K LQlpZiAobmFyZ3MgJSAyICE9IDApCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJIGVycm1zZygidmFyaWFkaWMgYXJn dW1lbnRzIG11c3QgYmUgbmFtZS92YWx1ZSBwYWlycyIpLAotCQkJCSBlcnJoaW50KCJQcm92aWRl IGFuIGV2ZW4gbnVtYmVyIG9mIHZhcmlhZGljIGFyZ3VtZW50cyB0aGF0IGNhbiBiZSBkaXZpZGVk IGludG8gcGFpcnMuIikpKTsKLQotCS8qCi0JICogRm9yIGVhY2ggb3B0aW9uIG5hbWUvdmFsdWUg cGFpciwgZmluZCBjb3JyZXNwb25kaW5nIHBvc2l0aW9uYWwgb3B0aW9uCi0JICogZm9yIHRoZSBv cHRpb24gbmFtZSwgYW5kIGFzc2lnbiB0aGUgb3B0aW9uIHZhbHVlLgotCSAqLwotCWZvciAoaW50 IGkgPSAwOyBpIDwgbmFyZ3M7IGkgKz0gMikKLQl7Ci0JCWNoYXIJICAgKm5hbWU7Ci0JCWNoYXIJ ICAgKnZhbHN0cjsKLQkJRGRsT3B0aW9uICAqb3B0ID0gTlVMTDsKLQotCQlpZiAobnVsbHNbaV0p Ci0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1F VEVSX1ZBTFVFKSwKLQkJCQkJIGVycm1zZygib3B0aW9uIG5hbWUgYXQgdmFyaWFkaWMgcG9zaXRp b24gJWQgaXMgbnVsbCIsIGkgKyAxKSkpOwotCi0JCW5hbWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5n KGFyZ3NbaV0pOwotCi0JCWlmIChudWxsc1tpICsgMV0pCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKLQkJCQkJIGVycm1z ZygidmFsdWUgZm9yIG9wdGlvbiBcIiVzXCIgbXVzdCBub3QgYmUgbnVsbCIsIG5hbWUpKSk7Ci0K LQkJLyogRmluZCBtYXRjaGluZyBvcHRpb24gZGVzY3JpcHRvciAqLwotCQlmb3IgKGludCBqID0g MDsgaiA8IG5vcHRzOyBqKyspCi0JCXsKLQkJCWlmIChwZ19zdHJjYXNlY21wKG5hbWUsIG9wdHNb al0ubmFtZSkgPT0gMCkKLQkJCXsKLQkJCQlvcHQgPSAmb3B0c1tqXTsKLQkJCQlicmVhazsKLQkJ CX0KLQkJfQotCi0JCWlmIChvcHQgPT0gTlVMTCkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCQkgZXJybXNnKCJ1 bnJlY29nbml6ZWQgb3B0aW9uOiBcIiVzXCIiLCBuYW1lKSkpOwotCi0JCWlmIChvcHQtPmlzc2V0 KQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFN RVRFUl9WQUxVRSksCi0JCQkJCSBlcnJtc2coIm9wdGlvbiBcIiVzXCIgaXMgc3BlY2lmaWVkIG1v cmUgdGhhbiBvbmNlIiwKLQkJCQkJCQluYW1lKSkpOwotCi0JCXZhbHN0ciA9IFRleHREYXR1bUdl dENTdHJpbmcoYXJnc1tpICsgMV0pOwotCi0JCXN3aXRjaCAob3B0LT50eXBlKQotCQl7Ci0JCQlj YXNlIERETF9PUFRfQk9PTDoKLQkJCQlpZiAoIXBhcnNlX2Jvb2wodmFsc3RyLCAmb3B0LT5ib29s dmFsKSkKLQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKLQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIHZhbHVlIGZvciBi b29sZWFuIG9wdGlvbiBcIiVzXCI6ICVzIiwKLQkJCQkJCQkJCW5hbWUsIHZhbHN0cikpKTsKLQkJ CQlicmVhazsKLQotCQkJY2FzZSBERExfT1BUX1RFWFQ6Ci0JCQkJb3B0LT50ZXh0dmFsID0gdmFs c3RyOwotCQkJCXZhbHN0ciA9IE5VTEw7CS8qIGRvbid0IHBmcmVlIGJlbG93ICovCi0JCQkJYnJl YWs7Ci0KLQkJCWNhc2UgRERMX09QVF9JTlQ6Ci0JCQkJewotCQkJCQljaGFyCSAgICplbmRwOwot CQkJCQlsb25nCQl2YWw7Ci0KLQkJCQkJZXJybm8gPSAwOwotCQkJCQl2YWwgPSBzdHJ0b2wodmFs c3RyLCAmZW5kcCwgMTApOwotCQkJCQlpZiAoKmVuZHAgIT0gJ1wwJyB8fCBlcnJubyA9PSBFUkFO R0UgfHwKLQkJCQkJCXZhbCA8IFBHX0lOVDMyX01JTiB8fCB2YWwgPiBQR19JTlQzMl9NQVgpCi0J CQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKLQkJCQkJCQkJIGVycm1zZygiaW52YWxpZCB2YWx1ZSBmb3IgaW50ZWdl ciBvcHRpb24gXCIlc1wiOiAlcyIsCi0JCQkJCQkJCQkJbmFtZSwgdmFsc3RyKSkpOwotCQkJCQlv cHQtPmludHZhbCA9IChpbnQpIHZhbDsKLQkJCQl9Ci0JCQkJYnJlYWs7Ci0JCX0KLQotCQlvcHQt Pmlzc2V0ID0gdHJ1ZTsKLQotCQlpZiAodmFsc3RyKQotCQkJcGZyZWUodmFsc3RyKTsKLQkJcGZy ZWUobmFtZSk7Ci0JfQotfQotCiAvKgogICogSGVscGVyIHRvIGFwcGVuZCBhIGZvcm1hdHRlZCBz dHJpbmcgd2l0aCBvcHRpb25hbCBwcmV0dHktcHJpbnRpbmcuCiAgKi8KQEAgLTYwMSwyNyArNDMy LDEzIEBAIHBnX2dldF9yb2xlX2RkbChQR19GVU5DVElPTl9BUkdTKQogCWlmIChTUkZfSVNfRklS U1RDQUxMKCkpCiAJewogCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7Ci0JCU9pZAkJCXJvbGVp ZDsKLQkJRGRsT3B0aW9uCW9wdHNbXSA9IHsKLQkJCXsicHJldHR5IiwgRERMX09QVF9CT09MfSwK LQkJCXsibWVtYmVyc2hpcHMiLCBERExfT1BUX0JPT0x9LAotCQl9OwogCiAJCWZ1bmNjdHggPSBT UkZfRklSU1RDQUxMX0lOSVQoKTsKIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOwogCi0JCWlmIChQR19BUkdJU05VTEwo MCkpCi0JCXsKLQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKLQkJCVNSRl9S RVRVUk5fRE9ORShmdW5jY3R4KTsKLQkJfQotCi0JCXJvbGVpZCA9IFBHX0dFVEFSR19PSUQoMCk7 Ci0JCXBhcnNlX2RkbF9vcHRpb25zKGZjaW5mbywgMSwgb3B0cywgbGVuZ3Rob2Yob3B0cykpOwot Ci0JCXN0YXRlbWVudHMgPSBwZ19nZXRfcm9sZV9kZGxfaW50ZXJuYWwocm9sZWlkLAotCQkJCQkJ CQkJCQkgIG9wdHNbMF0uaXNzZXQgJiYgb3B0c1swXS5ib29sdmFsLAotCQkJCQkJCQkJCQkgICFv cHRzWzFdLmlzc2V0IHx8IG9wdHNbMV0uYm9vbHZhbCk7CisJCXN0YXRlbWVudHMgPSBwZ19nZXRf cm9sZV9kZGxfaW50ZXJuYWwoUEdfR0VUQVJHX09JRCgwKSwKKwkJCQkJCQkJCQkJICBQR19HRVRB UkdfQk9PTCgxKSwKKwkJCQkJCQkJCQkJICBQR19HRVRBUkdfQk9PTCgyKSk7CiAJCWZ1bmNjdHgt PnVzZXJfZmN0eCA9IHN0YXRlbWVudHM7CiAJCWZ1bmNjdHgtPm1heF9jYWxscyA9IGxpc3RfbGVu Z3RoKHN0YXRlbWVudHMpOwogCkBAIC03NTUsNyArNTcyLDcgQEAgcGdfZ2V0X3RhYmxlc3BhY2Vf ZGRsX2ludGVybmFsKE9pZCB0c2lkLCBib29sIHByZXR0eSwgYm9vbCBub19vd25lcikKICAqIHBn X2dldF90YWJsZXNwYWNlX2RkbF9zcmYgLSBjb21tb24gU1JGIGxvZ2ljIGZvciB0YWJsZXNwYWNl IERETAogICovCiBzdGF0aWMgRGF0dW0KLXBnX2dldF90YWJsZXNwYWNlX2RkbF9zcmYoRnVuY3Rp b25DYWxsSW5mbyBmY2luZm8sIE9pZCB0c2lkLCBib29sIGlzbnVsbCkKK3BnX2dldF90YWJsZXNw YWNlX2RkbF9zcmYoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIE9pZCB0c2lkKQogewogCUZ1bmND YWxsQ29udGV4dCAqZnVuY2N0eDsKIAlMaXN0CSAgICpzdGF0ZW1lbnRzOwpAQCAtNzYzLDI1ICs1 ODAsMTMgQEAgcGdfZ2V0X3RhYmxlc3BhY2VfZGRsX3NyZihGdW5jdGlvbkNhbGxJbmZvIGZjaW5m bywgT2lkIHRzaWQsIGJvb2wgaXNudWxsKQogCWlmIChTUkZfSVNfRklSU1RDQUxMKCkpCiAJewog CQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7Ci0JCURkbE9wdGlvbglvcHRzW10gPSB7Ci0JCQl7 InByZXR0eSIsIERETF9PUFRfQk9PTH0sCi0JCQl7Im93bmVyIiwgRERMX09QVF9CT09MfSwKLQkJ fTsKIAogCQlmdW5jY3R4ID0gU1JGX0ZJUlNUQ0FMTF9JTklUKCk7CiAJCW9sZGNvbnRleHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKIAot CQlpZiAoaXNudWxsKQotCQl7Ci0JCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 Ci0JCQlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7Ci0JCX0KLQotCQlwYXJzZV9kZGxfb3B0aW9u cyhmY2luZm8sIDEsIG9wdHMsIGxlbmd0aG9mKG9wdHMpKTsKLQogCQlzdGF0ZW1lbnRzID0gcGdf Z2V0X3RhYmxlc3BhY2VfZGRsX2ludGVybmFsKHRzaWQsCi0JCQkJCQkJCQkJCQkJb3B0c1swXS5p c3NldCAmJiBvcHRzWzBdLmJvb2x2YWwsCi0JCQkJCQkJCQkJCQkJb3B0c1sxXS5pc3NldCAmJiAh b3B0c1sxXS5ib29sdmFsKTsKKwkJCQkJCQkJCQkJCQlQR19HRVRBUkdfQk9PTCgxKSwKKwkJCQkJ CQkJCQkJCQkhUEdfR0VUQVJHX0JPT0woMikpOwogCQlmdW5jY3R4LT51c2VyX2ZjdHggPSBzdGF0 ZW1lbnRzOwogCQlmdW5jY3R4LT5tYXhfY2FsbHMgPSBsaXN0X2xlbmd0aChzdGF0ZW1lbnRzKTsK IApAQCAtODEzLDE0ICs2MTgsNyBAQCBwZ19nZXRfdGFibGVzcGFjZV9kZGxfc3JmKEZ1bmN0aW9u Q2FsbEluZm8gZmNpbmZvLCBPaWQgdHNpZCwgYm9vbCBpc251bGwpCiBEYXR1bQogcGdfZ2V0X3Rh Ymxlc3BhY2VfZGRsX29pZChQR19GVU5DVElPTl9BUkdTKQogewotCU9pZAkJCXRzaWQgPSBJbnZh bGlkT2lkOwotCWJvb2wJCWlzbnVsbDsKLQotCWlzbnVsbCA9IFBHX0FSR0lTTlVMTCgwKTsKLQlp ZiAoIWlzbnVsbCkKLQkJdHNpZCA9IFBHX0dFVEFSR19PSUQoMCk7Ci0KLQlyZXR1cm4gcGdfZ2V0 X3RhYmxlc3BhY2VfZGRsX3NyZihmY2luZm8sIHRzaWQsIGlzbnVsbCk7CisJcmV0dXJuIHBnX2dl dF90YWJsZXNwYWNlX2RkbF9zcmYoZmNpbmZvLCBQR19HRVRBUkdfT0lEKDApKTsKIH0KIAogLyoK QEAgLTgzMCwxOSArNjI4LDEwIEBAIHBnX2dldF90YWJsZXNwYWNlX2RkbF9vaWQoUEdfRlVOQ1RJ T05fQVJHUykKIERhdHVtCiBwZ19nZXRfdGFibGVzcGFjZV9kZGxfbmFtZShQR19GVU5DVElPTl9B UkdTKQogewotCU9pZAkJCXRzaWQgPSBJbnZhbGlkT2lkOwotCU5hbWUJCXRzcG5hbWU7Ci0JYm9v bAkJaXNudWxsOworCU5hbWUJCXRzcG5hbWUgPSBQR19HRVRBUkdfTkFNRSgwKTsKIAotCWlzbnVs bCA9IFBHX0FSR0lTTlVMTCgwKTsKLQotCWlmICghaXNudWxsKQotCXsKLQkJdHNwbmFtZSA9IFBH X0dFVEFSR19OQU1FKDApOwotCQl0c2lkID0gZ2V0X3RhYmxlc3BhY2Vfb2lkKE5hbWVTdHIoKnRz cG5hbWUpLCBmYWxzZSk7Ci0JfQotCi0JcmV0dXJuIHBnX2dldF90YWJsZXNwYWNlX2RkbF9zcmYo ZmNpbmZvLCB0c2lkLCBpc251bGwpOworCXJldHVybiBwZ19nZXRfdGFibGVzcGFjZV9kZGxfc3Jm KGZjaW5mbywKKwkJCQkJCQkJCSBnZXRfdGFibGVzcGFjZV9vaWQoTmFtZVN0cigqdHNwbmFtZSks IGZhbHNlKSk7CiB9CiAKIC8qCkBAIC0xMTIyLDI5ICs5MTEsMTQgQEAgcGdfZ2V0X2RhdGFiYXNl X2RkbChQR19GVU5DVElPTl9BUkdTKQogCWlmIChTUkZfSVNfRklSU1RDQUxMKCkpCiAJewogCQlN ZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7Ci0JCU9pZAkJCWRiaWQ7Ci0JCURkbE9wdGlvbglvcHRz W10gPSB7Ci0JCQl7InByZXR0eSIsIERETF9PUFRfQk9PTH0sCi0JCQl7Im93bmVyIiwgRERMX09Q VF9CT09MfSwKLQkJCXsidGFibGVzcGFjZSIsIERETF9PUFRfQk9PTH0sCi0JCX07CiAKIAkJZnVu Y2N0eCA9IFNSRl9GSVJTVENBTExfSU5JVCgpOwogCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CiAKLQkJaWYgKFBHX0FS R0lTTlVMTCgwKSkKLQkJewotCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwot CQkJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOwotCQl9Ci0KLQkJZGJpZCA9IFBHX0dFVEFSR19P SUQoMCk7Ci0JCXBhcnNlX2RkbF9vcHRpb25zKGZjaW5mbywgMSwgb3B0cywgbGVuZ3Rob2Yob3B0 cykpOwotCi0JCXN0YXRlbWVudHMgPSBwZ19nZXRfZGF0YWJhc2VfZGRsX2ludGVybmFsKGRiaWQs Ci0JCQkJCQkJCQkJCQkgIG9wdHNbMF0uaXNzZXQgJiYgb3B0c1swXS5ib29sdmFsLAotCQkJCQkJ CQkJCQkJICBvcHRzWzFdLmlzc2V0ICYmICFvcHRzWzFdLmJvb2x2YWwsCi0JCQkJCQkJCQkJCQkg IG9wdHNbMl0uaXNzZXQgJiYgIW9wdHNbMl0uYm9vbHZhbCk7CisJCXN0YXRlbWVudHMgPSBwZ19n ZXRfZGF0YWJhc2VfZGRsX2ludGVybmFsKFBHX0dFVEFSR19PSUQoMCksCisJCQkJCQkJCQkJCQkg IFBHX0dFVEFSR19CT09MKDEpLAorCQkJCQkJCQkJCQkJICAhUEdfR0VUQVJHX0JPT0woMiksCisJ CQkJCQkJCQkJCQkgICFQR19HRVRBUkdfQk9PTCgzKSk7CiAJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9 IHN0YXRlbWVudHM7CiAJCWZ1bmNjdHgtPm1heF9jYWxscyA9IGxpc3RfbGVuZ3RoKHN0YXRlbWVu dHMpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAzZWExN2ZjNTYyOS4uMWI1YjZhNjgz ZDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtODYxMCwzNiArODYxMCwzMiBAQAogICBw cm9uYW1lID0+ICdwZ19nZXRfY29uc3RyYWludGRlZicsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJv cmV0dHlwZSA9PiAndGV4dCcsCiAgIHByb2FyZ3R5cGVzID0+ICdvaWQgYm9vbCcsIHByb3NyYyA9 PiAncGdfZ2V0X2NvbnN0cmFpbnRkZWZfZXh0JyB9LAogeyBvaWQgPT4gJzg3NjAnLCBkZXNjciA9 PiAnZ2V0IERETCB0byByZWNyZWF0ZSBhIHJvbGUnLAotICBwcm9uYW1lID0+ICdwZ19nZXRfcm9s ZV9kZGwnLCBwcm92YXJpYWRpYyA9PiAndGV4dCcsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJv bmFtZSA9PiAncGdfZ2V0X3JvbGVfZGRsJywKICAgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXRz ZXQgPT4gJ3QnLCBwcm9yb3dzID0+ICcxMCcsIHByb3JldHR5cGUgPT4gJ3RleHQnLAotICBwcm9h cmd0eXBlcyA9PiAncmVncm9sZSB0ZXh0JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tpLHZ9JywKLSAg cHJvYWxsYXJndHlwZXMgPT4gJ3tyZWdyb2xlLHRleHR9JywKLSAgcHJvbmFyZ2RlZmF1bHRzID0+ ICcxJywgcHJvYXJnZGVmYXVsdHMgPT4gJ3tOVUxMfScsCisgIHByb2FyZ3R5cGVzID0+ICdyZWdy b2xlIGJvb2wgYm9vbCcsCisgIHByb2FyZ25hbWVzID0+ICd7cm9sZWlkLHByZXR0eSxtZW1iZXJz aGlwc30nLAorICBwcm9uYXJnZGVmYXVsdHMgPT4gJzInLCBwcm9hcmdkZWZhdWx0cyA9PiAne2Zh bHNlLHRydWV9JywKICAgcHJvc3JjID0+ICdwZ19nZXRfcm9sZV9kZGwnIH0sCiB7IG9pZCA9PiAn ODc1OCcsIGRlc2NyID0+ICdnZXQgRERMIHRvIHJlY3JlYXRlIGEgdGFibGVzcGFjZScsCi0gIHBy b25hbWUgPT4gJ3BnX2dldF90YWJsZXNwYWNlX2RkbCcsIHByb3ZhcmlhZGljID0+ICd0ZXh0Jywg cHJvaXNzdHJpY3QgPT4gJ2YnLAorICBwcm9uYW1lID0+ICdwZ19nZXRfdGFibGVzcGFjZV9kZGwn LAogICBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHNldCA9PiAndCcsIHByb3Jvd3MgPT4gJzEw JywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCi0gIHByb2FyZ3R5cGVzID0+ICdvaWQgdGV4dCcsCi0g IHByb2FyZ21vZGVzID0+ICd7aSx2fScsCi0gIHByb2FsbGFyZ3R5cGVzID0+ICd7b2lkLHRleHR9 JywKLSAgcHJvbmFyZ2RlZmF1bHRzID0+ICcxJywgcHJvYXJnZGVmYXVsdHMgPT4gJ3tOVUxMfScs CisgIHByb2FyZ3R5cGVzID0+ICdvaWQgYm9vbCBib29sJywKKyAgcHJvYXJnbmFtZXMgPT4gJ3t0 YWJsZXNwYWNlX29pZCxwcmV0dHksb3duZXJ9JywKKyAgcHJvbmFyZ2RlZmF1bHRzID0+ICcyJywg cHJvYXJnZGVmYXVsdHMgPT4gJ3tmYWxzZSx0cnVlfScsCiAgIHByb3NyYyA9PiAncGdfZ2V0X3Rh Ymxlc3BhY2VfZGRsX29pZCcgfSwKIHsgb2lkID0+ICc4NzU5JywgZGVzY3IgPT4gJ2dldCBEREwg dG8gcmVjcmVhdGUgYSB0YWJsZXNwYWNlJywKLSAgcHJvbmFtZSA9PiAncGdfZ2V0X3RhYmxlc3Bh Y2VfZGRsJywgcHJvdmFyaWFkaWMgPT4gJ3RleHQnLCBwcm9pc3N0cmljdCA9PiAnZicsCisgIHBy b25hbWUgPT4gJ3BnX2dldF90YWJsZXNwYWNlX2RkbCcsCiAgIHByb3ZvbGF0aWxlID0+ICdzJywg cHJvcmV0c2V0ID0+ICd0JywgcHJvcm93cyA9PiAnMTAnLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywK LSAgcHJvYXJndHlwZXMgPT4gJ25hbWUgdGV4dCcsCi0gIHByb2FyZ21vZGVzID0+ICd7aSx2fScs Ci0gIHByb2FsbGFyZ3R5cGVzID0+ICd7bmFtZSx0ZXh0fScsCi0gIHByb25hcmdkZWZhdWx0cyA9 PiAnMScsIHByb2FyZ2RlZmF1bHRzID0+ICd7TlVMTH0nLAorICBwcm9hcmd0eXBlcyA9PiAnbmFt ZSBib29sIGJvb2wnLAorICBwcm9hcmduYW1lcyA9PiAne3RhYmxlc3BhY2VfbmFtZSxwcmV0dHks b3duZXJ9JywKKyAgcHJvbmFyZ2RlZmF1bHRzID0+ICcyJywgcHJvYXJnZGVmYXVsdHMgPT4gJ3tm YWxzZSx0cnVlfScsCiAgIHByb3NyYyA9PiAncGdfZ2V0X3RhYmxlc3BhY2VfZGRsX25hbWUnIH0s CiB7IG9pZCA9PiAnODc2MicsIGRlc2NyID0+ICdnZXQgRERMIHRvIHJlY3JlYXRlIGEgZGF0YWJh c2UnLAotICBwcm9uYW1lID0+ICdwZ19nZXRfZGF0YWJhc2VfZGRsJywgcHJvdmFyaWFkaWMgPT4g J3RleHQnLCBwcm9pc3N0cmljdCA9PiAnZicsCisgIHByb25hbWUgPT4gJ3BnX2dldF9kYXRhYmFz ZV9kZGwnLAogICBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHNldCA9PiAndCcsIHByb3Jvd3Mg PT4gJzEwJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCi0gIHByb2FyZ3R5cGVzID0+ICdyZWdkYXRh YmFzZSB0ZXh0JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tpLHZ9JywKLSAgcHJvYWxsYXJndHlwZXMg PT4gJ3tyZWdkYXRhYmFzZSx0ZXh0fScsCi0gIHByb25hcmdkZWZhdWx0cyA9PiAnMScsIHByb2Fy Z2RlZmF1bHRzID0+ICd7TlVMTH0nLAorICBwcm9hcmd0eXBlcyA9PiAncmVnZGF0YWJhc2UgYm9v bCBib29sIGJvb2wnLAorICBwcm9hcmduYW1lcyA9PiAne2RhdGFiYXNlLHByZXR0eSxvd25lcix0 YWJsZXNwYWNlfScsCisgIHByb25hcmdkZWZhdWx0cyA9PiAnMycsIHByb2FyZ2RlZmF1bHRzID0+ ICd7ZmFsc2UsdHJ1ZSx0cnVlfScsCiAgIHByb3NyYyA9PiAncGdfZ2V0X2RhdGFiYXNlX2RkbCcg fSwKIHsgb2lkID0+ICcyNTA5JywKICAgZGVzY3IgPT4gJ2RlcGFyc2UgYW4gZW5jb2RlZCBleHBy ZXNzaW9uIHdpdGggcHJldHR5LXByaW50IG9wdGlvbicsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2RhdGFiYXNlX2RkbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2RhdGFiYXNlX2RkbC5vdXQKaW5kZXggOTc2NTdlNTJjZmEuLjY3MzMyMjEyZjU2IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2RhdGFiYXNlX2RkbC5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9kYXRhYmFzZV9kZGwub3V0CkBAIC0zNiwxMiArMzYs NiBAQCBTRUxFQ1QgKiBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoTlVMTCk7CiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0KICgwIHJvd3MpCiAKLS0tIEludmFsaWQgb3B0aW9uIHZhbHVlIChzaG91bGQg ZXJyb3IpCi1TRUxFQ1QgKiBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Npb25fZGF0 YWJhc2VfZGRsJywgJ293bmVyJywgJ2ludmFsaWQnKTsKLUVSUk9SOiAgaW52YWxpZCB2YWx1ZSBm b3IgYm9vbGVhbiBvcHRpb24gIm93bmVyIjogaW52YWxpZAotLS0gRHVwbGljYXRlIG9wdGlvbiAo c2hvdWxkIGVycm9yKQotU0VMRUNUICogRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNz aW9uX2RhdGFiYXNlX2RkbCcsICdvd25lcicsICdmYWxzZScsICdvd25lcicsICd0cnVlJyk7Ci1F UlJPUjogIG9wdGlvbiAib3duZXIiIGlzIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZQogLS0gV2l0 aG91dCBvcHRpb25zCiBTRUxFQ1QgZGRsX2ZpbHRlcihwZ19nZXRfZGF0YWJhc2VfZGRsKSBGUk9N IHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Npb25fZGF0YWJhc2VfZGRsJyk7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkbF9maWx0ZXIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIApAQCAtNTMsNyArNDcsNyBAQCBTRUxFQ1QgZGRsX2ZpbHRl cihwZ19nZXRfZGF0YWJhc2VfZGRsKSBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Np b25fZGF0YQogKDQgcm93cykKIAogLS0gV2l0aCBvd25lcgotU0VMRUNUIGRkbF9maWx0ZXIocGdf Z2V0X2RhdGFiYXNlX2RkbCkgRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX2Rh dGFiYXNlX2RkbCcsICdvd25lcicsICd0cnVlJyk7CitTRUxFQ1QgZGRsX2ZpbHRlcihwZ19nZXRf ZGF0YWJhc2VfZGRsKSBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Npb25fZGF0YWJh c2VfZGRsJywgb3duZXIgPT4gdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRkbF9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBDUkVBVEUgREFUQUJBU0UgcmVncmVzc2lv bl9kYXRhYmFzZV9kZGwgV0lUSCBURU1QTEFURSA9IHRlbXBsYXRlMCBFTkNPRElORyA9ICdVVEY4 JzsKQEAgLTY0LDcgKzU4LDcgQEAgU0VMRUNUIGRkbF9maWx0ZXIocGdfZ2V0X2RhdGFiYXNlX2Rk bCkgRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX2RhdGEKIAogLS0gUHJldHR5 LXByaW50ZWQgb3V0cHV0CiBccHNldCBmb3JtYXQgdW5hbGlnbmVkCi1TRUxFQ1QgZGRsX2ZpbHRl cihwZ19nZXRfZGF0YWJhc2VfZGRsKSBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Np b25fZGF0YWJhc2VfZGRsJywgJ3ByZXR0eScsICd0cnVlJywgJ3RhYmxlc3BhY2UnLCAnZmFsc2Un KTsKK1NFTEVDVCBkZGxfZmlsdGVyKHBnX2dldF9kYXRhYmFzZV9kZGwpIEZST00gcGdfZ2V0X2Rh dGFiYXNlX2RkbCgncmVncmVzc2lvbl9kYXRhYmFzZV9kZGwnLCBwcmV0dHkgPT4gdHJ1ZSwgdGFi bGVzcGFjZSA9PiBmYWxzZSk7CiBkZGxfZmlsdGVyCiBDUkVBVEUgREFUQUJBU0UgcmVncmVzc2lv bl9kYXRhYmFzZV9kZGwKICAgICBXSVRIIFRFTVBMQVRFID0gdGVtcGxhdGUwCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3JvbGVfZGRsLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcm9sZV9kZGwub3V0CmluZGV4IDU3NTExMWRhNTVjLi5lODdlMTY4ZTFmNSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb2xlX2RkbC5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb2xlX2RkbC5vdXQKQEAgLTY1LDcgKzY1LDcgQEAg U0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZS13aXRoLWRhc2gnKTsK IAogLS0gUHJldHR5LXByaW50ZWQgb3V0cHV0CiBccHNldCBmb3JtYXQgdW5hbGlnbmVkCi1TRUxF Q1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVzc19yb2xlX2RkbF90ZXN0MycsICdwcmV0 dHknLCAndHJ1ZScpOworU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9s ZV9kZGxfdGVzdDMnLCBwcmV0dHkgPT4gdHJ1ZSk7CiBwZ19nZXRfcm9sZV9kZGwKIENSRUFURSBS T0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDMKICAgICBTVVBFUlVTRVIKQEAgLTk5LDcgKzk5LDcg QEAgU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxfbWVtYmVy Jyk7CiAoMyByb3dzKQogCiAtLSBSb2xlIHdpdGggbWVtYmVyc2hpcHMgc3VwcHJlc3NlZAotU0VM RUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxfbWVtYmVyJywgJ21l bWJlcnNoaXBzJywgJ2ZhbHNlJyk7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVn cmVzc19yb2xlX2RkbF9tZW1iZXInLCBtZW1iZXJzaGlwcyA9PiBmYWxzZSk7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9yb2xlX2RkbCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBD UkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX21lbWJlciBOT1NVUEVSVVNFUiBJTkhFUklUIE5P Q1JFQVRFUk9MRSBOT0NSRUFURURCIE5PTE9HSU4gTk9SRVBMSUNBVElPTiBOT0JZUEFTU1JMUzsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFibGVzcGFjZV9kZGwub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90YWJsZXNwYWNlX2RkbC5vdXQKaW5kZXggZTUy MDQzMjczYTkuLjRmMGY0NDAxZDJmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3RhYmxlc3BhY2VfZGRsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Rh Ymxlc3BhY2VfZGRsLm91dApAQCAtNDMsNyArNDMsNyBAQCBTRUxFQ1QgKiBGUk9NIHBnX2dldF90 YWJsZXNwYWNlX2RkbCgncmVncmVzc19hbGxvcHRfdGJsc3AnKTsKIAogLS0gcHJldHR5LXByaW50 ZWQgb3V0cHV0CiBccHNldCBmb3JtYXQgdW5hbGlnbmVkCi1TRUxFQ1QgKiBGUk9NIHBnX2dldF90 YWJsZXNwYWNlX2RkbCgncmVncmVzc19hbGxvcHRfdGJsc3AnLCAncHJldHR5JywgJ3RydWUnKTsK K1NFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxlc3BhY2VfZGRsKCdyZWdyZXNzX2FsbG9wdF90Ymxz cCcsIHByZXR0eSA9PiB0cnVlKTsKIHBnX2dldF90YWJsZXNwYWNlX2RkbAogQ1JFQVRFIFRBQkxF U1BBQ0UgcmVncmVzc19hbGxvcHRfdGJsc3AKICAgICBPV05FUiByZWdyZXNzX3RibHNwY19kZGxf dXNlcgpAQCAtNTIsNyArNTIsNyBAQCBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfYWxsb3B0X3Ri bHNwIFNFVCAoc2VxX3BhZ2VfY29zdD0nMS41JywgcmFuZG9tX3BhZ2VfY29zdAogKDIgcm93cykK IFxwc2V0IGZvcm1hdCBhbGlnbmVkCiAtLSB0YWJsZXNwYWNlIHdpdGggb3duZXIgc3VwcHJlc3Nl ZAotU0VMRUNUICogRlJPTSBwZ19nZXRfdGFibGVzcGFjZV9kZGwoJ3JlZ3Jlc3NfYWxsb3B0X3Ri bHNwJywgJ293bmVyJywgJ2ZhbHNlJyk7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNl X2RkbCgncmVncmVzc19hbGxvcHRfdGJsc3AnLCBvd25lciA9PiBmYWxzZSk7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBnX2dldF90YWJsZXNwYWNlX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQ1JFQVRFIFRBQkxFU1BBQ0UgcmVn cmVzc19hbGxvcHRfdGJsc3AgTE9DQVRJT04gJyc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9kYXRhYmFzZV9kZGwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZGF0YWJhc2Vf ZGRsLnNxbAppbmRleCA4OTc1M2FjNjQxMS4uNTQ3ZTRkMGY4MDAgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2RhdGFiYXNlX2RkbC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvZGF0YWJhc2VfZGRsLnNxbApAQCAtMzUsMjEgKzM1LDE2IEBAIFNFTEVDVCAqIEZST00gcGdf Z2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc2lvbl9kYXRhYmFzZScpOwogLS0gTlVMTCB2YWx1ZQog U0VMRUNUICogRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKE5VTEwpOwogCi0tLSBJbnZhbGlkIG9w dGlvbiB2YWx1ZSAoc2hvdWxkIGVycm9yKQotU0VMRUNUICogRlJPTSBwZ19nZXRfZGF0YWJhc2Vf ZGRsKCdyZWdyZXNzaW9uX2RhdGFiYXNlX2RkbCcsICdvd25lcicsICdpbnZhbGlkJyk7Ci0KLS0t IER1cGxpY2F0ZSBvcHRpb24gKHNob3VsZCBlcnJvcikKLVNFTEVDVCAqIEZST00gcGdfZ2V0X2Rh dGFiYXNlX2RkbCgncmVncmVzc2lvbl9kYXRhYmFzZV9kZGwnLCAnb3duZXInLCAnZmFsc2UnLCAn b3duZXInLCAndHJ1ZScpOwogCiAtLSBXaXRob3V0IG9wdGlvbnMKIFNFTEVDVCBkZGxfZmlsdGVy KHBnX2dldF9kYXRhYmFzZV9kZGwpIEZST00gcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc2lv bl9kYXRhYmFzZV9kZGwnKTsKIAogLS0gV2l0aCBvd25lcgotU0VMRUNUIGRkbF9maWx0ZXIocGdf Z2V0X2RhdGFiYXNlX2RkbCkgRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX2Rh dGFiYXNlX2RkbCcsICdvd25lcicsICd0cnVlJyk7CitTRUxFQ1QgZGRsX2ZpbHRlcihwZ19nZXRf ZGF0YWJhc2VfZGRsKSBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Npb25fZGF0YWJh c2VfZGRsJywgb3duZXIgPT4gdHJ1ZSk7CiAKIC0tIFByZXR0eS1wcmludGVkIG91dHB1dAogXHBz ZXQgZm9ybWF0IHVuYWxpZ25lZAotU0VMRUNUIGRkbF9maWx0ZXIocGdfZ2V0X2RhdGFiYXNlX2Rk bCkgRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX2RhdGFiYXNlX2RkbCcsICdw cmV0dHknLCAndHJ1ZScsICd0YWJsZXNwYWNlJywgJ2ZhbHNlJyk7CitTRUxFQ1QgZGRsX2ZpbHRl cihwZ19nZXRfZGF0YWJhc2VfZGRsKSBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Np b25fZGF0YWJhc2VfZGRsJywgcHJldHR5ID0+IHRydWUsIHRhYmxlc3BhY2UgPT4gZmFsc2UpOwog XHBzZXQgZm9ybWF0IGFsaWduZWQKIAogLS0gUGVybWlzc2lvbiBjaGVjazogcmV2b2tlIENPTk5F Q1Qgb24gZGF0YWJhc2UKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3JvbGVfZGRs LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3JvbGVfZGRsLnNxbAppbmRleCAzZDAxNDIyNDJl Yy4uMTY2N2ExZjZlMTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3JvbGVfZGRs LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9yb2xlX2RkbC5zcWwKQEAgLTQwLDcgKzQw LDcgQEAgU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZS13aXRoLWRh c2gnKTsKIAogLS0gUHJldHR5LXByaW50ZWQgb3V0cHV0CiBccHNldCBmb3JtYXQgdW5hbGlnbmVk Ci1TRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVzc19yb2xlX2RkbF90ZXN0Mycs ICdwcmV0dHknLCAndHJ1ZScpOworU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jl c3Nfcm9sZV9kZGxfdGVzdDMnLCBwcmV0dHkgPT4gdHJ1ZSk7CiBccHNldCBmb3JtYXQgYWxpZ25l ZAogCiAtLSBSb2xlIHdpdGggbWVtYmVyc2hpcHMKQEAgLTU3LDcgKzU3LDcgQEAgUkVTRVQgUk9M RTsKIFNFTEVDVCAqIEZST00gcGdfZ2V0X3JvbGVfZGRsKCdyZWdyZXNzX3JvbGVfZGRsX21lbWJl cicpOwogCiAtLSBSb2xlIHdpdGggbWVtYmVyc2hpcHMgc3VwcHJlc3NlZAotU0VMRUNUICogRlJP TSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxfbWVtYmVyJywgJ21lbWJlcnNoaXBz JywgJ2ZhbHNlJyk7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVzc19yb2xl X2RkbF9tZW1iZXInLCBtZW1iZXJzaGlwcyA9PiBmYWxzZSk7CiAKIC0tIE5vbi1leGlzdGVudCBy b2xlIChzaG91bGQgZXJyb3IpCiBTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCg5OTk5OTk5 OjpvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGFibGVzcGFjZV9kZGwu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGFibGVzcGFjZV9kZGwuc3FsCmluZGV4IGVlM2Nj NmUyZTFlLi5mZWNlOTNkZjI1MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGFi bGVzcGFjZV9kZGwuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2VfZGRs LnNxbApAQCAtMzAsMTEgKzMwLDExIEBAIFNFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxlc3BhY2Vf ZGRsKCdyZWdyZXNzX2FsbG9wdF90YmxzcCcpOwogCiAtLSBwcmV0dHktcHJpbnRlZCBvdXRwdXQK IFxwc2V0IGZvcm1hdCB1bmFsaWduZWQKLVNFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxlc3BhY2Vf ZGRsKCdyZWdyZXNzX2FsbG9wdF90YmxzcCcsICdwcmV0dHknLCAndHJ1ZScpOworU0VMRUNUICog RlJPTSBwZ19nZXRfdGFibGVzcGFjZV9kZGwoJ3JlZ3Jlc3NfYWxsb3B0X3RibHNwJywgcHJldHR5 ID0+IHRydWUpOwogXHBzZXQgZm9ybWF0IGFsaWduZWQKIAogLS0gdGFibGVzcGFjZSB3aXRoIG93 bmVyIHN1cHByZXNzZWQKLVNFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxlc3BhY2VfZGRsKCdyZWdy ZXNzX2FsbG9wdF90YmxzcCcsICdvd25lcicsICdmYWxzZScpOworU0VMRUNUICogRlJPTSBwZ19n ZXRfdGFibGVzcGFjZV9kZGwoJ3JlZ3Jlc3NfYWxsb3B0X3RibHNwJywgb3duZXIgPT4gZmFsc2Up OwogCiBEUk9QIFRBQkxFU1BBQ0UgcmVncmVzc19hbGxvcHRfdGJsc3A7CiAKZGlmZiAtLWdpdCBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKaW5kZXggZTk0MzBlMDdiMzYuLmZiZDFmNDk5YWVjIDEwMDY0NAotLS0gYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdApAQCAtNjM3LDggKzYzNyw2IEBAIERhdGFDaGVja3N1bXNXb3JrZXJSZXN1 bHQKIERhdGFEaXJTeW5jTWV0aG9kCiBEYXRhRHVtcGVyUHRyCiBEYXRhUGFnZURlbGV0ZVN0YWNr Ci1EZGxPcHRUeXBlCi1EZGxPcHRpb24KIERhdGFUeXBlc1VzYWdlQ2hlY2tzCiBEYXRhVHlwZXNV c2FnZVZlcnNpb25DaGVjawogRGF0YWJhc2VJbmZvCgpiYXNlLWNvbW1pdDogOTNkYzFhY2UyMDA3 ZmU3YzExMDNjY2RhM2Q3YmMxM2I0ZWI0MzUyZgotLSAKMi41My4wCgo= --dda76748074d882f0393d54c84e8774dda7df154bd1ed5d46eff6b117f20--