Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aMGKM-0000hT-FG for pgadmin-hackers@arkaria.postgresql.org; Thu, 21 Jan 2016 14:35:10 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aMGKK-0001nn-Fa for pgadmin-hackers@arkaria.postgresql.org; Thu, 21 Jan 2016 14:35:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1aMGKI-0001my-QI for pgadmin-hackers@postgresql.org; Thu, 21 Jan 2016 14:35:06 +0000 Received: from mail-wm0-x22e.google.com ([2a00:1450:400c:c09::22e]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aMGKE-0001jT-2d for pgadmin-hackers@postgresql.org; Thu, 21 Jan 2016 14:35:06 +0000 Received: by mail-wm0-x22e.google.com with SMTP id r129so174745597wmr.0 for ; Thu, 21 Jan 2016 06:35:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=3fErY1wjtl4YpGqfeCat/DqbOuORC2rhhiFgMqsvri8=; b=j+A8zEEm6DCWluQLkKyqVhK64EkuJ8hF2IU0VzghAfoWRd7wMmxltvYuh7YAlbDDcb +dviItyzrI/IQ3z0ijAKh18qS2qUmBPt62m3T83PoD/fVUqMZOsLGPGQ74hK7Zku5bti EImAbro6KOEJcBb+cDWhHV0H+A3Q3sGgqZH+1c7gE+pmnO2Ht1rUP9g6nGY3d8+HPAlt Dll3RPaiLTZIzI/8o+ZRlYCmrQ3uXHWExuwIvzrPfTvM/nmEHjiLGesvR1DcgAP+ausc xu0IRIeUNG0UhXtFg+BHQ5Un8vHUPTrbgm7Kpq7TYV0p/5s2gGPL2dDu80AwFckxd97P Cx4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:content-type; bh=3fErY1wjtl4YpGqfeCat/DqbOuORC2rhhiFgMqsvri8=; b=GHvSwWU4cwClj6ciDwTN4SvRYHVUY9SGoc3XGyvCYwVv6loOVVvMu5AEsdPNUi2QFE 8KH7Fmwd5leHwsdnFBXPKk35DMBGf8tDcsL9l+i7+3AADnQZXfJB5ktQKZ6CC83swI/s ebe03+d8NPZX93rZ4Eu9PWczISVzd7YWVunB+hp30SFbC1i/oM2uJZhQH1Cpb0BdBhju G6HzDvKukhAXpfEOzEdyjbbutmYeTdv6jPE8eCoPYAEo6d5Jf5U8tFyhsEAGsU8S/xbw 80bF2JrghLdhLGGdiLHdwQXebWCpAc6CzxFbfCD3bXNBSjIM5zE7fc8gJk4OYBZDqprV PbAQ== X-Gm-Message-State: AG10YOQWIHYpi5t1BJnxDuH+M/5/p3fTmR4rJjFangmgwKzfsdNP5qQytkWGckoDfrbNqONK64dyTxiBYRTzvE9v X-Received: by 10.28.13.213 with SMTP id 204mr10273253wmn.16.1453386900745; Thu, 21 Jan 2016 06:35:00 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.15.66 with HTTP; Thu, 21 Jan 2016 06:34:30 -0800 (PST) In-Reply-To: References: From: Surinder Kumar Date: Thu, 21 Jan 2016 20:04:30 +0530 Message-ID: Subject: Re: [pgAdmin4] [Patch]: Extension Module To: Neel Patel , pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11444b28f106230529d901c8 X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a11444b28f106230529d901c8 Content-Type: multipart/alternative; boundary=001a11444b28f1061e0529d901c6 --001a11444b28f1061e0529d901c6 Content-Type: text/plain; charset=UTF-8 Hi, I've fixed the issues given in review comments. Please find the attached updated patch for extension module, review it and let me know for any comments. On Mon, Jan 18, 2016 at 5:44 PM, Surinder Kumar < surinder.kumar@enterprisedb.com> wrote: > Thanks Neel for reviewing. I'll send the patch with the fixes suggested. > > On Mon, Jan 18, 2016 at 4:52 PM, Neel Patel > wrote: > >> Hi Surinder, >> >> We have applied/tested the patch and below are the review comments. >> >> 1. When we select the extension "plpython3u", "plperl", "plperu" etc. >> then it gives 'TypeError' in Javascript. >> TypeError: d.version is undefined >> 'version': (!_.isNull(d.version[0]) ? d.version[0]: '') >> >> We are getting this error while selecting many extensions so please test >> with all types of extensions, it should not give any error at client side. >> > Fixed. > >> 2. Use 2 space indentation instead of 4 space in javascript file. >> > Done > >> 3. In "validate" function in "extension.js" file, validate only the >> changed values not all, and "this.get('name') - should be called only one >> time not multiple >> time". >> > Fixed. > >> 4. When we pass object identifier, use the function 'qtIdent', and for >> the values, use function 'qtLiteral' in all the sql files. >> > Done. > >> 5. By default, when we create the extension, "schema_name" and "version" >> should not be be set with value. It should be set blank by default. >> > Kept blank while creating extension. > >> 6. When we create any extension like "citext" then we are not able to >> create the same extension again after deleting the same extension. May be >> issue >> with caching mechanism. >> > It is an architecture change. we'll fix it later. > >> 7. When we remove the schema_name during the "Edit" operation then wrong >> SQL is getting generated. >> > Fixed, Now it generates right SQL. > >> > 8. Remove "Use Slony" option. As discussed with Ashesh, we will implement >> it as separate module. >> > Removed. > >> Please fix the above issues. Let us know if you want more information. >> >> Thanks, >> Neel Patel >> >> >> Thanks, >> Neel Patel >> >> >> On Tue, Jan 12, 2016 at 1:15 PM, Surinder Kumar < >> surinder.kumar@enterprisedb.com> wrote: >> >>> Please find the updated patch with following changes: >>> >>> 1. corrected copyright. >>> 2. Added proper comment for script_module function in __init__.py >>> file. >>> 3. Renamed collection Node's label to Extensions in extensions.js >>> file. >>> >>> >>> On Tue, Jan 12, 2016 at 12:44 PM, Surinder Kumar < >>> surinder.kumar@enterprisedb.com> wrote: >>> >>>> Hi, >>>> >>>> Please find attached patch for the extension module. >>>> Please review it and Let me know for any comments. >>>> >>>> >>>> Thanks, >>>> Surinder Kumar >>>> >>> >>> >>> >>> -- >>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >>> To make changes to your subscription: >>> http://www.postgresql.org/mailpref/pgadmin-hackers >>> >>> >> > --001a11444b28f1061e0529d901c6 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

I've fixed the issues given in = review comments.

Please find the attached updated = patch for extension module, review it and let me know for any comments.

On Mo= n, Jan 18, 2016 at 5:44 PM, Surinder Kumar <surinder.kumar@e= nterprisedb.com> wrote:
Thanks Neel for reviewing. I'll send the patch with the f= ixes suggested.

On Mon, Jan 18, 2016 at 4:52 PM= , Neel Patel <neel.patel@enterprisedb.com> wrote:<= br>
Hi Surinder,

We have applied/tested the patch and below are the review comments.=

1. When we select the extension "plpyth= on3u", "plperl", "plperu" etc. then it gives '= TypeError' in Javascript.
TypeError: d.version is undefined
'version': (!_.isNull(d.version[0]) ? d.version[0]: '&= #39;)

We are getting this error while selecting ma= ny extensions so please test with all types of extensions, it should not gi= ve any error at client side.
Fixed.=C2=A0
=

2.=C2=A0 Use 2 space indentation instead of 4 space in jav= ascript file.
Done
<= div class=3D"h5">

3. In "= ;validate" function in "extension.js" file, validate only th= e changed values not all, and "this.get('name') - should be ca= lled only one time not multiple=C2=A0
=C2=A0 =C2=A0 time".
Fixed.=C2= =A0

4.=C2=A0When we pass object identifier, use the function 'qtI= dent', and for the values, use function =C2=A0'qtLiteral' in al= l the sql files.
Done.=C2=A0

5. By default, when we create the extension, "schema_name" and = "version" should not be be set with value. It should be set blank= by default.
<= div>Kept blank while creating extension.=C2=A0
=
=

6. When we create any extension like "citext"= then we are not able to create the same extension again after deleting the= same extension. May be issue=C2=A0
=C2=A0 =C2=A0 with caching me= chanism.
= It is an architecture change. we'll fix it later.=C2=A0

7. When we remove the schema_name during t= he "Edit" operation then wrong SQL is getting generated.
Fixed, Now it gen= erates right SQL.
=C2=A0
<= /blockquote>
8. Remove "Use Slon= y" option. As discussed with Ashesh, we will implement it as separate = module.
R= emoved.=C2=A0

Please fix th= e above issues. Let us know if you want more information.

Thanks,
Neel Patel


Thanks,
Neel Patel


On Tue, Jan 12, 2016 at 1= :15 PM, Surinder Kumar <surinder.kumar@enterprisedb.com&= gt; wrote:
<= div dir=3D"ltr">Please find the updated patch with following changes:
<= ol>
  • corrected copyright.
  • Added proper comment for script_module = function in __init__.py file.
  • Renamed collection Node's label t= o Extensions in extensions.js file.

  • On Tue, Jan 12, 2016 at 1= 2:44 PM, Surinder Kumar <surinder.kumar@enterprisedb.com= > wrote:
    = Hi,

    Please find attached patch for the extension m= odule.
    Please review it and Let me know for any comments.

    =

    Thanks,
    Surinder Kumar



    --
    Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
    To make changes to your subscription:
    http://www.postgresql.org/mailpref/pgadmin-hackers=




    --001a11444b28f1061e0529d901c6-- --001a11444b28f106230529d901c8 Content-Type: application/octet-stream; name="extension_v2.patch" Content-Disposition: attachment; filename="extension_v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ijocwhox0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL19faW5pdF9fLnB5IGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2V4dGVuc2lvbnMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uOGFlMWJkNwotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9leHRlbnNpb25zL19faW5pdF9fLnB5CkBAIC0wLDAgKzEs MzczIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAo QykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCitpbXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3Rl bXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9t IGZsYXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWlu LnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAg IG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2Vy dmVyX2Vycm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQg Tm9kZVZpZXcKK2Zyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1w b3J0IENvbGxlY3Rpb25Ob2RlTW9kdWxlCitpbXBvcnQgcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMgYXMgZGF0YWJh c2VzCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0 aW9uX3JlcXVpcmVkCitmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9y dCBnZXRfZHJpdmVyCitmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9E UklWRVIKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCisKK2NsYXNz IEV4dGVuc2lvbk1vZHVsZShDb2xsZWN0aW9uTm9kZU1vZHVsZSk6CisgICAg Tk9ERV9UWVBFID0gImV4dGVuc2lvbiIKKyAgICBDT0xMRUNUSU9OX0xBQkVM ID0gZ2V0dGV4dCgiRXh0ZW5zaW9ucyIpCisKKyAgICBkZWYgX19pbml0X18o c2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoRXh0ZW5z aW9uTW9kdWxlLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisK KyAgICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAg ICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIGNvbGxlY3Rpb24gbm9k ZQorICAgICAgICAiIiIKKyAgICAgICAgeWllbGQgc2VsZi5nZW5lcmF0ZV9i cm93c2VyX2NvbGxlY3Rpb25fbm9kZShkaWQpCisKKyAgICBAcHJvcGVydHkK KyAgICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAg ICAgICBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBleHRlbnNpb24sIHdo ZW4gYW55IG9mIHRoZSBkYXRhYmFzZSBub2RlIGlzCisgICAgICAgIGluaXRp YWxpemVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNl cy5EYXRhYmFzZU1vZHVsZS5OT0RFX1RZUEUKKworCitibHVlcHJpbnQgPSBF eHRlbnNpb25Nb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgRXh0ZW5zaW9u VmlldyhOb2RlVmlldyk6CisgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5v ZGVfdHlwZQorCisgICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAgICAgIHsn dHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAgICAgICB7J3R5 cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAgICAgICAgeyd0eXBl JzogJ2ludCcsICdpZCc6ICdkaWQnfQorICAgICAgICAgICAgXQorICAgIGlk cyA9IFsKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZWlk J30KKyAgICAgICAgICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBkaWN0KHsK KyAgICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0JzogJ3Byb3Bl cnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAndXBkYXRlJ30s CisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAnY3JlYXRl J30KKyAgICAgICAgXSwKKyAgICAgICAgJ2RlbGV0ZSc6IFt7J2RlbGV0ZSc6 ICdkZWxldGUnfV0sCisgICAgICAgICdub2Rlcyc6IFt7J2dldCc6ICdub2Rl J30sIHsnZ2V0JzogJ25vZGVzJ31dLAorICAgICAgICAnc3FsJzogW3snZ2V0 JzogJ3NxbCd9XSwKKyAgICAgICAgJ21zcWwnOiBbeydnZXQnOiAnbXNxbCd9 LCB7J2dldCc6ICdtc3FsJ31dLAorICAgICAgICAnc3RhdHMnOiBbeydnZXQn OiAnc3RhdGlzdGljcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVuY3knOiBbeydn ZXQnOiAnZGVwZW5kZW5jaWVzJ31dLAorICAgICAgICAnZGVwZW5kZW50Jzog W3snZ2V0JzogJ2RlcGVuZGVudHMnfV0sCisgICAgICAgICdtb2R1bGUuanMn OiBbe30sIHt9LCB7J2dldCc6ICdtb2R1bGVfanMnfV0sCisgICAgICAgICdh dmFpbHMnOiBbe30sIHsnZ2V0JzogJ2F2YWlscyd9XSwKKyAgICAgICAgJ3Nj aGVtYXMnOiBbe30sIHsnZ2V0JzogJ3NjaGVtYXMnfV0sCisgICAgICAgICdj aGlsZHJlbic6IFt7J2dldCc6ICdjaGlsZHJlbid9XQorICAgIH0pCisKKyAg ICBkZWYgY2hlY2tfcHJlY29uZGl0aW9uKGYpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRv ciB3aGljaCB3aWxsIGNoZWNrcworICAgICAgICBkYXRhYmFzZSBjb25uZWN0 aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hl cworICAgICAgICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3Bl cnRpZXMgdG8gc2VsZgorICAgICAgICAiIiIKKyAgICAgICAgQHdyYXBzKGYp CisgICAgICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAg ICAgICAjIEhlcmUgYXJnc1swXSB3aWxsIGhvbGQgc2VsZiAmIGt3YXJncyB3 aWxsIGhvbGQgZ2lkLHNpZCxkaWQKKyAgICAgICAgICAgIHNlbGYgPSBhcmdz WzBdCisgICAgICAgICAgICBzZWxmLm1hbmFnZXIgPSBnZXRfZHJpdmVyKFBH X0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIoa3dhcmdzWydz aWQnXSkKKyAgICAgICAgICAgIHNlbGYuY29ubiA9IHNlbGYubWFuYWdlci5j b25uZWN0aW9uKGRpZD1rd2FyZ3NbJ2RpZCddKQorICAgICAgICAgICAgc2Vs Zi50ZW1wbGF0ZV9wYXRoID0gJ2V4dGVuc2lvbnMvc3FsJworCisgICAgICAg ICAgICByZXR1cm4gZigqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVy biB3cmFwCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGxp c3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCk6CisgICAgICAgICIiIgorICAgICAg ICBJdCBmZXRjaGVzIGFsbCBleHRlbnNpb25zIHByb3BlcnRpZXMgYW5kIHJl bmRlciBpbnRvIHByb3BlcnRpZXMKKyAgICAgICAgdGFiCisgICAgICAgICIi IgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pKQorICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQor CisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAg cmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9u c2U9cmVzWydyb3dzJ10sCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAor ICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24K KyAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCk6CisgICAgICAg ICIiIgorICAgICAgICBJdCBsaXN0cyBkb3duIHRoZSBhbGwgZXh0ZW5zaW9u cyB1bmRlciB0aGUgRXh0ZW5zaW9ucyBDb2xsZWN0aW9uIG5vZGUKKyAgICAg ICAgIiIiCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJv cGVydGllcy5zcWwnXSkpCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYu Y29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsn cm93cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2Rl KAorICAgICAgICAgICAgICAgICAgICAgICAgcm93WydlaWQnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAgICAgICAg ICAgICAgICAgICAgJ2ljb24tZXh0ZW5zaW9uJworICAgICAgICAgICAgICAg ICAgICApKQorCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAg c3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBlaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgSXQgZmV0Y2hl cyB0aGUgcHJvcGVydGllcyBvZiBhIHNpbmdsZSBleHRlbnNpb24KKyAgICAg ICAgYW5kIHJlbmRlciBpbiBwcm9wZXJ0aWVzIHRhYgorCisgICAgICAgICIi IgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLCBlaWQ9ZWlk KQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3QoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICAg ICAgcmVzcG9uc2U9cmVzWydyb3dzJ11bMF0sCisgICAgICAgICAgICAgICAg c3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgY3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBk aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IGNyZWF0ZXMgbmV3IHRoZSBleHRlbnNpb24gb2JqZWN0CisgICAgICAgICIi IgorICAgICAgICByZXF1aXJlZF9hcmdzID0gWworICAgICAgICAgICAgJ25h bWUnCisgICAgICAgIF0KKworICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3Jt IGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMocmVxdWVzdC5kYXRh LmRlY29kZSgpKQorICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6 CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAgICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAgICAgICAgICAgc3Vj Y2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0 KAorICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgdGhl IHJlcXVpcmVkIHBhcmFtZXRlciAoJXMpLiIgJSBhcmcKKyAgICAgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoCisgICAgICAgICAg ICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAg ICAgICAgICAgZGF0YT1kYXRhCisgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0 aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBlbmFtZT1kYXRhWyduYW1l J10KKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgZm9yIHJvdyBpbiBy c2V0Wydyb3dzJ106CisgICAgICAgICAgICByZXR1cm4ganNvbmlmeSgKKyAg ICAgICAgICAgICAgbm9kZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93 c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgIHJvd1snZWlkJ10sCisg ICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAgICAgICAg ICAgICAgICAnaWNvbi1leHRlbnNpb24nCisgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24K KyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIGVpZCk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRl IGV4dGVuc2lvbiBvYmplY3QKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEg PSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2Fk cyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisgICAgICAgIFNRTCA9IHNlbGYu Z2V0U1FMKGdpZCwgc2lkLCBkYXRhLCBkaWQsIGVpZCkKKworICAgICAgICB0 cnk6CisgICAgICAgICAgICBpZiBTUUwgYW5kIFNRTC5zdHJpcCgnXG4nKSBh bmQgU1FMLnN0cmlwKCcgJyk6CisgICAgICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAg ICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAg ICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICAg ICAgaW5mbz0iRXh0ZW5zaW9uIHVwZGF0ZWQiLAorICAgICAgICAgICAgICAg ICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6IGVp ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkCisgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNl OgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAg ICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1cGRhdGUiLAorICAgICAgICAg ICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdp ZCc6IGRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkCisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlbGV0ZShzZWxmLCBnaWQs IHNpZCwgZGlkLCBlaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiB3aWxsIGRlbGV0ZSBkcm9wL2Ryb3AgY2FzY2FkZSB0aGUgZXh0 ZW5zaW9uIG9iamVjdAorICAgICAgICAiIiIKKyAgICAgICAgY2FzY2FkZSA9 IFRydWUgaWYgc2VsZi5jbWQgPT0gJ2RlbGV0ZScgZWxzZSBGYWxzZQorICAg ICAgICB0cnk6CisgICAgICAgICAgICAjIGNoZWNrIGlmIGV4dGVuc2lvbiB3 aXRoIGVpZCBleGlzdHMKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNx bCddKSwgZWlkPWVpZCkKKyAgICAgICAgICAgIHN0YXR1cywgbmFtZSA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9bmFtZSkKKyAgICAgICAgICAgICMgZHJv cCBleHRlbnNpb24KKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCdd KSwgbmFtZT1uYW1lLCBjYXNjYWRlPWNhc2NhZGUpCisgICAgICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdl dHRleHQoIkV4dGVuc2lvbiBkcm9wcGVkIiksCisgICAgICAgICAgICAgICAg ZGF0YT17CisgICAgICAgICAgICAgICAgICAgICdpZCc6IGRpZCwKKyAgICAg ICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAg ICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1z dHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG1z cWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgZWlkPU5vbmUpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB0byByZXR1cm4gbW9kaWZpZWQg U1FMCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVzdC5hcmdz LmNvcHkoKQorICAgICAgICBTUUwgPSBzZWxmLmdldFNRTChnaWQsIHNpZCwg ZGF0YSwgZGlkLCBlaWQpCisgICAgICAgIGlmIFNRTC5zdHJpcCgnXG4nKSBh bmQgU1FMLnN0cmlwKCcgJyk6CisgICAgICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRhPVNRTCwK KyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRh PSctLSBNb2RpZmllZCBTUUwgLS0nLAorICAgICAgICAgICAgICAgICAgICBz dGF0dXM9MjAwCisgICAgICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBn ZXRTUUwoc2VsZiwgZ2lkLCBzaWQsIGRhdGEsIGRpZCwgZWlkPU5vbmUpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVy YXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEKKyAgICAgICAgIiIiCisgICAgICAg IHJlcXVpcmVkX2FyZ3MgPSBbCisgICAgICAgICAgICAnbmFtZScKKyAgICAg ICAgXQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBlaWQgaXMgbm90 IE5vbmU6CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNx bCddKSwgZWlkPWVpZCkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAg ICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAg ICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAgICAg ICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGFbYXJnXSA9IG9sZF9kYXRhW2FyZ10KKyAgICAgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksIGRhdGE9ZGF0YSwgb19kYXRh PW9sZF9kYXRhKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksIGRhdGE9ZGF0YSkKKyAgICAgICAg ICAgIHJldHVybiBTUUwKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIGF2YWlscyhzZWxmLCBnaWQsIHNpZCwgZGlkKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2l0aCBmZXRjaCBhbGwgdGhl IGF2YWlsYWJsZSBleHRlbnNpb25zCisgICAgICAgICIiIgorICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwgJ2V4dGVuc2lvbnMuc3FsJ10pKQorICAgICAgICBzdGF0dXMsIHJz ZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKyAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPXJzZXRbJ3Jv d3MnXSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAg ICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBz Y2hlbWFzKHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aXRoIGZldGNoIGFsbCB0aGUgc2NoZW1h cworICAgICAgICAiIiIKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzY2hlbWFzLnNxbCdd KSkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQp CisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICAgICAgZGF0YT1yc2V0Wydyb3dzJ10sCisgICAgICAgICAgICAgICAg c3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBtb2R1 bGVfanMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIHByb3Bl cnR5IGRlZmluZXMgKGlmIGphdmFzY3JpcHQpIGV4aXN0cyBmb3IgdGhpcyBu b2RlLgorICAgICAgICBPdmVycmlkZSB0aGlzIHByb3BlcnR5IGZvciB5b3Vy IG93biBsb2dpYy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBtYWtl X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAgICAgImV4dGVuc2lvbnMvanMvZXh0ZW5zaW9u cy5qcyIsCisgICAgICAgICAgICAgICAgICAgIF89Z2V0dGV4dAorICAgICAg ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIDIwMCwgeydDb250 ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0J30KKyAgICAg ICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBlaWQpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCBm b3Igc3FsIHBhbmVsCisgICAgICAgICIiIgorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3By b3BlcnRpZXMuc3FsJ10pLCBlaWQ9ZWlkKQorICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgcmVzdWx0ID0gcmVz Wydyb3dzJ11bMF0KKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSks CisgICAgICAgICAgICBkYXRhPXJlc3VsdCwKKyAgICAgICAgICAgIGNvbm49 c2VsZi5jb25uLAorICAgICAgICAgICAgZGlzcGxheV9jb21tZW50cz1UcnVl CisgICAgICAgICkKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShy ZXNwb25zZT1TUUwpCisKK0V4dGVuc2lvblZpZXcucmVnaXN0ZXJfbm9kZV92 aWV3KGJsdWVwcmludCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25z L3N0YXRpYy9pbWcvY29sbC1leHRlbnNpb24ucG5nIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVu c2lvbnMvc3RhdGljL2ltZy9jb2xsLWV4dGVuc2lvbi5wbmcKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uZWVkN2NhOTdhMzNlZjU5NWY0NDhiODYyMTE2OGQ1 MzFmODZkNTFkNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTAxNwp6Y21W PFYwfHh3d1ApPGg7M0t8TGswMDBlMU5KTFRxMDAwbUcwMDBtTzB7e1IzQ0Bs fEQwMDAwMWI1Y2hfMEl0cCkKej0+UHglX2ZTayFNU154WigjXk4zcD9SJk9k K19ZdSRpYmolVF42Um9yQiNibW4hMV81eH0ySmlVSDl8bT1pJHB7CnpSdD43 ZXNaeChya0hNQiZtfGtwfVlrRi1pK1M5cUhvTlRZQ2Z4XnxvSzdjPkg+Qng3 bmVNRWpqZk85dlpuUWd6Zwp6bmFzem8tYHZjLXd3N0tfMHJCZUF3eVM9Z20x alBDSmVKSSRHaj1uJnZ5cSpYVn5+VlNlUSs/R2t6THUpdisoS0MKej8mWnB1 aSVARD81X283SzVMKnRlPEdkfCRFJlRpVWB9cCR0X1UhZlc7UGRSKz4qMiFh LU1aJTR2ZzZnTTtMKUw9CnprNTN3NDc5TTNCRFErbGZzQm8mfHhvRTMhOClG JGpkX0xYR241ZFVtSEVKY0UkKW1+Yih4SzMqdipFcUI9ZmtrJgp6ek42dUBv IV9wSSpQKFg3Zz5rPXRmNzZ4UCRkSWo/U1ZlOXVnU0xwbj4mfStsc0YyI0Rp UClXail8aDxNbGg0NDkKem00IXVDUHl9ZEw0VnM4VXRDdiFIdjRNNWNqZWRQ UEN9JHVqWjZ7eE5KQm9jWEJ4NCg7KXZrOE1oZF9APTVuSy0jCnpXZih0fE8w PVlFRj1ycnp2eG45MyteeUJMVCRmKkFvQFBJZU4wKyNrV1IrdXJjUU1jSipT Ri1zVCZybmZsVkZqdwp6a2FLTSVHPW47QCQqXy1xSVRsX00hc3lHRyY3bnx8 UkVeMSpEfDt9JCk0dGZtaHJ6NkFJYklaQW5xcXt5aSpUJVYKekhoVld0Vjsm dTE4SSN0ZElFX05wemticlljOVZmTUx0UFg8Wll4MSZCNVo5T20zfThWWjdG aVBlczlvLVREeCUxCnp3ezZYe1d4JUZYb3JXezVrfl9rck12ezNWTXN6ZXx0 IWArfWdKUjVtSGorWG5ZOSgtO1piKlZoQ3gkYzF1VSpIaAp6Um1HPUd6QFJe aGF2VioxSlkzM25SPipUb3lrO3wrTUxNWmJLKV8rWG9qSEFINW08eXZSO0ZU NSMmMWkrWURMMGsKekpISzZfazR1aHdHbHB8MWkrQykhcGk7SitNflpZSWZA flJ0WjVENF8zMGpGI1I7Z3EqeTsrMktKKkomPSRpdHxLCnpidGJeMVBySX59 Iz0paDt6TUB9fFRed20wNT8mRCtZOF5KME1KPG0hNmtgPiZuTCY0SEM+ZCVT UD1gKjRkXyQzWAp6Q29HYVpmVCh8S1NfX3RaQjdVWlFLRCU4T1hjJktMN0or TE84K1JtMGY9QyF7OVQjbUo3VURGRTAwMDAxYlclPUoKejA2XnkwVyZpKkgw Yil4Pkw7IzJkOVlfRUcwMTBxTlMjdG1ZM2xqaFUzbGprVm53JUhfMDAwTWNO bGlydStYRVhCCno2Q3AoUmJjcH19MEIlVntLfnh5aVU2OFIyeiN0MytuUyh0 dCEzfmhZXnZHZzQyRkw9YEVFTk5tMHtNITYteTE7KQp6UXhGYXp2TF9jSypi PF9va0ZnMGQ4SGMjVj1FaGApaCt5Wm1wbGVobmxOWkVkdGdRQGhYMENOZUlX RXB4dyFveU4KbmRjfnRzcDlUbGlkT3pPQyYtKSp8S0gpM3BEMm5ncjAwMDAw Tmt2WFh1MG1qZjxLTlV6CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy9zdGF0aWMvaW1nL2V4dGVuc2lv bi5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy9zdGF0aWMvaW1nL2V4dGVuc2lv bi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTNjNTMzMzQ3ODgzZmMx ZGVjNzNiY2IyMWIzMmZjNTRlM2MzMTczMgpHSVQgYmluYXJ5IHBhdGNoCmxp dGVyYWwgOTk2CnpjbVY8QTB+YEVfUCk8aDszS3xMazAwMGUxTkpMVHEwMDBt RzAwMG1PMHt7UjNDQGx8RDAwMDAxYjVjaF8wSXRwKQp6PT5QeCVgY088JU1R MnpMZl82STYmOXx6ZGQ5OT4tQGEqMm0hSnVuaDdOKXxiUmZ8LWJ4fHpWYm9T S2hhX3cobEcKejttYy1MNFhWVmNRamIpUiFJb04+VVRtNmNkVGxQKyk0OGFl WV9GKCshcXZoKWZJcSRJJGFrQFFNMURlbWIycC15CnpaTklwZyUqVT9aK3ww ZVVtUj9RKUAjQHlMdEEzdTlYRmh2OG1kdjB0Yn5DIU9rKTR4Y2tjM1dzYTQ/ KmFVRD9wSAp6QGFmWC08O3N8Z1AtPEhlY3hXTElUTW4re3llKURxe1FMTCZg MTFNbz9EZz5BXlglRXs7bGsrTXk1YHhrPEpHQykKeihWP0peUGEwcXI5JVVS VVpZWEp9YUhgfEVYc2Q3PVY7TWt2S0hiY2lzRnpuWVk5KmVAcXNpXmtxMHAr YztrfiEjCnohPzVNUHF2NWxpLT4jNj9wPzFOQWFsZTNuKTBOdURrZ2J8bk1R JHZFd3VyOykmWChQJWtsTGUoKnF3c2JuMChaZQp6JiVscUJnKyozUzFaWT9k bnV0VEltcntHTmZweVoyZXRrTTlYQ05xVEN0cjl3aWhWT0FWO2lOX3U2RChU SyN4Y2YKelRuYHYhNyhiT3R3NGBiPVhDUT5MaHQ9YGl0PHwoI210U0Y/VzxR UWNtJDtUPm0xQlo7RzAqU1V4OCVXR3Q3JjRCCnpWM0QrdGI4Ukl3Z0YzTHV1 I2JOXjdHNHY9PSp5VlJwLV9Aa2ptZW9TZG9hRyF6U3pXdiFLYFVIVUtDIU1W dVpTagp6YUlBSlZkcEF5Rjl2eHlDbGgmZytqWThHR2UkdTtrbFl1b3VUQCpp VkQ/dyk+WTs3RXNla1ZDP0RSUjFnWl90UVoKenlLdjk5Wk95WX56QH04NGhC S3tfSkhuKCFsNmZMVmJUbmhGWmZNU2ZWJDZMdWwwcWhHQzIqWj9OUDxUdmhC TH5xCnpVQnwwYyNpdmNjcGcpUm85OEcjV1QqYFA+JGE2fShXOzI+YUk7bH1X eit0fGZJZWxqbFNjRlNmcmVhWFdaJWYyIwp6TVojdH56Zz9rXk9PQVVwaEkx KjRjcjNWfVFuczgmaWdZMUBZI0RAWTdIP2IkVDhVQ3RzYm5fMlMlaTIhcmsh KWgKeiE+RWFNQ2N2YW15Uj8oVyFLSzgkcUY8Mys5QkNhQVVKKTg8OVg2TG1F c3MxRFYtPlpUTDNlMj04RVA5KWhmYXVtCnpMeT53WEVSc0Vkc0RFbygzem1F JGV4YGpzeUltRyY3PUxPT2ZvbH5UY08qJUlORW1KJTdpfUJ8WVJuMSUwMDA0 Vwp6UWNoQzxLPDN6SDAwMDAxVm9PSXYwRWgpME5Ce3I7MzI7YlJhe3ZHZjY5 NTFVNjlFOTRvRVFLQTAwKHFRTyteUlcKejB+LXhHNCEmSEJGOH19bFIhS3hi UjJiN15VPzNqMnhTO1Z2TFhidHdUen4+MFc9UWhWQSl5SF9Ga0x7fTE7aHVr CnpwYUtDUUt6QD03c2B7aTk3aTBAdmwyVFM4dzFDNz9SJkc3eTspMU5tPDxP WmtDe0EtaDw2fUE8Q2piRGFQOHFEZQpTUl80ZTYwMDAwPE1OVU1uTFNUYVgt XkwzNwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvanMvZXh0ZW5z aW9ucy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNp b25zL2pzL2V4dGVuc2lvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZGM4YTYyMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL2pzL2V4dGVuc2lv bnMuanMKQEAgLTAsMCArMSwxOTMgQEAKK2RlZmluZSgKKyAgICAgIFsnanF1 ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdh ZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAncGdhZG1pbi5icm93c2VyLmNv bGxlY3Rpb24nXSwKK2Z1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJv d3NlcikgeworCisgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLWV4dGVu c2lvbiddKSB7CisgICAgdmFyIGV4dGVuc2lvbnMgPSBwZ0FkbWluLkJyb3dz ZXIuTm9kZXNbJ2NvbGwtZXh0ZW5zaW9uJ10gPQorICAgICAgcGdBZG1pbi5C cm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAgICAgICAgbm9kZTogJ2V4 dGVuc2lvbicsCisgICAgICAgIGxhYmVsOiAne3sgXygnRXh0ZW5zaW9uJykg fX0nLAorICAgICAgICB0eXBlOiAnY29sbC1leHRlbnNpb24nLAorICAgICAg ICBjb2x1bW5zOiBbJ25hbWUnLCAnb3duZXInLCAnY29tbWVudCddCisgICAg ICB9KTsKKyAgfTsKKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZXh0ZW5z aW9uJ10pIHsKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2V4dGVuc2lv biddID0KKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZS5leHRlbmQoeworICAg ICAgcGFyZW50X3R5cGU6ICdkYXRhYmFzZScsCisgICAgICB0eXBlOiAnZXh0 ZW5zaW9uJywKKyAgICAgIGhhc1NRTDogdHJ1ZSwKKyAgICAgIGNhbkRyb3A6 IHRydWUsCisgICAgICBjYW5Ecm9wQ2FzY2FkZTogdHJ1ZSwKKyAgICAgIGxh YmVsOiAne3sgXygnRXh0ZW5zaW9uJykgfX0nLAorCisgICAgICBJbml0OiBm dW5jdGlvbigpeworICAgICAgICBpZih0aGlzLmluaXRpYWxpemVkKQorICAg ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxpemVkID0g dHJ1ZTsKKworICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKFt7CisgICAg ICAgICAgbmFtZTogJ2NyZWF0ZV9leHRlbnNpb25fb25fY29sbCcsIG5vZGU6 ICdjb2xsLWV4dGVuc2lvbicsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBh cHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hv d19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVh dGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdFeHRlbnNpb24uLi4n KSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBwZy1pY29uLWV4 dGVuc2lvbicsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnfQorICAgICAgICB9 LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2V4dGVuc2lvbicsIG5vZGU6 ICdleHRlbnNpb24nLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGll czogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2Jq X3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywg cHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnRXh0ZW5zaW9uLi4uJykgfX0n LAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gcGctaWNvbi1leHRlbnNp b24nLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAgICAgfQorICAg ICAgICBdKTsKKyAgICAgIH0sCisgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93 c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgc2NoZW1hOiBbCisg ICAgICAgICAgeworICAgICAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6ICd7 eyBfKCdOYW1lJyl9fScsIGZpcnN0X2VtcHR5OiB0cnVlLAorICAgICAgICAg ICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRl JywgJ2VkaXQnXSwKKyAgICAgICAgICAgIHZpc2libGU6IHRydWUsIHVybDon YXZhaWxzJywgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAg ICAgICByZXR1cm4gIW0uaXNOZXcoKTsKKyAgICAgICAgICAgIH0sCisgICAg ICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAg ICAgICAgdmFyIHJlcyA9IFtdOworICAgICAgICAgICAgICB2YXIgbGFiZWwg PSB0aGlzLm1vZGVsLmdldCgnbmFtZScpOworICAgICAgICAgICAgICBpZiAo IXRoaXMubW9kZWwuaXNOZXcoKSl7CisgICAgICAgICAgICAgICAgcmVzLnB1 c2goe2xhYmVsOiBsYWJlbCwgdmFsdWU6IGxhYmVsfSk7CisgICAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiYgXy5p c0FycmF5KGRhdGEpKSB7CisgICAgICAgICAgICAgICAgICBfLmVhY2goZGF0 YSwgZnVuY3Rpb24oZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZC5p bnN0YWxsZWRfdmVyc2lvbiA9PT0gbnVsbCkKKyAgICAgICAgICAgICAgICAg ICAgICAvKiBkIGNvbnRhaW5zIGpzb24gZGF0YSBhbmQgc2V0cyBpbnRvCisg ICAgICAgICAgICAgICAgICAgICAgKiBzZWxlY3QncyBvcHRpb24gY29udHJv bAorICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAg ICAgICAgcmVzLnB1c2goe2xhYmVsOiBkLm5hbWUsIHZhbHVlOiBkfSk7Cisg ICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgIC8qIGV4dGVuZHMgTm9kZUFqYXhPcHRp b25zQ29udHJvbCB0byBvdmVycmlkZSB0aGUgcHJvcGVydGllcworICAgICAg ICAgICAgKiBnZXRWYWx1ZUZyb21ET00gd2hpY2ggdGFrZXMgc3RyaW5naWZp ZWQgZGF0YSBmcm9tIG9wdGlvbiBvZgorICAgICAgICAgICAgKiBzZWxlY3Qg Y29udHJvbCBhbmQgcGFyc2UgaXQuIEFuZCBgb25DaGFuZ2VgIHRha2VzIHRo ZSBzdHJpbmdpZmllZAorICAgICAgICAgICAgKiBkYXRhIGZyb20gc2VsZWN0 J3Mgb3B0aW9uLCB0aHVzIGNvbnZlcnQgaXQgdG8ganNvbiBmb3JtYXQgYW5k IHNldCB0aGUKKyAgICAgICAgICAgICogZGF0YSBpbnRvIE1vZGVsIHdoaWNo IGlzIHVzZWQgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHNjaGVtYSBmaWVsZC4K KyAgICAgICAgICAgICovCisgICAgICAgICAgICBjb250cm9sOiBCYWNrZm9y bS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLmV4dGVuZCh7CisgICAgICAgICAg ICAgIGdldFZhbHVlRnJvbURPTTogZnVuY3Rpb24oKSB7CisgICAgICAgICAg ICAgICAgdmFyIGRhdGEgPSB0aGlzLmZvcm1hdHRlci50b1Jhdyh0aGlzLiRl bC5maW5kKCJzZWxlY3QiKS52YWwoKSwgdGhpcy5tb2RlbCk7CisgICAgICAg ICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiByZXR1cm4gbnVsbCBp ZiBkYXRhIGlzIGVtcHR5IHRvIHByZXZlbnQgaXQgZnJvbQorICAgICAgICAg ICAgICAgICAqIHRocm93aW5nIHBhcnNpbmcgZXJyb3IuIEFkZHMgY2hlY2sg YXMgbmFtZSBjYW4gYmUgZW1wdHkKKyAgICAgICAgICAgICAgICAqLworICAg ICAgICAgICAgICAgIGlmIChkYXRhID09PSAnJyl7CisgICAgICAgICAgICAg ICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgZWxzZSBpZiAodHlwZW9mKGRhdGEpID09PSAnc3RyaW5nJykg eworICAgICAgICAgICAgICAgICAgZGF0YT1KU09OLnBhcnNlKGRhdGEpOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZGF0 YS5uYW1lOworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICBvbkNo YW5nZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgQmFja2Zvcm0u Tm9kZUFqYXhPcHRpb25zQ29udHJvbC5wcm90b3R5cGUub25DaGFuZ2UuYXBw bHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICB2YXIgc2Vs ZWN0ZWRWYWx1ZSA9IHRoaXMuJGVsLmZpbmQoInNlbGVjdCIpLnZhbCgpOwor ICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFZhbHVlLnRyaW0oKSAhPSAi Iil7CisgICAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuZm9ybWF0dGVy LnRvUmF3KHNlbGVjdGVkVmFsdWUsIHRoaXMubW9kZWwpOworICAgICAgICAg ICAgICAgICAgaWYodHlwZW9mKGQpID09PSAnc3RyaW5nJykKKyAgICAgICAg ICAgICAgICAgICAgZD1KU09OLnBhcnNlKGQpOworICAgICAgICAgICAgICAg ICAgdmFyIGNoYW5nZXMgPSB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJz aW9uJyA6ICcnLAorICAgICAgICAgICAgICAgICAgICAncmVsb2NhdGFibGUn OiAoKCFfLmlzTnVsbChkLnJlbG9jYXRhYmxlWzBdKSAmJiAhXy5pc1VuZGVm aW5lZChkLnJlbG9jYXRhYmxlWzBdKSkgPyBkLnJlbG9jYXRhYmxlWzBdOiAn JyksCisgICAgICAgICAgICAgICAgICAgICdzY2hlbWEnOiAoKCFfLmlzTnVs bChkLnNjaGVtYVswXSkgJiYgIV8uaXNVbmRlZmluZWQoZC5zY2hlbWFbMF0p KSA/IGQuc2NoZW1hWzBdOiAnJykKKyAgICAgICAgICAgICAgICAgICAgfTsK KyAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuc2V0KGNoYW5nZXMpOwor ICAgICAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgICAgdmFy IGNoYW5nZXMgPSB7J3ZlcnNpb24nOiAnJywgJ3JlbG9jYXRhYmxlJzogdHJ1 ZSwgJ3NjaGVtYSc6ICcnfTsKKyAgICAgICAgICAgICAgICAgIHRoaXMubW9k ZWwuc2V0KGNoYW5nZXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgfSx7CisgICAg ICAgICAgICBpZDogJ2VpZCcsIGxhYmVsOiAne3sgXygnT2lkJyl9fScsIGNl bGw6ICdzdHJpbmcnLAorICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNh YmxlZDogdHJ1ZSwgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2VkaXQnLCAnY3Jl YXRlJ10KKyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAnb3duZXIn LCBsYWJlbDone3sgXygnT3duZXInKSB9fScsIGNvbnRyb2w6ICdub2RlLWxp c3QtYnktbmFtZScsCisgICAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMn XSwgbm9kZTogJ3JvbGUnCisgICAgICAgICAgfSx7CisgICAgICAgICAgICBp ZDogJ3NjaGVtYScsIGxhYmVsOiAne3sgXygnU2NoZW1hJyl9fScsIHR5cGU6 ICd0ZXh0JywgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywKKyAgICAg ICAgICAgIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCdd LCBncm91cDogJ0RlZmluaXRpb24nLCBkZXBzOiBbJ3JlbG9jYXRhYmxlJ10s CisgICAgICAgICAgICB1cmw6ICdzY2hlbWFzJywgZmlyc3RfZW1wdHk6IHRy dWUsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgIC8q IGVuYWJsZSBvciBkaXNhYmxlIHNjaGVtYSBmaWVsZCBpZiBtb2RlbCdzIHJl bG9jYXRhYmxlCisgICAgICAgICAgICAgICogYXR0cmlidXRlIGlzIFRydWUg b3IgRmFsc2UKKyAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgcmV0 dXJuIChtLmhhcygncmVsb2NhdGFibGUnKSA/ICFtLmdldCgncmVsb2NhdGFi bGUnKSA6IGZhbHNlKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB0 cmFuc2Zvcm06IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAgICAgdmFy IHJlcyA9IFtdOworICAgICAgICAgICAgICBpZiAoZGF0YSAmJiBfLmlzQXJy YXkoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBfLmVhY2goZGF0YSwgZnVu Y3Rpb24oZCkgeworICAgICAgICAgICAgICAgICAgcmVzLnB1c2goe2xhYmVs OiBkLnNjaGVtYSwgdmFsdWU6IGQuc2NoZW1hfSk7CisgICAgICAgICAgICAg ICAgfSkKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICByZXR1cm4g cmVzOworICAgICAgICAgICAgfQorICAgICAgICAgIH0sCisgICAgICAgICAg eworICAgICAgICAgICAgaWQ6ICdyZWxvY2F0YWJsZScsIGxhYmVsOiAne3sg XygnUmVsb2NhdGFibGU/Jyl9fScsIGNlbGw6ICdzd2l0Y2gnLAorICAgICAg ICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsncHJvcGVydGllcyddLCAn b3B0aW9ucyc6IHsKKyAgICAgICAgICAgICAgJ29uVGV4dCc6ICdZZXMnLCAn b2ZmVGV4dCc6ICdObycsICdvbkNvbG9yJzogJ3N1Y2Nlc3MnLAorICAgICAg ICAgICAgICAnb2ZmQ29sb3InOiAnZGVmYXVsdCcsICdzaXplJzogJ3NtYWxs JworICAgICAgICAgICAgfQorICAgICAgICAgIH0sCisgICAgICAgICAgewor ICAgICAgICAgICAgaWQ6ICd2ZXJzaW9uJywgbGFiZWw6ICd7eyBfKCdWZXJz aW9uJyl9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgICAgbW9kZTog Wydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sIGdyb3VwOiAnRGVm aW5pdGlvbicsCisgICAgICAgICAgICBjb250cm9sOiAnbm9kZS1hamF4LW9w dGlvbnMnLCB1cmw6J2F2YWlscycsIGZpcnN0X2VtcHR5OiB0cnVlLAorICAg ICAgICAgICAgLyoKKyAgICAgICAgICAgICogVHJhbnNmb3JtIHRoZSBkYXRh IGludG8gdmVyc2lvbiBmb3IgdGhlIHNlbGVjdGVkIGV4dGVuc2lvbi4KKyAg ICAgICAgICAgICovCisgICAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9u KGRhdGEpIHsKKyAgICAgICAgICAgICAgcmVzID0gW107CisgICAgICAgICAg ICAgIHZhciBleHRlbnNpb24gPSB0aGlzLm1vZGVsLmdldCgnbmFtZScpOwor ICAgICAgICAgICAgICBfLmVhY2goZGF0YSwgZnVuY3Rpb24oZHQpeworICAg ICAgICAgICAgICAgIGlmKGR0Lm5hbWUgPT0gZXh0ZW5zaW9uKXsKKyAgICAg ICAgICAgICAgICAgIGlmKGR0LnZlcnNpb24gJiYgXy5pc0FycmF5KGR0LnZl cnNpb24pKXsKKyAgICAgICAgICAgICAgICAgICAgXy5lYWNoKGR0LnZlcnNp b24sIGZ1bmN0aW9uKHYpeworICAgICAgICAgICAgICAgICAgICAgIHJlcy5w dXNoKHsgbGFiZWw6IHYsIHZhbHVlOiB2IH0pOworICAgICAgICAgICAgICAg ICAgICB9KTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICByZXR1cm4g cmVzOworICAgICAgICAgICAgfQorICAgICAgICAgIH0sCisgICAgICAgICAg eworICAgICAgICAgICAgaWQ6ICdjb21tZW50JywgbGFiZWw6ICd7eyBfKCdD b21tZW50Jyl9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgICAgdHlw ZTogJ211bHRpbGluZScsIGRpc2FibGVkOiB0cnVlCisgICAgICAgICAgfQor ICAgICAgICBdLAorICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7Cisg ICAgICAgICAgLyoKKyAgICAgICAgICAqIFRyaWdnZXJzIGVycm9yIG1lc3Nh Z2VzIGZvciBuYW1lCisgICAgICAgICAgKiBpZiBpdCBpcyBlbXB0eS91bmRl ZmluZWQvbnVsbAorICAgICAgICAgICovCisgICAgICAgICAgdmFyIGVyciA9 IHt9LAorICAgICAgICAgICAgZXJybXNnLAorICAgICAgICAgICAgbmFtZSA9 IHRoaXMuZ2V0KCduYW1lJyk7CisgICAgICAgICAgaWYgKF8uaXNVbmRlZmlu ZWQobmFtZSkgfHwgXy5pc051bGwobmFtZSkgfHwKKyAgICAgICAgICAgIFN0 cmluZyhuYW1lKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7 CisgICAgICAgICAgICBlcnJbJ25hbWUnXSA9ICd7eyBfKCdOYW1lIGNhbiBu b3QgYmUgZW1wdHkhJykgfX0nOworICAgICAgICAgICAgZXJybXNnID0gZXJy bXNnIHx8IGVyclsnbmFtZSddOworICAgICAgICAgICAgdGhpcy5lcnJvck1v ZGVsLnNldCgnbmFtZScsIGVycm1zZyk7CisgICAgICAgICAgICByZXR1cm4g ZXJybXNnOworICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgdGhpcy5l cnJvck1vZGVsLnVuc2V0KCduYW1lJyk7CisgICAgICAgICAgfQorICAgICAg ICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICB9KQorICAgIH0p CisgIH07CisKKyAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1snY29sbC1leHRl bnNpb24nXTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMv dGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL2NyZWF0ZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv ZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvY3JlYXRlLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODFhMzE0 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxh dGVzL2V4dGVuc2lvbnMvc3FsL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwxOSBA QAoreyM9PT09PT09PT09PT09PT09PT09PT09PT09Q3JlYXRlIG5ldyBleHRl bnNpb249PT09PT09PT09PT09PT09PT09PT09I30KK3sjPT09R2VuZXJhdGVz IGNvbW1lbnRzIGFuZCBjb2RlIGZvciBTUUwgdGFiPT09I30KK3slIGlmIGRp c3BsYXlfY29tbWVudHMgJX0KKy0tIEV4dGVuc2lvbjoge3sgY29ubnxxdElk ZW50KGRhdGEubmFtZSkgfX0KKworLS0gRFJPUCBFWFRFTlNJT04ge3sgY29u bnxxdElkZW50KGRhdGEubmFtZSkgfX07CisKK3slIGVuZGlmICV9Cit7JSBp ZiBkYXRhLm5hbWUgJX0KKyBDUkVBVEUgRVhURU5TSU9OIHt7IGNvbm58cXRJ ZGVudChkYXRhLm5hbWUpIH19eyUgaWYgZGF0YS5zY2hlbWEgPT0gJycgYW5k IGRhdGEudmVyc2lvbiA9PSAnJyAlfTt7JSBlbmRpZiAlfQoreyUgaWYgZGF0 YS5zY2hlbWEgJX0KKworICAgIFNDSEVNQSB7eyBkYXRhLnNjaGVtYSB9fXsl IGlmIGRhdGEudmVyc2lvbiA9PSAnJyAlfTt7JSBlbmRpZiAlfQoreyUgZW5k aWYgJX0KK3slIGlmIGRhdGEudmVyc2lvbiAlfQorCisgICAgVkVSU0lPTiB7 eyBkYXRhLnZlcnNpb258cXRMaXRlcmFsIH19OworeyUgZW5kaWYgJX0KK3sl IGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1w bGF0ZXMvZXh0ZW5zaW9ucy9zcWwvZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRl bnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC9kZWxldGUuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MTU1ZjYKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMv ZXh0ZW5zaW9ucy9zcWwvZGVsZXRlLnNxbApAQCAtMCwwICsxLDggQEAKK3sj PT09PT09PT09PT09PT09PT09PT09PT09PT09PURyb3AvQ2FzY2FkZSBFeHRl bnNpb24gYnkgbmFtZT09PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyUg aWYgZWlkICV9CitTRUxFQ1QgeC5leHRuYW1lIGZyb20gcGdfZXh0ZW5zaW9u IHgKKyAgICBXSEVSRSB4Lm9pZCA9IHt7IGVpZCB9fTo6aW50Cit7JSBlbmRp ZiAlfQoreyUgaWYgbmFtZSAlfQorRFJPUCBFWFRFTlNJT04ge3sgY29ubnxx dElkZW50KG5hbWUpIH19IHslIGlmIGNhc2NhZGUgJX0gQ0FTQ0FERSB7JSBl bmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRl bnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC9leHRlbnNpb25zLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3Nx bC9leHRlbnNpb25zLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5iZjM5NzlkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4 dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL2V4dGVuc2lvbnMu c3FsCkBAIC0wLDAgKzEsMTIgQEAKK3sjID09PT09PT09PT09PT09PT09PT09 PT1GZXRjaCBleHRlbnNpb25zIG5hbWVzPT09PT09PT09PT09PT09PT09PT09 I30KK1NFTEVDVAorICAgIGEubmFtZSwgYS5pbnN0YWxsZWRfdmVyc2lvbiwK KyAgICBhcnJheV9hZ2coYXYudmVyc2lvbikgYXMgdmVyc2lvbiwKKyAgICBh cnJheV9hZ2coYXYuc2NoZW1hKSBhcyBzY2hlbWEsCisgICAgYXJyYXlfYWdn KGF2LnN1cGVydXNlcikgYXMgc3VwZXJ1c2VyLAorICAgIGFycmF5X2FnZyhh di5yZWxvY2F0YWJsZSkgYXMgcmVsb2NhdGFibGUKK0ZST00KKyAgICBwZ19h dmFpbGFibGVfZXh0ZW5zaW9ucyBhCisgICAgTEVGVCBKT0lOIHBnX2F2YWls YWJsZV9leHRlbnNpb25fdmVyc2lvbnMgYXYgT04gKGEubmFtZSA9IGF2Lm5h bWUpCitHUk9VUCBCWSBhLm5hbWUsIGEuaW5zdGFsbGVkX3ZlcnNpb24KK09S REVSIEJZIGEubmFtZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMv dGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL3Byb3BlcnRpZXMuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL3Byb3Bl cnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmY2NTI2NzYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9u cy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvcHJvcGVydGllcy5zcWwKQEAg LTAsMCArMSwxNyBAQAoreyM9PT09PT09PT09PT09PT09PT09RmV0Y2ggcHJv cGVydGllcyBvZiBlYWNoIGV4dGVuc2lvbiBieSBuYW1lIG9yIG9pZD09PT09 PT09PT09PT09PT09PT0jfQorU0VMRUNUCisgICAgeC5vaWQgQVMgZWlkLCBw Z19nZXRfdXNlcmJ5aWQoZXh0b3duZXIpIEFTIG93bmVyLAorICAgIHguZXh0 bmFtZSBBUyBuYW1lLCBuLm5zcG5hbWUgQVMgc2NoZW1hLAorICAgIHguZXh0 cmVsb2NhdGFibGUgQVMgcmVsb2NhdGFibGUsIHguZXh0dmVyc2lvbiBBUyB2 ZXJzaW9uLAorICAgIGUuY29tbWVudAorRlJPTQorICAgIHBnX2V4dGVuc2lv biB4CisgICAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIHguZXh0bmFt ZXNwYWNlPW4ub2lkCisgICAgSk9JTiBwZ19hdmFpbGFibGVfZXh0ZW5zaW9u cygpIGUobmFtZSwgZGVmYXVsdF92ZXJzaW9uLCBjb21tZW50KSBPTiB4LmV4 dG5hbWU9ZS5uYW1lCit7JS0gaWYgZWlkICV9CisgV0hFUkUgeC5vaWQgPSB7 e2VpZH19OjppbnQKK3slIGVsaWYgZW5hbWUgJX0KKyBXSEVSRSB4LmV4dG5h bWUgPSB7e2VuYW1lfHF0TGl0ZXJhbH19Ojp0ZXh0Cit7JSBlbHNlICV9Cisg T1JERVIgQlkgeC5leHRuYW1lCit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL3Nj aGVtYXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVu c2lvbnMvc3FsL3NjaGVtYXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmI4ZTNjOTcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvc2NoZW1h cy5zcWwKQEAgLTAsMCArMSwzIEBACit7Iz09PT09PT09PT09PT09PT09PT1m ZXRjaCBhbGwgc2NoZW1hcz09PT09PT09PT09PT09PT09PT09PT09PT09I30K K1NFTEVDVCBuc3BuYW1lIEFzIHNjaGVtYSBGUk9NIHBnX25hbWVzcGFjZQor IE9SREVSIEJZIG5zcG5hbWUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNp b25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC91cGRhdGUuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL3VwZGF0 ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRj ZDYyNgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3Rl bXBsYXRlcy9leHRlbnNpb25zL3NxbC91cGRhdGUuc3FsCkBAIC0wLDAgKzEs MTAgQEAKK3sjID09PT09PT09PT09PT1VcGRhdGUgZXh0ZW5zaW9uIHNjaGVt YT09PT09PT09PT09PT0gI30KK3slIGlmIGRhdGEuc2NoZW1hIGFuZCBkYXRh LnNjaGVtYSAhPSBvX2RhdGEuc2NoZW1hICV9CitBTFRFUiBFWFRFTlNJT04g e3sgY29ubnxxdElkZW50KG9fZGF0YS5uYW1lKSB9fQorICAgIFNFVCBTQ0hF TUEge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hKSB9fTsKK3slIGVuZGlm ICV9Cit7IyA9PT09PT09PT09PT09VXBkYXRlIGV4dGVuc2lvbiB2ZXJzaW9u PT09PT09PT09PT09PSAjfQoreyUgaWYgZGF0YS52ZXJzaW9uIGFuZCBkYXRh LnZlcnNpb24gIT0gb19kYXRhLnZlcnNpb24gJX0KK0FMVEVSIEVYVEVOU0lP TiB7eyBjb25ufHF0SWRlbnQob19kYXRhLm5hbWUpIH19CisgICAgVVBEQVRF IFRPIHt7IGNvbm58cXRJZGVudChkYXRhLnZlcnNpb24pIH19OworeyUgZW5k aWYgJX0K --001a11444b28f106230529d901c8 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a11444b28f106230529d901c8--