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 1vetJj-001XxE-1n for pgsql-hackers@arkaria.postgresql.org; Sun, 11 Jan 2026 11:09:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vetJi-00Bmv8-0v for pgsql-hackers@arkaria.postgresql.org; Sun, 11 Jan 2026 11:09:07 +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 1vetJh-00Bmv0-2Q for pgsql-hackers@lists.postgresql.org; Sun, 11 Jan 2026 11:09:06 +0000 Received: from mail-qt1-x832.google.com ([2607:f8b0:4864:20::832]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vetJg-005zT9-0O for pgsql-hackers@postgresql.org; Sun, 11 Jan 2026 11:09:06 +0000 Received: by mail-qt1-x832.google.com with SMTP id d75a77b69052e-4edb8d6e98aso547851cf.0 for ; Sun, 11 Jan 2026 03:09:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1768129741; cv=none; d=google.com; s=arc-20240605; b=J0GmplSFS4dCk5eU/PkYSw3t+2EdGWCUBzImtEG7h9lDfy3DF53dxQdDdKJL7TIoAU f+B51xVoSpWxNoOD2U4swfMZeV4GzSTO4ig0/0+tGv9A3nJL/dWrDO6/IBGm9to3zVE8 Zv26WvDOlxHT4vyANCeTwt23GOxQ61ohZdLSsWFr/6BruOFiMJ73lZFqLdD7rhmnWYhv PEwx5F4VTd0fH4aUa6josFPS7BwbHsvMj12Y8WWy9d+E+zesVgDId/n3vCQ1kjfD+BU8 UCOPwaFofuHvNlS0JHRdPIaWNRPDl6LAdyEKWiTssLyIvbUooJ27ZYZmuzmXg6xcbGEd 4GfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=YSkd1TVzPK/HERuZSx+QiSLulc7qEZcOCKK6gFi2OhI=; fh=aD51E+icWB6v+t6sL86Kcc79qE8SttrCBvzWARxQG30=; b=kOWfhTZl9ROxRAORU6Qx9oKzIYQfArkY7rDbmmLpaVhHLLkF1DUwkVJRHinmHRVlda fe7/dWExg6/vlgLD3oSulf/fyTdl3JblBs+8xo+UUa9+O7fFlCjpwmTI+6yV02VrTGpY NKR6cB+RGbP0C83aghZtfc61H9NExVmSdOBojFJdC8QODMmfmD11IXw1bEnNdSkDge2W jYeHBHbmYwfbFFnLHy5ppkXXckrCIwxRMyd+cugjl9YEub8nyHM0mmEJpYkEEt7Yd8vD gVYRBBbak8D5cSFdf605DtU3zDnjjRbNvBnfQnQhlHDFjqMuWHK4MedjCVnpeTbbptJx GBWw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1768129741; x=1768734541; 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=YSkd1TVzPK/HERuZSx+QiSLulc7qEZcOCKK6gFi2OhI=; b=pfXBeiIuAu7EW6gVJKf3gEkX1bp0fdoR6tH9BtcEiqQ81i3Fmups4XGb2lQuo2iZGI ajTEmJLzCiFd5E5SkGt2KswDvcIuBc9xZgfzv6njjoxyJmHMMHobh6d0MXY6YQ0sg72t Y0hKMQVZvS4W5Lfh8lIbTTgczI2K9Uro/YO+uqk6lYQ74dJp0NXs8NGIw95XntXE7yvZ OOBNqEflK8bHmmIUclIvxtfzjLIzfVVPIY0Xl4i7rRD7kbaL/9iHZWX37fh+HHXdcm83 jvuTpoBBk5PyWECS9ZDyd5fQTUxbof5kUazHC/22uxQ2n0J0SmGgJxxTCPtB7RdX3fRi C+8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768129741; x=1768734541; 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=YSkd1TVzPK/HERuZSx+QiSLulc7qEZcOCKK6gFi2OhI=; b=S6+7B3wITCb9On9FWhvwEZVduA5DogiJkPVF+WORTu8XIsskKQ6LmMx+T0fxoUHAaB k5HF0f+/lqBJaaLiimtoxrbrzlCbom0/yaU5MwOxma+siOtrP1ROK+u2nksd9stU4OXg Zp1qtJR5H2WzlbWF0l8bMpyJjHpi5gbc+o6hGG5bUJYpFebzzk2yS29H0t+zkzS9L6Nm 2Tlx9y6289Yx0ftMwpF+eyls7VPusShcR1/YBrXcVw9GDHccqbbW2T8BvfApditkA7w5 4Mo6FCQn7DLgtI//0GTDdLQQXpUs3cF6HB+ZOOnjdzbHY1hX6YPAbIo6l2IXiBoNTUR5 dO7g== X-Forwarded-Encrypted: i=1; AJvYcCXihBVFxPragiWTvFkSGGxUSMuxDpoBTQiKSBvkyPKnsYfLaLjpkIanJQvNdexHUPaC01zaUUmThumuMW3v@postgresql.org X-Gm-Message-State: AOJu0Yz+QnouzTbo+8ArHeb9BUg9UMlt7BWs74iK85ZqOPnHDZa8/R8H 0wm97hop70HDbHH+MId9SOxrD7zsSko6Ko6p2bSmPz0TcLBBc6JAJ8DwafklgiU/wpceKS8TPAH Mc2jnGR5/fvcchJDkpyEUkDjHZN0F1CSLHM3yDHy4 X-Gm-Gg: AY/fxX4yV4QBkn4aewmB/Kugtq3c5YFQHYuwX9EKg2CtHa9vJl1E9emDSFoKVzqDXWB xVZxi6yj/j6flGC6KY1m7+YvORh6gK1A3RDZG3GmOlgsXHSKoXeLUt5wx4ga/E8RJF6YeddAi1D FkMAX9yjTrK0d4bcxKv7wTaP77giTNLRtWX57OsSWw+Epov5ZxII+wDi6EVpx9Sf2Xmd+E8/zNL 3/SUNVPBspBZbJCpuqNWbUqHgZRlym4DZQmpmRaWq7t/xdqbaXoOqsTnq991jVzZOVzKIo7ET4Q RFLWQfK7hVof5iE61U6/uSrTzEM= X-Received: by 2002:ac8:5f87:0:b0:4ff:bfd9:dd31 with SMTP id d75a77b69052e-5011975f127mr11633381cf.5.1768129741270; Sun, 11 Jan 2026 03:09:01 -0800 (PST) MIME-Version: 1.0 References: <20230814150737.GA1395427@nathanxps13> <20230815153423.GB2296544@nathanxps13> In-Reply-To: From: Hannu Krosing Date: Sun, 11 Jan 2026 12:08:46 +0100 X-Gm-Features: AZwV_QhzyRMSgMuPwh_88wOCli3O71iWlJpmTHyAMaHxxsNF7LpOscRObLTsQEE Message-ID: Subject: Re: pgbench - adding pl/pgsql versions of tests To: Robert Treat Cc: Robert Haas , Nathan Bossart , Fabien COELHO , pgsql-hackers Content-Type: multipart/mixed; boundary="00000000000025ea0f06481ac9b8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000025ea0f06481ac9b8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Sep 1, 2025 at 3:28=E2=80=AFPM Robert Treat wrote: > Hey Hannu, > > I took the above for a spin and generally it all worked well and I do > think it is a nice addition. > Attached v4 patch basically combines v3 > 01 and 02 patches into one (you need both or the build fails on the > docs, so...), along with the following changes: > - whitespace and typo fixes in pgbench.c > - wordsmithing the caution notification, clean up --no-functions doc > - document the new Yy options alongside other -I options. Thanks, very useful. > On that last item, I did notice that there is a potential backwards > compatibility issue, which is that existing scripts that are reliant > on functions existing will need to be updated to include "y", but that > feels pretty niche, so I am not personally worried about it. As the functions are a new addition anyway I am also not worried. Here is a rebased version, only change is in the flag id for --no-functions --- Hannu --00000000000025ea0f06481ac9b8 Content-Type: application/x-patch; name="v5-0001-rebased-changed-no-functions-flag-id-from-18-to-19.patch" Content-Disposition: attachment; filename="v5-0001-rebased-changed-no-functions-flag-id-from-18-to-19.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk9mrnaq0 RnJvbSA3MTlmM2FjYmZmNTJkZTYwNGE3ZDE4ZjI3MDA5N2QxMTY4NmM3MWRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYW5udSBLcm9zaW5nIDxoYW5udWtAZ29vZ2xlLmNvbT4KRGF0 ZTogU3VuLCAxMSBKYW4gMjAyNiAxMTo1NDo1NSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjVdIHJl YmFzZWQsIGNoYW5nZWQgLS1uby1mdW5jdGlvbnMgZmxhZyBpZCBmcm9tIDE4IHRvIDE5CgotLS0K IGRvYy9zcmMvc2dtbC9yZWYvcGdiZW5jaC5zZ21sIHwgIDc0ICsrKysrKysrKysrKy0tCiBzcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jICAgICB8IDE4NyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDI0NyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVuY2guc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvcGdiZW5jaC5zZ21sCmluZGV4IDJlNDAxZDFjZWI4Li5kN2IyMWNjZDFhNiAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9wZ2JlbmNoLnNnbWwKQEAgLTEwMSwxMiArMTAxLDEyIEBAIHBnYmVuY2ggLWkgPG9w dGlvbmFsPiA8cmVwbGFjZWFibGU+b3RoZXItb3B0aW9uczwvcmVwbGFjZWFibGU+IDwvb3B0aW9u YWw+IDxyZXBsCiAKICAgPGNhdXRpb24+CiAgICA8cGFyYT4KLSAgICA8bGl0ZXJhbD5wZ2JlbmNo IC1pPC9saXRlcmFsPiBjcmVhdGVzIGZvdXIgdGFibGVzIDxzdHJ1Y3RuYW1lPnBnYmVuY2hfYWNj b3VudHM8L3N0cnVjdG5hbWU+LAotICAgIDxzdHJ1Y3RuYW1lPnBnYmVuY2hfYnJhbmNoZXM8L3N0 cnVjdG5hbWU+LCA8c3RydWN0bmFtZT5wZ2JlbmNoX2hpc3Rvcnk8L3N0cnVjdG5hbWU+LCBhbmQK LSAgICA8c3RydWN0bmFtZT5wZ2JlbmNoX3RlbGxlcnM8L3N0cnVjdG5hbWU+LAotICAgIGRlc3Ry b3lpbmcgYW55IGV4aXN0aW5nIHRhYmxlcyBvZiB0aGVzZSBuYW1lcy4KLSAgICBCZSB2ZXJ5IGNh cmVmdWwgdG8gdXNlIGFub3RoZXIgZGF0YWJhc2UgaWYgeW91IGhhdmUgdGFibGVzIGhhdmluZyB0 aGVzZQotICAgIG5hbWVzIQorICAgIDxsaXRlcmFsPnBnYmVuY2ggLWk8L2xpdGVyYWw+IGNyZWF0 ZXMgZm91ciB0YWJsZXMgKDxzdHJ1Y3RuYW1lPnBnYmVuY2hfYWNjb3VudHM8L3N0cnVjdG5hbWU+ LAorICAgIDxzdHJ1Y3RuYW1lPnBnYmVuY2hfYnJhbmNoZXM8L3N0cnVjdG5hbWU+LCA8c3RydWN0 bmFtZT5wZ2JlbmNoX2hpc3Rvcnk8L3N0cnVjdG5hbWU+LAorICAgIGFuZCA8c3RydWN0bmFtZT5w Z2JlbmNoX3RlbGxlcnM8L3N0cnVjdG5hbWU+KSBhbmQgc2l4IGZ1bmN0aW9ucyB3aXRoIG5hbWVz CisgICAgYmVnaW5pbmcgd2l0aCA8c3RydWN0bmFtZT5wZ2JlbmNoXzwvc3RydWN0bmFtZT4uIFRo aXMgb3BlcmF0aW9uIHdpbGwgZHJvcAorICAgIGFueSBleGlzdGluZyB0YWJsZXMgb3IgZnVuY3Rp b25zIHdpdGggdGhlc2UgbmFtZXMsIGluY2x1ZGluZyBhbGwgZGVwZW5kZW50CisgICAgb2JqZWN0 cy4KICAgIDwvcGFyYT4KICAgPC9jYXV0aW9uPgogCkBAIC0xOTIsMTggKzE5MiwyNiBAQCBwZ2Jl bmNoIDxvcHRpb25hbD4gPHJlcGxhY2VhYmxlPm9wdGlvbnM8L3JlcGxhY2VhYmxlPiA8L29wdGlv bmFsPiA8cmVwbGFjZWFibGU+ZAogICAgICAgICA8cmVwbGFjZWFibGU+aW5pdF9zdGVwczwvcmVw bGFjZWFibGU+IHNwZWNpZmllcyB0aGUKICAgICAgICAgaW5pdGlhbGl6YXRpb24gc3RlcHMgdG8g YmUgcGVyZm9ybWVkLCB1c2luZyBvbmUgY2hhcmFjdGVyIHBlciBzdGVwLgogICAgICAgICBFYWNo IHN0ZXAgaXMgaW52b2tlZCBpbiB0aGUgc3BlY2lmaWVkIG9yZGVyLgotICAgICAgICBUaGUgZGVm YXVsdCBpcyA8bGl0ZXJhbD5kdGd2cDwvbGl0ZXJhbD4uCisgICAgICAgIFRoZSBkZWZhdWx0IGlz IDxsaXRlcmFsPmRZdGd2cHk8L2xpdGVyYWw+LgogICAgICAgICBUaGUgYXZhaWxhYmxlIHN0ZXBz IGFyZToKIAogICAgICAgICA8dmFyaWFibGVsaXN0PgogICAgICAgICAgPHZhcmxpc3RlbnRyeSBp ZD0icGdiZW5jaC1vcHRpb24taW5pdC1zdGVwcy1kIj4KLSAgICAgICAgICA8dGVybT48bGl0ZXJh bD5kPC9saXRlcmFsPiAoRHJvcCk8L3Rlcm0+CisgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+ZDwv bGl0ZXJhbD4gKERyb3AgVGFibGVzKTwvdGVybT4KICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAg ICAgICAgIDxwYXJhPgogICAgICAgICAgICAgRHJvcCBhbnkgZXhpc3RpbmcgPGFwcGxpY2F0aW9u PnBnYmVuY2g8L2FwcGxpY2F0aW9uPiB0YWJsZXMuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAg ICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICA8dmFy bGlzdGVudHJ5IGlkPSJwZ2JlbmNoLW9wdGlvbi1pbml0LXN0ZXBzLVkiPgorICAgICAgICAgIDx0 ZXJtPjxsaXRlcmFsPlk8L2xpdGVyYWw+IChEcm9wIEZ1bmN0aW9ucyk8L3Rlcm0+CisgICAgICAg ICAgPGxpc3RpdGVtPgorICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIERyb3AgYW55IGV4 aXN0aW5nIDxhcHBsaWNhdGlvbj5wZ2JlbmNoPC9hcHBsaWNhdGlvbj4gZnVuY3Rpb25zLgorICAg ICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgIDwvdmFybGlz dGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeSBpZD0icGdiZW5jaC1vcHRpb24taW5pdC1z dGVwcy10Ij4KICAgICAgICAgICA8dGVybT48bGl0ZXJhbD50PC9saXRlcmFsPiAoY3JlYXRlIFRh Ymxlcyk8L3Rlcm0+CiAgICAgICAgICAgPGxpc3RpdGVtPgpAQCAtMjY4LDcgKzI3NiwxNSBAQCBw Z2JlbmNoIDxvcHRpb25hbD4gPHJlcGxhY2VhYmxlPm9wdGlvbnM8L3JlcGxhY2VhYmxlPiA8L29w dGlvbmFsPiA8cmVwbGFjZWFibGU+ZAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPC9s aXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgotICAgICAgICAgPHZhcmxpc3RlbnRy eSBpZD0icGdiZW5jaC1vcHRpb24taW5pdC1zdGVwcy1mIj4KKyAgICAgICAgIDx2YXJsaXN0ZW50 cnkgaWQ9InBnYmVuY2gtb3B0aW9uLWluaXQtc3RlcHMteSI+CisgICAgICAgICAgPHRlcm0+PGxp dGVyYWw+eTwvbGl0ZXJhbD4gKGNyZWF0ZSBGdW5jdGlvbnMpPC90ZXJtPgorICAgICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDcmVhdGUgYW55IG5lY2Nl c3NhcnkgPGFwcGxpY2F0aW9uPnBnYmVuY2g8L2FwcGxpY2F0aW9uPiBmdW5jdGlvbnMuCisgICAg ICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgPC92YXJsaXN0 ZW50cnk+CisgICAgICAgICAgPHZhcmxpc3RlbnRyeSBpZD0icGdiZW5jaC1vcHRpb24taW5pdC1z dGVwcy1mIj4KICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmY8L2xpdGVyYWw+IChjcmVhdGUgRm9y ZWlnbiBrZXlzKTwvdGVybT4KICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJh PgpAQCAtMzYwLDYgKzM3NiwxNyBAQCBwZ2JlbmNoIDxvcHRpb25hbD4gPHJlcGxhY2VhYmxlPm9w dGlvbnM8L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPiA8cmVwbGFjZWFibGU+ZAogICAgICAgPC9s aXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0i cGdiZW5jaC1vcHRpb24tbm8tZnVuY3Rpb25zIj4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1uby1m dW5jdGlvbnM8L29wdGlvbj48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+ CisgICAgICAgIERvIG5vdCBjcmVhdGUgcGwvcGdzcWwgb3IgU1FMIGZ1bmN0aW9ucyBmb3IgaW50 ZXJuYWwgc2NyaXB0cy4KKyAgICAgICAgKFRoaXMgb3B0aW9uIHN1cHByZXNzZXMgdGhlIDxsaXRl cmFsPnk8L2xpdGVyYWw+IGluaXRpYWxpemF0aW9uIHN0ZXAsCisgICAgICAgIGV2ZW4gaWYgaXQg d2FzIHNwZWNpZmllZCBpbiA8b3B0aW9uPi1JPC9vcHRpb24+LikKKyAgICAgICA8L3BhcmE+Cisg ICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVu dHJ5IGlkPSJwZ2JlbmNoLW9wdGlvbi1wYXJ0aXRpb24tbWV0aG9kIj4KICAgICAgIDx0ZXJtPjxv cHRpb24+LS1wYXJ0aXRpb24tbWV0aG9kPTxyZXBsYWNlYWJsZT5OQU1FPC9yZXBsYWNlYWJsZT48 L29wdGlvbj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CkBAIC00MjYsOCArNDUzLDM1IEBAIHBn YmVuY2ggPG9wdGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0aW9uczwvcmVwbGFjZWFibGU+IDwvb3B0 aW9uYWw+IDxyZXBsYWNlYWJsZT5kCiAgICAgICAgIEF2YWlsYWJsZSBidWlsdC1pbiBzY3JpcHRz IGFyZTogPGxpdGVyYWw+dHBjYi1saWtlPC9saXRlcmFsPiwKICAgICAgICAgPGxpdGVyYWw+c2lt cGxlLXVwZGF0ZTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPnNlbGVjdC1vbmx5PC9saXRlcmFsPi4K ICAgICAgICAgVW5hbWJpZ3VvdXMgcHJlZml4ZXMgb2YgYnVpbHQtaW4gbmFtZXMgYXJlIGFjY2Vw dGVkLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVW5sZXNzIGRpc2Fi bGVkIHdpdGggdGhlIDxsaXRlcmFsPi0tbm8tZnVuY3Rpb25zPC9saXRlcmFsPiBvcHRpb24gYXQg ZGF0YWJhc2UKKyAgICAgICAgaW5pdCwgdGhlIDxsaXRlcmFsPnRwY2ItbGlrZTwvbGl0ZXJhbD4g YW5kIDxsaXRlcmFsPnNpbXBsZS11cGRhdGU8L2xpdGVyYWw+CisgICAgICAgIHNjcmlwdHMgYXJl IGFsc28gaW1wbGVtZW50ZWQgYXMgVXNlci1EZWZpbmVkIGZ1bmN0aW9ucyBpbiB0aGUgZGF0YWJh c2Ugd2hpY2gKKyAgICAgICAgY2FuIGJlIHRlc3RlZCB1c2luZyBzY3JpcHRzIG5hbWVkIDxsaXRl cmFsPnBscGdzcWwtdHBjYi1saWtlPC9saXRlcmFsPiwKKyAgICAgICAgPGxpdGVyYWw+c3FsZnVu Yy10cGNiLWxpa2U8L2xpdGVyYWw+LCA8bGl0ZXJhbD5vbGRzcWxmLXRwY2ItbGlrZTwvbGl0ZXJh bD4sCisgICAgICAgIDxsaXRlcmFsPnBscGdzcWwtc2ltcGxlLXVwZGF0ZTwvbGl0ZXJhbD4sIDxs aXRlcmFsPnNxbGZ1bmMtc2ltcGxlLXVwZGF0ZTwvbGl0ZXJhbD4KKyAgICAgICAgYW5kIDxsaXRl cmFsPm9sZHNxbGYtc2ltcGxlLXVwZGF0ZTwvbGl0ZXJhbD4uCisgICAgICAgIFRoZSA8bGl0ZXJh bD5zcWxmdW5jLSo8L2xpdGVyYWw+IHZlcnNpb25zIHVzZSB0aGUgbmV3IFNRTC1zdGFuZGFyZCBT UUwgZnVuY3Rpb25zIGFuZAorICAgICAgICB0aGUgPGxpdGVyYWw+b2xkc3FsZi0qPC9saXRlcmFs PiB1c2UgdGhlIFNRTCBmdW5jdGlvbnMgZGVmaW5lZCB1c2luZyA8bGl0ZXJhbD5MQU5HVUFHRSBT UUw8L2xpdGVyYWw+LgorICAgICAgICBVc2UgPGxpdGVyYWw+LS1zaG93LXNjcmlwdD1zY3JpcHRu YW1lPC9saXRlcmFsPiB0byBzZWUgd2hhdCBpcyBhY3R1YWxseSBydW4uCisgICAgICAgPC9wYXJh PgorICAgICAgIDxwYXJhPgogICAgICAgICBXaXRoIHRoZSBzcGVjaWFsIG5hbWUgPGxpdGVyYWw+ bGlzdDwvbGl0ZXJhbD4sIHNob3cgdGhlIGxpc3Qgb2YgYnVpbHQtaW4gc2NyaXB0cwotICAgICAg ICBhbmQgZXhpdCBpbW1lZGlhdGVseS4KKyAgICAgICAgYW5kIGV4aXQgaW1tZWRpYXRlbHkgOgor PHByb2dyYW1saXN0aW5nPgorJCBwZ2JlbmNoIC1iIGxpc3QKK0F2YWlsYWJsZSBidWlsdGluIHNj cmlwdHM6CisgICAgICAgICAgICAgIHRwY2ItbGlrZTogJmx0O2J1aWx0aW46IFRQQy1CIChzb3J0 IG9mKSZndDsKKyAgICAgIHBscGdzcWwtdHBjYi1saWtlOiAmbHQ7YnVpbHRpbjogVFBDLUIgKHNv cnQgb2YpIC0gcGwvcGdzcWwgVURGJmd0OworICAgICAgc3FsZnVuYy10cGNiLWxpa2U6ICZsdDti dWlsdGluOiBUUEMtQiAoc29ydCBvZikgLSAnQkVHSU4gQVRPTUlDJyBTUUwgVURGJmd0OworICAg ICAgb2xkc3FsZi10cGNiLWxpa2U6ICZsdDtidWlsdGluOiBUUEMtQiAoc29ydCBvZikgLSBMQU5H VUFHRSBTUUwgVURGJmd0OworICAgICAgICAgIHNpbXBsZS11cGRhdGU6ICZsdDtidWlsdGluOiBz aW1wbGUgdXBkYXRlJmd0OworICBwbHBnc3FsLXNpbXBsZS11cGRhdGU6ICZsdDtidWlsdGluOiBz aW1wbGUgdXBkYXRlIC0gcGwvcGdzcWwgVURGJmd0OworICBzcWxmdW5jLXNpbXBsZS11cGRhdGU6 ICZsdDtidWlsdGluOiBzaW1wbGUgdXBkYXRlIC0gJ0JFR0lOIEFUT01JQycgU1FMIFVERiZndDsK KyAgb2xkc3FsZi1zaW1wbGUtdXBkYXRlOiAmbHQ7YnVpbHRpbjogc2ltcGxlIHVwZGF0ZSAtIExB TkdVQUdFIFNRTCBVREYmZ3Q7CisgICAgICAgICAgICBzZWxlY3Qtb25seTogJmx0O2J1aWx0aW46 IHNlbGVjdCBvbmx5Jmd0OworPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICA8L3BhcmE+CiAgICAg ICAgPHBhcmE+CiAgICAgICAgIE9wdGlvbmFsbHksIHdyaXRlIGFuIGludGVnZXIgd2VpZ2h0IGFm dGVyIDxsaXRlcmFsPkA8L2xpdGVyYWw+IHRvCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCA1ODczNTg3MWMxNy4u NjRiZmU5ZmVmZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtMTYwLDggKzE2MCw4IEBAIHR5cGVkZWYgc3Ry dWN0IHNvY2tldF9zZXQKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogc29tZSBjb25maWd1cmFibGUgcGFyYW1l dGVycyAqLwogCi0jZGVmaW5lIERFRkFVTFRfSU5JVF9TVEVQUyAiZHRndnAiCS8qIGRlZmF1bHQg LUkgc2V0dGluZyAqLwotI2RlZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnR3ZwZiIJLyogYWxsIHBv c3NpYmxlIHN0ZXBzICovCisjZGVmaW5lIERFRkFVTFRfSU5JVF9TVEVQUyAiZFl0Z3ZweSIJLyog ZGVmYXVsdCAtSSBzZXR0aW5nICovCisjZGVmaW5lIEFMTF9JTklUX1NURVBTICJkWXRnR3ZwZnki CS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAqLwogCiAjZGVmaW5lIExPR19TVEVQX1NFQ09ORFMJNQkv KiBzZWNvbmRzIGJldHdlZW4gbG9nIG1lc3NhZ2VzICovCiAjZGVmaW5lIERFRkFVTFRfTlhBQ1RT CTEwCQkvKiBkZWZhdWx0IG54YWN0cyAqLwpAQCAtODA0LDYgKzgwNCwzMyBAQCBzdGF0aWMgY29u c3QgQnVpbHRpblNjcmlwdCBidWlsdGluX3NjcmlwdFtdID0KIAkJIklOU0VSVCBJTlRPIHBnYmVu Y2hfaGlzdG9yeSAodGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10aW1lKSBWQUxVRVMgKDp0aWQsIDpi aWQsIDphaWQsIDpkZWx0YSwgQ1VSUkVOVF9USU1FU1RBTVApO1xuIgogCQkiRU5EO1xuIgogCX0s CisJeworCQkicGxwZ3NxbC10cGNiLWxpa2UiLAorCQkiPGJ1aWx0aW46IFRQQy1CIChzb3J0IG9m KSAtIHBsL3Bnc3FsIFVERj4iLAorCQkiXFxzZXQgYWlkIHJhbmRvbSgxLCAiIENwcEFzU3RyaW5n MihuYWNjb3VudHMpICIgKiA6c2NhbGUpXG4iCisJCSJcXHNldCBiaWQgcmFuZG9tKDEsICIgQ3Bw QXNTdHJpbmcyKG5icmFuY2hlcykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IHRpZCByYW5kb20o MSwgIiBDcHBBc1N0cmluZzIobnRlbGxlcnMpICIgKiA6c2NhbGUpXG4iCisJCSJcXHNldCBkZWx0 YSByYW5kb20oLTUwMDAsIDUwMDApXG4iCisJCSJTRUxFQ1QgMSBGUk9NIHBnYmVuY2hfdHBjYl9s aWtlKDphaWQsIDpiaWQsIDp0aWQsIDpkZWx0YSk7XG4iCisJfSwKKwl7CisJCSJzcWxmdW5jLXRw Y2ItbGlrZSIsCisJCSI8YnVpbHRpbjogVFBDLUIgKHNvcnQgb2YpIC0gJ0JFR0lOIEFUT01JQycg U1FMIFVERj4iLAorCQkiXFxzZXQgYWlkIHJhbmRvbSgxLCAiIENwcEFzU3RyaW5nMihuYWNjb3Vu dHMpICIgKiA6c2NhbGUpXG4iCisJCSJcXHNldCBiaWQgcmFuZG9tKDEsICIgQ3BwQXNTdHJpbmcy KG5icmFuY2hlcykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IHRpZCByYW5kb20oMSwgIiBDcHBB c1N0cmluZzIobnRlbGxlcnMpICIgKiA6c2NhbGUpXG4iCisJCSJcXHNldCBkZWx0YSByYW5kb20o LTUwMDAsIDUwMDApXG4iCisJCSJTRUxFQ1QgMSBGUk9NIHBnYmVuY2hfdHBjYl9saWtlX3NxbGZ1 bmMoOmFpZCwgOmJpZCwgOnRpZCwgOmRlbHRhKTtcbiIKKwl9LAorCXsKKwkJIm9sZHNxbGYtdHBj Yi1saWtlIiwKKwkJIjxidWlsdGluOiBUUEMtQiAoc29ydCBvZikgLSBMQU5HVUFHRSBTUUwgVURG PiIsCisJCSJcXHNldCBhaWQgcmFuZG9tKDEsICIgQ3BwQXNTdHJpbmcyKG5hY2NvdW50cykgIiAq IDpzY2FsZSlcbiIKKwkJIlxcc2V0IGJpZCByYW5kb20oMSwgIiBDcHBBc1N0cmluZzIobmJyYW5j aGVzKSAiICogOnNjYWxlKVxuIgorCQkiXFxzZXQgdGlkIHJhbmRvbSgxLCAiIENwcEFzU3RyaW5n MihudGVsbGVycykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IGRlbHRhIHJhbmRvbSgtNTAwMCwg NTAwMClcbiIKKwkJIlNFTEVDVCAxIEZST00gcGdiZW5jaF90cGNiX2xpa2Vfb2xkc3FsZnVuYyg6 YWlkLCA6YmlkLCA6dGlkLCA6ZGVsdGEpO1xuIgorCX0sCiAJewogCQkic2ltcGxlLXVwZGF0ZSIs CiAJCSI8YnVpbHRpbjogc2ltcGxlIHVwZGF0ZT4iLApAQCAtODE3LDYgKzg0NCwzMyBAQCBzdGF0 aWMgY29uc3QgQnVpbHRpblNjcmlwdCBidWlsdGluX3NjcmlwdFtdID0KIAkJIklOU0VSVCBJTlRP IHBnYmVuY2hfaGlzdG9yeSAodGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10aW1lKSBWQUxVRVMgKDp0 aWQsIDpiaWQsIDphaWQsIDpkZWx0YSwgQ1VSUkVOVF9USU1FU1RBTVApO1xuIgogCQkiRU5EO1xu IgogCX0sCisJeworCQkicGxwZ3NxbC1zaW1wbGUtdXBkYXRlIiwKKwkJIjxidWlsdGluOiBzaW1w bGUgdXBkYXRlIC0gcGwvcGdzcWwgVURGPiIsCisJCSJcXHNldCBhaWQgcmFuZG9tKDEsICIgQ3Bw QXNTdHJpbmcyKG5hY2NvdW50cykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IGJpZCByYW5kb20o MSwgIiBDcHBBc1N0cmluZzIobmJyYW5jaGVzKSAiICogOnNjYWxlKVxuIgorCQkiXFxzZXQgdGlk IHJhbmRvbSgxLCAiIENwcEFzU3RyaW5nMihudGVsbGVycykgIiAqIDpzY2FsZSlcbiIKKwkJIlxc c2V0IGRlbHRhIHJhbmRvbSgtNTAwMCwgNTAwMClcbiIKKwkJIlNFTEVDVCAxIEZST00gcGdiZW5j aF9zaW1wbGVfdXBkYXRlKDphaWQsIDpiaWQsIDp0aWQsIDpkZWx0YSk7XG4iCisJfSwKKwl7CisJ CSJzcWxmdW5jLXNpbXBsZS11cGRhdGUiLAorCQkiPGJ1aWx0aW46IHNpbXBsZSB1cGRhdGUgLSAn QkVHSU4gQVRPTUlDJyBTUUwgVURGPiIsCisJCSJcXHNldCBhaWQgcmFuZG9tKDEsICIgQ3BwQXNT dHJpbmcyKG5hY2NvdW50cykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IGJpZCByYW5kb20oMSwg IiBDcHBBc1N0cmluZzIobmJyYW5jaGVzKSAiICogOnNjYWxlKVxuIgorCQkiXFxzZXQgdGlkIHJh bmRvbSgxLCAiIENwcEFzU3RyaW5nMihudGVsbGVycykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0 IGRlbHRhIHJhbmRvbSgtNTAwMCwgNTAwMClcbiIKKwkJIlNFTEVDVCAxIEZST00gcGdiZW5jaF9z aW1wbGVfdXBkYXRlX3NxbGZ1bmMoOmFpZCwgOmJpZCwgOnRpZCwgOmRlbHRhKTtcbiIKKwl9LAor CXsKKwkJIm9sZHNxbGYtc2ltcGxlLXVwZGF0ZSIsCisJCSI8YnVpbHRpbjogc2ltcGxlIHVwZGF0 ZSAtIExBTkdVQUdFIFNRTCBVREY+IiwKKwkJIlxcc2V0IGFpZCByYW5kb20oMSwgIiBDcHBBc1N0 cmluZzIobmFjY291bnRzKSAiICogOnNjYWxlKVxuIgorCQkiXFxzZXQgYmlkIHJhbmRvbSgxLCAi IENwcEFzU3RyaW5nMihuYnJhbmNoZXMpICIgKiA6c2NhbGUpXG4iCisJCSJcXHNldCB0aWQgcmFu ZG9tKDEsICIgQ3BwQXNTdHJpbmcyKG50ZWxsZXJzKSAiICogOnNjYWxlKVxuIgorCQkiXFxzZXQg ZGVsdGEgcmFuZG9tKC01MDAwLCA1MDAwKVxuIgorCQkiU0VMRUNUIDEgRlJPTSBwZ2JlbmNoX3Np bXBsZV91cGRhdGVfb2xkc3FsZnVuYyg6YWlkLCA6YmlkLCA6dGlkLCA6ZGVsdGEpO1xuIgorCX0s CiAJewogCQkic2VsZWN0LW9ubHkiLAogCQkiPGJ1aWx0aW46IHNlbGVjdCBvbmx5PiIsCkBAIC05 MjUsNiArOTc5LDcgQEAgdXNhZ2Uodm9pZCkKIAkJICAgIiAgLS1mb3JlaWduLWtleXMgICAgICAg ICAgIGNyZWF0ZSBmb3JlaWduIGtleSBjb25zdHJhaW50cyBiZXR3ZWVuIHRhYmxlc1xuIgogCQkg ICAiICAtLWluZGV4LXRhYmxlc3BhY2U9VEFCTEVTUEFDRVxuIgogCQkgICAiICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3JlYXRlIGluZGV4ZXMgaW4gdGhlIHNwZWNpZmllZCB0YWJsZXNwYWNl XG4iCisJCSAgICIgIC0tbm8tZnVuY3Rpb25zICAgICAgICAgICBkbyBub3QgY3JlYXRlIHBsL3Bn c3FsIG9yIFNRTCBmdW5jdGlvbnMgZm9yIGludGVybmFsIHNjcmlwdHNcbiIKIAkJICAgIiAgLS1w YXJ0aXRpb24tbWV0aG9kPShyYW5nZXxoYXNoKVxuIgogCQkgICAiICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGFydGl0aW9uIHBnYmVuY2hfYWNjb3VudHMgd2l0aCB0aGlzIG1ldGhvZCAoZGVm YXVsdDogcmFuZ2UpXG4iCiAJCSAgICIgIC0tcGFydGl0aW9ucz1OVU0gICAgICAgICBwYXJ0aXRp b24gcGdiZW5jaF9hY2NvdW50cyBpbnRvIE5VTSBwYXJ0cyAoZGVmYXVsdDogMClcbiIKQEAgLTQ4 MTQsNyArNDg2OSw3IEBAIGluaXREcm9wVGFibGVzKFBHY29ubiAqY29uKQogCQkJCQkgInBnYmVu Y2hfYWNjb3VudHMsICIKIAkJCQkJICJwZ2JlbmNoX2JyYW5jaGVzLCAiCiAJCQkJCSAicGdiZW5j aF9oaXN0b3J5LCAiCi0JCQkJCSAicGdiZW5jaF90ZWxsZXJzIik7CisJCQkJCSAicGdiZW5jaF90 ZWxsZXJzIGNhc2NhZGUiKTsKIH0KIAogLyoKQEAgLTQ4ODksNiArNDk0NCwxMDcgQEAgY3JlYXRl UGFydGl0aW9ucyhQR2Nvbm4gKmNvbikKIAl0ZXJtUFFFeHBCdWZmZXIoJnF1ZXJ5KTsKIH0KIAor LyoKKyAqIENyZWF0ZSB0aGUgZnVuY3Rpb25zIG5lZWRlZCBmb3IgcGxwZ3NxbC0qIGJ1aWx0aW4g c2NyaXB0cworICovCitzdGF0aWMgdm9pZAoraW5pdENyZWF0ZUZ1bmN0aW9ucyhQR2Nvbm4gKmNv bikKK3sKKwlmcHJpbnRmKHN0ZGVyciwgImNyZWF0aW5nIGZ1bmN0aW9ucy4uLlxuIik7CisKKwll eGVjdXRlU3RhdGVtZW50KGNvbiwKKwkJIkNSRUFURSBGVU5DVElPTiBwZ2JlbmNoX3RwY2JfbGlr ZShfYWlkIGludCwgX2JpZCBpbnQsIF90aWQgaW50LCBfZGVsdGEgaW50KVxuIgorCQkiUkVUVVJO UyB2b2lkXG4iCisJCSJMQU5HVUFHRSBwbHBnc3FsXG4iCisJCSJBUyAkcGxwZ3NxbCRcbiIKKwkJ IkJFR0lOXG4iCisJCSIgICAgVVBEQVRFIHBnYmVuY2hfYWNjb3VudHMgU0VUIGFiYWxhbmNlID0g YWJhbGFuY2UgKyBfZGVsdGEgV0hFUkUgYWlkID0gX2FpZDtcbiIKKwkJIiAgICBQRVJGT1JNIGFi YWxhbmNlIEZST00gcGdiZW5jaF9hY2NvdW50cyBXSEVSRSBhaWQgPSBfYWlkO1xuIgorCQkiICAg IFVQREFURSBwZ2JlbmNoX3RlbGxlcnMgU0VUIHRiYWxhbmNlID0gdGJhbGFuY2UgKyBfZGVsdGEg V0hFUkUgdGlkID0gX3RpZDtcbiIKKwkJIiAgICBVUERBVEUgcGdiZW5jaF9icmFuY2hlcyBTRVQg YmJhbGFuY2UgPSBiYmFsYW5jZSArIF9kZWx0YSBXSEVSRSBiaWQgPSBfYmlkO1xuIgorCQkiICAg IElOU0VSVCBJTlRPIHBnYmVuY2hfaGlzdG9yeSAodGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10aW1l KSBWQUxVRVMgKF90aWQsIF9iaWQsIF9haWQsIF9kZWx0YSwgQ1VSUkVOVF9USU1FU1RBTVApO1xu IgorCQkiRU5EO1xuIgorCQkiJHBscGdzcWwkO1xuIik7CisJZXhlY3V0ZVN0YXRlbWVudChjb24s CisJCSJDUkVBVEUgRlVOQ1RJT04gcGdiZW5jaF9zaW1wbGVfdXBkYXRlKF9haWQgaW50LCBfYmlk IGludCwgX3RpZCBpbnQsIF9kZWx0YSBpbnQpXG4iCisJCSJSRVRVUk5TIHZvaWRcbiIKKwkJIkxB TkdVQUdFIHBscGdzcWxcbiIKKwkJIkFTICRwbHBnc3FsJFxuIgorCQkiQkVHSU5cbiIKKwkJIiAg ICBVUERBVEUgcGdiZW5jaF9hY2NvdW50cyBTRVQgYWJhbGFuY2UgPSBhYmFsYW5jZSArIF9kZWx0 YSBXSEVSRSBhaWQgPSBfYWlkO1xuIgorCQkiICAgIFBFUkZPUk0gYWJhbGFuY2UgRlJPTSBwZ2Jl bmNoX2FjY291bnRzIFdIRVJFIGFpZCA9IF9haWQ7XG4iCisJCSIgICAgSU5TRVJUIElOVE8gcGdi ZW5jaF9oaXN0b3J5ICh0aWQsIGJpZCwgYWlkLCBkZWx0YSwgbXRpbWUpIFZBTFVFUyAoX3RpZCwg X2JpZCwgX2FpZCwgX2RlbHRhLCBDVVJSRU5UX1RJTUVTVEFNUCk7XG4iCisJCSJFTkQ7XG4iCisJ CSIkcGxwZ3NxbCQ7XG4iKTsKKwlpZiAoKFBRc2VydmVyVmVyc2lvbihjb24pID49IDE0MDAwMCkp CisJeworCQlleGVjdXRlU3RhdGVtZW50KGNvbiwKKwkJCSJDUkVBVEUgRlVOQ1RJT04gcGdiZW5j aF90cGNiX2xpa2Vfc3FsZnVuYyhfYWlkIGludCwgX2JpZCBpbnQsIF90aWQgaW50LCBfZGVsdGEg aW50KVxuIgorCQkJIlJFVFVSTlMgdm9pZFxuIgorCQkJIkJFR0lOIEFUT01JQ1xuIgorCQkJIiAg ICBVUERBVEUgcGdiZW5jaF9hY2NvdW50cyBTRVQgYWJhbGFuY2UgPSBhYmFsYW5jZSArIF9kZWx0 YSBXSEVSRSBhaWQgPSBfYWlkO1xuIgorCQkJIiAgICBTRUxFQ1QgYWJhbGFuY2UgRlJPTSBwZ2Jl bmNoX2FjY291bnRzIFdIRVJFIGFpZCA9IF9haWQ7XG4iCisJCQkiICAgIFVQREFURSBwZ2JlbmNo X3RlbGxlcnMgU0VUIHRiYWxhbmNlID0gdGJhbGFuY2UgKyBfZGVsdGEgV0hFUkUgdGlkID0gX3Rp ZDtcbiIKKwkJCSIgICAgVVBEQVRFIHBnYmVuY2hfYnJhbmNoZXMgU0VUIGJiYWxhbmNlID0gYmJh bGFuY2UgKyBfZGVsdGEgV0hFUkUgYmlkID0gX2JpZDtcbiIKKwkJCSIgICAgSU5TRVJUIElOVE8g cGdiZW5jaF9oaXN0b3J5ICh0aWQsIGJpZCwgYWlkLCBkZWx0YSwgbXRpbWUpIFZBTFVFUyAoX3Rp ZCwgX2JpZCwgX2FpZCwgX2RlbHRhLCBDVVJSRU5UX1RJTUVTVEFNUCk7XG4iCisJCQkiRU5EO1xu Iik7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLAorCQkJIkNSRUFURSBGVU5DVElPTiBwZ2JlbmNo X3NpbXBsZV91cGRhdGVfc3FsZnVuYyhfYWlkIGludCwgX2JpZCBpbnQsIF90aWQgaW50LCBfZGVs dGEgaW50KVxuIgorCQkJIlJFVFVSTlMgdm9pZFxuIgorCQkJIkJFR0lOIEFUT01JQ1xuIgorCQkJ IiAgICBVUERBVEUgcGdiZW5jaF9hY2NvdW50cyBTRVQgYWJhbGFuY2UgPSBhYmFsYW5jZSArIF9k ZWx0YSBXSEVSRSBhaWQgPSBfYWlkO1xuIgorCQkJIiAgICBTRUxFQ1QgYWJhbGFuY2UgRlJPTSBw Z2JlbmNoX2FjY291bnRzIFdIRVJFIGFpZCA9IF9haWQ7XG4iCisJCQkiICAgIElOU0VSVCBJTlRP IHBnYmVuY2hfaGlzdG9yeSAodGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10aW1lKSBWQUxVRVMgKF90 aWQsIF9iaWQsIF9haWQsIF9kZWx0YSwgQ1VSUkVOVF9USU1FU1RBTVApO1xuIgorCQkJIkVORDtc biIpOworCX0KKwlleGVjdXRlU3RhdGVtZW50KGNvbiwKKwkJIkNSRUFURSBGVU5DVElPTiBwZ2Jl bmNoX3RwY2JfbGlrZV9vbGRzcWxmdW5jKF9haWQgaW50LCBfYmlkIGludCwgX3RpZCBpbnQsIF9k ZWx0YSBpbnQpXG4iCisJCSJSRVRVUk5TIHZvaWRcbiIKKwkJIkxBTkdVQUdFIHNxbFxuIgorCQki QVMgJHNxbCRcbiIKKwkJIi0tIEJFR0lOXG4iCisJCSIgICAgVVBEQVRFIHBnYmVuY2hfYWNjb3Vu dHMgU0VUIGFiYWxhbmNlID0gYWJhbGFuY2UgKyBfZGVsdGEgV0hFUkUgYWlkID0gX2FpZDtcbiIK KwkJIiAgICBTRUxFQ1QgYWJhbGFuY2UgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdIRVJFIGFpZCA9 IF9haWQ7XG4iCisJCSIgICAgVVBEQVRFIHBnYmVuY2hfdGVsbGVycyBTRVQgdGJhbGFuY2UgPSB0 YmFsYW5jZSArIF9kZWx0YSBXSEVSRSB0aWQgPSBfdGlkO1xuIgorCQkiICAgIFVQREFURSBwZ2Jl bmNoX2JyYW5jaGVzIFNFVCBiYmFsYW5jZSA9IGJiYWxhbmNlICsgX2RlbHRhIFdIRVJFIGJpZCA9 IF9iaWQ7XG4iCisJCSIgICAgSU5TRVJUIElOVE8gcGdiZW5jaF9oaXN0b3J5ICh0aWQsIGJpZCwg YWlkLCBkZWx0YSwgbXRpbWUpIFZBTFVFUyAoX3RpZCwgX2JpZCwgX2FpZCwgX2RlbHRhLCBDVVJS RU5UX1RJTUVTVEFNUCk7XG4iCisJCSItLSBFTkQ7XG4iCisJCSIkc3FsJDtcbiIpOworCWV4ZWN1 dGVTdGF0ZW1lbnQoY29uLAorCQkiQ1JFQVRFIEZVTkNUSU9OIHBnYmVuY2hfc2ltcGxlX3VwZGF0 ZV9vbGRzcWxmdW5jKF9haWQgaW50LCBfYmlkIGludCwgX3RpZCBpbnQsIF9kZWx0YSBpbnQpXG4i CisJCSJSRVRVUk5TIHZvaWRcbiIKKwkJIkxBTkdVQUdFIHNxbFxuIgorCQkiQVMgJHNxbCRcbiIK KwkJIi0tIEJFR0lOXG4iCisJCSIgICAgVVBEQVRFIHBnYmVuY2hfYWNjb3VudHMgU0VUIGFiYWxh bmNlID0gYWJhbGFuY2UgKyBfZGVsdGEgV0hFUkUgYWlkID0gX2FpZDtcbiIKKwkJIiAgICBTRUxF Q1QgYWJhbGFuY2UgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdIRVJFIGFpZCA9IF9haWQ7XG4iCisJ CSIgICAgSU5TRVJUIElOVE8gcGdiZW5jaF9oaXN0b3J5ICh0aWQsIGJpZCwgYWlkLCBkZWx0YSwg bXRpbWUpIFZBTFVFUyAoX3RpZCwgX2JpZCwgX2FpZCwgX2RlbHRhLCBDVVJSRU5UX1RJTUVTVEFN UCk7XG4iCisJCSItLSBFTkQ7XG4iCisJCSIkc3FsJDtcbiIpOworfQorCisvKgorICogUmVtb3Zl IG9sZCBwZ2JlbmNoIGZ1bmN0aW9ucywgaWYgYW55IGV4aXN0CisgKi8KK3N0YXRpYyB2b2lkCitp bml0RHJvcEZ1bmN0aW9ucyhQR2Nvbm4gKmNvbikKK3sKKwlmcHJpbnRmKHN0ZGVyciwgImRyb3Bw aW5nIG9sZCBmdW5jdGlvbnMuLi5cbiIpOworCisJZXhlY3V0ZVN0YXRlbWVudChjb24sCisJCSJE Uk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwZ2JlbmNoX3RwY2JfbGlrZShfYWlkIGludCwgX2JpZCBp bnQsIF90aWQgaW50LCBfZGVsdGEgaW50KTtcbiIpOworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLAor CQkiRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgcGdiZW5jaF9zaW1wbGVfdXBkYXRlKF9haWQgaW50 LCBfYmlkIGludCwgX3RpZCBpbnQsIF9kZWx0YSBpbnQpO1xuIik7CisJZXhlY3V0ZVN0YXRlbWVu dChjb24sCisJCSJEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwZ2JlbmNoX3RwY2JfbGlrZV9zcWxm dW5jKF9haWQgaW50LCBfYmlkIGludCwgX3RpZCBpbnQsIF9kZWx0YSBpbnQpO1xuIik7CisJZXhl Y3V0ZVN0YXRlbWVudChjb24sCisJCSJEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwZ2JlbmNoX3Np bXBsZV91cGRhdGVfc3FsZnVuYyhfYWlkIGludCwgX2JpZCBpbnQsIF90aWQgaW50LCBfZGVsdGEg aW50KTtcbiIpOworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLAorCQkiRFJPUCBGVU5DVElPTiBJRiBF WElTVFMgcGdiZW5jaF90cGNiX2xpa2Vfb2xkc3FsZnVuYyhfYWlkIGludCwgX2JpZCBpbnQsIF90 aWQgaW50LCBfZGVsdGEgaW50KTtcbiIpOworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLAorCQkiRFJP UCBGVU5DVElPTiBJRiBFWElTVFMgcGdiZW5jaF9zaW1wbGVfdXBkYXRlX29sZHNxbGZ1bmMoX2Fp ZCBpbnQsIF9iaWQgaW50LCBfdGlkIGludCwgX2RlbHRhIGludCk7XG4iKTsKK30KKwogLyoKICAq IENyZWF0ZSBwZ2JlbmNoJ3Mgc3RhbmRhcmQgdGFibGVzCiAgKi8KQEAgLTUzNzUsNiArNTUzMSwx NCBAQCBydW5Jbml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykKIAkJCQlvcCA9 ICJmb3JlaWduIGtleXMiOwogCQkJCWluaXRDcmVhdGVGS2V5cyhjb24pOwogCQkJCWJyZWFrOwor CQkJY2FzZSAnWSc6CisJCQkJb3AgPSAiZHJvcCBmdW5jdGlvbnMiOworCQkJCWluaXREcm9wRnVu Y3Rpb25zKGNvbik7CisJCQkJYnJlYWs7CisJCQljYXNlICd5JzoKKwkJCQlvcCA9ICJjcmVhdGUg ZnVuY3Rpb25zIjsKKwkJCQlpbml0Q3JlYXRlRnVuY3Rpb25zKGNvbik7CisJCQkJYnJlYWs7CiAJ CQljYXNlICcgJzoKIAkJCQlicmVhazsJCQkvKiBpZ25vcmUgKi8KIAkJCWRlZmF1bHQ6CkBAIC02 MjEwLDcgKzYzNzQsNyBAQCBsaXN0QXZhaWxhYmxlU2NyaXB0cyh2b2lkKQogCiAJZnByaW50Zihz dGRlcnIsICJBdmFpbGFibGUgYnVpbHRpbiBzY3JpcHRzOlxuIik7CiAJZm9yIChpID0gMDsgaSA8 IGxlbmd0aG9mKGJ1aWx0aW5fc2NyaXB0KTsgaSsrKQotCQlmcHJpbnRmKHN0ZGVyciwgIiAgJTEz czogJXNcbiIsIGJ1aWx0aW5fc2NyaXB0W2ldLm5hbWUsIGJ1aWx0aW5fc2NyaXB0W2ldLmRlc2Mp OworCQlmcHJpbnRmKHN0ZGVyciwgIiAgJTIxczogJXNcbiIsIGJ1aWx0aW5fc2NyaXB0W2ldLm5h bWUsIGJ1aWx0aW5fc2NyaXB0W2ldLmRlc2MpOwogCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKIH0K IApAQCAtNjc3OSw2ICs2OTQzLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXsi ZXhpdC1vbi1hYm9ydCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAxNn0sCiAJCXsiZGVidWciLCBub19h cmd1bWVudCwgTlVMTCwgMTd9LAogCQl7ImNvbnRpbnVlLW9uLWVycm9yIiwgbm9fYXJndW1lbnQs IE5VTEwsIDE4fSwKKwkJeyJuby1mdW5jdGlvbnMiLCBub19hcmd1bWVudCwgTlVMTCwgMTl9LAog CQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwogCkBAIC02Nzg2LDYgKzY5NTEsNyBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAlib29sCQlpc19pbml0X21vZGUgPSBmYWxzZTsJLyogaW5p dGlhbGl6ZSBtb2RlPyAqLwogCWNoYXIJICAgKmluaXRpYWxpemVfc3RlcHMgPSBOVUxMOwogCWJv b2wJCWZvcmVpZ25fa2V5cyA9IGZhbHNlOworCWJvb2wJCW5vX2Z1bmN0aW9ucyA9IGZhbHNlOwog CWJvb2wJCWlzX25vX3ZhY3V1bSA9IGZhbHNlOwogCWJvb2wJCWRvX3ZhY3V1bV9hY2NvdW50cyA9 IGZhbHNlOyAvKiB2YWN1dW0gYWNjb3VudHMgdGFibGU/ICovCiAJaW50CQkJb3B0aW5kZXg7CkBA IC03MTM2LDYgKzczMDIsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJYmVu Y2htYXJraW5nX29wdGlvbl9zZXQgPSB0cnVlOwogCQkJCWNvbnRpbnVlX29uX2Vycm9yID0gdHJ1 ZTsKIAkJCQlicmVhazsKKwkJCWNhc2UgMTk6CQkJCS8qIG5vLWZ1bmN0aW9ucyAqLworCQkJCWlu aXRpYWxpemF0aW9uX29wdGlvbl9zZXQgPSB0cnVlOworCQkJCW5vX2Z1bmN0aW9ucyA9IHRydWU7 CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCS8qIGdldG9wdF9sb25nIGFscmVhZHkgZW1p dHRlZCBhIGNvbXBsYWludCAqLwogCQkJCXBnX2xvZ19lcnJvcl9oaW50KCJUcnkgXCIlcyAtLWhl bHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCBwcm9nbmFtZSk7CkBAIC03MjMzLDYgKzc0MDMs MTUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJKnAgPSAnICc7CiAJCX0KIAor CQlpZiAobm9fZnVuY3Rpb25zKQorCQl7CisJCQkvKiBSZW1vdmUgY3JlYXRlIGZ1bmN0aW9uIHN0 ZXAgaW4gaW5pdGlhbGl6ZV9zdGVwcyAqLworCQkJY2hhcgkgICAqcDsKKworCQkJd2hpbGUgKChw ID0gc3RyY2hyKGluaXRpYWxpemVfc3RlcHMsICd5JykpICE9IE5VTEwpCisJCQkJKnAgPSAnICc7 CisJCX0KKwogCQlpZiAoZm9yZWlnbl9rZXlzKQogCQl7CiAJCQkvKiBBZGQgJ2YnIHRvIGVuZCBv ZiBpbml0aWFsaXplX3N0ZXBzLCBpZiBub3QgYWxyZWFkeSB0aGVyZSAqLwotLSAKMi40My4wCgo= --00000000000025ea0f06481ac9b8--