Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lxnSB-0008Rl-QK for pgadmin-hackers@arkaria.postgresql.org; Mon, 28 Jun 2021 09:21:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lxnSA-000274-MY for pgadmin-hackers@arkaria.postgresql.org; Mon, 28 Jun 2021 09:21:18 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lxnSA-00026w-Dj for pgadmin-hackers@lists.postgresql.org; Mon, 28 Jun 2021 09:21:18 +0000 Received: from mail-vs1-xe33.google.com ([2607:f8b0:4864:20::e33]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1lxnS6-0002jk-TK for pgadmin-hackers@postgresql.org; Mon, 28 Jun 2021 09:21:17 +0000 Received: by mail-vs1-xe33.google.com with SMTP id o7so9633847vss.5 for ; Mon, 28 Jun 2021 02:21:14 -0700 (PDT) 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=KQ6D/PETiIPJxKDohgIsMn9lt08itTfICCs9pUqgoCc=; b=K8BveepUw1fnWH+qWu20WvMourEulr6ixcv5EbCuVnfy1MMkj2Lo1wMy23h9RxF7Cp TTx5NZTRj/j9f0J2cmzBYT7n4Gjy7QV68BWARYAlAGJOxHZJ3JyBMX2AbWu+BsKeM715 8x0kt7cY+Ss/HtBx+G9hNt9OumGuX/Xc9SuA2kIA8QEnQ5GNBCLGXOmBwo16vJB6Pi7p HkWoVXNzB9UY4t4cYKzpt9tGMZhGAxUbAVYDek1/l2fGU11jq+1JsIFV8zpLj4rRvsOW M9pwnmRw3p1+o4vaID3daktB2ePGBS4aDk85ajs/DFcfq7ddRLi3uxim712f4nnf0pdq VknQ== 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=KQ6D/PETiIPJxKDohgIsMn9lt08itTfICCs9pUqgoCc=; b=fSuGMh4Cu7/vF/3jk1end4FgZSor/jHMLE2bfMWm86OYoOkhsxaqFF6BInXsHXf+Lk D5a3Z8pHMeVg7XpiYmEVBOB9xX/HxZIsHKgXjHs0sLJ8aVrJ3tT4oNFxz33az/wSFIv7 Uq4YjkodMLWo0bxRalQa44uCM5TOAjypRbi4BXRDPbxvxex6sBNFVtdwbxlajYRKURyp wSOAepMzh6aghCKwHVnVC6yjAttqo+UU1cghXLffYvdmcniZiXpVaNKk+lrZDWMdrt6a 0m38AsYki/QSj8D+pJLrcLePfPZjuqdLfmgMjlASaay7DiaaCjgv8i3i6nojfBPxJqVA Jelg== X-Gm-Message-State: AOAM532RNVg/vTXUx8DRzLbMj9+PaEy6yWIyh7YvaArXYRWO0ecy4odU 3a2O5vkFNJRiEAmpg7bkI3c/wo/yaUTGVXIWfC8aXNwPzCYEYOjhy+bQm8QZWKXaXVrgtUQ4byP GYSS3VbsNtZjXuR4TRc8DHX2qdZIzY8vt414d0wS34SlJLjDxdbTQDntVP24VBjDGJ2+0he5GDm MdtUzY583oCyca4kh4rdMSPtF6EFN5DymYnN7xwXT3ZPaagw8CXo2KJniRCNlABx8= X-Google-Smtp-Source: ABdhPJwjZE3A4fSQSoBEvF90HdrFfDP0/XLp8M9fv3aBeC3nu/9fYoxrbCWYR6xWFSg9CtSDShalKEb2c8ALHahidCI= X-Received: by 2002:a05:6102:11a:: with SMTP id z26mr4250653vsq.17.1624872072556; Mon, 28 Jun 2021 02:21:12 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Aditya Toshniwal Date: Mon, 28 Jun 2021 14:50:36 +0530 Message-ID: Subject: Re: [pgAdmin][RM6130] React based framework for properties dialog and port Server Group, Server and Database dialogs To: pgadmin-hackers Cc: Akshay Joshi Content-Type: multipart/mixed; boundary="000000000000b0ea8005c5d002df" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b0ea8005c5d002df Content-Type: multipart/alternative; boundary="000000000000b0ea7e05c5d002dd" --000000000000b0ea7e05c5d002dd Content-Type: text/plain; charset="UTF-8" Hi Hackers, I made some changes to the core code that will be helpful for other nodes. Please review. On Thu, Jun 24, 2021 at 5:39 PM Akshay Joshi wrote: > Thanks, the patch applied in the "React_Porting" branch. > > On Mon, Jun 21, 2021 at 9:35 AM Aditya Toshniwal < > aditya.toshniwal@enterprisedb.com> wrote: > >> Hi Dave, >> >> On Thu, Jun 17, 2021 at 7:26 PM Dave Page wrote: >> >>> Hi >>> >>> On Thu, Jun 17, 2021 at 11:01 AM Aditya Toshniwal < >>> aditya.toshniwal@enterprisedb.com> wrote: >>> >>>> Hi Hackers, >>>> >>>> Attached patch marks the beginning of migrating properties dialog/tab >>>> to React based code, which is easy to maintain, performant and testable >>>> using automation. >>>> Patch includes: >>>> - Framework for creating React based dynamic form view out of a >>>> pre-defined UI schema. Previously, it was based on Backform/Backbone. >>>> - The new framework and components will use MaterialUI as base. >>>> Previously, Bootstrap/Backform/jQuery components were used. >>>> - The new code uses JSS instead of CSS since material ui and most >>>> modern React libraries also use JSS. In future, this will allow us to >>>> change the theme in real-time without refresh. >>>> - 90% code covered by 80-85 new jasmine test cases. >>>> - Server group node UI Schema migration to new, with schema test cases. >>>> - Server node UI Schema migration to new, with schema test cases. >>>> - Database node UI Schema migration to new, with schema test cases. >>>> - Few other UI changes. >>>> >>> >>> Nice! >>> >>> >>>> >>>> PS: Until all the nodes are migrated, this will not go in the main >>>> branch. >>>> >>> >>> Yeah, how are we going to manage this? I agree with building it out in a >>> branch until we have full coverage of the dialogues, but I'm concerned that >>> it'll become a merge nightmare. Though, I guess we aren't touching the >>> dialogues much for other things right now, so maybe not. >>> >> We'll right now work only on the dialogs. So merging should be manageable. >> BTW, the patch can be merged in the main branch as well. It is backward >> compatible, and it will work fine. Only the UI components would look >> slightly different from the non-migrated dialogs. >> >>> >>> -- >>> Dave Page >>> Blog: https://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EDB: https://www.enterprisedb.com >>> >>> >> >> -- >> Thanks, >> Aditya Toshniwal >> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >> >> "Don't Complain about Heat, Plant a TREE" >> > > > -- > *Thanks & Regards* > *Akshay Joshi* > *pgAdmin Hacker | Principal Software Architect* > *EDB Postgres * > > *Mobile: +91 976-788-8246* > -- Thanks, Aditya Toshniwal pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* "Don't Complain about Heat, Plant a TREE" --000000000000b0ea7e05c5d002dd Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

I made some changes to the core code that = will be helpful for other nodes.
Please=C2=A0review.


On Thu, Jun = 24, 2021 at 5:39 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Thanks, the patch = applied in=C2=A0the "React_Porting" branch.

On Mon, Jun 21, 2021= at 9:35 AM Aditya Toshniwal <aditya.toshniwal@enterprisedb.com> wrot= e:
Hi Dave,

On Thu, Jun 17, 2021 at 7:26 PM Dave Page <= ;dpage@pgadmin.org> wrote:
Hi

Hi Hackers,

Attached patc= h marks the beginning=C2=A0of migrating properties dialog/tab to React base= d code, which is easy to maintain, performant and testable using automation= .
Patch includes:
- Framework for creating= =C2=A0React based dynamic form view out of a pre-defined UI schema. Previo= usly, it was based on Backform/Backbone.
- The new framework and components will use MaterialUI as = base. Previously, Bootstrap/Backform/jQuery components were used.
=
- The new code uses JSS inste= ad of CSS since material ui and most modern React libraries also use JSS. I= n future, this will=C2=A0allow us to change the=C2=A0theme in real-time wit= hout refresh.
- 90% code= covered by 80-85 new jasmine test cases.
- Ser= ver group node UI Schema migration to new, with schema test cases.
- Server node UI Schema migratio= n to new, with schema test cases.
- Database node UI Schema migration to new, with schema test = cases.
- Few other UI ch= anges.

Nice!
= =C2=A0

PS: Until=C2=A0all the nodes are migrat= ed, this will not go in the main branch.

Yeah, how are we going to manage this? I agree with buildin= g it out in a branch until we have full coverage of the dialogues, but I= 9;m concerned that it'll become a merge nightmare. Though, I guess we a= ren't touching the dialogues much for other things right now, so maybe = not.
We'll right now work only on the di= alogs. So merging should be manageable.
BTW, the patch can be = merged in the main branch as well. It is backward compatible, and it will w= ork fine. Only the UI components would look slightly different from the non= -migrated dialogs.
=C2=A0
--=
Dave Page
Blog: https://pgsnake.blogspot.com<= br>Twitter: @pgsnake

EDB: https://www.enterprisedb.com



--
Thanks,
Aditya Toshniwal=
pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
&quo= t;Don't Complain about Heat, Plant a TREE"


--
Thank= s & Regards
Akshay Joshi
pgAdmin Hacker | Principal Softw= are Architect
EDB Po= stgres
Mobile: +91 976-788-8246



--
Thanks,
Aditya Toshniwal
pgAdmin hacker=C2=A0| Sr. Softwa= re Engineer | edbpostgres.com<= /font>
"Don't Complain about Heat, Plant a TREE&qu= ot;
--000000000000b0ea7e05c5d002dd-- --000000000000b0ea8005c5d002df Content-Type: application/octet-stream; name="RM6130.part2.patch" Content-Disposition: attachment; filename="RM6130.part2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kqgeum8z0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zdGF0aWMvanMvZGF0YWJhc2UudWkuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc3RhdGljL2pzL2RhdGFiYXNlLnVpLmpzCmlu ZGV4IGZiNDJiMzdjNS4uNzY5NTcwOTYxIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc3RhdGljL2pzL2RhdGFiYXNlLnVpLmpz CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zdGF0aWMvanMvZGF0YWJhc2UudWkuanMKQEAgLTE3LDcgKzE3LDcgQEAgZXhwb3J0IGNsYXNz IERlZmF1bHRQcml2U2NoZW1hIGV4dGVuZHMgQmFzZVVJU2NoZW1hIHsKICAgICB0aGlzLmdldFBy aXZpbGVnZVJvbGVTY2hlbWEgPSBnZXRQcml2aWxlZ2VSb2xlU2NoZW1hOwogICB9CiAKLSAgZ2V0 IGZpZWxkcygpIHsKKyAgZ2V0IGJhc2VGaWVsZHMoKSB7CiAgICAgcmV0dXJuIFsKICAgICAgIHsK ICAgICAgICAgaWQ6ICdkZWZ0YmxhY2wnLCB0eXBlOiAnY29sbGVjdGlvbicsIGdyb3VwOiBnZXR0 ZXh0KCdUYWJsZXMnKSwKQEAgLTg5LDcgKzg5LDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0 YWJhc2VTY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogICAgIHJldHVybiAnZGlkJzsKICAg fQogCi0gIGdldCBmaWVsZHMoKSB7CisgIGdldCBiYXNlRmllbGRzKCkgewogICAgIGxldCBvYmog PSB0aGlzOwogICAgIHJldHVybiBbCiAgICAgICB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3N0YXRpYy9qcy9ub2RlX3ZpZXcuanN4IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0 aWMvanMvbm9kZV92aWV3LmpzeAppbmRleCA4MzczNjQ3NjkuLjkwNjdiNWExYiAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZV92aWV3LmpzeAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlX3ZpZXcuanN4CkBAIC0xNzEsMTIgKzE3MSwx OCBAQCBleHBvcnQgZnVuY3Rpb24gZ2V0Tm9kZVZpZXcobm9kZVR5cGUsIHRyZWVOb2RlSW5mbywg YWN0aW9uVHlwZSwgaXRlbU5vZGVEYXRhLCBmbwogICAgIGluQ2F0YWxvZzogaW5DYXRhbG9nLAog ICB9OwogCisgIGxldCBzY2hlbWEgPSBub2RlT2JqLmdldFNjaGVtYS5jYWxsKG5vZGVPYmosIHRy ZWVOb2RlSW5mbywgaXRlbU5vZGVEYXRhKTsKKyAgLy8gU2hvdy9IaWRlIHNlY3VyaXR5IGdyb3Vw IGZvciBub2RlcyB1bmRlciB0aGUgY2F0YWxvZworICBpZignY2F0YWxvZycgaW4gdHJlZU5vZGVJ bmZvKSB7CisgICAgc2NoZW1hLmZpbHRlckdyb3VwcyA9IFtnZXR0ZXh0KCdTZWN1cml0eScpXTsK KyAgfQorCiAgIC8qIEZpcmUgYXQgd2lsbCwgbW91bnQgdGhlIERPTSAqLwogICBSZWFjdERPTS5y ZW5kZXIoCiAgICAgPFNjaGVtYVZpZXcKICAgICAgIGZvcm1UeXBlPXtmb3JtVHlwZX0KICAgICAg IGdldEluaXREYXRhPXtpbml0RGF0YX0KLSAgICAgIHNjaGVtYT17bm9kZU9iai5nZXRTY2hlbWEu Y2FsbChub2RlT2JqLCB0cmVlTm9kZUluZm8sIGl0ZW1Ob2RlRGF0YSl9CisgICAgICBzY2hlbWE9 e3NjaGVtYX0KICAgICAgIHZpZXdIZWxwZXJQcm9wcz17dmlld0hlbHBlclByb3BzfQogICAgICAg b25TYXZlPXtvblNhdmVDbGlja30KICAgICAgIG9uQ2xvc2U9eygpPT5jb250YWluZXJQYW5lbC5j bG9zZSgpfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL1NjaGVtYVZpZXcvRGF0 YUdyaWRWaWV3LmpzeCBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L0RhdGFHcmlk Vmlldy5qc3gKaW5kZXggM2NmMTY3ODNiLi44OWY5YjUxOWYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L0RhdGFHcmlkVmlldy5qc3gKKysrIGIvd2ViL3BnYWRt aW4vc3RhdGljL2pzL1NjaGVtYVZpZXcvRGF0YUdyaWRWaWV3LmpzeApAQCAtMjU3LDE2ICsyNTcs MTYgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0YUdyaWRWaWV3KHsKICAgICAgICAgICAg ICAgICAgICAgKHZpZXdIZWxwZXJQcm9wcy5zZXJ2ZXJJbmZvLnZlcnNpb24gPD0gZmllbGQubWF4 X3ZlcnNpb24pKSkpOwogICAgICAgICAgICAgICAgIGxldCBfcmVhZG9ubHkgPSB2aWV3SGVscGVy UHJvcHMuaW5DYXRhbG9nIHx8ICh2aWV3SGVscGVyUHJvcHMubW9kZSA9PSAncHJvcGVydGllcycp OwogICAgICAgICAgICAgICAgIGlmKCFfcmVhZG9ubHkpIHsKLSAgICAgICAgICAgICAgICAgIF9y ZWFkb25seSA9IGV2YWxGdW5jKHJlYWRvbmx5LCByb3cub3JpZ2luYWwgfHwge30pOworICAgICAg ICAgICAgICAgICAgX3JlYWRvbmx5ID0gZXZhbEZ1bmMoc2NoZW1hLCByZWFkb25seSwgcm93Lm9y aWdpbmFsIHx8IHt9KTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBsZXQg X3Zpc2libGUgPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmKHZpc2libGUpIHsKLSAgICAgICAg ICAgICAgICAgIF92aXNpYmxlID0gZXZhbEZ1bmModmlzaWJsZSwgcm93Lm9yaWdpbmFsIHx8IHt9 KTsKKyAgICAgICAgICAgICAgICAgIF92aXNpYmxlID0gZXZhbEZ1bmMoc2NoZW1hLCB2aXNpYmxl LCByb3cub3JpZ2luYWwgfHwge30pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg ICBfdmlzaWJsZSA9IF92aXNpYmxlICYmIHZlckluTGltaXQ7CiAKLSAgICAgICAgICAgICAgICBk aXNhYmxlZCA9IGV2YWxGdW5jKGRpc2FibGVkLCByb3cub3JpZ2luYWwgfHwge30pOworICAgICAg ICAgICAgICAgIGRpc2FibGVkID0gZXZhbEZ1bmMoc2NoZW1hLCBkaXNhYmxlZCwgcm93Lm9yaWdp bmFsIHx8IHt9KTsKIAogICAgICAgICAgICAgICAgIHJldHVybiA8TWFwcGVkQ2VsbENvbnRyb2wg cm93SW5kZXg9e3Jvdy5pbmRleH0gdmFsdWU9e3ZhbHVlfQogICAgICAgICAgICAgICAgICAgcm93 PXtyb3cub3JpZ2luYWx9IHsuLi5fZmllbGR9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvU2NoZW1hVmlldy9Gb3JtVmlldy5qc3ggYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2No ZW1hVmlldy9Gb3JtVmlldy5qc3gKaW5kZXggNDg1ZDk4M2RkLi40OWQxMzNkMTcgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L0Zvcm1WaWV3LmpzeAorKysgYi93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9Gb3JtVmlldy5qc3gKQEAgLTEwNSwxNyAr MTA1LDE3IEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZvcm1WaWV3KHsKIAogICAgICAgbGV0 IF9yZWFkb25seSA9IHZpZXdIZWxwZXJQcm9wcy5pbkNhdGFsb2cgfHwgKHZpZXdIZWxwZXJQcm9w cy5tb2RlID09ICdwcm9wZXJ0aWVzJyk7CiAgICAgICBpZighX3JlYWRvbmx5KSB7Ci0gICAgICAg IF9yZWFkb25seSA9IGV2YWxGdW5jKHJlYWRvbmx5LCB2YWx1ZSk7CisgICAgICAgIF9yZWFkb25s eSA9IGV2YWxGdW5jKHNjaGVtYSwgcmVhZG9ubHksIHZhbHVlKTsKICAgICAgIH0KIAogICAgICAg bGV0IF92aXNpYmxlID0gdHJ1ZTsKIAogICAgICAgaWYodmlzaWJsZSkgewotICAgICAgICBfdmlz aWJsZSA9IGV2YWxGdW5jKHZpc2libGUsIHZhbHVlKTsKKyAgICAgICAgX3Zpc2libGUgPSBldmFs RnVuYyhzY2hlbWEsIHZpc2libGUsIHZhbHVlKTsKICAgICAgIH0KICAgICAgIF92aXNpYmxlID0g X3Zpc2libGUgJiYgdmVySW5MaW1pdDsKIAotICAgICAgZGlzYWJsZWQgPSBldmFsRnVuYyhkaXNh YmxlZCwgdmFsdWUpOworICAgICAgZGlzYWJsZWQgPSBldmFsRnVuYyhzY2hlbWEsIGRpc2FibGVk LCB2YWx1ZSk7CiAKIAogICAgICAgaWYoIXRhYnNbZ3JvdXBdKSB0YWJzW2dyb3VwXSA9IFtdOwpA QCAtMTUxLDYgKzE1MSw3IEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZvcm1WaWV3KHsKICAg ICAgICAgICAgICAgICBmaXJzdEVsZVJlZi5jdXJyZW50ID0gZWxlOwogICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICB9fQorICAgICAgICAgICAgc3RhdGU9e3ZhbHVlfQogICAgICAgICAgICAg a2V5PXtmaWVsZC5pZH0KICAgICAgICAgICAgIHZpZXdIZWxwZXJQcm9wcz17dmlld0hlbHBlclBy b3BzfQogICAgICAgICAgICAgbmFtZT17ZmllbGQuaWR9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9zdGF0aWMvanMvU2NoZW1hVmlldy9NYXBwZWRDb250cm9sLmpzeCBiL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9TY2hlbWFWaWV3L01hcHBlZENvbnRyb2wuanN4CmluZGV4IDQ2YTgxNTI0NS4uNjE5 NWQ2MTBmIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9NYXBw ZWRDb250cm9sLmpzeAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9NYXBw ZWRDb250cm9sLmpzeApAQCAtMTU4LDcgKzE1OCw3IEBAIGNvbnN0IEFMTE9XRURfUFJPUFNfRklF TERfQ09NTU9OID0gWwogXTsKIAogY29uc3QgQUxMT1dFRF9QUk9QU19GSUVMRF9GT1JNID0gWwot ICAndHlwZScsICdvbkNoYW5nZScKKyAgJ3R5cGUnLCAnb25DaGFuZ2UnLCAnc3RhdGUnLAogXTsK IAogY29uc3QgQUxMT1dFRF9QUk9QU19GSUVMRF9DRUxMID0gWwpAQCAtMTY4LDcgKzE2OCw3IEBA IGNvbnN0IEFMTE9XRURfUFJPUFNfRklFTERfQ0VMTCA9IFsKIAogZXhwb3J0IGNvbnN0IE1hcHBl ZEZvcm1Db250cm9sID0gKHByb3BzKT0+ewogICBsZXQgbmV3UHJvcHMgPSB7Li4ucHJvcHN9Owot ICBsZXQgdHlwZVByb3BzID0gZXZhbEZ1bmMobmV3UHJvcHMudHlwZSwgbmV3UHJvcHMudmFsdWUp OworICBsZXQgdHlwZVByb3BzID0gZXZhbEZ1bmMobnVsbCwgbmV3UHJvcHMudHlwZSwgbmV3UHJv cHMuc3RhdGUpOwogICBpZih0eXBlb2YodHlwZVByb3BzKSA9PT0gJ29iamVjdCcpIHsKICAgICBu ZXdQcm9wcyA9IHsKICAgICAgIC4uLm5ld1Byb3BzLApAQCAtMTg0LDcgKzE4NCw3IEBAIGV4cG9y dCBjb25zdCBNYXBwZWRGb3JtQ29udHJvbCA9IChwcm9wcyk9PnsKIAogZXhwb3J0IGNvbnN0IE1h cHBlZENlbGxDb250cm9sID0gKHByb3BzKT0+ewogICBsZXQgbmV3UHJvcHMgPSB7Li4ucHJvcHN9 OwotICBsZXQgY2VsbFByb3BzID0gZXZhbEZ1bmMobmV3UHJvcHMuY2VsbCwgbmV3UHJvcHMucm93 KTsKKyAgbGV0IGNlbGxQcm9wcyA9IGV2YWxGdW5jKG51bGwsIG5ld1Byb3BzLmNlbGwsIG5ld1By b3BzLnJvdyk7CiAgIGlmKHR5cGVvZihjZWxsUHJvcHMpID09PSAnb2JqZWN0JykgewogICAgIG5l d1Byb3BzID0gewogICAgICAgLi4ubmV3UHJvcHMsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9z dGF0aWMvanMvU2NoZW1hVmlldy9iYXNlX3NjaGVtYS51aS5qcyBiL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9TY2hlbWFWaWV3L2Jhc2Vfc2NoZW1hLnVpLmpzCmluZGV4IGZiMDFhMjRkMi4uN2Y5MDkx ZGRhIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9iYXNlX3Nj aGVtYS51aS5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9iYXNlX3Nj aGVtYS51aS5qcwpAQCAtMTcsNiArMTcsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCYXNlVUlT Y2hlbWEgewogICAgIHRoaXMuX2RlZmF1bHRzID0gZGVmYXVsdHM7CiAKICAgICB0aGlzLmtleXMg PSBudWxsOyAvLyBJZiBzZXQsIG90aGVyIGZpZWxkcyBleGNlcHQga2V5cyB3aWxsIGJlIGZpbHRl cmVkCisgICAgdGhpcy5maWx0ZXJHcm91cHMgPSBbXTsgLy8gSWYgc2V0LCB0aGVzZSBncm91cHMg d2lsbCBiZSBmaWx0ZXJlZCBvdXQKICAgICB0aGlzLmluZm9ybVRleHQgPSBudWxsOyAvLyBJbmZv cm0gdGV4dCB0byBzaG93IGFmdGVyIHNhdmUsIHRoaXMgb25seSBzYXZlcyBpdAogICAgIHRoaXMu X3RvcCA9IG51bGw7CiAgIH0KQEAgLTU5LDEzICs2MCwyNiBAQCBleHBvcnQgZGVmYXVsdCBjbGFz cyBCYXNlVUlTY2hlbWEgewogICBjb25jYXQgYmFzZSBmaWVsZHMgd2l0aCBleHRyYUZpZWxkcy4K ICAgKi8KICAgZ2V0IGZpZWxkcygpIHsKLSAgICAvKiBTZWxlY3Qgb25seSBrZXlzIGlmIHNwZWNp ZmllZCAqLwogICAgIHJldHVybiB0aGlzLmJhc2VGaWVsZHMKLSAgICAgIC5maWx0ZXIoKGZpZWxk KT0+dGhpcy5rZXlzID8gdGhpcy5rZXlzLmluZGV4T2YoZmllbGQuaWQpID4gLTEgOiB0cnVlKTsK KyAgICAgIC5maWx0ZXIoKGZpZWxkKT0+eworICAgICAgICBsZXQgcmV0dmFsOworCisgICAgICAg IC8qIElmIGFueSBncm91cHMgYXJlIHRvIGJlIGZpbHRlcmVkICovCisgICAgICAgIHJldHZhbCA9 IHRoaXMuZmlsdGVyR3JvdXBzLmluZGV4T2YoZmllbGQuZ3JvdXApID09IC0xOworCisgICAgICAg IC8qIFNlbGVjdCBvbmx5IGtleXMsIGlmIHNwZWNpZmllZCAqLworICAgICAgICBpZih0aGlzLmtl eXMpIHsKKyAgICAgICAgICByZXR2YWwgPSByZXR2YWwgJiYgdGhpcy5rZXlzLmluZGV4T2YoZmll bGQuaWQpID4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICAgIH0p OwogICB9CiAKICAgLyogQ2hlY2sgaWYgY3VycmVudCBkYXRhIGlzIG5ldyBvciBleGlzdGluZyAq LwogICBpc05ldyhzdGF0ZSkgeworICAgIGlmKF8uaXNVbmRlZmluZWQoc3RhdGUpKSB7CisgICAg ICBzdGF0ZSA9IHRoaXMub3JpZ0RhdGE7CisgICAgfQogICAgIGlmKF8uaGFzKHN0YXRlLCB0aGlz LmlkQXR0cmlidXRlKSkgewogICAgICAgcmV0dXJuIF8uaXNVbmRlZmluZWQoc3RhdGVbdGhpcy5p ZEF0dHJpYnV0ZV0pCiAgICAgICAgIHx8IF8uaXNOdWxsKHN0YXRlW3RoaXMuaWRBdHRyaWJ1dGVd KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L2luZGV4Lmpz eCBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L2luZGV4LmpzeAppbmRleCBjMzEw NmIzNmMuLmM4YzQxNjdjNCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL1NjaGVt YVZpZXcvaW5kZXguanN4CisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L2lu ZGV4LmpzeApAQCAtODUsNyArODUsMTAgQEAgZnVuY3Rpb24gZ2V0Q2hhbmdlZERhdGEodG9wU2No ZW1hLCBtb2RlLCBzZXNzRGF0YSwgc3RyaW5naWZ5PWZhbHNlKSB7CiAgICAgICByZXR1cm47CiAg ICAgfSBlbHNlIHsKICAgICAgIGNoYW5nZSA9IGNoYW5nZSB8fCBfLmdldChzZXNzRGF0YSwgY3Vy clBhdGgpOwotICAgICAgXy5zZXQoY2hhbmdlZERhdGEsIGN1cnJQYXRoLCBzdHJpbmdpZnkgPyBK U09OLnN0cmluZ2lmeShjaGFuZ2UpIDogY2hhbmdlKTsKKyAgICAgIGlmKHN0cmluZ2lmeSAmJiAo Xy5pc0FycmF5KGNoYW5nZSkgfHwgXy5pc09iamVjdChjaGFuZ2UpKSkgeworICAgICAgICBjaGFu Z2UgPSBKU09OLnN0cmluZ2lmeShjaGFuZ2UpOworICAgICAgfQorICAgICAgXy5zZXQoY2hhbmdl ZERhdGEsIGN1cnJQYXRoLCBjaGFuZ2UpOwogICAgIH0KICAgfTsKIApAQCAtMTA0LDggKzEwNyw4 IEBAIGZ1bmN0aW9uIGdldENoYW5nZWREYXRhKHRvcFNjaGVtYSwgbW9kZSwgc2Vzc0RhdGEsIHN0 cmluZ2lmeT1mYWxzZSkgewogICAgICAgICAgICAgLyogVXNlIGRpZmZBcnJheSBwYWNrYWdlIHRv IGdldCB0aGUgYXJyYXkgZGlmZiBhbmQgZXh0cmFjdCB0aGUgaW5mbwogICAgICAgICAgICAgY2lk IGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHJvd3MgdW5pcXVlbHkgKi8KICAgICAgICAgICAgIGNv bnN0IGNoYW5nZURpZmYgPSBkaWZmQXJyYXkoCi0gICAgICAgICAgICAgIF8uZ2V0KHRvcFNjaGVt YS5vcmlnRGF0YSwgY3VyclBhdGgpLAotICAgICAgICAgICAgICBfLmdldChzZXNzRGF0YSwgY3Vy clBhdGgpLAorICAgICAgICAgICAgICBfLmdldCh0b3BTY2hlbWEub3JpZ0RhdGEsIGN1cnJQYXRo KSB8fCBbXSwKKyAgICAgICAgICAgICAgXy5nZXQoc2Vzc0RhdGEsIGN1cnJQYXRoKSB8fCBbXSwK ICAgICAgICAgICAgICAgJ2NpZCcKICAgICAgICAgICAgICk7CiAgICAgICAgICAgICBjaGFuZ2Ug PSB7fTsKQEAgLTEzMCw5ICsxMzMsOSBAQCBmdW5jdGlvbiBnZXRDaGFuZ2VkRGF0YSh0b3BTY2hl bWEsIG1vZGUsIHNlc3NEYXRhLCBzdHJpbmdpZnk9ZmFsc2UpIHsKICAgICAgICAgfSBlbHNlIGlm KCFpc0VkaXQpIHsKICAgICAgICAgICBpZihmaWVsZC50eXBlID09PSAnY29sbGVjdGlvbicpIHsK ICAgICAgICAgICAgIGxldCBjaGFuZ2UgPSBjbGVhbkNpZChfLmdldChzZXNzRGF0YSwgY3VyclBh dGgpKTsKLSAgICAgICAgICAgIGF0dHJDaGFuZ2VkKGN1cnJQYXRoLCBjaGFuZ2UpOworICAgICAg ICAgICAgYXR0ckNoYW5nZWQoY3VyclBhdGgsIGNoYW5nZSwgdHJ1ZSk7CiAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgIGF0dHJDaGFuZ2VkKGN1cnJQYXRoKTsKKyAgICAgICAgICAgIGF0 dHJDaGFuZ2VkKGN1cnJQYXRoLCBudWxsICwgdHJ1ZSk7CiAgICAgICAgICAgfQogICAgICAgICB9 CiAgICAgICB9CkBAIC01NjYsMTAgKzU2OSwxMCBAQCBmdW5jdGlvbiBTY2hlbWFQcm9wZXJ0aWVz Vmlldyh7CiAgICAgICBfdmlzaWJsZSA9IChmaWVsZC5tb2RlLmluZGV4T2Yodmlld0hlbHBlclBy b3BzLm1vZGUpID4gLTEpOwogICAgIH0KICAgICBpZihfdmlzaWJsZSAmJiB2aXNpYmxlKSB7Ci0g ICAgICBfdmlzaWJsZSA9IGV2YWxGdW5jKHZpc2libGUsIG9yaWdEYXRhKTsKKyAgICAgIF92aXNp YmxlID0gZXZhbEZ1bmMoc2NoZW1hLCB2aXNpYmxlLCBvcmlnRGF0YSk7CiAgICAgfQogCi0gICAg ZGlzYWJsZWQgPSBldmFsRnVuYyhkaXNhYmxlZCwgb3JpZ0RhdGEpOworICAgIGRpc2FibGVkID0g ZXZhbEZ1bmMoc2NoZW1hLCBkaXNhYmxlZCwgb3JpZ0RhdGEpOwogICAgIHJlYWRvbmx5ID0gdHJ1 ZTsKICAgICBpZihfdmlzaWJsZSAmJiB2ZXJJbkxpbWl0KSB7CiAgICAgICBpZighdGFic1tncm91 cF0pIHRhYnNbZ3JvdXBdID0gW107CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMv VGhlbWUvaW5kZXguanN4IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL1RoZW1lL2luZGV4LmpzeApp bmRleCA1N2JmNzI5NjQuLjZhNmUxZmMyOSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL1RoZW1lL2luZGV4LmpzeAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvVGhlbWUvaW5k ZXguanN4CkBAIC0yNTEsMTcgKzI1MSwxNyBAQCBmdW5jdGlvbiBnZXRGaW5hbFRoZW1lKGJhc2VU aGVtZSkgewogICAgICAgICAgIGZvbnRTaXplOiBiYXNlVGhlbWUudHlwb2dyYXBoeS5mb250U2l6 ZSwKICAgICAgICAgICBoZWlnaHQ6ICd1bnNldCcsCiAgICAgICAgICAgYmFja2dyb3VuZENvbG9y OiBiYXNlVGhlbWUucGFsZXR0ZS5iYWNrZ3JvdW5kLmRlZmF1bHQsCi0gICAgICAgICAgJyZbcmVh ZG9ubHldJzogewotICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYXNlVGhlbWUucGFsZXR0 ZS5pbnB1dERpc2FibGVkQmcsCi0gICAgICAgICAgfQorICAgICAgICAgICcmW3JlYWRvbmx5XSwg Ji5NdWktZGlzYWJsZWQnOiB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhc2VUaGVt ZS5vdGhlclZhcnMuaW5wdXREaXNhYmxlZEJnLAorICAgICAgICAgIH0sCiAgICAgICAgIH0sCiAg ICAgICAgIGlucHV0OiB7CiAgICAgICAgICAgZm9udFNpemU6IGJhc2VUaGVtZS50eXBvZ3JhcGh5 LmZvbnRTaXplLAogICAgICAgICAgIGhlaWdodDogJ3Vuc2V0JywKICAgICAgICAgICBiYWNrZ3Jv dW5kQ29sb3I6IGJhc2VUaGVtZS5wYWxldHRlLmJhY2tncm91bmQuZGVmYXVsdCwKLSAgICAgICAg ICAnJltyZWFkb25seV0nOiB7CisgICAgICAgICAgJyZbcmVhZG9ubHldLCAmLk11aS1kaXNhYmxl ZCc6IHsKICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFzZVRoZW1lLm90aGVyVmFycy5p bnB1dERpc2FibGVkQmcsCi0gICAgICAgICAgfQorICAgICAgICAgIH0sCiAgICAgICAgIH0KICAg ICAgIH0sCiAgICAgICBNdWlJY29uQnV0dG9uOiB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9z dGF0aWMvanMvY29tcG9uZW50cy9Gb3JtQ29tcG9uZW50cy5qc3ggYi93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvY29tcG9uZW50cy9Gb3JtQ29tcG9uZW50cy5qc3gKaW5kZXggNjYwMzY2ODUxLi5mNWRk NWY5OGIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRzL0Zvcm1D b21wb25lbnRzLmpzeAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY29tcG9uZW50cy9Gb3Jt Q29tcG9uZW50cy5qc3gKQEAgLTUzNSw3ICs1MzUsNyBAQCBmdW5jdGlvbiBnZXRSZWFsVmFsdWUo b3B0aW9ucywgdmFsdWUsIGNyZWF0YWJsZSkgewogfQogCiBleHBvcnQgZnVuY3Rpb24gSW5wdXRT ZWxlY3QoewotICBjaWQsIG9uQ2hhbmdlLCBvcHRpb25zLCByZWFkb25seT1mYWxzZSwgdmFsdWUs IGNvbnRyb2xQcm9wcz17fSwgb3B0aW9uc0xvYWRlZCwgZGlzYWJsZWQsIC4uLnByb3BzfSkgewor ICAgIGNpZCwgb25DaGFuZ2UsIG9wdGlvbnMsIHJlYWRvbmx5PWZhbHNlLCB2YWx1ZSwgY29udHJv bFByb3BzPXt9LCBvcHRpb25zTG9hZGVkLCBkaXNhYmxlZCwgLi4ucHJvcHN9KSB7CiAgIGNvbnN0 IFtbZmluYWxPcHRpb25zLCBpc0xvYWRpbmddLCBzZXRGaW5hbE9wdGlvbnNdID0gdXNlU3RhdGUo W1tdLCB0cnVlXSk7CiAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTsKIApAQCAtNTYzLDcgKzU2 Myw5IEBAIGV4cG9ydCBmdW5jdGlvbiBJbnB1dFNlbGVjdCh7CiAgICAgfQogICB9LCBbb25DaGFu Z2VdKTsKIAotICBjb25zdCByZWFsVmFsdWUgPSBnZXRSZWFsVmFsdWUoZmluYWxPcHRpb25zLCB2 YWx1ZSwgY29udHJvbFByb3BzLmNyZWF0YWJsZSk7CisgIC8qIEFwcGx5IGZpbHRlciBpZiBhbnkg Ki8KKyAgY29uc3QgZmlsdGVyZWRPcHRpb25zID0gKGNvbnRyb2xQcm9wcy5maWx0ZXIgJiYgY29u dHJvbFByb3BzLmZpbHRlcihmaW5hbE9wdGlvbnMpKSB8fCBmaW5hbE9wdGlvbnM7CisgIGNvbnN0 IHJlYWxWYWx1ZSA9IGdldFJlYWxWYWx1ZShmaWx0ZXJlZE9wdGlvbnMsIHZhbHVlLCBjb250cm9s UHJvcHMuY3JlYXRhYmxlKTsKICAgY29uc3Qgb3RoZXJQcm9wcyA9IHsKICAgICBpc1NlYXJjaGFi bGU6ICFyZWFkb25seSwKICAgICBpc0NsZWFyYWJsZTogIXJlYWRvbmx5ICYmICghXy5pc1VuZGVm aW5lZChjb250cm9sUHJvcHMuYWxsb3dDbGVhcikgPyBjb250cm9sUHJvcHMuYWxsb3dDbGVhciA6 IHRydWUpLApAQCAtNTgxLDcgKzU4Myw3IEBAIGV4cG9ydCBmdW5jdGlvbiBJbnB1dFNlbGVjdCh7 CiAgICAgb3Blbk1lbnVPbkNsaWNrOiAhcmVhZG9ubHksCiAgICAgb25DaGFuZ2U6IG9uQ2hhbmdl T3B0aW9uLAogICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLAotICAgIG9wdGlvbnM6IGZpbmFsT3B0 aW9ucywKKyAgICBvcHRpb25zOiBmaWx0ZXJlZE9wdGlvbnMsCiAgICAgdmFsdWU6IHJlYWxWYWx1 ZSwKICAgICBtZW51UG9ydGFsVGFyZ2V0OiBkb2N1bWVudC5ib2R5LAogICAgIHN0eWxlczogc3R5 bGVzLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3V0aWxzLmpzIGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL3V0aWxzLmpzCmluZGV4IDgxYTNiMGZlOC4uM2VhYTU1MjgzIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdXRpbHMuanMKKysrIGIvd2ViL3BnYWRtaW4v c3RhdGljL2pzL3V0aWxzLmpzCkBAIC00MTAsOSArNDEwLDkgQEAgZnVuY3Rpb24gY2hlY2tCaW5h cnlQYXRoRXhpc3RzKGJpbmFyeVBhdGhBcnJheSwgc2VsZWN0ZWRTZXJ2ZXJWZXJzaW9uKSB7CiB9 CiAKIC8qIElmIGEgZnVuY3Rpb24sIHRoZW4gZXZhbHVhdGUgKi8KLWV4cG9ydCBmdW5jdGlvbiBl dmFsRnVuYyhmdW5jLCBwYXJhbSkgeworZXhwb3J0IGZ1bmN0aW9uIGV2YWxGdW5jKG9iaiwgZnVu YywgcGFyYW0pIHsKICAgaWYoXy5pc0Z1bmN0aW9uKGZ1bmMpKSB7Ci0gICAgcmV0dXJuIGZ1bmMu YXBwbHkobnVsbCwgW3BhcmFtXSk7CisgICAgcmV0dXJuIGZ1bmMuYXBwbHkob2JqLCBbcGFyYW1d KTsKICAgfQogICByZXR1cm4gZnVuYzsKIH0K --000000000000b0ea8005c5d002df--