Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iVEAJ-00004x-6s for pgadmin-hackers@arkaria.postgresql.org; Thu, 14 Nov 2019 12:24:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1iVE9J-0002KX-W8 for pgadmin-hackers@arkaria.postgresql.org; Thu, 14 Nov 2019 12:22:58 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iVE9I-0002KP-Tj for pgadmin-hackers@lists.postgresql.org; Thu, 14 Nov 2019 12:22:57 +0000 Received: from mail-io1-xd2a.google.com ([2607:f8b0:4864:20::d2a]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1iVE9F-0001ZN-Vd for pgadmin-hackers@postgresql.org; Thu, 14 Nov 2019 12:22:55 +0000 Received: by mail-io1-xd2a.google.com with SMTP id r2so1406760iot.10 for ; Thu, 14 Nov 2019 04:22:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=U9r68ewpSryJ6Mrjyp6WwzEnieV/CPnbfOdgIwmNGDU=; b=ZtGxPHwIw2oDOvvGGQkO4TQsFxz5IpnibtOpUZ+VfBLuQFJlGy7tbNaETx0bSQdkx+ RLXsqJ7T1rwWwNp+pS1AvRO0FjnoB0tdZvgIDpC7naY9qI6mtdLK5dg1wD16ar6M2kv6 tBCCaoBuus27WA/GhH14poetzIzFkEyB07kTBTWXvoUsvG9N17lRbL40yggYujg8d2nG gDifMLFg693XVl0ryvEbSISq1Qt4xA5EX3WeDfC4Z4kUxQ36Rr7ro2eo/aLQ/FBfvogw lppAoomQCH6UmvT8aj0zV6y9mruHBAgV/yp8xNg7K/GbFHgqco/1rAQ4evOCv2iyFpED 1rqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=U9r68ewpSryJ6Mrjyp6WwzEnieV/CPnbfOdgIwmNGDU=; b=LQlLST9BTcOJPgHpZG6Aa4JxJEZNwoqngUSOR4SyD6xh72dxO8MgS24hVPdcXIEvVh Q5qT+IFxtKm1wgXwIt2SNWaohqSHSMdeJgNbqEFNghozCuOAFA8q9Kt2U4w29UxqrcS6 LkeUEjqJYuFM6tqjgcb4YfQfK+KaRnmtQFcetVmOBDp8LaboiCTTr8iCuPhfwJh+E530 2qN9L20VGZmCurwKHXwseG5eVqgIlnZTPZjN7p7ksD/pHLN6OyIEeXgg+7yflLrN2NdJ BpbrvAYl1j0ZusfwBwNOl81LwywqKnZMlWQOMYsojyvMUH4HLTL7o58b0EiieRUlY0iV qDYQ== X-Gm-Message-State: APjAAAUSwMYr2cBBjSfT5Lc1eHNROMExrXj3U6xJ3/WwPK+BbYosiqN6 zRlnqe+P0tUP7Wk5J2nd3Psii9XAKfqOxGRSRXx3dJ6k55mZd6EHIPGG6t5PUSeGR/hzMWhkghs VrzCu0ZEBhUtwBjVBgvWBGQPC6hWEuhniqkTyDFLrpf/tN1Fu9ktpTa7UkYzPm5mTOkAVc13+xo 3gTZEDTQ/QnhghelyyworlqfnyZjn34ZcVI7TLeZQEmADF9zenkMI= X-Google-Smtp-Source: APXvYqx6XZSVBs4VLFvMnLU76w3Hs5JIDvCV2bYkPMm5QKrLsuNGeoMt9lqM6bqkk9Re3TsYhx32XslgGGuCwrn6H+c= X-Received: by 2002:a6b:6815:: with SMTP id d21mr4218666ioc.176.1573734172289; Thu, 14 Nov 2019 04:22:52 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Akshay Joshi Date: Thu, 14 Nov 2019 17:52:41 +0530 Message-ID: Subject: Re: Refactored code for Table and its child nodes. To: Khushboo Vashi Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000004fa90a05974d8aba" X-CLOUD-SEC-AV-Info: edb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000004fa90a05974d8aba Content-Type: multipart/alternative; boundary="0000000000004fa90705974d8ab8" --0000000000004fa90705974d8ab8 Content-Type: text/plain; charset="UTF-8" Hi Khushboo Attached is the patch to fix Python 2.7 issue. On Thu, Nov 14, 2019 at 2:48 PM Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > Hi Akshay, > > Everything works fine on Python 3 but not working on Python 2.7. > Code refactoring looks good to me. > > Thanks, > Khushboo > > On Wed, Nov 13, 2019 at 7:13 PM Akshay Joshi < > akshay.joshi@enterprisedb.com> wrote: > >> Hi Hackers, >> >> For a couple of days, I was working on the code refactoring of Table and >> it's child nodes. >> >> *Problem*: In pgAdmin4 child nodes of the table can be created/modified >> from table dialog as well as from individual node. For example: Primary Key >> constraint can be created/updated from tables as well as from individual >> primary key node. >> >> After analyzing the code it seems that we have duplicate logic/functions >> in '*tables/utils.py*' and '*__init__.py*' of the respective node. >> >> So because of the above-described problem, if there is a bug at one place >> we need to fix it on both the places. >> >> *Purpose*: >> >> 1. Remove duplicate logic. >> 2. Child node specific logic should be inside the child node and >> table node gets the required information from the respective child node. >> >> *Solution*: >> >> 1. Create '*utils.py*' for each child node. >> 2. Move the common logic from '*tables/utils.py*' and '*__init__.py*' >> of the respective node to '*utils.py'.* >> 3. Both table and its respective child access the functions from the >> respective '*utils.py*'. >> >> >> *Note*: Refactoring of *columns* node still remaining I'll start working >> on it. >> >> Please review/test the patch thoroughly for tables and it's child nodes. >> >> -- >> *Thanks & Regards* >> *Akshay Joshi* >> >> *Sr. Software Architect* >> *EnterpriseDB Software India Private Limited* >> *Mobile: +91 976-788-8246* >> > -- *Thanks & Regards* *Akshay Joshi* *Sr. Software Architect* *EnterpriseDB Software India Private Limited* *Mobile: +91 976-788-8246* --0000000000004fa90705974d8ab8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi=C2=A0Khushboo

Attached is the patch = to fix Python 2.7 issue.

On Thu, Nov 14, 2019 at 2:48 PM Khushboo Vash= i <khushboo.vashi@ent= erprisedb.com> wrote:
Hi Akshay,

Ever= ything works fine on Python 3 but not working on Python 2.7.
Code= refactoring looks good to me.

Thanks,
K= hushboo

On Wed, Nov 13, 2019 at 7:13 PM Akshay Joshi <akshay.joshi@enterprisedb.c= om> wrote:
Hi Hackers,

For a couple=C2=A0of days= , I was working on the code refactoring of Table and it's child nodes.<= /div>

Problem:=C2=A0 In pgAdmin4 child nodes of t= he table can be created/modified from table dialog as well as from individu= al node. For=C2=A0example: Primary=C2=A0Key constraint can be created/updat= ed from tables as well as from individual primary key node.

<= /div>
After analyzing the code it seems that we have duplicate logic/fu= nctions in 'tables/utils.py' and '__init__.py'= ; of the respective node.=C2=A0

So because of the = above-described problem, if there is a bug at one place we need to fix it o= n both the places.=C2=A0=C2=A0

Purpose:=C2= =A0
  1. Remove duplicate logic.
  2. Child node specific l= ogic should be inside the child node and table node gets the required infor= mation from the respective child node.
Solution:=
  1. Create 'utils.py' for each child node.
  2. Move the common logic from 'tables/utils.py' and '= __init__.py' of the respective node to 'utils.py'.
  3. Both table and its respective child access the functions from the= respective=C2=A0'utils.py'.

<= div>Note: Refactoring of columns node still remaining I'l= l start working on it.

Please review/test=C2=A0the= patch thoroughly for tables and it's child nodes.

<= /div>--
Thanks & Regards
Akshay Joshi
Sr. Software Architect
EnterpriseDB Software India Private Limited
Mobile:= +91 976-788-8246
<= /div>


--
Thanks & Regards
=
Akshay Joshi
Sr. Software Architect
EnterpriseDB Software India Private Limited
=
Mobile: += 91 976-788-8246
--0000000000004fa90705974d8ab8-- --0000000000004fa90a05974d8aba Content-Type: application/octet-stream; name="Table_Refactor_v2.patch" Content-Disposition: attachment; filename="Table_Refactor_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k2yoonco0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9fX2luaXRfXy5w eQppbmRleCBhZjBlMDJkOGMuLmYzYzkxZjZlYSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL19faW5p dF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9fX2luaXRfXy5weQpAQCAtMjIsNiArMjIsOCBAQCBmcm9t IHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IsIFwKICAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGdvbmUK IGZyb20gLnV0aWxzIGltcG9ydCBCYXNlVGFibGVWaWV3CiBmcm9tIHBnYWRtaW4udXRpbHMucHJl ZmVyZW5jZXMgaW1wb3J0IFByZWZlcmVuY2VzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGFibGVzLlwKKyAgICBjb25zdHJhaW50 cy5mb3JlaWduX2tleSBpbXBvcnQgdXRpbHMgYXMgZmtleV91dGlscwogCiAKIGNsYXNzIFRhYmxl TW9kdWxlKFNjaGVtYUNoaWxkTW9kdWxlKToKQEAgLTEwMTEsMTggKzEwMTMsMTAgQEAgY2xhc3Mg VGFibGVWaWV3KEJhc2VUYWJsZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6 CiAKICAgICAgICAgaWYgJ2ZvcmVpZ25fa2V5JyBpbiBkYXRhOgogICAgICAgICAgICAgZm9yIGMg aW4gZGF0YVsnZm9yZWlnbl9rZXknXToKLSAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoCi0gICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFsKLSAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwgJ2dldF9wYXJlbnQuc3FsJwot ICAgICAgICAgICAgICAgICAgICBdKSwKLSAgICAgICAgICAgICAgICAgICAgdGlkPWNbJ2NvbHVt bnMnXVswXVsncmVmZXJlbmNlcyddCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAg IHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICAgICAgICAgIGNbJ3JlbW90 ZV9zY2hlbWEnXSA9IHJzZXRbJ3Jvd3MnXVswXVsnc2NoZW1hJ10KLSAgICAgICAgICAgICAgICBj WydyZW1vdGVfdGFibGUnXSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFibGUnXQorICAgICAgICAgICAg ICAgIHNjaGVtYSwgdGFibGUgPSBma2V5X3V0aWxzLmdldF9wYXJlbnQoCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuY29ubiwgY1snY29sdW1ucyddWzBdWydyZWZlcmVuY2VzJ10pCisgICAgICAg ICAgICAgICAgY1sncmVtb3RlX3NjaGVtYSddID0gc2NoZW1hCisgICAgICAgICAgICAgICAgY1sn cmVtb3RlX3RhYmxlJ10gPSB0YWJsZQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHBhcnRp dGlvbnNfc3FsID0gJycKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb21wb3VuZF90cmlnZ2Vycy9f X2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb21wb3VuZF90cmlnZ2Vycy9fX2luaXRfXy5weQppbmRl eCBkNzJjYzgzZjIuLjYxMTlmZjEzOCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbXBvdW5kX3Ry aWdnZXJzL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb21wb3VuZF90cmlnZ2Vycy9fX2lu aXRfXy5weQpAQCAtMTksNiArMTksMTAgQEAgZnJvbSBwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlv biBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKIGZyb20gcGdhZG1pbi5icm93c2VyLnV0aWxz IGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKIGZyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBt YWtlX2pzb25fcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvciwgXAogICAgIG1ha2VfcmVz cG9uc2UgYXMgYWpheF9yZXNwb25zZSwgZ29uZQorZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVy X2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRhYmxlcy5cCisgICAgY29tcG91bmRf dHJpZ2dlcnMgaW1wb3J0IHV0aWxzIGFzIGNvbXBvdW5kX3RyaWdnZXJfdXRpbHMKK2Zyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy51dGls cyBcCisgICAgaW1wb3J0IHRyaWdnZXJfZGVmaW5pdGlvbgogZnJvbSBwZ2FkbWluLnV0aWxzLmRy aXZlciBpbXBvcnQgZ2V0X2RyaXZlcgogZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJ VkVSCiBmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IElTX1BZMgpAQCAtMTk5LDkgKzIwMyw2IEBA IGNsYXNzIENvbXBvdW5kVHJpZ2dlclZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgIC0gVGhp cyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJldHVybiBtb2RpZmllZCBTUUwgZm9yIHRoZSBzZWxlY3Rl ZAogICAgICAgICBDb21wb3VuZCBUcmlnZ2VyIG5vZGUKIAotICAgICogZ2V0X3NxbChkYXRhLCBz Y2lkLCB0aWQsIHRyaWQpCi0gICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwg ZnJvbSBtb2RlbCBkYXRhCi0KICAgICAqIHNxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIHRy aWQpOgogICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIHRvIHNob3cgaXQg aW4gc3FsIHBhbmUgZm9yIHRoZQogICAgICAgICBzZWxlY3RlZCBDb21wb3VuZCBUcmlnZ2VyIG5v ZGUuCkBAIC0yMTMsMTMgKzIxNCw2IEBAIGNsYXNzIENvbXBvdW5kVHJpZ2dlclZpZXcoUEdDaGls ZE5vZGVWaWV3KToKICAgICAqIGRlcGVuZGVudChnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIHRy aWQpOgogICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgZGVwZW5kZW50IGxpc3Qg dG8gc2hvdyBpdCBpbiBkZXBlbmRlbnQKICAgICAgICAgcGFuZSBmb3IgdGhlIHNlbGVjdGVkIENv bXBvdW5kIFRyaWdnZXIgbm9kZS4KLQotICAgICogX2NvbHVtbl9kZXRhaWxzKHRpZCwgY2xpc3Qp OjoKLSAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIHRoZSBjb2x1bW5zIGZvciBjb21w b3VuZCB0cmlnZ2VyCi0KLSAgICAqIF90cmlnZ2VyX2RlZmluaXRpb24oZGF0YSk6Ci0gICAgICAt IFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgYWRkaXRpb25hbCBjb21wb3VuZCB0cmlnZ2VyIGRlZmlu aXRpb25zIGluCi0gICAgICAgIEFKQVggcmVzcG9uc2UKICAgICAiIiIKIAogICAgIG5vZGVfdHlw ZSA9IGJsdWVwcmludC5ub2RlX3R5cGUKQEAgLTI4MSwyOCArMjc1LDEwIEBAIGNsYXNzIENvbXBv dW5kVHJpZ2dlclZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICMgV2UgbmVlZCBw YXJlbnQncyBuYW1lIGVnIHRhYmxlIG5hbWUgYW5kIHNjaGVtYSBuYW1lCiAgICAgICAgICAgICAj IHdoZW4gd2UgY3JlYXRlIG5ldyBjb21wb3VuZCB0cmlnZ2VyIGluIHVwZGF0ZSB3ZSBjYW4gZmV0 Y2gKICAgICAgICAgICAgICMgaXQgdXNpbmcgcHJvcGVydHkgc3FsCi0gICAgICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1rd2FyZ3NbJ3RpZCddKQotICAg ICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0g ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICAgICAgZm9yIHJvdyBpbiBy c2V0Wydyb3dzJ106Ci0gICAgICAgICAgICAgICAgc2VsZi5zY2hlbWEgPSByb3dbJ3NjaGVtYSdd Ci0gICAgICAgICAgICAgICAgc2VsZi50YWJsZSA9IHJvd1sndGFibGUnXQotCi0gICAgICAgICAg ICAjIEhlcmUgd2UgYXJlIHN0b3JpbmcgY29tcG91bmQgdHJpZ2dlciBkZWZpbml0aW9uCi0gICAg ICAgICAgICAjIFdlIHdpbGwgdXNlIGl0IHRvIGNoZWNrIGNvbXBvdW5kIHRyaWdnZXIgdHlwZSBk ZWZpbml0aW9uCi0gICAgICAgICAgICBzZWxmLnRyaWdnZXJfZGVmaW5pdGlvbiA9IHsKLSAgICAg ICAgICAgICAgICAnVFJJR0dFUl9UWVBFX1JPVyc6ICgxIDw8IDApLAotICAgICAgICAgICAgICAg ICdUUklHR0VSX1RZUEVfQkVGT1JFJzogKDEgPDwgMSksCi0gICAgICAgICAgICAgICAgJ1RSSUdH RVJfVFlQRV9JTlNFUlQnOiAoMSA8PCAyKSwKLSAgICAgICAgICAgICAgICAnVFJJR0dFUl9UWVBF X0RFTEVURSc6ICgxIDw8IDMpLAotICAgICAgICAgICAgICAgICdUUklHR0VSX1RZUEVfVVBEQVRF JzogKDEgPDwgNCksCi0gICAgICAgICAgICAgICAgJ1RSSUdHRVJfVFlQRV9UUlVOQ0FURSc6ICgx IDw8IDUpLAotICAgICAgICAgICAgICAgICdUUklHR0VSX1RZUEVfSU5TVEVBRCc6ICgxIDw8IDYp Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzY2hlbWEsIHRhYmxlID0gY29tcG91bmRfdHJp Z2dlcl91dGlscy5nZXRfcGFyZW50KAorICAgICAgICAgICAgICAgIHNlbGYuY29ubiwga3dhcmdz Wyd0aWQnXSkKKyAgICAgICAgICAgIHNlbGYuc2NoZW1hID0gc2NoZW1hCisgICAgICAgICAgICBz ZWxmLnRhYmxlID0gdGFibGUKIAogICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdz KQogCkBAIC00MjIsNjcgKzM5OCw2IEBAIGNsYXNzIENvbXBvdW5kVHJpZ2dlclZpZXcoUEdDaGls ZE5vZGVWaWV3KToKICAgICAgICAgICAgIHN0YXR1cz0yMDAKICAgICAgICAgKQogCi0gICAgZGVm IF9jb2x1bW5fZGV0YWlscyhzZWxmLCB0aWQsIGNsaXN0KToKLSAgICAgICAgIiIiCi0gICAgICAg IFRoaXMgZnVuY3Rpb25hbCB3aWxsIGZldGNoIGxpc3Qgb2YgY29sdW1uIGZvciBjb21wb3VuZCB0 cmlnZ2VyCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHRpZDogVGFibGUgT0lECi0gICAg ICAgICAgICBjbGlzdDogTGlzdCBvZiBjb2x1bW5zCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAg ICAgICAgIFVwZGF0ZWQgcHJvcGVydGllcyBkYXRhIHdpdGggY29sdW1uCi0gICAgICAgICIiIgot Ci0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29sdW1u cy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjbGlzdD1j bGlzdCkKLSAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShT UUwpCi0gICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0gICAgICAgICMgJ3RnYXR0cicgY29udGFpbnMg bGlzdCBvZiBjb2x1bW5zIGZyb20gdGFibGUgdXNlZCBpbgotICAgICAgICAjIGNvbXBvdW5kIHRy aWdnZXIKLSAgICAgICAgY29sdW1ucyA9IFtdCi0KLSAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydy b3dzJ106Ci0gICAgICAgICAgICBjb2x1bW5zLmFwcGVuZChyb3dbJ25hbWUnXSkKLQotICAgICAg ICByZXR1cm4gY29sdW1ucwotCi0gICAgZGVmIF90cmlnZ2VyX2RlZmluaXRpb24oc2VsZiwgZGF0 YSk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uYWwgd2lsbCBzZXQgdGhlIGNv bXBvdW5kIHRyaWdnZXIgZGVmaW5pdGlvbgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBk YXRhOiBQcm9wZXJ0aWVzIGRhdGEKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgVXBk YXRlZCBwcm9wZXJ0aWVzIGRhdGEgd2l0aCBjb21wb3VuZCB0cmlnZ2VyIGRlZmluaXRpb24KLSAg ICAgICAgIiIiCi0KLSAgICAgICAgIyBFdmVudCBkZWZpbml0aW9uCi0gICAgICAgIGlmIGRhdGFb J3RndHlwZSddICYgc2VsZi50cmlnZ2VyX2RlZmluaXRpb25bJ1RSSUdHRVJfVFlQRV9JTlNFUlQn XToKLSAgICAgICAgICAgIGRhdGFbJ2V2bnRfaW5zZXJ0J10gPSBUcnVlCi0gICAgICAgIGVsc2U6 Ci0gICAgICAgICAgICBkYXRhWydldm50X2luc2VydCddID0gRmFsc2UKLQotICAgICAgICBpZiBk YXRhWyd0Z3R5cGUnXSAmIHNlbGYudHJpZ2dlcl9kZWZpbml0aW9uWydUUklHR0VSX1RZUEVfREVM RVRFJ106Ci0gICAgICAgICAgICBkYXRhWydldm50X2RlbGV0ZSddID0gVHJ1ZQotICAgICAgICBl bHNlOgotICAgICAgICAgICAgZGF0YVsnZXZudF9kZWxldGUnXSA9IEZhbHNlCi0KLSAgICAgICAg aWYgZGF0YVsndGd0eXBlJ10gJiBzZWxmLnRyaWdnZXJfZGVmaW5pdGlvblsnVFJJR0dFUl9UWVBF X1VQREFURSddOgotICAgICAgICAgICAgZGF0YVsnZXZudF91cGRhdGUnXSA9IFRydWUKLSAgICAg ICAgZWxzZToKLSAgICAgICAgICAgIGRhdGFbJ2V2bnRfdXBkYXRlJ10gPSBGYWxzZQotCi0gICAg ICAgIGlmIGRhdGFbJ3RndHlwZSddICYgc2VsZi50cmlnZ2VyX2RlZmluaXRpb25bJ1RSSUdHRVJf VFlQRV9UUlVOQ0FURSddOgotICAgICAgICAgICAgZGF0YVsnZXZudF90cnVuY2F0ZSddID0gVHJ1 ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGF0YVsnZXZudF90cnVuY2F0ZSddID0gRmFs c2UKLQotICAgICAgICByZXR1cm4gZGF0YQotCiAgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgogICAg IGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgdHJpZCk6CiAg ICAgICAgICIiIgpAQCAtNTIwLDkgKzQzNSwxMCBAQCBjbGFzcyBDb21wb3VuZFRyaWdnZXJWaWV3 KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQog ICAgICAgICBpZiBsZW4oZGF0YVsndGdhdHRyJ10pID49IDE6CiAgICAgICAgICAgICBjb2x1bW5z ID0gJywgJy5qb2luKGRhdGFbJ3RnYXR0ciddLnNwbGl0KCcgJykpCi0gICAgICAgICAgICBkYXRh Wydjb2x1bW5zJ10gPSBzZWxmLl9jb2x1bW5fZGV0YWlscyh0aWQsIGNvbHVtbnMpCisgICAgICAg ICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb21wb3VuZF90cmlnZ2VyX3V0aWxzLmdldF9jb2x1bW5f ZGV0YWlscygKKyAgICAgICAgICAgICAgICBzZWxmLmNvbm4sIHRpZCwgY29sdW1ucykKIAotICAg ICAgICBkYXRhID0gc2VsZi5fdHJpZ2dlcl9kZWZpbml0aW9uKGRhdGEpCisgICAgICAgIGRhdGEg PSB0cmlnZ2VyX2RlZmluaXRpb24oZGF0YSkKIAogICAgICAgICByZXR1cm4gYWpheF9yZXNwb25z ZSgKICAgICAgICAgICAgIHJlc3BvbnNlPWRhdGEsCkBAIC02OTYsNyArNjEyLDggQEAgY2xhc3Mg Q29tcG91bmRUcmlnZ2VyVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgZGF0YVsn c2NoZW1hJ10gPSBzZWxmLnNjaGVtYQogICAgICAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYu dGFibGUKIAotICAgICAgICAgICAgU1FMLCBuYW1lID0gc2VsZi5nZXRfc3FsKHNjaWQsIHRpZCwg dHJpZCwgZGF0YSkKKyAgICAgICAgICAgIFNRTCwgbmFtZSA9IGNvbXBvdW5kX3RyaWdnZXJfdXRp bHMuZ2V0X3NxbCgKKyAgICAgICAgICAgICAgICBzZWxmLmNvbm4sIGRhdGEsIHRpZCwgdHJpZCwg c2VsZi5kYXRsYXN0c3lzb2lkKQogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoU1FMLCAo c3RyLCB1bmljb2RlKSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNRTAogICAgICAgICAgICAg U1FMID0gU1FMLnN0cmlwKCdcbicpLnN0cmlwKCcgJykKQEAgLTc3NSw3ICs2OTIsOCBAQCBjbGFz cyBDb21wb3VuZFRyaWdnZXJWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIGRhdGFbJ3Rh YmxlJ10gPSBzZWxmLnRhYmxlCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc3FsLCBuYW1l ID0gc2VsZi5nZXRfc3FsKHNjaWQsIHRpZCwgdHJpZCwgZGF0YSkKKyAgICAgICAgICAgIHNxbCwg bmFtZSA9IGNvbXBvdW5kX3RyaWdnZXJfdXRpbHMuZ2V0X3NxbCgKKyAgICAgICAgICAgICAgICBz ZWxmLmNvbm4sIGRhdGEsIHRpZCwgdHJpZCwgc2VsZi5kYXRsYXN0c3lzb2lkKQogICAgICAgICAg ICAgaWYgbm90IGlzaW5zdGFuY2Uoc3FsLCAoc3RyLCB1bmljb2RlKSk6CiAgICAgICAgICAgICAg ICAgcmV0dXJuIHNxbAogICAgICAgICAgICAgc3FsID0gc3FsLnN0cmlwKCdcbicpLnN0cmlwKCcg JykKQEAgLTc4OSw1OCArNzA3LDYgQEAgY2xhc3MgQ29tcG91bmRUcmlnZ2VyVmlldyhQR0NoaWxk Tm9kZVZpZXcpOgogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAotICAgIGRlZiBn ZXRfc3FsKHNlbGYsIHNjaWQsIHRpZCwgdHJpZCwgZGF0YSk6Ci0gICAgICAgICIiIgotICAgICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VucmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhCi0gICAgICAg ICIiIgotICAgICAgICBpZiB0cmlkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCB0cmlkPXRyaWQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNv aWQpCi0KLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChT UUwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotICAgICAgICAgICAgaWYgbGVuKHJl c1sncm93cyddKSA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRleHQoCi0g ICAgICAgICAgICAgICAgICAgICIiIkNvdWxkIG5vdCBmaW5kIHRoZSBjb21wb3VuZCB0cmlnZ2Vy IGluIHRoZSB0YWJsZS4iIiIpCi0gICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBvbGRf ZGF0YSA9IGRpY3QocmVzWydyb3dzJ11bMF0pCi0KLSAgICAgICAgICAgICMgSWYgbmFtZSBpcyBu b3QgcHJlc2VudCBpbiBkYXRhIHRoZW4KLSAgICAgICAgICAgICMgd2Ugd2lsbCBmZXRjaCBpdCBm cm9tIG9sZCBkYXRhLCB3ZSBhbHNvIG5lZWQgc2NoZW1hICYgdGFibGUgbmFtZQotICAgICAgICAg ICAgaWYgJ25hbWUnIG5vdCBpbiBkYXRhOgotICAgICAgICAgICAgICAgIGRhdGFbJ25hbWUnXSA9 IG9sZF9kYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgc2VsZi50cmlnZ2VyX25hbWUgPSBkYXRh WyduYW1lJ10KLSAgICAgICAgICAgIHNlbGYuaXNfdHJpZ2dlcl9lbmFibGVkID0gb2xkX2RhdGFb J2lzX2VuYWJsZV90cmlnZ2VyJ10KLQotICAgICAgICAgICAgaWYgbGVuKG9sZF9kYXRhWyd0Z2F0 dHInXSkgPiAxOgotICAgICAgICAgICAgICAgIGNvbHVtbnMgPSAnLCAnLmpvaW4ob2xkX2RhdGFb J3RnYXR0ciddLnNwbGl0KCcgJykpCi0gICAgICAgICAgICAgICAgb2xkX2RhdGFbJ2NvbHVtbnMn XSA9IHNlbGYuX2NvbHVtbl9kZXRhaWxzKHRpZCwgY29sdW1ucykKLQotICAgICAgICAgICAgb2xk X2RhdGEgPSBzZWxmLl90cmlnZ2VyX2RlZmluaXRpb24ob2xkX2RhdGEpCi0KLSAgICAgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICBkYXRhPWRhdGEs IG9fZGF0YT1vbGRfZGF0YSwgY29ubj1zZWxmLmNvbm4KLSAgICAgICAgICAgICkKLSAgICAgICAg ZWxzZToKLSAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSB7Ci0gICAgICAgICAgICAgICAgJ25h bWUnOiAnTmFtZScKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZm9yIGFyZyBpbiByZXF1 aXJlZF9hcmdzOgotICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKLSAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGdldHRleHQoJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpCi0K LSAgICAgICAgICAgICMgSWYgdGhlIHJlcXVlc3QgZm9yIG5ldyBvYmplY3Qgd2hpY2ggZG8gbm90 IGhhdmUgZGlkCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKLSAgICAgICAgcmV0dXJuIFNR TCwgZGF0YVsnbmFtZSddIGlmICduYW1lJyBpbiBkYXRhIGVsc2Ugb2xkX2RhdGFbJ25hbWUnXQot CiAgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdGlkLCB0cmlkKToKICAgICAgICAgIiIiCkBAIC04NTUsNDYgKzcyMSwxMiBAQCBj bGFzcyBDb21wb3VuZFRyaWdnZXJWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgIHRp ZDogVGFibGUgSUQKICAgICAgICAgICAgdHJpZDogVHJpZ2dlciBJRAogICAgICAgICAiIiIKLQot ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5z cWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCB0cmlkPXRyaWQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFz dHN5c29pZCkKLQotICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo U1FMKQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0gICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkg PT0gMDoKLSAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRleHQoCi0gICAgICAgICAgICAgICAg IiIiQ291bGQgbm90IGZpbmQgdGhlIGNvbXBvdW5kIHRyaWdnZXIgaW4gdGhlIHRhYmxlLiIiIikp Ci0KLSAgICAgICAgZGF0YSA9IGRpY3QocmVzWydyb3dzJ11bMF0pCi0gICAgICAgICMgQWRkaW5n IHBhcmVudCBpbnRvIGRhdGEgZGljdCwgd2lsbCBiZSB1c2luZyBpdCB3aGlsZSBjcmVhdGluZyBz cWwKLSAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQotICAgICAgICBkYXRhWyd0 YWJsZSddID0gc2VsZi50YWJsZQotCi0gICAgICAgIGlmIGxlbihkYXRhWyd0Z2F0dHInXSkgPj0g MToKLSAgICAgICAgICAgIGNvbHVtbnMgPSAnLCAnLmpvaW4oZGF0YVsndGdhdHRyJ10uc3BsaXQo JyAnKSkKLSAgICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IHNlbGYuX2NvbHVtbl9kZXRhaWxz KHRpZCwgY29sdW1ucykKLQotICAgICAgICBkYXRhID0gc2VsZi5fdHJpZ2dlcl9kZWZpbml0aW9u KGRhdGEpCi0KLSAgICAgICAgU1FMLCBuYW1lID0gc2VsZi5nZXRfc3FsKHNjaWQsIHRpZCwgTm9u ZSwgZGF0YSkKLQotICAgICAgICBzcWxfaGVhZGVyID0gdSItLSBDb21wb3VuZCBUcmlnZ2VyOiB7 MH1cblxuLS0gIi5mb3JtYXQoZGF0YVsnbmFtZSddKQotCi0gICAgICAgIHNxbF9oZWFkZXIgKz0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYu Y29ubikKLQotICAgICAgICBTUUwgPSBzcWxfaGVhZGVyICsgJ1xuXG4nICsgU1FMLnN0cmlwKCdc bicpCi0KLSAgICAgICAgIyBJZiBjb21wb3VuZCB0cmlnZ2VyIGlzIGRpc2JhbGVkIHRoZW4gYWRk IHNxbCBjb2RlIGZvciB0aGUgc2FtZQotICAgICAgICBpZiBkYXRhWydpc19lbmFibGVfdHJpZ2dl ciddICE9ICdPJzoKLSAgICAgICAgICAgIFNRTCArPSAnXG5cbicKLSAgICAgICAgICAgIFNRTCAr PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbmFibGVfZGlzYWJsZV90cmln Z2VyLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRh LCBjb25uPXNlbGYuY29ubikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gY29tcG91 bmRfdHJpZ2dlcl91dGlscy5nZXRfcmV2ZXJzZV9lbmdpbmVlcmVkX3NxbCgKKyAgICAgICAgICAg ICAgICBzZWxmLmNvbm4sIHNlbGYuc2NoZW1hLCBzZWxmLnRhYmxlLCB0aWQsIHRyaWQsCisgICAg ICAgICAgICAgICAgc2VsZi5kYXRsYXN0c3lzb2lkKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PVNRTCkKIAogICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1TUUwpCiAKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9jb21wb3VuZF90cmlnZ2Vycy91dGlscy5weSBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9jb21wb3VuZF90cmlnZ2Vycy91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAuLjQ5Mjk4MzkwMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb21wb3Vu ZF90cmlnZ2Vycy91dGlscy5weQpAQCAtMCwwICsxLDE5NyBAQAorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE5LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUg aXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworIiIiIEltcGxlbWVudHMgVXRpbGl0eSBjbGFzcyBmb3IgRm9yZWlnbiBLZXlzLiAi IiIKKworZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlCitmcm9tIGZsYXNrX2JhYmVs ZXggaW1wb3J0IGdldHRleHQgYXMgXworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IGlu dGVybmFsX3NlcnZlcl9lcnJvcgorZnJvbSBwZ2FkbWluLnV0aWxzLmV4Y2VwdGlvbiBpbXBvcnQg T2JqZWN0R29uZQorZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRh dGFiYXNlcy5zY2hlbWFzLnV0aWxzIFwKKyAgICBpbXBvcnQgdHJpZ2dlcl9kZWZpbml0aW9uCitm cm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworCitkZWYgZ2V0X3RlbXBsYXRlX3BhdGgoZik6 CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3 aGljaCB3aWxsIHByZXBhcmUKKyAgICB0aGUgdGVtcGxhdGUgcGF0aCBiYXNlZCBvbiBkYXRhYmFz ZSBzZXJ2ZXIgdmVyc2lvbi4KKyAgICAiIiIKKworICAgIEB3cmFwcyhmKQorICAgIGRlZiB3cmFw KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgSGVyZSBhcmdzWzBdIHdpbGwgaG9sZCB0aGUg Y29ubmVjdGlvbiBvYmplY3QKKyAgICAgICAgY29ubl9vYmogPSBhcmdzWzBdCisgICAgICAgIGlm ICd0ZW1wbGF0ZV9wYXRoJyBub3QgaW4ga3dhcmdzOgorICAgICAgICAgICAga3dhcmdzWyd0ZW1w bGF0ZV9wYXRoJ10gPSAnY29tcG91bmRfdHJpZ2dlcnMvc3FsL3swfS8jezF9IycuZm9ybWF0KAor ICAgICAgICAgICAgICAgIGNvbm5fb2JqLm1hbmFnZXIuc2VydmVyX3R5cGUsIGNvbm5fb2JqLm1h bmFnZXIudmVyc2lvbikKKworICAgICAgICByZXR1cm4gZigqYXJncywgKiprd2FyZ3MpCisgICAg cmV0dXJuIHdyYXAKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2RlZiBnZXRfcGFyZW50KGNvbm4s IHRpZCwgdGVtcGxhdGVfcGF0aD1Ob25lKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgcmV0dXJuIHRoZSBwYXJlbnQgb2YgdGhlIGdpdmVuIHRhYmxlLgorICAgIDpwYXJhbSBjb25u OiBDb25uZWN0aW9uIE9iamVjdAorICAgIDpwYXJhbSB0aWQ6IFRhYmxlIG9pZAorICAgIDpwYXJh bSB0ZW1wbGF0ZV9wYXRoOiBPcHRpb25hbCB0ZW1wbGF0ZSBwYXRoCisgICAgOnJldHVybjoKKyAg ICAiIiIKKworICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCdd KSwgdGlkPXRpZCkKKyAgICBzdGF0dXMsIHJzZXQgPSBjb25uLmV4ZWN1dGVfMmRhcnJheShTUUwp CisgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKHJzZXQpCisKKyAg ICBzY2hlbWEgPSAnJworICAgIHRhYmxlID0gJycKKyAgICBpZiAncm93cycgaW4gcnNldCBhbmQg bGVuKHJzZXRbJ3Jvd3MnXSkgPiAwOgorICAgICAgICBzY2hlbWEgPSByc2V0Wydyb3dzJ11bMF1b J3NjaGVtYSddCisgICAgICAgIHRhYmxlID0gcnNldFsncm93cyddWzBdWyd0YWJsZSddCisKKyAg ICByZXR1cm4gc2NoZW1hLCB0YWJsZQorCisKK0BnZXRfdGVtcGxhdGVfcGF0aAorZGVmIGdldF9j b2x1bW5fZGV0YWlscyhjb25uLCB0aWQsIGNsaXN0LCB0ZW1wbGF0ZV9wYXRoPU5vbmUpOgorICAg ICIiIgorICAgIFRoaXMgZnVuY3Rpb25hbCB3aWxsIGZldGNoIGxpc3Qgb2YgY29sdW1uIGZvciB0 cmlnZ2VyLgorICAgIDpwYXJhbSBjb25uOgorICAgIDpwYXJhbSB0aWQ6CisgICAgOnBhcmFtIGNs aXN0OgorICAgIDpwYXJhbSB0ZW1wbGF0ZV9wYXRoOgorICAgIDpyZXR1cm46CisgICAgIiIiCisK KyAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbHVtbnMuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjbGlzdD1jbGlzdCkKKyAgICBzdGF0dXMs IHJzZXQgPSBjb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorICAgIGNv bHVtbnMgPSBbXQorICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICBjb2x1bW5z LmFwcGVuZChyb3dbJ25hbWUnXSkKKworICAgIHJldHVybiBjb2x1bW5zCisKKworQGdldF90ZW1w bGF0ZV9wYXRoCitkZWYgZ2V0X3NxbChjb25uLCBkYXRhLCB0aWQsIHRyaWQsIGRhdGxhc3RzeXNv aWQsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxs IGdlbmVyYXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEKKyAgICA6cGFyYW0gY29ubjogQ29ubmVjdGlv biBPYmplY3QKKyAgICA6cGFyYW0gZGF0YTogRGF0YQorICAgIDpwYXJhbSB0aWQ6IFRhYmxlIElE CisgICAgOnBhcmFtIHRyaWQ6IFRyaWdnZXIgSUQKKyAgICA6cGFyYW0gZGF0bGFzdHN5c29pZDoK KyAgICA6cGFyYW0gdGVtcGxhdGVfcGF0aDogT3B0aW9uYWwgdGVtcGxhdGUgcGF0aAorICAgIDpy ZXR1cm46CisgICAgIiIiCisgICAgbmFtZSA9IGRhdGFbJ25hbWUnXSBpZiAnbmFtZScgaW4gZGF0 YSBlbHNlIE5vbmUKKyAgICBpZiB0cmlkIGlzIG5vdCBOb25lOgorICAgICAgICBzcWwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIHRyaWQ9dHJpZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9ZGF0bGFzdHN5c29pZCkKKwor ICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihyZXMpCisKKyAgICAgICAg aWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgorICAgICAgICAgICAgcmFpc2UgT2JqZWN0R29uZSgK KyAgICAgICAgICAgICAgICBfKCdDb3VsZCBub3QgZmluZCB0aGUgY29tcG91bmQgdHJpZ2dlciBp biB0aGUgdGFibGUuJykpCisKKyAgICAgICAgb2xkX2RhdGEgPSBkaWN0KHJlc1sncm93cyddWzBd KQorICAgICAgICAjIElmIG5hbWUgaXMgbm90IHByZXNlbnQgaW4gZGF0YSB0aGVuCisgICAgICAg ICMgd2Ugd2lsbCBmZXRjaCBpdCBmcm9tIG9sZCBkYXRhLCB3ZSBhbHNvIG5lZWQgc2NoZW1hICYg dGFibGUgbmFtZQorICAgICAgICBpZiAnbmFtZScgbm90IGluIGRhdGE6CisgICAgICAgICAgICBu YW1lID0gZGF0YVsnbmFtZSddID0gb2xkX2RhdGFbJ25hbWUnXQorCisgICAgICAgIGlmIGxlbihv bGRfZGF0YVsndGdhdHRyJ10pID4gMToKKyAgICAgICAgICAgIGNvbHVtbnMgPSAnLCAnLmpvaW4o b2xkX2RhdGFbJ3RnYXR0ciddLnNwbGl0KCcgJykpCisgICAgICAgICAgICBvbGRfZGF0YVsnY29s dW1ucyddID0gZ2V0X2NvbHVtbl9kZXRhaWxzKGNvbm4sIHRpZCwgY29sdW1ucykKKworICAgICAg ICBvbGRfZGF0YSA9IHRyaWdnZXJfZGVmaW5pdGlvbihvbGRfZGF0YSkKKworICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwg J3VwZGF0ZS5zcWwnXSksCisgICAgICAgICAgICBkYXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YSwg Y29ubj1jb25uCisgICAgICAgICkKKyAgICBlbHNlOgorICAgICAgICByZXF1aXJlZF9hcmdzID0g eworICAgICAgICAgICAgJ25hbWUnOiAnTmFtZScKKyAgICAgICAgfQorCisgICAgICAgIGZvciBh cmcgaW4gcmVxdWlyZWRfYXJnczoKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAg ICAgICAgICAgICAgICByZXR1cm4gXygnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlJykKKworICAg ICAgICAjIElmIHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0IHdoaWNoIGRvIG5vdCBoYXZlIGRp ZAorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgs ICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRh LCBjb25uPWNvbm4pCisgICAgcmV0dXJuIFNRTCwgbmFtZQorCisKK0BnZXRfdGVtcGxhdGVfcGF0 aAorZGVmIGdldF9yZXZlcnNlX2VuZ2luZWVyZWRfc3FsKGNvbm4sIHNjaGVtYSwgdGFibGUsIHRp ZCwgdHJpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkLCB0 ZW1wbGF0ZV9wYXRoPU5vbmUpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1 cm4gcmV2ZXJzZSBlbmdpbmVlcmVkIHNxbCBmb3IgdHJpZ2dlcihzKS4KKyAgICA6cGFyYW0gY29u bjogQ29ubmVjdGlvbiBPYmplY3QKKyAgICA6cGFyYW0gc2NoZW1hOiBTY2hlbWEKKyAgICA6cGFy YW0gdGFibGU6IFRhYmxlCisgICAgOnBhcmFtIHRpZDogVGFibGUgSUQKKyAgICA6cGFyYW0gdHJp ZDogVHJpZ2dlciBJRAorICAgIDpwYXJhbSBkYXRsYXN0c3lzb2lkOgorICAgIDpwYXJhbSB0ZW1w bGF0ZV9wYXRoOiBPcHRpb25hbCB0ZW1wbGF0ZSBwYXRoCisgICAgOnJldHVybjoKKyAgICAiIiIK KyAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICdwcm9w ZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgdHJpZD10 cmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPWRhdGxhc3RzeXNv aWQpCisKKyAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICByYWlzZSBFeGNlcHRpb24ocmVzKQorCisgICAgaWYgbGVuKHJl c1sncm93cyddKSA9PSAwOgorICAgICAgICByYWlzZSBPYmplY3RHb25lKAorICAgICAgICAgICAg XygnQ291bGQgbm90IGZpbmQgdGhlIGNvbXBvdW5kIHRyaWdnZXIgaW4gdGhlIHRhYmxlLicpKQor CisgICAgZGF0YSA9IGRpY3QocmVzWydyb3dzJ11bMF0pCisgICAgIyBBZGRpbmcgcGFyZW50IGlu dG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVzaW5nIGl0IHdoaWxlIGNyZWF0aW5nIHNxbAorICAgIGRh dGFbJ3NjaGVtYSddID0gc2NoZW1hCisgICAgZGF0YVsndGFibGUnXSA9IHRhYmxlCisKKyAgICBp ZiBsZW4oZGF0YVsndGdhdHRyJ10pID49IDE6CisgICAgICAgIGNvbHVtbnMgPSAnLCAnLmpvaW4o ZGF0YVsndGdhdHRyJ10uc3BsaXQoJyAnKSkKKyAgICAgICAgZGF0YVsnY29sdW1ucyddID0gZ2V0 X2NvbHVtbl9kZXRhaWxzKGNvbm4sIHRpZCwgY29sdW1ucykKKworICAgIGRhdGEgPSB0cmlnZ2Vy X2RlZmluaXRpb24oZGF0YSkKKworICAgIFNRTCwgbmFtZSA9IGdldF9zcWwoY29ubiwgZGF0YSwg dGlkLCBOb25lLCBkYXRsYXN0c3lzb2lkKQorCisgICAgc3FsX2hlYWRlciA9IHUiLS0gQ29tcG91 bmQgVHJpZ2dlcjogezB9XG5cbi0tICIuZm9ybWF0KGRhdGFbJ25hbWUnXSkKKworICAgIHNxbF9o ZWFkZXIgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAnZGVsZXRl LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNv bm49Y29ubikKKworICAgIFNRTCA9IHNxbF9oZWFkZXIgKyAnXG5cbicgKyBTUUwuc3RyaXAoJ1xu JykKKworICAgICMgSWYgdHJpZ2dlciBpcyBkaXNhYmxlZCB0aGVuIGFkZCBzcWwgY29kZSBmb3Ig dGhlIHNhbWUKKyAgICBpZiBkYXRhWydpc19lbmFibGVfdHJpZ2dlciddICE9ICdPJzoKKyAgICAg ICAgU1FMICs9ICdcblxuJworICAgICAgICBTUUwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFt0ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnZW5hYmxlX2Rpc2FibGVfdHJpZ2dlci5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YT1kYXRhLCBjb25uPWNvbm4pCisgICAgcmV0dXJuIFNRTApkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2NoZWNrX2NvbnN0cmFpbnQvX19pbml0X18ucHkgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvY29uc3RyYWludHMvY2hlY2tfY29uc3RyYWludC9fX2luaXRfXy5weQppbmRleCA5 MDRlMDczY2EuLmUwNWM5NzBlZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2No ZWNrX2NvbnN0cmFpbnQvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2No ZWNrX2NvbnN0cmFpbnQvX19pbml0X18ucHkKQEAgLTIxLDYgKzIxLDggQEAgZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRhYmxlcy5c CiBmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGlsZE5vZGVWaWV3CiBmcm9t IHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IsIFwKICAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGdvbmUK K2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2No ZW1hcy50YWJsZXMuXAorICAgIGNvbnN0cmFpbnRzLmNoZWNrX2NvbnN0cmFpbnQgaW1wb3J0IHV0 aWxzIGFzIGNoZWNrX3V0aWxzCiBmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRf ZHJpdmVyCiBmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKIApAQCAtMTQxLDEw ICsxNDMsNiBAQCBjbGFzcyBDaGVja0NvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAg ICAgKiBtc3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQ9Tm9uZSk6CiAgICAgICAtIFJldHVy bnMgdGhlIG1vZGlmaWVkIFNRTC4KIAotICAgICogZ2V0X3NxbChnaWQsIHNpZCwgZGF0YSwgc2Np ZCwgdGlkPU5vbmUpOgotICAgICAgLSBHZW5lcmF0ZXMgdGhlIFNRTCBzdGF0ZW1lbnRzIHRvIGNy ZWF0ZS91cGRhdGUgdGhlIENoZWNrIENvbnN0cmFpbnQuCi0gICAgICAgIG9iamVjdC4KLQogICAg ICogZGVwZW5kZW50cyhnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZCk6CiAgICAgICAtIFJl dHVybnMgdGhlIGRlcGVuZGVudHMgZm9yIHRoZSBDaGVjayBDb25zdHJhaW50IG9iamVjdC4KIApA QCAtMjAyLDE1ICsyMDAsOSBAQCBjbGFzcyBDaGVja0NvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2Rl Vmlldyk6CiAgICAgICAgICAgICBzZWxmLnRlbXBsYXRlX3BhdGggPSAnY2hlY2tfY29uc3RyYWlu dC9zcWwvI3swfSMnLmZvcm1hdCgKICAgICAgICAgICAgICAgICBzZWxmLm1hbmFnZXIudmVyc2lv bikKIAotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdnZXRfcGFyZW50LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 aWQ9a3dhcmdzWyd0aWQnXSkKLSAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5l eGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAg ICAgICAgICAgIHNlbGYuc2NoZW1hID0gcnNldFsncm93cyddWzBdWydzY2hlbWEnXQotICAgICAg ICAgICAgc2VsZi50YWJsZSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFibGUnXQorICAgICAgICAgICAg c2NoZW1hLCB0YWJsZSA9IGNoZWNrX3V0aWxzLmdldF9wYXJlbnQoc2VsZi5jb25uLCBrd2FyZ3Nb J3RpZCddKQorICAgICAgICAgICAgc2VsZi5zY2hlbWEgPSBzY2hlbWEKKyAgICAgICAgICAgIHNl bGYudGFibGUgPSB0YWJsZQogCiAgICAgICAgICAgICByZXR1cm4gZigqYXJncywgKiprd2FyZ3Mp CiAKQEAgLTI3MiwxNSArMjY0LDkgQEAgY2xhc3MgQ2hlY2tDb25zdHJhaW50VmlldyhQR0NoaWxk Tm9kZVZpZXcpOgogICAgICAgICBzZWxmLnRlbXBsYXRlX3BhdGggPSAnY2hlY2tfY29uc3RyYWlu dC9zcWwvI3swfSMnLmZvcm1hdCgKICAgICAgICAgICAgIHNlbGYubWFuYWdlci52ZXJzaW9uKQog Ci0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50 LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCi0gICAgICAg IHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICBp ZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yc2V0KQotCi0gICAgICAgIHNlbGYuc2NoZW1hID0gcnNldFsncm93cyddWzBdWydz Y2hlbWEnXQotICAgICAgICBzZWxmLnRhYmxlID0gcnNldFsncm93cyddWzBdWyd0YWJsZSddCisg ICAgICAgIHNjaGVtYSwgdGFibGUgPSBjaGVja191dGlscy5nZXRfcGFyZW50KHNlbGYuY29ubiwg dGlkKQorICAgICAgICBzZWxmLnNjaGVtYSA9IHNjaGVtYQorICAgICAgICBzZWxmLnRhYmxlID0g dGFibGUKIAogICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGlkPXRpZCkKQEAgLTM5MSwxNSArMzc3LDkgQEAgY2xhc3MgQ2hlY2tDb25zdHJhaW50 VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBzZWxmLnRlbXBsYXRlX3BhdGggPSAnY2hl Y2tfY29uc3RyYWludC9zcWwvI3swfSMnLmZvcm1hdCgKICAgICAgICAgICAgIHNlbGYubWFuYWdl ci52ZXJzaW9uKQogCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdnZXRfcGFyZW50LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10 aWQpCi0gICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FM KQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQotCi0gICAgICAgIHNlbGYuc2NoZW1hID0gcnNldFsn cm93cyddWzBdWydzY2hlbWEnXQotICAgICAgICBzZWxmLnRhYmxlID0gcnNldFsncm93cyddWzBd Wyd0YWJsZSddCisgICAgICAgIHNjaGVtYSwgdGFibGUgPSBjaGVja191dGlscy5nZXRfcGFyZW50 KHNlbGYuY29ubiwgdGlkKQorICAgICAgICBzZWxmLnNjaGVtYSA9IHNjaGVtYQorICAgICAgICBz ZWxmLnRhYmxlID0gdGFibGUKIAogICAgICAgICByZXMgPSBbXQogICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKQEAgLTQzOCwyMCArNDE4 LDIxIEBAIGNsYXNzIENoZWNrQ29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAg ICAgICAgIGNpZDogQ2hlY2sgQ29uc3RyYWludCBJZAogICAgICAgICAiIiIKIAotICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjaWQ9Y2lkKQotICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBzdGF0dXMs IHJlcyA9IGNoZWNrX3V0aWxzLmdldF9jaGVja19jb25zdHJhaW50cyhzZWxmLmNvbm4sIHRpZCwg Y2lkKQogICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0gICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkg PT0gMDoKLSAgICAgICAgICAgIHJldHVybiBnb25lKAotICAgICAgICAgICAgICAgIF8oIkNvdWxk IG5vdCBmaW5kIHRoZSBvYmplY3Qgb24gdGhlIHNlcnZlci4iKQotICAgICAgICAgICAgKQorICAg ICAgICAgICAgcmV0dXJuIHJlcworCisgICAgICAgIGlmIGxlbihyZXMpID09IDA6CisgICAgICAg ICAgICByZXR1cm4gZ29uZShfKAorICAgICAgICAgICAgICAgICIiIkNvdWxkIG5vdCBmaW5kIHRo ZSBjaGVjayBjb25zdHJhaW50IGluIHRoZSB0YWJsZS4iIiIKKyAgICAgICAgICAgICkpCisKKyAg ICAgICAgcmVzdWx0ID0gcmVzCisgICAgICAgIGlmIGNpZDoKKyAgICAgICAgICAgIHJlc3VsdCA9 IHJlc1swXQogCi0gICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQogICAgICAgICByZXR1cm4g YWpheF9yZXNwb25zZSgKLSAgICAgICAgICAgIHJlc3BvbnNlPWRhdGEsCisgICAgICAgICAgICBy ZXNwb25zZT1yZXN1bHQsCiAgICAgICAgICAgICBzdGF0dXM9MjAwCiAgICAgICAgICkKIApAQCAt NjUzLDcgKzYzNCw3IEBAIGNsYXNzIENoZWNrQ29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3 KToKICAgICAgICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2VsZi5zY2hlbWEKICAgICAgICAgICAg IGRhdGFbJ3RhYmxlJ10gPSBzZWxmLnRhYmxlCiAKLSAgICAgICAgICAgIFNRTCwgbmFtZSA9IHNl bGYuZ2V0X3NxbChnaWQsIHNpZCwgZGF0YSwgc2NpZCwgdGlkLCBjaWQpCisgICAgICAgICAgICBT UUwsIG5hbWUgPSBjaGVja191dGlscy5nZXRfc3FsKHNlbGYuY29ubiwgZGF0YSwgdGlkLCBjaWQp CiAgICAgICAgICAgICBpZiBub3QgU1FMOgogICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCiAg ICAgICAgICAgICBTUUwgPSBTUUwuc3RyaXAoJ1xuJykuc3RyaXAoJyAnKQpAQCAtNzYzLDcgKzc0 NCw3IEBAIGNsYXNzIENoZWNrQ29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAg ICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQogICAgICAgICBkYXRhWyd0YWJsZSddID0g c2VsZi50YWJsZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzcWwsIG5hbWUgPSBzZWxmLmdl dF9zcWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIHRpZCwgY2lkKQorICAgICAgICAgICAgc3FsLCBu YW1lID0gY2hlY2tfdXRpbHMuZ2V0X3NxbChzZWxmLmNvbm4sIGRhdGEsIHRpZCwgY2lkKQogICAg ICAgICAgICAgaWYgbm90IHNxbDoKICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZQogICAgICAg ICAgICAgc3FsID0gc3FsLnN0cmlwKCdcbicpLnN0cmlwKCcgJykKQEAgLTc3Nyw1NiArNzU4LDYg QEAgY2xhc3MgQ2hlY2tDb25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBl eGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAotICAgIGRlZiBnZXRfc3FsKHNlbGYsIGdpZCwgc2lk LCBkYXRhLCBzY2lkLCB0aWQsIGNpZD1Ob25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIEdlbmVy YXRlcyB0aGUgU1FMIHN0YXRlbWVudHMgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ2hlY2sgQ29uc3Ry YWludC4KLQotICAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElk Ci0gICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAotICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJ ZAotICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCi0gICAgICAgICAgICB0aWQ6IFRhYmxlIElk Ci0gICAgICAgICAgICBjaWQ6IENoZWNrIENvbnN0cmFpbnQgSWQKLSAgICAgICAgIiIiCi0gICAg ICAgIGlmIGNpZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgY2lkPWNpZCkKLSAgICAgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCi0KLSAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQotICAgICAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgot ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZSwgZ29uZSgKLSAgICAgICAgICAgICAgICAgICAg XygiQ291bGQgbm90IGZpbmQgdGhlIG9iamVjdCBvbiB0aGUgc2VydmVyLiIpCi0gICAgICAgICAg ICAgICAgKQotCi0gICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBdCi0gICAgICAg ICAgICByZXF1aXJlZF9hcmdzID0gWyduYW1lJ10KLSAgICAgICAgICAgIGZvciBhcmcgaW4gcmVx dWlyZWRfYXJnczoKLSAgICAgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6Ci0gICAgICAg ICAgICAgICAgICAgIGRhdGFbYXJnXSA9IG9sZF9kYXRhW2FyZ10KLQotICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgb19k YXRhPW9sZF9kYXRhLCBjb25uPXNlbGYuY29ubgotICAgICAgICAgICAgKQotICAgICAgICBlbHNl OgotICAgICAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsnY29uc3JjJ10KLQotICAgICAgICAgICAg Zm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgotICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4g ZGF0YToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21w bGV0ZScpCi0gICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGRhdGFbYXJnXSwgbGlzdCkg YW5kIGxlbihkYXRhW2FyZ10pIDwgMToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF8oJy0t IGRlZmluaXRpb24gaW5jb21wbGV0ZScpCi0KLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWRhdGEpCi0KLSAgICAgICAgcmV0dXJuIFNRTCwgZGF0YVsn bmFtZSddIGlmICduYW1lJyBpbiBkYXRhIGVsc2Ugb2xkX2RhdGFbJ25hbWUnXQotCiAgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBkZXBlbmRlbnRzKHNlbGYsIGdpZCwgc2lkLCBkaWQs IHNjaWQsIHRpZCwgY2lkKToKICAgICAgICAgIiIiCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29u c3RyYWludHMvY2hlY2tfY29uc3RyYWludC91dGlscy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50 cy9jaGVja19jb25zdHJhaW50L3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uY2E2YjllZjkzCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFp bnRzL2NoZWNrX2NvbnN0cmFpbnQvdXRpbHMucHkKQEAgLTAsMCArMSwxNzQgQEAKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJp Z2h0IChDKSAyMDEzIC0gMjAxOSwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlz IHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKyIiIiBJbXBsZW1lbnRzIFV0aWxpdHkgY2xhc3MgZm9yIENoZWNr IENvbnN0cmFpbnQuICIiIgorCitmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUKK2Zy b20gZmxhc2tfYmFiZWxleCBpbXBvcnQgZ2V0dGV4dCBhcyBfCitmcm9tIHBnYWRtaW4udXRpbHMu YWpheCBpbXBvcnQgaW50ZXJuYWxfc2VydmVyX2Vycm9yCitmcm9tIHBnYWRtaW4udXRpbHMuZXhj ZXB0aW9uIGltcG9ydCBPYmplY3RHb25lCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKwor CitkZWYgZ2V0X3RlbXBsYXRlX3BhdGgoZik6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3 aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIHByZXBhcmUKKyAgICB0aGUgdGVt cGxhdGUgcGF0aCBiYXNlZCBvbiBkYXRhYmFzZSBzZXJ2ZXIgdmVyc2lvbi4KKyAgICAiIiIKKwor ICAgIEB3cmFwcyhmKQorICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMg SGVyZSBhcmdzWzBdIHdpbGwgaG9sZCB0aGUgY29ubmVjdGlvbiBvYmplY3QKKyAgICAgICAgY29u bl9vYmogPSBhcmdzWzBdCisgICAgICAgIGlmICd0ZW1wbGF0ZV9wYXRoJyBub3QgaW4ga3dhcmdz OgorICAgICAgICAgICAga3dhcmdzWyd0ZW1wbGF0ZV9wYXRoJ10gPSAnY2hlY2tfY29uc3RyYWlu dC9zcWwvI3swfSMnLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBjb25uX29iai5tYW5hZ2VyLnZl cnNpb24pCisKKyAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQorICAgIHJldHVybiB3 cmFwCisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X3BhcmVudChjb25uLCB0aWQsIHRl bXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVy biB0aGUgcGFyZW50IG9mIHRoZSBnaXZlbiB0YWJsZS4KKyAgICA6cGFyYW0gY29ubjogQ29ubmVj dGlvbiBPYmplY3QKKyAgICA6cGFyYW0gdGlkOiBUYWJsZSBvaWQKKyAgICA6cGFyYW0gdGVtcGxh dGVfcGF0aDoKKyAgICA6cmV0dXJuOgorICAgICIiIgorCisgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLCB0aWQ9dGlkKQorICAgIHN0YXR1cywgcnNldCA9 IGNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICBy YWlzZSBFeGNlcHRpb24ocnNldCkKKworICAgIHNjaGVtYSA9ICcnCisgICAgdGFibGUgPSAnJwor ICAgIGlmICdyb3dzJyBpbiByc2V0IGFuZCBsZW4ocnNldFsncm93cyddKSA+IDA6CisgICAgICAg IHNjaGVtYSA9IHJzZXRbJ3Jvd3MnXVswXVsnc2NoZW1hJ10KKyAgICAgICAgdGFibGUgPSByc2V0 Wydyb3dzJ11bMF1bJ3RhYmxlJ10KKworICAgIHJldHVybiBzY2hlbWEsIHRhYmxlCisKKworQGdl dF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X2NoZWNrX2NvbnN0cmFpbnRzKGNvbm4sIHRpZCwgY2lk PU5vbmUsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIGZldGNoIGluZm9ybWF0aW9uIG9mIHRoZQorICAgIGNoZWNrIGNvbnN0cmFpbnQo cykgZm9yIHRoZSBnaXZlbiB0YWJsZS4KKyAgICA6cGFyYW0gY29ubjogQ29ubmVjdGlvbiBPYmpl Y3QKKyAgICA6cGFyYW0gdGlkOiBUYWJsZSBJRAorICAgIDpwYXJhbSBjaWQ6IENoZWNrIENvbnN0 cmFpbnQgSUQKKyAgICA6cGFyYW0gdGVtcGxhdGVfcGF0aDogVGVtcGxhdGUgUGF0aAorICAgIDpy ZXR1cm46CisgICAgIiIiCisKKyAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisg ICAgICAgIFt0ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksIHRpZD10aWQsIGNpZD1j aWQpCisKKyAgICBzdGF0dXMsIHJlc3VsdCA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICByZXR1cm4gc3RhdHVzLCBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzdWx0KQorCisgICAgcmV0dXJuIFRydWUsIHJlc3VsdFsncm93cyddCisK KworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X2NoZWNrX2NvbnN0cmFpbnRfc3FsKGNvbm4s IHRpZCwgZGF0YSwgdGVtcGxhdGVfcGF0aD1Ob25lKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0 aW9uIHdpbGwgcmV0dXJuIHNxbCBmb3IgY2hlY2sgY29uc3RyYWludHMuCisgICAgOnBhcmFtIGNv bm46IENvbm5lY3Rpb24gT2JqZWN0CisgICAgOnBhcmFtIHRpZDogVGFibGUgSUQKKyAgICA6cGFy YW0gZGF0YTogRGF0YQorICAgIDpwYXJhbSB0ZW1wbGF0ZV9wYXRoOiBUZW1wbGF0ZSBQYXRoCisg ICAgOnJldHVybjoKKyAgICAiIiIKKworICAgIHNxbCA9IFtdCisgICAgIyBDaGVjayBpZiBjb25z dHJhaW50IGlzIGluIGRhdGEKKyAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9y IGFkZC9jaGFuZ2UvZGVsZXRlCisgICAgaWYgJ2NoZWNrX2NvbnN0cmFpbnQnIGluIGRhdGE6Cisg ICAgICAgIGNvbnN0cmFpbnQgPSBkYXRhWydjaGVja19jb25zdHJhaW50J10KKyAgICAgICAgIyBJ ZiBjb25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCisgICAgICAgIGlmICdkZWxldGVkJyBpbiBj b25zdHJhaW50OgorICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnZGVsZXRlZCddOgor ICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAg ICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAjIFNxbCBm b3IgZHJvcAorICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAg IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1w bGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 YywgY29ubj1jb25uKS5zdHJpcCgiXG4iKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBp ZiAnY2hhbmdlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFp bnRbJ2NoYW5nZWQnXToKKyAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVt YSddCisgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQorCisgICAgICAg ICAgICAgICAgbW9kaWZpZWRfc3FsLCBuYW1lID0gZ2V0X3NxbChjb25uLCBjLCB0aWQsIGNbJ29p ZCddKQorICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQobW9kaWZpZWRfc3FsLnN0cmlwKCdcbicp KQorCisgICAgICAgIGlmICdhZGRlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgIGZvciBj IGluIGNvbnN0cmFpbnRbJ2FkZGVkJ106CisgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBk YXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10K KworICAgICAgICAgICAgICAgIGFkZF9zcWwsIG5hbWUgPSBnZXRfc3FsKGNvbm4sIGMsIHRpZCkK KyAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKGFkZF9zcWwuc3RyaXAoIlxuIikpCisKKyAgICBp ZiBsZW4oc3FsKSA+IDA6CisgICAgICAgICMgSm9pbiBhbGwgdGhlIHNxbChzKSBhcyBzaW5nbGUg c3RyaW5nCisgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCisgICAgZWxzZToKKyAgICAg ICAgcmV0dXJuIE5vbmUKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2RlZiBnZXRfc3FsKGNvbm4s IGRhdGEsIHRpZCwgY2lkPU5vbmUsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAg VGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEuCisgICAgOnBh cmFtIGNvbm46IENvbm5lY3Rpb24gT2JqZWN0CisgICAgOnBhcmFtIGRhdGE6IGRhdGEKKyAgICA6 cGFyYW0gdGlkOiBUYWJsZSBpZAorICAgIDpwYXJhbSBjaWQ6IENoZWNrIENvbnN0cmFpbnQgSUQK KyAgICA6cGFyYW0gdGVtcGxhdGVfcGF0aDogVGVtcGxhdGUgUGF0aAorICAgIDpyZXR1cm46Cisg ICAgIiIiCisgICAgbmFtZSA9IGRhdGFbJ25hbWUnXSBpZiAnbmFtZScgaW4gZGF0YSBlbHNlIE5v bmUKKyAgICBpZiBjaWQgaXMgbm90IE5vbmU6CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgY2lkPWNpZCkKKyAgICAgICAgc3RhdHVzLCBy ZXMgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICByYWlzZSBFeGNlcHRpb24ocmVzKQorCisgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3Mn XSkgPT0gMDoKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEdvbmUoCisgICAgICAgICAgICAgICAg XygnQ291bGQgbm90IGZpbmQgdGhlIGNoZWNrIGNvbnN0cmFpbnQgaW4gdGhlIHRhYmxlLicpKQor CisgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgaWYgJ25hbWUnIG5v dCBpbiBkYXRhOgorICAgICAgICAgICAgbmFtZSA9IGRhdGFbJ25hbWUnXSA9IG9sZF9kYXRhWydu YW1lJ10KKworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRl X3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YT1kYXRhLCBvX2RhdGE9b2xkX2RhdGEsIGNvbm49Y29ubikKKyAgICBlbHNlOgorICAgICAgICBp ZiAnY29uc3JjJyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgIHJldHVybiBfKCctLSBkZWZpbml0 aW9uIGluY29tcGxldGUnKSwgbmFtZQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YVsnY29u c3JjJ10sIGxpc3QpIGFuZCBsZW4oZGF0YVsnY29uc3JjJ10pIDwgMToKKyAgICAgICAgICAgIHJl dHVybiBfKCctLSBkZWZpbml0aW9uIGluY29tcGxldGUnKSwgbmFtZQorCisgICAgICAgIHNxbCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEpCisKKyAgICByZXR1cm4g c3FsLCBuYW1lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVzaW9uX2Nv bnN0cmFpbnQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVzaW9uX2Nv bnN0cmFpbnQvX19pbml0X18ucHkKaW5kZXggYzA4ZTZlZjY1Li44MzYyY2RiMDQgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC9fX2luaXRfXy5w eQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvX19pbml0 X18ucHkKQEAgLTIwLDYgKzIwLDggQEAgZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRhYmxlcy5cCiBmcm9tIHBnYWRtaW4uYnJvd3Nl ci51dGlscyBpbXBvcnQgUEdDaGlsZE5vZGVWaWV3CiBmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBp bXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIFwKICAgICBt YWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGdvbmUKK2Zyb20gcGdhZG1pbi5icm93c2Vy LnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50YWJsZXMuXAorICAgIGNv bnN0cmFpbnRzLmV4Y2x1c2lvbl9jb25zdHJhaW50IGltcG9ydCB1dGlscyBhcyBleGNsdXNpb25f dXRpbHMKIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKIGZyb20g Y29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgogZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9y dCBJU19QWTIKQEAgLTIyOCwxNiArMjMwLDEwIEBAIGNsYXNzIEV4Y2x1c2lvbkNvbnN0cmFpbnRW aWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLnZlcnNp b24pCiAKICAgICAgICAgICAgICMgV2UgbmVlZCBwYXJlbnQncyBuYW1lIGVnIHRhYmxlIG5hbWUg YW5kIHNjaGVtYSBuYW1lCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRpZD1rd2FyZ3NbJ3RpZCddKQotICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0g c2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cnNldCkKLQotICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106Ci0gICAgICAgICAg ICAgICAgc2VsZi5zY2hlbWEgPSByb3dbJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgc2VsZi50 YWJsZSA9IHJvd1sndGFibGUnXQorICAgICAgICAgICAgc2NoZW1hLCB0YWJsZSA9IGV4Y2x1c2lv bl91dGlscy5nZXRfcGFyZW50KHNlbGYuY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbJ3RpZCddKQorICAgICAgICAgICAg c2VsZi5zY2hlbWEgPSBzY2hlbWEKKyAgICAgICAgICAgIHNlbGYudGFibGUgPSB0YWJsZQogCiAg ICAgICAgICAgICByZXR1cm4gZigqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHJldHVybiB3cmFw CkBAIC0yNjUsNjAgKzI2MSwxOSBAQCBjbGFzcyBFeGNsdXNpb25Db25zdHJhaW50VmlldyhQR0No aWxkTm9kZVZpZXcpOgogICAgICAgICBSZXR1cm5zOgogCiAgICAgICAgICIiIgotICAgICAgICBz cWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3Bl cnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgdGlk PXRpZCwgY2lkPWV4aWQpCi0KLSAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KHNxbCkKLQorICAgICAgICBzdGF0dXMsIHJlcyA9IGV4Y2x1c2lvbl91dGlscy5nZXRf ZXhjbHVzaW9uX2NvbnN0cmFpbnRzKAorICAgICAgICAgICAgc2VsZi5jb25uLCBkaWQsIHRpZCwg ZXhpZCkKICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgcmV0dXJuIHJlcwogCi0g ICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgaWYgbGVuKHJlcykgPT0g MDoKICAgICAgICAgICAgIHJldHVybiBnb25lKF8oCiAgICAgICAgICAgICAgICAgIiIiQ291bGQg bm90IGZpbmQgdGhlIGV4Y2x1c2lvbiBjb25zdHJhaW50IGluIHRoZSB0YWJsZS4iIiIKICAgICAg ICAgICAgICkpCiAKLSAgICAgICAgcmVzdWx0ID0gcmVzWydyb3dzJ11bMF0KLQotICAgICAgICBz cWwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAnZ2V0X2NvbnN0cmFpbnRfY29scy5zcWwnXSksCi0gICAgICAgICAgICBjaWQ9ZXhp ZCwKLSAgICAgICAgICAgIGNvbGNudD1yZXN1bHRbJ2NvbF9jb3VudCddKQotICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQotCi0gICAgICAgIGlmIG5vdCBz dGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKLQotICAgICAgICBjb2x1bW5zID0gW10KLSAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jv d3MnXToKLSAgICAgICAgICAgIGlmIHJvd1snb3B0aW9ucyddICYgMToKLSAgICAgICAgICAgICAg ICBvcmRlciA9IEZhbHNlCi0gICAgICAgICAgICAgICAgbnVsbHNfb3JkZXIgPSBUcnVlIGlmIChy b3dbJ29wdGlvbnMnXSAmIDIpIGVsc2UgRmFsc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg ICAgICAgICAgb3JkZXIgPSBUcnVlCi0gICAgICAgICAgICAgICAgbnVsbHNfb3JkZXIgPSBUcnVl IGlmIChyb3dbJ29wdGlvbnMnXSAmIDIpIGVsc2UgRmFsc2UKLQotICAgICAgICAgICAgY29sdW1u cy5hcHBlbmQoeyJjb2x1bW4iOiByb3dbJ2NvbGRlZiddLnN0cmlwKCciJyksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIm9wZXJfY2xhc3MiOiByb3dbJ29wY25hbWUnXSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAib3JkZXIiOiBvcmRlciwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAibnVsbHNfb3JkZXIiOiBudWxsc19vcmRlciwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAib3BlcmF0b3IiOiByb3dbJ29wcm5hbWUnXSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiY29sX3R5cGUiOiByb3dbJ2RhdGF0eXBlJ10KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9KQotCi0gICAgICAgIHJlc3VsdFsnY29sdW1ucyddID0gY29sdW1ucwotCi0gICAg ICAgICMgQWRkIEluY2x1ZGUgZGV0YWlscyBvZiB0aGUgaW5kZXggc3VwcG9ydGVkIGZvciBQRy0x MSsKLSAgICAgICAgaWYgc2VsZi5tYW5hZ2VyLnZlcnNpb24gPj0gMTEwMDAwOgotICAgICAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdnZXRfY29uc3RyYWludF9pbmNsdWRlLnNxbCddKSwKLSAgICAgICAg ICAgICAgICBjaWQ9ZXhpZCkKLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChzcWwpCi0KLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAg ICAgICAgIHJlc3VsdFsnaW5jbHVkZSddID0gW2NvbFsnY29sbmFtZSddIGZvciBjb2wgaW4gcmVz Wydyb3dzJ11dCisgICAgICAgIHJlc3VsdCA9IHJlcworICAgICAgICBpZiBleGlkOgorICAgICAg ICAgICAgcmVzdWx0ID0gcmVzWzBdCiAKICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCiAg ICAgICAgICAgICByZXNwb25zZT1yZXN1bHQsCkBAIC0zNzQsMTYgKzMyOSw5IEBAIGNsYXNzIEV4 Y2x1c2lvbkNvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICBzZWxm Lm1hbmFnZXIudmVyc2lvbikKIAogICAgICAgICAjIFdlIG5lZWQgcGFyZW50J3MgbmFtZSBlZyB0 YWJsZSBuYW1lIGFuZCBzY2hlbWEgbmFtZQotICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0aWQ9dGlkKQotICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0 ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICBmb3Igcm93 IGluIHJzZXRbJ3Jvd3MnXToKLSAgICAgICAgICAgIHNlbGYuc2NoZW1hID0gcm93WydzY2hlbWEn XQotICAgICAgICAgICAgc2VsZi50YWJsZSA9IHJvd1sndGFibGUnXQorICAgICAgICBzY2hlbWEs IHRhYmxlID0gZXhjbHVzaW9uX3V0aWxzLmdldF9wYXJlbnQoc2VsZi5jb25uLCB0aWQpCisgICAg ICAgIHNlbGYuc2NoZW1hID0gc2NoZW1hCisgICAgICAgIHNlbGYudGFibGUgPSB0YWJsZQogCiAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNx bCddKSwKQEAgLTQ4OSwxNiArNDM3LDkgQEAgY2xhc3MgRXhjbHVzaW9uQ29uc3RyYWludFZpZXco UEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgIHNlbGYubWFuYWdlci52ZXJzaW9uKQogCiAg ICAgICAgICMgV2UgbmVlZCBwYXJlbnQncyBuYW1lIGVnIHRhYmxlIG5hbWUgYW5kIHNjaGVtYSBu YW1lCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFy ZW50LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCi0gICAg ICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAg ICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yc2V0KQotCi0gICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgotICAg ICAgICAgICAgc2VsZi5zY2hlbWEgPSByb3dbJ3NjaGVtYSddCi0gICAgICAgICAgICBzZWxmLnRh YmxlID0gcm93Wyd0YWJsZSddCisgICAgICAgIHNjaGVtYSwgdGFibGUgPSBleGNsdXNpb25fdXRp bHMuZ2V0X3BhcmVudChzZWxmLmNvbm4sIHRpZCkKKyAgICAgICAgc2VsZi5zY2hlbWEgPSBzY2hl bWEKKyAgICAgICAgc2VsZi50YWJsZSA9IHRhYmxlCiAKICAgICAgICAgcmVzID0gW10KICAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCkBA IC02NTYsNyArNTk3LDggQEAgY2xhc3MgRXhjbHVzaW9uQ29uc3RyYWludFZpZXcoUEdDaGlsZE5v ZGVWaWV3KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxm LnNjaGVtYQogICAgICAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUKLSAgICAgICAg ICAgIHNxbCwgbmFtZSA9IHNlbGYuZ2V0X3NxbChkYXRhLCBkaWQsIHRpZCwgZXhpZCkKKyAgICAg ICAgICAgIHNxbCwgbmFtZSA9IFwKKyAgICAgICAgICAgICAgICBleGNsdXNpb25fdXRpbHMuZ2V0 X3NxbChzZWxmLmNvbm4sIGRhdGEsIGRpZCwgdGlkLCBleGlkKQogICAgICAgICAgICAgaWYgbm90 IGlzaW5zdGFuY2Uoc3FsLCAoc3RyLCB1bmljb2RlKSk6CiAgICAgICAgICAgICAgICAgcmV0dXJu IHNxbAogICAgICAgICAgICAgc3FsID0gc3FsLnN0cmlwKCdcbicpLnN0cmlwKCcgJykKQEAgLTc4 Nyw3ICs3MjksOCBAQCBjbGFzcyBFeGNsdXNpb25Db25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZp ZXcpOgogICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNlbGYuc2NoZW1hCiAgICAgICAgIGRhdGFb J3RhYmxlJ10gPSBzZWxmLnRhYmxlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNxbCwgbmFt ZSA9IHNlbGYuZ2V0X3NxbChkYXRhLCBkaWQsIHRpZCwgZXhpZCkKKyAgICAgICAgICAgIHNxbCwg bmFtZSA9IFwKKyAgICAgICAgICAgICAgICBleGNsdXNpb25fdXRpbHMuZ2V0X3NxbChzZWxmLmNv bm4sIGRhdGEsIGRpZCwgdGlkLCBleGlkKQogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uo c3FsLCAoc3RyLCB1bmljb2RlKSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNxbAogICAgICAg ICAgICAgc3FsID0gc3FsLnN0cmlwKCdcbicpLnN0cmlwKCcgJykKQEAgLTgwMSw1MyArNzQ0LDYg QEAgY2xhc3MgRXhjbHVzaW9uQ29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAg ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCiAKLSAgICBkZWYgZ2V0X3NxbChzZWxmLCBkYXRh LCBkaWQsIHRpZCwgZXhpZD1Ob25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rp b24gd2lsbCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhLgotCi0gICAgICAgIEFyZ3M6Ci0g ICAgICAgICAgZGF0YTogQ29udGFpbnMgdGhlIGRhdGEgb2YgdGhlIHNlbGVjdGVkIEV4Y2x1c2lv biBjb25zdHJhaW50LgotICAgICAgICAgIHRpZDogVGFibGUgSUQuCi0gICAgICAgICAgZXhpZDog RXhjbHVzaW9uIGNvbnN0cmFpbnQgSUQKLQotICAgICAgICBSZXR1cm5zOgotCi0gICAgICAgICIi IgotICAgICAgICBpZiBleGlkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICBkaWQ9ZGlkLAotICAgICAgICAg ICAgICAgIHRpZD10aWQsCi0gICAgICAgICAgICAgICAgY2lkPWV4aWQKLSAgICAgICAgICAgICkK LSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCi0g ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotICAgICAgICAgICAgaWYgbGVuKHJlc1sncm93 cyddKSA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBnb25lKF8oIkNvdWxkIG5vdCBmaW5k IHRoZSBleGNsdXNpb24gY29uc3RyYWludC4iKSkKLQotICAgICAgICAgICAgb2xkX2RhdGEgPSBy ZXNbJ3Jvd3MnXVswXQotICAgICAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsnbmFtZSddCi0gICAg ICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgYXJn IG5vdCBpbiBkYXRhOgotICAgICAgICAgICAgICAgICAgICBkYXRhW2FyZ10gPSBvbGRfZGF0YVth cmddCi0KLSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YSkKLSAgICAgICAgZWxzZToKLSAgICAg ICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbJ2NvbHVtbnMnXQotCi0gICAgICAgICAgICBmb3IgYXJn IGluIHJlcXVpcmVkX2FyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhOgot ICAgICAgICAgICAgICAgICAgICByZXR1cm4gXygnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlJykK LSAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YVthcmddLCBsaXN0KSBhbmQgbGVu KGRhdGFbYXJnXSkgPCAxOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gXygnLS0gZGVmaW5p dGlvbiBpbmNvbXBsZXRlJykKLQotICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCi0KLSAgICAg ICAgcmV0dXJuIHNxbCwgZGF0YVsnbmFtZSddCi0KICAgICBAY2hlY2tfcHJlY29uZGl0aW9uCiAg ICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGV4aWQ9Tm9uZSk6CiAg ICAgICAgICIiIgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lvbl9j b25zdHJhaW50L3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lvbl9jb25z dHJhaW50L3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMzU4 YzY1NTM1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lv bl9jb25zdHJhaW50L3V0aWxzLnB5CkBAIC0wLDAgKzEsMjE1IEBACisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykg MjAxMyAtIDIwMTksIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2Fy ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisiIiIgSW1wbGVtZW50cyBVdGlsaXR5IGNsYXNzIGZvciBFeGNsdXNpb24gQ29u c3RyYWludC4gIiIiCisKK2Zyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZQorZnJvbSBm bGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0IGFzIF8KK2Zyb20gcGdhZG1pbi51dGlscy5hamF4 IGltcG9ydCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi51dGlscy5leGNlcHRp b24gaW1wb3J0IE9iamVjdEdvbmUKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCisKK2Rl ZiBnZXRfdGVtcGxhdGVfcGF0aChmKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg YmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgcHJlcGFyZQorICAgIHRoZSB0ZW1wbGF0 ZSBwYXRoIGJhc2VkIG9uIGRhdGFiYXNlIHNlcnZlciB2ZXJzaW9uLgorICAgICIiIgorCisgICAg QHdyYXBzKGYpCisgICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBIZXJl IGFyZ3NbMF0gd2lsbCBob2xkIHRoZSBjb25uZWN0aW9uIG9iamVjdAorICAgICAgICBjb25uX29i aiA9IGFyZ3NbMF0KKyAgICAgICAgaWYgJ3RlbXBsYXRlX3BhdGgnIG5vdCBpbiBrd2FyZ3M6Cisg ICAgICAgICAgICBrd2FyZ3NbJ3RlbXBsYXRlX3BhdGgnXSA9ICdleGNsdXNpb25fY29uc3RyYWlu dC9zcWwvI3swfSMnLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBjb25uX29iai5tYW5hZ2VyLnZl cnNpb24pCisKKyAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQorICAgIHJldHVybiB3 cmFwCisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X3BhcmVudChjb25uLCB0aWQsIHRl bXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVy biB0aGUgcGFyZW50IG9mIHRoZSBnaXZlbiB0YWJsZS4KKyAgICA6cGFyYW0gY29ubjogQ29ubmVj dGlvbiBPYmplY3QKKyAgICA6cGFyYW0gdGlkOiBUYWJsZSBvaWQKKyAgICA6cGFyYW0gdGVtcGxh dGVfcGF0aDoKKyAgICA6cmV0dXJuOgorICAgICIiIgorCisgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLCB0aWQ9dGlkKQorICAgIHN0YXR1cywgcnNldCA9 IGNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICBy YWlzZSBFeGNlcHRpb24ocnNldCkKKworICAgIHNjaGVtYSA9ICcnCisgICAgdGFibGUgPSAnJwor ICAgIGlmICdyb3dzJyBpbiByc2V0IGFuZCBsZW4ocnNldFsncm93cyddKSA+IDA6CisgICAgICAg IHNjaGVtYSA9IHJzZXRbJ3Jvd3MnXVswXVsnc2NoZW1hJ10KKyAgICAgICAgdGFibGUgPSByc2V0 Wydyb3dzJ11bMF1bJ3RhYmxlJ10KKworICAgIHJldHVybiBzY2hlbWEsIHRhYmxlCisKKworQGdl dF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X2V4Y2x1c2lvbl9jb25zdHJhaW50cyhjb25uLCBkaWQs IHRpZCwgZXhpZD1Ob25lLCB0ZW1wbGF0ZV9wYXRoPU5vbmUpOgorICAgICIiIgorICAgIFRoaXMg ZnVuY3Rpb24gaXMgdXNlZCB0byBmZXRjaCBpbmZvcm1hdGlvbiBvZiB0aGUKKyAgICBleGNsdXNp b24gY29uc3RyYWludChzKSBmb3IgdGhlIGdpdmVuIHRhYmxlLgorICAgIDpwYXJhbSBjb25uOiBD b25uZWN0aW9uIE9iamVjdAorICAgIDpwYXJhbSBkaWQ6IERhdGFiYXNlIElECisgICAgOnBhcmFt IHRpZDogVGFibGUgSUQKKyAgICA6cGFyYW0gZXhpZDogRXhjbHVzaW9uIENvbnN0cmFpbnQgSUQK KyAgICA6cGFyYW0gdGVtcGxhdGVfcGF0aDogVGVtcGxhdGUgUGF0aAorICAgIDpyZXR1cm46Cisg ICAgIiIiCisgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRo LCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQs IHRpZD10aWQsIGNpZD1leGlkKQorCisgICAgc3RhdHVzLCByZXN1bHQgPSBjb25uLmV4ZWN1dGVf ZGljdChzcWwpCisgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgcmV0dXJuIHN0YXR1cywgaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlc3VsdCkKKworICAgIGZvciBleCBpbiByZXN1 bHRbJ3Jvd3MnXToKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRf Y29uc3RyYWludF9jb2xzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNp ZD1leFsnb2lkJ10sIGNvbGNudD1leFsnY29sX2NvdW50J10pCisKKyAgICAgICAgc3RhdHVzLCBy ZXMgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICByZXR1cm4gc3RhdHVzLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgIGNvbHVtbnMgPSBbXQorICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cydd OgorICAgICAgICAgICAgaWYgcm93WydvcHRpb25zJ10gJiAxOgorICAgICAgICAgICAgICAgIG9y ZGVyID0gRmFsc2UKKyAgICAgICAgICAgICAgICBudWxsc19vcmRlciA9IFRydWUgaWYgKHJvd1sn b3B0aW9ucyddICYgMikgZWxzZSBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg ICAgICBvcmRlciA9IFRydWUKKyAgICAgICAgICAgICAgICBudWxsc19vcmRlciA9IFRydWUgaWYg KHJvd1snb3B0aW9ucyddICYgMikgZWxzZSBGYWxzZQorCisgICAgICAgICAgICBjb2x1bW5zLmFw cGVuZCh7ImNvbHVtbiI6IHJvd1snY29sZGVmJ10uc3RyaXAoJyInKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAib3Blcl9jbGFzcyI6IHJvd1snb3BjbmFtZSddLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJvcmRlciI6IG9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJudWxsc19vcmRlciI6IG51bGxzX29yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJvcGVyYXRvciI6IHJvd1snb3BybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJjb2xfdHlwZSI6IHJvd1snZGF0YXR5cGUnXQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0pCisKKyAgICAgICAgZXhbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKKworICAgICAgICAjIElO Q0xVREUgY2xhdXNlIGluIGluZGV4IGlzIHN1cHBvcnRlZCBmcm9tIFBHLTExKworICAgICAgICBp ZiBjb25uLm1hbmFnZXIudmVyc2lvbiA+PSAxMTAwMDA6CisgICAgICAgICAgICBzcWwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWludF9pbmNsdWRlLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ9ZXhbJ29pZCddKQorICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXMsIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGV4WydpbmNsdWRlJ10gPSBb Y29sWydjb2xuYW1lJ10gZm9yIGNvbCBpbiByZXNbJ3Jvd3MnXV0KKworICAgIHJldHVybiBUcnVl LCByZXN1bHRbJ3Jvd3MnXQorCisKK0BnZXRfdGVtcGxhdGVfcGF0aAorZGVmIGdldF9leGNsdXNp b25fY29uc3RyYWludF9zcWwoY29ubiwgZGlkLCB0aWQsIGRhdGEsIHRlbXBsYXRlX3BhdGg9Tm9u ZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBzcWwgZm9yIGV4Y2x1 c2lvbiBjb25zdHJhaW50cy4KKyAgICA6cGFyYW0gY29ubjogQ29ubmVjdGlvbiBPYmplY3QKKyAg ICA6cGFyYW0gZGlkOiBEYXRhYmFzZSBJRAorICAgIDpwYXJhbSB0aWQ6IFRhYmxlIElECisgICAg OnBhcmFtIGRhdGE6IERhdGEKKyAgICA6cGFyYW0gdGVtcGxhdGVfcGF0aDogVGVtcGxhdGUgUGF0 aAorICAgIDpyZXR1cm46CisgICAgIiIiCisKKyAgICBzcWwgPSBbXQorICAgICMgQ2hlY2sgaWYg Y29uc3RyYWludCBpcyBpbiBkYXRhCisgICAgIyBJZiB5ZXMgdGhlbiB3ZSBuZWVkIHRvIGNoZWNr IGZvciBhZGQvY2hhbmdlL2RlbGV0ZQorICAgIGlmICdleGNsdWRlX2NvbnN0cmFpbnQnIGluIGRh dGE6CisgICAgICAgIGNvbnN0cmFpbnQgPSBkYXRhWydleGNsdWRlX2NvbnN0cmFpbnQnXQorICAg ICAgICAjIElmIGNvbnN0cmFpbnQocykgaXMvYXJlIGRlbGV0ZWQKKyAgICAgICAgaWYgJ2RlbGV0 ZWQnIGluIGNvbnN0cmFpbnQ6CisgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydkZWxl dGVkJ106CisgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAg ICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KKworICAgICAgICAgICAgICAg ICMgU3FsIGZvciBkcm9wCisgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAg ICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAg ICAgW3RlbXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YT1jLCBjb25uPWNvbm4pLnN0cmlwKCJcbiIpCisgICAgICAgICAgICAgICAgKQorCisg ICAgICAgIGlmICdjaGFuZ2VkJyBpbiBjb25zdHJhaW50OgorICAgICAgICAgICAgZm9yIGMgaW4g Y29uc3RyYWludFsnY2hhbmdlZCddOgorICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0 YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisK KyAgICAgICAgICAgICAgICBtb2RpZmllZF9zcWwsIG5hbWUgPSBnZXRfc3FsKGNvbm4sIGMsIGRp ZCwgdGlkLCBjWydvaWQnXSkKKyAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKG1vZGlmaWVkX3Nx bC5zdHJpcCgnXG4nKSkKKworICAgICAgICBpZiAnYWRkZWQnIGluIGNvbnN0cmFpbnQ6CisgICAg ICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydhZGRlZCddOgorICAgICAgICAgICAgICAgIGNb J3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0g ZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICBhZGRfc3FsLCBuYW1lID0gZ2V0X3NxbChj b25uLCBjLCBkaWQsIHRpZCkKKyAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKGFkZF9zcWwuc3Ry aXAoIlxuIikpCisKKyAgICBpZiBsZW4oc3FsKSA+IDA6CisgICAgICAgICMgSm9pbiBhbGwgdGhl IHNxbChzKSBhcyBzaW5nbGUgc3RyaW5nCisgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwp CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgK K2RlZiBnZXRfc3FsKGNvbm4sIGRhdGEsIGRpZCwgdGlkLCBleGlkPU5vbmUsIHRlbXBsYXRlX3Bh dGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCBm cm9tIG1vZGVsIGRhdGEuCisgICAgOnBhcmFtIGNvbm46IENvbm5lY3Rpb24gT2JqZWN0CisgICAg OnBhcmFtIGRhdGE6IGRhdGEKKyAgICA6cGFyYW0gZGlkOiBEYXRhYmFzZSBJRAorICAgIDpwYXJh bSB0aWQ6IFRhYmxlIGlkCisgICAgOnBhcmFtIGV4aWQ6IEV4Y2x1c2lvbiBDb25zdHJhaW50IElE CisgICAgOnBhcmFtIHRlbXBsYXRlX3BhdGg6IFRlbXBsYXRlIFBhdGgKKyAgICA6cmV0dXJuOgor ICAgICIiIgorICAgIG5hbWUgPSBkYXRhWyduYW1lJ10gaWYgJ25hbWUnIGluIGRhdGEgZWxzZSBO b25lCisgICAgaWYgZXhpZCBpcyBub3QgTm9uZToKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkLCBjaWQ9ZXhpZCkKKyAgICAg ICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24ocmVzKQorCisgICAgICAgIGlmIGxl bihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEdvbmUoCisgICAg ICAgICAgICAgICAgXygnQ291bGQgbm90IGZpbmQgdGhlIGV4Y2x1c2lvbiBjb25zdHJhaW50IGlu IHRoZSB0YWJsZS4nKSkKKworICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBdCisgICAg ICAgIGlmICduYW1lJyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgIG5hbWUgPSBkYXRhWyduYW1l J10gPSBvbGRfZGF0YVsnbmFtZSddCisKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9kYXRhKQorICAgIGVsc2U6CisgICAg ICAgIGlmICdjb2x1bW5zJyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgIHJldHVybiBfKCctLSBk ZWZpbml0aW9uIGluY29tcGxldGUnKSwgbmFtZQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0 YVsnY29sdW1ucyddLCBsaXN0KSBhbmQgbGVuKGRhdGFbJ2NvbHVtbnMnXSkgPCAxOgorICAgICAg ICAgICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpLCBuYW1lCisKKyAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAnY3JlYXRl LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1j b25uKQorCisgICAgcmV0dXJuIHNxbCwgbmFtZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0 cmFpbnRzL2ZvcmVpZ25fa2V5L19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2Zv cmVpZ25fa2V5L19faW5pdF9fLnB5CmluZGV4IDIxMDVmZTIxMC4uZTRhNzRhOTNhIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9yZWlnbl9rZXkvX19pbml0X18ucHkKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5L19faW5pdF9fLnB5CkBAIC0yMCw2ICsy MCw4IEBAIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFz ZXMuc2NoZW1hcy50YWJsZXMuXAogZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IFBH Q2hpbGROb2RlVmlldwogZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9y ZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yLCBcCiAgICAgbWFrZV9yZXNwb25zZSBhcyBh amF4X3Jlc3BvbnNlLCBnb25lCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGFibGVzLlwKKyAgICBjb25zdHJhaW50cy5mb3JlaWdu X2tleSBpbXBvcnQgdXRpbHMgYXMgZmtleV91dGlscwogZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZl ciBpbXBvcnQgZ2V0X2RyaXZlcgogZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVS CiBmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IElTX1BZMgpAQCAtMTc2LDkgKzE3OCw2IEBAIGNs YXNzIEZvcmVpZ25LZXlDb25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgLSBU aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmV0dXJuIG1vZGlmaWVkIFNRTCBmb3IgdGhlIHNlbGVj dGVkCiAgICAgICBmb3JlaWduIGtleS4KIAotICAgICogZ2V0X3NxbCgpCi0gICAgICAtIFRoaXMg ZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhLgotCiAgICAgKiBzcWwo KToKICAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCB0byBzaG93IGl0IGlu IHNxbCBwYW5lIGZvciB0aGUKICAgICAgIHNlbGVjdGVkIGZvcmVpZ24ga2V5LgpAQCAtMjM3LDE2 ICsyMzYsOSBAQCBjbGFzcyBGb3JlaWduS2V5Q29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3 KToKICAgICAgICAgICAgICAgICBzZWxmLm1hbmFnZXIudmVyc2lvbikKIAogICAgICAgICAgICAg IyBXZSBuZWVkIHBhcmVudCdzIG5hbWUgZWcgdGFibGUgbmFtZSBhbmQgc2NoZW1hIG5hbWUKLSAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3Bh cmVudC5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPWt3YXJn c1sndGlkJ10pCi0gICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8y ZGFycmF5KFNRTCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQotCi0gICAgICAgICAg ICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKLSAgICAgICAgICAgICAgICBzZWxmLnNjaGVtYSA9 IHJvd1snc2NoZW1hJ10KLSAgICAgICAgICAgICAgICBzZWxmLnRhYmxlID0gcm93Wyd0YWJsZSdd CisgICAgICAgICAgICBzY2hlbWEsIHRhYmxlID0gZmtleV91dGlscy5nZXRfcGFyZW50KHNlbGYu Y29ubiwga3dhcmdzWyd0aWQnXSkKKyAgICAgICAgICAgIHNlbGYuc2NoZW1hID0gc2NoZW1hCisg ICAgICAgICAgICBzZWxmLnRhYmxlID0gdGFibGUKIAogICAgICAgICAgICAgcmV0dXJuIGYoKmFy Z3MsICoqa3dhcmdzKQogICAgICAgICByZXR1cm4gd3JhcApAQCAtMjc0LDUxICsyNjYsMTggQEAg Y2xhc3MgRm9yZWlnbktleUNvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAg IFJldHVybnM6CiAKICAgICAgICAgIiIiCi0gICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjaWQ9ZmtpZCkKLQotICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQotCisgICAgICAgIHN0YXR1cywg cmVzID0gZmtleV91dGlscy5nZXRfZm9yZWlnbl9rZXlzKHNlbGYuY29ubiwgdGlkLCBma2lkKQog ICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICByZXR1cm4gcmVzCiAKLSAgICAgICAg aWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgorICAgICAgICBpZiBsZW4ocmVzKSA9PSAwOgogICAg ICAgICAgICAgcmV0dXJuIGdvbmUoXygKICAgICAgICAgICAgICAgICAiIiJDb3VsZCBub3QgZmlu ZCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBpbiB0aGUgdGFibGUuIiIiCiAgICAgICAgICAg ICApKQogCi0gICAgICAgIHJlc3VsdCA9IHJlc1sncm93cyddWzBdCi0KLSAgICAgICAgc3FsID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50X2NvbHMuc3FsJ10p LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGtleXM9emlwKHJlc3VsdFsnY29uZmtleSddLCByZXN1bHRbJ2Nvbmtl eSddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZyZWxpZD1yZXN1bHRbJ2Nv bmZyZWxpZCddKQotCi0gICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGlj dChzcWwpCi0KLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgIGNvbHVtbnMgPSBbXQot ICAgICAgICBjb2xzID0gW10KLSAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToKLSAgICAg ICAgICAgIGNvbHVtbnMuYXBwZW5kKHsibG9jYWxfY29sdW1uIjogcm93Wydjb25hdHRuYW1lJ10s Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZXMiOiByZXN1bHRbJ2NvbmZy ZWxpZCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2VkIjogcm93Wydj b25mYXR0bmFtZSddfSkKLSAgICAgICAgICAgIGNvbHMuYXBwZW5kKHJvd1snY29uYXR0bmFtZSdd KQotCi0gICAgICAgIHJlc3VsdFsnY29sdW1ucyddID0gY29sdW1ucwotCisgICAgICAgIHJlc3Vs dCA9IHJlcwogICAgICAgICBpZiBma2lkOgotICAgICAgICAgICAgY292ZXJpbmdpbmRleCA9IHNl bGYuc2VhcmNoX2NvdmVyaW5naW5kZXgodGlkLCBjb2xzKQotICAgICAgICAgICAgcmVzdWx0Wydj b3ZlcmluZ2luZGV4J10gPSBjb3ZlcmluZ2luZGV4Ci0gICAgICAgICAgICBpZiBjb3ZlcmluZ2lu ZGV4OgotICAgICAgICAgICAgICAgIHJlc3VsdFsnYXV0b2luZGV4J10gPSBUcnVlCi0gICAgICAg ICAgICAgICAgcmVzdWx0WydoYXNpbmRleCddID0gVHJ1ZQotICAgICAgICAgICAgZWxzZToKLSAg ICAgICAgICAgICAgICByZXN1bHRbJ2F1dG9pbmRleCddID0gRmFsc2UKLSAgICAgICAgICAgICAg ICByZXN1bHRbJ2hhc2luZGV4J10gPSBGYWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gcmVzWzBd CiAKICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCiAgICAgICAgICAgICByZXNwb25zZT1y ZXN1bHQsCkBAIC0zNzMsMTYgKzMzMiw5IEBAIGNsYXNzIEZvcmVpZ25LZXlDb25zdHJhaW50Vmll dyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLnZlcnNpb24pCiAK ICAgICAgICAgIyBXZSBuZWVkIHBhcmVudCdzIG5hbWUgZWcgdGFibGUgbmFtZSBhbmQgc2NoZW1h IG5hbWUKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9w YXJlbnQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkKLSAg ICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAg ICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106Ci0g ICAgICAgICAgICBzZWxmLnNjaGVtYSA9IHJvd1snc2NoZW1hJ10KLSAgICAgICAgICAgIHNlbGYu dGFibGUgPSByb3dbJ3RhYmxlJ10KKyAgICAgICAgc2NoZW1hLCB0YWJsZSA9IGZrZXlfdXRpbHMu Z2V0X3BhcmVudChzZWxmLmNvbm4sIHRpZCkKKyAgICAgICAgc2VsZi5zY2hlbWEgPSBzY2hlbWEK KyAgICAgICAgc2VsZi50YWJsZSA9IHRhYmxlCiAKICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLApAQCAtNDg4LDE2ICs0NDAsMTAg QEAgY2xhc3MgRm9yZWlnbktleUNvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAg ICAgICAgICBzZWxmLm1hbmFnZXIudmVyc2lvbikKIAogICAgICAgICAjIFdlIG5lZWQgcGFyZW50 J3MgbmFtZSBlZyB0YWJsZSBuYW1lIGFuZCBzY2hlbWEgbmFtZQotICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkKQotICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxm LmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKyAgICAg ICAgc2NoZW1hLCB0YWJsZSA9IGZrZXlfdXRpbHMuZ2V0X3BhcmVudChzZWxmLmNvbm4sIHRpZCkK KyAgICAgICAgc2VsZi5zY2hlbWEgPSBzY2hlbWEKKyAgICAgICAgc2VsZi50YWJsZSA9IHRhYmxl CiAKLSAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106Ci0gICAgICAgICAgICBzZWxmLnNj aGVtYSA9IHJvd1snc2NoZW1hJ10KLSAgICAgICAgICAgIHNlbGYudGFibGUgPSByb3dbJ3RhYmxl J10KICAgICAgICAgcmVzID0gW10KICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ25vZGVzLnNxbCddKSwKQEAgLTU3NSwxNSArNTIxLDExIEBAIGNsYXNzIEZvcmVp Z25LZXlDb25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBkYXRhWydzY2hl bWEnXSA9IHNlbGYuc2NoZW1hCiAgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSBzZWxmLnRhYmxlCiAg ICAgICAgIHRyeToKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGlkPWRhdGFbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNlcyddKQotICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgIGRhdGFbJ3JlbW90ZV9zY2hlbWEnXSA9 IHJlc1sncm93cyddWzBdWydzY2hlbWEnXQotICAgICAgICAgICAgZGF0YVsncmVtb3RlX3RhYmxl J10gPSByZXNbJ3Jvd3MnXVswXVsndGFibGUnXQorICAgICAgICAgICAgIyBHZXQgdGhlIHBhcmVu dCBzY2hlbWEgYW5kIHRhYmxlLgorICAgICAgICAgICAgc2NoZW1hLCB0YWJsZSA9IGZrZXlfdXRp bHMuZ2V0X3BhcmVudCgKKyAgICAgICAgICAgICAgICBzZWxmLmNvbm4sIGRhdGFbJ2NvbHVtbnMn XVswXVsncmVmZXJlbmNlcyddKQorICAgICAgICAgICAgZGF0YVsncmVtb3RlX3NjaGVtYSddID0g c2NoZW1hCisgICAgICAgICAgICBkYXRhWydyZW1vdGVfdGFibGUnXSA9IHRhYmxlCiAKICAgICAg ICAgICAgIGlmICduYW1lJyBub3QgaW4gZGF0YSBvciBkYXRhWyduYW1lJ10gPT0gIiI6CiAgICAg ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKApAQCAtNjkwLDcgKzYzMiw3IEBAIGNs YXNzIEZvcmVpZ25LZXlDb25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICB0 cnk6CiAgICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNlbGYuc2NoZW1hCiAgICAgICAgICAg ICBkYXRhWyd0YWJsZSddID0gc2VsZi50YWJsZQotICAgICAgICAgICAgc3FsLCBuYW1lID0gc2Vs Zi5nZXRfc3FsKGRhdGEsIHRpZCwgZmtpZCkKKyAgICAgICAgICAgIHNxbCwgbmFtZSA9IGZrZXlf dXRpbHMuZ2V0X3NxbChzZWxmLmNvbm4sIGRhdGEsIHRpZCwgZmtpZCkKICAgICAgICAgICAgIGlm IG5vdCBpc2luc3RhbmNlKHNxbCwgKHN0ciwgdW5pY29kZSkpOgogICAgICAgICAgICAgICAgIHJl dHVybiBzcWwKICAgICAgICAgICAgIHNxbCA9IHNxbC5zdHJpcCgnXG4nKS5zdHJpcCgnICcpCkBA IC04MjYsNyArNzY4LDcgQEAgY2xhc3MgRm9yZWlnbktleUNvbnN0cmFpbnRWaWV3KFBHQ2hpbGRO b2RlVmlldyk6CiAgICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2VsZi5zY2hlbWEKICAgICAgICAg ZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc3Fs LCBuYW1lID0gc2VsZi5nZXRfc3FsKGRhdGEsIHRpZCwgZmtpZCkKKyAgICAgICAgICAgIHNxbCwg bmFtZSA9IGZrZXlfdXRpbHMuZ2V0X3NxbChzZWxmLmNvbm4sIGRhdGEsIHRpZCwgZmtpZCkKICAg ICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNxbCwgKHN0ciwgdW5pY29kZSkpOgogICAgICAg ICAgICAgICAgIHJldHVybiBzcWwKICAgICAgICAgICAgIHNxbCA9IHNxbC5zdHJpcCgnXG4nKS5z dHJpcCgnICcpCkBAIC04NDAsOTYgKzc4Miw2IEBAIGNsYXNzIEZvcmVpZ25LZXlDb25zdHJhaW50 VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkK IAotICAgIGRlZiBnZXRfc3FsKHNlbGYsIGRhdGEsIHRpZCwgZmtpZD1Ob25lKToKLSAgICAgICAg IiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBk YXRhLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZGF0YTogQ29udGFpbnMgdGhlIGRhdGEg b2YgdGhlIHNlbGVjdGVkIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuCi0gICAgICAgICAgdGlkOiBU YWJsZSBJRC4KLSAgICAgICAgICBma2lkOiBGb3JlaWduIGtleSBjb25zdHJhaW50IElECi0KLSAg ICAgICAgUmV0dXJuczoKLQotICAgICAgICAiIiIKLSAgICAgICAgaWYgZmtpZCBpcyBub3QgTm9u ZToKLSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAg ICAgICAgICAgdGlkPXRpZCwgY2lkPWZraWQpCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK LSAgICAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKLSAgICAgICAgICAgICAgICBy ZXR1cm4gZ29uZShfKCIiIkNvdWxkIG5vdCBmaW5kIHRoZSBmb3JlaWduIGtleS4iIiIpKQotCi0g ICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBdCi0gICAgICAgICAgICByZXF1aXJl ZF9hcmdzID0gWyduYW1lJ10KLSAgICAgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJnczoK LSAgICAgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAg IGRhdGFbYXJnXSA9IG9sZF9kYXRhW2FyZ10KLQotICAgICAgICAgICAgc3FsID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9kYXRh KQotCi0gICAgICAgICAgICBpZiAnYXV0b2luZGV4JyBpbiBkYXRhIGFuZCBkYXRhWydhdXRvaW5k ZXgnXSBhbmQgXAotICAgICAgICAgICAgICAgICAgICAoJ2NvdmVyaW5naW5kZXgnIGluIGRhdGEg YW5kIGRhdGFbJ2NvdmVyaW5naW5kZXgnXSAhPSAnJyk6Ci0KLSAgICAgICAgICAgICAgICBjb2xf c3FsID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X2NvbnN0cmFpbnRfY29scy5zcWwnXSksCi0gICAgICAgICAg ICAgICAgICAgIHRpZD10aWQsCi0gICAgICAgICAgICAgICAgICAgIGtleXM9emlwKG9sZF9kYXRh Wydjb25ma2V5J10sIG9sZF9kYXRhWydjb25rZXknXSksCi0gICAgICAgICAgICAgICAgICAgIGNv bmZyZWxpZD1vbGRfZGF0YVsnY29uZnJlbGlkJ10KLSAgICAgICAgICAgICAgICApCi0KLSAgICAg ICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoY29sX3NxbCkK LQotICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICAg ICAgY29sdW1ucyA9IFtdCi0gICAgICAgICAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToK LSAgICAgICAgICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQoeyJsb2NhbF9jb2x1bW4iOiByb3db J2NvbmF0dG5hbWUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZl cmVuY2VzIjogb2xkX2RhdGFbJ2NvbmZyZWxpZCddLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgInJlZmVyZW5jZWQiOiByb3dbJ2NvbmZhdHRuYW1lJ119KQotCi0gICAgICAg ICAgICAgICAgZGF0YVsnY29sdW1ucyddID0gY29sdW1ucwotCi0gICAgICAgICAgICAgICAgc3Fs ICs9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZV9pbmRleC5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAg IGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBy ZXF1aXJlZF9hcmdzID0gWydjb2x1bW5zJ10KLQotICAgICAgICAgICAgZm9yIGFyZyBpbiByZXF1 aXJlZF9hcmdzOgotICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKLSAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpCi0gICAgICAg ICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGRhdGFbYXJnXSwgbGlzdCkgYW5kIGxlbihkYXRhW2Fy Z10pIDwgMToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5j b21wbGV0ZScpCi0KLSAgICAgICAgICAgIGlmIGRhdGFbJ2F1dG9pbmRleCddIGFuZCBcCi0gICAg ICAgICAgICAgICAgKCdjb3ZlcmluZ2luZGV4JyBub3QgaW4gZGF0YSBvcgotICAgICAgICAgICAg ICAgICBkYXRhWydjb3ZlcmluZ2luZGV4J10gPT0gJycpOgotICAgICAgICAgICAgICAgIHJldHVy biBfKCctLSBkZWZpbml0aW9uIGluY29tcGxldGUnKQotCi0gICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1kYXRhWydjb2x1bW5zJ11bMF1bJ3JlZmVy ZW5jZXMnXSkKLSAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJk YXJyYXkoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgICAg IGRhdGFbJ3JlbW90ZV9zY2hlbWEnXSA9IHJzZXRbJ3Jvd3MnXVswXVsnc2NoZW1hJ10KLSAgICAg ICAgICAgIGRhdGFbJ3JlbW90ZV90YWJsZSddID0gcnNldFsncm93cyddWzBdWyd0YWJsZSddCi0K LSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQotCi0gICAgICAgICAgICBpZiBkYXRhWydhdXRv aW5kZXgnXToKLSAgICAgICAgICAgICAgICBzcWwgKz0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAg ICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlX2luZGV4 LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikK LSAgICAgICAgcmV0dXJuIHNxbCwgZGF0YVsnbmFtZSddIGlmICduYW1lJyBpbiBkYXRhIGVsc2Ug b2xkX2RhdGFbJ25hbWUnXQotCiAgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBzcWwo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBma2lkPU5vbmUpOgogICAgICAgICAiIiIK QEAgLTk4MCwxNiArODMyLDExIEBAIGNsYXNzIEZvcmVpZ25LZXlDb25zdHJhaW50VmlldyhQR0No aWxkTm9kZVZpZXcpOgogCiAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKIAotICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwn XSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9ZGF0YVsnY29sdW1ucyddWzBd WydyZWZlcmVuY2VzJ10pCi0gICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVf MmRhcnJheShTUUwpCi0KLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgIGRhdGFbJ3Jl bW90ZV9zY2hlbWEnXSA9IHJlc1sncm93cyddWzBdWydzY2hlbWEnXQotICAgICAgICBkYXRhWydy ZW1vdGVfdGFibGUnXSA9IHJlc1sncm93cyddWzBdWyd0YWJsZSddCisgICAgICAgICMgR2V0IHRo ZSBwYXJlbnQgc2NoZW1hIGFuZCB0YWJsZS4KKyAgICAgICAgc2NoZW1hLCB0YWJsZSA9IGZrZXlf dXRpbHMuZ2V0X3BhcmVudChzZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddWzBdWydyZWZlcmVuY2VzJ10pCisgICAg ICAgIGRhdGFbJ3JlbW90ZV9zY2hlbWEnXSA9IHNjaGVtYQorICAgICAgICBkYXRhWydyZW1vdGVf dGFibGUnXSA9IHRhYmxlCiAKICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAogICAgICAg ICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksIGRhdGE9 ZGF0YSkKQEAgLTEwODcsNDYgKzkzNCw2IEBAIGNsYXNzIEZvcmVpZ25LZXlDb25zdHJhaW50Vmll dyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAot ICAgIGRlZiBzZWFyY2hfY292ZXJpbmdpbmRleChzZWxmLCB0aWQsIGNvbHMpOgotICAgICAgICAi IiIKLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHRpZDogVGFibGUgaWQKLSAgICAgICAgICBj b2xzOiBjb2x1bW4gbGlzdAotCi0gICAgICAgIFJldHVybnM6Ci0KLSAgICAgICAgIiIiCi0KLSAg ICAgICAgY29scyA9IHNldChjb2xzKQotICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRpZD10aWQpCi0gICAgICAgIHN0YXR1cywgY29uc3RyYWludHMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KFNRTCkKLQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAg ICAgcmFpc2UgRXhjZXB0aW9uKGNvbnN0cmFpbnRzKQotCi0gICAgICAgIGZvciBjb3N0cm50IGlu IGNvbnN0cmFpbnRzWydyb3dzJ106Ci0KLSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgKLSAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X2Nv bHMuc3FsJ10pLAotICAgICAgICAgICAgICAgIGNpZD1jb3N0cm50WydvaWQnXSwKLSAgICAgICAg ICAgICAgICBjb2xjbnQ9Y29zdHJudFsnY29sX2NvdW50J10pCi0gICAgICAgICAgICBzdGF0dXMs IHJlc3QgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQotICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlc3QpCi0KLSAgICAgICAgICAgIGluZGV4Y29scyA9IHNldCgpCi0gICAgICAgICAg ICBmb3IgciBpbiByZXN0Wydyb3dzJ106Ci0gICAgICAgICAgICAgICAgaW5kZXhjb2xzLmFkZChy Wydjb2x1bW4nXS5zdHJpcCgnIicpKQotCi0gICAgICAgICAgICBpZiBsZW4oY29scyAtIGluZGV4 Y29scykgPT0gbGVuKGluZGV4Y29scyAtIGNvbHMpID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0 dXJuIGNvc3RybnRbImlkeG5hbWUiXQotCi0gICAgICAgIHJldHVybiBOb25lCi0KICAgICBAY2hl Y2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGdldF9jb3ZlcmluZ2luZGV4KHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKICAgICAgICAgIiIiCkBAIC0xMTQ2LDcgKzk1Myw3IEBA IGNsYXNzIEZvcmVpZ25LZXlDb25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAg ICB0cnk6CiAgICAgICAgICAgICBpZiBkYXRhIGFuZCAnY29scycgaW4gZGF0YToKICAgICAgICAg ICAgICAgICBjb2xzID0gc2V0KGpzb24ubG9hZHMoZGF0YVsnY29scyddLCBlbmNvZGluZz0ndXRm LTgnKSkKLSAgICAgICAgICAgICAgICBpbmRleCA9IHNlbGYuc2VhcmNoX2NvdmVyaW5naW5kZXgo dGlkLCBjb2xzKQorICAgICAgICAgICAgICAgIGluZGV4ID0gZmtleV91dGlscy5zZWFyY2hfY292 ZXJpbmdpbmRleChzZWxmLmNvbm4sIHRpZCwgY29scykKIAogICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKICAgICAgICAgICAgICAgICBkYXRhPWluZGV4LApkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3V0aWxzLnB5IGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMC4uNTQ2ODY1MDU1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2Nv bnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3V0aWxzLnB5CkBAIC0wLDAgKzEsMjg5IEBACisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHly aWdodCAoQykgMjAxMyAtIDIwMTksIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhp cyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisiIiIgSW1wbGVtZW50cyBVdGlsaXR5IGNsYXNzIGZvciBGb3Jl aWduIEtleXMuICIiIgorCitmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUKK2Zyb20g Zmxhc2tfYmFiZWxleCBpbXBvcnQgZ2V0dGV4dCBhcyBfCitmcm9tIHBnYWRtaW4udXRpbHMuYWph eCBpbXBvcnQgaW50ZXJuYWxfc2VydmVyX2Vycm9yCitmcm9tIHBnYWRtaW4udXRpbHMuZXhjZXB0 aW9uIGltcG9ydCBPYmplY3RHb25lCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworCitk ZWYgZ2V0X3RlbXBsYXRlX3BhdGgoZik6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxs IGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIHByZXBhcmUKKyAgICB0aGUgdGVtcGxh dGUgcGF0aCBiYXNlZCBvbiBkYXRhYmFzZSBzZXJ2ZXIgdmVyc2lvbi4KKyAgICAiIiIKKworICAg IEB3cmFwcyhmKQorICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgSGVy ZSBhcmdzWzBdIHdpbGwgaG9sZCB0aGUgY29ubmVjdGlvbiBvYmplY3QKKyAgICAgICAgY29ubl9v YmogPSBhcmdzWzBdCisgICAgICAgIGlmICd0ZW1wbGF0ZV9wYXRoJyBub3QgaW4ga3dhcmdzOgor ICAgICAgICAgICAga3dhcmdzWyd0ZW1wbGF0ZV9wYXRoJ10gPSAnZm9yZWlnbl9rZXkvc3FsLyN7 MH0jJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgY29ubl9vYmoubWFuYWdlci52ZXJzaW9uKQor CisgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKKyAgICByZXR1cm4gd3JhcAorCisK K0BnZXRfdGVtcGxhdGVfcGF0aAorZGVmIGdldF9mb3JlaWduX2tleXMoY29ubiwgdGlkLCBma2lk PU5vbmUsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIGZldGNoIGluZm9ybWF0aW9uIG9mIHRoZQorICAgIGZvcmVpZ24ga2V5KHMpIGZv ciB0aGUgZ2l2ZW4gdGFibGUuCisgICAgOnBhcmFtIGNvbm46IENvbm5lY3Rpb24gT2JqZWN0Cisg ICAgOnBhcmFtIHRpZDogVGFibGUgSUQKKyAgICA6cGFyYW0gZmtpZDogRm9yZWlnbiBLZXkgSUQK KyAgICA6cGFyYW0gdGVtcGxhdGVfcGF0aDogVGVtcGxhdGUgUGF0aAorICAgIDpyZXR1cm46Cisg ICAgIiIiCisKKyAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgIFt0 ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksIHRpZD10aWQsIGNpZD1ma2lkKQorCisg ICAgc3RhdHVzLCByZXN1bHQgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgcmV0dXJuIHN0YXR1cywgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlc3VsdCkKKworICAgIGZvciBmayBpbiByZXN1bHRbJ3Jvd3MnXToKKyAgICAgICAgc3Fs ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWludF9jb2xzLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBrZXlzPXppcChma1snY29uZmtleSddLCBma1snY29ua2V5J10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZnJlbGlkPWZrWydjb25mcmVsaWQnXSkKKwor ICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBzdGF0dXMsIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgY29sdW1ucyA9IFtdCisgICAgICAgIGNvbHMg PSBbXQorICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cyddOgorICAgICAgICAgICAgY29sdW1u cy5hcHBlbmQoeyJsb2NhbF9jb2x1bW4iOiByb3dbJ2NvbmF0dG5hbWUnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAicmVmZXJlbmNlcyI6IGZrWydjb25mcmVsaWQnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlZCI6IHJvd1snY29uZmF0dG5hbWUnXX0pCisg ICAgICAgICAgICBjb2xzLmFwcGVuZChyb3dbJ2NvbmF0dG5hbWUnXSkKKworICAgICAgICBma1sn Y29sdW1ucyddID0gY29sdW1ucworCisgICAgICAgIGlmIG5vdCBma2lkOgorICAgICAgICAgICAg c2NoZW1hLCB0YWJsZSA9IGdldF9wYXJlbnQoY29ubiwgZmtbJ2NvbHVtbnMnXVswXVsncmVmZXJl bmNlcyddKQorICAgICAgICAgICAgZmtbJ3JlbW90ZV9zY2hlbWEnXSA9IHNjaGVtYQorICAgICAg ICAgICAgZmtbJ3JlbW90ZV90YWJsZSddID0gdGFibGUKKworICAgICAgICBjb3ZlcmluZ2luZGV4 ID0gc2VhcmNoX2NvdmVyaW5naW5kZXgoY29ubiwgdGlkLCBjb2xzKQorICAgICAgICBma1snY292 ZXJpbmdpbmRleCddID0gY292ZXJpbmdpbmRleAorICAgICAgICBpZiBjb3ZlcmluZ2luZGV4Ogor ICAgICAgICAgICAgZmtbJ2F1dG9pbmRleCddID0gVHJ1ZQorICAgICAgICAgICAgZmtbJ2hhc2lu ZGV4J10gPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBma1snYXV0b2luZGV4J10g PSBGYWxzZQorICAgICAgICAgICAgZmtbJ2hhc2luZGV4J10gPSBGYWxzZQorCisgICAgcmV0dXJu IFRydWUsIHJlc3VsdFsncm93cyddCisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgc2VhcmNo X2NvdmVyaW5naW5kZXgoY29ubiwgdGlkLCBjb2xzLCB0ZW1wbGF0ZV9wYXRoPU5vbmUpOgorICAg ICIiIgorICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzZWFyY2ggdGhlIGNvdmVyaW5nIGlu ZGV4CisgICAgOnBhcmFtIGNvbm46IENvbm5lY3Rpb24gT2JqZWN0CisgICAgOnBhcmFtIHRpZDog VGFibGUgaWQKKyAgICA6cGFyYW0gY29sczogQ29sdW1ucworICAgIDpwYXJhbSB0ZW1wbGF0ZV9w YXRoOiBUZW1wbGF0ZSBQYXRoCisgICAgOnJldHVybjoKKyAgICAiIiIKKworICAgIGNvbHMgPSBz ZXQoY29scykKKyAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3Bh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRz LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkKKyAgICBzdGF0dXMs IGNvbnN0cmFpbnRzID0gY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihjb25zdHJhaW50cykKKworICAgIGZvciBjb25zdHJh aW50IGluIGNvbnN0cmFpbnRzWydyb3dzJ106CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAnZ2V0X2NvbHMuc3FsJ10p LAorICAgICAgICAgICAgY2lkPWNvbnN0cmFpbnRbJ29pZCddLAorICAgICAgICAgICAgY29sY250 PWNvbnN0cmFpbnRbJ2NvbF9jb3VudCddKQorICAgICAgICBzdGF0dXMsIHJlc3QgPSBjb25uLmV4 ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJh aXNlIEV4Y2VwdGlvbihyZXN0KQorCisgICAgICAgIGluZGV4X2NvbHMgPSBzZXQoKQorICAgICAg ICBmb3IgciBpbiByZXN0Wydyb3dzJ106CisgICAgICAgICAgICBpbmRleF9jb2xzLmFkZChyWydj b2x1bW4nXS5zdHJpcCgnIicpKQorCisgICAgICAgIGlmIGxlbihjb2xzIC0gaW5kZXhfY29scykg PT0gbGVuKGluZGV4X2NvbHMgLSBjb2xzKSA9PSAwOgorICAgICAgICAgICAgcmV0dXJuIGNvbnN0 cmFpbnRbImlkeG5hbWUiXQorCisgICAgcmV0dXJuIE5vbmUKKworCitAZ2V0X3RlbXBsYXRlX3Bh dGgKK2RlZiBnZXRfcGFyZW50KGNvbm4sIHRpZCwgdGVtcGxhdGVfcGF0aD1Ob25lKToKKyAgICAi IiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBwYXJlbnQgb2YgdGhlIGdpdmVu IHRhYmxlLgorICAgIDpwYXJhbSBjb25uOiBDb25uZWN0aW9uIE9iamVjdAorICAgIDpwYXJhbSB0 aWQ6IFRhYmxlIG9pZAorICAgIDpwYXJhbSB0ZW1wbGF0ZV9wYXRoOgorICAgIDpyZXR1cm46Cisg ICAgIiIiCisKKyAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3Bh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwn XSksIHRpZD10aWQpCisgICAgc3RhdHVzLCByc2V0ID0gY29ubi5leGVjdXRlXzJkYXJyYXkoU1FM KQorICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihyc2V0KQorCisg ICAgc2NoZW1hID0gJycKKyAgICB0YWJsZSA9ICcnCisgICAgaWYgJ3Jvd3MnIGluIHJzZXQgYW5k IGxlbihyc2V0Wydyb3dzJ10pID4gMDoKKyAgICAgICAgc2NoZW1hID0gcnNldFsncm93cyddWzBd WydzY2hlbWEnXQorICAgICAgICB0YWJsZSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFibGUnXQorCisg ICAgcmV0dXJuIHNjaGVtYSwgdGFibGUKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2RlZiBnZXRf Zm9yZWlnbl9rZXlfc3FsKGNvbm4sIHRpZCwgZGF0YSwgdGVtcGxhdGVfcGF0aD1Ob25lKToKKyAg ICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHNxbCBmb3IgZm9yZWlnbiBrZXlz LgorICAgIDpwYXJhbSBjb25uOiBDb25uZWN0aW9uIE9iamVjdAorICAgIDpwYXJhbSB0aWQ6IFRh YmxlIElECisgICAgOnBhcmFtIGRhdGE6IERhdGEKKyAgICA6cGFyYW0gdGVtcGxhdGVfcGF0aDog VGVtcGxhdGUgUGF0aAorICAgIDpyZXR1cm46CisgICAgIiIiCisKKyAgICBzcWwgPSBbXQorICAg ICMgQ2hlY2sgaWYgY29uc3RyYWludCBpcyBpbiBkYXRhCisgICAgIyBJZiB5ZXMgdGhlbiB3ZSBu ZWVkIHRvIGNoZWNrIGZvciBhZGQvY2hhbmdlL2RlbGV0ZQorICAgIGlmICdmb3JlaWduX2tleScg aW4gZGF0YToKKyAgICAgICAgY29uc3RyYWludCA9IGRhdGFbJ2ZvcmVpZ25fa2V5J10KKyAgICAg ICAgIyBJZiBjb25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCisgICAgICAgIGlmICdkZWxldGVk JyBpbiBjb25zdHJhaW50OgorICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnZGVsZXRl ZCddOgorICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAg ICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAj IFNxbCBmb3IgZHJvcAorICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAg ICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAg IFt0ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPWNvbm4pLnN0cmlwKCdcbicp CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGlmICdjaGFuZ2VkJyBpbiBjb25zdHJhaW50 OgorICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnY2hhbmdlZCddOgorICAgICAgICAg ICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICBjWyd0 YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICBtb2RpZmllZF9zcWwsIG5h bWUgPSBnZXRfc3FsKGNvbm4sIGMsIHRpZCwgY1snb2lkJ10pCisgICAgICAgICAgICAgICAgc3Fs LmFwcGVuZChtb2RpZmllZF9zcWwuc3RyaXAoIlxuIikpCisKKyAgICAgICAgaWYgJ2FkZGVkJyBp biBjb25zdHJhaW50OgorICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnYWRkZWQnXToK KyAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCisgICAgICAgICAg ICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQorCisgICAgICAgICAgICAgICAgYWRkX3Nx bCwgbmFtZSA9IGdldF9zcWwoY29ubiwgYywgdGlkKQorICAgICAgICAgICAgICAgIHNxbC5hcHBl bmQoYWRkX3NxbC5zdHJpcCgiXG4iKSkKKworICAgIGlmIGxlbihzcWwpID4gMDoKKyAgICAgICAg IyBKb2luIGFsbCB0aGUgc3FsKHMpIGFzIHNpbmdsZSBzdHJpbmcKKyAgICAgICAgcmV0dXJuICdc blxuJy5qb2luKHNxbCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK0BnZXRf dGVtcGxhdGVfcGF0aAorZGVmIGdldF9zcWwoY29ubiwgZGF0YSwgdGlkLCBma2lkPU5vbmUsIHRl bXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVy YXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEuCisgICAgOnBhcmFtIGNvbm46IENvbm5lY3Rpb24gT2Jq ZWN0CisgICAgOnBhcmFtIGRhdGE6IGRhdGEKKyAgICA6cGFyYW0gdGlkOiBUYWJsZSBpZAorICAg IDpwYXJhbSBma2lkOiBGb3JlaWduIEtleQorICAgIDpwYXJhbSB0ZW1wbGF0ZV9wYXRoOiBUZW1w bGF0ZSBQYXRoCisgICAgOnJldHVybjoKKyAgICAiIiIKKyAgICBuYW1lID0gZGF0YVsnbmFtZSdd IGlmICduYW1lJyBpbiBkYXRhIGVsc2UgTm9uZQorICAgIGlmIGZraWQgaXMgbm90IE5vbmU6Cisg ICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ3By b3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwg Y2lkPWZraWQpCisgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3Qoc3FsKQor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKHJlcykK KworICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAgICAgICByYWlzZSBP YmplY3RHb25lKAorICAgICAgICAgICAgICAgIF8oJ0NvdWxkIG5vdCBmaW5kIHRoZSBmb3JlaWdu IGtleSBjb25zdHJhaW50IGluIHRoZSB0YWJsZS4nKSkKKworICAgICAgICBvbGRfZGF0YSA9IHJl c1sncm93cyddWzBdCisgICAgICAgIGlmICduYW1lJyBub3QgaW4gZGF0YToKKyAgICAgICAgICAg IG5hbWUgPSBkYXRhWyduYW1lJ10gPSBvbGRfZGF0YVsnbmFtZSddCisKKyAgICAgICAgc3FsID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9kYXRh KQorCisgICAgICAgIGlmICdhdXRvaW5kZXgnIGluIGRhdGEgYW5kIGRhdGFbJ2F1dG9pbmRleCdd IGFuZCBcCisgICAgICAgICAgICAgICAgKCdjb3ZlcmluZ2luZGV4JyBpbiBkYXRhIGFuZCBkYXRh Wydjb3ZlcmluZ2luZGV4J10gIT0gJycpOgorICAgICAgICAgICAgY29sX3NxbCA9IHJlbmRlcl90 ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ2dldF9j b25zdHJhaW50X2NvbHMuc3FsJ10pLAorICAgICAgICAgICAgICAgIHRpZD10aWQsCisgICAgICAg ICAgICAgICAga2V5cz16aXAob2xkX2RhdGFbJ2NvbmZrZXknXSwgb2xkX2RhdGFbJ2NvbmtleSdd KSwKKyAgICAgICAgICAgICAgICBjb25mcmVsaWQ9b2xkX2RhdGFbJ2NvbmZyZWxpZCddCisgICAg ICAgICAgICApCisKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3Qo Y29sX3NxbCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmFp c2UgRXhjZXB0aW9uKHJlcykKKworICAgICAgICAgICAgY29sdW1ucyA9IFtdCisgICAgICAgICAg ICBmb3Igcm93IGluIHJlc1sncm93cyddOgorICAgICAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5k KHsibG9jYWxfY29sdW1uIjogcm93Wydjb25hdHRuYW1lJ10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJyZWZlcmVuY2VzIjogb2xkX2RhdGFbJ2NvbmZyZWxpZCddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlZCI6IHJvd1snY29uZmF0dG5hbWUn XX0pCisKKyAgICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKKworICAgICAgICAg ICAgc3FsICs9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbdGVt cGxhdGVfcGF0aCwgJ2NyZWF0ZV9pbmRleC5zcWwnXSksCisgICAgICAgICAgICAgICAgZGF0YT1k YXRhLCBjb25uPWNvbm4pCisgICAgZWxzZToKKyAgICAgICAgaWYgJ2NvbHVtbnMnIG5vdCBpbiBk YXRhOgorICAgICAgICAgICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpLCBu YW1lCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShkYXRhWydjb2x1bW5zJ10sIGxpc3QpIGFuZCBs ZW4oZGF0YVsnY29sdW1ucyddKSA8IDE6CisgICAgICAgICAgICByZXR1cm4gXygnLS0gZGVmaW5p dGlvbiBpbmNvbXBsZXRlJyksIG5hbWUKKworICAgICAgICBpZiBkYXRhWydhdXRvaW5kZXgnXSBh bmQgXAorICAgICAgICAgICAgICAgICgnY292ZXJpbmdpbmRleCcgbm90IGluIGRhdGEgb3IgZGF0 YVsnY292ZXJpbmdpbmRleCddID09ICcnKToKKyAgICAgICAgICAgIHJldHVybiBfKCctLSBkZWZp bml0aW9uIGluY29tcGxldGUnKSwgbmFtZQorCisgICAgICAgICMgR2V0IHRoZSBwYXJlbnQgc2No ZW1hIGFuZCB0YWJsZS4KKyAgICAgICAgc2NoZW1hLCB0YWJsZSA9IGdldF9wYXJlbnQoY29ubiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddWzBdWydy ZWZlcmVuY2VzJ10pCisgICAgICAgIGRhdGFbJ3JlbW90ZV9zY2hlbWEnXSA9IHNjaGVtYQorICAg ICAgICBkYXRhWydyZW1vdGVfdGFibGUnXSA9IHRhYmxlCisKKyAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1jb25uKQorCisgICAgICAg IGlmIGRhdGFbJ2F1dG9pbmRleCddOgorICAgICAgICAgICAgc3FsICs9IHJlbmRlcl90ZW1wbGF0 ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZV9pbmRl eC5zcWwnXSksCisgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPWNvbm4pCisKKyAgICBy ZXR1cm4gc3FsLCBuYW1lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhf Y29uc3RyYWludC9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25z dHJhaW50L19faW5pdF9fLnB5CmluZGV4IGM0NWYyNDNjMC4uM2UzMmQxYmUxIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9fX2luaXRfXy5weQorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9fX2luaXRfXy5weQpAQCAt MjAsNiArMjAsOCBAQCBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMu ZGF0YWJhc2VzLnNjaGVtYXMudGFibGVzLlwKIGZyb20gcGdhZG1pbi5icm93c2VyLnV0aWxzIGlt cG9ydCBQR0NoaWxkTm9kZVZpZXcKIGZyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtl X2pzb25fcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvciwgXAogICAgIG1ha2VfcmVzcG9u c2UgYXMgYWpheF9yZXNwb25zZSwgZ29uZQorZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dy b3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRhYmxlcy5cCisgICAgY29uc3RyYWludHMu aW5kZXhfY29uc3RyYWludCBpbXBvcnQgdXRpbHMgYXMgaWR4Y29uc191dGlscwogZnJvbSBwZ2Fk bWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgogZnJvbSBjb25maWcgaW1wb3J0IFBH X0RFRkFVTFRfRFJJVkVSCiBmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IElTX1BZMgpAQCAtMjQ3 LDE2ICsyNDksMTAgQEAgY2xhc3MgSW5kZXhDb25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcp OgogICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5tYW5hZ2VyLnZlcnNpb24pCiAKICAgICAg ICAgICAgICMgV2UgbmVlZCBwYXJlbnQncyBuYW1lIGVnIHRhYmxlIG5hbWUgYW5kIHNjaGVtYSBu YW1lCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2dldF9wYXJlbnQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp ZD1rd2FyZ3NbJ3RpZCddKQotICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4 ZWN1dGVfMmRhcnJheShTUUwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKyAgICAg ICAgICAgIHNjaGVtYSwgdGFibGUgPSBpZHhjb25zX3V0aWxzLmdldF9wYXJlbnQoc2VsZi5jb25u LCBrd2FyZ3NbJ3RpZCddKQorICAgICAgICAgICAgc2VsZi5zY2hlbWEgPSBzY2hlbWEKKyAgICAg ICAgICAgIHNlbGYudGFibGUgPSB0YWJsZQogCi0gICAgICAgICAgICBmb3Igcm93IGluIHJzZXRb J3Jvd3MnXToKLSAgICAgICAgICAgICAgICBzZWxmLnNjaGVtYSA9IHJvd1snc2NoZW1hJ10KLSAg ICAgICAgICAgICAgICBzZWxmLnRhYmxlID0gcm93Wyd0YWJsZSddCiAgICAgICAgICAgICByZXR1 cm4gZigqYXJncywgKiprd2FyZ3MpCiAKICAgICAgICAgcmV0dXJuIHdyYXAKQEAgLTI4NCw0OSAr MjgwLDIwIEBAIGNsYXNzIEluZGV4Q29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAg ICAgICAgUmV0dXJuczoKIAogICAgICAgICAiIiIKLSAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aWQ9dGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkPWNp ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRfdHlwZT1zZWxmLmNv bnN0cmFpbnRfdHlwZSkKLSAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KHNxbCkKLQorICAgICAgICBzdGF0dXMsIHJlcyA9IGlkeGNvbnNfdXRpbHMuZ2V0X2luZGV4 X2NvbnN0cmFpbnRzKHNlbGYuY29ubiwgZGlkLCB0aWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25zdHJhaW50X3R5cGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2lkKQogICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICByZXR1cm4gcmVzCiAK LSAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgorICAgICAgICBpZiBsZW4ocmVzKSA9 PSAwOgogICAgICAgICAgICAgcmV0dXJuIGdvbmUoXygiIiJDb3VsZCBub3QgZmluZCB0aGUge30g aW4gdGhlIHRhYmxlLiIiIi5mb3JtYXQoCiAgICAgICAgICAgICAgICAgInByaW1hcnkga2V5IiBp ZiBzZWxmLmNvbnN0cmFpbnRfdHlwZSA9PSAicCIgZWxzZSAidW5pcXVlIGtleSIKICAgICAgICAg ICAgICkpKQogCi0gICAgICAgIHJlc3VsdCA9IHJlc1sncm93cyddWzBdCi0KLSAgICAgICAgc3Fs ID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwgJ2dldF9jb25zdHJhaW50X2NvbHMuc3FsJ10pLAotICAgICAgICAgICAgY2lkPWNpZCwK LSAgICAgICAgICAgIGNvbGNudD1yZXN1bHRbJ2NvbF9jb3VudCddKQotICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQotCi0gICAgICAgIGlmIG5vdCBzdGF0 dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKLQotICAgICAgICBjb2x1bW5zID0gW10KLSAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3Mn XToKLSAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKHsiY29sdW1uIjogcm93Wydjb2x1bW4nXS5z dHJpcCgnIicpfSkKLQotICAgICAgICByZXN1bHRbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKLQotICAg ICAgICAjIEFkZCBJbmNsdWRlIGRldGFpbHMgb2YgdGhlIGluZGV4IHN1cHBvcnRlZCBmb3IgUEct MTErCi0gICAgICAgIGlmIHNlbGYubWFuYWdlci52ZXJzaW9uID49IDExMDAwMDoKLSAgICAgICAg ICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X2NvbnN0cmFpbnRfaW5jbHVkZS5zcWwnXSksCi0gICAgICAg ICAgICAgICAgY2lkPWNpZCkKLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChzcWwpCi0KLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAg ICAgICAgIHJlc3VsdFsnaW5jbHVkZSddID0gW2NvbFsnY29sbmFtZSddIGZvciBjb2wgaW4gcmVz Wydyb3dzJ11dCisgICAgICAgIHJlc3VsdCA9IHJlcworICAgICAgICBpZiBjaWQ6CisgICAgICAg ICAgICByZXN1bHQgPSByZXNbMF0KIAogICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKICAg ICAgICAgICAgIHJlc3BvbnNlPXJlc3VsdCwKQEAgLTM4MSwxNiArMzQ4LDkgQEAgY2xhc3MgSW5k ZXhDb25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgLmZvcm1hdChz ZWxmLm1hbmFnZXIudmVyc2lvbikKIAogICAgICAgICAjIFdlIG5lZWQgcGFyZW50J3MgbmFtZSBl ZyB0YWJsZSBuYW1lIGFuZCBzY2hlbWEgbmFtZQotICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aWQ9dGlkKQotICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhl Y3V0ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICBmb3Ig cm93IGluIHJzZXRbJ3Jvd3MnXToKLSAgICAgICAgICAgIHNlbGYuc2NoZW1hID0gcm93WydzY2hl bWEnXQotICAgICAgICAgICAgc2VsZi50YWJsZSA9IHJvd1sndGFibGUnXQorICAgICAgICBzY2hl bWEsIHRhYmxlID0gaWR4Y29uc191dGlscy5nZXRfcGFyZW50KHNlbGYuY29ubiwgdGlkKQorICAg ICAgICBzZWxmLnNjaGVtYSA9IHNjaGVtYQorICAgICAgICBzZWxmLnRhYmxlID0gdGFibGUKIAog ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlk PWRpZCwKQEAgLTUwMywxNiArNDYzLDkgQEAgY2xhc3MgSW5kZXhDb25zdHJhaW50VmlldyhQR0No aWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgLmZvcm1hdChzZWxmLm1hbmFnZXIudmVyc2lvbikK IAogICAgICAgICAjIFdlIG5lZWQgcGFyZW50J3MgbmFtZSBlZyB0YWJsZSBuYW1lIGFuZCBzY2hl bWEgbmFtZQotICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0 X3BhcmVudC5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkKQot ICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAg ICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToK LSAgICAgICAgICAgIHNlbGYuc2NoZW1hID0gcm93WydzY2hlbWEnXQotICAgICAgICAgICAgc2Vs Zi50YWJsZSA9IHJvd1sndGFibGUnXQorICAgICAgICBzY2hlbWEsIHRhYmxlID0gaWR4Y29uc191 dGlscy5nZXRfcGFyZW50KHNlbGYuY29ubiwgdGlkKQorICAgICAgICBzZWxmLnNjaGVtYSA9IHNj aGVtYQorICAgICAgICBzZWxmLnRhYmxlID0gdGFibGUKIAogICAgICAgICByZXMgPSBbXQogICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J25vZGVzLnNxbCddKSwKQEAgLTY4Niw3ICs2MzksOCBAQCBjbGFzcyBJbmRleENvbnN0cmFpbnRW aWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGRhdGFbJ3Nj aGVtYSddID0gc2VsZi5zY2hlbWEKICAgICAgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSBzZWxmLnRh YmxlCi0gICAgICAgICAgICBzcWwsIG5hbWUgPSBzZWxmLmdldF9zcWwoZGF0YSwgZGlkLCB0aWQs IGNpZCkKKyAgICAgICAgICAgIHNxbCwgbmFtZSA9IGlkeGNvbnNfdXRpbHMuZ2V0X3NxbChzZWxm LmNvbm4sIGRhdGEsIGRpZCwgdGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuY29uc3RyYWludF90eXBlLCBjaWQpCiAgICAgICAgICAgICBpZiBu b3QgaXNpbnN0YW5jZShzcWwsIChzdHIsIHVuaWNvZGUpKToKICAgICAgICAgICAgICAgICByZXR1 cm4gc3FsCiAgICAgICAgICAgICBzcWwgPSBzcWwuc3RyaXAoJ1xuJykuc3RyaXAoJyAnKQpAQCAt ODI2LDcgKzc4MCw4IEBAIGNsYXNzIEluZGV4Q29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3 KToKICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQogICAgICAgICBkYXRhWyd0 YWJsZSddID0gc2VsZi50YWJsZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzcWwsIG5hbWUg PSBzZWxmLmdldF9zcWwoZGF0YSwgZGlkLCB0aWQsIGNpZCkKKyAgICAgICAgICAgIHNxbCwgbmFt ZSA9IGlkeGNvbnNfdXRpbHMuZ2V0X3NxbChzZWxmLmNvbm4sIGRhdGEsIGRpZCwgdGlkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uc3RyYWlu dF90eXBlLCBjaWQpCiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzcWwsIChzdHIsIHVu aWNvZGUpKToKICAgICAgICAgICAgICAgICByZXR1cm4gc3FsCiAgICAgICAgICAgICBzcWwgPSBz cWwuc3RyaXAoJ1xuJykuc3RyaXAoJyAnKQpAQCAtODQwLDc3ICs3OTUsNiBAQCBjbGFzcyBJbmRl eENvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9c3RyKGUpKQogCi0gICAgZGVmIGdldF9zcWwoc2VsZiwgZGF0YSwgZGlkLCB0aWQsIGNpZD1O b25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBz cWwgZnJvbSBtb2RlbCBkYXRhLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZGF0YTogQ29u dGFpbnMgdGhlIGRhdGEgb2YgdGhlIHNlbGVjdGVkIHByaW1hcnkga2V5IGNvbnN0cmFpbnQuCi0g ICAgICAgICAgdGlkOiBUYWJsZSBJRC4KLSAgICAgICAgICBjaWQ6IFByaW1hcnkga2V5IGNvbnN0 cmFpbnQgSUQKLQotICAgICAgICBSZXR1cm5zOgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBj aWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAg ICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3Fs J10pLAotICAgICAgICAgICAgICAgIGRpZD1kaWQsCi0gICAgICAgICAgICAgICAgdGlkPXRpZCwK LSAgICAgICAgICAgICAgICBjaWQ9Y2lkLAotICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRfdHlw ZT1zZWxmLmNvbnN0cmFpbnRfdHlwZQotICAgICAgICAgICAgKQotICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKLSAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCi0gICAgICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6Ci0gICAgICAg ICAgICAgICAgcmV0dXJuIGdvbmUoCi0gICAgICAgICAgICAgICAgICAgIF8oIiIiQ291bGQgbm90 IGZpbmQgdGhlIHt9IGluIHRoZSB0YWJsZS4iIiIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAg ICAgICAgInByaW1hcnkga2V5IiBpZiBzZWxmLmNvbnN0cmFpbnRfdHlwZSA9PSAicCIKLSAgICAg ICAgICAgICAgICAgICAgICAgIGVsc2UgInVuaXF1ZSBrZXkiCi0gICAgICAgICAgICAgICAgICAg ICkpCi0gICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93 cyddWzBdCi0gICAgICAgICAgICByZXF1aXJlZF9hcmdzID0gW3UnbmFtZSddCi0gICAgICAgICAg ICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBp biBkYXRhOgotICAgICAgICAgICAgICAgICAgICBkYXRhW2FyZ10gPSBvbGRfZGF0YVthcmddCi0K LSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhPWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kYXRhPW9s ZF9kYXRhKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsKLSAg ICAgICAgICAgICAgICBbdSdjb2x1bW5zJywgdSdpbmRleCddICAjIEVpdGhlciBvZiBvbmUgc2hv dWxkIGJlIHRoZXJlLgotICAgICAgICAgICAgXQotCi0gICAgICAgICAgICBkZWYgaXNfa2V5X3N0 cihrZXksIGRhdGEpOgotICAgICAgICAgICAgICAgIHJldHVybiBpc2luc3RhbmNlKGRhdGFba2V5 XSwgc3RyKSBhbmQgZGF0YVtrZXldICE9ICIiCi0KLSAgICAgICAgICAgIGRlZiBpc19rZXlfbGlz dChrZXksIGRhdGEpOgotICAgICAgICAgICAgICAgIHJldHVybiBpc2luc3RhbmNlKGRhdGFba2V5 XSwgbGlzdCkgYW5kIGxlbihkYXRhW3BhcmFtXSkgPiAwCi0KLSAgICAgICAgICAgIGZvciBhcmcg aW4gcmVxdWlyZWRfYXJnczoKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgbGlz dCk6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBwYXJhbSBpbiBhcmc6Ci0gICAgICAgICAgICAg ICAgICAgICAgICBpZiBwYXJhbSBpbiBkYXRhOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIGlzX2tleV9zdHIocGFyYW0sIGRhdGEpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9yIGlzX2tleV9saXN0KHBhcmFtLCBkYXRhKToKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBfKCctLSBkZWZpbml0aW9uIGluY29tcGxldGUnKQotCi0g ICAgICAgICAgICAgICAgZWxpZiBhcmcgbm90IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAg IHJldHVybiBfKCctLSBkZWZpbml0aW9uIGluY29tcGxldGUnKQotCi0gICAgICAgICAgICBzcWwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5z cWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRfbmFtZT1zZWxmLmNvbnN0cmFpbnRf bmFtZSkKLQotICAgICAgICByZXR1cm4gc3FsLCBkYXRhWyduYW1lJ10gaWYgJ25hbWUnIGluIGRh dGEgZWxzZSBvbGRfZGF0YVsnbmFtZSddCi0KICAgICBAY2hlY2tfcHJlY29uZGl0aW9uCiAgICAg ZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZD1Ob25lKToKICAgICAg ICAgIiIiCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWlu dC90ZXN0cy9kZWZhdWx0L3Rlc3RfcHJpbWFyeV9rZXkuanNvbiBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJh aW50cy9pbmRleF9jb25zdHJhaW50L3Rlc3RzL2RlZmF1bHQvdGVzdF9wcmltYXJ5X2tleS5qc29u CmluZGV4IDVlM2VkZWU1Yy4uMmVhZGYzOTFkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3Ry YWludHMvaW5kZXhfY29uc3RyYWludC90ZXN0cy9kZWZhdWx0L3Rlc3RfcHJpbWFyeV9rZXkuanNv bgorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZXN0cy9kZWZh dWx0L3Rlc3RfcHJpbWFyeV9rZXkuanNvbgpAQCAtMTE1LDYgKzExNSwxMyBAQAogICAgICAgImRh dGEiOiB7CiAgICAgICAgICJuYW1lIjogIlBrXyQle31bXSgpJipeIUBcIidgXFwvI2EiCiAgICAg ICB9CisgICAgfSwgeworICAgICAgInR5cGUiOiAiZGVsZXRlIiwKKyAgICAgICJuYW1lIjogIkRy b3AgSW5kZXgiLAorICAgICAgImVuZHBvaW50IjogIk5PREUtaW5kZXguZGVsZXRlX2lkIiwKKyAg ICAgICJkYXRhIjogeworICAgICAgICAibmFtZSI6ICJ1aW5kZXgiCisgICAgICB9CiAgICAgfSwg ewogICAgICAgInR5cGUiOiAiZGVsZXRlIiwKICAgICAgICJuYW1lIjogIkRyb3AgSW5kZXggQ29u c3RyYWludCBUYWJsZSIsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhf Y29uc3RyYWludC90ZXN0cy9kZWZhdWx0L3Rlc3RfdW5pcXVlX2NvbnN0cmFpbnQuanNvbiBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3Rlc3RzL2RlZmF1bHQvdGVzdF91 bmlxdWVfY29uc3RyYWludC5qc29uCmluZGV4IDllYjhkMzU2ZS4uMDY4ZDQ3YmY3IDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZXN0cy9kZWZhdWx0 L3Rlc3RfdW5pcXVlX2NvbnN0cmFpbnQuanNvbgorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMv aW5kZXhfY29uc3RyYWludC90ZXN0cy9kZWZhdWx0L3Rlc3RfdW5pcXVlX2NvbnN0cmFpbnQuanNv bgpAQCAtMTE1LDYgKzExNSwxMyBAQAogICAgICAgImRhdGEiOiB7CiAgICAgICAgICJuYW1lIjog IlVDXyQle31bXSgpJipeIUBcIidgXFwvI2EiCiAgICAgICB9CisgICAgfSwgeworICAgICAgInR5 cGUiOiAiZGVsZXRlIiwKKyAgICAgICJuYW1lIjogIkRyb3AgSW5kZXgiLAorICAgICAgImVuZHBv aW50IjogIk5PREUtaW5kZXguZGVsZXRlX2lkIiwKKyAgICAgICJkYXRhIjogeworICAgICAgICAi bmFtZSI6ICJ1aW5kZXgiCisgICAgICB9CiAgICAgfSwgewogICAgICAgInR5cGUiOiAiZGVsZXRl IiwKICAgICAgICJuYW1lIjogIkRyb3AgVW5pcXVlIENvbnN0cmFpbnQgVGFibGUiLApkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdXRpbHMucHkgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC91dGlscy5weQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjAyN2E3ZTMxYwotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3V0aWxzLnB5CkBAIC0wLDAg KzEsMjMzIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTksIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiIgSW1wbGVtZW50cyBVdGls aXR5IGNsYXNzIGZvciBFeGNsdXNpb24gQ29uc3RyYWludC4gIiIiCisKK2Zyb20gZmxhc2sgaW1w b3J0IHJlbmRlcl90ZW1wbGF0ZQorZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0IGFz IF8KK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IK K2Zyb20gcGdhZG1pbi51dGlscy5leGNlcHRpb24gaW1wb3J0IE9iamVjdEdvbmUKK2Zyb20gZnVu Y3Rvb2xzIGltcG9ydCB3cmFwcworZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBJU19QWTIKKyMg SWYgd2UgYXJlIGluIFB5dGhvbjMKK2lmIG5vdCBJU19QWTI6CisgICAgdW5pY29kZSA9IHN0cgor CisKK2RlZiBnZXRfdGVtcGxhdGVfcGF0aChmKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgcHJlcGFyZQorICAgIHRoZSB0 ZW1wbGF0ZSBwYXRoIGJhc2VkIG9uIGRhdGFiYXNlIHNlcnZlciB2ZXJzaW9uLgorICAgICIiIgor CisgICAgQHdyYXBzKGYpCisgICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg IyBIZXJlIGFyZ3NbMF0gd2lsbCBob2xkIHRoZSBjb25uZWN0aW9uIG9iamVjdAorICAgICAgICBj b25uX29iaiA9IGFyZ3NbMF0KKyAgICAgICAgaWYgJ3RlbXBsYXRlX3BhdGgnIG5vdCBpbiBrd2Fy Z3M6CisgICAgICAgICAgICBrd2FyZ3NbJ3RlbXBsYXRlX3BhdGgnXSA9ICdpbmRleF9jb25zdHJh aW50L3NxbC8jezB9IycuZm9ybWF0KAorICAgICAgICAgICAgICAgIGNvbm5fb2JqLm1hbmFnZXIu dmVyc2lvbikKKworICAgICAgICByZXR1cm4gZigqYXJncywgKiprd2FyZ3MpCisgICAgcmV0dXJu IHdyYXAKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2RlZiBnZXRfcGFyZW50KGNvbm4sIHRpZCwg dGVtcGxhdGVfcGF0aD1Ob25lKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0 dXJuIHRoZSBwYXJlbnQgb2YgdGhlIGdpdmVuIHRhYmxlLgorICAgIDpwYXJhbSBjb25uOiBDb25u ZWN0aW9uIE9iamVjdAorICAgIDpwYXJhbSB0aWQ6IFRhYmxlIG9pZAorICAgIDpwYXJhbSB0ZW1w bGF0ZV9wYXRoOgorICAgIDpyZXR1cm46CisgICAgIiIiCisKKyAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSksIHRpZD10aWQpCisgICAgc3RhdHVzLCByc2V0 ID0gY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg IHJhaXNlIEV4Y2VwdGlvbihyc2V0KQorCisgICAgc2NoZW1hID0gJycKKyAgICB0YWJsZSA9ICcn CisgICAgaWYgJ3Jvd3MnIGluIHJzZXQgYW5kIGxlbihyc2V0Wydyb3dzJ10pID4gMDoKKyAgICAg ICAgc2NoZW1hID0gcnNldFsncm93cyddWzBdWydzY2hlbWEnXQorICAgICAgICB0YWJsZSA9IHJz ZXRbJ3Jvd3MnXVswXVsndGFibGUnXQorCisgICAgcmV0dXJuIHNjaGVtYSwgdGFibGUKKworCitA Z2V0X3RlbXBsYXRlX3BhdGgKK2RlZiBnZXRfaW5kZXhfY29uc3RyYWludHMoY29ubiwgZGlkLCB0 aWQsIGN0eXBlLCBjaWQ9Tm9uZSwgdGVtcGxhdGVfcGF0aD1Ob25lKToKKyAgICAiIiIKKyAgICBU aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZmV0Y2ggaW5mb3JtYXRpb24gb2YgdGhlCisgICAgaW5k ZXggY29uc3RyYWludChzKSBmb3IgdGhlIGdpdmVuIHRhYmxlLgorICAgIDpwYXJhbSBjb25uOiBD b25uZWN0aW9uIE9iamVjdAorICAgIDpwYXJhbSBkaWQ6IERhdGFiYXNlIElECisgICAgOnBhcmFt IHRpZDogVGFibGUgSUQKKyAgICA6cGFyYW0gY3R5cGU6IENvbnN0cmFpbnQgVHlwZQorICAgIDpw YXJhbSBjaWQ6IGluZGV4IENvbnN0cmFpbnQgSUQKKyAgICA6cGFyYW0gdGVtcGxhdGVfcGF0aDog VGVtcGxhdGUgUGF0aAorICAgIDpyZXR1cm46CisgICAgIiIiCisKKyAgICBzcWwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgdGlkPXRpZCwgY2lkPWNpZCwgY29uc3Ry YWludF90eXBlPWN0eXBlKQorICAgIHN0YXR1cywgcmVzdWx0ID0gY29ubi5leGVjdXRlX2RpY3Qo c3FsKQorICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgIHJldHVybiBzdGF0dXMsIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN1bHQpCisKKyAgICBmb3IgaWR4X2NvbnMgaW4gcmVz dWx0Wydyb3dzJ106CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVt cGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0 X2NvbnN0cmFpbnRfY29scy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj aWQ9aWR4X2NvbnNbJ29pZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sY250 PWlkeF9jb25zWydjb2xfY291bnQnXSkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1 dGVfZGljdChzcWwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4g c3RhdHVzLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGNv bHVtbnMgPSBbXQorICAgICAgICBmb3IgciBpbiByZXNbJ3Jvd3MnXToKKyAgICAgICAgICAgIGNv bHVtbnMuYXBwZW5kKHsiY29sdW1uIjogclsnY29sdW1uJ10uc3RyaXAoJyInKX0pCisKKyAgICAg ICAgaWR4X2NvbnNbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKKworICAgICAgICAjIElOQ0xVREUgY2xh dXNlIGluIGluZGV4IGlzIHN1cHBvcnRlZCBmcm9tIFBHLTExKworICAgICAgICBpZiBjb25uLm1h bmFnZXIudmVyc2lvbiA+PSAxMTAwMDA6CisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWludF9pbmNsdWRlLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ9aWR4X2NvbnNbJ29pZCddKQorICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXMsIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGlkeF9jb25zWydpbmNsdWRlJ10g PSBbY29sWydjb2xuYW1lJ10gZm9yIGNvbCBpbiByZXNbJ3Jvd3MnXV0KKworICAgIHJldHVybiBU cnVlLCByZXN1bHRbJ3Jvd3MnXQorCisKK0BnZXRfdGVtcGxhdGVfcGF0aAorZGVmIGdldF9pbmRl eF9jb25zdHJhaW50X3NxbChjb25uLCBkaWQsIHRpZCwgZGF0YSwgdGVtcGxhdGVfcGF0aD1Ob25l KToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHNxbCBmb3IgaW5kZXgg Y29uc3RyYWludHMuCisgICAgOnBhcmFtIGNvbm46IENvbm5lY3Rpb24gT2JqZWN0CisgICAgOnBh cmFtIGRpZDogRGF0YWJhc2UgSUQKKyAgICA6cGFyYW0gdGlkOiBUYWJsZSBJRAorICAgIDpwYXJh bSBkYXRhOiBEYXRhCisgICAgOnBhcmFtIHRlbXBsYXRlX3BhdGg6IFRlbXBsYXRlIFBhdGgKKyAg ICA6cmV0dXJuOgorICAgICIiIgorICAgIHNxbCA9IFtdCisgICAgIyBXZSB3aWxsIGZldGNoIGFs bCB0aGUgaW5kZXggY29uc3RyYWludHMgZm9yIHRoZSB0YWJsZQorICAgIGluZGV4X2NvbnN0cmFp bnRzID0geworICAgICAgICAncCc6ICdwcmltYXJ5X2tleScsICd1JzogJ3VuaXF1ZV9jb25zdHJh aW50JworICAgIH0KKworICAgIGZvciBjdHlwZSBpbiBpbmRleF9jb25zdHJhaW50cy5rZXlzKCk6 CisgICAgICAgICMgQ2hlY2sgaWYgY29uc3RyYWludCBpcyBpbiBkYXRhCisgICAgICAgICMgSWYg eWVzIHRoZW4gd2UgbmVlZCB0byBjaGVjayBmb3IgYWRkL2NoYW5nZS9kZWxldGUKKyAgICAgICAg aWYgaW5kZXhfY29uc3RyYWludHNbY3R5cGVdIGluIGRhdGE6CisgICAgICAgICAgICBjb25zdHJh aW50ID0gZGF0YVtpbmRleF9jb25zdHJhaW50c1tjdHlwZV1dCisgICAgICAgICAgICAjIElmIGNv bnN0cmFpbnQocykgaXMvYXJlIGRlbGV0ZWQKKyAgICAgICAgICAgIGlmICdkZWxldGVkJyBpbiBj b25zdHJhaW50OgorICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2RlbGV0ZWQn XToKKyAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAg ICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAg ICAgICAgICAgIyBTcWwgZm9yIGRyb3AKKyAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZChy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPWNvbm4p LnN0cmlwKCdcbicpKQorICAgICAgICAgICAgaWYgJ2NoYW5nZWQnIGluIGNvbnN0cmFpbnQ6Cisg ICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnY2hhbmdlZCddOgorICAgICAgICAg ICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAg ICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KKworICAgICAgICAgICAgICAgICAgICBtb2Rp ZmllZF9zcWwsIG5hbWUgPSBnZXRfc3FsKGNvbm4sIGMsIGRpZCwgdGlkLCBjdHlwZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWydvaWQnXSkKKyAg ICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZChtb2RpZmllZF9zcWwuc3RyaXAoJ1xuJykpCisK KyAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgICAgICBm b3IgYyBpbiBjb25zdHJhaW50WydhZGRlZCddOgorICAgICAgICAgICAgICAgICAgICBjWydzY2hl bWEnXSA9IGRhdGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBk YXRhWyduYW1lJ10KKworICAgICAgICAgICAgICAgICAgICBhZGRfc3FsLCBuYW1lID0gZ2V0X3Nx bChjb25uLCBjLCBkaWQsIHRpZCwgY3R5cGUpCisgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBl bmQoYWRkX3NxbC5zdHJpcCgiXG4iKSkKKworICAgIGlmIGxlbihzcWwpID4gMDoKKyAgICAgICAg IyBKb2luIGFsbCB0aGUgc3FsKHMpIGFzIHNpbmdsZSBzdHJpbmcKKyAgICAgICAgcmV0dXJuICdc blxuJy5qb2luKHNxbCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK0BnZXRf dGVtcGxhdGVfcGF0aAorZGVmIGdldF9zcWwoY29ubiwgZGF0YSwgZGlkLCB0aWQsIGN0eXBlLCBj aWQ9Tm9uZSwgdGVtcGxhdGVfcGF0aD1Ob25lKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20gbW9kZWwgZGF0YS4KKyAgICA6cGFyYW0gY29ubjogQ29u bmVjdGlvbiBPYmplY3QKKyAgICA6cGFyYW0gZGF0YTogZGF0YQorICAgIDpwYXJhbSBkaWQ6IERh dGFiYXNlIElECisgICAgOnBhcmFtIHRpZDogVGFibGUgaWQKKyAgICA6cGFyYW0gY3R5cGU6IENv bnN0cmFpbnQgVHlwZQorICAgIDpwYXJhbSBjaWQ6IGluZGV4IENvbnN0cmFpbnQgSUQKKyAgICA6 cGFyYW0gdGVtcGxhdGVfcGF0aDogVGVtcGxhdGUgUGF0aAorICAgIDpyZXR1cm46CisgICAgIiIi CisgICAgbmFtZSA9IGRhdGFbJ25hbWUnXSBpZiAnbmFtZScgaW4gZGF0YSBlbHNlIE5vbmUKKyAg ICBpZiBjaWQgaXMgbm90IE5vbmU6CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGlkPWRpZCwgdGlkPXRpZCwgY2lkPWNpZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRfdHlwZT1jdHlwZSkKKyAgICAgICAgc3RhdHVzLCBy ZXMgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICByYWlzZSBFeGNlcHRpb24ocmVzKQorCisgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3Mn XSkgPT0gMDoKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEdvbmUoCisgICAgICAgICAgICAgICAg XygnQ291bGQgbm90IGZpbmQgdGhlIGNvbnN0cmFpbnQgaW4gdGhlIHRhYmxlLicpKQorCisgICAg ICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgaWYgJ25hbWUnIG5vdCBpbiBk YXRhOgorICAgICAgICAgICAgbmFtZSA9IGRhdGFbJ25hbWUnXSA9IG9sZF9kYXRhWyduYW1lJ10K KworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgs ICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRh LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kYXRhPW9sZF9kYXRhKQorICAgIGVs c2U6CisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbCisgICAgICAgICAgICBbdSdjb2x1bW5zJywg dSdpbmRleCddICAjIEVpdGhlciBvZiBvbmUgc2hvdWxkIGJlIHRoZXJlLgorICAgICAgICBdCisK KyAgICAgICAgZGVmIGlzX2tleV9zdHIoa2V5LCBkYXRhKToKKyAgICAgICAgICAgIHJldHVybiBp c2luc3RhbmNlKGRhdGFba2V5XSwgKHN0ciwgdW5pY29kZSkpIGFuZCBkYXRhW2tleV0gIT0gIiIK KworICAgICAgICBkZWYgaXNfa2V5X2xpc3Qoa2V5LCBkYXRhKToKKyAgICAgICAgICAgIHJldHVy biBpc2luc3RhbmNlKGRhdGFba2V5XSwgbGlzdCkgYW5kIGxlbihkYXRhW3BhcmFtXSkgPiAwCisK KyAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgaWYgaXNpbnN0 YW5jZShhcmcsIGxpc3QpOgorICAgICAgICAgICAgICAgIGZvciBwYXJhbSBpbiBhcmc6CisgICAg ICAgICAgICAgICAgICAgIGlmIHBhcmFtIGluIGRhdGE6CisgICAgICAgICAgICAgICAgICAgICAg ICBpZiBpc19rZXlfc3RyKHBhcmFtLCBkYXRhKSBvciBpc19rZXlfbGlzdChwYXJhbSwgZGF0YSk6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNl OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gXygnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRl JyksIG5hbWUKKworICAgICAgICAgICAgZWxpZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAgICAg ICAgICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpLCBuYW1lCisKKyAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAnY3JlYXRl LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm49Y29ubiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0cmFpbnRfbmFtZT0nUFJJTUFSWSBLRVknCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiBjdHlwZSA9PSAncCcgZWxzZSAnVU5JUVVFJykKKyAgICByZXR1cm4g c3FsLCBuYW1lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy9fX2luaXRfXy5weSBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9pbmRleGVzL19faW5pdF9fLnB5CmluZGV4IDVlYTdlOTQ3OS4uN2YxOWU5NTNhIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv aW5kZXhlcy9fX2luaXRfXy5weQpAQCAtMjUsNiArMjUsOCBAQCBmcm9tIHBnYWRtaW4udXRpbHMu Y29tcGlsZV90ZW1wbGF0ZV9uYW1lIGltcG9ydCBjb21waWxlX3RlbXBsYXRlX3BhdGgKIGZyb20g cGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKIGZyb20gY29uZmlnIGltcG9y dCBQR19ERUZBVUxUX0RSSVZFUgogZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBJU19QWTIKK2Zy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1h cy4gXAorICAgIHRhYmxlcy5pbmRleGVzIGltcG9ydCB1dGlscyBhcyBpbmRleF91dGlscwogIyBJ ZiB3ZSBhcmUgaW4gUHl0aG9uMwogaWYgbm90IElTX1BZMjoKICAgICB1bmljb2RlID0gc3RyCkBA IC0yNTYsMTcgKzI1OCw5IEBAIGNsYXNzIEluZGV4ZXNWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAg ICAgICAgICAgICAjIFdlIG5lZWQgcGFyZW50J3MgbmFtZSBlZyB0YWJsZSBuYW1lIGFuZCBzY2hl bWEgbmFtZQogICAgICAgICAgICAgIyB3aGVuIHdlIGNyZWF0ZSBuZXcgaW5kZXggaW4gdXBkYXRl IHdlIGNhbiBmZXRjaCBpdCB1c2luZwogICAgICAgICAgICAgIyBwcm9wZXJ0eSBzcWwKLSAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X3BhcmVudC5zcWwnXSksCi0gICAgICAgICAgICAgICAg dGlkPWt3YXJnc1sndGlkJ10KLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHN0YXR1cywgcnNl dCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJzZXQpCi0KLSAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgotICAgICAg ICAgICAgICAgIHNlbGYuc2NoZW1hID0gcm93WydzY2hlbWEnXQotICAgICAgICAgICAgICAgIHNl bGYudGFibGUgPSByb3dbJ3RhYmxlJ10KKyAgICAgICAgICAgIHNjaGVtYSwgdGFibGUgPSBpbmRl eF91dGlscy5nZXRfcGFyZW50KHNlbGYuY29ubiwga3dhcmdzWyd0aWQnXSkKKyAgICAgICAgICAg IHNlbGYuc2NoZW1hID0gc2NoZW1hCisgICAgICAgICAgICBzZWxmLnRhYmxlID0gdGFibGUKIAog ICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQogCkBAIC00NzQsOTkgKzQ2OCw2 IEBAIGNsYXNzIEluZGV4ZXNWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICBzdGF0 dXM9MjAwCiAgICAgICAgICkKIAotICAgIGRlZiBfY29sdW1uX2RldGFpbHMoc2VsZiwgaWR4LCBk YXRhLCBtb2RlPSdwcm9wZXJ0aWVzJyk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0 aW9uYWwgd2lsbCBmZXRjaCBsaXN0IG9mIGNvbHVtbiBkZXRhaWxzIGZvciBpbmRleAotCi0gICAg ICAgIEFyZ3M6Ci0gICAgICAgICAgICBpZHg6IEluZGV4IE9JRAotICAgICAgICAgICAgZGF0YTog UHJvcGVydGllcyBkYXRhCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIFVwZGF0ZWQg cHJvcGVydGllcyBkYXRhIHdpdGggY29sdW1uIGRldGFpbHMKLSAgICAgICAgIiIiCi0KLSAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ2NvbHVtbl9kZXRhaWxzLnNxbCddKSwgaWR4PWlkeAotICAgICAgICApCi0g ICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAg ICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yc2V0KQotICAgICAgICAjICdhdHRkZWYnIGNvbWVzIHdpdGggcXVvdGVz IGZyb20gcXVlcnkgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCi0gICAgICAgICMgJ29wdGlvbnMn IHdlIG5lZWQgdHJ1ZS9mYWxzZSB0byByZW5kZXIgc3dpdGNoIEFTQyhmYWxzZSkvREVTQyh0cnVl KQotICAgICAgICBjb2x1bW5zID0gW10KLSAgICAgICAgY29scyA9IFtdCi0gICAgICAgIGZvciBy b3cgaW4gcnNldFsncm93cyddOgotICAgICAgICAgICAgIyBXZSBuZWVkIGFsbCBkYXRhIGFzIGNv bGxlY3Rpb24gZm9yIENvbHVtbnNNb2RlbAotICAgICAgICAgICAgIyB3ZSB3aWxsIG5vdCBzdHJp cCBkb3duIGNvbG5hbWUgd2hlbiB1c2luZyBpbiBTUUwgdG8gZGlzcGxheQotICAgICAgICAgICAg Y29sc19kYXRhID0gewotICAgICAgICAgICAgICAgICdjb2xuYW1lJzogcm93WydhdHRkZWYnXSBp ZiBtb2RlID09ICdjcmVhdGUnIGVsc2UKLSAgICAgICAgICAgICAgICByb3dbJ2F0dGRlZiddLnN0 cmlwKCciJyksCi0gICAgICAgICAgICAgICAgJ2NvbGxzcGNuYW1lJzogcm93Wydjb2xsbnNwbmFt ZSddLAotICAgICAgICAgICAgICAgICdvcF9jbGFzcyc6IHJvd1snb3BjbmFtZSddLAotICAgICAg ICAgICAgfQotCi0gICAgICAgICAgICAjIEFTQy9ERVNDIGFuZCBOVUxMUyB3b3JrcyBvbmx5IHdp dGggYnRyZWUgaW5kZXhlcwotICAgICAgICAgICAgaWYgJ2FtbmFtZScgaW4gZGF0YSBhbmQgZGF0 YVsnYW1uYW1lJ10gPT0gJ2J0cmVlJzoKLSAgICAgICAgICAgICAgICBjb2xzX2RhdGFbJ3NvcnRf b3JkZXInXSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgaWYgcm93WydvcHRpb25zJ11bMF0gPT0g J0RFU0MnOgotICAgICAgICAgICAgICAgICAgICBjb2xzX2RhdGFbJ3NvcnRfb3JkZXInXSA9IFRy dWUKLQotICAgICAgICAgICAgICAgIGNvbHNfZGF0YVsnbnVsbHMnXSA9IEZhbHNlCi0gICAgICAg ICAgICAgICAgaWYgcm93WydvcHRpb25zJ11bMV0uc3BsaXQoIiAiKVsxXSA9PSAnRklSU1QnOgot ICAgICAgICAgICAgICAgICAgICBjb2xzX2RhdGFbJ251bGxzJ10gPSBUcnVlCi0KLSAgICAgICAg ICAgIGNvbHVtbnMuYXBwZW5kKGNvbHNfZGF0YSkKLQotICAgICAgICAgICAgIyBXZSBuZWVkIHNh bWUgZGF0YSBhcyBzdHJpbmcgdG8gZGlzcGxheSBpbiBwcm9wZXJ0aWVzIHdpbmRvdwotICAgICAg ICAgICAgIyBJZiBtdWx0aXBsZSBjb2x1bW4gdGhlbiBzZXBhcmF0ZSBpdCBieSBjb2xvbgotICAg ICAgICAgICAgY29sc19zdHIgPSByb3dbJ2F0dGRlZiddCi0gICAgICAgICAgICBpZiByb3dbJ2Nv bGxuc3BuYW1lJ106Ci0gICAgICAgICAgICAgICAgY29sc19zdHIgKz0gJyBDT0xMQVRFICcgKyBy b3dbJ2NvbGxuc3BuYW1lJ10KLSAgICAgICAgICAgIGlmIHJvd1snb3BjbmFtZSddOgotICAgICAg ICAgICAgICAgIGNvbHNfc3RyICs9ICcgJyArIHJvd1snb3BjbmFtZSddCi0KLSAgICAgICAgICAg ICMgQVNDL0RFU0MgYW5kIE5VTExTIHdvcmtzIG9ubHkgd2l0aCBidHJlZSBpbmRleGVzCi0gICAg ICAgICAgICBpZiAnYW1uYW1lJyBpbiBkYXRhIGFuZCBkYXRhWydhbW5hbWUnXSA9PSAnYnRyZWUn OgotICAgICAgICAgICAgICAgICMgQXBwZW5kIHNvcnQgb3JkZXIKLSAgICAgICAgICAgICAgICBj b2xzX3N0ciArPSAnICcgKyByb3dbJ29wdGlvbnMnXVswXQotICAgICAgICAgICAgICAgICMgQXBw ZW5kIG51bGxzIHZhbHVlCi0gICAgICAgICAgICAgICAgY29sc19zdHIgKz0gJyAnICsgcm93Wydv cHRpb25zJ11bMV0KLQotICAgICAgICAgICAgY29scy5hcHBlbmQoY29sc19zdHIpCi0KLSAgICAg ICAgIyBQdXNoIGFzIGNvbGxlY3Rpb24KLSAgICAgICAgZGF0YVsnY29sdW1ucyddID0gY29sdW1u cwotICAgICAgICAjIFB1c2ggYXMgc3RyaW5nCi0gICAgICAgIGRhdGFbJ2NvbHVtbnNfY3N2J10g PSAnLCAnLmpvaW4oY29scykKLQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIF9pbmNs dWRlX2RldGFpbHMoc2VsZiwgaWR4LCBkYXRhLCBtb2RlPSdwcm9wZXJ0aWVzJyk6Ci0gICAgICAg ICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uYWwgd2lsbCBmZXRjaCBsaXN0IG9mIGluY2x1ZGUg ZGV0YWlscyBmb3IgaW5kZXgKLSAgICAgICAgc3VwcG9ydGVkIHdpdGggUG9zdGdyZXMgMTErCi0K LSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGlkeDogSW5kZXggT0lECi0gICAgICAgICAgICBk YXRhOiBQcm9wZXJ0aWVzIGRhdGEKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgVXBk YXRlZCBwcm9wZXJ0aWVzIGRhdGEgd2l0aCBpbmNsdWRlIGRldGFpbHMKLSAgICAgICAgIiIiCi0K LSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ2luY2x1ZGVfZGV0YWlscy5zcWwnXSksIGlkeD1pZHgKLSAgICAg ICAgKQotICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNR TCkKLQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQotCi0gICAgICAgICMgUHVzaCBhcyBjb2xsZWN0 aW9uCi0gICAgICAgIGRhdGFbJ2luY2x1ZGUnXSA9IFtjb2xbJ2NvbG5hbWUnXSBmb3IgY29sIGlu IHJzZXRbJ3Jvd3MnXV0KLSAgICAgICAgcmV0dXJuIGRhdGEKLQogICAgIEBjaGVja19wcmVjb25k aXRpb24KICAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQs IGlkeCk6CiAgICAgICAgICIiIgpAQCAtNjAyLDExICs1MDMsMTEgQEAgY2xhc3MgSW5kZXhlc1Zp ZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgZGF0YSA9IGRpY3QocmVzWydyb3dzJ11bMF0p CiAKICAgICAgICAgIyBBZGQgY29sdW1uIGRldGFpbHMgZm9yIGN1cnJlbnQgaW5kZXgKLSAgICAg ICAgZGF0YSA9IHNlbGYuX2NvbHVtbl9kZXRhaWxzKGlkeCwgZGF0YSkKKyAgICAgICAgZGF0YSA9 IGluZGV4X3V0aWxzLmdldF9jb2x1bW5fZGV0YWlscyhzZWxmLmNvbm4sIGlkeCwgZGF0YSkKIAog ICAgICAgICAjIEFkZCBJbmNsdWRlIGRldGFpbHMgb2YgdGhlIGluZGV4CiAgICAgICAgIGlmIHNl bGYubWFuYWdlci52ZXJzaW9uID49IDExMDAwMDoKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9p bmNsdWRlX2RldGFpbHMoaWR4LCBkYXRhKQorICAgICAgICAgICAgZGF0YSA9IGluZGV4X3V0aWxz LmdldF9pbmNsdWRlX2RldGFpbHMoc2VsZi5jb25uLCBpZHgsIGRhdGEpCiAKICAgICAgICAgcmV0 dXJuIGFqYXhfcmVzcG9uc2UoCiAgICAgICAgICAgICByZXNwb25zZT1kYXRhLApAQCAtODA2LDcg KzcwNyw4IEBAIGNsYXNzIEluZGV4ZXNWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIGRh dGFbJ3NjaGVtYSddID0gc2VsZi5zY2hlbWEKICAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYu dGFibGUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgU1FMLCBuYW1lID0gc2VsZi5nZXRfc3Fs KGRpZCwgc2NpZCwgdGlkLCBpZHgsIGRhdGEpCisgICAgICAgICAgICBTUUwsIG5hbWUgPSBpbmRl eF91dGlscy5nZXRfc3FsKAorICAgICAgICAgICAgICAgIHNlbGYuY29ubiwgZGF0YSwgZGlkLCB0 aWQsIGlkeCwgc2VsZi5kYXRsYXN0c3lzb2lkKQogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFu Y2UoU1FMLCAoc3RyLCB1bmljb2RlKSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNRTAogICAg ICAgICAgICAgU1FMID0gU1FMLnN0cmlwKCdcbicpLnN0cmlwKCcgJykKQEAgLTg1NSw3ICs3NTcs OSBAQCBjbGFzcyBJbmRleGVzVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBkYXRhWyd0 YWJsZSddID0gc2VsZi50YWJsZQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNxbCwgbmFt ZSA9IHNlbGYuZ2V0X3NxbChkaWQsIHNjaWQsIHRpZCwgaWR4LCBkYXRhLCBtb2RlPSdjcmVhdGUn KQorICAgICAgICAgICAgc3FsLCBuYW1lID0gaW5kZXhfdXRpbHMuZ2V0X3NxbCgKKyAgICAgICAg ICAgICAgICBzZWxmLmNvbm4sIGRhdGEsIGRpZCwgdGlkLCBpZHgsIHNlbGYuZGF0bGFzdHN5c29p ZCwKKyAgICAgICAgICAgICAgICBtb2RlPSdjcmVhdGUnKQogICAgICAgICAgICAgaWYgbm90IGlz aW5zdGFuY2Uoc3FsLCAoc3RyLCB1bmljb2RlKSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNx bAogICAgICAgICAgICAgc3FsID0gc3FsLnN0cmlwKCdcbicpLnN0cmlwKCcgJykKQEAgLTg2OCw2 NCArNzcyLDYgQEAgY2xhc3MgSW5kZXhlc1ZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCiAKLSAgICBkZWYgZ2V0X3NxbChzZWxmLCBkaWQsIHNj aWQsIHRpZCwgaWR4LCBkYXRhLCBtb2RlPU5vbmUpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhp cyBmdW5jdGlvbiB3aWxsIGdlbnJhdGUgc3FsIGZyb20gbW9kZWwgZGF0YQotICAgICAgICAiIiIK LSAgICAgICAgaWYgaWR4IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKAotICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdw cm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkLCBpZHg9 aWR4LCBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZAotICAgICAgICAgICAgKQotCi0g ICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQotICAg ICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLSAgICAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3Mn XSkgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZ29uZSgKLSAgICAgICAgICAgICAgICAg ICAgZ2V0dGV4dCgiIiJDb3VsZCBub3QgZmluZCB0aGUgaW5kZXggaW4gdGhlIHRhYmxlLiIiIikK LSAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgIG9sZF9kYXRhID0gZGljdChyZXNbJ3Jv d3MnXVswXSkKLQotICAgICAgICAgICAgIyBJZiBuYW1lIGlzIG5vdCBwcmVzZW50IGluIGRhdGEg dGhlbgotICAgICAgICAgICAgIyB3ZSB3aWxsIGZldGNoIGl0IGZyb20gb2xkIGRhdGEsIHdlIGFs c28gbmVlZCBzY2hlbWEgJiB0YWJsZSBuYW1lCi0gICAgICAgICAgICBpZiAnbmFtZScgbm90IGlu IGRhdGE6Ci0gICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddID0gb2xkX2RhdGFbJ25hbWUnXQot Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCi0gICAgICAgICAgICAg ICAgZGF0YT1kYXRhLCBvX2RhdGE9b2xkX2RhdGEsIGNvbm49c2VsZi5jb25uCi0gICAgICAgICAg ICApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXF1aXJlZF9hcmdzID0gewotICAgICAg ICAgICAgICAgICduYW1lJzogJ05hbWUnLAotICAgICAgICAgICAgICAgICdjb2x1bW5zJzogJ0Nv bHVtbnMnCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2Fy Z3M6Ci0gICAgICAgICAgICAgICAgZXJyID0gRmFsc2UKLSAgICAgICAgICAgICAgICBpZiBhcmcg PT0gJ2NvbHVtbnMnIGFuZCBsZW4oZGF0YVsnY29sdW1ucyddKSA8IDE6Ci0gICAgICAgICAgICAg ICAgICAgIGVyciA9IFRydWUKLQotICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToK LSAgICAgICAgICAgICAgICAgICAgZXJyID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAjIENo ZWNrIGlmIHdlIGhhdmUgYXQgbGVhc3Qgb25lIGNvbHVtbgotICAgICAgICAgICAgICAgIGlmIGVy cjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldHRleHQoJy0tIGRlZmluaXRpb24gaW5j b21wbGV0ZScpCi0KLSAgICAgICAgICAgICMgSWYgdGhlIHJlcXVlc3QgZm9yIG5ldyBvYmplY3Qg d2hpY2ggZG8gbm90IGhhdmUgZGlkCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ci0gICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5z cWwnXSksCi0gICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubiwgbW9kZT1t b2RlCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBTUUwgKz0gIlxuIgotICAgICAgICAgICAg U1FMICs9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnYWx0ZXIuc3FsJ10pLAotICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwg Y29ubj1zZWxmLmNvbm4KLSAgICAgICAgICAgICkKLQotICAgICAgICByZXR1cm4gU1FMLCBkYXRh WyduYW1lJ10gaWYgJ25hbWUnIGluIGRhdGEgZWxzZSBvbGRfZGF0YVsnbmFtZSddCi0KICAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lk LCB0aWQsIGlkeCk6CiAgICAgICAgICIiIgpAQCAtOTQwLDQwICs3ODYsOSBAQCBjbGFzcyBJbmRl eGVzVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICBpZHg6IEluZGV4IElECiAgICAg ICAgICIiIgogCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAg ICAgIGRpZD1kaWQsIHRpZD10aWQsIGlkeD1pZHgsIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0 c3lzb2lkCi0gICAgICAgICkKLQotICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVj dXRlX2RpY3QoU1FMKQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0gICAgICAgIGlmIGxlbihyZXNb J3Jvd3MnXSkgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRleHQoIiIiQ291bGQg bm90IGZpbmQgdGhlIGluZGV4IGluIHRoZSB0YWJsZS4iIiIpKQotCi0gICAgICAgIGRhdGEgPSBk aWN0KHJlc1sncm93cyddWzBdKQotICAgICAgICAjIEFkZGluZyBwYXJlbnQgaW50byBkYXRhIGRp Y3QsIHdpbGwgYmUgdXNpbmcgaXQgd2hpbGUgY3JlYXRpbmcgc3FsCi0gICAgICAgIGRhdGFbJ3Nj aGVtYSddID0gc2VsZi5zY2hlbWEKLSAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUK LQotICAgICAgICAjIEFkZCBjb2x1bW4gZGV0YWlscyBmb3IgY3VycmVudCBpbmRleAotICAgICAg ICBkYXRhID0gc2VsZi5fY29sdW1uX2RldGFpbHMoaWR4LCBkYXRhLCAnY3JlYXRlJykKLQotICAg ICAgICAjIEFkZCBJbmNsdWRlIGRldGFpbHMgb2YgdGhlIGluZGV4Ci0gICAgICAgIGlmIHNlbGYu bWFuYWdlci52ZXJzaW9uID49IDExMDAwMDoKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9pbmNs dWRlX2RldGFpbHMoaWR4LCBkYXRhLCAnY3JlYXRlJykKLQotICAgICAgICBTUUwsIG5hbWUgPSBz ZWxmLmdldF9zcWwoZGlkLCBzY2lkLCB0aWQsIE5vbmUsIGRhdGEpCi0gICAgICAgIGlmIG5vdCBp c2luc3RhbmNlKFNRTCwgKHN0ciwgdW5pY29kZSkpOgotICAgICAgICAgICAgcmV0dXJuIFNRTAot ICAgICAgICBzcWxfaGVhZGVyID0gdSItLSBJbmRleDogezB9XG5cbi0tICIuZm9ybWF0KGRhdGFb J25hbWUnXSkKLQotICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAotICAg ICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubgotICAgICAgICApCi0KLSAgICAgICAg U1FMID0gc3FsX2hlYWRlciArICdcblxuJyArIFNRTAorICAgICAgICBTUUwgPSBpbmRleF91dGls cy5nZXRfcmV2ZXJzZV9lbmdpbmVlcmVkX3NxbCgKKyAgICAgICAgICAgIHNlbGYuY29ubiwgc2Vs Zi5zY2hlbWEsIHNlbGYudGFibGUsIGRpZCwgdGlkLCBpZHgsCisgICAgICAgICAgICBzZWxmLmRh dGxhc3RzeXNvaWQpCiAKICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9U1FM KQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy91dGlscy5weSBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9p bmRleGVzL3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNDQ1 MzRhYzZlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvdXRpbHMucHkKQEAg LTAsMCArMSwyNzcgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3Rn cmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOSwgVGhlIHBnQWRtaW4g RGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQ b3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIiBJbXBsZW1lbnRz IFV0aWxpdHkgY2xhc3MgZm9yIEluZGV4ZXMuICIiIgorCitmcm9tIGZsYXNrIGltcG9ydCByZW5k ZXJfdGVtcGxhdGUKK2Zyb20gZmxhc2tfYmFiZWxleCBpbXBvcnQgZ2V0dGV4dCBhcyBfCitmcm9t IHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgaW50ZXJuYWxfc2VydmVyX2Vycm9yCitmcm9tIHBn YWRtaW4udXRpbHMuZXhjZXB0aW9uIGltcG9ydCBPYmplY3RHb25lCitmcm9tIGZ1bmN0b29scyBp bXBvcnQgd3JhcHMKKworCitkZWYgZ2V0X3RlbXBsYXRlX3BhdGgoZik6CisgICAgIiIiCisgICAg VGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIHByZXBh cmUKKyAgICB0aGUgdGVtcGxhdGUgcGF0aCBiYXNlZCBvbiBkYXRhYmFzZSBzZXJ2ZXIgdmVyc2lv bi4KKyAgICAiIiIKKworICAgIEB3cmFwcyhmKQorICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJn cyk6CisgICAgICAgICMgSGVyZSBhcmdzWzBdIHdpbGwgaG9sZCB0aGUgY29ubmVjdGlvbiBvYmpl Y3QKKyAgICAgICAgY29ubl9vYmogPSBhcmdzWzBdCisgICAgICAgIGlmICd0ZW1wbGF0ZV9wYXRo JyBub3QgaW4ga3dhcmdzOgorICAgICAgICAgICAga3dhcmdzWyd0ZW1wbGF0ZV9wYXRoJ10gPSBc CisgICAgICAgICAgICAgICAgJ2luZGV4ZXMvc3FsLyN7MH0jJy5mb3JtYXQoY29ubl9vYmoubWFu YWdlci52ZXJzaW9uKQorCisgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKKyAgICBy ZXR1cm4gd3JhcAorCisKK0BnZXRfdGVtcGxhdGVfcGF0aAorZGVmIGdldF9wYXJlbnQoY29ubiwg dGlkLCB0ZW1wbGF0ZV9wYXRoPU5vbmUpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2ls bCByZXR1cm4gdGhlIHBhcmVudCBvZiB0aGUgZ2l2ZW4gdGFibGUuCisgICAgOnBhcmFtIGNvbm46 IENvbm5lY3Rpb24gT2JqZWN0CisgICAgOnBhcmFtIHRpZDogVGFibGUgb2lkCisgICAgOnBhcmFt IHRlbXBsYXRlX3BhdGg6IE9wdGlvbmFsIHRlbXBsYXRlIHBhdGgKKyAgICA6cmV0dXJuOgorICAg ICIiIgorCisgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10p LCB0aWQ9dGlkKQorICAgIHN0YXR1cywgcnNldCA9IGNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkK KyAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICByYWlzZSBFeGNlcHRpb24ocnNldCkKKworICAg IHNjaGVtYSA9ICcnCisgICAgdGFibGUgPSAnJworICAgIGlmICdyb3dzJyBpbiByc2V0IGFuZCBs ZW4ocnNldFsncm93cyddKSA+IDA6CisgICAgICAgIHNjaGVtYSA9IHJzZXRbJ3Jvd3MnXVswXVsn c2NoZW1hJ10KKyAgICAgICAgdGFibGUgPSByc2V0Wydyb3dzJ11bMF1bJ3RhYmxlJ10KKworICAg IHJldHVybiBzY2hlbWEsIHRhYmxlCisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X2Nv bHVtbl9kZXRhaWxzKGNvbm4sIGlkeCwgZGF0YSwgbW9kZT0ncHJvcGVydGllcycsIHRlbXBsYXRl X3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbmFsIHdpbGwgZmV0Y2ggbGlz dCBvZiBjb2x1bW4gZm9yIGluZGV4LgorCisgICAgOnBhcmFtIGNvbm46IENvbm5lY3Rpb24gT2Jq ZWN0CisgICAgOnBhcmFtIGlkeDogSW5kZXggSUQKKyAgICA6cGFyYW0gZGF0YTogRGF0YQorICAg IDpwYXJhbSBtb2RlOiAnY3JlYXRlJyBvciAncHJvcGVydGllcycKKyAgICA6cGFyYW0gdGVtcGxh dGVfcGF0aDogT3B0aW9uYWwgdGVtcGxhdGUgcGF0aAorICAgIDpyZXR1cm46CisgICAgIiIiCisK KyAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICIvIi5qb2luKFt0ZW1wbGF0ZV9w YXRoLCAnY29sdW1uX2RldGFpbHMuc3FsJ10pLCBpZHg9aWR4CisgICAgKQorICAgIHN0YXR1cywg cnNldCA9IGNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAj ICdhdHRkZWYnIGNvbWVzIHdpdGggcXVvdGVzIGZyb20gcXVlcnkgc28gd2UgbmVlZCB0byBzdHJp cCB0aGVtCisgICAgIyAnb3B0aW9ucycgd2UgbmVlZCB0cnVlL2ZhbHNlIHRvIHJlbmRlciBzd2l0 Y2ggQVNDKGZhbHNlKS9ERVNDKHRydWUpCisgICAgY29sdW1ucyA9IFtdCisgICAgY29scyA9IFtd CisgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICMgV2UgbmVlZCBhbGwgZGF0 YSBhcyBjb2xsZWN0aW9uIGZvciBDb2x1bW5zTW9kZWwKKyAgICAgICAgIyB3ZSB3aWxsIG5vdCBz dHJpcCBkb3duIGNvbG5hbWUgd2hlbiB1c2luZyBpbiBTUUwgdG8gZGlzcGxheQorICAgICAgICBj b2xzX2RhdGEgPSB7CisgICAgICAgICAgICAnY29sbmFtZSc6IHJvd1snYXR0ZGVmJ10gaWYgbW9k ZSA9PSAnY3JlYXRlJyBlbHNlCisgICAgICAgICAgICByb3dbJ2F0dGRlZiddLnN0cmlwKCciJyks CisgICAgICAgICAgICAnY29sbHNwY25hbWUnOiByb3dbJ2NvbGxuc3BuYW1lJ10sCisgICAgICAg ICAgICAnb3BfY2xhc3MnOiByb3dbJ29wY25hbWUnXSwKKyAgICAgICAgfQorCisgICAgICAgICMg QVNDL0RFU0MgYW5kIE5VTExTIHdvcmtzIG9ubHkgd2l0aCBidHJlZSBpbmRleGVzCisgICAgICAg IGlmICdhbW5hbWUnIGluIGRhdGEgYW5kIGRhdGFbJ2FtbmFtZSddID09ICdidHJlZSc6CisgICAg ICAgICAgICBjb2xzX2RhdGFbJ3NvcnRfb3JkZXInXSA9IEZhbHNlCisgICAgICAgICAgICBpZiBy b3dbJ29wdGlvbnMnXVswXSA9PSAnREVTQyc6CisgICAgICAgICAgICAgICAgY29sc19kYXRhWydz b3J0X29yZGVyJ10gPSBUcnVlCisKKyAgICAgICAgICAgIGNvbHNfZGF0YVsnbnVsbHMnXSA9IEZh bHNlCisgICAgICAgICAgICBpZiByb3dbJ29wdGlvbnMnXVsxXS5zcGxpdCgiICIpWzFdID09ICdG SVJTVCc6CisgICAgICAgICAgICAgICAgY29sc19kYXRhWydudWxscyddID0gVHJ1ZQorCisgICAg ICAgIGNvbHVtbnMuYXBwZW5kKGNvbHNfZGF0YSkKKworICAgICAgICAjIFdlIG5lZWQgc2FtZSBk YXRhIGFzIHN0cmluZyB0byBkaXNwbGF5IGluIHByb3BlcnRpZXMgd2luZG93CisgICAgICAgICMg SWYgbXVsdGlwbGUgY29sdW1uIHRoZW4gc2VwYXJhdGUgaXQgYnkgY29sb24KKyAgICAgICAgY29s c19zdHIgPSByb3dbJ2F0dGRlZiddCisgICAgICAgIGlmIHJvd1snY29sbG5zcG5hbWUnXToKKyAg ICAgICAgICAgIGNvbHNfc3RyICs9ICcgQ09MTEFURSAnICsgcm93Wydjb2xsbnNwbmFtZSddCisg ICAgICAgIGlmIHJvd1snb3BjbmFtZSddOgorICAgICAgICAgICAgY29sc19zdHIgKz0gJyAnICsg cm93WydvcGNuYW1lJ10KKworICAgICAgICAjIEFTQy9ERVNDIGFuZCBOVUxMUyB3b3JrcyBvbmx5 IHdpdGggYnRyZWUgaW5kZXhlcworICAgICAgICBpZiAnYW1uYW1lJyBpbiBkYXRhIGFuZCBkYXRh WydhbW5hbWUnXSA9PSAnYnRyZWUnOgorICAgICAgICAgICAgIyBBcHBlbmQgc29ydCBvcmRlcgor ICAgICAgICAgICAgY29sc19zdHIgKz0gJyAnICsgcm93WydvcHRpb25zJ11bMF0KKyAgICAgICAg ICAgICMgQXBwZW5kIG51bGxzIHZhbHVlCisgICAgICAgICAgICBjb2xzX3N0ciArPSAnICcgKyBy b3dbJ29wdGlvbnMnXVsxXQorCisgICAgICAgIGNvbHMuYXBwZW5kKGNvbHNfc3RyKQorCisgICAg IyBQdXNoIGFzIGNvbGxlY3Rpb24KKyAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2x1bW5zCisgICAg IyBQdXNoIGFzIHN0cmluZworICAgIGRhdGFbJ2NvbHVtbnNfY3N2J10gPSAnLCAnLmpvaW4oY29s cykKKworICAgIHJldHVybiBkYXRhCisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X2lu Y2x1ZGVfZGV0YWlscyhjb25uLCBpZHgsIGRhdGEsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAg IiIiCisgICAgVGhpcyBmdW5jdGlvbmFsIHdpbGwgZmV0Y2ggbGlzdCBvZiBpbmNsdWRlIGRldGFp bHMgZm9yIGluZGV4CisgICAgc3VwcG9ydGVkIHdpdGggUG9zdGdyZXMgMTErCisKKyAgICA6cGFy YW0gY29ubjogQ29ubmVjdGlvbiBvYmplY3QKKyAgICA6cGFyYW0gaWR4OiBJbmRleCBJRAorICAg IDpwYXJhbSBkYXRhOiBkYXRhCisgICAgOnBhcmFtIHRlbXBsYXRlX3BhdGg6IE9wdGlvbmFsIHRl bXBsYXRlIHBhdGgKKyAgICA6cmV0dXJuOgorICAgICIiIgorCisgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKAorICAgICAgICAiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ2luY2x1ZGVfZGV0YWls cy5zcWwnXSksIGlkeD1pZHgKKyAgICApCisgICAgc3RhdHVzLCByc2V0ID0gY29ubi5leGVjdXRl XzJkYXJyYXkoU1FMKQorICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICMgUHVzaCBhcyBjb2xsZWN0aW9u CisgICAgZGF0YVsnaW5jbHVkZSddID0gW2NvbFsnY29sbmFtZSddIGZvciBjb2wgaW4gcnNldFsn cm93cyddXQorCisgICAgcmV0dXJuIGRhdGEKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2RlZiBn ZXRfc3FsKGNvbm4sIGRhdGEsIGRpZCwgdGlkLCBpZHgsIGRhdGxhc3RzeXNvaWQsCisgICAgICAg ICAgICBtb2RlPU5vbmUsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBm dW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEuCisKKyAgICA6cGFyYW0g Y29ubjogQ29ubmVjdGlvbiBPYmplY3QKKyAgICA6cGFyYW0gZGF0YTogRGF0YQorICAgIDpwYXJh bSBkaWQ6CisgICAgOnBhcmFtIHRpZDogVGFibGUgSUQKKyAgICA6cGFyYW0gaWR4OiBJbmRleCBJ RAorICAgIDpwYXJhbSBkYXRsYXN0c3lzb2lkOgorICAgIDpwYXJhbSBtb2RlOgorICAgIDpwYXJh bSB0ZW1wbGF0ZV9wYXRoOiBPcHRpb25hbCB0ZW1wbGF0ZSBwYXRoCisgICAgOnJldHVybjoKKyAg ICAiIiIKKyAgICBuYW1lID0gZGF0YVsnbmFtZSddIGlmICduYW1lJyBpbiBkYXRhIGVsc2UgTm9u ZQorICAgIGlmIGlkeCBpcyBub3QgTm9uZToKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkLCBpZHg9aWR4LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1kYXRsYXN0c3lzb2lkKQorCisgICAg ICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgorICAgICAgICAgICAg cmFpc2UgT2JqZWN0R29uZShfKCdDb3VsZCBub3QgZmluZCB0aGUgaW5kZXggaW4gdGhlIHRhYmxl LicpKQorCisgICAgICAgIG9sZF9kYXRhID0gZGljdChyZXNbJ3Jvd3MnXVswXSkKKworICAgICAg ICAjIElmIG5hbWUgaXMgbm90IHByZXNlbnQgaW4gZGF0YSB0aGVuCisgICAgICAgICMgd2Ugd2ls bCBmZXRjaCBpdCBmcm9tIG9sZCBkYXRhLCB3ZSBhbHNvIG5lZWQgc2NoZW1hICYgdGFibGUgbmFt ZQorICAgICAgICBpZiAnbmFtZScgbm90IGluIGRhdGE6CisgICAgICAgICAgICBuYW1lID0gZGF0 YVsnbmFtZSddID0gb2xkX2RhdGFbJ25hbWUnXQorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCdd KSwKKyAgICAgICAgICAgIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9kYXRhLCBjb25uPWNvbm4KKyAg ICAgICAgKQorICAgIGVsc2U6CisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSB7CisgICAgICAgICAg ICAnbmFtZSc6ICdOYW1lJywKKyAgICAgICAgICAgICdjb2x1bW5zJzogJ0NvbHVtbnMnCisgICAg ICAgIH0KKyAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgZXJy ID0gRmFsc2UKKyAgICAgICAgICAgIGlmIGFyZyA9PSAnY29sdW1ucycgYW5kIGxlbihkYXRhWydj b2x1bW5zJ10pIDwgMToKKyAgICAgICAgICAgICAgICBlcnIgPSBUcnVlCisKKyAgICAgICAgICAg IGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICBlcnIgPSBUcnVlCisgICAgICAg ICAgICAgICAgIyBDaGVjayBpZiB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBjb2x1bW4KKyAgICAgICAg ICAgIGlmIGVycjoKKyAgICAgICAgICAgICAgICByZXR1cm4gXygnLS0gZGVmaW5pdGlvbiBpbmNv bXBsZXRlJyksIG5hbWUKKworICAgICAgICAjIElmIHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0 IHdoaWNoIGRvIG5vdCBoYXZlIGRpZAorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAg ICAgICAgICBkYXRhPWRhdGEsIGNvbm49Y29ubiwgbW9kZT1tb2RlCisgICAgICAgICkKKyAgICAg ICAgU1FMICs9ICJcbiIKKyAgICAgICAgU1FMICs9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAg ICAgICIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAnYWx0ZXIuc3FsJ10pLAorICAgICAgICAgICAg ZGF0YT1kYXRhLCBjb25uPWNvbm4KKyAgICAgICAgKQorCisgICAgcmV0dXJuIFNRTCwgbmFtZQor CisKK0BnZXRfdGVtcGxhdGVfcGF0aAorZGVmIGdldF9yZXZlcnNlX2VuZ2luZWVyZWRfc3FsKGNv bm4sIHNjaGVtYSwgdGFibGUsIGRpZCwgdGlkLCBpZHgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0bGFzdHN5c29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 ZW1wbGF0ZV9wYXRoPU5vbmUpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1 cm4gcmV2ZXJzZSBlbmdpbmVlcmVkIHNxbCBmb3Igc3BlY2lmaWVkIHRyaWdnZXIuCisKKyAgICA6 cGFyYW0gY29ubjogQ29ubmVjdGlvbiBPYmplY3QKKyAgICA6cGFyYW0gc2NoZW1hOiBTY2hlbWEK KyAgICA6cGFyYW0gdGFibGU6IFRhYmxlCisgICAgOnBhcmFtIHRpZDogVGFibGUgSUQKKyAgICA6 cGFyYW0gaWR4OiBJbmRleCBJRAorICAgIDpwYXJhbSBkYXRsYXN0c3lzb2lkOgorICAgIDpwYXJh bSB0ZW1wbGF0ZV9wYXRoOiBPcHRpb25hbCB0ZW1wbGF0ZSBwYXRoCisgICAgOnJldHVybjoKKyAg ICAiIiIKKyAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgs ICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwg dGlkPXRpZCwgaWR4PWlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29p ZD1kYXRsYXN0c3lzb2lkKQorCisgICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChT UUwpCisgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKHJlcykKKwor ICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgcmFpc2UgT2JqZWN0R29uZShf KCdDb3VsZCBub3QgZmluZCB0aGUgaW5kZXggaW4gdGhlIHRhYmxlLicpKQorCisgICAgZGF0YSA9 IGRpY3QocmVzWydyb3dzJ11bMF0pCisgICAgIyBBZGRpbmcgcGFyZW50IGludG8gZGF0YSBkaWN0 LCB3aWxsIGJlIHVzaW5nIGl0IHdoaWxlIGNyZWF0aW5nIHNxbAorICAgIGRhdGFbJ3NjaGVtYSdd ID0gc2NoZW1hCisgICAgZGF0YVsndGFibGUnXSA9IHRhYmxlCisKKyAgICAjIEFkZCBjb2x1bW4g ZGV0YWlscyBmb3IgY3VycmVudCBpbmRleAorICAgIGRhdGEgPSBnZXRfY29sdW1uX2RldGFpbHMo Y29ubiwgaWR4LCBkYXRhLCAnY3JlYXRlJykKKworICAgICMgQWRkIEluY2x1ZGUgZGV0YWlscyBv ZiB0aGUgaW5kZXgKKyAgICBpZiBjb25uLm1hbmFnZXIudmVyc2lvbiA+PSAxMTAwMDA6CisgICAg ICAgIGRhdGEgPSBnZXRfaW5jbHVkZV9kZXRhaWxzKGNvbm4sIGlkeCwgZGF0YSkKKworICAgIFNR TCwgbmFtZSA9IGdldF9zcWwoY29ubiwgZGF0YSwgZGlkLCB0aWQsIE5vbmUsIGRhdGxhc3RzeXNv aWQpCisKKyAgICBzcWxfaGVhZGVyID0gdSItLSBJbmRleDogezB9XG5cbi0tICIuZm9ybWF0KGRh dGFbJ25hbWUnXSkKKworICAgIHNxbF9oZWFkZXIgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFt0ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49Y29ubikKKworICAgIFNRTCA9IHNxbF9oZWFkZXIg KyAnXG5cbicgKyBTUUwKKworICAgIHJldHVybiBTUUwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvdGFibGVzL3NxbC9tYWNyb3MvY29uc3RyYWludHMubWFjcm8gYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL3RhYmxlcy9zcWwvbWFjcm9zL2NvbnN0cmFpbnRzLm1hY3JvCmluZGV4IDc4MmU3 MmZiYi4uNDNkYjMwYzFjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9z cWwvbWFjcm9zL2NvbnN0cmFpbnRzLm1hY3JvCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFi bGVzL3NxbC9tYWNyb3MvY29uc3RyYWludHMubWFjcm8KQEAgLTI2LDggKzI2LDggQEAKIHslIGlm IGRhdGEuY29sdW1uc3xsZW5ndGggPiAwICV9eyUgaWYgbG9vcC5pbmRleCAhPTEgJX0seyUgZW5k aWYgJX0KIAogICAgIHslIGlmIGRhdGEubmFtZSAlfUNPTlNUUkFJTlQge3tjb25ufHF0SWRlbnQo ZGF0YS5uYW1lKX19IHslIGVuZGlmICV9VU5JUVVFICh7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMl fQoteyUgaWYgbG9vcC5pbmRleCAhPSAxICV9LCB7JSBlbmRpZiAlfXt7Y29ubnxxdElkZW50KGMu Y29sdW1uKX19eyUgZW5kZm9yICV9KQoteyUgaWYgZGF0YS5pbmNsdWRlfGxlbmd0aCA+IDAgJX0K K3slIGlmIGxvb3AuaW5kZXggIT0gMSAlfSwgeyUgZW5kaWYgJX17e2Nvbm58cXRJZGVudChjLmNv bHVtbil9fXslIGVuZGZvciAlfSl7JSBpZiBkYXRhLmluY2x1ZGV8bGVuZ3RoID4gMCAlfQorCiAg ICAgICAgIElOQ0xVREUoeyUgZm9yIGNvbCBpbiBkYXRhLmluY2x1ZGUgJX17JSBpZiBsb29wLmlu ZGV4ICE9IDEgJX0sIHslIGVuZGlmICV9e3tjb25ufHF0SWRlbnQoY29sKX19eyUgZW5kZm9yICV9 KXslIGVuZGlmICV9CiB7JSBpZiBkYXRhLmZpbGxmYWN0b3IgJX0KIApAQCAtODksOCArODksMTAg QEAKICAgICAgICAgSU5DTFVERSh7JSBmb3IgY29sIGluIGRhdGEuaW5jbHVkZSAlfXslIGlmIGxv b3AuaW5kZXggIT0gMSAlfSwgeyUgZW5kaWYgJX17e2Nvbm58cXRJZGVudChjb2wpfX17JSBlbmRm b3IgJX0pCiB7JSBlbmRpZiAlfXslIGlmIGRhdGEuZmlsbGZhY3RvciAlfQogICAgICAgICBXSVRI IChGSUxMRkFDVE9SPXt7ZGF0YS5maWxsZmFjdG9yfX0peyUgZW5kaWYgJX17JSBpZiBkYXRhLnNw Y25hbWUgYW5kIGRhdGEuc3BjbmFtZSAhPSAicGdfZGVmYXVsdCIgJX0KLSAgICAgICAgVVNJTkcg SU5ERVggVEFCTEVTUEFDRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zcGNuYW1lKSB9fXslIGVuZGlm ICV9Ci0gICAgICAgIHslIGlmIGRhdGEuaW5kY29uc3RyYWludCAlfVdIRVJFICh7e2RhdGEuaW5k Y29uc3RyYWludH19KXslIGVuZGlmJX17JSBpZiBkYXRhLmNvbmRlZmVycmFibGUgJX0KKworICAg ICAgICBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHt7IGNvbm58cXRJZGVudChkYXRhLnNwY25hbWUp IH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLmluZGNvbnN0cmFpbnQgJX0KKworICAgICAgICBXSEVS RSAoe3tkYXRhLmluZGNvbnN0cmFpbnR9fSl7JSBlbmRpZiV9eyUgaWYgZGF0YS5jb25kZWZlcnJh YmxlICV9CiAKICAgICAgICAgREVGRVJSQUJMRXslIGlmIGRhdGEuY29uZGVmZXJyZWQgJX0KICBJ TklUSUFMTFkgREVGRVJSRUR7JSBlbmRpZiV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RyaWdnZXJzL3NxbC9wZy8xMF9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RyaWdnZXJzL3NxbC9wZy8xMF9wbHVzL2NyZWF0ZS5zcWwKaW5kZXggODA3YWJlNDVjLi43 Njc2YzEzMzIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdHJpZ2dlcnMvc3FsL3Bn LzEwX3BsdXMvY3JlYXRlLnNxbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXJzL3Nx bC9wZy8xMF9wbHVzL2NyZWF0ZS5zcWwKQEAgLTE3LDYgKzE3LDcgQEAgQ1JFQVRFeyUgaWYgZGF0 YS5pc19jb25zdHJhaW50X3RyaWdnZXIgJX0gQ09OU1RSQUlOVHslIGVuZGlmICV9IFRSSUdHRVIg e3sgY29ubnwKICAgICBPTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUp IH19CiB7JSBpZiBkYXRhLnRnZGVmZXJyYWJsZSAlfQogICAgIERFRkVSUkFCTEV7JSBpZiBkYXRh LnRnaW5pdGRlZmVycmVkICV9IElOSVRJQUxMWSBERUZFUlJFRHslIGVuZGlmICV9CisKIHslIGVu ZGlmICV9CiB7JSBpZiBkYXRhLnRnb2xkdGFibGUgb3IgZGF0YS50Z25ld3RhYmxlICV9CiAgICAg UkVGRVJFTkNJTkd7JSBpZiBkYXRhLnRnbmV3dGFibGUgJX0gTkVXIFRBQkxFIEFTIHt7IGNvbm58 cXRJZGVudChkYXRhLnRnbmV3dGFibGUpIH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnRnb2xkdGFi bGUgJX0gT0xEIFRBQkxFIEFTIHt7IGNvbm58cXRJZGVudChkYXRhLnRnb2xkdGFibGUpIH19eyUg ZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdHJpZ2dlcnMvc3FsL3Bn L2RlZmF1bHQvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdHJpZ2dlcnMvc3FsL3Bn L2RlZmF1bHQvY3JlYXRlLnNxbAppbmRleCA0Y2ZmYzkyMGYuLmUwOTA1ZjEwOCAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2Vycy9zcWwvcGcvZGVmYXVsdC9jcmVhdGUuc3Fs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdHJpZ2dlcnMvc3FsL3BnL2RlZmF1bHQvY3JlYXRl LnNxbApAQCAtMTcsNiArMTcsNyBAQCBDUkVBVEV7JSBpZiBkYXRhLmlzX2NvbnN0cmFpbnRfdHJp Z2dlciAlfSBDT05TVFJBSU5UeyUgZW5kaWYgJX0gVFJJR0dFUiB7eyBjb25ufAogICAgIE9OIHt7 IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSkgfX0KIHslIGlmIGRhdGEudGdk ZWZlcnJhYmxlICV9CiAgICAgREVGRVJSQUJMRXslIGlmIGRhdGEudGdpbml0ZGVmZXJyZWQgJX0g SU5JVElBTExZIERFRkVSUkVEeyUgZW5kaWYgJX0KKwogeyUgZW5kaWYgJX0KICAgICBGT1IgRUFD SHslIGlmIGRhdGEuaXNfcm93X3RyaWdnZXIgJX0gUk9XeyUgZWxzZSAlfSBTVEFURU1FTlR7JSBl bmRpZiAlfQogeyUgaWYgZGF0YS53aGVuY2xhdXNlICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL3RyaWdnZXJzL3NxbC9wcGFzLzEwX3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvdHJpZ2dlcnMvc3FsL3BwYXMvMTBfcGx1cy9jcmVhdGUuc3FsCmluZGV4IDgw N2FiZTQ1Yy4uNzY3NmMxMzMyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RyaWdn ZXJzL3NxbC9wcGFzLzEwX3BsdXMvY3JlYXRlLnNxbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L3RyaWdnZXJzL3NxbC9wcGFzLzEwX3BsdXMvY3JlYXRlLnNxbApAQCAtMTcsNiArMTcsNyBAQCBD UkVBVEV7JSBpZiBkYXRhLmlzX2NvbnN0cmFpbnRfdHJpZ2dlciAlfSBDT05TVFJBSU5UeyUgZW5k aWYgJX0gVFJJR0dFUiB7eyBjb25ufAogICAgIE9OIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVt YSwgZGF0YS50YWJsZSkgfX0KIHslIGlmIGRhdGEudGdkZWZlcnJhYmxlICV9CiAgICAgREVGRVJS QUJMRXslIGlmIGRhdGEudGdpbml0ZGVmZXJyZWQgJX0gSU5JVElBTExZIERFRkVSUkVEeyUgZW5k aWYgJX0KKwogeyUgZW5kaWYgJX0KIHslIGlmIGRhdGEudGdvbGR0YWJsZSBvciBkYXRhLnRnbmV3 dGFibGUgJX0KICAgICBSRUZFUkVOQ0lOR3slIGlmIGRhdGEudGduZXd0YWJsZSAlfSBORVcgVEFC TEUgQVMge3sgY29ubnxxdElkZW50KGRhdGEudGduZXd0YWJsZSkgfX17JSBlbmRpZiAlfXslIGlm IGRhdGEudGdvbGR0YWJsZSAlfSBPTEQgVEFCTEUgQVMge3sgY29ubnxxdElkZW50KGRhdGEudGdv bGR0YWJsZSkgfX17JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90 cmlnZ2Vycy9zcWwvcHBhcy9kZWZhdWx0L2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L3RyaWdnZXJzL3NxbC9wcGFzL2RlZmF1bHQvY3JlYXRlLnNxbAppbmRleCA0Y2ZmYzkyMGYuLmUw OTA1ZjEwOCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2Vycy9zcWwvcHBh cy9kZWZhdWx0L2NyZWF0ZS5zcWwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2Vycy9z cWwvcHBhcy9kZWZhdWx0L2NyZWF0ZS5zcWwKQEAgLTE3LDYgKzE3LDcgQEAgQ1JFQVRFeyUgaWYg ZGF0YS5pc19jb25zdHJhaW50X3RyaWdnZXIgJX0gQ09OU1RSQUlOVHslIGVuZGlmICV9IFRSSUdH RVIge3sgY29ubnwKICAgICBPTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFi bGUpIH19CiB7JSBpZiBkYXRhLnRnZGVmZXJyYWJsZSAlfQogICAgIERFRkVSUkFCTEV7JSBpZiBk YXRhLnRnaW5pdGRlZmVycmVkICV9IElOSVRJQUxMWSBERUZFUlJFRHslIGVuZGlmICV9CisKIHsl IGVuZGlmICV9CiAgICAgRk9SIEVBQ0h7JSBpZiBkYXRhLmlzX3Jvd190cmlnZ2VyICV9IFJPV3sl IGVsc2UgJX0gU1RBVEVNRU5UeyUgZW5kaWYgJX0KIHslIGlmIGRhdGEud2hlbmNsYXVzZSAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdXRpbHMucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVz dHMvdGVzdF91dGlscy5weQppbmRleCBmODRlYzNkMTQuLjVhYzZmN2IyNSAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3Rlc3RzL3Rlc3RfdXRpbHMucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3Rf dXRpbHMucHkKQEAgLTU1LDE1ICs1NSw2IEBAIGNsYXNzIFRlc3RVdGlscyhCYXNlVGVzdEdlbmVy YXRvcik6CiAgICAgICAgICAgICAgICAgc3ViamVjdC50YWJsZV90ZW1wbGF0ZV9wYXRoLCAndGFi bGVzL3NxbC8jZ3BkYiMxMCMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAg ICAgICAgICAgICBzdWJqZWN0LmRhdGFfdHlwZV90ZW1wbGF0ZV9wYXRoLCAnZGF0YXR5cGUvc3Fs LyNncGRiIzEwIycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg ICAgIHN1YmplY3QuY2hlY2tfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAg ICAgICdjaGVja19jb25zdHJhaW50L3NxbC8jZ3BkYiMxMCMnKQotICAgICAgICAgICAgc2VsZi5h c3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBzdWJqZWN0LmV4Y2x1c2lvbl9jb25zdHJhaW50 X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgJ2V4Y2x1c2lvbl9jb25zdHJhaW50L3Nx bC8jZ3BkYiMxMCMnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAg ICAgICBzdWJqZWN0LmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAg J2ZvcmVpZ25fa2V5L3NxbC8jZ3BkYiMxMCMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh bCgKICAgICAgICAgICAgICAgICBzdWJqZWN0LmluZGV4X3RlbXBsYXRlX3BhdGgsCiAgICAgICAg ICAgICAgICAgJ2luZGV4ZXMvc3FsLyNncGRiIzEwIycpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dHJpZ2dlcnMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dlcnMvX19pbml0X18ucHkKaW5k ZXggZWNjMjMxNzI1Li5kNmY2ODY3ZTAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy9f X2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dlcnMvX19pbml0X18ucHkKQEAgLTE5LDYg KzE5LDEwIEBAIGZyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rp b25Ob2RlTW9kdWxlCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGlsZE5v ZGVWaWV3CiBmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNl LCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIFwKICAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVz cG9uc2UsIGdvbmUKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5k YXRhYmFzZXMuc2NoZW1hcy50YWJsZXMuXAorICAgIHRyaWdnZXJzIGltcG9ydCB1dGlscyBhcyB0 cmlnZ2VyX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMu ZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgXAorICAgIGltcG9ydCB0cmlnZ2VyX2RlZmluaXRpb24K IGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKIGZyb20gY29uZmln IGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgogZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBJU19Q WTIKQEAgLTE5Miw5ICsxOTYsNiBAQCBjbGFzcyBUcmlnZ2VyVmlldyhQR0NoaWxkTm9kZVZpZXcp OgogICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmV0dXJuIG1vZGlmaWVkIFNRTCBm b3IgdGhlIHNlbGVjdGVkCiAgICAgICAgIFRyaWdnZXIgbm9kZQogCi0gICAgKiBnZXRfc3FsKGRh dGEsIHNjaWQsIHRpZCwgdHJpZCkKLSAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRl IHNxbCBmcm9tIG1vZGVsIGRhdGEKLQogICAgICogc3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRp ZCwgdHJpZCk6CiAgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgdG8gc2hv dyBpdCBpbiBzcWwgcGFuZSBmb3IgdGhlCiAgICAgICAgIHNlbGVjdGVkIFRyaWdnZXIgbm9kZS4K QEAgLTIxMCwxMyArMjExLDYgQEAgY2xhc3MgVHJpZ2dlclZpZXcoUEdDaGlsZE5vZGVWaWV3KToK ICAgICAqIGdldF90cmlnZ2VyX2Z1bmN0aW9ucyhnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIHRy aWQpOgogICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGxpc3Qgb2YgdHJpZ2dlciBm dW5jdGlvbnMgYXZhaWxhYmxlCiAgICAgICAgIHZpYSBBSkFYIHJlc3BvbnNlCi0KLSAgICAqIF9j b2x1bW5fZGV0YWlscyh0aWQsIGNsaXN0KTo6Ci0gICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBm ZXRjaCB0aGUgY29sdW1ucyBmb3IgdHJpZ2dlcgotCi0gICAgKiBfdHJpZ2dlcl9kZWZpbml0aW9u KGRhdGEpOgotICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IGFkZGl0aW9uYWwgdHJpZ2dl ciBkZWZpbml0aW9ucyBpbgotICAgICAgICBBSkFYIHJlc3BvbnNlCiAgICAgIiIiCiAKICAgICBu b2RlX3R5cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCkBAIC0yODAsMjggKzI3NCw5IEBAIGNsYXNz IFRyaWdnZXJWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICAjIFdlIG5lZWQgcGFy ZW50J3MgbmFtZSBlZyB0YWJsZSBuYW1lIGFuZCBzY2hlbWEgbmFtZQogICAgICAgICAgICAgIyB3 aGVuIHdlIGNyZWF0ZSBuZXcgdHJpZ2dlciBpbiB1cGRhdGUgd2UgY2FuIGZldGNoIGl0IHVzaW5n CiAgICAgICAgICAgICAjIHByb3BlcnR5IHNxbAotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aWQ9a3dhcmdzWyd0aWQnXSkKLSAgICAgICAgICAgIHN0 YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cydd OgotICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hID0gcm93WydzY2hlbWEnXQotICAgICAgICAg ICAgICAgIHNlbGYudGFibGUgPSByb3dbJ3RhYmxlJ10KLQotICAgICAgICAgICAgIyBIZXJlIHdl IGFyZSBzdG9yaW5nIHRyaWdnZXIgZGVmaW5pdGlvbgotICAgICAgICAgICAgIyBXZSB3aWxsIHVz ZSBpdCB0byBjaGVjayB0cmlnZ2VyIHR5cGUgZGVmaW5pdGlvbgotICAgICAgICAgICAgc2VsZi50 cmlnZ2VyX2RlZmluaXRpb24gPSB7Ci0gICAgICAgICAgICAgICAgJ1RSSUdHRVJfVFlQRV9ST1cn OiAoMSA8PCAwKSwKLSAgICAgICAgICAgICAgICAnVFJJR0dFUl9UWVBFX0JFRk9SRSc6ICgxIDw8 IDEpLAotICAgICAgICAgICAgICAgICdUUklHR0VSX1RZUEVfSU5TRVJUJzogKDEgPDwgMiksCi0g ICAgICAgICAgICAgICAgJ1RSSUdHRVJfVFlQRV9ERUxFVEUnOiAoMSA8PCAzKSwKLSAgICAgICAg ICAgICAgICAnVFJJR0dFUl9UWVBFX1VQREFURSc6ICgxIDw8IDQpLAotICAgICAgICAgICAgICAg ICdUUklHR0VSX1RZUEVfVFJVTkNBVEUnOiAoMSA8PCA1KSwKLSAgICAgICAgICAgICAgICAnVFJJ R0dFUl9UWVBFX0lOU1RFQUQnOiAoMSA8PCA2KQotICAgICAgICAgICAgfQorICAgICAgICAgICAg c2NoZW1hLCB0YWJsZSA9IHRyaWdnZXJfdXRpbHMuZ2V0X3BhcmVudChzZWxmLmNvbm4sIGt3YXJn c1sndGlkJ10pCisgICAgICAgICAgICBzZWxmLnNjaGVtYSA9IHNjaGVtYQorICAgICAgICAgICAg c2VsZi50YWJsZSA9IHRhYmxlCiAKICAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJn cykKIApAQCAtNDU4LDkzICs0MzMsNiBAQCBjbGFzcyBUcmlnZ2VyVmlldyhQR0NoaWxkTm9kZVZp ZXcpOgogICAgICAgICAgICAgc3RhdHVzPTIwMAogICAgICAgICApCiAKLSAgICBkZWYgX2NvbHVt bl9kZXRhaWxzKHNlbGYsIHRpZCwgY2xpc3QpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBm dW5jdGlvbmFsIHdpbGwgZmV0Y2ggbGlzdCBvZiBjb2x1bW4gZm9yIHRyaWdnZXIKLQotICAgICAg ICBBcmdzOgotICAgICAgICAgICAgdGlkOiBUYWJsZSBPSUQKLSAgICAgICAgICAgIGNsaXN0OiBM aXN0IG9mIGNvbHVtbnMKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgVXBkYXRlZCBw cm9wZXJ0aWVzIGRhdGEgd2l0aCBjb2x1bW4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgU1FMID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb2x1bW5zLnNxbCddKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIGNsaXN0PWNsaXN0KQotICAgICAgICBz dGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgaWYg bm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cnNldCkKLSAgICAgICAgIyAndGdhdHRyJyBjb250YWlucyBsaXN0IG9mIGNvbHVtbnMg ZnJvbSB0YWJsZSB1c2VkIGluIHRyaWdnZXIKLSAgICAgICAgY29sdW1ucyA9IFtdCi0KLSAgICAg ICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106Ci0gICAgICAgICAgICBjb2x1bW5zLmFwcGVuZChy b3dbJ25hbWUnXSkKLQotICAgICAgICByZXR1cm4gY29sdW1ucwotCi0gICAgZGVmIF90cmlnZ2Vy X2RlZmluaXRpb24oc2VsZiwgZGF0YSk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0 aW9uYWwgd2lsbCBzZXQgdGhlIHRyaWdnZXIgZGVmaW5pdGlvbgotCi0gICAgICAgIEFyZ3M6Ci0g ICAgICAgICAgICBkYXRhOiBQcm9wZXJ0aWVzIGRhdGEKLQotICAgICAgICBSZXR1cm5zOgotICAg ICAgICAgICAgVXBkYXRlZCBwcm9wZXJ0aWVzIGRhdGEgd2l0aCB0cmlnZ2VyIGRlZmluaXRpb24K LSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBGaXJlcyBldmVudCBkZWZpbml0aW9uCi0gICAgICAg IGlmIGRhdGFbJ3RndHlwZSddICYgc2VsZi50cmlnZ2VyX2RlZmluaXRpb25bJ1RSSUdHRVJfVFlQ RV9CRUZPUkUnXToKLSAgICAgICAgICAgIGRhdGFbJ2ZpcmVzJ10gPSAnQkVGT1JFJwotICAgICAg ICBlbGlmIGRhdGFbJ3RndHlwZSddICYgc2VsZi50cmlnZ2VyX2RlZmluaXRpb25bJ1RSSUdHRVJf VFlQRV9JTlNURUFEJ106Ci0gICAgICAgICAgICBkYXRhWydmaXJlcyddID0gJ0lOU1RFQUQgT0Yn Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYXRhWydmaXJlcyddID0gJ0FGVEVSJwotCi0g ICAgICAgICMgVHJpZ2dlciBvZiB0eXBlIGRlZmluaXRpb24KLSAgICAgICAgaWYgZGF0YVsndGd0 eXBlJ10gJiBzZWxmLnRyaWdnZXJfZGVmaW5pdGlvblsnVFJJR0dFUl9UWVBFX1JPVyddOgotICAg ICAgICAgICAgZGF0YVsnaXNfcm93X3RyaWdnZXInXSA9IFRydWUKLSAgICAgICAgZWxzZToKLSAg ICAgICAgICAgIGRhdGFbJ2lzX3Jvd190cmlnZ2VyJ10gPSBGYWxzZQotCi0gICAgICAgICMgRXZl bnQgZGVmaW5pdGlvbgotICAgICAgICBpZiBkYXRhWyd0Z3R5cGUnXSAmIHNlbGYudHJpZ2dlcl9k ZWZpbml0aW9uWydUUklHR0VSX1RZUEVfSU5TRVJUJ106Ci0gICAgICAgICAgICBkYXRhWydldm50 X2luc2VydCddID0gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGF0YVsnZXZudF9p bnNlcnQnXSA9IEZhbHNlCi0KLSAgICAgICAgaWYgZGF0YVsndGd0eXBlJ10gJiBzZWxmLnRyaWdn ZXJfZGVmaW5pdGlvblsnVFJJR0dFUl9UWVBFX0RFTEVURSddOgotICAgICAgICAgICAgZGF0YVsn ZXZudF9kZWxldGUnXSA9IFRydWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRhdGFbJ2V2 bnRfZGVsZXRlJ10gPSBGYWxzZQotCi0gICAgICAgIGlmIGRhdGFbJ3RndHlwZSddICYgc2VsZi50 cmlnZ2VyX2RlZmluaXRpb25bJ1RSSUdHRVJfVFlQRV9VUERBVEUnXToKLSAgICAgICAgICAgIGRh dGFbJ2V2bnRfdXBkYXRlJ10gPSBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYXRh Wydldm50X3VwZGF0ZSddID0gRmFsc2UKLQotICAgICAgICBpZiBkYXRhWyd0Z3R5cGUnXSAmIHNl bGYudHJpZ2dlcl9kZWZpbml0aW9uWydUUklHR0VSX1RZUEVfVFJVTkNBVEUnXToKLSAgICAgICAg ICAgIGRhdGFbJ2V2bnRfdHJ1bmNhdGUnXSA9IFRydWUKLSAgICAgICAgZWxzZToKLSAgICAgICAg ICAgIGRhdGFbJ2V2bnRfdHJ1bmNhdGUnXSA9IEZhbHNlCi0KLSAgICAgICAgcmV0dXJuIGRhdGEK LQotICAgIGRlZiBfZm9ybWF0X2FyZ3Moc2VsZiwgYXJncyk6Ci0gICAgICAgICIiIgotICAgICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgZm9ybWF0IGFyZ3VtZW50cy4KLQotICAgICAgICBBcmdzOgot ICAgICAgICAgICAgYXJnczogQXJndW1lbnRzCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAg ICAgIEZvcm1hdGVkIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24KLSAgICAgICAgIiIiCi0gICAgICAg IGZvcm1hdHRlZF9hcmdzID0gWyInezB9JyIuZm9ybWF0KGFyZykgZm9yIGFyZyBpbiBhcmdzXQot ICAgICAgICByZXR1cm4gJywgJy5qb2luKGZvcm1hdHRlZF9hcmdzKQotCiAgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgogICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IHRpZCwgdHJpZCk6CiAgICAgICAgICIiIgpAQCAtNTc5LDE4ICs0NjcsMTAgQEAgY2xhc3MgVHJp Z2dlclZpZXcoUEdDaGlsZE5vZGVWaWV3KToKIAogICAgICAgICAjIE1ha2luZyBjb3B5IG9mIG91 dHB1dCBmb3IgZnV0dXJlIHVzZQogICAgICAgICBkYXRhID0gZGljdChyZXNbJ3Jvd3MnXVswXSkK LSAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X3RyaWdnZXJfZnVuY3Rpb25fc2NoZW1hKGRhdGEpCi0K LSAgICAgICAgaWYgbGVuKGRhdGFbJ2N1c3RvbV90Z2FyZ3MnXSkgPiAxOgotICAgICAgICAgICAg IyBXZSBrbm93IHRoYXQgdHJpZ2dlciBoYXMgbW9yZSB0aGFuIDEgYXJndW1lbnQsIGxldCdzIGpv aW4gdGhlbQotICAgICAgICAgICAgIyBhbmQgY29udmVydCBpdCB0byBzdHJpbmcKLSAgICAgICAg ICAgIGRhdGFbJ3RnYXJncyddID0gc2VsZi5fZm9ybWF0X2FyZ3MoZGF0YVsnY3VzdG9tX3RnYXJn cyddKQorICAgICAgICBkYXRhID0gdHJpZ2dlcl91dGlscy5nZXRfdHJpZ2dlcl9mdW5jdGlvbl9h bmRfY29sdW1ucygKKyAgICAgICAgICAgIHNlbGYuY29ubiwgZGF0YSwgdGlkLCBzZWxmLmJsdWVw cmludC5zaG93X3N5c3RlbV9vYmplY3RzKQogCi0gICAgICAgIGlmIGxlbihkYXRhWyd0Z2F0dHIn XSkgPj0gMToKLSAgICAgICAgICAgIGNvbHVtbnMgPSAnLCAnLmpvaW4oZGF0YVsndGdhdHRyJ10u c3BsaXQoJyAnKSkKLSAgICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IHNlbGYuX2NvbHVtbl9k ZXRhaWxzKHRpZCwgY29sdW1ucykKLQotICAgICAgICBkYXRhID0gc2VsZi5fdHJpZ2dlcl9kZWZp bml0aW9uKGRhdGEpCisgICAgICAgIGRhdGEgPSB0cmlnZ2VyX2RlZmluaXRpb24oZGF0YSkKIAog ICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKICAgICAgICAgICAgIHJlc3BvbnNlPWRhdGEs CkBAIC03NjMsNyArNjQzLDEwIEBAIGNsYXNzIFRyaWdnZXJWaWV3KFBHQ2hpbGROb2RlVmlldyk6 CiAgICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNlbGYuc2NoZW1hCiAgICAgICAgICAgICBk YXRhWyd0YWJsZSddID0gc2VsZi50YWJsZQogCi0gICAgICAgICAgICBTUUwsIG5hbWUgPSBzZWxm LmdldF9zcWwoc2NpZCwgdGlkLCB0cmlkLCBkYXRhKQorICAgICAgICAgICAgU1FMLCBuYW1lID0g dHJpZ2dlcl91dGlscy5nZXRfc3FsKAorICAgICAgICAgICAgICAgIHNlbGYuY29ubiwgZGF0YSwg dGlkLCB0cmlkLCBzZWxmLmRhdGxhc3RzeXNvaWQsCisgICAgICAgICAgICAgICAgc2VsZi5ibHVl cHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0cykKKwogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFu Y2UoU1FMLCAoc3RyLCB1bmljb2RlKSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNRTAogICAg ICAgICAgICAgU1FMID0gU1FMLnN0cmlwKCdcbicpLnN0cmlwKCcgJykKQEAgLTg0Miw3ICs3MjUs OSBAQCBjbGFzcyBUcmlnZ2VyVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBkYXRhWyd0 YWJsZSddID0gc2VsZi50YWJsZQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNxbCwgbmFt ZSA9IHNlbGYuZ2V0X3NxbChzY2lkLCB0aWQsIHRyaWQsIGRhdGEpCisgICAgICAgICAgICBzcWws IG5hbWUgPSB0cmlnZ2VyX3V0aWxzLmdldF9zcWwoCisgICAgICAgICAgICAgICAgc2VsZi5jb25u LCBkYXRhLCB0aWQsIHRyaWQsIHNlbGYuZGF0bGFzdHN5c29pZCwKKyAgICAgICAgICAgICAgICBz ZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzKQogICAgICAgICAgICAgaWYgbm90IGlz aW5zdGFuY2Uoc3FsLCAoc3RyLCB1bmljb2RlKSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNx bAogICAgICAgICAgICAgc3FsID0gc3FsLnN0cmlwKCdcbicpLnN0cmlwKCcgJykKQEAgLTg1Niw5 NSArNzQxLDYgQEAgY2xhc3MgVHJpZ2dlclZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCiAKLSAgICBkZWYgZ2V0X3RyaWdnZXJfZnVuY3Rpb25f c2NoZW1hKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB3 aWxsIHJldHVybiB0cmlnZ2VyIGZ1bmN0aW9uIHdpdGggc2NoZW1hIG5hbWUKLSAgICAgICAgIiIi Ci0gICAgICAgICMgSWYgbGFuZ3VhZ2UgaXMgJ2VkYnNwbCcgdGhlbiB0cmlnZ2VyIGZ1bmN0aW9u IHNob3VsZCBiZQotICAgICAgICAjICdJbmxpbmUgRURCLVNQTCcgZWxzZSB3ZSB3aWxsIGZpbmQg dGhlIHRyaWdnZXIgZnVuY3Rpb24KLSAgICAgICAgIyB3aXRoIHNjaGVtYSBuYW1lLgotICAgICAg ICBpZiBkYXRhWydsYW5uYW1lJ10gPT0gJ2VkYnNwbCc6Ci0gICAgICAgICAgICBkYXRhWyd0ZnVu Y3Rpb24nXSA9ICdJbmxpbmUgRURCLVNQTCcKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnZ2V0X3RyaWdnZXJmdW5jdGlvbnMuc3FsJ10pLAotICAgICAgICAgICAgICAg IHRnZm9pZD1kYXRhWyd0Z2ZvaWQnXSwKLSAgICAgICAgICAgICAgICBzaG93X3N5c3RlbV9vYmpl Y3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMKLSAgICAgICAgICAgICkKLQot ICAgICAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK LSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN1bHQpCi0KLSAgICAgICAgICAgICMgVXBkYXRl IHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIHdoaWNoIHdlIGhhdmUgZmV0Y2hlZCB3aXRoIHNjaGVtYQot ICAgICAgICAgICAgIyBuYW1lCi0gICAgICAgICAgICBpZiAncm93cycgaW4gcmVzdWx0IGFuZCBs ZW4ocmVzdWx0Wydyb3dzJ10pID4gMCBhbmQgXAotICAgICAgICAgICAgICAgICAgICAndGZ1bmN0 aW9ucycgaW4gcmVzdWx0Wydyb3dzJ11bMF06Ci0gICAgICAgICAgICAgICAgZGF0YVsndGZ1bmN0 aW9uJ10gPSByZXN1bHRbJ3Jvd3MnXVswXVsndGZ1bmN0aW9ucyddCi0gICAgICAgIHJldHVybiBk YXRhCi0KLSAgICBkZWYgZ2V0X3NxbChzZWxmLCBzY2lkLCB0aWQsIHRyaWQsIGRhdGEpOgotICAg ICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbnJhdGUgc3FsIGZyb20gbW9k ZWwgZGF0YQotICAgICAgICAiIiIKLSAgICAgICAgaWYgdHJpZCBpcyBub3QgTm9uZToKLSAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGll cy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgdHJp ZD10cmlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9 c2VsZi5kYXRsYXN0c3lzb2lkKQotCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLSAgICAg ICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4g Z29uZSgKLSAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgiIiJDb3VsZCBub3QgZmluZCB0aGUg dHJpZ2dlciBpbiB0aGUgdGFibGUuIiIiKQotICAgICAgICAgICAgICAgICkKLQotICAgICAgICAg ICAgb2xkX2RhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQotCi0gICAgICAgICAgICAjIElmIG5h bWUgaXMgbm90IHByZXNlbnQgaW4gZGF0YSB0aGVuCi0gICAgICAgICAgICAjIHdlIHdpbGwgZmV0 Y2ggaXQgZnJvbSBvbGQgZGF0YSwgd2UgYWxzbyBuZWVkIHNjaGVtYSAmIHRhYmxlIG5hbWUKLSAg ICAgICAgICAgIGlmICduYW1lJyBub3QgaW4gZGF0YToKLSAgICAgICAgICAgICAgICBkYXRhWydu YW1lJ10gPSBvbGRfZGF0YVsnbmFtZSddCi0KLSAgICAgICAgICAgIHNlbGYudHJpZ2dlcl9uYW1l ID0gZGF0YVsnbmFtZSddCi0gICAgICAgICAgICBzZWxmLmxhbm5hbWUgPSBvbGRfZGF0YVsnbGFu bmFtZSddCi0gICAgICAgICAgICBzZWxmLmlzX3RyaWdnZXJfZW5hYmxlZCA9IG9sZF9kYXRhWydp c19lbmFibGVfdHJpZ2dlciddCi0KLSAgICAgICAgICAgIG9sZF9kYXRhID0gc2VsZi5nZXRfdHJp Z2dlcl9mdW5jdGlvbl9zY2hlbWEob2xkX2RhdGEpCi0KLSAgICAgICAgICAgIGlmIGxlbihvbGRf ZGF0YVsnY3VzdG9tX3RnYXJncyddKSA+IDE6Ci0gICAgICAgICAgICAgICAgIyBXZSBrbm93IHRo YXQgdHJpZ2dlciBoYXMgbW9yZSB0aGFuIDEgYXJndW1lbnQsIGxldCdzIGpvaW4KLSAgICAgICAg ICAgICAgICAjIHRoZW0KLSAgICAgICAgICAgICAgICBvbGRfZGF0YVsndGdhcmdzJ10gPSBcCi0g ICAgICAgICAgICAgICAgICAgIHNlbGYuX2Zvcm1hdF9hcmdzKG9sZF9kYXRhWydjdXN0b21fdGdh cmdzJ10pCi0KLSAgICAgICAgICAgIGlmIGxlbihvbGRfZGF0YVsndGdhdHRyJ10pID4gMToKLSAg ICAgICAgICAgICAgICBjb2x1bW5zID0gJywgJy5qb2luKG9sZF9kYXRhWyd0Z2F0dHInXS5zcGxp dCgnICcpKQotICAgICAgICAgICAgICAgIG9sZF9kYXRhWydjb2x1bW5zJ10gPSBzZWxmLl9jb2x1 bW5fZGV0YWlscyh0aWQsIGNvbHVtbnMpCi0KLSAgICAgICAgICAgIG9sZF9kYXRhID0gc2VsZi5f dHJpZ2dlcl9kZWZpbml0aW9uKG9sZF9kYXRhKQotCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J3VwZGF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBvX2RhdGE9b2xkX2Rh dGEsIGNvbm49c2VsZi5jb25uCi0gICAgICAgICAgICApCi0gICAgICAgIGVsc2U6Ci0gICAgICAg ICAgICByZXF1aXJlZF9hcmdzID0gewotICAgICAgICAgICAgICAgICduYW1lJzogJ05hbWUnLAot ICAgICAgICAgICAgICAgICd0ZnVuY3Rpb24nOiAnVHJpZ2dlciBmdW5jdGlvbicKLSAgICAgICAg ICAgIH0KLQotICAgICAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgotICAgICAgICAg ICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdl dHRleHQoJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpCi0KLSAgICAgICAgICAgICMgSWYgdGhl IHJlcXVlc3QgZm9yIG5ldyBvYmplY3Qgd2hpY2ggZG8gbm90IGhhdmUgZGlkCi0gICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2Ny ZWF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRh LCBjb25uPXNlbGYuY29ubikKLSAgICAgICAgcmV0dXJuIFNRTCwgZGF0YVsnbmFtZSddIGlmICdu YW1lJyBpbiBkYXRhIGVsc2Ugb2xkX2RhdGFbJ25hbWUnXQotCiAgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgogICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCB0cmlkKToK ICAgICAgICAgIiIiCkBAIC05NTksNTEgKzc1NSw5IEBAIGNsYXNzIFRyaWdnZXJWaWV3KFBHQ2hp bGROb2RlVmlldyk6CiAgICAgICAgICAgIHRyaWQ6IFRyaWdnZXIgSUQKICAgICAgICAgIiIiCiAK LSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMu c3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgdHJpZD10cmlk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxh c3RzeXNvaWQpCi0KLSAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0 KFNRTCkKLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10p ID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gZ29uZSgKLSAgICAgICAgICAgICAgICBnZXR0ZXh0 KCIiIkNvdWxkIG5vdCBmaW5kIHRoZSB0cmlnZ2VyIGluIHRoZSB0YWJsZS4iIiIpKQotCi0gICAg ICAgIGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQotICAgICAgICAjIEFkZGluZyBwYXJlbnQg aW50byBkYXRhIGRpY3QsIHdpbGwgYmUgdXNpbmcgaXQgd2hpbGUgY3JlYXRpbmcgc3FsCi0gICAg ICAgIGRhdGFbJ3NjaGVtYSddID0gc2VsZi5zY2hlbWEKLSAgICAgICAgZGF0YVsndGFibGUnXSA9 IHNlbGYudGFibGUKLQotICAgICAgICBkYXRhID0gc2VsZi5nZXRfdHJpZ2dlcl9mdW5jdGlvbl9z Y2hlbWEoZGF0YSkKLQotICAgICAgICBpZiBsZW4oZGF0YVsnY3VzdG9tX3RnYXJncyddKSA+IDE6 Ci0gICAgICAgICAgICAjIFdlIGtub3cgdGhhdCB0cmlnZ2VyIGhhcyBtb3JlIHRoYW4gMSBhcmd1 bWVudCwgbGV0J3Mgam9pbiB0aGVtCi0gICAgICAgICAgICBkYXRhWyd0Z2FyZ3MnXSA9IHNlbGYu X2Zvcm1hdF9hcmdzKGRhdGFbJ2N1c3RvbV90Z2FyZ3MnXSkKLQotICAgICAgICBpZiBsZW4oZGF0 YVsndGdhdHRyJ10pID49IDE6Ci0gICAgICAgICAgICBjb2x1bW5zID0gJywgJy5qb2luKGRhdGFb J3RnYXR0ciddLnNwbGl0KCcgJykpCi0gICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBzZWxm Ll9jb2x1bW5fZGV0YWlscyh0aWQsIGNvbHVtbnMpCi0KLSAgICAgICAgZGF0YSA9IHNlbGYuX3Ry aWdnZXJfZGVmaW5pdGlvbihkYXRhKQotCi0gICAgICAgIFNRTCwgbmFtZSA9IHNlbGYuZ2V0X3Nx bChzY2lkLCB0aWQsIE5vbmUsIGRhdGEpCi0KLSAgICAgICAgc3FsX2hlYWRlciA9IHUiLS0gVHJp Z2dlcjogezB9XG5cbi0tICIuZm9ybWF0KGRhdGFbJ25hbWUnXSkKLQotICAgICAgICBzcWxfaGVh ZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwn XSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29u bj1zZWxmLmNvbm4pCi0KLSAgICAgICAgU1FMID0gc3FsX2hlYWRlciArICdcblxuJyArIFNRTC5z dHJpcCgnXG4nKQotCi0gICAgICAgICMgSWYgdHJpZ2dlciBpcyBkaXNiYWxlZCB0aGVuIGFkZCBz cWwgY29kZSBmb3IgdGhlIHNhbWUKLSAgICAgICAgaWYgZGF0YVsnaXNfZW5hYmxlX3RyaWdnZXIn XSAhPSAnTyc6Ci0gICAgICAgICAgICBTUUwgKz0gJ1xuXG4nCi0gICAgICAgICAgICBTUUwgKz0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5hYmxlX2Rpc2FibGVfdHJpZ2dl ci5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwg Y29ubj1zZWxmLmNvbm4pCisgICAgICAgIFNRTCA9IHRyaWdnZXJfdXRpbHMuZ2V0X3JldmVyc2Vf ZW5naW5lZXJlZF9zcWwoCisgICAgICAgICAgICBzZWxmLmNvbm4sIHNlbGYuc2NoZW1hLCBzZWxm LnRhYmxlLCB0aWQsIHRyaWQsCisgICAgICAgICAgICBzZWxmLmRhdGxhc3RzeXNvaWQsIHNlbGYu Ymx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMpCiAKICAgICAgICAgcmV0dXJuIGFqYXhfcmVz cG9uc2UocmVzcG9uc2U9U1FMKQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dlcnMvdXRp bHMucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dlcnMvdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi40NTM1ZjhiNDEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dHJpZ2dlcnMvdXRpbHMucHkKQEAgLTAsMCArMSwyNTMgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj CisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEz IC0gMjAxOSwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKKyIiIiBJbXBsZW1lbnRzIFV0aWxpdHkgY2xhc3MgZm9yIEZvcmVpZ24gS2V5cy4gIiIi CisKK2Zyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZQorZnJvbSBmbGFza19iYWJlbGV4 IGltcG9ydCBnZXR0ZXh0IGFzIF8KK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi51dGlscy5leGNlcHRpb24gaW1wb3J0IE9i amVjdEdvbmUKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMuc2NoZW1hcy51dGlscyBcCisgICAgaW1wb3J0IHRyaWdnZXJfZGVmaW5pdGlvbgorZnJv bSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCisKKworZGVmIGdldF90ZW1wbGF0ZV9wYXRoKGYpOgor ICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hp Y2ggd2lsbCBwcmVwYXJlCisgICAgdGhlIHRlbXBsYXRlIHBhdGggYmFzZWQgb24gZGF0YWJhc2Ug c2VydmVyIHZlcnNpb24uCisgICAgIiIiCisKKyAgICBAd3JhcHMoZikKKyAgICBkZWYgd3JhcCgq YXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIEhlcmUgYXJnc1swXSB3aWxsIGhvbGQgdGhlIGNv bm5lY3Rpb24gb2JqZWN0CisgICAgICAgIGNvbm5fb2JqID0gYXJnc1swXQorICAgICAgICBpZiAn dGVtcGxhdGVfcGF0aCcgbm90IGluIGt3YXJnczoKKyAgICAgICAgICAgIGt3YXJnc1sndGVtcGxh dGVfcGF0aCddID0gJ3RyaWdnZXJzL3NxbC97MH0vI3sxfSMnLmZvcm1hdCgKKyAgICAgICAgICAg ICAgICBjb25uX29iai5tYW5hZ2VyLnNlcnZlcl90eXBlLCBjb25uX29iai5tYW5hZ2VyLnZlcnNp b24pCisKKyAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQorICAgIHJldHVybiB3cmFw CisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X3BhcmVudChjb25uLCB0aWQsIHRlbXBs YXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0 aGUgcGFyZW50IG9mIHRoZSBnaXZlbiB0YWJsZS4KKyAgICA6cGFyYW0gY29ubjogQ29ubmVjdGlv biBPYmplY3QKKyAgICA6cGFyYW0gdGlkOiBUYWJsZSBvaWQKKyAgICA6cGFyYW0gdGVtcGxhdGVf cGF0aDogT3B0aW9uYWwgdGVtcGxhdGUgcGF0aAorICAgIDpyZXR1cm46CisgICAgIiIiCisKKyAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSksIHRpZD10aWQp CisgICAgc3RhdHVzLCByc2V0ID0gY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihyc2V0KQorCisgICAgc2NoZW1hID0g JycKKyAgICB0YWJsZSA9ICcnCisgICAgaWYgJ3Jvd3MnIGluIHJzZXQgYW5kIGxlbihyc2V0Wydy b3dzJ10pID4gMDoKKyAgICAgICAgc2NoZW1hID0gcnNldFsncm93cyddWzBdWydzY2hlbWEnXQor ICAgICAgICB0YWJsZSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFibGUnXQorCisgICAgcmV0dXJuIHNj aGVtYSwgdGFibGUKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2RlZiBnZXRfY29sdW1uX2RldGFp bHMoY29ubiwgdGlkLCBjbGlzdCwgdGVtcGxhdGVfcGF0aD1Ob25lKToKKyAgICAiIiIKKyAgICBU aGlzIGZ1bmN0aW9uYWwgd2lsbCBmZXRjaCBsaXN0IG9mIGNvbHVtbiBmb3IgdHJpZ2dlci4KKyAg ICA6cGFyYW0gY29ubjoKKyAgICA6cGFyYW0gdGlkOgorICAgIDpwYXJhbSBjbGlzdDoKKyAgICA6 cGFyYW0gdGVtcGxhdGVfcGF0aDoKKyAgICA6cmV0dXJuOgorICAgICIiIgorCisgICAgU1FMID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb2x1bW5zLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgdGlkPXRpZCwgY2xpc3Q9Y2xpc3QpCisgICAgc3RhdHVzLCByc2V0ID0gY29u bi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgIGNvbHVtbnMgPSBb XQorICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICBjb2x1bW5zLmFwcGVuZChy b3dbJ25hbWUnXSkKKworICAgIHJldHVybiBjb2x1bW5zCisKKworQGdldF90ZW1wbGF0ZV9wYXRo CitkZWYgZ2V0X3RyaWdnZXJfZnVuY3Rpb25fYW5kX2NvbHVtbnMoY29ubiwgZGF0YSwgdGlkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfc3lzdGVtX29iamVjdHMs IHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJl dHVybiB0cmlnZ2VyIGZ1bmN0aW9uIHdpdGggc2NoZW1hIG5hbWUuCisgICAgOnBhcmFtIGNvbm46 IENvbm5lY3Rpb24gT2JqZWN0CisgICAgOnBhcmFtIGRhdGE6IERhdGEKKyAgICA6cGFyYW0gdGlk OiBUYWJsZSBJRAorICAgIDpwYXJhbSBzaG93X3N5c3RlbV9vYmplY3RzOiBzaG93IHN5c3RlbSBv YmplY3QKKyAgICA6cGFyYW0gdGVtcGxhdGVfcGF0aDogT3B0aW9uYWwgVGVtcGxhdGUgUGF0aAor ICAgIDpyZXR1cm46CisgICAgIiIiCisgICAgIyBJZiBsYW5ndWFnZSBpcyAnZWRic3BsJyB0aGVu IHRyaWdnZXIgZnVuY3Rpb24gc2hvdWxkIGJlCisgICAgIyAnSW5saW5lIEVEQi1TUEwnIGVsc2Ug d2Ugd2lsbCBmaW5kIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uCisgICAgIyB3aXRoIHNjaGVtYSBuYW1l LgorICAgIGlmIGRhdGFbJ2xhbm5hbWUnXSA9PSAnZWRic3BsJzoKKyAgICAgICAgZGF0YVsndGZ1 bmN0aW9uJ10gPSAnSW5saW5lIEVEQi1TUEwnCisgICAgZWxzZToKKyAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgW3RlbXBsYXRlX3BhdGgsICdnZXRf dHJpZ2dlcmZ1bmN0aW9ucy5zcWwnXSksCisgICAgICAgICAgICB0Z2ZvaWQ9ZGF0YVsndGdmb2lk J10sCisgICAgICAgICAgICBzaG93X3N5c3RlbV9vYmplY3RzPXNob3dfc3lzdGVtX29iamVjdHMK KyAgICAgICAgKQorCisgICAgICAgIHN0YXR1cywgcmVzdWx0ID0gY29ubi5leGVjdXRlX2RpY3Qo U1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN1bHQpCisKKyAgICAgICAgIyBVcGRhdGUgdGhlIHRy aWdnZXIgZnVuY3Rpb24gd2hpY2ggd2UgaGF2ZSBmZXRjaGVkIHdpdGgKKyAgICAgICAgIyBzY2hl bWEgbmFtZQorICAgICAgICBpZiAncm93cycgaW4gcmVzdWx0IGFuZCBsZW4ocmVzdWx0Wydyb3dz J10pID4gMCBhbmQgXAorICAgICAgICAgICAgICAgICd0ZnVuY3Rpb25zJyBpbiByZXN1bHRbJ3Jv d3MnXVswXToKKyAgICAgICAgICAgIGRhdGFbJ3RmdW5jdGlvbiddID0gcmVzdWx0Wydyb3dzJ11b MF1bJ3RmdW5jdGlvbnMnXQorCisgICAgICAgIGlmIGxlbihkYXRhWydjdXN0b21fdGdhcmdzJ10p ID4gMToKKyAgICAgICAgICAgICMgV2Uga25vdyB0aGF0IHRyaWdnZXIgaGFzIG1vcmUgdGhhbiAx IGFyZ3VtZW50LCBsZXQncyBqb2luIHRoZW0KKyAgICAgICAgICAgICMgYW5kIGNvbnZlcnQgaXQg dG8gc3RyaW5nCisgICAgICAgICAgICBmb3JtYXR0ZWRfYXJncyA9IFsiJ3swfSciLmZvcm1hdChh cmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYXJnIGluIGRhdGFbJ2N1c3Rv bV90Z2FyZ3MnXV0KKyAgICAgICAgICAgIGZvcm1hdHRlZF9hcmdzID0gJywgJy5qb2luKGZvcm1h dHRlZF9hcmdzKQorCisgICAgICAgICAgICBkYXRhWyd0Z2FyZ3MnXSA9IGZvcm1hdHRlZF9hcmdz CisKKyAgICAgICAgaWYgbGVuKGRhdGFbJ3RnYXR0ciddKSA+PSAxOgorICAgICAgICAgICAgY29s dW1ucyA9ICcsICcuam9pbihkYXRhWyd0Z2F0dHInXS5zcGxpdCgnICcpKQorICAgICAgICAgICAg ZGF0YVsnY29sdW1ucyddID0gZ2V0X2NvbHVtbl9kZXRhaWxzKGNvbm4sIHRpZCwgY29sdW1ucykK KworICAgIHJldHVybiBkYXRhCisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X3NxbChj b25uLCBkYXRhLCB0aWQsIHRyaWQsIGRhdGxhc3RzeXNvaWQsCisgICAgICAgICAgICBzaG93X3N5 c3RlbV9vYmplY3RzLCB0ZW1wbGF0ZV9wYXRoPU5vbmUpOgorICAgICIiIgorICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhLgorCisgICAgOnBhcmFtIGNv bm46IENvbm5lY3Rpb24gT2JqZWN0CisgICAgOnBhcmFtIGRhdGE6IERhdGEKKyAgICA6cGFyYW0g dGlkOiBUYWJsZSBJRAorICAgIDpwYXJhbSB0cmlkOiBUcmlnZ2VyIElECisgICAgOnBhcmFtIGRh dGxhc3RzeXNvaWQ6CisgICAgOnBhcmFtIHNob3dfc3lzdGVtX29iamVjdHM6IFNob3cgU3lzdGVt IE9iamVjdCB2YWx1ZSBUcnVlIG9yIEZhbHNlCisgICAgOnBhcmFtIHRlbXBsYXRlX3BhdGg6IE9w dGlvbmFsIHRlbXBsYXRlIHBhdGgKKyAgICA6cmV0dXJuOgorICAgICIiIgorICAgIG5hbWUgPSBk YXRhWyduYW1lJ10gaWYgJ25hbWUnIGluIGRhdGEgZWxzZSBOb25lCisgICAgaWYgdHJpZCBpcyBu b3QgTm9uZToKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0 ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aWQ9dGlkLCB0cmlkPXRyaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRs YXN0c3lzb2lkPWRhdGxhc3RzeXNvaWQpCisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBjb25uLmV4 ZWN1dGVfZGljdChzcWwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByYWlz ZSBFeGNlcHRpb24ocmVzKQorCisgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAg ICAgICAgICAgIHJhaXNlIE9iamVjdEdvbmUoXygnQ291bGQgbm90IGZpbmQgdGhlIHRyaWdnZXIg aW4gdGhlIHRhYmxlLicpKQorCisgICAgICAgIG9sZF9kYXRhID0gZGljdChyZXNbJ3Jvd3MnXVsw XSkKKyAgICAgICAgIyBJZiBuYW1lIGlzIG5vdCBwcmVzZW50IGluIGRhdGEgdGhlbgorICAgICAg ICAjIHdlIHdpbGwgZmV0Y2ggaXQgZnJvbSBvbGQgZGF0YSwgd2UgYWxzbyBuZWVkIHNjaGVtYSAm IHRhYmxlIG5hbWUKKyAgICAgICAgaWYgJ25hbWUnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAg bmFtZSA9IGRhdGFbJ25hbWUnXSA9IG9sZF9kYXRhWyduYW1lJ10KKworICAgICAgICBvbGRfZGF0 YSA9IGdldF90cmlnZ2VyX2Z1bmN0aW9uX2FuZF9jb2x1bW5zKAorICAgICAgICAgICAgY29ubiwg b2xkX2RhdGEsIHRpZCwgc2hvd19zeXN0ZW1fb2JqZWN0cykKKworICAgICAgICBvbGRfZGF0YSA9 IHRyaWdnZXJfZGVmaW5pdGlvbihvbGRfZGF0YSkKKworICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwn XSksCisgICAgICAgICAgICBkYXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YSwgY29ubj1jb25uCisg ICAgICAgICkKKyAgICBlbHNlOgorICAgICAgICByZXF1aXJlZF9hcmdzID0geworICAgICAgICAg ICAgJ25hbWUnOiAnTmFtZScsCisgICAgICAgICAgICAndGZ1bmN0aW9uJzogJ1RyaWdnZXIgZnVu Y3Rpb24nCisgICAgICAgIH0KKworICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6Cisg ICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAgcmV0dXJuIF8o Jy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpCisKKyAgICAgICAgIyBJZiB0aGUgcmVxdWVzdCBm b3IgbmV3IG9iamVjdCB3aGljaCBkbyBub3QgaGF2ZSBkaWQKKyAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1jb25uKQorICAgIHJldHVy biBTUUwsIG5hbWUKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2RlZiBnZXRfcmV2ZXJzZV9lbmdp bmVlcmVkX3NxbChjb25uLCBzY2hlbWEsIHRhYmxlLCB0aWQsIHRyaWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZCwgc2hvd19zeXN0ZW1fb2JqZWN0cywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9wYXRoPU5vbmUpOgorICAgICIi IgorICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gcmV2ZXJzZSBlbmdpbmVlcmVkIHNxbCBm b3Igc3BlY2lmaWVkIHRyaWdnZXIuCisKKyAgICA6cGFyYW0gY29ubjogQ29ubmVjdGlvbiBPYmpl Y3QKKyAgICA6cGFyYW0gc2NoZW1hOiBTY2hlbWEKKyAgICA6cGFyYW0gdGFibGU6IFRhYmxlCisg ICAgOnBhcmFtIHRpZDogVGFibGUgSUQKKyAgICA6cGFyYW0gdHJpZDogVHJpZ2dlciBJRAorICAg IDpwYXJhbSBkYXRsYXN0c3lzb2lkOgorICAgIDpwYXJhbSBzaG93X3N5c3RlbV9vYmplY3RzOiBT aG93IFN5c3RlbSBPYmplY3QgdmFsdWUgVHJ1ZSBvciBGYWxzZQorICAgIDpwYXJhbSB0ZW1wbGF0 ZV9wYXRoOiBPcHRpb25hbCB0ZW1wbGF0ZSBwYXRoCisgICAgOnJldHVybjoKKyAgICAiIiIKKyAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0 aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgdHJpZD10cmlk LAorICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPWRhdGxhc3RzeXNvaWQp CisKKyAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICByYWlzZSBFeGNlcHRpb24ocmVzKQorCisgICAgaWYgbGVuKHJlc1sn cm93cyddKSA9PSAwOgorICAgICAgICByYWlzZSBPYmplY3RHb25lKF8oJ0NvdWxkIG5vdCBmaW5k IHRoZSB0cmlnZ2VyIGluIHRoZSB0YWJsZS4nKSkKKworICAgIGRhdGEgPSBkaWN0KHJlc1sncm93 cyddWzBdKQorCisgICAgIyBBZGRpbmcgcGFyZW50IGludG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVz aW5nIGl0IHdoaWxlIGNyZWF0aW5nIHNxbAorICAgIGRhdGFbJ3NjaGVtYSddID0gc2NoZW1hCisg ICAgZGF0YVsndGFibGUnXSA9IHRhYmxlCisKKyAgICBkYXRhID0gXAorICAgICAgICBnZXRfdHJp Z2dlcl9mdW5jdGlvbl9hbmRfY29sdW1ucyhjb25uLCBkYXRhLCB0aWQsIHNob3dfc3lzdGVtX29i amVjdHMpCisKKyAgICBkYXRhID0gdHJpZ2dlcl9kZWZpbml0aW9uKGRhdGEpCisKKyAgICBTUUws IG5hbWUgPSBnZXRfc3FsKGNvbm4sIGRhdGEsIHRpZCwgTm9uZSwgZGF0bGFzdHN5c29pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHNob3dfc3lzdGVtX29iamVjdHMpCisKKyAgICBzcWxfaGVh ZGVyID0gdSItLSBUcmlnZ2VyOiB7MH1cblxuLS0gIi5mb3JtYXQoZGF0YVsnbmFtZSddKQorCisg ICAgc3FsX2hlYWRlciArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgs ICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 ZGF0YSwgY29ubj1jb25uKQorCisgICAgU1FMID0gc3FsX2hlYWRlciArICdcblxuJyArIFNRTC5z dHJpcCgnXG4nKQorCisgICAgIyBJZiB0cmlnZ2VyIGlzIGRpc2FibGVkIHRoZW4gYWRkIHNxbCBj b2RlIGZvciB0aGUgc2FtZQorICAgIGlmIGRhdGFbJ2lzX2VuYWJsZV90cmlnZ2VyJ10gIT0gJ08n OgorICAgICAgICBTUUwgKz0gJ1xuXG4nCisgICAgICAgIFNRTCArPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdlbmFibGVfZGlzYWJsZV90cmlnZ2VyLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49Y29ubikKKyAgICByZXR1cm4gU1FMCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdXRpbHMucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdXRpbHMucHkKaW5kZXgg ZDcyMWVhZjRiLi4xYzRjYzdiYjkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy91dGlscy5weQorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdXRpbHMucHkKQEAgLTIwLDcgKzIwLDcgQEAgZnJvbSBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzXAogZnJvbSBwZ2FkbWlu LnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vy cm9yLCBcCiAgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3BvbnNlCiBmcm9tIHBnYWRtaW4u YnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgXAot ICAgIGltcG9ydCBEYXRhVHlwZVJlYWRlciwgdHJpZ2dlcl9kZWZpbml0aW9uLCBwYXJzZV9ydWxl X2RlZmluaXRpb24KKyAgICBpbXBvcnQgRGF0YVR5cGVSZWFkZXIsIHBhcnNlX3J1bGVfZGVmaW5p dGlvbgogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnV0aWxzIGlt cG9ydCBwYXJzZV9wcml2X2Zyb21fZGIsIFwKICAgICBwYXJzZV9wcml2X3RvX2RiCiBmcm9tIHBn YWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGlsZE5vZGVWaWV3CkBAIC0yOCw2ICsyOCwx OCBAQCBmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IElTX1BZMgogZnJvbSBwZ2FkbWluLnV0aWxz LmNvbXBpbGVfdGVtcGxhdGVfbmFtZSBpbXBvcnQgY29tcGlsZV90ZW1wbGF0ZV9wYXRoCiBmcm9t IHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCiBmcm9tIGNvbmZpZyBpbXBv cnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMu c2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50YWJsZXMuXAorICAgIGNvbnN0cmFpbnRzLmZvcmVp Z25fa2V5IGltcG9ydCB1dGlscyBhcyBma2V5X3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGFibGVzLlwKKyAgICBjb25z dHJhaW50cy5jaGVja19jb25zdHJhaW50IGltcG9ydCB1dGlscyBhcyBjaGVja191dGlscworZnJv bSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFz LnRhYmxlcy5cCisgICAgY29uc3RyYWludHMuZXhjbHVzaW9uX2NvbnN0cmFpbnQgaW1wb3J0IHV0 aWxzIGFzIGV4Y2x1c2lvbl91dGlscworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRhYmxlcy5cCisgICAgY29uc3RyYWludHMuaW5k ZXhfY29uc3RyYWludCBpbXBvcnQgdXRpbHMgYXMgaWR4Y29uc191dGlscworZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRhYmxlcy5c CisgICAgdHJpZ2dlcnMgaW1wb3J0IHV0aWxzIGFzIHRyaWdnZXJfdXRpbHMKK2Zyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50YWJsZXMu XAorICAgIGNvbXBvdW5kX3RyaWdnZXJzIGltcG9ydCB1dGlscyBhcyBjb21wb3VuZF90cmlnZ2Vy X3V0aWxzCiAKIAogY2xhc3MgQmFzZVRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIEJhc2VQYXJ0 aXRpb25UYWJsZSk6CkBAIC00OSwxMCArNjEsNiBAQCBjbGFzcyBCYXNlVGFibGVWaWV3KFBHQ2hp bGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKICAgICAgIC0gSXQgd2lsbCByZXR1cm4g Zm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKICAgICAgICAgYXMgcGVyIGNsaWVudCBt b2RlbCBmb3JtYXQgZm9yIGNvbHVtbiBub2RlCiAKLSAgICAqIF9pbmRleF9jb25zdHJhaW50c19m b3JtYXR0ZXIoc2VsZiwgZGlkLCB0aWQsIGRhdGEpOgotICAgICAgLSBJdCB3aWxsIHJldHVybiBm b3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAotICAgICAgICBhcyBwZXIgY2xpZW50IG1v ZGVsIGZvcm1hdCBmb3IgaW5kZXggY29uc3RyYWludCBub2RlCi0KICAgICAqIF9jbHR5cGVfZm9y bWF0dGVyKHR5cGUpOiAoc3RhdGljbWV0aG9kKQogICAgICAgLSBXZSBuZWVkIHRvIHJlbW92ZSBb XSBmcm9tIHR5cGUgYW5kIGFwcGVuZCBpdAogICAgICAgICBhZnRlciBsZW5ndGgvcHJlY2lzaW9u IHNvIHdlIHdpbGwgc2VuZCBmbGFnIGZvcgpAQCAtNzYsMTIgKzg0LDYgQEAgY2xhc3MgQmFzZVRh YmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIEJhc2VQYXJ0aXRpb25UYWJsZSk6CiAKICAgICAqIHJl c2V0X3N0YXRpc3RpY3Moc2VsZiwgc2NpZCwgdGlkKToKICAgICAgIC0gVGhpcyBmdW5jdGlvbiB3 aWxsIHJlc2V0IHN0YXRpc3RpY3Mgb2YgdGFibGUuCi0KLSAgICAqIGdldF90cmlnZ2VyX2Z1bmN0 aW9uX3NjaGVtYShzZWxmLCBkYXRhKQotICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJu IHRyaWdnZXIgZnVuY3Rpb24gd2l0aCBzY2hlbWEgbmFtZQotCi0gICAgKiBfZm9ybWF0X2FyZ3Mo c2VsZiwgYXJnKQotICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZm9ybWF0IHRyaWdnZXIgZnVu Y3Rpb24gYXJndW1lbnRzLgogICAgICIiIgogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgY2hl Y2tfcHJlY29uZGl0aW9uKGYpOgpAQCAtMTIxLDE4ICsxMjMsNiBAQCBjbGFzcyBCYXNlVGFibGVW aWV3KFBHQ2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKICAgICAgICAgICAgICMg VGVtcGxhdGUgZm9yIENvbHVtbiAsY2hlY2sgY29uc3RyYWludCBhbmQgZXhjbHVzaW9uCiAgICAg ICAgICAgICAjIGNvbnN0cmFpbnQgbm9kZQogICAgICAgICAgICAgc2VsZi5jb2x1bW5fdGVtcGxh dGVfcGF0aCA9ICdjb2x1bW5zL3NxbC8jezB9IycuZm9ybWF0KHZlcikKLSAgICAgICAgICAgIHNl bGYuY2hlY2tfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoID0gY29tcGlsZV90ZW1wbGF0ZV9wYXRo KAotICAgICAgICAgICAgICAgICdjaGVja19jb25zdHJhaW50L3NxbCcsIHNlcnZlcl90eXBlLCB2 ZXIpCi0gICAgICAgICAgICBzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgg PSBjb21waWxlX3RlbXBsYXRlX3BhdGgoCi0gICAgICAgICAgICAgICAgJ2V4Y2x1c2lvbl9jb25z dHJhaW50L3NxbCcsIHNlcnZlcl90eXBlLCB2ZXIpCi0KLSAgICAgICAgICAgICMgVGVtcGxhdGUg Zm9yIFBLICYgVW5pcXVlIGNvbnN0cmFpbnQgbm9kZQotICAgICAgICAgICAgc2VsZi5pbmRleF9j b25zdHJhaW50X3RlbXBsYXRlX3BhdGggPSAnaW5kZXhfY29uc3RyYWludC9zcWwvI3swfSMnXAot ICAgICAgICAgICAgICAgIC5mb3JtYXQodmVyKQotCi0gICAgICAgICAgICAjIFRlbXBsYXRlIGZv ciBmb3JlaWduIGtleSBjb25zdHJhaW50IG5vZGUKLSAgICAgICAgICAgIHNlbGYuZm9yZWlnbl9r ZXlfdGVtcGxhdGVfcGF0aCA9IGNvbXBpbGVfdGVtcGxhdGVfcGF0aCgKLSAgICAgICAgICAgICAg ICAnZm9yZWlnbl9rZXkvc3FsJywgc2VydmVyX3R5cGUsIHZlcikKIAogICAgICAgICAgICAgIyBU ZW1wbGF0ZSBmb3IgaW5kZXggbm9kZQogICAgICAgICAgICAgc2VsZi5pbmRleF90ZW1wbGF0ZV9w YXRoID0gY29tcGlsZV90ZW1wbGF0ZV9wYXRoKApAQCAtMTU5LDQ4ICsxNDksNiBAQCBjbGFzcyBC YXNlVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKIAogICAg ICAgICByZXR1cm4gd3JhcAogCi0gICAgZGVmIGdldF90cmlnZ2VyX2Z1bmN0aW9uX3NjaGVtYShz ZWxmLCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1 cm4gdHJpZ2dlciBmdW5jdGlvbiB3aXRoIHNjaGVtYSBuYW1lCi0gICAgICAgICIiIgotICAgICAg ICAjIElmIGxhbmd1YWdlIGlzICdlZGJzcGwnIHRoZW4gdHJpZ2dlciBmdW5jdGlvbiBzaG91bGQg YmUKLSAgICAgICAgIyAnSW5saW5lIEVEQi1TUEwnIGVsc2Ugd2Ugd2lsbCBmaW5kIHRoZSB0cmln Z2VyIGZ1bmN0aW9uCi0gICAgICAgICMgd2l0aCBzY2hlbWEgbmFtZS4KLSAgICAgICAgaWYgZGF0 YVsnbGFubmFtZSddID09ICdlZGJzcGwnOgotICAgICAgICAgICAgZGF0YVsndGZ1bmN0aW9uJ10g PSAnSW5saW5lIEVEQi1TUEwnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAg ICAgIFtzZWxmLnRyaWdnZXJfdGVtcGxhdGVfcGF0aCwgJ2dldF90cmlnZ2VyZnVuY3Rpb25zLnNx bCddCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICB0Z2ZvaWQ9ZGF0YVsndGdm b2lkJ10sCi0gICAgICAgICAgICAgICAgc2hvd19zeXN0ZW1fb2JqZWN0cz1zZWxmLmJsdWVwcmlu dC5zaG93X3N5c3RlbV9vYmplY3RzCi0gICAgICAgICAgICApCi0KLSAgICAgICAgICAgIHN0YXR1 cywgcmVzdWx0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCi0gICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzdWx0KQotCi0gICAgICAgICAgICAjIFVwZGF0ZSB0aGUgdHJpZ2dlciBmdW5j dGlvbiB3aGljaCB3ZSBoYXZlIGZldGNoZWQgd2l0aAotICAgICAgICAgICAgIyBzY2hlbWEgbmFt ZQotICAgICAgICAgICAgaWYgJ3Jvd3MnIGluIHJlc3VsdCBhbmQgbGVuKHJlc3VsdFsncm93cydd KSA+IDAgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgJ3RmdW5jdGlvbnMnIGluIHJlc3VsdFsn cm93cyddWzBdOgotICAgICAgICAgICAgICAgIGRhdGFbJ3RmdW5jdGlvbiddID0gcmVzdWx0Wydy b3dzJ11bMF1bJ3RmdW5jdGlvbnMnXQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIF9m b3JtYXRfYXJncyhzZWxmLCBhcmdzKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rp b24gd2lsbCBmb3JtYXQgYXJndW1lbnRzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBh cmdzOiBBcmd1bWVudHMKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgRm9ybWF0ZWQg YXJndW1lbnRzIGZvciBmdW5jdGlvbgotICAgICAgICAiIiIKLSAgICAgICAgZm9ybWF0dGVkX2Fy Z3MgPSBbIid7MH0nIi5mb3JtYXQoYXJnKSBmb3IgYXJnIGluIGFyZ3NdCi0gICAgICAgIHJldHVy biAnLCAnLmpvaW4oZm9ybWF0dGVkX2FyZ3MpCi0KICAgICBkZWYgX2NvbHVtbnNfZm9ybWF0dGVy KHNlbGYsIHRpZCwgZGF0YSk6CiAgICAgICAgICIiIgogICAgICAgICBBcmdzOgpAQCAtMzI0LDI0 NyArMjcyLDYgQEAgY2xhc3MgQmFzZVRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIEJhc2VQYXJ0 aXRpb25UYWJsZSk6CiAKICAgICAgICAgcmV0dXJuIGRhdGEKIAotICAgIGRlZiBfaW5kZXhfY29u c3RyYWludHNfZm9ybWF0dGVyKHNlbGYsIGRpZCwgdGlkLCBkYXRhKToKLSAgICAgICAgIiIiCi0g ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICB0aWQ6IFRhYmxlIE9JRAotICAgICAgICAgICAgZGF0 YTogZGljdCBvZiBxdWVyeSByZXN1bHQKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAg SXQgd2lsbCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKLSAgICAgICAg ICAgIGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0IGZvciBpbmRleCBjb25zdHJhaW50IG5vZGUK LSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBXZSB3aWxsIGZldGNoIGFsbCB0aGUgaW5kZXggY29u c3RyYWludHMgZm9yIHRoZSB0YWJsZQotICAgICAgICBpbmRleF9jb25zdHJhaW50cyA9IHsKLSAg ICAgICAgICAgICdwJzogJ3ByaW1hcnlfa2V5JywgJ3UnOiAndW5pcXVlX2NvbnN0cmFpbnQnCi0g ICAgICAgIH0KLQotICAgICAgICBmb3IgY3R5cGUgaW4gaW5kZXhfY29uc3RyYWludHMua2V5cygp OgotICAgICAgICAgICAgZGF0YVtpbmRleF9jb25zdHJhaW50c1tjdHlwZV1dID0gW10KLQotICAg ICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICIvIi5qb2lu KAotICAgICAgICAgICAgICAgICAgICBbc2VsZi5pbmRleF9jb25zdHJhaW50X3RlbXBsYXRlX3Bh dGgsICdwcm9wZXJ0aWVzLnNxbCddCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAg ICBkaWQ9ZGlkLAotICAgICAgICAgICAgICAgIHRpZD10aWQsCi0gICAgICAgICAgICAgICAgY29u c3RyYWludF90eXBlPWN0eXBlCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQotCi0gICAgICAgICAgICBpZiBub3Qgc3Rh dHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQotCi0gICAgICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cyddOgotICAgICAgICAg ICAgICAgIHJlc3VsdCA9IHJvdwotICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgKLSAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuaW5kZXhfY29uc3RyYWludF90 ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb25zdHJh aW50X2NvbHMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICBjaWQ9cm93WydvaWQnXSwKLSAg ICAgICAgICAgICAgICAgICAgY29sY250PXJvd1snY29sX2NvdW50J10pCi0gICAgICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQotICAgICAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICAgICAgY29sdW1ucyA9 IFtdCi0gICAgICAgICAgICAgICAgZm9yIHIgaW4gcmVzWydyb3dzJ106Ci0gICAgICAgICAgICAg ICAgICAgIGNvbHVtbnMuYXBwZW5kKHsiY29sdW1uIjogclsnY29sdW1uJ10uc3RyaXAoJyInKX0p Ci0KLSAgICAgICAgICAgICAgICByZXN1bHRbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKLQotICAgICAg ICAgICAgICAgICMgSU5DTFVERSBjbGF1c2UgaW4gaW5kZXggaXMgc3VwcG9ydGVkIGZyb20gUEct MTErCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5tYW5hZ2VyLnZlcnNpb24gPj0gMTEwMDAwOgot ICAgICAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAg ICAgICAgICAgICAiLyIuam9pbihbc2VsZi5pbmRleF9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50X2luY2x1 ZGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgY2lkPXJvd1snb2lkJ10pCi0gICAg ICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwp Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAg ICAgICAgICAgICAgICAgIHJlc3VsdFsnaW5jbHVkZSddID0gW2NvbFsnY29sbmFtZSddIGZvciBj b2wgaW4gcmVzWydyb3dzJ11dCi0KLSAgICAgICAgICAgICAgICAjIElmIG5vdCBleGlzdHMgdGhl biBjcmVhdGUgbGlzdCBhbmQvb3IgYXBwZW5kIGludG8KLSAgICAgICAgICAgICAgICAjIGV4aXN0 aW5nIGxpc3QgWyBBZGRpbmcgaW50byBtYWluIGRhdGEgZGljdF0KLSAgICAgICAgICAgICAgICBk YXRhLnNldGRlZmF1bHQoaW5kZXhfY29uc3RyYWludHNbY3R5cGVdLCBbXSkuYXBwZW5kKHJlc3Vs dCkKLQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIF9mb3JlaWduX2tleV9mb3JtYXR0 ZXIoc2VsZiwgdGlkLCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg ICAgICB0aWQ6IFRhYmxlIE9JRAotICAgICAgICAgICAgZGF0YTogZGljdCBvZiBxdWVyeSByZXN1 bHQKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgSXQgd2lsbCByZXR1cm4gZm9ybWF0 dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKLSAgICAgICAgICAgIGFzIHBlciBjbGllbnQgbW9k ZWwgZm9ybWF0IGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IG5vZGUKLSAgICAgICAgIiIiCi0K LSAgICAgICAgIyBXZSB3aWxsIGZldGNoIGFsbCB0aGUgaW5kZXggY29uc3RyYWludHMgZm9yIHRo ZSB0YWJsZQotICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuZm9y ZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aWQ9dGlkKQotCi0gICAgICAgIHN0YXR1cywgcmVzdWx0ID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChzcWwpCi0KLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzdWx0KQotCi0gICAgICAgIGZvciBmayBp biByZXN1bHRbJ3Jvd3MnXToKLQotICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWludF9jb2xzLnNxbCddKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGtleXM9emlwKGZrWydjb25ma2V5J10sIGZrWydjb25rZXkn XSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZnJlbGlkPWZrWydjb25m cmVsaWQnXSkKLQotICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KHNxbCkKLQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAg Y29sdW1ucyA9IFtdCi0gICAgICAgICAgICBjb2xzID0gW10KLSAgICAgICAgICAgIGZvciByb3cg aW4gcmVzWydyb3dzJ106Ci0gICAgICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQoeyJsb2NhbF9j b2x1bW4iOiByb3dbJ2NvbmF0dG5hbWUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgInJlZmVyZW5jZXMiOiBma1snY29uZnJlbGlkJ10sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJyZWZlcmVuY2VkIjogcm93Wydjb25mYXR0bmFtZSddfSkKLSAgICAgICAgICAg ICAgICBjb2xzLmFwcGVuZChyb3dbJ2NvbmF0dG5hbWUnXSkKLQotICAgICAgICAgICAgZmtbJ2Nv bHVtbnMnXSA9IGNvbHVtbnMKLQotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9ZmtbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNl cyddKQotCi0gICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFy cmF5KFNRTCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQotCi0gICAgICAgICAgICBm a1sncmVtb3RlX3NjaGVtYSddID0gcnNldFsncm93cyddWzBdWydzY2hlbWEnXQotICAgICAgICAg ICAgZmtbJ3JlbW90ZV90YWJsZSddID0gcnNldFsncm93cyddWzBdWyd0YWJsZSddCi0KLSAgICAg ICAgICAgIGNvdmVyaW5naW5kZXggPSBzZWxmLnNlYXJjaF9jb3ZlcmluZ2luZGV4KHRpZCwgY29s cykKLQotICAgICAgICAgICAgZmtbJ2NvdmVyaW5naW5kZXgnXSA9IGNvdmVyaW5naW5kZXgKLSAg ICAgICAgICAgIGlmIGNvdmVyaW5naW5kZXg6Ci0gICAgICAgICAgICAgICAgZmtbJ2F1dG9pbmRl eCddID0gVHJ1ZQotICAgICAgICAgICAgICAgIGZrWydoYXNpbmRleCddID0gVHJ1ZQotICAgICAg ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBma1snYXV0b2luZGV4J10gPSBGYWxzZQotICAg ICAgICAgICAgICAgIGZrWydoYXNpbmRleCddID0gRmFsc2UKLSAgICAgICAgICAgICMgSWYgbm90 IGV4aXN0cyB0aGVuIGNyZWF0ZSBsaXN0IGFuZC9vciBhcHBlbmQgaW50bwotICAgICAgICAgICAg IyBleGlzdGluZyBsaXN0IFsgQWRkaW5nIGludG8gbWFpbiBkYXRhIGRpY3RdCi0gICAgICAgICAg ICBkYXRhLnNldGRlZmF1bHQoJ2ZvcmVpZ25fa2V5JywgW10pLmFwcGVuZChmaykKLQotICAgICAg ICByZXR1cm4gZGF0YQotCi0gICAgZGVmIF9jaGVja19jb25zdHJhaW50X2Zvcm1hdHRlcihzZWxm LCB0aWQsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHRp ZDogVGFibGUgT0lECi0gICAgICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAotCi0g ICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0 cHV0IG9mIHF1ZXJ5IHJlc3VsdAotICAgICAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3Jt YXQgZm9yIGNoZWNrIGNvbnN0cmFpbnQgbm9kZQotICAgICAgICAiIiIKLQotICAgICAgICAjIFdl IHdpbGwgZmV0Y2ggYWxsIHRoZSBpbmRleCBjb25zdHJhaW50cyBmb3IgdGhlIHRhYmxlCi0gICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5jaGVja19jb25zdHJhaW50 X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRp ZCkKLQotICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQot Ci0gICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLSAgICAgICAgIyBJZiBub3QgZXhpc3RzIHRoZW4gY3Jl YXRlIGxpc3QgYW5kL29yIGFwcGVuZCBpbnRvCi0gICAgICAgICMgZXhpc3RpbmcgbGlzdCBbIEFk ZGluZyBpbnRvIG1haW4gZGF0YSBkaWN0XQotCi0gICAgICAgIGRhdGFbJ2NoZWNrX2NvbnN0cmFp bnQnXSA9IHJlc1sncm93cyddCi0KLSAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgIGRlZiBfZXhj bHVzaW9uX2NvbnN0cmFpbnRfZm9ybWF0dGVyKHNlbGYsIGRpZCwgdGlkLCBkYXRhKToKLSAgICAg ICAgIiIiCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICB0aWQ6IFRhYmxlIE9JRAotICAgICAg ICAgICAgZGF0YTogZGljdCBvZiBxdWVyeSByZXN1bHQKLQotICAgICAgICBSZXR1cm5zOgotICAg ICAgICAgICAgSXQgd2lsbCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQK LSAgICAgICAgICAgIGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0IGZvciBleGNsdXNpb24gY29u c3RyYWludCBub2RlCi0gICAgICAgICIiIgotCi0gICAgICAgICMgV2Ugd2lsbCBmZXRjaCBhbGwg dGhlIGluZGV4IGNvbnN0cmFpbnRzIGZvciB0aGUgdGFibGUKLSAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKAotICAgICAgICAgICAgIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAgW3NlbGYu ZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10KLSAg ICAgICAgICAgICksCi0gICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkCi0gICAgICAgICkKLQot ICAgICAgICBzdGF0dXMsIHJlc3VsdCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQotCi0g ICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlc3VsdCkKLQotICAgICAgICBmb3IgZXggaW4gcmVzdWx0Wydyb3dz J106Ci0KLSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAg ICAgICAgICAgICBbc2VsZi5leGNsdXNpb25fY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAotICAg ICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRfY29scy5zcWwnXSksCi0gICAgICAgICAgICAg ICAgY2lkPWV4WydvaWQnXSwKLSAgICAgICAgICAgICAgICBjb2xjbnQ9ZXhbJ2NvbF9jb3VudCdd KQotCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3Fs KQotCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICBjb2x1bW5z ID0gW10KLSAgICAgICAgICAgIGZvciByb3cgaW4gcmVzWydyb3dzJ106Ci0gICAgICAgICAgICAg ICAgaWYgcm93WydvcHRpb25zJ10gJiAxOgotICAgICAgICAgICAgICAgICAgICBvcmRlciA9IEZh bHNlCi0gICAgICAgICAgICAgICAgICAgIG51bGxzX29yZGVyID0gVHJ1ZSBpZiAocm93WydvcHRp b25zJ10gJiAyKSBlbHNlIEZhbHNlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg ICAgICAgICAgb3JkZXIgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIG51bGxzX29yZGVyID0g VHJ1ZSBpZiAocm93WydvcHRpb25zJ10gJiAyKSBlbHNlIEZhbHNlCi0KLSAgICAgICAgICAgICAg ICBjb2x1bW5zLmFwcGVuZCh7ImNvbHVtbiI6IHJvd1snY29sZGVmJ10uc3RyaXAoJyInKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJfY2xhc3MiOiByb3dbJ29wY25hbWUn XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZGVyIjogb3JkZXIsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJudWxsc19vcmRlciI6IG51bGxzX29yZGVyLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3BlcmF0b3IiOiByb3dbJ29wcm5hbWUn XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbF90eXBlIjogcm93WydkYXRh dHlwZSddCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCi0KLSAgICAgICAgICAg IGV4Wydjb2x1bW5zJ10gPSBjb2x1bW5zCi0KLSAgICAgICAgICAgICMgSU5DTFVERSBjbGF1c2Ug aW4gaW5kZXggaXMgc3VwcG9ydGVkIGZyb20gUEctMTErCi0gICAgICAgICAgICBpZiBzZWxmLm1h bmFnZXIudmVyc2lvbiA+PSAxMTAwMDA6Ci0gICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3Rl bXBsYXRlKAotICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5leGNsdXNpb25fY29u c3RyYWludF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dl dF9jb25zdHJhaW50X2luY2x1ZGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICBjaWQ9ZXhb J29pZCddKQotICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChzcWwpCi0KLSAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAg ICAgICAgICAgICAgIGV4WydpbmNsdWRlJ10gPSBbY29sWydjb2xuYW1lJ10gZm9yIGNvbCBpbiBy ZXNbJ3Jvd3MnXV0KLQotICAgICAgICAgICAgIyBJZiBub3QgZXhpc3RzIHRoZW4gY3JlYXRlIGxp c3QgYW5kL29yIGFwcGVuZCBpbnRvCi0gICAgICAgICAgICAjIGV4aXN0aW5nIGxpc3QgWyBBZGRp bmcgaW50byBtYWluIGRhdGEgZGljdF0KLSAgICAgICAgICAgIGRhdGEuc2V0ZGVmYXVsdCgnZXhj bHVkZV9jb25zdHJhaW50JywgW10pLmFwcGVuZChleCkKLQotICAgICAgICByZXR1cm4gZGF0YQot CiAgICAgZGVmIF9mb3JtYXR0ZXIoc2VsZiwgZGlkLCBzY2lkLCB0aWQsIGRhdGEpOgogICAgICAg ICAiIiIKICAgICAgICAgQXJnczoKQEAgLTY4MCwxMCArMzg3LDM2IEBAIGNsYXNzIEJhc2VUYWJs ZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBCYXNlUGFydGl0aW9uVGFibGUpOgogICAgICAgICAgICAg ZGF0YSA9IHNlbGYuX2NvbHVtbnNfZm9ybWF0dGVyKHRpZCwgZGF0YSkKIAogICAgICAgICAjIEhl cmUgd2Ugd2lsbCBhZGQgY29uc3RyYWludCBpbiBvdXIgb3V0cHV0Ci0gICAgICAgIGRhdGEgPSBz ZWxmLl9pbmRleF9jb25zdHJhaW50c19mb3JtYXR0ZXIoZGlkLCB0aWQsIGRhdGEpCi0gICAgICAg IGRhdGEgPSBzZWxmLl9mb3JlaWduX2tleV9mb3JtYXR0ZXIodGlkLCBkYXRhKQotICAgICAgICBk YXRhID0gc2VsZi5fY2hlY2tfY29uc3RyYWludF9mb3JtYXR0ZXIodGlkLCBkYXRhKQotICAgICAg ICBkYXRhID0gc2VsZi5fZXhjbHVzaW9uX2NvbnN0cmFpbnRfZm9ybWF0dGVyKGRpZCwgdGlkLCBk YXRhKQorICAgICAgICBpbmRleF9jb25zdHJhaW50cyA9IHsKKyAgICAgICAgICAgICdwJzogJ3By aW1hcnlfa2V5JywgJ3UnOiAndW5pcXVlX2NvbnN0cmFpbnQnCisgICAgICAgIH0KKyAgICAgICAg Zm9yIGN0eXBlIGluIGluZGV4X2NvbnN0cmFpbnRzLmtleXMoKToKKyAgICAgICAgICAgIGRhdGFb aW5kZXhfY29uc3RyYWludHNbY3R5cGVdXSA9IFtdCisgICAgICAgICAgICBzdGF0dXMsIGNvbnN0 cmFpbnRzID0gXAorICAgICAgICAgICAgICAgIGlkeGNvbnNfdXRpbHMuZ2V0X2luZGV4X2NvbnN0 cmFpbnRzKHNlbGYuY29ubiwgZGlkLCB0aWQsIGN0eXBlKQorICAgICAgICAgICAgaWYgc3RhdHVz OgorICAgICAgICAgICAgICAgIGZvciBjb25zIGluIGNvbnN0cmFpbnRzOgorICAgICAgICAgICAg ICAgICAgICBkYXRhLnNldGRlZmF1bHQoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleF9j b25zdHJhaW50c1tjdHlwZV0sIFtdKS5hcHBlbmQoY29ucykKKworICAgICAgICAjIEFkZCBGb3Jl aWduIEtleXMKKyAgICAgICAgc3RhdHVzLCBmb3JlaWduX2tleXMgPSBma2V5X3V0aWxzLmdldF9m b3JlaWduX2tleXMoc2VsZi5jb25uLCB0aWQpCisgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAg ICAgIGZvciBmayBpbiBmb3JlaWduX2tleXM6CisgICAgICAgICAgICAgICAgZGF0YS5zZXRkZWZh dWx0KCdmb3JlaWduX2tleScsIFtdKS5hcHBlbmQoZmspCisKKyAgICAgICAgIyBBZGQgQ2hlY2sg Q29uc3RyYWludHMKKyAgICAgICAgc3RhdHVzLCBjaGVja19jb25zdHJhaW50cyA9IFwKKyAgICAg ICAgICAgIGNoZWNrX3V0aWxzLmdldF9jaGVja19jb25zdHJhaW50cyhzZWxmLmNvbm4sIHRpZCkK KyAgICAgICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgZGF0YVsnY2hlY2tfY29uc3RyYWludCdd ID0gY2hlY2tfY29uc3RyYWludHMKKworICAgICAgICAjIEFkZCBFeGNsdXNpb24gQ29uc3RyYWlu dAorICAgICAgICBzdGF0dXMsIGV4Y2x1c2lvbl9jb25zdHJhaW50cyA9IFwKKyAgICAgICAgICAg IGV4Y2x1c2lvbl91dGlscy5nZXRfZXhjbHVzaW9uX2NvbnN0cmFpbnRzKHNlbGYuY29ubiwgZGlk LCB0aWQpCisgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgIGZvciBleCBpbiBleGNsdXNp b25fY29uc3RyYWludHM6CisgICAgICAgICAgICAgICAgZGF0YS5zZXRkZWZhdWx0KCdleGNsdWRl X2NvbnN0cmFpbnQnLCBbXSkuYXBwZW5kKGV4KQogCiAgICAgICAgIHJldHVybiBkYXRhCiAKQEAg LTkyMCw5MSArNjUzLDE4IEBAIGNsYXNzIEJhc2VUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBC YXNlUGFydGl0aW9uVGFibGUpOgogICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQogCisgICAgICAgICMg RHluYW1pY2FsbHkgbG9hZCBpbmRleCB1dGlscyB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5 LgorICAgICAgICBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0 YWJhc2VzLnNjaGVtYXMuIFwKKyAgICAgICAgICAgIHRhYmxlcy5pbmRleGVzIGltcG9ydCB1dGls cyBhcyBpbmRleF91dGlscwogICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKLQotICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X3RlbXBs YXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdw cm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9 ZGlkLCB0aWQ9dGlkLCBpZHg9cm93WydvaWQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKLQotICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLSAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgIGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBd KQotICAgICAgICAgICAgIyBBZGRpbmcgcGFyZW50IGludG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVz aW5nIGl0IHdoaWxlIGNyZWF0aW5nIHNxbAotICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBz Y2hlbWEKLSAgICAgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSB0YWJsZQotICAgICAgICAgICAgIyBX ZSBhbHNvIG5lZWQgdG8gZmVjdGggY29sdW1ucyBvZiBpbmRleAotICAgICAgICAgICAgU1FMID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGgsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2x1bW5fZGV0YWlscy5z cWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4PXJvd1snb2lkJ10p Ci0gICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNR TCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQotCi0gICAgICAgICAgICAjICdhdHRk ZWYnIGNvbWVzIHdpdGggcXVvdGVzIGZyb20gcXVlcnkgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVt Ci0gICAgICAgICAgICAjICdvcHRpb25zJyB3ZSBuZWVkIHRydWUvZmFsc2UgdG8gcmVuZGVyIHN3 aXRjaAotICAgICAgICAgICAgIyBBU0MoZmFsc2UpL0RFU0ModHJ1ZSkKLSAgICAgICAgICAgIGNv bHVtbnMgPSBbXQotICAgICAgICAgICAgY29scyA9IFtdCi0gICAgICAgICAgICBmb3IgY29sX3Jv dyBpbiByc2V0Wydyb3dzJ106Ci0gICAgICAgICAgICAgICAgIyBXZSBuZWVkIGFsbCBkYXRhIGFz IGNvbGxlY3Rpb24gZm9yIENvbHVtbnNNb2RlbAotICAgICAgICAgICAgICAgICMgT25seSBmb3Ig ZGlzcGxheWluZyBTUUwsIHdlIGNhbiBvbWl0IHN0cmlwIG9uIGNvbG5hbWUKLSAgICAgICAgICAg ICAgICBjb2xzX2RhdGEgPSB7Ci0gICAgICAgICAgICAgICAgICAgICdjb2xuYW1lJzogY29sX3Jv d1snYXR0ZGVmJ10sCi0gICAgICAgICAgICAgICAgICAgICdjb2xsc3BjbmFtZSc6IGNvbF9yb3db J2NvbGxuc3BuYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICdvcF9jbGFzcyc6IGNvbF9yb3db J29wY25hbWUnXSwKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgY29sX3Jv d1snb3B0aW9ucyddWzBdID09ICdERVNDJzoKLSAgICAgICAgICAgICAgICAgICAgY29sc19kYXRh Wydzb3J0X29yZGVyJ10gPSBUcnVlCi0gICAgICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQoY29s c19kYXRhKQotCi0gICAgICAgICAgICAgICAgIyBXZSBuZWVkIHNhbWUgZGF0YSBhcyBzdHJpbmcg dG8gZGlzcGxheSBpbiBwcm9wZXJ0aWVzIHdpbmRvdwotICAgICAgICAgICAgICAgICMgSWYgbXVs dGlwbGUgY29sdW1uIHRoZW4gc2VwYXJhdGUgaXQgYnkgY29sb24KLSAgICAgICAgICAgICAgICBj b2xzX3N0ciA9IGNvbF9yb3dbJ2F0dGRlZiddCi0gICAgICAgICAgICAgICAgaWYgY29sX3Jvd1sn Y29sbG5zcG5hbWUnXToKLSAgICAgICAgICAgICAgICAgICAgY29sc19zdHIgKz0gJyBDT0xMQVRF ICcgKyBjb2xfcm93Wydjb2xsbnNwbmFtZSddCi0gICAgICAgICAgICAgICAgaWYgY29sX3Jvd1sn b3BjbmFtZSddOgotICAgICAgICAgICAgICAgICAgICBjb2xzX3N0ciArPSAnICcgKyBjb2xfcm93 WydvcGNuYW1lJ10KLSAgICAgICAgICAgICAgICBpZiBjb2xfcm93WydvcHRpb25zJ11bMF0gPT0g J0RFU0MnOgotICAgICAgICAgICAgICAgICAgICBjb2xzX3N0ciArPSAnIERFU0MnCi0gICAgICAg ICAgICAgICAgY29scy5hcHBlbmQoY29sc19zdHIpCi0KLSAgICAgICAgICAgICMgUHVzaCBhcyBj b2xsZWN0aW9uCi0gICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2x1bW5zCi0gICAgICAg ICAgICAjIFB1c2ggYXMgc3RyaW5nCi0gICAgICAgICAgICBkYXRhWydjb2xzJ10gPSAnLCAnLmpv aW4oY29scykKLQotICAgICAgICAgICAgaWYgc2VsZi5tYW5hZ2VyLnZlcnNpb24gPj0gMTEwMDAw OgotICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAg ICAgICAgIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdpbmNsdWRlX2RldGFpbHMuc3FsJ10pLAotICAgICAgICAgICAgICAg ICAgICBpZHg9cm93WydvaWQnXSkKLSAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX2RpY3QoU1FMKQotCi0gICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCi0KLSAgICAgICAgICAgICAgICBkYXRhWydpbmNsdWRlJ10gPSBbY29sWydjb2xuYW1l J10gZm9yIGNvbCBpbiByZXNbJ3Jvd3MnXV0KLQotICAgICAgICAgICAgc3FsX2hlYWRlciA9IHUi XG4tLSBJbmRleDogezB9XG5cbi0tICIuZm9ybWF0KGRhdGFbJ25hbWUnXSkKLQotICAgICAgICAg ICAgc3FsX2hlYWRlciArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVt cGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnZGVsZXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCi0KLSAgICAgICAgICAgIGluZGV4 X3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRo LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3Jl YXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh PWRhdGEsIGNvbm49c2VsZi5jb25uKQotICAgICAgICAgICAgaW5kZXhfc3FsICs9ICJcbiIKLSAg ICAgICAgICAgIGluZGV4X3NxbCArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5k ZXhfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdhbHRlci5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgICAgICBpbmRl eF9zcWwgPSBpbmRleF91dGlscy5nZXRfcmV2ZXJzZV9lbmdpbmVlcmVkX3NxbCgKKyAgICAgICAg ICAgICAgICBzZWxmLmNvbm4sIHNjaGVtYSwgdGFibGUsIGRpZCwgdGlkLCByb3dbJ29pZCddLAor ICAgICAgICAgICAgICAgIHNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAgICAgIGluZGV4X3Nx bCA9IHUiXG4iICsgaW5kZXhfc3FsCiAKICAgICAgICAgICAgICMgQWRkIGludG8gbWFpbiBzcWwK ICAgICAgICAgICAgIGluZGV4X3NxbCA9IHJlLnN1YignXG57Mix9JywgJ1xuXG4nLCBpbmRleF9z cWwpCi0gICAgICAgICAgICBtYWluX3NxbC5hcHBlbmQoc3FsX2hlYWRlciArICdcblxuJyArIGlu ZGV4X3NxbC5zdHJpcCgnXG4nKSkKKyAgICAgICAgICAgIG1haW5fc3FsLmFwcGVuZChpbmRleF9z cWwpCiAKICAgICAgICAgIiIiCiAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKQEAgLTEwMTgsNjkgKzY3OCwxMCBAQCBjbGFzcyBCYXNlVGFibGVWaWV3KFBH Q2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKIAogICAgICAgICBmb3Igcm93IGlu IHJzZXRbJ3Jvd3MnXToKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0aWQ9dGlkLCB0cmlkPXJvd1snb2lkJ10sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCi0K LSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCi0g ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICBpZiBsZW4ocmVzWydy b3dzJ10pID09IDA6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGRhdGEg PSBkaWN0KHJlc1sncm93cyddWzBdKQotICAgICAgICAgICAgIyBBZGRpbmcgcGFyZW50IGludG8g ZGF0YSBkaWN0LCB3aWxsIGJlIHVzaW5nIGl0IHdoaWxlIGNyZWF0aW5nIHNxbAotICAgICAgICAg ICAgZGF0YVsnc2NoZW1hJ10gPSBzY2hlbWEKLSAgICAgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSB0 YWJsZQotCi0gICAgICAgICAgICBkYXRhID0gc2VsZi5nZXRfdHJpZ2dlcl9mdW5jdGlvbl9zY2hl bWEoZGF0YSkKLQotICAgICAgICAgICAgaWYgbGVuKGRhdGFbJ2N1c3RvbV90Z2FyZ3MnXSkgPiAx OgotICAgICAgICAgICAgICAgICMgV2Uga25vdyB0aGF0IHRyaWdnZXIgaGFzIG1vcmUgdGhhbiAx IGFyZ3VtZW50LCBsZXQncwotICAgICAgICAgICAgICAgICMgam9pbiB0aGVtCi0gICAgICAgICAg ICAgICAgZGF0YVsndGdhcmdzJ10gPSBzZWxmLl9mb3JtYXRfYXJncyhkYXRhWydjdXN0b21fdGdh cmdzJ10pCi0KLSAgICAgICAgICAgIGlmIGxlbihkYXRhWyd0Z2F0dHInXSkgPj0gMToKLSAgICAg ICAgICAgICAgICBjb2x1bW5zID0gJywgJy5qb2luKGRhdGFbJ3RnYXR0ciddLnNwbGl0KCcgJykp Ci0KLSAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dHJpZ2dlcl90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9jb2x1bW5zLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgY2xpc3Q9Y29sdW1ucykKLQotICAgICAgICAgICAg ICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLSAgICAgICAgICAgICAgICAjICd0Z2F0 dHInIGNvbnRhaW5zIGxpc3Qgb2YgY29sdW1ucyBmcm9tIHRhYmxlIHVzZWQgaW4gdHJpZ2dlcgot ICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBbXQotCi0gICAgICAgICAgICAgICAgZm9yIGNvbF9y b3cgaW4gcnNldFsncm93cyddOgotICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZChj b2xfcm93WyduYW1lJ10pCi0KLSAgICAgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2x1 bW5zCi0KLSAgICAgICAgICAgIGRhdGEgPSB0cmlnZ2VyX2RlZmluaXRpb24oZGF0YSkKLQotICAg ICAgICAgICAgc3FsX2hlYWRlciA9IHUiXG4tLSBUcmlnZ2VyOiB7MH1cblxuLS0gIi5mb3JtYXQo ZGF0YVsnbmFtZSddKQotCi0gICAgICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2Vs Zi5jb25uKQotCi0gICAgICAgICAgICAjIElmIHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0IHdo aWNoIGRvIG5vdCBoYXZlIGRpZAotICAgICAgICAgICAgdHJpZ2dlcl9zcWwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudHJpZ2dlcl90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25u PXNlbGYuY29ubikKLQotICAgICAgICAgICAgdHJpZ2dlcl9zcWwgPSBzcWxfaGVhZGVyICsgJ1xu XG4nICsgdHJpZ2dlcl9zcWwuc3RyaXAoJ1xuJykKLQotICAgICAgICAgICAgIyBJZiB0cmlnZ2Vy IGlzIGRpc2FibGVkIHRoZW4gYWRkIHNxbCBjb2RlIGZvciB0aGUgc2FtZQotICAgICAgICAgICAg aWYgZGF0YVsnaXNfZW5hYmxlX3RyaWdnZXInXSAhPSAnTyc6Ci0gICAgICAgICAgICAgICAgdHJp Z2dlcl9zcWwgKz0gJ1xuXG4nCi0gICAgICAgICAgICAgICAgdHJpZ2dlcl9zcWwgKz0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50cmlnZ2VyX3Rl bXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICdlbmFibGVfZGlzYWJsZV90cmlnZ2Vy LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikK KyAgICAgICAgICAgIHRyaWdnZXJfc3FsID0gdHJpZ2dlcl91dGlscy5nZXRfcmV2ZXJzZV9lbmdp bmVlcmVkX3NxbCgKKyAgICAgICAgICAgICAgICBzZWxmLmNvbm4sIHNjaGVtYSwgdGFibGUsIHRp ZCwgcm93WydvaWQnXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGxhc3RzeXNvaWQsIHNlbGYu Ymx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMpCisgICAgICAgICAgICB0cmlnZ2VyX3NxbCA9 IHUiXG4iICsgdHJpZ2dlcl9zcWwKIAogICAgICAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAog ICAgICAgICAgICAgdHJpZ2dlcl9zcWwgPSByZS5zdWIoJ1xuezIsfScsICdcblxuJywgdHJpZ2dl cl9zcWwpCkBAIC0xMTAyLDY1ICs3MDMsMTEgQEAgY2xhc3MgQmFzZVRhYmxlVmlldyhQR0NoaWxk Tm9kZVZpZXcsIEJhc2VQYXJ0aXRpb25UYWJsZSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQogCiAgICAgICAgICAgICBmb3Igcm93 IGluIHJzZXRbJ3Jvd3MnXToKLSAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgIFtzZWxmLmNvbXBvdW5kX3RyaWdnZXJfdGVt cGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICB0aWQ9 dGlkLCB0cmlkPXJvd1snb2lkJ10sCi0gICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9 c2VsZi5kYXRsYXN0c3lzb2lkKQotCi0gICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLSAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgot ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKLQotICAgICAgICAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKLSAgICAg ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBkYXRhID0gZGljdChyZXNb J3Jvd3MnXVswXSkKLSAgICAgICAgICAgICAgICAjIEFkZGluZyBwYXJlbnQgaW50byBkYXRhIGRp Y3QsIHdpbGwgYmUgdXNpbmcgaXQgd2hpbGUKLSAgICAgICAgICAgICAgICAjIGNyZWF0aW5nIHNx bAotICAgICAgICAgICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2NoZW1hCi0gICAgICAgICAgICAg ICAgZGF0YVsndGFibGUnXSA9IHRhYmxlCi0KLSAgICAgICAgICAgICAgICBpZiBsZW4oZGF0YVsn dGdhdHRyJ10pID49IDE6Ci0gICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgPSAnLCAnLmpvaW4o ZGF0YVsndGdhdHRyJ10uc3BsaXQoJyAnKSkKLQotICAgICAgICAgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5j b21wb3VuZF90cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg J2dldF9jb2x1bW5zLnNxbCddKSwgdGlkPXRpZCwgY2xpc3Q9Y29sdW1ucykKLQotICAgICAgICAg ICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkK LSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLSAgICAgICAg ICAgICAgICAgICAgIyAndGdhdHRyJyBjb250YWlucyBsaXN0IG9mIGNvbHVtbnMgZnJvbSB0YWJs ZQotICAgICAgICAgICAgICAgICAgICAjIHVzZWQgaW4gdHJpZ2dlcgotICAgICAgICAgICAgICAg ICAgICBjb2x1bW5zID0gW10KLQotICAgICAgICAgICAgICAgICAgICBmb3IgY29sX3JvdyBpbiBy c2V0Wydyb3dzJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZChjb2xf cm93WyduYW1lJ10pCi0KLSAgICAgICAgICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddID0gY29s dW1ucwotCi0gICAgICAgICAgICAgICAgZGF0YSA9IHRyaWdnZXJfZGVmaW5pdGlvbihkYXRhKQot ICAgICAgICAgICAgICAgIHNxbF9oZWFkZXIgPSBcCi0gICAgICAgICAgICAgICAgICAgIHUiXG4t LSBDb21wb3VuZCBUcmlnZ2VyOiB7MH1cblxuLS0gIi5mb3JtYXQoZGF0YVsnbmFtZSddKQotCi0g ICAgICAgICAgICAgICAgc3FsX2hlYWRlciArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0g ICAgICAgICAgICAgICAgICAgIFtzZWxmLmNvbXBvdW5kX3RyaWdnZXJfdGVtcGxhdGVfcGF0aCwg J2RlbGV0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxm LmNvbm4pCi0KLSAgICAgICAgICAgICAgICAjIElmIHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0 IHdoaWNoIGRvIG5vdCBoYXZlIGRpZAotICAgICAgICAgICAgICAgIGNvbXBvdW5kX3RyaWdnZXJf c3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgICAgICBbc2Vs Zi5jb21wb3VuZF90cmlnZ2VyX3RlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAotICAgICAg ICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQotCiAgICAgICAgICAgICAg ICAgY29tcG91bmRfdHJpZ2dlcl9zcWwgPSBcCi0gICAgICAgICAgICAgICAgICAgIHNxbF9oZWFk ZXIgKyAnXG5cbicgKyBjb21wb3VuZF90cmlnZ2VyX3NxbC5zdHJpcCgnXG4nKQotCi0gICAgICAg ICAgICAgICAgIyBJZiB0cmlnZ2VyIGlzIGRpc2FibGVkIHRoZW4gYWRkIHNxbCBjb2RlIGZvciB0 aGUgc2FtZQotICAgICAgICAgICAgICAgIGlmIGRhdGFbJ2lzX2VuYWJsZV90cmlnZ2VyJ10gIT0g J08nOgotICAgICAgICAgICAgICAgICAgICBjb21wb3VuZF90cmlnZ2VyX3NxbCArPSAnXG5cbicK LSAgICAgICAgICAgICAgICAgICAgY29tcG91bmRfdHJpZ2dlcl9zcWwgKz0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY29tcG91bmRfdHJp Z2dlcl90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICdlbmFibGVfZGlz YWJsZV90cmlnZ2VyLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwg Y29ubj1zZWxmLmNvbm4pCisgICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kX3RyaWdnZXJfdXRp bHMuZ2V0X3JldmVyc2VfZW5naW5lZXJlZF9zcWwoCisgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmNvbm4sIHNjaGVtYSwgdGFibGUsIHRpZCwgcm93WydvaWQnXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAgICAgICAgICBjb21wb3VuZF90 cmlnZ2VyX3NxbCA9IHUiXG4iICsgY29tcG91bmRfdHJpZ2dlcl9zcWwKIAogICAgICAgICAgICAg ICAgICMgQWRkIGludG8gbWFpbiBzcWwKICAgICAgICAgICAgICAgICBjb21wb3VuZF90cmlnZ2Vy X3NxbCA9IFwKQEAgLTExNzQsNyArNzIxLDcgQEAgY2xhc3MgQmFzZVRhYmxlVmlldyhQR0NoaWxk Tm9kZVZpZXcsIEJhc2VQYXJ0aXRpb25UYWJsZSk6CiAgICAgICAgICIiIgogCiAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgIFtzZWxmLnJ1bGVzX3Rl bXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwgdGlkPXRpZCkKKyAgICAgICAgICAgIFtz ZWxmLnJ1bGVzX3RlbXBsYXRlX3BhdGgsICdub2Rlcy5zcWwnXSksIHRpZD10aWQpCiAKICAgICAg ICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCiAgICAgICAg IGlmIG5vdCBzdGF0dXM6CkBAIC0xMzUxLDM5OSArODk4LDYgQEAgY2xhc3MgQmFzZVRhYmxlVmll dyhQR0NoaWxkTm9kZVZpZXcsIEJhc2VQYXJ0aXRpb25UYWJsZSk6CiAgICAgICAgICAgICAgICAg ZGF0YVsnbmFtZSddID0gc3RyKGRhdGFbJ25hbWUnXSkKICAgICAgICAgcmV0dXJuIGRhdGEKIAot ICAgIGRlZiBnZXRfaW5kZXhfY29uc3RyYWludF9zcWwoc2VsZiwgZGlkLCB0aWQsIGRhdGEpOgot ICAgICAgICAiIiIKLSAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgIHRpZDogVGFibGUgSUQKLSAg ICAgICAgICAgZGF0YTogZGF0YSBkaWN0IGNvbWluZyBmcm9tIHRoZSBjbGllbnQKLQotICAgICAg ICBSZXR1cm5zOgotICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgbW9kaWZpZWQg c3FsIGZvciBpbmRleCBjb25zdHJhaW50cwotICAgICAgICAoUHJpbWFyeSBLZXkgJiBVbmlxdWUp Ci0gICAgICAgICIiIgotICAgICAgICBzcWwgPSBbXQotICAgICAgICAjIFdlIHdpbGwgZmV0Y2gg YWxsIHRoZSBpbmRleCBjb25zdHJhaW50cyBmb3IgdGhlIHRhYmxlCi0gICAgICAgIGluZGV4X2Nv bnN0cmFpbnRzID0gewotICAgICAgICAgICAgJ3AnOiAncHJpbWFyeV9rZXknLCAndSc6ICd1bmlx dWVfY29uc3RyYWludCcKLSAgICAgICAgfQotCi0gICAgICAgIGZvciBjdHlwZSBpbiBpbmRleF9j b25zdHJhaW50cy5rZXlzKCk6Ci0gICAgICAgICAgICAjIENoZWNrIGlmIGNvbnN0cmFpbnQgaXMg aW4gZGF0YQotICAgICAgICAgICAgIyBJZiB5ZXMgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIGZvciBh ZGQvY2hhbmdlL2RlbGV0ZQotICAgICAgICAgICAgaWYgaW5kZXhfY29uc3RyYWludHNbY3R5cGVd IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgY29uc3RyYWludCA9IGRhdGFbaW5kZXhfY29uc3Ry YWludHNbY3R5cGVdXQotICAgICAgICAgICAgICAgICMgSWYgY29uc3RyYWludChzKSBpcy9hcmUg ZGVsZXRlZAotICAgICAgICAgICAgICAgIGlmICdkZWxldGVkJyBpbiBjb25zdHJhaW50OgotICAg ICAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydkZWxldGVkJ106Ci0gICAgICAg ICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAgICAgICAg ICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0KLSAgICAgICAgICAgICAg ICAgICAgICAgICMgU3FsIGZvciBkcm9wCi0gICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBw ZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuaW5kZXhfY29uc3RyYWlu dF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0 ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1z ZWxmLmNvbm4pLnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAg ICAgICAgICAgICBpZiAnY2hhbmdlZCcgaW4gY29uc3RyYWludDoKLSAgICAgICAgICAgICAgICAg ICAgZm9yIGMgaW4gY29uc3RyYWludFsnY2hhbmdlZCddOgotICAgICAgICAgICAgICAgICAgICAg ICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICAgICAg Y1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQotCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9w ZXJ0aWVzX3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiLyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmRleF9jb25zdHJhaW50X3RlbXBsYXRl X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5z cWwnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjaWQ9Y1snb2lkJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RyYWlu dF90eXBlPWN0eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAg ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QocHJvcGVydGllc19z cWwpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQotCi0gICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBdCi0K LSAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgY2hhbmdlcyBhcmUgZnJvbSB0YWJsZSBub2Rl Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAnbmFtZScgbm90IGluIGM6Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgY1snbmFtZSddID0gb2xkX2RhdGFbJ25hbWUnXQotICAgICAgICAg ICAgICAgICAgICAgICAgIyBTcWwgdG8gdXBkYXRlIG9iamVjdAotICAgICAgICAgICAgICAgICAg ICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlu ZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ3VwZGF0ZS5zcWwnXSksIGRhdGE9Yywgb19kYXRhPW9sZF9kYXRhLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykKLSAgICAg ICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gY29u c3RyYWludDoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnYWRkZWQn XToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10K LSAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAg ICAgICAgICAgICAgICAgICAgICAgIyBTcWwgdG8gYWRkIG9iamVjdAotICAgICAgICAgICAgICAg ICAgICAgICAgaWYgc2VsZi52YWxpZGF0ZV9jb25zdHJhaW5zKAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbmRleF9jb25zdHJhaW50c1tjdHlwZV0sIGMpOgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIvIi5qb2luKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxm LmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9YywgY29ubj1zZWxmLmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdHJhaW50X25hbWU9J1BSSU1BUlkgS0VZJwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgY3R5cGUgPT0gJ3AnIGVsc2UgJ1VOSVFVRScKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0 dGV4dCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSBkZWZpbml0aW9u IGluY29tcGxldGUgZm9yIHswfSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnY29uc3RyYWludCcuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZGV4X2NvbnN0cmFpbnRzW2N0eXBlXQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICBpZiBsZW4oc3FsKSA+IDA6Ci0gICAgICAg ICAgICAjIEpvaW4gYWxsIHRoZSBzcWwocykgYXMgc2luZ2xlIHN0cmluZwotICAgICAgICAgICAg cmV0dXJuICdcblxuJy5qb2luKHNxbCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVy biBOb25lCi0KLSAgICBkZWYgZ2V0X2ZvcmVpZ25fa2V5X3NxbChzZWxmLCB0aWQsIGRhdGEpOgot ICAgICAgICAiIiIKLSAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgIHRpZDogVGFibGUgSUQKLSAg ICAgICAgICAgZGF0YTogZGF0YSBkaWN0IGNvbWluZyBmcm9tIHRoZSBjbGllbnQKLQotICAgICAg ICBSZXR1cm5zOgotICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgbW9kaWZpZWQg c3FsIGZvciBmb3JlaWduIGtleQotICAgICAgICAiIiIKLSAgICAgICAgc3FsID0gW10KLSAgICAg ICAgIyBDaGVjayBpZiBjb25zdHJhaW50IGlzIGluIGRhdGEKLSAgICAgICAgIyBJZiB5ZXMgdGhl biB3ZSBuZWVkIHRvIGNoZWNrIGZvciBhZGQvY2hhbmdlL2RlbGV0ZQotICAgICAgICBpZiAnZm9y ZWlnbl9rZXknIGluIGRhdGE6Ci0gICAgICAgICAgICBjb25zdHJhaW50ID0gZGF0YVsnZm9yZWln bl9rZXknXQotICAgICAgICAgICAgIyBJZiBjb25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCi0g ICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4gY29uc3RyYWludDoKLSAgICAgICAgICAgICAgICBm b3IgYyBpbiBjb25zdHJhaW50WydkZWxldGVkJ106Ci0gICAgICAgICAgICAgICAgICAgIGNbJ3Nj aGVtYSddID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9 IGRhdGFbJ25hbWUnXQotCi0gICAgICAgICAgICAgICAgICAgICMgU3FsIGZvciBkcm9wCi0gICAg ICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYu Zm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2RlbGV0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25u PXNlbGYuY29ubikuc3RyaXAoJ1xuJykKLSAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAg ICAgICBpZiAnY2hhbmdlZCcgaW4gY29uc3RyYWludDoKLSAgICAgICAgICAgICAgICBmb3IgYyBp biBjb25zdHJhaW50WydjaGFuZ2VkJ106Ci0gICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSdd ID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFb J25hbWUnXQotCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNfc3FsID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuZm9yZWlnbl9r ZXlfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAg ICAgICAgdGlkPXRpZCwgY2lkPWNbJ29pZCddKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QocHJvcGVydGllc19zcWwpCi0gICAgICAgICAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAgICAgICAg ICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBdCi0gICAgICAgICAgICAgICAgICAgIGlmICduYW1l JyBub3QgaW4gYzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNbJ25hbWUnXSA9IG9sZF9kYXRh WyduYW1lJ10KLQotICAgICAgICAgICAgICAgICAgICAjIFNxbCB0byB1cGRhdGUgb2JqZWN0Ci0g ICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAndXBkYXRlLnNxbCddKSwgZGF0YT1jLCBvX2RhdGE9b2xkX2RhdGEsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpCi0gICAgICAgICAgICAg ICAgICAgICkKLQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi52YWxpZGF0ZV9jb25z dHJhaW5zKCdmb3JlaWduX2tleScsIGMpOgotICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFw cGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlIGZvciBmb3JlaWdu X2tleSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25zdHJhaW50JwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCi0KLSAgICAgICAg ICAgICAgICAgICAgaWYgJ2NvbHVtbnMnIGluIGM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBj b2xzID0gW10KLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2wgaW4gY1snY29sdW1ucydd OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHMuYXBwZW5kKGNvbFsnbG9jYWxfY29s dW1uJ10pCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyaW5naW5kZXggPSBzZWxmLnNl YXJjaF9jb3ZlcmluZ2luZGV4KHRpZCwgY29scykKLQotICAgICAgICAgICAgICAgICAgICAgICAg aWYgY292ZXJpbmdpbmRleCBpcyBOb25lIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2F1dG9pbmRleCcgaW4gYyBhbmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNb J2F1dG9pbmRleCddIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjb3Zlcmlu Z2luZGV4JyBpbiBjIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWydjb3Zl cmluZ2luZGV4J10gIT0gJycpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBl bmQocmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIu am9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3Bh dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZV9pbmRl eC5zcWwnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICksIGRhdGE9YywgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdc bicpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBpZiAnYWRk ZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsn YWRkZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEn XQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0KLSAgICAg ICAgICAgICAgICAgICAgIyBTcWwgdG8gYWRkIG9iamVjdAotICAgICAgICAgICAgICAgICAgICAj IENvbHVtbnMKLQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi52YWxpZGF0ZV9jb25z dHJhaW5zKCdmb3JlaWduX2tleScsIGMpOgotICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFw cGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlIGZvciBmb3JlaWdu X2tleSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25zdHJhaW50JwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCi0KLSAgICAgICAg ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAgICAg ICAgIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuZm9yZWlnbl9r ZXlfdGVtcGxhdGVfcGF0aCwgJ2dldF9wYXJlbnQuc3FsJ10KLSAgICAgICAgICAgICAgICAgICAg ICAgICksIHRpZD1jWydjb2x1bW5zJ11bMF1bJ3JlZmVyZW5jZXMnXQotICAgICAgICAgICAgICAg ICAgICApCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVj dXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yc2V0KQotCi0gICAgICAgICAgICAgICAgICAgIGNbJ3JlbW90ZV9zY2hlbWEnXSA9IHJzZXRb J3Jvd3MnXVswXVsnc2NoZW1hJ10KLSAgICAgICAgICAgICAgICAgICAgY1sncmVtb3RlX3RhYmxl J10gPSByc2V0Wydyb3dzJ11bMF1bJ3RhYmxlJ10KLQotICAgICAgICAgICAgICAgICAgICBzcWwu YXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRl X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3Fs J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNvbm4K LSAgICAgICAgICAgICAgICAgICAgICAgICkuc3RyaXAoJ1xuJykKLSAgICAgICAgICAgICAgICAg ICAgKQotCi0gICAgICAgICAgICAgICAgICAgIGlmIGNbJ2F1dG9pbmRleCddOgotICAgICAgICAg ICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnY3JlYXRlX2luZGV4LnNxbCddKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykKLSAg ICAgICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICBpZiBsZW4oc3FsKSA+IDA6Ci0gICAg ICAgICAgICAjIEpvaW4gYWxsIHRoZSBzcWwocykgYXMgc2luZ2xlIHN0cmluZwotICAgICAgICAg ICAgcmV0dXJuICdcblxuJy5qb2luKHNxbCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJl dHVybiBOb25lCi0KLSAgICBkZWYgZ2V0X2NoZWNrX2NvbnN0cmFpbnRfc3FsKHNlbGYsIHRpZCwg ZGF0YSk6Ci0gICAgICAgICIiIgotICAgICAgICAgQXJnczoKLSAgICAgICAgICAgdGlkOiBUYWJs ZSBJRAotICAgICAgICAgICBkYXRhOiBkYXRhIGRpY3QgY29taW5nIGZyb20gdGhlIGNsaWVudAot Ci0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRl IG1vZGlmaWVkIHNxbCBmb3IgY2hlY2sgY29uc3RyYWludAotICAgICAgICAiIiIKLSAgICAgICAg c3FsID0gW10KLSAgICAgICAgIyBDaGVjayBpZiBjb25zdHJhaW50IGlzIGluIGRhdGEKLSAgICAg ICAgIyBJZiB5ZXMgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIGZvciBhZGQvY2hhbmdlL2RlbGV0ZQot ICAgICAgICBpZiAnY2hlY2tfY29uc3RyYWludCcgaW4gZGF0YToKLSAgICAgICAgICAgIGNvbnN0 cmFpbnQgPSBkYXRhWydjaGVja19jb25zdHJhaW50J10KLSAgICAgICAgICAgICMgSWYgY29uc3Ry YWludChzKSBpcy9hcmUgZGVsZXRlZAotICAgICAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIGNvbnN0 cmFpbnQ6Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnZGVsZXRlZCddOgot ICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAgICAg ICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAg ICAgICAjIFNxbCBmb3IgZHJvcAotICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAg ICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFtzZWxmLmNoZWNrX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykKLSAg ICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBpZiAnY2hhbmdlZCcgaW4gY29uc3Ry YWludDoKLSAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydjaGFuZ2VkJ106Ci0g ICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAg ICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQotCi0gICAgICAgICAgICAgICAg ICAgIHByb3BlcnRpZXNfc3FsID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAg ICAgICAgIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY2hlY2tf Y29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn cHJvcGVydGllcy5zcWwnXQotICAgICAgICAgICAgICAgICAgICAgICAgKSwgdGlkPXRpZCwgY2lk PWNbJ29pZCddCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHByb3BlcnRpZXNfc3FsKQotICAgICAg ICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgICAg ICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQotICAgICAgICAgICAgICAgICAgICAjIFNx bCB0byB1cGRhdGUgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAg ICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oWwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cGRhdGUuc3FsJ10pLCBkYXRhPWMsIG9fZGF0 YT1vbGRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiku c3RyaXAoJ1xuJykKLSAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBpZiAnYWRk ZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsn YWRkZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEn XQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0KLSAgICAg ICAgICAgICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVfY29uc3RyYWlucygnY2hlY2tfY29u c3RyYWludCcsIGMpOgotICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlIGZvciBjaGVja19jb25zdHJhaW50Jwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICkK LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCi0KLSAgICAg ICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRl cl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5j aGVja19jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9YywgY29ubj1zZWxmLmNvbm4KLSAgICAgICAgICAgICAgICAgICAgICAgICkuc3RyaXAo J1xuJykKLSAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgIGlmIGxlbihzcWwpID4gMDoK LSAgICAgICAgICAgICMgSm9pbiBhbGwgdGhlIHNxbChzKSBhcyBzaW5nbGUgc3RyaW5nCi0gICAg ICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQotICAgICAgICBlbHNlOgotICAgICAgICAg ICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBnZXRfZXhjbHVzaW9uX2NvbnN0cmFpbnRfc3FsKHNl bGYsIGRpZCwgdGlkLCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAgICAgICBBcmdzOgotICAgICAg ICAgICB0aWQ6IFRhYmxlIElECi0gICAgICAgICAgIGRhdGE6IGRhdGEgZGljdCBjb21pbmcgZnJv bSB0aGUgY2xpZW50Ci0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgZ2VuZXJhdGUgbW9kaWZpZWQgc3FsIGZvciBleGNsdXNpb24gY29uc3RyYWludAotICAg ICAgICAiIiIKLSAgICAgICAgc3FsID0gW10KLSAgICAgICAgIyBDaGVjayBpZiBjb25zdHJhaW50 IGlzIGluIGRhdGEKLSAgICAgICAgIyBJZiB5ZXMgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIGZvciBh ZGQvY2hhbmdlL2RlbGV0ZQotICAgICAgICBpZiAnZXhjbHVkZV9jb25zdHJhaW50JyBpbiBkYXRh OgotICAgICAgICAgICAgY29uc3RyYWludCA9IGRhdGFbJ2V4Y2x1ZGVfY29uc3RyYWludCddCi0g ICAgICAgICAgICAjIElmIGNvbnN0cmFpbnQocykgaXMvYXJlIGRlbGV0ZWQKLSAgICAgICAgICAg IGlmICdkZWxldGVkJyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgIGZvciBjIGluIGNv bnN0cmFpbnRbJ2RlbGV0ZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBk YXRhWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFt ZSddCi0KLSAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AKLSAgICAgICAgICAgICAg ICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5leGNsdXNpb25f Y29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn ZGVsZXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49 c2VsZi5jb25uKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAg ICAgIGlmICdjaGFuZ2VkJyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgIGZvciBjIGlu IGNvbnN0cmFpbnRbJ2NoYW5nZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10g PSBkYXRhWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsn bmFtZSddCi0KLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc19zcWwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5leGNsdXNpb25f Y29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9w ZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHRpZD10aWQs IGNpZD1jWydvaWQnXSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KHByb3BlcnRpZXNfc3FsKQotICAgICAgICAgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSBy ZXNbJ3Jvd3MnXVswXQotICAgICAgICAgICAgICAgICAgICAjIFNxbCB0byB1cGRhdGUgb2JqZWN0 Ci0gICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAg ICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oWwotICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAndXBkYXRlLnNxbCddKSwgZGF0YT1jLCBvX2RhdGE9b2xkX2RhdGEsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpCi0g ICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgaWYgJ2FkZGVkJyBpbiBjb25zdHJh aW50OgotICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2FkZGVkJ106Ci0gICAg ICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAgICAg ICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQotCi0gICAgICAgICAgICAgICAgICAg IGlmIG5vdCBzZWxmLnZhbGlkYXRlX2NvbnN0cmFpbnMoJ2V4Y2x1ZGVfY29uc3RyYWludCcsIGMp OgotICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnZXR0ZXh0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0g ZGVmaW5pdGlvbiBpbmNvbXBsZXRlIGZvciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdleGNsdXNpb25fY29uc3RyYWludCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAp Ci0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gJ1xuXG4nLmpvaW4oc3FsKQotCi0gICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0g ICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVf cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwn XSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubgot ICAgICAgICAgICAgICAgICAgICAgICAgKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAg ICApCi0KLSAgICAgICAgaWYgbGVuKHNxbCkgPiAwOgotICAgICAgICAgICAgIyBKb2luIGFsbCB0 aGUgc3FsKHMpIGFzIHNpbmdsZSBzdHJpbmcKLSAgICAgICAgICAgIHJldHVybiB1J1xuXG4nLmpv aW4oc3FsKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQogICAgIGRl ZiBnZXRfc3FsKHNlbGYsIGRpZCwgc2NpZCwgdGlkLCBkYXRhLCByZXMpOgogICAgICAgICAiIiIK ICAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIGNyZWF0ZS91cGRhdGUgc3FsIGZy b20gbW9kZWwgZGF0YQpAQCAtMTk5OSwyNyArMTE1MywzMSBAQCBjbGFzcyBCYXNlVGFibGVWaWV3 KFBHQ2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKICAgICAgICAgICAgICAgICBT UUwgKz0gJ1xuJyArIHBhcnRpdGlvbnNfc3FsLnN0cmlwKCdcbicpCiAKICAgICAgICAgICAgICMg Q2hlY2sgaWYgaW5kZXggY29uc3RyYWludHMgYXJlIGFkZGVkL2NoYW5nZWQvZGVsZXRlZAotICAg ICAgICAgICAgaW5kZXhfY29uc3RyYWludF9zcWwgPSBzZWxmLmdldF9pbmRleF9jb25zdHJhaW50 X3NxbCgKLSAgICAgICAgICAgICAgICBkaWQsIHRpZCwgZGF0YSkKKyAgICAgICAgICAgIGluZGV4 X2NvbnN0cmFpbnRfc3FsID0gXAorICAgICAgICAgICAgICAgIGlkeGNvbnNfdXRpbHMuZ2V0X2lu ZGV4X2NvbnN0cmFpbnRfc3FsKAorICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbm4sIGRpZCwg dGlkLCBkYXRhKQogICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGluZGV4IGNvbnN0cmFpbnQgc3Fs IHRoZW4gYWQgaXQgaW4gbWFpbiBzcWwKICAgICAgICAgICAgIGlmIGluZGV4X2NvbnN0cmFpbnRf c3FsIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIFNRTCArPSAnXG4nICsgaW5kZXhfY29u c3RyYWludF9zcWwKIAogICAgICAgICAgICAgIyBDaGVjayBpZiBmb3JlaWduIGtleShzKSBpcy9h cmUgYWRkZWQvY2hhbmdlZC9kZWxldGVkCi0gICAgICAgICAgICBmb3JlaWduX2tleV9zcWwgPSBz ZWxmLmdldF9mb3JlaWduX2tleV9zcWwodGlkLCBkYXRhKQorICAgICAgICAgICAgZm9yZWlnbl9r ZXlfc3FsID0gZmtleV91dGlscy5nZXRfZm9yZWlnbl9rZXlfc3FsKAorICAgICAgICAgICAgICAg IHNlbGYuY29ubiwgdGlkLCBkYXRhKQogICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGZvcmVpZ24g a2V5IHNxbCB0aGVuIGFkIGl0IGluIG1haW4gc3FsCiAgICAgICAgICAgICBpZiBmb3JlaWduX2tl eV9zcWwgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgU1FMICs9ICdcbicgKyBmb3JlaWdu X2tleV9zcWwKIAogICAgICAgICAgICAgIyBDaGVjayBpZiBjaGVjayBjb25zdHJhaW50KHMpIGlz L2FyZSBhZGRlZC9jaGFuZ2VkL2RlbGV0ZWQKLSAgICAgICAgICAgIGNoZWNrX2NvbnN0cmFpbnRf c3FsID0gc2VsZi5nZXRfY2hlY2tfY29uc3RyYWludF9zcWwodGlkLCBkYXRhKQorICAgICAgICAg ICAgY2hlY2tfY29uc3RyYWludF9zcWwgPSBjaGVja191dGlscy5nZXRfY2hlY2tfY29uc3RyYWlu dF9zcWwoCisgICAgICAgICAgICAgICAgc2VsZi5jb25uLCB0aWQsIGRhdGEpCiAgICAgICAgICAg ICAjIElmIHdlIGhhdmUgY2hlY2sgY29uc3RyYWludCBzcWwgdGhlbiBhZCBpdCBpbiBtYWluIHNx bAogICAgICAgICAgICAgaWYgY2hlY2tfY29uc3RyYWludF9zcWwgaXMgbm90IE5vbmU6CiAgICAg ICAgICAgICAgICAgU1FMICs9ICdcbicgKyBjaGVja19jb25zdHJhaW50X3NxbAogCiAgICAgICAg ICAgICAjIENoZWNrIGlmIGV4Y2x1c2lvbiBjb25zdHJhaW50KHMpIGlzL2FyZSBhZGRlZC9jaGFu Z2VkL2RlbGV0ZWQKLSAgICAgICAgICAgIGV4Y2x1c2lvbl9jb25zdHJhaW50X3NxbCA9IHNlbGYu Z2V0X2V4Y2x1c2lvbl9jb25zdHJhaW50X3NxbCgKLSAgICAgICAgICAgICAgICBkaWQsIHRpZCwg ZGF0YSkKKyAgICAgICAgICAgIGV4Y2x1c2lvbl9jb25zdHJhaW50X3NxbCA9IFwKKyAgICAgICAg ICAgICAgICBleGNsdXNpb25fdXRpbHMuZ2V0X2V4Y2x1c2lvbl9jb25zdHJhaW50X3NxbCgKKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5jb25uLCBkaWQsIHRpZCwgZGF0YSkKICAgICAgICAgICAg ICMgSWYgd2UgaGF2ZSBjaGVjayBjb25zdHJhaW50IHNxbCB0aGVuIGFkIGl0IGluIG1haW4gc3Fs CiAgICAgICAgICAgICBpZiBleGNsdXNpb25fY29uc3RyYWludF9zcWwgaXMgbm90IE5vbmU6CiAg ICAgICAgICAgICAgICAgU1FMICs9ICdcbicgKyBleGNsdXNpb25fY29uc3RyYWludF9zcWwKQEAg LTIwNTYsMTYgKzEyMTQsMTAgQEAgY2xhc3MgQmFzZVRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcs IEJhc2VQYXJ0aXRpb25UYWJsZSk6CiAKICAgICAgICAgICAgIGlmICdmb3JlaWduX2tleScgaW4g ZGF0YToKICAgICAgICAgICAgICAgICBmb3IgYyBpbiBkYXRhWydmb3JlaWduX2tleSddOgotICAg ICAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0gICAgICAg ICAgICAgICAgICAgICAgICBbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAotICAgICAg ICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgIHRpZD1jWydjb2x1bW5zJ11bMF1bJ3JlZmVyZW5jZXMnXSkKLSAgICAgICAgICAgICAg ICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAg ICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgICAg ICAgICAgICAgY1sncmVtb3RlX3NjaGVtYSddID0gcnNldFsncm93cyddWzBdWydzY2hlbWEnXQot ICAgICAgICAgICAgICAgICAgICBjWydyZW1vdGVfdGFibGUnXSA9IHJzZXRbJ3Jvd3MnXVswXVsn dGFibGUnXQorICAgICAgICAgICAgICAgICAgICBzY2hlbWEsIHRhYmxlID0gZmtleV91dGlscy5n ZXRfcGFyZW50KAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25uLCBjWydjb2x1bW5z J11bMF1bJ3JlZmVyZW5jZXMnXSkKKyAgICAgICAgICAgICAgICAgICAgY1sncmVtb3RlX3NjaGVt YSddID0gc2NoZW1hCisgICAgICAgICAgICAgICAgICAgIGNbJ3JlbW90ZV90YWJsZSddID0gdGFi bGUKIAogICAgICAgICAgICAgcGFydGl0aW9uc19zcWwgPSAnJwogICAgICAgICAgICAgaWYgJ2lz X3BhcnRpdGlvbmVkJyBpbiBkYXRhIGFuZCBkYXRhWydpc19wYXJ0aXRpb25lZCddOgpAQCAtMjUy NSw0NiArMTY3Nyw2IEBAIGNsYXNzIEJhc2VUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBCYXNl UGFydGl0aW9uVGFibGUpOgogICAgICAgICAgICAgZGF0YVsnYXR0cHJlY2lzaW9uJ10gPSBzdHIo ZGF0YVsnYXR0cHJlY2lzaW9uJ10pCiAgICAgICAgIHJldHVybiBkYXRhCiAKLSAgICBkZWYgc2Vh cmNoX2NvdmVyaW5naW5kZXgoc2VsZiwgdGlkLCBjb2xzKToKLSAgICAgICAgIiIiCi0KLSAgICAg ICAgQXJnczoKLSAgICAgICAgICB0aWQ6IFRhYmxlIGlkCi0gICAgICAgICAgY29sczogY29sdW1u IGxpc3QKLQotICAgICAgICBSZXR1cm5zOgotCi0gICAgICAgICIiIgotCi0gICAgICAgIGNvbHMg PSBzZXQoY29scykKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50cy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aWQ9dGlkKQotICAgICAgICBzdGF0dXMsIGNvbnN0cmFpbnRzID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChTUUwpCi0KLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAg ICAgIHJhaXNlIEV4Y2VwdGlvbihjb25zdHJhaW50cykKLQotICAgICAgICBmb3IgY29zdHJudCBp biBjb25zdHJhaW50c1sncm93cyddOgotCi0gICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxh dGUoCi0gICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVf cGF0aCwgJ2dldF9jb2xzLnNxbCddKSwKLSAgICAgICAgICAgICAgICBjaWQ9Y29zdHJudFsnb2lk J10sCi0gICAgICAgICAgICAgICAgY29sY250PWNvc3RybnRbJ2NvbF9jb3VudCddKQotICAgICAg ICAgICAgc3RhdHVzLCByZXN0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCi0KLSAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXN0KQotCi0gICAgICAgICAgICBpbmRleGNvbHMgPSBzZXQo KQotICAgICAgICAgICAgZm9yIHIgaW4gcmVzdFsncm93cyddOgotICAgICAgICAgICAgICAgIGlu ZGV4Y29scy5hZGQoclsnY29sdW1uJ10uc3RyaXAoJyInKSkKLQotICAgICAgICAgICAgaWYgbGVu KGNvbHMgLSBpbmRleGNvbHMpID09IGxlbihpbmRleGNvbHMgLSBjb2xzKSA9PSAwOgotICAgICAg ICAgICAgICAgIHJldHVybiBjb3N0cm50WyJpZHhuYW1lIl0KLQotICAgICAgICByZXR1cm4gTm9u ZQotCiAgICAgZGVmIHVwZGF0ZV92YWN1dW1fc2V0dGluZ3Moc2VsZiwgdmFjdXVtX2tleSwgb2xk X2RhdGEsIGRhdGEpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlvbiBpdGVyYXRl IHRoZSB2YWN1dW0gYW5kIHZhY3V1bSB0b2FzdCB0YWJsZSBhbmQgY3JlYXRlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi91dGlscy9leGNlcHRpb24ucHkgYi93ZWIvcGdhZG1pbi91dGlscy9leGNl cHRpb24ucHkKaW5kZXggMDk2MDQzY2IxLi42MTU5ZjlmZjggMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL3V0aWxzL2V4Y2VwdGlvbi5weQorKysgYi93ZWIvcGdhZG1pbi91dGlscy9leGNlcHRpb24u cHkKQEAgLTEyLDcgKzEyLDcgQEAgZnJvbSB3ZXJremV1Zy5odHRwIGltcG9ydCBIVFRQX1NUQVRV U19DT0RFUwogZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0IGFzIF8KIGZyb20gZmxh c2sgaW1wb3J0IHJlcXVlc3QKIAotZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IHNlcnZp Y2VfdW5hdmFpbGFibGUKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBzZXJ2aWNlX3Vu YXZhaWxhYmxlLCBnb25lCiAKIAogY2xhc3MgQ29ubmVjdGlvbkxvc3QoSFRUUEV4Y2VwdGlvbik6 CkBAIC0xMDUsMyArMTA1LDI2IEBAIGNsYXNzIENyeXB0S2V5TWlzc2luZyhIVFRQRXhjZXB0aW9u KToKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICJDcnlwdCBrZXkg aXMgbWlzc2luZy4iCisKKworY2xhc3MgT2JqZWN0R29uZShIVFRQRXhjZXB0aW9uKToKKyAgICAi IiIKKyAgICBFeGNlcHRpb24KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJv cl9tc2cpOgorICAgICAgICBzZWxmLmVycm9yX21zZyA9IGVycm9yX21zZworICAgICAgICBIVFRQ RXhjZXB0aW9uLl9faW5pdF9fKHNlbGYpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShz ZWxmKToKKyAgICAgICAgcmV0dXJuIEhUVFBfU1RBVFVTX0NPREVTLmdldCg0MTAsICdHb25lJykK KworICAgIGRlZiBnZXRfcmVzcG9uc2Uoc2VsZiwgZW52aXJvbj1Ob25lKToKKyAgICAgICAgcmV0 dXJuIGdvbmUoc2VsZi5lcnJvcl9tc2cpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAg ICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAg ICAgIHJldHVybiBzZWxmLmVycm9yX21zZwo= --0000000000004fa90a05974d8aba--