<?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>53756</bug_id>
          
          <creation_ts>2011-02-03 21:13:56 -0800</creation_ts>
          <short_desc>Refactor and/or split and/or rename the extend-selection tests to be clearer what they&apos;re doing, and able to be run manually</short_desc>
          <delta_ts>2011-02-22 22:06:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>54429</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin (Ben) Kalman">kalman</reporter>
          <assigned_to name="Benjamin (Ben) Kalman">kalman</assigned_to>
          <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>345320</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-03 21:13:56 -0800</bug_when>
    <thetext>Refactor and/or split and/or rename the extend-selection tests to be clearer what they&apos;re doing, and able to be run manually</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345321</commentid>
    <comment_count>1</comment_count>
      <attachid>81186</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-03 21:17:05 -0800</bug_when>
    <thetext>Created attachment 81186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345343</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-03 21:40:40 -0800</bug_when>
    <thetext>Umm, patch didn&apos;t seem to upload correctly.  I will try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345357</commentid>
    <comment_count>3</comment_count>
      <attachid>81186</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-03 22:20:10 -0800</bug_when>
    <thetext>Comment on attachment 81186
Patch

Making tests manually runnable is good but all these rewrites of script isn&apos;t that great.  It&apos;s really hard to see that new tests are testing the same things the old tests were testing.  In general, we must be careful when modifying tests because subtle differences may affect what tests do.  At least, we should separate refactoring and changes to make it manually runnable.

I don&apos;t think separating the line boundary tests into LTR/RTL tests is a good idea because having both results on one test has helped us catching regressions in either result since extend-selection-* tests are written so that LTR/RTL results should match.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345360</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-03 22:26:03 -0800</bug_when>
    <thetext>&gt; Making tests manually runnable is good but all these rewrites of script isn&apos;t that great.  It&apos;s really hard to see that new tests are testing the same things the old tests were testing.  In general, we must be careful when modifying tests because subtle differences may affect what tests do.  At least, we should separate refactoring and changes to make it manually runnable.

If you look at the changes to the expected results it&apos;s pretty clear that it&apos;s testing the same thing.

&gt; 
&gt; I don&apos;t think separating the line boundary tests into LTR/RTL tests is a good idea because having both results on one test has helped us catching regressions in either result since extend-selection-* tests are written so that LTR/RTL results should match.

The reason I split those into LTR and RTL tests is because it&apos;s impossible to run them manually without doing that.  The transition from LTR to RTL actually modifies the dom mid-test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345362</commentid>
    <comment_count>5</comment_count>
      <attachid>81190</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-03 22:28:09 -0800</bug_when>
    <thetext>Created attachment 81190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345369</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-03 22:41:08 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Making tests manually runnable is good but all these rewrites of script isn&apos;t that great.  It&apos;s really hard to see that new tests are testing the same things the old tests were testing.  In general, we must be careful when modifying tests because subtle differences may affect what tests do.  At least, we should separate refactoring and changes to make it manually runnable.
&gt; 
&gt; If you look at the changes to the expected results it&apos;s pretty clear that it&apos;s testing the same thing.

Sure expected tests are same but extend-selection-* tests relies heavily on scripts so I wouldn&apos;t modify like this all at once.

&gt; &gt; I don&apos;t think separating the line boundary tests into LTR/RTL tests is a good idea because having both results on one test has helped us catching regressions in either result since extend-selection-* tests are written so that LTR/RTL results should match.
&gt; 
&gt; The reason I split those into LTR and RTL tests is because it&apos;s impossible to run them manually without doing that.  The transition from LTR to RTL actually modifies the dom mid-test.

We need to find a better way of testing both LTR and RTL cases then.  I don&apos;t think it&apos;s acceptable to separate LTR/RTL tests; we&apos;ll have regressions in no time if we did that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345373</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-03 22:47:53 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; &gt; Making tests manually runnable is good but all these rewrites of script isn&apos;t that great.  It&apos;s really hard to see that new tests are testing the same things the old tests were testing.  In general, we must be careful when modifying tests because subtle differences may affect what tests do.  At least, we should separate refactoring and changes to make it manually runnable.
&gt; &gt; 
&gt; &gt; If you look at the changes to the expected results it&apos;s pretty clear that it&apos;s testing the same thing.
&gt; 
&gt; Sure expected tests are same but extend-selection-* tests relies heavily on scripts so I wouldn&apos;t modify like this all at once.

I don&apos;t think I know what you mean?  What would the value in splitting up a change like this?  Changes to the script are necessary, and whether they&apos;re made all at once or incrementally the end result is the same, that is, there would be the same amount of doubt that they&apos;re still reporting correctly.

And I think the chances of them being different are quite low given
 - they&apos;re the same now
 - for any incorrect cases, the code is simpler now.

&gt; 
&gt; &gt; &gt; I don&apos;t think separating the line boundary tests into LTR/RTL tests is a good idea because having both results on one test has helped us catching regressions in either result since extend-selection-* tests are written so that LTR/RTL results should match.
&gt; &gt; 
&gt; &gt; The reason I split those into LTR and RTL tests is because it&apos;s impossible to run them manually without doing that.  The transition from LTR to RTL actually modifies the dom mid-test.
&gt; 
&gt; We need to find a better way of testing both LTR and RTL cases then.  I don&apos;t think it&apos;s acceptable to separate LTR/RTL tests; we&apos;ll have regressions in no time if we did that.

We could have both the LTR and RTL doms in the same test, but when I did that there were ~50 divs on the page and it becomes more difficult to spot what actually went wrong.  It&apos;s a tradeoff I guess.

I still don&apos;t know how having them in separate tests implies regressions, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345374</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-03 22:56:01 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; I don&apos;t think I know what you mean?  What would the value in splitting up a change like this?  Changes to the script are necessary, and whether they&apos;re made all at once or incrementally the end result is the same, that is, there would be the same amount of doubt that they&apos;re still reporting correctly.
&gt; 
&gt; And I think the chances of them being different are quite low given
&gt;  - they&apos;re the same now
&gt;  - for any incorrect cases, the code is simpler now.

Let&apos;s make more incremental changes.  We always prefer to have many small changes over having one big patch as long as each change is coherent.

&gt; &gt; We need to find a better way of testing both LTR and RTL cases then.  I don&apos;t think it&apos;s acceptable to separate LTR/RTL tests; we&apos;ll have regressions in no time if we did that.
&gt; 
&gt; We could have both the LTR and RTL doms in the same test, but when I did that there were ~50 divs on the page and it becomes more difficult to spot what actually went wrong.  It&apos;s a tradeoff I guess.

We could separate tests in line boundary into more categories if you wish.

&gt; I still don&apos;t know how having them in separate tests implies regressions, though.

Because extend-selection* doesn&apos;t print PASS/FAIL, there have been multiple occasions where people just rebaselined the expected result when the test started to fail on non-Mac platforms instead of actually fixing them.  And if we had LTR/RTL results on separate files, people are very unlikely to realize that those results supposed to match.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345375</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-03 23:00:19 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; I don&apos;t think I know what you mean?  What would the value in splitting up a change like this?  Changes to the script are necessary, and whether they&apos;re made all at once or incrementally the end result is the same, that is, there would be the same amount of doubt that they&apos;re still reporting correctly.
&gt; &gt; 
&gt; &gt; And I think the chances of them being different are quite low given
&gt; &gt;  - they&apos;re the same now
&gt; &gt;  - for any incorrect cases, the code is simpler now.
&gt; 
&gt; Let&apos;s make more incremental changes.  We always prefer to have many small changes over having one big patch as long as each change is coherent.

Yes exactly, so long as each change is coherent.  If you look at the patch it&apos;s got a lot of renaming to make the vocabulary more consistent, code simplification, etc that spans the html as well as js files.  It would an unreasonable amount of effort to try to separate them.

&gt; 
&gt; &gt; &gt; We need to find a better way of testing both LTR and RTL cases then.  I don&apos;t think it&apos;s acceptable to separate LTR/RTL tests; we&apos;ll have regressions in no time if we did that.
&gt; &gt; 
&gt; &gt; We could have both the LTR and RTL doms in the same test, but when I did that there were ~50 divs on the page and it becomes more difficult to spot what actually went wrong.  It&apos;s a tradeoff I guess.
&gt; 
&gt; We could separate tests in line boundary into more categories if you wish.

After this change I hope to make the tests more clearly targeted, if possible.  I just want to make them manually testable for now, to help with another patch I&apos;m working on :)

&gt; 
&gt; &gt; I still don&apos;t know how having them in separate tests implies regressions, though.
&gt; 
&gt; Because extend-selection* doesn&apos;t print PASS/FAIL, there have been multiple occasions where people just rebaselined the expected result when the test started to fail on non-Mac platforms instead of actually fixing them.  And if we had LTR/RTL results on separate files, people are very unlikely to realize that those results supposed to match.

Ok I agree, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345379</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-03 23:14:03 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Let&apos;s make more incremental changes.  We always prefer to have many small changes over having one big patch as long as each change is coherent.
&gt; 
&gt; Yes exactly, so long as each change is coherent.  If you look at the patch it&apos;s got a lot of renaming to make the vocabulary more consistent, code simplification, etc that spans the html as well as js files.  It would an unreasonable amount of effort to try to separate them.

We should do cleanup first.  You can even separate renaming into a separate patch.  That way, each patch&apos;s correctness will be self-evident.  Once we cleaned up the test, then we can split the tests or whatever you please to do.

In general, working on WebKit requires making changes locally and then splitting the changes into cleanup/refactoring and actual fix because it&apos;s patch author&apos;s responsibility to make sure the patch is small (~20KB) and changes are easy to review.

&gt; &gt; We could separate tests in line boundary into more categories if you wish.
&gt; 
&gt; After this change I hope to make the tests more clearly targeted, if possible.  I just want to make them manually testable for now, to help with another patch I&apos;m working on :)

Yeah, separating tests into smaller tests will be nice because we&apos;ll be able to diagnose the issues more easily when they fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346473</commentid>
    <comment_count>11</comment_count>
      <attachid>81190</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-06 22:21:00 -0800</bug_when>
    <thetext>Comment on attachment 81190
Patch

r- per discussion on the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355870</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-22 22:06:39 -0800</bug_when>
    <thetext>This is now redundant, fixed via other patches.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81186</attachid>
            <date>2011-02-03 21:17:05 -0800</date>
            <delta_ts>2011-02-03 22:28:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53756-20110204161702.patch</filename>
            <type>text/plain</type>
            <size>45478</size>
            <attacher name="Benjamin (Ben) Kalman">kalman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMmFlM2RiNzI5NTUwNWNmNTAzNGM1MTE4ZWQ4MTQ2M2YwN2E0YzU1Li5iNjlkMTZj
MWY3YjRlMzUxOTJlNzI1MDBkNjgwNTBjYTc1M2FlMmI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAK
KzIwMTEtMDItMDMgIEJlbmphbWluIEthbG1hbiAgPGthbG1hbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgYW5k
L29yIHNwbGl0IGFuZC9vciByZW5hbWUgdGhlIGV4dGVuZC1zZWxlY3Rpb24gdGVzdHMgdG8gYmUg
Y2xlYXJlciB3aGF0IHRoZXkncmUgZG9pbmcsIGFuZCBhYmxlIHRvIGJlIHJ1biBtYW51YWxseQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3NTYKKwor
ICAgICAgICBTdW1tYXJ5IG9mIGNoYW5nZXM6CisgICAgICAgICAgLSBSZW5hbWVkIGV4dGVuZC1z
ZWxlY3Rpb24taG9tZS1lbmQgdG8gZXh0ZW5kLXNlbGVjdGlvbi1saW5lYm91bmRhcnkuCisgICAg
ICAgICAgLSBTcGxpdCB0aGUgYWJvdmUgaW50byBzZXBhcmF0ZSBMVFIgYW5kIFJUTCB0ZXN0cy4K
KyAgICAgICAgICAtIFNwbGl0IGV4dGVuZC1zZWxlY3Rpb24tZW5jbG9zaW5nLWJsb2NrIGludG8g
c2VwYXJhdGUgY2hhcmFjdGVyIGFuZCB3b3JkIHRlc3RzLgorICAgICAgICAgIC0gUmVmYWN0b3Iv
Y2hhbmdlIHRoZSB0ZXN0cyBzbyBhcyB0byBvbmx5IGNsZWFuIHRoZSBET00gaWYgYSBsYXlvdXQg
dGVzdHMgaXMgcnVubmluZy4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1z
ZWxlY3Rpb24tY2hhcmFjdGVyLWVuY2xvc2luZy1ibG9jay5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWNoYXJhY3Rlci5odG1sOgorICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tZW5jbG9zaW5nLWJsb2Nr
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVj
dGlvbi1ob21lLWVuZC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1ob21lLWVuZC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tbGluZWJvdW5kYXJ5LWx0ci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1z
ZWxlY3Rpb24tbGluZWJvdW5kYXJ5LWx0ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWxpbmVib3VuZGFyeS1ydGwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWxp
bmVib3VuZGFyeS1ydGwuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24v
ZXh0ZW5kLXNlbGVjdGlvbi13b3JkLWVuY2xvc2luZy1ibG9jay1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24td29yZC1lbmNs
b3NpbmctYmxvY2suaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vZXh0
ZW5kLXNlbGVjdGlvbi13b3JkLmh0bWw6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vcmVz
b3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24uanM6CisgICAgICAgIChleHRlbmRTZWxlY3Rpb25XaXRo
aW5CbG9jayk6CisgICAgICAgIChleHRlbmRTZWxlY3Rpb25Ub0VuZCk6CisgICAgICAgIChmb2xk
KToKKyAgICAgICAgKGNvbXBhcmVJbkRpcmVjdGlvbik6CisgICAgICAgIChjb21wYXJlSW5SZXZl
cnNlT3JkZXIpOgorICAgICAgICAoY29tcGFyZUluU2FtZU9yZGVyKToKKyAgICAgICAgKGV4dGVu
ZEFuZExvZ1NlbGVjdGlvbik6CisgICAgICAgIChleHRlbmRBbmRMb2dTZWxlY3Rpb25XaXRoaW5C
bG9jayk6CisgICAgICAgIChleHRlbmRBbmRMb2dTZWxlY3Rpb25Ub0VuZCk6CisgICAgICAgIChy
dW5TZWxlY3Rpb25UZXN0c1dpdGhHcmFudWxhcml0eSk6CisgICAgICAgIChnZXRUZXN0Tm9kZUNv
bnRhaW5lcik6CisgICAgICAgIChjcmVhdGVOb2RlKToKKyAgICAgICAgKGNyZWF0ZUNoYXJBbmRX
b3JkTm9kZXMpOgorICAgICAgICAoY3JlYXRlRW5jbG9zaW5nQmxvY2tOb2Rlcyk6CisgICAgICAg
IChjcmVhdGVIb21lRW5kTm9kZXMpOgorICAgICAgICAoY3JlYXRlQWxsTm9kZXMpOgorICAgICAg
ICAoc2V0dXBGb3JMYXlvdXRUZXN0KToKKwogMjAxMS0wMS0yNyAgRGlyayBTY2h1bHplICA8a3Jp
dEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcmViYXNlbGluZS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tY2hhcmFj
dGVyLWVuY2xvc2luZy1ibG9jay5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
ZXh0ZW5kLXNlbGVjdGlvbi1jaGFyYWN0ZXItZW5jbG9zaW5nLWJsb2NrLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDRhYzcxOTA0NzQ1NDQ5YWZmMjNkOWY0YjcwOTQ0YTMyOGVhNWJjYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tY2hh
cmFjdGVyLWVuY2xvc2luZy1ibG9jay5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiIGhyZWY9InJlc291cmNlcy9leHRlbmQtc2VsZWN0aW9uLmNzcyIgLz4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXh0ZW5kLXNlbGVjdGlvbi5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0
aW9uIHJ1blNlbGVjdGlvblRlc3RzV2l0aEdyYW51bGFyaXR5Rm9yRW5jbG9zaW5nQmxvY2sodGVz
dE5vZGVzLCBncmFudWxhcml0eSkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3ROb2Rl
cy5sZW5ndGg7ICsraSkgeworICAgICAgICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXN0
Tm9kZXNbaV0sIDApOworCisgICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIExUUjpc
biIpOworICAgICAgICBsb2coIiAgRXh0ZW5kaW5nIHJpZ2h0OiAiKTsKKyAgICAgICAgZXh0ZW5k
QW5kTG9nU2VsZWN0aW9uV2l0aGluQmxvY2soInJpZ2h0IiwgZ3JhbnVsYXJpdHkpOworCisgICAg
ICAgIGxvZygiICBFeHRlbmRpbmcgbGVmdDogICIpOworICAgICAgICBleHRlbmRBbmRMb2dTZWxl
Y3Rpb25XaXRoaW5CbG9jaygibGVmdCIsIGdyYW51bGFyaXR5KTsKKyAgICB9Cit9CisKK2xvZygi
XG5cblxuRXh0ZW5kaW5nIGJ5IGNoYXJhY3RlclxuIik7CitydW5TZWxlY3Rpb25UZXN0c1dpdGhH
cmFudWxhcml0eUZvckVuY2xvc2luZ0Jsb2NrKGNyZWF0ZUVuY2xvc2luZ0Jsb2NrTm9kZXMoKSwg
ImNoYXJhY3RlciIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIHNl
dHVwRm9yTGF5b3V0VGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWNoYXJhY3Rlci5odG1s
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1jaGFyYWN0
ZXIuaHRtbAppbmRleCA5ZjI3N2Y3NGI2M2U0N2E4MWY3MTQ4ZDAxYjk4Mjc0ZmJlMzM0YTM5Li44
MmFjNTFjZTBjNWQ0NTlmOGMzMmJiZjI4ZGIzOTRlMTY2OTc5NjU4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWNoYXJhY3Rlci5odG1s
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tY2hh
cmFjdGVyLmh0bWwKQEAgLTgsMTYgKzgsMTAgQEAKIDxib2R5PgogPHByZSBpZD0iY29uc29sZSI+
PC9wcmU+CiA8c2NyaXB0PgorbG9nKCJcblxuXG5FeHRlbmRpbmcgYnkgY2hhcmFjdGVyXG4iKTsK
K3J1blNlbGVjdGlvblRlc3RzV2l0aEdyYW51bGFyaXR5KGNyZWF0ZUNoYXJBbmRXb3JkTm9kZXMo
KSwgImNoYXJhY3RlciIpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgdmFyIHRlc3RzID0g
Y3JlYXRlVGVzdE5vZGVzKCJjaGFyLWFuZC13b3JkIik7Ci0gICAgdmFyIHNlbCA9IGdldFNlbGVj
dGlvbigpOwotCi0gICAgbG9nKCJcblxuXG5FeHRlbmRpbmcgYnkgY2hhcmFjdGVyXG4iKTsKLSAg
ICB0ZXN0RXh0ZW5kaW5nU2VsZWN0aW9uKHRlc3RzLCAgc2VsLCAiY2hhcmFjdGVyIiwgMCk7Ci19
Ci0KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgc2V0dXBGb3JMYXlvdXRU
ZXN0KCk7CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tZW5jbG9zaW5nLWJsb2NrLmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWVuY2xvc2luZy1ibG9j
ay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTcwNjUzODkwZTljZmNhMjVk
NmMxYzVlZTk3MWU1NjJjNTFkYjU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rp
b24tZW5jbG9zaW5nLWJsb2NrLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Ci08bGluayByZWw9InN0
eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJyZXNvdXJjZXMvZXh0ZW5kLXNlbGVjdGlv
bi5jc3MiIC8+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24uanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KLTxzY3Jp
cHQ+Ci0KLWZ1bmN0aW9uIHRlc3RFeHRlbmRpbmdTZWxlY3Rpb25Gb3JFbmNsb3NpbmdCbG9jayh0
ZXN0cywgc2VsLCBncmFudWxhcml0eSkKLXsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3Rz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIExUUjpc
biAgRXh0ZW5kaW5nIHJpZ2h0OiAiKTsKLSAgICAgICAgc2VsLnNldFBvc2l0aW9uKHRlc3RzW2ld
LCAwKTsKLSAgICAgICAgdmFyIGx0clJpZ2h0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwg
InJpZ2h0IiwgZ3JhbnVsYXJpdHksIDEpOwotCi0gICAgICAgIGxvZygiICBFeHRlbmRpbmcgbGVm
dDogICIpOwotICAgICAgICB2YXIgbHRyTGVmdFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWws
ICJsZWZ0IiwgZ3JhbnVsYXJpdHksIDEpOwotICAgIH0KLX0KLQotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LQotICAgIHRlc3RzID0gY3JlYXRlVGVzdE5vZGVzKCJlbmNsb3NpbmctYmxvY2siKTsKLSAgICBz
ZWwgPSBnZXRTZWxlY3Rpb24oKTsKLQotICAgIGxvZygiXG5cblxuRXh0ZW5kaW5nIGJ5IGNoYXJh
Y3RlclxuIik7Ci0gICAgdGVzdEV4dGVuZGluZ1NlbGVjdGlvbkZvckVuY2xvc2luZ0Jsb2NrKHRl
c3RzLCAgc2VsLCAiY2hhcmFjdGVyIiwgMSk7Ci0gICAgbG9nKCJcblxuXG5cblxuRXh0ZW5kaW5n
IGJ5IHdvcmRcbiIpOwotICAgIHRlc3RFeHRlbmRpbmdTZWxlY3Rpb25Gb3JFbmNsb3NpbmdCbG9j
ayh0ZXN0cywgIHNlbCwgIndvcmQiLCAxKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWhv
bWUtZW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVu
ZC1zZWxlY3Rpb24taG9tZS1lbmQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkZjBiZjlmM2VjOGU3NzJkZWQ4YWYzNTY3NDRiZGRhZWEyOWQ1M2M5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24taG9tZS1lbmQtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLQotCi0KLUV4dGVuZGluZyBieSBsaW5lQm91bmRh
cnkKLVRlc3QgMSwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuYWJjIEFCQyB4eXogREVG
IGRlZlxuIlsoMSwxKSwgKDEsMjApXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG5hYmMgQUJD
IHh5eiBERUYgZGVmXG4iWygxLDIwKSwgKDEsMSldCi1UZXN0IDEsIFJUTDoKLSAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICJcbmFiYyBBQkMgeHl6IERFRiBkZWZcbiJbKDEsMSksICgxLDIwKV0KLSAgRXh0
ZW5kaW5nIGJhY2t3YXJkOiAgIlxuYWJjIEFCQyB4eXogREVGIGRlZlxuIlsoMSwyMCksICgxLDEp
XQotVGVzdCAyLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiXG5BQkMgeHl6IERFRiBkZWYg
R0hJXG4iWygxLDEpLCAoMSwyMCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbkFCQyB4eXog
REVGIGRlZiBHSElcbiJbKDEsMjApLCAoMSwxKV0KLVRlc3QgMiwgUlRMOgotICBFeHRlbmRpbmcg
Zm9yd2FyZDogIlxuQUJDIHh5eiBERUYgZGVmIEdISVxuIlsoMSwxKSwgKDEsMjApXQotICBFeHRl
bmRpbmcgYmFja3dhcmQ6ICAiXG5BQkMgeHl6IERFRiBkZWYgR0hJXG4iWygxLDIwKSwgKDEsMSld
Ci1UZXN0IDMsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbkFCQyBERUYgQUJDXG4iWygx
LDEpLCAoMSwxMildCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbkFCQyBERUYgQUJDXG4iWygx
LDEyKSwgKDEsMSldCi1UZXN0IDMsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbkFCQyBE
RUYgQUJDXG4iWygxLDEpLCAoMSwxMildCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbkFCQyBE
RUYgQUJDXG4iWygxLDEyKSwgKDEsMSldCi1UZXN0IDQsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndh
cmQ6ICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEsMSksICgxLDE0KV0KLSAgRXh0ZW5kaW5nIGJhY2t3
YXJkOiAgIlxuYWJjIGVmZCBkYWJlYlxuIlsoMSwxNCksICgxLDEpXQotVGVzdCA0LCBSVEw6Ci0g
IEV4dGVuZGluZyBmb3J3YXJkOiAiXG5hYmMgZWZkIGRhYmViXG4iWygxLDEpLCAoMSwxNCldCi0g
IEV4dGVuZGluZyBiYWNrd2FyZDogICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEsMTQpLCAoMSwxKV0K
LVRlc3QgNSwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAiIGFt
ZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQiWygwLDUpXSwgIkxvcmVt
ICJbKDAsMCldCi1UZXN0IDUsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygw
LDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1
KV0sICJMb3JlbSAiWygwLDApXQotVGVzdCA2LCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAi
TG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIg
YW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0KLVRlc3QgNiwgUlRMOgotICBFeHRlbmRpbmcg
Zm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFj
a3dhcmQ6ICAiIGFtZXQiWygwLDUpXSwgIkxvcmVtICJbKDAsMCldCi1UZXN0IDcsIExUUjoKLSAg
RXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0
ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQotVGVzdCA3
LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAs
NSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCww
KV0KLVRlc3QgOCwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAi
IGFtZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQiWygwLDUpXSwgIkxv
cmVtICJbKDAsMCldCi1UZXN0IDgsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAi
WygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0Ilso
MCw1KV0sICJMb3JlbSAiWygwLDApXQotVGVzdCA5LCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJk
OiAiTG9yZW0gIlsoMCwwKSwgKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJMb3JlbSAi
WygwLDUpLCAoMCwwKV0KLVRlc3QgOSwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVt
ICJbKDAsMCksICgwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiTG9yZW0gIlsoMCw1KSwg
KDAsMCldCi1UZXN0IDEwLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCww
KV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSld
LCAiTG9yZW0gIlsoMCwwKV0KLVRlc3QgMTAsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJM
b3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBh
bWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQotVGVzdCAxMSwgTFRSOgotICBFeHRlbmRpbmcg
Zm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAiaXBzdW0gZG9sb3IiWygwLDExKV0KLSAgRXh0ZW5k
aW5nIGJhY2t3YXJkOiAgImlwc3VtIGRvbG9yIlsoMCwxMSldLCAiTG9yZW0gIlsoMCwwKV0KLVRl
c3QgMTEsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgImlwc3Vt
IGRvbG9yIlsoMCwxMSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJpcHN1bSBkb2xvciJbKDAs
MTEpXSwgIkxvcmVtICJbKDAsMCldCi1UZXN0IDEyLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJk
OiAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDog
ICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0KLVRlc3QgMTIsIFJUTDoKLSAgRXh0ZW5k
aW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5n
IGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQotVGVzdCAxMywgTFRS
OgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCksICgwLDUpXQotICBFeHRlbmRp
bmcgYmFja3dhcmQ6ICAiTG9yZW0gIlsoMCw1KSwgKDAsMCldCi1UZXN0IDEzLCBSVEw6Ci0gIEV4
dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKSwgKDAsNSldCi0gIEV4dGVuZGluZyBiYWNr
d2FyZDogICJMb3JlbSAiWygwLDUpLCAoMCwwKV0KLVRlc3QgMTQsIExUUjoKLSAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICJcbiBKdXN0XG4gIlsoMiwyKV0sICJcbiBCRkRYXG4iWygyLDYpXQotICBFeHRl
bmRpbmcgYmFja3dhcmQ6ICAiXG4gQkZEWFxuIlsoMiw2KV0sICJcbiBKdXN0XG4gIlsoMiwyKV0K
LVRlc3QgMTQsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbiBKdXN0XG4gIlsoMiwyKV0s
ICJcbiBCRkRYXG4iWygyLDYpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG4gQkZEWFxuIlso
Miw2KV0sICJcbiBKdXN0XG4gIlsoMiwyKV0KLVRlc3QgMTUsIExUUjoKLSAgRXh0ZW5kaW5nIGZv
cndhcmQ6ICJcbiBKdXN0XG4gIlsoMiwyKV0sICJcbiBldmVyXG4iWygyLDYpXQotICBFeHRlbmRp
bmcgYmFja3dhcmQ6ICAiXG4gZXZlclxuIlsoMiw2KV0sICJcbiBKdXN0XG4gIlsoMiwyKV0KLVRl
c3QgMTUsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbiBKdXN0XG4gIlsoMiwyKV0sICJc
biBldmVyXG4iWygyLDYpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG4gZXZlclxuIlsoMiw2
KV0sICJcbiBKdXN0XG4gIlsoMiwyKV0KLVRlc3QgMTYsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndh
cmQ6ICJjYXIgbWVhbnMgQUJDLiJbKDAsMCksICgwLDE0KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJk
OiAgImNhciBtZWFucyBBQkMuIlsoMCwxNCksICgwLDApXQotVGVzdCAxNiwgUlRMOgotICBFeHRl
bmRpbmcgZm9yd2FyZDogImNhciBtZWFucyBBQkMuIlsoMCwwKSwgKDAsMTQpXQotICBFeHRlbmRp
bmcgYmFja3dhcmQ6ICAiY2FyIG1lYW5zIEFCQy4iWygwLDE0KSwgKDAsMCldCi1UZXN0IDE3LCBM
VFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwwKSwgKDAs
MTQpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwxNCks
ICgwLDApXQotVGVzdCAxNywgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIuGqnGNhciBERUYg
QUJDLuGqnSJbKDAsMCksICgwLDE0KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIuGqnGNhciBE
RUYgQUJDLuGqnSJbKDAsMTQpLCAoMCwwKV0KLVRlc3QgMTgsIExUUjoKLSAgRXh0ZW5kaW5nIGZv
cndhcmQ6ICJoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnS4iIlsoMCwwKSwgKDAsMjQpXQotICBF
eHRlbmRpbmcgYmFja3dhcmQ6ICAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMjQp
LCAoMCwwKV0KLVRlc3QgMTgsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJoZSBzYWlkICLh
qpxjYXIgREVGIEFCQ+GqnS4iIlsoMCwwKSwgKDAsMjQpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6
ICAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMjQpLCAoMCwwKV0KLVRlc3QgMTks
IExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJHSEkgSktMIE1OTyAn4aqbaGUgc2FpZCAi4aqc
Y2FyIERFRiBBQkPhqp0i4aqdJz8iWygwLDApLCAoMCw0MCldCi0gIEV4dGVuZGluZyBiYWNrd2Fy
ZDogICJHSEkgSktMIE1OTyAn4aqbaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWygw
LDQwKSwgKDAsMCldCi1UZXN0IDE5LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiR0hJIEpL
TCBNTk8gJ+Gqm2hlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdIuGqnSc/IlsoMCwwKSwgKDAsNDAp
XQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiR0hJIEpLTCBNTk8gJ+Gqm2hlIHNhaWQgIuGqnGNh
ciBERUYgQUJD4aqdIuGqnSc/IlsoMCw0MCksICgwLDApXQotVGVzdCAyMCwgTFRSOgotICBFeHRl
bmRpbmcgZm9yd2FyZDogIkFCQyBhYmMgREVGIlsoMCwwKSwgKDAsMTEpXQotICBFeHRlbmRpbmcg
YmFja3dhcmQ6ICAiQUJDIGFiYyBERUYiWygwLDExKSwgKDAsMCldCi1UZXN0IDIwLCBSVEw6Ci0g
IEV4dGVuZGluZyBmb3J3YXJkOiAiQUJDIGFiYyBERUYiWygwLDApLCAoMCwxMSldCi0gIEV4dGVu
ZGluZyBiYWNrd2FyZDogICJBQkMgYWJjIERFRiJbKDAsMTEpLCAoMCwwKV0KLVRlc3QgMjEsIExU
UjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCwwKSwgKDAsOCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDog
ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCw4
KSwgKDAsMCldCi1UZXN0IDIxLCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsMCksICgwLDgpXQot
ICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnICJbKDAsOCksICgwLDApXQotVGVzdCAyMiwgTFRSOgotICBFeHRlbmRp
bmcgZm9yd2FyZDogImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyAiWygwLDApLCAoMCw4KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDgpLCAoMCwwKV0KLVRl
c3QgMjIsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCwwKSwgKDAsOCldCi0gIEV4dGVuZGluZyBi
YWNrd2FyZDogICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgIlsoMCw4KSwgKDAsMCldCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24taG9tZS1lbmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24taG9tZS1lbmQuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzZkMjQ3YTA3N2E3M2EwMzE1ZDViNTgxZWI4YjIyMDc0OWQzNGZh
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWhvbWUtZW5kLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBo
cmVmPSJyZXNvdXJjZXMvZXh0ZW5kLXNlbGVjdGlvbi5jc3MiIC8+Ci08c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24uanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3RFeHRlbmRp
bmdMaW5lQm91bmRhcnkodGVzdHMsIHNlbCkKLXsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRl
c3RzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHRlc3RzW2ldLnN0eWxlLmRpcmVjdGlvbiA9ICJs
dHIiOwotICAgICAgICBsb2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBMVFI6XG4gIEV4dGVuZGlu
ZyBmb3J3YXJkOiAiKTsKLSAgICAgICAgc2VsLnNldFBvc2l0aW9uKHRlc3RzW2ldLCAwKTsKLSAg
ICAgICAgdmFyIGx0clJpZ2h0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwgImZvcndhcmQi
LCAibGluZUJvdW5kYXJ5IiwgMCk7Ci0KLSAgICAgICAgbG9nKCIgIEV4dGVuZGluZyBiYWNrd2Fy
ZDogICIpOwotICAgICAgICB2YXIgbHRyTGVmdFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWws
ICJiYWNrd2FyZCIsICJsaW5lQm91bmRhcnkiLCAwKTsKLQotICAgICAgICB0ZXN0c1tpXS5zdHls
ZS5kaXJlY3Rpb24gPSAicnRsIjsKLSAgICAgICAgbG9nKCJUZXN0ICIgKyAoaSArIDEpICsgIiwg
UlRMOlxuICBFeHRlbmRpbmcgZm9yd2FyZDogIik7Ci0gICAgICAgIHNlbC5zZXRQb3NpdGlvbih0
ZXN0c1tpXSwgMCk7Ci0gICAgICAgIHZhciBsdHJSaWdodFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlv
bihzZWwsICJmb3J3YXJkIiwgImxpbmVCb3VuZGFyeSIsIDApOwotCi0gICAgICAgIGxvZygiICBF
eHRlbmRpbmcgYmFja3dhcmQ6ICAiKTsKLSAgICAgICAgdmFyIGx0ckxlZnRQb3MgPSBleHRlbmRp
bmdTZWxlY3Rpb24oc2VsLCAiYmFja3dhcmQiLCAibGluZUJvdW5kYXJ5IiwgMCk7Ci0gICAgfQot
fQotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgdGVzdHMgPSBjcmVhdGVUZXN0Tm9kZXMoKTsg
Ly8gYWxsCi0gICAgdmFyIHNlbCA9IGdldFNlbGVjdGlvbigpOwotICAgIGxvZygiXG5cblxuRXh0
ZW5kaW5nIGJ5IGxpbmVCb3VuZGFyeVxuIik7Ci0gICAgdGVzdEV4dGVuZGluZ0xpbmVCb3VuZGFy
eSh0ZXN0cywgIHNlbCk7Ci19Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1saW5lYm91bmRhcnkt
bHRyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1z
ZWxlY3Rpb24tbGluZWJvdW5kYXJ5LWx0ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY1YmYy
MjQxMmM0YjU4ZGE3ZTI5ZDI0MTRiMzg3ZTk2NTlmOTIwNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tbGluZWJvdW5kYXJ5
LWx0ci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MSBAQAorCisKKworRXh0ZW5kaW5nIGJ5IGxp
bmVCb3VuZGFyeQorVGVzdCAxLCBMVFI6CisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIlxuYWJjIEFC
QyB4eXogREVGIGRlZlxuIlsoMSwxKSwgKDEsMjApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJc
bmFiYyBBQkMgeHl6IERFRiBkZWZcbiJbKDEsMjApXQorVGVzdCAyLCBMVFI6CisgIEV4dGVuZGlu
ZyBmb3J3YXJkOiAgIlxuQUJDIHh5eiBERUYgZGVmIEdISVxuIlsoMSwxKSwgKDEsMjApXQorICBF
eHRlbmRpbmcgYmFja3dhcmQ6ICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbKDEsMjApXQorVGVz
dCAzLCBMVFI6CisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIlxuQUJDIERFRiBBQkNcbiJbKDEsMSks
ICgxLDEyKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG5BQkMgREVGIEFCQ1xuIlsoMSwxMild
CitUZXN0IDQsIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG5hYmMgZWZkIGRhYmViXG4i
WygxLDEpLCAoMSwxNCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIlxuYWJjIGVmZCBkYWJlYlxu
IlsoMSwxNCldCitUZXN0IDUsIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlso
MCwwKV0sICIgYW1ldCJbKDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1
KV0KK1Rlc3QgNiwgTFRSOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwg
IiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQiWygwLDUpXQorVGVz
dCA3LCBMVFI6CisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkxvcmVtICJbKDAsMCldLCAiIGFtZXQi
WygwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICIgYW1ldCJbKDAsNSldCitUZXN0IDgsIExU
UjoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSld
CisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1KV0KK1Rlc3QgOSwgTFRSOgorICBF
eHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApLCAoMCw1KV0KKyAgRXh0ZW5kaW5nIGJh
Y2t3YXJkOiAiTG9yZW0gIlsoMCw1KV0KK1Rlc3QgMTAsIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndh
cmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2Fy
ZDogIiBhbWV0IlsoMCw1KV0KK1Rlc3QgMTEsIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAi
TG9yZW0gIlsoMCwwKV0sICJpcHN1bSBkb2xvciJbKDAsMTEpXQorICBFeHRlbmRpbmcgYmFja3dh
cmQ6ICJpcHN1bSBkb2xvciJbKDAsMTEpXQorVGVzdCAxMiwgTFRSOgorICBFeHRlbmRpbmcgZm9y
d2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3
YXJkOiAiIGFtZXQiWygwLDUpXQorVGVzdCAxMywgTFRSOgorICBFeHRlbmRpbmcgZm9yd2FyZDog
ICJMb3JlbSAiWygwLDApLCAoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiTG9yZW0gIlso
MCw1KV0KK1Rlc3QgMTQsIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG4gSnVzdFxuICJb
KDIsMildLCAiXG4gQkZEWFxuIlsoMiw2KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG4gQkZE
WFxuIlsoMiw2KV0KK1Rlc3QgMTUsIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG4gSnVz
dFxuICJbKDIsMildLCAiXG4gZXZlclxuIlsoMiw2KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAi
XG4gZXZlclxuIlsoMiw2KV0KK1Rlc3QgMTYsIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAi
Y2FyIG1lYW5zIEFCQy4iWygwLDApLCAoMCwxNCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogImNh
ciBtZWFucyBBQkMuIlsoMCwxNCldCitUZXN0IDE3LCBMVFI6CisgIEV4dGVuZGluZyBmb3J3YXJk
OiAgIuGqnGNhciBERUYgQUJDLuGqnSJbKDAsMCksICgwLDE0KV0KKyAgRXh0ZW5kaW5nIGJhY2t3
YXJkOiAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwxNCldCitUZXN0IDE4LCBMVFI6CisgIEV4dGVu
ZGluZyBmb3J3YXJkOiAgImhlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdLiIiWygwLDApLCAoMCwy
NCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogImhlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdLiIi
WygwLDI0KV0KK1Rlc3QgMTksIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiR0hJIEpLTCBN
Tk8gJ+Gqm2hlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdIuGqnSc/IlsoMCwwKSwgKDAsNDApXQor
ICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJHSEkgSktMIE1OTyAn4aqbaGUgc2FpZCAi4aqcY2FyIERF
RiBBQkPhqp0i4aqdJz8iWygwLDQwKV0KK1Rlc3QgMjAsIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndh
cmQ6ICAiQUJDIGFiYyBERUYiWygwLDApLCAoMCwxMSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDog
IkFCQyBhYmMgREVGIlsoMCwxMSldCitUZXN0IDIxLCBMVFI6CisgIEV4dGVuZGluZyBmb3J3YXJk
OiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygw
LDApLCAoMCw4KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsOCldCitUZXN0IDIyLCBMVFI6CisgIEV4
dGVuZGluZyBmb3J3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyAiWygwLDApLCAoMCw4KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsOCldCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24t
bGluZWJvdW5kYXJ5LWx0ci5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0
ZW5kLXNlbGVjdGlvbi1saW5lYm91bmRhcnktbHRyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE2NzllYTMz
ZWI2MjVkZGQ3M2IwMzdkMjA4ODg0NTM5ZWZjOTU1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tbGluZWJvdW5kYXJ5LWx0
ci5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9
InJlc291cmNlcy9leHRlbmQtc2VsZWN0aW9uLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvZXh0ZW5kLXNlbGVjdGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUg
aWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3RFeHRlbmRpbmdMaW5l
Qm91bmRhcnkodGVzdE5vZGVzKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdE5vZGVz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIHRlc3ROb2Rlc1tpXS5zdHlsZS5kaXJlY3Rpb24gPSAi
bHRyIjsKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGVzdE5vZGVzW2ldLCAw
KTsKKworICAgICAgICBsb2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBMVFI6XG4iKTsKKyAgICAg
ICAgbG9nKCIgIEV4dGVuZGluZyBmb3J3YXJkOiAgIik7CisgICAgICAgIGV4dGVuZEFuZExvZ1Nl
bGVjdGlvblRvRW5kKCJmb3J3YXJkIiwgImxpbmVCb3VuZGFyeSIpOworCisgICAgICAgIGxvZygi
ICBFeHRlbmRpbmcgYmFja3dhcmQ6ICIpOworICAgICAgICBleHRlbmRBbmRMb2dTZWxlY3Rpb25U
b0VuZCgiYmFja3dhcmQiLCAibGluZUJvdW5kYXJ5Iik7CisgICAgfQorfQorCitsb2coIlxuXG5c
bkV4dGVuZGluZyBieSBsaW5lQm91bmRhcnlcbiIpOwordGVzdEV4dGVuZGluZ0xpbmVCb3VuZGFy
eShjcmVhdGVBbGxOb2RlcygpKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICBzZXR1cEZvckxheW91dFRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1saW5lYm91
bmRhcnktcnRsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4
dGVuZC1zZWxlY3Rpb24tbGluZWJvdW5kYXJ5LXJ0bC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2FhNTRmMmM0ZWVlOTZlYTkwYTAxMTFkN2Q2ZTE4ZTA0NjllMjkzZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tbGluZWJv
dW5kYXJ5LXJ0bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MSBAQAorCisKKworRXh0ZW5kaW5n
IGJ5IGxpbmVCb3VuZGFyeQorVGVzdCAxLCBSVEw6CisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIlxu
YWJjIEFCQyB4eXogREVGIGRlZlxuIlsoMSwxKSwgKDEsMjApXQorICBFeHRlbmRpbmcgYmFja3dh
cmQ6ICJcbmFiYyBBQkMgeHl6IERFRiBkZWZcbiJbKDEsMjApXQorVGVzdCAyLCBSVEw6CisgIEV4
dGVuZGluZyBmb3J3YXJkOiAgIlxuQUJDIHh5eiBERUYgZGVmIEdISVxuIlsoMSwxKSwgKDEsMjAp
XQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbKDEsMjAp
XQorVGVzdCAzLCBSVEw6CisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIlxuQUJDIERFRiBBQkNcbiJb
KDEsMSksICgxLDEyKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG5BQkMgREVGIEFCQ1xuIlso
MSwxMildCitUZXN0IDQsIFJUTDoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG5hYmMgZWZkIGRh
YmViXG4iWygxLDEpLCAoMSwxNCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIlxuYWJjIGVmZCBk
YWJlYlxuIlsoMSwxNCldCitUZXN0IDUsIFJUTDoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9y
ZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0
IlsoMCw1KV0KK1Rlc3QgNiwgUlRMOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygw
LDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQiWygwLDUp
XQorVGVzdCA3LCBSVEw6CisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkxvcmVtICJbKDAsMCldLCAi
IGFtZXQiWygwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICIgYW1ldCJbKDAsNSldCitUZXN0
IDgsIFJUTDoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJb
KDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1KV0KK1Rlc3QgOSwgUlRM
OgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApLCAoMCw1KV0KKyAgRXh0ZW5k
aW5nIGJhY2t3YXJkOiAiTG9yZW0gIlsoMCw1KV0KK1Rlc3QgMTAsIFJUTDoKKyAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCisgIEV4dGVuZGluZyBi
YWNrd2FyZDogIiBhbWV0IlsoMCw1KV0KK1Rlc3QgMTEsIFJUTDoKKyAgRXh0ZW5kaW5nIGZvcndh
cmQ6ICAiTG9yZW0gIlsoMCwwKV0sICJpcHN1bSBkb2xvciJbKDAsMTEpXQorICBFeHRlbmRpbmcg
YmFja3dhcmQ6ICJpcHN1bSBkb2xvciJbKDAsMTEpXQorVGVzdCAxMiwgUlRMOgorICBFeHRlbmRp
bmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5n
IGJhY2t3YXJkOiAiIGFtZXQiWygwLDUpXQorVGVzdCAxMywgUlRMOgorICBFeHRlbmRpbmcgZm9y
d2FyZDogICJMb3JlbSAiWygwLDApLCAoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiTG9y
ZW0gIlsoMCw1KV0KK1Rlc3QgMTQsIFJUTDoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG4gSnVz
dFxuICJbKDIsMildLCAiXG4gQkZEWFxuIlsoMiw2KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAi
XG4gQkZEWFxuIlsoMiw2KV0KK1Rlc3QgMTUsIFJUTDoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAi
XG4gSnVzdFxuICJbKDIsMildLCAiXG4gZXZlclxuIlsoMiw2KV0KKyAgRXh0ZW5kaW5nIGJhY2t3
YXJkOiAiXG4gZXZlclxuIlsoMiw2KV0KK1Rlc3QgMTYsIFJUTDoKKyAgRXh0ZW5kaW5nIGZvcndh
cmQ6ICAiY2FyIG1lYW5zIEFCQy4iWygwLDApLCAoMCwxNCldCisgIEV4dGVuZGluZyBiYWNrd2Fy
ZDogImNhciBtZWFucyBBQkMuIlsoMCwxNCldCitUZXN0IDE3LCBSVEw6CisgIEV4dGVuZGluZyBm
b3J3YXJkOiAgIuGqnGNhciBERUYgQUJDLuGqnSJbKDAsMCksICgwLDE0KV0KKyAgRXh0ZW5kaW5n
IGJhY2t3YXJkOiAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwxNCldCitUZXN0IDE4LCBSVEw6Cisg
IEV4dGVuZGluZyBmb3J3YXJkOiAgImhlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdLiIiWygwLDAp
LCAoMCwyNCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogImhlIHNhaWQgIuGqnGNhciBERUYgQUJD
4aqdLiIiWygwLDI0KV0KK1Rlc3QgMTksIFJUTDoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiR0hJ
IEpLTCBNTk8gJ+Gqm2hlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdIuGqnSc/IlsoMCwwKSwgKDAs
NDApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJHSEkgSktMIE1OTyAn4aqbaGUgc2FpZCAi4aqc
Y2FyIERFRiBBQkPhqp0i4aqdJz8iWygwLDQwKV0KK1Rlc3QgMjAsIFJUTDoKKyAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICAiQUJDIGFiYyBERUYiWygwLDApLCAoMCwxMSldCisgIEV4dGVuZGluZyBiYWNr
d2FyZDogIkFCQyBhYmMgREVGIlsoMCwxMSldCitUZXN0IDIxLCBSVEw6CisgIEV4dGVuZGluZyBm
b3J3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyAiWygwLDApLCAoMCw4KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsOCldCitUZXN0IDIyLCBSVEw6
CisgIEV4dGVuZGluZyBmb3J3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyAiWygwLDApLCAoMCw4KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAi
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsOCld
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxl
Y3Rpb24tbGluZWJvdW5kYXJ5LXJ0bC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZXh0ZW5kLXNlbGVjdGlvbi1saW5lYm91bmRhcnktcnRsLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU2
NzY2NDM3Nzk0MWFiZGFlZDAyMDExMDkyNmY3ODNjNjMwMTFkYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tbGluZWJvdW5k
YXJ5LXJ0bC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3Mi
IGhyZWY9InJlc291cmNlcy9leHRlbmQtc2VsZWN0aW9uLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvZXh0ZW5kLXNlbGVjdGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3RFeHRlbmRp
bmdMaW5lQm91bmRhcnkodGVzdE5vZGVzKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVz
dE5vZGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHRlc3ROb2Rlc1tpXS5zdHlsZS5kaXJlY3Rp
b24gPSAicnRsIjsKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGVzdE5vZGVz
W2ldLCAwKTsKKworICAgICAgICBsb2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBSVEw6XG4iKTsK
KyAgICAgICAgbG9nKCIgIEV4dGVuZGluZyBmb3J3YXJkOiAgIik7CisgICAgICAgIGV4dGVuZEFu
ZExvZ1NlbGVjdGlvblRvRW5kKCJmb3J3YXJkIiwgImxpbmVCb3VuZGFyeSIpOworCisgICAgICAg
IGxvZygiICBFeHRlbmRpbmcgYmFja3dhcmQ6ICIpOworICAgICAgICBleHRlbmRBbmRMb2dTZWxl
Y3Rpb25Ub0VuZCgiYmFja3dhcmQiLCAibGluZUJvdW5kYXJ5Iik7CisgICAgfQorfQorCitsb2co
IlxuXG5cbkV4dGVuZGluZyBieSBsaW5lQm91bmRhcnlcbiIpOwordGVzdEV4dGVuZGluZ0xpbmVC
b3VuZGFyeShjcmVhdGVBbGxOb2RlcygpKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICBzZXR1cEZvckxheW91dFRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi13
b3JkLWVuY2xvc2luZy1ibG9jay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLXdvcmQtZW5jbG9zaW5nLWJsb2NrLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iZDRkMTQzZTQ0MTlmOTdmNTJlNzJhOWEyMDMwOGY0NDNkZDMyOWEyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNl
bGVjdGlvbi13b3JkLWVuY2xvc2luZy1ibG9jay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorCisKKworCisKK0V4dGVuZGluZyBieSB3b3JkCitUZXN0IDEsIExUUjoKKyAgRXh0ZW5kaW5n
IHJpZ2h0OiAiTG9yZW0gIlsoMCwwKSwgKDAsNSldLCAiaXBzdW0gZG9sb3Igc2l0IlsoMCw1KSwg
KDAsMTEpLCAoMCwxNSldLCAiIGFtZXR0IlsoMCw2KSwgKDAsMSldCisgIEV4dGVuZGluZyBsZWZ0
OiAgIiBhbWV0dCJbKDAsNiksICgwLDEpXSwgImlwc3VtIGRvbG9yIHNpdCJbKDAsMTIpLCAoMCw2
KSwgKDAsMCldLCAiTG9yZW0gIlsoMCwwKSwgKDAsNSldCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24td29yZC1lbmNsb3NpbmctYmxv
Y2suaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24t
d29yZC1lbmNsb3NpbmctYmxvY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzliNzMxODUzMmQ0NmU3ZTZk
ZmViZjM5NjIyMmI4ODc1ZmI5YzA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi13b3JkLWVuY2xvc2luZy1ibG9jay5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InJlc291
cmNlcy9leHRlbmQtc2VsZWN0aW9uLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXh0
ZW5kLXNlbGVjdGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9ImNv
bnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blNlbGVjdGlvblRlc3RzV2l0aEdy
YW51bGFyaXR5Rm9yRW5jbG9zaW5nQmxvY2sodGVzdE5vZGVzLCBncmFudWxhcml0eSkKK3sKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3ROb2Rlcy5sZW5ndGg7ICsraSkgeworICAgICAgICBn
ZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXN0Tm9kZXNbaV0sIDApOworCisgICAgICAgIGxv
ZygiVGVzdCAiICsgKGkgKyAxKSArICIsIExUUjpcbiIpOworICAgICAgICBsb2coIiAgRXh0ZW5k
aW5nIHJpZ2h0OiAiKTsKKyAgICAgICAgZXh0ZW5kQW5kTG9nU2VsZWN0aW9uV2l0aGluQmxvY2so
InJpZ2h0IiwgZ3JhbnVsYXJpdHkpOworCisgICAgICAgIGxvZygiICBFeHRlbmRpbmcgbGVmdDog
ICIpOworICAgICAgICBleHRlbmRBbmRMb2dTZWxlY3Rpb25XaXRoaW5CbG9jaygibGVmdCIsIGdy
YW51bGFyaXR5KTsKKyAgICB9Cit9CisKK2xvZygiXG5cblxuXG5cbkV4dGVuZGluZyBieSB3b3Jk
XG4iKTsKK3J1blNlbGVjdGlvblRlc3RzV2l0aEdyYW51bGFyaXR5Rm9yRW5jbG9zaW5nQmxvY2so
Y3JlYXRlRW5jbG9zaW5nQmxvY2tOb2RlcygpLCAid29yZCIpOworCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIHNldHVwRm9yTGF5b3V0VGVzdCgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQt
c2VsZWN0aW9uLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVu
ZC1zZWxlY3Rpb24td29yZC5odG1sCmluZGV4IDk1NTQ2ZTA0NDYxMTUzZjgwNjI4NDQwNjRlMzZi
MTU0YjA5ZDZhZjguLmJkN2QwMzkxNmVhMWYyN2QyZDEyZjg4ZGQ0YjljMzViYThiMDFmNjQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24t
d29yZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxl
Y3Rpb24td29yZC5odG1sCkBAIC04LDE2ICs4LDEwIEBACiA8Ym9keT4KIDxwcmUgaWQ9ImNvbnNv
bGUiPjwvcHJlPgogPHNjcmlwdD4KK2xvZygiXG5cblxuXG5cbkV4dGVuZGluZyBieSB3b3JkXG4i
KTsKK3J1blNlbGVjdGlvblRlc3RzV2l0aEdyYW51bGFyaXR5KGNyZWF0ZUNoYXJBbmRXb3JkTm9k
ZXMoKSwgIndvcmQiKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLQotICAgIHZhciB0ZXN0cyA9IGNy
ZWF0ZVRlc3ROb2RlcygnY2hhci1hbmQtd29yZCcpOwotICAgIHZhciBzZWwgPSBnZXRTZWxlY3Rp
b24oKTsKLQotICAgIGxvZygiXG5cblxuXG5cbkV4dGVuZGluZyBieSB3b3JkXG4iKTsKLSAgICB0
ZXN0RXh0ZW5kaW5nU2VsZWN0aW9uKHRlc3RzLCAgc2VsLCAid29yZCIsIDApOwotfQotCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIHNldHVwRm9yTGF5b3V0VGVzdCgpOwog
PC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9yZXNvdXJjZXMvZXh0ZW5kLXNlbGVjdGlvbi5qcyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL3Jlc291cmNlcy9leHRlbmQtc2VsZWN0aW9uLmpzCmluZGV4IDFkYzc4NmFiMmM1
OTg0NjBjNjdkMjdhNzhhZmJkYjcxMjQ4MDVjZGUuLjc0N2EzNmM1MWU2ZDJjODIxNjBjMmZjN2Fk
NTg3ODk4MmNiN2VkMmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L3Jlc291cmNlcy9leHRlbmQtc2VsZWN0aW9uLmpzCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL3Jlc291cmNlcy9leHRlbmQtc2VsZWN0aW9uLmpzCkBAIC0zLDYwICszLDQyIEBA
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwogfQog
Ci1mdW5jdGlvbiBwb3NpdGlvbnNFeHRlbmRpbmdJbkRpcmVjdGlvbkZvckVuY2xvc2luZ0Jsb2Nr
KHNlbCwgZGlyZWN0aW9uLCBncmFudWxhcml0eSkKK2Z1bmN0aW9uIGV4dGVuZFNlbGVjdGlvbldp
dGhpbkJsb2NrKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpCiB7CisgICAgdmFyIHMgPSB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCk7CiAgICAgdmFyIHBvc2l0aW9ucyA9IFtdOwotICAgIHZhciBsdHJOdW07
Ci0gICAgdmFyIHJ0bE51bTsKLSAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gImNoYXJhY3RlciIpIHsK
LSAgICAgICAgbHRyTnVtID0gNTsKLSAgICB9IGVsc2UgewotICAgICAgICBsdHJOdW0gPSAxOwot
ICAgIH0KLSAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gImNoYXJhY3RlciIpIHsKLSAgICAgICAgcnRs
TnVtID0gMTU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcnRsTnVtID0gMzsKLSAgICB9Ci0gICAg
dmFyIGluZGV4ID0gMDsKLSAgICB3aGlsZSAoaW5kZXggPD0gbHRyTnVtKSB7Ci0gICAgICAgIHBv
c2l0aW9ucy5wdXNoKHsgbm9kZTogc2VsLmV4dGVudE5vZGUsIGJlZ2luOiBzZWwuYmFzZU9mZnNl
dCwgZW5kOiBzZWwuZXh0ZW50T2Zmc2V0IH0pOwotICAgICAgICBzZWwubW9kaWZ5KCJleHRlbmQi
LCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKLSAgICAgICAgKytpbmRleDsKLSAgICB9Ci0gICAg
dmFyIGFudGlEaXJlY3Rpb24gPSBkaXJlY3Rpb247Ci0gICAgaWYgKGFudGlEaXJlY3Rpb24gPT0g
J2xlZnQnKSB7Ci0gICAgICAgIGFudGlEaXJlY3Rpb24gPSAicmlnaHQiOwotICAgIH0gZWxzZSBp
ZiAoYW50aURpcmVjdGlvbiA9ICdyaWdodCcpIHsKLSAgICAgICAgYW50aURpcmVjdGlvbiA9ICJs
ZWZ0IjsKKyAgICB2YXIgbHRyTnVtID0gKGdyYW51bGFyaXR5ID09PSAiY2hhcmFjdGVyIikgPyA1
IDogMTsKKyAgICB2YXIgcnRsTnVtID0gKGdyYW51bGFyaXR5ID09PSAiY2hhcmFjdGVyIikgPyAx
NSA6IDM7CisKKyAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDw9IGx0ck51bTsgKytpbmRl
eCkgeworICAgICAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHMuZXh0ZW50Tm9kZSwgYmVnaW46
IHMuYmFzZU9mZnNldCwgZW5kOiBzLmV4dGVudE9mZnNldCB9KTsKKyAgICAgICAgcy5tb2RpZnko
ImV4dGVuZCIsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogICAgIH0KIAotICAgIGluZGV4ID0g
MDsKLSAgICB3aGlsZSAoaW5kZXggPD0gcnRsTnVtKSB7Ci0gICAgICAgIHBvc2l0aW9ucy5wdXNo
KHsgbm9kZTogc2VsLmV4dGVudE5vZGUsIGJlZ2luOiBzZWwuYmFzZU9mZnNldCwgZW5kOiBzZWwu
ZXh0ZW50T2Zmc2V0IH0pOwotICAgICAgICBzZWwubW9kaWZ5KCJleHRlbmQiLCBhbnRpRGlyZWN0
aW9uLCBncmFudWxhcml0eSk7Ci0gICAgICAgICsraW5kZXg7CisgICAgdmFyIHJldmVyc2UgPSAo
ZGlyZWN0aW9uID09PSAibGVmdCIpID8gInJpZ2h0IiA6ICJsZWZ0IjsKKyAgICBmb3IgKHZhciBp
bmRleCA9IDA7IGluZGV4IDw9IHJ0bE51bTsgKytpbmRleCkgeworICAgICAgICBwb3NpdGlvbnMu
cHVzaCh7IG5vZGU6IHMuZXh0ZW50Tm9kZSwgYmVnaW46IHMuYmFzZU9mZnNldCwgZW5kOiBzLmV4
dGVudE9mZnNldCB9KTsKKyAgICAgICAgcy5tb2RpZnkoImV4dGVuZCIsIHJldmVyc2UsIGdyYW51
bGFyaXR5KTsKICAgICB9Ci0gICAgdmFyIGluZGV4ID0gMDsKLSAgICB3aGlsZSAoaW5kZXggPCBs
dHJOdW0pIHsKLSAgICAgICAgcG9zaXRpb25zLnB1c2goeyBub2RlOiBzZWwuZXh0ZW50Tm9kZSwg
YmVnaW46IHNlbC5iYXNlT2Zmc2V0LCBlbmQ6IHNlbC5leHRlbnRPZmZzZXQgfSk7Ci0gICAgICAg
IHNlbC5tb2RpZnkoImV4dGVuZCIsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwotICAgICAgICAr
K2luZGV4OworCisgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGx0ck51bTsgKytpbmRl
eCkgeworICAgICAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHMuZXh0ZW50Tm9kZSwgYmVnaW46
IHMuYmFzZU9mZnNldCwgZW5kOiBzLmV4dGVudE9mZnNldCB9KTsKKyAgICAgICAgcy5tb2RpZnko
ImV4dGVuZCIsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogICAgIH0KKwogICAgIHJldHVybiBw
b3NpdGlvbnM7CiB9CiAKLQotZnVuY3Rpb24gcG9zaXRpb25zRXh0ZW5kaW5nSW5EaXJlY3Rpb24o
c2VsLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KQorZnVuY3Rpb24gZXh0ZW5kU2VsZWN0aW9uVG9F
bmQoZGlyZWN0aW9uLCBncmFudWxhcml0eSkKIHsKKyAgICB2YXIgcyA9IHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKTsKICAgICB2YXIgcG9zaXRpb25zID0gW107Ci0gICAgCi0gICAgd2hpbGUgKHRydWUp
IHsKLSAgICAgICAgcG9zaXRpb25zLnB1c2goeyBub2RlOiBzZWwuZXh0ZW50Tm9kZSwgYmVnaW46
IHNlbC5iYXNlT2Zmc2V0LCBlbmQ6IHNlbC5leHRlbnRPZmZzZXQgfSk7Ci0gICAgICAgIHNlbC5t
b2RpZnkoImV4dGVuZCIsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwotICAgICAgICBpZiAocG9z
aXRpb25zW3Bvc2l0aW9ucy5sZW5ndGggLSAxXS5ub2RlID09IHNlbC5leHRlbnROb2RlICYmIHBv
c2l0aW9uc1twb3NpdGlvbnMubGVuZ3RoIC0gMV0uZW5kID09IHNlbC5leHRlbnRPZmZzZXQpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICB9OworICAgIHZhciBuZXh0UG9zaXRpb24gPSB7fTsKKyAg
ICB3aGlsZSAobmV4dFBvc2l0aW9uLm5vZGUgIT09IHMuZXh0ZW50Tm9kZSB8fCBuZXh0UG9zaXRp
b24uZW5kICE9PSBzLmV4dGVudE9mZnNldCkgeworICAgICAgICBuZXh0UG9zaXRpb24gPSB7IG5v
ZGU6IHMuZXh0ZW50Tm9kZSwgYmVnaW46IHMuYmFzZU9mZnNldCwgZW5kOiBzLmV4dGVudE9mZnNl
dCB9OworICAgICAgICBwb3NpdGlvbnMucHVzaChuZXh0UG9zaXRpb24pOworICAgICAgICBzLm1v
ZGlmeSgiZXh0ZW5kIiwgZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgfQogICAgIHJldHVy
biBwb3NpdGlvbnM7CiB9CiAKQEAgLTY4LDcgKzUwLDcgQEAgZnVuY3Rpb24gZm9sZChzdHJpbmcp
CiAgICAgICAgIGlmIChjaGFyID49IDB4MDVkMCkKICAgICAgICAgICAgIGNoYXIgLT0gMHgwNThm
OwogICAgICAgICBlbHNlIGlmIChjaGFyID09IDEwKSB7Ci0gICAgICAgICAgICByZXN1bHQgKz0g
IlxcbiI7CisgICAgICAgICAgICByZXN1bHQgKz0iXFxuIjsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXIp
OwpAQCAtOTEsMTc3ICs3MywxOTQgQEAgZnVuY3Rpb24gbG9nUG9zaXRpb25zKHBvc2l0aW9ucykK
ICAgICBsb2coIl0iKTsKIH0KIAotZnVuY3Rpb24gY2hlY2tSZXZlcnNlT3JkZXIoaW5wdXRQb3Np
dGlvbnMsIGlucHV0UmV2ZXJzZVBvc2l0aW9ucykKK2Z1bmN0aW9uIGNvbXBhcmVJbkRpcmVjdGlv
bihwb3NpdGlvbnMsIGNvbXBhcmlzb25Qb3NpdGlvbnMsIGluUmV2ZXJzZSkKIHsKLSAgICB2YXIg
cG9zaXRpb25zID0gaW5wdXRQb3NpdGlvbnMuc2xpY2UoKTsKLSAgICB2YXIgcmV2ZXJzZVBvc2l0
aW9ucyA9IGlucHV0UmV2ZXJzZVBvc2l0aW9ucy5zbGljZSgpOwotICAgIHZhciBtaXNtYXRjaCA9
IChwb3NpdGlvbnMubGVuZ3RoICE9IHJldmVyc2VQb3NpdGlvbnMubGVuZ3RoKTsKLSAgICBpZiAo
bWlzbWF0Y2gpCi0gICAgICAgIGxvZygiV0FSTklORzogcG9zaXRpb25zIHNob3VsZCBiZSB0aGUg
c2FtZSwgYnV0IHRoZSBsZW5ndGggYXJlIG5vdCB0aGUgc2FtZSAiICsgIHBvc2l0aW9ucy5sZW5n
dGggKyAiIHZzLiAiICsgcmV2ZXJzZVBvc2l0aW9ucy5sZW5ndGggKyAiXG4iKTsKLSAgICB3aGls
ZSAoIW1pc21hdGNoKSB7Ci0gICAgICAgIHZhciBwb3MgPSBwb3NpdGlvbnMucG9wKCk7Ci0gICAg
ICAgIGlmICghcG9zKQorICAgIGlmIChwb3NpdGlvbnMubGVuZ3RoICE9PSBjb21wYXJpc29uUG9z
aXRpb25zLmxlbmd0aCkgeworICAgICAgICBsb2coIldBUk5JTkc6IHBvc2l0aW9ucyBzaG91bGQg
YmUgdGhlIHNhbWUsIGJ1dCB0aGUgbGVuZ3RoIGFyZSBub3QgdGhlIHNhbWUgIiArICBwb3NpdGlv
bnMubGVuZ3RoICsgIiB2cy4gIiArIHNhbWVQb3NpdGlvbnMubGVuZ3RoICsgIlxuIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvc2l0aW9ucy5s
ZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcG9zID0gcG9zaXRpb25zW2ldOworICAgICAgICB2
YXIgY29tcGFyaXNvbiA9IGNvbXBhcmlzb25Qb3NpdGlvbnNbaW5SZXZlcnNlID8gKGNvbXBhcmlz
b25Qb3NpdGlvbnMubGVuZ3RoIC0gaSAtIDEpIDogaV07CisKKyAgICAgICAgaWYgKHBvcy5ub2Rl
ICE9PSBjb21wYXJpc29uLm5vZGUpIHsKKyAgICAgICAgICAgIGxvZygiV0FSTklORzogcG9zaXRp
b25zIHNob3VsZCBiZSB0aGUgc2FtZSwgYnV0IG5vZGUgYXJlIG5vdCB0aGUgc2FtZVxuIik7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgdmFyIHJldmVyc2VQb3MgPSByZXZlcnNlUG9zaXRp
b25zLnNoaWZ0KCk7Ci0gICAgICAgIGlmIChwb3Mubm9kZSAhPSByZXZlcnNlUG9zLm5vZGUpIHsK
LSAgICAgICAgICAgIG1pc21hdGNoID0gdHJ1ZTsKLSAgICAgICAgICAgIGxvZygiV0FSTklORzog
cG9zaXRpb25zIHNob3VsZCBiZSB0aGUgcmV2ZXJzZSwgYnV0IG5vZGUgYXJlIG5vdCB0aGUgcmV2
ZXJzZVxuIik7Ci0gICAgICAgIH0gCi0gICAgICAgIGlmIChwb3MuYmVnaW4gIT0gcmV2ZXJzZVBv
cy5iZWdpbikgewotICAgICAgICAgICAgbWlzbWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAgbG9n
KCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lLCBidXQgYmVnaW4gYXJlIG5v
dCAiICsgcG9zLmJlZ2luICsgIiB2cy4gIiArIHJldmVyc2VQb3MuYmVnaW4gKyAiXG4iKTsKICAg
ICAgICAgfQotICAgICAgICBpZiAocG9zLmVuZCAhPSByZXZlcnNlUG9zLmVuZCkgewotICAgICAg
ICAgICAgbWlzbWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlv
bnMgc2hvdWxkIGJlIHRoZSBzYW1lLCBidXQgZW5kIGFyZSBub3QgIiArIHBvcy5lbmQgKyAiIHZz
LiAiICsgcmV2ZXJzZVBvcy5lbmQgKyAiXG4iKTsKKyAgICAgICAgaWYgKHBvcy5iZWdpbiAhPT0g
Y29tcGFyaXNvbi5iZWdpbikgeworICAgICAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMg
c2hvdWxkIGJlIHRoZSBzYW1lLCBidXQgYmVnaW4gYXJlIG5vdCB0aGUgc2FtZSAiICsgcG9zLmJl
Z2luICsgIiB2cy4gIiArIGNvbXBhcmlzb24uYmVnaW4gKyAiXG4iKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChwb3MuZW5kICE9PSBjb21wYXJpc29uLmVuZCkg
eworICAgICAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1l
LCBidXQgZW5kIGFyZSBub3QgdGhlIHNhbWUgIiArIHBvcy5lbmQgKyAiIHZzLiAiICsgY29tcGFy
aXNvbi5lbmQgKyAiXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQog
fQogCi0KLWZ1bmN0aW9uIGNoZWNrU2FtZU9yZGVyKGlucHV0UG9zaXRpb25zLCBpbnB1dFNhbWVQ
b3NpdGlvbnMpCitmdW5jdGlvbiBjb21wYXJlSW5SZXZlcnNlT3JkZXIocG9zaXRpb25zLCBjb21w
YXJpc29uUG9zaXRpb25zKQogewotICAgIHZhciBwb3NpdGlvbnMgPSBpbnB1dFBvc2l0aW9ucy5z
bGljZSgpOwotICAgIHZhciBzYW1lUG9zaXRpb25zID0gaW5wdXRTYW1lUG9zaXRpb25zLnNsaWNl
KCk7Ci0gICAgdmFyIG1pc21hdGNoID0gcG9zaXRpb25zLmxlbmd0aCAhPSBzYW1lUG9zaXRpb25z
Lmxlbmd0aDsKLSAgICBpZiAobWlzbWF0Y2gpCi0gICAgICAgIGxvZygiV0FSTklORzogcG9zaXRp
b25zIHNob3VsZCBiZSB0aGUgc2FtZSwgYnV0IHRoZSBsZW5ndGggYXJlIG5vdCB0aGUgc2FtZSAi
ICsgIHBvc2l0aW9ucy5sZW5ndGggKyAiIHZzLiAiICsgc2FtZVBvc2l0aW9ucy5sZW5ndGggKyAi
XG4iKTsKLSAgICB3aGlsZSAoIW1pc21hdGNoKSB7Ci0gICAgICAgIHZhciBwb3MgPSBwb3NpdGlv
bnMucG9wKCk7Ci0gICAgICAgIGlmICghcG9zKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IHZhciBzYW1lUG9zID0gc2FtZVBvc2l0aW9ucy5wb3AoKTsKLSAgICAgICAgaWYgKHBvcy5ub2Rl
ICE9IHNhbWVQb3Mubm9kZSkgewotICAgICAgICAgICAgbWlzbWF0Y2ggPSB0cnVlOwotICAgICAg
ICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lLCBidXQgbm9k
ZSBhcmUgbm90IHRoZSBzYW1lXG4iKTsKLSAgICAgICAgfSAKLSAgICAgICAgaWYgKHBvcy5iZWdp
biAhPSBzYW1lUG9zLmJlZ2luKSB7Ci0gICAgICAgICAgICBtaXNtYXRjaCA9IHRydWU7Ci0gICAg
ICAgICAgICBsb2coIldBUk5JTkc6IHBvc2l0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUsIGJ1dCBi
ZWdpbiBhcmUgbm90IHRoZSBzYW1lICIgKyBwb3MuYmVnaW4gKyAiIHZzLiAiICsgc2FtZVBvcy5i
ZWdpbiArICJcbiIpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwb3MuZW5kICE9IHNhbWVQb3Mu
ZW5kKSB7Ci0gICAgICAgICAgICBtaXNtYXRjaCA9IHRydWU7Ci0gICAgICAgICAgICBsb2coIldB
Uk5JTkc6IHBvc2l0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUsIGJ1dCBlbmQgYXJlIG5vdCB0aGUg
c2FtZSAiICsgcG9zLmVuZCArICIgdnMuICIgKyBzYW1lUG9zLmVuZCArICJcbiIpOwotICAgICAg
ICB9Ci0gICB9CisgICAgY29tcGFyZUluRGlyZWN0aW9uKHBvc2l0aW9ucywgY29tcGFyaXNvblBv
c2l0aW9ucywgdHJ1ZSk7CiB9CiAKK2Z1bmN0aW9uIGNvbXBhcmVJblNhbWVPcmRlcihwb3NpdGlv
bnMsIGNvbXBhcmlzb25Qb3NpdGlvbnMpCit7CisgICAgY29tcGFyZUluRGlyZWN0aW9uKHBvc2l0
aW9ucywgY29tcGFyaXNvblBvc2l0aW9ucywgZmFsc2UpOworfQogCi1mdW5jdGlvbiBleHRlbmRp
bmdTZWxlY3Rpb24oc2VsLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBvcHRpb24pCitmdW5jdGlv
biBleHRlbmRBbmRMb2dTZWxlY3Rpb24oZXh0ZW5kRm4sIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkp
CiB7Ci0gICAgdmFyIHBvc2l0aW9uczsKLSAgICBpZiAob3B0aW9uID09IDApIHsKLSAgICAgICAg
cG9zaXRpb25zID0gcG9zaXRpb25zRXh0ZW5kaW5nSW5EaXJlY3Rpb24oc2VsLCBkaXJlY3Rpb24s
IGdyYW51bGFyaXR5KTsKLSAgICB9IGVsc2UgewotICAgICAgICBwb3NpdGlvbnMgPSBwb3NpdGlv
bnNFeHRlbmRpbmdJbkRpcmVjdGlvbkZvckVuY2xvc2luZ0Jsb2NrKHNlbCwgZGlyZWN0aW9uLCBn
cmFudWxhcml0eSk7Ci0gICAgfQorICAgIHZhciBwb3NpdGlvbnMgPSBleHRlbmRGbihkaXJlY3Rp
b24sIGdyYW51bGFyaXR5KTsKICAgICBsb2dQb3NpdGlvbnMocG9zaXRpb25zKTsKICAgICBsb2co
IlxuIik7CiAgICAgcmV0dXJuIHBvc2l0aW9uczsKIH0KIAotZnVuY3Rpb24gdGVzdEV4dGVuZGlu
Z1NlbGVjdGlvbih0ZXN0cywgc2VsLCBncmFudWxhcml0eSkKK2Z1bmN0aW9uIGV4dGVuZEFuZExv
Z1NlbGVjdGlvbldpdGhpbkJsb2NrKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpCit7CisgICAgcmV0
dXJuIGV4dGVuZEFuZExvZ1NlbGVjdGlvbihleHRlbmRTZWxlY3Rpb25XaXRoaW5CbG9jaywgZGly
ZWN0aW9uLCBncmFudWxhcml0eSk7Cit9CisKK2Z1bmN0aW9uIGV4dGVuZEFuZExvZ1NlbGVjdGlv
blRvRW5kKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpCit7CisgICAgcmV0dXJuIGV4dGVuZEFuZExv
Z1NlbGVjdGlvbihleHRlbmRTZWxlY3Rpb25Ub0VuZCwgZGlyZWN0aW9uLCBncmFudWxhcml0eSk7
Cit9CisKK2Z1bmN0aW9uIHJ1blNlbGVjdGlvblRlc3RzV2l0aEdyYW51bGFyaXR5KHRlc3RzLCBn
cmFudWxhcml0eSkKIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgKytp
KSB7CiAgICAgICAgIHRlc3RzW2ldLnN0eWxlLmRpcmVjdGlvbiA9ICJsdHIiOwotICAgICAgICBs
b2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBMVFI6XG4gIEV4dGVuZGluZyByaWdodDogIik7Ci0g
ICAgICAgIHNlbC5zZXRQb3NpdGlvbih0ZXN0c1tpXSwgMCk7Ci0gICAgICAgIHZhciBsdHJSaWdo
dFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWwsICJyaWdodCIsIGdyYW51bGFyaXR5LCAwKTsK
KyAgICAgICAgbG9nKCJUZXN0ICIgKyAoaSArIDEpICsgIiwgTFRSOlxuIik7CisgICAgICAgIGxv
ZygiICBFeHRlbmRpbmcgcmlnaHQ6ICIpOworICAgICAgICBnZXRTZWxlY3Rpb24oKS5zZXRQb3Np
dGlvbih0ZXN0c1tpXSk7CisgICAgICAgIHZhciBsdHJSaWdodFBvcyA9IGV4dGVuZEFuZExvZ1Nl
bGVjdGlvblRvRW5kKCJyaWdodCIsIGdyYW51bGFyaXR5KTsKIAogICAgICAgICBsb2coIiAgRXh0
ZW5kaW5nIGxlZnQ6ICAiKTsKLSAgICAgICAgdmFyIGx0ckxlZnRQb3MgPSBleHRlbmRpbmdTZWxl
Y3Rpb24oc2VsLCAibGVmdCIsIGdyYW51bGFyaXR5LCAwKTsKKyAgICAgICAgdmFyIGx0ckxlZnRQ
b3MgPSBleHRlbmRBbmRMb2dTZWxlY3Rpb25Ub0VuZCgibGVmdCIsIGdyYW51bGFyaXR5KTsKIAog
ICAgICAgICBsb2coIiAgRXh0ZW5kaW5nIGZvcndhcmQ6ICIpOwotICAgICAgICBzZWwuc2V0UG9z
aXRpb24odGVzdHNbaV0sIDApOwotICAgICAgICB2YXIgbHRyRm9yd2FyZFBvcyA9IGV4dGVuZGlu
Z1NlbGVjdGlvbihzZWwsICJmb3J3YXJkIiwgZ3JhbnVsYXJpdHksIDApOworICAgICAgICBnZXRT
ZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXN0c1tpXSk7CisgICAgICAgIHZhciBsdHJGb3J3YXJk
UG9zID0gZXh0ZW5kQW5kTG9nU2VsZWN0aW9uVG9FbmQoImZvcndhcmQiLCBncmFudWxhcml0eSk7
CiAKICAgICAgICAgbG9nKCIgIEV4dGVuZGluZyBiYWNrd2FyZDogICIpOwotICAgICAgICB2YXIg
bHRyQmFja3dhcmRQb3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAiYmFja3dhcmQiLCBncmFu
dWxhcml0eSwgMCk7CisgICAgICAgIHZhciBsdHJCYWNrd2FyZFBvcyA9IGV4dGVuZEFuZExvZ1Nl
bGVjdGlvblRvRW5kKCJiYWNrd2FyZCIsIGdyYW51bGFyaXR5KTsKIAogICAgICAgICB0ZXN0c1tp
XS5zdHlsZS5kaXJlY3Rpb24gPSAicnRsIjsKIAotICAgICAgICBsb2coIlRlc3QgIiArIChpICsg
MSkgKyAiLCBSVEw6XG4gIEV4dGVuZGluZyBsZWZ0OiAiKTsKLSAgICAgICAgc2VsLnNldFBvc2l0
aW9uKHRlc3RzW2ldLCAwKTsKLSAgICAgICAgdmFyIHJ0bExlZnRQb3MgPSBleHRlbmRpbmdTZWxl
Y3Rpb24oc2VsLCAibGVmdCIsIGdyYW51bGFyaXR5LCAwKTsKKyAgICAgICAgbG9nKCJUZXN0ICIg
KyAoaSArIDEpICsgIiwgUlRMOlxuIik7CisgICAgICAgIGxvZygiICBFeHRlbmRpbmcgbGVmdDog
Iik7CisgICAgICAgIGdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRlc3RzW2ldKTsKKyAgICAg
ICAgdmFyIHJ0bExlZnRQb3MgPSBleHRlbmRBbmRMb2dTZWxlY3Rpb25Ub0VuZCgibGVmdCIsIGdy
YW51bGFyaXR5KTsKIAogICAgICAgICBsb2coIiAgRXh0ZW5kaW5nIHJpZ2h0OiAgIik7Ci0gICAg
ICAgIHZhciBydGxSaWdodFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWwsICJyaWdodCIsIGdy
YW51bGFyaXR5LCAwKTsKKyAgICAgICAgdmFyIHJ0bFJpZ2h0UG9zID0gZXh0ZW5kQW5kTG9nU2Vs
ZWN0aW9uVG9FbmQoInJpZ2h0IiwgZ3JhbnVsYXJpdHkpOwogCiAgICAgICAgIGxvZygiICBFeHRl
bmRpbmcgZm9yd2FyZDogIik7Ci0gICAgICAgIHNlbC5zZXRQb3NpdGlvbih0ZXN0c1tpXSwgMCk7
Ci0gICAgICAgIHZhciBydGxGb3J3YXJkUG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwgImZv
cndhcmQiLCBncmFudWxhcml0eSwgMCk7CisgICAgICAgIGdldFNlbGVjdGlvbigpLnNldFBvc2l0
aW9uKHRlc3RzW2ldKTsKKyAgICAgICAgdmFyIHJ0bEZvcndhcmRQb3MgPSBleHRlbmRBbmRMb2dT
ZWxlY3Rpb25Ub0VuZCgiZm9yd2FyZCIsIGdyYW51bGFyaXR5KTsKIAogICAgICAgICBsb2coIiAg
RXh0ZW5kaW5nIGJhY2t3YXJkOiAiKTsKLSAgICAgICAgdmFyIHJ0bEJhY2t3YXJkUG9zID0gZXh0
ZW5kaW5nU2VsZWN0aW9uKHNlbCwgImJhY2t3YXJkIiwgZ3JhbnVsYXJpdHksIDApOworICAgICAg
ICB2YXIgcnRsQmFja3dhcmRQb3MgPSBleHRlbmRBbmRMb2dTZWxlY3Rpb25Ub0VuZCgiYmFja3dh
cmQiLCBncmFudWxhcml0eSk7CiAKICAgICAgICAgLy8gdmFsaWRhdGlvbnMKICAgICAgICAgbG9n
KCJcblxuICB2YWxpZGF0aW5nIGx0clJpZ2h0IGFuZCBsdHJMZWZ0XG4iKTsKICAgICAgICAgaWYg
KGdyYW51bGFyaXR5ID09ICJjaGFyYWN0ZXIiKQotICAgICAgICAgICAgY2hlY2tSZXZlcnNlT3Jk
ZXIobHRyUmlnaHRQb3MsIGx0ckxlZnRQb3MpOworICAgICAgICAgICAgY29tcGFyZUluUmV2ZXJz
ZU9yZGVyKGx0clJpZ2h0UG9zLCBsdHJMZWZ0UG9zKTsKICAgICAgICAgLy8gT3JkZXIgbWlnaHQg
bm90IGJlIHJldmVyc2VkIGZvciBleHRlbmRpbmcgYnkgd29yZCBiZWNhdXNlIHRoZSAxLXBvaW50
IHNoaWZ0IGJ5IHNwYWNlLgogCiAgICAgICAgIGxvZygiICB2YWxpZGF0aW5nIGx0clJpZ2h0IGFu
ZCBsdHJGb3J3YXJkXG4iKTsKLSAgICAgICAgY2hlY2tTYW1lT3JkZXIobHRyUmlnaHRQb3MsIGx0
ckZvcndhcmRQb3MpOworICAgICAgICBjb21wYXJlSW5TYW1lT3JkZXIobHRyUmlnaHRQb3MsIGx0
ckZvcndhcmRQb3MpOwogICAgICAgICBsb2coIiAgdmFsaWRhdGluZyBsdHJGb3J3YXJkIGFuZCBy
dGxGb3J3YXJkXG4iKTsKLSAgICAgICAgY2hlY2tTYW1lT3JkZXIobHRyRm9yd2FyZFBvcywgcnRs
Rm9yd2FyZFBvcyk7CisgICAgICAgIGNvbXBhcmVJblNhbWVPcmRlcihsdHJGb3J3YXJkUG9zLCBy
dGxGb3J3YXJkUG9zKTsKICAgICAgICAgbG9nKCIgIHZhbGlkYXRpbmcgbHRyTGVmdCBhbmQgbHRy
QmFja3dhcmRcbiIpOwotICAgICAgICBjaGVja1NhbWVPcmRlcihsdHJMZWZ0UG9zLCBsdHJCYWNr
d2FyZFBvcyk7CisgICAgICAgIGNvbXBhcmVJblNhbWVPcmRlcihsdHJMZWZ0UG9zLCBsdHJCYWNr
d2FyZFBvcyk7CiAgICAgICAgIGxvZygiICB2YWxpZGF0aW5nIGx0ckJhY2t3YXJkIGFuZCBydGxC
YWNrd2FyZFxuIik7Ci0gICAgICAgIGNoZWNrU2FtZU9yZGVyKGx0ckJhY2t3YXJkUG9zLCBydGxC
YWNrd2FyZFBvcyk7CisgICAgICAgIGNvbXBhcmVJblNhbWVPcmRlcihsdHJCYWNrd2FyZFBvcywg
cnRsQmFja3dhcmRQb3MpOwogICAgICAgICBsb2coIiAgdmFsaWRhdGluZyBsdHJSaWdodCBhbmQg
cnRsTGVmdFxuIik7Ci0gICAgICAgIGNoZWNrU2FtZU9yZGVyKGx0clJpZ2h0UG9zLCBydGxMZWZ0
UG9zKTsKKyAgICAgICAgY29tcGFyZUluU2FtZU9yZGVyKGx0clJpZ2h0UG9zLCBydGxMZWZ0UG9z
KTsKICAgICAgICAgbG9nKCIgIHZhbGlkYXRpbmcgbHRyTGVmdCBhbmQgcnRsUmlnaHRcbiIpOwot
ICAgICAgICBjaGVja1NhbWVPcmRlcihsdHJMZWZ0UG9zLCBydGxSaWdodFBvcyk7CisgICAgICAg
IGNvbXBhcmVJblNhbWVPcmRlcihsdHJMZWZ0UG9zLCBydGxSaWdodFBvcyk7CiAgICAgICAgIGxv
ZygiXG5cbiIpOwogICAgIH0KIH0KIAotdmFyIGRhdGEgPSBbCi1bJ2NoYXItYW5kLXdvcmQnLCBu
dWxsLCAnXG5hYmMgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7IHh5eiAmIzE0OTE7JiMxNDkyOyYjMTQ5
MzsgZGVmXG4nXSwKLVsnY2hhci1hbmQtd29yZCcsIG51bGwsICdcbiYjMTQ4ODsmIzE0ODk7JiMx
NDkwOyB4eXogJiMxNDkxOyYjMTQ5MjsmIzE0OTM7IGRlZiAmIzE0OTQ7JiMxNDk1OyYjMTQ5Njtc
biddLAotWydjaGFyLWFuZC13b3JkJywgbnVsbCwgJ1xuJiMxNDg4OyYjMTQ4OTsmIzE0OTA7ICYj
MTQ5MTsmIzE0OTI7JiMxNDkzOyAmIzE0ODg7JiMxNDg5OyYjMTQ5MDtcbiddLAotWydjaGFyLWFu
ZC13b3JkJywgbnVsbCwgJ1xuYWJjIGVmZCBkYWJlYlxuJ10sCi1bJ2NoYXItYW5kLXdvcmQnLCBu
dWxsLCAnTG9yZW0gPHNwYW4gIHN0eWxlPSJkaXJlY3Rpb246IHJ0bCI+aXBzdW0gZG9sb3Igc2l0
PC9zcGFuPiBhbWV0J10sCi1bJ2NoYXItYW5kLXdvcmQnLCBudWxsLCAnTG9yZW0gPHNwYW4gIGRp
cj0icnRsIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnXSwKLVsnY2hhci1hbmQtd29yZCcs
IG51bGwsICdMb3JlbSA8c3BhbiAgc3R5bGU9ImRpcmVjdGlvbjogbHRyIj5pcHN1bSBkb2xvciBz
aXQ8L3NwYW4+IGFtZXQnXSwKLVsnY2hhci1hbmQtd29yZCcsIG51bGwsICdMb3JlbSA8c3BhbiAg
ZGlyPSJsdHIiPmlwc3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCddLAotWydlbmNsb3NpbmctYmxv
Y2snLCBudWxsLCAnTG9yZW0gPGRpdiAgZGlyPSJydGwiPmlwc3VtIGRvbG9yIHNpdDwvZGl2PiBh
bWV0dCddLAotWydob21lLWVuZCcsIG51bGwsICdMb3JlbSA8c3BhbiAgc3R5bGU9ImRpcmVjdGlv
bjogbHRyIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnXSwKLVsnaG9tZS1lbmQnLCBudWxs
LCAnTG9yZW0gPHNwYW4gIHN0eWxlPSJkaXJlY3Rpb246IGx0ciI+aXBzdW0gZG9sb3I8ZGl2ID4g
anVzdCBhIHRlc3Q8L2Rpdj4gc2l0PC9zcGFuPiBhbWV0J10sCi1bJ2hvbWUtZW5kJywgbnVsbCwg
J0xvcmVtIDxzcGFuICBkaXI9Imx0ciI+aXBzdW0gZG9sb3Igc2l0PC9zcGFuPiBhbWV0J10sCi1b
J2hvbWUtZW5kJywgbnVsbCwgJ0xvcmVtIDxkaXYgIGRpcj0ibHRyIj5pcHN1bSBkb2xvciBzaXQ8
L2Rpdj4gYW1ldCddLAotWydob21lLWVuZCcsIG51bGwsICdcbiBKdXN0XG4gPHNwYW4+dGVzdGlu
ZyDXqNenPC9zcGFuPlxuINeR15XXk9enXG4nXSwKLVsnaG9tZS1lbmQnLCBudWxsLCAnXG4gSnVz
dFxuIDxzcGFuPnRlc3Rpbmcgd2hhdDwvc3Bhbj5cbiBldmVyXG4nXSwKLVsnaG9tZS1lbmQnLCBu
dWxsLCAnY2FyIG1lYW5zICYjMTQ4ODsmIzE0ODk7JiMxNDkwOy4nXSwKLVsnaG9tZS1lbmQnLCBu
dWxsLCAnJiN4MjAyQjtjYXIgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7ICYjMTQ4ODsmIzE0ODk7JiMx
NDkwOy4mI3gyMDJjOyddLAotWydob21lLWVuZCcsIG51bGwsICdoZSBzYWlkICImI3gyMDJCO2Nh
ciAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7JiN4MjAyYzsuIidd
LAotWydob21lLWVuZCcsIG51bGwsICcmIzE0OTQ7JiMxNDk1OyYjMTQ5NjsgJiMxNDk3OyYjMTQ5
ODsmIzE0OTk7ICYjMTUwMDsmIzE1MDE7JiMxNTAyOyBcJyYjeDIwMmE7aGUgc2FpZCAiJiN4MjAy
QjtjYXIgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7ICYjMTQ4ODsmIzE0ODk7JiMxNDkwOyYjeDIwMmM7
IiYjeDIwMmM7XCc/J10sCi1bJ2hvbWUtZW5kJywgbnVsbCwgJyYjMTQ4ODsmIzE0ODk7JiMxNDkw
OyBhYmMgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7PGJyIC8+ZWRmICYjMTQ5NDsmIzE0OTU7JiMxNDk2
OyBhYnJlYmcnXSwKLVsnaG9tZS1lbmQnLCAnbGluZS1icmVhazpiZWZvcmUtd2hpdGUtc3BhY2U7
IHdpZHRoOjVlbScsICdhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgJ10sCi1bJ2hvbWUtZW5kJywgJ2xpbmUtYnJlYWs6YWZ0ZXItd2hpdGUtc3BhY2U7IHdp
ZHRoOjVlbScsICdhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgJ10KLV07Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRlc3ROb2RlcyhuYW1lKSB7Ci0gICAgdmFyIG5v
ZGVzID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgIGlmIChuYW1lICYmIGRhdGFbaV1bMF0gIT0gbmFtZSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICB2YXIgc3R5bGUgPSBkYXRhW2ldWzFdOwotICAgICAgICB2YXIgdGV4dCA9
IGRhdGFbaV1bMl07Ci0gICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKLSAgICAgICAgZGl2LmNvbnRlbnRFZGl0YWJsZSA9IHRydWU7Ci0gICAgICAgIGlmIChz
dHlsZSkKLSAgICAgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgc3R5bGUpOwotICAg
ICAgICBkaXYuaW5uZXJIVE1MID0gdGV4dDsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRC
ZWZvcmUoZGl2LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpKTsKLSAgICAgICAg
bm9kZXMucHVzaChkaXYpOworZnVuY3Rpb24gZ2V0VGVzdE5vZGVDb250YWluZXIoKQoreworICAg
IHZhciB0ZXN0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0cyIpOworICAgIGlmICgh
dGVzdHMpIHsKKyAgICAgICAgdGVzdHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgdGVzdHMuaWQgPSAidGVzdHMiOworICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2Vy
dEJlZm9yZSh0ZXN0cywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKSk7CiAgICAg
fQorICAgIHJldHVybiB0ZXN0czsKK30KIAotICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykKLSAgICAg
ICAgICAgIG5vZGVzW2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZXNbaV0pOwotICAgIH0K
K2Z1bmN0aW9uIGNyZWF0ZU5vZGUoaW5uZXJIVE1MLCBzdHlsZSkKK3sKKyAgICB2YXIgbm9kZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIG5vZGUuaW5uZXJIVE1MID0gaW5u
ZXJIVE1MOworICAgIG5vZGUuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKKyAgICBpZiAoc3R5bGUp
CisgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCJzdHlsZSIsIHN0eWxlKTsKKyAgICBnZXRUZXN0
Tm9kZUNvbnRhaW5lcigpLmFwcGVuZENoaWxkKG5vZGUpOworICAgIHJldHVybiBub2RlOworfQog
Ci0gICAgcmV0dXJuIG5vZGVzOworZnVuY3Rpb24gY3JlYXRlQ2hhckFuZFdvcmROb2RlcygpCit7
CisgICAgcmV0dXJuIFsKKyAgICAgICAgY3JlYXRlTm9kZSgnXG5hYmMgJiMxNDg4OyYjMTQ4OTsm
IzE0OTA7IHh5eiAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgZGVmXG4nKSwKKyAgICAgICAgY3JlYXRl
Tm9kZSgnXG4mIzE0ODg7JiMxNDg5OyYjMTQ5MDsgeHl6ICYjMTQ5MTsmIzE0OTI7JiMxNDkzOyBk
ZWYgJiMxNDk0OyYjMTQ5NTsmIzE0OTY7XG4nKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnXG4mIzE0
ODg7JiMxNDg5OyYjMTQ5MDsgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7ICYjMTQ4ODsmIzE0ODk7JiMx
NDkwO1xuJyksCisgICAgICAgIGNyZWF0ZU5vZGUoJ1xuYWJjIGVmZCBkYWJlYlxuJyksCisgICAg
ICAgIGNyZWF0ZU5vZGUoJ0xvcmVtIDxzcGFuIHN0eWxlPSJkaXJlY3Rpb246IHJ0bCI+aXBzdW0g
ZG9sb3Igc2l0PC9zcGFuPiBhbWV0JyksCisgICAgICAgIGNyZWF0ZU5vZGUoJ0xvcmVtIDxzcGFu
IGRpcj0icnRsIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnKSwKKyAgICAgICAgY3JlYXRl
Tm9kZSgnTG9yZW0gPHNwYW4gc3R5bGU9ImRpcmVjdGlvbjogbHRyIj5pcHN1bSBkb2xvciBzaXQ8
L3NwYW4+IGFtZXQnKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnTG9yZW0gPHNwYW4gZGlyPSJsdHIi
Pmlwc3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCcpCisgICAgXTsKK30KKworZnVuY3Rpb24gY3Jl
YXRlRW5jbG9zaW5nQmxvY2tOb2RlcygpCit7CisgICAgcmV0dXJuIFsKKyAgICAgICAgY3JlYXRl
Tm9kZSgnTG9yZW0gPGRpdiAgZGlyPSJydGwiPmlwc3VtIGRvbG9yIHNpdDwvZGl2PiBhbWV0dCcp
CisgICAgXTsKK30KKworZnVuY3Rpb24gY3JlYXRlSG9tZUVuZE5vZGVzKCkKK3sKKyAgICByZXR1
cm4gWworICAgICAgICBjcmVhdGVOb2RlKCdMb3JlbSA8c3BhbiBzdHlsZT0iZGlyZWN0aW9uOiBs
dHIiPmlwc3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCcpLAorICAgICAgICBjcmVhdGVOb2RlKCdM
b3JlbSA8c3BhbiBzdHlsZT0iZGlyZWN0aW9uOiBsdHIiPmlwc3VtIGRvbG9yPGRpdiA+IGp1c3Qg
YSB0ZXN0PC9kaXY+IHNpdDwvc3Bhbj4gYW1ldCcpLAorICAgICAgICBjcmVhdGVOb2RlKCdMb3Jl
bSA8c3BhbiBkaXI9Imx0ciI+aXBzdW0gZG9sb3Igc2l0PC9zcGFuPiBhbWV0JyksCisgICAgICAg
IGNyZWF0ZU5vZGUoJ0xvcmVtIDxkaXYgIGRpcj0ibHRyIj5pcHN1bSBkb2xvciBzaXQ8L2Rpdj4g
YW1ldCcpLAorICAgICAgICBjcmVhdGVOb2RlKCdcbiBKdXN0XG4gPHNwYW4+dGVzdGluZyDXqNen
PC9zcGFuPlxuINeR15XXk9enXG4nKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnXG4gSnVzdFxuIDxz
cGFuPnRlc3Rpbmcgd2hhdDwvc3Bhbj5cbiBldmVyXG4nKSwKKyAgICAgICAgY3JlYXRlTm9kZSgn
Y2FyIG1lYW5zICYjMTQ4ODsmIzE0ODk7JiMxNDkwOy4nKSwKKyAgICAgICAgY3JlYXRlTm9kZSgn
JiN4MjAyQjtjYXIgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7ICYjMTQ4ODsmIzE0ODk7JiMxNDkwOy4m
I3gyMDJjOycpLAorICAgICAgICBjcmVhdGVOb2RlKCdoZSBzYWlkICImI3gyMDJCO2NhciAmIzE0
OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7JiN4MjAyYzsuIicpLAorICAg
ICAgICBjcmVhdGVOb2RlKCcmIzE0OTQ7JiMxNDk1OyYjMTQ5NjsgJiMxNDk3OyYjMTQ5ODsmIzE0
OTk7ICYjMTUwMDsmIzE1MDE7JiMxNTAyOyBcJyYjeDIwMmE7aGUgc2FpZCAnICsKKyAgICAgICAg
ICAgICAgICAgICAnIiYjeDIwMkI7Y2FyICYjMTQ5MTsmIzE0OTI7JiMxNDkzOyAmIzE0ODg7JiMx
NDg5OyYjMTQ5MDsmI3gyMDJjOyImI3gyMDJjO1wnPycpLAorICAgICAgICBjcmVhdGVOb2RlKCcm
IzE0ODg7JiMxNDg5OyYjMTQ5MDsgYWJjICYjMTQ5MTsmIzE0OTI7JiMxNDkzOzxiciAvPmVkZiAm
IzE0OTQ7JiMxNDk1OyYjMTQ5NjsgYWJyZWJnJyksCisgICAgICAgIGNyZWF0ZU5vZGUoJ2FiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAnLAorICAgICAgICAg
ICAgICAgICAgICdsaW5lLWJyZWFrOmJlZm9yZS13aGl0ZS1zcGFjZTsgd2lkdGg6NWVtJyksCisg
ICAgICAgIGNyZWF0ZU5vZGUoJ2FiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyAnLAorICAgICAgICAgICAgICAgICAgICdsaW5lLWJyZWFrOmFmdGVyLXdoaXRl
LXNwYWNlOyB3aWR0aDo1ZW0nKQorICAgIF07Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFsbE5vZGVz
KCkKK3sKKyAgICByZXR1cm4gY3JlYXRlQ2hhckFuZFdvcmROb2RlcygpLmNvbmNhdCgKKyAgICAg
ICAgICAgY3JlYXRlRW5jbG9zaW5nQmxvY2tOb2RlcygpKS5jb25jYXQoCisgICAgICAgICAgIGNy
ZWF0ZUhvbWVFbmROb2RlcygpKTsKIH0KIAorZnVuY3Rpb24gc2V0dXBGb3JMYXlvdXRUZXN0KCkK
K3sKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgdGhyb3cg
IkNhbm5vdCBmaW5kIGxheW91dFRlc3RDb250cm9sbGVyLCBydW5uaW5nIGZyb20gb3V0c2lkZSB0
ZXN0PyI7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGRvY3Vt
ZW50LmJvZHkucmVtb3ZlQ2hpbGQoZ2V0VGVzdE5vZGVDb250YWluZXIoKSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81190</attachid>
            <date>2011-02-03 22:28:09 -0800</date>
            <delta_ts>2011-02-06 22:20:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53756-20110204172805.patch</filename>
            <type>text/plain</type>
            <size>45582</size>
            <attacher name="Benjamin (Ben) Kalman">kalman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MGMyMjBkOTYyZjJhMmVmZmNhYzkyMjUyYWNiMjY0ZDc5M2JlMjczLi5hOWYwMWE2
MzNkM2JmZjgxYmJiODY2NTMyNDk1MDQ4MjQxNmY5MDFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAK
KzIwMTEtMDItMDMgIEJlbmphbWluIEthbG1hbiAgPGthbG1hbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgYW5k
L29yIHNwbGl0IGFuZC9vciByZW5hbWUgdGhlIGV4dGVuZC1zZWxlY3Rpb24gdGVzdHMgdG8gYmUg
Y2xlYXJlciB3aGF0IHRoZXkncmUgZG9pbmcsIGFuZCBhYmxlIHRvIGJlIHJ1biBtYW51YWxseQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3NTYKKwor
ICAgICAgICBTdW1tYXJ5IG9mIGNoYW5nZXM6CisgICAgICAgICAgLSBSZW5hbWVkIGV4dGVuZC1z
ZWxlY3Rpb24taG9tZS1lbmQgdG8gZXh0ZW5kLXNlbGVjdGlvbi1saW5lYm91bmRhcnkuCisgICAg
ICAgICAgLSBTcGxpdCB0aGUgYWJvdmUgaW50byBzZXBhcmF0ZSBMVFIgYW5kIFJUTCB0ZXN0cy4K
KyAgICAgICAgICAtIFNwbGl0IGV4dGVuZC1zZWxlY3Rpb24tZW5jbG9zaW5nLWJsb2NrIGludG8g
c2VwYXJhdGUgY2hhcmFjdGVyIGFuZCB3b3JkIHRlc3RzLgorICAgICAgICAgIC0gUmVmYWN0b3Iv
Y2hhbmdlIHRoZSB0ZXN0cyBzbyBhcyB0byBvbmx5IGNsZWFuIHRoZSBET00gaWYgYSBsYXlvdXQg
dGVzdHMgaXMgcnVubmluZy4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1z
ZWxlY3Rpb24tY2hhcmFjdGVyLWVuY2xvc2luZy1ibG9jay1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tY2hhcmFjdGVyLWVu
Y2xvc2luZy1ibG9jay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9l
eHRlbmQtc2VsZWN0aW9uLWNoYXJhY3Rlci5odG1sOgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0
aW9uL2V4dGVuZC1zZWxlY3Rpb24tZW5jbG9zaW5nLWJsb2NrLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1ob21lLWVuZC1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVj
dGlvbi1ob21lLWVuZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9u
L2V4dGVuZC1zZWxlY3Rpb24tbGluZWJvdW5kYXJ5LWx0ci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tbGluZWJvdW5kYXJ5
LWx0ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2Vs
ZWN0aW9uLWxpbmVib3VuZGFyeS1ydGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWxpbmVib3VuZGFyeS1ydGwuaHRtbDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi13b3Jk
LWVuY2xvc2luZy1ibG9jay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
c2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24td29yZC1lbmNsb3NpbmctYmxvY2suaHRtbDogQWRk
ZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi13b3JkLmh0
bWw6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2V4dGVuZC1zZWxlY3Rp
b24uanM6CisgICAgICAgIChleHRlbmRTZWxlY3Rpb25XaXRoaW5CbG9jayk6CisgICAgICAgIChl
eHRlbmRTZWxlY3Rpb25Ub0VuZCk6CisgICAgICAgIChmb2xkKToKKyAgICAgICAgKGNvbXBhcmVJ
bkRpcmVjdGlvbik6CisgICAgICAgIChjb21wYXJlSW5SZXZlcnNlT3JkZXIpOgorICAgICAgICAo
Y29tcGFyZUluU2FtZU9yZGVyKToKKyAgICAgICAgKGV4dGVuZEFuZExvZ1NlbGVjdGlvbik6Cisg
ICAgICAgIChleHRlbmRBbmRMb2dTZWxlY3Rpb25XaXRoaW5CbG9jayk6CisgICAgICAgIChleHRl
bmRBbmRMb2dTZWxlY3Rpb25Ub0VuZCk6CisgICAgICAgIChydW5TZWxlY3Rpb25UZXN0c1dpdGhH
cmFudWxhcml0eSk6CisgICAgICAgIChnZXRUZXN0Tm9kZUNvbnRhaW5lcik6CisgICAgICAgIChj
cmVhdGVOb2RlKToKKyAgICAgICAgKGNyZWF0ZUNoYXJBbmRXb3JkTm9kZXMpOgorICAgICAgICAo
Y3JlYXRlRW5jbG9zaW5nQmxvY2tOb2Rlcyk6CisgICAgICAgIChjcmVhdGVIb21lRW5kTm9kZXMp
OgorICAgICAgICAoY3JlYXRlQWxsTm9kZXMpOgorICAgICAgICAoc2V0dXBGb3JMYXlvdXRUZXN0
KToKKwogMjAxMS0wMi0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1jaGFyYWN0ZXItZW5jbG9z
aW5nLWJsb2NrLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2Vs
ZWN0aW9uLWNoYXJhY3Rlci1lbmNsb3NpbmctYmxvY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGFjNzE5
MDQ3NDU0NDlhZmYyM2Q5ZjRiNzA5NDRhMzI4ZWE1YmNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1jaGFyYWN0ZXItZW5j
bG9zaW5nLWJsb2NrLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0
L2NzcyIgaHJlZj0icmVzb3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24uY3NzIiAvPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9leHRlbmQtc2VsZWN0aW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gcnVuU2Vs
ZWN0aW9uVGVzdHNXaXRoR3JhbnVsYXJpdHlGb3JFbmNsb3NpbmdCbG9jayh0ZXN0Tm9kZXMsIGdy
YW51bGFyaXR5KQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdE5vZGVzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgIGdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRlc3ROb2Rlc1tpXSwg
MCk7CisKKyAgICAgICAgbG9nKCJUZXN0ICIgKyAoaSArIDEpICsgIiwgTFRSOlxuIik7CisgICAg
ICAgIGxvZygiICBFeHRlbmRpbmcgcmlnaHQ6ICIpOworICAgICAgICBleHRlbmRBbmRMb2dTZWxl
Y3Rpb25XaXRoaW5CbG9jaygicmlnaHQiLCBncmFudWxhcml0eSk7CisKKyAgICAgICAgbG9nKCIg
IEV4dGVuZGluZyBsZWZ0OiAgIik7CisgICAgICAgIGV4dGVuZEFuZExvZ1NlbGVjdGlvbldpdGhp
bkJsb2NrKCJsZWZ0IiwgZ3JhbnVsYXJpdHkpOworICAgIH0KK30KKworbG9nKCJcblxuXG5FeHRl
bmRpbmcgYnkgY2hhcmFjdGVyXG4iKTsKK3J1blNlbGVjdGlvblRlc3RzV2l0aEdyYW51bGFyaXR5
Rm9yRW5jbG9zaW5nQmxvY2soY3JlYXRlRW5jbG9zaW5nQmxvY2tOb2RlcygpLCAiY2hhcmFjdGVy
Iik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgc2V0dXBGb3JMYXlv
dXRUZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tY2hhcmFjdGVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWNoYXJhY3Rlci5odG1sCmlu
ZGV4IDlmMjc3Zjc0YjYzZTQ3YTgxZjcxNDhkMDFiOTgyNzRmYmUzMzRhMzkuLjgyYWM1MWNlMGM1
ZDQ1OWY4YzMyYmJmMjhkYjM5NGUxNjY5Nzk2NTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tY2hhcmFjdGVyLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1jaGFyYWN0ZXIuaHRt
bApAQCAtOCwxNiArOCwxMCBAQAogPGJvZHk+CiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxz
Y3JpcHQ+Citsb2coIlxuXG5cbkV4dGVuZGluZyBieSBjaGFyYWN0ZXJcbiIpOworcnVuU2VsZWN0
aW9uVGVzdHNXaXRoR3JhbnVsYXJpdHkoY3JlYXRlQ2hhckFuZFdvcmROb2RlcygpLCAiY2hhcmFj
dGVyIik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0KLSAgICB2YXIgdGVzdHMgPSBjcmVhdGVUZXN0
Tm9kZXMoImNoYXItYW5kLXdvcmQiKTsKLSAgICB2YXIgc2VsID0gZ2V0U2VsZWN0aW9uKCk7Ci0K
LSAgICBsb2coIlxuXG5cbkV4dGVuZGluZyBieSBjaGFyYWN0ZXJcbiIpOwotICAgIHRlc3RFeHRl
bmRpbmdTZWxlY3Rpb24odGVzdHMsICBzZWwsICJjaGFyYWN0ZXIiLCAwKTsKLX0KLQoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBzZXR1cEZvckxheW91dFRlc3QoKTsKIDwv
c2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZXh0ZW5kLXNlbGVjdGlvbi1lbmNsb3NpbmctYmxvY2suaHRtbCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tZW5jbG9zaW5nLWJsb2NrLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNzA2NTM4OTBlOWNmY2EyNWQ2YzFjNWVlOTcx
ZTU2MmM1MWRiNTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1lbmNsb3Np
bmctYmxvY2suaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiIGhyZWY9InJlc291cmNlcy9leHRlbmQtc2VsZWN0aW9uLmNzcyIgLz4K
LTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXh0ZW5kLXNlbGVjdGlvbi5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgotPHNjcmlwdD4KLQotZnVu
Y3Rpb24gdGVzdEV4dGVuZGluZ1NlbGVjdGlvbkZvckVuY2xvc2luZ0Jsb2NrKHRlc3RzLCBzZWws
IGdyYW51bGFyaXR5KQotewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgbG9nKCJUZXN0ICIgKyAoaSArIDEpICsgIiwgTFRSOlxuICBFeHRlbmRp
bmcgcmlnaHQ6ICIpOwotICAgICAgICBzZWwuc2V0UG9zaXRpb24odGVzdHNbaV0sIDApOwotICAg
ICAgICB2YXIgbHRyUmlnaHRQb3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAicmlnaHQiLCBn
cmFudWxhcml0eSwgMSk7Ci0KLSAgICAgICAgbG9nKCIgIEV4dGVuZGluZyBsZWZ0OiAgIik7Ci0g
ICAgICAgIHZhciBsdHJMZWZ0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwgImxlZnQiLCBn
cmFudWxhcml0eSwgMSk7Ci0gICAgfQotfQotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgdGVz
dHMgPSBjcmVhdGVUZXN0Tm9kZXMoImVuY2xvc2luZy1ibG9jayIpOwotICAgIHNlbCA9IGdldFNl
bGVjdGlvbigpOwotCi0gICAgbG9nKCJcblxuXG5FeHRlbmRpbmcgYnkgY2hhcmFjdGVyXG4iKTsK
LSAgICB0ZXN0RXh0ZW5kaW5nU2VsZWN0aW9uRm9yRW5jbG9zaW5nQmxvY2sodGVzdHMsICBzZWws
ICJjaGFyYWN0ZXIiLCAxKTsKLSAgICBsb2coIlxuXG5cblxuXG5FeHRlbmRpbmcgYnkgd29yZFxu
Iik7Ci0gICAgdGVzdEV4dGVuZGluZ1NlbGVjdGlvbkZvckVuY2xvc2luZ0Jsb2NrKHRlc3RzLCAg
c2VsLCAid29yZCIsIDEpOwotfQotCi08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24taG9tZS1lbmQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlv
bi1ob21lLWVuZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRm
MGJmOWYzZWM4ZTc3MmRlZDhhZjM1Njc0NGJkZGFlYTI5ZDUzYzkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZXh0ZW5kLXNlbGVjdGlvbi1ob21lLWVuZC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwxMzcgKzAsMCBAQAotCi0KLQotRXh0ZW5kaW5nIGJ5IGxpbmVCb3VuZGFyeQotVGVzdCAx
LCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiXG5hYmMgQUJDIHh5eiBERUYgZGVmXG4iWygx
LDEpLCAoMSwyMCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbmFiYyBBQkMgeHl6IERFRiBk
ZWZcbiJbKDEsMjApLCAoMSwxKV0KLVRlc3QgMSwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDog
IlxuYWJjIEFCQyB4eXogREVGIGRlZlxuIlsoMSwxKSwgKDEsMjApXQotICBFeHRlbmRpbmcgYmFj
a3dhcmQ6ICAiXG5hYmMgQUJDIHh5eiBERUYgZGVmXG4iWygxLDIwKSwgKDEsMSldCi1UZXN0IDIs
IExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbKDEs
MSksICgxLDIwKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIlxuQUJDIHh5eiBERUYgZGVmIEdI
SVxuIlsoMSwyMCksICgxLDEpXQotVGVzdCAyLCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAi
XG5BQkMgeHl6IERFRiBkZWYgR0hJXG4iWygxLDEpLCAoMSwyMCldCi0gIEV4dGVuZGluZyBiYWNr
d2FyZDogICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbKDEsMjApLCAoMSwxKV0KLVRlc3QgMywg
TFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuQUJDIERFRiBBQkNcbiJbKDEsMSksICgxLDEy
KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIlxuQUJDIERFRiBBQkNcbiJbKDEsMTIpLCAoMSwx
KV0KLVRlc3QgMywgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuQUJDIERFRiBBQkNcbiJb
KDEsMSksICgxLDEyKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIlxuQUJDIERFRiBBQkNcbiJb
KDEsMTIpLCAoMSwxKV0KLVRlc3QgNCwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuYWJj
IGVmZCBkYWJlYlxuIlsoMSwxKSwgKDEsMTQpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG5h
YmMgZWZkIGRhYmViXG4iWygxLDE0KSwgKDEsMSldCi1UZXN0IDQsIFJUTDoKLSAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEsMSksICgxLDE0KV0KLSAgRXh0ZW5kaW5n
IGJhY2t3YXJkOiAgIlxuYWJjIGVmZCBkYWJlYlxuIlsoMSwxNCksICgxLDEpXQotVGVzdCA1LCBM
VFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSld
Ci0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0K
LVRlc3QgNSwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAiIGFt
ZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQiWygwLDUpXSwgIkxvcmVt
ICJbKDAsMCldCi1UZXN0IDYsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygw
LDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1
KV0sICJMb3JlbSAiWygwLDApXQotVGVzdCA2LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAi
TG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIg
YW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0KLVRlc3QgNywgTFRSOgotICBFeHRlbmRpbmcg
Zm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFj
a3dhcmQ6ICAiIGFtZXQiWygwLDUpXSwgIkxvcmVtICJbKDAsMCldCi1UZXN0IDcsIFJUTDoKLSAg
RXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0
ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQotVGVzdCA4
LCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAs
NSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCww
KV0KLVRlc3QgOCwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAi
IGFtZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQiWygwLDUpXSwgIkxv
cmVtICJbKDAsMCldCi1UZXN0IDksIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAi
WygwLDApLCAoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIkxvcmVtICJbKDAsNSksICgw
LDApXQotVGVzdCA5LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKSwg
KDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJMb3JlbSAiWygwLDUpLCAoMCwwKV0KLVRl
c3QgMTAsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0
IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAi
WygwLDApXQotVGVzdCAxMCwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAs
MCldLCAiIGFtZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQiWygwLDUp
XSwgIkxvcmVtICJbKDAsMCldCi1UZXN0IDExLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAi
TG9yZW0gIlsoMCwwKV0sICJpcHN1bSBkb2xvciJbKDAsMTEpXQotICBFeHRlbmRpbmcgYmFja3dh
cmQ6ICAiaXBzdW0gZG9sb3IiWygwLDExKV0sICJMb3JlbSAiWygwLDApXQotVGVzdCAxMSwgUlRM
OgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAiaXBzdW0gZG9sb3IiWygw
LDExKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImlwc3VtIGRvbG9yIlsoMCwxMSldLCAiTG9y
ZW0gIlsoMCwwKV0KLVRlc3QgMTIsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAi
WygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0Ilso
MCw1KV0sICJMb3JlbSAiWygwLDApXQotVGVzdCAxMiwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2Fy
ZDogIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6
ICAiIGFtZXQiWygwLDUpXSwgIkxvcmVtICJbKDAsMCldCi1UZXN0IDEzLCBMVFI6Ci0gIEV4dGVu
ZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKSwgKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2Fy
ZDogICJMb3JlbSAiWygwLDUpLCAoMCwwKV0KLVRlc3QgMTMsIFJUTDoKLSAgRXh0ZW5kaW5nIGZv
cndhcmQ6ICJMb3JlbSAiWygwLDApLCAoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIkxv
cmVtICJbKDAsNSksICgwLDApXQotVGVzdCAxNCwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDog
IlxuIEp1c3RcbiAiWygyLDIpXSwgIlxuIEJGRFhcbiJbKDIsNildCi0gIEV4dGVuZGluZyBiYWNr
d2FyZDogICJcbiBCRkRYXG4iWygyLDYpXSwgIlxuIEp1c3RcbiAiWygyLDIpXQotVGVzdCAxNCwg
UlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuIEp1c3RcbiAiWygyLDIpXSwgIlxuIEJGRFhc
biJbKDIsNildCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbiBCRkRYXG4iWygyLDYpXSwgIlxu
IEp1c3RcbiAiWygyLDIpXQotVGVzdCAxNSwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIlxu
IEp1c3RcbiAiWygyLDIpXSwgIlxuIGV2ZXJcbiJbKDIsNildCi0gIEV4dGVuZGluZyBiYWNrd2Fy
ZDogICJcbiBldmVyXG4iWygyLDYpXSwgIlxuIEp1c3RcbiAiWygyLDIpXQotVGVzdCAxNSwgUlRM
OgotICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuIEp1c3RcbiAiWygyLDIpXSwgIlxuIGV2ZXJcbiJb
KDIsNildCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbiBldmVyXG4iWygyLDYpXSwgIlxuIEp1
c3RcbiAiWygyLDIpXQotVGVzdCAxNiwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDogImNhciBt
ZWFucyBBQkMuIlsoMCwwKSwgKDAsMTQpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiY2FyIG1l
YW5zIEFCQy4iWygwLDE0KSwgKDAsMCldCi1UZXN0IDE2LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3
YXJkOiAiY2FyIG1lYW5zIEFCQy4iWygwLDApLCAoMCwxNCldCi0gIEV4dGVuZGluZyBiYWNrd2Fy
ZDogICJjYXIgbWVhbnMgQUJDLiJbKDAsMTQpLCAoMCwwKV0KLVRlc3QgMTcsIExUUjoKLSAgRXh0
ZW5kaW5nIGZvcndhcmQ6ICLhqpxjYXIgREVGIEFCQy7hqp0iWygwLDApLCAoMCwxNCldCi0gIEV4
dGVuZGluZyBiYWNrd2FyZDogICLhqpxjYXIgREVGIEFCQy7hqp0iWygwLDE0KSwgKDAsMCldCi1U
ZXN0IDE3LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAi4aqcY2FyIERFRiBBQkMu4aqdIlso
MCwwKSwgKDAsMTQpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAi4aqcY2FyIERFRiBBQkMu4aqd
IlsoMCwxNCksICgwLDApXQotVGVzdCAxOCwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDogImhl
IHNhaWQgIuGqnGNhciBERUYgQUJD4aqdLiIiWygwLDApLCAoMCwyNCldCi0gIEV4dGVuZGluZyBi
YWNrd2FyZDogICJoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnS4iIlsoMCwyNCksICgwLDApXQot
VGVzdCAxOCwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogImhlIHNhaWQgIuGqnGNhciBERUYg
QUJD4aqdLiIiWygwLDApLCAoMCwyNCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJoZSBzYWlk
ICLhqpxjYXIgREVGIEFCQ+GqnS4iIlsoMCwyNCksICgwLDApXQotVGVzdCAxOSwgTFRSOgotICBF
eHRlbmRpbmcgZm9yd2FyZDogIkdISSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFC
Q+GqnSLhqp0nPyJbKDAsMCksICgwLDQwKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIkdISSBK
S0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnSLhqp0nPyJbKDAsNDApLCAoMCww
KV0KLVRlc3QgMTksIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJHSEkgSktMIE1OTyAn4aqb
aGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWygwLDApLCAoMCw0MCldCi0gIEV4dGVu
ZGluZyBiYWNrd2FyZDogICJHSEkgSktMIE1OTyAn4aqbaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPh
qp0i4aqdJz8iWygwLDQwKSwgKDAsMCldCi1UZXN0IDIwLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3
YXJkOiAiQUJDIGFiYyBERUYiWygwLDApLCAoMCwxMSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDog
ICJBQkMgYWJjIERFRiJbKDAsMTEpLCAoMCwwKV0KLVRlc3QgMjAsIFJUTDoKLSAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICJBQkMgYWJjIERFRiJbKDAsMCksICgwLDExKV0KLSAgRXh0ZW5kaW5nIGJhY2t3
YXJkOiAgIkFCQyBhYmMgREVGIlsoMCwxMSksICgwLDApXQotVGVzdCAyMSwgTFRSOgotICBFeHRl
bmRpbmcgZm9yd2FyZDogImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyAiWygwLDApLCAoMCw4KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDgpLCAoMCwwKV0K
LVRlc3QgMjEsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCwwKSwgKDAsOCldCi0gIEV4dGVuZGlu
ZyBiYWNrd2FyZDogICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgIlsoMCw4KSwgKDAsMCldCi1UZXN0IDIyLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJk
OiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAs
MCksICgwLDgpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsOCksICgwLDApXQotVGVzdCAyMiwgUlRM
OgotICBFeHRlbmRpbmcgZm9yd2FyZDogImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyAiWygwLDApLCAoMCw4KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAg
ImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDgp
LCAoMCwwKV0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0
ZW5kLXNlbGVjdGlvbi1ob21lLWVuZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZXh0ZW5kLXNlbGVjdGlvbi1ob21lLWVuZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3NmQyNDdhMDc3YTczYTAzMTVkNWI1ODFlYjhiMjIwNzQ5ZDM0ZmFhLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24taG9tZS1lbmQuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDQzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InJlc291
cmNlcy9leHRlbmQtc2VsZWN0aW9uLmNzcyIgLz4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXh0
ZW5kLXNlbGVjdGlvbi5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwcmUgaWQ9ImNv
bnNvbGUiPjwvcHJlPgotPHNjcmlwdD4KLQotZnVuY3Rpb24gdGVzdEV4dGVuZGluZ0xpbmVCb3Vu
ZGFyeSh0ZXN0cywgc2VsKQotewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgdGVzdHNbaV0uc3R5bGUuZGlyZWN0aW9uID0gImx0ciI7Ci0gICAg
ICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIExUUjpcbiAgRXh0ZW5kaW5nIGZvcndhcmQ6
ICIpOwotICAgICAgICBzZWwuc2V0UG9zaXRpb24odGVzdHNbaV0sIDApOwotICAgICAgICB2YXIg
bHRyUmlnaHRQb3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAiZm9yd2FyZCIsICJsaW5lQm91
bmRhcnkiLCAwKTsKLQotICAgICAgICBsb2coIiAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIik7Ci0g
ICAgICAgIHZhciBsdHJMZWZ0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwgImJhY2t3YXJk
IiwgImxpbmVCb3VuZGFyeSIsIDApOwotCi0gICAgICAgIHRlc3RzW2ldLnN0eWxlLmRpcmVjdGlv
biA9ICJydGwiOwotICAgICAgICBsb2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBSVEw6XG4gIEV4
dGVuZGluZyBmb3J3YXJkOiAiKTsKLSAgICAgICAgc2VsLnNldFBvc2l0aW9uKHRlc3RzW2ldLCAw
KTsKLSAgICAgICAgdmFyIGx0clJpZ2h0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwgImZv
cndhcmQiLCAibGluZUJvdW5kYXJ5IiwgMCk7Ci0KLSAgICAgICAgbG9nKCIgIEV4dGVuZGluZyBi
YWNrd2FyZDogICIpOwotICAgICAgICB2YXIgbHRyTGVmdFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlv
bihzZWwsICJiYWNrd2FyZCIsICJsaW5lQm91bmRhcnkiLCAwKTsKLSAgICB9Ci19Ci0KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0KLSAgICB0ZXN0cyA9IGNyZWF0ZVRlc3ROb2RlcygpOyAvLyBhbGwKLSAg
ICB2YXIgc2VsID0gZ2V0U2VsZWN0aW9uKCk7Ci0gICAgbG9nKCJcblxuXG5FeHRlbmRpbmcgYnkg
bGluZUJvdW5kYXJ5XG4iKTsKLSAgICB0ZXN0RXh0ZW5kaW5nTGluZUJvdW5kYXJ5KHRlc3RzLCAg
c2VsKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWxpbmVib3VuZGFyeS1sdHItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1s
aW5lYm91bmRhcnktbHRyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjViZjIyNDEyYzRiNThk
YTdlMjlkMjQxNGIzODdlOTY1OWY5MjA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1saW5lYm91bmRhcnktbHRyLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDcxIEBACisKKworCitFeHRlbmRpbmcgYnkgbGluZUJvdW5kYXJ5
CitUZXN0IDEsIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG5hYmMgQUJDIHh5eiBERUYg
ZGVmXG4iWygxLDEpLCAoMSwyMCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIlxuYWJjIEFCQyB4
eXogREVGIGRlZlxuIlsoMSwyMCldCitUZXN0IDIsIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6
ICAiXG5BQkMgeHl6IERFRiBkZWYgR0hJXG4iWygxLDEpLCAoMSwyMCldCisgIEV4dGVuZGluZyBi
YWNrd2FyZDogIlxuQUJDIHh5eiBERUYgZGVmIEdISVxuIlsoMSwyMCldCitUZXN0IDMsIExUUjoK
KyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG5BQkMgREVGIEFCQ1xuIlsoMSwxKSwgKDEsMTIpXQor
ICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJcbkFCQyBERUYgQUJDXG4iWygxLDEyKV0KK1Rlc3QgNCwg
TFRSOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEsMSksICgx
LDE0KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG5hYmMgZWZkIGRhYmViXG4iWygxLDE0KV0K
K1Rlc3QgNSwgTFRSOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBh
bWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQiWygwLDUpXQorVGVzdCA2
LCBMVFI6CisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygw
LDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICIgYW1ldCJbKDAsNSldCitUZXN0IDcsIExUUjoK
KyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCisg
IEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1KV0KK1Rlc3QgOCwgTFRSOgorICBFeHRl
bmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5k
aW5nIGJhY2t3YXJkOiAiIGFtZXQiWygwLDUpXQorVGVzdCA5LCBMVFI6CisgIEV4dGVuZGluZyBm
b3J3YXJkOiAgIkxvcmVtICJbKDAsMCksICgwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJM
b3JlbSAiWygwLDUpXQorVGVzdCAxMCwgTFRSOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3Jl
bSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQi
WygwLDUpXQorVGVzdCAxMSwgTFRSOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygw
LDApXSwgImlwc3VtIGRvbG9yIlsoMCwxMSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogImlwc3Vt
IGRvbG9yIlsoMCwxMSldCitUZXN0IDEyLCBMVFI6CisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkxv
cmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICIgYW1l
dCJbKDAsNSldCitUZXN0IDEzLCBMVFI6CisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkxvcmVtICJb
KDAsMCksICgwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJMb3JlbSAiWygwLDUpXQorVGVz
dCAxNCwgTFRSOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJcbiBKdXN0XG4gIlsoMiwyKV0sICJc
biBCRkRYXG4iWygyLDYpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJcbiBCRkRYXG4iWygyLDYp
XQorVGVzdCAxNSwgTFRSOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJcbiBKdXN0XG4gIlsoMiwy
KV0sICJcbiBldmVyXG4iWygyLDYpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJcbiBldmVyXG4i
WygyLDYpXQorVGVzdCAxNiwgTFRSOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJjYXIgbWVhbnMg
QUJDLiJbKDAsMCksICgwLDE0KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiY2FyIG1lYW5zIEFC
Qy4iWygwLDE0KV0KK1Rlc3QgMTcsIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAi4aqcY2Fy
IERFRiBBQkMu4aqdIlsoMCwwKSwgKDAsMTQpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICLhqpxj
YXIgREVGIEFCQy7hqp0iWygwLDE0KV0KK1Rlc3QgMTgsIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndh
cmQ6ICAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMCksICgwLDI0KV0KKyAgRXh0
ZW5kaW5nIGJhY2t3YXJkOiAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMjQpXQor
VGVzdCAxOSwgTFRSOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJHSEkgSktMIE1OTyAn4aqbaGUg
c2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWygwLDApLCAoMCw0MCldCisgIEV4dGVuZGlu
ZyBiYWNrd2FyZDogIkdISSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnSLh
qp0nPyJbKDAsNDApXQorVGVzdCAyMCwgTFRSOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJBQkMg
YWJjIERFRiJbKDAsMCksICgwLDExKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiQUJDIGFiYyBE
RUYiWygwLDExKV0KK1Rlc3QgMjEsIExUUjoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsMCksICgwLDgp
XQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCw4KV0KK1Rlc3QgMjIsIExUUjoKKyAgRXh0ZW5kaW5nIGZv
cndhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
ICJbKDAsMCksICgwLDgpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCw4KV0KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1saW5lYm91bmRh
cnktbHRyLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0
aW9uLWxpbmVib3VuZGFyeS1sdHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTY3OWVhMzNlYjYyNWRkZDcz
YjAzN2QyMDg4ODQ1MzllZmM5NTVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1saW5lYm91bmRhcnktbHRyLmh0bWwKQEAg
LTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0icmVzb3VyY2Vz
L2V4dGVuZC1zZWxlY3Rpb24uY3NzIiAvPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9leHRlbmQt
c2VsZWN0aW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHByZSBpZD0iY29uc29s
ZSI+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdEV4dGVuZGluZ0xpbmVCb3VuZGFyeSh0
ZXN0Tm9kZXMpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0Tm9kZXMubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgdGVzdE5vZGVzW2ldLnN0eWxlLmRpcmVjdGlvbiA9ICJsdHIiOworICAg
ICAgICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXN0Tm9kZXNbaV0sIDApOworCisgICAg
ICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIExUUjpcbiIpOworICAgICAgICBsb2coIiAg
RXh0ZW5kaW5nIGZvcndhcmQ6ICAiKTsKKyAgICAgICAgZXh0ZW5kQW5kTG9nU2VsZWN0aW9uVG9F
bmQoImZvcndhcmQiLCAibGluZUJvdW5kYXJ5Iik7CisKKyAgICAgICAgbG9nKCIgIEV4dGVuZGlu
ZyBiYWNrd2FyZDogIik7CisgICAgICAgIGV4dGVuZEFuZExvZ1NlbGVjdGlvblRvRW5kKCJiYWNr
d2FyZCIsICJsaW5lQm91bmRhcnkiKTsKKyAgICB9Cit9CisKK2xvZygiXG5cblxuRXh0ZW5kaW5n
IGJ5IGxpbmVCb3VuZGFyeVxuIik7Cit0ZXN0RXh0ZW5kaW5nTGluZUJvdW5kYXJ5KGNyZWF0ZUFs
bE5vZGVzKCkpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIHNldHVw
Rm9yTGF5b3V0VGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWxpbmVib3VuZGFyeS1ydGwt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVj
dGlvbi1saW5lYm91bmRhcnktcnRsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWE1NGYyYzRl
ZWU5NmVhOTBhMDExMWQ3ZDZlMThlMDQ2OWUyOTNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1saW5lYm91bmRhcnktcnRs
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcxIEBACisKKworCitFeHRlbmRpbmcgYnkgbGluZUJv
dW5kYXJ5CitUZXN0IDEsIFJUTDoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG5hYmMgQUJDIHh5
eiBERUYgZGVmXG4iWygxLDEpLCAoMSwyMCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIlxuYWJj
IEFCQyB4eXogREVGIGRlZlxuIlsoMSwyMCldCitUZXN0IDIsIFJUTDoKKyAgRXh0ZW5kaW5nIGZv
cndhcmQ6ICAiXG5BQkMgeHl6IERFRiBkZWYgR0hJXG4iWygxLDEpLCAoMSwyMCldCisgIEV4dGVu
ZGluZyBiYWNrd2FyZDogIlxuQUJDIHh5eiBERUYgZGVmIEdISVxuIlsoMSwyMCldCitUZXN0IDMs
IFJUTDoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG5BQkMgREVGIEFCQ1xuIlsoMSwxKSwgKDEs
MTIpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJcbkFCQyBERUYgQUJDXG4iWygxLDEyKV0KK1Rl
c3QgNCwgUlRMOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEs
MSksICgxLDE0KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG5hYmMgZWZkIGRhYmViXG4iWygx
LDE0KV0KK1Rlc3QgNSwgUlRMOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDAp
XSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQiWygwLDUpXQor
VGVzdCA2LCBSVEw6CisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkxvcmVtICJbKDAsMCldLCAiIGFt
ZXQiWygwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICIgYW1ldCJbKDAsNSldCitUZXN0IDcs
IFJUTDoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAs
NSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1KV0KK1Rlc3QgOCwgUlRMOgor
ICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAg
RXh0ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQiWygwLDUpXQorVGVzdCA5LCBSVEw6CisgIEV4dGVu
ZGluZyBmb3J3YXJkOiAgIkxvcmVtICJbKDAsMCksICgwLDUpXQorICBFeHRlbmRpbmcgYmFja3dh
cmQ6ICJMb3JlbSAiWygwLDUpXQorVGVzdCAxMCwgUlRMOgorICBFeHRlbmRpbmcgZm9yd2FyZDog
ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAi
IGFtZXQiWygwLDUpXQorVGVzdCAxMSwgUlRMOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3Jl
bSAiWygwLDApXSwgImlwc3VtIGRvbG9yIlsoMCwxMSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDog
Imlwc3VtIGRvbG9yIlsoMCwxMSldCitUZXN0IDEyLCBSVEw6CisgIEV4dGVuZGluZyBmb3J3YXJk
OiAgIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6
ICIgYW1ldCJbKDAsNSldCitUZXN0IDEzLCBSVEw6CisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkxv
cmVtICJbKDAsMCksICgwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJMb3JlbSAiWygwLDUp
XQorVGVzdCAxNCwgUlRMOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJcbiBKdXN0XG4gIlsoMiwy
KV0sICJcbiBCRkRYXG4iWygyLDYpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJcbiBCRkRYXG4i
WygyLDYpXQorVGVzdCAxNSwgUlRMOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJcbiBKdXN0XG4g
IlsoMiwyKV0sICJcbiBldmVyXG4iWygyLDYpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJcbiBl
dmVyXG4iWygyLDYpXQorVGVzdCAxNiwgUlRMOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJjYXIg
bWVhbnMgQUJDLiJbKDAsMCksICgwLDE0KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiY2FyIG1l
YW5zIEFCQy4iWygwLDE0KV0KK1Rlc3QgMTcsIFJUTDoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAi
4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwwKSwgKDAsMTQpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6
ICLhqpxjYXIgREVGIEFCQy7hqp0iWygwLDE0KV0KK1Rlc3QgMTgsIFJUTDoKKyAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMCksICgwLDI0KV0K
KyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAs
MjQpXQorVGVzdCAxOSwgUlRMOgorICBFeHRlbmRpbmcgZm9yd2FyZDogICJHSEkgSktMIE1OTyAn
4aqbaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWygwLDApLCAoMCw0MCldCisgIEV4
dGVuZGluZyBiYWNrd2FyZDogIkdISSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFC
Q+GqnSLhqp0nPyJbKDAsNDApXQorVGVzdCAyMCwgUlRMOgorICBFeHRlbmRpbmcgZm9yd2FyZDog
ICJBQkMgYWJjIERFRiJbKDAsMCksICgwLDExKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiQUJD
IGFiYyBERUYiWygwLDExKV0KK1Rlc3QgMjEsIFJUTDoKKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAi
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsMCks
ICgwLDgpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCw4KV0KK1Rlc3QgMjIsIFJUTDoKKyAgRXh0ZW5k
aW5nIGZvcndhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnICJbKDAsMCksICgwLDgpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCw4KV0KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1saW5l
Ym91bmRhcnktcnRsLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQt
c2VsZWN0aW9uLWxpbmVib3VuZGFyeS1ydGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTY3NjY0Mzc3OTQx
YWJkYWVkMDIwMTEwOTI2Zjc4M2M2MzAxMWRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1saW5lYm91bmRhcnktcnRsLmh0
bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0icmVz
b3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24uY3NzIiAvPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9l
eHRlbmQtc2VsZWN0aW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHByZSBpZD0i
Y29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdEV4dGVuZGluZ0xpbmVCb3Vu
ZGFyeSh0ZXN0Tm9kZXMpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0Tm9kZXMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgdGVzdE5vZGVzW2ldLnN0eWxlLmRpcmVjdGlvbiA9ICJydGwi
OworICAgICAgICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXN0Tm9kZXNbaV0sIDApOwor
CisgICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIFJUTDpcbiIpOworICAgICAgICBs
b2coIiAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiKTsKKyAgICAgICAgZXh0ZW5kQW5kTG9nU2VsZWN0
aW9uVG9FbmQoImZvcndhcmQiLCAibGluZUJvdW5kYXJ5Iik7CisKKyAgICAgICAgbG9nKCIgIEV4
dGVuZGluZyBiYWNrd2FyZDogIik7CisgICAgICAgIGV4dGVuZEFuZExvZ1NlbGVjdGlvblRvRW5k
KCJiYWNrd2FyZCIsICJsaW5lQm91bmRhcnkiKTsKKyAgICB9Cit9CisKK2xvZygiXG5cblxuRXh0
ZW5kaW5nIGJ5IGxpbmVCb3VuZGFyeVxuIik7Cit0ZXN0RXh0ZW5kaW5nTGluZUJvdW5kYXJ5KGNy
ZWF0ZUFsbE5vZGVzKCkpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IHNldHVwRm9yTGF5b3V0VGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLXdvcmQtZW5jbG9z
aW5nLWJsb2NrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4
dGVuZC1zZWxlY3Rpb24td29yZC1lbmNsb3NpbmctYmxvY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJkNGQxNDNlNDQxOWY5N2Y1MmU3MmE5YTIwMzA4ZjQ0M2RkMzI5YTIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLXdv
cmQtZW5jbG9zaW5nLWJsb2NrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACisKKworCisK
KworRXh0ZW5kaW5nIGJ5IHdvcmQKK1Rlc3QgMSwgTFRSOgorICBFeHRlbmRpbmcgcmlnaHQ6ICJM
b3JlbSAiWygwLDApLCAoMCw1KV0sICJpcHN1bSBkb2xvciBzaXQiWygwLDUpLCAoMCwxMSksICgw
LDE1KV0sICIgYW1ldHQiWygwLDYpLCAoMCwxKV0KKyAgRXh0ZW5kaW5nIGxlZnQ6ICAiIGFtZXR0
IlsoMCw2KSwgKDAsMSldLCAiaXBzdW0gZG9sb3Igc2l0IlsoMCwxMiksICgwLDYpLCAoMCwwKV0s
ICJMb3JlbSAiWygwLDApLCAoMCw1KV0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi13b3JkLWVuY2xvc2luZy1ibG9jay5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi13b3JkLWVuY2xv
c2luZy1ibG9jay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3OWI3MzE4NTMyZDQ2ZTdlNmRmZWJmMzk2MjIy
Yjg4NzVmYjljMDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9leHRlbmQtc2VsZWN0aW9uLXdvcmQtZW5jbG9zaW5nLWJsb2NrLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0icmVzb3VyY2VzL2V4dGVu
ZC1zZWxlY3Rpb24uY3NzIiAvPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9leHRlbmQtc2VsZWN0
aW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHByZSBpZD0iY29uc29sZSI+PC9w
cmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gcnVuU2VsZWN0aW9uVGVzdHNXaXRoR3JhbnVsYXJpdHlG
b3JFbmNsb3NpbmdCbG9jayh0ZXN0Tm9kZXMsIGdyYW51bGFyaXR5KQoreworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGVzdE5vZGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGdldFNlbGVjdGlv
bigpLnNldFBvc2l0aW9uKHRlc3ROb2Rlc1tpXSwgMCk7CisKKyAgICAgICAgbG9nKCJUZXN0ICIg
KyAoaSArIDEpICsgIiwgTFRSOlxuIik7CisgICAgICAgIGxvZygiICBFeHRlbmRpbmcgcmlnaHQ6
ICIpOworICAgICAgICBleHRlbmRBbmRMb2dTZWxlY3Rpb25XaXRoaW5CbG9jaygicmlnaHQiLCBn
cmFudWxhcml0eSk7CisKKyAgICAgICAgbG9nKCIgIEV4dGVuZGluZyBsZWZ0OiAgIik7CisgICAg
ICAgIGV4dGVuZEFuZExvZ1NlbGVjdGlvbldpdGhpbkJsb2NrKCJsZWZ0IiwgZ3JhbnVsYXJpdHkp
OworICAgIH0KK30KKworbG9nKCJcblxuXG5cblxuRXh0ZW5kaW5nIGJ5IHdvcmRcbiIpOworcnVu
U2VsZWN0aW9uVGVzdHNXaXRoR3JhbnVsYXJpdHlGb3JFbmNsb3NpbmdCbG9jayhjcmVhdGVFbmNs
b3NpbmdCbG9ja05vZGVzKCksICJ3b3JkIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgc2V0dXBGb3JMYXlvdXRUZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24t
d29yZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlv
bi13b3JkLmh0bWwKaW5kZXggOTU1NDZlMDQ0NjExNTNmODA2Mjg0NDA2NGUzNmIxNTRiMDlkNmFm
OC4uYmQ3ZDAzOTE2ZWExZjI3ZDJkMTJmODhkZDRiOWMzNWJhOGIwMWY2NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi13b3JkLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi13b3Jk
Lmh0bWwKQEAgLTgsMTYgKzgsMTAgQEAKIDxib2R5PgogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
CiA8c2NyaXB0PgorbG9nKCJcblxuXG5cblxuRXh0ZW5kaW5nIGJ5IHdvcmRcbiIpOworcnVuU2Vs
ZWN0aW9uVGVzdHNXaXRoR3JhbnVsYXJpdHkoY3JlYXRlQ2hhckFuZFdvcmROb2RlcygpLCAid29y
ZCIpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgdmFyIHRlc3RzID0gY3JlYXRlVGVzdE5v
ZGVzKCdjaGFyLWFuZC13b3JkJyk7Ci0gICAgdmFyIHNlbCA9IGdldFNlbGVjdGlvbigpOwotCi0g
ICAgbG9nKCJcblxuXG5cblxuRXh0ZW5kaW5nIGJ5IHdvcmRcbiIpOwotICAgIHRlc3RFeHRlbmRp
bmdTZWxlY3Rpb24odGVzdHMsICBzZWwsICJ3b3JkIiwgMCk7Ci19Ci0KK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgc2V0dXBGb3JMYXlvdXRUZXN0KCk7CiA8L3NjcmlwdD4K
IDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291
cmNlcy9leHRlbmQtc2VsZWN0aW9uLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
cmVzb3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24uanMKaW5kZXggMWRjNzg2YWIyYzU5ODQ2MGM2N2Qy
N2E3OGFmYmRiNzEyNDgwNWNkZS4uNzQ3YTM2YzUxZTZkMmM4MjE2MGMyZmM3YWQ1ODc4OTgyY2I3
ZWQyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2Vz
L2V4dGVuZC1zZWxlY3Rpb24uanMKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
cmVzb3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24uanMKQEAgLTMsNjAgKzMsNDIgQEAgZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CiB9CiAKLWZ1bmN0aW9u
IHBvc2l0aW9uc0V4dGVuZGluZ0luRGlyZWN0aW9uRm9yRW5jbG9zaW5nQmxvY2soc2VsLCBkaXJl
Y3Rpb24sIGdyYW51bGFyaXR5KQorZnVuY3Rpb24gZXh0ZW5kU2VsZWN0aW9uV2l0aGluQmxvY2so
ZGlyZWN0aW9uLCBncmFudWxhcml0eSkKIHsKKyAgICB2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKICAgICB2YXIgcG9zaXRpb25zID0gW107Ci0gICAgdmFyIGx0ck51bTsKLSAgICB2YXIg
cnRsTnVtOwotICAgIGlmIChncmFudWxhcml0eSA9PSAiY2hhcmFjdGVyIikgewotICAgICAgICBs
dHJOdW0gPSA1OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGx0ck51bSA9IDE7Ci0gICAgfQotICAg
IGlmIChncmFudWxhcml0eSA9PSAiY2hhcmFjdGVyIikgewotICAgICAgICBydGxOdW0gPSAxNTsK
LSAgICB9IGVsc2UgewotICAgICAgICBydGxOdW0gPSAzOwotICAgIH0KLSAgICB2YXIgaW5kZXgg
PSAwOwotICAgIHdoaWxlIChpbmRleCA8PSBsdHJOdW0pIHsKLSAgICAgICAgcG9zaXRpb25zLnB1
c2goeyBub2RlOiBzZWwuZXh0ZW50Tm9kZSwgYmVnaW46IHNlbC5iYXNlT2Zmc2V0LCBlbmQ6IHNl
bC5leHRlbnRPZmZzZXQgfSk7Ci0gICAgICAgIHNlbC5tb2RpZnkoImV4dGVuZCIsIGRpcmVjdGlv
biwgZ3JhbnVsYXJpdHkpOwotICAgICAgICArK2luZGV4OwotICAgIH0KLSAgICB2YXIgYW50aURp
cmVjdGlvbiA9IGRpcmVjdGlvbjsKLSAgICBpZiAoYW50aURpcmVjdGlvbiA9PSAnbGVmdCcpIHsK
LSAgICAgICAgYW50aURpcmVjdGlvbiA9ICJyaWdodCI7Ci0gICAgfSBlbHNlIGlmIChhbnRpRGly
ZWN0aW9uID0gJ3JpZ2h0JykgewotICAgICAgICBhbnRpRGlyZWN0aW9uID0gImxlZnQiOworICAg
IHZhciBsdHJOdW0gPSAoZ3JhbnVsYXJpdHkgPT09ICJjaGFyYWN0ZXIiKSA/IDUgOiAxOworICAg
IHZhciBydGxOdW0gPSAoZ3JhbnVsYXJpdHkgPT09ICJjaGFyYWN0ZXIiKSA/IDE1IDogMzsKKwor
ICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPD0gbHRyTnVtOyArK2luZGV4KSB7CisgICAg
ICAgIHBvc2l0aW9ucy5wdXNoKHsgbm9kZTogcy5leHRlbnROb2RlLCBiZWdpbjogcy5iYXNlT2Zm
c2V0LCBlbmQ6IHMuZXh0ZW50T2Zmc2V0IH0pOworICAgICAgICBzLm1vZGlmeSgiZXh0ZW5kIiwg
ZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CiAgICAgfQogCi0gICAgaW5kZXggPSAwOwotICAgIHdo
aWxlIChpbmRleCA8PSBydGxOdW0pIHsKLSAgICAgICAgcG9zaXRpb25zLnB1c2goeyBub2RlOiBz
ZWwuZXh0ZW50Tm9kZSwgYmVnaW46IHNlbC5iYXNlT2Zmc2V0LCBlbmQ6IHNlbC5leHRlbnRPZmZz
ZXQgfSk7Ci0gICAgICAgIHNlbC5tb2RpZnkoImV4dGVuZCIsIGFudGlEaXJlY3Rpb24sIGdyYW51
bGFyaXR5KTsKLSAgICAgICAgKytpbmRleDsKKyAgICB2YXIgcmV2ZXJzZSA9IChkaXJlY3Rpb24g
PT09ICJsZWZ0IikgPyAicmlnaHQiIDogImxlZnQiOworICAgIGZvciAodmFyIGluZGV4ID0gMDsg
aW5kZXggPD0gcnRsTnVtOyArK2luZGV4KSB7CisgICAgICAgIHBvc2l0aW9ucy5wdXNoKHsgbm9k
ZTogcy5leHRlbnROb2RlLCBiZWdpbjogcy5iYXNlT2Zmc2V0LCBlbmQ6IHMuZXh0ZW50T2Zmc2V0
IH0pOworICAgICAgICBzLm1vZGlmeSgiZXh0ZW5kIiwgcmV2ZXJzZSwgZ3JhbnVsYXJpdHkpOwog
ICAgIH0KLSAgICB2YXIgaW5kZXggPSAwOwotICAgIHdoaWxlIChpbmRleCA8IGx0ck51bSkgewot
ICAgICAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHNlbC5leHRlbnROb2RlLCBiZWdpbjogc2Vs
LmJhc2VPZmZzZXQsIGVuZDogc2VsLmV4dGVudE9mZnNldCB9KTsKLSAgICAgICAgc2VsLm1vZGlm
eSgiZXh0ZW5kIiwgZGlyZWN0aW9uLCBncmFudWxhcml0eSk7Ci0gICAgICAgICsraW5kZXg7CisK
KyAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbHRyTnVtOyArK2luZGV4KSB7CisgICAg
ICAgIHBvc2l0aW9ucy5wdXNoKHsgbm9kZTogcy5leHRlbnROb2RlLCBiZWdpbjogcy5iYXNlT2Zm
c2V0LCBlbmQ6IHMuZXh0ZW50T2Zmc2V0IH0pOworICAgICAgICBzLm1vZGlmeSgiZXh0ZW5kIiwg
ZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CiAgICAgfQorCiAgICAgcmV0dXJuIHBvc2l0aW9uczsK
IH0KIAotCi1mdW5jdGlvbiBwb3NpdGlvbnNFeHRlbmRpbmdJbkRpcmVjdGlvbihzZWwsIGRpcmVj
dGlvbiwgZ3JhbnVsYXJpdHkpCitmdW5jdGlvbiBleHRlbmRTZWxlY3Rpb25Ub0VuZChkaXJlY3Rp
b24sIGdyYW51bGFyaXR5KQogeworICAgIHZhciBzID0gd2luZG93LmdldFNlbGVjdGlvbigpOwog
ICAgIHZhciBwb3NpdGlvbnMgPSBbXTsKLSAgICAKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHNlbC5leHRlbnROb2RlLCBiZWdpbjogc2VsLmJhc2VP
ZmZzZXQsIGVuZDogc2VsLmV4dGVudE9mZnNldCB9KTsKLSAgICAgICAgc2VsLm1vZGlmeSgiZXh0
ZW5kIiwgZGlyZWN0aW9uLCBncmFudWxhcml0eSk7Ci0gICAgICAgIGlmIChwb3NpdGlvbnNbcG9z
aXRpb25zLmxlbmd0aCAtIDFdLm5vZGUgPT0gc2VsLmV4dGVudE5vZGUgJiYgcG9zaXRpb25zW3Bv
c2l0aW9ucy5sZW5ndGggLSAxXS5lbmQgPT0gc2VsLmV4dGVudE9mZnNldCkKLSAgICAgICAgICAg
IGJyZWFrOwotICAgIH07CisgICAgdmFyIG5leHRQb3NpdGlvbiA9IHt9OworICAgIHdoaWxlIChu
ZXh0UG9zaXRpb24ubm9kZSAhPT0gcy5leHRlbnROb2RlIHx8IG5leHRQb3NpdGlvbi5lbmQgIT09
IHMuZXh0ZW50T2Zmc2V0KSB7CisgICAgICAgIG5leHRQb3NpdGlvbiA9IHsgbm9kZTogcy5leHRl
bnROb2RlLCBiZWdpbjogcy5iYXNlT2Zmc2V0LCBlbmQ6IHMuZXh0ZW50T2Zmc2V0IH07CisgICAg
ICAgIHBvc2l0aW9ucy5wdXNoKG5leHRQb3NpdGlvbik7CisgICAgICAgIHMubW9kaWZ5KCJleHRl
bmQiLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICB9CiAgICAgcmV0dXJuIHBvc2l0aW9u
czsKIH0KIApAQCAtNjgsNyArNTAsNyBAQCBmdW5jdGlvbiBmb2xkKHN0cmluZykKICAgICAgICAg
aWYgKGNoYXIgPj0gMHgwNWQwKQogICAgICAgICAgICAgY2hhciAtPSAweDA1OGY7CiAgICAgICAg
IGVsc2UgaWYgKGNoYXIgPT0gMTApIHsKLSAgICAgICAgICAgIHJlc3VsdCArPSAiXFxuIjsKKyAg
ICAgICAgICAgIHJlc3VsdCArPSJcXG4iOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhcik7CkBAIC05MSwx
NzcgKzczLDE5NCBAQCBmdW5jdGlvbiBsb2dQb3NpdGlvbnMocG9zaXRpb25zKQogICAgIGxvZygi
XSIpOwogfQogCi1mdW5jdGlvbiBjaGVja1JldmVyc2VPcmRlcihpbnB1dFBvc2l0aW9ucywgaW5w
dXRSZXZlcnNlUG9zaXRpb25zKQorZnVuY3Rpb24gY29tcGFyZUluRGlyZWN0aW9uKHBvc2l0aW9u
cywgY29tcGFyaXNvblBvc2l0aW9ucywgaW5SZXZlcnNlKQogewotICAgIHZhciBwb3NpdGlvbnMg
PSBpbnB1dFBvc2l0aW9ucy5zbGljZSgpOwotICAgIHZhciByZXZlcnNlUG9zaXRpb25zID0gaW5w
dXRSZXZlcnNlUG9zaXRpb25zLnNsaWNlKCk7Ci0gICAgdmFyIG1pc21hdGNoID0gKHBvc2l0aW9u
cy5sZW5ndGggIT0gcmV2ZXJzZVBvc2l0aW9ucy5sZW5ndGgpOwotICAgIGlmIChtaXNtYXRjaCkK
LSAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lLCBidXQg
dGhlIGxlbmd0aCBhcmUgbm90IHRoZSBzYW1lICIgKyAgcG9zaXRpb25zLmxlbmd0aCArICIgdnMu
ICIgKyByZXZlcnNlUG9zaXRpb25zLmxlbmd0aCArICJcbiIpOwotICAgIHdoaWxlICghbWlzbWF0
Y2gpIHsKLSAgICAgICAgdmFyIHBvcyA9IHBvc2l0aW9ucy5wb3AoKTsKLSAgICAgICAgaWYgKCFw
b3MpCisgICAgaWYgKHBvc2l0aW9ucy5sZW5ndGggIT09IGNvbXBhcmlzb25Qb3NpdGlvbnMubGVu
Z3RoKSB7CisgICAgICAgIGxvZygiV0FSTklORzogcG9zaXRpb25zIHNob3VsZCBiZSB0aGUgc2Ft
ZSwgYnV0IHRoZSBsZW5ndGggYXJlIG5vdCB0aGUgc2FtZSAiICsgIHBvc2l0aW9ucy5sZW5ndGgg
KyAiIHZzLiAiICsgc2FtZVBvc2l0aW9ucy5sZW5ndGggKyAiXG4iKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgKytp
KSB7CisgICAgICAgIHZhciBwb3MgPSBwb3NpdGlvbnNbaV07CisgICAgICAgIHZhciBjb21wYXJp
c29uID0gY29tcGFyaXNvblBvc2l0aW9uc1tpblJldmVyc2UgPyAoY29tcGFyaXNvblBvc2l0aW9u
cy5sZW5ndGggLSBpIC0gMSkgOiBpXTsKKworICAgICAgICBpZiAocG9zLm5vZGUgIT09IGNvbXBh
cmlzb24ubm9kZSkgeworICAgICAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxk
IGJlIHRoZSBzYW1lLCBidXQgbm9kZSBhcmUgbm90IHRoZSBzYW1lXG4iKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB2YXIgcmV2ZXJzZVBvcyA9IHJldmVyc2VQb3NpdGlvbnMuc2hpZnQo
KTsKLSAgICAgICAgaWYgKHBvcy5ub2RlICE9IHJldmVyc2VQb3Mubm9kZSkgewotICAgICAgICAg
ICAgbWlzbWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMg
c2hvdWxkIGJlIHRoZSByZXZlcnNlLCBidXQgbm9kZSBhcmUgbm90IHRoZSByZXZlcnNlXG4iKTsK
LSAgICAgICAgfSAKLSAgICAgICAgaWYgKHBvcy5iZWdpbiAhPSByZXZlcnNlUG9zLmJlZ2luKSB7
Ci0gICAgICAgICAgICBtaXNtYXRjaCA9IHRydWU7Ci0gICAgICAgICAgICBsb2coIldBUk5JTkc6
IHBvc2l0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUsIGJ1dCBiZWdpbiBhcmUgbm90ICIgKyBwb3Mu
YmVnaW4gKyAiIHZzLiAiICsgcmV2ZXJzZVBvcy5iZWdpbiArICJcbiIpOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChwb3MuZW5kICE9IHJldmVyc2VQb3MuZW5kKSB7Ci0gICAgICAgICAgICBtaXNt
YXRjaCA9IHRydWU7Ci0gICAgICAgICAgICBsb2coIldBUk5JTkc6IHBvc2l0aW9ucyBzaG91bGQg
YmUgdGhlIHNhbWUsIGJ1dCBlbmQgYXJlIG5vdCAiICsgcG9zLmVuZCArICIgdnMuICIgKyByZXZl
cnNlUG9zLmVuZCArICJcbiIpOworICAgICAgICBpZiAocG9zLmJlZ2luICE9PSBjb21wYXJpc29u
LmJlZ2luKSB7CisgICAgICAgICAgICBsb2coIldBUk5JTkc6IHBvc2l0aW9ucyBzaG91bGQgYmUg
dGhlIHNhbWUsIGJ1dCBiZWdpbiBhcmUgbm90IHRoZSBzYW1lICIgKyBwb3MuYmVnaW4gKyAiIHZz
LiAiICsgY29tcGFyaXNvbi5iZWdpbiArICJcbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHBvcy5lbmQgIT09IGNvbXBhcmlzb24uZW5kKSB7CisgICAgICAg
ICAgICBsb2coIldBUk5JTkc6IHBvc2l0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUsIGJ1dCBlbmQg
YXJlIG5vdCB0aGUgc2FtZSAiICsgcG9zLmVuZCArICIgdnMuICIgKyBjb21wYXJpc29uLmVuZCAr
ICJcbiIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLQotZnVu
Y3Rpb24gY2hlY2tTYW1lT3JkZXIoaW5wdXRQb3NpdGlvbnMsIGlucHV0U2FtZVBvc2l0aW9ucykK
K2Z1bmN0aW9uIGNvbXBhcmVJblJldmVyc2VPcmRlcihwb3NpdGlvbnMsIGNvbXBhcmlzb25Qb3Np
dGlvbnMpCiB7Ci0gICAgdmFyIHBvc2l0aW9ucyA9IGlucHV0UG9zaXRpb25zLnNsaWNlKCk7Ci0g
ICAgdmFyIHNhbWVQb3NpdGlvbnMgPSBpbnB1dFNhbWVQb3NpdGlvbnMuc2xpY2UoKTsKLSAgICB2
YXIgbWlzbWF0Y2ggPSBwb3NpdGlvbnMubGVuZ3RoICE9IHNhbWVQb3NpdGlvbnMubGVuZ3RoOwot
ICAgIGlmIChtaXNtYXRjaCkKLSAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxk
IGJlIHRoZSBzYW1lLCBidXQgdGhlIGxlbmd0aCBhcmUgbm90IHRoZSBzYW1lICIgKyAgcG9zaXRp
b25zLmxlbmd0aCArICIgdnMuICIgKyBzYW1lUG9zaXRpb25zLmxlbmd0aCArICJcbiIpOwotICAg
IHdoaWxlICghbWlzbWF0Y2gpIHsKLSAgICAgICAgdmFyIHBvcyA9IHBvc2l0aW9ucy5wb3AoKTsK
LSAgICAgICAgaWYgKCFwb3MpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgdmFyIHNhbWVQ
b3MgPSBzYW1lUG9zaXRpb25zLnBvcCgpOwotICAgICAgICBpZiAocG9zLm5vZGUgIT0gc2FtZVBv
cy5ub2RlKSB7Ci0gICAgICAgICAgICBtaXNtYXRjaCA9IHRydWU7Ci0gICAgICAgICAgICBsb2co
IldBUk5JTkc6IHBvc2l0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUsIGJ1dCBub2RlIGFyZSBub3Qg
dGhlIHNhbWVcbiIpOwotICAgICAgICB9IAotICAgICAgICBpZiAocG9zLmJlZ2luICE9IHNhbWVQ
b3MuYmVnaW4pIHsKLSAgICAgICAgICAgIG1pc21hdGNoID0gdHJ1ZTsKLSAgICAgICAgICAgIGxv
ZygiV0FSTklORzogcG9zaXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSwgYnV0IGJlZ2luIGFyZSBu
b3QgdGhlIHNhbWUgIiArIHBvcy5iZWdpbiArICIgdnMuICIgKyBzYW1lUG9zLmJlZ2luICsgIlxu
Iik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBvcy5lbmQgIT0gc2FtZVBvcy5lbmQpIHsKLSAg
ICAgICAgICAgIG1pc21hdGNoID0gdHJ1ZTsKLSAgICAgICAgICAgIGxvZygiV0FSTklORzogcG9z
aXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSwgYnV0IGVuZCBhcmUgbm90IHRoZSBzYW1lICIgKyBw
b3MuZW5kICsgIiB2cy4gIiArIHNhbWVQb3MuZW5kICsgIlxuIik7Ci0gICAgICAgIH0KLSAgIH0K
KyAgICBjb21wYXJlSW5EaXJlY3Rpb24ocG9zaXRpb25zLCBjb21wYXJpc29uUG9zaXRpb25zLCB0
cnVlKTsKIH0KIAorZnVuY3Rpb24gY29tcGFyZUluU2FtZU9yZGVyKHBvc2l0aW9ucywgY29tcGFy
aXNvblBvc2l0aW9ucykKK3sKKyAgICBjb21wYXJlSW5EaXJlY3Rpb24ocG9zaXRpb25zLCBjb21w
YXJpc29uUG9zaXRpb25zLCBmYWxzZSk7Cit9CiAKLWZ1bmN0aW9uIGV4dGVuZGluZ1NlbGVjdGlv
bihzZWwsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHksIG9wdGlvbikKK2Z1bmN0aW9uIGV4dGVuZEFu
ZExvZ1NlbGVjdGlvbihleHRlbmRGbiwgZGlyZWN0aW9uLCBncmFudWxhcml0eSkKIHsKLSAgICB2
YXIgcG9zaXRpb25zOwotICAgIGlmIChvcHRpb24gPT0gMCkgewotICAgICAgICBwb3NpdGlvbnMg
PSBwb3NpdGlvbnNFeHRlbmRpbmdJbkRpcmVjdGlvbihzZWwsIGRpcmVjdGlvbiwgZ3JhbnVsYXJp
dHkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHBvc2l0aW9ucyA9IHBvc2l0aW9uc0V4dGVuZGlu
Z0luRGlyZWN0aW9uRm9yRW5jbG9zaW5nQmxvY2soc2VsLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5
KTsKLSAgICB9CisgICAgdmFyIHBvc2l0aW9ucyA9IGV4dGVuZEZuKGRpcmVjdGlvbiwgZ3JhbnVs
YXJpdHkpOwogICAgIGxvZ1Bvc2l0aW9ucyhwb3NpdGlvbnMpOwogICAgIGxvZygiXG4iKTsKICAg
ICByZXR1cm4gcG9zaXRpb25zOwogfQogCi1mdW5jdGlvbiB0ZXN0RXh0ZW5kaW5nU2VsZWN0aW9u
KHRlc3RzLCBzZWwsIGdyYW51bGFyaXR5KQorZnVuY3Rpb24gZXh0ZW5kQW5kTG9nU2VsZWN0aW9u
V2l0aGluQmxvY2soZGlyZWN0aW9uLCBncmFudWxhcml0eSkKK3sKKyAgICByZXR1cm4gZXh0ZW5k
QW5kTG9nU2VsZWN0aW9uKGV4dGVuZFNlbGVjdGlvbldpdGhpbkJsb2NrLCBkaXJlY3Rpb24sIGdy
YW51bGFyaXR5KTsKK30KKworZnVuY3Rpb24gZXh0ZW5kQW5kTG9nU2VsZWN0aW9uVG9FbmQoZGly
ZWN0aW9uLCBncmFudWxhcml0eSkKK3sKKyAgICByZXR1cm4gZXh0ZW5kQW5kTG9nU2VsZWN0aW9u
KGV4dGVuZFNlbGVjdGlvblRvRW5kLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKK30KKworZnVu
Y3Rpb24gcnVuU2VsZWN0aW9uVGVzdHNXaXRoR3JhbnVsYXJpdHkodGVzdHMsIGdyYW51bGFyaXR5
KQogewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgdGVzdHNbaV0uc3R5bGUuZGlyZWN0aW9uID0gImx0ciI7Ci0gICAgICAgIGxvZygiVGVzdCAi
ICsgKGkgKyAxKSArICIsIExUUjpcbiAgRXh0ZW5kaW5nIHJpZ2h0OiAiKTsKLSAgICAgICAgc2Vs
LnNldFBvc2l0aW9uKHRlc3RzW2ldLCAwKTsKLSAgICAgICAgdmFyIGx0clJpZ2h0UG9zID0gZXh0
ZW5kaW5nU2VsZWN0aW9uKHNlbCwgInJpZ2h0IiwgZ3JhbnVsYXJpdHksIDApOworICAgICAgICBs
b2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBMVFI6XG4iKTsKKyAgICAgICAgbG9nKCIgIEV4dGVu
ZGluZyByaWdodDogIik7CisgICAgICAgIGdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRlc3Rz
W2ldKTsKKyAgICAgICAgdmFyIGx0clJpZ2h0UG9zID0gZXh0ZW5kQW5kTG9nU2VsZWN0aW9uVG9F
bmQoInJpZ2h0IiwgZ3JhbnVsYXJpdHkpOwogCiAgICAgICAgIGxvZygiICBFeHRlbmRpbmcgbGVm
dDogICIpOwotICAgICAgICB2YXIgbHRyTGVmdFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWws
ICJsZWZ0IiwgZ3JhbnVsYXJpdHksIDApOworICAgICAgICB2YXIgbHRyTGVmdFBvcyA9IGV4dGVu
ZEFuZExvZ1NlbGVjdGlvblRvRW5kKCJsZWZ0IiwgZ3JhbnVsYXJpdHkpOwogCiAgICAgICAgIGxv
ZygiICBFeHRlbmRpbmcgZm9yd2FyZDogIik7Ci0gICAgICAgIHNlbC5zZXRQb3NpdGlvbih0ZXN0
c1tpXSwgMCk7Ci0gICAgICAgIHZhciBsdHJGb3J3YXJkUG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9u
KHNlbCwgImZvcndhcmQiLCBncmFudWxhcml0eSwgMCk7CisgICAgICAgIGdldFNlbGVjdGlvbigp
LnNldFBvc2l0aW9uKHRlc3RzW2ldKTsKKyAgICAgICAgdmFyIGx0ckZvcndhcmRQb3MgPSBleHRl
bmRBbmRMb2dTZWxlY3Rpb25Ub0VuZCgiZm9yd2FyZCIsIGdyYW51bGFyaXR5KTsKIAogICAgICAg
ICBsb2coIiAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIik7Ci0gICAgICAgIHZhciBsdHJCYWNrd2Fy
ZFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWwsICJiYWNrd2FyZCIsIGdyYW51bGFyaXR5LCAw
KTsKKyAgICAgICAgdmFyIGx0ckJhY2t3YXJkUG9zID0gZXh0ZW5kQW5kTG9nU2VsZWN0aW9uVG9F
bmQoImJhY2t3YXJkIiwgZ3JhbnVsYXJpdHkpOwogCiAgICAgICAgIHRlc3RzW2ldLnN0eWxlLmRp
cmVjdGlvbiA9ICJydGwiOwogCi0gICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIFJU
TDpcbiAgRXh0ZW5kaW5nIGxlZnQ6ICIpOwotICAgICAgICBzZWwuc2V0UG9zaXRpb24odGVzdHNb
aV0sIDApOwotICAgICAgICB2YXIgcnRsTGVmdFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWws
ICJsZWZ0IiwgZ3JhbnVsYXJpdHksIDApOworICAgICAgICBsb2coIlRlc3QgIiArIChpICsgMSkg
KyAiLCBSVEw6XG4iKTsKKyAgICAgICAgbG9nKCIgIEV4dGVuZGluZyBsZWZ0OiAiKTsKKyAgICAg
ICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGVzdHNbaV0pOworICAgICAgICB2YXIgcnRs
TGVmdFBvcyA9IGV4dGVuZEFuZExvZ1NlbGVjdGlvblRvRW5kKCJsZWZ0IiwgZ3JhbnVsYXJpdHkp
OwogCiAgICAgICAgIGxvZygiICBFeHRlbmRpbmcgcmlnaHQ6ICAiKTsKLSAgICAgICAgdmFyIHJ0
bFJpZ2h0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwgInJpZ2h0IiwgZ3JhbnVsYXJpdHks
IDApOworICAgICAgICB2YXIgcnRsUmlnaHRQb3MgPSBleHRlbmRBbmRMb2dTZWxlY3Rpb25Ub0Vu
ZCgicmlnaHQiLCBncmFudWxhcml0eSk7CiAKICAgICAgICAgbG9nKCIgIEV4dGVuZGluZyBmb3J3
YXJkOiAiKTsKLSAgICAgICAgc2VsLnNldFBvc2l0aW9uKHRlc3RzW2ldLCAwKTsKLSAgICAgICAg
dmFyIHJ0bEZvcndhcmRQb3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAiZm9yd2FyZCIsIGdy
YW51bGFyaXR5LCAwKTsKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGVzdHNb
aV0pOworICAgICAgICB2YXIgcnRsRm9yd2FyZFBvcyA9IGV4dGVuZEFuZExvZ1NlbGVjdGlvblRv
RW5kKCJmb3J3YXJkIiwgZ3JhbnVsYXJpdHkpOwogCiAgICAgICAgIGxvZygiICBFeHRlbmRpbmcg
YmFja3dhcmQ6ICIpOwotICAgICAgICB2YXIgcnRsQmFja3dhcmRQb3MgPSBleHRlbmRpbmdTZWxl
Y3Rpb24oc2VsLCAiYmFja3dhcmQiLCBncmFudWxhcml0eSwgMCk7CisgICAgICAgIHZhciBydGxC
YWNrd2FyZFBvcyA9IGV4dGVuZEFuZExvZ1NlbGVjdGlvblRvRW5kKCJiYWNrd2FyZCIsIGdyYW51
bGFyaXR5KTsKIAogICAgICAgICAvLyB2YWxpZGF0aW9ucwogICAgICAgICBsb2coIlxuXG4gIHZh
bGlkYXRpbmcgbHRyUmlnaHQgYW5kIGx0ckxlZnRcbiIpOwogICAgICAgICBpZiAoZ3JhbnVsYXJp
dHkgPT0gImNoYXJhY3RlciIpCi0gICAgICAgICAgICBjaGVja1JldmVyc2VPcmRlcihsdHJSaWdo
dFBvcywgbHRyTGVmdFBvcyk7CisgICAgICAgICAgICBjb21wYXJlSW5SZXZlcnNlT3JkZXIobHRy
UmlnaHRQb3MsIGx0ckxlZnRQb3MpOwogICAgICAgICAvLyBPcmRlciBtaWdodCBub3QgYmUgcmV2
ZXJzZWQgZm9yIGV4dGVuZGluZyBieSB3b3JkIGJlY2F1c2UgdGhlIDEtcG9pbnQgc2hpZnQgYnkg
c3BhY2UuCiAKICAgICAgICAgbG9nKCIgIHZhbGlkYXRpbmcgbHRyUmlnaHQgYW5kIGx0ckZvcndh
cmRcbiIpOwotICAgICAgICBjaGVja1NhbWVPcmRlcihsdHJSaWdodFBvcywgbHRyRm9yd2FyZFBv
cyk7CisgICAgICAgIGNvbXBhcmVJblNhbWVPcmRlcihsdHJSaWdodFBvcywgbHRyRm9yd2FyZFBv
cyk7CiAgICAgICAgIGxvZygiICB2YWxpZGF0aW5nIGx0ckZvcndhcmQgYW5kIHJ0bEZvcndhcmRc
biIpOwotICAgICAgICBjaGVja1NhbWVPcmRlcihsdHJGb3J3YXJkUG9zLCBydGxGb3J3YXJkUG9z
KTsKKyAgICAgICAgY29tcGFyZUluU2FtZU9yZGVyKGx0ckZvcndhcmRQb3MsIHJ0bEZvcndhcmRQ
b3MpOwogICAgICAgICBsb2coIiAgdmFsaWRhdGluZyBsdHJMZWZ0IGFuZCBsdHJCYWNrd2FyZFxu
Iik7Ci0gICAgICAgIGNoZWNrU2FtZU9yZGVyKGx0ckxlZnRQb3MsIGx0ckJhY2t3YXJkUG9zKTsK
KyAgICAgICAgY29tcGFyZUluU2FtZU9yZGVyKGx0ckxlZnRQb3MsIGx0ckJhY2t3YXJkUG9zKTsK
ICAgICAgICAgbG9nKCIgIHZhbGlkYXRpbmcgbHRyQmFja3dhcmQgYW5kIHJ0bEJhY2t3YXJkXG4i
KTsKLSAgICAgICAgY2hlY2tTYW1lT3JkZXIobHRyQmFja3dhcmRQb3MsIHJ0bEJhY2t3YXJkUG9z
KTsKKyAgICAgICAgY29tcGFyZUluU2FtZU9yZGVyKGx0ckJhY2t3YXJkUG9zLCBydGxCYWNrd2Fy
ZFBvcyk7CiAgICAgICAgIGxvZygiICB2YWxpZGF0aW5nIGx0clJpZ2h0IGFuZCBydGxMZWZ0XG4i
KTsKLSAgICAgICAgY2hlY2tTYW1lT3JkZXIobHRyUmlnaHRQb3MsIHJ0bExlZnRQb3MpOworICAg
ICAgICBjb21wYXJlSW5TYW1lT3JkZXIobHRyUmlnaHRQb3MsIHJ0bExlZnRQb3MpOwogICAgICAg
ICBsb2coIiAgdmFsaWRhdGluZyBsdHJMZWZ0IGFuZCBydGxSaWdodFxuIik7Ci0gICAgICAgIGNo
ZWNrU2FtZU9yZGVyKGx0ckxlZnRQb3MsIHJ0bFJpZ2h0UG9zKTsKKyAgICAgICAgY29tcGFyZUlu
U2FtZU9yZGVyKGx0ckxlZnRQb3MsIHJ0bFJpZ2h0UG9zKTsKICAgICAgICAgbG9nKCJcblxuIik7
CiAgICAgfQogfQogCi12YXIgZGF0YSA9IFsKLVsnY2hhci1hbmQtd29yZCcsIG51bGwsICdcbmFi
YyAmIzE0ODg7JiMxNDg5OyYjMTQ5MDsgeHl6ICYjMTQ5MTsmIzE0OTI7JiMxNDkzOyBkZWZcbidd
LAotWydjaGFyLWFuZC13b3JkJywgbnVsbCwgJ1xuJiMxNDg4OyYjMTQ4OTsmIzE0OTA7IHh5eiAm
IzE0OTE7JiMxNDkyOyYjMTQ5MzsgZGVmICYjMTQ5NDsmIzE0OTU7JiMxNDk2O1xuJ10sCi1bJ2No
YXItYW5kLXdvcmQnLCBudWxsLCAnXG4mIzE0ODg7JiMxNDg5OyYjMTQ5MDsgJiMxNDkxOyYjMTQ5
MjsmIzE0OTM7ICYjMTQ4ODsmIzE0ODk7JiMxNDkwO1xuJ10sCi1bJ2NoYXItYW5kLXdvcmQnLCBu
dWxsLCAnXG5hYmMgZWZkIGRhYmViXG4nXSwKLVsnY2hhci1hbmQtd29yZCcsIG51bGwsICdMb3Jl
bSA8c3BhbiAgc3R5bGU9ImRpcmVjdGlvbjogcnRsIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFt
ZXQnXSwKLVsnY2hhci1hbmQtd29yZCcsIG51bGwsICdMb3JlbSA8c3BhbiAgZGlyPSJydGwiPmlw
c3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCddLAotWydjaGFyLWFuZC13b3JkJywgbnVsbCwgJ0xv
cmVtIDxzcGFuICBzdHlsZT0iZGlyZWN0aW9uOiBsdHIiPmlwc3VtIGRvbG9yIHNpdDwvc3Bhbj4g
YW1ldCddLAotWydjaGFyLWFuZC13b3JkJywgbnVsbCwgJ0xvcmVtIDxzcGFuICBkaXI9Imx0ciI+
aXBzdW0gZG9sb3Igc2l0PC9zcGFuPiBhbWV0J10sCi1bJ2VuY2xvc2luZy1ibG9jaycsIG51bGws
ICdMb3JlbSA8ZGl2ICBkaXI9InJ0bCI+aXBzdW0gZG9sb3Igc2l0PC9kaXY+IGFtZXR0J10sCi1b
J2hvbWUtZW5kJywgbnVsbCwgJ0xvcmVtIDxzcGFuICBzdHlsZT0iZGlyZWN0aW9uOiBsdHIiPmlw
c3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCddLAotWydob21lLWVuZCcsIG51bGwsICdMb3JlbSA8
c3BhbiAgc3R5bGU9ImRpcmVjdGlvbjogbHRyIj5pcHN1bSBkb2xvcjxkaXYgPiBqdXN0IGEgdGVz
dDwvZGl2PiBzaXQ8L3NwYW4+IGFtZXQnXSwKLVsnaG9tZS1lbmQnLCBudWxsLCAnTG9yZW0gPHNw
YW4gIGRpcj0ibHRyIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnXSwKLVsnaG9tZS1lbmQn
LCBudWxsLCAnTG9yZW0gPGRpdiAgZGlyPSJsdHIiPmlwc3VtIGRvbG9yIHNpdDwvZGl2PiBhbWV0
J10sCi1bJ2hvbWUtZW5kJywgbnVsbCwgJ1xuIEp1c3RcbiA8c3Bhbj50ZXN0aW5nINeo16c8L3Nw
YW4+XG4g15HXldeT16dcbiddLAotWydob21lLWVuZCcsIG51bGwsICdcbiBKdXN0XG4gPHNwYW4+
dGVzdGluZyB3aGF0PC9zcGFuPlxuIGV2ZXJcbiddLAotWydob21lLWVuZCcsIG51bGwsICdjYXIg
bWVhbnMgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7LiddLAotWydob21lLWVuZCcsIG51bGwsICcmI3gy
MDJCO2NhciAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7LiYjeDIw
MmM7J10sCi1bJ2hvbWUtZW5kJywgbnVsbCwgJ2hlIHNhaWQgIiYjeDIwMkI7Y2FyICYjMTQ5MTsm
IzE0OTI7JiMxNDkzOyAmIzE0ODg7JiMxNDg5OyYjMTQ5MDsmI3gyMDJjOy4iJ10sCi1bJ2hvbWUt
ZW5kJywgbnVsbCwgJyYjMTQ5NDsmIzE0OTU7JiMxNDk2OyAmIzE0OTc7JiMxNDk4OyYjMTQ5OTsg
JiMxNTAwOyYjMTUwMTsmIzE1MDI7IFwnJiN4MjAyYTtoZSBzYWlkICImI3gyMDJCO2NhciAmIzE0
OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7JiN4MjAyYzsiJiN4MjAyYztc
Jz8nXSwKLVsnaG9tZS1lbmQnLCBudWxsLCAnJiMxNDg4OyYjMTQ4OTsmIzE0OTA7IGFiYyAmIzE0
OTE7JiMxNDkyOyYjMTQ5Mzs8YnIgLz5lZGYgJiMxNDk0OyYjMTQ5NTsmIzE0OTY7IGFicmViZydd
LAotWydob21lLWVuZCcsICdsaW5lLWJyZWFrOmJlZm9yZS13aGl0ZS1zcGFjZTsgd2lkdGg6NWVt
JywgJ2FiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAnXSwK
LVsnaG9tZS1lbmQnLCAnbGluZS1icmVhazphZnRlci13aGl0ZS1zcGFjZTsgd2lkdGg6NWVtJywg
J2FiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAnXQotXTsK
LQotZnVuY3Rpb24gY3JlYXRlVGVzdE5vZGVzKG5hbWUpIHsKLSAgICB2YXIgbm9kZXMgPSBbXTsK
LSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYg
KG5hbWUgJiYgZGF0YVtpXVswXSAhPSBuYW1lKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIHZhciBzdHlsZSA9IGRhdGFbaV1bMV07Ci0gICAgICAgIHZhciB0ZXh0ID0gZGF0YVtpXVsy
XTsKLSAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAg
ICAgICBkaXYuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKLSAgICAgICAgaWYgKHN0eWxlKQotICAg
ICAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBzdHlsZSk7Ci0gICAgICAgIGRpdi5p
bm5lckhUTUwgPSB0ZXh0OwotICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkaXYs
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykpOwotICAgICAgICBub2Rlcy5wdXNo
KGRpdik7CitmdW5jdGlvbiBnZXRUZXN0Tm9kZUNvbnRhaW5lcigpCit7CisgICAgdmFyIHRlc3Rz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RzIik7CisgICAgaWYgKCF0ZXN0cykgewor
ICAgICAgICB0ZXN0cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0
ZXN0cy5pZCA9ICJ0ZXN0cyI7CisgICAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKHRl
c3RzLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpKTsKICAgICB9CisgICAgcmV0
dXJuIHRlc3RzOworfQogCi0gICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgbm9k
ZXNbaV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2Rlc1tpXSk7Ci0gICAgfQorZnVuY3Rpb24g
Y3JlYXRlTm9kZShpbm5lckhUTUwsIHN0eWxlKQoreworICAgIHZhciBub2RlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgbm9kZS5pbm5lckhUTUwgPSBpbm5lckhUTUw7Cisg
ICAgbm9kZS5jb250ZW50RWRpdGFibGUgPSB0cnVlOworICAgIGlmIChzdHlsZSkKKyAgICAgICAg
bm9kZS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgc3R5bGUpOworICAgIGdldFRlc3ROb2RlQ29udGFp
bmVyKCkuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgcmV0dXJuIG5vZGU7Cit9CiAKLSAgICByZXR1
cm4gbm9kZXM7CitmdW5jdGlvbiBjcmVhdGVDaGFyQW5kV29yZE5vZGVzKCkKK3sKKyAgICByZXR1
cm4gWworICAgICAgICBjcmVhdGVOb2RlKCdcbmFiYyAmIzE0ODg7JiMxNDg5OyYjMTQ5MDsgeHl6
ICYjMTQ5MTsmIzE0OTI7JiMxNDkzOyBkZWZcbicpLAorICAgICAgICBjcmVhdGVOb2RlKCdcbiYj
MTQ4ODsmIzE0ODk7JiMxNDkwOyB4eXogJiMxNDkxOyYjMTQ5MjsmIzE0OTM7IGRlZiAmIzE0OTQ7
JiMxNDk1OyYjMTQ5NjtcbicpLAorICAgICAgICBjcmVhdGVOb2RlKCdcbiYjMTQ4ODsmIzE0ODk7
JiMxNDkwOyAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7XG4nKSwK
KyAgICAgICAgY3JlYXRlTm9kZSgnXG5hYmMgZWZkIGRhYmViXG4nKSwKKyAgICAgICAgY3JlYXRl
Tm9kZSgnTG9yZW0gPHNwYW4gc3R5bGU9ImRpcmVjdGlvbjogcnRsIj5pcHN1bSBkb2xvciBzaXQ8
L3NwYW4+IGFtZXQnKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnTG9yZW0gPHNwYW4gZGlyPSJydGwi
Pmlwc3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCcpLAorICAgICAgICBjcmVhdGVOb2RlKCdMb3Jl
bSA8c3BhbiBzdHlsZT0iZGlyZWN0aW9uOiBsdHIiPmlwc3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1l
dCcpLAorICAgICAgICBjcmVhdGVOb2RlKCdMb3JlbSA8c3BhbiBkaXI9Imx0ciI+aXBzdW0gZG9s
b3Igc2l0PC9zcGFuPiBhbWV0JykKKyAgICBdOworfQorCitmdW5jdGlvbiBjcmVhdGVFbmNsb3Np
bmdCbG9ja05vZGVzKCkKK3sKKyAgICByZXR1cm4gWworICAgICAgICBjcmVhdGVOb2RlKCdMb3Jl
bSA8ZGl2ICBkaXI9InJ0bCI+aXBzdW0gZG9sb3Igc2l0PC9kaXY+IGFtZXR0JykKKyAgICBdOwor
fQorCitmdW5jdGlvbiBjcmVhdGVIb21lRW5kTm9kZXMoKQoreworICAgIHJldHVybiBbCisgICAg
ICAgIGNyZWF0ZU5vZGUoJ0xvcmVtIDxzcGFuIHN0eWxlPSJkaXJlY3Rpb246IGx0ciI+aXBzdW0g
ZG9sb3Igc2l0PC9zcGFuPiBhbWV0JyksCisgICAgICAgIGNyZWF0ZU5vZGUoJ0xvcmVtIDxzcGFu
IHN0eWxlPSJkaXJlY3Rpb246IGx0ciI+aXBzdW0gZG9sb3I8ZGl2ID4ganVzdCBhIHRlc3Q8L2Rp
dj4gc2l0PC9zcGFuPiBhbWV0JyksCisgICAgICAgIGNyZWF0ZU5vZGUoJ0xvcmVtIDxzcGFuIGRp
cj0ibHRyIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnKSwKKyAgICAgICAgY3JlYXRlTm9k
ZSgnTG9yZW0gPGRpdiAgZGlyPSJsdHIiPmlwc3VtIGRvbG9yIHNpdDwvZGl2PiBhbWV0JyksCisg
ICAgICAgIGNyZWF0ZU5vZGUoJ1xuIEp1c3RcbiA8c3Bhbj50ZXN0aW5nINeo16c8L3NwYW4+XG4g
15HXldeT16dcbicpLAorICAgICAgICBjcmVhdGVOb2RlKCdcbiBKdXN0XG4gPHNwYW4+dGVzdGlu
ZyB3aGF0PC9zcGFuPlxuIGV2ZXJcbicpLAorICAgICAgICBjcmVhdGVOb2RlKCdjYXIgbWVhbnMg
JiMxNDg4OyYjMTQ4OTsmIzE0OTA7LicpLAorICAgICAgICBjcmVhdGVOb2RlKCcmI3gyMDJCO2Nh
ciAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7LiYjeDIwMmM7Jyks
CisgICAgICAgIGNyZWF0ZU5vZGUoJ2hlIHNhaWQgIiYjeDIwMkI7Y2FyICYjMTQ5MTsmIzE0OTI7
JiMxNDkzOyAmIzE0ODg7JiMxNDg5OyYjMTQ5MDsmI3gyMDJjOy4iJyksCisgICAgICAgIGNyZWF0
ZU5vZGUoJyYjMTQ5NDsmIzE0OTU7JiMxNDk2OyAmIzE0OTc7JiMxNDk4OyYjMTQ5OTsgJiMxNTAw
OyYjMTUwMTsmIzE1MDI7IFwnJiN4MjAyYTtoZSBzYWlkICcgKworICAgICAgICAgICAgICAgICAg
ICciJiN4MjAyQjtjYXIgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7ICYjMTQ4ODsmIzE0ODk7JiMxNDkw
OyYjeDIwMmM7IiYjeDIwMmM7XCc/JyksCisgICAgICAgIGNyZWF0ZU5vZGUoJyYjMTQ4ODsmIzE0
ODk7JiMxNDkwOyBhYmMgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7PGJyIC8+ZWRmICYjMTQ5NDsmIzE0
OTU7JiMxNDk2OyBhYnJlYmcnKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICcsCisgICAgICAgICAgICAgICAgICAg
J2xpbmUtYnJlYWs6YmVmb3JlLXdoaXRlLXNwYWNlOyB3aWR0aDo1ZW0nKSwKKyAgICAgICAgY3Jl
YXRlTm9kZSgnYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
ICcsCisgICAgICAgICAgICAgICAgICAgJ2xpbmUtYnJlYWs6YWZ0ZXItd2hpdGUtc3BhY2U7IHdp
ZHRoOjVlbScpCisgICAgXTsKK30KKworZnVuY3Rpb24gY3JlYXRlQWxsTm9kZXMoKQoreworICAg
IHJldHVybiBjcmVhdGVDaGFyQW5kV29yZE5vZGVzKCkuY29uY2F0KAorICAgICAgICAgICBjcmVh
dGVFbmNsb3NpbmdCbG9ja05vZGVzKCkpLmNvbmNhdCgKKyAgICAgICAgICAgY3JlYXRlSG9tZUVu
ZE5vZGVzKCkpOwogfQogCitmdW5jdGlvbiBzZXR1cEZvckxheW91dFRlc3QoKQoreworICAgIGlm
ICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICB0aHJvdyAiQ2Fubm90IGZp
bmQgbGF5b3V0VGVzdENvbnRyb2xsZXIsIHJ1bm5pbmcgZnJvbSBvdXRzaWRlIHRlc3Q/IjsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChnZXRUZXN0Tm9kZUNvbnRhaW5lcigpKTsKK30K
</data>
<flag name="review"
          id="72745"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>