Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayHEF-0000eR-JH for pgadmin-hackers@arkaria.postgresql.org; Thu, 05 May 2016 11:13:59 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1ayHEE-0000Rm-Tg for pgadmin-hackers@arkaria.postgresql.org; Thu, 05 May 2016 11:13:58 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ayHE0-0000De-MY for pgadmin-hackers@postgresql.org; Thu, 05 May 2016 11:13:44 +0000 Received: from mail-yw0-x235.google.com ([2607:f8b0:4002:c05::235]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1ayHDy-0001ZN-0X for pgadmin-hackers@postgresql.org; Thu, 05 May 2016 11:13:43 +0000 Received: by mail-yw0-x235.google.com with SMTP id t10so135814976ywa.0 for ; Thu, 05 May 2016 04:13:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:date:message-id:subject:from:to; bh=4wYNNYEFOau1EnkqwXkUPFmlR4D4mhwbaRpeJ6W3Kjg=; b=uZ32xlTTJWM3c3Jip2VreknwiSSpKTulbQy9VIYpFwdgW9CCcTclNwWBN4djVlLwaz rnhy1wM9B1wVYJLy/1eX1HNPPKnDUDhtxbre0wlAW7N9+X1iR6BPLIpHmV7/UMvCHW4y FjTQjXyPxqhmV7wDzpNIOknuwgnta/4vb1xjb7zGCfnwZZHrhSHTBxp/RSIlYRf3NpJO P+WpjYP+Wnu86UM0Ycu/ey0aJlgcRtjDGsc+XCwvc1lYoJ6S7xeD76i22GUA6cxrlQ9g GBcRmcXObU8AJAGqTEoPXEu4q3CPiFtSHeU9OEKjQitgA+awflTz6VDoaytq2CWHZGAs egsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to; bh=4wYNNYEFOau1EnkqwXkUPFmlR4D4mhwbaRpeJ6W3Kjg=; b=mLCwVIPU0QoHgnQ77Vah/suDEb1IhoQTVBIBQQSZ11qWKTGx1XdffMVywYW5Isbp3f JJwIeb9mc9JTPhieSBpnKvJU57m0v46FCUrlXEFDiI57tn6G9hTtjBbqwI/39N2HeegO YH7M3+Efyp8a8+XgYKLT51Y96AYh6R1tD8Mt4D3OIPODCfNiVz9FediQOmnN2Upmt2vP Pb6KJR2O9W3YsQHUdJtVCHeVOTHCStjECUp/M6Mw3eIFs5o5KDQ3TBvz+yRjsHAt/hVV fA5ZEbs1qzR1J3P2a1vRt+9VC2G8Zu75hzdJ8DmDqyl8r4ujQfOF7ocQAB43WNjisq9+ r++A== X-Gm-Message-State: AOPr4FXDoZTIcZ6yQkJURwrBV+1/CxngG+CxI5/+RXlvbCntN/7BIU6nejym01fBwtbCtTDX8tNke/j+1Tz/nQUE MIME-Version: 1.0 X-Received: by 10.13.251.129 with SMTP id l123mr7872647ywf.306.1462446821190; Thu, 05 May 2016 04:13:41 -0700 (PDT) Received: by 10.37.208.15 with HTTP; Thu, 5 May 2016 04:13:41 -0700 (PDT) Date: Thu, 5 May 2016 16:43:41 +0530 Message-ID: Subject: [pgAdmin4]: Initial patch for Import table From: Neel Patel To: pgadmin-hackers Content-Type: multipart/mixed; boundary=94eb2c07e3bc481e340532166ff5 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 --94eb2c07e3bc481e340532166ff5 Content-Type: multipart/alternative; boundary=94eb2c07e3bc481e300532166ff3 --94eb2c07e3bc481e300532166ff3 Content-Type: text/plain; charset=UTF-8 Hi, Please find attached patch file which contains the table Import functionality. Attached patch file is depend on the following patch which is not committed yet. - File Manager patch - Table node patch Do review it and let us know for comments. Thanks, Neel Patel --94eb2c07e3bc481e300532166ff3 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Please find attached patch file whi= ch contains the table Import functionality.
Attached patch file i= s depend on the following patch which is not committed yet.
    <= li>File Manager patch
  • Table node patch
Do review it a= nd let us know for comments.

Thanks,
Neel Patel
--94eb2c07e3bc481e300532166ff3-- --94eb2c07e3bc481e340532166ff5 Content-Type: application/octet-stream; name="import_v1.patch" Content-Disposition: attachment; filename="import_v1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_inu721bf0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9jc3Mvb3ZlcnJpZGVz LmNzcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9jc3Mvb3ZlcnJpZGVzLmNzcwpp bmRleCAxOTI3ZmYxLi40YTk4MDY5IDEwMDc1NQotLS0gYS93ZWIvcGdhZG1p bi9zdGF0aWMvY3NzL292ZXJyaWRlcy5jc3MKKysrIGIvd2ViL3BnYWRtaW4v c3RhdGljL2Nzcy9vdmVycmlkZXMuY3NzCkBAIC0xMTAxLDMgKzExMDEsMTEg QEAgYnV0dG9uLnBnLWFsZXJ0aWZ5LWJ1dHRvbiB7CiBkaXYuYmFja2Zvcm1f Y29udHJvbF9ub3RlcyBsYWJlbC5jb250cm9sLWxhYmVsIHsKICAgbWluLXdp ZHRoOiAwcHg7CiB9CisKKy5hbGVydGlmeV90b29sc19kaWFsb2dfcHJvcGVy dGllcyB7CisgICAgYm90dG9tOiAwICFpbXBvcnRhbnQ7CisgICAgbGVmdDog MCAhaW1wb3J0YW50OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0 YW50OworICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7CisgICAgdG9wOiAzNXB4 ICFpbXBvcnRhbnQ7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9pbXBvcnQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9pbXBv cnQvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYTUzZThlYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L3Rvb2xzL2ltcG9ydC9fX2luaXRfXy5weQpAQCAtMCwwICsxLDIzMCBAQAor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0 IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMg c29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIi QSBibHVlcHJpbnQgbW9kdWxlIGltcGxlbWVudGluZyB0aGUgaW1wb3J0IGZ1 bmN0aW9uYWxpdHkiIiIKKworTU9EVUxFX05BTUUgPSAnaW1wb3J0JworCitp bXBvcnQganNvbgorZnJvbSByYW5kb20gaW1wb3J0IHJhbmRpbnQKK2Zyb20g Zmxhc2sgaW1wb3J0IHVybF9mb3IsIFJlc3BvbnNlLCByZW5kZXJfdGVtcGxh dGUsIHJlcXVlc3QsIG1ha2VfcmVzcG9uc2UsIGpzb25pZnksIGN1cnJlbnRf YXBwCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IFBnQWRtaW5Nb2R1bGUK K2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBiYWRfcmVxdWVzdAor ZnJvbSBmbGFzay5leHQuYmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20gZmxh c2suZXh0LnNlY3VyaXR5IGltcG9ydCBsb2dpbl9yZXF1aXJlZAorZnJvbSBw Z2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgorZnJvbSBj b25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCitmcm9tIHBnYWRtaW4u dXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBcCisgICAg bWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQgZGIsIFNlcnZl ciwgSm9icworZnJvbSBwZ2FkbWluLnV0aWxzLnByZWZlcmVuY2VzIGltcG9y dCBQcmVmZXJlbmNlcworCitjbGFzcyBJbXBvcnRNb2R1bGUoUGdBZG1pbk1v ZHVsZSk6CisgICAgIiIiCisgICAgY2xhc3MgSW1wb3J0TW9kdWxlKFBnQWRt aW5Nb2R1bGUpCisKKyAgICAgICAgQSBtb2R1bGUgY2xhc3MgZm9yIGltcG9y dCB3aGljaCBpcyBkZXJpdmVkIGZyb20gUGdBZG1pbk1vZHVsZS4KKworICAg IE1ldGhvZHM6CisgICAgLS0tLS0tLQorICAgICogZ2V0X293bl9qYXZhc2Ny aXB0cyhzZWxmKQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBsb2FkIHRo ZSByZXF1aXJlZCBqYXZhc2NyaXB0IGZpbGVzIGZvciBkZWJ1Z2dlciBtb2R1 bGUKKworICAgICogZ2V0X3BnX3V0aWxpdHlfZGlyX3ByZWZlcmVuY2Uoc2Vs ZikKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gZ2V0IHRoZSBQRyB1dGls aXRpZXMgcGF0aCBzZXQgaW4gcHJlZmVyZW5jZXMuCisKKyAgICAqIGdldF9l ZGJfdXRpbGl0eV9kaXJfcHJlZmVyZW5jZShzZWxmKQorICAgICAgLSBNZXRo b2QgaXMgdXNlZCB0byBnZXQgdGhlIEVEQiB1dGlsaXRpZXMgcGF0aCBzZXQg aW4gcHJlZmVyZW5jZXMuCisKKyAgICAqIHJlZ2lzdGVyX3ByZWZlcmVuY2Vz KHNlbGYpCisgICAgICAtIFJlZ2lzdGVyIHRoZSBzdG9yYWdlIGRpciwgUEcg YW5kIEVEQiB1dGlsaXRpZXMgcHJlZmVyZW5jZXMuCisKKyAgICAiIiIKKwor ICAgIExBQkVMID0gZ2V0dGV4dCgnVXRpbGl0aWVzJykKKworICAgIGRlZiBn ZXRfb3duX2phdmFzY3JpcHRzKHNlbGYpOgorICAgICAgICBzY3JpcHRzID0g bGlzdCgpCisgICAgICAgIGZvciBuYW1lLCBzY3JpcHQgaW4gWworICAgICAg ICAgICAgICAgIFsncGdhZG1pbi50b29scy5pbXBvcnQnLCAnanMvaW1wb3J0 J10KKyAgICAgICAgICAgICAgICBdOgorICAgICAgICAgICAgc2NyaXB0cy5h cHBlbmQoeworICAgICAgICAgICAgICAgICduYW1lJzogbmFtZSwKKyAgICAg ICAgICAgICAgICAncGF0aCc6IHVybF9mb3IoJ2ltcG9ydC5pbmRleCcpICsg c2NyaXB0LAorICAgICAgICAgICAgICAgICd3aGVuJzogTm9uZQorICAgICAg ICAgICAgICAgIH0pCisKKyAgICAgICAgcmV0dXJuIHNjcmlwdHMKKworICAg IGRlZiBnZXRfcGdfdXRpbGl0eV9kaXJfcHJlZmVyZW5jZShzZWxmKToKKyAg ICAgICAgcmV0dXJuIHNlbGYucGdfdXRpbGl0eV9kaXIKKworICAgIGRlZiBn ZXRfZWRiX3V0aWxpdHlfZGlyX3ByZWZlcmVuY2Uoc2VsZik6CisgICAgICAg IHJldHVybiBzZWxmLmVkYl91dGlsaXR5X2RpcgorCisgICAgZGVmIHJlZ2lz dGVyX3ByZWZlcmVuY2VzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAg R2V0IHN0b3JhZ2UgZGlyZWN0b3J5IHByZWZlcmVuY2UKKyAgICAgICAgIiIi CisgICAgICAgIHNlbGYuc3RvcmFnZV9kaXJlY3RvcnkgPSBQcmVmZXJlbmNl cy5tb2R1bGUoJ2ZpbGVfbWFuYWdlcicpCisgICAgICAgIHNlbGYuc3RvcmFn ZV9kaXIgPSBzZWxmLnN0b3JhZ2VfZGlyZWN0b3J5LnByZWZlcmVuY2UoCisg ICAgICAgICAgICAgICAgJ3N0b3JhZ2VfZGlyJworICAgICAgICAgICAgICAg ICkKKworICAgICAgICAjIFJlZ2lzdGVyICdQRyBzcGVjaWZpYyB1dGlsaXR5 IGJpbmFyeSBkaXJlY3RvcnknIHByZWZlcmVuY2UKKyAgICAgICAgc2VsZi5w Z191dGlsaXR5X2RpciA9IHNlbGYucHJlZmVyZW5jZS5yZWdpc3RlcigKKyAg ICAgICAgICAgICdvcHRpb25zJywgJ3BnX3V0aWxpdGllc19iaW5fZGlyJywK KyAgICAgICAgICAgIGdldHRleHQoIlBHIGJpbiBwYXRoIiksICd0ZXh0Jywg Jy8nLAorICAgICAgICAgICAgY2F0ZWdvcnlfbGFiZWw9Z2V0dGV4dCgnQklO IHBhdGgnKQorICAgICAgICApCisKKyAgICAgICAgIyBSZWdpc3RlciAnRURC IHNwZWNpZmljIHV0aWxpdHkgYmluYXJ5IGRpcmVjdG9yeScgcHJlZmVyZW5j ZQorICAgICAgICBzZWxmLmVkYl91dGlsaXR5X2RpciA9IHNlbGYucHJlZmVy ZW5jZS5yZWdpc3RlcigKKyAgICAgICAgICAgICdvcHRpb25zJywgJ2VkYl91 dGlsaXRpZXNfYmluX2RpcicsCisgICAgICAgICAgICBnZXR0ZXh0KCJFREIg YmluIHBhdGgiKSwgJ3RleHQnLCAnLycsCisgICAgICAgICAgICBjYXRlZ29y eV9sYWJlbD1nZXR0ZXh0KCdCSU4gcGF0aCcpCisgICAgICAgICkKKworCiti bHVlcHJpbnQgPSBJbXBvcnRNb2R1bGUoTU9EVUxFX05BTUUsIF9fbmFtZV9f KQorCisKK0BibHVlcHJpbnQucm91dGUoIi8iKQorQGxvZ2luX3JlcXVpcmVk CitkZWYgaW5kZXgoKToKKyAgICByZXR1cm4gYmFkX3JlcXVlc3QoZXJyb3Jt c2c9Z2V0dGV4dCgiVGhpcyBVUkwgY2FuIG5vdCBiZSBjYWxsZWQgZGlyZWN0 bHkhIikpCisKKworQGJsdWVwcmludC5yb3V0ZSgiL2pzL2ltcG9ydC5qcyIp CitAbG9naW5fcmVxdWlyZWQKK2RlZiBzY3JpcHQoKToKKyAgICAiIiJyZW5k ZXIgdGhlIGltcG9ydCBqYXZhc2NyaXB0IGZpbGUiIiIKKyAgICByZXR1cm4g UmVzcG9uc2UocmVzcG9uc2U9cmVuZGVyX3RlbXBsYXRlKCJpbXBvcnQvanMv aW1wb3J0LmpzIiwgXz1nZXR0ZXh0KSwKKyAgICAgICAgICAgICAgICAgICAg c3RhdHVzPTIwMCwKKyAgICAgICAgICAgICAgICAgICAgbWltZXR5cGU9ImFw cGxpY2F0aW9uL2phdmFzY3JpcHQiKQorCisKK0BibHVlcHJpbnQucm91dGUo Jy9jcmVhdGVfam9iLzxpbnQ6c2lkPicsIG1ldGhvZHM9WydQT1NUJ10pCitA bG9naW5fcmVxdWlyZWQKK2RlZiBjcmVhdGVfaW1wb3J0X2pvYihzaWQpOgor ICAgICIiIgorICAgIEFyZ3M6CisgICAgICAgIHNpZDogU2VydmVyIElECisK KyAgICAgICAgQ3JlYXRlcyBhIG5ldyBqb2IgZm9yIGltcG9ydAorCisgICAg UmV0dXJuczoKKyAgICAgICAgTm9uZQorICAgICIiIgorICAgIGlmIHJlcXVl c3QuZm9ybToKKyAgICAgICAgIyBDb252ZXJ0IEltbXV0YWJsZURpY3QgdG8g ZGljdAorICAgICAgICBkYXRhID0gZGljdChyZXF1ZXN0LmZvcm0pCisgICAg ICAgIGRhdGEgPSBqc29uLmxvYWRzKGRhdGFbJ2RhdGEnXVswXSkKKyAgICBl bHNlOgorICAgICAgICBkYXRhID0ganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEu ZGVjb2RlKCkpCisKKyAgICAjIEZldGNoIHRoZSBzZXJ2ZXIgZGV0YWlscyBs aWtlIGhvc3RuYW1lLCBwb3J0LCByb2xlcyBldGMKKyAgICBzZXJ2ZXIgPSBT ZXJ2ZXIucXVlcnkuZmlsdGVyX2J5KAorICAgICAgICBpZD1zaWQpLmZpcnN0 KCkKKworICAgIGlmIHNlcnZlciBpcyBOb25lOgorICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgc3VjY2Vzcz0wLAor ICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgiQ291bGRuJ3QgZmluZCB0 aGUgZ2l2ZW4gc2VydmVyIikKKyAgICAgICAgKQorCisgICAgIyBUbyBmZXRj aCBNZXRhRGF0YSBmb3IgdGhlIHNlcnZlcgorICAgIG1hbmFnZXIgPSBnZXRf ZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIo c2VydmVyLmlkKQorICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oKQor ICAgIGNvbm5lY3RlZCA9IGNvbm4uY29ubmVjdGVkKCkKKworICAgIGlmIG5v dCBjb25uZWN0ZWQ6CisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICBzdWNjZXNzPTAsCisgICAgICAgICAgICBlcnJv cm1zZz1nZXR0ZXh0KCJQbGVhc2UgY29ubmVjdCB0byB0aGUgc2VydmVyIGZp cnN0Li4uIikKKyAgICAgICAgKQorCisgICAgIyBTZXQgcHNxbCBiaW5hcnkg cGF0aCBmcm9tIHByZWZlcmVuY2UKKyAgICBpZiBtYW5hZ2VyLnNlcnZlcl90 eXBlID09ICdwcGFzJzoKKyAgICAgICAgIyBFREIgc3BlY2lmaWMgYmFja3Vw IHRvb2wKKyAgICAgICAgcGdzcWxfdXRpbGl0eV9kaXIgPSBibHVlcHJpbnQu Z2V0X2VkYl91dGlsaXR5X2Rpcl9wcmVmZXJlbmNlKCkuZ2V0KCkKKyAgICBl bHNlOgorICAgICAgICBwZ3NxbF91dGlsaXR5X2RpciA9IGJsdWVwcmludC5n ZXRfcGdfdXRpbGl0eV9kaXJfcHJlZmVyZW5jZSgpLmdldCgpCisKKyAgICBw Z3NxbF91dGlsaXR5X2RpciArPSAncHNxbCcKKworICAgICMgR2V0IHRoZSBz dG9yYWdlIHBhdGggZnJvbSBwcmVmZXJlbmNlCisgICAgc3RyX2RpciA9IGJs dWVwcmludC5zdG9yYWdlX2Rpci5nZXQoKQorICAgIGlmICdmaWxlbmFtZScg aW4gZGF0YToKKyAgICAgICAgZGF0YVsnZmlsZW5hbWUnXSA9IHN0cl9kaXIg KyBkYXRhWydmaWxlbmFtZSddOworICAgIGVsc2U6CisgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPXsnc3Rh dHVzJzogRmFsc2UsICdpbmZvJzogJ1BsZWFzZSBzcGVjaWZ5IGEgdmFsaWQg ZmlsZSd9CisgICAgICAgICkKKworICAgIGlnbm9yZV9jb2x1bW5fbGlzdCA9 ICcnCisgICAgY29sdW1uX2xpc3RfaW1wb3J0ID0gJycKKworICAgIGlmIGRh dGFbJ2lnbm9yZV9jb2x1bW4nXToKKyAgICAgICAgbmV3X2lnbm9yZV9jb2xf bGlzdCA9IGpzb24ubG9hZHMoZGF0YVsnaWdub3JlX2NvbHVtbiddKQorCisg ICAgICAgICMgZm9ybWF0IHRoZSBpZ25vcmUgY29sdW1uIGxpc3QgcmVxdWly ZWQgYXMgcGVyIGNvcHkgY29tbWFuZCByZXF1aXJlbWVudAorICAgICAgICBp ZiBuZXdfaWdub3JlX2NvbF9saXN0OgorICAgICAgICAgICAgaWdub3JlX2Nv bHVtbl9saXN0ID0gJygnCisgICAgICAgICAgICBpZ25vcmVfY29sX2xlbmd0 aCA9IGxlbihuZXdfaWdub3JlX2NvbF9saXN0KQorICAgICAgICAgICAgZm9y IGkgaW4gcmFuZ2UoaWdub3JlX2NvbF9sZW5ndGgpOgorICAgICAgICAgICAg ICAgIGlnbm9yZV9jb2x1bW5fbGlzdCArPSBuZXdfaWdub3JlX2NvbF9saXN0 W2ldCisgICAgICAgICAgICAgICAgaWYgaSAhPSAoaWdub3JlX2NvbF9sZW5n dGggLSAxKToKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlX2NvbHVtbl9s aXN0ICs9ICcsJworICAgICAgICAgICAgaWdub3JlX2NvbHVtbl9saXN0ICs9 ICcpJworCisgICAgIyBmb3JtYXQgdGhlIGNvbHVtbiBpbXBvcnQgbGlzdCBy ZXF1aXJlZCBhcyBwZXIgY29weSBjb21tYW5kIHJlcXVpcmVtZW50CisgICAg aWYgZGF0YVsnY29sdW1uX2ltcG9ydCddOgorICAgICAgICBjb2x1bW5fbGlz dF9pbXBvcnQgPSAnKCcKKyAgICAgICAgaW1wb3J0X2NvbF9sZW5ndGggPSBs ZW4oZGF0YVsnY29sdW1uX2ltcG9ydCddKQorICAgICAgICBmb3IgaW5kZXhD bnQgaW4gcmFuZ2UoaW1wb3J0X2NvbF9sZW5ndGgpOgorICAgICAgICAgICAg Y29sdW1uX2xpc3RfaW1wb3J0ICs9IGRhdGFbJ2NvbHVtbl9pbXBvcnQnXVtp bmRleENudF0KKyAgICAgICAgICAgIGlmIGluZGV4Q250ICE9IChpbXBvcnRf Y29sX2xlbmd0aCAtIDEpOgorICAgICAgICAgICAgICAgIGNvbHVtbl9saXN0 X2ltcG9ydCArPSAnLCcKKyAgICAgICAgY29sdW1uX2xpc3RfaW1wb3J0ICs9 ICcpJworCisgICAgIyBGZXRjaCBhcmd1bWVudHMgZnJvbSB0ZW1wbGF0ZQor ICAgIGFyZ3VtZW50cyA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgJ2lt cG9ydC9hcmd1bWVudHMvaW1wb3J0LmFyZ3MnLAorICAgICAgICBjb25uID0g Y29ubiwKKyAgICAgICAgc2VydmVyPXNlcnZlciwKKyAgICAgICAgZGF0YT1k YXRhLAorICAgICAgICBjb2x1bW5fbGlzdF9pbXBvcnQgPSBjb2x1bW5fbGlz dF9pbXBvcnQsCisgICAgICAgIGlnbm9yZV9jb2x1bW5fbGlzdCA9IGlnbm9y ZV9jb2x1bW5fbGlzdAorICAgICkKKworICAgIHRyeToKKyAgICAgICAgIyBH ZW5lcmF0ZSByYW5kb20gam9iIGlkCisgICAgICAgIGppZCA9IHJhbmRpbnQo MTAwMSwgOTk5OSkKKyAgICAgICAgY3JlYXRlX2pvYiA9IEpvYnMoCisgICAg ICAgICAgICBqb2JfaWQ9amlkLAorICAgICAgICAgICAgY29tbWFuZD1wZ3Nx bF91dGlsaXR5X2RpciwKKyAgICAgICAgICAgIGFyZ3VtZW50cz1hcmd1bWVu dHMKKyAgICAgICAgKQorICAgICAgICAjIENyZWF0ZSB0aGUgam9iIGV4ZWN1 dGlvbiBzdHJpbmcgYW5kIHNhdmUgdG8gZGF0YWJhc2UKKyAgICAgICAgZGIu c2Vzc2lvbi5hZGQoY3JlYXRlX2pvYikKKyAgICAgICAgZGIuc2Vzc2lvbi5j b21taXQoKQorCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAg ICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKGUpCisgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBzdGF0dXM9 NDEwLAorICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgZXJy b3Jtc2c9c3RyKGUpCisgICAgICAgICkKKworICAgICMgUmV0dXJuIHJlc3Bv bnNlCisgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAg ZGF0YT17J2pvYl9pZCc6IGppZCwgJ3N0YXR1cyc6IFRydWUsICdpbmZvJzog J0ltcG9ydCBqb2IgY3JlYXRlZCd9CisgICAgKQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdG9vbHMvaW1wb3J0L3RlbXBsYXRlcy9pbXBvcnQvYXJndW1l bnRzL2ltcG9ydC5hcmdzIGIvd2ViL3BnYWRtaW4vdG9vbHMvaW1wb3J0L3Rl bXBsYXRlcy9pbXBvcnQvYXJndW1lbnRzL2ltcG9ydC5hcmdzCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkNjg4ODcKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9pbXBvcnQvdGVtcGxhdGVz L2ltcG9ydC9hcmd1bWVudHMvaW1wb3J0LmFyZ3MKQEAgLTAsMCArMSBAQAor LWgge3sgY29ubnxxdElkZW50KHNlcnZlci5ob3N0KSB9fSAtcCB7eyBzZXJ2 ZXIucG9ydCB9fSAtVSB7eyBjb25ufHF0SWRlbnQoc2VydmVyLnVzZXJuYW1l KSB9fSB7eyBjb25ufHF0SWRlbnQoZGF0YS5kYXRhYmFzZSkgfX0gLWMgIkNP UFkge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hKSB9fS57eyBjb25ufHF0 SWRlbnQoZGF0YS50YWJsZSkgfX0geyUgaWYgY29sdW1uX2xpc3RfaW1wb3J0 ICV9IHt7IGNvbHVtbl9saXN0X2ltcG9ydCB9fSB7JSBlbmRpZiAlfSBGUk9N IHt7IGRhdGEuZmlsZW5hbWV8cXRMaXRlcmFsIH19IHslIGlmIGRhdGEub2lk ICV9IE9JRFMgeyUgZW5kaWYgJX17JSBpZiBkYXRhLmRlbGltaXRlciBhbmQg ZGF0YS5kZWxpbWl0ZXIgPT0gJ1t0YWJdJyAlfSBXSVRIIERFTElNSVRFUiBF J1xcdCcgeyUgZWxpZiBkYXRhLmRlbGltaXRlciAlfSBXSVRIIERFTElNSVRF UiB7eyBkYXRhLmRlbGltaXRlcnxxdExpdGVyYWwgfX17JSBlbmRpZiAlfXsl IGlmIGRhdGEuZm9ybWF0ID09ICdjc3YnICV9IENTViBIRUFERVIgeyUgZW5k aWYgJX17JSBpZiBkYXRhLmVuY29kaW5nICV9IEVOQ09ESU5HIHt7IGRhdGEu ZW5jb2Rpbmd8cXRMaXRlcmFsIH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnF1 b3RlICV9IFFVT1RFIHt7IGRhdGEucXVvdGV8cXRMaXRlcmFsIH19eyUgZW5k aWYgJX17JSBpZiBkYXRhLm51bGxfc3RyaW5nICV9IE5VTEwge3sgZGF0YS5u dWxsX3N0cmluZ3xxdExpdGVyYWwgfX17JSBlbmRpZiAlfXslIGlmIGRhdGEu ZXNjYXBlICV9IEVTQ0FQRSB7eyBkYXRhLmVzY2FwZXxxdExpdGVyYWwgfX17 JSBlbmRpZiAlfXslIGlmIGRhdGEuZm9ybWF0ID09ICdjc3YnIGFuZCBpZ25v cmVfY29sdW1uX2xpc3QgJX0gRk9SQ0VfTk9UX05VTEwge3sgaWdub3JlX2Nv bHVtbl9saXN0IH19IHslIGVuZGlmICV9OyIKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9pbXBv cnQvdGVtcGxhdGVzL2ltcG9ydC9qcy9pbXBvcnQuanMgYi93ZWIvcGdhZG1p bi90b29scy9pbXBvcnQvdGVtcGxhdGVzL2ltcG9ydC9qcy9pbXBvcnQuanMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdkNTE2Zgot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2ltcG9ydC90 ZW1wbGF0ZXMvaW1wb3J0L2pzL2ltcG9ydC5qcwpAQCAtMCwwICsxLDM1NSBA QAorZGVmaW5lKAorICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVy c2NvcmUuc3RyaW5nJywgJ2FsZXJ0aWZ5JywgJ3BnYWRtaW4nLAorICAncGdh ZG1pbi5icm93c2VyJywgJ2JhY2tib25lJywgJ2JhY2tncmlkJywgJ2JhY2tm b3JtJywKKyAgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3Jp ZCcsICdwZ2FkbWluLmJyb3dzZXIubm9kZS51aSddLAorICBmdW5jdGlvbigk LCBfLCBTLCBBbGVydGlmeSwgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrYm9u ZSwgQmFja2dyaWQsIEJhY2tmb3JtKSB7CisKKyAgcGdBZG1pbiA9IHBnQWRt aW4gfHwgd2luZG93LnBnQWRtaW4gfHwge307CisKKyAgdmFyIHBnVG9vbHMg PSBwZ0FkbWluLlRvb2xzID0gcGdBZG1pbi5Ub29scyB8fCB7fTsKKworICAv LyBSZXR1cm4gYmFjaywgdGhpcyBoYXMgYmVlbiBjYWxsZWQgbW9yZSB0aGFu IG9uY2UKKyAgaWYgKHBnQWRtaW4uVG9vbHMuaW1wb3J0X3V0aWxpdHkpCisg ICAgcmV0dXJuIHBnQWRtaW4uVG9vbHMuaW1wb3J0X3V0aWxpdHk7CisKKyAg Ly8gTWFpbiBtb2RlbCBmb3IgSW1wb3J0IGZ1bmN0aW9uYWxpdHkKKyAgdmFy IEltcG9ydE1vZGVsID0gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHsKKyAgICBk ZWZhdWx0czogeworICAgICAgZmlsZW5hbWU6IHVuZGVmaW5lZCwKKyAgICAg IGZvcm1hdDogJ3RleHQnLAorICAgICAgZW5jb2Rpbmc6IHVuZGVmaW5lZCwK KyAgICAgIG9pZDogdW5kZWZpbmVkLAorICAgICAgaGVhZGVyOiB1bmRlZmlu ZWQsCisgICAgICBkZWxpbWl0ZXI6IHVuZGVmaW5lZCwKKyAgICAgIHF1b3Rl OiB1bmRlZmluZWQsCisgICAgICBlc2NhcGU6IHVuZGVmaW5lZCwKKyAgICAg IG51bGxfc3RyaW5nOiB1bmRlZmluZWQsCisgICAgICBjb2x1bW5faW1wb3J0 OiBbXSwKKyAgICAgIGlnbm9yZV9jb2x1bW46IFtdLAorICAgICAgZGF0YWJh c2U6IHVuZGVmaW5lZCwKKyAgICAgIHNjaGVtYTogdW5kZWZpbmVkLAorICAg ICAgdGFibGU6IHVuZGVmaW5lZAorICAgIH0sCisgICAgc2NoZW1hOiBbCisg ICAgICB7CisgICAgICAgIGlkOiAnZmlsZW5hbWUnLCBsYWJlbDogJ3t7IF8o J0ZpbGVuYW1lJyl9fScsCisgICAgICAgIHR5cGU6ICd0ZXh0JywgY29udHJv bDogQmFja2Zvcm0uRmlsZUNvbnRyb2wsIGdyb3VwOiAne3sgXygnRmlsZXMn KX19JywKKyAgICAgICAgZGlhbG9nX3R5cGU6ICdzZWxlY3RfZmlsZScsIHN1 cHBfdHlwZXM6IFsnKicsICd0eHQnXQorICAgICAgfSwKKyAgICAgIHsKKyAg ICAgICAgaWQ6ICdmb3JtYXQnLCBsYWJlbDogJ3t7IF8oIkZvcm1hdCIpIH19 JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgIGNvbnRyb2w6ICdzZWxlY3Qy JywgZ3JvdXA6ICd7eyBfKCdGaWxlcycpfX0nLAorICAgICAgICBvcHRpb25z OlsKKyAgICAgICAgICAgIHsnbGFiZWwnOiAndGV4dCcsICd2YWx1ZSc6ICd0 ZXh0J30sCisgICAgICAgICAgICB7J2xhYmVsJzogJ2NzdicsICd2YWx1ZSc6 ICdjc3YnfSwKKyAgICAgICAgICAgIHsnbGFiZWwnOiAnYmluYXJ5JywgJ3Zh bHVlJzogJ2JpbmFyeSd9LAorICAgICAgICAgIF0sCisgICAgICAgIGRpc2Fi bGVkOiAnaXNEaXNhYmxlZCcsIHNlbGVjdDI6IHthbGxvd0NsZWFyOiBmYWxz ZSwgd2lkdGg6ICIxMDAlIiB9LAorICAgICAgfSwKKyAgICAgIHsKKyAgICAg ICAgaWQ6ICdlbmNvZGluZycsIGxhYmVsOiAne3sgXygiRW5jb2RpbmciKSB9 fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICBjb250cm9sOiAnbm9kZS1h amF4LW9wdGlvbnMnLCBub2RlOiAnZGF0YWJhc2UnLCB1cmw6ICdnZXRfZW5j b2RpbmdzJywgZmlyc3RfZW1wdHk6IHRydWUsCisgICAgICAgIGdyb3VwOiAn e3sgXygnRmlsZXMnKX19JworICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAg aWQ6ICdjb2x1bW5faW1wb3J0JywgbGFiZWw6ICd7eyBfKCJDb2x1bW5zIHRv IGltcG9ydCIpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgIHR5cGU6 ICdhcnJheScsIGNvbnRyb2w6IEJhY2tmb3JtLk11bHRpU2VsZWN0QWpheENv bnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIGFs bCB0aGUgaW1wb3J0IGNvbHVtbnMgc2hvdWxkIGJlIHNlbGVjdGVkCisgICAg ICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg ICAgICBCYWNrZm9ybS5NdWx0aVNlbGVjdEFqYXhDb250cm9sLnByb3RvdHlw ZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAg ICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgICAgICAg ICBvcHRpb25zID0gc2VsZi5maWVsZC5nZXQoJ29wdGlvbnMnKSwKKyAgICAg ICAgICAgICAgICAgICAgb3BfdmFscyA9IFtdOworICAgICAgICAgICAgICAg IGlmIChfLmlzRnVuY3Rpb24ob3B0aW9ucykpIHsKKyAgICAgICAgICAgICAg ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRp b25zLmFwcGx5KHNlbGYpCisgICAgICAgICAgICAgICAgICB9IGNhdGNoKGUp IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90aGluZworICAgICAg ICAgICAgICAgICAgICBvcHRpb25zID0gW107CisgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF8uZWFj aChvcHRpb25zLCBmdW5jdGlvbihvcCl7CisgICAgICAgICAgICAgICAgICAg IG9wX3ZhbHMucHVzaChvcFsndmFsdWUnXSk7CisgICAgICAgICAgICAgICAg fSk7CisKKyAgICAgICAgICAgICAgICBzZWxmLm1vZGVsLnNldChzZWxmLmZp ZWxkLmdldCgnbmFtZScpLG9wX3ZhbHMpOworICAgICAgICAgICAgfQorICAg ICAgICB9KSwKKyAgICAgICAgbm9kZTogJ2NvbHVtbicsIHVybDogJ25vZGVz JywgZ3JvdXA6ICd7eyBfKCdDb2x1bW5zJyl9fScsCisgICAgICAgIHRyYW5z Zm9ybTogZnVuY3Rpb24ocm93cykgeworICAgICAgICB2YXIgc2VsZiA9IHRo aXMsCisgICAgICAgICAgICBub2RlID0gc2VsZi5maWVsZC5nZXQoJ3NjaGVt YV9ub2RlJyksCisgICAgICAgICAgICByZXMgPSBbXTsKKworICAgICAgICBf LmVhY2gocm93cywgZnVuY3Rpb24ocikgeworICAgICAgICAgICAgdmFyIGwg PSAoXy5pc0Z1bmN0aW9uKG5vZGVbJ25vZGVfbGFiZWwnXSkgPworICAgICAg ICAgICAgICAgICAgKG5vZGVbJ25vZGVfbGFiZWwnXSkuYXBwbHkobm9kZSwg W3IsIHNlbGYubW9kZWwsIHNlbGZdKSA6CisgICAgICAgICAgICAgICAgICBy LmxhYmVsKSwKKyAgICAgICAgICAgICAgICBpbWFnZSA9IChfLmlzRnVuY3Rp b24obm9kZVsnbm9kZV9pbWFnZSddKSA/CisgICAgICAgICAgICAgICAgICAo bm9kZVsnbm9kZV9pbWFnZSddKS5hcHBseSgKKyAgICAgICAgICAgICAgICAg ICAgbm9kZSwgW3IsIHNlbGYubW9kZWwsIHNlbGZdCisgICAgICAgICAgICAg ICAgICAgICkgOgorICAgICAgICAgICAgICAgICAgKG5vZGVbJ25vZGVfaW1h Z2UnXSB8fCAoJ2ljb24tJyArIG5vZGUudHlwZSkpKTsKKyAgICAgICAgICAg IHJlcy5wdXNoKHsKKyAgICAgICAgICAgICAgJ3ZhbHVlJzogci5sYWJlbCwK KyAgICAgICAgICAgICAgJ2ltYWdlJzogaW1hZ2UsCisgICAgICAgICAgICAg ICdsYWJlbCc6IGwKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor ICAgICAgICByZXR1cm4gcmVzOworICAgICAgfSwKKyAgICAgICAgc2VsZWN0 MjogeyBtdWx0aXBsZTogdHJ1ZSwgYWxsb3dDbGVhcjogdHJ1ZSwgcGxhY2Vo b2xkZXI6ICd7eyBfKCdTZWxlY3QgY29sdW1ucyB0byBpbXBvcnQuLi4nKSB9 fSd9LAorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgaWQ6ICdudWxsX3N0 cmluZycsIGxhYmVsOiAne3sgXygiTlVMTCBTdHJpbmdzIikgfX0nLCBjZWxs OiAnc3RyaW5nJywKKyAgICAgICAgdHlwZTogJ3RleHQnLCBncm91cDogJ3t7 IF8oJ0NvbHVtbnMnKX19JywgZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJywgZGVw czogWydmb3JtYXQnXQorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgaWQ6 ICdpZ25vcmVfY29sdW1uJywgbGFiZWw6ICd7eyBfKCJJZ25vcmUgQ29sdW1u cyIpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgIGNvbnRyb2w6ICdu b2RlLWxpc3QtYnktbmFtZScsIG5vZGU6ICdjb2x1bW4nLAorICAgICAgICBn cm91cDogJ3t7IF8oJ0NvbHVtbnMnKX19JywgZGVwczogWydmb3JtYXQnXSwg ZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJywKKyAgICAgICAgc2VsZWN0MjogeyBt dWx0aXBsZTogdHJ1ZSwgYWxsb3dDbGVhcjogdHJ1ZSwgcGxhY2Vob2xkZXI6 ICd7eyBfKCdTZWxlY3QgY29sdW1ucyB0byBpZ25vcmUuLi4nKSB9fSd9LAor ICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgdHlwZTogJ25lc3RlZCcsIGNv bnRyb2w6ICdmaWVsZHNldCcsIGxhYmVsOiAne3sgXygnTWlzY2VsbGFuZW91 cycpIH19JywKKyAgICAgICAgZ3JvdXA6ICd7eyBfKCdPcHRpb25zJykgfX0n LAorICAgICAgICBzY2hlbWE6W3sKKyAgICAgICAgICBpZDogJ29pZCcsIGxh YmVsOid7eyBfKCdPSUQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAg ICAgIHR5cGU6ICdzd2l0Y2gnLCBncm91cDogJ3t7IF8oJ01pc2NlbGxhbmVv dXMnKSB9fScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdoZWFkZXIn LCBsYWJlbDone3sgXygnSGVhZGVyJykgfX0nLCBjZWxsOiAnc3RyaW5nJywK KyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgZ3JvdXA6ICd7eyBfKCdNaXNj ZWxsYW5lb3VzJykgfX0nLCBkZXBzOiBbJ2Zvcm1hdCddLCBkaXNhYmxlZDog J2lzRGlzYWJsZWQnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnZGVs aW1pdGVyJywgbGFiZWw6J3t7IF8oJ0RlbGltaXRlcicpIH19JywgY2VsbDog J3N0cmluZycsIGZpcnN0X2VtcHR5OiB0cnVlLCBkZXBzOiBbJ2Zvcm1hdCdd LAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgY29udHJvbDogJ25vZGUtYWph eC1vcHRpb25zJywgZ3JvdXA6ICd7eyBfKCdNaXNjZWxsYW5lb3VzJykgfX0n LCBkaXNhYmxlZDogJ2lzRGlzYWJsZWQnLAorICAgICAgICAgIG9wdGlvbnM6 WworCisgICAgICAgICAgICB7J2xhYmVsJzogJzsnLCAndmFsdWUnOiAnOyd9 LAorICAgICAgICAgICAgeydsYWJlbCc6ICcsJywgJ3ZhbHVlJzogJywnfSwK KyAgICAgICAgICAgIHsnbGFiZWwnOiAnfCcsICd2YWx1ZSc6ICd8J30sCisg ICAgICAgICAgICB7J2xhYmVsJzogJ1t0YWJdJywgJ3ZhbHVlJzogJ1t0YWJd J30sCisKKyAgICAgICAgICBdLAorICAgICAgICAgIHNlbGVjdDI6IHsKKyAg ICAgICAgICAgIGFsbG93Q2xlYXI6IGZhbHNlLAorICAgICAgICAgICAgd2lk dGg6ICIxMDAlIiwKKyAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAne3sgXygn U2VsZWN0IGZyb20gbGlzdC4uLicpIH19JworICAgICAgICAgIH0sCisgICAg ICAgIH1dCisgICAgICB9LAorICAgICAgeworICAgICAgICB0eXBlOiAnbmVz dGVkJywgY29udHJvbDogJ2ZpZWxkc2V0JywgbGFiZWw6ICd7eyBfKCdRdW90 ZScpIH19JywKKyAgICAgICAgZ3JvdXA6ICd7eyBfKCdPcHRpb25zJykgfX0n LAorICAgICAgICBzY2hlbWE6W3sKKyAgICAgICAgICBpZDogJ3F1b3RlJywg bGFiZWw6J3t7IF8oJ1F1b3RlJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAg ICAgICAgICB0eXBlOiAndGV4dCcsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0 aW9ucycsIGdyb3VwOiAne3sgXygnUXVvdGUnKSB9fScsCisgICAgICAgICAg ZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJywgZGVwczogWydmb3JtYXQnXSwgZmly c3RfZW1wdHk6IHRydWUsCisgICAgICAgICAgb3B0aW9uczpbCisgICAgICAg ICAgICB7J2xhYmVsJzogJ1wiJywgJ3ZhbHVlJzogJ1wiJ30sCisgICAgICAg ICAgICB7J2xhYmVsJzogJ1wnJywgJ3ZhbHVlJzogJ1wnJ30sCisgICAgICAg ICAgXSwKKyAgICAgICAgICBzZWxlY3QyOiB7CisgICAgICAgICAgICBhbGxv d0NsZWFyOiBmYWxzZSwKKyAgICAgICAgICAgIHdpZHRoOiAiMTAwJSIsCisg ICAgICAgICAgICBwbGFjZWhvbGRlcjogJ3t7IF8oJ1NlbGVjdCBmcm9tIGxp c3QuLi4nKSB9fScKKyAgICAgICAgICB9LAorICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ2VzY2FwZScsIGxhYmVsOid7eyBfKCdFc2NhcGUnKSB9fScs IGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgY29u dHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgZ3JvdXA6ICd7eyBfKCdRdW90 ZScpIH19JywKKyAgICAgICAgICBkaXNhYmxlZDogJ2lzRGlzYWJsZWQnLCBk ZXBzOiBbJ2Zvcm1hdCddLCBmaXJzdF9lbXB0eTogdHJ1ZSwKKyAgICAgICAg ICBvcHRpb25zOlsKKyAgICAgICAgICAgIHsnbGFiZWwnOiAnXCInLCAndmFs dWUnOiAnXCInfSwKKyAgICAgICAgICAgIHsnbGFiZWwnOiAnXCcnLCAndmFs dWUnOiAnXCcnfSwKKyAgICAgICAgICBdLAorICAgICAgICAgIHNlbGVjdDI6 IHsKKyAgICAgICAgICAgIGFsbG93Q2xlYXI6IGZhbHNlLAorICAgICAgICAg ICAgd2lkdGg6ICIxMDAlIiwKKyAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAn e3sgXygnU2VsZWN0IGZyb20gbGlzdC4uLicpIH19JworICAgICAgICAgIH0s CisgICAgICAgIH1dCisgICAgICB9CisgICAgXSwKKworICAgIC8vIEVuYWJs ZS9EaXNhYmxlIHRoZSBpdGVtcyBiYXNlZCBvbiB0aGUgdXNlciBmaWxlIGZv cm1hdCBzZWxlY3Rpb24KKyAgICBpc0Rpc2FibGVkOiBmdW5jdGlvbihtKSB7 CisgICAgICBuYW1lID0gdGhpcy5uYW1lOworICAgICAgc3dpdGNoKG5hbWUp IHsKKyAgICAgICAgY2FzZSAncXVvdGUnOgorICAgICAgICBjYXNlICdlc2Nh cGUnOgorICAgICAgICBjYXNlICdoZWFkZXInOgorICAgICAgICBjYXNlICdp Z25vcmVfY29sdW1uJzoKKyAgICAgICAgICBpZiAobS5nZXQoJ2Zvcm1hdCcp ICE9ICdjc3YnKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAg ICBjYXNlICdudWxsX3N0cmluZyc6CisgICAgICAgIGNhc2UgJ2RlbGltaXRl cic6CisgICAgICAgICAgaWYgKG0uZ2V0KCdmb3JtYXQnKSA9PSAnYmluYXJ5 JykgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfQor ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor ICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs dDoKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgfSwKKyAgfSk7CisKKyAgcGdUb29scy5pbXBv cnRfdXRpbGl0eSA9IHsKKyAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgeworICAg ICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBpbml0aWFsaXplIHRoZSBtb2R1 bGUgbXVsdGlwbGUgdGltZXMuCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxp emVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuaW5p dGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIC8qKgorICAgICAgICAgRW5h YmxlL2Rpc2FibGUgaW1wb3J0IG1lbnUgaW4gdG9vbHMgYmFzZWQgb24gbm9k ZSBzZWxlY3RlZAorICAgICAgICAgSW1wb3J0IG1lbnUgd2lsbCBiZSBlbmFi bGVkIG9ubHkgd2hlbiB1c2VyIHNlbGVjdCB0YWJsZSBub2RlLgorICAgICAg ICAqLworICAgICAgICBtZW51X2VuYWJsZWQgPSBmdW5jdGlvbihpdGVtRGF0 YSwgaXRlbSwgZGF0YSkgeworICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIu dHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YTsKKyAgICAgICAgIHZhciBw YXJlbnRfaXRlbSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSk6IG51 bGwsCisgICAgICAgICAgICAgcGFyZW50X2RhdGEgPSBwYXJlbnRfaXRlbSA/ IHQuaXRlbURhdGEocGFyZW50X2l0ZW0pIDogbnVsbDsKKyAgICAgICAgICAg aWYoIV8uaXNVbmRlZmluZWQoZCkgJiYgIV8uaXNOdWxsKGQpICYmICFfLmlz TnVsbChwYXJlbnRfZGF0YSkpCisgICAgICAgICAgICAgcmV0dXJuICgKKyAg ICAgICAgICAgICAgIChfLmluZGV4T2YoWyd0YWJsZSddLCBkLl90eXBlKSAh PT0gLTEgJiYKKyAgICAgICAgICAgICAgIHBhcmVudF9kYXRhLl90eXBlICE9 ICdjYXRhbG9nJykgPyB0cnVlOiBmYWxzZQorICAgICAgICAgICAgICk7Cisg ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgICAgIH07CisKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29udGV4 dCBtZW51IHRvIGRpc3BsYXkgdGhlIGltcG9ydCBvcHRpb25zIHdoZW4gdXNl ciBvcGVuIHRoZSBjb250ZXh0IG1lbnUgZm9yIHRhYmxlCisgICAgICAgIHBn QnJvd3Nlci5hZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAnaW1wb3J0 Jywgbm9kZTogJ3RhYmxlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFw cGxpZXM6IFsndG9vbHMnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ2NhbGxi YWNrX2ltcG9ydCcsCisgICAgICAgICAgY2F0ZWdvcnk6ICdpbXBvcnQnLCBw cmlvcml0eTogMTAsIGxhYmVsOiAne3sgXygnSW1wb3J0Li4uJykgfX0nLAor ICAgICAgICAgIGRhdGE6IHtvYmplY3Q6ICd0YWJsZSd9LCBpY29uOiAnZmEg ZmEtc2lnbi1pbicsIGVuYWJsZTogbWVudV9lbmFibGVkCisgICAgICAgIH0K KyAgICAgICAgXSk7CisgICAgICB9LAorCisgICAgICAvKgorICAgICAgICBP cGVuIHRoZSBkaWFsb2cgZm9yIHRoZSBpbXBvcnQgZnVuY3Rpb25hbGl0eQor ICAgICAgKi8KKyAgICAgIGNhbGxiYWNrX2ltcG9ydDogZnVuY3Rpb24oYXJn cywgaXRlbSkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAg IHZhciBpbnB1dCA9IGFyZ3MgfHwge30sCisgICAgICAgICAgdCA9IHBnQnJv d3Nlci50cmVlLAorICAgICAgICAgIGkgPSBpdGVtIHx8IHQuc2VsZWN0ZWQo KSwKKyAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVt RGF0YShpKSA6IHVuZGVmaW5lZCwKKyAgICAgICAgICBub2RlID0gZCAmJiBw Z0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV07CisKKyAgICAgICAgaWYgKCFkKQor ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgb2JqTmFtZSA9IGQu bGFiZWw7CisgICAgICAgIHZhciB0cmVlSW5mbyA9IG5vZGUuZ2V0VHJlZU5v ZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKTsKKworICAgICAgICBpZiAo IUFsZXJ0aWZ5LkltcG9ydERpYWxvZykgeworICAgICAgICAgIEFsZXJ0aWZ5 LmRpYWxvZygnSW1wb3J0RGlhbG9nJywgZnVuY3Rpb24gZmFjdG9yeSgpIHsK KworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgbWFpbjpm dW5jdGlvbih0aXRsZSkgeworICAgICAgICAgICAgICAgIHRoaXMuc2V0KCd0 aXRsZScsIHRpdGxlKTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg ICAgc2V0dXA6ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu IHsKKyAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6W3sgdGV4dDogInt7IF8o J0ltcG9ydCcpIH19Iiwga2V5OiAyNywgY2xhc3NOYW1lOiAiYnRuIGJ0bi1w cmltYXJ5IGZhIGZhLWxnIGZhLXNhdmUgcGctYWxlcnRpZnktYnV0dG9uIiB9 LAorICAgICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJ7eyBfKCdDYW5j ZWwnKSB9fSIsIGtleTogMjcsIGNsYXNzTmFtZTogImJ0biBidG4tZGFuZ2Vy IGZhIGZhLWxnIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbiIgfV0sCisg ICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IG1vZGFsOiAwfQorICAgICAg ICAgICAgICAgIH07CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg IC8vIENhbGxiYWNrIGZ1bmN0aW9ucyB3aGVuIGNsaWNrIG9uIHRoZSBidXR0 b25zIG9mIHRoZSBBbGVydGlmeSBkaWFsb2dzCisgICAgICAgICAgICAgIGNh bGxiYWNrOiBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgaWYgKGUu YnV0dG9uLnRleHQgPT09ICJ7eyBfKCdJbXBvcnQnKSB9fSIpIHsKKworICAg ICAgICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCh7J2RhdGFiYXNl JzogdHJlZUluZm8uZGF0YWJhc2UubGFiZWwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdzY2hlbWEnOiB0cmVlSW5mby5zY2hl bWEubGFiZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICd0YWJsZSc6IHRyZWVJbmZvLnRhYmxlLmxhYmVsfSkKKyAgICAgICAg ICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAgICAgICAg ICAgYmFzZVVybCA9ICJ7eyB1cmxfZm9yKCdpbXBvcnQuaW5kZXgnKSB9fSIg KworICAgICAgICAgICAgICAgICAgICAiY3JlYXRlX2pvYi8iICsgdHJlZUlu Zm8uc2VydmVyLl9pZCwKKyAgICAgICAgICAgICAgICAgICAgYXJncyA9ICB0 aGlzLnZpZXcubW9kZWwudG9KU09OKCk7CisKKyAgICAgICAgICAgICAgICAg ICQuYWpheCh7CisgICAgICAgICAgICAgICAgICAgIHVybDogYmFzZVVybCwK KyAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCisgICAgICAg ICAgICAgICAgICAgIGRhdGE6eyAnZGF0YSc6IEpTT04uc3RyaW5naWZ5KGFy Z3MpIH0sCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9u KHJlcykgeworICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5z dGF0dXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vRG8gbm90aGlu ZyBhcyB3ZSBhcmUgY3JlYXRpbmcgdGhlIGpvYiBhbmQgZXhpdGluZyBmcm9t IHRoZSBtYWluIGRpYWxvZworICAgICAgICAgICAgICAgICAgICAgICAgQWxl cnRpZnkuc3VjY2VzcyhyZXMuZGF0YS5pbmZvKTsKKyAgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg ICAgICAgICAgICAgICAgICAgICBBbGVydGlmeS5lcnJvcihyZXMuZGF0YS5p bmZvKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlv bihlKSB7CisgICAgICAgICAgICAgICAgICAgICAgQWxlcnRpZnkuYWxlcnQo CisgICAgICAgICAgICAgICAgICAgICAgICAie3sgXygnSW1wb3J0IGpvYiBj cmVhdGlvbiBmYWlsZWQnKSB9fSIKKyAgICAgICAgICAgICAgICAgICAgICAp OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9 KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0sCisgICAg ICAgICAgICAgIGJ1aWxkOmZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAg IH0sCisgICAgICAgICAgICAgIGhvb2tzOiB7CisgICAgICAgICAgICAgICAg b25jbG9zZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICBpZiAo dGhpcy52aWV3KSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5y ZW1vdmUoe2RhdGE6IHRydWUsIGludGVybmFsOiB0cnVlLCBzaWxlbnQ6IHRy dWV9KTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIHByZXBhcmU6ZnVu Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gTWFpbiBpbXBvcnQgbW9k dWxlIGNvbnRhaW5lcgorICAgICAgICAgICAgICAgIHZhciAkY29udGFpbmVy ID0gJCgiPGRpdiBjbGFzcz0naW1wb3J0X2RsZyc+PC9kaXY+Iik7CisKKyAg ICAgICAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLAorICAgICAg ICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWQoKSwKKyAgICAgICAgICAgICAg ICAgIGQgPSBpICYmIGkubGVuZ3RoID09IDEgPyB0Lml0ZW1EYXRhKGkpIDog dW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgbm9kZSA9IGQgJiYgcGdC cm93c2VyLk5vZGVzW2QuX3R5cGVdOworCisgICAgICAgICAgICAgICAgaWYg KCFkKQorICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg ICAgICAgdmFyIHRyZWVJbmZvID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNo eS5hcHBseShub2RlLCBbaV0pOworCisgICAgICAgICAgICAgICAgdmFyIG5l d01vZGVsID0gbmV3IEltcG9ydE1vZGVsICgKKyAgICAgICAgICAgICAgICAg IHt9LCB7bm9kZV9pbmZvOiB0cmVlSW5mb30KKyAgICAgICAgICAgICAgICAg ICksCisgICAgICAgICAgICAgICAgICBmaWVsZHMgPSBCYWNrZm9ybS5nZW5l cmF0ZVZpZXdTY2hlbWEoCisgICAgICAgICAgICAgICAgICAgIHRyZWVJbmZv LCBuZXdNb2RlbCwgJ2NyZWF0ZScsIG5vZGUsIHRyZWVJbmZvLnNlcnZlciwg dHJ1ZQorICAgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAg ICAgdmFyIHZpZXcgPSB0aGlzLnZpZXcgPSBuZXcgQmFja2Zvcm0uRGlhbG9n KHsKKyAgICAgICAgICAgICAgICAgICAgZWw6ICRjb250YWluZXIsIG1vZGVs OiBuZXdNb2RlbCwgc2NoZW1hOiBmaWVsZHMKKyAgICAgICAgICAgICAgICAg IH0pOworCisgICAgICAgICAgICAgICAgICAkKHRoaXMuZWxlbWVudHMuYm9k eS5jaGlsZE5vZGVzWzBdKS5hZGRDbGFzcygnYWxlcnRpZnlfdG9vbHNfZGlh bG9nX3Byb3BlcnRpZXMgb2JqX3Byb3BlcnRpZXMnKTsKKworICAgICAgICAg ICAgICAgICAgdmlldy5yZW5kZXIoKTsKKworICAgICAgICAgICAgICAgICAg dGhpcy5lbGVtZW50cy5jb250ZW50LmFwcGVuZENoaWxkKCRjb250YWluZXIu Z2V0KDApKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAg ICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE9wZW4gdGhl IEFsZXJ0aWZ5IGRpYWxvZyBmb3IgdGhlIGltcG9ydCBtb2R1bGUKKyAgICAg ICAgQWxlcnRpZnkuSW1wb3J0RGlhbG9nKCdJbXBvcnQgZGF0YSBmcm9tIGZp bGUgaW50byAnICsgdHJlZUluZm8udGFibGUubGFiZWwpLnNldCgncmVzaXph YmxlJyx0cnVlKS5yZXNpemVUbygnNjAlJywnNzAlJyk7CisgICAgICB9LAor ICAgIH07CisKKyAgICByZXR1cm4gcGdBZG1pbi5Ub29scy5pbXBvcnRfdXRp bGl0eTsKKyAgfSk7Cg== --94eb2c07e3bc481e340532166ff5 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 --94eb2c07e3bc481e340532166ff5--