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 1kDmAl-0001ru-9G for pgadmin-hackers@arkaria.postgresql.org; Thu, 03 Sep 2020 10:08:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kDmAi-0001qJ-IL for pgadmin-hackers@arkaria.postgresql.org; Thu, 03 Sep 2020 10:08:48 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kDmAh-0001qC-TR for pgadmin-hackers@lists.postgresql.org; Thu, 03 Sep 2020 10:08:48 +0000 Received: from mail-ed1-x530.google.com ([2a00:1450:4864:20::530]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1kDmAe-0006Ce-V0 for pgadmin-hackers@postgresql.org; Thu, 03 Sep 2020 10:08:46 +0000 Received: by mail-ed1-x530.google.com with SMTP id c8so2074055edv.5 for ; Thu, 03 Sep 2020 03:08:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=YDVdVrla5Sh7j/uURFvW62TAQ1pW9i1q59d1NgBgkSg=; b=oM2bdLAtu9MjiIU/kfEIpyciPv2nC/TAbrHLg8IMMhR64SiJCfeiltV6dC3tO1euGN qBd7BUQ2/Xog+86pi1JoZvORYn69xVvBy54gmkTmo6TDCVSJVBnXlW2lYDDTm0/wpGc9 hDPp6BosH1fQQLNXml+/oBPNSZMAJ9vCWeVhERvTSE+lxpOgRrff6xpzLBfCBvNCcDGs Yr9uZUraLBidmXIGOgv/p3me8BTS8nxyp7wgeQyrTxgUZa3WuYZY0L3RPO60xJaRW2A8 mWrOeggoBveNK86G55yXohc2WGvAG8WUETm5SDGDsohokhf28NsQyL/CIyFjor15z52M lWFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=YDVdVrla5Sh7j/uURFvW62TAQ1pW9i1q59d1NgBgkSg=; b=XGfDBkTe5u3LAwK1DWEzy4vBkb62kBEjSpMDLPqMSG0kGF5G9ltntvEigzfNcxv5zB PW2/8G79tVyb+j3O+Qaa4OztbBnn73CfGSyy+Ju/Vqrl8WX2WQhr061czgpwdglLqg1b iWnWFgCCZD4h5QRLPIUus3PqCFO+MWqPR/D7u8na1nxbw0QqQMghII1vrA34BkQrygc/ XUbAMIib31z7WbgMj6DeqHG3fj3Q3x2PQR9zd/IRkrGabxF1M7bgfaY6NSAepx1IvWV2 jVBw2uPij9N0jyn2a3J9RM6N5jXd40u9HoOe40cx4IncuywCJEgOog/wDgl1dI9SBro+ K93A== X-Gm-Message-State: AOAM533Q6z4lGSctqUZcK5qj4xhqE9R480ZeSjnUoOIGitDGxTYN7QF8 RWIWJ3IWF4n9xPN5sI2J73BwNjH6Rt2bnrhCI6lXAvusITw3irBX0MLn4o2VT9qIZ7rMmb/Bh8Q 5K3pB7zAhrd33AqVMsbGA6dGyEF2PksOtmzKSYHbtmJHrOtQnT251rLytBls8evlxky0fzUgdmf Xzt609f4USMkOV8MKlrrCu45Y9455Fm7t/gw97/kKwmbfBFMYh37E0GNdvP1L+mLaiuMY3 X-Google-Smtp-Source: ABdhPJx/jyKrU576IaABTUbOkJEbJTaABsG/VZJauF54pQVVmiQe3kStBLEb/7NUHC7FB5N+7fbjW74jkS6RqfsRQWA= X-Received: by 2002:aa7:cc14:: with SMTP id q20mr2157802edt.309.1599127721439; Thu, 03 Sep 2020 03:08:41 -0700 (PDT) MIME-Version: 1.0 From: Aditya Toshniwal Date: Thu, 3 Sep 2020 15:38:05 +0530 Message-ID: Subject: [pgAdmin][SonarQube] Reduce cognitive complexity To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000c9c05a05ae65ef7f" 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: Precedence: bulk --000000000000c9c05a05ae65ef7f Content-Type: multipart/alternative; boundary="000000000000c9c05805ae65ef7d" --000000000000c9c05805ae65ef7d Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached is the patch to reduce cognitive complexity as below: web/pgadmin/misc/file_manager/__init__.py 20 to 15 web/pgadmin/tools/grant_wizard/__init__.py 55 to 15 web/pgadmin/tools/sqleditor/__init__.py 33 to 15 Please review. -- Thanks, Aditya Toshniwal pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* "Don't Complain about Heat, Plant a TREE" --000000000000c9c05805ae65ef7d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attache= d is the patch to reduce cognitive complexity as below:
web/pgadmin/misc= /file_manager/__init__.py 20 to 15
web/pgadmin/tools/grant_wizard/__init= __.py 55 to 15
web/pgadmin/tools/sqleditor/__init__.py 33 to 15

P= lease review.

--
Thanks,
Aditya Toshniwal
pgAdmin hacker= =C2=A0| Sr. Software Engineer | = edbpostgres.com
"Don't Complain about Hea= t, Plant a TREE"
--000000000000c9c05805ae65ef7d-- --000000000000c9c05a05ae65ef7f Content-Type: application/octet-stream; name="sonarqube.grant.patch" Content-Disposition: attachment; filename="sonarqube.grant.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kemnbzsd0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL21pc2MvZmlsZV9tYW5hZ2VyL19faW5pdF9fLnB5IGIv d2ViL3BnYWRtaW4vbWlzYy9maWxlX21hbmFnZXIvX19pbml0X18ucHkKaW5kZXggOTU1Zjk4MDcz Li5hNjY4ODBkMmMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL21pc2MvZmlsZV9tYW5hZ2VyL19f aW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL21pc2MvZmlsZV9tYW5hZ2VyL19faW5pdF9fLnB5 CkBAIC02NzIsMzAgKzY3MiwyOSBAQCBjbGFzcyBGaWxlbWFuYWdlcihvYmplY3QpOgogCiAgICAg QHN0YXRpY21ldGhvZAogICAgIGRlZiBjaGVja19hY2Nlc3NfcGVybWlzc2lvbihpbl9kaXIsIHBh dGgpOgorICAgICAgICBpZiBub3QgY29uZmlnLlNFUlZFUl9NT0RFOgorICAgICAgICAgICAgcmV0 dXJuCiAKLSAgICAgICAgaWYgY29uZmlnLlNFUlZFUl9NT0RFOgotICAgICAgICAgICAgaWYgaW5f ZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgaW5fZGlyID0gIiIKLSAgICAgICAgICAgIG9y aWdfcGF0aCA9IEZpbGVtYW5hZ2VyLmdldF9hYnNfcGF0aChpbl9kaXIsIHBhdGgpCisgICAgICAg IGluX2RpciA9ICcnIGlmIGluX2RpciBpcyBOb25lIGVsc2UgaW5fZGlyCisgICAgICAgIG9yaWdf cGF0aCA9IEZpbGVtYW5hZ2VyLmdldF9hYnNfcGF0aChpbl9kaXIsIHBhdGgpCiAKLSAgICAgICAg ICAgICMgVGhpcyB0cmFuc2xhdGVzIHBhdGggd2l0aCByZWxhdGl2ZSBwYXRoIG5vdGF0aW9ucwot ICAgICAgICAgICAgIyBsaWtlIC4vIGFuZCAuLi8gdG8gYWJzb2x1dGUgcGF0aC4KLSAgICAgICAg ICAgIG9yaWdfcGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcmlnX3BhdGgpCisgICAgICAgICMgVGhp cyB0cmFuc2xhdGVzIHBhdGggd2l0aCByZWxhdGl2ZSBwYXRoIG5vdGF0aW9ucworICAgICAgICAj IGxpa2UgLi8gYW5kIC4uLyB0byBhYnNvbHV0ZSBwYXRoLgorICAgICAgICBvcmlnX3BhdGggPSBv cy5wYXRoLmFic3BhdGgob3JpZ19wYXRoKQogCi0gICAgICAgICAgICBpZiBpbl9kaXI6Ci0gICAg ICAgICAgICAgICAgaWYgX3BsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgICAgICAgICAgICAg IGlmIGluX2RpclstMV0gPT0gJ1xcJyBvciBpbl9kaXJbLTFdID09ICcvJzoKLSAgICAgICAgICAg ICAgICAgICAgICAgIGluX2RpciA9IGluX2Rpcls6LTFdCi0gICAgICAgICAgICAgICAgZWxzZToK LSAgICAgICAgICAgICAgICAgICAgaWYgaW5fZGlyWy0xXSA9PSAnLyc6Ci0gICAgICAgICAgICAg ICAgICAgICAgICBpbl9kaXIgPSBpbl9kaXJbOi0xXQotCi0gICAgICAgICAgICAjIERvIG5vdCBh bGxvdyB1c2VyIHRvIGFjY2VzcyBvdXRzaWRlIGhpcyBzdG9yYWdlIGRpcgotICAgICAgICAgICAg IyBpbiBzZXJ2ZXIgbW9kZS4KLSAgICAgICAgICAgIGlmIG5vdCBvcmlnX3BhdGguc3RhcnRzd2l0 aChpbl9kaXIpOgotICAgICAgICAgICAgICAgIHJhaXNlIEludGVybmFsU2VydmVyRXJyb3IoCi0g ICAgICAgICAgICAgICAgICAgIGdldHRleHQoIkFjY2VzcyBkZW5pZWQgKHswfSkiKS5mb3JtYXQo cGF0aCkpCi0gICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIGluX2RpcjoKKyAgICAgICAg ICAgIGlmIF9wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgICAgIGlmIGluX2Rpclst MV0gPT0gJ1xcJyBvciBpbl9kaXJbLTFdID09ICcvJzoKKyAgICAgICAgICAgICAgICAgICAgaW5f ZGlyID0gaW5fZGlyWzotMV0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYg aW5fZGlyWy0xXSA9PSAnLyc6CisgICAgICAgICAgICAgICAgICAgIGluX2RpciA9IGluX2Rpcls6 LTFdCisKKyAgICAgICAgIyBEbyBub3QgYWxsb3cgdXNlciB0byBhY2Nlc3Mgb3V0c2lkZSBoaXMg c3RvcmFnZSBkaXIKKyAgICAgICAgIyBpbiBzZXJ2ZXIgbW9kZS4KKyAgICAgICAgaWYgbm90IG9y aWdfcGF0aC5zdGFydHN3aXRoKGluX2Rpcik6CisgICAgICAgICAgICByYWlzZSBJbnRlcm5hbFNl cnZlckVycm9yKAorICAgICAgICAgICAgICAgIGdldHRleHQoIkFjY2VzcyBkZW5pZWQgKHswfSki KS5mb3JtYXQocGF0aCkpCiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGdldF9hYnNfcGF0 aChpbl9kaXIsIHBhdGgpOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6 YXJkL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL19faW5pdF9f LnB5CmluZGV4IGVlNjJjNGM2YS4uNWM4Njg3YjJhIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90 b29scy9ncmFudF93aXphcmQvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3Jh bnRfd2l6YXJkL19faW5pdF9fLnB5CkBAIC0xNzQsNiArMTc0LDc5IEBAIGRlZiBhY2xfbGlzdChz aWQsIGRpZCk6CiAgICAgICAgIG1pbWV0eXBlPSJhcHBsaWNhdGlvbi9qc29uIikKIAogCitkZWYg X2dldF9yb3dzX2Zvcl90eXBlKGNvbm4sIG50eXBlLCBzZXJ2ZXJfcHJvcCwgbm9kZV9pZCk6Cisg ICAgIiIiCisgICAgVXNlZCBpbnRlcm5hbGx5IGJ5IHByb3BlcnRpZXMgdG8gZ2V0IHJvd3MgZm9y IGFuIG9iamVjdCB0eXBlCisgICAgOnBhcmFtIGNvbm46IGNvbm5lY3Rpb24gb2JqZWN0CisgICAg OnBhcmFtIG50eXBlOiBvYmplY3QgdHlwZQorICAgIDpwYXJhbSBzZXJ2ZXJfcHJvcDogc2VydmVy IHByb3BlcnRpZXMKKyAgICA6cGFyYW0gbm9kZV9pZDogb2lkCisgICAgOnJldHVybjogc3RhdHVz LCBleGVjdXRlIHJlc3BvbnNlCisgICAgIiIiCisgICAgZnVuY3Rpb25fc3FsX3VybCA9ICcvc3Fs L2Z1bmN0aW9uLnNxbCcKKyAgICBzdGF0dXMsIHJlcyA9IFRydWUsIFtdCisKKyAgICBpZiBudHlw ZSBpbiBbJ2Z1bmN0aW9uJ106CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bigKKyAgICAgICAgICAgIFtzZXJ2ZXJfcHJvcFsndGVtcGxhdGVfcGF0aCddLCBmdW5jdGlvbl9z cWxfdXJsXSksCisgICAgICAgICAgICBub2RlX2lkPW5vZGVfaWQsIHR5cGU9J2Z1bmN0aW9uJykK KworICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICAjIEZl dGNoIHByb2NlZHVyZXMgb25seSBpZiBzZXJ2ZXIgdHlwZSBpcyBFUEFTIG9yIFBHID49IDExCisg ICAgZWxpZiBsZW4oc2VydmVyX3Byb3ApID4gMCBhbmQgKAorICAgICAgICBzZXJ2ZXJfcHJvcFsn c2VydmVyX3R5cGUnXSA9PSAncHBhcycgb3IgKAorICAgICAgICAgICAgc2VydmVyX3Byb3BbJ3Nl cnZlcl90eXBlJ10gPT0gJ3BnJyBhbmQKKyAgICAgICAgICAgIHNlcnZlcl9wcm9wWyd2ZXJzaW9u J10gPj0gMTEwMDAKKyAgICAgICAgKQorICAgICkgYW5kIG50eXBlIGluIFsncHJvY2VkdXJlJ106 CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgIFtz ZXJ2ZXJfcHJvcFsndGVtcGxhdGVfcGF0aCddLCBmdW5jdGlvbl9zcWxfdXJsXSksCisgICAgICAg ICAgICBub2RlX2lkPW5vZGVfaWQsIHR5cGU9J3Byb2NlZHVyZScpCisKKyAgICAgICAgc3RhdHVz LCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAjIEZldGNoIHRyaWdnZXIgZnVu Y3Rpb25zCisgICAgZWxpZiBudHlwZSBpbiBbJ3RyaWdnZXJfZnVuY3Rpb24nXToKKyAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgW3NlcnZlcl9wcm9w Wyd0ZW1wbGF0ZV9wYXRoJ10sIGZ1bmN0aW9uX3NxbF91cmxdKSwKKyAgICAgICAgICAgIG5vZGVf aWQ9bm9kZV9pZCwgdHlwZT0ndHJpZ2dlcl9mdW5jdGlvbicpCisgICAgICAgIHN0YXR1cywgcmVz ID0gY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgIyBGZXRjaCBTZXF1ZW5jZXMgYWdhaW5z dCBzY2hlbWEKKyAgICBlbGlmIG50eXBlIGluIFsnc2VxdWVuY2UnXToKKyAgICAgICAgc3FsID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgW3NlcnZlcl9wcm9wWyd0ZW1w bGF0ZV9wYXRoJ10sICcvc3FsL3NlcXVlbmNlLnNxbCddKSwKKyAgICAgICAgICAgIG5vZGVfaWQ9 bm9kZV9pZCkKKworICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkK KworICAgICMgRmV0Y2ggVGFibGVzIGFnYWluc3Qgc2NoZW1hCisgICAgZWxpZiBudHlwZSBpbiBb J3RhYmxlJ106CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAg ICAgICAgIFtzZXJ2ZXJfcHJvcFsndGVtcGxhdGVfcGF0aCddLCAnL3NxbC90YWJsZS5zcWwnXSks CisgICAgICAgICAgICBub2RlX2lkPW5vZGVfaWQpCisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBj b25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAjIEZldGNoIFZpZXdzIGFnYWluc3Qgc2NoZW1h CisgICAgZWxpZiBudHlwZSBpbiBbJ3ZpZXcnXToKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKAorICAgICAgICAgICAgW3NlcnZlcl9wcm9wWyd0ZW1wbGF0ZV9wYXRoJ10s ICcvc3FsL3ZpZXcuc3FsJ10pLAorICAgICAgICAgICAgbm9kZV9pZD1ub2RlX2lkLCBub2RlX3R5 cGU9J3YnKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3Qoc3FsKQor CisgICAgIyBGZXRjaCBNYXRlcmlhbHplZCBWaWV3cyBhZ2FpbnN0IHNjaGVtYQorICAgIGVsaWYg bnR5cGUgaW4gWydtdmlldyddOgorICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oCisgICAgICAgICAgICBbc2VydmVyX3Byb3BbJ3RlbXBsYXRlX3BhdGgnXSwgJy9zcWwvdmll dy5zcWwnXSksCisgICAgICAgICAgICBub2RlX2lkPW5vZGVfaWQsIG5vZGVfdHlwZT0nbScpCisK KyAgICAgICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICByZXR1 cm4gc3RhdHVzLCByZXMKKworCiBAYmx1ZXByaW50LnJvdXRlKAogICAgICcvPGludDpzaWQ+Lzxp bnQ6ZGlkPi88aW50Om5vZGVfaWQ+Lzxub2RlX3R5cGU+LycsCiAgICAgbWV0aG9kcz1bJ0dFVCdd LCBlbmRwb2ludD0nb2JqZWN0cycKQEAgLTE4NSw3ICsyNTgsNiBAQCBkZWYgcHJvcGVydGllcyhz aWQsIGRpZCwgbm9kZV9pZCwgbm9kZV90eXBlKToKICAgICAgICBhbmQgcmVuZGVyIGludG8gc2Vs ZWN0aW9uIHBhZ2Ugb2Ygd2l6YXJkCiAgICAgIiIiCiAKLSAgICBmdW5jdGlvbl9zcWxfdXJsID0g Jy9zcWwvZnVuY3Rpb24uc3FsJwogICAgIGdldF9zY2hlbWFfc3FsX3VybCA9ICcvc3FsL2dldF9z Y2hlbWFzLnNxbCcKIAogICAgICMgdW5xdW90ZSBlbmNvZGVkIHVybCBwYXJhbWV0ZXIKQEAgLTE5 OCwxMzAgKzI3MCw2NiBAQCBkZWYgcHJvcGVydGllcyhzaWQsIGRpZCwgbm9kZV9pZCwgbm9kZV90 eXBlKToKICAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVj dGlvbl9tYW5hZ2VyKHNpZCkKICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1kaWQp CiAKLSAgICBub2RlX3R5cGVzID0gW10KICAgICBzaG93X3N5c29iaiA9IGJsdWVwcmludC5zaG93 X3N5c3RlbV9vYmplY3RzKCkuZ2V0KCkKICAgICBpZiBub2RlX3R5cGUgPT0gJ2RhdGFiYXNlJzoK LSAgICAgICAgIyBGZXRjaCBsaXN0IG9mIHNjaGVtYXMKLSAgICAgICAgIyBHZXQgc3lzX29ial92 YWx1ZXMgYW5kIGdldCBsaXN0IG9mIHNjaGVtYXMKLSAgICAgICAgbnR5cGUgPSAnc2NoZW1hJwog ICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCiAgICAgICAgICAgICBbc2Vy dmVyX3Byb3BbJ3RlbXBsYXRlX3BhdGgnXSwgZ2V0X3NjaGVtYV9zcWxfdXJsXSksCiAgICAgICAg ICAgICBzaG93X3N5c29iaj1zaG93X3N5c29iaikKLSAgICAgICAgc3RhdHVzLCByZXMgPSBjb25u LmV4ZWN1dGVfZGljdChzcWwpCi0KLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotICAgICAgICBub2Rl X3R5cGVzID0gcmVzWydyb3dzJ10KKyAgICAgICAgbnR5cGUgPSAnc2NoZW1hJwogICAgIGVsc2U6 CiAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKICAgICAgICAgICAgIFtz ZXJ2ZXJfcHJvcFsndGVtcGxhdGVfcGF0aCddLCBnZXRfc2NoZW1hX3NxbF91cmxdKSwKLSAgICAg ICAgICAgIG5zcGlkPW5vZGVfaWQsIHNob3dfc3lzb2JqPUZhbHNlKQotICAgICAgICBzdGF0dXMs IHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICAgICAgICAgIHNob3dfc3lzb2JqPXNo b3dfc3lzb2JqLCBuc3BpZD1ub2RlX2lkKQorICAgICAgICBudHlwZSA9IG5vZGVfdHlwZQorCisg ICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KyAgICBub2RlX3R5cGVzID0gcmVzWydyb3dzJ10KIAorICAgIGRlZiBfYXBwZW5kX3Jvd3Moc3Rh dHVzLCByZXMsIGRpc3BfdHlwZSk6CiAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLSAgICAgICAgbm9k ZV90eXBlcyA9IHJlc1sncm93cyddCi0gICAgICAgIG50eXBlID0gbm9kZV90eXBlCisgICAgICAg ICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IocmVzKQorICAgICAgICAgICAgZmFpbGVkX29i amVjdHMuYXBwZW5kKGRpc3BfdHlwZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc19k YXRhLmV4dGVuZChyZXNbJ3Jvd3MnXSkKIAogICAgIGZvciByb3cgaW4gbm9kZV90eXBlczoKICAg ICAgICAgaWYgJ29pZCcgaW4gcm93OgogICAgICAgICAgICAgbm9kZV9pZCA9IHJvd1snb2lkJ10K IAotICAgICAgICAjIEZldGNoIGZ1bmN0aW9ucyBhZ2FpbnN0IHNjaGVtYQotICAgICAgICBpZiBu dHlwZSBpbiBbJ3NjaGVtYScsICdmdW5jdGlvbiddOgotICAgICAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgIFtzZXJ2ZXJfcHJvcFsndGVtcGxh dGVfcGF0aCddLCBmdW5jdGlvbl9zcWxfdXJsXSksCi0gICAgICAgICAgICAgICAgbm9kZV9pZD1u b2RlX2lkLCB0eXBlPSdmdW5jdGlvbicpCi0KLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gY29u bi5leGVjdXRlX2RpY3Qoc3FsKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAg ICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IocmVzKQotICAgICAgICAgICAgICAgIGZh aWxlZF9vYmplY3RzLmFwcGVuZCgnZnVuY3Rpb24nKQotICAgICAgICAgICAgZWxzZToKLSAgICAg ICAgICAgICAgICByZXNfZGF0YS5leHRlbmQocmVzWydyb3dzJ10pCi0KLSAgICAgICAgIyBGZXRj aCBwcm9jZWR1cmVzIG9ubHkgaWYgc2VydmVyIHR5cGUgaXMgRVBBUyBvciBQRyA+PSAxMQotICAg ICAgICBpZiAobGVuKHNlcnZlcl9wcm9wKSA+IDAgYW5kCi0gICAgICAgICAgICAoc2VydmVyX3By b3BbJ3NlcnZlcl90eXBlJ10gPT0gJ3BwYXMnIG9yCi0gICAgICAgICAgICAgKHNlcnZlcl9wcm9w WydzZXJ2ZXJfdHlwZSddID09ICdwZycgYW5kCi0gICAgICAgICAgICAgIHNlcnZlcl9wcm9wWyd2 ZXJzaW9uJ10gPj0gMTEwMDApKSBhbmQKLSAgICAgICAgICAgICAgICBudHlwZSBpbiBbJ3NjaGVt YScsICdwcm9jZWR1cmUnXSk6Ci0gICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oCi0gICAgICAgICAgICAgICAgW3NlcnZlcl9wcm9wWyd0ZW1wbGF0ZV9wYXRoJ10sIGZ1 bmN0aW9uX3NxbF91cmxdKSwKLSAgICAgICAgICAgICAgICBub2RlX2lkPW5vZGVfaWQsIHR5cGU9 J3Byb2NlZHVyZScpCi0KLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2Rp Y3Qoc3FsKQotCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIGN1 cnJlbnRfYXBwLmxvZ2dlci5lcnJvcihyZXMpCi0gICAgICAgICAgICAgICAgZmFpbGVkX29iamVj dHMuYXBwZW5kKCdwcm9jZWR1cmUnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg ICByZXNfZGF0YS5leHRlbmQocmVzWydyb3dzJ10pCi0KLSAgICAgICAgIyBGZXRjaCB0cmlnZ2Vy IGZ1bmN0aW9ucwotICAgICAgICBpZiBudHlwZSBpbiBbJ3NjaGVtYScsICd0cmlnZ2VyX2Z1bmN0 aW9uJ106Ci0gICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0gICAg ICAgICAgICAgICAgW3NlcnZlcl9wcm9wWyd0ZW1wbGF0ZV9wYXRoJ10sIGZ1bmN0aW9uX3NxbF91 cmxdKSwKLSAgICAgICAgICAgICAgICBub2RlX2lkPW5vZGVfaWQsIHR5cGU9J3RyaWdnZXJfZnVu Y3Rpb24nKQotICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwp Ci0KLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgY3VycmVudF9h cHAubG9nZ2VyLmVycm9yKHJlcykKLSAgICAgICAgICAgICAgICBmYWlsZWRfb2JqZWN0cy5hcHBl bmQoJ3RyaWdnZXIgZnVuY3Rpb24nKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg ICByZXNfZGF0YS5leHRlbmQocmVzWydyb3dzJ10pCi0KLSAgICAgICAgIyBGZXRjaCBTZXF1ZW5j ZXMgYWdhaW5zdCBzY2hlbWEKLSAgICAgICAgaWYgbnR5cGUgaW4gWydzY2hlbWEnLCAnc2VxdWVu Y2UnXToKLSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAg ICAgICAgICAgICBbc2VydmVyX3Byb3BbJ3RlbXBsYXRlX3BhdGgnXSwgJy9zcWwvc2VxdWVuY2Uu c3FsJ10pLAotICAgICAgICAgICAgICAgIG5vZGVfaWQ9bm9kZV9pZCkKLQotICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCi0gICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgotICAgICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcihyZXMpCi0g ICAgICAgICAgICAgICAgZmFpbGVkX29iamVjdHMuYXBwZW5kKCdzZXF1ZW5jZScpCi0gICAgICAg ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlc19kYXRhLmV4dGVuZChyZXNbJ3Jvd3MnXSkK LQotICAgICAgICAjIEZldGNoIFRhYmxlcyBhZ2FpbnN0IHNjaGVtYQotICAgICAgICBpZiBudHlw ZSBpbiBbJ3NjaGVtYScsICd0YWJsZSddOgotICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgIFtzZXJ2ZXJfcHJvcFsndGVtcGxhdGVfcGF0 aCddLCAnL3NxbC90YWJsZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgbm9kZV9pZD1ub2RlX2lk KQotCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKLSAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgY3VycmVudF9hcHAubG9n Z2VyLmVycm9yKHJlcykKLSAgICAgICAgICAgICAgICBmYWlsZWRfb2JqZWN0cy5hcHBlbmQoJ3Rh YmxlJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVzX2RhdGEuZXh0ZW5k KHJlc1sncm93cyddKQotCi0gICAgICAgICMgRmV0Y2ggVmlld3MgYWdhaW5zdCBzY2hlbWEKLSAg ICAgICAgaWYgbnR5cGUgaW4gWydzY2hlbWEnLCAndmlldyddOgotICAgICAgICAgICAgc3FsID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgIFtzZXJ2ZXJfcHJvcFsn dGVtcGxhdGVfcGF0aCddLCAnL3NxbC92aWV3LnNxbCddKSwKLSAgICAgICAgICAgICAgICBub2Rl X2lkPW5vZGVfaWQsIG5vZGVfdHlwZT0ndicpCi0KLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0g Y29ubi5leGVjdXRlX2RpY3Qoc3FsKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAg ICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IocmVzKQotICAgICAgICAgICAgICAg IGZhaWxlZF9vYmplY3RzLmFwcGVuZCgndmlldycpCi0gICAgICAgICAgICBlbHNlOgotICAgICAg ICAgICAgICAgIHJlc19kYXRhLmV4dGVuZChyZXNbJ3Jvd3MnXSkKLQotICAgICAgICAjIEZldGNo IE1hdGVyaWFsemVkIFZpZXdzIGFnYWluc3Qgc2NoZW1hCi0gICAgICAgIGlmIG50eXBlIGluIFsn c2NoZW1hJywgJ212aWV3J106Ci0gICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oCi0gICAgICAgICAgICAgICAgW3NlcnZlcl9wcm9wWyd0ZW1wbGF0ZV9wYXRoJ10sICcv c3FsL3ZpZXcuc3FsJ10pLAotICAgICAgICAgICAgICAgIG5vZGVfaWQ9bm9kZV9pZCwgbm9kZV90 eXBlPSdtJykKLQotICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChz cWwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIGN1cnJlbnRf YXBwLmxvZ2dlci5lcnJvcihyZXMpCi0gICAgICAgICAgICAgICAgZmFpbGVkX29iamVjdHMuYXBw ZW5kKCdtYXRlcmlhbGl6ZWQgdmlldycpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg ICAgIHJlc19kYXRhLmV4dGVuZChyZXNbJ3Jvd3MnXSkKKyAgICAgICAgaWYgbnR5cGUgPT0gJ3Nj aGVtYSc6CisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IF9nZXRfcm93c19mb3JfdHlwZSgKKyAg ICAgICAgICAgICAgICBjb25uLCAnZnVuY3Rpb24nLCBzZXJ2ZXJfcHJvcCwgbm9kZV9pZCkKKyAg ICAgICAgICAgIF9hcHBlbmRfcm93cyhzdGF0dXMsIHJlcywgJ2Z1bmN0aW9uJykKKworICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBfZ2V0X3Jvd3NfZm9yX3R5cGUoCisgICAgICAgICAgICAgICAg Y29ubiwgJ3Byb2NlZHVyZScsIHNlcnZlcl9wcm9wLCBub2RlX2lkKQorICAgICAgICAgICAgX2Fw cGVuZF9yb3dzKHN0YXR1cywgcmVzLCAncHJvY2VkdXJlJykKKworICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBfZ2V0X3Jvd3NfZm9yX3R5cGUoCisgICAgICAgICAgICAgICAgY29ubiwgJ3RyaWdn ZXJfZnVuY3Rpb24nLCBzZXJ2ZXJfcHJvcCwgbm9kZV9pZCkKKyAgICAgICAgICAgIF9hcHBlbmRf cm93cyhzdGF0dXMsIHJlcywgJ3RyaWdnZXIgZnVuY3Rpb24nKQorCisgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IF9nZXRfcm93c19mb3JfdHlwZSgKKyAgICAgICAgICAgICAgICBjb25uLCAnc2Vx dWVuY2UnLCBzZXJ2ZXJfcHJvcCwgbm9kZV9pZCkKKyAgICAgICAgICAgIF9hcHBlbmRfcm93cyhz dGF0dXMsIHJlcywgJ3NlcXVlbmNlJykKKworICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBfZ2V0 X3Jvd3NfZm9yX3R5cGUoCisgICAgICAgICAgICAgICAgY29ubiwgJ3RhYmxlJywgc2VydmVyX3By b3AsIG5vZGVfaWQpCisgICAgICAgICAgICBfYXBwZW5kX3Jvd3Moc3RhdHVzLCByZXMsICd0YWJs ZScpCisKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gX2dldF9yb3dzX2Zvcl90eXBlKAorICAg ICAgICAgICAgICAgIGNvbm4sICd2aWV3Jywgc2VydmVyX3Byb3AsIG5vZGVfaWQpCisgICAgICAg ICAgICBfYXBwZW5kX3Jvd3Moc3RhdHVzLCByZXMsICd2aWV3JykKKworICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBfZ2V0X3Jvd3NfZm9yX3R5cGUoCisgICAgICAgICAgICAgICAgY29ubiwgJ212 aWV3Jywgc2VydmVyX3Byb3AsIG5vZGVfaWQpCisgICAgICAgICAgICBfYXBwZW5kX3Jvd3Moc3Rh dHVzLCByZXMsICdtYXRlcmlhbGl6ZWQgdmlldycpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg ICBzdGF0dXMsIHJlcyA9IF9nZXRfcm93c19mb3JfdHlwZShjb25uLCBudHlwZSwgc2VydmVyX3By b3AsIG5vZGVfaWQpCisgICAgICAgICAgICBfYXBwZW5kX3Jvd3Moc3RhdHVzLCByZXMsICdmdW5j dGlvbicpCiAKICAgICBtc2cgPSBOb25lCiAgICAgaWYgbGVuKGZhaWxlZF9vYmplY3RzKSA+IDA6 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvX19pbml0X18ucHkgYi93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvX19pbml0X18ucHkKaW5kZXggMDE0MTkyNzYzLi5i MTZjNzJlMGMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRf Xy5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvX19pbml0X18ucHkKQEAgLTEz MTYsNzYgKzEzMTYsNzkgQEAgZGVmIHNhdmVfZmlsZSgpOgogKQogQGxvZ2luX3JlcXVpcmVkCiBk ZWYgc3RhcnRfcXVlcnlfZG93bmxvYWRfdG9vbCh0cmFuc19pZCk6Ci0gICAgc3luY19jb25uID0g Tm9uZQogICAgIChzdGF0dXMsIGVycm9yX21zZywgc3luY19jb25uLCB0cmFuc19vYmosCiAgICAg IHNlc3Npb25fb2JqKSA9IGNoZWNrX3RyYW5zYWN0aW9uX3N0YXR1cyh0cmFuc19pZCkKIAotICAg IGlmIHN0YXR1cyBhbmQgc3luY19jb25uIGlzIG5vdCBOb25lIGFuZCBcCi0gICAgICAgdHJhbnNf b2JqIGlzIG5vdCBOb25lIGFuZCBzZXNzaW9uX29iaiBpcyBub3QgTm9uZToKKyAgICBpZiBub3Qg c3RhdHVzIG9yIHN5bmNfY29ubiBpcyBOb25lIG9yIHRyYW5zX29iaiBpcyBOb25lIG9yIFwKKyAg ICAgICAgICAgIHNlc3Npb25fb2JqIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoCisgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0KCJUcmFuc2FjdGlvbiBz dGF0dXMgY2hlY2sgZmFpbGVkLiIpCisgICAgICAgICkKIAotICAgICAgICBkYXRhID0gcmVxdWVz dC52YWx1ZXMgaWYgcmVxdWVzdC52YWx1ZXMgZWxzZSBOb25lCi0gICAgICAgIHRyeToKLSAgICAg ICAgICAgIGlmIGRhdGEgYW5kICdxdWVyeScgaW4gZGF0YToKLSAgICAgICAgICAgICAgICBzcWwg PSBkYXRhWydxdWVyeSddCisgICAgZGF0YSA9IHJlcXVlc3QudmFsdWVzIGlmIHJlcXVlc3QudmFs dWVzIGVsc2UgTm9uZQorICAgIGlmIGRhdGEgaXMgTm9uZSBvciAoZGF0YSBhbmQgJ3F1ZXJ5JyBu b3QgaW4gZGF0YSk6CisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgZXJy b3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAgICAgICAiQ291bGQgbm90IGZpbmQgdGhlIHJlcXVp cmVkIHBhcmFtZXRlciAocXVlcnkpLiIKKyAgICAgICAgICAgICkKKyAgICAgICAgKQogCi0gICAg ICAgICAgICAgICAgIyBUaGlzIHJldHVybnMgZ2VuZXJhdG9yIG9mIHJlY29yZHMuCi0gICAgICAg ICAgICAgICAgc3RhdHVzLCBnZW4gPSBzeW5jX2Nvbm4uZXhlY3V0ZV9vbl9zZXJ2ZXJfYXNfY3N2 KAotICAgICAgICAgICAgICAgICAgICBzcWwsIHJlY29yZHM9MjAwMAotICAgICAgICAgICAgICAg ICkKKyAgICB0cnk6CisgICAgICAgIHNxbCA9IGRhdGFbJ3F1ZXJ5J10KIAotICAgICAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnc3RhdHVzJzogc3RhdHVzLCAncmVzdWx0JzogZ2VuCi0gICAgICAgICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgICAg IHIgPSBSZXNwb25zZSgKLSAgICAgICAgICAgICAgICAgICAgZ2VuKAotICAgICAgICAgICAgICAg ICAgICAgICAgcXVvdGU9Ymx1ZXByaW50LmNzdl9xdW90aW5nLmdldCgpLAotICAgICAgICAgICAg ICAgICAgICAgICAgcXVvdGVfY2hhcj1ibHVlcHJpbnQuY3N2X3F1b3RlX2NoYXIuZ2V0KCksCi0g ICAgICAgICAgICAgICAgICAgICAgICBmaWVsZF9zZXBhcmF0b3I9Ymx1ZXByaW50LmNzdl9maWVs ZF9zZXBhcmF0b3IuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlX251bGxz X3dpdGg9Ymx1ZXByaW50LnJlcGxhY2VfbnVsbHNfd2l0aC5nZXQoKQotICAgICAgICAgICAgICAg ICAgICApLAotICAgICAgICAgICAgICAgICAgICBtaW1ldHlwZT0ndGV4dC9jc3YnIGlmCi0gICAg ICAgICAgICAgICAgICAgIGJsdWVwcmludC5jc3ZfZmllbGRfc2VwYXJhdG9yLmdldCgpID09ICcs JwotICAgICAgICAgICAgICAgICAgICBlbHNlICd0ZXh0L3BsYWluJwotICAgICAgICAgICAgICAg ICkKKyAgICAgICAgIyBUaGlzIHJldHVybnMgZ2VuZXJhdG9yIG9mIHJlY29yZHMuCisgICAgICAg IHN0YXR1cywgZ2VuID0gc3luY19jb25uLmV4ZWN1dGVfb25fc2VydmVyX2FzX2NzdigKKyAgICAg ICAgICAgIHNxbCwgcmVjb3Jkcz0yMDAwCisgICAgICAgICkKIAotICAgICAgICAgICAgICAgIGlm ICdmaWxlbmFtZScgaW4gZGF0YSBhbmQgZGF0YVsnZmlsZW5hbWUnXSAhPSAiIjoKLSAgICAgICAg ICAgICAgICAgICAgZmlsZW5hbWUgPSBkYXRhWydmaWxlbmFtZSddCi0gICAgICAgICAgICAgICAg ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHRpbWUKLSAgICAgICAgICAgICAgICAg ICAgZmlsZW5hbWUgPSAnezB9LnsxfScuIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1h dChpbnQodGltZS50aW1lKCkpLCAnY3N2JyBpZiBibHVlcHJpbnQuCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3N2X2ZpZWxkX3NlcGFyYXRvci5nZXQoKSA9PSAnLCcgZWxzZSAndHh0 JykKLQotICAgICAgICAgICAgICAgICMgV2Ugd2lsbCB0cnkgdG8gZW5jb2RlIHJlcG9ydCBmaWxl IG5hbWUgd2l0aCBsYXRpbi0xCi0gICAgICAgICAgICAgICAgIyBJZiBpdCBmYWlscyB0aGVuIHdl IHdpbGwgZmFsbGJhY2sgdG8gZGVmYXVsdCBhc2NpaSBmaWxlIG5hbWUKLSAgICAgICAgICAgICAg ICAjIHdlcmt6ZXVnIG9ubHkgc3VwcG9ydHMgbGF0aW4tMSBlbmNvZGluZyBzdXBwb3J0ZWQgdmFs dWVzCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB0bXBfZmlsZV9u YW1lID0gZmlsZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgdG1wX2ZpbGVfbmFtZS5lbmNvZGUo J2xhdGluLTEnLCAnc3RyaWN0JykKLSAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29k ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9ICJkb3dubG9hZC5jc3YiCi0K LSAgICAgICAgICAgICAgICByLmhlYWRlcnNbCi0gICAgICAgICAgICAgICAgICAgICJDb250ZW50 LURpc3Bvc2l0aW9uIgotICAgICAgICAgICAgICAgIF0gPSAiYXR0YWNobWVudDtmaWxlbmFtZT17 MH0iLmZvcm1hdChmaWxlbmFtZSkKLQotICAgICAgICAgICAgICAgIHJldHVybiByCi0gICAgICAg IGV4Y2VwdCAoQ29ubmVjdGlvbkxvc3QsIFNTSFR1bm5lbENvbm5lY3Rpb25Mb3N0KToKLSAgICAg ICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAg IGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcihlKQotICAgICAgICAgICAgZXJyX21zZyA9ICJFcnJv cjogezB9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgZS5zdHJlcnJvciBpZiBoYXNhdHRyKGUs ICdzdHJlcnJvcicpIGVsc2Ugc3RyKGUpKQotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1lcnJfbXNnKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoCi0gICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0KCJUcmFu c2FjdGlvbiBzdGF0dXMgY2hlY2sgZmFpbGVkLiIpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRh dGE9eworICAgICAgICAgICAgICAgICAgICAnc3RhdHVzJzogc3RhdHVzLCAncmVzdWx0JzogZ2Vu CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQorCisgICAgICAgIHIgPSBSZXNwb25z ZSgKKyAgICAgICAgICAgIGdlbigKKyAgICAgICAgICAgICAgICBxdW90ZT1ibHVlcHJpbnQuY3N2 X3F1b3RpbmcuZ2V0KCksCisgICAgICAgICAgICAgICAgcXVvdGVfY2hhcj1ibHVlcHJpbnQuY3N2 X3F1b3RlX2NoYXIuZ2V0KCksCisgICAgICAgICAgICAgICAgZmllbGRfc2VwYXJhdG9yPWJsdWVw cmludC5jc3ZfZmllbGRfc2VwYXJhdG9yLmdldCgpLAorICAgICAgICAgICAgICAgIHJlcGxhY2Vf bnVsbHNfd2l0aD1ibHVlcHJpbnQucmVwbGFjZV9udWxsc193aXRoLmdldCgpCisgICAgICAgICAg ICApLAorICAgICAgICAgICAgbWltZXR5cGU9J3RleHQvY3N2JyBpZgorICAgICAgICAgICAgYmx1 ZXByaW50LmNzdl9maWVsZF9zZXBhcmF0b3IuZ2V0KCkgPT0gJywnCisgICAgICAgICAgICBlbHNl ICd0ZXh0L3BsYWluJwogICAgICAgICApCiAKKyAgICAgICAgaW1wb3J0IHRpbWUKKyAgICAgICAg ZXh0biA9ICdjc3YnIGlmIGJsdWVwcmludC5jc3ZfZmllbGRfc2VwYXJhdG9yLmdldCgpID09ICcs JyBlbHNlICd0eHQnCisgICAgICAgIGZpbGVuYW1lID0gZGF0YVsnZmlsZW5hbWUnXSBpZiBkYXRh LmdldCgnZmlsZW5hbWUnLCAnJykgIT0gIiIgZWxzZSBcCisgICAgICAgICAgICAnezB9LnsxfScu Zm9ybWF0KGludCh0aW1lLnRpbWUoKSksIGV4dG4pCisKKyAgICAgICAgIyBXZSB3aWxsIHRyeSB0 byBlbmNvZGUgcmVwb3J0IGZpbGUgbmFtZSB3aXRoIGxhdGluLTEKKyAgICAgICAgIyBJZiBpdCBm YWlscyB0aGVuIHdlIHdpbGwgZmFsbGJhY2sgdG8gZGVmYXVsdCBhc2NpaSBmaWxlIG5hbWUKKyAg ICAgICAgIyB3ZXJremV1ZyBvbmx5IHN1cHBvcnRzIGxhdGluLTEgZW5jb2Rpbmcgc3VwcG9ydGVk IHZhbHVlcworICAgICAgICB0cnk6CisgICAgICAgICAgICB0bXBfZmlsZV9uYW1lID0gZmlsZW5h bWUKKyAgICAgICAgICAgIHRtcF9maWxlX25hbWUuZW5jb2RlKCdsYXRpbi0xJywgJ3N0cmljdCcp CisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBmaWxlbmFt ZSA9ICJkb3dubG9hZC5jc3YiCisKKyAgICAgICAgci5oZWFkZXJzWworICAgICAgICAgICAgIkNv bnRlbnQtRGlzcG9zaXRpb24iCisgICAgICAgIF0gPSAiYXR0YWNobWVudDtmaWxlbmFtZT17MH0i LmZvcm1hdChmaWxlbmFtZSkKKworICAgICAgICByZXR1cm4gcgorICAgIGV4Y2VwdCAoQ29ubmVj dGlvbkxvc3QsIFNTSFR1bm5lbENvbm5lY3Rpb25Mb3N0KToKKyAgICAgICAgcmFpc2UKKyAgICBl eGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcihl KQorICAgICAgICBlcnJfbXNnID0gIkVycm9yOiB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgIGUu c3RyZXJyb3IgaWYgaGFzYXR0cihlLCAnc3RyZXJyb3InKSBlbHNlIHN0cihlKSkKKyAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1lcnJfbXNnKQorCiAKIEBibHVl cHJpbnQucm91dGUoCiAgICAgJy9zdGF0dXMvPGludDp0cmFuc19pZD4nLAo= --000000000000c9c05a05ae65ef7f--