<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>66325</bug_id>
          
          <creation_ts>2011-08-16 13:40:59 -0700</creation_ts>
          <short_desc>REGRESSION(92717): WinPort needs to parse version information from port_name</short_desc>
          <delta_ts>2011-08-16 16:30:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>451829</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-16 13:40:59 -0700</bug_when>
    <thetext>REGRESSION(92717): WinPort needs to parse version information from port_name

Since it doesn&apos;t, and always falls back to version detection instead, this BaselineOptimizer test fails on Windows:

======================================================================
FAIL: test_complex_shadowing (webkitpy.common.checkout.baselineoptimizer_unittest.BaselineOptimizerTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;/home/buildbot/slave/WebKit-BuildSlave/win-release-tests/build/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py&quot;, line 149, in test_complex_shadowing
    &apos;LayoutTests/platform/chromium-linux&apos;: &apos;f52fcdde9e4be8bd5142171cd859230bd4471036&apos;
  File &quot;/home/buildbot/slave/WebKit-BuildSlave/win-release-tests/build/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py&quot;, line 51, in _assertOptimization
    self.assertEqual(new_results_by_directory, expected_new_results_by_directory)
AssertionError: {&apos;LayoutTests/platform/win-7sp0&apos;: &apos;5b1253ef4d5094530d5f1bc6cdb95c90b446bec7&apos;, &apos;LayoutTests/platform/chromium-win&apos;: &apos;462d03b9c025db1b0392d7453310dbee5f9a9e74&apos;, &apos;LayoutTests/platform/mac&apos;: &apos;5daa78e55f05d9f0d1bb1f32b0cd1bc3a01e9364&apos;, &apos;LayoutTests/platform/chromium-win-xp&apos;: &apos;462d03b9c025db1b0392d7453310dbee5f9a9e74&apos;, &apos;LayoutTests/platform/chromium-mac-leopard&apos;: &apos;65e7d42f8b4882b29d46dc77bb879dd41bc074dc&apos;, &apos;LayoutTests/platform/mac-leopard&apos;: &apos;7ad045ece7c030e2283c5d21d9587be22bcba56e&apos;, &apos;LayoutTests/platform/chromium-win-vista&apos;: &apos;f83af9732ce74f702b8c9c4a3d9a4c6636b8d3bd&apos;, &apos;LayoutTests/platform/chromium-linux&apos;: &apos;f52fcdde9e4be8bd5142171cd859230bd4471036&apos;} != {&apos;LayoutTests/platform/mac-leopard&apos;: &apos;7ad045ece7c030e2283c5d21d9587be22bcba56e&apos;, &apos;LayoutTests/platform/chromium-win-vista&apos;: &apos;f83af9732ce74f702b8c9c4a3d9a4c6636b8d3bd&apos;, &apos;LayoutTests/platform/chromium-win&apos;: &apos;462d03b9c025db1b0392d7453310dbee5f9a9e74&apos;, &apos;LayoutTests/platform/mac&apos;: &apos;5daa78e55f05d9f0d1bb1f32b0cd1bc3a01e9364&apos;, &apos;LayoutTests/platform/win&apos;: &apos;5b1253ef4d5094530d5f1bc6cdb95c90b446bec7&apos;, &apos;LayoutTests/platform/chromium-linux&apos;: &apos;f52fcdde9e4be8bd5142171cd859230bd4471036&apos;, &apos;LayoutTests/platform/chromium-win-xp&apos;: &apos;462d03b9c025db1b0392d7453310dbee5f9a9e74&apos;, &apos;LayoutTests/platform/chromium-mac-leopard&apos;: &apos;65e7d42f8b4882b29d46dc77bb879dd41bc074dc&apos;}

----------------------------------------------------------------------

To fix the test, we&apos;ll need to add version parsing, as well as a win-future rule to BaselineOptimizer:

    hypergraph[&apos;win-future&apos;] = [&apos;LayoutTests/platform/win-future&apos;, &apos;LayoutTests/platform/win&apos;, &apos;LayoutTests/platform/mac&apos;, &apos;LayoutTests&apos;]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451833</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-16 13:42:07 -0700</bug_when>
    <thetext>This is a pretty-print result of test failure:

AssertionError:
{
    &apos;LayoutTests/platform/chromium-linux&apos;: &apos;f52fcdde9e4be8bd5142171cd859230bd4471036&apos;
    &apos;LayoutTests/platform/chromium-mac-leopard&apos;: &apos;65e7d42f8b4882b29d46dc77bb879dd41bc074dc&apos;,
    &apos;LayoutTests/platform/chromium-win&apos;: &apos;462d03b9c025db1b0392d7453310dbee5f9a9e74&apos;,
    &apos;LayoutTests/platform/chromium-win-vista&apos;: &apos;f83af9732ce74f702b8c9c4a3d9a4c6636b8d3bd&apos;,
    &apos;LayoutTests/platform/chromium-win-xp&apos;: &apos;462d03b9c025db1b0392d7453310dbee5f9a9e74&apos;,
    &apos;LayoutTests/platform/mac&apos;: &apos;5daa78e55f05d9f0d1bb1f32b0cd1bc3a01e9364&apos;,
    &apos;LayoutTests/platform/mac-leopard&apos;: &apos;7ad045ece7c030e2283c5d21d9587be22bcba56e&apos;,
    &apos;LayoutTests/platform/win-7sp0&apos;: &apos;5b1253ef4d5094530d5f1bc6cdb95c90b446bec7&apos;,

} !=
{
    &apos;LayoutTests/platform/chromium-linux&apos;: &apos;f52fcdde9e4be8bd5142171cd859230bd4471036&apos;,
    &apos;LayoutTests/platform/chromium-mac-leopard&apos;: &apos;65e7d42f8b4882b29d46dc77bb879dd41bc074dc&apos;
    &apos;LayoutTests/platform/chromium-win&apos;: &apos;462d03b9c025db1b0392d7453310dbee5f9a9e74&apos;,
    &apos;LayoutTests/platform/chromium-win-vista&apos;: &apos;f83af9732ce74f702b8c9c4a3d9a4c6636b8d3bd&apos;,
    &apos;LayoutTests/platform/chromium-win-xp&apos;: &apos;462d03b9c025db1b0392d7453310dbee5f9a9e74&apos;,
    &apos;LayoutTests/platform/mac&apos;: &apos;5daa78e55f05d9f0d1bb1f32b0cd1bc3a01e9364&apos;,
    &apos;LayoutTests/platform/mac-leopard&apos;: &apos;7ad045ece7c030e2283c5d21d9587be22bcba56e&apos;,
    &apos;LayoutTests/platform/win&apos;: &apos;5b1253ef4d5094530d5f1bc6cdb95c90b446bec7&apos;,
}

(I generated that manually using TextMate.  I wish there was a way to configure python unittest to pretty -print nicer. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451903</commentid>
    <comment_count>2</comment_count>
      <attachid>104098</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-16 15:13:25 -0700</bug_when>
    <thetext>Created attachment 104098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451967</commentid>
    <comment_count>3</comment_count>
      <attachid>104098</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 16:30:25 -0700</bug_when>
    <thetext>Comment on attachment 104098
Patch

Clearing flags on attachment: 104098

Committed r93176: &lt;http://trac.webkit.org/changeset/93176&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451968</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 16:30:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104098</attachid>
            <date>2011-08-16 15:13:25 -0700</date>
            <delta_ts>2011-08-16 16:30:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66325-20110816151324.patch</filename>
            <type>text/plain</type>
            <size>47899</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMxNTEKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNjVmZTM5OGM4MzZlODgwZGU2MDgyYzdjNDkzOWJmYTIz
NmNiNzkxLi5kOTdkMDY1NDU5ZjRjZDlkNDNhYmIyMzZmODVhNGQwNzE2NGExZjg4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTEtMDgtMTYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJFR1JFU1NJT04oOTI3MTcpOiBXaW5Qb3J0IG5lZWRzIHRvIHBhcnNlIHZlcnNpb24gaW5mb3Jt
YXRpb24gZnJvbSBwb3J0X25hbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY2MzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2luUG9ydCBkaWRuJ3QgaGF2ZSBhbnkgcG9ydF9uYW1lIHBhcnNpbmcgbG9n
aWMuCisgICAgICAgIFNlZW1lZCBpdCB3YXMgYmVzdCB0byBqdXN0IHNoYXJlIHRoZSBsb2dpYyBm
cm9tIE1hY1BvcnQuCisgICAgICAgIFNoYXJpbmcgdGhlIGxvZ2ljIGZyb20gTWFjUG9ydCBzZWVt
ZWQgZWFzaWVzdCB3aXRoIGEgc2hhcmVkIHN1cGVyY2xhc3MuCisgICAgICAgIE9uY2UgSSBjcmVh
dGVkIEFwcGxlUG9ydCAodGhlIHN1cGVyY2xhc3MpIHRoZXJlIHdhcyBhIGJ1bmNoIG9mIGxvZ2lj
IHRvIHNoYXJlLgorICAgICAgICBJIGZvdW5kIExlYWtEZXRlY3RvciB3YXMganVzdCBpbiB0aGUg
d2F5IHdoZW4gc3dpdGNoaW5nIGJhY2sgYW5kIGZvcnRoCisgICAgICAgIGJldHdlZW4gd2luLnB5
IGFuZCBtYWMucHkgc28gSSBtb3ZlZCBpdCBpbnRvIGl0cyBvd24gZmlsZS4KKworICAgICAgICBU
aGUgb25seSBsb2dpYyBjaGFuZ2UgaGVyZSBpcyB0aGF0IFdpblBvcnQgc2hvdWxkIG5vdyBiZQor
ICAgICAgICBhYmxlIHRvIHBhcnNlIHBvcnRfbmFtZSB2YWx1ZXMgbGlrZSBNYWNQb3J0IChhbmQg
b3RoZXIgcG9ydHMpCisgICAgICAgIGNhbi4gIFRoZSBmYWN0IHRoYXQgcG9ydHMgZG8gdGhpcyBp
biB0aGVpciBjb25zdHJ1Y3RvcnMgaXMKKyAgICAgICAgd3JvbmcgYW5kIGEgc291cmNlIG9mIG1h
bnkgYnVncy4gIEJ1dCBhdCBsZWFzdCBub3cgV2luUG9ydAorICAgICAgICBtYXRjaGVzIHRoZSBz
dGF0dXMtcXVvLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9hcHBsZS5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9sZWFrZGV0ZWN0b3IucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbGVha2RldGVjdG9yX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNh
c2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW4u
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW5fdW5p
dHRlc3QucHk6CisKIDIwMTEtMDgtMTYgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZGluZyBUZWQgImhvYmVyIiBPJ0Nvbm5vciBhcyBhIG5vbi1jb21taXR0aW5n
IGNvbnRyaWJ1dG9yLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9hcHBsZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYXBwbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ3NzE4NGYxNWZhNjA4YWRjN2UyYWFkODllZWJh
N2I3NWU1NzkxNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYXBwbGUucHkKQEAgLTAsMCArMSw5NyBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgR29vZ2xlIG5hbWUgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBv
cnQgbG9nZ2luZworCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBv
cnQgV2ViS2l0UG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29u
ZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KKworCitfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3MgQXBwbGVQb3J0KFdlYktpdFBvcnQpOgorICAg
ICIiIlNoYXJlZCBsb2dpYyBiZXR3ZWVuIGFsbCBvZiBBcHBsZSdzIHBvcnRzLiIiIgorCisgICAg
IyBUaGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSB2ZXJzaW9uIG9mIGFuIG9wZXJhdGluZyBz
eXN0ZW0KKyAgICAjIGNvcnJlc3BvbmRpbmcgdG8gdGhlICJtYWMiIG9yICJ3aW4iIGJhc2UgTGF5
b3V0VGVzdHMvcGxhdGZvcm0KKyAgICAjIGRpcmVjdG9yeS4gIEknbSBub3Qgc3VyZSB0aGlzIGNv
bmNlcHQgaXMgdmVyeSB1c2VmdWwsCisgICAgIyBidXQgaXQgZ2l2ZXMgdXMgYSB3YXkgdG8gcmVm
ZXIgdG8gZmFsbGJhY2sgcGF0aHMgKm9ubHkqIGluY2x1ZGluZworICAgICMgdGhlIGJhc2UgZGly
ZWN0b3J5LgorICAgICMgVGhpcyBpcyBtb3N0bHkgZG9uZSBiZWNhdXNlIFRlc3RDb25maWd1cmF0
aW9uIGFzc3VtZXMgdGhhdCBzZWxmLnZlcnNpb24oKQorICAgICMgd2lsbCBuZXZlciByZXR1cm4g
Tm9uZS4gKE5vbmUgd291bGQgYmUgYW5vdGhlciB3YXkgdG8gcmVwcmVzZW50IHRoaXMgY29uY2Vw
dC4pCisgICAgIyBBcHBsZSBzdXBwb3NlZGx5IGhhcyBleHBsaWNpdCAiZnV0dXJlIiByZXN1bHRz
IHdoaWNoIGFyZSBrZXB0IGluIGFuIGludGVybmFsIHJlcG9zaXRvcnkuCisgICAgIyBJdCdzIHBv
c3NpYmxlIHRoYXQgQXBwbGUgd291bGQgd2FudCB0byBmaXggdGhpcyBjb2RlIHRvIHdvcmsgYmV0
dGVyIHdpdGggdGhvc2UgcmVzdWx0cy4KKyAgICBGVVRVUkVfVkVSU0lPTiA9ICdmdXR1cmUnICAj
IEZJWE1FOiBUaGlzIHdob2xlICdmdXR1cmUnIHRoaW5nIGZlZWxzIGxpa2UgYSBoYWNrLgorCisg
ICAgZGVmIF9zdHJpcF9wb3J0X25hbWVfcHJlZml4KHNlbGYsIHBvcnRfbmFtZSk6CisgICAgICAg
ICMgQ2FsbGVycyB0cmVhdCB0aGlzIHJldHVybiB2YWx1ZSBhcyB0aGUgInZlcnNpb24iLCB3aGlj
aCBvbmx5IHdvcmtzCisgICAgICAgICMgYmVjYXVzZSBBcHBsZSBwb3J0cyB1c2UgYSBzaW1wbGUg
bmFtZS12ZXJzaW9uIHBvcnRfbmFtZSBzY2hlbWUuCisgICAgICAgICMgRklYTUU6IFRoaXMgcGFy
c2luZyB3b3VsZG4ndCBiZSBuZWVkZWQgaWYgcG9ydF9uYW1lIGhhbmRsaW5nIHdhcyBtb3ZlZCB0
byBmYWN0b3J5LnB5CisgICAgICAgICMgaW5zdGVhZCBvZiB0aGUgaW5kaXZpZHVhbCBwb3J0IGNv
bnN0cnVjdG9ycy4KKyAgICAgICAgcmV0dXJuIHBvcnRfbmFtZVtsZW4oc2VsZi5wb3J0X25hbWUg
KyAnLScpOl0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25hbWU9Tm9uZSwgb3NfdmVy
c2lvbl9zdHJpbmc9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBwb3J0X25hbWUgPSBwb3J0X25h
bWUgb3Igc2VsZi5wb3J0X25hbWUKKyAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCBw
b3J0X25hbWU9cG9ydF9uYW1lLCAqKmt3YXJncykKKworICAgICAgICAjIEZJWE1FOiBUaGlzIHNv
cnQgb2YgcGFyc2luZyBiZWxvbmdzIGluIGZhY3RvcnkucHkhCisgICAgICAgIGlmIHBvcnRfbmFt
ZSA9PSAnJXMtd2syJyAlIHNlbGYucG9ydF9uYW1lOgorICAgICAgICAgICAgcG9ydF9uYW1lID0g
c2VsZi5wb3J0X25hbWUKKyAgICAgICAgICAgICMgRklYTUU6IFRoaXMgbWF5IGJlIHdyb25nLCBz
aW5jZSBvcHRpb25zIGlzIGEgZ2xvYmFsIHByb3BlcnR5LCBhbmQgdGhlIHBvcnRfbmFtZSBpcyBz
cGVjaWZpYyB0byB0aGlzIG9iamVjdD8KKyAgICAgICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZh
dWx0KCd3ZWJraXRfdGVzdF9ydW5uZXInLCBUcnVlKQorCisgICAgICAgIGlmIHBvcnRfbmFtZSA9
PSBzZWxmLnBvcnRfbmFtZToKKyAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBzZWxmLl9kZXRl
Y3RfdmVyc2lvbihvc192ZXJzaW9uX3N0cmluZykgb3Igc2VsZi5GVVRVUkVfVkVSU0lPTgorICAg
ICAgICAgICAgc2VsZi5fbmFtZSA9IHNlbGYucG9ydF9uYW1lICsgJy0nICsgc2VsZi5fdmVyc2lv
bgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IHBvcnRfbmFtZSBpbiBzZWxmLlZF
UlNJT05fRkFMTEJBQ0tfT1JERVIsICIlcyBpcyBub3QgaW4gJXMiICUgKHBvcnRfbmFtZSwgc2Vs
Zi5WRVJTSU9OX0ZBTExCQUNLX09SREVSKQorICAgICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHNl
bGYuX3N0cmlwX3BvcnRfbmFtZV9wcmVmaXgocG9ydF9uYW1lKQorCisgICAgIyBGSVhNRTogQSBt
b3JlIHNvcGhpc2l0Y2F0ZWQgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBtb3ZlIHRv
IFdlYktpdFBvcnQgYW5kIHJlcGxhY2UgYWxsIGNhbGxzIHRvIG5hbWUoKS4KKyAgICBkZWYgX3Bv
cnRfbmFtZV93aXRoX3ZlcnNpb24oc2VsZik6CisgICAgICAgIGNvbXBvbmVudHMgPSBbc2VsZi5w
b3J0X25hbWVdCisgICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gc2VsZi5GVVRVUkVfVkVSU0lP
TjoKKyAgICAgICAgICAgIGNvbXBvbmVudHMuYXBwZW5kKHNlbGYuX3ZlcnNpb24pCisgICAgICAg
IHJldHVybiAnLScuam9pbihjb21wb25lbnRzKQorCisgICAgZGVmIF9nZW5lcmF0ZV9hbGxfdGVz
dF9jb25maWd1cmF0aW9ucyhzZWxmKToKKyAgICAgICAgY29uZmlndXJhdGlvbnMgPSBbXQorICAg
ICAgICBmb3IgcG9ydF9uYW1lIGluIHNlbGYuVkVSU0lPTl9GQUxMQkFDS19PUkRFUjoKKyAgICAg
ICAgICAgIGlmICctJyBpbiBwb3J0X25hbWU6CisgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHNl
bGYuX3N0cmlwX3BvcnRfbmFtZV9wcmVmaXgocG9ydF9uYW1lKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAjIFRoZSB2ZXJzaW9uIGZvciB0aGUgImJhc2UiIHBvcnQgaXMgY3Vy
cmVudGx5IGRlZmluZWQgYXMgImZ1dHVyZSIKKyAgICAgICAgICAgICAgICAjIHNpbmNlIFRlc3RD
b25maWd1cmF0aW9uIGRvZXNuJ3QgYWxsb3cgTm9uZSBhcyBhIHZhbGlkIHZlcnNpb24uCisgICAg
ICAgICAgICAgICAgdmVyc2lvbiA9IHNlbGYuRlVUVVJFX1ZFUlNJT04KKworICAgICAgICAgICAg
Zm9yIGJ1aWxkX3R5cGUgaW4gc2VsZi5BTExfQlVJTERfVFlQRVM6CisgICAgICAgICAgICAgICAg
IyBXaW4gYW5kIE1hYyBwb3J0cyBib3RoIGhhcHBlbiB0byBvbmx5IGV4aXN0IG9uIHg4NiBhcmNo
aXRlY3R1cmVzIGFuZCBhbHdheXMgdXNlIGNwdSBncmFwaGljcyAoZ3B1IGdyYXBoaWNzIGlzIGEg
Y2hyb21pdW0tb25seSBoYWNrKS4KKyAgICAgICAgICAgICAgICAjIEJ1dCBhdCBzb21lIGxhdGVy
IHBvaW50IHdlIG1heSBuZWVkIHRvIG1ha2UgdGhlc2UgY29uZmlndXJhYmxlIGJ5IHRoZSBNYWNQ
b3J0IGFuZCBXaW5Qb3J0IHN1YmNsYXNzZXMuCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlv
bnMuYXBwZW5kKFRlc3RDb25maWd1cmF0aW9uKHZlcnNpb249dmVyc2lvbiwgYXJjaGl0ZWN0dXJl
PSd4ODYnLCBidWlsZF90eXBlPWJ1aWxkX3R5cGUsIGdyYXBoaWNzX3R5cGU9J2NwdScpKQorICAg
ICAgICByZXR1cm4gY29uZmlndXJhdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbGVha2RldGVjdG9yLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9sZWFrZGV0ZWN0b3IucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E2
MDBlMDE3NGFmNDg0NjNjN2ZiNjQ4ODc1ZTg2Y2IwMTMwZDVmNwotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbGVha2RldGVjdG9yLnB5
CkBAIC0wLDAgKzEsMTQzIEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBHb29nbGUgbmFtZSBub3Ig
dGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCByZQorCitmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorCisKKyMgSWYgb3Ro
ZXIgcG9ydHMvcGxhdGZvcm1zIGRlY2lkZSB0byBzdXBwb3J0IC0tbGVha3MsIHdlIHNob3VsZCBz
ZWUgYWJvdXQgc2hhcmluZyBhcyBtdWNoIG9mIHRoaXMgY29kZSBhcyBwb3NzaWJsZS4KKyMgUmln
aHQgbm93IHRoaXMgY29kZSBpcyBvbmx5IHVzZWQgYnkgQXBwbGUncyBNYWNQb3J0LgorCitjbGFz
cyBMZWFrRGV0ZWN0b3Iob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCk6Cisg
ICAgICAgICMgV2Ugc2hvdWxkIG9wZXJhdGUgb24gYSAicGxhdGZvcm0iIG5vdCBhIHBvcnQgaGVy
ZS4KKyAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0g
cG9ydC5fZXhlY3V0aXZlCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0Ll9maWxlc3lz
dGVtCisKKyAgICAjIFdlIGV4Y2x1ZGUgdGhlIGZvbGxvd2luZyByZXBvcnRlZCBsZWFrcyBzbyB0
aGV5IGRvIG5vdCBnZXQgaW4gb3VyIHdheSB3aGVuIGxvb2tpbmcgZm9yIFdlYktpdCBsZWFrczoK
KyAgICAjIFRoaXMgYWxsb3dzIHVzIGlnbm9yZSBrbm93biBsZWFrcyBhbmQgb25seSBiZSBhbGVy
dGVkIHdoZW4gbmV3IGxlYWtzIG9jY3VyLiBTb21lIGxlYWtzIGFyZSBpbiB0aGUgb2xkCisgICAg
IyB2ZXJzaW9ucyBvZiB0aGUgc3lzdGVtIGZyYW1ld29ya3MgdGhhdCBhcmUgYmVpbmcgdXNlZCBi
eSB0aGUgbGVha3MgYm90cy4gRXZlbiB0aG91Z2ggYSBsZWFrIGhhcyBiZWVuCisgICAgIyBmaXhl
ZCwgaXQgd2lsbCBiZSBsaXN0ZWQgaGVyZSB1bnRpbCB0aGUgYm90IGhhcyBiZWVuIHVwZGF0ZWQg
d2l0aCB0aGUgbmV3ZXIgZnJhbWV3b3Jrcy4KKyAgICBkZWYgX3R5cGVzX3RvX2V4bHVkZV9mcm9t
X2xlYWtzKHNlbGYpOgorICAgICAgICAjIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIGFueSB0eXBl
IGV4Y2x1ZGVzIGZyb20gT1MgbGVha3MsIGJ1dCB3ZSB3aWxsIGxpa2VseSBhZ2FpbiBpbiB0aGUg
ZnV0dXJlLgorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBfY2FsbHN0YWNrc190b19leGNs
dWRlX2Zyb21fbGVha3Moc2VsZik6CisgICAgICAgIGNhbGxzdGFja3MgPSBbCisgICAgICAgICAg
ICAiRmxhc2hfRW5mb3JjZUxvY2FsU2VjdXJpdHkiLCAgIyBsZWFrcyBpbiBGbGFzaCBwbHVnLWlu
IGNvZGUsIHJkYXI6Ly9wcm9ibGVtLzQ0NDk3NDcKKyAgICAgICAgXQorICAgICAgICBpZiBzZWxm
Ll9wb3J0LmlzX2xlb3BhcmQoKToKKyAgICAgICAgICAgIGNhbGxzdGFja3MgKz0gWworICAgICAg
ICAgICAgICAgICJDRkhUVFBNZXNzYWdlQXBwZW5kQnl0ZXMiLCAgIyBsZWFrIGluIENGTmV0d29y
aywgcmRhcjovL3Byb2JsZW0vNTQzNTkxMgorICAgICAgICAgICAgICAgICJzZW5kRGlkUmVjZWl2
ZURhdGFDYWxsYmFjayIsICAjIGxlYWsgaW4gQ0ZOZXR3b3JrLCByZGFyOi8vcHJvYmxlbS81NDQx
NjE5CisgICAgICAgICAgICAgICAgIl9DRkhUVFBSZWFkU3RyZWFtUmVhZE1hcmsiLCAgIyBsZWFr
IGluIENGTmV0d29yaywgcmRhcjovL3Byb2JsZW0vNTQ0MTQ2OAorICAgICAgICAgICAgICAgICJo
dHRwUHJvdG9jb2xTdGFydCIsICAjIGxlYWsgaW4gQ0ZOZXR3b3JrLCByZGFyOi8vcHJvYmxlbS81
NDY4ODM3CisgICAgICAgICAgICAgICAgIl9DRlVSTENvbm5lY3Rpb25TZW5kQ2FsbGJhY2tzIiwg
ICMgbGVhayBpbiBDRk5ldHdvcmssIHJkYXI6Ly9wcm9ibGVtLzU0NDE2MDAKKyAgICAgICAgICAg
ICAgICAiRGlzcGF0Y2hRVE1zZyIsICAjIGxlYWsgaW4gUXVpY2tUaW1lLCBQUEMgb25seSwgcmRh
cjovL3Byb2JsZW0vNTY2NzEzMgorICAgICAgICAgICAgICAgICJRVE1vdmllQ29udGVudFZpZXcg
Y3JlYXRlVmlzdWFsQ29udGV4dCIsICAjIGxlYWsgaW4gUXVpY2tUaW1lLCBQUEMgb25seSwgcmRh
cjovL3Byb2JsZW0vNTY2NzEzMgorICAgICAgICAgICAgICAgICJfQ29weUFyY2hpdGVjdHVyZXNG
b3JKVk1WZXJzaW9uIiwgICMgbGVhayBpbiBKYXZhLCByZGFyOi8vcHJvYmxlbS81OTEwODIzCisg
ICAgICAgICAgICBdCisgICAgICAgIGVsaWYgc2VsZi5fcG9ydC5pc19zbm93bGVvcGFyZCgpOgor
ICAgICAgICAgICAgY2FsbHN0YWNrcyArPSBbCisgICAgICAgICAgICAgICAgInJlYWRNYWtlck5v
dGVQcm9wcyIsICAjIDxyZGFyOi8vcHJvYmxlbS83MTU2NDMyPiBsZWFrIGluIEltYWdlSU8KKyAg
ICAgICAgICAgICAgICAiUVRLaXRNb3ZpZUNvbnRyb2xsZXJWaWV3IGNvbXBsZXRlVUlTZXR1cCIs
ICAjIDxyZGFyOi8vcHJvYmxlbS83MTU1MTU2PiBsZWFrIGluIFFUS2l0CisgICAgICAgICAgICAg
ICAgImdldFZNSW5pdEFyZ3MiLCAgIyA8cmRhcjovL3Byb2JsZW0vNzcxNDQ0ND4gbGVhayBpbiBK
YXZhCisgICAgICAgICAgICAgICAgIkphdmFfamF2YV9sYW5nX1N5c3RlbV9pbml0UHJvcGVydGll
cyIsICAjIDxyZGFyOi8vcHJvYmxlbS83NzE0NDY1PiBsZWFrIGluIEphdmEKKyAgICAgICAgICAg
ICAgICAiZ2xyQ29tcEV4ZWN1dGVLZXJuZWwiLCAgIyA8cmRhcjovL3Byb2JsZW0vNzgxNTM5MT4g
bGVhayBpbiBncmFwaGljcyBkcml2ZXIgd2hpbGUgdXNpbmcgT3BlbkdMCisgICAgICAgICAgICAg
ICAgIk5TTnVtYmVyRm9ybWF0dGVyIGdldE9iamVjdFZhbHVlOmZvclN0cmluZzplcnJvckRlc2Ny
aXB0aW9uOiIsICAjIDxyZGFyOi8vcHJvYmxlbS83MTQ5MzUwPiBMZWFrIGluIE5TTnVtYmVyRm9y
bWF0dGVyCisgICAgICAgICAgICBdCisgICAgICAgIHJldHVybiBjYWxsc3RhY2tzCisKKyAgICBk
ZWYgX2xlYWtzX2FyZ3Moc2VsZiwgcGlkKToKKyAgICAgICAgbGVha3NfYXJncyA9IFtdCisgICAg
ICAgIGZvciBjYWxsc3RhY2sgaW4gc2VsZi5fY2FsbHN0YWNrc190b19leGNsdWRlX2Zyb21fbGVh
a3MoKToKKyAgICAgICAgICAgIGxlYWtzX2FyZ3MgKz0gWyctLWV4Y2x1ZGUtY2FsbHN0YWNrPSIl
cyInICUgY2FsbHN0YWNrXSAgIyBDYWxsc3RhY2tzIGNhbiBoYXZlIHNwYWNlcyBpbiB0aGVtLCBz
byB3ZSBxdW90ZSB0aGUgYXJnIHRvIHByZXZlbnQgY29uZnVzaW5nIHBlcmwncyBvcHRwYXJzZS4K
KyAgICAgICAgZm9yIGV4Y2x1ZGVkX3R5cGUgaW4gc2VsZi5fdHlwZXNfdG9fZXhsdWRlX2Zyb21f
bGVha3MoKToKKyAgICAgICAgICAgIGxlYWtzX2FyZ3MgKz0gWyctLWV4Y2x1ZGUtdHlwZT0iJXMi
JyAlIGV4Y2x1ZGVkX3R5cGVdCisgICAgICAgIGxlYWtzX2FyZ3MuYXBwZW5kKHBpZCkKKyAgICAg
ICAgcmV0dXJuIGxlYWtzX2FyZ3MKKworICAgIGRlZiBfcGFyc2VfbGVha3Nfb3V0cHV0KHNlbGYs
IGxlYWtzX291dHB1dCwgcHJvY2Vzc19waWQpOgorICAgICAgICBjb3VudCwgYnl0ZXMgPSByZS5z
ZWFyY2gocidQcm9jZXNzICVzOiAoXGQrKSBsZWFrcz8gZm9yIChcZCspIHRvdGFsJyAlIHByb2Nl
c3NfcGlkLCBsZWFrc19vdXRwdXQpLmdyb3VwcygpCisgICAgICAgIGV4Y2x1ZGVkX21hdGNoID0g
cmUuc2VhcmNoKHInKFxkKykgbGVha3M/IGV4Y2x1ZGVkJywgbGVha3Nfb3V0cHV0KQorICAgICAg
ICBleGNsdWRlZCA9IGV4Y2x1ZGVkX21hdGNoLmdyb3VwKDApIGlmIGV4Y2x1ZGVkX21hdGNoIGVs
c2UgMAorICAgICAgICByZXR1cm4gaW50KGNvdW50KSwgaW50KGV4Y2x1ZGVkKSwgaW50KGJ5dGVz
KQorCisgICAgZGVmIGxlYWtzX2ZpbGVzX2luX2RpcmVjdG9yeShzZWxmLCBkaXJlY3RvcnkpOgor
ICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5nbG9iKHNlbGYuX2ZpbGVzeXN0ZW0uam9p
bihkaXJlY3RvcnksICJsZWFrcy0qIikpCisKKyAgICBkZWYgbGVha3NfZmlsZV9uYW1lKHNlbGYs
IHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQpOgorICAgICAgICAjIFdlIGluY2x1ZGUgdGhlIG51
bWJlciBvZiBmaWxlcyB0aGlzIHdvcmtlciBoYXMgYWxyZWFkeSB3cml0dGVuIGluIHRoZSBuYW1l
IHRvIHByZXZlbnQgb3ZlcndyaXR0aW5nIHByZXZpb3VzIGxlYWsgcmVzdWx0cy4uCisgICAgICAg
IHJldHVybiAibGVha3MtJXMtJXMudHh0IiAlIChwcm9jZXNzX25hbWUsIHByb2Nlc3NfcGlkKQor
CisgICAgZGVmIHBhcnNlX2xlYWtfZmlsZXMoc2VsZiwgbGVha19maWxlcyk6CisgICAgICAgIG1l
cmdlX2RlcHRoID0gNSAgIyBPUldUIGhhZCBhIC0tbWVyZ2UtbGVhay1kZXB0aCBhcmd1bWVudCwg
YnV0IHRoYXQgc2VlbXMgb3V0IG9mIHNjb3BlIGZvciB0aGUgcnVuLXdlYmtpdC10ZXN0cyB0b29s
LgorICAgICAgICBhcmdzID0gWworICAgICAgICAgICAgJy0tbWVyZ2UtZGVwdGgnLAorICAgICAg
ICAgICAgbWVyZ2VfZGVwdGgsCisgICAgICAgIF0gKyBsZWFrX2ZpbGVzCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIHBhcnNlX21hbGxvY19oaXN0b3J5X291dHB1dCA9IHNlbGYuX3BvcnQuX3J1
bl9zY3JpcHQoInBhcnNlLW1hbGxvYy1oaXN0b3J5IiwgYXJncywgaW5jbHVkZV9jb25maWd1cmF0
aW9uX2FyZ3VtZW50cz1GYWxzZSkKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAg
ICAgICAgICAgX2xvZy53YXJuKCJGYWlsZWQgdG8gcGFyc2UgbGVha3Mgb3V0cHV0OiAlcyIgJSBl
Lm1lc3NhZ2Vfd2l0aF9vdXRwdXQoKSkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMg
dG90YWw6IDUsODg4IGJ5dGVzICgwIGJ5dGVzIGV4Y2x1ZGVkKS4KKyAgICAgICAgdW5pcXVlX2xl
YWtfY291bnQgPSBsZW4ocmUuZmluZGFsbChyJ14oXGQqKVxzY2FsbHMnLCBwYXJzZV9tYWxsb2Nf
aGlzdG9yeV9vdXRwdXQpKQorICAgICAgICB0b3RhbF9ieXRlc19zdHJpbmcgPSByZS5zZWFyY2go
cidedG90YWxcOlxzKC4rKVxzXCgnLCBwYXJzZV9tYWxsb2NfaGlzdG9yeV9vdXRwdXQsIHJlLk1V
TFRJTElORSkuZ3JvdXAoMSkKKyAgICAgICAgcmV0dXJuICh0b3RhbF9ieXRlc19zdHJpbmcsIHVu
aXF1ZV9sZWFrX2NvdW50KQorCisgICAgZGVmIGNoZWNrX2Zvcl9sZWFrcyhzZWxmLCBwcm9jZXNz
X25hbWUsIHByb2Nlc3NfcGlkKToKKyAgICAgICAgX2xvZy5kZWJ1ZygiQ2hlY2tpbmcgZm9yIGxl
YWtzIGluICVzIiAlIHByb2Nlc3NfbmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBP
ZGRseSBlbm91Z2gsIHJ1bi1sZWFrcyAob3IgdGhlIHVuZGVybHlpbmcgbGVha3MgdG9vbCkgZG9l
cyBub3Qgc2VlbSB0byBhbHdheXMgb3V0cHV0IHV0Zi04LAorICAgICAgICAgICAgIyB0aHVzIHdl
IHBhc3MgZGVjb2RlX291dHB1dD1GYWxzZS4gIFdpdGhvdXQgdGhpcyBjb2RlIHdlJ3ZlIHNlZW4g
ZXJyb3JzIGxpa2U6CisgICAgICAgICAgICAjICJVbmljb2RlRGVjb2RlRXJyb3I6ICd1dGY4JyBj
b2RlYyBjYW4ndCBkZWNvZGUgYnl0ZSAweDg4IGluIHBvc2l0aW9uIDc3OTg3NDogdW5leHBlY3Rl
ZCBjb2RlIGJ5dGUiCisgICAgICAgICAgICBsZWFrc19vdXRwdXQgPSBzZWxmLl9wb3J0Ll9ydW5f
c2NyaXB0KCJydW4tbGVha3MiLCBzZWxmLl9sZWFrc19hcmdzKHByb2Nlc3NfcGlkKSwgaW5jbHVk
ZV9jb25maWd1cmF0aW9uX2FyZ3VtZW50cz1GYWxzZSwgZGVjb2RlX291dHB1dD1GYWxzZSkKKyAg
ICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAgICAgICAgICAgX2xvZy53YXJuKCJGYWls
ZWQgdG8gcnVuIGxlYWtzIHRvb2w6ICVzIiAlIGUubWVzc2FnZV93aXRoX291dHB1dCgpKQorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1v
dmluZyBsZWFrcyBwYXJzaW5nIHRvIHRoZSBlbmQgd2hlbiBzdW1tYXJpemluZyBpcyBkb25lLgor
ICAgICAgICBjb3VudCwgZXhjbHVkZWQsIGJ5dGVzID0gc2VsZi5fcGFyc2VfbGVha3Nfb3V0cHV0
KGxlYWtzX291dHB1dCwgcHJvY2Vzc19waWQpCisgICAgICAgIGFkanVzdGVkX2NvdW50ID0gY291
bnQgLSBleGNsdWRlZAorICAgICAgICBpZiBub3QgYWRqdXN0ZWRfY291bnQ6CisgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICBsZWFrc19maWxlbmFtZSA9IHNlbGYubGVha3NfZmlsZV9uYW1l
KHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQpCisgICAgICAgIGxlYWtzX291dHB1dF9wYXRoID0g
c2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3BvcnQucmVzdWx0c19kaXJlY3RvcnkoKSwgbGVh
a3NfZmlsZW5hbWUpCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfYmluYXJ5X2ZpbGUo
bGVha3Nfb3V0cHV0X3BhdGgsIGxlYWtzX291dHB1dCkKKworICAgICAgICAjIEZJWE1FOiBJZGVh
bGx5IHdlIHdvdWxkIG5vdCBiZSBsb2dnaW5nIGZyb20gdGhlIHdvcmtlciBwcm9jZXNzLCBidXQg
cmF0aGVyIHBhc3MgdGhlIGxlYWsKKyAgICAgICAgIyBpbmZvcm1hdGlvbiBiYWNrIHRvIHRoZSBt
YW5hZ2VyIGFuZCBoYXZlIGl0IGxvZy4KKyAgICAgICAgaWYgZXhjbHVkZWQ6CisgICAgICAgICAg
ICBfbG9nLmluZm8oIiVzIGxlYWtzICglcyBieXRlcyBpbmNsdWRpbmcgJXMgZXhjbHVkZWQgbGVh
a3MpIHdlcmUgZm91bmQsIGRldGFpbHMgaW4gJXMiICUgKGFkanVzdGVkX2NvdW50LCBieXRlcywg
ZXhjbHVkZWQsIGxlYWtzX291dHB1dF9wYXRoKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IF9sb2cuaW5mbygiJXMgbGVha3MgKCVzIGJ5dGVzKSB3ZXJlIGZvdW5kLCBkZXRhaWxzIGluICVz
IiAlIChjb3VudCwgYnl0ZXMsIGxlYWtzX291dHB1dF9wYXRoKSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbGVha2RldGVjdG9yX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9sZWFrZGV0ZWN0
b3JfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIwYTkzNTBjMDkyNTAyMTQ5YTA0NWNlMGIyYzRm
NjY2YjJlMTliMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvbGVha2RldGVjdG9yX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTA3IEBA
CisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4K
KyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLnBvcnQubGVha2RldGVjdG9yIGltcG9ydCBMZWFrRGV0ZWN0b3IKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrRXhlY3V0aXZlCisK
KworY2xhc3MgTGVha0RldGVjdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIF9t
b2NrX3BvcnQoc2VsZik6CisgICAgICAgIGNsYXNzIE1vY2tQb3J0KG9iamVjdCk6CisgICAgICAg
ICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3Rl
bSA9IE1vY2tGaWxlU3lzdGVtKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBN
b2NrRXhlY3V0aXZlKCkKKworICAgICAgICByZXR1cm4gTW9ja1BvcnQoKQorCisgICAgZGVmIF9t
YWtlX2RldGVjdG9yKHNlbGYpOgorICAgICAgICByZXR1cm4gTGVha0RldGVjdG9yKHNlbGYuX21v
Y2tfcG9ydCgpKQorCisgICAgZGVmIHRlc3RfbGVha3NfYXJncyhzZWxmKToKKyAgICAgICAgZGV0
ZWN0b3IgPSBzZWxmLl9tYWtlX2RldGVjdG9yKCkKKyAgICAgICAgZGV0ZWN0b3IuX2NhbGxzdGFj
a3NfdG9fZXhjbHVkZV9mcm9tX2xlYWtzID0gbGFtYmRhOiBbJ2ZvbyBiYXInLCAnQkFaJ10KKyAg
ICAgICAgZGV0ZWN0b3IuX3R5cGVzX3RvX2V4bHVkZV9mcm9tX2xlYWtzID0gbGFtYmRhOiBbJ2Fi
Y2RlZmcnLCAnaGkgamtsbW5vJ10KKyAgICAgICAgZXhwZWN0ZWRfYXJncyA9IFsnLS1leGNsdWRl
LWNhbGxzdGFjaz0iZm9vIGJhciInLCAnLS1leGNsdWRlLWNhbGxzdGFjaz0iQkFaIicsICctLWV4
Y2x1ZGUtdHlwZT0iYWJjZGVmZyInLCAnLS1leGNsdWRlLXR5cGU9ImhpIGprbG1ubyInLCAxMjM0
XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhkZXRlY3Rvci5fbGVha3NfYXJncygxMjM0KSwg
ZXhwZWN0ZWRfYXJncykKKworICAgIGV4YW1wbGVfbGVha3Nfb3V0cHV0ID0gIiIiUHJvY2VzcyA1
MTIyOiA2NjM3NDQgbm9kZXMgbWFsbG9jZWQgZm9yIDc4NjgzIEtCCitQcm9jZXNzIDUxMjI6IDMz
NzMwMSBsZWFrcyBmb3IgNjUyNTIxNiB0b3RhbCBsZWFrZWQgYnl0ZXMuCitMZWFrOiAweDM4Y2I2
MDAgIHNpemU9MzA3MiAgem9uZTogRGVmYXVsdE1hbGxvY1pvbmVfMHgxZDk0MDAwICAgaW5zdGFu
Y2Ugb2YgJ05TQ0ZEYXRhJywgdHlwZSBPYmpDLCBpbXBsZW1lbnRlZCBpbiBGb3VuZGF0aW9uCisg
ICAgICAgIDB4YTAzM2YwYjggMHgwMTAwMTM4NCAweDAwMDAwYjNhIDB4MDAwMDBiM2EgICAgIC4u
My4uLi4uOi4uLjouLi4KKyAgICAgICAgMHgwMDAwMDAwMCAweDAzOGNiNjIwIDB4MDAwMDAwMDAg
MHgwMDAwMDAwMCAgICAgLi4uLiAuLi4uLi4uLi4uLgorICAgICAgICAweDAwMDAwMDAwIDB4MjEw
MDAwMDAgMHg3MjZjNjQ2OCAweDAwMDAwMDAwICAgICAuLi4uLi4uIWhkbHIuLi4uCisgICAgICAg
IDB4MDAwMDAwMDAgMHg3MjY5NjQ2ZCAweDZjNzA3MDYxIDB4MDAwMDAwMDAgICAgIC4uLi5tZGly
YXBwbC4uLi4KKyAgICAgICAgMHgwMDAwMDAwMCAweDA0MDAwMDAwIDB4NzM2YzY5YzEgMHgwMDAw
MDA3NCAgICAgLi4uLi4uLi4uaWxzdC4uLgorICAgICAgICAweDZmNzRhOTIzIDB4MDAwMDAwNmYg
MHg3NDYxNjQxYiAweDAwMDAwMDYxICAgICAjLnRvby4uLi5kYXRhLi4uCisgICAgICAgIDB4MDAw
MDAwMDEgMHg3NjYxNGMwMCAweDJlMzIzNTY2IDB4MzAyZTMyMzYgICAgIC4uLi4uTGF2ZjUyLjYy
LjAKKyAgICAgICAgMHgzNzAwMDAwMCAweDZkNjE2ZWE5IDB4MmYwMDAwMDAgMHg2MTc0NjE2NCAg
ICAgLi4uNy5uYW0uLi4vZGF0YQorICAgICAgICAuLi4KK0xlYWs6IDB4MmE5Yzk2MCAgc2l6ZT0y
ODggIHpvbmU6IERlZmF1bHRNYWxsb2Nab25lXzB4MWQ5NDAwMAorICAgICAgICAweDA5YTFjYzQ3
IDB4MWJkYTg1NjAgMHgzZDQ3MmNkMSAweGZiZTliY2NkICAgICBHLi4uYC4uLi4sRz0uLi4uCisg
ICAgICAgIDB4OGJjZGEwMDggMHg5ZTk3MmE5MSAweGE4OTJjZjYzIDB4MjQ0OGJkYjAgICAgIC4u
Li4uKi4uYy4uLi4uSCQKKyAgICAgICAgMHg0NzM2ZmMzNCAweGRiZTJkOTRlIDB4MjVmNTY2ODgg
MHg4Mzk0MDJhNCAgICAgNC42R04uLi4uZi4lLi4uLgorICAgICAgICAweGQxMjQ5NmIzIDB4NTlj
NDBjMTIgMHg4Y2ZjYWIyYSAweGQyMGVmOWM0ICAgICAuLiQuLi4uWSouLi4uLi4uCisgICAgICAg
IDB4ZTdjNTZiMWIgMHg1ODM1YWY0NSAweGM2OTExNWRlIDB4NjkyM2U0YmIgICAgIC5rLi5FLjVY
Li4uLi4uI2kKKyAgICAgICAgMHg4NmYxNTU1MyAweDE1ZDQwZmE5IDB4NjgxMjg4YTQgMHhjMzMy
OThhOSAgICAgU1UuLi4uLi4uLi5oLi4yLgorICAgICAgICAweDQzOWJiNTM1IDB4YzRmYzc0M2Qg
MHg3ZGZhYWZmOCAweDJjYzQ5YTRhICAgICA1Li5DPXQuLi4uLn1KLi4sCisgICAgICAgIDB4ZGQx
MTlkZjggMHg3ZTA4NjgyMSAweDNkN2QxMjllIDB4MmUxYjE1NDcgICAgIC4uLi4haC5+Li59PUcu
Li4KKyAgICAgICAgLi4uCitMZWFrOiAweDI1MTAyZmUwICBzaXplPTE3NiAgem9uZTogRGVmYXVs
dE1hbGxvY1pvbmVfMHgxZDk0MDAwICAgc3RyaW5nICdOU0V4Y2VwdGlvbiBEYXRhJworIiIiCisK
KyAgICBkZWYgdGVzdF9wYXJzZV9sZWFrc19vdXRwdXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHNlbGYuX21ha2VfZGV0ZWN0b3IoKS5fcGFyc2VfbGVha3Nfb3V0cHV0KHNlbGYu
ZXhhbXBsZV9sZWFrc19vdXRwdXQsIDUxMjIpLCAoMzM3MzAxLCAwLCA2NTI1MjE2KSkKKworICAg
IGRlZiB0ZXN0X2xlYWtzX2ZpbGVzX2luX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgZGV0ZWN0
b3IgPSBzZWxmLl9tYWtlX2RldGVjdG9yKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZGV0
ZWN0b3IubGVha3NfZmlsZXNfaW5fZGlyZWN0b3J5KCcvYm9ndXMtZGlyZWN0b3J5JyksIFtdKQor
ICAgICAgICBkZXRlY3Rvci5fZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHsKKyAgICAgICAg
ICAgICcvbW9jay1yZXN1bHRzL2xlYWtzLUR1bXBSZW5kZXJUcmVlLTAtMS50eHQnOiAnJywKKyAg
ICAgICAgICAgICcvbW9jay1yZXN1bHRzL2xlYWtzLUR1bXBSZW5kZXJUcmVlLTEtMS50eHQnOiAn
JywKKyAgICAgICAgICAgICcvbW9jay1yZXN1bHRzL2xlYWtzLUR1bXBSZW5kZXJUcmVlLTAtMi50
eHQnOiAnJywKKyAgICAgICAgfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGRldGVj
dG9yLmxlYWtzX2ZpbGVzX2luX2RpcmVjdG9yeSgnL21vY2stcmVzdWx0cycpKSwgMykKKworICAg
IGRlZiB0ZXN0X3BhcnNlX2xlYWtfZmlsZXMoc2VsZik6CisgICAgICAgIGRldGVjdG9yID0gc2Vs
Zi5fbWFrZV9kZXRlY3RvcigpCisKKyAgICAgICAgZGVmIG1vY2tfcnVuX3NjcmlwdChuYW1lLCBh
cmdzLCBpbmNsdWRlX2NvbmZpZ3VyYXRpb25fYXJndW1lbnRzPUZhbHNlKToKKyAgICAgICAgICAg
IHByaW50ICJNT0NLIF9ydW5fc2NyaXB0OiAlcyAlcyIgJSAobmFtZSwgYXJncykKKyAgICAgICAg
ICAgIHJldHVybiAiIiIxIGNhbGxzIGZvciAxNiBieXRlczogLVtOU1VSTFJlcXVlc3QgbXV0YWJs
ZUNvcHlXaXRoWm9uZTpdIHwgK1tOU09iamVjdChOU09iamVjdCkgYWxsb2NXaXRoWm9uZTpdIHwg
X2ludGVybmFsX2NsYXNzX2NyZWF0ZUluc3RhbmNlRnJvbVpvbmUgfCBjYWxsb2MgfCBtYWxsb2Nf
em9uZV9jYWxsb2MKKwordG90YWw6IDUsODg4IGJ5dGVzICgwIGJ5dGVzIGV4Y2x1ZGVkKS4iIiIK
KyAgICAgICAgZGV0ZWN0b3IuX3BvcnQuX3J1bl9zY3JpcHQgPSBtb2NrX3J1bl9zY3JpcHQKKwor
ICAgICAgICBsZWFrX2ZpbGVzID0gWycvbW9jay1yZXN1bHRzL2xlYWtzLUR1bXBSZW5kZXJUcmVl
LTEyMzQudHh0JywgJy9tb2NrLXJlc3VsdHMvbGVha3MtRHVtcFJlbmRlclRyZWUtMTIzNS50eHQn
XQorICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiTU9DSyBfcnVuX3NjcmlwdDogcGFyc2UtbWFs
bG9jLWhpc3RvcnkgWyctLW1lcmdlLWRlcHRoJywgNSwgJy9tb2NrLXJlc3VsdHMvbGVha3MtRHVt
cFJlbmRlclRyZWUtMTIzNC50eHQnLCAnL21vY2stcmVzdWx0cy9sZWFrcy1EdW1wUmVuZGVyVHJl
ZS0xMjM1LnR4dCddXG4iCisgICAgICAgIHJlc3VsdHNfdHVwbGUgPSBPdXRwdXRDYXB0dXJlKCku
YXNzZXJ0X291dHB1dHMoc2VsZiwgZGV0ZWN0b3IucGFyc2VfbGVha19maWxlcywgW2xlYWtfZmls
ZXNdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhyZXN1bHRzX3R1cGxlLCAoIjUsODg4IGJ5dGVzIiwgMSkpCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CmluZGV4IDIxZjM5Y2UwMTQ4
OWI5NjUwZGM5ZjM3NzI2NWI4ZWFkNTI5YjNkYTQuLmY3YjczNDYzZDFhNmRkOTYzOTM3YzJiZWYz
ZWIzMWM4YjIwMGVhMDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbWFjLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC0yNiwxMzAgKzI2LDE3IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
Ci0iIiJXZWJLaXQgTWFjIGltcGxlbWVudGF0aW9uIG9mIHRoZSBQb3J0IGludGVyZmFjZS4iIiIK
LQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJlCiAKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1mcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0
Q29uZmlndXJhdGlvbgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJraXQgaW1w
b3J0IFdlYktpdFBvcnQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYXBwbGUgaW1w
b3J0IEFwcGxlUG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5sZWFrZGV0ZWN0
b3IgaW1wb3J0IExlYWtEZXRlY3RvcgogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKIAogCi0jIElmIG90aGVyIHBvcnRzL3BsYXRmb3JtcyBkZWNpZGUgdG8gc3VwcG9ydCAt
LWxlYWtzLCB3ZSBzaG91bGQgc2VlIGFib3V0IHNoYXJpbmcgYXMgbXVjaCBvZiB0aGlzIGNvZGUg
YXMgcG9zc2libGUuCi1jbGFzcyBMZWFrRGV0ZWN0b3Iob2JqZWN0KToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgcG9ydCk6Ci0gICAgICAgICMgV2Ugc2hvdWxkIG9wZXJhdGUgb24gYSAicGxhdGZv
cm0iIG5vdCBhIHBvcnQgaGVyZS4KLSAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKLSAgICAgICAg
c2VsZi5fZXhlY3V0aXZlID0gcG9ydC5fZXhlY3V0aXZlCi0gICAgICAgIHNlbGYuX2ZpbGVzeXN0
ZW0gPSBwb3J0Ll9maWxlc3lzdGVtCi0KLSAgICAjIFdlIGV4Y2x1ZGUgdGhlIGZvbGxvd2luZyBy
ZXBvcnRlZCBsZWFrcyBzbyB0aGV5IGRvIG5vdCBnZXQgaW4gb3VyIHdheSB3aGVuIGxvb2tpbmcg
Zm9yIFdlYktpdCBsZWFrczoKLSAgICAjIFRoaXMgYWxsb3dzIHVzIGlnbm9yZSBrbm93biBsZWFr
cyBhbmQgb25seSBiZSBhbGVydGVkIHdoZW4gbmV3IGxlYWtzIG9jY3VyLiBTb21lIGxlYWtzIGFy
ZSBpbiB0aGUgb2xkCi0gICAgIyB2ZXJzaW9ucyBvZiB0aGUgc3lzdGVtIGZyYW1ld29ya3MgdGhh
dCBhcmUgYmVpbmcgdXNlZCBieSB0aGUgbGVha3MgYm90cy4gRXZlbiB0aG91Z2ggYSBsZWFrIGhh
cyBiZWVuCi0gICAgIyBmaXhlZCwgaXQgd2lsbCBiZSBsaXN0ZWQgaGVyZSB1bnRpbCB0aGUgYm90
IGhhcyBiZWVuIHVwZGF0ZWQgd2l0aCB0aGUgbmV3ZXIgZnJhbWV3b3Jrcy4KLSAgICBkZWYgX3R5
cGVzX3RvX2V4bHVkZV9mcm9tX2xlYWtzKHNlbGYpOgotICAgICAgICAjIEN1cnJlbnRseSB3ZSBk
b24ndCBoYXZlIGFueSB0eXBlIGV4Y2x1ZGVzIGZyb20gT1MgbGVha3MsIGJ1dCB3ZSB3aWxsIGxp
a2VseSBhZ2FpbiBpbiB0aGUgZnV0dXJlLgotICAgICAgICByZXR1cm4gW10KLQotICAgIGRlZiBf
Y2FsbHN0YWNrc190b19leGNsdWRlX2Zyb21fbGVha3Moc2VsZik6Ci0gICAgICAgIGNhbGxzdGFj
a3MgPSBbCi0gICAgICAgICAgICAiRmxhc2hfRW5mb3JjZUxvY2FsU2VjdXJpdHkiLCAgIyBsZWFr
cyBpbiBGbGFzaCBwbHVnLWluIGNvZGUsIHJkYXI6Ly9wcm9ibGVtLzQ0NDk3NDcKLSAgICAgICAg
XQotICAgICAgICBpZiBzZWxmLl9wb3J0LmlzX2xlb3BhcmQoKToKLSAgICAgICAgICAgIGNhbGxz
dGFja3MgKz0gWwotICAgICAgICAgICAgICAgICJDRkhUVFBNZXNzYWdlQXBwZW5kQnl0ZXMiLCAg
IyBsZWFrIGluIENGTmV0d29yaywgcmRhcjovL3Byb2JsZW0vNTQzNTkxMgotICAgICAgICAgICAg
ICAgICJzZW5kRGlkUmVjZWl2ZURhdGFDYWxsYmFjayIsICAjIGxlYWsgaW4gQ0ZOZXR3b3JrLCBy
ZGFyOi8vcHJvYmxlbS81NDQxNjE5Ci0gICAgICAgICAgICAgICAgIl9DRkhUVFBSZWFkU3RyZWFt
UmVhZE1hcmsiLCAgIyBsZWFrIGluIENGTmV0d29yaywgcmRhcjovL3Byb2JsZW0vNTQ0MTQ2OAot
ICAgICAgICAgICAgICAgICJodHRwUHJvdG9jb2xTdGFydCIsICAjIGxlYWsgaW4gQ0ZOZXR3b3Jr
LCByZGFyOi8vcHJvYmxlbS81NDY4ODM3Ci0gICAgICAgICAgICAgICAgIl9DRlVSTENvbm5lY3Rp
b25TZW5kQ2FsbGJhY2tzIiwgICMgbGVhayBpbiBDRk5ldHdvcmssIHJkYXI6Ly9wcm9ibGVtLzU0
NDE2MDAKLSAgICAgICAgICAgICAgICAiRGlzcGF0Y2hRVE1zZyIsICAjIGxlYWsgaW4gUXVpY2tU
aW1lLCBQUEMgb25seSwgcmRhcjovL3Byb2JsZW0vNTY2NzEzMgotICAgICAgICAgICAgICAgICJR
VE1vdmllQ29udGVudFZpZXcgY3JlYXRlVmlzdWFsQ29udGV4dCIsICAjIGxlYWsgaW4gUXVpY2tU
aW1lLCBQUEMgb25seSwgcmRhcjovL3Byb2JsZW0vNTY2NzEzMgotICAgICAgICAgICAgICAgICJf
Q29weUFyY2hpdGVjdHVyZXNGb3JKVk1WZXJzaW9uIiwgICMgbGVhayBpbiBKYXZhLCByZGFyOi8v
cHJvYmxlbS81OTEwODIzCi0gICAgICAgICAgICBdCi0gICAgICAgIGVsaWYgc2VsZi5fcG9ydC5p
c19zbm93bGVvcGFyZCgpOgotICAgICAgICAgICAgY2FsbHN0YWNrcyArPSBbCi0gICAgICAgICAg
ICAgICAgInJlYWRNYWtlck5vdGVQcm9wcyIsICAjIDxyZGFyOi8vcHJvYmxlbS83MTU2NDMyPiBs
ZWFrIGluIEltYWdlSU8KLSAgICAgICAgICAgICAgICAiUVRLaXRNb3ZpZUNvbnRyb2xsZXJWaWV3
IGNvbXBsZXRlVUlTZXR1cCIsICAjIDxyZGFyOi8vcHJvYmxlbS83MTU1MTU2PiBsZWFrIGluIFFU
S2l0Ci0gICAgICAgICAgICAgICAgImdldFZNSW5pdEFyZ3MiLCAgIyA8cmRhcjovL3Byb2JsZW0v
NzcxNDQ0ND4gbGVhayBpbiBKYXZhCi0gICAgICAgICAgICAgICAgIkphdmFfamF2YV9sYW5nX1N5
c3RlbV9pbml0UHJvcGVydGllcyIsICAjIDxyZGFyOi8vcHJvYmxlbS83NzE0NDY1PiBsZWFrIGlu
IEphdmEKLSAgICAgICAgICAgICAgICAiZ2xyQ29tcEV4ZWN1dGVLZXJuZWwiLCAgIyA8cmRhcjov
L3Byb2JsZW0vNzgxNTM5MT4gbGVhayBpbiBncmFwaGljcyBkcml2ZXIgd2hpbGUgdXNpbmcgT3Bl
bkdMCi0gICAgICAgICAgICAgICAgIk5TTnVtYmVyRm9ybWF0dGVyIGdldE9iamVjdFZhbHVlOmZv
clN0cmluZzplcnJvckRlc2NyaXB0aW9uOiIsICAjIDxyZGFyOi8vcHJvYmxlbS83MTQ5MzUwPiBM
ZWFrIGluIE5TTnVtYmVyRm9ybWF0dGVyCi0gICAgICAgICAgICBdCi0gICAgICAgIHJldHVybiBj
YWxsc3RhY2tzCi0KLSAgICBkZWYgX2xlYWtzX2FyZ3Moc2VsZiwgcGlkKToKLSAgICAgICAgbGVh
a3NfYXJncyA9IFtdCi0gICAgICAgIGZvciBjYWxsc3RhY2sgaW4gc2VsZi5fY2FsbHN0YWNrc190
b19leGNsdWRlX2Zyb21fbGVha3MoKToKLSAgICAgICAgICAgIGxlYWtzX2FyZ3MgKz0gWyctLWV4
Y2x1ZGUtY2FsbHN0YWNrPSIlcyInICUgY2FsbHN0YWNrXSAgIyBDYWxsc3RhY2tzIGNhbiBoYXZl
IHNwYWNlcyBpbiB0aGVtLCBzbyB3ZSBxdW90ZSB0aGUgYXJnIHRvIHByZXZlbnQgY29uZnVzaW5n
IHBlcmwncyBvcHRwYXJzZS4KLSAgICAgICAgZm9yIGV4Y2x1ZGVkX3R5cGUgaW4gc2VsZi5fdHlw
ZXNfdG9fZXhsdWRlX2Zyb21fbGVha3MoKToKLSAgICAgICAgICAgIGxlYWtzX2FyZ3MgKz0gWyct
LWV4Y2x1ZGUtdHlwZT0iJXMiJyAlIGV4Y2x1ZGVkX3R5cGVdCi0gICAgICAgIGxlYWtzX2FyZ3Mu
YXBwZW5kKHBpZCkKLSAgICAgICAgcmV0dXJuIGxlYWtzX2FyZ3MKLQotICAgIGRlZiBfcGFyc2Vf
bGVha3Nfb3V0cHV0KHNlbGYsIGxlYWtzX291dHB1dCwgcHJvY2Vzc19waWQpOgotICAgICAgICBj
b3VudCwgYnl0ZXMgPSByZS5zZWFyY2gocidQcm9jZXNzICVzOiAoXGQrKSBsZWFrcz8gZm9yIChc
ZCspIHRvdGFsJyAlIHByb2Nlc3NfcGlkLCBsZWFrc19vdXRwdXQpLmdyb3VwcygpCi0gICAgICAg
IGV4Y2x1ZGVkX21hdGNoID0gcmUuc2VhcmNoKHInKFxkKykgbGVha3M/IGV4Y2x1ZGVkJywgbGVh
a3Nfb3V0cHV0KQotICAgICAgICBleGNsdWRlZCA9IGV4Y2x1ZGVkX21hdGNoLmdyb3VwKDApIGlm
IGV4Y2x1ZGVkX21hdGNoIGVsc2UgMAotICAgICAgICByZXR1cm4gaW50KGNvdW50KSwgaW50KGV4
Y2x1ZGVkKSwgaW50KGJ5dGVzKQotCi0gICAgZGVmIGxlYWtzX2ZpbGVzX2luX2RpcmVjdG9yeShz
ZWxmLCBkaXJlY3RvcnkpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5nbG9iKHNl
bGYuX2ZpbGVzeXN0ZW0uam9pbihkaXJlY3RvcnksICJsZWFrcy0qIikpCi0KLSAgICBkZWYgbGVh
a3NfZmlsZV9uYW1lKHNlbGYsIHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQpOgotICAgICAgICAj
IFdlIGluY2x1ZGUgdGhlIG51bWJlciBvZiBmaWxlcyB0aGlzIHdvcmtlciBoYXMgYWxyZWFkeSB3
cml0dGVuIGluIHRoZSBuYW1lIHRvIHByZXZlbnQgb3ZlcndyaXR0aW5nIHByZXZpb3VzIGxlYWsg
cmVzdWx0cy4uCi0gICAgICAgIHJldHVybiAibGVha3MtJXMtJXMudHh0IiAlIChwcm9jZXNzX25h
bWUsIHByb2Nlc3NfcGlkKQotCi0gICAgZGVmIHBhcnNlX2xlYWtfZmlsZXMoc2VsZiwgbGVha19m
aWxlcyk6Ci0gICAgICAgIG1lcmdlX2RlcHRoID0gNSAgIyBPUldUIGhhZCBhIC0tbWVyZ2UtbGVh
ay1kZXB0aCBhcmd1bWVudCwgYnV0IHRoYXQgc2VlbXMgb3V0IG9mIHNjb3BlIGZvciB0aGUgcnVu
LXdlYmtpdC10ZXN0cyB0b29sLgotICAgICAgICBhcmdzID0gWwotICAgICAgICAgICAgJy0tbWVy
Z2UtZGVwdGgnLAotICAgICAgICAgICAgbWVyZ2VfZGVwdGgsCi0gICAgICAgIF0gKyBsZWFrX2Zp
bGVzCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBhcnNlX21hbGxvY19oaXN0b3J5X291dHB1
dCA9IHNlbGYuX3BvcnQuX3J1bl9zY3JpcHQoInBhcnNlLW1hbGxvYy1oaXN0b3J5IiwgYXJncywg
aW5jbHVkZV9jb25maWd1cmF0aW9uX2FyZ3VtZW50cz1GYWxzZSkKLSAgICAgICAgZXhjZXB0IFNj
cmlwdEVycm9yLCBlOgotICAgICAgICAgICAgX2xvZy53YXJuKCJGYWlsZWQgdG8gcGFyc2UgbGVh
a3Mgb3V0cHV0OiAlcyIgJSBlLm1lc3NhZ2Vfd2l0aF9vdXRwdXQoKSkKLSAgICAgICAgICAgIHJl
dHVybgotCi0gICAgICAgICMgdG90YWw6IDUsODg4IGJ5dGVzICgwIGJ5dGVzIGV4Y2x1ZGVkKS4K
LSAgICAgICAgdW5pcXVlX2xlYWtfY291bnQgPSBsZW4ocmUuZmluZGFsbChyJ14oXGQqKVxzY2Fs
bHMnLCBwYXJzZV9tYWxsb2NfaGlzdG9yeV9vdXRwdXQpKQotICAgICAgICB0b3RhbF9ieXRlc19z
dHJpbmcgPSByZS5zZWFyY2gocidedG90YWxcOlxzKC4rKVxzXCgnLCBwYXJzZV9tYWxsb2NfaGlz
dG9yeV9vdXRwdXQsIHJlLk1VTFRJTElORSkuZ3JvdXAoMSkKLSAgICAgICAgcmV0dXJuICh0b3Rh
bF9ieXRlc19zdHJpbmcsIHVuaXF1ZV9sZWFrX2NvdW50KQotCi0gICAgZGVmIGNoZWNrX2Zvcl9s
ZWFrcyhzZWxmLCBwcm9jZXNzX25hbWUsIHByb2Nlc3NfcGlkKToKLSAgICAgICAgX2xvZy5kZWJ1
ZygiQ2hlY2tpbmcgZm9yIGxlYWtzIGluICVzIiAlIHByb2Nlc3NfbmFtZSkKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgIyBPZGRseSBlbm91Z2gsIHJ1bi1sZWFrcyAob3IgdGhlIHVuZGVybHlp
bmcgbGVha3MgdG9vbCkgZG9lcyBub3Qgc2VlbSB0byBhbHdheXMgb3V0cHV0IHV0Zi04LAotICAg
ICAgICAgICAgIyB0aHVzIHdlIHBhc3MgZGVjb2RlX291dHB1dD1GYWxzZS4gIFdpdGhvdXQgdGhp
cyBjb2RlIHdlJ3ZlIHNlZW4gZXJyb3JzIGxpa2U6Ci0gICAgICAgICAgICAjICJVbmljb2RlRGVj
b2RlRXJyb3I6ICd1dGY4JyBjb2RlYyBjYW4ndCBkZWNvZGUgYnl0ZSAweDg4IGluIHBvc2l0aW9u
IDc3OTg3NDogdW5leHBlY3RlZCBjb2RlIGJ5dGUiCi0gICAgICAgICAgICBsZWFrc19vdXRwdXQg
PSBzZWxmLl9wb3J0Ll9ydW5fc2NyaXB0KCJydW4tbGVha3MiLCBzZWxmLl9sZWFrc19hcmdzKHBy
b2Nlc3NfcGlkKSwgaW5jbHVkZV9jb25maWd1cmF0aW9uX2FyZ3VtZW50cz1GYWxzZSwgZGVjb2Rl
X291dHB1dD1GYWxzZSkKLSAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgotICAgICAgICAg
ICAgX2xvZy53YXJuKCJGYWlsZWQgdG8gcnVuIGxlYWtzIHRvb2w6ICVzIiAlIGUubWVzc2FnZV93
aXRoX291dHB1dCgpKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBGSVhNRTogV2Ug
c2hvdWxkIGNvbnNpZGVyIG1vdmluZyBsZWFrcyBwYXJzaW5nIHRvIHRoZSBlbmQgd2hlbiBzdW1t
YXJpemluZyBpcyBkb25lLgotICAgICAgICBjb3VudCwgZXhjbHVkZWQsIGJ5dGVzID0gc2VsZi5f
cGFyc2VfbGVha3Nfb3V0cHV0KGxlYWtzX291dHB1dCwgcHJvY2Vzc19waWQpCi0gICAgICAgIGFk
anVzdGVkX2NvdW50ID0gY291bnQgLSBleGNsdWRlZAotICAgICAgICBpZiBub3QgYWRqdXN0ZWRf
Y291bnQ6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBsZWFrc19maWxlbmFtZSA9IHNl
bGYubGVha3NfZmlsZV9uYW1lKHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQpCi0gICAgICAgIGxl
YWtzX291dHB1dF9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3BvcnQucmVzdWx0
c19kaXJlY3RvcnkoKSwgbGVha3NfZmlsZW5hbWUpCi0gICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0u
d3JpdGVfYmluYXJ5X2ZpbGUobGVha3Nfb3V0cHV0X3BhdGgsIGxlYWtzX291dHB1dCkKLQotICAg
ICAgICAjIEZJWE1FOiBJZGVhbGx5IHdlIHdvdWxkIG5vdCBiZSBsb2dnaW5nIGZyb20gdGhlIHdv
cmtlciBwcm9jZXNzLCBidXQgcmF0aGVyIHBhc3MgdGhlIGxlYWsKLSAgICAgICAgIyBpbmZvcm1h
dGlvbiBiYWNrIHRvIHRoZSBtYW5hZ2VyIGFuZCBoYXZlIGl0IGxvZy4KLSAgICAgICAgaWYgZXhj
bHVkZWQ6Ci0gICAgICAgICAgICBfbG9nLmluZm8oIiVzIGxlYWtzICglcyBieXRlcyBpbmNsdWRp
bmcgJXMgZXhjbHVkZWQgbGVha3MpIHdlcmUgZm91bmQsIGRldGFpbHMgaW4gJXMiICUgKGFkanVz
dGVkX2NvdW50LCBieXRlcywgZXhjbHVkZWQsIGxlYWtzX291dHB1dF9wYXRoKSkKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIF9sb2cuaW5mbygiJXMgbGVha3MgKCVzIGJ5dGVzKSB3ZXJlIGZv
dW5kLCBkZXRhaWxzIGluICVzIiAlIChjb3VudCwgYnl0ZXMsIGxlYWtzX291dHB1dF9wYXRoKSkK
LQotCiBkZWYgb3NfdmVyc2lvbihvc192ZXJzaW9uX3N0cmluZz1Ob25lLCBzdXBwb3J0ZWRfdmVy
c2lvbnM9Tm9uZSk6CiAgICAgaWYgbm90IG9zX3ZlcnNpb25fc3RyaW5nOgogICAgICAgICBpZiBo
YXNhdHRyKHBsYXRmb3JtLCAnbWFjX3ZlcicpIGFuZCBwbGF0Zm9ybS5tYWNfdmVyKClbMF06CkBA
IC0xNzAsMjkgKzU3LDI1IEBAIGRlZiBvc192ZXJzaW9uKG9zX3ZlcnNpb25fc3RyaW5nPU5vbmUs
IHN1cHBvcnRlZF92ZXJzaW9ucz1Ob25lKToKICAgICByZXR1cm4gdmVyc2lvbl9zdHJpbmcKIAog
Ci1jbGFzcyBNYWNQb3J0KFdlYktpdFBvcnQpOgorY2xhc3MgTWFjUG9ydChBcHBsZVBvcnQpOgog
ICAgIHBvcnRfbmFtZSA9ICJtYWMiCiAKICAgICAjIFRoaXMgaXMgYSBsaXN0IG9mIGFsbCBzdXBw
b3J0ZWQgT1MtVkVSU0lPTiBwYWlycyBmb3IgdGhlIEFwcGxlTWFjIHBvcnQKICAgICAjIGFuZCB0
aGUgb3JkZXIgb2YgZmFsbGJhY2sgYmV0d2VlbiB0aGVtLiAgTWF0Y2hlcyBPUldULgogICAgIFZF
UlNJT05fRkFMTEJBQ0tfT1JERVIgPSBbIm1hYy1sZW9wYXJkIiwgIm1hYy1zbm93bGVvcGFyZCIs
ICJtYWMtbGlvbiIsICJtYWMiXQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfbmFtZT1O
b25lLCBvc192ZXJzaW9uX3N0cmluZz1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIHBvcnRfbmFt
ZSA9IHBvcnRfbmFtZSBvciAnbWFjJwotICAgICAgICBXZWJLaXRQb3J0Ll9faW5pdF9fKHNlbGYs
IHBvcnRfbmFtZT1wb3J0X25hbWUsICoqa3dhcmdzKQotCi0gICAgICAgICMgRklYTUU6IFRoaXMg
c29ydCBvZiBwYXJzaW5nIGJlbG9uZ3MgaW4gZmFjdG9yeS5weSEKLSAgICAgICAgaWYgcG9ydF9u
YW1lID09ICdtYWMtd2syJzoKLSAgICAgICAgICAgIHBvcnRfbmFtZSA9ICdtYWMnCi0gICAgICAg
ICAgICAjIEZJWE1FOiBUaGlzIG1heSBiZSB3cm9uZywgc2luY2Ugb3B0aW9ucyBpcyBhIGdsb2Jh
bCBwcm9wZXJ0eSwgYW5kIHRoZSBwb3J0X25hbWUgaXMgc3BlY2lmaWMgdG8gdGhpcyBvYmplY3Q/
Ci0gICAgICAgICAgICBzZWxmLnNldF9vcHRpb25fZGVmYXVsdCgnd2Via2l0X3Rlc3RfcnVubmVy
JywgVHJ1ZSkKLQotICAgICAgICBpZiBwb3J0X25hbWUgPT0gJ21hYyc6Ci0gICAgICAgICAgICBz
ZWxmLl92ZXJzaW9uID0gb3NfdmVyc2lvbihvc192ZXJzaW9uX3N0cmluZykKLSAgICAgICAgICAg
IHNlbGYuX25hbWUgPSBwb3J0X25hbWUgKyAnLScgKyBzZWxmLl92ZXJzaW9uCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBhc3NlcnQgcG9ydF9uYW1lIGluIHNlbGYuVkVSU0lPTl9GQUxMQkFD
S19PUkRFUiwgIiVzIGlzIG5vdCBpbiAlcyIgJSAocG9ydF9uYW1lLCBzZWxmLlZFUlNJT05fRkFM
TEJBQ0tfT1JERVIpCi0gICAgICAgICAgICBzZWxmLl92ZXJzaW9uID0gcG9ydF9uYW1lW2xlbign
bWFjLScpOl0KKyAgICBkZWYgX2RldGVjdF92ZXJzaW9uKHNlbGYsIG9zX3ZlcnNpb25fc3RyaW5n
KToKKyAgICAgICAgIyBGSVhNRTogTWFjUG9ydCBhbmQgV2luUG9ydCBpbXBsZW1lbnQgX2RldGVj
dF92ZXJzaW9uIGRpZmZlcmVudGx5LgorICAgICAgICAjIFdpblBvcnQgdXNlcyBvc192ZXJzaW9u
X3N0cmluZyBhcyBhIHJlcGxhY2VtZW50IGZvciBzZWxmLnZlcnNpb24uCisgICAgICAgICMgVGh1
cyBqdXN0IHJldHVybnMgb3NfdmVyc2lvbl9zdHJpbmcgZnJvbSB0aGlzIGZ1bmN0aW9uIGlmIG5v
dCBOb25lLgorICAgICAgICAjIE1hYyAoaW5jb3JyZWN0bHkpIHVzZXMgb3NfdmVyc2lvbl9zdHJp
bmcgYXMgYSB3YXkgdG8gdW5pdC10ZXN0CisgICAgICAgICMgdGhlIG9zX3ZlcnNpb24gcGFyc2lu
ZyBsb2dpYy4gIFdlIHNob3VsZCBzcGxpdCB0aGUgb3NfdmVyc2lvbiBwYXJzaW5nIHRlc3RzCisg
ICAgICAgICMgaW50byBzZXBhcmF0ZSB1bml0dGVzdHMgc28gdGhhdCB0aGV5IGRvIG5vdCBuZWVk
IHRvIGNvbnN0cnVjdAorICAgICAgICAjIE1hY1BvcnQgb2JqZWN0cyBqdXN0IHRvIHRlc3Qgb3Vy
IHZlcnNpb24gcGFyc2luZy4KKyAgICAgICAgcmV0dXJuIG9zX3ZlcnNpb24ob3NfdmVyc2lvbl9z
dHJpbmcpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICBBcHBs
ZVBvcnQuX19pbml0X18oc2VsZiwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuX29wZXJhdGluZ19z
eXN0ZW0gPSAnbWFjJwogICAgICAgICBzZWxmLl9sZWFrX2RldGVjdG9yID0gTGVha0RldGVjdG9y
KHNlbGYpCiAgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigibGVha3MiKToKQEAgLTIwMCwxMyAr
ODMsNiBAQCBjbGFzcyBNYWNQb3J0KFdlYktpdFBvcnQpOgogICAgICAgICAgICAgIyB3aXRoIE1h
bGxvY1N0YWNrTG9nZ2luZyBlbmFibGVkLgogICAgICAgICAgICAgc2VsZi5zZXRfb3B0aW9uX2Rl
ZmF1bHQoImJhdGNoX3NpemUiLCAxMDAwKQogCi0gICAgIyBGSVhNRTogQSBtb3JlIHNvcGhpc2l0
Y2F0ZWQgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBtb3ZlIHRvIFdlYktpdFBvcnQg
YW5kIHJlcGxhY2UgYWxsIGNhbGxzIHRvIG5hbWUoKS4KLSAgICBkZWYgX3BvcnRfbmFtZV93aXRo
X3ZlcnNpb24oc2VsZik6Ci0gICAgICAgIGNvbXBvbmVudHMgPSBbc2VsZi5wb3J0X25hbWVdCi0g
ICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gJ2Z1dHVyZSc6ICAjIEZJWE1FOiBUaGlzIGlzIGEg
aGFjaywgYnV0IFRlc3RDb25maWd1cmF0aW9uIGRvZXNuJ3QgbGlrZSBzZWxmLl92ZXJzaW9uIGV2
ZXIgYmVpbmcgTm9uZS4KLSAgICAgICAgICAgIGNvbXBvbmVudHMuYXBwZW5kKHNlbGYuX3ZlcnNp
b24pCi0gICAgICAgIHJldHVybiAnLScuam9pbihjb21wb25lbnRzKQotCiAgICAgZGVmIGJhc2Vs
aW5lX3NlYXJjaF9wYXRoKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmYWxsYmFj
a19pbmRleCA9IHNlbGYuVkVSU0lPTl9GQUxMQkFDS19PUkRFUi5pbmRleChzZWxmLl9wb3J0X25h
bWVfd2l0aF92ZXJzaW9uKCkpCkBAIC0yMjAsNyArOTYsNyBAQCBjbGFzcyBNYWNQb3J0KFdlYktp
dFBvcnQpOgogICAgICAgICByZXR1cm4gbWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBm
YWxsYmFja19uYW1lcykKIAogICAgIGRlZiBzZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZiwg
c2VydmVyX25hbWU9Tm9uZSk6Ci0gICAgICAgIGVudiA9IFdlYktpdFBvcnQuc2V0dXBfZW52aXJv
bl9mb3Jfc2VydmVyKHNlbGYsIHNlcnZlcl9uYW1lKQorICAgICAgICBlbnYgPSBzdXBlcihNYWNQ
b3J0LCBzZWxmKS5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZiwgc2VydmVyX25hbWUpCiAg
ICAgICAgIGlmIHNlcnZlcl9uYW1lID09IHNlbGYuZHJpdmVyX25hbWUoKToKICAgICAgICAgICAg
IGlmIHNlbGYuZ2V0X29wdGlvbignbGVha3MnKToKICAgICAgICAgICAgICAgICBlbnZbJ01hbGxv
Y1N0YWNrTG9nZ2luZyddID0gJzEnCkBAIC0yNDAsMTcgKzExNiw2IEBAIGNsYXNzIE1hY1BvcnQo
V2ViS2l0UG9ydCk6CiAgICAgZGVmIGlzX2NyYXNoX3JlcG9ydGVyKHNlbGYsIHByb2Nlc3NfbmFt
ZSk6CiAgICAgICAgIHJldHVybiByZS5zZWFyY2gocidSZXBvcnRDcmFzaCcsIHByb2Nlc3NfbmFt
ZSkKIAotICAgIGRlZiBfZ2VuZXJhdGVfYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoc2VsZik6Ci0g
ICAgICAgIGNvbmZpZ3VyYXRpb25zID0gW10KLSAgICAgICAgZm9yIHZlcnNpb24gaW4gc2VsZi5W
RVJTSU9OX0ZBTExCQUNLX09SREVSOgotICAgICAgICAgICAgdmVyc2lvbiA9IHZlcnNpb24ucmVw
bGFjZSgnbWFjLScsICcnKQotICAgICAgICAgICAgaWYgdmVyc2lvbiA9PSAnbWFjJzogICMgSXQn
cyB1bmNsZWFyIHdoYXQgdGhlICJ2ZXJzaW9uIiBmb3IgJ21hYycgaXM/Ci0gICAgICAgICAgICAg
ICAgY29udGludWUKLSAgICAgICAgICAgICMgVGhpcyBtZXRob2QgaXMgb25seSB1c2VkIGZvciB0
ZXN0X2V4cGVjdGF0aW9ucy50eHQsIHNvIHNob3VsZG4ndCBtYXR0ZXIgdGhhdCBpdCdzIHdyb25n
LgotICAgICAgICAgICAgZm9yIGJ1aWxkX3R5cGUgaW4gc2VsZi5BTExfQlVJTERfVFlQRVM6Ci0g
ICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuYXBwZW5kKFRlc3RDb25maWd1cmF0aW9uKHZl
cnNpb249dmVyc2lvbiwgYXJjaGl0ZWN0dXJlPSd4ODYnLCBidWlsZF90eXBlPWJ1aWxkX3R5cGUs
IGdyYXBoaWNzX3R5cGU9J2NwdScpKQotICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbnMKLQog
ICAgIGRlZiBfYnVpbGRfamF2YV90ZXN0X3N1cHBvcnQoc2VsZik6CiAgICAgICAgIGphdmFfdGVz
dHNfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwg
ImphdmEiKQogICAgICAgICBidWlsZF9qYXZhID0gWyIvdXNyL2Jpbi9tYWtlIiwgIi1DIiwgamF2
YV90ZXN0c19wYXRoXQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weQppbmRleCAxNWM0ZWNhNzBlMzlhZGRhNWJlOWQz
Y2MxNzRlZDlhODFmMjRiODQ0Li5mZjliOTI0NTc1NDI1OTNjMzdmNDk4NmMyMjVmMWEzOWNkNTVj
YjMzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L21hY191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L21hY191bml0dGVzdC5weQpAQCAtMjYsOTAgKzI2LDEzIEBACiAjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgU3RyaW5nSU8KLWltcG9ydCBzeXMKLWltcG9ydCB1
bml0dGVzdAotCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0Lm1hYyBpbXBvcnQgTWFj
UG9ydCwgTGVha0RldGVjdG9yCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0Lm1hYyBp
bXBvcnQgTWFjUG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9y
dF90ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBp
bXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRj
YXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wg
aW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVXNlciwgTW9ja0V4ZWN1dGl2ZQogCiAKLWNsYXNzIExl
YWtEZXRlY3RvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBfbW9ja19wb3J0KHNl
bGYpOgotICAgICAgICBjbGFzcyBNb2NrUG9ydChvYmplY3QpOgotICAgICAgICAgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBNb2NrRmls
ZVN5c3RlbSgpCi0gICAgICAgICAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2
ZSgpCi0KLSAgICAgICAgcmV0dXJuIE1vY2tQb3J0KCkKLQotICAgIGRlZiBfbWFrZV9kZXRlY3Rv
cihzZWxmKToKLSAgICAgICAgcmV0dXJuIExlYWtEZXRlY3RvcihzZWxmLl9tb2NrX3BvcnQoKSkK
LQotICAgIGRlZiB0ZXN0X2xlYWtzX2FyZ3Moc2VsZik6Ci0gICAgICAgIGRldGVjdG9yID0gc2Vs
Zi5fbWFrZV9kZXRlY3RvcigpCi0gICAgICAgIGRldGVjdG9yLl9jYWxsc3RhY2tzX3RvX2V4Y2x1
ZGVfZnJvbV9sZWFrcyA9IGxhbWJkYTogWydmb28gYmFyJywgJ0JBWiddCi0gICAgICAgIGRldGVj
dG9yLl90eXBlc190b19leGx1ZGVfZnJvbV9sZWFrcyA9IGxhbWJkYTogWydhYmNkZWZnJywgJ2hp
IGprbG1ubyddCi0gICAgICAgIGV4cGVjdGVkX2FyZ3MgPSBbJy0tZXhjbHVkZS1jYWxsc3RhY2s9
ImZvbyBiYXIiJywgJy0tZXhjbHVkZS1jYWxsc3RhY2s9IkJBWiInLCAnLS1leGNsdWRlLXR5cGU9
ImFiY2RlZmciJywgJy0tZXhjbHVkZS10eXBlPSJoaSBqa2xtbm8iJywgMTIzNF0KLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoZGV0ZWN0b3IuX2xlYWtzX2FyZ3MoMTIzNCksIGV4cGVjdGVkX2Fy
Z3MpCi0KLSAgICBleGFtcGxlX2xlYWtzX291dHB1dCA9ICIiIlByb2Nlc3MgNTEyMjogNjYzNzQ0
IG5vZGVzIG1hbGxvY2VkIGZvciA3ODY4MyBLQgotUHJvY2VzcyA1MTIyOiAzMzczMDEgbGVha3Mg
Zm9yIDY1MjUyMTYgdG90YWwgbGVha2VkIGJ5dGVzLgotTGVhazogMHgzOGNiNjAwICBzaXplPTMw
NzIgIHpvbmU6IERlZmF1bHRNYWxsb2Nab25lXzB4MWQ5NDAwMCAgIGluc3RhbmNlIG9mICdOU0NG
RGF0YScsIHR5cGUgT2JqQywgaW1wbGVtZW50ZWQgaW4gRm91bmRhdGlvbgotICAgICAgICAweGEw
MzNmMGI4IDB4MDEwMDEzODQgMHgwMDAwMGIzYSAweDAwMDAwYjNhICAgICAuLjMuLi4uLjouLi46
Li4uCi0gICAgICAgIDB4MDAwMDAwMDAgMHgwMzhjYjYyMCAweDAwMDAwMDAwIDB4MDAwMDAwMDAg
ICAgIC4uLi4gLi4uLi4uLi4uLi4KLSAgICAgICAgMHgwMDAwMDAwMCAweDIxMDAwMDAwIDB4NzI2
YzY0NjggMHgwMDAwMDAwMCAgICAgLi4uLi4uLiFoZGxyLi4uLgotICAgICAgICAweDAwMDAwMDAw
IDB4NzI2OTY0NmQgMHg2YzcwNzA2MSAweDAwMDAwMDAwICAgICAuLi4ubWRpcmFwcGwuLi4uCi0g
ICAgICAgIDB4MDAwMDAwMDAgMHgwNDAwMDAwMCAweDczNmM2OWMxIDB4MDAwMDAwNzQgICAgIC4u
Li4uLi4uLmlsc3QuLi4KLSAgICAgICAgMHg2Zjc0YTkyMyAweDAwMDAwMDZmIDB4NzQ2MTY0MWIg
MHgwMDAwMDA2MSAgICAgIy50b28uLi4uZGF0YS4uLgotICAgICAgICAweDAwMDAwMDAxIDB4NzY2
MTRjMDAgMHgyZTMyMzU2NiAweDMwMmUzMjM2ICAgICAuLi4uLkxhdmY1Mi42Mi4wCi0gICAgICAg
IDB4MzcwMDAwMDAgMHg2ZDYxNmVhOSAweDJmMDAwMDAwIDB4NjE3NDYxNjQgICAgIC4uLjcubmFt
Li4uL2RhdGEKLSAgICAgICAgLi4uCi1MZWFrOiAweDJhOWM5NjAgIHNpemU9Mjg4ICB6b25lOiBE
ZWZhdWx0TWFsbG9jWm9uZV8weDFkOTQwMDAKLSAgICAgICAgMHgwOWExY2M0NyAweDFiZGE4NTYw
IDB4M2Q0NzJjZDEgMHhmYmU5YmNjZCAgICAgRy4uLmAuLi4uLEc9Li4uLgotICAgICAgICAweDhi
Y2RhMDA4IDB4OWU5NzJhOTEgMHhhODkyY2Y2MyAweDI0NDhiZGIwICAgICAuLi4uLiouLmMuLi4u
LkgkCi0gICAgICAgIDB4NDczNmZjMzQgMHhkYmUyZDk0ZSAweDI1ZjU2Njg4IDB4ODM5NDAyYTQg
ICAgIDQuNkdOLi4uLmYuJS4uLi4KLSAgICAgICAgMHhkMTI0OTZiMyAweDU5YzQwYzEyIDB4OGNm
Y2FiMmEgMHhkMjBlZjljNCAgICAgLi4kLi4uLlkqLi4uLi4uLgotICAgICAgICAweGU3YzU2YjFi
IDB4NTgzNWFmNDUgMHhjNjkxMTVkZSAweDY5MjNlNGJiICAgICAuay4uRS41WC4uLi4uLiNpCi0g
ICAgICAgIDB4ODZmMTU1NTMgMHgxNWQ0MGZhOSAweDY4MTI4OGE0IDB4YzMzMjk4YTkgICAgIFNV
Li4uLi4uLi4uaC4uMi4KLSAgICAgICAgMHg0MzliYjUzNSAweGM0ZmM3NDNkIDB4N2RmYWFmZjgg
MHgyY2M0OWE0YSAgICAgNS4uQz10Li4uLi59Si4uLAotICAgICAgICAweGRkMTE5ZGY4IDB4N2Uw
ODY4MjEgMHgzZDdkMTI5ZSAweDJlMWIxNTQ3ICAgICAuLi4uIWgufi4ufT1HLi4uCi0gICAgICAg
IC4uLgotTGVhazogMHgyNTEwMmZlMCAgc2l6ZT0xNzYgIHpvbmU6IERlZmF1bHRNYWxsb2Nab25l
XzB4MWQ5NDAwMCAgIHN0cmluZyAnTlNFeGNlcHRpb24gRGF0YScKLSIiIgotCi0gICAgZGVmIHRl
c3RfcGFyc2VfbGVha3Nfb3V0cHV0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhz
ZWxmLl9tYWtlX2RldGVjdG9yKCkuX3BhcnNlX2xlYWtzX291dHB1dChzZWxmLmV4YW1wbGVfbGVh
a3Nfb3V0cHV0LCA1MTIyKSwgKDMzNzMwMSwgMCwgNjUyNTIxNikpCi0KLSAgICBkZWYgdGVzdF9s
ZWFrc19maWxlc19pbl9kaXJlY3Rvcnkoc2VsZik6Ci0gICAgICAgIGRldGVjdG9yID0gc2VsZi5f
bWFrZV9kZXRlY3RvcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGRldGVjdG9yLmxlYWtz
X2ZpbGVzX2luX2RpcmVjdG9yeSgnL2JvZ3VzLWRpcmVjdG9yeScpLCBbXSkKLSAgICAgICAgZGV0
ZWN0b3IuX2ZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7Ci0gICAgICAgICAgICAnL21vY2st
cmVzdWx0cy9sZWFrcy1EdW1wUmVuZGVyVHJlZS0wLTEudHh0JzogJycsCi0gICAgICAgICAgICAn
L21vY2stcmVzdWx0cy9sZWFrcy1EdW1wUmVuZGVyVHJlZS0xLTEudHh0JzogJycsCi0gICAgICAg
ICAgICAnL21vY2stcmVzdWx0cy9sZWFrcy1EdW1wUmVuZGVyVHJlZS0wLTIudHh0JzogJycsCi0g
ICAgICAgIH0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihkZXRlY3Rvci5sZWFrc19m
aWxlc19pbl9kaXJlY3RvcnkoJy9tb2NrLXJlc3VsdHMnKSksIDMpCi0KLSAgICBkZWYgdGVzdF9w
YXJzZV9sZWFrX2ZpbGVzKHNlbGYpOgotICAgICAgICBkZXRlY3RvciA9IHNlbGYuX21ha2VfZGV0
ZWN0b3IoKQotCi0gICAgICAgIGRlZiBtb2NrX3J1bl9zY3JpcHQobmFtZSwgYXJncywgaW5jbHVk
ZV9jb25maWd1cmF0aW9uX2FyZ3VtZW50cz1GYWxzZSk6Ci0gICAgICAgICAgICBwcmludCAiTU9D
SyBfcnVuX3NjcmlwdDogJXMgJXMiICUgKG5hbWUsIGFyZ3MpCi0gICAgICAgICAgICByZXR1cm4g
IiIiMSBjYWxscyBmb3IgMTYgYnl0ZXM6IC1bTlNVUkxSZXF1ZXN0IG11dGFibGVDb3B5V2l0aFpv
bmU6XSB8ICtbTlNPYmplY3QoTlNPYmplY3QpIGFsbG9jV2l0aFpvbmU6XSB8IF9pbnRlcm5hbF9j
bGFzc19jcmVhdGVJbnN0YW5jZUZyb21ab25lIHwgY2FsbG9jIHwgbWFsbG9jX3pvbmVfY2FsbG9j
Ci0KLXRvdGFsOiA1LDg4OCBieXRlcyAoMCBieXRlcyBleGNsdWRlZCkuIiIiCi0gICAgICAgIGRl
dGVjdG9yLl9wb3J0Ll9ydW5fc2NyaXB0ID0gbW9ja19ydW5fc2NyaXB0Ci0KLSAgICAgICAgbGVh
a19maWxlcyA9IFsnL21vY2stcmVzdWx0cy9sZWFrcy1EdW1wUmVuZGVyVHJlZS0xMjM0LnR4dCcs
ICcvbW9jay1yZXN1bHRzL2xlYWtzLUR1bXBSZW5kZXJUcmVlLTEyMzUudHh0J10KLSAgICAgICAg
ZXhwZWN0ZWRfc3Rkb3V0ID0gIk1PQ0sgX3J1bl9zY3JpcHQ6IHBhcnNlLW1hbGxvYy1oaXN0b3J5
IFsnLS1tZXJnZS1kZXB0aCcsIDUsICcvbW9jay1yZXN1bHRzL2xlYWtzLUR1bXBSZW5kZXJUcmVl
LTEyMzQudHh0JywgJy9tb2NrLXJlc3VsdHMvbGVha3MtRHVtcFJlbmRlclRyZWUtMTIzNS50eHQn
XVxuIgotICAgICAgICByZXN1bHRzX3R1cGxlID0gT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRw
dXRzKHNlbGYsIGRldGVjdG9yLnBhcnNlX2xlYWtfZmlsZXMsIFtsZWFrX2ZpbGVzXSwgZXhwZWN0
ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVz
dWx0c190dXBsZSwgKCI1LDg4OCBieXRlcyIsIDEpKQotCi0KIGNsYXNzIE1hY1Rlc3QocG9ydF90
ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgIGRlZiBwb3J0X21ha2VyKHNlbGYsIHBsYXRmb3Jt
KToKICAgICAgICAgIyBGSVhNRTogVGhpcyBwbGF0Zm9ybSBjaGVjayBzaG91bGQgbm8gbG9uZ2Vy
IGJlIG5lY2Vzc2FyeSBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgYXMgc29vbiBhcyBwb3NzaWJsZS4K
QEAgLTEyMiwxMCArNDUsNiBAQCBjbGFzcyBNYWNUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RD
YXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9za2lwcGVkX2ZpbGVfc2VhcmNo
X3BhdGhzKCksIGV4cGVjdGVkX3BhdGhzKQogCiAgICAgZGVmIHRlc3Rfc2tpcHBlZF9maWxlX3Nl
YXJjaF9wYXRocyhzZWxmKToKLSAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgbm8gbG9uZ2Vy
IGJlIG5lY2Vzc2FyeSwgYnV0IEknbSBub3QgYnJhdmUgZW5vdWdoIHRvIHJlbW92ZSBpdC4KLSAg
ICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgICAgICByZXR1cm4gTm9u
ZQotCiAgICAgICAgIHNlbGYuYXNzZXJ0X3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoJ21hYy1z
bm93bGVvcGFyZCcsIHNldChbJ21hYy1zbm93bGVvcGFyZCcsICdtYWMnXSkpCiAgICAgICAgIHNl
bGYuYXNzZXJ0X3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoJ21hYy1sZW9wYXJkJywgc2V0KFsn
bWFjLWxlb3BhcmQnLCAnbWFjJ10pKQogICAgICAgICAjIFdlIGNhbm5vdCB0ZXN0IGp1c3QgIm1h
YyIgaGVyZSBhcyB0aGUgTWFjUG9ydCBjb25zdHJ1Y3RvciBhdXRvbWF0aWNhbGx5IGZpbGxzIGlu
IHRoZSB2ZXJzaW9uIGZyb20gdGhlIHJ1bm5pbmcgT1MuCkBAIC0xNzMsMTAgKzkyLDYgQEAgc3Zn
L2JhdGlrL3RleHQvc21hbGxGb250cy5zdmcKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQu
dmVyc2lvbigpKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbnMoc2VsZik6Ci0gICAgICAgIHBvcnQg
PSBzZWxmLm1ha2VfcG9ydCgpCi0gICAgICAgIGlmIHBvcnQ6Ci0gICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUocG9ydC5uYW1lKCkgaW4gKCdtYWMtbGVvcGFyZCcsICdtYWMtc25vd2xlb3BhcmQn
LCAnbWFjLWxpb24nKSkKLQogICAgICAgICBzZWxmLmFzc2VydF9uYW1lKE5vbmUsICcxMC41LjMn
LCAnbWFjLWxlb3BhcmQnKQogICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdtYWMnLCAnMTAuNS4z
JywgJ21hYy1sZW9wYXJkJykKICAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFjLWxlb3BhcmQn
LCAnMTAuNC44JywgJ21hYy1sZW9wYXJkJykKQEAgLTIwMCw3ICsxMTUsNyBAQCBzdmcvYmF0aWsv
dGV4dC9zbWFsbEZvbnRzLnN2ZwogICAgICAgICAjIEZJWE1FOiBQb3J0IGNvbnN0cnVjdG9ycyBz
aG91bGQgbm90ICJwYXJzZSIgdGhlIHBvcnQgbmFtZSwgYnV0CiAgICAgICAgICMgcmF0aGVyIGJl
IHBhc3NlZCBjb21wb25lbnRzIChkaXJlY3RseSBvciB2aWEgc2V0dGVycykuICBPbmNlCiAgICAg
ICAgICMgd2UgZml4IHRoYXQsIHRoaXMgbWV0aG9kIHdpbGwgbmVlZCBhIHJlLXdyaXRlLgotICAg
ICAgICBwb3J0ID0gTWFjUG9ydCgnbWFjLSVzJyAlIHZlcnNpb24sIG9wdGlvbnM9TW9ja09wdGlv
bnMod2Via2l0X3Rlc3RfcnVubmVyPXVzZV93ZWJraXQyKSwgZmlsZXN5c3RlbT1Nb2NrRmlsZVN5
c3RlbSgpLCB1c2VyPU1vY2tVc2VyKCksIGV4ZWN1dGl2ZT1Nb2NrRXhlY3V0aXZlKCkpCisgICAg
ICAgIHBvcnQgPSBNYWNQb3J0KHBvcnRfbmFtZT0nbWFjLSVzJyAlIHZlcnNpb24sIG9wdGlvbnM9
TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPXVzZV93ZWJraXQyKSwgZmlsZXN5c3RlbT1N
b2NrRmlsZVN5c3RlbSgpLCB1c2VyPU1vY2tVc2VyKCksIGV4ZWN1dGl2ZT1Nb2NrRXhlY3V0aXZl
KCkpCiAgICAgICAgIGFic29sdXRlX3NlYXJjaF9wYXRocyA9IG1hcChwb3J0Ll93ZWJraXRfYmFz
ZWxpbmVfcGF0aCwgc2VhcmNoX3BhdGhzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0
LmJhc2VsaW5lX3NlYXJjaF9wYXRoKCksIGFic29sdXRlX3NlYXJjaF9wYXRocykKIApAQCAtMjIw
LDcgKzEzNSwzIEBAIHN2Zy9iYXRpay90ZXh0L3NtYWxsRm9udHMuc3ZnCiAgICAgICAgIHBvcnQu
X2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlKQogICAgICAgICBleHBl
Y3RlZF9zdGRlcnIgPSAiTU9DSyBydW5fY29tbWFuZDogWydUb29scy9TY3JpcHRzL3J1bi1zYWZh
cmknLCAnLS1yZWxlYXNlJywgJy1OU09wZW4nLCAndGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVj
a291dFxuIgogICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9y
dC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlLCBbInRlc3QuaHRtbCJdLCBleHBlY3RlZF9zdGRlcnI9
ZXhwZWN0ZWRfc3RkZXJyKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgcG9y
dF90ZXN0Y2FzZS5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQppbmRleCA4NmY0YThjMDgwZGEyNmUz
NjYyNGQ5YjAzN2NiYjA5NTllYTZkOGI4Li5lYjE0N2VhM2Y5ZGJlYTE2M2UyZWZjOWUzYzdlMWQy
YzZmMTQ5NDM3IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CkBAIC0zNDMsNyArMzQzLDcgQEAgY2xhc3Mg
UG9ydFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgaWYgbm90IHBvcnQ6CiAg
ICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihwb3J0LmFsbF90
ZXN0X2NvbmZpZ3VyYXRpb25zKCkpID4gMCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQu
dGVzdF9jb25maWd1cmF0aW9uKCkgaW4gcG9ydC5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKSBpbiBwb3J0
LmFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKCksICIlcyBub3QgaW4gJXMiICUgKHBvcnQudGVzdF9j
b25maWd1cmF0aW9uKCksIHBvcnQuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoKSkpCiAKICAgICBk
ZWYgaW50ZWdyYXRpb25fdGVzdF9odHRwX3NlcnZlcl9fbG9vcChzZWxmKToKICAgICAgICAgcG9y
dCA9IHNlbGYubWFrZV9wb3J0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2luLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93aW4ucHkKaW5kZXggM2RiODViNzQ1YjYzYmVhZWZiZTU5MjdlMGZjMjdlZDIy
ZmVkZTQ5Yi4uNzQxOGMyZmI5YzU5YjY5ZGRjMTE2MmJmNDAwODUwNDM3NTYzNmJlYiAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW4ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW4ucHkKQEAgLTI4
LDE3ICsyOCwxNSBAQAogCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCi1pbXBvcnQgc3lzCiAK
LWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1w
b3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53
ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQu
YXBwbGUgaW1wb3J0IEFwcGxlUG9ydAogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKIAogCi1jbGFzcyBXaW5Qb3J0KFdlYktpdFBvcnQpOgorY2xhc3MgV2luUG9ydChBcHBs
ZVBvcnQpOgogICAgIHBvcnRfbmFtZSA9ICJ3aW4iCiAKICAgICAjIFRoaXMgaXMgYSBsaXN0IG9m
IGFsbCBzdXBwb3J0ZWQgT1MtVkVSU0lPTiBwYWlycyBmb3IgdGhlIEFwcGxlV2luIHBvcnQKQEAg
LTU0LDcgKzUyLDEwIEBAIGNsYXNzIFdpblBvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICAgICBy
ZXR1cm4gJ3hwJwogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIF9kZXRlY3RfdmVyc2lv
bihzZWxmKToKKyAgICBkZWYgX2RldGVjdF92ZXJzaW9uKHNlbGYsIG9zX3ZlcnNpb25fc3RyaW5n
PU5vbmUpOgorICAgICAgICAjIEZJWE1FOiBvc192ZXJzaW9uX3N0cmluZyBpcyBmb3IgdW5pdCB0
ZXN0aW5nLCBidXQgbWF5IGV2ZW50dWFsbHkgYmUgcHJvdmlkZWQgYnkgZmFjdG9yeS5weSBpbnN0
ZWFkLgorICAgICAgICBpZiBvc192ZXJzaW9uX3N0cmluZyBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIHJldHVybiBvc192ZXJzaW9uX3N0cmluZwogICAgICAgICAjIE5vdGUsIHRoaXMgaW50ZW50
aW9uYWxseSByZXR1cm5zIE5vbmUgdG8gbWVhbiB0aGF0IGl0IGNhbid0IGRldGVjdCB3aGF0IHRo
ZSBjdXJyZW50IHZlcnNpb24gaXMuCiAgICAgICAgICMgQ2FsbGVycyBjYW4gdGhlbiBkZWNpZGUg
d2hhdCB2ZXJzaW9uIHRoZXkgd2FudCB0byBwcmV0ZW5kIHRvIGJlLgogICAgICAgICB0cnk6CkBA
IC02NywyMCArNjgsMTAgQEAgY2xhc3MgV2luUG9ydChXZWJLaXRQb3J0KToKICAgICAgICAgICAg
IHZlcnNpb25fdHVwbGUgPSB0dXBsZShtYXAoaW50LCBtYXRjaF9vYmplY3QuZ3JvdXBzKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb25fc3RyaW5nX2Zyb21fd2luZG93c192ZXJz
aW9uX3R1cGxlKHZlcnNpb25fdHVwbGUpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3NfdmVy
c2lvbl9zdHJpbmc9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICAjIEZJWE1FOiBUaGlzIHdpbGwg
bm90IGNyZWF0ZSBhIHByb3Blcmx5IHZlcnNpb25lZCBXaW5Qb3J0IG9iamVjdCB3aGVuIGluc3Rh
bnRpYXRlZCBmcm9tIGEgYnVpbGRib3QtbmFtZSwgbGlrZSB3aW4teHAuCi0gICAgICAgICMgV2Un
bGwgbmVlZCB0byBhZGQgcG9ydF9uYW1lIHBhcnNpbmcgb2Ygc29tZSBraW5kIChlaXRoZXIgaGVy
ZSwgb3IgaW4gZmFjdG9yeS5weSkuCi0gICAgICAgIFdlYktpdFBvcnQuX19pbml0X18oc2VsZiwg
Kiprd2FyZ3MpCi0gICAgICAgIHNlbGYuX3ZlcnNpb24gPSBvc192ZXJzaW9uX3N0cmluZyBvciBz
ZWxmLl9kZXRlY3RfdmVyc2lvbigpIG9yICdmdXR1cmUnICAjIEZJWE1FOiBUaGlzIGlzIGEgaGFj
aywgYXMgVGVzdENvbmZpZ3VyYXRpb24gYXNzdW1lcyB0aGF0IHRoaXMgdmFsdWUgaXMgbmV2ZXIg
Tm9uZSBldmVuIHRob3VnaCB0aGUgYmFzZSAid2luIiBwb3J0IGhhcyBubyAidmVyc2lvbiIuCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgQXBwbGVQb3J0Ll9faW5p
dF9fKHNlbGYsICoqa3dhcmdzKQogICAgICAgICBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0gJ3dp
bicKIAotICAgICMgRklYTUU6IEEgbW9yZSBzb3BoaXNpdGNhdGVkIHZlcnNpb24gb2YgdGhpcyBm
dW5jdGlvbiBzaG91bGQgbW92ZSB0byBXZWJLaXRQb3J0IGFuZCByZXBsYWNlIGFsbCBjYWxscyB0
byBuYW1lKCkuCi0gICAgZGVmIF9wb3J0X25hbWVfd2l0aF92ZXJzaW9uKHNlbGYpOgotICAgICAg
ICBjb21wb25lbnRzID0gW3NlbGYucG9ydF9uYW1lXQotICAgICAgICBpZiBzZWxmLl92ZXJzaW9u
ICE9ICdmdXR1cmUnOiAgIyBGSVhNRTogVGhpcyBpcyBhIGhhY2ssIGJ1dCBUZXN0Q29uZmlndXJh
dGlvbiBkb2Vzbid0IGxpa2Ugc2VsZi5fdmVyc2lvbiBldmVyIGJlaW5nIE5vbmUuCi0gICAgICAg
ICAgICBjb21wb25lbnRzLmFwcGVuZChzZWxmLl92ZXJzaW9uKQotICAgICAgICByZXR1cm4gJy0n
LmpvaW4oY29tcG9uZW50cykKLQogICAgIGRlZiBiYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToK
ICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZmFsbGJhY2tfaW5kZXggPSBzZWxmLlZFUlNJT05f
RkFMTEJBQ0tfT1JERVIuaW5kZXgoc2VsZi5fcG9ydF9uYW1lX3dpdGhfdmVyc2lvbigpKQpAQCAt
OTcsMTYgKzg4LDYgQEAgY2xhc3MgV2luUG9ydChXZWJLaXRQb3J0KToKICAgICAgICAgZmFsbGJh
Y2tfbmFtZXMuZXh0ZW5kKFsnbWFjLWxpb24nLCAnbWFjJ10pCiAgICAgICAgIHJldHVybiBtYXAo
c2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIGZhbGxiYWNrX25hbWVzKQogCi0gICAgZGVmIF9n
ZW5lcmF0ZV9hbGxfdGVzdF9jb25maWd1cmF0aW9ucyhzZWxmKToKLSAgICAgICAgY29uZmlndXJh
dGlvbnMgPSBbXQotICAgICAgICBmb3IgdmVyc2lvbiBpbiBzZWxmLlZFUlNJT05fRkFMTEJBQ0tf
T1JERVI6Ci0gICAgICAgICAgICB2ZXJzaW9uID0gdmVyc2lvbi5yZXBsYWNlKCd3aW4tJywgJycp
Ci0gICAgICAgICAgICBpZiB2ZXJzaW9uID09ICd3aW4nOiAgIyBJdCdzIHVuY2xlYXIgd2hhdCB0
aGUgInZlcnNpb24iIGZvciAnd2luJyBpcz8KLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAg
ICAgICAgICAgZm9yIGJ1aWxkX3R5cGUgaW4gc2VsZi5BTExfQlVJTERfVFlQRVM6Ci0gICAgICAg
ICAgICAgICAgY29uZmlndXJhdGlvbnMuYXBwZW5kKFRlc3RDb25maWd1cmF0aW9uKHZlcnNpb249
c2VsZi5fdmVyc2lvbiwgYXJjaGl0ZWN0dXJlPSd4ODYnLCBidWlsZF90eXBlPWJ1aWxkX3R5cGUs
IGdyYXBoaWNzX3R5cGU9J2NwdScpKQotICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbnMKLQog
ICAgICMgRklYTUU6IHdlYmtpdHBlcmwvaHR0cGQucG0gaW5zdGFsbHMgL3Vzci9saWIvYXBhY2hl
L2xpYnBocDQuZGxsIG9uIGN5Y3dpbiBhdXRvbWF0aWNhbGx5CiAgICAgIyBhcyBwYXJ0IG9mIHJ1
bm5pbmcgb2xkLXJ1bi13ZWJraXQtdGVzdHMuICBUaGF0J3MgYmFkIGRlc2lnbiwgYnV0IHdlIG1h
eSBuZWVkIHNvbWUgc2ltaWxhciBoYWNrLgogICAgICMgV2UgbWlnaHQgdXNlIHNldHVwX2Vudmly
b25fZm9yX3NlcnZlciBmb3Igc3VjaCBhIGhhY2sgKG9yIG1vZGlmeSBhcGFjaGVfaHR0cF9zZXJ2
ZXIucHkpLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93aW5fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dpbl91bml0dGVzdC5weQppbmRleCBhNzEyODNlNzA4ZWUwYWQ1ZjdjNmViZDEyMzFi
YjJlMDIyYzNmMDExLi5hNDhhZGUyMjA2ODc2MDQ4YmYzMGYyNjY3MDExN2Y4MzUyNDg4ZWQ1IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91
bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3dpbl91bml0dGVzdC5weQpAQCAtODUsMyArODUsMTIgQEAgY2xhc3MgV2luUG9ydFRlc3QocG9y
dF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3Bh
dGgoWyd3aW4td2syJywgJ3dpbi12aXN0YScsICd3aW4tN3NwMCcsICd3aW4nLCAnbWFjLXdrMics
ICdtYWMtbGlvbicsICdtYWMnXSwgJ3Zpc3RhJywgdXNlX3dlYmtpdDI9VHJ1ZSkKICAgICAgICAg
c2VsZi5fYXNzZXJ0X3NlYXJjaF9wYXRoKFsnd2luLXdrMicsICd3aW4tN3NwMCcsICd3aW4nLCAn
bWFjLXdrMicsICdtYWMtbGlvbicsICdtYWMnXSwgJzdzcDAnLCB1c2Vfd2Via2l0Mj1UcnVlKQog
ICAgICAgICBzZWxmLl9hc3NlcnRfc2VhcmNoX3BhdGgoWyd3aW4td2syJywgJ3dpbicsICdtYWMt
d2syJywgJ21hYy1saW9uJywgJ21hYyddLCAnYm9ndXMnLCB1c2Vfd2Via2l0Mj1UcnVlKQorCisg
ICAgZGVmIF9hc3NlcnRfdmVyc2lvbihzZWxmLCBwb3J0X25hbWUsIGV4cGVjdGVkX3ZlcnNpb24p
OgorICAgICAgICBwb3J0ID0gV2luUG9ydChwb3J0X25hbWU9cG9ydF9uYW1lLCBmaWxlc3lzdGVt
PU1vY2tGaWxlU3lzdGVtKCksIHVzZXI9TW9ja1VzZXIoKSwgZXhlY3V0aXZlPU1vY2tFeGVjdXRp
dmUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC52ZXJzaW9uKCksIGV4cGVjdGVk
X3ZlcnNpb24pCisKKyAgICBkZWYgdGVzdF92ZXJzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5f
YXNzZXJ0X3ZlcnNpb24oJ3dpbi14cCcsICd4cCcpCisgICAgICAgIHNlbGYuX2Fzc2VydF92ZXJz
aW9uKCd3aW4tdmlzdGEnLCAndmlzdGEnKQorICAgICAgICBzZWxmLl9hc3NlcnRfdmVyc2lvbign
d2luLTdzcDAnLCAnN3NwMCcpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>