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 1hi1qH-0003L1-Vn for pgadmin-hackers@arkaria.postgresql.org; Mon, 01 Jul 2019 19:19:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hi1qG-0002T5-Qb for pgadmin-hackers@arkaria.postgresql.org; Mon, 01 Jul 2019 19:19:56 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hi1qG-0002Sy-D5 for pgadmin-hackers@lists.postgresql.org; Mon, 01 Jul 2019 19:19:56 +0000 Received: from mail-qt1-x836.google.com ([2607:f8b0:4864:20::836]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hi1qA-0001rQ-Od for pgadmin-hackers@postgresql.org; Mon, 01 Jul 2019 19:19:56 +0000 Received: by mail-qt1-x836.google.com with SMTP id i34so15865550qta.6 for ; Mon, 01 Jul 2019 12:19:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=NKdW0XVenx05/s7bD+BemqzX9+jYyporyZJis9hwxiQ=; b=Htfl14tGjd6u+jfB4XnIvB+VPn4KNbov96FhGae3OJGWPzRMBqfzzgZ52fCQmLp4jB mzbvRP0lebyos7en81xHqek2oc0pOgQspOz7dd/Nu6RnyVB1TiJkFffYOl7kmHwvQHUr +kPIdNWJQqRFeclBpAfEc/GWFH+NqLS8RA2yWKAh7SiPcDWbTDnm0PlH0zdA3t9aHXEX f78uWVWu9ue7eTKcsPranPxEHc44m2H6DbfY5f83Y7kJXbzmvUxraZoghhxzFjCkzSGO gJu8+FXISlBL8Da9J7wpgVJ3JhT49fMgjBTtpaPZUB4dtm1WK/nEo9afIxwcVzK9alOy DK0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=NKdW0XVenx05/s7bD+BemqzX9+jYyporyZJis9hwxiQ=; b=iCqP9CrLVB8k/WU4hg+ZbEyxqZ/o5Pbq3856f1W2m78DLu0U3REMzUbnPIdJ725CTh XgH+pM3t7WjtkQ4W0a0PNrgVLcj7BTN+pqUNZjhmeYoty2KhAj0qow8Gf/KEB/eO5kvB /eNj0KZxxWKpkKWqE2P+ZMvV+BxB9F73tW3IWLlWiI4C38tNjueghAZ/jHNpiPnPokus bCanXxWgoxOEUapVvVbCRTUvyNofOJAfB0fHZGQNa1Xm3Vs1hlbLyOG6UTWV9/1GHc05 QSE5smXmRFOL8Vvg3eQ7/fVLs4lNhsk5m/YcrR0y1xDdIFpwavku5ckNTjrdBxoesb8B PIFw== X-Gm-Message-State: APjAAAVKwkpZRB+KJ/3z2iDX5VVOj78hoqWB92c+ePainvUDqQCHjrXH /oQLv6qer6ElIGPcyVuiwl5wyUZslRjFg2kHydWpfkgq X-Google-Smtp-Source: APXvYqzy+ZeZjhkVCQnvHFSj6Gac9pG5PBvntL55gObz3TDOPCyn/Aobe7lG1EOAmZoUh4DqM80zh214/czxiDOmMCs= X-Received: by 2002:ac8:2b51:: with SMTP id 17mr21755176qtv.206.1562008787832; Mon, 01 Jul 2019 12:19:47 -0700 (PDT) MIME-Version: 1.0 From: Yosry Muhammad Date: Mon, 1 Jul 2019 21:19:36 +0200 Message-ID: Subject: [GSoC] Finalized First Patch To: pgadmin-hackers@postgresql.org, Dave Page Content-Type: multipart/mixed; boundary="000000000000ef7335058ca3825a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000ef7335058ca3825a Content-Type: multipart/alternative; boundary="000000000000ef7332058ca38258" --000000000000ef7332058ca38258 Content-Type: text/plain; charset="UTF-8" Dear all, This is a final version of the patch I have been working on since the beginning of the GSoC project with tests and documentation. This patch includes: Features: - Implementeing the first version detecting updatable resultsets. Saving edited data works the same way as View Data mode (with small changes). A resultset is updatable if: - All columns belong to the same table. - All primary keys are selected. - No duplicate columns. - Adding the new Save Data icon and its shortcut in preferences. The old Save icon is used exclusively for Saving files now. - Integrating saving data changes into the ongoing transaction (if any). The user is notified that they need to commit the changes if auto-commit is off. - A failed save of data changes rolls back the data changes only, does not rollback previous queries in the same transaction. - Alerting the user when Execute/Explain is clicked with unsaved changes in the grid. - Modified/New cells are now highlighted. - Alerting the user when exiting with uncommited transactions. - Re-implementing the on tab close event of the query tool as multiple dialogs may be required for: unsaved data changes, unsaved file changes & uncommited transactions (they can all be enabled/disabled in preferences). - Hiding queries generated by pgAdmin from query history (until they are substituted by a mogrified version and have a checkbox added to enable/disable them). Bug fixes: - Fixed a bug where exit on save would exit even if the save was not successful. - Fixed a bug where alertify confirm dialogs had midword break wrapping. Tests: - Python tests: - test_is_query_resultset_updatable: Tests that updatable resultsets are detected correctly. - test_save_changed_data: Tests that additions, deletions & updates are performed correctly on updatable resultsets. - Feature tests: - query_tool_journey_test (existing - extended): Test that when the query resultset is updatable the user can modify cells and add new rows (and vice versa). - Updated other feature tests to match the new icon. - JS tests: - Updated call_render_after_poll_specs.js & keyboard_shortcuts_specs.js to test updates in related parts of the code. I could not add JS tests to test that the new Save Data button is enabled when the user edits a cell as I cannot mimic the actions of editing the grid. However, the new button is now used in View/Edit data feature tests and it works correctly. I also could not add JS tests to check that when the resultset is updatable the grid should be editable as the current code in sqleditor.js is not testable and it will required a lot of refactoring of this file, but again, this is covered by feature tests. Documentation: - Updated editgrid.rst, query_tool.rst, query_tool_shortcuts.rst, preferences.rst & keyboard_shortcuts.rst to match the new changes. - Updated the following screenshots: query_output_data.png, query_tool.png & query_toolbar.png The patch passes all tests performed by "make check" command. Please review, looking forward to any comments or feedback. Thanks ! -- *Yosry Muhammad Yosry* Computer Engineering student, The Faculty of Engineering, Cairo University (2021). Class representative of CMP 2021. https://www.linkedin.com/in/yosrym93/ --000000000000ef7332058ca38258 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Dear all,

This is a final ve= rsion of the patch I have been working on since the beginning of the GSoC p= roject with tests and documentation.

This patch in= cludes:

Features:
- Implementeing th= e first version detecting updatable resultsets. Saving edited data works th= e same way as View Data mode (with small changes). A resultset is updatable= if:
=C2=A0=C2=A0=C2=A0 - All columns belong to the same table.
=C2=A0=C2=A0=C2=A0 - All primary keys are selected.
=C2= =A0=C2=A0=C2=A0 - No duplicate columns.

- Adding t= he new Save Data icon and its shortcut in preferences. The old Save icon is= used exclusively for Saving files now.
- Integrating saving data= changes into the ongoing transaction (if any). The user is notified that t= hey need to commit the changes if auto-commit is off.
- A fai= led save of data changes rolls back the data changes only, does not rollbac= k previous queries in the same transaction.
- Alerting the user w= hen Execute/Explain is clicked with unsaved changes in the grid.
= - Modified/New cells are now highlighted.
- Alerting the user when exiti= ng with uncommited transactions.
- Re-implementing the on tab clo= se event of the query tool as multiple dialogs may be required for: unsaved= data changes, unsaved file changes & uncommited transactions (they can= all be enabled/disabled in preferences).
- Hiding queries generated by = pgAdmin from query history (until they are substituted by a mogrified versi= on and have a checkbox added to enable/disable them).

Bug fixes:
- Fixed a bug where exit on save would exi= t even if the save was not successful.
- Fixed a bug where alerti= fy confirm dialogs had midword break wrapping.

Tes= ts:
- Python tests:
=C2=A0=C2=A0=C2=A0 - test_is_qu= ery_resultset_updatable: Tests that updatable resultsets are detected corre= ctly.
=C2=A0=C2=A0=C2=A0 - test_save_changed_data: Tests that= additions, deletions & updates are performed correctly on updatable re= sultsets.
- Feature tests:
=C2=A0=C2=A0=C2=A0 - query_tool_jou= rney_test (existing - extended): Test that when the query resultset is upda= table the user can modify cells and add new rows (and vice versa).
=C2=A0=C2=A0=C2=A0 - Updated other feature tests to match the new icon.
- JS tests:
=C2=A0=C2=A0=C2=A0 -=C2=A0 Updated call_= render_after_poll_specs.js & keyboard_shortcuts_specs.js to test update= s in related parts of the code.
=C2=A0=C2=A0
I cou= ld not add JS tests to test that the new Save Data button is enabled when t= he user edits a cell as I cannot mimic the actions of editing the grid. How= ever, the new button is now used in View/Edit data feature tests and it wor= ks correctly.
I also could not add JS tests to check that wh= en the resultset is updatable the grid should be editable as the current co= de in sqleditor.js is not testable and it will required a lot of refactorin= g of this file, but again, this is covered by feature tests.

=
Documentation:
- Updated editgrid.rst, query_tool.rst,= query_tool_shortcuts.rst, preferences.rst & keyboard_shortcuts.rst to = match the new changes.
- Updated the following screenshots: query= _output_data.png, query_tool.png & query_toolbar.png

=
The patch passes all tests performed by "make check" c= ommand.

Please review, looking forward to any comm= ents or feedback.

Thanks !

--
Yosry Muhammad Y= osry

Computer Engineering student,
The Faculty of Engineering,
Cairo University (2021).
Cla= ss representative of CMP 2021.
--000000000000ef7332058ca38258-- --000000000000ef7335058ca3825a Content-Type: text/x-patch; charset="US-ASCII"; name="query_tool_automatic_mode_switch_v1.5.patch" Content-Disposition: attachment; filename="query_tool_automatic_mode_switch_v1.5.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jxkrmb150 ZGlmZiAtLWdpdCBhL2RvY3MvZW5fVVMvZWRpdGdyaWQucnN0IGIvZG9jcy9lbl9VUy9lZGl0Z3Jp ZC5yc3QKaW5kZXggMTg1NDI3NGQuLmI2OTc0NDlkIDEwMDY0NAotLS0gYS9kb2NzL2VuX1VTL2Vk aXRncmlkLnJzdAorKysgYi9kb2NzL2VuX1VTL2VkaXRncmlkLnJzdApAQCAtNDIsMTMgKzQyLDE1 IEBAIFRoZSB0b3Agcm93IG9mIHRoZSBkYXRhIGdyaWQgZGlzcGxheXMgdGhlIG5hbWUgb2YgZWFj aCBjb2x1bW4sIHRoZSBkYXRhIHR5cGUsCiBhbmQgaWYgYXBwbGljYWJsZSwgdGhlIG51bWJlciBv ZiBjaGFyYWN0ZXJzIGFsbG93ZWQuIEEgY29sdW1uIHRoYXQgaXMgcGFydCBvZgogdGhlIHByaW1h cnkga2V5IHdpbGwgYWRkaXRpb25hbGx5IGJlIG1hcmtlZCB3aXRoIFtQS10uCiAKKy4uIF9tb2Rp ZnlpbmctZGF0YS1ncmlkOgorCiBUbyBtb2RpZnkgdGhlIGRpc3BsYXllZCBkYXRhOgogCiAqIFRv IGNoYW5nZSBhIG51bWVyaWMgdmFsdWUgd2l0aGluIHRoZSBncmlkLCBkb3VibGUtY2xpY2sgdGhl IHZhbHVlIHRvIHNlbGVjdAogICB0aGUgZmllbGQuICBNb2RpZnkgdGhlIGNvbnRlbnQgaW4gdGhl IHNxdWFyZSBpbiB3aGljaCBpdCBpcyBkaXNwbGF5ZWQuCiAqIFRvIGNoYW5nZSBhIG5vbi1udW1l cmljIHZhbHVlIHdpdGhpbiB0aGUgZ3JpZCwgZG91YmxlLWNsaWNrIHRoZSBjb250ZW50IHRvCiAg IGFjY2VzcyB0aGUgZWRpdCBidWJibGUuICBBZnRlciBtb2RpZnlpbmcgdGhlIGNvbnRlbnRvZiB0 aGUgZWRpdCBidWJibGUsIGNsaWNrCi0gIHRoZSAqU2F2ZSogYnV0dG9uIHRvIGRpc3BsYXkgeW91 ciBjaGFuZ2VzIGluIHRoZSBkYXRhIGdyaWQsIG9yICpDYW5jZWwqIHRvCisgIHRoZSAqT2sqIGJ1 dHRvbiB0byBkaXNwbGF5IHlvdXIgY2hhbmdlcyBpbiB0aGUgZGF0YSBncmlkLCBvciAqQ2FuY2Vs KiB0bwogICBleGl0IHRoZSBlZGl0IGJ1YmJsZSB3aXRob3V0IHNhdmluZy4KIAogVG8gZW50ZXIg YSBuZXdsaW5lIGNoYXJhY3RlciwgY2xpY2sgQ3RybC1FbnRlciBvciBTaGlmdC1FbnRlci4gIE5l d2xpbmUKQEAgLTcwLDkgKzcyLDcgQEAgcXVvdGVzIHRvIHRoZSB0YWJsZSwgeW91IG5lZWQgdG8g ZXNjYXBlIHRoZXNlIHF1b3RlcywgYnkgdHlwaW5nIFwnXCcKIFRvIGRlbGV0ZSBhIHJvdywgcHJl c3MgdGhlICpEZWxldGUqIHRvb2xiYXIgYnV0dG9uLiAgQSBwb3B1cCB3aWxsIG9wZW4sIGFza2lu ZwogeW91IHRvIGNvbmZpcm0gdGhlIGRlbGV0aW9uLgogCi1UbyBjb21taXQgdGhlIGNoYW5nZXMg dG8gdGhlIHNlcnZlciwgc2VsZWN0IHRoZSAqU2F2ZSogdG9vbGJhciBidXR0b24uCi1Nb2RpZmlj YXRpb25zIHRvIGEgcm93IGFyZSB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIgYXV0b21hdGljYWxseSB3 aGVuIHlvdSBzZWxlY3QKLWEgZGlmZmVyZW50IHJvdy4KK1RvIGNvbW1pdCB0aGUgY2hhbmdlcyB0 byB0aGUgc2VydmVyLCBzZWxlY3QgdGhlICpTYXZlIERhdGEqIHRvb2xiYXIgYnV0dG9uLgogCiAq Kkdlb21ldHJ5IERhdGEgVmlld2VyKioKIApkaWZmIC0tZ2l0IGEvZG9jcy9lbl9VUy9pbWFnZXMv cXVlcnlfb3V0cHV0X2RhdGEucG5nIGIvZG9jcy9lbl9VUy9pbWFnZXMvcXVlcnlfb3V0cHV0X2Rh dGEucG5nCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggOGVlYzcwODcuLjZm NmYwZGMxCkJpbmFyeSBmaWxlcyBhL2RvY3MvZW5fVVMvaW1hZ2VzL3F1ZXJ5X291dHB1dF9kYXRh LnBuZyBhbmQgYi9kb2NzL2VuX1VTL2ltYWdlcy9xdWVyeV9vdXRwdXRfZGF0YS5wbmcgZGlmZmVy CmRpZmYgLS1naXQgYS9kb2NzL2VuX1VTL2ltYWdlcy9xdWVyeV90b29sLnBuZyBiL2RvY3MvZW5f VVMvaW1hZ2VzL3F1ZXJ5X3Rvb2wucG5nCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQK aW5kZXggYjlkMTY1ZWYuLjZmNmYwZGMxCkJpbmFyeSBmaWxlcyBhL2RvY3MvZW5fVVMvaW1hZ2Vz L3F1ZXJ5X3Rvb2wucG5nIGFuZCBiL2RvY3MvZW5fVVMvaW1hZ2VzL3F1ZXJ5X3Rvb2wucG5nIGRp ZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9lbl9VUy9pbWFnZXMvcXVlcnlfdG9vbGJhci5wbmcgYi9k b2NzL2VuX1VTL2ltYWdlcy9xdWVyeV90b29sYmFyLnBuZwppbmRleCA5YWU5Y2VmMS4uYjg3YzBk NzIgMTAwNjQ0CkJpbmFyeSBmaWxlcyBhL2RvY3MvZW5fVVMvaW1hZ2VzL3F1ZXJ5X3Rvb2xiYXIu cG5nIGFuZCBiL2RvY3MvZW5fVVMvaW1hZ2VzL3F1ZXJ5X3Rvb2xiYXIucG5nIGRpZmZlcgpkaWZm IC0tZ2l0IGEvZG9jcy9lbl9VUy9rZXlib2FyZF9zaG9ydGN1dHMucnN0IGIvZG9jcy9lbl9VUy9r ZXlib2FyZF9zaG9ydGN1dHMucnN0CmluZGV4IDM2MGVmYjMyLi40MmFlZTJhYSAxMDA2NDQKLS0t IGEvZG9jcy9lbl9VUy9rZXlib2FyZF9zaG9ydGN1dHMucnN0CisrKyBiL2RvY3MvZW5fVVMva2V5 Ym9hcmRfc2hvcnRjdXRzLnJzdApAQCAtMTMxLDYgKzEzMSw4IEBAIFdoZW4gdXNpbmcgdGhlIFF1 ZXJ5IFRvb2wsIHRoZSBmb2xsb3dpbmcgc2hvcnRjdXRzIGFyZSBhdmFpbGFibGU6CiAgICArPT09 PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0rCiAgICB8IEY1ICAgICAgICAgICAgICAgICAgICAgICB8 IEY1ICAgICAgICAgICAgICAgICB8IEV4ZWN1dGUgcXVlcnkgICAgICAgICAgICAgICAgICAgICB8 CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IEY2ICAgICAgICAgICAgICAg ICAgICAgICB8IEY2ICAgICAgICAgICAgICAgICB8IFNhdmUgZGF0YSBjaGFuZ2VzICAgICAgICAg ICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IEY3ICAgICAg ICAgICAgICAgICAgICAgICB8IEY3ICAgICAgICAgICAgICAgICB8IEVYUExBSU4gcXVlcnkgICAg ICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8 IFNoaWZ0ICsgRjcgICAgICAgICAgICAgICB8IFNoaWZ0ICsgRjcgICAgICAgICB8IEVYUExBSU4g QU5BTFlaRSBxdWVyeSAgICAgICAgICAgICB8CmRpZmYgLS1naXQgYS9kb2NzL2VuX1VTL3ByZWZl cmVuY2VzLnJzdCBiL2RvY3MvZW5fVVMvcHJlZmVyZW5jZXMucnN0CmluZGV4IDI4ZWNiNmFiLi4w ZTA3ZWJjNSAxMDA2NDQKLS0tIGEvZG9jcy9lbl9VUy9wcmVmZXJlbmNlcy5yc3QKKysrIGIvZG9j cy9lbl9VUy9wcmVmZXJlbmNlcy5yc3QKQEAgLTI5NCw2ICsyOTQsMTAgQEAgYSBncmFwaGljYWwg RVhQTEFJTi4KIAogVXNlIHRoZSBmaWVsZHMgb24gdGhlICpPcHRpb25zKiBwYW5lbCB0byBtYW5h Z2UgZWRpdG9yIHByZWZlcmVuY2VzLgogCisqIFdoZW4gdGhlICpBbGVydCBvbiB1bmNvbW1pdGVk IHRyYW5zYWN0aW9ucz8qIHN3aXRjaCBpcyBzZXQgdG8gKlRydWUqLCB0aGUKKyAgUXVlcnkgVG9v bCB3aWxsIGFsZXJ0IHRoZSB1c2VyIHdoZW4gZXhpdGluZyB3aGlsZSB0aGUgY3VycmVudCB0cmFu c2FjdGlvbgorICBpcyBub3QgY29tbWl0ZWQuCisKICogV2hlbiB0aGUgKkF1dG8tQ29tbWl0Pyog c3dpdGNoIGlzIHNldCB0byAqVHJ1ZSosIGVhY2ggc3VjY2Vzc2Z1bCBxdWVyeSBpcwogICBjb21t aXR0ZWQgYWZ0ZXIgZXhlY3V0aW9uLgogCmRpZmYgLS1naXQgYS9kb2NzL2VuX1VTL3F1ZXJ5X3Rv b2wucnN0IGIvZG9jcy9lbl9VUy9xdWVyeV90b29sLnJzdAppbmRleCAyZjcwMDBlMy4uMDdmY2Fh NjIgMTAwNjQ0Ci0tLSBhL2RvY3MvZW5fVVMvcXVlcnlfdG9vbC5yc3QKKysrIGIvZG9jcy9lbl9V Uy9xdWVyeV90b29sLnJzdApAQCAtMTIsMTEgKzEyLDEzIEBAIGFsbG93cyB5b3UgdG86CiAKICog SXNzdWUgYWQtaG9jIFNRTCBxdWVyaWVzLgogKiBFeGVjdXRlIGFyYml0cmFyeSBTUUwgY29tbWFu ZHMuCisqIEVkaXQgdGhlIHJlc3VsdCBzZXQgb2YgYSBTRUxFQ1QgcXVlcnkgaWYgaXQgaXMgOnJl ZjpgdXBkYXRhYmxlIDx1cGRhdGFibGUtcmVzdWx0LXNldD5gLgogKiBEaXNwbGF5cyBjdXJyZW50 IGNvbm5lY3Rpb24gYW5kIHRyYW5zYWN0aW9uIHN0YXR1cyBhcyBjb25maWd1cmVkIGJ5IHRoZSB1 c2VyLgogKiBTYXZlIHRoZSBkYXRhIGRpc3BsYXllZCBpbiB0aGUgb3V0cHV0IHBhbmVsIHRvIGEg Q1NWIGZpbGUuCiAqIFJldmlldyB0aGUgZXhlY3V0aW9uIHBsYW4gb2YgYSBTUUwgc3RhdGVtZW50 IGluIGVpdGhlciBhIHRleHQgb3IgYSBncmFwaGljYWwgZm9ybWF0LgogKiBWaWV3IGFuYWx5dGlj YWwgaW5mb3JtYXRpb24gYWJvdXQgYSBTUUwgc3RhdGVtZW50LgogCisKIC4uIGltYWdlOjogaW1h Z2VzL3F1ZXJ5X3Rvb2wucG5nCiAgICAgOmFsdDogUXVlcnkgdG9vbCB3aW5kb3cKICAgICA6YWxp Z246IGNlbnRlcgpAQCAtMTIwLDYgKzEyMiwyNSBAQCBZb3UgY2FuOgogICBzZXQgcXVlcnkgZXhl Y3V0aW9uIG9wdGlvbnMuCiAqIFVzZSB0aGUgKkRvd25sb2FkIGFzIENTViogaWNvbiB0byBkb3du bG9hZCB0aGUgY29udGVudCBvZiB0aGUgKkRhdGEgT3V0cHV0KgogICB0YWIgYXMgYSBjb21tYS1k ZWxpbWl0ZWQgZmlsZS4KKyogRWRpdCB0aGUgZGF0YSBpbiB0aGUgcmVzdWx0IHNldCBvZiBhIFNF TEVDVCBxdWVyeSBpZiBpdCBpcyB1cGRhdGFibGUuCisKKy4uIF91cGRhdGFibGUtcmVzdWx0LXNl dDoKKworQSByZXN1bHQgc2V0IGlzIHVwZGF0YWJsZSBpZjoKKworKiBBbGwgdGhlIGNvbHVtbnMg YmVsb25nIHRvIHRoZSBzYW1lIHRhYmxlLgorKiBBbGwgdGhlIHByaW1hcnkga2V5cyBvZiB0aGUg dGFibGUgYXJlIHNlbGVjdGVkLgorKiBObyBjb2x1bW5zIGFyZSBkdXBsaWNhdGVkLgorCitBbiB1 cGRhdGFibGUgcmVzdWx0IHNldCBjYW4gYmUgbW9kaWZpZWQganVzdCBsaWtlIGluIDpyZWY6YFZp ZXcvRWRpdCBEYXRhIDxtb2RpZnlpbmctZGF0YS1ncmlkPmAgbW9kZS4KKworSWYgQXV0by1jb21t aXQgaXMgb2ZmLCB0aGUgZGF0YSBjaGFuZ2VzIGFyZSBtYWRlIGFzIHBhcnQgb2YgdGhlIG9uZ29p bmcgdHJhbnNhY3Rpb24sIGlmCitubyB0cmFuc2FjdGlvbiBpcyBvbmdvaW5nIGEgbmV3IG9uZSBp cyBpbml0aWF0ZWQuIFRoZSBkYXRhIGNoYW5nZXMgYXJlIG5vdCBjb21taXRlZCB0byAKK3RoZSBk YXRhYmFzZSB1bmxlc3MgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdGVkLgorSWYgYW55IGVycm9y cyBvY2N1ciBkdXJpbmcgc2F2aW5nIChmb3IgZXhhbXBsZSwgdHJ5aW5nIHRvIHNhdmUgTlVMTCBp bnRvIGEgY29sdW1uIAord2l0aCBOT1QgTlVMTCBjb25zdHJhaW50KSB0aGUgZGF0YSBjaGFuZ2Vz IGFyZSByb2xsZWQgYmFjaywgaG93ZXZlciwgYW55IHByZXZpb3VzbHkgZXhlY3V0ZWQgCitxdWVy aWVzIGluIHRoZSBvbmdvaW5nIHRyYW5zYWN0aW9uIGFyZSBub3Qgcm9sbGVkIGJhY2suCisKIAog QWxsIHJvd3NldHMgZnJvbSBwcmV2aW91cyBxdWVyaWVzIG9yIGNvbW1hbmRzIHRoYXQgYXJlIGRp c3BsYXllZCBpbiB0aGUgKkRhdGEKIE91dHB1dCogcGFuZWwgd2lsbCBiZSBkaXNjYXJkZWQgd2hl biB5b3UgaW52b2tlIGFub3RoZXIgcXVlcnk7IG9wZW4gYW5vdGhlcgpkaWZmIC0tZ2l0IGEvZG9j cy9lbl9VUy9xdWVyeV90b29sX3Rvb2xiYXIucnN0IGIvZG9jcy9lbl9VUy9xdWVyeV90b29sX3Rv b2xiYXIucnN0CmluZGV4IDNjZTlkZWViLi4yYTJiNWJlYSAxMDA2NDQKLS0tIGEvZG9jcy9lbl9V Uy9xdWVyeV90b29sX3Rvb2xiYXIucnN0CisrKyBiL2RvY3MvZW5fVVMvcXVlcnlfdG9vbF90b29s YmFyLnJzdApAQCAtMzEsNyArMzEsNyBAQCBGaWxlIE9wdGlvbnMKICAgICs9PT09PT09PT09PT09 PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09 PT09PT09PT09PT09KwogICAgfCAqT3BlbiBGaWxlKiAgICAgICAgICB8IENsaWNrIHRoZSAqT3Bl biBGaWxlKiBpY29uIHRvIGRpc3BsYXkgYSBwcmV2aW91c2x5IHNhdmVkIHF1ZXJ5IGluIHRoZSBT UUwgRWRpdG9yLiAgICAgICAgICAgICAgICAgfCBBY2Nlc3NrZXkgKyBPICB8CiAgICArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgKlNhdmUqICAgICAgICAgICAgICAgfCBDbGljayB0 aGUgKlNhdmUqIGljb24gdG8gcGVyZm9ybSBhIHF1aWNrLXNhdmUgb2YgYSBwcmV2aW91c2x5IHNh dmVkIHF1ZXJ5LCBvciB0byBhY2Nlc3MgdGhlICAgICAgIHwgQWNjZXNza2V5ICsgUyAgfAorICAg fCAqU2F2ZSBGaWxlKiAgICAgICAgICB8IENsaWNrIHRoZSAqU2F2ZSogaWNvbiB0byBwZXJmb3Jt IGEgcXVpY2stc2F2ZSBvZiBhIHByZXZpb3VzbHkgc2F2ZWQgcXVlcnksIG9yIHRvIGFjY2VzcyB0 aGUgICAgICAgfCBBY2Nlc3NrZXkgKyBTICB8CiAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwg KlNhdmUqIG1lbnU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg IHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfAogICAgfCAgICAgICAgICAgICAgICAg ICAgICB8ICAqIFNlbGVjdCAqU2F2ZSogdG8gc2F2ZSB0aGUgc2VsZWN0ZWQgY29udGVudCBvZiB0 aGUgU1FMIEVkaXRvciBwYW5lbCBpbiBhICBmaWxlLiAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICB8CkBAIC01MCw2ICs1MCw4IEBAIEVkaXRpbmcgT3B0aW9ucwogICAgKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IEljb24gICAgICAgICAgICAgICAgIHwgQmVoYXZpb3Ig ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNob3J0Y3V0ICAgICAgIHwKICAgICs9 PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSs9PT09PT09PT09PT09PT09KworICAgfCAqU2F2ZSBEYXRhKiAgICAgICAgICB8IENs aWNrIHRoZSAqU2F2ZSBEYXRhKiBpY29uIHRvIHNhdmUgZGF0YSBjaGFuZ2VzIGluIHRoZSBEYXRh IE91dHB1dCBQYW5lbCB0byB0aGUgc2VydmVyLiAgICAgICAgICAgfCBGNiAgICAgICAgICAgICB8 CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgKkZpbmQqICAgICAgICAgICAg ICAgfCBVc2UgdGhlICpGaW5kKiBtZW51IHRvIHNlYXJjaCwgcmVwbGFjZSwgb3IgbmF2aWdhdGUg dGhlIGNvZGUgZGlzcGxheWVkIGluIHRoZSBTUUwgRWRpdG9yOiAgICAgICAgIHwgICAgICAgICAg ICAgICAgfAogICAgfCAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCiAgICB8ICAgICAgICAgICAg ICAgICAgICAgIHwgU2VsZWN0ICpGaW5kKiB0byBwcm92aWRlIGEgc2VhcmNoIHRhcmdldCwgYW5k IHNlYXJjaCB0aGUgU1FMIEVkaXRvciBjb250ZW50cy4gICAgICAgICAgICAgICAgICAgICB8IENt ZCtGICAgICAgICAgIHwKQEAgLTY3LDExICs2OSwxMCBAQCBFZGl0aW5nIE9wdGlvbnMKICAgIHwg ICAgICAgICAgICAgICAgICAgICAgfCBTZWxlY3QgKkp1bXAqIHRvIG5hdmlnYXRlIHRvIHRoZSBu ZXh0IG9jY3VycmVuY2Ugb2YgdGhlIHNlYXJjaCB0YXJnZXQuICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgQWx0K0cgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CiAgICB8ICpDb3B5KiAgICAgICAgICAgICAgIHwgQ2xpY2sgdGhlICpDb3B5KiBpY29uIHRvIGNv cHkgdGhlIGNvbnRlbnQgdGhhdCBpcyBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgaW4gdGhlIERhdGEg T3V0cHV0IHBhbmVsLiB8IEFjY2Vzc2tleSArIEMgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAg ICAgfCB3aGVuIGluIFZpZXcvRWRpdCBkYXRhIG1vZGUuICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCi0gICB8ICpQYXN0ZSogICAg ICAgICAgICAgIHwgQ2xpY2sgdGhlICpQYXN0ZSogaWNvbiB0byBwYXN0ZSBhIHByZXZpb3VzbHkg cm93IGludG8gYSBuZXcgcm93IHdoZW4gaW4gVmlldy9FZGl0IGRhdGEgbW9kZS4gICAgICB8IEFj Y2Vzc2tleSArIFAgIHwKKyAgIHwgKlBhc3RlKiAgICAgICAgICAgICAgfCBDbGljayB0aGUgKlBh c3RlKiBpY29uIHRvIHBhc3RlIGEgcHJldmlvdXNseSByb3cgaW50byBhIG5ldyByb3cuICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWNjZXNza2V5ICsgUCAgfAogICAgKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCi0gICB8ICpEZWxldGUqICAgICAgICAgICAgIHwgQ2xpY2sg dGhlICpEZWxldGUqIGljb24gdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCByb3dzIHdoZW4gaW4gVmll dy9FZGl0IGRhdGEgbW9kZS4gICAgICAgICAgICAgICAgICB8IEFjY2Vzc2tleSArIEQgIHwKKyAg IHwgKkRlbGV0ZSogICAgICAgICAgICAgfCBDbGljayB0aGUgKkRlbGV0ZSogaWNvbiB0byBkZWxl dGUgdGhlIHNlbGVjdGVkIHJvd3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgQWNjZXNza2V5ICsgRCAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCiAgICB8ICpFZGl0KiAgICAgICAgICAgICAgIHwgVXNlIG9wdGlvbnMgb24gdGhlICpFZGl0 KiBtZW51IHRvIGFjY2VzcyB0ZXh0IGVkaXRpbmcgdG9vbHM7IHRoZSBvcHRpb25zIG9wZXJhdGUg b24gdGhlIHRleHQgICAgICB8ICAgICAgICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAg ICAgICAgfCBkaXNwbGF5ZWQgaW4gdGhlIFNRTCBFZGl0b3IgcGFuZWwgd2hlbiBpbiBRdWVyeSBU b29sIG1vZGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgfApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9maWxlX21h bmFnZXJfdGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvZmlsZV9tYW5hZ2VyX3Rl c3QucHkKaW5kZXggMWM3NGQ0MGIuLmI2YjM1YzA0IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9m ZWF0dXJlX3Rlc3RzL2ZpbGVfbWFuYWdlcl90ZXN0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2ZlYXR1 cmVfdGVzdHMvZmlsZV9tYW5hZ2VyX3Rlc3QucHkKQEAgLTY1LDcgKzY1LDggQEAgY2xhc3MgQ2hl Y2tGaWxlTWFuYWdlckZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAgICAgICAgIHNlbGYu cGFnZS5vcGVuX3F1ZXJ5X3Rvb2woKQogCiAgICAgZGVmIF9jcmVhdGVfbmV3X2ZpbGUoc2VsZik6 Ci0gICAgICAgIHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcihRdWVyeVRvb2xMb2NhdG9y c0Nzcy5idG5fc2F2ZSkuY2xpY2soKQorICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2Vs ZWN0b3IoUXVlcnlUb29sTG9jYXRvcnNDc3MuYnRuX3NhdmVfZmlsZSlcCisgICAgICAgICAgICAu Y2xpY2soKQogICAgICAgICAjIFNldCB0aGUgWFNTIHZhbHVlIGluIGlucHV0CiAgICAgICAgIHNl bGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcignLmNoYW5nZV9maWxlX3R5cGVzJykKICAgICAg ICAgc2VsZi5wYWdlLmZpbGxfaW5wdXRfYnlfY3NzX3NlbGVjdG9yKCJpbnB1dCNmaWxlLWlucHV0 LXBhdGgiLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9sb2NhdG9ycy5w eSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvbG9jYXRvcnMucHkKaW5kZXggNDY2NzNmMTAu LjMwZWMxZWZiIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL2xvY2F0b3Jz LnB5CisrKyBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvbG9jYXRvcnMucHkKQEAgLTEsNSAr MSw1IEBACiBjbGFzcyBRdWVyeVRvb2xMb2NhdG9yc0NzczoKLSAgICBidG5fc2F2ZSA9ICIjYnRu LXNhdmUiCisgICAgYnRuX3NhdmVfZmlsZSA9ICIjYnRuLXNhdmUtZmlsZSIKICAgICBidG5fZXhl Y3V0ZV9xdWVyeSA9ICIjYnRuLWZsYXNoIgogICAgIGJ0bl9xdWVyeV9kcm9wZG93biA9ICIjYnRu LXF1ZXJ5LWRyb3Bkb3duIgogICAgIGJ0bl9hdXRvX3JvbGxiYWNrID0gIiNidG4tYXV0by1yb2xs YmFjayIKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcXVlcnlfdG9vbF9q b3VybmV5X3Rlc3QucHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3F1ZXJ5X3Rvb2xfam91 cm5leV90ZXN0LnB5CmluZGV4IDc5ZjZiN2RiLi4zY2JmNmY0OCAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vZmVhdHVyZV90ZXN0cy9xdWVyeV90b29sX2pvdXJuZXlfdGVzdC5weQorKysgYi93ZWIv cGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3F1ZXJ5X3Rvb2xfam91cm5leV90ZXN0LnB5CkBAIC03LDYg KzcsNyBAQAogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAoraW1wb3J0IHN5cwogaW1wb3J0IHB5cGVy Y2xpcAogaW1wb3J0IHJhbmRvbQogCkBAIC0yOCwxMSArMjksMjQgQEAgY2xhc3MgUXVlcnlUb29s Sm91cm5leVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICBdCiAKICAgICB0ZXN0X3RhYmxlX25h bWUgPSAiIgorICAgIHRlc3RfZWRpdGFibGVfdGFibGVfbmFtZSA9ICIiCiAKICAgICBkZWYgYmVm b3JlKHNlbGYpOgogICAgICAgICBzZWxmLnRlc3RfdGFibGVfbmFtZSA9ICJ0ZXN0X3RhYmxlIiAr IHN0cihyYW5kb20ucmFuZGludCgxMDAwLCAzMDAwKSkKICAgICAgICAgdGVzdF91dGlscy5jcmVh dGVfdGFibGUoCiAgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi50ZXN0X2RiLCBzZWxmLnRl c3RfdGFibGVfbmFtZSkKKworICAgICAgICBzZWxmLnRlc3RfZWRpdGFibGVfdGFibGVfbmFtZSA9 ICJ0ZXN0X2VkaXRhYmxlX3RhYmxlIiArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHIocmFuZG9tLnJhbmRpbnQoMTAwMCwgMzAwMCkpCisgICAgICAgIGNyZWF0 ZV9zcWwgPSAnJycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JFQVRFIFRBQkxFICIl cyIgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtfY29sdW1uIE5VTUVSSUMg UFJJTUFSWSBLRVksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxfY29s dW1uIE5VTUVSSUMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJycnICUgc2VsZi50ZXN0X2VkaXRhYmxlX3RhYmxlX25hbWUKKyAg ICAgICAgdGVzdF91dGlscy5jcmVhdGVfdGFibGVfd2l0aF9xdWVyeSgKKyAgICAgICAgICAgIHNl bGYuc2VydmVyLCBzZWxmLnRlc3RfZGIsIGNyZWF0ZV9zcWwpCisKICAgICAgICAgc2VsZi5wYWdl LmFkZF9zZXJ2ZXIoc2VsZi5zZXJ2ZXIpCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKQEAgLTQw LDkgKzU0LDIxIEBAIGNsYXNzIFF1ZXJ5VG9vbEpvdXJuZXlUZXN0KEJhc2VGZWF0dXJlVGVzdCk6 CiAgICAgICAgIHNlbGYuX2V4ZWN1dGVfcXVlcnkoCiAgICAgICAgICAgICAiU0VMRUNUICogRlJP TSAlcyBPUkRFUiBCWSB2YWx1ZSAiICUgc2VsZi50ZXN0X3RhYmxlX25hbWUpCiAKKyAgICAgICAg cHJpbnQoIkNvcHkgcm93cy4uLiIsIGZpbGU9c3lzLnN0ZGVyciwgZW5kPSIiKQogICAgICAgICBz ZWxmLl90ZXN0X2NvcGllc19yb3dzKCkKKyAgICAgICAgcHJpbnQoIiBPSy4iLCBmaWxlPXN5cy5z dGRlcnIpCisKKyAgICAgICAgcHJpbnQoIkNvcHkgY29sdW1ucy4uLiIsIGZpbGU9c3lzLnN0ZGVy ciwgZW5kPSIiKQogICAgICAgICBzZWxmLl90ZXN0X2NvcGllc19jb2x1bW5zKCkKKyAgICAgICAg cHJpbnQoIiBPSy4iLCBmaWxlPXN5cy5zdGRlcnIpCisKKyAgICAgICAgcHJpbnQoIkhpc3Rvcnkg dGFiLi4uIiwgZmlsZT1zeXMuc3RkZXJyLCBlbmQ9IiIpCiAgICAgICAgIHNlbGYuX3Rlc3RfaGlz dG9yeV90YWIoKQorICAgICAgICBwcmludCgiIE9LLiIsIGZpbGU9c3lzLnN0ZGVycikKKworICAg ICAgICBwcmludCgiVXBkYXRhYmxlIHJlc3VsdHNldHMuLi4iLCBmaWxlPXN5cy5zdGRlcnIsIGVu ZD0iIikKKyAgICAgICAgc2VsZi5fdGVzdF9lZGl0YWJsZV9yZXN1bHRzZXQoKQorICAgICAgICBw cmludCgiIE9LLiIsIGZpbGU9c3lzLnN0ZGVycikKIAogICAgIGRlZiBfdGVzdF9jb3BpZXNfcm93 cyhzZWxmKToKICAgICAgICAgcHlwZXJjbGlwLmNvcHkoIm9sZCBjbGlwYm9hcmQgY29udGVudHMi KQpAQCAtMTYyLDYgKzE4OCwyNyBAQCBjbGFzcyBRdWVyeVRvb2xKb3VybmV5VGVzdChCYXNlRmVh dHVyZVRlc3QpOgogICAgICAgICAgICAgICAgIC5wZXJmb3JtKCkKICAgICAgICAgc2VsZi5fYXNz ZXJ0X2NsaWNrYWJsZShxdWVyeV93ZV9uZWVkX3RvX3Njcm9sbF90bykKIAorICAgIGRlZiBfdGVz dF9lZGl0YWJsZV9yZXN1bHRzZXQoc2VsZik6CisgICAgICAgIHNlbGYucGFnZS5jbGlja190YWIo IlF1ZXJ5IEVkaXRvciIpCisKKyAgICAgICAgIyBJbnNlcnQgZGF0YSBpbnRvIHRlc3QgdGFibGUK KyAgICAgICAgc2VsZi5fX2NsZWFyX3F1ZXJ5X3Rvb2woKQorICAgICAgICBzZWxmLl9leGVjdXRl X3F1ZXJ5KAorICAgICAgICAgICAgIklOU0VSVCBJTlRPICVzIFZBTFVFUyAoMSwgMSksICgyLCAy KTsiCisgICAgICAgICAgICAlIHNlbGYudGVzdF9lZGl0YWJsZV90YWJsZV9uYW1lCisgICAgICAg ICkKKworICAgICAgICAjIFNlbGVjdCBhbGwgZGF0YSAoY29udGFpbnMgdGhlIHByaW1hcnkga2V5 IC0+IHNob3VsZCBiZSBlZGl0YWJsZSkKKyAgICAgICAgc2VsZi5fX2NsZWFyX3F1ZXJ5X3Rvb2wo KQorICAgICAgICBxdWVyeSA9ICJTRUxFQ1QgcGtfY29sdW1uLCBub3JtYWxfY29sdW1uIEZST00g JXMiIFwKKyAgICAgICAgICAgICAgICAlIHNlbGYudGVzdF9lZGl0YWJsZV90YWJsZV9uYW1lCisg ICAgICAgIHNlbGYuX2NoZWNrX3F1ZXJ5X3Jlc3VsdHNfZWRpdGFibGUocXVlcnksIFRydWUpCisK KyAgICAgICAgIyBTZWxlY3QgZGF0YSB3aXRob3V0IHByaW1hcnkga2V5cyAtPiBzaG91bGQgbm90 IGJlIGVkaXRhYmxlCisgICAgICAgIHNlbGYuX19jbGVhcl9xdWVyeV90b29sKCkKKyAgICAgICAg cXVlcnkgPSAiU0VMRUNUIG5vcm1hbF9jb2x1bW4gRlJPTSAlcyIgJSBzZWxmLnRlc3RfZWRpdGFi bGVfdGFibGVfbmFtZQorICAgICAgICBzZWxmLl9jaGVja19xdWVyeV9yZXN1bHRzX2VkaXRhYmxl KHF1ZXJ5LCBGYWxzZSkKKwogICAgIGRlZiBfX2NsZWFyX3F1ZXJ5X3Rvb2woc2VsZik6CiAgICAg ICAgIHNlbGYucGFnZS5jbGlja19lbGVtZW50KAogICAgICAgICAgICAgc2VsZi5wYWdlLmZpbmRf YnlfeHBhdGgoIi8vKltAaWQ9J2J0bi1jbGVhci1kcm9wZG93biddIikKQEAgLTE4OCw2ICsyMzUs MzEgQEAgY2xhc3MgUXVlcnlUb29sSm91cm5leVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICBk ZWYgX2Fzc2VydF9jbGlja2FibGUoc2VsZiwgZWxlbWVudCk6CiAgICAgICAgIHNlbGYucGFnZS5j bGlja19lbGVtZW50KGVsZW1lbnQpCiAKKyAgICBkZWYgX2NoZWNrX3F1ZXJ5X3Jlc3VsdHNfZWRp dGFibGUoc2VsZiwgcXVlcnksIHNob3VsZF9iZV9lZGl0YWJsZSk6CisgICAgICAgIHNlbGYuX2V4 ZWN1dGVfcXVlcnkocXVlcnkpCisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zvcl9zcGlubmVyX3Rv X2Rpc2FwcGVhcigpCisKKyAgICAgICAgIyBDaGVjayBpZiB0aGUgZmlyc3QgY2VsbCBpbiB0aGUg Zmlyc3Qgcm93IGlzIGVkaXRhYmxlCisgICAgICAgIGlzX2VkaXRhYmxlID0gc2VsZi5fY2hlY2tf Y2VsbF9lZGl0YWJsZSgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlzX2VkaXRhYmxlLCBz aG91bGRfYmVfZWRpdGFibGUpCisgICAgICAgICMgQ2hlY2sgdGhhdCBuZXcgcm93cyBjYW5ub3Qg YmUgYWRkZWQKKyAgICAgICAgY2FuX2FkZF9yb3dzID0gc2VsZi5fY2hlY2tfY2FuX2FkZF9yb3co KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbl9hZGRfcm93cywgc2hvdWxkX2JlX2VkaXRh YmxlKQorCisgICAgZGVmIF9jaGVja19jZWxsX2VkaXRhYmxlKHNlbGYsIGNlbGxfaW5kZXgpOgor ICAgICAgICB4cGF0aCA9ICcvL2Rpdltjb250YWlucyhAY2xhc3MsICJzbGljay1jZWxsIikgYW5k ICcgXAorICAgICAgICAgICAgICAgICdjb250YWlucyhAY2xhc3MsICJyJyArIHN0cihjZWxsX2lu ZGV4KSArICciKV0nCisgICAgICAgIGNlbGxfZWwgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCh4 cGF0aCkKKyAgICAgICAgQWN0aW9uQ2hhaW5zKHNlbGYuZHJpdmVyKS5kb3VibGVfY2xpY2soY2Vs bF9lbCkucGVyZm9ybSgpCisgICAgICAgIHhwYXRoID0gJy8vZGl2W2NvbnRhaW5zKEBjbGFzcywg InNsaWNrLWNlbGwiKSBhbmQgJyBcCisgICAgICAgICAgICAgICAgJ2NvbnRhaW5zKEBjbGFzcywg InInICsgc3RyKGNlbGxfaW5kZXgpICsgJyIpICcgXAorICAgICAgICAgICAgICAgICdhbmQgY29u dGFpbnMoQGNsYXNzLCAiZWRpdGFibGUiKV0nCisgICAgICAgIHJldHVybiBzZWxmLnBhZ2UuY2hl Y2tfaWZfZWxlbWVudF9leGlzdF9ieV94cGF0aCh4cGF0aCkKKworICAgIGRlZiBfY2hlY2tfY2Fu X2FkZF9yb3coc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnBhZ2UuY2hlY2tfaWZfZWxlbWVu dF9leGlzdF9ieV94cGF0aCgKKyAgICAgICAgICAgICcvL2Rpdltjb250YWlucyhAY2xhc3MsICJu ZXctcm93IildJykKKwogICAgIGRlZiBhZnRlcihzZWxmKToKICAgICAgICAgc2VsZi5wYWdlLmNs b3NlX3F1ZXJ5X3Rvb2woKQogICAgICAgICBzZWxmLnBhZ2UucmVtb3ZlX3NlcnZlcihzZWxmLnNl cnZlcikKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvdmlld19kYXRhX2Rt bF9xdWVyaWVzLnB5IGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy92aWV3X2RhdGFfZG1sX3F1 ZXJpZXMucHkKaW5kZXggOGU2OWZmYzUuLjg4OGNmNzE2IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9mZWF0dXJlX3Rlc3RzL3ZpZXdfZGF0YV9kbWxfcXVlcmllcy5weQorKysgYi93ZWIvcGdhZG1p bi9mZWF0dXJlX3Rlc3RzL3ZpZXdfZGF0YV9kbWxfcXVlcmllcy5weQpAQCAtMjYyLDcgKzI2Miw3 IEBAIENSRUFURSBUQUJMRSBwdWJsaWMuZGVmYXVsdHNfezB9CiAgICAgICAgICMgcmVzZXQgY2Vs bCB2YWx1ZSB0byBwcmV2aW91cyBvbmUKICAgICAgICAgc2VsZi5fdXBkYXRlX2NlbGwocm93MV9j ZWxsMl94cGF0aCwgWyIxIiwgIiIsICJpbnQiXSkKIAotICAgICAgICBzZWxmLnBhZ2UuZmluZF9i eV9pZCgiYnRuLXNhdmUiKS5jbGljaygpICAjIFNhdmUgZGF0YQorICAgICAgICBzZWxmLnBhZ2Uu ZmluZF9ieV9pZCgiYnRuLXNhdmUtZGF0YSIpLmNsaWNrKCkgICMgU2F2ZSBkYXRhCiAgICAgICAg ICMgVGhlcmUgc2hvdWxkIGJlIHNvbWUgZGVsYXkgYWZ0ZXIgc2F2ZSBidXR0b24gaXMgY2xpY2tl ZCwgYXMgaXQKICAgICAgICAgIyB0YWtlcyBzb21lIHRpbWUgdG8gY29tcGxldGUgc2F2ZSBhamF4 IGNhbGwgb3RoZXJ3aXNlIGRpc2NhcmQgdW5zYXZlZAogICAgICAgICAjIGNoYW5nZXMgZGlhbG9n IHdpbGwgYXBwZWFyIGlmIHdlIHRyeSB0byBleGVjdXRlIHF1ZXJ5IGJlZm9yZSBwcmV2aW91cwpA QCAtMjc5LDcgKzI3OSw3IEBAIENSRUFURSBUQUJMRSBwdWJsaWMuZGVmYXVsdHNfezB9CiAgICAg ICAgICAgICApCiAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMikKICAgICAgICAgICAgIHNlbGYu X3VwZGF0ZV9jZWxsKGNlbGxfeHBhdGgsIGNvbmZpZ19kYXRhW3N0cihpZHgpXSkKLSAgICAgICAg c2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1zYXZlIikuY2xpY2soKSAgIyBTYXZlIGRhdGEKKyAg ICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1zYXZlLWRhdGEiKS5jbGljaygpICAjIFNh dmUgZGF0YQogICAgICAgICAjIFRoZXJlIHNob3VsZCBiZSBzb21lIGRlbGF5IGFmdGVyIHNhdmUg YnV0dG9uIGlzIGNsaWNrZWQsIGFzIGl0CiAgICAgICAgICMgdGFrZXMgc29tZSB0aW1lIHRvIGNv bXBsZXRlIHNhdmUgYWpheCBjYWxsIG90aGVyd2lzZSBkaXNjYXJkIHVuc2F2ZWQKICAgICAgICAg IyBjaGFuZ2VzIGRpYWxvZyB3aWxsIGFwcGVhciBpZiB3ZSB0cnkgdG8gZXhlY3V0ZSBxdWVyeSBi ZWZvcmUgcHJldmlvdXMKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9rZXlib2Fy ZF9zaG9ydGN1dHMuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMva2V5Ym9hcmRfc2hvcnRjdXRz LmpzCmluZGV4IGM1NjViODYyLi41ZGQyMzg0YiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL2tleWJvYXJkX3Nob3J0Y3V0cy5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMv a2V5Ym9hcmRfc2hvcnRjdXRzLmpzCkBAIC0yMDUsNiArMjA1LDcgQEAgZnVuY3Rpb24ga2V5Ym9h cmRTaG9ydGN1dHNRdWVyeVRvb2woCiAgIGxldCB0b2dnbGVDYXNlS2V5cyA9IHNxbEVkaXRvckNv bnRyb2xsZXIucHJlZmVyZW5jZXMudG9nZ2xlX2Nhc2U7CiAgIGxldCBjb21taXRLZXlzID0gc3Fs RWRpdG9yQ29udHJvbGxlci5wcmVmZXJlbmNlcy5jb21taXRfdHJhbnNhY3Rpb247CiAgIGxldCBy b2xsYmFja0tleXMgPSBzcWxFZGl0b3JDb250cm9sbGVyLnByZWZlcmVuY2VzLnJvbGxiYWNrX3Ry YW5zYWN0aW9uOworICBsZXQgc2F2ZURhdGFLZXlzID0gc3FsRWRpdG9yQ29udHJvbGxlci5wcmVm ZXJlbmNlcy5zYXZlX2RhdGE7CiAKICAgaWYgKHRoaXMudmFsaWRhdGVTaG9ydGN1dEtleXMoZXhl Y3V0ZUtleXMsIGV2ZW50KSkgewogICAgIHRoaXMuX3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50 KTsKQEAgLTIzMyw2ICsyMzQsOSBAQCBmdW5jdGlvbiBrZXlib2FyZFNob3J0Y3V0c1F1ZXJ5VG9v bCgKICAgICAgIHRoaXMuX3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTsKICAgICAgIHF1ZXJ5 VG9vbEFjdGlvbnMuZXhlY3V0ZVJvbGxiYWNrKHNxbEVkaXRvckNvbnRyb2xsZXIpOwogICAgIH0K KyAgfSBlbHNlIGlmICh0aGlzLnZhbGlkYXRlU2hvcnRjdXRLZXlzKHNhdmVEYXRhS2V5cywgZXZl bnQpKSB7CisgICAgdGhpcy5fc3RvcEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpOworICAgIHF1ZXJ5 VG9vbEFjdGlvbnMuc2F2ZURhdGFDaGFuZ2VzKHNxbEVkaXRvckNvbnRyb2xsZXIpOwogICB9IGVs c2UgaWYgKCgKICAgICAodGhpcy5pc01hYygpICYmIGV2ZW50Lm1ldGFLZXkpIHx8CiAgICAgICgh dGhpcy5pc01hYygpICYmIGV2ZW50LmN0cmxLZXkpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9z dGF0aWMvanMvc3FsZWRpdG9yL2NhbGxfcmVuZGVyX2FmdGVyX3BvbGwuanMgYi93ZWIvcGdhZG1p bi9zdGF0aWMvanMvc3FsZWRpdG9yL2NhbGxfcmVuZGVyX2FmdGVyX3BvbGwuanMKaW5kZXggM2Yz MmQ1NzEuLjU3ZDYwNTM3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRp dG9yL2NhbGxfcmVuZGVyX2FmdGVyX3BvbGwuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pz L3NxbGVkaXRvci9jYWxsX3JlbmRlcl9hZnRlcl9wb2xsLmpzCkBAIC0zNyw3ICszNyw4IEBAIGV4 cG9ydCBmdW5jdGlvbiBjYWxsUmVuZGVyQWZ0ZXJQb2xsKHNxbEVkaXRvciwgYWxlcnRpZnksIHJl cykgewogICAgIGNvbnN0IG1zZyA9IHNwcmludGYoCiAgICAgICBnZXR0ZXh0KCdRdWVyeSByZXR1 cm5lZCBzdWNjZXNzZnVsbHkgaW4gJXMuJyksIHNxbEVkaXRvci50b3RhbF90aW1lKTsKICAgICBy ZXMucmVzdWx0ICs9ICdcblxuJyArIG1zZzsKLSAgICBzcWxFZGl0b3IudXBkYXRlX21zZ19oaXN0 b3J5KHRydWUsIHJlcy5yZXN1bHQsIGZhbHNlKTsKKyAgICBzcWxFZGl0b3IudXBkYXRlX21zZ19o aXN0b3J5KHRydWUsIHJlcy5yZXN1bHQsIHRydWUpOworICAgIHNxbEVkaXRvci5yZXNldF9kYXRh X3N0b3JlKCk7CiAgICAgaWYgKGlzTm90aWZpY2F0aW9uRW5hYmxlZChzcWxFZGl0b3IpKSB7CiAg ICAgICBhbGVydGlmeS5zdWNjZXNzKG1zZywgc3FsRWRpdG9yLmluZm9fbm90aWZpZXJfdGltZW91 dCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9x dWVyeV90b29sX2FjdGlvbnMuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1 ZXJ5X3Rvb2xfYWN0aW9ucy5qcwppbmRleCA3NzM5ZTliNS4uZTVjZjhhMzYgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zLmpzCisr KyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zLmpz CkBAIC0xNTMsNiArMTUzLDExIEBAIGxldCBxdWVyeVRvb2xBY3Rpb25zID0gewogICAgIHNxbEVk aXRvckNvbnRyb2xsZXIuc3BlY2lhbF9zcWwgPSAnUk9MTEJBQ0s7JzsKICAgICBzZWxmLmV4ZWN1 dGVRdWVyeShzcWxFZGl0b3JDb250cm9sbGVyKTsKICAgfSwKKworICBzYXZlRGF0YUNoYW5nZXM6 IGZ1bmN0aW9uIChzcWxFZGl0b3JDb250cm9sbGVyKSB7CisgICAgc3FsRWRpdG9yQ29udHJvbGxl ci5jbG9zZV9vbl9zYXZlID0gZmFsc2U7CisgICAgc3FsRWRpdG9yQ29udHJvbGxlci5zYXZlX2Rh dGEoKTsKKyAgfSwKIH07CiAKIG1vZHVsZS5leHBvcnRzID0gcXVlcnlUb29sQWN0aW9uczsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9wcmVm ZXJlbmNlcy5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9w cmVmZXJlbmNlcy5qcwppbmRleCBjMzkwNmFhYS4uYWJjZWIwOTkgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9wcmVmZXJlbmNlcy5qcworKysg Yi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMu anMKQEAgLTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gdXBkYXRlVUlQcmVmZXJlbmNlcyhzcWxFZGl0 b3IpIHsKICAgICAuYXR0cigndGl0bGUnLCBzaG9ydGN1dF9hY2Nlc3NrZXlfdGl0bGUoJ09wZW4g RmlsZScscHJlZmVyZW5jZXMuYnRuX29wZW5fZmlsZSkpCiAgICAgLmF0dHIoJ2FjY2Vzc2tleScs IHNob3J0Y3V0X2tleShwcmVmZXJlbmNlcy5idG5fb3Blbl9maWxlKSk7CiAKLSAgJGVsLmZpbmQo JyNidG4tc2F2ZScpCisgICRlbC5maW5kKCcjYnRuLXNhdmUtZmlsZScpCiAgICAgLmF0dHIoJ3Rp dGxlJywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKCdTYXZlIEZpbGUnLHByZWZlcmVuY2VzLmJ0 bl9zYXZlX2ZpbGUpKQogICAgIC5hdHRyKCdhY2Nlc3NrZXknLCBzaG9ydGN1dF9rZXkocHJlZmVy ZW5jZXMuYnRuX3NhdmVfZmlsZSkpOwogCkBAIC05Nyw2ICs5NywxMCBAQCBmdW5jdGlvbiB1cGRh dGVVSVByZWZlcmVuY2VzKHNxbEVkaXRvcikgewogICAgIC5hdHRyKCd0aXRsZScsCiAgICAgICBz aG9ydGN1dF90aXRsZSgnRG93bmxvYWQgYXMgQ1NWJyxwcmVmZXJlbmNlcy5kb3dubG9hZF9jc3Yp KTsKIAorICAkZWwuZmluZCgnI2J0bi1zYXZlLWRhdGEnKQorICAgIC5hdHRyKCd0aXRsZScsCisg ICAgICBzaG9ydGN1dF90aXRsZSgnU2F2ZSBEYXRhIENoYW5nZXMnLHByZWZlcmVuY2VzLnNhdmVf ZGF0YSkpOworCiAgICRlbC5maW5kKCcjYnRuLWNvbW1pdCcpCiAgICAgLmF0dHIoJ3RpdGxlJywK ICAgICAgIHNob3J0Y3V0X3RpdGxlKCdDb21taXQnLHByZWZlcmVuY2VzLmNvbW1pdF90cmFuc2Fj dGlvbikpOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX2FsZXJ0aWZ5Lm92 ZXJyaWRlcy5zY3NzIGIvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX2FsZXJ0aWZ5Lm92ZXJyaWRl cy5zY3NzCmluZGV4IDQxM2UwOWU3Li5kNDNiZWNkNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v c3RhdGljL3Njc3MvX2FsZXJ0aWZ5Lm92ZXJyaWRlcy5zY3NzCisrKyBiL3dlYi9wZ2FkbWluL3N0 YXRpYy9zY3NzL19hbGVydGlmeS5vdmVycmlkZXMuc2NzcwpAQCAtNTYsNyArNTYsNyBAQAogICAg IGJvdHRvbTogJGZvb3Rlci1oZWlnaHQtY2FsYyAhaW1wb3J0YW50OwogICB9CiAgIC5hanMtd3Jh cC10ZXh0IHsKLSAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CisgICAgd29yZC1icmVhazogbm9y bWFsOwogICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgfQogICAvKiBSZW1vdmVzIHBhZGRp bmcgZnJvbSBhbGVydGlmeSBmb290ZXIgKi8KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xz L2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9pbmRleC5odG1sIGIvd2ViL3BnYWRtaW4vdG9v bHMvZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFncmlkL2luZGV4Lmh0bWwKaW5kZXggZjEzOGI5YTQu Ljk0NjhlYjNlIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZW1wbGF0 ZXMvZGF0YWdyaWQvaW5kZXguaHRtbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90 ZW1wbGF0ZXMvZGF0YWdyaWQvaW5kZXguaHRtbApAQCAtMjEsNyArMjEsNyBAQAogICAgICAgICAg ICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAiPgogICAgICAgICAgICAgICAgICAgICA8aSBjbGFz cz0iZmEgZmEtZm9sZGVyLW9wZW4tbyBzcWwtaWNvbi1sZyIgYXJpYS1oaWRkZW49InRydWUiPjwv aT4KICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICA8YnV0dG9uIGlk PSJidG4tc2F2ZSIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5 IgorICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1zYXZlLWZpbGUiIHR5cGU9ImJ1dHRv biIgY2xhc3M9ImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSIKICAgICAgICAgICAgICAgICAgICAg ICAgIHRpdGxlPSIiCiAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NrZXk9IiIKICAgICAg ICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPgpAQCAtNDQsNiArNDQsMTQgQEAKICAgICAgICAg ICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgPC9k aXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidG4tZ3JvdXAgbXItMSIgcm9sZT0iZ3JvdXAi IGFyaWEtbGFiZWw9IiI+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXNhdmUtZGF0 YSIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5IgorICAgICAg ICAgICAgICAgICAgICAgICAgdGl0bGU9IiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vz c2tleT0iIgorICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAiIGRpc2FibGVkPgor ICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1zYXZlLWRhdGEtY2hhbmdlcyBzcWwt aWNvbi1sZyIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4KKyAgICAgICAgICAgICAgICA8L2J1dHRv bj4KKyAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnRuLWdyb3Vw IG1yLTEiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIiPgogICAgICAgICAgICAgICAgIDxidXR0 b24gaWQ9ImJ0bi1maW5kIiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi1zZWNv bmRhcnkiIHRpdGxlPSJ7eyBfKCdGaW5kIChDdHJsL0NtZCtGKScpIH19Ij4KICAgICAgICAgICAg ICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXNlYXJjaCBzcWwtaWNvbi1sZyIgYXJpYS1oaWRkZW49 InRydWUiIHRhYmluZGV4PSIwIj48L2k+CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9z cWxlZGl0b3IvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvX19pbml0 X18ucHkKaW5kZXggYWM5MjNhNTUuLjA2N2JmZjdiIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3IvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRp dG9yL19faW5pdF9fLnB5CkBAIC0zODUsNiArMzg1LDggQEAgZGVmIHBvbGwodHJhbnNfaWQpOgog ICAgIHJzZXQgPSBOb25lCiAgICAgaGFzX29pZHMgPSBGYWxzZQogICAgIG9pZHMgPSBOb25lCisg ICAgYWRkaXRpb25hbF9tZXNzYWdlcyA9IE5vbmUKKyAgICBub3RpZmllcyA9IE5vbmUKIAogICAg ICMgQ2hlY2sgdGhlIHRyYW5zYWN0aW9uIGFuZCBjb25uZWN0aW9uIHN0YXR1cwogICAgIHN0YXR1 cywgZXJyb3JfbXNnLCBjb25uLCB0cmFuc19vYmosIHNlc3Npb25fb2JqID0gXApAQCAtNDIzLDYg KzQyNSwyMiBAQCBkZWYgcG9sbCh0cmFuc19pZCk6CiAKICAgICAgICAgICAgIHN0LCByZXN1bHQg PSBjb25uLmFzeW5jX2ZldGNobWFueV8yZGFycmF5KE9OX0RFTUFORF9SRUNPUkRfQ09VTlQpCiAK KyAgICAgICAgICAgICMgVGhlcmUgbWF5IGJlIGFkZGl0aW9uYWwgbWVzc2FnZXMgZXZlbiBpZiBy ZXN1bHQgaXMgcHJlc2VudAorICAgICAgICAgICAgIyBlZzogRnVuY3Rpb24gY2FuIHByb3ZpZGUg cmVzdWx0IGFzIHdlbGwgYXMgUkFJU0UgbWVzc2FnZXMKKyAgICAgICAgICAgIG1lc3NhZ2VzID0g Y29ubi5tZXNzYWdlcygpCisgICAgICAgICAgICBpZiBtZXNzYWdlczoKKyAgICAgICAgICAgICAg ICBhZGRpdGlvbmFsX21lc3NhZ2VzID0gJycuam9pbihtZXNzYWdlcykKKyAgICAgICAgICAgIG5v dGlmaWVzID0gY29ubi5nZXRfbm90aWZpZXMoKQorCisgICAgICAgICAgICAjIFByb2NlZHVyZS9G dW5jdGlvbiBvdXRwdXQgbWF5IGNvbWVzIGluIHRoZSBmb3JtIG9mIE5vdGljZXMKKyAgICAgICAg ICAgICMgZnJvbSB0aGUgZGF0YWJhc2Ugc2VydmVyLCBzbyB3ZSBuZWVkIHRvIGFwcGVuZCB0aG9z ZSBvdXRwdXRzCisgICAgICAgICAgICAjIHdpdGggdGhlIG9yaWdpbmFsIHJlc3VsdC4KKyAgICAg ICAgICAgIGlmIHJlc3VsdCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbm4u c3RhdHVzX21lc3NhZ2UoKQorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gJ1NFTEVDVCAx JyBvciByZXN1bHQgIT0gJ1NFTEVDVCAwJykgYW5kIFwKKyAgICAgICAgICAgICAgICAgICByZXN1 bHQgaXMgbm90IE5vbmUgYW5kIGFkZGl0aW9uYWxfbWVzc2FnZXM6CisgICAgICAgICAgICAgICAg ICAgIHJlc3VsdCA9IGFkZGl0aW9uYWxfbWVzc2FnZXMgKyByZXN1bHQKKwogICAgICAgICAgICAg aWYgc3Q6CiAgICAgICAgICAgICAgICAgaWYgJ3ByaW1hcnlfa2V5cycgaW4gc2Vzc2lvbl9vYmo6 CiAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5cyA9IHNlc3Npb25fb2JqWydwcmltYXJ5 X2tleXMnXQpAQCAtNDM5LDEwICs0NTcsMjIgQEAgZGVmIHBvbGwodHJhbnNfaWQpOgogICAgICAg ICAgICAgICAgICkKICAgICAgICAgICAgICAgICBzZXNzaW9uX29ialsnY2xpZW50X3ByaW1hcnlf a2V5J10gPSBjbGllbnRfcHJpbWFyeV9rZXkKIAotICAgICAgICAgICAgICAgIGlmIGNvbHVtbnNf aW5mbyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIElmIHRyYW5zX29iaiBpcyBhIFF1 ZXJ5VG9vbENvbW1hbmQgdGhlbiBjaGVjayBmb3IgdXBkYXRhYmxlCisgICAgICAgICAgICAgICAg IyByZXN1bHRzZXRzIGFuZCBwcmltYXJ5IGtleXMKKyAgICAgICAgICAgICAgICBpZiBpc2luc3Rh bmNlKHRyYW5zX29iaiwgUXVlcnlUb29sQ29tbWFuZCk6CisgICAgICAgICAgICAgICAgICAgIHRy YW5zX29iai5jaGVja191cGRhdGFibGVfcmVzdWx0c19wa2V5cygpCisgICAgICAgICAgICAgICAg ICAgIHBrX25hbWVzLCBwcmltYXJ5X2tleXMgPSB0cmFuc19vYmouZ2V0X3ByaW1hcnlfa2V5cygp CisgICAgICAgICAgICAgICAgICAgICMgSWYgcHJpbWFyeV9rZXlzIGV4aXN0LCBhZGQgdGhlbSB0 byB0aGUgc2Vzc2lvbl9vYmogdG8KKyAgICAgICAgICAgICAgICAgICAgIyBhbGxvdyBmb3Igc2F2 aW5nIGFueSBjaGFuZ2VzIHRvIHRoZSBkYXRhCisgICAgICAgICAgICAgICAgICAgIGlmIHByaW1h cnlfa2V5cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25fb2Jq WydwcmltYXJ5X2tleXMnXSA9IHByaW1hcnlfa2V5cwogCi0gICAgICAgICAgICAgICAgICAgIGNv bW1hbmRfb2JqID0gcGlja2xlLmxvYWRzKHNlc3Npb25fb2JqWydjb21tYW5kX29iaiddKQotICAg ICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGNvbW1hbmRfb2JqLCAnb2JqX2lkJyk6CisgICAg ICAgICAgICAgICAgaWYgY29sdW1uc19pbmZvIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAg ICAgICAjIElmIGl0IGlzIGEgUXVlcnlUb29sQ29tbWFuZCB0aGF0IGhhcyBvYmpfaWQgYXR0cmli dXRlCisgICAgICAgICAgICAgICAgICAgICMgdGhlbiBpdCBzaG91bGQgYWxzbyBiZSBlZGl0YWJs ZQorICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHRyYW5zX29iaiwgJ29ial9pZCcpIGFu ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAobm90IGlzaW5zdGFuY2UodHJhbnNfb2JqLCBR dWVyeVRvb2xDb21tYW5kKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zX29iai5j YW5fZWRpdCgpKToKICAgICAgICAgICAgICAgICAgICAgICAgICMgR2V0IHRoZSB0ZW1wbGF0ZSBw YXRoIGZvciB0aGUgY29sdW1uCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9wYXRo ID0gJ2NvbHVtbnMvc3FsLyN7MH0jJy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29ubi5tYW5hZ2VyLnZlcnNpb24KQEAgLTQ1MCw3ICs0ODAsNyBAQCBkZWYgcG9sbCh0cmFu c19pZCk6CiAKICAgICAgICAgICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ25v ZGVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9Y29tbWFuZF9vYmou b2JqX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10cmFuc19vYmoub2JqX2lk LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc19vaWRzPVRydWUKICAgICAgICAgICAg ICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICMgcm93cyB3aXRoIGF0dHJp YnV0ZSBub3RfbnVsbApAQCAtNTI1LDI2ICs1NTUsOCBAQCBkZWYgcG9sbCh0cmFuc19pZCk6CiAg ICAgICAgIHN0YXR1cyA9ICdOb3RDb25uZWN0ZWQnCiAgICAgICAgIHJlc3VsdCA9IGVycm9yX21z ZwogCi0gICAgIyBUaGVyZSBtYXkgYmUgYWRkaXRpb25hbCBtZXNzYWdlcyBldmVuIGlmIHJlc3Vs dCBpcyBwcmVzZW50Ci0gICAgIyBlZzogRnVuY3Rpb24gY2FuIHByb3ZpZGUgcmVzdWx0IGFzIHdl bGwgYXMgUkFJU0UgbWVzc2FnZXMKLSAgICBhZGRpdGlvbmFsX21lc3NhZ2VzID0gTm9uZQotICAg IG5vdGlmaWVzID0gTm9uZQotICAgIGlmIHN0YXR1cyA9PSAnU3VjY2Vzcyc6Ci0gICAgICAgIG1l c3NhZ2VzID0gY29ubi5tZXNzYWdlcygpCi0gICAgICAgIGlmIG1lc3NhZ2VzOgotICAgICAgICAg ICAgYWRkaXRpb25hbF9tZXNzYWdlcyA9ICcnLmpvaW4obWVzc2FnZXMpCi0gICAgICAgIG5vdGlm aWVzID0gY29ubi5nZXRfbm90aWZpZXMoKQotCi0gICAgIyBQcm9jZWR1cmUvRnVuY3Rpb24gb3V0 cHV0IG1heSBjb21lcyBpbiB0aGUgZm9ybSBvZiBOb3RpY2VzIGZyb20gdGhlCi0gICAgIyBkYXRh YmFzZSBzZXJ2ZXIsIHNvIHdlIG5lZWQgdG8gYXBwZW5kIHRob3NlIG91dHB1dHMgd2l0aCB0aGUK LSAgICAjIG9yaWdpbmFsIHJlc3VsdC4KLSAgICBpZiBzdGF0dXMgPT0gJ1N1Y2Nlc3MnIGFuZCBy ZXN1bHQgaXMgTm9uZToKLSAgICAgICAgcmVzdWx0ID0gY29ubi5zdGF0dXNfbWVzc2FnZSgpCi0g ICAgICAgIGlmIChyZXN1bHQgIT0gJ1NFTEVDVCAxJyBvciByZXN1bHQgIT0gJ1NFTEVDVCAwJykg YW5kIFwKLSAgICAgICAgICAgcmVzdWx0IGlzIG5vdCBOb25lIGFuZCBhZGRpdGlvbmFsX21lc3Nh Z2VzOgotICAgICAgICAgICAgcmVzdWx0ID0gYWRkaXRpb25hbF9tZXNzYWdlcyArIHJlc3VsdAot CiAgICAgdHJhbnNhY3Rpb25fc3RhdHVzID0gY29ubi50cmFuc2FjdGlvbl9zdGF0dXMoKQorCiAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKICAgICAgICAgZGF0YT17CiAgICAgICAgICAg ICAnc3RhdHVzJzogc3RhdHVzLCAncmVzdWx0JzogcmVzdWx0LApAQCAtNzMzLDcgKzc0NSw4IEBA IGRlZiBzYXZlKHRyYW5zX2lkKToKICAgICAgICB0cmFuc19vYmogaXMgbm90IE5vbmUgYW5kIHNl c3Npb25fb2JqIGlzIG5vdCBOb25lOgogCiAgICAgICAgICMgSWYgdGhlcmUgaXMgbm8gcHJpbWFy eSBrZXkgZm91bmQgdGhlbiByZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24uCi0gICAgICAgIGlmIChs ZW4oc2Vzc2lvbl9vYmpbJ3ByaW1hcnlfa2V5cyddKSA8PSAwIG9yCisgICAgICAgIGlmICgncHJp bWFyeV9rZXlzJyBub3QgaW4gc2Vzc2lvbl9vYmogb3IKKyAgICAgICAgICAgbGVuKHNlc3Npb25f b2JqWydwcmltYXJ5X2tleXMnXSkgPD0gMCBvcgogICAgICAgICAgICBsZW4oY2hhbmdlZF9kYXRh KSA8PSAwKSBhbmQgXAogICAgICAgICAgICAnaGFzX29pZHMnIG5vdCBpbiBzZXNzaW9uX29iajoK ICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCkBAIC03NDYsMzIgKzc1OSwz OCBAQCBkZWYgc2F2ZSh0cmFuc19pZCk6CiAKICAgICAgICAgbWFuYWdlciA9IGdldF9kcml2ZXIo CiAgICAgICAgICAgICBQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKHRyYW5z X29iai5zaWQpCi0gICAgICAgIGRlZmF1bHRfY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbihkaWQ9 dHJhbnNfb2JqLmRpZCkKKyAgICAgICAgaWYgaGFzYXR0cih0cmFuc19vYmosICdjb25uX2lkJyk6 CisgICAgICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD10cmFuc19vYmouZGlk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uX2lkPXRyYW5zX29i ai5jb25uX2lkKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29ubiA9IG1hbmFnZXIuY29u bmVjdGlvbihkaWQ9dHJhbnNfb2JqLmRpZCkgICMgZGVmYXVsdCBjb25uZWN0aW9uCiAKICAgICAg ICAgIyBDb25uZWN0IHRvIHRoZSBTZXJ2ZXIgaWYgbm90IGNvbm5lY3RlZC4KLSAgICAgICAgaWYg bm90IGRlZmF1bHRfY29ubi5jb25uZWN0ZWQoKToKLSAgICAgICAgICAgIHN0YXR1cywgbXNnID0g ZGVmYXVsdF9jb25uLmNvbm5lY3QoKQorICAgICAgICBpZiBub3QgY29ubi5jb25uZWN0ZWQoKToK KyAgICAgICAgICAgIHN0YXR1cywgbXNnID0gY29ubi5jb25uZWN0KCkKICAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK ICAgICAgICAgICAgICAgICAgICAgZGF0YT17J3N0YXR1cyc6IHN0YXR1cywgJ3Jlc3VsdCc6IHUi e30iLmZvcm1hdChtc2cpfQogICAgICAgICAgICAgICAgICkKLQotICAgICAgICBzdGF0dXMsIHJl cywgcXVlcnlfcmVzLCBfcm93aWQgPSB0cmFuc19vYmouc2F2ZSgKKyAgICAgICAgc3RhdHVzLCBy ZXMsIHF1ZXJ5X3JlcywgX3Jvd2lkLCBpc19jb21taXRfcmVxdWlyZWQgPSB0cmFuc19vYmouc2F2 ZSgKICAgICAgICAgICAgIGNoYW5nZWRfZGF0YSwKICAgICAgICAgICAgIHNlc3Npb25fb2JqWydj b2x1bW5zX2luZm8nXSwKICAgICAgICAgICAgIHNlc3Npb25fb2JqWydjbGllbnRfcHJpbWFyeV9r ZXknXSwKLSAgICAgICAgICAgIGRlZmF1bHRfY29ubikKKyAgICAgICAgICAgIGNvbm4pCiAgICAg ZWxzZToKICAgICAgICAgc3RhdHVzID0gRmFsc2UKICAgICAgICAgcmVzID0gZXJyb3JfbXNnCiAg ICAgICAgIHF1ZXJ5X3JlcyA9IE5vbmUKKyAgICAgICAgX3Jvd2lkID0gTm9uZQorICAgICAgICBp c19jb21taXRfcmVxdWlyZWQgPSBOb25lCiAKICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAogICAgICAgICBkYXRhPXsKICAgICAgICAgICAgICdzdGF0dXMnOiBzdGF0dXMsCiAgICAgICAg ICAgICAncmVzdWx0JzogcmVzLAogICAgICAgICAgICAgJ3F1ZXJ5X3Jlc3VsdCc6IHF1ZXJ5X3Jl cywKLSAgICAgICAgICAgICdfcm93aWQnOiBfcm93aWQKKyAgICAgICAgICAgICdfcm93aWQnOiBf cm93aWQsCisgICAgICAgICAgICAnaXNfY29tbWl0X3JlcXVpcmVkJzogaXNfY29tbWl0X3JlcXVp cmVkCiAgICAgICAgIH0KICAgICApCiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci9jb21tYW5kLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL2NvbW1hbmQu cHkKaW5kZXggYTA2YzJjN2YuLjA4ZjAyMzEwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3IvY29tbWFuZC5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Iv Y29tbWFuZC5weQpAQCAtMTksNiArMTksMTAgQEAgZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3Rl bXBsYXRlCiBmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRleHQKIGZyb20gcGdhZG1pbi51 dGlscy5hamF4IGltcG9ydCBmb3JiaWRkZW4KIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1w b3J0IGdldF9kcml2ZXIKK2Zyb20gcGdhZG1pbi50b29scy5zcWxlZGl0b3IudXRpbHMuY29uc3Rh bnRfZGVmaW5pdGlvbiBpbXBvcnQgQVNZTkNfT0sKK2Zyb20gcGdhZG1pbi50b29scy5zcWxlZGl0 b3IudXRpbHMuaXNfcXVlcnlfcmVzdWx0c2V0X3VwZGF0YWJsZSBcCisgICAgaW1wb3J0IGlzX3F1 ZXJ5X3Jlc3VsdHNldF91cGRhdGFibGUKK2Zyb20gcGdhZG1pbi50b29scy5zcWxlZGl0b3IudXRp bHMuc2F2ZV9jaGFuZ2VkX2RhdGEgaW1wb3J0IHNhdmVfY2hhbmdlZF9kYXRhCiAKIGZyb20gY29u ZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgogCkBAIC02NjgsMjY5ICs2NzIsMTEgQEAgY2xh c3MgVGFibGVDb21tYW5kKEdyaWRDb21tYW5kKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAg IGNvbm4gPSBkZWZhdWx0X2Nvbm4KIAotICAgICAgICBzdGF0dXMgPSBGYWxzZQotICAgICAgICBy ZXMgPSBOb25lCi0gICAgICAgIHF1ZXJ5X3JlcyA9IGRpY3QoKQotICAgICAgICBjb3VudCA9IDAK LSAgICAgICAgbGlzdF9vZl9yb3dpZCA9IFtdCi0gICAgICAgIG9wZXJhdGlvbnMgPSAoJ2FkZGVk JywgJ3VwZGF0ZWQnLCAnZGVsZXRlZCcpCi0gICAgICAgIGxpc3Rfb2Zfc3FsID0ge30KLSAgICAg ICAgX3Jvd2lkID0gTm9uZQotCi0gICAgICAgIHBnYWRtaW5fYWxpYXMgPSB7Ci0gICAgICAgICAg ICBjb2xfbmFtZTogY29sX2luZm9bJ3BnYWRtaW5fYWxpYXMnXQotICAgICAgICAgICAgZm9yIGNv bF9uYW1lLCBjb2xfaW5mbyBpbiBjb2x1bW5zX2luZm8KLSAgICAgICAgICAgIC5pdGVtcygpCi0g ICAgICAgIH0KLSAgICAgICAgaWYgY29ubi5jb25uZWN0ZWQoKToKLQotICAgICAgICAgICAgIyBT dGFydCB0aGUgdHJhbnNhY3Rpb24KLSAgICAgICAgICAgIGNvbm4uZXhlY3V0ZV92b2lkKCdCRUdJ TjsnKQotCi0gICAgICAgICAgICAjIEl0ZXJhdGUgdG90YWwgbnVtYmVyIG9mIHJlY29yZHMgdG8g YmUgdXBkYXRlZC9pbnNlcnRlZAotICAgICAgICAgICAgZm9yIG9mX3R5cGUgaW4gY2hhbmdlZF9k YXRhOgotICAgICAgICAgICAgICAgICMgTm8gbmVlZCB0byBnbyBmdXJ0aGVyIGlmIGl0cyBub3Qg YWRkL3VwZGF0ZS9kZWxldGUgb3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgaWYgb2ZfdHlwZSBu b3QgaW4gb3BlcmF0aW9uczoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg ICAgICAgICAjIGlmIG5vIGRhdGEgdG8gYmUgc2F2ZSB0aGVuIGNvbnRpbnVlCi0gICAgICAgICAg ICAgICAgaWYgbGVuKGNoYW5nZWRfZGF0YVtvZl90eXBlXSkgPCAxOgotICAgICAgICAgICAgICAg ICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgY29sdW1uX3R5cGUgPSB7fQotICAgICAg ICAgICAgICAgIGNvbHVtbl9kYXRhID0ge30KLSAgICAgICAgICAgICAgICBmb3IgZWFjaF9jb2wg aW4gY29sdW1uc19pbmZvOgotICAgICAgICAgICAgICAgICAgICBpZiAoCi0gICAgICAgICAgICAg ICAgICAgICAgICBjb2x1bW5zX2luZm9bZWFjaF9jb2xdWydub3RfbnVsbCddIGFuZAotICAgICAg ICAgICAgICAgICAgICAgICAgbm90IGNvbHVtbnNfaW5mb1tlYWNoX2NvbF1bJ2hhc19kZWZhdWx0 X3ZhbCddCi0gICAgICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBj b2x1bW5fZGF0YVtlYWNoX2NvbF0gPSBOb25lCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1 bW5fdHlwZVtlYWNoX2NvbF0gPVwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5z X2luZm9bZWFjaF9jb2xdWyd0eXBlX25hbWUnXQotICAgICAgICAgICAgICAgICAgICBlbHNlOgot ICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uX3R5cGVbZWFjaF9jb2xdID0gXAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnNfaW5mb1tlYWNoX2NvbF1bJ3R5cGVfbmFtZSdd Ci0KLSAgICAgICAgICAgICAgICAjIEZvciBuZXdseSBhZGRlZCByb3dzCi0gICAgICAgICAgICAg ICAgaWYgb2ZfdHlwZSA9PSAnYWRkZWQnOgotICAgICAgICAgICAgICAgICAgICAjIFB5dGhvbiBk aWN0IGRvZXMgbm90IGhvbm91ciB0aGUgaW5zZXJ0ZWQgaXRlbSBvcmRlcgotICAgICAgICAgICAg ICAgICAgICAjIFNvIHRvIGluc2VydCBkYXRhIGluIHRoZSBvcmRlciwgd2UgbmVlZCB0byBtYWtl IG9yZGVyZWQKLSAgICAgICAgICAgICAgICAgICAgIyBsaXN0IG9mIGFkZGVkIGluZGV4IFdlIGRv bid0IG5lZWQgdGhpcyBtZWNoYW5pc20gaW4KLSAgICAgICAgICAgICAgICAgICAgIyB1cGRhdGVk L2RlbGV0ZWQgcm93cyBhcyBpdCBkb2VzIG5vdCBtYXR0ZXIgaW4KLSAgICAgICAgICAgICAgICAg ICAgIyB0aG9zZSBvcGVyYXRpb25zCi0gICAgICAgICAgICAgICAgICAgIGFkZGVkX2luZGV4ID0g T3JkZXJlZERpY3QoCi0gICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2hhbmdlZF9kYXRhWydhZGRlZF9pbmRleCddLml0ZW1zKCksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PWxhbWJkYSB4OiBpbnQoeFswXSkKLSAgICAg ICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAg ICAgICAgICBsaXN0X29mX3NxbFtvZl90eXBlXSA9IFtdCi0KLSAgICAgICAgICAgICAgICAgICAg IyBXaGVuIG5ldyByb3dzIGFyZSBhZGRlZCwgb25seSBjaGFuZ2VkIGNvbHVtbnMgZGF0YSBpcwot ICAgICAgICAgICAgICAgICAgICAjIHNlbnQgZnJvbSBjbGllbnQgc2lkZS4gQnV0IGlmIGNvbHVt biBpcyBub3RfbnVsbCBhbmQgaGFzCi0gICAgICAgICAgICAgICAgICAgICMgbm9fZGVmYXVsdF92 YWx1ZSwgc2V0IGNvbHVtbiB0byBibGFuaywgaW5zdGVhZAotICAgICAgICAgICAgICAgICAgICAj IG9mIG5vdCBudWxsIHdoaWNoIGlzIHNldCBieSBkZWZhdWx0LgotICAgICAgICAgICAgICAgICAg ICBjb2x1bW5fZGF0YSA9IHt9Ci0gICAgICAgICAgICAgICAgICAgIHBrX25hbWVzLCBwcmltYXJ5 X2tleXMgPSBzZWxmLmdldF9wcmltYXJ5X2tleXMoKQotICAgICAgICAgICAgICAgICAgICBoYXNf b2lkcyA9ICdvaWQnIGluIGNvbHVtbl90eXBlCi0KLSAgICAgICAgICAgICAgICAgICAgZm9yIGVh Y2hfcm93IGluIGFkZGVkX2luZGV4OgotICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgdGhl IHJvdyBpbmRleCB0byBtYXRjaCB3aXRoIHRoZSBhZGRlZCByb3dzCi0gICAgICAgICAgICAgICAg ICAgICAgICAjIGRpY3Qga2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXBfcm93X2luZGV4 ID0gYWRkZWRfaW5kZXhbZWFjaF9yb3ddCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0g Y2hhbmdlZF9kYXRhW29mX3R5cGVdW3RtcF9yb3dfaW5kZXhdWydkYXRhJ10KLSAgICAgICAgICAg ICAgICAgICAgICAgICMgUmVtb3ZlIG91ciB1bmlxdWUgdHJhY2tpbmcga2V5Ci0gICAgICAgICAg ICAgICAgICAgICAgICBkYXRhLnBvcChjbGllbnRfcHJpbWFyeV9rZXksIE5vbmUpCi0gICAgICAg ICAgICAgICAgICAgICAgICBkYXRhLnBvcCgnaXNfcm93X2NvcGllZCcsIE5vbmUpCi0gICAgICAg ICAgICAgICAgICAgICAgICBsaXN0X29mX3Jvd2lkLmFwcGVuZChkYXRhLmdldChjbGllbnRfcHJp bWFyeV9rZXkpKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFVwZGF0ZSBjb2x1bW5zIHZh bHVlIHdpdGggY29sdW1ucyBoYXZpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbm90X251 bGw9RmFsc2UgYW5kIGhhcyBubyBkZWZhdWx0IHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAg ICBjb2x1bW5fZGF0YS51cGRhdGUoZGF0YSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgc3Fs ID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLnNxbF9wYXRoLCAnaW5zZXJ0LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhX3RvX2JlX3NhdmVkPWNvbHVtbl9kYXRhLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnYWRtaW5fYWxpYXM9cGdhZG1pbl9hbGlhcywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcmltYXJ5X2tleXM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBv YmplY3RfbmFtZT1zZWxmLm9iamVjdF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5zcF9uYW1lPXNlbGYubnNwX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YV90eXBlPWNvbHVtbl90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrX25hbWVz PXBrX25hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc19vaWRzPWhhc19vaWRz Ci0gICAgICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNl bGVjdF9zcWwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYuc3FsX3BhdGgsICdzZWxlY3Quc3FsJ10pLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9iamVjdF9uYW1lPXNlbGYub2JqZWN0X25hbWUsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgbnNwX25hbWU9c2VsZi5uc3BfbmFtZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwcmltYXJ5X2tleXM9cHJpbWFyeV9rZXlzLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGhhc19vaWRzPWhhc19vaWRzCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0K LSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Rfb2Zfc3FsW29mX3R5cGVdLmFwcGVuZCh7Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NxbCc6IHNxbCwgJ2RhdGEnOiBkYXRhLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdjbGllbnRfcm93JzogdG1wX3Jvd19pbmRleCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0X3NxbCc6IHNlbGVjdF9zcWwKLSAgICAg ICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFJlc2V0IGNv bHVtbiBkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fZGF0YSA9IHt9Ci0KLSAg ICAgICAgICAgICAgICAjIEZvciB1cGRhdGVkIHJvd3MKLSAgICAgICAgICAgICAgICBlbGlmIG9m X3R5cGUgPT0gJ3VwZGF0ZWQnOgotICAgICAgICAgICAgICAgICAgICBsaXN0X29mX3NxbFtvZl90 eXBlXSA9IFtdCi0gICAgICAgICAgICAgICAgICAgIGZvciBlYWNoX3JvdyBpbiBjaGFuZ2VkX2Rh dGFbb2ZfdHlwZV06Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gY2hhbmdlZF9kYXRh W29mX3R5cGVdW2VhY2hfcm93XVsnZGF0YSddCi0gICAgICAgICAgICAgICAgICAgICAgICBwa19l c2NhcGVkID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrOiBwa192YWwucmVwbGFj ZSgnJScsICclJScpIGlmIGhhc2F0dHIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBrX3ZhbCwgJ3JlcGxhY2UnKSBlbHNlIHBrX3ZhbAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZvciBwaywgcGtfdmFsIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdl ZF9kYXRhW29mX3R5cGVdW2VhY2hfcm93XVsncHJpbWFyeV9rZXlzJ10KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAuaXRlbXMoKQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnNxbF9wYXRoLCAndXBkYXRlLnNxbCddKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3RvX2JlX3NhdmVkPWRhdGEsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGdhZG1pbl9hbGlhcz1wZ2FkbWluX2FsaWFzLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5cz1wa19lc2NhcGVkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9iamVjdF9uYW1lPXNlbGYub2JqZWN0X25hbWUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgbnNwX25hbWU9c2VsZi5uc3BfbmFtZSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhX3R5cGU9Y29sdW1uX3R5cGUKLSAgICAgICAgICAgICAgICAg ICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Rfb2Zfc3FsW29mX3R5cGVdLmFw cGVuZCh7J3NxbCc6IHNxbCwgJ2RhdGEnOiBkYXRhfSkKLSAgICAgICAgICAgICAgICAgICAgICAg IGxpc3Rfb2Zfcm93aWQuYXBwZW5kKGRhdGEuZ2V0KGNsaWVudF9wcmltYXJ5X2tleSkpCi0KLSAg ICAgICAgICAgICAgICAjIEZvciBkZWxldGVkIHJvd3MKLSAgICAgICAgICAgICAgICBlbGlmIG9m X3R5cGUgPT0gJ2RlbGV0ZWQnOgotICAgICAgICAgICAgICAgICAgICBsaXN0X29mX3NxbFtvZl90 eXBlXSA9IFtdCi0gICAgICAgICAgICAgICAgICAgIGlzX2ZpcnN0ID0gVHJ1ZQotICAgICAgICAg ICAgICAgICAgICByb3dzX3RvX2RlbGV0ZSA9IFtdCi0gICAgICAgICAgICAgICAgICAgIGtleXMg PSBOb25lCi0gICAgICAgICAgICAgICAgICAgIG5vX29mX2tleXMgPSBOb25lCi0gICAgICAgICAg ICAgICAgICAgIGZvciBlYWNoX3JvdyBpbiBjaGFuZ2VkX2RhdGFbb2ZfdHlwZV06Ci0gICAgICAg ICAgICAgICAgICAgICAgICByb3dzX3RvX2RlbGV0ZS5hcHBlbmQoY2hhbmdlZF9kYXRhW29mX3R5 cGVdW2VhY2hfcm93XSkKLSAgICAgICAgICAgICAgICAgICAgICAgICMgRmV0Y2ggdGhlIGtleXMg Zm9yIFNRTCBnZW5lcmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc19maXJzdDoK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gY292ZXJ0IGRpY3Rfa2V5 cyB0byBub3JtYWwgbGlzdCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHl0aG9u MwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gUHl0aG9uMiwgaXQncyBhbHJlYWR5 IGEgbGlzdCAmIFdlIHdpbGwgYWxzbwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmV0 Y2ggY29sdW1uIG5hbWVzIHVzaW5nIGluZGV4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg a2V5cyA9IGxpc3QoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWRfZGF0 YVtvZl90eXBlXVtlYWNoX3Jvd10ua2V5cygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vX29mX2tleXMgPSBsZW4oa2V5cykKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpc19maXJzdCA9IEZhbHNlCi0gICAgICAgICAgICAg ICAgICAgICMgTWFwIGluZGV4IHdpdGggY29sdW1uIG5hbWUgZm9yIGVhY2ggcm93Ci0gICAgICAg ICAgICAgICAgICAgIGZvciByb3cgaW4gcm93c190b19kZWxldGU6Ci0gICAgICAgICAgICAgICAg ICAgICAgICBmb3IgaywgdiBpbiByb3cuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIFNldCBwcmltYXJ5IGtleSB3aXRoIGxhYmVsICYgZGVsZXRlIGluZGV4IGJhc2VkCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtYXBwZWQga2V5Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dbY2hh bmdlZF9kYXRhWydjb2x1bW5zJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFtpbnQoayldWyduYW1lJ11dID0gdgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw dCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbCByb3dba10KLQotICAgICAgICAgICAgICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAiLyIu am9pbihbc2VsZi5zcWxfcGF0aCwgJ2RlbGV0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAg ICAgICBkYXRhPXJvd3NfdG9fZGVsZXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFy eV9rZXlfbGFiZWxzPWtleXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBub19vZl9rZXlzPW5v X29mX2tleXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RfbmFtZT1zZWxmLm9iamVj dF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgbnNwX25hbWU9c2VsZi5uc3BfbmFtZQot ICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIGxpc3Rfb2Zfc3FsW29m X3R5cGVdLmFwcGVuZCh7J3NxbCc6IHNxbCwgJ2RhdGEnOiB7fX0pCi0KLSAgICAgICAgICAgIGZv ciBvcHIsIHNxbHMgaW4gbGlzdF9vZl9zcWwuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBmb3Ig aXRlbSBpbiBzcWxzOgotICAgICAgICAgICAgICAgICAgICBpZiBpdGVtWydzcWwnXToKLSAgICAg ICAgICAgICAgICAgICAgICAgIGl0ZW1bJ2RhdGEnXSA9IHsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwZ2FkbWluX2FsaWFzW2tdIGlmIGsgaW4gcGdhZG1pbl9hbGlhcyBlbHNlIGs6IHYK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBpdGVtWydkYXRhJ10uaXRl bXMoKQotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAg ICByb3dfYWRkZWQgPSBOb25lCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZiBmYWlsdXJl X2hhbmRsZSgpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4uZXhlY3V0ZV92b2lk KCdST0xMQkFDSzsnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2Ugcm9sbCBi YWNrZWQgZXZlcnkgdGhpbmcgdGhlbiB1cGRhdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyBtZXNzYWdlIGZvciBlYWNoIHNxbCBxdWVyeS4KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb3IgdmFsIGluIHF1ZXJ5X3JlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgcXVlcnlfcmVzW3ZhbF1bJ3N0YXR1cyddOgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcXVlcnlfcmVzW3ZhbF1bJ3Jlc3VsdCddID0gXAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUcmFuc2FjdGlvbiBST0xMQkFDSycKLQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgbGlzdCBpcyBlbXB0eSBzZXQgcm93aWQgdG8g MQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgbGlzdF9vZl9yb3dpZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9yb3dpZCA9IGxpc3Rfb2Zfcm93aWRbY291bnRdCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfcm93aWQgPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlv bjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Jvd2lkID0gMAotCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1cywgcmVzLCBxdWVyeV9yZXMsIF9yb3dp ZAotCi0gICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyBGZXRjaCBvaWRzL3ByaW1hcnkga2V5cwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmICdzZWxlY3Rfc3FsJyBpbiBpdGVtIGFuZCBpdGVtWydzZWxlY3Rfc3FsJ106Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2Rp Y3QoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtWydzcWwnXSwgaXRl bVsnZGF0YSddKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX3ZvaWQoCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtWydzcWwnXSwgaXRlbVsnZGF0 YSddKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBfOgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVfaGFuZGxlKCkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICByYWlzZQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3Rh dHVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlX2hhbmRsZSgp Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICMgU2VsZWN0IGFkZGVkIHJvdyBmcm9tIHRoZSB0 YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ3NlbGVjdF9zcWwnIGluIGl0ZW06Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBzZWxfcmVzID0gY29ubi5leGVjdXRl X2RpY3QoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bJ3NlbGVjdF9zcWwn XSwgcmVzWydyb3dzJ11bMF0pCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLmV4ZWN1dGVfdm9p ZCgnUk9MTEJBQ0s7JykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBy b2xsIGJhY2tlZCBldmVyeSB0aGluZyB0aGVuIHVwZGF0ZQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIHRoZSBtZXNzYWdlIGZvciBlYWNoIHNxbCBxdWVyeS4KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZm9yIHZhbCBpbiBxdWVyeV9yZXM6Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiBxdWVyeV9yZXNbdmFsXVsnc3RhdHVzJ106Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlfcmVzW3ZhbF1bJ3Jlc3Vs dCddID0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVHJh bnNhY3Rpb24gUk9MTEJBQ0snCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJ ZiBsaXN0IGlzIGVtcHR5IHNldCByb3dpZCB0byAxCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpc3Rf b2Zfcm93aWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Jvd2lk ID0gbGlzdF9vZl9yb3dpZFtjb3VudF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Jvd2lk ID0gMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Jvd2lkID0gMAotCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXMsIHNlbF9yZXMsIHF1ZXJ5X3Jl cywgX3Jvd2lkCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAncm93cycgaW4gc2Vs X3JlcyBhbmQgbGVuKHNlbF9yZXNbJ3Jvd3MnXSkgPiAwOgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByb3dfYWRkZWQgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpdGVtWydjbGllbnRfcm93J106IHNlbF9yZXNbJ3Jvd3MnXVswXX0KLQotICAgICAgICAg ICAgICAgICAgICAgICAgcm93c19hZmZlY3RlZCA9IGNvbm4ucm93c19hZmZlY3RlZCgpCi0KLSAg ICAgICAgICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlIHJlc3VsdCBvZiBlYWNoIHF1ZXJ5IGlu IGRpY3Rpb25hcnkKLSAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X3Jlc1tjb3VudF0gPSB7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6IHN0YXR1cywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAncmVzdWx0JzogTm9uZSBpZiByb3dfYWRkZWQgZWxzZSByZXMs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NxbCc6IHNxbCwgJ3Jvd3NfYWZmZWN0ZWQn OiByb3dzX2FmZmVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb3dfYWRkZWQn OiByb3dfYWRkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg ICAgICAgICAgY291bnQgKz0gMQotCi0gICAgICAgICAgICAjIENvbW1pdCB0aGUgdHJhbnNhY3Rp b24gaWYgdGhlcmUgaXMgbm8gZXJyb3IgZm91bmQKLSAgICAgICAgICAgIGNvbm4uZXhlY3V0ZV92 b2lkKCdDT01NSVQ7JykKLQotICAgICAgICByZXR1cm4gc3RhdHVzLCByZXMsIHF1ZXJ5X3Jlcywg X3Jvd2lkCisgICAgICAgIHJldHVybiBzYXZlX2NoYW5nZWRfZGF0YShjaGFuZ2VkX2RhdGE9Y2hh bmdlZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc19pbmZv PWNvbHVtbnNfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRf b2JqPXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfcHJpbWFy eV9rZXk9Y2xpZW50X3ByaW1hcnlfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29ubj1jb25uKQogCiAKIGNsYXNzIFZpZXdDb21tYW5kKEdyaWRDb21tYW5kKToKQEAgLTEx MTQsMTggKzg2MCw4OCBAQCBjbGFzcyBRdWVyeVRvb2xDb21tYW5kKEJhc2VDb21tYW5kLCBGZXRj aGVkUm93VHJhY2tlcik6CiAgICAgICAgIHNlbGYuYXV0b19yb2xsYmFjayA9IEZhbHNlCiAgICAg ICAgIHNlbGYuYXV0b19jb21taXQgPSBUcnVlCiAKKyAgICAgICAgIyBBdHRyaWJ1dGVzIG5lZWRl ZCB0byBiZSBhYmxlIHRvIGVkaXQgdXBkYXRhYmxlIHJlc3VsdHNlbHRzCisgICAgICAgIHNlbGYu aXNfdXBkYXRhYmxlX3Jlc3VsdHNldCA9IEZhbHNlCisgICAgICAgIHNlbGYucHJpbWFyeV9rZXlz ID0gTm9uZQorICAgICAgICBzZWxmLnBrX25hbWVzID0gTm9uZQorCiAgICAgZGVmIGdldF9zcWwo c2VsZiwgZGVmYXVsdF9jb25uPU5vbmUpOgogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVm IGdldF9hbGxfY29sdW1uc193aXRoX29yZGVyKHNlbGYsIGRlZmF1bHRfY29ubj1Ob25lKToKICAg ICAgICAgcmV0dXJuIE5vbmUKIAorICAgIGRlZiBnZXRfcHJpbWFyeV9rZXlzKHNlbGYpOgorICAg ICAgICByZXR1cm4gc2VsZi5wa19uYW1lcywgc2VsZi5wcmltYXJ5X2tleXMKKwogICAgIGRlZiBj YW5fZWRpdChzZWxmKToKLSAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxm LmlzX3VwZGF0YWJsZV9yZXN1bHRzZXQKIAogICAgIGRlZiBjYW5fZmlsdGVyKHNlbGYpOgogICAg ICAgICByZXR1cm4gRmFsc2UKIAorICAgIGRlZiBjaGVja191cGRhdGFibGVfcmVzdWx0c19wa2V5 cyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQg dG8gY2hlY2sgd2hldGhlciB0aGUgbGFzdCBzdWNjZXNzZnVsIHF1ZXJ5CisgICAgICAgICAgICBw cm9kdWNlZCB1cGRhdGFibGUgcmVzdWx0cyBhbmQgc2V0cyB0aGUgbmVjZXNzYXJ5IGZsYWdzIGFu ZAorICAgICAgICAgICAgYXR0cmlidXRlcyBhY2NvcmRpbmdseQorICAgICAgICAiIiIKKyAgICAg ICAgIyBGZXRjaCB0aGUgY29ubmVjdGlvbiBvYmplY3QKKyAgICAgICAgZHJpdmVyID0gZ2V0X2Ry aXZlcihQR19ERUZBVUxUX0RSSVZFUikKKyAgICAgICAgbWFuYWdlciA9IGRyaXZlci5jb25uZWN0 aW9uX21hbmFnZXIoc2VsZi5zaWQpCisgICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24o ZGlkPXNlbGYuZGlkLCBjb25uX2lkPXNlbGYuY29ubl9pZCkKKworICAgICAgICAjIENoZWNrIHRo YXQgdGhlIHF1ZXJ5IHJlc3VsdHMgYXJlIHJlYWR5IGZpcnN0CisgICAgICAgIHN0YXR1cywgcmVz dWx0ID0gY29ubi5wb2xsKAorICAgICAgICAgICAgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c9VHJ1 ZSwgbm9fcmVzdWx0PVRydWUpCisgICAgICAgIGlmIHN0YXR1cyAhPSBBU1lOQ19PSzoKKyAgICAg ICAgICAgIHJldHVybgorCisgICAgICAgICMgR2V0IHRoZSBwYXRoIHRvIHRoZSBzcWwgdGVtcGxh dGVzCisgICAgICAgIHNxbF9wYXRoID0gJ3NxbGVkaXRvci9zcWwvI3swfSMnLmZvcm1hdChtYW5h Z2VyLnZlcnNpb24pCisKKyAgICAgICAgc2VsZi5pc191cGRhdGFibGVfcmVzdWx0c2V0LCBzZWxm LnByaW1hcnlfa2V5cywgcGtfbmFtZXMsIHRhYmxlX29pZCA9IFwKKyAgICAgICAgICAgIGlzX3F1 ZXJ5X3Jlc3VsdHNldF91cGRhdGFibGUoY29ubiwgc3FsX3BhdGgpCisKKyAgICAgICAgIyBDcmVh dGUgcGtfbmFtZXMgYXR0cmlidXRlIGluIHRoZSByZXF1aXJlZCBmb3JtYXQKKyAgICAgICAgaWYg cGtfbmFtZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnBrX25hbWVzID0gJycKKwor ICAgICAgICAgICAgZm9yIHBrX25hbWUgaW4gcGtfbmFtZXM6CisgICAgICAgICAgICAgICAgc2Vs Zi5wa19uYW1lcyArPSBkcml2ZXIucXRJZGVudChjb25uLCBwa19uYW1lKSArICcsJworCisgICAg ICAgICAgICBpZiBzZWxmLnBrX25hbWVzICE9ICcnOgorICAgICAgICAgICAgICAgICMgUmVtb3Zl IGxhc3QgY2hhcmFjdGVyIGZyb20gdGhlIHN0cmluZworICAgICAgICAgICAgICAgIHNlbGYucGtf bmFtZXMgPSBzZWxmLnBrX25hbWVzWzotMV0KKworICAgICAgICAjIEFkZCBhdHRyaWJ1dGVzIHJl cXVpcmVkIHRvIGJlIGFibGUgdG8gdXBkYXRlIHRhYmxlIGRhdGEKKyAgICAgICAgaWYgc2VsZi5p c191cGRhdGFibGVfcmVzdWx0c2V0OgorICAgICAgICAgICAgc2VsZi5fX3NldF91cGRhdGFibGVf cmVzdWx0c19hdHRycyhzcWxfcGF0aD1zcWxfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfb2lkPXRhYmxlX29pZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1jb25uKQorCisgICAgZGVm IHNhdmUoc2VsZiwKKyAgICAgICAgICAgICBjaGFuZ2VkX2RhdGEsCisgICAgICAgICAgICAgY29s dW1uc19pbmZvLAorICAgICAgICAgICAgIGNsaWVudF9wcmltYXJ5X2tleT0nX190ZW1wX1BLJywK KyAgICAgICAgICAgICBkZWZhdWx0X2Nvbm49Tm9uZSk6CisgICAgICAgIGlmIG5vdCBzZWxmLmlz X3VwZGF0YWJsZV9yZXN1bHRzZXQ6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGdldHRleHQo J1Jlc3VsdHNldCBpcyBub3QgdXBkYXRhYmxlLicpLCBOb25lLCBOb25lCisgICAgICAgIGVsc2U6 CisgICAgICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKQorICAg ICAgICAgICAgaWYgZGVmYXVsdF9jb25uIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgbWFuYWdl ciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIoc2VsZi5zaWQpCisgICAgICAgICAgICAgICAg Y29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbihkaWQ9c2VsZi5kaWQsIGNvbm5faWQ9c2VsZi5jb25u X2lkKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb25uID0gZGVmYXVsdF9j b25uCisKKyAgICAgICAgICAgIHJldHVybiBzYXZlX2NoYW5nZWRfZGF0YShjaGFuZ2VkX2RhdGE9 Y2hhbmdlZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVt bnNfaW5mbz1jb2x1bW5zX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29ubj1jb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1h bmRfb2JqPXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50 X3ByaW1hcnlfa2V5PWNsaWVudF9wcmltYXJ5X2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhdXRvX2NvbW1pdD1zZWxmLmF1dG9fY29tbWl0KQorCiAgICAgZGVmIHNl dF9jb25uZWN0aW9uX2lkKHNlbGYsIGNvbm5faWQpOgogICAgICAgICBzZWxmLmNvbm5faWQgPSBj b25uX2lkCiAKQEAgLTExMzQsMyArOTUwLDI4IEBAIGNsYXNzIFF1ZXJ5VG9vbENvbW1hbmQoQmFz ZUNvbW1hbmQsIEZldGNoZWRSb3dUcmFja2VyKToKIAogICAgIGRlZiBzZXRfYXV0b19jb21taXQo c2VsZiwgYXV0b19jb21taXQpOgogICAgICAgICBzZWxmLmF1dG9fY29tbWl0ID0gYXV0b19jb21t aXQKKworICAgIGRlZiBfX3NldF91cGRhdGFibGVfcmVzdWx0c19hdHRycyhzZWxmLCBzcWxfcGF0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfb2lkLCBjb25u KToKKyAgICAgICAgIyBTZXQgdGVtcGxhdGUgcGF0aCBmb3Igc3FsIHNjcmlwdHMgYW5kIHRoZSB0 YWJsZSBvYmplY3QgaWQKKyAgICAgICAgc2VsZi5zcWxfcGF0aCA9IHNxbF9wYXRoCisgICAgICAg IHNlbGYub2JqX2lkID0gdGFibGVfb2lkCisKKyAgICAgICAgaWYgY29ubi5jb25uZWN0ZWQoKToK KyAgICAgICAgICAgICMgRmV0Y2ggdGhlIE5hbWVzcGFjZSBOYW1lIGFuZCBvYmplY3QgTmFtZQor ICAgICAgICAgICAgcXVlcnkgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYuc3FsX3BhdGgsICdvYmplY3RuYW1lLnNxbCddKSwKKyAgICAgICAgICAgICAg ICBvYmpfaWQ9c2VsZi5vYmpfaWQKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgc3RhdHVz LCByZXN1bHQgPSBjb25uLmV4ZWN1dGVfZGljdChxdWVyeSkKKyAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKHJlc3VsdCkKKworICAgICAg ICAgICAgc2VsZi5uc3BfbmFtZSA9IHJlc3VsdFsncm93cyddWzBdWyduc3BuYW1lJ10KKyAgICAg ICAgICAgIHNlbGYub2JqZWN0X25hbWUgPSByZXN1bHRbJ3Jvd3MnXVswXVsncmVsbmFtZSddCisg ICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oZ2V0dGV4dCgKKyAgICAg ICAgICAgICAgICAnTm90IGNvbm5lY3RlZCB0byBzZXJ2ZXIgb3IgY29ubmVjdGlvbiB3aXRoIHRo ZSBzZXJ2ZXIgJworICAgICAgICAgICAgICAgICdoYXMgYmVlbiBjbG9zZWQuJykKKyAgICAgICAg ICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvY3Nz L3NxbGVkaXRvci5jc3MgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2Nzcy9z cWxlZGl0b3IuY3NzCmluZGV4IDg2ZDNkZWZjLi4yMTQ0ODMyNyAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9jc3Mvc3FsZWRpdG9yLmNzcworKysgYi93ZWIv cGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2Nzcy9zcWxlZGl0b3IuY3NzCkBAIC0yOTEs NyArMjkxLDcgQEAgaW5wdXQuZWRpdG9yLWNoZWNrYm94OmZvY3VzIHsKICAgYmFja2dyb3VuZC1p bWFnZTogdXJsKCcuLi9pbWcvZGlzY29ubmVjdC5zdmcnKTsKIH0KIAotLmljb24tY29tbWl0LCAu aWNvbi1yb2xsYmFjayB7CisuaWNvbi1jb21taXQsIC5pY29uLXJvbGxiYWNrLCAuaWNvbi1zYXZl LWRhdGEtY2hhbmdlcyB7CiAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgYWxpZ24tY29udGVu dDogY2VudGVyOwogICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwpAQCAtMzExLDYgKzMxMSwxMCBA QCBpbnB1dC5lZGl0b3ItY2hlY2tib3g6Zm9jdXMgewogICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwo Jy4uL2ltZy9yb2xsYmFjay5zdmcnKSAhaW1wb3J0YW50OwogfQogCisuaWNvbi1zYXZlLWRhdGEt Y2hhbmdlcyB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1nL3NhdmVfZGF0YV9jaGFu Z2VzLnN2ZycpICFpbXBvcnRhbnQ7Cit9CisKIC5hanMtYm9keSAud2Fybi1oZWFkZXIgewogICBm b250LXNpemU6IDEzcHg7CiAgIGZvbnQtd2VpZ2h0OiBib2xkOwpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9pbWcvc2F2ZV9kYXRhX2NoYW5nZXMuc3ZnIGIv d2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9pbWcvc2F2ZV9kYXRhX2NoYW5nZXMu c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4wOWVhZDkyOAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvaW1nL3NhdmVf ZGF0YV9jaGFuZ2VzLnN2ZwpAQCAtMCwwICsxLDEyIEBACis8c3ZnIHZlcnNpb249IjEuMSIgeG1s bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53 My5vcmcvMTk5OS94bGluayIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTc5MiAx NzkyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjE3OTIiIGhlaWdodD0iMTc5MiI+PHJl Y3QgaWQ9ImJhY2tncm91bmRyZWN0IiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB4PSIwIiB5 PSIwIiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+ CisJLnN0MHtmaWxsOiMyMjIyMjI7fQorCS5zdDF7ZmlsbDojRkZGRkZGO30KKzwvc3R5bGU+Cis8 dGl0bGU+c2F2ZV9kYXRhX2NoYW5nZXM8L3RpdGxlPgorCisKKzxnIGNsYXNzPSJjdXJyZW50TGF5 ZXIiIHN0eWxlPSIiPjx0aXRsZT5MYXllciAxPC90aXRsZT48cGF0aCBjbGFzcz0ic3QwIHNlbGVj dGVkIiBkPSJNNjE0LjAyMTExODE2NDA2MjUsMTM4MS4wMzk4ODIxODMwNzUgdi0xNzAuMTgxODIz NzMwNDY4NzUgYzAsLTguMjQzMTgyMTgyMzEyMDEyIC0yLjY3MDMyOTU3MDc3MDI2MzcsLTE1LjA2 ODE4MTk5MTU3NzE0OCAtOC4wMTA5ODkxODkxNDc5NSwtMjAuMzg2MzYzOTgzMTU0Mjk3IHMtMTIu MTk0NTA1NjkxNTI4MzIsLTcuOTc3MjcyNTEwNTI4NTY0NSAtMjAuNDcyNTI4NDU3NjQxNiwtNy45 NzcyNzI1MTA1Mjg1NjQ1IEgzMDAuNzAzNDMwMTc1NzgxMjUgYy04LjI3ODAyMTgxMjQzODk2NSww IC0xNS4xMzE4NjgzNjI0MjY3NTgsMi42NTkwOTA5OTU3ODg1NzQgLTIwLjQ3MjUyODQ1NzY0MTYs Ny45NzcyNzI1MTA1Mjg1NjQ1IHMtOC4wMTA5ODkxODkxNDc5NSwxMi4xNDMxODE4MDA4NDIyODUg LTguMDEwOTg5MTg5MTQ3OTUsMjAuMzg2MzYzOTgzMTU0Mjk3IHYxNzAuMTgxODIzNzMwNDY4NzUg YzAsOC4yNDMxODIxODIzMTIwMTIgMi42NzAzMjk1NzA3NzAyNjM3LDE1LjA2ODE4MTk5MTU3NzE0 OCA4LjAxMDk4OTE4OTE0Nzk1LDIwLjM4NjM2Mzk4MzE1NDI5NyBzMTIuMTk0NTA1NjkxNTI4MzIs Ny45NzcyNzI1MTA1Mjg1NjQ1IDIwLjQ3MjUyODQ1NzY0MTYsNy45NzcyNzI1MTA1Mjg1NjQ1IGgy ODQuODM1MTc0NTYwNTQ2OSBjOC4yNzgwMjE4MTI0Mzg5NjUsMCAxNS4xMzE4NjgzNjI0MjY3NTgs LTIuNjU5MDkwOTk1Nzg4NTc0IDIwLjQ3MjUyODQ1NzY0MTYsLTcuOTc3MjcyNTEwNTI4NTY0NSBT NjE0LjAyMTExODE2NDA2MjUsMTM4OS4yODMxNjgzMTU4ODc1IDYxNC4wMjExMTgxNjQwNjI1LDEz ODEuMDM5ODgyMTgzMDc1IHpNNjE0LjAyMTExODE2NDA2MjUsMTA0MC42NzQ4OTE5NDg3IFY4NzAu NDkyNzYzMDQyNDUgYzAsLTguMjQzMTgyMTgyMzEyMDEyIC0yLjY3MDMyOTU3MDc3MDI2MzcsLTE1 LjA2ODE4MTk5MTU3NzE0OCAtOC4wMTA5ODkxODkxNDc5NSwtMjAuMzg2MzYzOTgzMTU0Mjk3IHMt MTIuMTk0NTA1NjkxNTI4MzIsLTcuOTc3MjcyNTEwNTI4NTY0NSAtMjAuNDcyNTI4NDU3NjQxNiwt Ny45NzcyNzI1MTA1Mjg1NjQ1IEgzMDAuNzAzNDMwMTc1NzgxMjUgYy04LjI3ODAyMTgxMjQzODk2 NSwwIC0xNS4xMzE4NjgzNjI0MjY3NTgsMi42NTkwOTA5OTU3ODg1NzQgLTIwLjQ3MjUyODQ1NzY0 MTYsNy45NzcyNzI1MTA1Mjg1NjQ1IHMtOC4wMTA5ODkxODkxNDc5NSwxMi4xNDMxODE4MDA4NDIy ODUgLTguMDEwOTg5MTg5MTQ3OTUsMjAuMzg2MzYzOTgzMTU0Mjk3IHYxNzAuMTgxODIzNzMwNDY4 NzUgYzAsOC4yNDMxODIxODIzMTIwMTIgMi42NzAzMjk1NzA3NzAyNjM3LDE1LjA2ODE4MTk5MTU3 NzE0OCA4LjAxMDk4OTE4OTE0Nzk1LDIwLjM4NjM2Mzk4MzE1NDI5NyBzMTIuMTk0NTA1NjkxNTI4 MzIsNy45NzcyNzI1MTA1Mjg1NjQ1IDIwLjQ3MjUyODQ1NzY0MTYsNy45NzcyNzI1MTA1Mjg1NjQ1 IGgyODQuODM1MTc0NTYwNTQ2OSBjOC4yNzgwMjE4MTI0Mzg5NjUsMCAxNS4xMzE4NjgzNjI0MjY3 NTgsLTIuNjU5MDkwOTk1Nzg4NTc0IDIwLjQ3MjUyODQ1NzY0MTYsLTcuOTc3MjcyNTEwNTI4NTY0 NSBTNjE0LjAyMTExODE2NDA2MjUsMTA0OC45MTgzMDAxNTE4MjUgNjE0LjAyMTExODE2NDA2MjUs MTA0MC42NzQ4OTE5NDg3IHpNMTA2OS43NTg0MjI4NTE1NjI1LDEzODEuMDM5ODgyMTgzMDc1IHYt MTcwLjE4MTgyMzczMDQ2ODc1IGMwLC04LjI0MzE4MjE4MjMxMjAxMiAtMi42NzAzMjk1NzA3NzAy NjM3LC0xNS4wNjgxODE5OTE1NzcxNDggLTguMDEwOTg5MTg5MTQ3OTUsLTIwLjM4NjM2Mzk4MzE1 NDI5NyBzLTEyLjE5NDUwNTY5MTUyODMyLC03Ljk3NzI3MjUxMDUyODU2NDUgLTIwLjQ3MjUyODQ1 NzY0MTYsLTcuOTc3MjcyNTEwNTI4NTY0NSBINzU2LjQzODcyMDcwMzEyNSBjLTguMjc4MDIxODEy NDM4OTY1LDAgLTE1LjEzMTg2ODM2MjQyNjc1OCwyLjY1OTA5MDk5NTc4ODU3NCAtMjAuNDcyNTI4 NDU3NjQxNiw3Ljk3NzI3MjUxMDUyODU2NDUgcy04LjAxMDk4OTE4OTE0Nzk1LDEyLjE0MzE4MTgw MDg0MjI4NSAtOC4wMTA5ODkxODkxNDc5NSwyMC4zODYzNjM5ODMxNTQyOTcgdjE3MC4xODE4MjM3 MzA0Njg3NSBjMCw4LjI0MzE4MjE4MjMxMjAxMiAyLjY3MDMyOTU3MDc3MDI2MzcsMTUuMDY4MTgx OTkxNTc3MTQ4IDguMDEwOTg5MTg5MTQ3OTUsMjAuMzg2MzYzOTgzMTU0Mjk3IHMxMi4xOTQ1MDU2 OTE1MjgzMiw3Ljk3NzI3MjUxMDUyODU2NDUgMjAuNDcyNTI4NDU3NjQxNiw3Ljk3NzI3MjUxMDUy ODU2NDUgaDI4NC44MzUxNzQ1NjA1NDY5IGM4LjI3ODAyMTgxMjQzODk2NSwwIDE1LjEzMTg2ODM2 MjQyNjc1OCwtMi42NTkwOTA5OTU3ODg1NzQgMjAuNDcyNTI4NDU3NjQxNiwtNy45NzcyNzI1MTA1 Mjg1NjQ1IFMxMDY5Ljc1ODQyMjg1MTU2MjUsMTM4OS4yODMxNjgzMTU4ODc1IDEwNjkuNzU4NDIy ODUxNTYyNSwxMzgxLjAzOTg4MjE4MzA3NSB6TTYxNC4wMjExMTgxNjQwNjI1LDcwMC4zMTA5Mzkz MTE5ODEyIFY1MzAuMTI5ODQ4MDAzMzg3NSBjMCwtOC4yNDMxODIxODIzMTIwMTIgLTIuNjcwMzI5 NTcwNzcwMjYzNywtMTUuMDY4MTgxOTkxNTc3MTQ4IC04LjAxMDk4OTE4OTE0Nzk1LC0yMC4zODYz NjM5ODMxNTQyOTcgcy0xMi4xOTQ1MDU2OTE1MjgzMiwtNy45NzcyNzI1MTA1Mjg1NjQ1IC0yMC40 NzI1Mjg0NTc2NDE2LC03Ljk3NzI3MjUxMDUyODU2NDUgSDMwMC43MDM0MzAxNzU3ODEyNSBjLTgu Mjc4MDIxODEyNDM4OTY1LDAgLTE1LjEzMTg2ODM2MjQyNjc1OCwyLjY1OTA5MDk5NTc4ODU3NCAt MjAuNDcyNTI4NDU3NjQxNiw3Ljk3NzI3MjUxMDUyODU2NDUgcy04LjAxMDk4OTE4OTE0Nzk1LDEy LjE0MzE4MTgwMDg0MjI4NSAtOC4wMTA5ODkxODkxNDc5NSwyMC4zODYzNjM5ODMxNTQyOTcgdjE3 MC4xODE4MjM3MzA0Njg3NSBjMCw4LjI0MzE4MjE4MjMxMjAxMiAyLjY3MDMyOTU3MDc3MDI2Mzcs MTUuMDY4MTgxOTkxNTc3MTQ4IDguMDEwOTg5MTg5MTQ3OTUsMjAuMzg2MzYzOTgzMTU0Mjk3IHMx Mi4xOTQ1MDU2OTE1MjgzMiw3Ljk3NzI3MjUxMDUyODU2NDUgMjAuNDcyNTI4NDU3NjQxNiw3Ljk3 NzI3MjUxMDUyODU2NDUgaDI4NC44MzUxNzQ1NjA1NDY5IGM4LjI3ODAyMTgxMjQzODk2NSwwIDE1 LjEzMTg2ODM2MjQyNjc1OCwtMi42NTkwOTA5OTU3ODg1NzQgMjAuNDcyNTI4NDU3NjQxNiwtNy45 NzcyNzI1MTA1Mjg1NjQ1IFM2MTQuMDIxMTE4MTY0MDYyNSw3MDguNTU0MTAzMzc0NDgxMiA2MTQu MDIxMTE4MTY0MDYyNSw3MDAuMzEwOTM5MzExOTgxMiB6TTEwNjkuNzU4NDIyODUxNTYyNSwxMDQw LjY3NDg5MTk0ODcgVjg3MC40OTI3NjMwNDI0NSBjMCwtOC4yNDMxODIxODIzMTIwMTIgLTIuNjcw MzI5NTcwNzcwMjYzNywtMTUuMDY4MTgxOTkxNTc3MTQ4IC04LjAxMDk4OTE4OTE0Nzk1LC0yMC4z ODYzNjM5ODMxNTQyOTcgcy0xMi4xOTQ1MDU2OTE1MjgzMiwtNy45NzcyNzI1MTA1Mjg1NjQ1IC0y MC40NzI1Mjg0NTc2NDE2LC03Ljk3NzI3MjUxMDUyODU2NDUgSDc1Ni40Mzg3MjA3MDMxMjUgYy04 LjI3ODAyMTgxMjQzODk2NSwwIC0xNS4xMzE4NjgzNjI0MjY3NTgsMi42NTkwOTA5OTU3ODg1NzQg LTIwLjQ3MjUyODQ1NzY0MTYsNy45NzcyNzI1MTA1Mjg1NjQ1IHMtOC4wMTA5ODkxODkxNDc5NSwx Mi4xNDMxODE4MDA4NDIyODUgLTguMDEwOTg5MTg5MTQ3OTUsMjAuMzg2MzYzOTgzMTU0Mjk3IHYx NzAuMTgxODIzNzMwNDY4NzUgYzAsOC4yNDMxODIxODIzMTIwMTIgMi42NzAzMjk1NzA3NzAyNjM3 LDE1LjA2ODE4MTk5MTU3NzE0OCA4LjAxMDk4OTE4OTE0Nzk1LDIwLjM4NjM2Mzk4MzE1NDI5NyBz MTIuMTk0NTA1NjkxNTI4MzIsNy45NzcyNzI1MTA1Mjg1NjQ1IDIwLjQ3MjUyODQ1NzY0MTYsNy45 NzcyNzI1MTA1Mjg1NjQ1IGgyODQuODM1MTc0NTYwNTQ2OSBjOC4yNzgwMjE4MTI0Mzg5NjUsMCAx NS4xMzE4NjgzNjI0MjY3NTgsLTIuNjU5MDkwOTk1Nzg4NTc0IDIwLjQ3MjUyODQ1NzY0MTYsLTcu OTc3MjcyNTEwNTI4NTY0NSBTMTA2OS43NTg0MjI4NTE1NjI1LDEwNDguOTE4MzAwMTUxODI1IDEw NjkuNzU4NDIyODUxNTYyNSwxMDQwLjY3NDg5MTk0ODcgek0xNTI1LjQ5NTYwNTQ2ODc1LDEzODEu MDM5ODgyMTgzMDc1IHYtMTcwLjE4MTgyMzczMDQ2ODc1IGMwLC04LjI0MzE4MjE4MjMxMjAxMiAt Mi42NzAzMjk1NzA3NzAyNjM3LC0xNS4wNjgxODE5OTE1NzcxNDggLTguMDEwOTg5MTg5MTQ3OTUs LTIwLjM4NjM2Mzk4MzE1NDI5NyBzLTEyLjE5NDUwNTY5MTUyODMyLC03Ljk3NzI3MjUxMDUyODU2 NDUgLTIwLjQ3MjUyODQ1NzY0MTYsLTcuOTc3MjcyNTEwNTI4NTY0NSBoLTI4NC44MzUxNzQ1NjA1 NDY5IGMtOC4yNzgwMjE4MTI0Mzg5NjUsMCAtMTUuMTMxODY4MzYyNDI2NzU4LDIuNjU5MDkwOTk1 Nzg4NTc0IC0yMC40NzI1Mjg0NTc2NDE2LDcuOTc3MjcyNTEwNTI4NTY0NSBzLTguMDEwOTg5MTg5 MTQ3OTUsMTIuMTQzMTgxODAwODQyMjg1IC04LjAxMDk4OTE4OTE0Nzk1LDIwLjM4NjM2Mzk4MzE1 NDI5NyB2MTcwLjE4MTgyMzczMDQ2ODc1IGMwLDguMjQzMTgyMTgyMzEyMDEyIDIuNjcwMzI5NTcw NzcwMjYzNywxNS4wNjgxODE5OTE1NzcxNDggOC4wMTA5ODkxODkxNDc5NSwyMC4zODYzNjM5ODMx NTQyOTcgczEyLjE5NDUwNTY5MTUyODMyLDcuOTc3MjcyNTEwNTI4NTY0NSAyMC40NzI1Mjg0NTc2 NDE2LDcuOTc3MjcyNTEwNTI4NTY0NSBoMjg0LjgzNTE3NDU2MDU0NjkgYzguMjc4MDIxODEyNDM4 OTY1LDAgMTUuMTMxODY4MzYyNDI2NzU4LC0yLjY1OTA5MDk5NTc4ODU3NCAyMC40NzI1Mjg0NTc2 NDE2LC03Ljk3NzI3MjUxMDUyODU2NDUgUzE1MjUuNDk1NjA1NDY4NzUsMTM4OS4yODMxNjgzMTU4 ODc1IDE1MjUuNDk1NjA1NDY4NzUsMTM4MS4wMzk4ODIxODMwNzUgek0xMDY5Ljc1ODQyMjg1MTU2 MjUsNzAwLjMxMDkzOTMxMTk4MTIgVjUzMC4xMjk4NDgwMDMzODc1IGMwLC04LjI0MzE4MjE4MjMx MjAxMiAtMi42NzAzMjk1NzA3NzAyNjM3LC0xNS4wNjgxODE5OTE1NzcxNDggLTguMDEwOTg5MTg5 MTQ3OTUsLTIwLjM4NjM2Mzk4MzE1NDI5NyBzLTEyLjE5NDUwNTY5MTUyODMyLC03Ljk3NzI3MjUx MDUyODU2NDUgLTIwLjQ3MjUyODQ1NzY0MTYsLTcuOTc3MjcyNTEwNTI4NTY0NSBINzU2LjQzODcy MDcwMzEyNSBjLTguMjc4MDIxODEyNDM4OTY1LDAgLTE1LjEzMTg2ODM2MjQyNjc1OCwyLjY1OTA5 MDk5NTc4ODU3NCAtMjAuNDcyNTI4NDU3NjQxNiw3Ljk3NzI3MjUxMDUyODU2NDUgcy04LjAxMDk4 OTE4OTE0Nzk1LDEyLjE0MzE4MTgwMDg0MjI4NSAtOC4wMTA5ODkxODkxNDc5NSwyMC4zODYzNjM5 ODMxNTQyOTcgdjE3MC4xODE4MjM3MzA0Njg3NSBjMCw4LjI0MzE4MjE4MjMxMjAxMiAyLjY3MDMy OTU3MDc3MDI2MzcsMTUuMDY4MTgxOTkxNTc3MTQ4IDguMDEwOTg5MTg5MTQ3OTUsMjAuMzg2MzYz OTgzMTU0Mjk3IHMxMi4xOTQ1MDU2OTE1MjgzMiw3Ljk3NzI3MjUxMDUyODU2NDUgMjAuNDcyNTI4 NDU3NjQxNiw3Ljk3NzI3MjUxMDUyODU2NDUgaDI4NC44MzUxNzQ1NjA1NDY5IGM4LjI3ODAyMTgx MjQzODk2NSwwIDE1LjEzMTg2ODM2MjQyNjc1OCwtMi42NTkwOTA5OTU3ODg1NzQgMjAuNDcyNTI4 NDU3NjQxNiwtNy45NzcyNzI1MTA1Mjg1NjQ1IFMxMDY5Ljc1ODQyMjg1MTU2MjUsNzA4LjU1NDEw MzM3NDQ4MTIgMTA2OS43NTg0MjI4NTE1NjI1LDcwMC4zMTA5MzkzMTE5ODEyIHpNMTUyNS40OTU2 MDU0Njg3NSwxMDQwLjY3NDg5MTk0ODcgVjg3MC40OTI3NjMwNDI0NSBjMCwtOC4yNDMxODIxODIz MTIwMTIgLTIuNjcwMzI5NTcwNzcwMjYzNywtMTUuMDY4MTgxOTkxNTc3MTQ4IC04LjAxMDk4OTE4 OTE0Nzk1LC0yMC4zODYzNjM5ODMxNTQyOTcgcy0xMi4xOTQ1MDU2OTE1MjgzMiwtNy45NzcyNzI1 MTA1Mjg1NjQ1IC0yMC40NzI1Mjg0NTc2NDE2LC03Ljk3NzI3MjUxMDUyODU2NDUgaC0yODQuODM1 MTc0NTYwNTQ2OSBjLTguMjc4MDIxODEyNDM4OTY1LDAgLTE1LjEzMTg2ODM2MjQyNjc1OCwyLjY1 OTA5MDk5NTc4ODU3NCAtMjAuNDcyNTI4NDU3NjQxNiw3Ljk3NzI3MjUxMDUyODU2NDUgcy04LjAx MDk4OTE4OTE0Nzk1LDEyLjE0MzE4MTgwMDg0MjI4NSAtOC4wMTA5ODkxODkxNDc5NSwyMC4zODYz NjM5ODMxNTQyOTcgdjE3MC4xODE4MjM3MzA0Njg3NSBjMCw4LjI0MzE4MjE4MjMxMjAxMiAyLjY3 MDMyOTU3MDc3MDI2MzcsMTUuMDY4MTgxOTkxNTc3MTQ4IDguMDEwOTg5MTg5MTQ3OTUsMjAuMzg2 MzYzOTgzMTU0Mjk3IHMxMi4xOTQ1MDU2OTE1MjgzMiw3Ljk3NzI3MjUxMDUyODU2NDUgMjAuNDcy NTI4NDU3NjQxNiw3Ljk3NzI3MjUxMDUyODU2NDUgaDI4NC44MzUxNzQ1NjA1NDY5IGM4LjI3ODAy MTgxMjQzODk2NSwwIDE1LjEzMTg2ODM2MjQyNjc1OCwtMi42NTkwOTA5OTU3ODg1NzQgMjAuNDcy NTI4NDU3NjQxNiwtNy45NzcyNzI1MTA1Mjg1NjQ1IFMxNTI1LjQ5NTYwNTQ2ODc1LDEwNDguOTE4 MzAwMTUxODI1IDE1MjUuNDk1NjA1NDY4NzUsMTA0MC42NzQ4OTE5NDg3IHpNMTUyNS40OTU2MDU0 Njg3NSw3MDAuMzEwOTM5MzExOTgxMiBWNTMwLjEyOTg0ODAwMzM4NzUgYzAsLTguMjQzMTgyMTgy MzEyMDEyIC0yLjY3MDMyOTU3MDc3MDI2MzcsLTE1LjA2ODE4MTk5MTU3NzE0OCAtOC4wMTA5ODkx ODkxNDc5NSwtMjAuMzg2MzYzOTgzMTU0Mjk3IHMtMTIuMTk0NTA1NjkxNTI4MzIsLTcuOTc3Mjcy NTEwNTI4NTY0NSAtMjAuNDcyNTI4NDU3NjQxNiwtNy45NzcyNzI1MTA1Mjg1NjQ1IGgtMjg0Ljgz NTE3NDU2MDU0NjkgYy04LjI3ODAyMTgxMjQzODk2NSwwIC0xNS4xMzE4NjgzNjI0MjY3NTgsMi42 NTkwOTA5OTU3ODg1NzQgLTIwLjQ3MjUyODQ1NzY0MTYsNy45NzcyNzI1MTA1Mjg1NjQ1IHMtOC4w MTA5ODkxODkxNDc5NSwxMi4xNDMxODE4MDA4NDIyODUgLTguMDEwOTg5MTg5MTQ3OTUsMjAuMzg2 MzYzOTgzMTU0Mjk3IHYxNzAuMTgxODIzNzMwNDY4NzUgYzAsOC4yNDMxODIxODIzMTIwMTIgMi42 NzAzMjk1NzA3NzAyNjM3LDE1LjA2ODE4MTk5MTU3NzE0OCA4LjAxMDk4OTE4OTE0Nzk1LDIwLjM4 NjM2Mzk4MzE1NDI5NyBzMTIuMTk0NTA1NjkxNTI4MzIsNy45NzcyNzI1MTA1Mjg1NjQ1IDIwLjQ3 MjUyODQ1NzY0MTYsNy45NzcyNzI1MTA1Mjg1NjQ1IGgyODQuODM1MTc0NTYwNTQ2OSBjOC4yNzgw MjE4MTI0Mzg5NjUsMCAxNS4xMzE4NjgzNjI0MjY3NTgsLTIuNjU5MDkwOTk1Nzg4NTc0IDIwLjQ3 MjUyODQ1NzY0MTYsLTcuOTc3MjcyNTEwNTI4NTY0NSBTMTUyNS40OTU2MDU0Njg3NSw3MDguNTU0 MTAzMzc0NDgxMiAxNTI1LjQ5NTYwNTQ2ODc1LDcwMC4zMTA5MzkzMTE5ODEyIHpNMTYzOS40Mjk2 ODc1LDQxNi42NzU0NDEyNjUxMDYyIHY5NjQuMzYzNjQ3NDYwOTM3NSBjMCwzOSAtMTMuOTc0NzI0 NzY5NTkyMjg1LDcyLjQxNTkwODgxMzQ3NjU2IC00MS44MzUxNjY5MzExNTIzNDQsMTAwLjE1OTA4 ODEzNDc2NTYyIHMtNjEuNDE3NTgzNDY1NTc2MTcsNDEuNjU5MDkxOTQ5NDYyODkgLTEwMC41ODI0 MjAzNDkxMjExLDQxLjY1OTA5MTk0OTQ2Mjg5IEgzMDAuNzAzNDMwMTc1NzgxMjUgYy0zOS4xNjQ4 MzY4ODM1NDQ5MiwwIC03Mi43MjE5NzcyMzM4ODY3MiwtMTMuOTE1OTA4ODEzNDc2NTYyIC0xMDAu NTgyNDIwMzQ5MTIxMSwtNDEuNjU5MDkxOTQ5NDYyODkgcy00MS44MzUxNjY5MzExNTIzNDQsLTYx LjE1OTA5MTk0OTQ2Mjg5IC00MS44MzUxNjY5MzExNTIzNDQsLTEwMC4xNTkwODgxMzQ3NjU2MiBW NDE2LjY3NTQ0MTI2NTEwNjIgYzAsLTM5IDEzLjk3NDcyNDc2OTU5MjI4NSwtNzIuNDE1OTA4ODEz NDc2NTYgNDEuODM1MTY2OTMxMTUyMzQ0LC0xMDAuMTU5MDg4MTM0NzY1NjIgczYxLjQxNzU4MzQ2 NTU3NjE3LC00MS42NTkwOTE5NDk0NjI4OSAxMDAuNTgyNDIwMzQ5MTIxMSwtNDEuNjU5MDkxOTQ5 NDYyODkgaDExOTYuMzA3NzM5MjU3ODEyNSBjMzkuMTY0ODM2ODgzNTQ0OTIsMCA3Mi43MjE5Nzcy MzM4ODY3MiwxMy45MTU5MDg4MTM0NzY1NjIgMTAwLjU4MjQyMDM0OTEyMTEsNDEuNjU5MDkxOTQ5 NDYyODkgUzE2MzkuNDI5Njg3NSwzNzcuNjc1NDQxMjY1MTA2MiAxNjM5LjQyOTY4NzUsNDE2LjY3 NTQ0MTI2NTEwNjIgeiIgaWQ9InN2Z18xIi8+PGcgaWQ9InN2Z18yIiBjbGFzcz0ic2VsZWN0ZWQi PgorCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik04OTguODU2MjYyMjA3MDMxMiwxMzQyLjc0OTExMDY5 ODcgYy0yMi42OTc4MDE1ODk5NjU4MiwwIC00My4wODEzMjE3MTYzMDg1OTQsLTguMzMxODE3NjI2 OTUzMTI1IC01OC45MjUyNzM4OTUyNjM2NywtMjQuMTk3NzI3MjAzMzY5MTQgbC0yODkuNDYzNzQ1 MTE3MTg3NSwtMjg4LjY4ODYyOTE1MDM5MDYgYy0xNi4zNzgwMjEyNDAyMzQzNzUsLTE1LjUxMTM2 MzAyOTQ3OTk4IC0yNS4wMTIwODg3NzU2MzQ3NjYsLTM1Ljg5NzcyNzk2NjMwODU5NCAtMjUuMDEy MDg4Nzc1NjM0NzY2LC01OC45NDMxODAwODQyMjg1MTYgYzAsLTIyLjg2ODE4MTIyODYzNzY5NSA4 LjI3ODAyMTgxMjQzODk2NSwtNDIuNzIyNzI4NzI5MjQ4MDUgMjQuNjU2MDQ0MDA2MzQ3NjU2LC01 OS4wMzE4MTQ1NzUxOTUzMSBsMzIuODQ1MDU4NDQxMTYyMTEsLTMzLjE1MDAwMTUyNTg3ODkwNiBj MC4xNzgwMjE5ODIzMTIyMDI0NSwtMC4xNzcyNzI3MjIxMjUwNTM0IDAuNDQ1MDU0OTQ4MzI5OTI1 NTQsLTAuNDQzMTgxODEyNzYzMjE0MSAwLjYyMzA3NjkxNTc0MDk2NjgsLTAuNjIwNDU0NTQ5Nzg5 NDI4NyBjMTYuNDY3MDMzMzg2MjMwNDcsLTE1LjUxMTM2MzAyOTQ3OTk4IDM2Ljc2MTUzOTQ1OTIy ODUxNiwtMjMuNjY1OTA4ODEzNDc2NTYyIDU4LjgzNjI2MTc0OTI2NzU4LC0yMy42NjU5MDg4MTM0 NzY1NjIgYzIyLjY5NzgwMTU4OTk2NTgyLDAgNDMuMDgxMzIxNzE2MzA4NTk0LDguMzMxODE3NjI2 OTUzMTI1IDU4LjkyNTI3Mzg5NTI2MzY3LDI0LjE5NzcyNzIwMzM2OTE0IGw4NS4yNzI1Mjk2MDIw NTA3OCw4NC45MTM2MzUyNTM5MDYyNSBWNzE1LjU1NjQyMjcxMDQxODcgYzAsLTIyLjI0NzcyNjQ0 MDQyOTY4OCA4LjU0NTA1NTM4OTQwNDI5NywtNDIuNTQ1NDU1OTMyNjE3MTkgMjQuNzQ1MDU0MjQ0 OTk1MTE3LC01OC42NzcyNjg5ODE5MzM1OTQgczM2LjU4MzUxNTE2NzIzNjMzLC0yNC42NDA5MDcy ODc1OTc2NTYgNTguOTI1MjczODk1MjYzNjcsLTI0LjY0MDkwNzI4NzU5NzY1NiBoNTYuOTY3MDMz Mzg2MjMwNDcgYzIyLjM0MTc1ODcyODAyNzM0NCwwIDQyLjcyNTI3MzEzMjMyNDIyLDguNTA5MDkx Mzc3MjU4MyA1OC45MjUyNzM4OTUyNjM2NywyNC42NDA5MDcyODc1OTc2NTYgczI0Ljc0NTA1NDI0 NDk5NTExNywzNi40Mjk1NDI1NDE1MDM5MDYgMjQuNzQ1MDU0MjQ0OTk1MTE3LDU4LjY3NzI2ODk4 MTkzMzU5NCB2MjQ3LjgyNzI3MDUwNzgxMjUgbDg1LjI3MjUyOTYwMjA1MDc4LC04NC45MTM2MzUy NTM5MDYyNSBjMTUuOTMyOTY3MTg1OTc0MTIxLC0xNS44NjU5MDg2MjI3NDE3IDM2LjIyNzQ3NDIx MjY0NjQ4NCwtMjQuMTk3NzI3MjAzMzY5MTQgNTguOTI1MjczODk1MjYzNjcsLTI0LjE5NzcyNzIw MzM2OTE0IGMyMi4wNzQ3MjQxOTczODc2OTUsMCA0Mi40NTgyNDQzMjM3MzA0Nyw4LjE1NDU0NDgz MDMyMjI2NiA1OC44MzYyNjE3NDkyNjc1OCwyMy42NjU5MDg4MTM0NzY1NjIgYzAuMTc4MDIxOTgy MzEyMjAyNDUsMC4xNzcyNzI3MjIxMjUwNTM0IDAuMzU2MDQzOTY0NjI0NDA0OSwwLjM1NDU0NTQ0 NDI1MDEwNjggMC41MzQwNjU5NjE4Mzc3Njg2LDAuNTMxODE4MjExMDc4NjQzOCBsMzMuMzc5MTE5 ODczMDQ2ODc1LDMzLjIzODYzNjAxNjg0NTcgYzAuMTc4MDIxOTgyMzEyMjAyNDUsMC4xNzcyNzI3 MjIxMjUwNTM0IDAuMzU2MDQzOTY0NjI0NDA0OSwwLjM1NDU0NTQ0NDI1MDEwNjggMC41MzQwNjU5 NjE4Mzc3Njg2LDAuNTMxODE4MjExMDc4NjQzOCBjMTUuNTc2OTIzMzcwMzYxMzI4LDE2LjM5Nzcy Nzk2NjMwODU5NCAyMy43NjU5MzM5OTA0Nzg1MTYsMzYuNjA2ODE1MzM4MTM0NzY2IDIzLjc2NTkz Mzk5MDQ3ODUxNiw1OC41ODg2MzQ0OTA5NjY4IGMwLDIyLjYwMjI3MjAzMzY5MTQwNiAtOC4zNjcw MzMwMDQ3NjA3NDIsNDIuOTAwMDAxNTI1ODc4OTA2IC0yNC4yOTk5OTkyMzcwNjA1NDcsNTguNjc3 MjY4OTgxOTMzNTk0IGwtMjg5LjczMDc3MzkyNTc4MTI1LDI4OC45NTQ1Mjg4MDg1OTM3NSBjLTAu MTc4MDIxOTgyMzEyMjAyNDUsMC4xNzcyNzI3MjIxMjUwNTM0IC0wLjM1NjA0Mzk2NDYyNDQwNDks MC4zNTQ1NDU0NDQyNTAxMDY4IC0wLjUzNDA2NTk2MTgzNzc2ODYsMC41MzE4MTgyMTEwNzg2NDM4 IEM5NDEuMzE0NTE0MTYwMTU2MiwxMzM0LjUwNTgyNDU2NTg4NzUgOTIwLjkzMDk2OTIzODI4MTIs MTM0Mi43NDkxMTA2OTg3IDg5OC44NTYyNjIyMDcwMzEyLDEzNDIuNzQ5MTEwNjk4NyB6IiBpZD0i c3ZnXzMiLz4KKwk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNOTI3LjMzOTc4MjcxNDg0MzgsNjU4Ljgy OTEyNzc4ODU0MzcgYzE1LjM5ODkwMDk4NTcxNzc3MywwIDI4Ljc1MDU0OTMxNjQwNjI1LDUuNTg0 MDkxMTg2NTIzNDM3NSA0MC4wNTQ5NDY4OTk0MTQwNiwxNi44NDA5MDgwNTA1MzcxMSBzMTYuOTEy MDg4Mzk0MTY1MDQsMjQuNTUyMjcyNzk2NjMwODYgMTYuOTEyMDg4Mzk0MTY1MDQsMzkuODg2MzYz OTgzMTU0MyB2MzEyIGwxMzAuODQ2MTYwODg4NjcxODgsLTEzMC4yOTU0NTU5MzI2MTcyIGMxMC45 NDgzNTE4NjAwNDYzODcsLTEwLjkwMjI3MzE3ODEwMDU4NiAyNC4yOTk5OTkyMzcwNjA1NDcsLTE2 LjM5NzcyNzk2NjMwODU5NCA0MC4wNTQ5NDY4OTk0MTQwNiwtMTYuMzk3NzI3OTY2MzA4NTk0IGMx NS4zOTg5MDA5ODU3MTc3NzMsMCAyOC45Mjg1NzE3MDEwNDk4MDUsNS40OTU0NTQzMTEzNzA4NSA0 MC41LDE2LjM5NzcyNzk2NjMwODU5NCBsMzMuMzc5MTE5ODczMDQ2ODc1LDMzLjIzODYzNjAxNjg0 NTcgYzEwLjk0ODM1MTg2MDA0NjM4NywxMS41MjI3MjcwMTI2MzQyNzcgMTYuNDY3MDMzMzg2MjMw NDcsMjQuOTk1NDU0Nzg4MjA4MDA4IDE2LjQ2NzAzMzM4NjIzMDQ3LDQwLjMyOTU0NDA2NzM4Mjgx IGMwLDE1LjY4ODYzNjc3OTc4NTE1NiAtNS41MTg2ODEwNDkzNDY5MjQsMjguOTg0MDkwODA1MDUz NzEgLTE2LjQ2NzAzMzM4NjIzMDQ3LDM5Ljg4NjM2Mzk4MzE1NDMgbC0yODkuNzMwNzczOTI1Nzgx MjUsMjg4Ljk1NDUyODgwODU5Mzc1IGMtMTEuNTcxNDI4Mjk4OTUwMTk1LDEwLjkwMjI3MzE3ODEw MDU4NiAtMjUuMTAxMDk5MDE0MjgyMjI3LDE2LjM5NzcyNzk2NjMwODU5NCAtNDAuNSwxNi4zOTc3 Mjc5NjYzMDg1OTQgYy0xNS43NTQ5NDU3NTUwMDQ4ODMsMCAtMjkuMTA2NTk0MDg1NjkzMzYsLTUu NDk1NDU0MzExMzcwODUgLTQwLjA1NDk0Njg5OTQxNDA2LC0xNi4zOTc3Mjc5NjYzMDg1OTQgbC0y ODkuNzMwNzczOTI1NzgxMjUsLTI4OC45NTQ1Mjg4MDg1OTM3NSBjLTExLjMwNDM5NTY3NTY1OTE4 LC0xMC42MzYzNjM5ODMxNTQyOTcgLTE2LjkxMjA4ODM5NDE2NTA0LC0yMy45MzE4MTgwMDg0MjI4 NSAtMTYuOTEyMDg4Mzk0MTY1MDQsLTM5Ljg4NjM2Mzk4MzE1NDMgYzAsLTE1LjY4ODYzNjc3OTc4 NTE1NiA1LjYwNzY5MjcxODUwNTg1OSwtMjkuMDcyNzI1Mjk2MDIwNTA4IDE2LjkxMjA4ODM5NDE2 NTA0LC00MC4zMjk1NDQwNjczODI4MSBsMzIuOTM0MDY2NzcyNDYwOTQsLTMzLjIzODYzNjAxNjg0 NTcgYzExLjU3MTQyODI5ODk1MDE5NSwtMTAuOTAyMjczMTc4MTAwNTg2IDI1LjEwMTA5OTAxNDI4 MjIyNywtMTYuMzk3NzI3OTY2MzA4NTk0IDQwLjUsLTE2LjM5NzcyNzk2NjMwODU5NCBjMTUuNzU0 OTQ1NzU1MDA0ODgzLDAgMjkuMTA2NTk0MDg1NjkzMzYsNS40OTU0NTQzMTEzNzA4NSA0MC4wNTQ5 NDY4OTk0MTQwNiwxNi4zOTc3Mjc5NjYzMDg1OTQgbDEzMC44NDYxNjA4ODg2NzE4OCwxMzAuMjk1 NDU1OTMyNjE3MiB2LTMxMiBjMCwtMTUuMzM0MDkwMjMyODQ5MTIxIDUuNjA3NjkyNzE4NTA1ODU5 LC0yOC42Mjk1NDUyMTE3OTE5OTIgMTYuOTEyMDg4Mzk0MTY1MDQsLTM5Ljg4NjM2Mzk4MzE1NDMg czI0LjY1NjA0NDAwNjM0NzY1NiwtMTYuODQwOTA4MDUwNTM3MTEgNDAuMDU0OTQ2ODk5NDE0MDYs LTE2Ljg0MDkwODA1MDUzNzExIEw5MjcuMzM5NzgyNzE0ODQzOCw2NTguODI5MTI3Nzg4NTQzNyBN OTI3LjMzOTc4MjcxNDg0MzgsNjA1LjY0NzMwNDA1ODA3NSBoLTU2Ljk2NzAzMzM4NjIzMDQ3IGMt MjkuNjQwNjU5MzMyMjc1MzksMCAtNTYuNTIxOTgwMjg1NjQ0NTMsMTEuMTY4MTgyMzczMDQ2ODc1 IC03Ny43OTU2MDg1MjA1MDc4MSwzMi40NDA5MDY1MjQ2NTgyIGMtMjEuMzYyNjM2NTY2MTYyMTEs MjEuMjcyNzI3OTY2MzA4NTk0IC0zMi41NzgwMjIwMDMxNzM4Myw0OC4wNDA5MDg4MTM0NzY1NiAt MzIuNTc4MDIyMDAzMTczODMsNzcuNDY4MTg1NDI0ODA0NjkgdjE4My41NjU5MTc5Njg3NSBsLTM5 LjY5ODg5ODMxNTQyOTY5LC0zOS41MzE4MTQ1NzUxOTUzMSBjLTIxLjAwNjU5MzcwNDIyMzYzMywt MjAuOTE4MTgyMzczMDQ2ODc1IC00Ny44ODc5MTI3NTAyNDQxNCwtMzEuOTk3NzI2NDQwNDI5Njg4 IC03Ny43OTU2MDg1MjA1MDc4MSwtMzEuOTk3NzI2NDQwNDI5Njg4IGMtMjkuMDE3NTgxOTM5Njk3 MjY2LDAgLTU1LjcyMDg3ODYwMTA3NDIyLDEwLjcyNTAwMDM4MTQ2OTcyNyAtNzcuMTcyNTIzNDk4 NTM1MTYsMzAuOTM0MDkxNTY3OTkzMTY0IGMtMC40NDUwNTQ5NDgzMjk5MjU1NCwwLjQ0MzE4MTgx Mjc2MzIxNDEgLTAuODkwMTA5ODk2NjU5ODUxMSwwLjg4NjM2MzYyNTUyNjQyODIgLTEuMzM1MTY0 Nzg1Mzg1MTMxOCwxLjI0MDkwOTA5OTU3ODg1NzQgbC0zMi44NDUwNTg0NDExNjIxMSwzMy4xNTAw MDE1MjU4Nzg5MDYgYy0yMS4xODQ2MTQxODE1MTg1NTUsMjEuMTg0MDg5NjYwNjQ0NTMgLTMyLjQw MDAwMTUyNTg3ODkwNiw0OC4wNDA5MDg4MTM0NzY1NiAtMzIuNDAwMDAxNTI1ODc4OTA2LDc3Ljgy MjczMTAxODA2NjQgYzAsMzAuNDAyMjcxMjcwNzUxOTUzIDExLjM5MzQwNjg2Nzk4MDk1Nyw1Ny4y NTkwOTA0MjM1ODM5ODQgMzMuMDIzMDc1MTAzNzU5NzY2LDc3LjkxMTM2MTY5NDMzNTk0IGwyODku Mjg1NzA1NTY2NDA2MjUsMjg4LjUxMTM1MjUzOTA2MjUgYzIxLjAwNjU5MzcwNDIyMzYzMywyMC45 MTgxODIzNzMwNDY4NzUgNDcuOTc2OTI0ODk2MjQwMjM0LDMxLjk5NzcyNjQ0MDQyOTY4OCA3Ny44 ODQ2MTMwMzcxMDkzOCwzMS45OTc3MjY0NDA0Mjk2ODggYzI5LjAxNzU4MTkzOTY5NzI2NiwwIDU1 LjcyMDg3ODYwMTA3NDIyLC0xMC43MjUwMDAzODE0Njk3MjcgNzcuMTcyNTIzNDk4NTM1MTYsLTMw LjkzNDA5MTU2Nzk5MzE2NCBjMC4zNTYwNDM5NjQ2MjQ0MDQ5LC0wLjM1NDU0NTQ0NDI1MDEwNjgg MC43MTIwODc5MjkyNDg4MDk4LC0wLjcwOTA5MDg4ODUwMDIxMzYgMS4wNjgxMzE5MjM2NzU1Mzcs LTEuMDYzNjM2NDIyMTU3Mjg3NiBsMjg5LjczMDc3MzkyNTc4MTI1LC0yODguOTU0NTI4ODA4NTkz NzUgYzIxLjAwNjU5MzcwNDIyMzYzMywtMjAuOTE4MTgyMzczMDQ2ODc1IDMyLjA0Mzk1Njc1NjU5 MTgsLTQ3LjY4NjM2MzIyMDIxNDg0NCAzMi4wNDM5NTY3NTY1OTE4LC03Ny40NjgxODU0MjQ4MDQ2 OSBjMCwtMjguODk1NDUyNDk5Mzg5NjUgLTEwLjc3MDMzMDQyOTA3NzE0OCwtNTUuNDg2MzYyNDU3 Mjc1MzkgLTMxLjA2NDgzNjUwMjA3NTE5NSwtNzYuODQ3NzI0OTE0NTUwNzggYy0wLjM1NjA0Mzk2 NDYyNDQwNDksLTAuMzU0NTQ1NDQ0MjUwMTA2OCAtMC43MTIwODc5MjkyNDg4MDk4LC0wLjcwOTA5 MDg4ODUwMDIxMzYgLTEuMDY4MTMxOTIzNjc1NTM3LC0xLjA2MzYzNjQyMjE1NzI4NzYgbC0zMy4z NzkxMTk4NzMwNDY4NzUsLTMzLjIzODYzNjAxNjg0NTcgYy0wLjM1NjA0Mzk2NDYyNDQwNDksLTAu MzU0NTQ1NDQ0MjUwMTA2OCAtMC43MTIwODc5MjkyNDg4MDk4LC0wLjcwOTA5MDg4ODUwMDIxMzYg LTEuMDY4MTMxOTIzNjc1NTM3LC0xLjA2MzYzNjQyMjE1NzI4NzYgYy0yMS40NTE2NDg3MTIxNTgy MDMsLTIwLjIwOTA4OTI3OTE3NDgwNSAtNDguMTU0OTQ1MzczNTM1MTU2LC0zMC45MzQwOTE1Njc5 OTMxNjQgLTc3LjE3MjUyMzQ5ODUzNTE2LC0zMC45MzQwOTE1Njc5OTMxNjQgYy0yOS45MDc2OTE5 NTU1NjY0MDYsMCAtNTYuNzg5MDA5MDk0MjM4MjgsMTEuMDc5NTQ1MDIxMDU3MTI5IC03Ny43OTU2 MDg1MjA1MDc4MSwzMS45OTc3MjY0NDA0Mjk2ODggbC0zOS42OTg4OTgzMTU0Mjk2OSwzOS41MzE4 MTQ1NzUxOTUzMSBWNzE1LjU1NjQyMjcxMDQxODcgYzAsLTI5LjUxNTkwNzI4NzU5NzY1NiAtMTEu MjE1Mzg1NDM3MDExNzE5LC01Ni4yODQwOTE5NDk0NjI4OSAtMzIuNTc4MDIyMDAzMTczODMsLTc3 LjQ2ODE4NTQyNDgwNDY5IEM5ODMuODYxNzU1MzcxMDkzOCw2MTYuOTA0MTM5OTk1NTc1IDk1Ni45 ODA0Njg3NSw2MDUuNjQ3MzA0MDU4MDc1IDkyNy4zMzk3ODI3MTQ4NDM4LDYwNS42NDczMDQwNTgw NzUgTDkyNy4zMzk3ODI3MTQ4NDM4LDYwNS42NDczMDQwNTgwNzUgeiIgaWQ9InN2Z180Ii8+Cis8 L2c+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzIGIvd2ViL3Bn YWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKaW5kZXggOGJmMDQx ZjYuLmY4MTEwZWQ2IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3Rh dGljL2pzL3NxbGVkaXRvci5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3Rh dGljL2pzL3NxbGVkaXRvci5qcwpAQCAtODYsOCArODYsOCBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5 dG9vbCcsIFsKICAgICAvLyBCaW5kIGFsbCB0aGUgZXZlbnRzCiAgICAgZXZlbnRzOiB7CiAgICAg ICAnY2xpY2sgLmJ0bi1sb2FkLWZpbGUnOiAnb25fZmlsZV9sb2FkJywKLSAgICAgICdjbGljayAj YnRuLXNhdmUnOiAnb25fc2F2ZScsCi0gICAgICAnY2xpY2sgI2J0bi1maWxlLW1lbnUtc2F2ZSc6 ICdvbl9zYXZlJywKKyAgICAgICdjbGljayAjYnRuLXNhdmUtZmlsZSc6ICdvbl9zYXZlX2ZpbGUn LAorICAgICAgJ2NsaWNrICNidG4tZmlsZS1tZW51LXNhdmUnOiAnb25fc2F2ZV9maWxlJywKICAg ICAgICdjbGljayAjYnRuLWZpbGUtbWVudS1zYXZlLWFzJzogJ29uX3NhdmVfYXMnLAogICAgICAg J2NsaWNrICNidG4tZmluZCc6ICdvbl9maW5kJywKICAgICAgICdjbGljayAjYnRuLWZpbmQtbWVu dS1maW5kJzogJ29uX2ZpbmQnLApAQCAtOTgsNiArOTgsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5 dG9vbCcsIFsKICAgICAgICdjbGljayAjYnRuLWZpbmQtbWVudS1maW5kLXBlcnNpc3RlbnQnOiAn b25fZmluZF9wZXJzaXN0ZW50JywKICAgICAgICdjbGljayAjYnRuLWZpbmQtbWVudS1qdW1wJzog J29uX2p1bXAnLAogICAgICAgJ2NsaWNrICNidG4tZGVsZXRlLXJvdyc6ICdvbl9kZWxldGUnLAor ICAgICAgJ2NsaWNrICNidG4tc2F2ZS1kYXRhJzogJ29uX3NhdmVfZGF0YScsCiAgICAgICAnY2xp Y2sgI2J0bi1maWx0ZXInOiAnb25fc2hvd19maWx0ZXInLAogICAgICAgJ2NsaWNrICNidG4tZmls dGVyLW1lbnUnOiAnb25fc2hvd19maWx0ZXInLAogICAgICAgJ2NsaWNrICNidG4taW5jbHVkZS1m aWx0ZXInOiAnb25faW5jbHVkZV9maWx0ZXInLApAQCAtMzc1LDI2ICszNzYsNyBAQCBkZWZpbmUo J3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgXy5lYWNoKHdpbmRvdy50b3AucGdBZG1pbi5C cm93c2VyLmRvY2tlci5maW5kUGFuZWxzKCdmcm1fZGF0YWdyaWQnKSwgZnVuY3Rpb24ocCkgewog ICAgICAgICAgIGlmIChwLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICBwLm9uKHdjRG9ja2Vy LkVWRU5ULkNMT1NJTkcsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAvLyBPbmx5IGlmIHdl IGNhbiBlZGl0IGRhdGEgdGhlbiBwZXJmb3JtIHRoaXMgY2hlY2sKLSAgICAgICAgICAgICAgdmFy IG5vdGlmeSA9IGZhbHNlLAotICAgICAgICAgICAgICAgIG1zZzsKLSAgICAgICAgICAgICAgaWYg KHNlbGYuaGFuZGxlci5jYW5fZWRpdAotICAgICAgICAgICAgICAgICAgJiYgc2VsZi5wcmVmZXJl bmNlcy5wcm9tcHRfc2F2ZV9kYXRhX2NoYW5nZXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgZGF0 YV9zdG9yZSA9IHNlbGYuaGFuZGxlci5kYXRhX3N0b3JlOwotICAgICAgICAgICAgICAgIGlmIChk YXRhX3N0b3JlICYmIChfLnNpemUoZGF0YV9zdG9yZS5hZGRlZCkgfHwKLSAgICAgICAgICAgICAg ICAgICAgXy5zaXplKGRhdGFfc3RvcmUudXBkYXRlZCkpKSB7Ci0gICAgICAgICAgICAgICAgICBt c2cgPSBnZXR0ZXh0KCdUaGUgZGF0YSBoYXMgY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSBj aGFuZ2VzPycpOwotICAgICAgICAgICAgICAgICAgbm90aWZ5ID0gdHJ1ZTsKLSAgICAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZi5oYW5kbGVyLmlzX3F1ZXJ5X3Rv b2wgJiYgc2VsZi5oYW5kbGVyLmlzX3F1ZXJ5X2NoYW5nZWQKLSAgICAgICAgICAgICAgICAgICAg ICAgICAmJiBzZWxmLnByZWZlcmVuY2VzLnByb21wdF9zYXZlX3F1ZXJ5X2NoYW5nZXMpIHsKLSAg ICAgICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdUaGUgdGV4dCBoYXMgY2hhbmdlZC4gRG8geW91 IHdhbnQgdG8gc2F2ZSBjaGFuZ2VzPycpOwotICAgICAgICAgICAgICAgIG5vdGlmeSA9IHRydWU7 Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgaWYgKG5vdGlmeSkgewotICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLnVzZXJfY29uZmlybWF0aW9uKHAsIG1zZyk7Ci0gICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmhhbmRsZXIuY2hlY2tfbmVlZGVkX2NvbmZpcm1hdGlvbnNfYmVmb3JlX2Nsb3NpbmdfcGFu ZWwodHJ1ZSk7CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgLy8gU2V0IGZvY3VzIG9u IHF1ZXJ5IHRvb2wgb2YgYWN0aXZlIHBhbmVsCkBAIC02MzgsNjIgKzYyMCw2IEBAIGRlZmluZSgn dG9vbHMucXVlcnl0b29sJywgWwogICAgICAgfQogICAgIH0sCiAKLSAgICAvKiBUbyBwcm9tcHQg dXNlciBmb3IgdW5zYXZlZCBjaGFuZ2VzICovCi0gICAgdXNlcl9jb25maXJtYXRpb246IGZ1bmN0 aW9uKHBhbmVsLCBtc2cpIHsKLSAgICAgIC8vIElmIHRoZXJlIGlzIGFueXRoaW5nIHRvIHNhdmUg dGhlbiBwcm9tcHQgdXNlcgotICAgICAgdmFyIHRoYXQgPSB0aGlzOwotCi0gICAgICBhbGVydGlm eS5jb25maXJtU2F2ZSB8fCBhbGVydGlmeS5kaWFsb2coJ2NvbmZpcm1TYXZlJywgZnVuY3Rpb24o KSB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgbWFpbjogZnVuY3Rpb24odGl0bGUsIG1l c3NhZ2UpIHsKLSAgICAgICAgICAgIHRoaXMuc2V0SGVhZGVyKHRpdGxlKTsKLSAgICAgICAgICAg IHRoaXMuc2V0Q29udGVudChtZXNzYWdlKTsKLSAgICAgICAgICB9LAotICAgICAgICAgIHNldHVw OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgIGJ1dHRv bnM6IFt7Ci0gICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksCi0gICAgICAg ICAgICAgICAga2V5OiAyNywgLy8gRVNDCi0gICAgICAgICAgICAgICAgaW52b2tlT25DbG9zZTog dHJ1ZSwKLSAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXNlY29uZGFyeSBmYSBm YS1sZyBmYS10aW1lcyBwZy1hbGVydGlmeS1idXR0b24nLAotICAgICAgICAgICAgICB9LCB7Ci0g ICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnRG9uXCd0IHNhdmUnKSwKLSAgICAgICAgICAg ICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXNlY29uZGFyeSBmYSBmYS1sZyBmYS10cmFzaC1vIHBn LWFsZXJ0aWZ5LWJ1dHRvbicsCi0gICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICB0 ZXh0OiBnZXR0ZXh0KCdTYXZlJyksCi0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0 bi1wcmltYXJ5IGZhIGZhLWxnIGZhLXNhdmUgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAg ICAgICAgfV0sCi0gICAgICAgICAgICAgIGZvY3VzOiB7Ci0gICAgICAgICAgICAgICAgZWxlbWVu dDogMCwKLSAgICAgICAgICAgICAgICBzZWxlY3Q6IGZhbHNlLAotICAgICAgICAgICAgICB9LAot ICAgICAgICAgICAgICBvcHRpb25zOiB7Ci0gICAgICAgICAgICAgICAgbWF4aW1pemFibGU6IGZh bHNlLAotICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogZmFsc2UsCi0gICAgICAgICAgICAgIH0s Ci0gICAgICAgICAgICB9OwotICAgICAgICAgIH0sCi0gICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0 aW9uKGNsb3NlRXZlbnQpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoY2xvc2VFdmVudC5pbmRleCkg ewotICAgICAgICAgICAgY2FzZSAwOiAvLyBDYW5jZWwKLSAgICAgICAgICAgICAgLy9EbyBub3Ro aW5nLgotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgMTogLy8gRG9uJ3Qg U2F2ZQotICAgICAgICAgICAgICB0aGF0LmhhbmRsZXIuY2xvc2Vfb25fc2F2ZSA9IGZhbHNlOwot ICAgICAgICAgICAgICB0aGF0LmhhbmRsZXIuY2xvc2UoKTsKLSAgICAgICAgICAgICAgYnJlYWs7 Ci0gICAgICAgICAgICBjYXNlIDI6IC8vU2F2ZQotICAgICAgICAgICAgICB0aGF0LmhhbmRsZXIu Y2xvc2Vfb25fc2F2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgIHRoYXQuaGFuZGxlci5fc2F2ZSh0 aGF0LCB0aGF0LmhhbmRsZXIpOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K LSAgICAgICAgICB9LAotICAgICAgICB9OwotICAgICAgfSk7Ci0gICAgICBhbGVydGlmeS5jb25m aXJtU2F2ZShnZXR0ZXh0KCdTYXZlIGNoYW5nZXM/JyksIG1zZyk7Ci0gICAgICByZXR1cm4gZmFs c2U7Ci0gICAgfSwKLQogICAgIC8qIFJlZ2FyZGluZyBTbGlja0dyaWQgdXNhZ2UgaW4gcmVuZGVy X2dyaWQgZnVuY3Rpb24uCiAKICAgICAgU2xpY2tHcmlkIFBsdWdpbnM6CkBAIC03NTcsMTYgKzY4 MywxNiBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICByZW5kZXJfZ3JpZDogZnVu Y3Rpb24oY29sbGVjdGlvbiwgY29sdW1ucywgaXNfZWRpdGFibGUsIGNsaWVudF9wcmltYXJ5X2tl eSwgcm93c19hZmZlY3RlZCkgewogICAgICAgdmFyIHNlbGYgPSB0aGlzOwogCi0gICAgICAvLyBU aGlzIHdpbGwgd29yayBhcyBkYXRhIHN0b3JlIGFuZCBob2xkcyBhbGwgdGhlCi0gICAgICAvLyBp bnNlcnRlZC91cGRhdGVkL2RlbGV0ZWQgZGF0YSBmcm9tIGdyaWQKLSAgICAgIHNlbGYuaGFuZGxl ci5kYXRhX3N0b3JlID0gewotICAgICAgICB1cGRhdGVkOiB7fSwKLSAgICAgICAgYWRkZWQ6IHt9 LAotICAgICAgICBzdGFnZWRfcm93czoge30sCi0gICAgICAgIGRlbGV0ZWQ6IHt9LAotICAgICAg ICB1cGRhdGVkX2luZGV4OiB7fSwKLSAgICAgICAgYWRkZWRfaW5kZXg6IHt9LAotICAgICAgfTsK KyAgICAgIHNlbGYuaGFuZGxlci5udW1iZXJPZk1vZGlmaWVkQ2VsbHMgPSAwOworCisgICAgICBz ZWxmLmhhbmRsZXIucmVzZXRfZGF0YV9zdG9yZSgpOworCisgICAgICAvLyBrZWVwIHRyYWNrIG9m IG5ld2x5IGFkZGVkIHJvd3MKKyAgICAgIHNlbGYuaGFuZGxlci5yb3dzX3RvX2Rpc2FibGUgPSBu ZXcgQXJyYXkoKTsKKyAgICAgIC8vIFRlbXBvcmFyaWx5IGhvbGQgbmV3IHJvd3MgYWRkZWQKKyAg ICAgIHNlbGYuaGFuZGxlci50ZW1wX25ld19yb3dzID0gbmV3IEFycmF5KCk7CisgICAgICBzZWxm LmhhbmRsZXIuaGFzX21vcmVfcm93cyA9IGZhbHNlOworICAgICAgc2VsZi5oYW5kbGVyLmZldGNo aW5nX3Jvd3MgPSBmYWxzZTsKIAogICAgICAgLy8gVG8gc3RvcmUgcHJpbWFyeSBrZXlzIGJlZm9y ZSB0aGV5IGdldHMgY2hhbmdlZAogICAgICAgc2VsZi5oYW5kbGVyLnByaW1hcnlfa2V5c19kYXRh ID0ge307CkBAIC04NzMsNyArNzk5LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAg ICAgICB9CiAKICAgICAgIHZhciBncmlkX29wdGlvbnMgPSB7Ci0gICAgICAgIGVkaXRhYmxlOiB0 cnVlLAorICAgICAgICBlZGl0YWJsZTogaXNfZWRpdGFibGUsCiAgICAgICAgIGVuYWJsZUFkZFJv dzogaXNfZWRpdGFibGUsCiAgICAgICAgIGVuYWJsZUNlbGxOYXZpZ2F0aW9uOiB0cnVlLAogICAg ICAgICBlbmFibGVDb2x1bW5SZW9yZGVyOiBmYWxzZSwKQEAgLTEwOTAsNiArMTAxNiwxNCBAQCBk ZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICBfcGsgPSBhcmdzLml0ZW1bc2Vs Zi5jbGllbnRfcHJpbWFyeV9rZXldIHx8IG51bGwsIC8vIFVuaXF1ZSBrZXkgdG8gaWRlbnRpZnkg cm93CiAgICAgICAgICAgY29sdW1uX2RhdGEgPSB7fTsKIAorICAgICAgICAvLyBIaWdobGlnaHQg dGhlIGNoYW5nZWQgY2VsbAorICAgICAgICBzZWxmLmhhbmRsZXIubnVtYmVyT2ZNb2RpZmllZENl bGxzKys7CisgICAgICAgIGFyZ3MuZ3JpZC5hZGRDZWxsQ3NzU3R5bGVzKHNlbGYuaGFuZGxlci5u dW1iZXJPZk1vZGlmaWVkQ2VsbHMsIHsKKyAgICAgICAgICBbYXJncy5yb3ddIDogeworICAgICAg ICAgICAgW2NoYW5nZWRfY29sdW1uXTogJ2hpZ2hsaWdodGVkX2dyaWRfY2VsbHMnLAorICAgICAg ICAgIH0sCisgICAgICAgIH0pOworCiAgICAgICAgIC8vIEFjY2VzcyB0byByb3cvY2VsbCB2YWx1 ZSBhZnRlciBhIGNlbGwgaXMgY2hhbmdlZC4KICAgICAgICAgLy8gVGhlIHB1cnBvc2UgaXMgdG8g cmVtb3ZlIHJvd19pZCBmcm9tIHRlbXBfbmV3X3JvdwogICAgICAgICAvLyBpZiBuZXcgcm93IGhh cyBwcmltYXJ5IGtleSBpbnN0ZWFkIG9mIFtkZWZhdWx0X3ZhbHVlXQpAQCAtMTE0NSw3ICsxMDc5 LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgfQogICAgICAgICB9 CiAgICAgICAgIC8vIEVuYWJsZSBzYXZlIGJ1dHRvbgotICAgICAgICAkKCcjYnRuLXNhdmUnKS5w cm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKKyAgICAgICAgJCgnI2J0bi1zYXZlLWRhdGEnKS5wcm9w KCdkaXNhYmxlZCcsIGZhbHNlKTsKICAgICAgIH0uYmluZChlZGl0b3JfZGF0YSkpOwogCiAgICAg ICAvLyBMaXN0ZW5lciBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aGVuIHVzZXIgYWRk cyBuZXcgcm93cwpAQCAtMTE3Myw2ICsxMTA3LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wn LCBbCiAgICAgICAgICAgJ2RhdGEnOiBpdGVtLAogICAgICAgICB9OwogICAgICAgICBzZWxmLmhh bmRsZXIuZGF0YV9zdG9yZS5hZGRlZF9pbmRleFtkYXRhX2xlbmd0aF0gPSBfa2V5OworCiAgICAg ICAgIC8vIEZldGNoIGRhdGEgdHlwZSAmIGFkZCBpdCBmb3IgdGhlIGNvbHVtbgogICAgICAgICB2 YXIgdGVtcCA9IHt9OwogICAgICAgICB0ZW1wW2NvbHVtbi5uYW1lXSA9IF8ud2hlcmUodGhpcy5j b2x1bW5zLCB7CkBAIC0xMTgxLDggKzExMTYsMTcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wn LCBbCiAgICAgICAgIGdyaWQudXBkYXRlUm93Q291bnQoKTsKICAgICAgICAgZ3JpZC5yZW5kZXIo KTsKIAorICAgICAgICAvLyBIaWdobGlnaHQgdGhlIGZpcnN0IGFkZGVkIGNlbGwgb2YgdGhlIG5l dyByb3cKKyAgICAgICAgdmFyIHJvdyA9IGRhdGFWaWV3LmdldFJvd0J5SXRlbShpdGVtKTsKKyAg ICAgICAgc2VsZi5oYW5kbGVyLm51bWJlck9mTW9kaWZpZWRDZWxscysrOworICAgICAgICBhcmdz LmdyaWQuYWRkQ2VsbENzc1N0eWxlcyhzZWxmLmhhbmRsZXIubnVtYmVyT2ZNb2RpZmllZENlbGxz LCB7CisgICAgICAgICAgW3Jvd10gOiB7CisgICAgICAgICAgICBbY29sdW1uLmZpZWxkXTogJ2hp Z2hsaWdodGVkX2dyaWRfY2VsbHMnLAorICAgICAgICAgIH0sCisgICAgICAgIH0pOworCiAgICAg ICAgIC8vIEVuYWJsZSBzYXZlIGJ1dHRvbgotICAgICAgICAkKCcjYnRuLXNhdmUnKS5wcm9wKCdk aXNhYmxlZCcsIGZhbHNlKTsKKyAgICAgICAgJCgnI2J0bi1zYXZlLWRhdGEnKS5wcm9wKCdkaXNh YmxlZCcsIGZhbHNlKTsKICAgICAgIH0uYmluZChlZGl0b3JfZGF0YSkpOwogCiAgICAgICAvLyBM aXN0ZW4gZ3JpZCB2aWV3cG9ydENoYW5nZWQgZXZlbnQgdG8gbG9hZCBuZXh0IGNodW5rIG9mIGRh dGEuCkBAIC0xMjMxLDkgKzExNzUsMTEgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAg ICAgICB9CiAgICAgICBkYXRhVmlldy5zZXRJdGVtcyhjb2xsZWN0aW9uLCBzZWxmLmNsaWVudF9w cmltYXJ5X2tleSk7CiAgICAgfSwKKwogICAgIGZldGNoX25leHRfYWxsOiBmdW5jdGlvbihjYikg ewogICAgICAgdGhpcy5mZXRjaF9uZXh0KHRydWUsIGNiKTsKICAgICB9LAorCiAgICAgZmV0Y2hf bmV4dDogZnVuY3Rpb24oZmV0Y2hfYWxsLCBjYikgewogICAgICAgdmFyIHNlbGYgPSB0aGlzLAog ICAgICAgICB1cmwgPSAnJzsKQEAgLTE0MzMsNyArMTM3OSw3IEBAIGRlZmluZSgndG9vbHMucXVl cnl0b29sJywgWwogICAgIH0sCiAKICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgU2F2ZSBi dXR0b24gY2xpY2suCi0gICAgb25fc2F2ZTogZnVuY3Rpb24oZXYpIHsKKyAgICBvbl9zYXZlX2Zp bGU6IGZ1bmN0aW9uKGV2KSB7CiAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAKICAgICAgIHRoaXMu X3N0b3BFdmVudFByb3BvZ2F0aW9uKGV2KTsKQEAgLTE0NDIsOSArMTM4OCw3IEBAIGRlZmluZSgn dG9vbHMucXVlcnl0b29sJywgWwogICAgICAgc2VsZi5oYW5kbGVyLmNsb3NlX29uX3NhdmUgPSBm YWxzZTsKICAgICAgIC8vIFRyaWdnZXIgdGhlIHNhdmUgc2lnbmFsIHRvIHRoZSBTcWxFZGl0b3JD b250cm9sbGVyIGNsYXNzCiAgICAgICBzZWxmLmhhbmRsZXIudHJpZ2dlcigKLSAgICAgICAgJ3Bn YWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjpzYXZlJywKLSAgICAgICAgc2VsZiwKLSAgICAgICAgc2Vs Zi5oYW5kbGVyCisgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246c2F2ZV9maWxlJwog ICAgICAgKTsKICAgICB9LAogCkBAIC0xNDU4LDcgKzE0MDIsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1 ZXJ5dG9vbCcsIFsKICAgICAgIHNlbGYuaGFuZGxlci5jbG9zZV9vbl9zYXZlID0gZmFsc2U7CiAg ICAgICAvLyBUcmlnZ2VyIHRoZSBzYXZlIHNpZ25hbCB0byB0aGUgU3FsRWRpdG9yQ29udHJvbGxl ciBjbGFzcwogICAgICAgc2VsZi5oYW5kbGVyLnRyaWdnZXIoCi0gICAgICAgICdwZ2FkbWluLXNx bGVkaXRvcjpidXR0b246c2F2ZScsCisgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246 c2F2ZV9maWxlJywKICAgICAgICAgc2VsZiwKICAgICAgICAgc2VsZi5oYW5kbGVyLAogICAgICAg ICB0cnVlCkBAIC0xNjMxLDYgKzE1NzUsMTEgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBb CiAgICAgICApOwogICAgIH0sCiAKKyAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgU2F2ZSBE YXRhIENoYW5nZXMgYnV0dG9uIGNsaWNrLgorICAgIG9uX3NhdmVfZGF0YTogZnVuY3Rpb24oKSB7 CisgICAgICBxdWVyeVRvb2xBY3Rpb25zLnNhdmVEYXRhQ2hhbmdlcyh0aGlzLmhhbmRsZXIpOwor ICAgIH0sCisKICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIGZsYXNoIGJ1dHRvbiBj bGljay4KICAgICBvbl9mbGFzaDogZnVuY3Rpb24oKSB7CiAgICAgICBxdWVyeVRvb2xBY3Rpb25z LmV4ZWN1dGVRdWVyeSh0aGlzLmhhbmRsZXIpOwpAQCAtMjIxNyw3ICsyMTY2LDcgQEAgZGVmaW5l KCd0b29scy5xdWVyeXRvb2wnLCBbCiAKICAgICAgICAgLy8gTGlzdGVuIG9uIGV2ZW50cyBjb21l IGZyb20gU1FMRWRpdG9yVmlldyBmb3IgdGhlIGJ1dHRvbiBjbGlja2VkLgogICAgICAgICBzZWxm Lm9uKCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246bG9hZF9maWxlJywgc2VsZi5fbG9hZF9maWxl LCBzZWxmKTsKLSAgICAgICAgc2VsZi5vbigncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOnNhdmUn LCBzZWxmLl9zYXZlLCBzZWxmKTsKKyAgICAgICAgc2VsZi5vbigncGdhZG1pbi1zcWxlZGl0b3I6 YnV0dG9uOnNhdmVfZmlsZScsIHNlbGYuX3NhdmVfZmlsZSwgc2VsZik7CiAgICAgICAgIHNlbGYu b24oJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjpkZWxldGVyb3cnLCBzZWxmLl9kZWxldGUsIHNl bGYpOwogICAgICAgICBzZWxmLm9uKCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246c2hvd19maWx0 ZXInLCBzZWxmLl9zaG93X2ZpbHRlciwgc2VsZik7CiAgICAgICAgIHNlbGYub24oJ3BnYWRtaW4t c3FsZWRpdG9yOmJ1dHRvbjppbmNsdWRlX2ZpbHRlcicsIHNlbGYuX2luY2x1ZGVfZmlsdGVyLCBz ZWxmKTsKQEAgLTIyNzgsMTIgKzIyMjcsNiBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsK ICAgICAgICAgc2VsZi5xdWVyeV9zdGFydF90aW1lID0gbmV3IERhdGUoKTsKICAgICAgICAgc2Vs Zi5yb3dzX2FmZmVjdGVkID0gMDsKICAgICAgICAgc2VsZi5faW5pdF9wb2xsaW5nX2ZsYWdzKCk7 Ci0gICAgICAgIC8vIGtlZXAgdHJhY2sgb2YgbmV3bHkgYWRkZWQgcm93cwotICAgICAgICBzZWxm LnJvd3NfdG9fZGlzYWJsZSA9IG5ldyBBcnJheSgpOwotICAgICAgICAvLyBUZW1wb3JhcmlseSBo b2xkIG5ldyByb3dzIGFkZGVkCi0gICAgICAgIHNlbGYudGVtcF9uZXdfcm93cyA9IG5ldyBBcnJh eSgpOwotICAgICAgICBzZWxmLmhhc19tb3JlX3Jvd3MgPSBmYWxzZTsKLSAgICAgICAgc2VsZi5m ZXRjaGluZ19yb3dzID0gZmFsc2U7CiAKICAgICAgICAgc2VsZi50cmlnZ2VyKAogICAgICAgICAg ICdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246c2hvdycsCkBAIC0yMzMyLDggKzIyNzUs NyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICAgICAgICAkKCcjYnRu LWZpbHRlcicpLmFkZENsYXNzKCdidG4tc2Vjb25kYXJ5Jyk7CiAgICAgICAgICAgICAgICAgJCgn I2J0bi1maWx0ZXItZHJvcGRvd24nKS5hZGRDbGFzcygnYnRuLXNlY29uZGFyeScpOwogICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgICQoJyNidG4tc2F2ZScpLnByb3AoJ2Rpc2FibGVkJywg dHJ1ZSk7Ci0gICAgICAgICAgICAgICQoJyNidG4tZmlsZS1tZW51LWRyb3Bkb3duJykucHJvcCgn ZGlzYWJsZWQnLCB0cnVlKTsKKwogICAgICAgICAgICAgICAkKCcjYnRuLWNvcHktcm93JykucHJv cCgnZGlzYWJsZWQnLCB0cnVlKTsKICAgICAgICAgICAgICAgJCgnI2J0bi1wYXN0ZS1yb3cnKS5w cm9wKCdkaXNhYmxlZCcsIHRydWUpOwogCkBAIC0yNDA5LDEzICsyMzUxLDEyIEBAIGRlZmluZSgn dG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgICQoJyNidG4tZmlsdGVyLWRyb3Bkb3duJyku cHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBObyBkYXRh IHRvIHNhdmUgaW5pdGlhbGx5CisgICAgICAgICQoJyNidG4tc2F2ZS1kYXRhJykucHJvcCgnZGlz YWJsZWQnLCB0cnVlKTsKKwogICAgICAgICAvLyBJbml0aWFsIHNldHRpbmdzIGZvciBkZWxldGUg cm93LCBjb3B5IHJvdyBhbmQgcGFzdGUgcm93IGJ1dHRvbnMuCiAgICAgICAgICQoJyNidG4tZGVs ZXRlLXJvdycpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0gICAgICAgIC8vIERvIG5vdCBkaXNh YmxlIHNhdmUgYnV0dG9uIGluIHF1ZXJ5IHRvb2wKLSAgICAgICAgaWYgKCFzZWxmLmlzX3F1ZXJ5 X3Rvb2wgJiYgIXNlbGYuY2FuX2VkaXQpIHsKLSAgICAgICAgICAkKCcjYnRuLXNhdmUnKS5wcm9w KCdkaXNhYmxlZCcsIHRydWUpOwotICAgICAgICAgICQoJyNidG4tZmlsZS1tZW51LWRyb3Bkb3du JykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAgICAgICAgfQorCiAgICAgICAgIGlmICghc2Vs Zi5jYW5fZWRpdCkgewogICAgICAgICAgICQoJyNidG4tZGVsZXRlLXJvdycpLnByb3AoJ2Rpc2Fi bGVkJywgdHJ1ZSk7CiAgICAgICAgICAgJCgnI2J0bi1jb3B5LXJvdycpLnByb3AoJ2Rpc2FibGVk JywgdHJ1ZSk7CkBAIC0yNzk5LDkgKzI3NDAsOSBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcs IFsKICAgICAgICAgICBpZiAoXy5zaXplKHNlbGYuZGF0YV9zdG9yZS5hZGRlZCkgfHwgaXNfdXBk YXRlZCkgewogICAgICAgICAgICAgLy8gRG8gbm90IGRpc2FibGUgc2F2ZSBidXR0b24gaWYgdGhl cmUgYXJlCiAgICAgICAgICAgICAvLyBhbnkgb3RoZXIgY2hhbmdlcyBwcmVzZW50IGluIGdyaWQg ZGF0YQotICAgICAgICAgICAgJCgnI2J0bi1zYXZlJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7 CisgICAgICAgICAgICAkKCcjYnRuLXNhdmUtZGF0YScpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2Up OwogICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkKCcjYnRuLXNhdmUnKS5wcm9wKCdk aXNhYmxlZCcsIHRydWUpOworICAgICAgICAgICAgJCgnI2J0bi1zYXZlLWRhdGEnKS5wcm9wKCdk aXNhYmxlZCcsIHRydWUpOwogICAgICAgICAgIH0KICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNz KGdldHRleHQoJ1JvdyhzKSBkZWxldGVkLicpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTI4MzAs NDEgKzI3NzEsNDIgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgaWYg KF8uc2l6ZShzZWxmLmRhdGFfc3RvcmUuYWRkZWQpIHx8IGlzX3VwZGF0ZWQgfHwgXy5zaXplKHNl bGYuZGF0YV9zdG9yZS5kZWxldGVkKSkgewogICAgICAgICAgICAgLy8gRG8gbm90IGRpc2FibGUg c2F2ZSBidXR0b24gaWYgdGhlcmUgYXJlCiAgICAgICAgICAgICAvLyBhbnkgb3RoZXIgY2hhbmdl cyBwcmVzZW50IGluIGdyaWQgZGF0YQotICAgICAgICAgICAgJCgnI2J0bi1zYXZlJykucHJvcCgn ZGlzYWJsZWQnLCBmYWxzZSk7CisgICAgICAgICAgICAkKCcjYnRuLXNhdmUtZGF0YScpLnByb3Ao J2Rpc2FibGVkJywgZmFsc2UpOwogICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkKCcj YnRuLXNhdmUnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOworICAgICAgICAgICAgJCgnI2J0bi1z YXZlLWRhdGEnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwogICAgICAgICAgIH0KICAgICAgICAg fQogICAgICAgfSwKIAorICAgICAgLy8vIFRoaXMgZnVuY3Rpb24gd2lsbCBvcGVuIHNhdmUgZmls ZSBkaWFsb2cgY29uZGl0aW9uYWxseS4KKworICAgICAgX3NhdmVfZmlsZTogZnVuY3Rpb24oc2F2 ZV9hcz1mYWxzZSkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgICAgICAgdmFyIGN1 cnJlbnRfZmlsZSA9IHNlbGYuZ3JpZFZpZXcuY3VycmVudF9maWxlOworICAgICAgICBpZiAoIV8u aXNVbmRlZmluZWQoY3VycmVudF9maWxlKSAmJiAhc2F2ZV9hcykgeworICAgICAgICAgIHNlbGYu X3NhdmVfZmlsZV9oYW5kbGVyKGN1cnJlbnRfZmlsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgLy8gcHJvdmlkZSBjdXN0b20gb3B0aW9uIHRvIHNhdmUgZmlsZSBkaWFsb2cKKyAgICAg ICAgICB2YXIgcGFyYW1zID0geworICAgICAgICAgICAgJ3N1cHBvcnRlZF90eXBlcyc6IFsnKics ICdzcWwnXSwKKyAgICAgICAgICAgICdkaWFsb2dfdHlwZSc6ICdjcmVhdGVfZmlsZScsCisgICAg ICAgICAgICAnZGlhbG9nX3RpdGxlJzogJ1NhdmUgRmlsZScsCisgICAgICAgICAgICAnYnRuX3By aW1hcnknOiAnU2F2ZScsCisgICAgICAgICAgfTsKKyAgICAgICAgICBwZ0FkbWluLkZpbGVNYW5h Z2VyLmluaXQoKTsKKyAgICAgICAgICBwZ0FkbWluLkZpbGVNYW5hZ2VyLnNob3dfZGlhbG9nKHBh cmFtcyk7CisgICAgICAgIH0KKyAgICAgIH0sCisKICAgICAgIC8qIFRoaXMgZnVuY3Rpb24gd2ls bCBmZXRjaCB0aGUgbGlzdCBvZiBjaGFuZ2VkIG1vZGVscyBhbmQgbWFrZQogICAgICAgICogdGhl IGFqYXggY2FsbCB0byBzYXZlIHRoZSBkYXRhIGludG8gdGhlIGRhdGFiYXNlIHNlcnZlci4KLSAg ICAgICAqIGFuZCB3aWxsIG9wZW4gc2F2ZSBmaWxlIGRpYWxvZyBjb25kaXRpb25hbGx5LgogICAg ICAgICovCi0gICAgICBfc2F2ZTogZnVuY3Rpb24odmlldywgY29udHJvbGxlciwgc2F2ZV9hcykg ewotICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAgc2F2ZV9kYXRhID0gdHJ1ZTsK KyAgICAgIHNhdmVfZGF0YTogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsK IAotICAgICAgICAvLyBPcGVuIHNhdmUgZmlsZSBkaWFsb2cgaWYgcXVlcnkgdG9vbAotICAgICAg ICBpZiAoc2VsZi5pc19xdWVyeV90b29sKSB7Ci0gICAgICAgICAgdmFyIGN1cnJlbnRfZmlsZSA9 IHNlbGYuZ3JpZFZpZXcuY3VycmVudF9maWxlOwotICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5l ZChjdXJyZW50X2ZpbGUpICYmICFzYXZlX2FzKSB7Ci0gICAgICAgICAgICBzZWxmLl9zYXZlX2Zp bGVfaGFuZGxlcihjdXJyZW50X2ZpbGUpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg ICAvLyBwcm92aWRlIGN1c3RvbSBvcHRpb24gdG8gc2F2ZSBmaWxlIGRpYWxvZwotICAgICAgICAg ICAgdmFyIHBhcmFtcyA9IHsKLSAgICAgICAgICAgICAgJ3N1cHBvcnRlZF90eXBlcyc6IFsnKics ICdzcWwnXSwKLSAgICAgICAgICAgICAgJ2RpYWxvZ190eXBlJzogJ2NyZWF0ZV9maWxlJywKLSAg ICAgICAgICAgICAgJ2RpYWxvZ190aXRsZSc6ICdTYXZlIEZpbGUnLAotICAgICAgICAgICAgICAn YnRuX3ByaW1hcnknOiAnU2F2ZScsCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgcGdBZG1p bi5GaWxlTWFuYWdlci5pbml0KCk7Ci0gICAgICAgICAgICBwZ0FkbWluLkZpbGVNYW5hZ2VyLnNo b3dfZGlhbG9nKHBhcmFtcyk7Ci0gICAgICAgICAgfQorICAgICAgICBpZighc2VsZi5jYW5fZWRp dCkKICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgJCgnI2J0bi1zYXZlJyku cHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAgICAgICAgJCgnI2J0bi1maWxlLW1lbnUtZHJvcGRv d24nKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwogCiAgICAgICAgIHZhciBpc19hZGRlZCA9IF8u c2l6ZShzZWxmLmRhdGFfc3RvcmUuYWRkZWQpLAogICAgICAgICAgIGlzX3VwZGF0ZWQgPSBfLnNp emUoc2VsZi5kYXRhX3N0b3JlLnVwZGF0ZWQpLApAQCAtMjg3NCwxNTQgKzI4MTYsMTg4IEBAIGRl ZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgIHJldHVybjsgLy8gTm90aGluZyB0 byBzYXZlIGhlcmUKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzYXZlX2RhdGEpIHsKKyAgICAg ICAgc2VsZi50cmlnZ2VyKAorICAgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWlj b246c2hvdycsCisgICAgICAgICAgZ2V0dGV4dCgnU2F2aW5nIHRoZSB1cGRhdGVkIGRhdGEuLi4n KQorICAgICAgICApOwogCi0gICAgICAgICAgc2VsZi50cmlnZ2VyKAotICAgICAgICAgICAgJ3Bn YWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpzaG93JywKLSAgICAgICAgICAgIGdldHRleHQo J1NhdmluZyB0aGUgdXBkYXRlZCBkYXRhLi4uJykKLSAgICAgICAgICApOworICAgICAgICAvLyBB ZGQgdGhlIGNvbHVtbnMgdG8gdGhlIGRhdGEgc28gdGhlIHNlcnZlciBjYW4gcmVtYXAgdGhlIGRh dGEKKyAgICAgICAgdmFyIHJlcV9kYXRhID0gc2VsZi5kYXRhX3N0b3JlLCB2aWV3ID0gc2VsZi5n cmlkVmlldzsKKyAgICAgICAgcmVxX2RhdGEuY29sdW1ucyA9IHZpZXcgPyB2aWV3LmhhbmRsZXIu Y29sdW1ucyA6IHNlbGYuY29sdW1uczsKIAotICAgICAgICAgIC8vIEFkZCB0aGUgY29sdW1ucyB0 byB0aGUgZGF0YSBzbyB0aGUgc2VydmVyIGNhbiByZW1hcCB0aGUgZGF0YQotICAgICAgICAgIHZh ciByZXFfZGF0YSA9IHNlbGYuZGF0YV9zdG9yZTsKLSAgICAgICAgICByZXFfZGF0YS5jb2x1bW5z ID0gdmlldyA/IHZpZXcuaGFuZGxlci5jb2x1bW5zIDogc2VsZi5jb2x1bW5zOworICAgICAgICB2 YXIgc2F2ZV9zdWNjZXNzZnVsID0gZmFsc2U7CiAKLSAgICAgICAgICAvLyBNYWtlIGFqYXggY2Fs bCB0byBzYXZlIHRoZSBkYXRhCi0gICAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICAgIHVybDog dXJsX2Zvcignc3FsZWRpdG9yLnNhdmUnLCB7Ci0gICAgICAgICAgICAgICd0cmFuc19pZCc6IHNl bGYudHJhbnNJZCwKLSAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcs Ci0gICAgICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLAotICAgICAgICAg ICAgZGF0YTogSlNPTi5zdHJpbmdpZnkocmVxX2RhdGEpLAotICAgICAgICAgIH0pCi0gICAgICAg ICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKLSAgICAgICAgICAgICAgdmFyIGdyaWQgPSBzZWxm LnNsaWNrZ3JpZCwKLSAgICAgICAgICAgICAgICBkYXRhVmlldyA9IGdyaWQuZ2V0RGF0YSgpLAot ICAgICAgICAgICAgICAgIGRhdGFfbGVuZ3RoID0gZGF0YVZpZXcuZ2V0TGVuZ3RoKCksCi0gICAg ICAgICAgICAgICAgZGF0YSA9IFtdOwotCi0gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0 dXMpIHsKLSAgICAgICAgICAgICAgICBpZihpc19hZGRlZCkgewotICAgICAgICAgICAgICAgIC8v IFVwZGF0ZSB0aGUgcm93cyBpbiBhIGdyaWQgYWZ0ZXIgYWRkaXRpb24KLSAgICAgICAgICAgICAg ICAgIGRhdGFWaWV3LmJlZ2luVXBkYXRlKCk7Ci0gICAgICAgICAgICAgICAgICBfLmVhY2gocmVz LmRhdGEucXVlcnlfcmVzdWx0LCBmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm ICghXy5pc051bGwoci5yb3dfYWRkZWQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZldGNo IHRlbXBfaWQgcmV0dXJuZWQgYnkgc2VydmVyIGFmdGVyIGFkZGl0aW9uCi0gICAgICAgICAgICAg ICAgICAgICAgdmFyIHJvd19pZCA9IE9iamVjdC5rZXlzKHIucm93X2FkZGVkKVswXTsKLSAgICAg ICAgICAgICAgICAgICAgICBfLmVhY2gocmVxX2RhdGEuYWRkZWRfaW5kZXgsIGZ1bmN0aW9uKHYs IGspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID09IHJvd19pZCkgewotICAgICAg ICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggaXRlbSBkYXRhIHRocm91Z2ggcm93IGluZGV4Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gZ3JpZC5nZXREYXRhSXRlbShrKTsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgXy5leHRlbmQoaXRlbSwgci5yb3dfYWRkZWRbcm93 X2lkXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg fSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg ICAgICAgICAgICAgZGF0YVZpZXcuZW5kVXBkYXRlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgIC8vIFJlbW92ZSBmbGFnIGlzX3Jvd19jb3BpZWQgZnJvbSBjb3BpZWQgcm93 cwotICAgICAgICAgICAgICAgIF8uZWFjaChkYXRhLCBmdW5jdGlvbihyb3cpIHsKLSAgICAgICAg ICAgICAgICAgIGlmIChyb3cuaXNfcm93X2NvcGllZCkgewotICAgICAgICAgICAgICAgICAgICBk ZWxldGUgcm93LmlzX3Jvd19jb3BpZWQ7CisgICAgICAgIC8vIE1ha2UgYWpheCBjYWxsIHRvIHNh dmUgdGhlIGRhdGEKKyAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICB1cmw6IHVybF9mb3IoJ3Nx bGVkaXRvci5zYXZlJywgeworICAgICAgICAgICAgJ3RyYW5zX2lkJzogc2VsZi50cmFuc0lkLAor ICAgICAgICAgIH0pLAorICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAorICAgICAgICAgIGNvbnRl bnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsCisgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdp ZnkocmVxX2RhdGEpLAorICAgICAgICB9KQorICAgICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykg eworICAgICAgICAgICAgdmFyIGdyaWQgPSBzZWxmLnNsaWNrZ3JpZCwKKyAgICAgICAgICAgICAg ZGF0YVZpZXcgPSBncmlkLmdldERhdGEoKSwKKyAgICAgICAgICAgICAgZGF0YV9sZW5ndGggPSBk YXRhVmlldy5nZXRMZW5ndGgoKSwKKyAgICAgICAgICAgICAgZGF0YSA9IFtdOworCisgICAgICAg ICAgICBpZiAocmVzLmRhdGEuc3RhdHVzKSB7CisgICAgICAgICAgICAgIC8vIERpc2FibGUgU2F2 ZSBEYXRhIENoYW5nZXMgYnV0dG9uCisgICAgICAgICAgICAgICQoJyNidG4tc2F2ZS1kYXRhJyku cHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKKworICAgICAgICAgICAgICBzYXZlX3N1Y2Nlc3NmdWwg PSB0cnVlOworCisgICAgICAgICAgICAgIC8vIFJlbW92ZSBoaWdobGlnaHRlZCBjZWxscyBzdHls aW5nCisgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHNlbGYubnVtYmVyT2ZNb2Rp ZmllZENlbGxzOyBpKyspCisgICAgICAgICAgICAgICAgZ3JpZC5yZW1vdmVDZWxsQ3NzU3R5bGVz KGkpOworCisgICAgICAgICAgICAgIHNlbGYubnVtYmVyT2ZNb2RpZmllZENlbGxzID0gMDsKKwor ICAgICAgICAgICAgICBpZihpc19hZGRlZCkgeworICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhl IHJvd3MgaW4gYSBncmlkIGFmdGVyIGFkZGl0aW9uCisgICAgICAgICAgICAgICAgZGF0YVZpZXcu YmVnaW5VcGRhdGUoKTsKKyAgICAgICAgICAgICAgICBfLmVhY2gocmVzLmRhdGEucXVlcnlfcmVz dWx0LCBmdW5jdGlvbihyKSB7CisgICAgICAgICAgICAgICAgICBpZiAoIV8uaXNOdWxsKHIucm93 X2FkZGVkKSkgeworICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggdGVtcF9pZCByZXR1cm5lZCBi eSBzZXJ2ZXIgYWZ0ZXIgYWRkaXRpb24KKyAgICAgICAgICAgICAgICAgICAgdmFyIHJvd19pZCA9 IE9iamVjdC5rZXlzKHIucm93X2FkZGVkKVswXTsKKyAgICAgICAgICAgICAgICAgICAgXy5lYWNo KHJlcV9kYXRhLmFkZGVkX2luZGV4LCBmdW5jdGlvbih2LCBrKSB7CisgICAgICAgICAgICAgICAg ICAgICAgaWYgKHYgPT0gcm93X2lkKSB7CisgICAgICAgICAgICAgICAgICAgICAgLy8gRmV0Y2gg aXRlbSBkYXRhIHRocm91Z2ggcm93IGluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIg aXRlbSA9IGdyaWQuZ2V0RGF0YUl0ZW0oayk7CisgICAgICAgICAgICAgICAgICAgICAgICBfLmV4 dGVuZChpdGVtLCByLnJvd19hZGRlZFtyb3dfaWRdKTsKKyAgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIDJkIGNvcGllZF9yb3dzIGFy cmF5Ci0gICAgICAgICAgICAgICAgaWYgKGdyaWQuY29waWVkX3Jvd3MpIHsKLSAgICAgICAgICAg ICAgICAgIGRlbGV0ZSBncmlkLmNvcGllZF9yb3dzOworICAgICAgICAgICAgICAgIGRhdGFWaWV3 LmVuZFVwZGF0ZSgpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIC8vIFJlbW92ZSBm bGFnIGlzX3Jvd19jb3BpZWQgZnJvbSBjb3BpZWQgcm93cworICAgICAgICAgICAgICBfLmVhY2go ZGF0YSwgZnVuY3Rpb24ocm93KSB7CisgICAgICAgICAgICAgICAgaWYgKHJvdy5pc19yb3dfY29w aWVkKSB7CisgICAgICAgICAgICAgICAgICBkZWxldGUgcm93LmlzX3Jvd19jb3BpZWQ7CiAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAvLyBSZW1v dmUgMmQgY29waWVkX3Jvd3MgYXJyYXkKKyAgICAgICAgICAgICAgaWYgKGdyaWQuY29waWVkX3Jv d3MpIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgZ3JpZC5jb3BpZWRfcm93czsKKyAgICAgICAg ICAgICAgfQogCi0gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGRlbGV0ZWQgcm93cyBmcm9tIGNs aWVudCBhcyB3ZWxsCi0gICAgICAgICAgICAgICAgaWYgKGlzX2RlbGV0ZWQpIHsKLSAgICAgICAg ICAgICAgICAgIHZhciByb3dzID0gXy5rZXlzKHNlbGYuZGF0YV9zdG9yZS5kZWxldGVkKTsKLSAg ICAgICAgICAgICAgICAgIGlmIChkYXRhX2xlbmd0aCA9PSByb3dzLmxlbmd0aCkgewotICAgICAg ICAgICAgICAgICAgLy8gVGhpcyBtZWFucyBhbGwgdGhlIHJvd3MgYXJlIHNlbGVjdGVkLCBjbGVh ciBhbGwgZGF0YQotICAgICAgICAgICAgICAgICAgICBkYXRhID0gW107Ci0gICAgICAgICAgICAg ICAgICAgIGRhdGFWaWV3LnNldEl0ZW1zKGRhdGEsIHNlbGYuY2xpZW50X3ByaW1hcnlfa2V5KTsK LSAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFWaWV3 LmJlZ2luVXBkYXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg cm93cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gZ3Jp ZC5nZXREYXRhSXRlbShyb3dzW2ldKTsKLSAgICAgICAgICAgICAgICAgICAgICBkYXRhLnB1c2go aXRlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgZGF0YVZpZXcuZGVsZXRlSXRlbShpdGVtW3Nl bGYuY2xpZW50X3ByaW1hcnlfa2V5XSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgICAgICAgZGF0YVZpZXcuZW5kVXBkYXRlKCk7CisgICAgICAgICAgICAgIC8vIFJlbW92 ZSBkZWxldGVkIHJvd3MgZnJvbSBjbGllbnQgYXMgd2VsbAorICAgICAgICAgICAgICBpZiAoaXNf ZGVsZXRlZCkgeworICAgICAgICAgICAgICAgIHZhciByb3dzID0gXy5rZXlzKHNlbGYuZGF0YV9z dG9yZS5kZWxldGVkKTsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YV9sZW5ndGggPT0gcm93cy5s ZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIGFsbCB0aGUgcm93cyBhcmUg c2VsZWN0ZWQsIGNsZWFyIGFsbCBkYXRhCisgICAgICAgICAgICAgICAgICBkYXRhID0gW107Cisg ICAgICAgICAgICAgICAgICBkYXRhVmlldy5zZXRJdGVtcyhkYXRhLCBzZWxmLmNsaWVudF9wcmlt YXJ5X2tleSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIGRh dGFWaWV3LmJlZ2luVXBkYXRlKCk7CisgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg aSA8IHJvd3MubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBn cmlkLmdldERhdGFJdGVtKHJvd3NbaV0pOworICAgICAgICAgICAgICAgICAgICBkYXRhLnB1c2go aXRlbSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFWaWV3LmRlbGV0ZUl0ZW0oaXRlbVtzZWxm LmNsaWVudF9wcmltYXJ5X2tleV0pOwogICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg ICAgICAgc2VsZi5yb3dzX3RvX2RlbGV0ZS5hcHBseShzZWxmLCBbZGF0YV0pOwotICAgICAgICAg ICAgICAgICAgZ3JpZC5zZXRTZWxlY3RlZFJvd3MoW10pOworICAgICAgICAgICAgICAgICAgZGF0 YVZpZXcuZW5kVXBkYXRlKCk7CiAgICAgICAgICAgICAgICAgfQotCisgICAgICAgICAgICAgICAg c2VsZi5yb3dzX3RvX2RlbGV0ZS5hcHBseShzZWxmLCBbZGF0YV0pOwogICAgICAgICAgICAgICAg IGdyaWQuc2V0U2VsZWN0ZWRSb3dzKFtdKTsKKyAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg ICAgICAgLy8gUmVzZXQgZGF0YSBzdG9yZQotICAgICAgICAgICAgICAgIHNlbGYuZGF0YV9zdG9y ZSA9IHsKLSAgICAgICAgICAgICAgICAgICdhZGRlZCc6IHt9LAotICAgICAgICAgICAgICAgICAg J3VwZGF0ZWQnOiB7fSwKLSAgICAgICAgICAgICAgICAgICdkZWxldGVkJzoge30sCi0gICAgICAg ICAgICAgICAgICAnYWRkZWRfaW5kZXgnOiB7fSwKLSAgICAgICAgICAgICAgICAgICd1cGRhdGVk X2luZGV4Jzoge30sCi0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgZ3JpZC5zZXRT ZWxlY3RlZFJvd3MoW10pOwogCi0gICAgICAgICAgICAgICAgLy8gUmVzZXQgb2xkIHByaW1hcnkg a2V5IGRhdGEgbm93Ci0gICAgICAgICAgICAgICAgc2VsZi5wcmltYXJ5X2tleXNfZGF0YSA9IHt9 OworICAgICAgICAgICAgICAvLyBSZXNldCBkYXRhIHN0b3JlCisgICAgICAgICAgICAgIHNlbGYu cmVzZXRfZGF0YV9zdG9yZSgpOwogCi0gICAgICAgICAgICAgICAgLy8gQ2xlYXIgbXNncyBhZnRl ciBzdWNjZXNzZnVsIHNhdmUKLSAgICAgICAgICAgICAgICBzZWxmLnNldF9zcWxfbWVzc2FnZSgn Jyk7CisgICAgICAgICAgICAgIC8vIFJlc2V0IG9sZCBwcmltYXJ5IGtleSBkYXRhIG5vdworICAg ICAgICAgICAgICBzZWxmLnByaW1hcnlfa2V5c19kYXRhID0ge307CiAKLSAgICAgICAgICAgICAg ICBhbGVydGlmeS5zdWNjZXNzKGdldHRleHQoJ0RhdGEgc2F2ZWQgc3VjY2Vzc2Z1bGx5LicpKTsK LSAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgLy8gU29tZXRoaW5nIHdlbnQg d3Jvbmcgd2hpbGUgc2F2aW5nIGRhdGEgb24gdGhlIGRiIHNlcnZlcgotICAgICAgICAgICAgICAg ICQoJyNidG4tZmxhc2gnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKLSAgICAgICAgICAgICAg ICAkKCcjYnRuLWRvd25sb2FkJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7Ci0gICAgICAgICAg ICAgICAgc2VsZi5zZXRfc3FsX21lc3NhZ2UocmVzLmRhdGEucmVzdWx0KTsKLSAgICAgICAgICAg ICAgICB2YXIgZXJyX21zZyA9IFMoZ2V0dGV4dCgnJXMuJykpLnNwcmludGYocmVzLmRhdGEucmVz dWx0KS52YWx1ZSgpOwotICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmVycm9yKGVycl9tc2csIDIw KTsKLSAgICAgICAgICAgICAgICBncmlkLnNldFNlbGVjdGVkUm93cyhbXSk7Ci0gICAgICAgICAg ICAgICAgLy8gVG8gaGlnaGxpZ2h0IHRoZSByb3cgYXQgZmF1bHQKLSAgICAgICAgICAgICAgICBp ZiAoXy5oYXMocmVzLmRhdGEsICdfcm93aWQnKSAmJgotICAgICAgICAgICAgICAgICghXy5pc1Vu ZGVmaW5lZChyZXMuZGF0YS5fcm93aWQpIHx8ICFfLmlzTnVsbChyZXMuZGF0YS5fcm93aWQpKSkg ewotICAgICAgICAgICAgICAgICAgdmFyIF9yb3dfaW5kZXggPSBzZWxmLl9maW5kX3Jvd2luZGV4 KHJlcy5kYXRhLl9yb3dpZCk7Ci0gICAgICAgICAgICAgICAgICBpZiAoX3Jvd19pbmRleCBpbiBz ZWxmLmRhdGFfc3RvcmUuYWRkZWRfaW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgIC8vIFJlbW92 ZSBuZXcgcm93IGluZGV4IGZyb20gdGVtcF9saXN0IGlmIHNhdmUgb3BlcmF0aW9uCi0gICAgICAg ICAgICAgICAgICAvLyBmYWlscwotICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBzZWxm LmhhbmRsZXIudGVtcF9uZXdfcm93cy5pbmRleE9mKHJlcy5kYXRhLl9yb3dpZCk7Ci0gICAgICAg ICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5oYW5kbGVyLnRlbXBfbmV3X3Jvd3Muc3BsaWNlKGluZGV4LCAxKTsKLSAgICAgICAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFfc3RvcmUuYWRkZWRbc2VsZi5k YXRhX3N0b3JlLmFkZGVkX2luZGV4W19yb3dfaW5kZXhdXS5lcnIgPSB0cnVlOwotICAgICAgICAg ICAgICAgICAgfSBlbHNlIGlmIChfcm93X2luZGV4IGluIHNlbGYuZGF0YV9zdG9yZS51cGRhdGVk X2luZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YV9zdG9yZS51cGRhdGVkW3Nl bGYuZGF0YV9zdG9yZS51cGRhdGVkX2luZGV4W19yb3dfaW5kZXhdXS5lcnIgPSB0cnVlOworICAg ICAgICAgICAgICAvLyBDbGVhciBtc2dzIGFmdGVyIHN1Y2Nlc3NmdWwgc2F2ZQorICAgICAgICAg ICAgICBzZWxmLnNldF9zcWxfbWVzc2FnZSgnJyk7CisKKyAgICAgICAgICAgICAgdmFyIG1zZywg aXNfY29tbWl0X3JlcXVpcmVkID0gXy5oYXMocmVzLmRhdGEsICdpc19jb21taXRfcmVxdWlyZWQn KSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhXy5pc051 bGwocmVzLmRhdGEuaXNfY29tbWl0X3JlcXVpcmVkKSAmJgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXMuZGF0YS5pc19jb21taXRfcmVxdWlyZWQ7CisKKyAg ICAgICAgICAgICAgaWYoaXNfY29tbWl0X3JlcXVpcmVkKSB7CisgICAgICAgICAgICAgICAgbXNn ID0gZ2V0dGV4dCgnRGF0YSBzYXZlZCBzdWNjZXNzZnVsbHksIHlvdSBzdGlsbCBuZWVkIHRvIGNv bW1pdCBjaGFuZ2VzIHRvIHRoZSBkYXRhYmFzZS4nKTsKKyAgICAgICAgICAgICAgICBzZWxmLmRp c2FibGVfdHJhbnNhY3Rpb25fYnV0dG9ucyhmYWxzZSk7CisgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ0RhdGEgc2F2ZWQg c3VjY2Vzc2Z1bGx5LicpOworCisgICAgICAgICAgICAgIGFsZXJ0aWZ5LnN1Y2Nlc3MobXNnKTsK KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9u ZyB3aGlsZSBzYXZpbmcgZGF0YSBvbiB0aGUgZGIgc2VydmVyCisgICAgICAgICAgICAgIHNlbGYu c2V0X3NxbF9tZXNzYWdlKHJlcy5kYXRhLnJlc3VsdCk7CisgICAgICAgICAgICAgIHZhciBlcnJf bXNnID0gUyhnZXR0ZXh0KCclcy4nKSkuc3ByaW50ZihyZXMuZGF0YS5yZXN1bHQpLnZhbHVlKCk7 CisgICAgICAgICAgICAgIGFsZXJ0aWZ5LmVycm9yKGVycl9tc2csIDIwKTsKKyAgICAgICAgICAg ICAgZ3JpZC5zZXRTZWxlY3RlZFJvd3MoW10pOworICAgICAgICAgICAgICAvLyBUbyBoaWdobGln aHQgdGhlIHJvdyBhdCBmYXVsdAorICAgICAgICAgICAgICBpZiAoXy5oYXMocmVzLmRhdGEsICdf cm93aWQnKSAmJgorICAgICAgICAgICAgICAoIV8uaXNVbmRlZmluZWQocmVzLmRhdGEuX3Jvd2lk KSB8fCAhXy5pc051bGwocmVzLmRhdGEuX3Jvd2lkKSkpIHsKKyAgICAgICAgICAgICAgICB2YXIg X3Jvd19pbmRleCA9IHNlbGYuX2ZpbmRfcm93aW5kZXgocmVzLmRhdGEuX3Jvd2lkKTsKKyAgICAg ICAgICAgICAgICBpZiAoX3Jvd19pbmRleCBpbiBzZWxmLmRhdGFfc3RvcmUuYWRkZWRfaW5kZXgp IHsKKyAgICAgICAgICAgICAgICAvLyBSZW1vdmUgbmV3IHJvdyBpbmRleCBmcm9tIHRlbXBfbGlz dCBpZiBzYXZlIG9wZXJhdGlvbgorICAgICAgICAgICAgICAgIC8vIGZhaWxzCisgICAgICAgICAg ICAgICAgICB2YXIgaW5kZXggPSBzZWxmLmhhbmRsZXIudGVtcF9uZXdfcm93cy5pbmRleE9mKHJl cy5kYXRhLl9yb3dpZCk7CisgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkgeworICAg ICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZXIudGVtcF9uZXdfcm93cy5zcGxpY2UoaW5kZXgs IDEpOwogICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhX3N0 b3JlLmFkZGVkW3NlbGYuZGF0YV9zdG9yZS5hZGRlZF9pbmRleFtfcm93X2luZGV4XV0uZXJyID0g dHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKF9yb3dfaW5kZXggaW4gc2VsZi5kYXRh X3N0b3JlLnVwZGF0ZWRfaW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YV9zdG9y ZS51cGRhdGVkW3NlbGYuZGF0YV9zdG9yZS51cGRhdGVkX2luZGV4W19yb3dfaW5kZXhdXS5lcnIg PSB0cnVlOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBncmlkLmdvdG9DZWxs KF9yb3dfaW5kZXgsIDEpOwogICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGdyaWQuZ290 b0NlbGwoX3Jvd19pbmRleCwgMSk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgLy8g VXBkYXRlIHRoZSBzcWwgcmVzdWx0cyBpbiBoaXN0b3J5IHRhYgotICAgICAgICAgICAgICBfLmVh Y2gocmVzLmRhdGEucXVlcnlfcmVzdWx0LCBmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICAgICAg c2VsZi5ncmlkVmlldy5oaXN0b3J5X2NvbGxlY3Rpb24uYWRkKHsKLSAgICAgICAgICAgICAgICAg ICdzdGF0dXMnOiByLnN0YXR1cywKLSAgICAgICAgICAgICAgICAgICdzdGFydF90aW1lJzogc2Vs Zi5xdWVyeV9zdGFydF90aW1lLAotICAgICAgICAgICAgICAgICAgJ3F1ZXJ5Jzogci5zcWwsCi0g ICAgICAgICAgICAgICAgICAncm93X2FmZmVjdGVkJzogci5yb3dzX2FmZmVjdGVkLAotICAgICAg ICAgICAgICAgICAgJ3RvdGFsX3RpbWUnOiBzZWxmLnRvdGFsX3RpbWUsCi0gICAgICAgICAgICAg ICAgICAnbWVzc2FnZSc6IHIucmVzdWx0LAotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg ICAgLy8gVXBkYXRlIHRoZSBzcWwgcmVzdWx0cyBpbiBoaXN0b3J5IHRhYgorICAgICAgICAgICAg LyoKKyAgICAgICAgICAgIF8uZWFjaChyZXMuZGF0YS5xdWVyeV9yZXN1bHQsIGZ1bmN0aW9uKHIp IHsKKyAgICAgICAgICAgICAgc2VsZi5ncmlkVmlldy5oaXN0b3J5X2NvbGxlY3Rpb24uYWRkKHsK KyAgICAgICAgICAgICAgICAnc3RhdHVzJzogci5zdGF0dXMsCisgICAgICAgICAgICAgICAgJ3N0 YXJ0X3RpbWUnOiBzZWxmLnF1ZXJ5X3N0YXJ0X3RpbWUsCisgICAgICAgICAgICAgICAgJ3F1ZXJ5 Jzogci5zcWwsCisgICAgICAgICAgICAgICAgJ3Jvd19hZmZlY3RlZCc6IHIucm93c19hZmZlY3Rl ZCwKKyAgICAgICAgICAgICAgICAndG90YWxfdGltZSc6IHNlbGYudG90YWxfdGltZSwKKyAgICAg ICAgICAgICAgICAnbWVzc2FnZSc6IHIucmVzdWx0LAogICAgICAgICAgICAgICB9KTsKLSAgICAg ICAgICAgICAgc2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlk ZScpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAqLworICAgICAgICAgICAgc2VsZi50 cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwogCi0gICAgICAg ICAgICAgIGdyaWQuaW52YWxpZGF0ZSgpOwotICAgICAgICAgICAgICBpZiAoc2VsZi5jbG9zZV9v bl9zYXZlKSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpOworICAgICAgICAgICAgZ3Jp ZC5pbnZhbGlkYXRlKCk7CisgICAgICAgICAgICBpZiAoc2VsZi5jbG9zZV9vbl9zYXZlKSB7Cisg ICAgICAgICAgICAgIGlmKHNhdmVfc3VjY2Vzc2Z1bCkgeworICAgICAgICAgICAgICAgIC8vIENo ZWNrIGZvciBhbnkgb3RoZXIgbmVlZGVkIGNvbmZpcm1hdGlvbnMgYmVmb3JlIGNsb3NpbmcKKyAg ICAgICAgICAgICAgICBzZWxmLmNoZWNrX25lZWRlZF9jb25maXJtYXRpb25zX2JlZm9yZV9jbG9z aW5nX3BhbmVsKCk7CiAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pCi0gICAgICAgICAg ICAuZmFpbChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgIGxldCBzdGF0ZVBhcmFtcyA9IFt2 aWV3LCBjb250cm9sbGVyLCBzYXZlX2FzXTsKLSAgICAgICAgICAgICAgbGV0IG1zZyA9IGh0dHBF cnJvckhhbmRsZXIuaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAotICAgICAgICAgICAgICAgIHBn QWRtaW4sIHNlbGYsIGUsICdfc2F2ZScsIHN0YXRlUGFyYW1zLCB0cnVlCi0gICAgICAgICAgICAg ICk7Ci0gICAgICAgICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5KGZhbHNlLCBtc2cpOwot ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg ICAgICAgICAgc2VsZi5jbG9zZV9vbl9zYXZlID0gZmFsc2U7CisgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIH0KKyAgICAgICAgICB9KQorICAgICAgICAgIC5mYWlsKGZ1bmN0aW9uKGUpIHsK KyAgICAgICAgICAgIGxldCBzdGF0ZVBhcmFtcyA9IFt2aWV3XTsKKyAgICAgICAgICAgIGxldCBt c2cgPSBodHRwRXJyb3JIYW5kbGVyLmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKKyAgICAgICAg ICAgICAgcGdBZG1pbiwgc2VsZiwgZSwgJ3NhdmVfZGF0YScsIHN0YXRlUGFyYW1zLCB0cnVlCisg ICAgICAgICAgICApOworICAgICAgICAgICAgc2VsZi51cGRhdGVfbXNnX2hpc3RvcnkoZmFsc2Us IG1zZyk7CisgICAgICAgICAgfSk7CisgICAgICB9LAorCisgICAgICByZXNldF9kYXRhX3N0b3Jl OiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICAvLyBUaGlz IGhvbGRzIGFsbCB0aGUgaW5zZXJ0ZWQvdXBkYXRlZC9kZWxldGVkIGRhdGEgZnJvbSBncmlkCisg ICAgICAgIHNlbGYuZGF0YV9zdG9yZSA9IHsKKyAgICAgICAgICB1cGRhdGVkOiB7fSwKKyAgICAg ICAgICBhZGRlZDoge30sCisgICAgICAgICAgc3RhZ2VkX3Jvd3M6IHt9LAorICAgICAgICAgIGRl bGV0ZWQ6IHt9LAorICAgICAgICAgIHVwZGF0ZWRfaW5kZXg6IHt9LAorICAgICAgICAgIGFkZGVk X2luZGV4OiB7fSwKKyAgICAgICAgfTsKICAgICAgIH0sCiAKICAgICAgIC8vIEZpbmQgaW5kZXgg b2Ygcm93IGF0IGZhdWx0IGZyb20gZ3JpZCBkYXRhCkBAIC0zMDY1LDcgKzMwNDEsNyBAQCBkZWZp bmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKIAogICAgICAgLy8gU2F2ZSBhcwogICAgICAgX3NhdmVf YXM6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gdGhpcy5fc2F2ZSh0cnVlKTsKKyAgICAg ICAgcmV0dXJuIHRoaXMuX3NhdmVfZmlsZSh0cnVlKTsKICAgICAgIH0sCiAKICAgICAgIC8vIFNl dCBwYW5lbCB0aXRsZS4KQEAgLTMxNTIsNyArMzEyOCw3IEBAIGRlZmluZSgndG9vbHMucXVlcnl0 b29sJywgWwogICAgICAgICAgICAgJGJ1c3lfaWNvbl9kaXYucmVtb3ZlQ2xhc3MoJ3Nob3dfcHJv Z3Jlc3MnKTsKIAogICAgICAgICAgICAgLy8gZGlzYWJsZSBzYXZlIGJ1dHRvbiBvbiBmaWxlIHNh dmUKLSAgICAgICAgICAgICQoJyNidG4tc2F2ZScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Cisg ICAgICAgICAgICAkKCcjYnRuLXNhdmUtZmlsZScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CiAg ICAgICAgICAgICAkKCcjYnRuLWZpbGUtbWVudS1zYXZlJykuY3NzKCdkaXNwbGF5JywgJ25vbmUn KTsKIAogICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBmbGFnIGFzIG5ldyBjb250ZW50IGlzIGp1 c3QgbG9hZGVkLgpAQCAtMzE5Nyw3ICszMTczLDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wn LCBbCiAgICAgICAgICAgICAgIHNlbGYuZ3JpZFZpZXcuY3VycmVudF9maWxlID0gZTsKICAgICAg ICAgICAgICAgc2VsZi5zZXRUaXRsZShzZWxmLmdyaWRWaWV3LmN1cnJlbnRfZmlsZS5yZXBsYWNl KC9eLipbXFxcL10vZywgJycpLCB0cnVlKTsKICAgICAgICAgICAgICAgLy8gZGlzYWJsZSBzYXZl IGJ1dHRvbiBvbiBmaWxlIHNhdmUKLSAgICAgICAgICAgICAgJCgnI2J0bi1zYXZlJykucHJvcCgn ZGlzYWJsZWQnLCB0cnVlKTsKKyAgICAgICAgICAgICAgJCgnI2J0bi1zYXZlLWZpbGUnKS5wcm9w KCdkaXNhYmxlZCcsIHRydWUpOwogICAgICAgICAgICAgICAkKCcjYnRuLWZpbGUtbWVudS1zYXZl JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKIAogICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhl IGZsYWcgYXMgcXVlcnkgaXMgYWxyZWFkeSBzYXZlZC4KQEAgLTMyMDYsNyArMzE4Miw4IEBAIGRl ZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2Vs Zi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwogICAgICAg ICAgICAgaWYgKHNlbGYuY2xvc2Vfb25fc2F2ZSkgewotICAgICAgICAgICAgICBzZWxmLmNsb3Nl KCk7CisgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBhbnkgb3RoZXIgbmVlZGVkIGNvbmZpcm1h dGlvbnMgYmVmb3JlIGNsb3NpbmcKKyAgICAgICAgICAgICAgc2VsZi5jaGVja19uZWVkZWRfY29u ZmlybWF0aW9uc19iZWZvcmVfY2xvc2luZ19wYW5lbCgpOwogICAgICAgICAgICAgfQogICAgICAg ICAgIH0pCiAgICAgICAgICAgLmZhaWwoZnVuY3Rpb24oZSkgewpAQCAtMzI0Niw3ICszMjIzLDcg QEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgICBzZWxmLnNldFRpdGxl KHRpdGxlKTsKICAgICAgICAgICB9CiAKLSAgICAgICAgICAkKCcjYnRuLXNhdmUnKS5wcm9wKCdk aXNhYmxlZCcsIGZhbHNlKTsKKyAgICAgICAgICAkKCcjYnRuLXNhdmUtZmlsZScpLnByb3AoJ2Rp c2FibGVkJywgZmFsc2UpOwogICAgICAgICAgICQoJyNidG4tZmlsZS1tZW51LXNhdmUnKS5jc3Mo J2Rpc3BsYXknLCAnYmxvY2snKTsKICAgICAgICAgICAkKCcjYnRuLWZpbGUtbWVudS1kcm9wZG93 bicpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwogICAgICAgICB9CkBAIC0zNDgwLDcgKzM0NTcs NyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgaWYgKGNvcGllZF9yb3dz Lmxlbmd0aCA+IDApIHsKICAgICAgICAgICAvLyBFbmFibGUgc2F2ZSBidXR0b24gc28gdGhhdCB1 c2VyIGNhbgogICAgICAgICAgIC8vIHNhdmUgbmV3bHkgcGFzdGVkIHJvd3Mgb24gc2VydmVyCi0g ICAgICAgICAgJCgnI2J0bi1zYXZlJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7CisgICAgICAg ICAgJCgnI2J0bi1zYXZlLWRhdGEnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKIAogICAgICAg ICAgIHZhciBhcnJfdG9fb2JqZWN0ID0gZnVuY3Rpb24oYXJyKSB7CiAgICAgICAgICAgICB2YXIg b2JqID0ge307CkBAIC0zNTgzLDEwICszNTYwLDExIEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29s JywgWwogICAgICAgICAkKCcjYnRuLWV4cGxhaW4tb3B0aW9ucy1kcm9wZG93bicpLnByb3AoJ2Rp c2FibGVkJywgbW9kZV9kaXNhYmxlZCk7CiAgICAgICAgICQoJyNidG4tZWRpdC1kcm9wZG93bicp LnByb3AoJ2Rpc2FibGVkJywgbW9kZV9kaXNhYmxlZCk7CiAgICAgICAgICQoJyNidG4tbG9hZC1m aWxlJykucHJvcCgnZGlzYWJsZWQnLCBtb2RlX2Rpc2FibGVkKTsKLSAgICAgICAgJCgnI2J0bi1z YXZlJykucHJvcCgnZGlzYWJsZWQnLCBtb2RlX2Rpc2FibGVkKTsKKyAgICAgICAgJCgnI2J0bi1z YXZlLWZpbGUnKS5wcm9wKCdkaXNhYmxlZCcsIG1vZGVfZGlzYWJsZWQpOwogICAgICAgICAkKCcj YnRuLWZpbGUtbWVudS1kcm9wZG93bicpLnByb3AoJ2Rpc2FibGVkJywgbW9kZV9kaXNhYmxlZCk7 CiAgICAgICAgICQoJyNidG4tZmluZCcpLnByb3AoJ2Rpc2FibGVkJywgbW9kZV9kaXNhYmxlZCk7 CiAgICAgICAgICQoJyNidG4tZmluZC1tZW51LWRyb3Bkb3duJykucHJvcCgnZGlzYWJsZWQnLCBt b2RlX2Rpc2FibGVkKTsKKwogICAgICAgICBpZiAodGhpcy5pc19xdWVyeV90b29sKSB7CiAgICAg ICAgICAgLy8gQ2FuY2VsIHF1ZXJ5IHRvb2wgbmVlZHMgb3Bwb3NpdGUgYmVoYXZpb3VyCiAgICAg ICAgICAgJCgnI2J0bi1jYW5jZWwtcXVlcnknKS5wcm9wKCdkaXNhYmxlZCcsICFkaXNhYmxlZCk7 CkBAIC0zNjEyLDggKzM1OTAsMzYgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAg ICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggdGhlIHNxbCBxdWVyeSBmcm9tIHRoZSB0ZXh0 IGJveAogICAgICAgLy8gYW5kIGV4ZWN1dGUgdGhlIHF1ZXJ5LgogICAgICAgZXhlY3V0ZTogZnVu Y3Rpb24oZXhwbGFpbl9wcmVmaXgsIHNob3VsZFJlY29ubmVjdD1mYWxzZSkgewotICAgICAgICB2 YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAgc3FsID0gJyc7CisgICAgICAgIHZhciBzZWxmID0g dGhpczsKKworICAgICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBncmlkIGhhcyBhbnkgY2hhbmdl cyBiZWZvcmUgcnVubmluZyBxdWVyeQorICAgICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBncmlk IGhhcyBhbnkgY2hhbmdlcyBiZWZvcmUgcnVubmluZyBxdWVyeQorICAgICAgICBpZiAoc2VsZi5j YW5fZWRpdCAmJiBfLmhhcyhzZWxmLCAnZGF0YV9zdG9yZScpICYmCisgICAgICAgICAgKF8uc2l6 ZShzZWxmLmRhdGFfc3RvcmUuYWRkZWQpIHx8CisgICAgICAgICAgICBfLnNpemUoc2VsZi5kYXRh X3N0b3JlLnVwZGF0ZWQpIHx8CisgICAgICAgICAgICBfLnNpemUoc2VsZi5kYXRhX3N0b3JlLmRl bGV0ZWQpKQorICAgICAgICApIHsKKyAgICAgICAgICBhbGVydGlmeS5jb25maXJtKGdldHRleHQo J1Vuc2F2ZWQgY2hhbmdlcycpLAorICAgICAgICAgICAgZ2V0dGV4dCgnVGhlIGRhdGEgaGFzIGJl ZW4gbW9kaWZpZWQsIGJ1dCBub3Qgc2F2ZWQuIEFyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byBkaXNj YXJkIHRoZSBjaGFuZ2VzPycpLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAg ICAgIC8vIERvIG5vdGhpbmcgYXMgdXNlciBkbyBub3Qgd2FudCB0byBzYXZlLCBqdXN0IGNvbnRp bnVlCisgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGVfc3FsX3F1ZXJ5KGV4cGxhaW5fcHJlZml4 LCBzaG91bGRSZWNvbm5lY3QpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9u KCkgeworICAgICAgICAgICAgICAvLyBTdG9wLCBVc2VyIHdhbnRzIHRvIHNhdmUKKyAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgKS5zZXQoJ2xhYmVs cycsIHsKKyAgICAgICAgICAgIG9rOiBnZXR0ZXh0KCdZZXMnKSwKKyAgICAgICAgICAgIGNhbmNl bDogZ2V0dGV4dCgnTm8nKSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICBzZWxmLl9leGVjdXRlX3NxbF9xdWVyeShleHBsYWluX3ByZWZpeCwgc2hvdWxkUmVjb25u ZWN0KTsKKyAgICAgICAgfQorICAgICAgfSwKKworICAgICAgX2V4ZWN1dGVfc3FsX3F1ZXJ5OiBm dW5jdGlvbihleHBsYWluX3ByZWZpeCwgc2hvdWxkUmVjb25uZWN0KSB7CisgICAgICAgIHZhciBz ZWxmID0gdGhpcywgc3FsID0gJyc7CiAKICAgICAgICAgc2VsZi5oYXNfbW9yZV9yb3dzID0gZmFs c2U7CiAgICAgICAgIHNlbGYuZmV0Y2hpbmdfcm93cyA9IGZhbHNlOwpAQCAtMzYyMiw4ICszNjI4 LDggQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgc3FsID0gc2VsZi5z cGVjaWFsX3NxbDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAvKiBJZiBjb2RlIGlzIHNl bGVjdGVkIGluIHRoZSBjb2RlIG1pcnJvciB0aGVuIGV4ZWN1dGUKLSAgICAgICAgICAgKiB0aGUg c2VsZWN0ZWQgcGFydCBlbHNlIGV4ZWN1dGUgdGhlIGNvbXBsZXRlIGNvZGUuCi0gICAgICAgICAg ICovCisgICAgICAgICAgKiB0aGUgc2VsZWN0ZWQgcGFydCBlbHNlIGV4ZWN1dGUgdGhlIGNvbXBs ZXRlIGNvZGUuCisgICAgICAgICAgKi8KICAgICAgICAgICB2YXIgc2VsZWN0ZWRfY29kZSA9IHNl bGYuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmouZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgICAgaWYg KHNlbGVjdGVkX2NvZGUubGVuZ3RoID4gMCkKICAgICAgICAgICAgIHNxbCA9IHNlbGVjdGVkX2Nv ZGU7CkBAIC00MDE4LDYgKzQwMjQsMTQ2IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwog ICAgICAgICBpc19xdWVyeV9ydW5uaW5nID0gdmFsdWU7CiAgICAgICB9LAogCisgICAgICAvKiBD aGVja3MgaWYgdGhlcmUgaXMgYW55IHVuc2F2ZWQgZGF0YSBjaGFuZ2VzLCB1bnNhdmVkIGNoYW5n ZXMgaW4gdGhlIHF1ZXJ5CisgICAgICBvciB1bmNvbW1pdGVkIHRyYW5zYWN0aW9ucyBiZWZvcmUg Y2xvc2luZyBhIHBhbmVsICovCisgICAgICBjaGVja19uZWVkZWRfY29uZmlybWF0aW9uc19iZWZv cmVfY2xvc2luZ19wYW5lbDogZnVuY3Rpb24oaXNfY2xvc2VfZXZlbnRfY2FsbCA9IGZhbHNlKSB7 CisgICAgICAgIHZhciBzZWxmID0gdGhpcywgbXNnOworCisgICAgICAgIC8qCisgICAgICAgICBp c19jbG9zZV9ldmVudF9jYWxsID0gdHJ1ZSBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxl ZCB3aGVuIHRoZQorICAgICAgICAgY2xvc2UgcGFuZWwgZXZlbnQgaXMgdHJpZ2dlcmVkLCBvdGhl cndpc2UgaXQgaXMgZmFsc2UKKyAgICAgICAgKi8KKyAgICAgICAgaWYoIXNlbGYuaWdub3JlX29u X2Nsb3NlIHx8IGlzX2Nsb3NlX2V2ZW50X2NhbGwpCisgICAgICAgICAgc2VsZi5pZ25vcmVfb25f Y2xvc2UgPSB7CisgICAgICAgICAgICB1bnNhdmVkX2RhdGE6IGZhbHNlLAorICAgICAgICAgICAg dW5zYXZlZF9xdWVyeTogZmFsc2UsCisgICAgICAgICAgICB1bmNvbW1pdGVkX3RyYW5zYWN0aW9u OiBmYWxzZSwKKyAgICAgICAgICB9OworCisgICAgICAgIHZhciBpZ25vcmVfdW5zYXZlZF9kYXRh ID0gc2VsZi5pZ25vcmVfb25fY2xvc2UudW5zYXZlZF9kYXRhLAorICAgICAgICAgIGlnbm9yZV91 bnNhdmVkX3F1ZXJ5ID0gc2VsZi5pZ25vcmVfb25fY2xvc2UudW5zYXZlZF9xdWVyeSwKKyAgICAg ICAgICBpZ25vcmVfdW5jb21taXRlZF90cmFuc2FjdGlvbiA9IHNlbGYuaWdub3JlX29uX2Nsb3Nl LnVuY29tbWl0ZWRfdHJhbnNhY3Rpb247CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgdW5zYXZl ZCBkYXRhIGNoYW5nZXMgaW4gdGhlIGdyaWQKKyAgICAgICAgaWYgKCFpZ25vcmVfdW5zYXZlZF9k YXRhICYmIHNlbGYuY2FuX2VkaXQKKyAgICAgICAgICAgICYmIHNlbGYucHJlZmVyZW5jZXMucHJv bXB0X3NhdmVfZGF0YV9jaGFuZ2VzICYmCisgICAgICAgICAgICBzZWxmLmRhdGFfc3RvcmUgJiYK KyAgICAgICAgICAgICAoXy5zaXplKHNlbGYuZGF0YV9zdG9yZS5hZGRlZCkgfHwKKyAgICAgICAg ICAgICAgXy5zaXplKHNlbGYuZGF0YV9zdG9yZS51cGRhdGVkKSB8fAorICAgICAgICAgICAgICBf LnNpemUoc2VsZi5kYXRhX3N0b3JlLmRlbGV0ZWQpKSkgeworICAgICAgICAgIG1zZyA9IGdldHRl eHQoJ1RoZSBkYXRhIGhhcyBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIGNoYW5nZXM/Jyk7 CisgICAgICAgICAgc2VsZi51bnNhdmVkX2NoYW5nZXNfdXNlcl9jb25maXJtYXRpb24obXNnLCB0 cnVlKTsKKyAgICAgICAgfSAvLyBJZiB0aGVyZSBpcyB1bnNhdmVkIHF1ZXJ5IGNoYW5nZXMgaW4g dGhlIHF1ZXJ5IGVkaXRvcgorICAgICAgICBlbHNlIGlmICghaWdub3JlX3Vuc2F2ZWRfcXVlcnkg JiYgc2VsZi5pc19xdWVyeV90b29sCisgICAgICAgICAgICAgICAgICAgJiYgc2VsZi5pc19xdWVy eV9jaGFuZ2VkCisgICAgICAgICAgICAgICAgICAgJiYgc2VsZi5wcmVmZXJlbmNlcy5wcm9tcHRf c2F2ZV9xdWVyeV9jaGFuZ2VzKSB7CisgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnVGhlIHRleHQg aGFzIGNoYW5nZWQuIERvIHlvdSB3YW50IHRvIHNhdmUgY2hhbmdlcz8nKTsKKyAgICAgICAgICBz ZWxmLnVuc2F2ZWRfY2hhbmdlc191c2VyX2NvbmZpcm1hdGlvbihtc2csIGZhbHNlKTsKKyAgICAg ICAgfSAvLyBJZiBhIHRyYW5zYWN0aW9uIGlzIGN1cnJlbnRseSBvbmdvaW5nCisgICAgICAgIGVs c2UgaWYgKCFpZ25vcmVfdW5jb21taXRlZF90cmFuc2FjdGlvbgorICAgICAgICAgICAgICAgICAm JiBzZWxmLnByZWZlcmVuY2VzLmFsZXJ0X3VuY29tbWl0ZWRfdHJhbnNhY3Rpb24KKyAgICAgICAg ICAgICAgICAgJiYgU3FsRWRpdG9yVXRpbHMucHJldmlvdXNTdGF0dXMgIT0gMCkgeworICAgICAg ICAgIHNlbGYudW5jb21taXRlZF90cmFuc2FjdGlvbl91c2VyX2NvbmZpcm1hdGlvbigpOworICAg ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIC8vIE5vIG90aGVyIGZ1bmN0aW9uIHNo b3VsZCBjYWxsIGNsb3NlKCkgZXhjZXB0IHRocm91Z2ggdGhpcyBmdW5jdGlvbgorICAgICAgICAg IC8vIGluIG9yZGVyIHRvIHBlcmZvcm0gbmVjZXNzYXJ5IGNoZWNrcworICAgICAgICAgIHNlbGYu aWdub3JlX29uX2Nsb3NlID0gdW5kZWZpbmVkOworICAgICAgICAgIHNlbGYuY2xvc2UoKTsKKyAg ICAgICAgfQorICAgICAgICAvLyBSZXR1cm4gZmFsc2Ugc28gdGhhdCB0aGUgcGFuZWwgZG9lcyBu b3QgY2xvc2UgdW5sZXNzIGNsb3NlKCkKKyAgICAgICAgLy8gaXMgY2FsbGVkIGV4cGxpY2l0bHkg KHdoZW4gYWxsIG5lZWRlZCBwcm9tcHRzIGFyZSBpc3N1ZWQpLgorICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICB9LAorCisgICAgICAvKiBUbyBwcm9tcHQgdGhlIHVzZXIgZm9yIHVuY29tbWl0 ZWQgdHJhbnNhY3Rpb24gKi8KKyAgICAgIHVuY29tbWl0ZWRfdHJhbnNhY3Rpb25fdXNlcl9jb25m aXJtYXRpb246IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgICAg ICAgYWxlcnRpZnkuY29uZmlybSgKKyAgICAgICAgICBnZXR0ZXh0KCdVbmNvbW1pdGVkIHRyYW5z YWN0aW9uJyksCisgICAgICAgICAgZ2V0dGV4dChgVGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gd2Fz IG5vdCBjb21taXRlZCB0byB0aGUgZGF0YWJhc2UuCisgICAgICAgICAgIEFyZSB5b3Ugc3VyZSB5 b3Ugd2lzaCB0byBkaXNjYXJkIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uP2ApLAorICAgICAgICAg IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLy8gR28gYmFjayB0byBjaGVjayBmb3IgYW55IG90 aGVyIG5lZWRlZCBjb25maXJtYXRpb25zIGJlZm9yZSBjbG9zaW5nCisgICAgICAgICAgICBzZWxm Lmlnbm9yZV9vbl9jbG9zZS51bmNvbW1pdGVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsKKyAgICAgICAg ICAgIHNlbGYuY2hlY2tfbmVlZGVkX2NvbmZpcm1hdGlvbnNfYmVmb3JlX2Nsb3NpbmdfcGFuZWwo KTsKKyAgICAgICAgICB9LAorICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0 dXJuOworICAgICAgICAgIH0KKyAgICAgICAgKS5zZXQoJ2xhYmVscycsIHsKKyAgICAgICAgICBv azogZ2V0dGV4dCgnWWVzJyksCisgICAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdObycpLAorICAg ICAgICB9KTsKKyAgICAgIH0sCisKKyAgICAgIC8qIFRvIHByb21wdCB1c2VyIGZvciB1bnNhdmVk IGNoYW5nZXMgKi8KKyAgICAgIHVuc2F2ZWRfY2hhbmdlc191c2VyX2NvbmZpcm1hdGlvbjogZnVu Y3Rpb24obXNnLCBpc191bnNhdmVkX2RhdGEpIHsKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgYW55 dGhpbmcgdG8gc2F2ZSB0aGVuIHByb21wdCB1c2VyCisgICAgICAgIHZhciBzZWxmID0gdGhpczsK KworICAgICAgICBhbGVydGlmeS5jb25maXJtU2F2ZSB8fCBhbGVydGlmeS5kaWFsb2coJ2NvbmZp cm1TYXZlJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIG1h aW46IGZ1bmN0aW9uKHRpdGxlLCBtZXNzYWdlLCBpc191bnNhdmVkX2RhdGEpIHsKKyAgICAgICAg ICAgICAgdGhpcy5pc191bnNhdmVkX2RhdGEgPSBpc191bnNhdmVkX2RhdGE7CisgICAgICAgICAg ICAgIHRoaXMuc2V0SGVhZGVyKHRpdGxlKTsKKyAgICAgICAgICAgICAgdGhpcy5zZXRDb250ZW50 KG1lc3NhZ2UpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbigp IHsKKyAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICBidXR0b25zOiBbewor ICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksCisgICAgICAgICAgICAg ICAgICBrZXk6IDI3LCAvLyBFU0MKKyAgICAgICAgICAgICAgICAgIGludm9rZU9uQ2xvc2U6IHRy dWUsCisgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXNlY29uZGFyeSBmYSBm YS1sZyBmYS10aW1lcyBwZy1hbGVydGlmeS1idXR0b24nLAorICAgICAgICAgICAgICAgIH0sIHsK KyAgICAgICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ0RvblwndCBzYXZlJyksCisgICAgICAg ICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXNlY29uZGFyeSBmYSBmYS1sZyBmYS10cmFz aC1vIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCisgICAgICAgICAgICAgICAgfSwgeworICAgICAgICAg ICAgICAgICAgdGV4dDogZ2V0dGV4dCgnU2F2ZScpLAorICAgICAgICAgICAgICAgICAgY2xhc3NO YW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLWxnIGZhLXNhdmUgcGctYWxlcnRpZnktYnV0dG9u JywKKyAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICBmb2N1czogeworICAgICAg ICAgICAgICAgICAgZWxlbWVudDogMCwKKyAgICAgICAgICAgICAgICAgIHNlbGVjdDogZmFsc2Us CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBvcHRpb25zOiB7CisgICAgICAg ICAgICAgICAgICBtYXhpbWl6YWJsZTogZmFsc2UsCisgICAgICAgICAgICAgICAgICByZXNpemFi bGU6IGZhbHNlLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH07CisgICAgICAg ICAgICB9LAorICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKGNsb3NlRXZlbnQpIHsKKyAg ICAgICAgICAgICAgc3dpdGNoIChjbG9zZUV2ZW50LmluZGV4KSB7CisgICAgICAgICAgICAgIGNh c2UgMDogLy8gQ2FuY2VsCisgICAgICAgICAgICAgICAgLy9EbyBub3RoaW5nLgorICAgICAgICAg ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE6IC8vIERvbid0IFNhdmUKKyAgICAg ICAgICAgICAgICBzZWxmLmNsb3NlX29uX3NhdmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBp Zih0aGlzLmlzX3Vuc2F2ZWRfZGF0YSkKKyAgICAgICAgICAgICAgICAgIHNlbGYuaWdub3JlX29u X2Nsb3NlLnVuc2F2ZWRfZGF0YSA9IHRydWU7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg ICAgICAgICAgICAgc2VsZi5pZ25vcmVfb25fY2xvc2UudW5zYXZlZF9xdWVyeSA9IHRydWU7Cisg ICAgICAgICAgICAgICAgLy8gR28gYmFjayB0byBjaGVjayBmb3IgYW55IG90aGVyIG5lZWRlZCBj b25maXJtYXRpb25zIGJlZm9yZSBjbG9zaW5nCisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19u ZWVkZWRfY29uZmlybWF0aW9uc19iZWZvcmVfY2xvc2luZ19wYW5lbCgpOworICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDI6IC8vU2F2ZQorICAgICAgICAgICAgICAg IHNlbGYuY2xvc2Vfb25fc2F2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYodGhpcy5pc191 bnNhdmVkX2RhdGEpIHsKKyAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9kYXRhKCk7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg c2VsZi5fc2F2ZV9maWxlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgIH07CisgICAg ICAgIH0pOworICAgICAgICBhbGVydGlmeS5jb25maXJtU2F2ZShnZXR0ZXh0KCdTYXZlIGNoYW5n ZXM/JyksIG1zZywgaXNfdW5zYXZlZF9kYXRhKTsKKyAgICAgIH0sCisKICAgICAgIGNsb3NlOiBm dW5jdGlvbigpIHsKICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL3Njc3MvX3NxbGVkaXRvci5zY3NzIGIvd2Vi L3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9zY3NzL19zcWxlZGl0b3Iuc2NzcwppbmRl eCBlYmY1YjE4MC4uMjc0MmYzMjAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVk aXRvci9zdGF0aWMvc2Nzcy9fc3FsZWRpdG9yLnNjc3MKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3N0YXRpYy9zY3NzL19zcWxlZGl0b3Iuc2NzcwpAQCAtMjA5LDYgKzIwOSwxMyBA QCBsaS5Db2RlTWlycm9yLWhpbnQtYWN0aXZlIHsKICAgY29sb3I6ICR0ZXh0LW11dGVkOwogfQog CisvKiBIaWdobGlnaHRlZCAobW9kaWZpZWQgb3IgbmV3KSBjZWxsICovCisuZ3JpZC1jYW52YXMg LmhpZ2hsaWdodGVkX2dyaWRfY2VsbHMgeworICBiYWNrZ3JvdW5kOiAkY29sb3ItZ3JheS1saWdo dGVyOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworCiAvKiBPdmVycmlkZSBzZWxlY3RlZCBy b3cgY29sb3IgKi8KICNkYXRhZ3JpZCAuc2xpY2stcm93IC5zbGljay1jZWxsLnNlbGVjdGVkIHsK ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmctc2VsZWN0ZWQ7CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVkaXRvci9zcWwvMTFfcGx1 cy9wcmltYXJ5X2tleXMuc3FsIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRl cy9zcWxlZGl0b3Ivc3FsLzExX3BsdXMvcHJpbWFyeV9rZXlzLnNxbAppbmRleCAxZGZiMDk0Zi4u NDU5OTc3ZTkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0 ZXMvc3FsZWRpdG9yL3NxbC8xMV9wbHVzL3ByaW1hcnlfa2V5cy5zcWwKKysrIGIvd2ViL3BnYWRt aW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3Ivc3FsLzExX3BsdXMvcHJpbWFy eV9rZXlzLnNxbApAQCAtMSw2ICsxLDYgQEAKIHsjID09PT09PT09PT09PT0gRmV0Y2ggdGhlIHBy aW1hcnkga2V5cyBmb3IgZ2l2ZW4gb2JqZWN0IGlkID09PT09PT09PT09PT0gI30KIHslIGlmIG9i al9pZCAlfQotU0VMRUNUIGF0LmF0dG5hbWUsIHR5LnR5cG5hbWUKK1NFTEVDVCBhdC5hdHRuYW1l LCBhdC5hdHRudW0sIHR5LnR5cG5hbWUKIEZST00gcGdfYXR0cmlidXRlIGF0IExFRlQgSk9JTiBw Z190eXBlIHR5IE9OICh0eS5vaWQgPSBhdC5hdHR0eXBpZCkKIFdIRVJFIGF0dHJlbGlkPXt7b2Jq X2lkfX06Om9pZCBBTkQgYXR0bnVtID0gQU5ZICgKICAgICAoU0VMRUNUIGNvbi5jb25rZXkgRlJP TSBwZ19jbGFzcyByZWwgTEVGVCBPVVRFUiBKT0lOIHBnX2NvbnN0cmFpbnQgY29uIE9OIGNvbi5j b25yZWxpZD1yZWwub2lkCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Iv dGVtcGxhdGVzL3NxbGVkaXRvci9zcWwvZGVmYXVsdC9wcmltYXJ5X2tleXMuc3FsIGIvd2ViL3Bn YWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3Ivc3FsL2RlZmF1bHQvcHJp bWFyeV9rZXlzLnNxbAppbmRleCA2MGQwZTU2Zi4uYTk2YzkyOGYgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL3NxbC9kZWZhdWx0L3By aW1hcnlfa2V5cy5zcWwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRl cy9zcWxlZGl0b3Ivc3FsL2RlZmF1bHQvcHJpbWFyeV9rZXlzLnNxbApAQCAtMSw4ICsxLDggQEAK IHsjID09PT09PT09PT09PT0gRmV0Y2ggdGhlIHByaW1hcnkga2V5cyBmb3IgZ2l2ZW4gb2JqZWN0 IGlkID09PT09PT09PT09PT0gI30KIHslIGlmIG9ial9pZCAlfQotU0VMRUNUIGF0LmF0dG5hbWUs IHR5LnR5cG5hbWUKK1NFTEVDVCBhdC5hdHRuYW1lLCBhdC5hdHRudW0sIHR5LnR5cG5hbWUKIEZS T00gcGdfYXR0cmlidXRlIGF0IExFRlQgSk9JTiBwZ190eXBlIHR5IE9OICh0eS5vaWQgPSBhdC5h dHR0eXBpZCkKIFdIRVJFIGF0dHJlbGlkPXt7b2JqX2lkfX06Om9pZCBBTkQgYXR0bnVtID0gQU5Z ICgKICAgICAoU0VMRUNUIGNvbi5jb25rZXkgRlJPTSBwZ19jbGFzcyByZWwgTEVGVCBPVVRFUiBK T0lOIHBnX2NvbnN0cmFpbnQgY29uIE9OIGNvbi5jb25yZWxpZD1yZWwub2lkCiAgICAgQU5EIGNv bi5jb250eXBlPSdwJyBXSEVSRSByZWwucmVsa2luZCBJTiAoJ3InLCdzJywndCcpIEFORCByZWwu b2lkID0ge3tvYmpfaWR9fTo6b2lkKTo6b2lkW10pCi17JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3IvdGVzdHMvZXhlY3V0ZV9xdWVyeV91dGlscy5weSBiL3dlYi9wZ2FkbWluL3Rv b2xzL3NxbGVkaXRvci90ZXN0cy9leGVjdXRlX3F1ZXJ5X3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5jM2NmODliMwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy9leGVjdXRlX3F1ZXJ5X3V0aWxzLnB5CkBAIC0w LDAgKzEsMjggQEAKK2ltcG9ydCBqc29uCisKKworZGVmIGV4ZWN1dGVfcXVlcnkodGVzdGVyLCBx dWVyeSwgc3RhcnRfcXVlcnlfdG9vbF91cmwsIHBvbGxfdXJsKToKKyAgICAjIFN0YXJ0IHF1ZXJ5 IHRvb2wgYW5kIGV4ZWN1dGUgc3FsCisgICAgcmVzcG9uc2UgPSB0ZXN0ZXIucG9zdChzdGFydF9x dWVyeV90b29sX3VybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1w cyh7InNxbCI6IHF1ZXJ5fSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5 cGU9J2h0bWwvanNvbicpCisKKyAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSAhPSAyMDA6Cisg ICAgICAgIHJldHVybiBGYWxzZSwgTm9uZQorCisgICAgIyBQb2xsIGZvciByZXN1bHRzCisgICAg cmV0dXJuIHBvbGxfZm9yX3F1ZXJ5X3Jlc3VsdHModGVzdGVyPXRlc3RlciwgcG9sbF91cmw9cG9s bF91cmwpCisKKworZGVmIHBvbGxfZm9yX3F1ZXJ5X3Jlc3VsdHModGVzdGVyLCBwb2xsX3VybCk6 CisgICAgIyBQb2xsIGZvciByZXN1bHRzIHVudGlsIHRoZXkgYXJlIHN1Y2Nlc3NmdWwKKyAgICB3 aGlsZSBUcnVlOgorICAgICAgICByZXNwb25zZSA9IHRlc3Rlci5nZXQocG9sbF91cmwpCisgICAg ICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlICE9IDIwMDoKKyAgICAgICAgICAgIHJldHVybiBG YWxzZSwgTm9uZQorICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5k YXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgc3RhdHVzID0gcmVzcG9uc2VfZGF0YVsnZGF0 YSddWydzdGF0dXMnXQorICAgICAgICBpZiBzdGF0dXMgPT0gJ1N1Y2Nlc3MnOgorICAgICAgICAg ICAgcmV0dXJuIFRydWUsIHJlc3BvbnNlX2RhdGEKKyAgICAgICAgZWxpZiBzdGF0dXMgPT0gJ05v dENvbm5lY3RlZCcgb3Igc3RhdHVzID09ICdDYW5jZWwnOgorICAgICAgICAgICAgcmV0dXJuIEZh bHNlLCBOb25lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMv dGVzdF9pc19xdWVyeV9yZXN1bHRzZXRfdXBkYXRhYmxlLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3Rlc3RzL3Rlc3RfaXNfcXVlcnlfcmVzdWx0c2V0X3VwZGF0YWJsZS5weQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZDdlNzVjNzgKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9pc19xdWVyeV9yZXN1 bHRzZXRfdXBkYXRhYmxlLnB5CkBAIC0wLDAgKzEsMTI1IEBACisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAx MyAtIDIwMTksIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCitpbXBvcnQganNvbgorCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2Vf dXRpbHMKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IK K2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9u LnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIC5leGVj dXRlX3F1ZXJ5X3V0aWxzIGltcG9ydCBleGVjdXRlX3F1ZXJ5CisKKworY2xhc3MgVGVzdFF1ZXJ5 VXBkYXRhYmxlUmVzdWx0c2V0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiIgVGhpcyBjbGFz cyB3aWxsIHRlc3QgdGhlIGRldGVjdGlvbiBvZiB3aGV0aGVyIHRoZSBxdWVyeQorICAgICAgICBy ZXN1bHQtc2V0IGlzIHVwZGF0YWJsZS4gIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAo J1doZW4gc2VsZWN0aW5nIGFsbCBjb2x1bW5zIG9mIHRoZSB0YWJsZScsIGRpY3QoCisgICAgICAg ICAgICBzcWw9J1NFTEVDVCAqIEZST00gdGVzdF9mb3JfdXBkYXRhYmxlX3Jlc3VsdHNldDsnLAor ICAgICAgICAgICAgcHJpbWFyeV9rZXlzPXsKKyAgICAgICAgICAgICAgICAncGtfY29sMSc6ICdp bnQ0JywKKyAgICAgICAgICAgICAgICAncGtfY29sMic6ICdpbnQ0JworICAgICAgICAgICAgfQor ICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHNlbGVjdGluZyBhbGwgcHJpbWFyeSBrZXlzIG9m IHRoZSB0YWJsZScsIGRpY3QoCisgICAgICAgICAgICBzcWw9J1NFTEVDVCBwa19jb2wxLCBwa19j b2wyIEZST00gdGVzdF9mb3JfdXBkYXRhYmxlX3Jlc3VsdHNldDsnLAorICAgICAgICAgICAgcHJp bWFyeV9rZXlzPXsKKyAgICAgICAgICAgICAgICAncGtfY29sMSc6ICdpbnQ0JywKKyAgICAgICAg ICAgICAgICAncGtfY29sMic6ICdpbnQ0JworICAgICAgICAgICAgfQorICAgICAgICApKSwKKyAg ICAgICAgKCdXaGVuIHNlbGVjdGluZyBzb21lIG9mIHRoZSBwcmltYXJ5IGtleXMgb2YgdGhlIHRh YmxlJywgZGljdCgKKyAgICAgICAgICAgIHNxbD0nU0VMRUNUIHBrX2NvbDIgRlJPTSB0ZXN0X2Zv cl91cGRhdGFibGVfcmVzdWx0c2V0OycsCisgICAgICAgICAgICBwcmltYXJ5X2tleXM9Tm9uZQor ICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHNlbGVjdGluZyBub25lIG9mIHRoZSBwcmltYXJ5 IGtleXMgb2YgdGhlIHRhYmxlJywgZGljdCgKKyAgICAgICAgICAgIHNxbD0nU0VMRUNUIG5vcm1h bF9jb2wxIEZST00gdGVzdF9mb3JfdXBkYXRhYmxlX3Jlc3VsdHNldDsnLAorICAgICAgICAgICAg cHJpbWFyeV9rZXlzPU5vbmUKKyAgICAgICAgKSksCisgICAgICAgICgnV2hlbiByZW5hbWluZyBh IHByaW1hcnkga2V5JywgZGljdCgKKyAgICAgICAgICAgIHNxbD0nU0VMRUNUIHBrX2NvbDEgYXMg c29tZV9jb2wsICcKKyAgICAgICAgICAgICAgICAncGtfY29sMiBGUk9NIHRlc3RfZm9yX3VwZGF0 YWJsZV9yZXN1bHRzZXQ7JywKKyAgICAgICAgICAgIHByaW1hcnlfa2V5cz1Ob25lCisgICAgICAg ICkpLAorICAgICAgICAoJ1doZW4gcmVuYW1pbmcgYSBjb2x1bW4gdG8gYSBwcmltYXJ5IGtleSBu YW1lJywgZGljdCgKKyAgICAgICAgICAgIHNxbD0nU0VMRUNUIHBrX2NvbDEsIHBrX2NvbDIsIG5v cm1hbF9jb2wxIGFzIHBrX2NvbDEgJworICAgICAgICAgICAgICAgICdGUk9NIHRlc3RfZm9yX3Vw ZGF0YWJsZV9yZXN1bHRzZXQ7JywKKyAgICAgICAgICAgIHByaW1hcnlfa2V5cz1Ob25lCisgICAg ICAgICkpCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLl9pbml0 aWFsaXplX2RhdGFiYXNlX2Nvbm5lY3Rpb24oKQorICAgICAgICBzZWxmLl9pbml0aWFsaXplX3F1 ZXJ5X3Rvb2woKQorICAgICAgICBzZWxmLl9pbml0aWFsaXplX3VybHMoKQorICAgICAgICBzZWxm Ll9jcmVhdGVfdGVzdF90YWJsZSgpCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAg aXNfc3VjY2VzcywgcmVzcG9uc2VfZGF0YSA9IFwKKyAgICAgICAgICAgIGV4ZWN1dGVfcXVlcnko dGVzdGVyPXNlbGYudGVzdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeT1zZWxm LnNxbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcG9sbF91cmw9c2VsZi5wb2xsX3VybCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcXVlcnlfdG9vbF91cmw9c2VsZi5zdGFy dF9xdWVyeV90b29sX3VybCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoaXNfc3VjY2Vzcywg VHJ1ZSkKKworICAgICAgICAjIENoZWNrIHByaW1hcnkga2V5cworICAgICAgICBwcmltYXJ5X2tl eXMgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ3ByaW1hcnlfa2V5cyddCisgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWxzKHByaW1hcnlfa2V5cywgc2VsZi5wcmltYXJ5X2tleXMpCisKKyAgICBkZWYg dGVhckRvd24oc2VsZik6CisgICAgICAgICMgRGlzY29ubmVjdCB0aGUgZGF0YWJhc2UKKyAgICAg ICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNlcnZlcl9p ZCwgc2VsZi5kYl9pZCkKKworICAgIGRlZiBfaW5pdGlhbGl6ZV9kYXRhYmFzZV9jb25uZWN0aW9u KHNlbGYpOgorICAgICAgICBkYXRhYmFzZV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJh c2UiXVstMV0KKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBkYXRhYmFzZV9pbmZvWyJzZXJ2ZXJf aWQiXQorCisgICAgICAgIHNlbGYuZGJfaWQgPSBkYXRhYmFzZV9pbmZvWyJkYl9pZCJdCisgICAg ICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlscy5TRVJWRVJf R1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5kYl9pZCkKKyAgICAgICAgaWYgbm90IGRiX2NvblsiaW5mbyJdID09ICJE YXRhYmFzZSBjb25uZWN0ZWQuIjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQg bm90IGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlLiIpCisKKyAgICBkZWYgX2luaXRpYWxpemVfcXVl cnlfdG9vbChzZWxmKToKKyAgICAgICAgdXJsID0gJy9kYXRhZ3JpZC9pbml0aWFsaXplL3F1ZXJ5 X3Rvb2wvezB9L3sxfS97Mn0nLmZvcm1hdCgKKyAgICAgICAgICAgIHV0aWxzLlNFUlZFUl9HUk9V UCwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50 ZXN0ZXIucG9zdCh1cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1 c19jb2RlLCAyMDApCisKKyAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9u c2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAgIHNlbGYudHJhbnNfaWQgPSByZXNwb25z ZV9kYXRhWydkYXRhJ11bJ2dyaWRUcmFuc0lkJ10KKworICAgIGRlZiBfaW5pdGlhbGl6ZV91cmxz KHNlbGYpOgorICAgICAgICBzZWxmLnN0YXJ0X3F1ZXJ5X3Rvb2xfdXJsID0gXAorICAgICAgICAg ICAgJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9zdGFydC97MH0nLmZvcm1hdChzZWxmLnRyYW5zX2lk KQorCisgICAgICAgIHNlbGYucG9sbF91cmwgPSAnL3NxbGVkaXRvci9wb2xsL3swfScuZm9ybWF0 KHNlbGYudHJhbnNfaWQpCisKKyAgICBkZWYgX2NyZWF0ZV90ZXN0X3RhYmxlKHNlbGYpOgorICAg ICAgICBjcmVhdGVfc3FsID0gIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJPUCBU QUJMRSBJRiBFWElTVFMgdGVzdF9mb3JfdXBkYXRhYmxlX3Jlc3VsdHNldDsKKworICAgICAgICAg ICAgICAgICAgICAgICAgICAgIENSRUFURSBUQUJMRSB0ZXN0X2Zvcl91cGRhdGFibGVfcmVzdWx0 c2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa19jb2wxCVNFUklBTCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtfY29sMiBTRVJJQUwsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbF9jb2wxIFZBUkNIQVIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5vcm1hbF9jb2wyIFZBUkNIQVIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFBSSU1BUlkgS0VZKHBrX2NvbDEsIHBrX2NvbDIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAiIiIKKworICAgICAg ICBpc19zdWNjZXNzLCBfID0gXAorICAgICAgICAgICAgZXhlY3V0ZV9xdWVyeSh0ZXN0ZXI9c2Vs Zi50ZXN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5PWNyZWF0ZV9zcWwsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3F1ZXJ5X3Rvb2xfdXJsPXNlbGYuc3RhcnRf cXVlcnlfdG9vbF91cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxfdXJsPXNlbGYu cG9sbF91cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGlzX3N1Y2Nlc3MsIFRydWUpCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9zYXZlX2No YW5nZWRfZGF0YS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X3Nh dmVfY2hhbmdlZF9kYXRhLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4w MTc5NWQyOQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90 ZXN0cy90ZXN0X3NhdmVfY2hhbmdlZF9kYXRhLnB5CkBAIC0wLDAgKzEsMzQ3IEBACisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHly aWdodCAoQykgMjAxMyAtIDIwMTksIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhp cyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQganNvbgorCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisg ICAgZGF0YWJhc2VfdXRpbHMKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRl c3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJv bSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxz Citmcm9tIC5leGVjdXRlX3F1ZXJ5X3V0aWxzIGltcG9ydCBleGVjdXRlX3F1ZXJ5CisKKworY2xh c3MgVGVzdFNhdmVDaGFuZ2VkRGF0YShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiIFRoaXMg Y2xhc3MgdGVzdHMgc2F2aW5nIGRhdGEgY2hhbmdlcyBpbiB0aGUgZ3JpZCB0byB0aGUgZGF0YWJh c2UgIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gaW5zZXJ0aW5nIG5ldyB2 YWxpZCByb3cnLCBkaWN0KAorICAgICAgICAgICAgc2F2ZV9wYXlsb2FkPXsKKyAgICAgICAgICAg ICAgICAidXBkYXRlZCI6IHt9LAorICAgICAgICAgICAgICAgICJhZGRlZCI6IHsKKyAgICAgICAg ICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXJyIjogRmFsc2Us CisgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAicGtfY29sIjogIjMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX3Rl bXBfUEsiOiAiMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vcm1hbF9jb2wiOiAi dGhyZWUiCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJzdGFnZWRfcm93cyI6IHt9LAor ICAgICAgICAgICAgICAgICJkZWxldGVkIjoge30sCisgICAgICAgICAgICAgICAgInVwZGF0ZWRf aW5kZXgiOiB7fSwKKyAgICAgICAgICAgICAgICAiYWRkZWRfaW5kZXgiOiB7IjIiOiAiMiJ9LAor ICAgICAgICAgICAgICAgICJjb2x1bW5zIjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJwa19jb2wiLAorICAgICAgICAgICAgICAgICAg ICAgICAgImRpc3BsYXlfbmFtZSI6ICJwa19jb2wiLAorICAgICAgICAgICAgICAgICAgICAgICAg ImNvbHVtbl90eXBlIjogIltQS10gaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAi Y29sdW1uX3R5cGVfaW50ZXJuYWwiOiAiaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAg ICAicG9zIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJwa19jb2w8YnI+ W1BLXSBpbnRlZ2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjZWxsIjogIm51bWJlciIs CisgICAgICAgICAgICAgICAgICAgICAgICAiY2FuX2VkaXQiOiBUcnVlLAorICAgICAgICAgICAg ICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAi bm90X251bGwiOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgImhhc19kZWZhdWx0X3Zh bCI6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgImlzX2FycmF5IjogRmFsc2V9LAor ICAgICAgICAgICAgICAgICAgICB7Im5hbWUiOiAibm9ybWFsX2NvbCIsCisgICAgICAgICAgICAg ICAgICAgICAiZGlzcGxheV9uYW1lIjogIm5vcm1hbF9jb2wiLAorICAgICAgICAgICAgICAgICAg ICAgImNvbHVtbl90eXBlIjogImNoYXJhY3RlciB2YXJ5aW5nIiwKKyAgICAgICAgICAgICAgICAg ICAgICJjb2x1bW5fdHlwZV9pbnRlcm5hbCI6ICJjaGFyYWN0ZXIgdmFyeWluZyIsCisgICAgICAg ICAgICAgICAgICAgICAicG9zIjogMSwKKyAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJu b3JtYWxfY29sPGJyPmNoYXJhY3RlciB2YXJ5aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICJj ZWxsIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICAiY2FuX2VkaXQiOiBUcnVlLAor ICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiY2hhcmFjdGVyIHZhcnlpbmciLAorICAgICAg ICAgICAgICAgICAgICAgIm5vdF9udWxsIjogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAi aGFzX2RlZmF1bHRfdmFsIjogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAiaXNfYXJyYXki OiBGYWxzZX0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg c2F2ZV9zdGF0dXM9VHJ1ZSwKKyAgICAgICAgICAgIGNoZWNrX3NxbD0nU0VMRUNUICogRlJPTSB0 ZXN0X2Zvcl9zYXZlX2RhdGEgV0hFUkUgcGtfY29sID0gMycsCisgICAgICAgICAgICBjaGVja19y ZXN1bHQ9W1szLCAidGhyZWUiXV0KKyAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBpbnNlcnRp bmcgbmV3IGludmFsaWQgcm93JywgZGljdCgKKyAgICAgICAgICAgIHNhdmVfcGF5bG9hZD17Cisg ICAgICAgICAgICAgICAgInVwZGF0ZWQiOiB7fSwKKyAgICAgICAgICAgICAgICAiYWRkZWQiOiB7 CisgICAgICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAgICAgImVy ciI6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEiOiB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInBrX2NvbCI6ICIxIiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiX190ZW1wX1BLIjogIjIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3Jt YWxfY29sIjogImZvdXIiCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJzdGFnZWRfcm93 cyI6IHt9LAorICAgICAgICAgICAgICAgICJkZWxldGVkIjoge30sCisgICAgICAgICAgICAgICAg InVwZGF0ZWRfaW5kZXgiOiB7fSwKKyAgICAgICAgICAgICAgICAiYWRkZWRfaW5kZXgiOiB7IjIi OiAiMiJ9LAorICAgICAgICAgICAgICAgICJjb2x1bW5zIjogWworICAgICAgICAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJwa19jb2wiLAorICAgICAgICAg ICAgICAgICAgICAgICAgImRpc3BsYXlfbmFtZSI6ICJwa19jb2wiLAorICAgICAgICAgICAgICAg ICAgICAgICAgImNvbHVtbl90eXBlIjogIltQS10gaW50ZWdlciIsCisgICAgICAgICAgICAgICAg ICAgICAgICAiY29sdW1uX3R5cGVfaW50ZXJuYWwiOiAiaW50ZWdlciIsCisgICAgICAgICAgICAg ICAgICAgICAgICAicG9zIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJw a19jb2w8YnI+W1BLXSBpbnRlZ2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjZWxsIjog Im51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2FuX2VkaXQiOiBUcnVlLAorICAg ICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsCisgICAgICAgICAgICAgICAg ICAgICAgICAibm90X251bGwiOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgImhhc19k ZWZhdWx0X3ZhbCI6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgImlzX2FycmF5Ijog RmFsc2V9LAorICAgICAgICAgICAgICAgICAgICB7Im5hbWUiOiAibm9ybWFsX2NvbCIsCisgICAg ICAgICAgICAgICAgICAgICAiZGlzcGxheV9uYW1lIjogIm5vcm1hbF9jb2wiLAorICAgICAgICAg ICAgICAgICAgICAgImNvbHVtbl90eXBlIjogImNoYXJhY3RlciB2YXJ5aW5nIiwKKyAgICAgICAg ICAgICAgICAgICAgICJjb2x1bW5fdHlwZV9pbnRlcm5hbCI6ICJjaGFyYWN0ZXIgdmFyeWluZyIs CisgICAgICAgICAgICAgICAgICAgICAicG9zIjogMSwKKyAgICAgICAgICAgICAgICAgICAgICJs YWJlbCI6ICJub3JtYWxfY29sPGJyPmNoYXJhY3RlciB2YXJ5aW5nIiwKKyAgICAgICAgICAgICAg ICAgICAgICJjZWxsIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICAiY2FuX2VkaXQi OiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiY2hhcmFjdGVyIHZhcnlpbmci LAorICAgICAgICAgICAgICAgICAgICAgIm5vdF9udWxsIjogRmFsc2UsCisgICAgICAgICAgICAg ICAgICAgICAiaGFzX2RlZmF1bHRfdmFsIjogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAi aXNfYXJyYXkiOiBGYWxzZX0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAg ICAgICAgICAgc2F2ZV9zdGF0dXM9RmFsc2UsCisgICAgICAgICAgICBjaGVja19zcWw9Tm9uZSwK KyAgICAgICAgICAgIGNoZWNrX3Jlc3VsdD1Ob25lCisgICAgICAgICkpLAorICAgICAgICAoJ1do ZW4gdXBkYXRpbmcgYSByb3cgaW4gYSB2YWxpZCB3YXknLCBkaWN0KAorICAgICAgICAgICAgc2F2 ZV9wYXlsb2FkPXsKKyAgICAgICAgICAgICAgICAidXBkYXRlZCI6IHsKKyAgICAgICAgICAgICAg ICAgICAgIjEiOgorICAgICAgICAgICAgICAgICAgICAgICAgeyJlcnIiOiBGYWxzZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsibm9ybWFsX2NvbCI6ICJPTkUifSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAicHJpbWFyeV9rZXlzIjoKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeyJwa19jb2wiOiAxfQorICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJhZGRlZCI6IHt9LAorICAgICAgICAgICAg ICAgICJzdGFnZWRfcm93cyI6IHt9LAorICAgICAgICAgICAgICAgICJkZWxldGVkIjoge30sCisg ICAgICAgICAgICAgICAgInVwZGF0ZWRfaW5kZXgiOiB7IjEiOiAiMSJ9LAorICAgICAgICAgICAg ICAgICJhZGRlZF9pbmRleCI6IHt9LAorICAgICAgICAgICAgICAgICJjb2x1bW5zIjogWworICAg ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJwa19j b2wiLAorICAgICAgICAgICAgICAgICAgICAgICAgImRpc3BsYXlfbmFtZSI6ICJwa19jb2wiLAor ICAgICAgICAgICAgICAgICAgICAgICAgImNvbHVtbl90eXBlIjogIltQS10gaW50ZWdlciIsCisg ICAgICAgICAgICAgICAgICAgICAgICAiY29sdW1uX3R5cGVfaW50ZXJuYWwiOiAiaW50ZWdlciIs CisgICAgICAgICAgICAgICAgICAgICAgICAicG9zIjogMCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICJsYWJlbCI6ICJwa19jb2w8YnI+W1BLXSBpbnRlZ2VyIiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICJjZWxsIjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2FuX2Vk aXQiOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsCisg ICAgICAgICAgICAgICAgICAgICAgICAibm90X251bGwiOiBUcnVlLAorICAgICAgICAgICAgICAg ICAgICAgICAgImhhc19kZWZhdWx0X3ZhbCI6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAg ICAgImlzX2FycmF5IjogRmFsc2V9LAorICAgICAgICAgICAgICAgICAgICB7Im5hbWUiOiAibm9y bWFsX2NvbCIsCisgICAgICAgICAgICAgICAgICAgICAiZGlzcGxheV9uYW1lIjogIm5vcm1hbF9j b2wiLAorICAgICAgICAgICAgICAgICAgICAgImNvbHVtbl90eXBlIjogImNoYXJhY3RlciB2YXJ5 aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICJjb2x1bW5fdHlwZV9pbnRlcm5hbCI6ICJjaGFy YWN0ZXIgdmFyeWluZyIsCisgICAgICAgICAgICAgICAgICAgICAicG9zIjogMSwKKyAgICAgICAg ICAgICAgICAgICAgICJsYWJlbCI6ICJub3JtYWxfY29sPGJyPmNoYXJhY3RlciB2YXJ5aW5nIiwK KyAgICAgICAgICAgICAgICAgICAgICJjZWxsIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAg ICAgICAiY2FuX2VkaXQiOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiY2hh cmFjdGVyIHZhcnlpbmciLAorICAgICAgICAgICAgICAgICAgICAgIm5vdF9udWxsIjogRmFsc2Us CisgICAgICAgICAgICAgICAgICAgICAiaGFzX2RlZmF1bHRfdmFsIjogRmFsc2UsCisgICAgICAg ICAgICAgICAgICAgICAiaXNfYXJyYXkiOiBGYWxzZX0KKyAgICAgICAgICAgICAgICBdCisgICAg ICAgICAgICB9LAorICAgICAgICAgICAgc2F2ZV9zdGF0dXM9VHJ1ZSwKKyAgICAgICAgICAgIGNo ZWNrX3NxbD0nU0VMRUNUICogRlJPTSB0ZXN0X2Zvcl9zYXZlX2RhdGEgV0hFUkUgcGtfY29sID0g MScsCisgICAgICAgICAgICBjaGVja19yZXN1bHQ9W1sxLCAiT05FIl1dCisgICAgICAgICkpLAor ICAgICAgICAoJ1doZW4gdXBkYXRpbmcgYSByb3cgaW4gYW4gaW52YWxpZCB3YXknLCBkaWN0KAor ICAgICAgICAgICAgc2F2ZV9wYXlsb2FkPXsKKyAgICAgICAgICAgICAgICAidXBkYXRlZCI6IHsK KyAgICAgICAgICAgICAgICAgICAgIjEiOgorICAgICAgICAgICAgICAgICAgICAgICAgeyJlcnIi OiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsicGtfY29sIjogIjIi fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicHJpbWFyeV9rZXlzIjoKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyJwa19jb2wiOiAxfQorICAgICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJhZGRlZCI6IHt9LAorICAg ICAgICAgICAgICAgICJzdGFnZWRfcm93cyI6IHt9LAorICAgICAgICAgICAgICAgICJkZWxldGVk Ijoge30sCisgICAgICAgICAgICAgICAgInVwZGF0ZWRfaW5kZXgiOiB7IjEiOiAiMSJ9LAorICAg ICAgICAgICAgICAgICJhZGRlZF9pbmRleCI6IHt9LAorICAgICAgICAgICAgICAgICJjb2x1bW5z IjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFt ZSI6ICJwa19jb2wiLAorICAgICAgICAgICAgICAgICAgICAgICAgImRpc3BsYXlfbmFtZSI6ICJw a19jb2wiLAorICAgICAgICAgICAgICAgICAgICAgICAgImNvbHVtbl90eXBlIjogIltQS10gaW50 ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29sdW1uX3R5cGVfaW50ZXJuYWwiOiAi aW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAicG9zIjogMCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICJsYWJlbCI6ICJwa19jb2w8YnI+W1BLXSBpbnRlZ2VyIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICJjZWxsIjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAg ICAiY2FuX2VkaXQiOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaW50 ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAibm90X251bGwiOiBUcnVlLAorICAgICAg ICAgICAgICAgICAgICAgICAgImhhc19kZWZhdWx0X3ZhbCI6IEZhbHNlLAorICAgICAgICAgICAg ICAgICAgICAgICAgImlzX2FycmF5IjogRmFsc2V9LAorICAgICAgICAgICAgICAgICAgICB7Im5h bWUiOiAibm9ybWFsX2NvbCIsCisgICAgICAgICAgICAgICAgICAgICAiZGlzcGxheV9uYW1lIjog Im5vcm1hbF9jb2wiLAorICAgICAgICAgICAgICAgICAgICAgImNvbHVtbl90eXBlIjogImNoYXJh Y3RlciB2YXJ5aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICJjb2x1bW5fdHlwZV9pbnRlcm5h bCI6ICJjaGFyYWN0ZXIgdmFyeWluZyIsCisgICAgICAgICAgICAgICAgICAgICAicG9zIjogMSwK KyAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJub3JtYWxfY29sPGJyPmNoYXJhY3RlciB2 YXJ5aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICJjZWxsIjogInN0cmluZyIsCisgICAgICAg ICAgICAgICAgICAgICAiY2FuX2VkaXQiOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgInR5 cGUiOiAiY2hhcmFjdGVyIHZhcnlpbmciLAorICAgICAgICAgICAgICAgICAgICAgIm5vdF9udWxs IjogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAiaGFzX2RlZmF1bHRfdmFsIjogRmFsc2Us CisgICAgICAgICAgICAgICAgICAgICAiaXNfYXJyYXkiOiBGYWxzZX0KKyAgICAgICAgICAgICAg ICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2F2ZV9zdGF0dXM9RmFsc2UsCisgICAg ICAgICAgICBjaGVja19zcWw9Tm9uZSwKKyAgICAgICAgICAgIGNoZWNrX3Jlc3VsdD1Ob25lCisg ICAgICAgICkpLAorICAgICAgICAoJ1doZW4gZGVsZXRpbmcgYSByb3cnLCBkaWN0KAorICAgICAg ICAgICAgc2F2ZV9wYXlsb2FkPXsKKyAgICAgICAgICAgICAgICAidXBkYXRlZCI6IHt9LAorICAg ICAgICAgICAgICAgICJhZGRlZCI6IHt9LAorICAgICAgICAgICAgICAgICJzdGFnZWRfcm93cyI6 IHsiMSI6IHsicGtfY29sIjogMn19LAorICAgICAgICAgICAgICAgICJkZWxldGVkIjogeyIxIjog eyJwa19jb2wiOiAyfX0sCisgICAgICAgICAgICAgICAgInVwZGF0ZWRfaW5kZXgiOiB7fSwKKyAg ICAgICAgICAgICAgICAiYWRkZWRfaW5kZXgiOiB7fSwKKyAgICAgICAgICAgICAgICAiY29sdW1u cyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIm5h bWUiOiAicGtfY29sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkaXNwbGF5X25hbWUiOiAi cGtfY29sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb2x1bW5fdHlwZSI6ICJbUEtdIGlu dGVnZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgImNvbHVtbl90eXBlX2ludGVybmFsIjog ImludGVnZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAsCisgICAgICAgICAg ICAgICAgICAgICAgICAibGFiZWwiOiAicGtfY29sPGJyPltQS10gaW50ZWdlciIsCisgICAgICAg ICAgICAgICAgICAgICAgICAiY2VsbCI6ICJudW1iZXIiLAorICAgICAgICAgICAgICAgICAgICAg ICAgImNhbl9lZGl0IjogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImlu dGVnZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgIm5vdF9udWxsIjogVHJ1ZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICJoYXNfZGVmYXVsdF92YWwiOiBGYWxzZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICJpc19hcnJheSI6IEZhbHNlfSwKKyAgICAgICAgICAgICAgICAgICAgeyJu YW1lIjogIm5vcm1hbF9jb2wiLAorICAgICAgICAgICAgICAgICAgICAgImRpc3BsYXlfbmFtZSI6 ICJub3JtYWxfY29sIiwKKyAgICAgICAgICAgICAgICAgICAgICJjb2x1bW5fdHlwZSI6ICJjaGFy YWN0ZXIgdmFyeWluZyIsCisgICAgICAgICAgICAgICAgICAgICAiY29sdW1uX3R5cGVfaW50ZXJu YWwiOiAiY2hhcmFjdGVyIHZhcnlpbmciLAorICAgICAgICAgICAgICAgICAgICAgInBvcyI6IDEs CisgICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAibm9ybWFsX2NvbDxicj5jaGFyYWN0ZXIg dmFyeWluZyIsCisgICAgICAgICAgICAgICAgICAgICAiY2VsbCI6ICJzdHJpbmciLAorICAgICAg ICAgICAgICAgICAgICAgImNhbl9lZGl0IjogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICJ0 eXBlIjogImNoYXJhY3RlciB2YXJ5aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICJub3RfbnVs bCI6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgImhhc19kZWZhdWx0X3ZhbCI6IEZhbHNl LAorICAgICAgICAgICAgICAgICAgICAgImlzX2FycmF5IjogRmFsc2V9CisgICAgICAgICAgICAg ICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNhdmVfc3RhdHVzPVRydWUsCisgICAg ICAgICAgICBjaGVja19zcWw9J1NFTEVDVCAqIEZST00gdGVzdF9mb3Jfc2F2ZV9kYXRhIFdIRVJF IHBrX2NvbCA9IDInLAorICAgICAgICAgICAgY2hlY2tfcmVzdWx0PSdTRUxFQ1QgMCcKKyAgICAg ICAgKSksCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLl9pbml0 aWFsaXplX2RhdGFiYXNlX2Nvbm5lY3Rpb24oKQorICAgICAgICBzZWxmLl9pbml0aWFsaXplX3F1 ZXJ5X3Rvb2woKQorICAgICAgICBzZWxmLl9pbml0aWFsaXplX3VybHNfYW5kX3NlbGVjdF9zcWwo KQorICAgICAgICBzZWxmLl9jcmVhdGVfdGVzdF90YWJsZSgpCisKKyAgICBkZWYgcnVuVGVzdChz ZWxmKToKKyAgICAgICAgIyBFeGVjdXRlIHNlbGVjdCBzcWwKKyAgICAgICAgaXNfc3VjY2Vzcywg XyA9IFwKKyAgICAgICAgICAgIGV4ZWN1dGVfcXVlcnkodGVzdGVyPXNlbGYudGVzdGVyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICBxdWVyeT1zZWxmLnNlbGVjdF9zcWwsCisgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0YXJ0X3F1ZXJ5X3Rvb2xfdXJsPXNlbGYuc3RhcnRfcXVlcnlfdG9v bF91cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxfdXJsPXNlbGYucG9sbF91cmwp CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGlzX3N1Y2Nlc3MsIFRydWUpCisKKyAgICAgICAg IyBTZW5kIGEgcmVxdWVzdCB0byBzYXZlIGNoYW5nZWQgZGF0YQorICAgICAgICByZXNwb25zZSA9 IHNlbGYudGVzdGVyLnBvc3Qoc2VsZi5zYXZlX3VybCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhzZWxmLnNhdmVfcGF5bG9hZCksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisK KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKwor ICAgICAgICAjIENoZWNrIHRoYXQgdGhlIHNhdmUgaXMgc3VjY2Vzc2Z1bAorICAgICAgICByZXNw b25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAg ICAgICAgc2F2ZV9zdGF0dXMgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ3N0YXR1cyddCisgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNhdmVfc3RhdHVzLCBzZWxmLnNhdmVfc3RhdHVzKQorCisg ICAgICAgIGlmIHNlbGYuY2hlY2tfc3FsOgorICAgICAgICAgICAgIyBFeGVjdXRlIGNoZWNrIHNx bAorICAgICAgICAgICAgaXNfc3VjY2VzcywgcmVzcG9uc2VfZGF0YSA9IFwKKyAgICAgICAgICAg ICAgICBleGVjdXRlX3F1ZXJ5KHRlc3Rlcj1zZWxmLnRlc3RlciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHF1ZXJ5PXNlbGYuY2hlY2tfc3FsLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RhcnRfcXVlcnlfdG9vbF91cmw9c2VsZi5zdGFydF9xdWVyeV90b29sX3VybCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxfdXJsPXNlbGYucG9sbF91cmwpCisg ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhpc19zdWNjZXNzLCBUcnVlKQorCisgICAgICAg ICAgICAjIENoZWNrIHRhYmxlIGZvciB1cGRhdGVzCisgICAgICAgICAgICByZXN1bHQgPSByZXNw b25zZV9kYXRhWydkYXRhJ11bJ3Jlc3VsdCddCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs cyhyZXN1bHQsIHNlbGYuY2hlY2tfcmVzdWx0KQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgor ICAgICAgICAjIERpc2Nvbm5lY3QgdGhlIGRhdGFiYXNlCisgICAgICAgIGRhdGFiYXNlX3V0aWxz LmRpc2Nvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCisK KyAgICBkZWYgX2luaXRpYWxpemVfZGF0YWJhc2VfY29ubmVjdGlvbihzZWxmKToKKyAgICAgICAg ZGF0YWJhc2VfaW5mbyA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdCisgICAgICAg IHNlbGYuc2VydmVyX2lkID0gZGF0YWJhc2VfaW5mb1sic2VydmVyX2lkIl0KKworICAgICAgICBz ZWxmLmRiX2lkID0gZGF0YWJhc2VfaW5mb1siZGJfaWQiXQorICAgICAgICBkYl9jb24gPSBkYXRh YmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJf aWQpCisgICAgICAgIGlmIG5vdCBkYl9jb25bImluZm8iXSA9PSAiRGF0YWJhc2UgY29ubmVjdGVk LiI6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIHRo ZSBkYXRhYmFzZS4iKQorCisgICAgZGVmIF9pbml0aWFsaXplX3F1ZXJ5X3Rvb2woc2VsZik6Cisg ICAgICAgIHVybCA9ICcvZGF0YWdyaWQvaW5pdGlhbGl6ZS9xdWVyeV90b29sL3swfS97MX0vezJ9 Jy5mb3JtYXQoCisgICAgICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAsIHNlbGYuc2VydmVyX2lk LCBzZWxmLmRiX2lkKQorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsKQor ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorCisg ICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1 dGYtOCcpKQorICAgICAgICBzZWxmLnRyYW5zX2lkID0gcmVzcG9uc2VfZGF0YVsnZGF0YSddWydn cmlkVHJhbnNJZCddCisKKyAgICBkZWYgX2luaXRpYWxpemVfdXJsc19hbmRfc2VsZWN0X3NxbChz ZWxmKToKKyAgICAgICAgc2VsZi5zdGFydF9xdWVyeV90b29sX3VybCA9IFwKKyAgICAgICAgICAg ICcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvc3RhcnQvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19pZCkK KyAgICAgICAgc2VsZi5zYXZlX3VybCA9ICcvc3FsZWRpdG9yL3NhdmUvezB9Jy5mb3JtYXQoc2Vs Zi50cmFuc19pZCkKKyAgICAgICAgc2VsZi5wb2xsX3VybCA9ICcvc3FsZWRpdG9yL3BvbGwvezB9 Jy5mb3JtYXQoc2VsZi50cmFuc19pZCkKKworICAgICAgICBzZWxmLnNlbGVjdF9zcWwgPSAnU0VM RUNUICogRlJPTSB0ZXN0X2Zvcl9zYXZlX2RhdGE7JworCisgICAgZGVmIF9jcmVhdGVfdGVzdF90 YWJsZShzZWxmKToKKyAgICAgICAgY3JlYXRlX3NxbCA9ICIiIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERST1AgVEFCTEUgSUYgRVhJU1RTIHRlc3RfZm9yX3NhdmVfZGF0YTsKKworICAg ICAgICAgICAgICAgICAgICAgICAgICAgIENSRUFURSBUQUJMRSB0ZXN0X2Zvcl9zYXZlX2RhdGEo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtfY29sCUlOVCBQUklNQVJZIEtFWSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxfY29sIFZBUkNIQVIpOworCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSU5TRVJUIElOVE8gdGVzdF9mb3Jfc2F2ZV9kYXRhIFZBTFVF UworICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAnb25lJyksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKDIsICd0d28nKTsKKyAgICAgICAgICAgICAgICAgICAgICAiIiIKKyAg ICAgICAgaXNfc3VjY2VzcywgXyA9IFwKKyAgICAgICAgICAgIGV4ZWN1dGVfcXVlcnkodGVzdGVy PXNlbGYudGVzdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeT1jcmVhdGVfc3Fs LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9xdWVyeV90b29sX3VybD1zZWxmLnN0 YXJ0X3F1ZXJ5X3Rvb2xfdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xsX3VybD1z ZWxmLnBvbGxfdXJsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhpc19zdWNjZXNzLCBUcnVl KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL2lzX3F1ZXJ5 X3Jlc3VsdHNldF91cGRhdGFibGUucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRp bHMvaXNfcXVlcnlfcmVzdWx0c2V0X3VwZGF0YWJsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMC4uZjZiNDUzZWUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3IvdXRpbHMvaXNfcXVlcnlfcmVzdWx0c2V0X3VwZGF0YWJsZS5weQpAQCAt MCwwICsxLDEyMCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdy ZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE5LCBUaGUgcGdBZG1pbiBE ZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiCisgICAgQ2hlY2sg aWYgdGhlIHJlc3VsdC1zZXQgb2YgYSBxdWVyeSBpcyB1cGRhdGFibGUsIEEgcmVzdWx0c2V0IGlz CisgICAgdXBkYXRhYmxlIChhcyBvZiB0aGlzIHZlcnNpb24pIGlmOgorICAgICAgICAtIEFsbCBj b2x1bW5zIGJlbG9uZyB0byB0aGUgc2FtZSB0YWJsZS4KKyAgICAgICAgLSBBbGwgdGhlIHByaW1h cnkga2V5IGNvbHVtbnMgb2YgdGhlIHRhYmxlIGFyZSBwcmVzZW50IGluIHRoZSByZXN1bHRzZXQK KyAgICAgICAgLSBObyBkdXBsaWNhdGUgY29sdW1ucworIiIiCitmcm9tIGZsYXNrIGltcG9ydCBy ZW5kZXJfdGVtcGxhdGUKK3RyeToKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVk RGljdAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gb3JkZXJlZGRpY3QgaW1wb3J0IE9y ZGVyZWREaWN0CisKKworZGVmIGlzX3F1ZXJ5X3Jlc3VsdHNldF91cGRhdGFibGUoY29ubiwgc3Fs X3BhdGgpOgorICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hlY2sg d2hldGhlciB0aGUgbGFzdCBzdWNjZXNzZnVsIHF1ZXJ5CisgICAgICAgIHByb2R1Y2VkIHVwZGF0 YWJsZSByZXN1bHRzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBjb25uOiBDb25uZWN0 aW9uIG9iamVjdC4KKyAgICAgICAgICAgIHNxbF9wYXRoOiB0aGUgcGF0aCB0byB0aGUgc3FsIHRl bXBsYXRlcy4KKyAgICAiIiIKKyAgICBjb2x1bW5zX2luZm8gPSBjb25uLmdldF9jb2x1bW5faW5m bygpCisKKyAgICBpZiBjb2x1bW5zX2luZm8gaXMgTm9uZSBvciBsZW4oY29sdW1uc19pbmZvKSA8 IDE6CisgICAgICAgIHJldHVybiByZXR1cm5fbm90X3VwZGF0YWJsZSgpCisKKyAgICB0YWJsZV9v aWQgPSBfY2hlY2tfc2luZ2xlX3RhYmxlKGNvbHVtbnNfaW5mbykKKyAgICBpZiBub3QgdGFibGVf b2lkOgorICAgICAgICByZXR1cm4gcmV0dXJuX25vdF91cGRhdGFibGUoKQorCisgICAgaWYgbm90 IF9jaGVja19kdXBsaWNhdGVfY29sdW1ucyhjb2x1bW5zX2luZm8pOgorICAgICAgICByZXR1cm4g cmV0dXJuX25vdF91cGRhdGFibGUoKQorCisgICAgaWYgY29ubi5jb25uZWN0ZWQoKToKKyAgICAg ICAgcHJpbWFyeV9rZXlzLCBwcmltYXJ5X2tleXNfY29sdW1ucywgcGtfbmFtZXMgPSBcCisgICAg ICAgICAgICBfZ2V0X3ByaW1hcnlfa2V5cyhjb25uPWNvbm4sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0YWJsZV9vaWQ9dGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3FsX3BhdGg9c3FsX3BhdGgpCisKKyAgICAgICAgaWYgbm90IF9jaGVja19wcmltYXJ5 X2tleXNfdW5pcXVlbHlfZXhpc3QocHJpbWFyeV9rZXlzX2NvbHVtbnMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnNfaW5mbyk6CisgICAg ICAgICAgICByZXR1cm4gcmV0dXJuX25vdF91cGRhdGFibGUoKQorCisgICAgICAgIHJldHVybiBU cnVlLCBwcmltYXJ5X2tleXMsIHBrX25hbWVzLCB0YWJsZV9vaWQKKyAgICBlbHNlOgorICAgICAg ICByZXR1cm4gcmV0dXJuX25vdF91cGRhdGFibGUoKQorCisKK2RlZiBfY2hlY2tfc2luZ2xlX3Rh YmxlKGNvbHVtbnNfaW5mbyk6CisgICAgdGFibGVfb2lkID0gY29sdW1uc19pbmZvWzBdWyd0YWJs ZV9vaWQnXQorICAgIGZvciBjb2x1bW4gaW4gY29sdW1uc19pbmZvOgorICAgICAgICBpZiBjb2x1 bW5bJ3RhYmxlX29pZCddICE9IHRhYmxlX29pZDoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisg ICAgcmV0dXJuIHRhYmxlX29pZAorCisKK2RlZiBfY2hlY2tfZHVwbGljYXRlX2NvbHVtbnMoY29s dW1uc19pbmZvKToKKyAgICBjb2x1bW5fbnVtYmVycyA9IFwKKyAgICAgICAgW2NvbFsndGFibGVf Y29sdW1uJ10gZm9yIGNvbCBpbiBjb2x1bW5zX2luZm9dCisgICAgaXNfZHVwbGljYXRlX2NvbHVt bnMgPSBsZW4oY29sdW1uX251bWJlcnMpICE9IGxlbihzZXQoY29sdW1uX251bWJlcnMpKQorICAg IGlmIGlzX2R1cGxpY2F0ZV9jb2x1bW5zOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1 cm4gVHJ1ZQorCisKK2RlZiBfY2hlY2tfcHJpbWFyeV9rZXlzX3VuaXF1ZWx5X2V4aXN0KHByaW1h cnlfa2V5c19jb2x1bW5zLCBjb2x1bW5zX2luZm8pOgorICAgIGZvciBwayBpbiBwcmltYXJ5X2tl eXNfY29sdW1uczoKKyAgICAgICAgcGtfZXhpc3RzID0gRmFsc2UKKyAgICAgICAgZm9yIGNvbCBp biBjb2x1bW5zX2luZm86CisgICAgICAgICAgICBpZiBjb2xbJ3RhYmxlX2NvbHVtbiddID09IHBr Wydjb2x1bW5fbnVtYmVyJ106CisgICAgICAgICAgICAgICAgcGtfZXhpc3RzID0gVHJ1ZQorICAg ICAgICAgICAgICAgICMgSWYgdGhlIHByaW1hcnkga2V5IGNvbHVtbiBpcyByZW5hbWVkCisgICAg ICAgICAgICAgICAgaWYgY29sWydkaXNwbGF5X25hbWUnXSAhPSBwa1snbmFtZSddOgorICAgICAg ICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICMgSWYgYSBub3JtYWwgY29s dW1uIGlzIHJlbmFtZWQgdG8gYSBwcmltYXJ5IGtleSBjb2x1bW4gbmFtZQorICAgICAgICAgICAg ZWxpZiBjb2xbJ2Rpc3BsYXlfbmFtZSddID09IHBrWyduYW1lJ106CisgICAgICAgICAgICAgICAg cmV0dXJuIEZhbHNlCisKKyAgICAgICAgaWYgbm90IHBrX2V4aXN0czoKKyAgICAgICAgICAgIHJl dHVybiBGYWxzZQorICAgIHJldHVybiBUcnVlCisKKworZGVmIF9nZXRfcHJpbWFyeV9rZXlzKHNx bF9wYXRoLCB0YWJsZV9vaWQsIGNvbm4pOgorICAgIHF1ZXJ5ID0gcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAiLyIuam9pbihbc3FsX3BhdGgsICdwcmltYXJ5X2tleXMuc3FsJ10pLAorICAgICAg ICBvYmpfaWQ9dGFibGVfb2lkCisgICAgKQorICAgIHN0YXR1cywgcmVzdWx0ID0gY29ubi5leGVj dXRlX2RpY3QocXVlcnkpCisgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgcmV0dXJuIHJldHVy bl9ub3RfdXBkYXRhYmxlKCkKKworICAgIHByaW1hcnlfa2V5c19jb2x1bW5zID0gW10KKyAgICBw cmltYXJ5X2tleXMgPSBPcmRlcmVkRGljdCgpCisgICAgcGtfbmFtZXMgPSBbXQorCisgICAgZm9y IHJvdyBpbiByZXN1bHRbJ3Jvd3MnXToKKyAgICAgICAgcHJpbWFyeV9rZXlzW3Jvd1snYXR0bmFt ZSddXSA9IHJvd1sndHlwbmFtZSddCisgICAgICAgIHByaW1hcnlfa2V5c19jb2x1bW5zLmFwcGVu ZCh7CisgICAgICAgICAgICAnbmFtZSc6IHJvd1snYXR0bmFtZSddLAorICAgICAgICAgICAgJ2Nv bHVtbl9udW1iZXInOiByb3dbJ2F0dG51bSddCisgICAgICAgIH0pCisgICAgICAgIHBrX25hbWVz LmFwcGVuZChyb3dbJ2F0dG5hbWUnXSkKKworICAgIHJldHVybiBwcmltYXJ5X2tleXMsIHByaW1h cnlfa2V5c19jb2x1bW5zLCBwa19uYW1lcworCisKK2RlZiByZXR1cm5fbm90X3VwZGF0YWJsZSgp OgorICAgIHJldHVybiBGYWxzZSwgTm9uZSwgTm9uZSwgTm9uZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMucHkgYi93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvcXVlcnlfdG9vbF9wcmVmZXJlbmNlcy5w eQppbmRleCBjYTA5ZWFlYy4uNTAxZWYwY2UgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xz L3NxbGVkaXRvci91dGlscy9xdWVyeV90b29sX3ByZWZlcmVuY2VzLnB5CisrKyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9xdWVyeV90b29sX3ByZWZlcmVuY2VzLnB5CkBAIC0x NjMsNiArMTYzLDE2IEBAIGRlZiBSZWdpc3RlclF1ZXJ5VG9vbFByZWZlcmVuY2VzKHNlbGYpOgog ICAgICAgICApCiAgICAgKQogCisgICAgc2VsZi5zaG93X2FsZXJ0X3VuY29tbWl0ZWRfdHJhbnNh Y3Rpb24gPSBzZWxmLnByZWZlcmVuY2UucmVnaXN0ZXIoCisgICAgICAgICdPcHRpb25zJywgJ2Fs ZXJ0X3VuY29tbWl0ZWRfdHJhbnNhY3Rpb24nLAorICAgICAgICBnZXR0ZXh0KCJBbGVydCBvbiB1 bmNvbW1pdGVkIHRyYW5zYWN0aW9ucz8iKSwgJ2Jvb2xlYW4nLCBUcnVlLAorICAgICAgICBjYXRl Z29yeV9sYWJlbD1nZXR0ZXh0KCdPcHRpb25zJyksCisgICAgICAgIGhlbHBfc3RyPWdldHRleHQo CisgICAgICAgICAgICAnU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IHRvIGFsZXJ0IHRoZSB1c2Vy IHdoZW4gYSBjdXJyZW50ICcKKyAgICAgICAgICAgICd0cmFuc2FjdGlvbiBpcyB1bmNvbW1pdGVk IG9uIFF1ZXJ5IFRvb2wgZXhpdC4nCisgICAgICAgICkKKyAgICApCisKICAgICBzZWxmLmNzdl9x dW90aW5nID0gc2VsZi5wcmVmZXJlbmNlLnJlZ2lzdGVyKAogICAgICAgICAnQ1NWX291dHB1dCcs ICdjc3ZfcXVvdGluZycsCiAgICAgICAgIGdldHRleHQoIkNTViBxdW90aW5nIiksICdvcHRpb25z JywgJ3N0cmluZ3MnLApAQCAtMjkwLDYgKzMwMCwyNCBAQCBkZWYgUmVnaXN0ZXJRdWVyeVRvb2xQ cmVmZXJlbmNlcyhzZWxmKToKICAgICAgICAgZmllbGRzPXNob3J0Y3V0X2ZpZWxkcwogICAgICkK IAorICAgIHNlbGYucHJlZmVyZW5jZS5yZWdpc3RlcigKKyAgICAgICAgJ2tleWJvYXJkX3Nob3J0 Y3V0cycsCisgICAgICAgICdzYXZlX2RhdGEnLAorICAgICAgICBnZXR0ZXh0KCdTYXZlIERhdGEg Q2hhbmdlcycpLAorICAgICAgICAna2V5Ym9hcmRzaG9ydGN1dCcsCisgICAgICAgIHsKKyAgICAg ICAgICAgICdhbHQnOiBGYWxzZSwKKyAgICAgICAgICAgICdzaGlmdCc6IEZhbHNlLAorICAgICAg ICAgICAgJ2NvbnRyb2wnOiBGYWxzZSwKKyAgICAgICAgICAgICdrZXknOiB7CisgICAgICAgICAg ICAgICAgJ2tleV9jb2RlJzogMTE3LAorICAgICAgICAgICAgICAgICdjaGFyJzogJ0Y2JworICAg ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBjYXRlZ29yeV9sYWJlbD1nZXR0ZXh0KCdL ZXlib2FyZCBzaG9ydGN1dHMnKSwKKyAgICAgICAgZmllbGRzPXNob3J0Y3V0X2ZpZWxkcworICAg ICkKKwogICAgIHNlbGYucHJlZmVyZW5jZS5yZWdpc3RlcigKICAgICAgICAgJ2tleWJvYXJkX3No b3J0Y3V0cycsCiAgICAgICAgICdleHBsYWluX3F1ZXJ5JywKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9zYXZlX2NoYW5nZWRfZGF0YS5weSBiL3dlYi9wZ2Fk bWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9zYXZlX2NoYW5nZWRfZGF0YS5weQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNjI3NWU2NTgKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvc2F2ZV9jaGFuZ2VkX2RhdGEucHkKQEAg LTAsMCArMSwzMTcgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3Rn cmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOSwgVGhlIHBnQWRtaW4g RGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQ b3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Zyb20gZmxhc2sgaW1w b3J0IHJlbmRlcl90ZW1wbGF0ZQorZnJvbSBwZ2FkbWluLnRvb2xzLnNxbGVkaXRvci51dGlscy5j b25zdGFudF9kZWZpbml0aW9uIGltcG9ydCBUWF9TVEFUVVNfSURMRQordHJ5OgorICAgIGZyb20g Y29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAg ZnJvbSBvcmRlcmVkZGljdCBpbXBvcnQgT3JkZXJlZERpY3QKKworCitkZWYgc2F2ZV9jaGFuZ2Vk X2RhdGEoY2hhbmdlZF9kYXRhLCBjb2x1bW5zX2luZm8sIGNvbm4sIGNvbW1hbmRfb2JqLAorICAg ICAgICAgICAgICAgICAgICAgIGNsaWVudF9wcmltYXJ5X2tleSwgYXV0b19jb21taXQ9VHJ1ZSk6 CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHNhdmUgdGhlIGRhdGEgaW50 byB0aGUgZGF0YWJhc2UuCisgICAgRGVwZW5kaW5nIG9uIGNvbmRpdGlvbiBpdCB3aWxsIGVpdGhl ciB1cGRhdGUgb3IgaW5zZXJ0IHRoZQorICAgIG5ldyByb3cgaW50byB0aGUgZGF0YWJhc2UuCisK KyAgICBBcmdzOgorICAgICAgICBjaGFuZ2VkX2RhdGE6IENvbnRhaW5zIGRhdGEgdG8gYmUgc2F2 ZWQKKyAgICAgICAgY29tbWFuZF9vYmo6IFRoZSB0cmFuc2FjdGlvbiBvYmplY3QgKGNvbW1hbmRf b2JqIG9yIHRyYW5zX29iaikKKyAgICAgICAgY29ubjogVGhlIGNvbm5lY3Rpb24gb2JqZWN0Cisg ICAgICAgIGNvbHVtbnNfaW5mbzogc2Vzc2lvbl9vYmpbJ2NvbHVtbnNfaW5mbyddCisgICAgICAg IGNsaWVudF9wcmltYXJ5X2tleTogc2Vzc2lvbl9vYmpbJ2NsaWVudF9wcmltYXJ5X2tleSddCisg ICAgICAgIGF1dG9fY29tbWl0OiBJZiB0aGUgY2hhbmdlcyBzaG91bGQgYmUgY29tbWl0ZWQgYXV0 b21hdGljYWxseS4KKyAgICAiIiIKKyAgICBzdGF0dXMgPSBGYWxzZQorICAgIHJlcyA9IE5vbmUK KyAgICBxdWVyeV9yZXMgPSBkaWN0KCkKKyAgICBjb3VudCA9IDAKKyAgICBsaXN0X29mX3Jvd2lk ID0gW10KKyAgICBvcGVyYXRpb25zID0gKCdhZGRlZCcsICd1cGRhdGVkJywgJ2RlbGV0ZWQnKQor ICAgIGxpc3Rfb2Zfc3FsID0ge30KKyAgICBfcm93aWQgPSBOb25lCisgICAgaXNfY29tbWl0X3Jl cXVpcmVkID0gRmFsc2UKKworICAgIHBnYWRtaW5fYWxpYXMgPSB7CisgICAgICAgIGNvbF9uYW1l OiBjb2xfaW5mb1sncGdhZG1pbl9hbGlhcyddCisgICAgICAgIGZvciBjb2xfbmFtZSwgY29sX2lu Zm8gaW4gY29sdW1uc19pbmZvLml0ZW1zKCkKKyAgICB9CisKKyAgICBpZiBjb25uLmNvbm5lY3Rl ZCgpOgorICAgICAgICBpc19zYXZlcG9pbnQgPSBGYWxzZQorICAgICAgICAjIFN0YXJ0IHRoZSB0 cmFuc2FjdGlvbiBpZiB0aGUgc2Vzc2lvbiBpcyBpZGxlCisgICAgICAgIGlmIGNvbm4udHJhbnNh Y3Rpb25fc3RhdHVzKCkgPT0gVFhfU1RBVFVTX0lETEU6CisgICAgICAgICAgICBjb25uLmV4ZWN1 dGVfdm9pZCgnQkVHSU47JykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbm4uZXhlY3V0 ZV92b2lkKCdTQVZFUE9JTlQgc2F2ZV9kYXRhOycpCisgICAgICAgICAgICBpc19zYXZlcG9pbnQg PSBUcnVlCisKKyAgICAgICAgIyBJdGVyYXRlIHRvdGFsIG51bWJlciBvZiByZWNvcmRzIHRvIGJl IHVwZGF0ZWQvaW5zZXJ0ZWQKKyAgICAgICAgZm9yIG9mX3R5cGUgaW4gY2hhbmdlZF9kYXRhOgor ICAgICAgICAgICAgIyBObyBuZWVkIHRvIGdvIGZ1cnRoZXIgaWYgaXRzIG5vdCBhZGQvdXBkYXRl L2RlbGV0ZSBvcGVyYXRpb24KKyAgICAgICAgICAgIGlmIG9mX3R5cGUgbm90IGluIG9wZXJhdGlv bnM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgaWYgbm8gZGF0YSB0 byBiZSBzYXZlIHRoZW4gY29udGludWUKKyAgICAgICAgICAgIGlmIGxlbihjaGFuZ2VkX2RhdGFb b2ZfdHlwZV0pIDwgMToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBj b2x1bW5fdHlwZSA9IHt9CisgICAgICAgICAgICBjb2x1bW5fZGF0YSA9IHt9CisgICAgICAgICAg ICBmb3IgZWFjaF9jb2wgaW4gY29sdW1uc19pbmZvOgorICAgICAgICAgICAgICAgIGlmICgKKyAg ICAgICAgICAgICAgICAgICAgY29sdW1uc19pbmZvW2VhY2hfY29sXVsnbm90X251bGwnXSBhbmQK KyAgICAgICAgICAgICAgICAgICAgbm90IGNvbHVtbnNfaW5mb1tlYWNoX2NvbF1bJ2hhc19kZWZh dWx0X3ZhbCddCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICAgICAgY29sdW1u X2RhdGFbZWFjaF9jb2xdID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBjb2x1bW5fdHlwZVtl YWNoX2NvbF0gPSBcCisgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zX2luZm9bZWFjaF9j b2xdWyd0eXBlX25hbWUnXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg ICAgIGNvbHVtbl90eXBlW2VhY2hfY29sXSA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv bHVtbnNfaW5mb1tlYWNoX2NvbF1bJ3R5cGVfbmFtZSddCisKKyAgICAgICAgICAgICMgRm9yIG5l d2x5IGFkZGVkIHJvd3MKKyAgICAgICAgICAgIGlmIG9mX3R5cGUgPT0gJ2FkZGVkJzoKKyAgICAg ICAgICAgICAgICAjIFB5dGhvbiBkaWN0IGRvZXMgbm90IGhvbm91ciB0aGUgaW5zZXJ0ZWQgaXRl bSBvcmRlcgorICAgICAgICAgICAgICAgICMgU28gdG8gaW5zZXJ0IGRhdGEgaW4gdGhlIG9yZGVy LCB3ZSBuZWVkIHRvIG1ha2Ugb3JkZXJlZAorICAgICAgICAgICAgICAgICMgbGlzdCBvZiBhZGRl ZCBpbmRleCBXZSBkb24ndCBuZWVkIHRoaXMgbWVjaGFuaXNtIGluCisgICAgICAgICAgICAgICAg IyB1cGRhdGVkL2RlbGV0ZWQgcm93cyBhcyBpdCBkb2VzIG5vdCBtYXR0ZXIgaW4KKyAgICAgICAg ICAgICAgICAjIHRob3NlIG9wZXJhdGlvbnMKKyAgICAgICAgICAgICAgICBhZGRlZF9pbmRleCA9 IE9yZGVyZWREaWN0KAorICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoCisgICAgICAgICAgICAg ICAgICAgICAgICBjaGFuZ2VkX2RhdGFbJ2FkZGVkX2luZGV4J10uaXRlbXMoKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIGtleT1sYW1iZGEgeDogaW50KHhbMF0pCisgICAgICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgbGlzdF9vZl9zcWxbb2Zf dHlwZV0gPSBbXQorCisgICAgICAgICAgICAgICAgIyBXaGVuIG5ldyByb3dzIGFyZSBhZGRlZCwg b25seSBjaGFuZ2VkIGNvbHVtbnMgZGF0YSBpcworICAgICAgICAgICAgICAgICMgc2VudCBmcm9t IGNsaWVudCBzaWRlLiBCdXQgaWYgY29sdW1uIGlzIG5vdF9udWxsIGFuZCBoYXMKKyAgICAgICAg ICAgICAgICAjIG5vX2RlZmF1bHRfdmFsdWUsIHNldCBjb2x1bW4gdG8gYmxhbmssIGluc3RlYWQK KyAgICAgICAgICAgICAgICAjIG9mIG5vdCBudWxsIHdoaWNoIGlzIHNldCBieSBkZWZhdWx0Lgor ICAgICAgICAgICAgICAgIGNvbHVtbl9kYXRhID0ge30KKyAgICAgICAgICAgICAgICBwa19uYW1l cywgcHJpbWFyeV9rZXlzID0gY29tbWFuZF9vYmouZ2V0X3ByaW1hcnlfa2V5cygpCisgICAgICAg ICAgICAgICAgaGFzX29pZHMgPSAnb2lkJyBpbiBjb2x1bW5fdHlwZQorCisgICAgICAgICAgICAg ICAgZm9yIGVhY2hfcm93IGluIGFkZGVkX2luZGV4OgorICAgICAgICAgICAgICAgICAgICAjIEdl dCB0aGUgcm93IGluZGV4IHRvIG1hdGNoIHdpdGggdGhlIGFkZGVkIHJvd3MKKyAgICAgICAgICAg ICAgICAgICAgIyBkaWN0IGtleQorICAgICAgICAgICAgICAgICAgICB0bXBfcm93X2luZGV4ID0g YWRkZWRfaW5kZXhbZWFjaF9yb3ddCisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBjaGFuZ2Vk X2RhdGFbb2ZfdHlwZV1bdG1wX3Jvd19pbmRleF1bJ2RhdGEnXQorICAgICAgICAgICAgICAgICAg ICAjIFJlbW92ZSBvdXIgdW5pcXVlIHRyYWNraW5nIGtleQorICAgICAgICAgICAgICAgICAgICBk YXRhLnBvcChjbGllbnRfcHJpbWFyeV9rZXksIE5vbmUpCisgICAgICAgICAgICAgICAgICAgIGRh dGEucG9wKCdpc19yb3dfY29waWVkJywgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgbGlzdF9v Zl9yb3dpZC5hcHBlbmQoZGF0YS5nZXQoY2xpZW50X3ByaW1hcnlfa2V5KSkKKworICAgICAgICAg ICAgICAgICAgICAjIFVwZGF0ZSBjb2x1bW5zIHZhbHVlIHdpdGggY29sdW1ucyBoYXZpbmcKKyAg ICAgICAgICAgICAgICAgICAgIyBub3RfbnVsbD1GYWxzZSBhbmQgaGFzIG5vIGRlZmF1bHQgdmFs dWUKKyAgICAgICAgICAgICAgICAgICAgY29sdW1uX2RhdGEudXBkYXRlKGRhdGEpCisKKyAgICAg ICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAg ICAgICAgIi8iLmpvaW4oW2NvbW1hbmRfb2JqLnNxbF9wYXRoLCAnaW5zZXJ0LnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGFfdG9fYmVfc2F2ZWQ9Y29sdW1uX2RhdGEsCisgICAg ICAgICAgICAgICAgICAgICAgICBwZ2FkbWluX2FsaWFzPXBnYWRtaW5fYWxpYXMsCisgICAgICAg ICAgICAgICAgICAgICAgICBwcmltYXJ5X2tleXM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIG9iamVjdF9uYW1lPWNvbW1hbmRfb2JqLm9iamVjdF9uYW1lLAorICAgICAgICAgICAgICAg ICAgICAgICAgbnNwX25hbWU9Y29tbWFuZF9vYmoubnNwX25hbWUsCisgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhX3R5cGU9Y29sdW1uX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBw a19uYW1lcz1wa19uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc19vaWRzPWhhc19v aWRzCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgICAgICBzZWxlY3Rf c3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4o W2NvbW1hbmRfb2JqLnNxbF9wYXRoLCAnc2VsZWN0LnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgIG9iamVjdF9uYW1lPWNvbW1hbmRfb2JqLm9iamVjdF9uYW1lLAorICAgICAgICAgICAg ICAgICAgICAgICAgbnNwX25hbWU9Y29tbWFuZF9vYmoubnNwX25hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICBwcmltYXJ5X2tleXM9cHJpbWFyeV9rZXlzLAorICAgICAgICAgICAgICAgICAg ICAgICAgaGFzX29pZHM9aGFzX29pZHMKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAg ICAgICAgICAgICAgIGxpc3Rfb2Zfc3FsW29mX3R5cGVdLmFwcGVuZCh7CisgICAgICAgICAgICAg ICAgICAgICAgICAnc3FsJzogc3FsLCAnZGF0YSc6IGRhdGEsCisgICAgICAgICAgICAgICAgICAg ICAgICAnY2xpZW50X3Jvdyc6IHRtcF9yb3dfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg ICAnc2VsZWN0X3NxbCc6IHNlbGVjdF9zcWwKKyAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAg ICAgICAgICAgICAgICAgIyBSZXNldCBjb2x1bW4gZGF0YQorICAgICAgICAgICAgICAgICAgICBj b2x1bW5fZGF0YSA9IHt9CisKKyAgICAgICAgICAgICMgRm9yIHVwZGF0ZWQgcm93cworICAgICAg ICAgICAgZWxpZiBvZl90eXBlID09ICd1cGRhdGVkJzoKKyAgICAgICAgICAgICAgICBsaXN0X29m X3NxbFtvZl90eXBlXSA9IFtdCisgICAgICAgICAgICAgICAgZm9yIGVhY2hfcm93IGluIGNoYW5n ZWRfZGF0YVtvZl90eXBlXToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGNoYW5nZWRfZGF0 YVtvZl90eXBlXVtlYWNoX3Jvd11bJ2RhdGEnXQorICAgICAgICAgICAgICAgICAgICBwa19lc2Nh cGVkID0geworICAgICAgICAgICAgICAgICAgICAgICAgcGs6IHBrX3ZhbC5yZXBsYWNlKCclJywg JyUlJykgaWYgaGFzYXR0cigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa192YWwsICdy ZXBsYWNlJykgZWxzZSBwa192YWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwaywgcGtf dmFsIGluCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkX2RhdGFbb2ZfdHlwZV1bZWFj aF9yb3ddWydwcmltYXJ5X2tleXMnXS5pdGVtcygpCisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAg ICAgICAgICAgIi8iLmpvaW4oW2NvbW1hbmRfb2JqLnNxbF9wYXRoLCAndXBkYXRlLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfdG9fYmVfc2F2ZWQ9ZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIHBnYWRtaW5fYWxpYXM9cGdhZG1pbl9hbGlhcywKKyAgICAgICAgICAg ICAgICAgICAgICAgIHByaW1hcnlfa2V5cz1wa19lc2NhcGVkLAorICAgICAgICAgICAgICAgICAg ICAgICAgb2JqZWN0X25hbWU9Y29tbWFuZF9vYmoub2JqZWN0X25hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICBuc3BfbmFtZT1jb21tYW5kX29iai5uc3BfbmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGFfdHlwZT1jb2x1bW5fdHlwZQorICAgICAgICAgICAgICAgICAgICApCisg ICAgICAgICAgICAgICAgICAgIGxpc3Rfb2Zfc3FsW29mX3R5cGVdLmFwcGVuZCh7J3NxbCc6IHNx bCwgJ2RhdGEnOiBkYXRhfSkKKyAgICAgICAgICAgICAgICAgICAgbGlzdF9vZl9yb3dpZC5hcHBl bmQoZGF0YS5nZXQoY2xpZW50X3ByaW1hcnlfa2V5KSkKKworICAgICAgICAgICAgIyBGb3IgZGVs ZXRlZCByb3dzCisgICAgICAgICAgICBlbGlmIG9mX3R5cGUgPT0gJ2RlbGV0ZWQnOgorICAgICAg ICAgICAgICAgIGxpc3Rfb2Zfc3FsW29mX3R5cGVdID0gW10KKyAgICAgICAgICAgICAgICBpc19m aXJzdCA9IFRydWUKKyAgICAgICAgICAgICAgICByb3dzX3RvX2RlbGV0ZSA9IFtdCisgICAgICAg ICAgICAgICAga2V5cyA9IE5vbmUKKyAgICAgICAgICAgICAgICBub19vZl9rZXlzID0gTm9uZQor ICAgICAgICAgICAgICAgIGZvciBlYWNoX3JvdyBpbiBjaGFuZ2VkX2RhdGFbb2ZfdHlwZV06Cisg ICAgICAgICAgICAgICAgICAgIHJvd3NfdG9fZGVsZXRlLmFwcGVuZChjaGFuZ2VkX2RhdGFbb2Zf dHlwZV1bZWFjaF9yb3ddKQorICAgICAgICAgICAgICAgICAgICAjIEZldGNoIHRoZSBrZXlzIGZv ciBTUUwgZ2VuZXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBpZiBpc19maXJzdDoKKyAgICAg ICAgICAgICAgICAgICAgICAgICMgV2UgbmVlZCB0byBjb3ZlcnQgZGljdF9rZXlzIHRvIG5vcm1h bCBsaXN0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAjIFB5dGhvbjMKKyAgICAgICAgICAg ICAgICAgICAgICAgICMgSW4gUHl0aG9uMiwgaXQncyBhbHJlYWR5IGEgbGlzdCAmIFdlIHdpbGwg YWxzbworICAgICAgICAgICAgICAgICAgICAgICAgIyBmZXRjaCBjb2x1bW4gbmFtZXMgdXNpbmcg aW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleXMgPSBsaXN0KAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNoYW5nZWRfZGF0YVtvZl90eXBlXVtlYWNoX3Jvd10ua2V5cygpCisg ICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBub19vZl9r ZXlzID0gbGVuKGtleXMpCisgICAgICAgICAgICAgICAgICAgICAgICBpc19maXJzdCA9IEZhbHNl CisgICAgICAgICAgICAgICAgIyBNYXAgaW5kZXggd2l0aCBjb2x1bW4gbmFtZSBmb3IgZWFjaCBy b3cKKyAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJvd3NfdG9fZGVsZXRlOgorICAgICAgICAg ICAgICAgICAgICBmb3IgaywgdiBpbiByb3cuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAg ICAgICMgU2V0IHByaW1hcnkga2V5IHdpdGggbGFiZWwgJiBkZWxldGUgaW5kZXggYmFzZWQKKyAg ICAgICAgICAgICAgICAgICAgICAgICMgbWFwcGVkIGtleQorICAgICAgICAgICAgICAgICAgICAg ICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1tjaGFuZ2VkX2RhdGFbJ2Nv bHVtbnMnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW50 KGspXVsnbmFtZSddXSA9IHYKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVy cm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAg ICAgICAgICAgICBkZWwgcm93W2tdCisKKyAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtjb21tYW5kX29iai5zcWxfcGF0 aCwgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgIGRhdGE9cm93c190b19kZWxl dGUsCisgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5X2xhYmVscz1rZXlzLAorICAgICAg ICAgICAgICAgICAgICBub19vZl9rZXlzPW5vX29mX2tleXMsCisgICAgICAgICAgICAgICAgICAg IG9iamVjdF9uYW1lPWNvbW1hbmRfb2JqLm9iamVjdF9uYW1lLAorICAgICAgICAgICAgICAgICAg ICBuc3BfbmFtZT1jb21tYW5kX29iai5uc3BfbmFtZQorICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICAgICBsaXN0X29mX3NxbFtvZl90eXBlXS5hcHBlbmQoeydzcWwnOiBzcWwsICdkYXRh Jzoge319KQorCisgICAgICAgIGZvciBvcHIsIHNxbHMgaW4gbGlzdF9vZl9zcWwuaXRlbXMoKToK KyAgICAgICAgICAgIGZvciBpdGVtIGluIHNxbHM6CisgICAgICAgICAgICAgICAgaWYgaXRlbVsn c3FsJ106CisgICAgICAgICAgICAgICAgICAgIGl0ZW1bJ2RhdGEnXSA9IHsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHBnYWRtaW5fYWxpYXNba10gaWYgayBpbiBwZ2FkbWluX2FsaWFzIGVsc2Ug azogdgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gaXRlbVsnZGF0YSddLml0 ZW1zKCkKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHJvd19h ZGRlZCA9IE5vbmUKKworICAgICAgICAgICAgICAgICAgICBkZWYgZmFpbHVyZV9oYW5kbGUocmVz KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzX3NhdmVwb2ludDoKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25uLmV4ZWN1dGVfdm9pZCgnUk9MTEJBQ0sgVE8gU0FWRVBPSU5U ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2F2ZV9k YXRhOycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJ1F1ZXJ5IFJPTExCQUNL LCBidXQgdGhlIGN1cnJlbnQgJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J3RyYW5zYWN0aW9uIGlzIHN0aWxsIG9uZ29pbmcuJworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlcyArPSAnIFNhdmluZyBST0xMQkFDSywgYnV0IHRoZSBjdXJyZW50ICcgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNhY3Rpb24gaXMgc3RpbGwgb25nb2lu ZycKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29ubi5leGVjdXRlX3ZvaWQoJ1JPTExCQUNLOycpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbXNnID0gJ1RyYW5zYWN0aW9uIFJPTExCQUNLJworICAgICAgICAgICAgICAgICAg ICAgICAgIyBJZiB3ZSByb2xsIGJhY2tlZCBldmVyeSB0aGluZyB0aGVuIHVwZGF0ZSB0aGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICMgbWVzc2FnZSBmb3IgZWFjaCBzcWwgcXVlcnkuCisgICAg ICAgICAgICAgICAgICAgICAgICBmb3IgdmFsIGluIHF1ZXJ5X3JlczoKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiBxdWVyeV9yZXNbdmFsXVsnc3RhdHVzJ106CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHF1ZXJ5X3Jlc1t2YWxdWydyZXN1bHQnXSA9IG1zZworCisgICAg ICAgICAgICAgICAgICAgICAgICAjIElmIGxpc3QgaXMgZW1wdHkgc2V0IHJvd2lkIHRvIDEKKyAg ICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBsaXN0X29mX3Jvd2lkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcm93aWQg PSBsaXN0X29mX3Jvd2lkW2NvdW50XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9yb3dpZCA9IDEKKyAgICAgICAgICAg ICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX3Jvd2lkID0gMAorCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzLCBy ZXMsIHF1ZXJ5X3JlcywgX3Jvd2lkLFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19j b21taXRfcmVxdWlyZWQKKworICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg ICAgICAgICAgICAjIEZldGNoIG9pZHMvcHJpbWFyeSBrZXlzCisgICAgICAgICAgICAgICAgICAg ICAgICBpZiAnc2VsZWN0X3NxbCcgaW4gaXRlbSBhbmQgaXRlbVsnc2VsZWN0X3NxbCddOgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3Qo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bJ3NxbCddLCBpdGVtWydkYXRh J10pCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX3ZvaWQoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGl0ZW1bJ3NxbCddLCBpdGVtWydkYXRhJ10pCisgICAgICAgICAgICAg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgXzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZh aWx1cmVfaGFuZGxlKHJlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAg ICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBmYWlsdXJlX2hhbmRsZShyZXMpCisKKyAgICAgICAgICAgICAgICAgICAgIyBTZWxlY3Qg YWRkZWQgcm93IGZyb20gdGhlIHRhYmxlCisgICAgICAgICAgICAgICAgICAgIGlmICdzZWxlY3Rf c3FsJyBpbiBpdGVtOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBzZWxfcmVzID0g Y29ubi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVsnc2Vs ZWN0X3NxbCddLCByZXNbJ3Jvd3MnXVswXSkKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc19zYXZlcG9pbnQ6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4uZXhlY3V0ZV92b2lkKCdST0xM QkFDSyBUTyBTQVZFUE9JTlQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcgc2F2ZV9kYXRhOycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1zZyA9ICdRdWVyeSBST0xMQkFDSywgdGhlIGN1cnJlbnQnIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJyB0cmFuc2FjdGlvbiBpcyBzdGlsbCBvbmdvaW5nLicK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25uLmV4ZWN1dGVfdm9pZCgnUk9MTEJBQ0s7JykKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbXNnID0gJ1RyYW5zYWN0aW9uIFJPTExCQUNLJworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgSWYgd2Ugcm9sbCBiYWNrZWQgZXZlcnkgdGhpbmcgdGhlbiB1 cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBtZXNzYWdlIGZvciBlYWNo IHNxbCBxdWVyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdmFsIGluIHF1ZXJ5 X3JlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcXVlcnlfcmVzW3ZhbF1b J3N0YXR1cyddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlfcmVz W3ZhbF1bJ3Jlc3VsdCddID0gbXNnCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElm IGxpc3QgaXMgZW1wdHkgc2V0IHJvd2lkIHRvIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpc3Rfb2Zfcm93aWQ6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcm93aWQgPSBsaXN0X29mX3Jv d2lkW2NvdW50XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Jvd2lkID0gMQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF9yb3dpZCA9IDAKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBz dGF0dXMsIHNlbF9yZXMsIHF1ZXJ5X3JlcywgX3Jvd2lkLFwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaXNfY29tbWl0X3JlcXVpcmVkCisKKyAgICAgICAgICAgICAgICAgICAgICAg IGlmICdyb3dzJyBpbiBzZWxfcmVzIGFuZCBsZW4oc2VsX3Jlc1sncm93cyddKSA+IDA6CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcm93X2FkZGVkID0geworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpdGVtWydjbGllbnRfcm93J106IHNlbF9yZXNbJ3Jvd3MnXVswXX0KKwor ICAgICAgICAgICAgICAgICAgICByb3dzX2FmZmVjdGVkID0gY29ubi5yb3dzX2FmZmVjdGVkKCkK KyAgICAgICAgICAgICAgICAgICAgIyBzdG9yZSB0aGUgcmVzdWx0IG9mIGVhY2ggcXVlcnkgaW4g ZGljdGlvbmFyeQorICAgICAgICAgICAgICAgICAgICBxdWVyeV9yZXNbY291bnRdID0geworICAg ICAgICAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6IHN0YXR1cywKKyAgICAgICAgICAgICAgICAg ICAgICAgICdyZXN1bHQnOiBOb25lIGlmIHJvd19hZGRlZCBlbHNlIHJlcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICdzcWwnOiBpdGVtWydzcWwnXSwgJ3Jvd3NfYWZmZWN0ZWQnOiByb3dzX2Fm ZmVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvd19hZGRlZCc6IHJvd19hZGRlZAor ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQor CisgICAgICAgICMgQ29tbWl0IHRoZSB0cmFuc2FjdGlvbiBpZiBubyBlcnJvciBpcyBmb3VuZCAm IGF1dG9jb21taXQgaXMgYWN0aXZhdGVkCisgICAgICAgIGlmIGF1dG9fY29tbWl0OgorICAgICAg ICAgICAgY29ubi5leGVjdXRlX3ZvaWQoJ0NPTU1JVDsnKQorICAgICAgICBlbHNlOgorICAgICAg ICAgICAgaXNfY29tbWl0X3JlcXVpcmVkID0gVHJ1ZQorCisgICAgcmV0dXJuIHN0YXR1cywgcmVz LCBxdWVyeV9yZXMsIF9yb3dpZCwgaXNfY29tbWl0X3JlcXVpcmVkCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvc3RhcnRfcnVubmluZ19xdWVyeS5weSBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9zdGFydF9ydW5uaW5nX3F1ZXJ5LnB5Cmlu ZGV4IGE1Mzk5Nzc0Li5lY2UxMWY5YyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc3Fs ZWRpdG9yL3V0aWxzL3N0YXJ0X3J1bm5pbmdfcXVlcnkucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9v bHMvc3FsZWRpdG9yL3V0aWxzL3N0YXJ0X3J1bm5pbmdfcXVlcnkucHkKQEAgLTQ1LDYgKzQ1LDkg QEAgY2xhc3MgU3RhcnRSdW5uaW5nUXVlcnk6CiAgICAgICAgIGlmIHR5cGUoc2Vzc2lvbl9vYmop IGlzIFJlc3BvbnNlOgogICAgICAgICAgICAgcmV0dXJuIHNlc3Npb25fb2JqCiAKKyAgICAgICAg IyBSZW1vdmUgYW55IGV4aXN0aW5nIHByaW1hcnkga2V5cyBpbiBzZXNzaW9uX29iagorICAgICAg ICBzZXNzaW9uX29iai5wb3AoJ3ByaW1hcnlfa2V5cycsIE5vbmUpCisKICAgICAgICAgdHJhbnNh Y3Rpb25fb2JqZWN0ID0gcGlja2xlLmxvYWRzKHNlc3Npb25fb2JqWydjb21tYW5kX29iaiddKQog ICAgICAgICBjYW5fZWRpdCA9IEZhbHNlCiAgICAgICAgIGNhbl9maWx0ZXIgPSBGYWxzZQpkaWZm IC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvY2FsbF9yZW5kZXJf YWZ0ZXJfcG9sbF9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3Iv Y2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbF9zcGVjLmpzCmluZGV4IGQ2OGY1ZWUxLi44ZjMwYzEwYyAx MDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvY2FsbF9yZW5k ZXJfYWZ0ZXJfcG9sbF9zcGVjLmpzCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3Fs ZWRpdG9yL2NhbGxfcmVuZGVyX2FmdGVyX3BvbGxfc3BlYy5qcwpAQCAtMjMsNiArMjMsNyBAQCBk ZXNjcmliZSgnI2NhbGxSZW5kZXJBZnRlclBvbGwnLCAoKSA9PiB7CiAgICAgICB1cGRhdGVfbXNn X2hpc3Rvcnk6IGphc21pbmUuY3JlYXRlU3B5KCdTUUxFZGl0b3IudXBkYXRlX21zZ19oaXN0b3J5 JyksCiAgICAgICBkaXNhYmxlX3Rvb2xfYnV0dG9uczogamFzbWluZS5jcmVhdGVTcHkoJ1NRTEVk aXRvci5kaXNhYmxlX3Rvb2xfYnV0dG9ucycpLAogICAgICAgZGlzYWJsZV90cmFuc2FjdGlvbl9i dXR0b25zOiBqYXNtaW5lLmNyZWF0ZVNweSgnU1FMRWRpdG9yLmRpc2FibGVfdHJhbnNhY3Rpb25f YnV0dG9ucycpLAorICAgICAgcmVzZXRfZGF0YV9zdG9yZTogamFzbWluZS5jcmVhdGVTcHkoJ1NR TEVkaXRvci5yZXNldF9kYXRhX3N0b3JlJyksCiAgICAgICBxdWVyeV9zdGFydF90aW1lOiBuZXcg RGF0ZSgpLAogICAgIH07CiAgICAgYWxlcnRpZnkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYWxl cnRpZnknLCBbJ3N1Y2Nlc3MnXSk7CkBAIC0zNyw3ICszOCw3IEBAIGRlc2NyaWJlKCcjY2FsbFJl bmRlckFmdGVyUG9sbCcsICgpID0+IHsKICAgICAgIHNxbEVkaXRvclNweS5pc19xdWVyeV90b29s ID0gZmFsc2U7CiAgICAgfSk7CiAKLSAgICBkZXNjcmliZSgncXVlcnkgd2FzIHN1Y2Nlc3NmdWwg YnV0IGhhZCBubyByZXN1bHQgdG8gZGlzcGxheScsICgpID0+IHsKKyAgICBkZXNjcmliZSgncXVl cnkgd2FzIHN1Y2Nlc3NmdWwgYW5kIGhhdmUgcmVzdWx0cycsICgpID0+IHsKICAgICAgIGJlZm9y ZUVhY2goKCkgPT4gewogICAgICAgICBxdWVyeVJlc3VsdCA9IHsKICAgICAgICAgICByb3dzX2Fm ZmVjdGVkOiAxMCwKQEAgLTY1LDcgKzY2LDcgQEAgZGVzY3JpYmUoJyNjYWxsUmVuZGVyQWZ0ZXJQ b2xsJywgKCkgPT4gewogICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBkZXNjcmliZSgncXVlcnkg d2FzIHN1Y2Nlc3NmdWwgYW5kIGhhdmUgcmVzdWx0cycsICgpID0+IHsKKyAgICBkZXNjcmliZSgn cXVlcnkgd2FzIHN1Y2Nlc3NmdWwgYnV0IGhhZCBubyByZXN1bHQgdG8gZGlzcGxheScsICgpID0+ IHsKICAgICAgIGJlZm9yZUVhY2goKCkgPT4gewogICAgICAgICBxdWVyeVJlc3VsdCA9IHsKICAg ICAgICAgICByb3dzX2FmZmVjdGVkOiAxMCwKQEAgLTgxLDEwICs4MiwxNiBAQCBkZXNjcmliZSgn I2NhbGxSZW5kZXJBZnRlclBvbGwnLCAoKSA9PiB7CiAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JT cHkudXBkYXRlX21zZ19oaXN0b3J5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKICAgICAgICAgICB0 cnVlLAogICAgICAgICAgICdTb21lIHJlc3VsdFxuXG5RdWVyeSByZXR1cm5lZCBzdWNjZXNzZnVs bHkgaW4gMCBtc2VjLicsCi0gICAgICAgICAgZmFsc2UKKyAgICAgICAgICB0cnVlCiAgICAgICAg ICk7CiAgICAgICB9KTsKIAorICAgICAgaXQoJ3Jlc2V0cyB0aGUgY2hhbmdlZCBkYXRhIHN0b3Jl JywgKCkgPT4geworICAgICAgICBjYWxsUmVuZGVyQWZ0ZXJQb2xsKHNxbEVkaXRvclNweSwgYWxl cnRpZnksIHF1ZXJ5UmVzdWx0KTsKKworICAgICAgICBleHBlY3Qoc3FsRWRpdG9yU3B5LnJlc2V0 X2RhdGFfc3RvcmUpLnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworCiAgICAgICBpdCgn aW5mb3JtIHNxbGVkaXRvciB0aGF0IHRoZSBxdWVyeSBzdG9wcGVkIHJ1bm5pbmcnLCAoKSA9PiB7 CiAgICAgICAgIGNhbGxSZW5kZXJBZnRlclBvbGwoc3FsRWRpdG9yU3B5LCBhbGVydGlmeSwgcXVl cnlSZXN1bHQpOwogCkBAIC0xMTYsNyArMTIzLDcgQEAgZGVzY3JpYmUoJyNjYWxsUmVuZGVyQWZ0 ZXJQb2xsJywgKCkgPT4gewogICAgICAgc3FsRWRpdG9yU3B5LmlzX3F1ZXJ5X3Rvb2wgPSB0cnVl OwogICAgIH0pOwogCi0gICAgZGVzY3JpYmUoJ3F1ZXJ5IHdhcyBzdWNjZXNzZnVsIGJ1dCBoYWQg bm8gcmVzdWx0IHRvIGRpc3BsYXknLCAoKSA9PiB7CisgICAgZGVzY3JpYmUoJ3F1ZXJ5IHdhcyBz dWNjZXNzZnVsIGFuZCBoYXZlIHJlc3VsdHMnLCAoKSA9PiB7CiAgICAgICBiZWZvcmVFYWNoKCgp ID0+IHsKICAgICAgICAgcXVlcnlSZXN1bHQgPSB7CiAgICAgICAgICAgcm93c19hZmZlY3RlZDog MTAsCkBAIC0xNTAsNyArMTU3LDcgQEAgZGVzY3JpYmUoJyNjYWxsUmVuZGVyQWZ0ZXJQb2xsJywg KCkgPT4gewogICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBkZXNjcmliZSgncXVlcnkgd2FzIHN1 Y2Nlc3NmdWwgYW5kIGhhdmUgcmVzdWx0cycsICgpID0+IHsKKyAgICBkZXNjcmliZSgncXVlcnkg d2FzIHN1Y2Nlc3NmdWwgYnV0IGhhZCBubyByZXN1bHQgdG8gZGlzcGxheScsICgpID0+IHsKICAg ICAgIGJlZm9yZUVhY2goKCkgPT4gewogICAgICAgICBxdWVyeVJlc3VsdCA9IHsKICAgICAgICAg ICByb3dzX2FmZmVjdGVkOiAxMCwKQEAgLTE2NiwxMCArMTczLDE2IEBAIGRlc2NyaWJlKCcjY2Fs bFJlbmRlckFmdGVyUG9sbCcsICgpID0+IHsKICAgICAgICAgZXhwZWN0KHNxbEVkaXRvclNweS51 cGRhdGVfbXNnX2hpc3RvcnkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAogICAgICAgICAgIHRydWUs CiAgICAgICAgICAgJ1NvbWUgcmVzdWx0XG5cblF1ZXJ5IHJldHVybmVkIHN1Y2Nlc3NmdWxseSBp biAwIG1zZWMuJywKLSAgICAgICAgICBmYWxzZQorICAgICAgICAgIHRydWUKICAgICAgICAgKTsK ICAgICAgIH0pOwogCisgICAgICBpdCgncmVzZXRzIHRoZSBjaGFuZ2VkIGRhdGEgc3RvcmUnLCAo KSA9PiB7CisgICAgICAgIGNhbGxSZW5kZXJBZnRlclBvbGwoc3FsRWRpdG9yU3B5LCBhbGVydGlm eSwgcXVlcnlSZXN1bHQpOworCisgICAgICAgIGV4cGVjdChzcWxFZGl0b3JTcHkucmVzZXRfZGF0 YV9zdG9yZSkudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgfSk7CisKICAgICAgIGl0KCdpbmZv cm0gc3FsZWRpdG9yIHRoYXQgdGhlIHF1ZXJ5IHN0b3BwZWQgcnVubmluZycsICgpID0+IHsKICAg ICAgICAgY2FsbFJlbmRlckFmdGVyUG9sbChzcWxFZGl0b3JTcHksIGFsZXJ0aWZ5LCBxdWVyeVJl c3VsdCk7CiAKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9y L2tleWJvYXJkX3Nob3J0Y3V0c19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9z cWxlZGl0b3Iva2V5Ym9hcmRfc2hvcnRjdXRzX3NwZWMuanMKaW5kZXggZDA5NzNhNzguLjc4ODYx NWYyIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9rZXli b2FyZF9zaG9ydGN1dHNfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Nx bGVkaXRvci9rZXlib2FyZF9zaG9ydGN1dHNfc3BlYy5qcwpAQCAtMTQsNiArMTQsNyBAQCBpbXBv cnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQnOwogZGVzY3JpYmUoJ3RoZSBrZXlib2Fy ZCBzaG9ydGN1dHMnLCAoKSA9PiB7CiAgIGNvbnN0IEYxX0tFWSA9IDExMiwKICAgICBGNV9LRVkg PSAxMTYsCisgICAgRjZfS0VZID0gMTE3LAogICAgIEY3X0tFWSA9IDExOCwKICAgICBGOF9LRVkg PSAxMTksCiAgICAgUEVSSU9EX0tFWSA9IDE5MCwKQEAgLTEwOSw2ICsxMTAsMTQgQEAgZGVzY3Jp YmUoJ3RoZSBrZXlib2FyZCBzaG9ydGN1dHMnLCAoKSA9PiB7CiAgICAgICAgICAga2V5X2NvZGU6 ICdyJywKICAgICAgICAgfSwKICAgICAgIH0sCisgICAgICBzYXZlX2RhdGE6IHsKKyAgICAgICAg YWx0IDogZmFsc2UsCisgICAgICAgIHNoaWZ0OiBmYWxzZSwKKyAgICAgICAgY29udHJvbDogZmFs c2UsCisgICAgICAgIGtleTogeworICAgICAgICAgIGtleV9jb2RlOiBGNl9LRVksCisgICAgICAg IH0sCisgICAgICB9LAogICAgIH07CiAKICAgICBxdWVyeVRvb2xBY3Rpb25zU3B5ID0gamFzbWlu ZS5jcmVhdGVTcHlPYmoocXVlcnlUb29sQWN0aW9ucywgWwpAQCAtMTIxLDYgKzEzMCw3IEBAIGRl c2NyaWJlKCd0aGUga2V5Ym9hcmQgc2hvcnRjdXRzJywgKCkgPT4gewogICAgICAgJ2V4ZWN1dGVR dWVyeScsCiAgICAgICAnZXhlY3V0ZUNvbW1pdCcsCiAgICAgICAnZXhlY3V0ZVJvbGxiYWNrJywK KyAgICAgICdzYXZlRGF0YUNoYW5nZXMnLAogICAgIF0pOwogICB9KTsKIApAQCAtMTc2LDYgKzE4 Niw0MiBAQCBkZXNjcmliZSgndGhlIGtleWJvYXJkIHNob3J0Y3V0cycsICgpID0+IHsKICAgICB9 KTsKICAgfSk7CiAKKyAgZGVzY3JpYmUoJ0Y2JywgKCkgPT4geworICAgIGRlc2NyaWJlKCd3aGVu IHRoZXJlIGlzIG5vdCBhIHF1ZXJ5IGFscmVhZHkgcnVubmluZycsICgpID0+IHsKKyAgICAgIGJl Zm9yZUVhY2goKCkgPT4geworICAgICAgICBldmVudC53aGljaCA9IEY2X0tFWTsKKyAgICAgICAg ZXZlbnQuYWx0S2V5ID0gZmFsc2U7CisgICAgICAgIGV2ZW50LnNoaWZ0S2V5ID0gZmFsc2U7Cisg ICAgICAgIGV2ZW50LmN0cmxLZXkgPSBmYWxzZTsKKyAgICAgICAga2V5Ym9hcmRTaG9ydGN1dHMu cHJvY2Vzc0V2ZW50UXVlcnlUb29sKAorICAgICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHks IHF1ZXJ5VG9vbEFjdGlvbnNTcHksIGV2ZW50CisgICAgICAgICk7CisgICAgICB9KTsKKworICAg ICAgaXQoJ3Nob3VsZCBzYXZlIHRoZSBjaGFuZ2VkIGRhdGEnLCAoKSA9PiB7CisgICAgICAgIGV4 cGVjdChxdWVyeVRvb2xBY3Rpb25zU3B5LnNhdmVEYXRhQ2hhbmdlcykudG9IYXZlQmVlbkNhbGxl ZFdpdGgoc3FsRWRpdG9yQ29udHJvbGxlclNweSk7CisgICAgICB9KTsKKworICAgICAgZXhwZWN0 RXZlbnRQcm9wYWdhdGlvblRvU3RvcCgpOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ3doZW4g dGhlIHF1ZXJ5IGlzIGFscmVhZHkgcnVubmluZycsICgpID0+IHsKKyAgICAgIGl0KCdkb2VzIG5v dGhpbmcnLCAoKSA9PiB7CisgICAgICAgIGV2ZW50LmtleUNvZGUgPSBGNl9LRVk7CisgICAgICAg IGV2ZW50LmFsdEtleSA9IGZhbHNlOworICAgICAgICBldmVudC5zaGlmdEtleSA9IGZhbHNlOwor ICAgICAgICBldmVudC5jdHJsS2V5ID0gZmFsc2U7CisgICAgICAgIHNxbEVkaXRvckNvbnRyb2xs ZXJTcHkuaXNRdWVyeVJ1bm5pbmcuYW5kLnJldHVyblZhbHVlKHRydWUpOworCisgICAgICAgIGtl eWJvYXJkU2hvcnRjdXRzLnByb2Nlc3NFdmVudFF1ZXJ5VG9vbCgKKyAgICAgICAgICBzcWxFZGl0 b3JDb250cm9sbGVyU3B5LCBxdWVyeVRvb2xBY3Rpb25zU3B5LCBldmVudAorICAgICAgICApOwor CisgICAgICAgIGV4cGVjdChxdWVyeVRvb2xBY3Rpb25zU3B5LnNhdmVEYXRhQ2hhbmdlcykubm90 LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKwogICBkZXNj cmliZSgnRjcnLCAoKSA9PiB7CiAgICAgZGVzY3JpYmUoJ3doZW4gdGhlcmUgaXMgbm90IGEgcXVl cnkgYWxyZWFkeSBydW5uaW5nJywgKCkgPT4gewogICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CmRp ZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weSBiL3dlYi9yZWdyZXNzaW9uL3J1 bnRlc3RzLnB5CmluZGV4IDFkNGZhNTRiLi5iZDlmZmQ2NyAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jl c3Npb24vcnVudGVzdHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkKQEAgLTIz Myw2ICsyMzMsNyBAQCBkZWYgZ2V0X3Rlc3RfbW9kdWxlcyhhcmd1bWVudHMpOgogICAgICAgICAg ICAgICAgICAgICBpZiB0ZXN0X3NldHVwLmNvbmZpZ19kYXRhWydoZWFkbGVzc19jaHJvbWUnXToK ICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYWRkX2FyZ3VtZW50KCItLWhlYWRsZXNz IikKICAgICAgICAgICAgIG9wdGlvbnMuYWRkX2FyZ3VtZW50KCItLXdpbmRvdy1zaXplPTEyODAs MTAyNCIpCisgICAgICAgICAgICBvcHRpb25zLmFkZF9hcmd1bWVudCgiLS1kaXNhYmxlLWluZm9i YXJzIikKICAgICAgICAgICAgIG9wdGlvbnMuYWRkX2V4cGVyaW1lbnRhbF9vcHRpb24oJ3czYycs IEZhbHNlKQogICAgICAgICAgICAgZHJpdmVyID0gd2ViZHJpdmVyLkNocm9tZShjaHJvbWVfb3B0 aW9ucz1vcHRpb25zKQogCg== --000000000000ef7335058ca3825a--