Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1apZzk-0003f4-5K for pgadmin-hackers@arkaria.postgresql.org; Mon, 11 Apr 2016 11:27:04 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1apZzj-00036p-Kv for pgadmin-hackers@arkaria.postgresql.org; Mon, 11 Apr 2016 11:27:03 +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 1apZzg-00033I-V3 for pgadmin-hackers@postgresql.org; Mon, 11 Apr 2016 11:27:01 +0000 Received: from mail-ob0-x22c.google.com ([2607:f8b0:4003:c01::22c]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1apZzd-0000CZ-59 for pgadmin-hackers@postgresql.org; Mon, 11 Apr 2016 11:26:59 +0000 Received: by mail-ob0-x22c.google.com with SMTP id k9so12378973obk.2 for ; Mon, 11 Apr 2016 04:26:56 -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=i5Nl2G1SCG1cNxWzLZjY12aNYqDxIk5x8WOw1rUF4zc=; b=ocG8fu/nt3vWrJwqgFYWkXe8XQTb4aQZvgnYgG/qb2JPL3X0cbwd+QbtSAF/Uygpzd g5VUhEHR1wq9hhvbeha2JQjAKed6SA3iCR/lrz+qdNCGhIwh0wejxi6PeCmhS7jLh4Ro GYSFTFmzBja4MiMjbIBFKnVI6If7wN1xvrbzt0QdIKizHB8ZPnxBoLsfVrb8Qrz9wRzj FWjD/+rOuFbziLNjHSBNHjeKcZatRttRFnWsW5jLSesH/WngdBKpLeN8Q/QzTw8Y5Szv rUiTJbX4GNmJjrItmw2/cDtHlCaNvY/4K1/ZncPjPPV7IsaE5nIBVrT64f+7+NnbvK6W qwPw== 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=i5Nl2G1SCG1cNxWzLZjY12aNYqDxIk5x8WOw1rUF4zc=; b=R9Lc2kD4gJtiZFEQrk8KN+5894lmOP/Mc9z+bFaxtnAeNZyUPGMnKV5hdnp3klqOqM OZ7dOyIsx+MkD5UQx6sXbLNTPNx9HaaX+gsC59uEtESYEoFMN4AzCKhydjSpavcfLhX5 tl/y+vllEgxS0pM/tprVYBhXf0jxWqgEs6xflbL1S/GxBRWiZuODcNBA+ER43f2i6oCY B/41hHt/W/W2RYVlpKCA8NvDx0TLIKZevlL6qQugvh5Vw4RPR0ORBwAsIQUeVqUxhKul zq97LKJ78WEsvVXO0rBBfEUAdb5CKPp0WOc6cuk23rtq6ec31+MCtI4TxgIh3ihHAX/A 6dzQ== X-Gm-Message-State: AD7BkJJ4d8yxZJSU3y0C6ufrPEKj5e6rM2q6MI4armbF/sBtDGg56l8zCodyzF6G+RNan0d/ob9Bau4wl+oEOuo4 MIME-Version: 1.0 X-Received: by 10.182.233.163 with SMTP id tx3mr9631066obc.36.1460374016430; Mon, 11 Apr 2016 04:26:56 -0700 (PDT) Received: by 10.157.54.216 with HTTP; Mon, 11 Apr 2016 04:26:56 -0700 (PDT) Date: Mon, 11 Apr 2016 16:56:56 +0530 Message-ID: Subject: Patch for index constraint (primary and unique key) [pgadmin4] From: Harshal Dhumal To: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11c2f05c7d4df8053033d2aa X-Pg-Spam-Score: -0.9 (/) 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 --001a11c2f05c7d4df8053033d2aa Content-Type: multipart/alternative; boundary=001a11c2f05c7d4df2053033d2a8 --001a11c2f05c7d4df2053033d2a8 Content-Type: text/plain; charset=UTF-8 Hi, PAF patch for exclusion constraint which takes care both primary and unique key. Note: This patch has dependency on Table, Column node and Index constraint. -- *Harshal Dhumal* *Software Engineer * EenterpriseDB --001a11c2f05c7d4df2053033d2a8 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

PAF patch for exclusion constraint w= hich takes care both primary and unique key.

Note: This patch has dependency on Table, Column node and Index constraint.
<= br>
--=C2=A0
Harshal Dhumal
Software Engi= neer=C2=A0



--001a11c2f05c7d4df2053033d2a8-- --001a11c2f05c7d4df8053033d2aa Content-Type: text/x-patch; charset=US-ASCII; name="index_constraint_11_April_V1.patch" Content-Disposition: attachment; filename="index_constraint_11_April_V1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_imvwzaf60 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50 cy9pbmRleF9jb25zdHJhaW50L19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvX19pbml0 X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRi MGJmZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L19faW5pdF9fLnB5CkBA IC0wLDAgKzEsOTA3IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENv cHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCisiIiJJbXBsZW1lbnRzIFByaW1hcnkga2V5IGNvbnN0 cmFpbnQgTm9kZSIiIgorCitpbXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBv cnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBq c29uaWZ5Citmcm9tIGZsYXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dCBh cyBfCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29u X3Jlc3BvbnNlLCBcCisgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3Bv bnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi5icm93 c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKK2Zyb20gcGdhZG1p bi51dGlscy5hamF4IGltcG9ydCBwcmVjb25kaXRpb25fcmVxdWlyZWQKK2Zy b20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zy b20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgoraW1wb3J0IHBn YWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2Vz LnNjaGVtYXMudGFibGVzIGFzIHRhYmxlCitmcm9tIGZ1bmN0b29scyBpbXBv cnQgd3JhcHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMu c2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50YWJsZXMuY29uc3RyYWludHMu dHlwZSBcCisgICAgaW1wb3J0IENvbnN0cmFpbnRSZWdpc3RyeSwgQ29uc3Ry YWludFR5cGVNb2R1bGUKKworCitjbGFzcyBJbmRleENvbnN0cmFpbnRNb2R1 bGUoQ29uc3RyYWludFR5cGVNb2R1bGUpOgorICAgICIiIgorICAgIGNsYXNz IEluZGV4Q29uc3RyYWludE1vZHVsZShDb2xsZWN0aW9uTm9kZU1vZHVsZSkK KworICAgICAgICBBIG1vZHVsZSBjbGFzcyBmb3IgUHJpbWFyeSBrZXkgY29u c3RyYWludCBub2RlIGRlcml2ZWQgZnJvbSBDb25zdHJhaW50VHlwZU1vZHVs ZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0tLS0tLQorICAgICogX19pbml0 X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0 byBpbml0aWFsaXplIHRoZSBQcmltYXJ5S2V5Q29uc3RyYWludE1vZHVsZSBh bmQgaXQncyBiYXNlIG1vZHVsZS4KKworICAgICogZ2V0X25vZGVzKGdpZCwg c2lkLCBkaWQpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGdlbmVyYXRl IHRoZSBicm93c2VyIGNvbGxlY3Rpb24gbm9kZS4KKworICAgICogbm9kZV9p bm9kZSgpCisgICAgICAtIE1ldGhvZCBpcyBvdmVycmlkZGVuIGZyb20gaXRz IGJhc2UgY2xhc3MgdG8gbWFrZSB0aGUgbm9kZSBhcyBsZWFmIG5vZGUuCisK KyAgICAqIHNjcmlwdF9sb2FkKCkKKyAgICAgIC0gTG9hZCB0aGUgbW9kdWxl IHNjcmlwdCBmb3IgbGFuZ3VhZ2UsIHdoZW4gYW55IG9mIHRoZSBkYXRhYmFz ZSBub2RlIGlzCisgICAgICAgIGluaXRpYWxpemVkLgorICAgICIiIgorCisg ICAgTk9ERV9UWVBFID0gJ0luZGV4IGNvbnN0cmFpbnQnCisgICAgQ09MTEVD VElPTl9MQUJFTCA9IF8oJ2luZGV4X2NvbnN0cmFpbnQnKQorCisgICAgZGVm IF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIi IgorICAgICAgICBNZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBQ cmltYXJ5S2V5Q29uc3RyYWludE1vZHVsZSBhbmQgaXQncyBiYXNlIG1vZHVs ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICphcmdzOgorICAgICAg ICAgICoqa3dhcmdzOgorCisgICAgICAgIFJldHVybnM6CisKKyAgICAgICAg IiIiCisgICAgICAgIHNlbGYubWluX3ZlciA9IE5vbmUKKyAgICAgICAgc2Vs Zi5tYXhfdmVyID0gTm9uZQorICAgICAgICBzdXBlcihJbmRleENvbnN0cmFp bnRNb2R1bGUsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKwor ICAgIGRlZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlIHRoZSBjb2xs ZWN0aW9uIG5vZGUKKyAgICAgICAgIiIiCisgICAgICAgIHBhc3MKKworICAg IEBwcm9wZXJ0eQorICAgIGRlZiBub2RlX2lub2RlKHNlbGYpOgorICAgICAg ICAiIiIKKyAgICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSB0byBtYWtl IHRoZSBub2RlIGEgbGVhZiBub2RlLgorCisgICAgICAgIFJldHVybnM6IEZh bHNlIGFzIHRoaXMgaXMgdGhlIGxlYWYgbm9kZQorICAgICAgICAiIiIKKyAg ICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYg c2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBMb2Fk IHRoZSBtb2R1bGUgc2NyaXB0IGZvciBwcmltYXJ5X2tleSwgd2hlbiBhbnkg b2YgdGhlIHRhYmxlIG5vZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisK KyAgICAgICAgUmV0dXJuczogbm9kZSB0eXBlIG9mIHRoZSBzZXJ2ZXIgbW9k dWxlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHRhYmxlLlRhYmxl TW9kdWxlLk5PREVfVFlQRQorCisKK2NsYXNzIFByaW1hcnlLZXlDb25zdHJh aW50TW9kdWxlKEluZGV4Q29uc3RyYWludE1vZHVsZSk6CisgICAgIiIiCisg ICAgIGNsYXNzIFByaW1hcnlLZXlDb25zdHJhaW50TW9kdWxlKEluZGV4Q29u c3RyYWludE1vZHVsZSkKKworICAgICAgICBBIG1vZHVsZSBjbGFzcyBmb3Ig dGhlIGNhdGFsb2cgc2NoZW1hIG5vZGUgZGVyaXZlZCBmcm9tIEluZGV4Q29u c3RyYWludE1vZHVsZS4KKyAgICAiIiIKKworICAgIE5PREVfVFlQRSA9ICdw cmltYXJ5X2tleScKKyAgICBDT0xMRUNUSU9OX0xBQkVMID0gXygiUHJpbWFy eSBrZXkiKQorCisKK3ByaW1hcnlfa2V5X2JsdWVwcmludCA9IFByaW1hcnlL ZXlDb25zdHJhaW50TW9kdWxlKF9fbmFtZV9fKQorCisKK2NsYXNzIFVuaXF1 ZUNvbnN0cmFpbnRNb2R1bGUoSW5kZXhDb25zdHJhaW50TW9kdWxlKToKKyAg ICAiIiIKKyAgICAgY2xhc3MgVW5pcXVlQ29uc3RyYWludE1vZHVsZShJbmRl eENvbnN0cmFpbnRNb2R1bGUpCisKKyAgICAgICAgQSBtb2R1bGUgY2xhc3Mg Zm9yIHRoZSBjYXRhbG9nIHNjaGVtYSBub2RlIGRlcml2ZWQgZnJvbSBJbmRl eENvbnN0cmFpbnRNb2R1bGUuCisgICAgIiIiCisKKyAgICBOT0RFX1RZUEUg PSAndW5pcXVlX2NvbnN0cmFpbnQnCisgICAgQ09MTEVDVElPTl9MQUJFTCA9 IF8oIlVuaXF1ZSBjb25zdHJhaW50IikKKworCit1bmlxdWVfY29uc3RyYWlu dF9ibHVlcHJpbnQgPSBVbmlxdWVDb25zdHJhaW50TW9kdWxlKF9fbmFtZV9f KQorCisKK2NsYXNzIEluZGV4Q29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVW aWV3KToKKyAgICAiIiIKKyAgICBjbGFzcyBQcmltYXJ5S2V5Q29uc3RyYWlu dFZpZXcoUEdDaGlsZE5vZGVWaWV3KQorCisgICAgICAgIEEgdmlldyBjbGFz cyBmb3IgUHJpbWFyeSBrZXkgY29uc3RyYWludCBub2RlIGRlcml2ZWQgZnJv bSBQR0NoaWxkTm9kZVZpZXcuIFRoaXMgY2xhc3MgaXMKKyAgICAgICAgcmVz cG9uc2libGUgZm9yIGFsbCB0aGUgc3R1ZmYgcmVsYXRlZCB0byB2aWV3IGxp a2UgY3JlYXRpbmcsIHVwZGF0aW5nIFByaW1hcnkga2V5IGNvbnN0cmFpbnQK KyAgICAgICAgbm9kZSwgc2hvd2luZyBwcm9wZXJ0aWVzLCBzaG93aW5nIHNx bCBpbiBzcWwgcGFuZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0tLS0tLQor ICAgICogX19pbml0X18oKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1 c2VkIHRvIGluaXRpYWxpemUgdGhlIFByaW1hcnlLZXlDb25zdHJhaW50Vmll dyBhbmQgaXQncyBiYXNlIHZpZXcuCisKKyAgICAqIG1vZHVsZV9qcygpCisg ICAgICAtIFRoaXMgcHJvcGVydHkgZGVmaW5lcyAoaWYgamF2YXNjcmlwdCkg ZXhpc3RzIGZvciB0aGlzIG5vZGUuCisgICAgICAgIE92ZXJyaWRlIHRoaXMg cHJvcGVydHkgZm9yIHlvdXIgb3duIGxvZ2ljCisKKyAgICAqIGNoZWNrX3By ZWNvbmRpdGlvbigpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhh dmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKKyAgICAgICAg ZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVubmluZyB2aWV3LCBpdCB3 aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFuYWdlcixjb25uICYgdGVt cGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYKKworICAgICogbGlzdCgp CisgICAgICAtIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBwcmltYXJ5IGtleSBj b25zdHJhaW50IG5vZGVzIHdpdGhpbiB0aGF0CisgICAgICAgIGNvbGxlY3Rp b24gYXMgaHR0cCByZXNwb25zZS4KKworICAgICogZ2V0X2xpc3QoKQorICAg ICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhlIGxh bmd1YWdlIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24KKyAgICAgICAg YW5kIHJldHVybiBsaXN0IG9mIHByaW1hcnkga2V5IGNvbnN0cmFpbnQgbm9k ZXMuCisKKyAgICAqIG5vZGVzKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiBy ZXR1cm5zIGNoaWxkIG5vZGUgd2l0aGluIHRoYXQgY29sbGVjdGlvbi4KKyAg ICAgICAgSGVyZSByZXR1cm4gYWxsIHByaW1hcnkga2V5IGNvbnN0cmFpbnQg bm9kZSBhcyBodHRwIHJlc3BvbnNlLgorCisgICAgKiBnZXRfbm9kZXMoKQor ICAgICAgLSByZXR1cm5zIGFsbCBwcmltYXJ5IGtleSBjb25zdHJhaW50IG5v ZGVzJyBsaXN0LgorCisgICAgKiBwcm9wZXJ0aWVzKCkKKyAgICAgIC0gVGhp cyBmdW5jdGlvbiB3aWxsIHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNl bGVjdGVkIHByaW1hcnkga2V5LgorCisgICAgKiB1cGRhdGUoKQorICAgICAg LSBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHRoZSBkYXRhIGZvciB0aGUg c2VsZWN0ZWQgcHJpbWFyeSBrZXkuCisKKyAgICAqIG1zcWwoKQorICAgICAg LSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmV0dXJuIG1vZGlmaWVkIFNR TCBmb3IgdGhlIHNlbGVjdGVkIHByaW1hcnkga2V5LgorCisgICAgKiBnZXRf c3FsKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNx bCBmcm9tIG1vZGVsIGRhdGEuCisKKyAgICAqIHNxbCgpOgorICAgICAgLSBU aGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIHRvIHNob3cgaXQgaW4g c3FsIHBhbmUgZm9yIHRoZSBzZWxlY3RlZCBwcmltYXJ5IGtleS4KKworICAg ICogZ2V0X2luZGljZXMoKToKKyAgICAgICAgLSBUaGlzIGZ1bmN0aW9uIHJl dHVybnMgaW5kaWNlcyBmb3IgY3VycmVudCB0YWJsZS4KKworICAgICIiIgor CisgICAgbm9kZV90eXBlID0gJ2luZGV4X2NvbnN0cmFpbnQnCisKKyAgICBu b2RlX2xhYmVsID0gXygnSW5kZXggY29uc3RyYWludCcpCisKKyAgICBwYXJl bnRfaWRzID0gWworICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6 ICdnaWQnfSwKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAn c2lkJ30sCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2Rp ZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdzY2lk J30sCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3RpZCd9 CisgICAgICAgICAgICBdCisgICAgaWRzID0gW3sndHlwZSc6ICdpbnQnLCAn aWQnOiAnY2lkJ30KKyAgICAgICAgICAgIF0KKworICAgIG9wZXJhdGlvbnMg PSBkaWN0KHsKKyAgICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0 JzogJ3Byb3BlcnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAn dXBkYXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3Qn OiAnY3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ2RlbGV0ZSc6IFt7 J2RlbGV0ZSc6ICdkZWxldGUnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7 J2dldCc6ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0 JzogJ25vZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwn OiBbeydnZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6 ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6 IFt7J2dldCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5kZW5j eSc6IFt7J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdkZXBl bmRlbnQnOiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ21v ZHVsZS5qcyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwKKyAg ICAgICAgJ2luZGljZXMnOiBbe30sIHsnZ2V0JzogJ2dldF9pbmRpY2VzJ31d CisgICAgfSkKKworICAgIGRlZiBtb2R1bGVfanMoc2VsZik6CisgICAgICAg ICIiIgorICAgICAgICBUaGlzIHByb3BlcnR5IGRlZmluZXMgKGlmIGphdmFz Y3JpcHQpIGV4aXN0cyBmb3IgdGhpcyBub2RlLgorICAgICAgICBPdmVycmlk ZSB0aGlzIHByb3BlcnR5IGZvciB5b3VyIG93biBsb2dpYy4KKyAgICAgICAg IiIiCisgICAgICAgIHJldHVybiBtYWtlX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAg ImluZGV4X2NvbnN0cmFpbnQvanMvaW5kZXhfY29uc3RyYWludC5qcyIsCisg ICAgICAgICAgICAgICAgICAgIF89XywKKyAgICAgICAgICAgICAgICAgICAg bm9kZV90eXBlPXNlbGYubm9kZV90eXBlLAorICAgICAgICAgICAgICAgICAg ICBub2RlX2xhYmVsPXNlbGYubm9kZV9sYWJlbAorICAgICAgICAgICAgICAg ICAgICApLAorICAgICAgICAgICAgICAgIDIwMCwgeydDb250ZW50LVR5cGUn OiAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0J30KKyAgICAgICAgICAgICAg ICApCisKKyAgICBkZWYgY2hlY2tfcHJlY29uZGl0aW9uKGYpOgorICAgICAg ICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBh IGRlY29yYXRvciB3aGljaCB3aWxsIGNoZWNrcworICAgICAgICBkYXRhYmFz ZSBjb25uZWN0aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxz byBhdHRhY2hlcworICAgICAgICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9w YXRoIHByb3BlcnRpZXMgdG8gc2VsZgorICAgICAgICAiIiIKKyAgICAgICAg QHdyYXBzKGYpCisgICAgICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6 CisgICAgICAgICAgICAjIEhlcmUgYXJnc1swXSB3aWxsIGhvbGQgc2VsZiAm IGt3YXJncyB3aWxsIGhvbGQgZ2lkLHNpZCxkaWQKKyAgICAgICAgICAgIHNl bGYgPSBhcmdzWzBdCisgICAgICAgICAgICBzZWxmLm1hbmFnZXIgPSBnZXRf ZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIo CisgICAgICAgICAgICAgICAga3dhcmdzWydzaWQnXQorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgIHNlbGYuY29ubiA9IHNlbGYubWFuYWdlci5j b25uZWN0aW9uKGRpZD1rd2FyZ3NbJ2RpZCddKQorCisgICAgICAgICAgICAj IElmIERCIG5vdCBjb25uZWN0ZWQgdGhlbiByZXR1cm4gZXJyb3IgdG8gYnJv d3NlcgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY29ubi5jb25uZWN0ZWQo KToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVp cmVkKAorICAgICAgICAgICAgICAgICAgICBfKAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJDb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJl ZW4gbG9zdCEiCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdp bmRleF9jb25zdHJhaW50L3NxbCcKKyAgICAgICAgICAgICMgV2UgbmVlZCBw YXJlbnQncyBuYW1lIGVnIHRhYmxlIG5hbWUgYW5kIHNjaGVtYSBuYW1lCisg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1rd2FyZ3NbJ3RpZCdd KQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1 dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cnNldCkKKworICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0 Wydyb3dzJ106CisgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWEgPSByb3db J3NjaGVtYSddCisgICAgICAgICAgICAgICAgc2VsZi50YWJsZSA9IHJvd1sn dGFibGUnXQorICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdz KQorCisgICAgICAgIHJldHVybiB3cmFwCisKKyAgICBkZWYgZW5kX3RyYW5z YWN0aW9uKHNlbGYpOgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ2VuZC5zcWwnXSkpCisgICAgICAgICMgRW5kIHRyYW5zYWN0aW9uIGlm IGFueS4KKyAgICAgICAgc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGll cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZD1Ob25lKToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0 byBsaXN0IGFsbCB0aGUgcHJpbWFyeSBrZXkKKyAgICAgICAgbm9kZXMgd2l0 aGluIHRoYXQgY29sbGVjdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAg ICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgc2lkOiBTZXJ2 ZXIgSUQKKyAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAg c2NpZDogU2NoZW1hIElECisgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAg ICAgICAgIGNpZDogUHJpbWFyeSBrZXkgY29uc3RyYWludCBJRAorCisgICAg ICAgIFJldHVybnM6CisKKyAgICAgICAgIiIiCisgICAgICAgIHNxbCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn cHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aWQ9dGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2lkPWNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 cmFpbnRfdHlwZT0gc2VsZi5jb25zdHJhaW50X3R5cGUpCisgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJl c3VsdCA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ2dldF9jb25zdHJhaW50X2NvbHMuc3FsJ10pLAorICAgICAg ICAgICAgY2lkPWNpZCwKKyAgICAgICAgICAgIGNvbGNudD1yZXN1bHRbJ2lu ZG5hdHRzJ10pCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorCisgICAgICAgIGNvbHVtbnMgPSBbXQorICAgICAgICBmb3Ig cm93IGluIHJlc1sncm93cyddOgorICAgICAgICAgICAgY29sdW1ucy5hcHBl bmQoeyJjb2x1bW4iOiAgIHJvd1snY29sdW1uJ10uc3RyaXAoJyInKX0pCisK KyAgICAgICAgcmVzdWx0Wydjb2x1bW5zJ10gPSBjb2x1bW5zCisKKyAgICAg ICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVz cG9uc2U9cmVzdWx0LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAg ICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIGxpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBj aWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IHJldHVybnMgYWxsIHByaW1hcnkga2V5cworICAgICAgICBub2RlcyB3aXRo aW4gdGhhdCBjb2xsZWN0aW9uIGFzIGEgaHR0cCByZXNwb25zZS4KKworICAg ICAgICBBcmdzOgorICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisg ICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICBkaWQ6IERhdGFi YXNlIElECisgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAg dGlkOiBUYWJsZSBJRAorICAgICAgICAgIGNpZDogUHJpbWFyeSBrZXkgY29u c3RyYWludCBJRAorCisgICAgICAgIFJldHVybnM6CisKKyAgICAgICAgIiIi CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlcyA9IHNlbGYuZ2V0X25v ZGVfbGlzdChnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZCkKKyAgICAg ICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAg ICAgICByZXNwb25zZT1yZXMsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1 cz0yMDAKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQg RXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X25vZGVfbGlzdChzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZD1Ob25lKToKKyAgICAgICAgIiIi CisgICAgICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbGwgcHJpbWFyeSBr ZXlzCisgICAgICAgIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24gYXMg YSBsaXN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZ2lkOiBTZXJ2 ZXIgR3JvdXAgSUQKKyAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICBzY2lkOiBTY2hlbWEg SUQKKyAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgY2lkOiBQ cmltYXJ5IGtleSBjb25zdHJhaW50IElECisKKyAgICAgICAgUmV0dXJuczoK KworICAgICAgICAiIiIKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50X3R5 cGU9IHNlbGYuY29uc3RyYWludF90eXBlKQorICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgIHJl dHVybiByZXNbJ3Jvd3MnXQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQs IGNpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rp b24gcmV0dXJucyBhbGwgZXZlbnQgdHJpZ2dlciBub2RlcyBhcyBhCisgICAg ICAgIGh0dHAgcmVzcG9uc2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg ICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgIHNpZDogU2VydmVy IElECisgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgIHNj aWQ6IFNjaGVtYSBJRAorICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAg ICAgICBjaWQ6IFByaW1hcnkga2V5IGNvbnN0cmFpbnQgSUQKKworICAgICAg ICBSZXR1cm5zOgorCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAg ICAgICAgICByZXMgPSBzZWxmLmdldF9ub2RlcyhnaWQsIHNpZCwgZGlkLCBz Y2lkLCB0aWQsIGNpZCkKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAg ICAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAg ICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1z dHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGdl dF9ub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZD1O b25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gcmV0 dXJucyBhbGwgZXZlbnQgdHJpZ2dlciBub2RlcyBhcyBhIGxpc3QuCisKKyAg ICAgICAgQXJnczoKKyAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAor ICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJRAorICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAg IHRpZDogVGFibGUgSUQKKyAgICAgICAgICBjaWQ6IFByaW1hcnkga2V5IGNv bnN0cmFpbnQgSUQKKworICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIi IgorICAgICAgICByZXMgPSBbXQorICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ25vZGVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50X3R5 cGU9c2VsZi5jb25zdHJhaW50X3R5cGUpCisgICAgICAgIHN0YXR1cywgcnNl dCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorCisgICAgICAg IGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFw cGVuZCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ibHVlcHJpbnQuZ2Vu ZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICAgICAg cm93WydvaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAgICAg ICAgICAgICAgICAgICAgaWNvbj0iaWNvbi0lcyIgJSBzZWxmLm5vZGVfdHlw ZQorICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gcmVz CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGNyZWF0ZShz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZD1Ob25lKToKKyAg ICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUg YSBwcmltYXJ5IGtleS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGdp ZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQK KyAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgc2NpZDog U2NoZW1hIElECisgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAg IGNpZDogUHJpbWFyeSBrZXkgY29uc3RyYWludCBJRAorCisgICAgICAgIFJl dHVybnM6CisKKyAgICAgICAgIiIiCisgICAgICAgIHJlcXVpcmVkX2FyZ3Mg PSBbCisgICAgICAgICAgICBbdSdjb2x1bW5zJywgdSdpbmRleCddICAgICMg RWl0aGVyIG9mIG9uZSBzaG91bGQgYmUgdGhlcmUuCisgICAgICAgIF0KKwor ICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBl bHNlIGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLmRlY29kZSgpKQorCisgICAg ICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJnczoKKyAgICAgICAgICAgIGlm IGlzaW5zdGFuY2UoYXJnLCBsaXN0KToKKyAgICAgICAgICAgICAgICBmb3Ig cGFyYW0gaW4gYXJnOgorICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW0g aW4gZGF0YSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90 IGlzaW5zdGFuY2UoZGF0YVtwYXJhbV0sIGxpc3QpIG9yCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChpc2luc3RhbmNlKGRhdGFbcGFyYW1d LCBsaXN0KSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxlbihkYXRhW3BhcmFtXSkgPiAwKSkpOgorICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAg ICAgICAgICAgICAgICAgICAgIHN0YXR1cz00MDAsCisgICAgICAgICAgICAg ICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICAgIGVy cm9ybXNnPV8oCisgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZG4n dCBmaW5kIGF0IGxlYXN0IG9uZSByZXF1aXJlZCBwYXJhbWV0ZXIgKCVzKS4i ICUgc3RyKHBhcmFtKQorICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBlbGlmIGFyZyBub3Qg aW4gZGF0YToKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9NDAwLAorICAg ICAgICAgICAgICAgICAgICBzdWNjZXNzPTAsCisgICAgICAgICAgICAgICAg ICAgIGVycm9ybXNnPV8oCisgICAgICAgICAgICAgICAgICAgICAgICAiQ291 bGRuJ3QgZmluZCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyICglcykuIiAlIGFy ZworICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQor CisgICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2VsZi5zY2hlbWEKKyAgICAg ICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUKKyAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgaWYgJ25hbWUnIG5vdCBpbiBkYXRhIG9yIGRhdGFbJ25h bWUnXSA9PSAiIjoKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICdiZWdpbi5zcWwnXSkpCisgICAgICAgICAgICAgICAg IyBTdGFydCB0cmFuc2FjdGlvbi4KKyAgICAgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAg ICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAg c2VsZi5lbmRfdHJhbnNhY3Rpb24oKQorICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgIyBUaGUgYmVsb3cgU1FMIHdpbGwgZXhlY3V0ZSBDUkVB VEUgRERMIG9ubHkKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkYXRhPWRh dGEsIGNvbm49c2VsZi5jb25uLAorICAgICAgICAgICAgICAgIGNvbnN0cmFp bnRfbmFtZT1zZWxmLmNvbnN0cmFpbnRfbmFtZQorICAgICAgICAgICAgICAg ICkKKworICAgICAgICAgICAgc3RhdHVzLCBtc2cgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICBzZWxmLmVuZF90cmFuc2FjdGlvbigpCisgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1tc2cpCisKKyAgICAgICAgICAgIGlmICduYW1lJyBub3QgaW4gZGF0 YSBvciBkYXRhWyduYW1lJ10gPT0gIiI6CisgICAgICAgICAgICAgICAgc3Fs ID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2dldF9vaWRfd2l0aF90cmFuc2FjdGlvbi5zcWwnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg ICAgICAgICAgY29uc3RyYWludF90eXBlPXNlbGYuY29uc3RyYWludF90eXBl LAorICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkKQorCisgICAgICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNx bCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgICAgICAgICBzZWxmLmVuZF90cmFuc2FjdGlvbigpCisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorCisgICAgICAgICAgICAgICAgc2VsZi5lbmRfdHJhbnNhY3Rp b24oKQorCisgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddID0gcmVzWydy b3dzJ11bMF1bJ25hbWUnXQorCisgICAgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X29pZC5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRfdHlw ZT1zZWxmLmNvbnN0cmFpbnRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmFtZT1kYXRhWyduYW1lJ10pCisgICAgICAg ICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0 KHNxbCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAg ICAgICAgICAgICAgICBzZWxmLmVuZF90cmFuc2FjdGlvbigpCisgICAgICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dyYW50LnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRh dGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1z ZWxmLmNvbm4pCisgICAgICAgICAgICBzcWwgPSBzcWwuc3RyaXAoJ1xuJyku c3RyaXAoJyAnKQorCisgICAgICAgICAgICBpZiBzcWwgIT0gJyc6CisgICAg ICAgICAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZW5kX3RyYW5zYWN0aW9uKCkK KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXN1bHQpCisKKyAgICAgICAgICAgIHJldHVybiBq c29uaWZ5KAorICAgICAgICAgICAgICAgIG5vZGU9c2VsZi5ibHVlcHJpbnQu Z2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICBy ZXNbJ3Jvd3MnXVswXVsnb2lkJ10sCisgICAgICAgICAgICAgICAgICAgIHRp ZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddLAorICAgICAg ICAgICAgICAgICAgICBpY29uPSJpY29uLSVzIiAlIHNlbGYubm9kZV90eXBl CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisK KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAg c2VsZi5lbmRfdHJhbnNhY3Rpb24oKQorICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBzdGF0dXM9NDAw LAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgICAg ICBlcnJvcm1zZz1lCisgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJl Y29uZGl0aW9uCisgICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlk LCBzY2lkLCB0aWQsIGNpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIGRhdGEgZm9yIHRoZSBz ZWxlY3RlZAorICAgICAgICBwcmltYXJ5IGtleS4KKworICAgICAgICBBcmdz OgorICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAg c2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisg ICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgdGlkOiBUYWJs ZSBJRAorICAgICAgICAgIGNpZDogUHJpbWFyeSBrZXkgY29uc3RyYWludCBJ RAorCisgICAgICAgIFJldHVybnM6CisKKyAgICAgICAgIiIiCisgICAgICAg IGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNv bi5sb2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisKKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQor ICAgICAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUKKyAgICAg ICAgICAgIHNxbCA9IHNlbGYuZ2V0X3NxbChkYXRhLCB0aWQsIGNpZCkKKyAg ICAgICAgICAgIHNxbCA9IHNxbC5zdHJpcCgnXG4nKS5zdHJpcCgnICcpCisg ICAgICAgICAgICBpZiBzcWwgIT0gIiI6CisgICAgICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAg ICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdnZXRfb2lkLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRp ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3RyYWludF90eXBlPXNlbGYuY29uc3RyYWludF90eXBlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWRhdGFbJ25hbWUn XSkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgcmV0 dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAg c3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgICAgICBpbmZvPSJDb25zdHJh aW50IHVwZGF0ZWQiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAg ICAgICAgICAgICAgICAgICAgICAgICdpZCc6IGNpZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICd0aWQnOiB0aWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAn c2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdp ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAg ICAgICAgICAgICAgICAgICBpbmZvPSJOb3RoaW5nIHRvIHVwZGF0ZSIsCisg ICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAg ICAgICAgJ2lkJzogY2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3Rp ZCc6IHRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzY2lkJzogc2Np ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAg ICAgICAgICAgICAgJ2RpZCc6IGRpZAorICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkLCBjaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlz IGZ1bmN0aW9uIHdpbGwgZGVsZXRlIGFuIGV4aXN0aW5nIHByaW1hcnkga2V5 LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3Jv dXAgSUQKKyAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgIGRp ZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAg ICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgY2lkOiBQcmltYXJ5 IGtleSBjb25zdHJhaW50IElECisKKyAgICAgICAgUmV0dXJuczoKKworICAg ICAgICAiIiIKKyAgICAgICAgIyBCZWxvdyBjb2RlIHdpbGwgZGVjaWRlIGlm IGl0J3Mgc2ltcGxlIGRyb3Agb3IgZHJvcCB3aXRoIGNhc2NhZGUgY2FsbAor ICAgICAgICBpZiBzZWxmLmNtZCA9PSAnZGVsZXRlJzoKKyAgICAgICAgICAg ICMgVGhpcyBpcyBhIGNhc2NhZGUgb3BlcmF0aW9uCisgICAgICAgICAgICBj YXNjYWRlID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2Fz Y2FkZSA9IEZhbHNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNxbCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnZ2V0X25hbWUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRpZD10aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3RyYWludF90eXBlID0gc2VsZi5jb25zdHJhaW50X3R5 cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkPWNp ZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChzcWwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgICAgICBkYXRhID0gcmVzWydyb3dzJ11b MF0KKyAgICAgICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2VsZi5zY2hlbWEK KyAgICAgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSBzZWxmLnRhYmxlCisKKyAg ICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2FzY2FkZT1jYXNjYWRlKQorICAg ICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2Fs YXIoc3FsKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAg ICAgaW5mbz1fKCJ7MH0gZHJvcHBlZC4iLmZvcm1hdChzZWxmLm5vZGVfbGFi ZWwpKSwKKyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAg ICAgICAgJ2lkJzogY2lkLAorICAgICAgICAgICAgICAgICAgICAnc2lkJzog c2lkLAorICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAg ICAgICAgICAgICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg ZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwg Y2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlv biByZXR1cm5zIG1vZGlmaWVkIFNRTCBmb3IgdGhlIHNlbGVjdGVkCisgICAg ICAgIHByaW1hcnkga2V5LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg Z2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICBzaWQ6IFNlcnZlciBJ RAorICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICBzY2lk OiBTY2hlbWEgSUQKKyAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAg ICAgY2lkOiBQcmltYXJ5IGtleSBjb25zdHJhaW50IElECisKKyAgICAgICAg UmV0dXJuczoKKworICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHt9Cisg ICAgICAgIGZvciBrLCB2IGluIHJlcXVlc3QuYXJncy5pdGVtcygpOgorICAg ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRhdGFba10gPSBqc29u LmxvYWRzKHYpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAg ICAgICAgICAgICAgICBkYXRhW2tdID0gdgorCisgICAgICAgIGRhdGFbJ3Nj aGVtYSddID0gc2VsZi5zY2hlbWEKKyAgICAgICAgZGF0YVsndGFibGUnXSA9 IHNlbGYudGFibGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3FsID0g c2VsZi5nZXRfc3FsKGRhdGEsIHRpZCwgY2lkKQorICAgICAgICAgICAgc3Fs ID0gc3FsLnN0cmlwKCdcbicpLnN0cmlwKCcgJykKKworICAgICAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAg ICAgZGF0YT1zcWwsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAK KyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgZGVmIGdldF9zcWwo c2VsZiwgZGF0YSwgdGlkLCBjaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20gbW9k ZWwgZGF0YS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGRhdGE6IENv bnRhaW5zIHRoZSBkYXRhIG9mIHRoZSBzZWxlY3RlZCBwcmltYXJ5IGtleSBj b25zdHJhaW50LgorICAgICAgICAgIHRpZDogVGFibGUgSUQuCisgICAgICAg ICAgY2lkOiBQcmltYXJ5IGtleSBjb25zdHJhaW50IElECisKKyAgICAgICAg UmV0dXJuczoKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgY2lkIGlzIG5v dCBOb25lOgorICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZD1jaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RyYWlu dF90eXBlPSBzZWxmLmNvbnN0cmFpbnRfdHlwZSkKKyAgICAgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBdCisgICAgICAgICAg ICByZXF1aXJlZF9hcmdzID0gW3UnbmFtZSddCisgICAgICAgICAgICBmb3Ig YXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAgICAgICAgaWYgYXJn IG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgICAgICBkYXRhW2FyZ10g PSBvbGRfZGF0YVthcmddCisKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAndXBkYXRl LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhPWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b19kYXRhPW9sZF9kYXRhKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg cmVxdWlyZWRfYXJncyA9IFsKKyAgICAgICAgICAgICAgICBbdSdjb2x1bW5z JywgdSdpbmRleCddICAgICMgRWl0aGVyIG9mIG9uZSBzaG91bGQgYmUgdGhl cmUuCisgICAgICAgICAgICBdCisKKyAgICAgICAgICAgIGZvciBhcmcgaW4g cmVxdWlyZWRfYXJnczoKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNl KGFyZywgbGlzdCk6CisgICAgICAgICAgICAgICAgICAgIGZvciBwYXJhbSBp biBhcmc6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW0gaW4g ZGF0YSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChp c2luc3RhbmNlKGRhdGFbcGFyYW1dLCBzdHIpIGFuZAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtwYXJhbV0gIT0gIiIpIG9y CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNpbnN0 YW5jZShkYXRhW3BhcmFtXSwgbGlzdCkgYW5kCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGRhdGFbcGFyYW1dKSA+IDAp KSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAg ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBfKCctLSBkZWZpbml0aW9uIGluY29tcGxldGUnKQorCisgICAg ICAgICAgICAgICAgZWxpZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBfKCctLSBkZWZpbml0aW9uIGluY29tcGxldGUn KQorCisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25u LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFp bnRfbmFtZT1zZWxmLmNvbnN0cmFpbnRfbmFtZSkKKyAgICAgICAgICAgIHNx bCArPSAiXG4iCisgICAgICAgICAgICBzcWwgKz0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdncmFudC5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0 YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1z ZWxmLmNvbm4pCisKKyAgICAgICAgcmV0dXJuIHNxbAorCisgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdGlkLCBjaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIGdlbmVyYXRlcyBzcWwgdG8gc2hvdyBpbiB0aGUg c3FsIHBhbmUgZm9yIHRoZSBzZWxlY3RlZAorICAgICAgICBwcmltYXJ5IGtl eS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGdpZDogU2VydmVyIEdy b3VwIElECisgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICBk aWQ6IERhdGFiYXNlIElECisgICAgICAgICAgc2NpZDogU2NoZW1hIElECisg ICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAgIGNpZDogUHJpbWFy eSBrZXkgY29uc3RyYWludCBJRAorCisgICAgICAgIFJldHVybnM6CisKKyAg ICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAg ICAgICAgICAgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICBjb25uPXNlbGYu Y29ubiwKKyAgICAgICAgICAgICAgICBjaWQ9Y2lkLAorICAgICAgICAgICAg ICAgIGNvbnN0cmFpbnRfdHlwZT1zZWxmLmNvbnN0cmFpbnRfdHlwZSkKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGlj dChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorCisgICAgICAgICAgICBkYXRhID0gcmVzWydyb3dzJ11bMF0KKyAg ICAgICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2VsZi5zY2hlbWEKKyAgICAg ICAgICAgIGRhdGFbJ3RhYmxlJ10gPSBzZWxmLnRhYmxlCisKKyAgICAgICAg ICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X2NvbnN0cmFpbnRf Y29scy5zcWwnXSksCisgICAgICAgICAgICAgICAgY2lkPWNpZCwgY29sY250 PWRhdGFbJ2luZG5hdHRzJ10pCisKKyAgICAgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAg IGNvbHVtbnMgPSBbXQorICAgICAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jv d3MnXToKKyAgICAgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZCh7ImNvbHVt biI6ICAgcm93Wydjb2x1bW4nXS5zdHJpcCgnIicpfSkKKworICAgICAgICAg ICAgZGF0YVsnY29sdW1ucyddID0gY29sdW1ucworCisgICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAg ICAgICAgICAgICAgZGF0YT1kYXRhLAorICAgICAgICAgICAgICAgIGNvbnN0 cmFpbnRfbmFtZT1zZWxmLmNvbnN0cmFpbnRfbmFtZSkKKyAgICAgICAgICAg IFNRTCArPSAiXG4iCisgICAgICAgICAgICBTUUwgKz0gcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICdncmFudC5zcWwnXSksCisgICAgICAgICAgICAgICAgZGF0YT1k YXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAgICAgc3FsX2hlYWRl ciA9ICItLSBDb25zdHJhaW50OiB7MH1cblxuLS0gIi5mb3JtYXQoZGF0YVsn bmFtZSddKQorCisgICAgICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90 ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgIGRhdGE9ZGF0YSkKKyAgICAgICAgICAgIHNxbF9oZWFkZXIgKz0g IlxuIgorCisgICAgICAgICAgICBTUUwgPSBzcWxfaGVhZGVyICsgU1FMCisK KyAgICAgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKHJlc3BvbnNlPVNR TCkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0 X2luZGljZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBjaWQ9 Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHJl dHVybnMgaW5kaWNlcyBmb3IgY3VycmVudCB0YWJsZS4KKworICAgICAgICBB cmdzOgorICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAg ICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICBkaWQ6IERhdGFiYXNlIElE CisgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgdGlkOiBU YWJsZSBJRAorICAgICAgICAgIGNpZDogUHJpbWFyeSBrZXkgY29uc3RyYWlu dCBJRAorCisgICAgICAgIFJldHVybnM6CisKKyAgICAgICAgIiIiCisgICAg ICAgIHJlcyA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0KKyAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2dldF9pbmRpY2VzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkKQorICAgICAgICBzdGF0 dXMsIHJlc3QgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KHNxbCkKKwor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN0KQorCisgICAgICAg IGZvciByb3cgaW4gcmVzdFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFw cGVuZCgKKyAgICAgICAgICAgICAgICB7J2xhYmVsJzogcm93WydyZWxuYW1l J10sICd2YWx1ZSc6IHJvd1sncmVsbmFtZSddfQorICAgICAgICAgICAgKQor ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAK KyAgICAgICAgICAgICAgICApCisKKworY2xhc3MgUHJpbWFyeUtleUNvbnN0 cmFpbnRWaWV3KEluZGV4Q29uc3RyYWludFZpZXcpOgorICAgIG5vZGVfdHlw ZSA9ICdwcmltYXJ5X2tleScKKworICAgIG5vZGVfbGFiZWwgPSBfKCdQcmlt YXJ5IGtleScpCisKKyAgICBjb25zdHJhaW50X25hbWUgPSAiUFJJTUFSWSBL RVkiCisKKyAgICBjb25zdHJhaW50X3R5cGUgPSAicCIKKworCitjbGFzcyBV bmlxdWVDb25zdHJhaW50VmlldyhJbmRleENvbnN0cmFpbnRWaWV3KToKKyAg ICBub2RlX3R5cGUgPSAndW5pcXVlX2NvbnN0cmFpbnQnCisKKyAgICBub2Rl X2xhYmVsID0gXygnVW5pcXVlIGNvbnN0cmFpbnQnKQorCisgICAgY29uc3Ry YWludF9uYW1lID0gIlVOSVFVRSIKKworICAgIGNvbnN0cmFpbnRfdHlwZSA9 ICJ1IgorCisKK3ByaW1hcnlfa2V5X2NvbnN0cmFpbnQgPSBDb25zdHJhaW50 UmVnaXN0cnkoCisgICAgJ3ByaW1hcnlfa2V5JywgUHJpbWFyeUtleUNvbnN0 cmFpbnRNb2R1bGUsIFByaW1hcnlLZXlDb25zdHJhaW50VmlldworICAgICkK KwordW5pcXVlX2NvbnN0cmFpbnQgPSBDb25zdHJhaW50UmVnaXN0cnkoCisg ICAgJ3VuaXF1ZV9jb25zdHJhaW50JywgVW5pcXVlQ29uc3RyYWludE1vZHVs ZSwgVW5pcXVlQ29uc3RyYWludFZpZXcKKyAgICApCisKK1ByaW1hcnlLZXlD b25zdHJhaW50Vmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcocHJpbWFyeV9rZXlf Ymx1ZXByaW50KQorVW5pcXVlQ29uc3RyYWludFZpZXcucmVnaXN0ZXJfbm9k ZV92aWV3KHVuaXF1ZV9jb25zdHJhaW50X2JsdWVwcmludCkKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9j b25zdHJhaW50L3N0YXRpYy9pbWcvcHJpbWFyeV9rZXkucG5nIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQv c3RhdGljL2ltZy9wcmltYXJ5X2tleS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uYjU3ZjU5Nzc4NTU0YzNiMGVlMWI4NzJhNDE3NGNiZTYzMWVlNjRl MgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDQzCnpjbWVBU0BOPyhvbEh5 YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHYk1mPE4lKSNTME1mMWVEfj1NY0U/ eGgtYUF3Twp6PylrMkYmJHIoX1ErPDQ7JmJRQU96SS1fTD5EYFZtQDMhNE5S ZFI1RiNPPnFkVXE3QXd7Qz54V20kTj47bilVaDMKejt4QkkoZXxiSVleUSgh VVVObkF3KGUoWXArSVA9KWUqSmpqXlZeTGRvPV5EclYjNFApM3ZNNHpgMSpG aXR6IXxOCnpVbz9NdClxQyR1P2JuWS1LZmx9akAlNGdGdWprIThuUzF3NCkh UWQ0LWFjNyRfZiptR20wRF9WP2BRKl4jYUkmTAp6N3RHLUI+XyFAcCEmJUBG U3EhOC16fVczJXdqR2NXQDlFK2dCNV5yNlZGNmJ7Tj5ZLWBHdm0hMEhmPTBj SUp2bz8KenNQT1pMUG1UPXMlKj97ODhSanBUdSVUbmNqMiRnWU1DMWI7cVQy ayF7TmZ3fkp0SkwzbW94P1gjeVNVayYrZUQhCnphSTlmdDxDQmZHdHp8YUpV aXJBcmZgUUAyVEdrekItVWdRZ3R4XyM8alZNVjtFSj9MV0U9bVBiM2BQY3Ey RCprdQp6eCgwP0pNZ34/VSMjU2IjKzZKYXAxX3R4cT44KFExa2VpPjluTnx0 V1V8PFE+MDkwKmFXbmMhO2FCNnohOGxWT1MKTVBnZyZlYnhzTFEwN2UoYWtw S1Z5CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWlu dC9zdGF0aWMvaW1nL3VuaXF1ZV9jb25zdHJhaW50LnBuZyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3N0 YXRpYy9pbWcvdW5pcXVlX2NvbnN0cmFpbnQucG5nCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAuLmU4Mjg1NzIzNWVkMWQ1YmIzNTFiOTgxYzQ0N2VjMzM3MGQ0 OTVmYTkKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQyMgp6Y21lQVNATj8o b2xIeWB1VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JLfVZ9TVZIRTBBdHBkUDY1 fFp7T05HYz8mUEsKejlsa1Q/JXd5bD82R2RDRWd8OXFjditNVHFEXkw1NS1P SmleSEZXOFArTVJiWW10MldoYT1DV2ZVRipVX3R2bH5VCnpGMSVXfDwkZzs0 YEomfUZxVUsrKC19SW4kK2tAeWlIeWJ1UURxREloWnVhZWxiJnZEci1ITXhl cik9NWRSajEhOQp6SXtJcURqXzF3bXA3dn5kdjAocTNIT0pvUDMxbW5COWw9 LTw8UUw0fkBhI3Eha2klS3Y1bV5rUko7MiFRV1ZSaVUKejUjI0NONyRSfUd4 NmhSQ0ttZDwoZVFhNzwrSyZIPitOR0lCQSo7O29FalBDUShCeiEzViFDSzNe VCFMa216NVp7CnpKKzg5NShYN3oocU8pVk5Od1J8ZXNWPzxiJWJzP3dsYUo2 bm1VK3kzITx5VDViSHFLfkR4M1hfSGVWXnN7SG5fNAp6Z2JtT2gpZV9mO2w5 YUBmUklCOG9SM09EKldNRjhaWWlPaXZVPklVI1V9YSkjV24hdnJVfXxNeEZ6 PW4tRGlqVTUKbmA2LSFjbEBKWEVtUzdEKSloMVIzVylLYWhyaVpRcFlHQ2tt Xj5iUDBsK1hrS0dRNnlDCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5k ZXhfY29uc3RyYWludC90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9qcy9p bmRleF9jb25zdHJhaW50LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2Nv bnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2Nv bnN0cmFpbnQvanMvaW5kZXhfY29uc3RyYWludC5qcwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYThmMjllCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4 X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvanMvaW5k ZXhfY29uc3RyYWludC5qcwpAQCAtMCwwICsxLDI5NyBAQAorZGVmaW5lKAor ICAgICAgICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUu c3RyaW5nJywgJ3BnYWRtaW4nLAorICAgICAgICAncGdhZG1pbi5icm93c2Vy JywgJ2FsZXJ0aWZ5JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10s CitmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0 aWZ5KSB7CisKKyAgLy8gRXh0ZW5kIHRoZSBicm93c2VyJ3Mgbm9kZSBjbGFz cyBmb3IgaW5kZXggY29uc3RyYWludCBub2RlCisgIGlmICghcGdCcm93c2Vy Lk5vZGVzWyd7e25vZGVfdHlwZX19J10pIHsKKyAgICBwZ0FkbWluLkJyb3dz ZXIuTm9kZXNbJ3t7bm9kZV90eXBlfX0nXSA9IHBnQnJvd3Nlci5Ob2RlLmV4 dGVuZCh7CisgICAgICB0eXBlOiAne3tub2RlX3R5cGV9fScsCisgICAgICBs YWJlbDogJ3t7IG5vZGVfbGFiZWwgfX0nLAorICAgICAgY29sbGVjdGlvbl90 eXBlOiAnY29sbC1jb25zdHJhaW50cycsCisgICAgICBoYXNTUUw6IHRydWUs CisgICAgICBoYXNEZXBlbmRzOiBmYWxzZSwKKyAgICAgIHBhcmVudF90eXBl OiAndGFibGUnLAorICAgICAgY2FuRHJvcDogdHJ1ZSwKKyAgICAgIGNhbkRy b3BDYXNjYWRlOiB0cnVlLAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7Cisg ICAgICAgIC8qIEF2b2lkIG11bHRpcGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51 cyAqLworICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAg ICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1 ZTsKKworICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKFt7CisgICAgICAg ICAgbmFtZTogJ2NyZWF0ZV97e25vZGVfdHlwZX19X29uX2NvbGwnLCBub2Rl OiAnY29sbC1jb25zdHJhaW50cycsIG1vZHVsZTogdGhpcywKKyAgICAgICAg ICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAn c2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdj cmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBub2RlX2xhYmVsIH19 JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24te3tub2RlX3R5 cGV9fScsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0K KyAgICAgICAgICB7JSBpZiBub2RlX3R5cGUgPT0gJ3ByaW1hcnlfa2V5JyV9 CisgICAgICAgICAgLGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgICB7 JSBlbmRpZiAlfQorICAgICAgICB9CisgICAgICAgIF0pOworICAgICAgfSwK KyAgICAgIHslIGlmIG5vZGVfdHlwZSA9PSAncHJpbWFyeV9rZXknJX0KKyAg ICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24obm9kZSwgaXRlbSwgZGF0YSkgewor ICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUgb25seSBvbmUgcHJpbWFyeSBr ZXkgcGVyIHRhYmxlLgorICAgICAgICB2YXIgY2hpbGRyZW4gPSBwZ0Jyb3dz ZXIudHJlZS5jaGlsZHJlbihhcmd1bWVudHNbMV0sIGZhbHNlKSwKKyAgICAg ICAgICBwcmltYXJ5X2tleV9mb3VuZCA9IGZhbHNlOworCisgICAgICAgIF8u ZWFjaChjaGlsZHJlbiwgZnVuY3Rpb24oY2hpbGQpeworICAgICAgICAgIGRh dGEgPSBwZ0Jyb3dzZXIudHJlZS5pdGVtRGF0YSgkKGNoaWxkKSk7CisgICAg ICAgICAgaWYgKCFwcmltYXJ5X2tleV9mb3VuZCAmJiBkYXRhLl90eXBlID09 ICJwcmltYXJ5X2tleSIpIHsKKyAgICAgICAgICAgIHByaW1hcnlfa2V5X2Zv dW5kID0gdHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAg ICAgIHJldHVybiAhcHJpbWFyeV9rZXlfZm91bmQ7CisgICAgICB9LAorICAg ICAgeyUgZW5kaWYgJX0KKyAgICAgIC8vIERlZmluZSB0aGUgbW9kZWwgZm9y IGluZGV4IGNvbnN0cmFpbnQgbm9kZQorICAgICAgbW9kZWw6IHBnQWRtaW4u QnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1bHRz OiB7CisgICAgICAgICAgbmFtZTogdW5kZWZpbmVkLAorICAgICAgICAgIG9p ZDogdW5kZWZpbmVkLAorICAgICAgICAgIGNvbW1lbnQ6IHVuZGVmaW5lZCwK KyAgICAgICAgICBzcGNuYW1lOiAicGdfZGVmYXVsdCIsCisgICAgICAgICAg aW5kZXg6IHVuZGVmaW5lZCwKKyAgICAgICAgICBmaWxsZmFjdG9yOiB1bmRl ZmluZWQsCisgICAgICAgICAgY29uZGVmZXJyYWJsZTogdW5kZWZpbmVkLAor ICAgICAgICAgIGNvbmRlZmVycmVkOiB1bmRlZmluZWQsCisgICAgICAgICAg Y29sdW1uczogW10KKyAgICAgICAgfSwKKworICAgICAgICAvLyBEZWZpbmUg dGhlIHNjaGVtYSBmb3IgdGhlIGluZGV4IGNvbnN0cmFpbnQgbm9kZQorICAg ICAgICBzY2hlbWE6IFt7CisgICAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6 ICd7eyBfKCdOYW1lJykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAgICAg bW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10KKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdvaWQnLCBsYWJlbDone3sgXygnT0lE JykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4 dCcgLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ2NvbW1lbnQnLCBsYWJlbDone3sgXygnQ29tbWVudCcpIH19 JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ211bHRpbGlu ZScsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddCisg ICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ2NvbHVtbnMnLCBsYWJl bDogJ3t7IF8oJ0NvbHVtbnMnKSB9fScsCisgICAgICAgICAgICB0eXBlOiAn Y29sbGVjdGlvbicsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19Jywg ZWRpdGFibGU6dHJ1ZSwKKyAgICAgICAgICAgIGNhbkRlbGV0ZTogdHJ1ZSwg Y2FuQWRkOiB0cnVlLAorICAgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0u TXVsdGlTZWxlY3RBamF4Q29udHJvbC5leHRlbmQoeworICAgICAgICAgICAg ICBmb3JtYXR0ZXI6IHsKKyAgICAgICAgICAgICAgICBmcm9tUmF3OiBmdW5j dGlvbiAocmF3RGF0YSwgbW9kZWwpIHsKKyAgICAgICAgICAgICAgICAgIHZh ciByZXMgPSBfLmlzT2JqZWN0KHJhd0RhdGEpID8KKyAgICAgICAgICAgICAg ICAgICAgICAgIHJhd0RhdGEgOiBKU09OLnBhcnNlKHJhd0RhdGEpOworCisg ICAgICAgICAgICAgICAgICByZXR1cm4gXy5wbHVjayhyZXMsICdjb2x1bW4n KTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHRvUmF3 OiBmdW5jdGlvbiAoZm9ybWF0dGVkRGF0YSwgbW9kZWwpIHsKKyAgICAgICAg ICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWREYXRhOworICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgZGVmYXVs dHM6IF8uZXh0ZW5kKAorICAgICAgICAgICAgICAgIHt9LAorICAgICAgICAg ICAgICAgIEJhY2tmb3JtLk5vZGVMaXN0QnlOYW1lQ29udHJvbC5wcm90b3R5 cGUuZGVmYXVsdHMsCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgc2VsZWN0MjogeworICAgICAgICAgICAgICAgICAgICBtdWx0aXBs ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgYWxsb3dDbGVhcjogdHJ1 ZSwKKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICdzdHlsZScsCisgICAg ICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAne3sgXygnU2VsZWN0IHRo ZSBjb2x1bW4ocyknKSB9fScsCisgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICApLAorICAgICAgICAgICAg ICBvbkNoYW5nZTogZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIHZh ciBtb2RlbCA9IHRoaXMubW9kZWwsCisgICAgICAgICAgICAgICAgICAgICRl bCA9ICQoZS50YXJnZXQpLAorICAgICAgICAgICAgICAgICAgICBhdHRyQXJy ID0gdGhpcy5maWVsZC5nZXQoIm5hbWUiKS5zcGxpdCgnLicpLAorICAgICAg ICAgICAgICAgICAgICBuYW1lID0gYXR0ckFyci5zaGlmdCgpLAorICAgICAg ICAgICAgICAgICAgICBwYXRoID0gYXR0ckFyci5qb2luKCcuJyksCisgICAg ICAgICAgICAgICAgICAgIHZhbHMgPSB0aGlzLmdldFZhbHVlRnJvbURPTSgp LAorICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uID0gbW9kZWwuZ2V0 KG5hbWUpLAorICAgICAgICAgICAgICAgICAgICByZW1vdmVkID0gW107CisK KyAgICAgICAgICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmcodGhpcy5tb2Rl bCwgImNoYW5nZToiICsgbmFtZSwgdGhpcy5yZW5kZXIpOworCisgICAgICAg ICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBJdGVyYXRlIHRocm91 Z2ggYWxsIHRoZSB2YWx1ZXMsIGFuZCBmaW5kIG91dCBob3cgbWFueSBhcmUg YWxyZWFkeQorICAgICAgICAgICAgICAgICAqIHByZXNlbnQgaW4gdGhlIGNv bGxlY3Rpb24uCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAg ICAgY29sbGVjdGlvbi5lYWNoKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAg ICAgICAgICAgdmFyIGNvbHVtbiA9IG0uZ2V0KCdjb2x1bW4nKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIGlkeCA9IF8uaW5kZXhPZih2YWxzLCBjb2x1 bW4pOworCisgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPiAtMSkgewor ICAgICAgICAgICAgICAgICAgICAgIHZhbHMuc3BsaWNlKGlkeCwgMSk7Cisg ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg ICAgICAgcmVtb3ZlZC5wdXNoKGNvbHVtbik7CisgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAg ICAvKgorICAgICAgICAgICAgICAgICAqIEFkZGluZyBuZXcgdmFsdWVzCisg ICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgXy5lYWNoKHZh bHMsIGZ1bmN0aW9uKHYpIHsKKyAgICAgICAgICAgICAgICAgIGNvbGxlY3Rp b24uYWRkKHtjb2x1bW46IHZ9KTsKKyAgICAgICAgICAgICAgICB9KTsKKwor ICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogUmVtb3Zp bmcgdW53YW50ZWQhCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAg ICAgICAgXy5lYWNoKHJlbW92ZWQsIGZ1bmN0aW9uKHYpIHsKKyAgICAgICAg ICAgICAgICAgIGNvbGxlY3Rpb24ucmVtb3ZlKGNvbGxlY3Rpb24ud2hlcmUo e2NvbHVtbjogdn0pKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAg ICAgICAgICAgIHRoaXMubGlzdGVuVG8odGhpcy5tb2RlbCwgImNoYW5nZToi ICsgbmFtZSwgdGhpcy5yZW5kZXIpOworICAgICAgICAgICAgICB9CisgICAg ICAgICAgICB9KSwKKyAgICAgICAgICAgIGRlcHM6IFsnaW5kZXgnXSwgbm9k ZTogJ2NvbHVtbicsCisgICAgICAgICAgICBtb2RlbDogcGdCcm93c2VyLk5v ZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgICAgICAgZGVmYXVsdHM6IHsK KyAgICAgICAgICAgICAgICBjb2x1bW46IHVuZGVmaW5lZAorICAgICAgICAg ICAgICB9LAorICAgICAgICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7 CisgICAgICAgICAgICAgICAgdmFyIGNvbHVtbnMgPSB0aGlzLmhhbmRsZXIu Z2V0KCdjb2x1bW5zJyk7CisgICAgICAgICAgICAgICAgaWYgKCghXy5pc1Vu ZGVmaW5lZChjb2x1bW5zKSAmJiAhXy5pc051bGwoY29sdW1ucykgJiYgY29s dW1ucy5sZW5ndGggPiAwKSkgeworICAgICAgICAgICAgICAgICAgdGhpcy5o YW5kbGVyLmVycm9yTW9kZWwudW5zZXQoImNvbHVtbnMiKTsKKyAgICAgICAg ICAgICAgICAgIHRoaXMuaGFuZGxlci5lcnJvck1vZGVsLmNsZWFyKCk7Cisg ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHZh ciBtc2cgPSAne3sgXygnUGxlYXNlIHNwZWNpZnkgY29sdW1uKHMpLicpIH19 JzsKKyAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlci5lcnJvck1vZGVs LnNldCgnY29sdW1ucycsIG1zZyk7CisgICAgICAgICAgICAgICAgICByZXR1 cm4gbXNnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KSwK KyAgICAgICAgICAgIHRyYW5zZm9ybSA6IGZ1bmN0aW9uKGRhdGEpeworICAg ICAgICAgICAgICB2YXIgcmVzID0gW107CisgICAgICAgICAgICAgIGlmIChk YXRhICYmIF8uaXNBcnJheShkYXRhKSkgeworICAgICAgICAgICAgICAgIF8u ZWFjaChkYXRhLCBmdW5jdGlvbihkKSB7CisgICAgICAgICAgICAgICAgICBy ZXMucHVzaCh7bGFiZWw6IGQubGFiZWwsIHZhbHVlOiBkLmxhYmVsfSk7Cisg ICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICByZXR1cm4gcmVzOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAg IHNlbGVjdDI6e2FsbG93Q2xlYXI6ZmFsc2V9LAorICAgICAgICAgICAgZGlz YWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgLy8gV2UgY2Fu J3QgdXBkYXRlIGNvbHVtbnMgb2YgZXhpc3RpbmcgaW5kZXggY29uc3RyYWlu dC4KKyAgICAgICAgICAgICAgaWYgKCFtLmlzTmV3KCkpIHsKKyAgICAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgIC8vIERpc2FibGUgaWYgaW5kZXggaXMgc2VsZWN0ZWQuCisg ICAgICAgICAgICAgIHZhciBpbmRleCA9IG0uZ2V0KCdpbmRleCcpOworICAg ICAgICAgICAgICAgIGlmKF8uaXNVbmRlZmluZWQoaW5kZXgpIHx8IGluZGV4 ID09ICcnKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHZh ciBjb2wgPSBtLmdldCgnY29sdW1ucycpOworICAgICAgICAgICAgICAgICAg Y29sLnJlc2V0KCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ3NwY25hbWUnLCBsYWJlbDogJ3t7IF8o J1RhYmxlc3BhY2UnKSB9fScsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBn cm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCisgICAgICAgICAgY29u dHJvbDogJ25vZGUtbGlzdC1ieS1uYW1lJywgbm9kZTogJ3RhYmxlc3BhY2Un LAorICAgICAgICAgIGRlcHM6IFsnaW5kZXgnXSwKKyAgICAgICAgICBzZWxl Y3QyOnthbGxvd0NsZWFyOmZhbHNlfSwKKyAgICAgICAgICBmaWx0ZXI6IGZ1 bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIC8vIERvbid0IHNob3cgcGdfZ2xv YmFsIHRhYmxlc3BhY2UgaW4gc2VsZWN0aW9uLgorICAgICAgICAgICAgaWYg KG0ubGFiZWwgPT0gInBnX2dsb2JhbCIpIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICAgIGVsc2UgcmV0dXJuIHRydWU7CisgICAgICAgICAgfSwKKyAgICAg ICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgLy8g RGlzYWJsZSBpZiBpbmRleCBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgIHZh ciBpbmRleCA9IG0uZ2V0KCdpbmRleCcpOworICAgICAgICAgICAgICBpZihf LmlzVW5kZWZpbmVkKGluZGV4KSB8fCBpbmRleCA9PSAnJykgeworICAgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Cisg ICAgICAgICAgICAgICAgICBtLnNldCgnc3BjbmFtZScsICcnKTsKKyAgICAg ICAgICAgICAgICB9LDEwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICdpbmRleCcsIGxhYmVsOiAne3sgXygnSW5kZXgn KSB9fScsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBncm91cDogJ3t7IF8o J0RlZmluaXRpb24nKSB9fScsCisgICAgICAgICAgY29udHJvbDogJ25vZGUt YWpheC1vcHRpb25zJywgdXJsOiJpbmRpY2VzIiwKKyAgICAgICAgICBzZWxl Y3QyOnthbGxvd0NsZWFyOnRydWV9LAorICAgICAgICAgIGRpc2FibGVkOiBm dW5jdGlvbihtKSB7CisgICAgICAgICAgICAvLyBXZSBjYW4ndCB1cGRhdGUg aW5kZXggb2YgZXhpc3RpbmcgaW5kZXggY29uc3RyYWludC4KKyAgICAgICAg ICAgIHJldHVybiAhbS5pc05ldygpOworICAgICAgICAgIH0KKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdmaWxsZmFjdG9yJywgbGFiZWw6ICd7eyBf KCdGaWxsIGZhY3RvcicpIH19JywgZGVwczogWydpbmRleCddLAorICAgICAg ICAgIHR5cGU6ICdpbnQnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9 fScsIGFsbG93TnVsbDogdHJ1ZSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVu Y3Rpb24obSkgeworICAgICAgICAgICAgLy8gRGlzYWJsZSBpZiBpbmRleCBp cyBzZWxlY3RlZC4KKyAgICAgICAgICAgIHZhciBpbmRleCA9IG0uZ2V0KCdp bmRleCcpOworICAgICAgICAgICAgICBpZihfLmlzVW5kZWZpbmVkKGluZGV4 KSB8fCBpbmRleCA9PSAnJykgeworICAgICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CisgICAgICAgICAgICAgICAgICBt LnNldCgnZmlsbGZhY3RvcicsIG51bGwpOworICAgICAgICAgICAgICAgIH0s MTApOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAg IGlkOiAnY29uZGVmZXJyYWJsZScsIGxhYmVsOiAne3sgXygnRGVmZXJyYWJs ZScpIH19JywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgZ3JvdXA6ICd7 eyBfKCdEZWZpbml0aW9uJykgfX0nLCBkZXBzOiBbJ2luZGV4J10sCisgICAg ICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIC8v IFdlIGNhbid0IHVwZGF0ZSBjb25kZWZlcnJhYmxlIG9mIGV4aXN0aW5nIGlu ZGV4IGNvbnN0cmFpbnQuCisgICAgICAgICAgICBpZiAoIW0uaXNOZXcoKSkg eworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg fQorICAgICAgICAgICAgLy8gRGlzYWJsZSBpZiBpbmRleCBpcyBzZWxlY3Rl ZC4KKyAgICAgICAgICAgIHZhciBpbmRleCA9IG0uZ2V0KCdpbmRleCcpOwor ICAgICAgICAgICAgaWYoXy5pc1VuZGVmaW5lZChpbmRleCkgfHwgaW5kZXgg PT0gJycpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j dGlvbigpeworICAgICAgICAgICAgICAgIG0uc2V0KCdjb25kZWZlcnJhYmxl JywgZmFsc2UpOworICAgICAgICAgICAgICB9LDEwKTsKKyAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2NvbmRlZmVycmVkJywgbGFi ZWw6ICd7eyBfKCdEZWZlcnJlZCcpIH19JywKKyAgICAgICAgICB0eXBlOiAn c3dpdGNoJywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAg ICAgICAgIGRlcHM6IFsnY29uZGVmZXJyYWJsZSddLAorICAgICAgICAgIGRp c2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAvLyBXZSBjYW4n dCB1cGRhdGUgY29uZGVmZXJyZWQgb2YgZXhpc3RpbmcgaW5kZXggY29uc3Ry YWludC4KKyAgICAgICAgICAgIGlmICghbS5pc05ldygpKSB7CisgICAgICAg ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAg ICAgLy8gRGlzYWJsZSBpZiBjb25kZWZlcnJlZCBpcyBmYWxzZSBvciB1bnNl bGVjdGVkLgorICAgICAgICAgICAgaWYobS5nZXQoJ2NvbmRlZmVycmFibGUn KSA9PSB0cnVlKSB7CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQo ZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICAgICBtLnNldCgnY29uZGVmZXJy ZWQnLCBmYWxzZSk7CisgICAgICAgICAgICAgIH0sMTApOworICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9 CisgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1 bmN0aW9uKCkgeworICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigp OworCisgICAgICAgICAgdmFyIGNvbHVtbnMgPSB0aGlzLmdldCgnY29sdW1u cycpLAorICAgICAgICAgICAgaW5kZXggPSB0aGlzLmdldCgnaW5kZXgnKTsK KworICAgICAgICAgICAgaWYgKChfLmlzVW5kZWZpbmVkKGluZGV4KSB8fCBT dHJpbmcoaW5kZXgpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycp ICYmCisgICAgICAgICAgICAgICAgKF8uaXNVbmRlZmluZWQoY29sdW1ucykg fHwgXy5pc051bGwoY29sdW1ucykgfHwgY29sdW1ucy5sZW5ndGggPCAxKSkg eworICAgICAgICAgICAgICB2YXIgbXNnID0gJ3t7IF8oJ1BsZWFzZSBzcGVj aWZ5IGNvbHVtbnMuJykgfX0nOworICAgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwuc2V0KCdjb2x1bW5zJywgbXNnKTsKKyAgICAgICAgICAgICAgcmV0 dXJuIG1zZzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVybiBu dWxsOworICAgICAgICB9CisgICAgICB9KQorICB9KTsKKyAgfQorCisgIHJl dHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ3t7bm9kZV90eXBlfX0nXTsKK30pOwpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRz L2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQv c3FsL2JlZ2luLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJh aW50cy9pbmRleF9jb25zdHJhaW50L3RlbXBsYXRlcy9pbmRleF9jb25zdHJh aW50L3NxbC9iZWdpbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNThiZmVlMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3Rl bXBsYXRlcy9pbmRleF9jb25zdHJhaW50L3NxbC9iZWdpbi5zcWwKQEAgLTAs MCArMSBAQAorQkVHSU47ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRz L2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQv c3FsL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3Ry YWludHMvaW5kZXhfY29uc3RyYWludC90ZW1wbGF0ZXMvaW5kZXhfY29uc3Ry YWludC9zcWwvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi42MWE3MTdlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQv dGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2NyZWF0ZS5zcWwKQEAg LTAsMCArMSwxMiBAQAorQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLnRhYmxlKSB9fQorICAgIEFERHslIGlmIGRhdGEu bmFtZSAlfSBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUp IH19eyUgZW5kaWYlfSB7e2NvbnN0cmFpbnRfbmFtZX19IHslIGlmIGRhdGEu aW5kZXggJX1VU0lORyBJTkRFWCB7eyBjb25ufHF0SWRlbnQoZGF0YS5pbmRl eCkgfX17JSBlbHNlICV9CisoeyUgZm9yIGNvbHVtbm9iaiBpbiBkYXRhLmNv bHVtbnMgJX17JSBpZiBsb29wLmluZGV4ICE9IDEgJX0KKywgeyUgZW5kaWYg JX17eyBjb25ufHF0SWRlbnQoY29sdW1ub2JqLmNvbHVtbil9fXslIGVuZGZv ciAlfSl7JSBpZiBkYXRhLmZpbGxmYWN0b3IgJX0KKworICAgIFdJVEggKEZJ TExGQUNUT1I9e3tkYXRhLmZpbGxmYWN0b3J9fSl7JSBlbmRpZiAlfXslIGlm IGRhdGEuc3BjbmFtZSBhbmQgZGF0YS5zcGNuYW1lICE9ICJwZ19kZWZhdWx0 IiAlfQorCisgICAgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSB7eyBjb25ufHF0 SWRlbnQoZGF0YS5zcGNuYW1lKSB9fXslIGVuZGlmICV9eyUgZW5kaWYgJX17 JSBpZiBkYXRhLmNvbmRlZmVycmFibGUgJX0KKworICAgIERFRkVSUkFCTEV7 JSBpZiBkYXRhLmNvbmRlZmVycmVkICV9CisgSU5JVElBTExZIERFRkVSUkVE eyUgZW5kaWYlfQoreyUgZW5kaWYlfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29u c3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZW1wbGF0ZXMvaW5kZXhfY29u c3RyYWludC9zcWwvZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3RlbXBsYXRlcy9pbmRl eF9jb25zdHJhaW50L3NxbC9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjIwOTY3OTUKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29u c3RyYWludC90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvZGVsZXRl LnNxbApAQCAtMCwwICsxLDMgQEAKK3slIGlmIGRhdGEgJX0KK0FMVEVSIFRB QkxFIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSkg fX0gRFJPUCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUp IH19eyUgaWYgY2FzY2FkZSV9IENBU0NBREV7JSBlbmRpZiAlfTsKK3slIGVu ZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2Nv bnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2VuZC5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhf Y29uc3RyYWludC90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvZW5k LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmQw OWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4 X2NvbnN0cmFpbnQvc3FsL2VuZC5zcWwKQEAgLTAsMCArMSBAQAorRU5EOwpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50 L3RlbXBsYXRlcy9pbmRleF9jb25zdHJhaW50L3NxbC9nZXRfY29uc3RyYWlu dF9jb2xzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50 cy9pbmRleF9jb25zdHJhaW50L3RlbXBsYXRlcy9pbmRleF9jb25zdHJhaW50 L3NxbC9nZXRfY29uc3RyYWludF9jb2xzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi40YjJmZWUyCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2Nv bnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2dldF9j b25zdHJhaW50X2NvbHMuc3FsCkBAIC0wLDAgKzEsNyBAQAoreyUgZm9yIG4g aW4gcmFuZ2UoY29sY250fGludCkgJX0KK3slIGlmIGxvb3AuaW5kZXggIT0g MSAlfQorVU5JT04gU0VMRUNUICBwZ19nZXRfaW5kZXhkZWYoe3sgY2lkfHN0 cmluZyB9fSwge3sgbG9vcC5pbmRleHxzdHJpbmcgfX0sIHRydWUpIEFTIGNv bHVtbgoreyUgZWxzZSAlfQorU0VMRUNUICBwZ19nZXRfaW5kZXhkZWYoe3sg Y2lkfHN0cmluZyB9fSAsIHt7IGxvb3AuaW5kZXh8c3RyaW5nIH19ICwgdHJ1 ZSkgQVMgY29sdW1uCit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVt cGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2dldF9pbmRpY2VzLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25z dHJhaW50L3RlbXBsYXRlcy9pbmRleF9jb25zdHJhaW50L3NxbC9nZXRfaW5k aWNlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u YjljYWIyMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3RlbXBsYXRlcy9p bmRleF9jb25zdHJhaW50L3NxbC9nZXRfaW5kaWNlcy5zcWwKQEAgLTAsMCAr MSwzIEBACitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzLCBwZ19pbmRl eAorV0hFUkUgcGdfY2xhc3Mub2lkPWluZGV4cmVsaWQKK0FORCBpbmRyZWxp ZD17eyB0aWQgfX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5k ZXhfY29uc3RyYWludC90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwv Z2V0X25hbWUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFp bnRzL2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFp bnQvc3FsL2dldF9uYW1lLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5hMWJlYWZiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQv dGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2dldF9uYW1lLnNxbApA QCAtMCwwICsxLDE1IEBACitTRUxFQ1QgY2xzLnJlbG5hbWUgYXMgbmFtZQor RlJPTSBwZ19pbmRleCBpZHgKK0pPSU4gcGdfY2xhc3MgY2xzIE9OIGNscy5v aWQ9aW5kZXhyZWxpZAorTEVGVCBKT0lOIHBnX2RlcGVuZCBkZXAgT04gKGRl cC5jbGFzc2lkID0gY2xzLnRhYmxlb2lkIEFORAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRlcC5vYmppZCA9IGNscy5vaWQgQU5ECisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGVwLnJlZm9ianN1YmlkID0gJzAnCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5EIGRlcC5yZWZjbGFzc2lk PShTRUxFQ1Qgb2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBGUk9NIHBnX2NsYXNzCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSByZWxu YW1lPSdwZ19jb25zdHJhaW50JykgQU5ECisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVwLmRlcHR5cGU9J2knKQorTEVGVCBPVVRFUiBKT0lOIHBn X2NvbnN0cmFpbnQgY29uIE9OIChjb24udGFibGVvaWQgPSBkZXAucmVmY2xh c3NpZCBBTkQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uLm9pZCA9IGRlcC5yZWZvYmppZCkKK1dIRVJFIGluZHJlbGlkID0g e3t0aWR9fTo6b2lkCitBTkQgY29udHlwZT0ne3tjb25zdHJhaW50X3R5cGV9 fScKK0FORCBjbHMub2lkID0ge3tjaWR9fTo6b2lkOwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3RlbXBsYXRlcy9p bmRleF9jb25zdHJhaW50L3NxbC9nZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3RlbXBs YXRlcy9pbmRleF9jb25zdHJhaW50L3NxbC9nZXRfb2lkLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjFmZjUwCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRz L2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQv c3FsL2dldF9vaWQuc3FsCkBAIC0wLDAgKzEsNCBAQAorU0VMRUNUIGN0LmNv bmluZGlkIGFzIG9pZAorRlJPTSBwZ19jb25zdHJhaW50IGN0CitXSEVSRSBj b250eXBlPSd7e2NvbnN0cmFpbnRfdHlwZX19JyBBTkQKK2N0LmNvbm5hbWUg PSB7eyBuYW1lfHF0TGl0ZXJhbCB9fTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29u c3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZW1wbGF0ZXMvaW5kZXhfY29u c3RyYWludC9zcWwvZ2V0X29pZF93aXRoX3RyYW5zYWN0aW9uLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJh aW50L3RlbXBsYXRlcy9pbmRleF9jb25zdHJhaW50L3NxbC9nZXRfb2lkX3dp dGhfdHJhbnNhY3Rpb24uc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjlhZDgwMjAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC90 ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvZ2V0X29pZF93aXRoX3Ry YW5zYWN0aW9uLnNxbApAQCAtMCwwICsxLDUgQEAKK1NFTEVDVCBjdC5jb25p bmRpZCBhcyBvaWQsCisgICAgY3QuY29ubmFtZSBhcyBuYW1lCitGUk9NIHBn X2NvbnN0cmFpbnQgY3QKK1dIRVJFIGNvbnR5cGU9J3t7Y29uc3RyYWludF90 eXBlfX0nIEFORAorICAgIGNvbnJlbGlkID0ge3t0aWR9fTo6b2lkIExJTUlU IDE7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0 cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2dldF9wYXJl bnQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2lu ZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3Fs L2dldF9wYXJlbnQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmE2NTI4NTcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZW1w bGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvZ2V0X3BhcmVudC5zcWwKQEAg LTAsMCArMSw3IEBACitTRUxFQ1QgbnNwLm5zcG5hbWUgQVMgc2NoZW1hLAor ICAgIHJlbC5yZWxuYW1lIEFTIHRhYmxlCitGUk9NCisgICAgcGdfY2xhc3Mg cmVsCitKT0lOIHBnX25hbWVzcGFjZSBuc3AKK09OIHJlbC5yZWxuYW1lc3Bh Y2UgPSBuc3Aub2lkOjppbnQKK1dIRVJFIHJlbC5vaWQgPSB7e3RpZH19Ojpp bnQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3Ry YWludC90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvZ3JhbnQuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2Nv bnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2dyYW50 LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmIw ZWE1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4 X2NvbnN0cmFpbnQvc3FsL2dyYW50LnNxbApAQCAtMCwwICsxLDQgQEAKK3sl IGlmIGRhdGEuY29tbWVudCAlfQorQ09NTUVOVCBPTiBDT05TVFJBSU5UIHt7 IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19IE9OIHt7IGNvbm58cXRJZGVu dChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSkgfX0KKyAgICBJUyB7eyBkYXRh LmNvbW1lbnR8cXRMaXRlcmFsIH19OworeyUgZW5kaWYgJX0KXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZW1wbGF0 ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvbm9kZXMuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVt cGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL25vZGVzLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDk2YjQ0Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRz L2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQv c3FsL25vZGVzLnNxbApAQCAtMCwwICsxLDE0IEBACitTRUxFQ1QgY2xzLm9p ZCwgY2xzLnJlbG5hbWUgYXMgbmFtZQorRlJPTSBwZ19pbmRleCBpZHgKK0pP SU4gcGdfY2xhc3MgY2xzIE9OIGNscy5vaWQ9aW5kZXhyZWxpZAorTEVGVCBK T0lOIHBnX2RlcGVuZCBkZXAgT04gKGRlcC5jbGFzc2lkID0gY2xzLnRhYmxl b2lkIEFORAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcC5vYmpp ZCA9IGNscy5vaWQgQU5ECisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGVwLnJlZm9ianN1YmlkID0gJzAnIEFORAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRlcC5yZWZjbGFzc2lkPShTRUxFQ1Qgb2lkCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcGdf Y2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgV0hFUkUgcmVsbmFtZT0ncGdfY29uc3RyYWludCcpIEFORAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRlcC5kZXB0eXBlPSdpJykKK0xF RlQgT1VURVIgSk9JTiBwZ19jb25zdHJhaW50IGNvbiBPTiAoY29uLnRhYmxl b2lkID0gZGVwLnJlZmNsYXNzaWQgQU5ECisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbi5vaWQgPSBkZXAucmVmb2JqaWQpCitX SEVSRSBpbmRyZWxpZCA9IHt7dGlkfX06Om9pZAorQU5EIGNvbnR5cGU9J3t7 Y29uc3RyYWludF90eXBlfX0nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFp bnRzL2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFp bnQvc3FsL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4 X2NvbnN0cmFpbnQvc3FsL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlYWJkZDcKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhf Y29uc3RyYWludC90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvcHJv cGVydGllcy5zcWwKQEAgLTAsMCArMSwyOSBAQAorU0VMRUNUIGNscy5vaWQs CisgICAgY2xzLnJlbG5hbWUgYXMgbmFtZSwKKyAgICBpbmRuYXR0cywKKyAg ICBDT0FMRVNDRShzcGNuYW1lLCAncGdfZGVmYXVsdCcpIGFzIHNwY25hbWUs CisgICAgQ0FTRSBjb250eXBlCisgICAgICAgIFdIRU4gJ3AnIFRIRU4gZGVz cC5kZXNjcmlwdGlvbgorICAgICAgICBXSEVOICd1JyBUSEVOIGRlc3AuZGVz Y3JpcHRpb24KKyAgICAgICAgV0hFTiAneCcgVEhFTiBkZXNwLmRlc2NyaXB0 aW9uCisgICAgICAgIEVMU0UgZGVzLmRlc2NyaXB0aW9uCisgICAgRU5EIEFT IGNvbW1lbnQsCisgICAgY29uZGVmZXJyYWJsZSwKKyAgICBjb25kZWZlcnJl ZCwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKGNscy5yZWxvcHRp b25zLCAnLCcpIGZyb20gJ2ZpbGxmYWN0b3I9KFswLTldKiknKSBBUyBmaWxs ZmFjdG9yCitGUk9NIHBnX2luZGV4IGlkeAorSk9JTiBwZ19jbGFzcyBjbHMg T04gY2xzLm9pZD1pbmRleHJlbGlkCitKT0lOIHBnX2NsYXNzIHRhYiBPTiB0 YWIub2lkPWluZHJlbGlkCitMRUZUIE9VVEVSIEpPSU4gcGdfdGFibGVzcGFj ZSB0YSBvbiB0YS5vaWQ9Y2xzLnJlbHRhYmxlc3BhY2UKK0pPSU4gcGdfbmFt ZXNwYWNlIG4gT04gbi5vaWQ9dGFiLnJlbG5hbWVzcGFjZQorSk9JTiBwZ19h bSBhbSBPTiBhbS5vaWQ9Y2xzLnJlbGFtCitMRUZUIEpPSU4gcGdfZGVwZW5k IGRlcCBPTiAoZGVwLmNsYXNzaWQgPSBjbHMudGFibGVvaWQgQU5EIGRlcC5v YmppZCA9IGNscy5vaWQgQU5EIGRlcC5yZWZvYmpzdWJpZCA9ICcwJyBBTkQg ZGVwLnJlZmNsYXNzaWQ9KFNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVS RSByZWxuYW1lPSdwZ19jb25zdHJhaW50JykgQU5EIGRlcC5kZXB0eXBlPSdp JykKK0xFRlQgT1VURVIgSk9JTiBwZ19jb25zdHJhaW50IGNvbiBPTiAoY29u LnRhYmxlb2lkID0gZGVwLnJlZmNsYXNzaWQgQU5EIGNvbi5vaWQgPSBkZXAu cmVmb2JqaWQpCitMRUZUIE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVz IE9OIChkZXMub2Jqb2lkPWNscy5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdf Y2xhc3MnOjpyZWdjbGFzcykKK0xFRlQgT1VURVIgSk9JTiBwZ19kZXNjcmlw dGlvbiBkZXNwIE9OIChkZXNwLm9iam9pZD1jb24ub2lkIEFORCBkZXNwLm9i anN1YmlkID0gMCBBTkQgZGVzcC5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6 OnJlZ2NsYXNzKQorV0hFUkUgaW5kcmVsaWQgPSB7e3RpZH19OjpvaWQKK3sl IGlmIGNpZCAlfQorQU5EIGNscy5vaWQgPSB7e2NpZH19OjpvaWQKK3slIGVu ZGlmICV9CitBTkQgY29udHlwZT0ne3tjb25zdHJhaW50X3R5cGV9fScKK09S REVSIEJZIGNscy5yZWxuYW1lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFp bnRzL2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFp bnQvc3FsL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29u c3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZW1wbGF0ZXMvaW5kZXhfY29u c3RyYWludC9zcWwvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5hZjc2ZDhlCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFp bnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL3VwZGF0ZS5zcWwK QEAgLTAsMCArMSwyMiBAQAoreyMjIyBTUUwgdG8gdXBkYXRlIGNvbnN0cmFp bnQgb2JqZWN0ICMjI30KK3slIGlmIGRhdGEgJX0KK3sjID09PT0gVG8gdXBk YXRlIGNvbnN0cmFpbnQgbmFtZSA9PT09ICN9Cit7JSBpZiBkYXRhLm5hbWUg IT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIFRBQkxFIHt7IGNvbm58cXRJZGVu dChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSkgfX0KKyAgICBSRU5BTUUgQ09O U1RSQUlOVCB7eyBjb25ufHF0SWRlbnQob19kYXRhLm5hbWUpIH19IFRPIHt7 IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19OworeyUgZW5kaWYgJX0KK3sj ID09PT0gVG8gdXBkYXRlIGNvbnN0cmFpbnQgdGFibGVzcGFjZSA9PT09ICN9 Cit7JSBpZiBkYXRhLnNwY25hbWUgYW5kIGRhdGEuc3BjbmFtZSAhPSBvX2Rh dGEuc3BjbmFtZSAlfQorQUxURVIgSU5ERVgge3sgY29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19CisgICAgU0VUIFRBQkxFU1BBQ0Ug e3sgY29ubnxxdElkZW50KGRhdGEuc3BjbmFtZSkgfX07Cit7JSBlbmRpZiAl fQoreyUgaWYgZGF0YS5maWxsZmFjdG9yIGFuZCBkYXRhLmZpbGxmYWN0b3Ig IT0gb19kYXRhLmZpbGxmYWN0b3IgJX0KK0FMVEVSIElOREVYIHt7IGNvbm58 cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fQorICAgIFNFVCAo RklMTEZBQ1RPUj17eyBkYXRhLmZpbGxmYWN0b3IgfX0pOworeyUgZW5kaWYg JX0KK3sjID09PT0gVG8gdXBkYXRlIGNvbnN0cmFpbnQgY29tbWVudHMgPT09 PSAjfQoreyUgaWYgZGF0YS5jb21tZW50IGFuZCBkYXRhLmNvbW1lbnQgIT0g b19kYXRhLmNvbW1lbnQgJX0KK0NPTU1FTlQgT04gQ09OU1RSQUlOVCB7eyBj b25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fSBPTiB7eyBjb25ufHF0SWRlbnQo ZGF0YS5zY2hlbWEsIGRhdGEudGFibGUpIH19CisgICAgSVMge3sgZGF0YS5j b21tZW50fHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAl fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK --001a11c2f05c7d4df8053033d2aa 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 --001a11c2f05c7d4df8053033d2aa--