Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nbMiF-0002g7-PO for pgadmin-hackers@arkaria.postgresql.org; Mon, 04 Apr 2022 13:25:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nbMiE-0008M6-LT for pgadmin-hackers@arkaria.postgresql.org; Mon, 04 Apr 2022 13:25:42 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nbMiD-0008Ls-UU for pgadmin-hackers@lists.postgresql.org; Mon, 04 Apr 2022 13:25:42 +0000 Received: from mail-oo1-xc32.google.com ([2607:f8b0:4864:20::c32]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nbMi9-0006Sh-5i for pgadmin-hackers@postgresql.org; Mon, 04 Apr 2022 13:25:41 +0000 Received: by mail-oo1-xc32.google.com with SMTP id w20-20020a4ae9f4000000b003243aa2c71aso1762185ooc.0 for ; Mon, 04 Apr 2022 06:25:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=mime-version:from:date:message-id:subject:to; bh=khVof/MwJJgI6+yjngVEeKiMiZ07fz99BOp8Xu/0zTw=; b=hzwgPvHa0xGsP09Cz2d47Fud06GFVKLj2MMl/mLEc/dEP8ZkYAwkpFNdu5o6BGIyZP a1frA+t74Lxfj7OLykXbA1m+y4CyCk/5nRgq7sgTF3rGFaRQh3bdI/AuxIxsAqtHUe1d nitl0fa0mEClhn9O0hc47NyhUC93ZpfWLj6ZraNwn7Os7SqF085IbagPRst1tMsZoCKH rDiSYPBQ4bYmaCnuZPiwYTju/7nm1lI1jYgawsCg8OGx9U4ShTAkHaXGq8E8Cn9dEkG5 ce/BdDvwqRckv7Px/5rT6MNZEBR5dOODZHkxx+13q/OEvVg1k4L6YGvbglIAeD92aFE5 dVZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=khVof/MwJJgI6+yjngVEeKiMiZ07fz99BOp8Xu/0zTw=; b=TEifjaty7F9ZvH6fvog1/WF2xvKUqBSsAfYhmnCrthqhdLmPrdNPq+1N0rwJ1H8LYY hDotr2gSnijXu21VggZU97X5iyxniVOTKV7SZ4BwvzBTmysEMlORESPNEVsUou5kF8By mtH0ioSw4ctwv6SAUYHnGsPM26NMOXIevl4GabldIAz99YxCukocXM4KGCNoVly7sztW 7kiiSuG01hT5v+95PqglicB5CGwOfHsPQvOyTK3d8/F5GQeo4tUDePaM0uLnyK/8fhMV qymPtytZtA7/hMye8P0LycB/Z4mgfLSb6/x5IJPf/2RXf0nwK0b+CwR4+QcWayXRZ5p/ ofhg== X-Gm-Message-State: AOAM532vSWnVaLM8m97a6YFhE9ENAMHe6GvtA9KQ6G0C0PbV7NUCEOHq LdxBM2km2zLwZek13/i2fAtzru2J7K9VfjqTu52R4yF1R696jBSJK4k5kzhTeFQmZ7rW52mrFf6 lVlzioEOOd8/k+41GZCfydGCq8dT9GDuFxG80joEwqp/FbEodjI30g2enUPxaOZs3wOqkN3g+B2 aHaq6YrcuodLNvhYlpfjKSECrQfeT3gktbs12GRPPTUBbXvsi4nyQ/iTvvMyi5IrU= X-Google-Smtp-Source: ABdhPJybviuZYKvcGGG3MV6CZvAQL5uRJDaMTR34mWrCjtQecdBF2A/qSCNmuZJRHKn15lGcP+/pUonuQ+Vu+QWBycs= X-Received: by 2002:a4a:ca0f:0:b0:321:52e5:92ad with SMTP id w15-20020a4aca0f000000b0032152e592admr10363369ooq.96.1649078734584; Mon, 04 Apr 2022 06:25:34 -0700 (PDT) MIME-Version: 1.0 From: Aditya Toshniwal Date: Mon, 4 Apr 2022 18:54:57 +0530 Message-ID: Subject: [pgAdmin][patch] Improvements in PgTable component To: pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000002f0ec105dbd410d5" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002f0ec105dbd410d5 Content-Type: multipart/alternative; boundary="0000000000002f0ebe05dbd410d3" --0000000000002f0ebe05dbd410d3 Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached patch makes some necessary cleanup/restructuring in PgTable component. Please review. -- Thanks, Aditya Toshniwal pgAdmin Hacker | Software Architect | *edbpostgres.com* "Don't Complain about Heat, Plant a TREE" --0000000000002f0ebe05dbd410d3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attached patch makes some ne= cessary cleanup/restructuring in PgTable component.
Please review.

--
Thanks,
Ad= itya Toshniwal
pgAdmin Hacker=C2=A0| <= font size=3D"2" color=3D"#000000" face=3D"arial, sans-serif">Software Archi= tect=C2=A0| <= font face=3D"arial, sans-serif" color=3D"#000000">edbpostgres.com
"Don't Complain about Heat, Plant a TREE"<= /font>
--0000000000002f0ebe05dbd410d3-- --0000000000002f0ec105dbd410d5 Content-Type: application/octet-stream; name="pgtable.improve.patch" Content-Disposition: attachment; filename="pgtable.improve.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l1kqvl1s0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvQWN0aXZlUXVlcnku dWkuanMgYi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL0FjdGl2ZVF1ZXJ5LnVpLmpz CmluZGV4IGExNDUwZGY3Yi4uNWNjZTAzMzA4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9kYXNo Ym9hcmQvc3RhdGljL2pzL0FjdGl2ZVF1ZXJ5LnVpLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Rhc2hi b2FyZC9zdGF0aWMvanMvQWN0aXZlUXVlcnkudWkuanMKQEAgLTMwLDcgKzMwLDYgQEAgZXhwb3J0 IGRlZmF1bHQgY2xhc3MgQWN0aXZlUXVlcnkgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogICAgICAg ICByZWFkb25seTogdHJ1ZSwKICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJ10sCiAgICAgICAg IGdyb3VwOiBnZXR0ZXh0KCdEZXRhaWxzJyksCi0gICAgICAgIGRpc2FibGVkOiB0cnVlCiAgICAg ICB9LAogICAgICAgewogICAgICAgICBpZDogJ3F1ZXJ5X3N0YXJ0JywKQEAgLTM5LDggKzM4LDYg QEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWN0aXZlUXVlcnkgZXh0ZW5kcyBCYXNlVUlTY2hlbWEg ewogICAgICAgICBlZGl0YWJsZTogZmFsc2UsCiAgICAgICAgIHJlYWRvbmx5OiB0cnVlLAogICAg ICAgICBncm91cDogZ2V0dGV4dCgnRGV0YWlscycpLAotICAgICAgICBkaXNhYmxlZDogdHJ1ZQot CiAgICAgICB9LAogICAgICAgewogICAgICAgICBpZDogJ3N0YXRlX2NoYW5nZScsCkBAIC00OSw3 ICs0Niw2IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEFjdGl2ZVF1ZXJ5IGV4dGVuZHMgQmFzZVVJ U2NoZW1hIHsKICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAogICAgICAgICByZWFkb25seTogdHJ1 ZSwKICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0RldGFpbHMnKSwKLSAgICAgICAgZGlzYWJsZWQ6 IHRydWUKICAgICAgIH0sCiAgICAgICB7CiAgICAgICAgIGlkOiAncXVlcnknLApkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9EYXNoYm9hcmQuanN4IGIvd2ViL3Bn YWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9EYXNoYm9hcmQuanN4CmluZGV4IDYzN2Y2Y2RlNC4u Nzc5YjQwNmNjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL0Rh c2hib2FyZC5qc3gKKysrIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9EYXNoYm9h cmQuanN4CkBAIC04NSwxMSArODUsMTEgQEAgY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcygo dGhlbWUpID0+ICh7CiAgIH0sCiAgIHBhbmVsQ29udGVudDogewogICAgIC4uLnRoZW1lLm1peGlu cy5wYW5lbEJvcmRlciwKKyAgICBkaXNwbGF5OiAnZmxleCcsCiAgICAgZmxleERpcmVjdGlvbjog J2NvbHVtbicsCiAgICAgb3ZlcmZsb3c6ICdoaWRkZW4gIWltcG9ydGFudCcsCi0gICAgZmxleEdy b3c6IDEsCi0gICAgbWluV2lkdGg6ICczMDBweCcsCi0gICAgbWluSGVpZ2h0OiAnMzAwcHgnCisg ICAgaGVpZ2h0OiAnMTAwJScsCisgICAgbWluSGVpZ2h0OiAnNDAwcHgnCiAgIH0sCiAgIGFycm93 QnV0dG9uOiB7CiAgICAgZm9udFNpemU6ICcycmVtICFpbXBvcnRhbnQnLApAQCAtMzM5LDYgKzMz OSw3IEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZCh7CiAgICAgICAgIGxldCBj YW5FZGl0Um93ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuICgKICAgICAgICAgICA8UGdJY29uQnV0 dG9uCisgICAgICAgICAgICBzaXplPSJ4cyIKICAgICAgICAgICAgIGNsYXNzTmFtZT17cm93Lmlz RXhwYW5kZWQgP2NsYXNzZXMuYnV0dG9uQ2xpY2sgOiAnJ30KICAgICAgICAgICAgIGljb249ewog ICAgICAgICAgICAgICByb3cuaXNFeHBhbmRlZCA/ICgKQEAgLTgwOSwzMSArODEwLDM0IEBAIGV4 cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZCh7CiAgICAgICAgICAgICAgID4KICAgICAg ICAgICAgICAgICB7Z2V0dGV4dCgnU2VydmVyIGFjdGl2aXR5Jyl9eycgJ30KICAgICAgICAgICAg ICAgPC9Cb3g+Ci0gICAgICAgICAgICAgIDxUYWJzCi0gICAgICAgICAgICAgICAgdmFsdWU9e3Zh bH0KLSAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGFiQ2hhbmdlZH0KLSAgICAgICAgICAgICAg ICBjbGFzc05hbWU9e2NsYXNzZXMuc2VhcmNoSW5wdXR9Ci0gICAgICAgICAgICAgID4KLSAgICAg ICAgICAgICAgICB7dGFiLm1hcCgodGFiVmFsdWUsIGkpID0+IHsKLSAgICAgICAgICAgICAgICAg IHJldHVybiA8VGFiIGtleT17aX0gbGFiZWw9e3RhYlZhbHVlfSAvPjsKLSAgICAgICAgICAgICAg ICB9KX0KKyAgICAgICAgICAgICAgPEJveCBkaXNwbGF5PSJmbGV4Ij4KKyAgICAgICAgICAgICAg ICA8VGFicworICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbH0KKyAgICAgICAgICAgICAgICAg IG9uQ2hhbmdlPXt0YWJDaGFuZ2VkfQorICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFz c2VzLnNlYXJjaElucHV0fQorICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgIHt0 YWIubWFwKCh0YWJWYWx1ZSwgaSkgPT4geworICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFRh YiBrZXk9e2l9IGxhYmVsPXt0YWJWYWx1ZX0gLz47CisgICAgICAgICAgICAgICAgICB9KX0KKyAg ICAgICAgICAgICAgICA8L1RhYnM+CiAgICAgICAgICAgICAgICAgPFJlZnJlc2hCdXR0b24vPgot ICAgICAgICAgICAgICA8L1RhYnM+Ci0KLSAgICAgICAgICAgICAgPFBnVGFibGUKLSAgICAgICAg ICAgICAgICBjb2x1bW5zPXsKLSAgICAgICAgICAgICAgICAgIHZhbCA9PT0gMAotICAgICAgICAg ICAgICAgICAgICA/IGFjdGl2aXR5Q29sdW1ucwotICAgICAgICAgICAgICAgICAgICA6IHZhbCA9 PT0gMQotICAgICAgICAgICAgICAgICAgICAgID8gZGF0YWJhc2VMb2Nrc0NvbHVtbnMKLSAgICAg ICAgICAgICAgICAgICAgICA6IHZhbCA9PSAyCi0gICAgICAgICAgICAgICAgICAgICAgICA/IGRh dGFiYXNlUHJlcGFyZWRDb2x1bW5zCi0gICAgICAgICAgICAgICAgICAgICAgICA6IHNlcnZlckNv bmZpZ0NvbHVtbnMKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGF0YT17ZGFz aERhdGF9Ci0gICAgICAgICAgICAgICAgc2NoZW1hPXtzY2hlbWFEaWN0fQotICAgICAgICAgICAg ICAgIG9mZnNldD17MTQ1fQotICAgICAgICAgICAgICA+PC9QZ1RhYmxlPgorICAgICAgICAgICAg ICA8L0JveD4KKyAgICAgICAgICAgICAgPEJveCBmbGV4R3Jvdz17MX0+CisgICAgICAgICAgICAg ICAgPFBnVGFibGUKKyAgICAgICAgICAgICAgICAgIGNhdmVUYWJsZT17ZmFsc2V9CisgICAgICAg ICAgICAgICAgICBjb2x1bW5zPXsKKyAgICAgICAgICAgICAgICAgICAgdmFsID09PSAwCisgICAg ICAgICAgICAgICAgICAgICAgPyBhY3Rpdml0eUNvbHVtbnMKKyAgICAgICAgICAgICAgICAgICAg ICA6IHZhbCA9PT0gMQorICAgICAgICAgICAgICAgICAgICAgICAgPyBkYXRhYmFzZUxvY2tzQ29s dW1ucworICAgICAgICAgICAgICAgICAgICAgICAgOiB2YWwgPT0gMgorICAgICAgICAgICAgICAg ICAgICAgICAgICA/IGRhdGFiYXNlUHJlcGFyZWRDb2x1bW5zCisgICAgICAgICAgICAgICAgICAg ICAgICAgIDogc2VydmVyQ29uZmlnQ29sdW1ucworICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICAgZGF0YT17ZGFzaERhdGF9CisgICAgICAgICAgICAgICAgICBzY2hlbWE9e3Nj aGVtYURpY3R9CisgICAgICAgICAgICAgICAgPjwvUGdUYWJsZT4KKyAgICAgICAgICAgICAgPC9C b3g+CiAgICAgICAgICAgICA8L0JveD4KICAgICAgICAgICA8L0JveD4KICAgICAgICAgPC9Cb3g+ CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvVGhlbWUvZGFyay5qcyBiL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9UaGVtZS9kYXJrLmpzCmluZGV4IGNhZmFhYWUzZS4uODgwODI2MmFj IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvVGhlbWUvZGFyay5qcworKysgYi93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvVGhlbWUvZGFyay5qcwpAQCAtOTQsNiArOTQsNyBAQCBleHBv cnQgZGVmYXVsdCBmdW5jdGlvbihiYXNpY1NldHRpbmdzKSB7CiAgICAgICBzdGVwRmc6ICcjMDAw JywKICAgICAgIHRvZ2dsZUJ0bkJnOiAnIzAwMCcsCiAgICAgICBjb2xvckZnOiAnI0ZGRkZGRics CisgICAgICBlbXB0eVNwYWNlQmc6ICcjMjEyMTIxJywKICAgICB9CiAgIH0pOwogfQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL1RoZW1lL2hpZ2hfY29udHJhc3QuanMgYi93ZWIv cGdhZG1pbi9zdGF0aWMvanMvVGhlbWUvaGlnaF9jb250cmFzdC5qcwppbmRleCBhOWMxNzJhYzcu LjBmYjMzMGFlMyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL1RoZW1lL2hpZ2hf Y29udHJhc3QuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL1RoZW1lL2hpZ2hfY29udHJh c3QuanMKQEAgLTkyLDYgKzkyLDcgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYmFzaWNTZXR0 aW5ncykgewogICAgICAgc3RlcEZnOiAnIzAwMCcsCiAgICAgICB0b2dnbGVCdG5CZzogJyM2QjZC NkInLAogICAgICAgY29sb3JGZzogJyNGRkZGRkYnLAorICAgICAgZW1wdHlTcGFjZUJnOiAnIzAx MEIxNScsCiAgICAgfQogICB9KTsKIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9q cy9UaGVtZS9zdGFuZGFyZC5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9UaGVtZS9zdGFuZGFy ZC5qcwppbmRleCA4Y2Y0NjNhNzEuLmI0ZTJiODhiMSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v c3RhdGljL2pzL1RoZW1lL3N0YW5kYXJkLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9U aGVtZS9zdGFuZGFyZC5qcwpAQCAtMTAzLDcgKzEwMyw3IEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0 aW9uKGJhc2ljU2V0dGluZ3MpIHsKICAgICAgIHRvZ2dsZUJ0bkJnOiAnIzAwMCcsCiAgICAgICBl ZGl0b3JUb29sYmFyQmc6ICcjZWJlZWYzJywKICAgICAgIGRhdGFncmlkQmc6ICcjZmZmJywKLQor ICAgICAgZW1wdHlTcGFjZUJnOiAnI2ViZWVmMycsCiAgICAgfQogICB9KTsKIH0KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRzL1BnVGFibGUuanN4IGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL2NvbXBvbmVudHMvUGdUYWJsZS5qc3gKaW5kZXggMjY1ZDgzM2YzLi41 NjI2MjcxYTQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRzL1Bn VGFibGUuanN4CisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRzL1BnVGFibGUu anN4CkBAIC0yNCw5ICsyNCw5IEBAIGltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7 CiBpbXBvcnQgQXV0b1NpemVyIGZyb20gJ3JlYWN0LXZpcnR1YWxpemVkLWF1dG8tc2l6ZXInOwog aW1wb3J0IHsgQ2hlY2tib3gsIEJveCB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJzsKIGltcG9y dCB7IElucHV0VGV4dCB9IGZyb20gJy4vRm9ybUNvbXBvbmVudHMnOwotaW1wb3J0IEZvcm1WaWV3 IGZyb20gJ3NvdXJjZXMvU2NoZW1hVmlldyc7CiBpbXBvcnQgXyBmcm9tICdsb2Rhc2gnOwogaW1w b3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKK2ltcG9ydCBTY2hlbWFWaWV3IGZy b20gJy4uL1NjaGVtYVZpZXcnOwogCiAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9kaXNwbGF5LW5h bWUgKi8KIGNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMoKHRoZW1lKSA9PiAoewpAQCAtMzcs OCArMzcsMTEgQEAgY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcygodGhlbWUpID0+ICh7CiAg ICAgLi4udGhlbWUubWl4aW5zLnBhbmVsQm9yZGVyLAogICAgIGJhY2tncm91bmRDb2xvcjogdGhl bWUucGFsZXR0ZS5iYWNrZ3JvdW5kLmRlZmF1bHQsCiAgIH0sCisgIGF1dG9SZXNpemVyQ29udGFp bmVyOiB7CisgICAgZmxleEdyb3c6IDEsCisgICAgbWluSGVpZ2h0OiAwCisgIH0sCiAgIGF1dG9S ZXNpemVyOiB7Ci0gICAgaGVpZ2h0OiAnMTAwJSAhaW1wb3J0YW50JywKICAgICB3aWR0aDogJzEw MCUgIWltcG9ydGFudCcsCiAgIH0sCiAgIGZpeGVkU2l6ZUxpc3Q6IHsKQEAgLTUxLDcgKzU0LDYg QEAgY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcygodGhlbWUpID0+ICh7CiAgICAgbWFyZ2lu TGVmdDogJzRweCcKICAgfSwKICAgc2VhcmNoQm94OiB7Ci0gICAgbWFyZ2luQm90dG9tOiAnNXB4 JywKICAgICBkaXNwbGF5OiAnZmxleCcsCiAgICAgYmFja2dyb3VuZDogdGhlbWUucGFsZXR0ZS5i YWNrZ3JvdW5kLmRlZmF1bHQKICAgfSwKQEAgLTYxLDEwICs2Myw2IEBAIGNvbnN0IHVzZVN0eWxl cyA9IG1ha2VTdHlsZXMoKHRoZW1lKSA9PiAoewogICBhbGVydDogewogICAgIGJhY2tncm91bmRD b2xvcjogdGhlbWUucGFsZXR0ZS5lcnJvci5tYWluICsgJyFpbXBvcnRhbnQnCiAgIH0sCi0KLSAg dGFibGVDb250ZW50V2lkdGg6IHsKLSAgICB3aWR0aDogJ2NhbGMoMTAwJSAtIDNweCknLAotICB9 LAogICBzZWFyY2hQYWRkaW5nOiB7CiAgICAgZmxleDogMi41CiAgIH0sCkBAIC03NywxNCArNzUs MjIgQEAgY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcygodGhlbWUpID0+ICh7CiAgICAgbWFy Z2luQm90dG9tOiA4LAogCiAgIH0sCi0gIHRhYmxlOiB7CisgIHRhYmxlQ29udGFpbmVyOiB7Cisg ICAgb3ZlcmZsb3dYOiAnYXV0bycsCiAgICAgZmxleEdyb3c6IDEsCiAgICAgbWluSGVpZ2h0OiAw LAorICAgIGRpc3BsYXk6ICdmbGV4JywKKyAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywKKyAg ICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLm90aGVyVmFycy5lbXB0eVNwYWNlQmcsCisgIH0sCisg IHRhYmxlOiB7CiAgICAgYm9yZGVyU3BhY2luZzogMCwKLSAgICB3aWR0aDogJzEwMCUnLAogICAg IG92ZXJmbG93OiAnaGlkZGVuJywKICAgICBib3JkZXJSYWRpdXM6IHRoZW1lLnNoYXBlLmJvcmRl clJhZGl1cywKLSAgICBib3JkZXI6ICcxcHggc29saWQnKyB0aGVtZS5wYWxldHRlLmdyZXlbNDAw XQorICAgIGJvcmRlcjogJzFweCBzb2xpZCAnK3RoZW1lLm90aGVyVmFycy5ib3JkZXJDb2xvciwK KyAgICBkaXNwbGF5OiAnZmxleCcsCisgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsCisgICAg aGVpZ2h0OiAnMTAwJScsCiAgIH0sCiAgIHBnVGFibGVIZWFkYXI6IHsKICAgICBkaXNwbGF5OiAn ZmxleCcsCkBAIC05NCwxMSArMTAwLDE2IEBAIGNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMo KHRoZW1lKSA9PiAoewogICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nCiAgIH0sCiAKKyAgdGFi bGVSb3dDb250ZW50OnsKKyAgICBkaXNwbGF5OiAnZmxleCcsCisgICAgZmxleERpcmVjdGlvbjog J2NvbHVtbicsCisgICAgbWluSGVpZ2h0OiAwLAorICB9LAorCiAgIGV4cGFuZGVkRm9ybTogewot ICAgIC4uLnRoZW1lLm1peGlucy5wYW5lbEJvcmRlciwKKyAgICAuLi50aGVtZS5taXhpbnMucGFu ZWxCb3JkZXIuYWxsLAogICAgIG1hcmdpbjogJzhweCcsCi0gICAgcGFkZGluZ0JvdHRvbTogJzEy cHgnLAotICAgIG1hcmdpblJpZ2h0OiAnMTVweCcsCisgICAgZmxleEdyb3c6IDEsCiAgIH0sCiAK ICAgdGFibGVDZWxsOiB7CkBAIC0xNTUsNiArMTY2LDkgQEAgY29uc3QgdXNlU3R5bGVzID0gbWFr ZVN0eWxlcygodGhlbWUpID0+ICh7CiAgICAgb3ZlcmZsb3c6ICdhdXRvJywKICAgICBwYWRkaW5n OiAnNy41cHgnLAogICB9LAorICBjYXZlVGFibGU6IHsKKyAgICBtYXJnaW46ICc4cHgnLAorICB9 LAogICBwYW5lbEljb246IHsKICAgICB3aWR0aDogJzgwJScsCiAgICAgbWFyZ2luOiAnMCBhdXRv JywKQEAgLTE3NywzMCArMTkxLDYzIEBAIGNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMoKHRo ZW1lKSA9PiAoewogICB9LAogfSkpOwogCi1leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQZ1RhYmxl KHsgY29sdW1ucywgZGF0YSwgaXNTZWxlY3RSb3csIG9mZnNldD0xMDUsIC4uLnByb3BzIH0pIHsK K2NvbnN0IEluZGV0ZXJtaW5hdGVDaGVja2JveCA9IFJlYWN0LmZvcndhcmRSZWYoCisgICh7IGlu ZGV0ZXJtaW5hdGUsIC4uLnJlc3QgfSwgcmVmKSA9PiB7CisgICAgY29uc3QgZGVmYXVsdFJlZiA9 IFJlYWN0LnVzZVJlZigpOworICAgIGNvbnN0IHJlc29sdmVkUmVmID0gcmVmIHx8IGRlZmF1bHRS ZWY7CisKKyAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geworICAgICAgcmVzb2x2ZWRSZWYuY3Vy cmVudC5pbmRldGVybWluYXRlID0gaW5kZXRlcm1pbmF0ZTsKKyAgICB9LCBbcmVzb2x2ZWRSZWYs IGluZGV0ZXJtaW5hdGVdKTsKKyAgICByZXR1cm4gKAorICAgICAgPD4KKyAgICAgICAgPENoZWNr Ym94CisgICAgICAgICAgY29sb3I9InByaW1hcnkiCisgICAgICAgICAgcmVmPXtyZXNvbHZlZFJl Zn0gey4uLnJlc3R9CisgICAgICAgIC8+CisgICAgICA8Lz4KKyAgICApOworICB9LAorKTsKKwor SW5kZXRlcm1pbmF0ZUNoZWNrYm94LmRpc3BsYXlOYW1lID0gJ1NlbGVjdENoZWNrYm94JzsKKwor SW5kZXRlcm1pbmF0ZUNoZWNrYm94LnByb3BUeXBlcyA9IHsKKyAgaW5kZXRlcm1pbmF0ZTogUHJv cFR5cGVzLmJvb2wsCisgIHJlc3Q6IFByb3BUeXBlcy5mdW5jLAorICBnZXRUb2dnbGVBbGxSb3dz U2VsZWN0ZWRQcm9wczogUHJvcFR5cGVzLmZ1bmMsCisgIHJvdzogUHJvcFR5cGVzLm9iamVjdCwK K307CisKK2NvbnN0IFJPV19IRUlHSFQgPSAzNTsKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBn VGFibGUoeyBjb2x1bW5zLCBkYXRhLCBpc1NlbGVjdFJvdywgY2F2ZVRhYmxlPXRydWUsIC4uLnBy b3BzIH0pIHsKICAgLy8gVXNlIHRoZSBzdGF0ZSBhbmQgZnVuY3Rpb25zIHJldHVybmVkIGZyb20g dXNlVGFibGUgdG8gYnVpbGQgeW91ciBVSQogICBjb25zdCBjbGFzc2VzID0gdXNlU3R5bGVzKCk7 CiAgIGNvbnN0IFtzZWFyY2hWYWwsIHNldFNlYXJjaFZhbF0gPSBSZWFjdC51c2VTdGF0ZSgnJyk7 CiAgIGNvbnN0IHRhYmxlUmVmID0gUmVhY3QudXNlUmVmKCk7CiAgIGNvbnN0IHJvd0hlaWdodHMg PSBSZWFjdC51c2VSZWYoe30pOwotICBjb25zdCByb3dSZWYgPSBSZWFjdC51c2VSZWYoe30pOwog CiAgIC8vIFJlc2V0IFNlYXJjaCB2YWt1ZSBpbiB0YWIgY2hhbmdlZC4KICAgUmVhY3QudXNlRWZm ZWN0KCgpPT57CiAgICAgc2V0U2VhcmNoVmFsKCcnKTsKLSAgfSxbY29sdW1uc10pOwotICBmdW5j dGlvbiBnZXRSb3dIZWlnaHQoaW5kZXgsIHNpemUpIHsKLSAgICByZXR1cm4gcm93SGVpZ2h0cy5j dXJyZW50W2luZGV4XSArIHNpemUgfHwgMzU7CisgICAgcm93SGVpZ2h0cy5jdXJyZW50ID0ge307 CisgICAgdGFibGVSZWYuY3VycmVudD8ucmVzZXRBZnRlckluZGV4KDApOworICB9LCBbY29sdW1u c10pOworCisgIGZ1bmN0aW9uIGdldFJvd0hlaWdodChpbmRleCkgeworICAgIHJldHVybiByb3dI ZWlnaHRzLmN1cnJlbnRbaW5kZXhdIHx8IFJPV19IRUlHSFQ7CiAgIH0KIAotICBjb25zdCBzZXRS b3dIZWlnaHQgPSBSZWFjdC51c2VDYWxsYmFjaygoaW5kZXgsIHNpemUpID0+IHsKKyAgY29uc3Qg c2V0Um93SGVpZ2h0ID0gKGluZGV4LCBzaXplKSA9PiB7CiAgICAgaWYodGFibGVSZWYuY3VycmVu dCkgewotICAgICAgdGFibGVSZWYuY3VycmVudC5yZXNldEFmdGVySW5kZXgoaW5kZXgpOwotICAg ICAgaWYgKCEocm93SGVpZ2h0cy5jdXJyZW50Lmhhc093blByb3BlcnR5KGluZGV4KSkpewotICAg ICAgICByb3dIZWlnaHRzLmN1cnJlbnQgPSB7IC4uLnJvd0hlaWdodHMuY3VycmVudCwgW2luZGV4 XTogc2l6ZSB9OworICAgICAgaWYoc2l6ZSA9PSBST1dfSEVJR0hUKSB7CisgICAgICAgIGRlbGV0 ZSByb3dIZWlnaHRzLmN1cnJlbnRbaW5kZXhdOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcm93 SGVpZ2h0cy5jdXJyZW50W2luZGV4XSA9IHNpemU7CiAgICAgICB9CisgICAgICB0YWJsZVJlZi5j dXJyZW50LnJlc2V0QWZ0ZXJJbmRleChpbmRleCk7CiAgICAgfQotICB9LCBbXSk7CisgIH07CiAK ICAgY29uc3QgZGVmYXVsdENvbHVtbiA9IFJlYWN0LnVzZU1lbW8oCiAgICAgKCkgPT4gKHsKQEAg LTIwOSwzNCArMjU2LDYgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGdUYWJsZSh7IGNvbHVt bnMsIGRhdGEsIGlzU2VsZWN0Um93LCBvZmZzZXQ9MTA1LCAuLi5wcm8KICAgICBbXQogICApOwog Ci0gIGNvbnN0IEluZGV0ZXJtaW5hdGVDaGVja2JveCA9IFJlYWN0LmZvcndhcmRSZWYoCi0gICAg KHsgaW5kZXRlcm1pbmF0ZSwgLi4ucmVzdCB9LCByZWYpID0+IHsKLSAgICAgIGNvbnN0IGRlZmF1 bHRSZWYgPSBSZWFjdC51c2VSZWYoKTsKLSAgICAgIGNvbnN0IHJlc29sdmVkUmVmID0gcmVmIHx8 IGRlZmF1bHRSZWY7Ci0KLSAgICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7Ci0gICAgICAgIHJl c29sdmVkUmVmLmN1cnJlbnQuaW5kZXRlcm1pbmF0ZSA9IGluZGV0ZXJtaW5hdGU7Ci0gICAgICB9 LCBbcmVzb2x2ZWRSZWYsIGluZGV0ZXJtaW5hdGVdKTsKLSAgICAgIHJldHVybiAoCi0gICAgICAg IDw+Ci0gICAgICAgICAgPENoZWNrYm94Ci0gICAgICAgICAgICBjb2xvcj0icHJpbWFyeSIKLSAg ICAgICAgICAgIHJlZj17cmVzb2x2ZWRSZWZ9IHsuLi5yZXN0fQotICAgICAgICAgIC8+Ci0gICAg ICAgIDwvPgotICAgICAgKTsKLSAgICB9LAotICApOwotCi0gIEluZGV0ZXJtaW5hdGVDaGVja2Jv eC5kaXNwbGF5TmFtZSA9ICdTZWxlY3RDaGVja2JveCc7Ci0KLSAgSW5kZXRlcm1pbmF0ZUNoZWNr Ym94LnByb3BUeXBlcyA9IHsKLSAgICBpbmRldGVybWluYXRlOiBQcm9wVHlwZXMuYm9vbCwKLSAg ICByZXN0OiBQcm9wVHlwZXMuZnVuYywKLSAgICBnZXRUb2dnbGVBbGxSb3dzU2VsZWN0ZWRQcm9w czogUHJvcFR5cGVzLmZ1bmMsCi0gICAgcm93OiBQcm9wVHlwZXMub2JqZWN0LAotICB9OwotCiAg IGNvbnN0IHsKICAgICBnZXRUYWJsZVByb3BzLAogICAgIGdldFRhYmxlQm9keVByb3BzLApAQCAt MjQ0LDcgKzI2Myw3IEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBnVGFibGUoeyBjb2x1bW5z LCBkYXRhLCBpc1NlbGVjdFJvdywgb2Zmc2V0PTEwNSwgLi4ucHJvCiAgICAgcm93cywKICAgICBw cmVwYXJlUm93LAogICAgIHNlbGVjdGVkRmxhdFJvd3MsCi0gICAgc3RhdGU6IHsgc2VsZWN0ZWRS b3dJZHMsIGV4cGFuZGVkIH0sCisgICAgc3RhdGU6IHsgc2VsZWN0ZWRSb3dJZHMgfSwKICAgICBz ZXRHbG9iYWxGaWx0ZXIsCiAgICAgc2V0SGlkZGVuQ29sdW1ucywKICAgfSA9IHVzZVRhYmxlKApA QCAtMzI3LDExICszNDYsNiBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQZ1RhYmxlKHsgY29s dW1ucywgZGF0YSwgaXNTZWxlY3RSb3csIG9mZnNldD0xMDUsIC4uLnBybwogICAgIH0KICAgKTsK IAotICBSZWFjdC51c2VFZmZlY3QoKCk9PnsKLSAgICB0YWJsZVJlZi5jdXJyZW50Py5yZXNldEFm dGVySW5kZXgoMCk7Ci0gIH0sW2V4cGFuZGVkXSk7Ci0KLQogICBSZWFjdC51c2VFZmZlY3QoKCkg PT4gewogICAgIHNldEhpZGRlbkNvbHVtbnMoCiAgICAgICBjb2x1bW5zCkBAIC0zNjUsNDUgKzM3 OSw3MiBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQZ1RhYmxlKHsgY29sdW1ucywgZGF0YSwg aXNTZWxlY3RSb3csIG9mZnNldD0xMDUsIC4uLnBybwogICBjb25zdCBSZW5kZXJSb3cgPSBSZWFj dC51c2VDYWxsYmFjaygKICAgICAoeyBpbmRleCwgc3R5bGUgfSkgPT4gewogICAgICAgY29uc3Qg cm93ID0gcm93c1tpbmRleF07CisgICAgICBjb25zdCBbZXhwYW5kQ29tcGxldGUsIHNldEV4cGFu ZENvbXBsZXRlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpOworICAgICAgY29uc3Qgcm93UmVmID0g UmVhY3QudXNlUmVmKCkgOwogICAgICAgcHJlcGFyZVJvdyhyb3cpOworCisgICAgICBSZWFjdC51 c2VFZmZlY3QoKCk9PnsKKyAgICAgICAgaWYoZXhwYW5kQ29tcGxldGUgJiYgIXJvdy5pc0V4cGFu ZGVkKSB7CisgICAgICAgICAgc2V0RXhwYW5kQ29tcGxldGUoZmFsc2UpOworICAgICAgICB9Cisg ICAgICB9LCBbcm93LmlzRXhwYW5kZWRdKTsKKworICAgICAgUmVhY3QudXNlRWZmZWN0KCgpPT57 CisgICAgICAgIGlmKHJvd1JlZi5jdXJyZW50KSB7CisgICAgICAgICAgaWYoZXhwYW5kQ29tcGxl dGUgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0KKyAgICAgICAg ICBsZXQgcm93SGVpZ2h0OworICAgICAgICAgIHJvd1JlZi5jdXJyZW50LnN0eWxlLmhlaWdodD0n dW5zZXQnOworICAgICAgICAgIGlmKGV4cGFuZENvbXBsZXRlKSB7CisgICAgICAgICAgICByb3dI ZWlnaHQgPSByb3dSZWYuY3VycmVudC5vZmZzZXRIZWlnaHQ7CisgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgIHJvd0hlaWdodCA9IFJPV19IRUlHSFQ7CisgICAgICAgICAgICByb3dSZWYu Y3VycmVudC5zdHlsZS5oZWlnaHQgPSBST1dfSEVJR0hUOworICAgICAgICAgIH0KKyAgICAgICAg ICByb3dSZWYuY3VycmVudC5zdHlsZS5oZWlnaHQgPSByb3dIZWlnaHQgKyAncHgnOworICAgICAg ICAgIHNldFJvd0hlaWdodChpbmRleCwgcm93SGVpZ2h0KTsKKyAgICAgICAgfQorICAgICAgfSwg W2V4cGFuZENvbXBsZXRlXSk7CisKICAgICAgIHJldHVybiAoCi0gICAgICAgIDxkaXYgY2xhc3NO YW1lPXtjbGFzc2VzLnRhYmxlQ29udGVudFdpZHRofSBzdHlsZT17c3R5bGV9IGtleT17cm93Lmlk fT4KLSAgICAgICAgICA8ZGl2IHsuLi5yb3cuZ2V0Um93UHJvcHMoKX0gY2xhc3NOYW1lPXtjbGFz c2VzLnRyfT4KLSAgICAgICAgICAgIHtyb3cuY2VsbHMubWFwKChjZWxsKSA9PiB7Ci0gICAgICAg ICAgICAgIGxldCBjbGFzc05hbWVzID0gW2NsYXNzZXMudGFibGVDZWxsXTsKLSAgICAgICAgICAg ICAgaWYodHlwZW9mKGNlbGwuY29sdW1uLmlkKSA9PSAnc3RyaW5nJyAmJiBjZWxsLmNvbHVtbi5p ZC5zdGFydHNXaXRoKCdidG4tJykpIHsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWVzLnB1c2go Y2xhc3Nlcy5idG5DZWxsKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBpZihjZWxs LmNvbHVtbi5pZCA9PSAnYnRuLWVkaXQnICYmIHJvdy5pc0V4cGFuZGVkKSB7Ci0gICAgICAgICAg ICAgICAgY2xhc3NOYW1lcy5wdXNoKGNsYXNzZXMuZXhwYW5kZWRJY29uQ2VsbCk7Ci0gICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgaWYgKHJvdy5vcmlnaW5hbC5yb3dfdHlwZSA9PT0gJ3dh cm5pbmcnKXsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWVzLnB1c2goY2xhc3Nlcy53YXJuaW5n KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBpZiAocm93Lm9yaWdpbmFsLnJvd190 eXBlID09PSAnYWxlcnQnKXsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWVzLnB1c2goY2xhc3Nl cy5hbGVydCk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgcmV0dXJuICgKLSAgICAg ICAgICAgICAgICA8ZGl2IGtleT17Y2VsbC5jb2x1bW4uaWR9IHsuLi5jZWxsLmdldENlbGxQcm9w cygpfSBjbGFzc05hbWU9e2Nsc3goY2xhc3NOYW1lcywgcm93Lm9yaWdpbmFsLmljb24gJiYgcm93 Lm9yaWdpbmFsLmljb25bY2VsbC5jb2x1bW4uaWRdLCByb3cub3JpZ2luYWwuaWNvbltjZWxsLmNv bHVtbi5pZF0gJiYgY2xhc3Nlcy5jZWxsSWNvbil9Ci0gICAgICAgICAgICAgICAgICB0aXRsZT17 Xy5pc1VuZGVmaW5lZChjZWxsLnZhbHVlKSB8fCBfLmlzTnVsbChjZWxsLnZhbHVlKSA/ICcnOiBT dHJpbmcoY2VsbC52YWx1ZSl9PgotICAgICAgICAgICAgICAgICAge2NlbGwucmVuZGVyKCdDZWxs Jyl9Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICk7Ci0gICAgICAgICAg ICB9KX0KKyAgICAgICAgPGRpdiBzdHlsZT17c3R5bGV9IGtleT17cm93LmlkfSByZWY9e3Jvd1Jl Zn0+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMudGFibGVSb3dDb250ZW50fT4K KyAgICAgICAgICAgIDxkaXYgey4uLnJvdy5nZXRSb3dQcm9wcygpfSBjbGFzc05hbWU9e2NsYXNz ZXMudHJ9PgorICAgICAgICAgICAgICB7cm93LmNlbGxzLm1hcCgoY2VsbCkgPT4geworICAgICAg ICAgICAgICAgIGxldCBjbGFzc05hbWVzID0gW2NsYXNzZXMudGFibGVDZWxsXTsKKyAgICAgICAg ICAgICAgICBpZih0eXBlb2YoY2VsbC5jb2x1bW4uaWQpID09ICdzdHJpbmcnICYmIGNlbGwuY29s dW1uLmlkLnN0YXJ0c1dpdGgoJ2J0bi0nKSkgeworICAgICAgICAgICAgICAgICAgY2xhc3NOYW1l cy5wdXNoKGNsYXNzZXMuYnRuQ2VsbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgIGlmKGNlbGwuY29sdW1uLmlkID09ICdidG4tZWRpdCcgJiYgcm93LmlzRXhwYW5kZWQpIHsK KyAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaChjbGFzc2VzLmV4cGFuZGVkSWNvbkNl bGwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocm93Lm9yaWdpbmFs LnJvd190eXBlID09PSAnd2FybmluZycpeworICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lcy5w dXNoKGNsYXNzZXMud2FybmluZyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg IGlmIChyb3cub3JpZ2luYWwucm93X3R5cGUgPT09ICdhbGVydCcpeworICAgICAgICAgICAgICAg ICAgY2xhc3NOYW1lcy5wdXNoKGNsYXNzZXMuYWxlcnQpOworICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2NlbGwu Y29sdW1uLmlkfSB7Li4uY2VsbC5nZXRDZWxsUHJvcHMoKX0gY2xhc3NOYW1lPXtjbHN4KGNsYXNz TmFtZXMsIHJvdy5vcmlnaW5hbC5pY29uICYmIHJvdy5vcmlnaW5hbC5pY29uW2NlbGwuY29sdW1u LmlkXSwgcm93Lm9yaWdpbmFsLmljb25bY2VsbC5jb2x1bW4uaWRdICYmIGNsYXNzZXMuY2VsbElj b24pfQorICAgICAgICAgICAgICAgICAgICB0aXRsZT17Xy5pc1VuZGVmaW5lZChjZWxsLnZhbHVl KSB8fCBfLmlzTnVsbChjZWxsLnZhbHVlKSA/ICcnOiBTdHJpbmcoY2VsbC52YWx1ZSl9PgorICAg ICAgICAgICAgICAgICAgICB7Y2VsbC5yZW5kZXIoJ0NlbGwnKX0KKyAgICAgICAgICAgICAgICAg IDwvZGl2PgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIH0pfQorICAgICAgICAg ICAgPC9kaXY+CisgICAgICAgICAgICB7IV8uaXNVbmRlZmluZWQocm93KSAmJiByb3cuaXNFeHBh bmRlZCAmJiAoCisgICAgICAgICAgICAgIDxCb3gga2V5PXtyb3cuaWR9IGNsYXNzTmFtZT17Y2xh c3Nlcy5leHBhbmRlZEZvcm19PgorICAgICAgICAgICAgICAgIDxTY2hlbWFWaWV3CisgICAgICAg ICAgICAgICAgICBnZXRJbml0RGF0YT17KCk9PlByb21pc2UucmVzb2x2ZSh7fSl9CisgICAgICAg ICAgICAgICAgICB2aWV3SGVscGVyUHJvcHM9e3sgbW9kZTogJ3Byb3BlcnRpZXMnIH19CisgICAg ICAgICAgICAgICAgICBzY2hlbWE9e3Byb3BzLnNjaGVtYVtyb3cuaWRdfQorICAgICAgICAgICAg ICAgICAgc2hvd0Zvb3Rlcj17ZmFsc2V9CisgICAgICAgICAgICAgICAgICBvbkRhdGFDaGFuZ2U9 eygpPT57c2V0RXhwYW5kQ29tcGxldGUodHJ1ZSk7fX0KKyAgICAgICAgICAgICAgICAvPgorICAg ICAgICAgICAgICA8L0JveD4KKyAgICAgICAgICAgICl9CiAgICAgICAgICAgPC9kaXY+Ci0gICAg ICAgICAgeyFfLmlzVW5kZWZpbmVkKHJvdykgJiYgcm93LmlzRXhwYW5kZWQgJiYgKAotICAgICAg ICAgICAgPEJveCBrZXk9e3Jvdy5pZH0gY2xhc3NOYW1lPXtjbGFzc2VzLmV4cGFuZGVkRm9ybX0g cmVmPXtyb3dSZWZ9IHN0eWxlPXt7aGVpZ2h0OiByb3dIZWlnaHRzLmN1cnJlbnRbaW5kZXhdfX0+ Ci0gICAgICAgICAgICAgIDxGb3JtVmlldwotICAgICAgICAgICAgICAgIGdldEluaXREYXRhPXso KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAvKlRoaXMgaXMgaW50ZW50aW9uYWwgKFNvbmFyUXVi ZSkqLwotICAgICAgICAgICAgICAgIH19Ci0gICAgICAgICAgICAgICAgdmlld0hlbHBlclByb3Bz PXt7IG1vZGU6ICdwcm9wZXJ0aWVzJyB9fQotICAgICAgICAgICAgICAgIHNjaGVtYT17cHJvcHMu c2NoZW1hW3Jvdy5pZF19Ci0gICAgICAgICAgICAgICAgc2hvd0Zvb3Rlcj17ZmFsc2V9Ci0gICAg ICAgICAgICAgICAgb25EYXRhQ2hhbmdlPXsoKSA9PiB7IH19Ci0gICAgICAgICAgICAgIC8+Ci0g ICAgICAgICAgICA8L0JveD4KLSAgICAgICAgICApfQogICAgICAgICA8L2Rpdj4KICAgICAgICk7 CiAgICAgfSwKQEAgLTQyNCw4MCArNDY1LDcwIEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBn VGFibGUoeyBjb2x1bW5zLCBkYXRhLCBpc1NlbGVjdFJvdywgb2Zmc2V0PTEwNSwgLi4ucHJvCiAg ICAgICAgICAgfX0KICAgICAgICAgLz4KICAgICAgIDwvQm94PgotICAgICAgPEF1dG9TaXplcgot ICAgICAgICBjbGFzc05hbWU9e3Byb3BzLnR5cGUgPT09ICdwYW5lbCcgPyBwcm9wcy5jbGFzc05h bWUgOiBjbGFzc2VzLmF1dG9SZXNpemVyfQotICAgICAgPgotICAgICAgICB7KHsgaGVpZ2h0IH0p ID0+ICgKLSAgICAgICAgICA8ZGl2IHsuLi5nZXRUYWJsZVByb3BzKCl9IGNsYXNzTmFtZT17Y2xh c3Nlcy50YWJsZX0+Ci0gICAgICAgICAgICA8ZGl2PgotICAgICAgICAgICAgICB7aGVhZGVyR3Jv dXBzLm1hcCgoaGVhZGVyR3JvdXApID0+ICgKLSAgICAgICAgICAgICAgICA8ZGl2IGtleT17Jyd9 IHsuLi5oZWFkZXJHcm91cC5nZXRIZWFkZXJHcm91cFByb3BzKCl9PgotICAgICAgICAgICAgICAg ICAge2hlYWRlckdyb3VwLmhlYWRlcnMubWFwKChjb2x1bW4pID0+ICgKKyAgICAgIDxkaXYgY2xh c3NOYW1lPXtjbGFzc2VzLnRhYmxlQ29udGFpbmVyfT4KKyAgICAgICAgPGRpdiB7Li4uZ2V0VGFi bGVQcm9wcygpfSBjbGFzc05hbWU9e2Nsc3goY2xhc3Nlcy50YWJsZSwgY2F2ZVRhYmxlID8gY2xh c3Nlcy5jYXZlVGFibGUgOiAnJyl9PgorICAgICAgICAgIDxkaXY+CisgICAgICAgICAgICB7aGVh ZGVyR3JvdXBzLm1hcCgoaGVhZGVyR3JvdXApID0+ICgKKyAgICAgICAgICAgICAgPGRpdiBrZXk9 eycnfSB7Li4uaGVhZGVyR3JvdXAuZ2V0SGVhZGVyR3JvdXBQcm9wcygpfT4KKyAgICAgICAgICAg ICAgICB7aGVhZGVyR3JvdXAuaGVhZGVycy5tYXAoKGNvbHVtbikgPT4gKAorICAgICAgICAgICAg ICAgICAgPGRpdgorICAgICAgICAgICAgICAgICAgICBrZXk9e2NvbHVtbi5pZH0KKyAgICAgICAg ICAgICAgICAgICAgey4uLmNvbHVtbi5nZXRIZWFkZXJQcm9wcygpfQorICAgICAgICAgICAgICAg ICAgICBjbGFzc05hbWU9e2Nsc3goY2xhc3Nlcy50YWJsZUNlbGxIZWFkZXIsIGNvbHVtbi5jbGFz c05hbWUpfQorICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICA8ZGl2Ci0g ICAgICAgICAgICAgICAgICAgICAga2V5PXtjb2x1bW4uaWR9Ci0gICAgICAgICAgICAgICAgICAg ICAgey4uLmNvbHVtbi5nZXRIZWFkZXJQcm9wcygpfQotICAgICAgICAgICAgICAgICAgICAgIGNs YXNzTmFtZT17Y2xzeChjbGFzc2VzLnRhYmxlQ2VsbEhlYWRlciwgY29sdW1uLmNsYXNzTmFtZSl9 CisgICAgICAgICAgICAgICAgICAgICAgey4uLihjb2x1bW4uc29ydGJsZSA/IGNvbHVtbi5nZXRT b3J0QnlUb2dnbGVQcm9wcygpIDoge30pfQogICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAg ICAgICAgICAgICAgICAgPGRpdgotICAgICAgICAgICAgICAgICAgICAgICAgey4uLihjb2x1bW4u c29ydGJsZSA/IGNvbHVtbi5nZXRTb3J0QnlUb2dnbGVQcm9wcygpIDoge30pfQotICAgICAgICAg ICAgICAgICAgICAgID4KLSAgICAgICAgICAgICAgICAgICAgICAgIHtjb2x1bW4ucmVuZGVyKCdI ZWFkZXInKX0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgotICAgICAgICAgICAgICAg ICAgICAgICAgICB7Y29sdW1uLmlzU29ydGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg PyBjb2x1bW4uaXNTb3J0ZWREZXNjCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcg 8J+UvScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJyDwn5S8JwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDogJyd9Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+ Ci0gICAgICAgICAgICAgICAgICAgICAgICB7Y29sdW1uLnJlc2l6YWJsZSAmJiAoCi0gICAgICAg ICAgICAgICAgICAgICAgICAgIDxkaXYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4u Y29sdW1uLmdldFJlc2l6ZXJQcm9wcygpfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs YXNzTmFtZT17Y2xhc3Nlcy5yZXNpemVyfQotICAgICAgICAgICAgICAgICAgICAgICAgICAvPgot ICAgICAgICAgICAgICAgICAgICAgICAgKX0KLSAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K KyAgICAgICAgICAgICAgICAgICAgICB7Y29sdW1uLnJlbmRlcignSGVhZGVyJyl9CisgICAgICAg ICAgICAgICAgICAgICAgPHNwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICB7Y29sdW1uLmlz U29ydGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgID8gY29sdW1uLmlzU29ydGVkRGVzYwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJyDwn5S9JworICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDogJyDwn5S8JworICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnfQorICAg ICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICB7Y29sdW1u LnJlc2l6YWJsZSAmJiAoCisgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2CisgICAgICAgICAg ICAgICAgICAgICAgICAgIHsuLi5jb2x1bW4uZ2V0UmVzaXplclByb3BzKCl9CisgICAgICAgICAg ICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5yZXNpemVyfQorICAgICAgICAgICAg ICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgICApfQogICAgICAgICAgICAgICAg ICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgICkpfQotICAgICAgICAgICAgICAgIDwvZGl2 PgotICAgICAgICAgICAgICApKX0KLSAgICAgICAgICAgIDwvZGl2PgotCi0gICAgICAgICAgICB7 Ci0gICAgICAgICAgICAgIGRhdGEubGVuZ3RoID4gMCA/ICgKLSAgICAgICAgICAgICAgICA8ZGl2 IHsuLi5nZXRUYWJsZUJvZHlQcm9wcygpfSA+Ci0gICAgICAgICAgICAgICAgICA8VmFyaWFibGVT aXplTGlzdAotICAgICAgICAgICAgICAgICAgICByZWY9e3RhYmxlUmVmfQotICAgICAgICAgICAg ICAgICAgICBjbGFzc05hbWU9e3Byb3BzLnR5cGUgPT09ICdkYXNoYm9hcmQnID8gcHJvcHMuZml4 ZWRTaXplTGlzdCA6IGNsYXNzZXMuZml4ZWRTaXplTGlzdH0KLSAgICAgICAgICAgICAgICAgICAg aGVpZ2h0PXtoZWlnaHQgLSBvZmZzZXR9Ci0gICAgICAgICAgICAgICAgICAgIGl0ZW1Db3VudD17 cm93cy5sZW5ndGh9Ci0gICAgICAgICAgICAgICAgICAgIGl0ZW1TaXplPXsoaSkgPT4gewotICAg ICAgICAgICAgICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHJvd3NbaV0uaXNFeHBhbmRlZCkp IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvd3NbaV0uaXNFeHBhbmRlZCA9IGZhbHNlOwot ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICBpZiAocm93UmVm LmN1cnJlbnQgJiYgcm93c1tpXS5pc0V4cGFuZGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg ICBzZXRSb3dIZWlnaHQoaSwgcm93UmVmLmN1cnJlbnQub2Zmc2V0SGVpZ2h0ICsgMzUpOwotICAg ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm93c1tp XS5pc0V4cGFuZGVkID8gZ2V0Um93SGVpZ2h0KGksIDM1KSA6IDM1OwotICAgICAgICAgICAgICAg ICAgICB9fQotICAgICAgICAgICAgICAgICAgICBzb3J0ZWQ9e3Byb3BzPy5zb3J0T3B0aW9uc30K LSAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgICAgICAgICAge1JlbmRlclJvd30KLQot ICAgICAgICAgICAgICAgICAgPC9WYXJpYWJsZVNpemVMaXN0PgotICAgICAgICAgICAgICAgIDwv ZGl2PgotICAgICAgICAgICAgICApIDogKAotCi0gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05h bWU9e2NsYXNzZXMuZW1wdHlQYW5lbH0+Ci0gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFt ZT17Y2xhc3Nlcy5wYW5lbEljb259PgotICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9 ImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSI+PC9pPgotICAgICAgICAgICAgICAgICAgICA8c3Bh biBjbGFzc05hbWU9e2NsYXNzZXMucGFuZWxNZXNzYWdlfT57Z2V0dGV4dCgnTm8gcmVjb3JkIGZv dW5kJyl9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0KLSAgICAgICAgICAgICAg ICA8L2Rpdj4KLSAgICAgICAgICAgICAgKX0KKyAgICAgICAgICAgICAgICApKX0KKyAgICAgICAg ICAgICAgPC9kaXY+CisgICAgICAgICAgICApKX0KICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg KX0KLSAgICAgIDwvQXV0b1NpemVyPgorICAgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGEubGVu Z3RoID4gMCA/ICgKKyAgICAgICAgICAgICAgPGRpdiB7Li4uZ2V0VGFibGVCb2R5UHJvcHMoKX0g Y2xhc3NOYW1lPXtjbGFzc2VzLmF1dG9SZXNpemVyQ29udGFpbmVyfT4KKyAgICAgICAgICAgICAg ICA8QXV0b1NpemVyCisgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuYXV0b1Jl c2l6ZXJ9CisgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgeyh7IGhlaWdodCB9 KSA9PiAoCisgICAgICAgICAgICAgICAgICAgIDxWYXJpYWJsZVNpemVMaXN0CisgICAgICAgICAg ICAgICAgICAgICAgcmVmPXt0YWJsZVJlZn0KKyAgICAgICAgICAgICAgICAgICAgICBjbGFzc05h bWU9e2NsYXNzZXMuZml4ZWRTaXplTGlzdH0KKyAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9 e2hlaWdodH0KKyAgICAgICAgICAgICAgICAgICAgICBpdGVtQ291bnQ9e3Jvd3MubGVuZ3RofQor ICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TaXplPXtnZXRSb3dIZWlnaHR9CisgICAgICAgICAg ICAgICAgICAgICAgc29ydGVkPXtwcm9wcz8uc29ydE9wdGlvbnN9CisgICAgICAgICAgICAgICAg ICAgID4KKyAgICAgICAgICAgICAgICAgICAgICB7UmVuZGVyUm93fQorICAgICAgICAgICAgICAg ICAgICA8L1ZhcmlhYmxlU2l6ZUxpc3Q+KX0KKyAgICAgICAgICAgICAgICA8L0F1dG9TaXplcj4K KyAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICApIDogKAorICAgICAgICAgICAgICA8 ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5lbXB0eVBhbmVsfT4KKyAgICAgICAgICAgICAgICA8ZGl2 IGNsYXNzTmFtZT17Y2xhc3Nlcy5wYW5lbEljb259PgorICAgICAgICAgICAgICAgICAgPGkgY2xh c3NOYW1lPSJmYSBmYS1leGNsYW1hdGlvbi1jaXJjbGUiPjwvaT4KKyAgICAgICAgICAgICAgICAg IDxzcGFuIGNsYXNzTmFtZT17Y2xhc3Nlcy5wYW5lbE1lc3NhZ2V9PntnZXR0ZXh0KCdObyByZWNv cmQgZm91bmQnKX08L3NwYW4+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAg IDwvZGl2PgorICAgICAgICAgICAgKQorICAgICAgICAgIH0KKyAgICAgICAgPC9kaXY+CisgICAg ICA8L2Rpdj4KICAgICA8L0JveD4KICAgKTsKIH0KQEAgLTUwNSw5ICs1MzYsOSBAQCBleHBvcnQg ZGVmYXVsdCBmdW5jdGlvbiBQZ1RhYmxlKHsgY29sdW1ucywgZGF0YSwgaXNTZWxlY3RSb3csIG9m ZnNldD0xMDUsIC4uLnBybwogUGdUYWJsZS5wcm9wVHlwZXMgPSB7CiAgIHN0ZXBJZDogUHJvcFR5 cGVzLm51bWJlciwKICAgaGVpZ2h0OiBQcm9wVHlwZXMubnVtYmVyLAotICBvZmZzZXQ6IFByb3BU eXBlcy5udW1iZXIsCiAgIGN1c3RvbUhlYWRlcjogUHJvcFR5cGVzLmZ1bmMsCiAgIGNsYXNzTmFt ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm9iamVj dF0pLAorICBjYXZlVGFibGU6IFByb3BUeXBlcy5ib29sLAogICBmaXhlZFNpemVMaXN0OiBQcm9w VHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMub2JqZWN0XSksCiAg IGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFsKICAgICBQcm9wVHlwZXMuYXJyYXlPZihQ cm9wVHlwZXMubm9kZSksCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9ncmFudF93aXph cmQvc3RhdGljL2pzL0dyYW50V2l6YXJkLmpzeCBiL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50X3dp emFyZC9zdGF0aWMvanMvR3JhbnRXaXphcmQuanN4CmluZGV4IDAxNWMzOTM5ZC4uMmJmMzAwYjlj IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9ncmFudF93aXphcmQvc3RhdGljL2pzL0dy YW50V2l6YXJkLmpzeAorKysgYi93ZWIvcGdhZG1pbi90b29scy9ncmFudF93aXphcmQvc3RhdGlj L2pzL0dyYW50V2l6YXJkLmpzeApAQCAtMzE1LDYgKzMxNSw3IEBAIGV4cG9ydCBkZWZhdWx0IGZ1 bmN0aW9uIEdyYW50V2l6YXJkKHsgc2lkLCBkaWQsIG5vZGVJbmZvLCBub2RlRGF0YSB9KSB7CiAg ICAgICA8V2l6YXJkU3RlcCBzdGVwSWQ9ezB9PgogICAgICAgICA8Qm94IGNsYXNzTmFtZT17Y2xh c3Nlcy5wYW5lbENvbnRlbnR9PgogICAgICAgICAgIDxQZ1RhYmxlCisgICAgICAgICAgICBjYXZl VGFibGU9e2ZhbHNlfQogICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnRhYmxlfQogICAg ICAgICAgICAgaGVpZ2h0PXt3aW5kb3cuaW5uZXJIZWlnaHQgLSA0NTB9CiAgICAgICAgICAgICBj b2x1bW5zPXtjb2x1bW5zfQo= --0000000000002f0ec105dbd410d5--